tft每日頭條

 > 生活

 > oracle怎樣恢複删除數據

oracle怎樣恢複删除數據

生活 更新时间:2024-11-25 21:25:25

作為運維人員,尤其是數據庫運維人員,最重要的事情要做備份,最重要的事情要做備份,最重要的事情要做備份,在這裡重要的事情說三遍。有了數據庫備份,再加上數據庫恢複秘籍,足以應對任何情況了,如果沒有備份,一旦磁盤損壞,文件損壞,表drop,記錄被異常更新等等情況,就問問你,慌不慌。

oracle怎樣恢複删除數據(再也不用害怕删庫跑路)1

廢話不多說了,下面就進入正題,來說說幾種oracle數據庫數據恢複方法

1.口令文件丢失

進入到口令文件所在目錄 cd $ORACLE_HOME/dbs 文件删除,模拟丢失 rm orapwora10g; 删除之後,用以下命令重新建立一個文件,entries的意思(DBA的用戶最多有5個) orapwd file=orapwora10g password=oracle entries=5; SQL> conn sys/oracle as sysdba;ERROR:ORA-01031: insufficient privileges

在這裡有人,有疑問,如果這個口令文件丢失,會發生什麼,用戶不能登錄嗎?這個問題提的好,如果是這個文件丢失,隻是用sysdba方式沒辦法登錄,登錄會報錯,普通用于遠程登錄不受影響

SQL> conn sys/oracle as sysdba; ERROR:ORA-01031: insufficient privileges

2.spfile文件丢失

spfile,pfile文件是存儲數據庫配置參數的文件,運行是删除,其實是不影響數據庫運行,可是重啟oracle數據庫實例時,會有問題,加載不到參數文件,數據庫就無法正常啟動,這個時候,可以從備份中轉儲出spfile文件,方法如下所示

rman target / set dbid 4146528970; startup nomount; restore spfile to '/dbdata/rman_backup/spfilecrmdb.ora' from '/dbdata/rman_backup/tmp/c-4146528970-20200427-0b';

3.控制文件損壞

在oracle數據中,控制文件非常的,非常的重要。控制文件是一個二進制文件,它記錄了數據庫的物理結構,其中主要包含數據庫名,數據文件與日志文件的名字和位置,數據庫建立日期,數據庫檢查點等信息。如果控制文件損壞,數據庫就無法正常運行,通常情況,控制文件會有配置3個,很少會發生因為控制文件損壞,導緻數據庫崩潰的,除非你點背。不過也得掌握怎麼恢複控制方法,從備份中轉儲的控制文件,數據庫是一定要做全庫的recover,日志還得reset

rman target /; startup nomount; restore controlfile from '/dbdata/rman_backup/c-4146528970-20200427-10'; alter database mount; recover database; alter database open resetlogs;

4,恢複指定表空間文件

有時候,某個裸設備,或者文件損壞,這個時候,有部分表的訪問會受影響,但是數據庫還不至于不能運行,所以隻需要恢複損壞的文件就可以,恢複方法如下所示

rman target / 數據文件丢失(在rman中執行sql語句,在sql後面用雙引号括起來): sql "alter database datafile 4,5 offline immediate"; restore datafile 4,5; recover datafile 4,5; sql "alter database datafile 4,5 online";

有時候有特殊要求,恢複的文件要更換目錄,或者使用新的裸設備,這樣可以采用下面方式恢複

run{ sql 'alter database datafile 6 offline immediate'; set newname for datafile 6 to '/u01/app/oracle/oradata/tbs01.dbf'; restore datafile 6; switch datafile all; recover datafile 6; sql 'alter databaes datafile 6 online'; }

5.表空間恢複

oracle怎樣恢複删除數據(再也不用害怕删庫跑路)2

如果想恢複某個oracle數據庫表空間

rman target / sql "alter tablespace users offline immediate"; restore tablespace users; recover tablespace users; sql "alter tablespace users online"; 更換數據文件路徑 run{ sql 'alter tablespace tbs1 offline immediate'; set newname for datafile 6 to '/u01/app/oracle/oradata/orcl/tbs01.dbf'; restore tablespace tbs1; switch datafile all; recover tablespace tbs1; sql 'alter tablespace tbs1 online'; }

6.基于時間點的恢複:

run{ set until time "to_date('2009-07-19 13:19:00','YYYY-MM-DD HH24:MI:SS')"; restore database; recover database; alter database open resetlogs; }

7.基于SCN的恢複

run { set until scn=475351; restore database; recover database; alter database open resetlogs; }

8..整庫恢複

run{ sql "startup mount"; restore database; recover database; sql "alter database open" }

9.修改文件路徑

run{ set until time "to_date('2009-07-19 13:19:00','YYYY-MM-DD HH24:MI:SS')"; set newname for datafile 1 to '/dbdata/oracle/oradata/orcl/system01.dbf'; set newname for datafile 2 to '/dbdata/oracle/oradata/orcl/sysaux01.dbf'; set newname for datafile 3 to '/dbdata/oracle/oradata/orcl/undotbs01.dbf'; set newname for datafile 4 to '/dbdata/oracle/oradata/orcl/users01.dbf'; set newname for datafile 5 to '/dbdata/oracle/oradata/orcl/IRCP.dbf'; set newname for datafile 6 to '/dbdata/oracle/oradata/orcl/hbopen.dbf'; set newname for datafile 7 to '/dbdata/oracle/oradata/orcl/presell.dbf'; restore database; switch datafile all; recover database; }

oracle怎樣恢複删除數據(再也不用害怕删庫跑路)3

隻要掌握了上述恢複方法,基本上能應對生産99%的需要數據恢複的場景,包括備份異地恢複。這個技能大家get了吧

喜歡的,可以添加關注,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved