亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 1592 | 回復(fù): 0
打印 上一主題 下一主題

Oracle Redo文件恢復(fù) [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2011-12-20 09:48 |只看該作者 |倒序?yàn)g覽
REDO文件丟失或者損壞的恢復(fù)


  • REDO文件的功能描述
REDO文件存儲(chǔ)所有數(shù)據(jù)庫(kù)的變更內(nèi)容和每一次變更所需的重做腳本,是數(shù)據(jù)庫(kù)不可缺少的一部分,如果REDO GROUP中只有一個(gè)REDO文件,同時(shí)這個(gè)REDO文件被損壞,則系統(tǒng)切換到這個(gè)REDO GROUP時(shí),數(shù)據(jù)庫(kù)將直接DOWN機(jī);如果REDO GROUP中有多個(gè)REDO文件,其中一個(gè)或者多個(gè)REDO被損壞,只要該組中還有一個(gè)好的REDO文件,則系統(tǒng)將報(bào)警(寫(xiě)入alert<sid>.log文檔中),數(shù)據(jù)庫(kù)仍然可以超常運(yùn)行。
REDO文件在數(shù)據(jù)庫(kù)恢復(fù)時(shí)提供前滾所需的內(nèi)容。


查看REDO 相關(guān)信息的視圖有:V$LOG,V$LOGFILE,V$INSTANCE_RECOVERY
SQL> DESC V$INSTANCE_RECOVERY;
名稱(chēng) 是否為空? 類(lèi)型
----------------------------------------- -------- ------
RECOVERY_ESTIMATED_IOS NUMBER
ACTUAL_REDO_BLKS NUMBER
TARGET_REDO_BLKS NUMBER
LOG_FILE_SIZE_REDO_BLKS NUMBER
LOG_CHKPT_TIMEOUT_REDO_BLKS NUMBER
LOG_CHKPT_INTERVAL_REDO_BLKS NUMBER
FAST_START_IO_TARGET_REDO_BLKS NUMBER
TARGET_MTTR NUMBER
ESTIMATED_MTTR NUMBER
CKPT_BLOCK_WRITES NUMBER
OPTIMAL_LOGFILE_SIZE NUMBER
ESTD_CLUSTER_AVAILABLE_TIME NUMBER
WRITES_MTTR NUMBER
WRITES_LOGFILE_SIZE NUMBER
WRITES_LOG_CHECKPOINT_SETTINGS NUMBER
WRITES_OTHER_SETTINGS NUMBER
WRITES_AUTOTUNE NUMBER
WRITES_FULL_THREAD_CKPT NUMBER
一般情況下,最好有3-5個(gè)REDO GROUP,每個(gè)REDO GROUP中有兩個(gè)成員,放在不同的磁盤(pán)資源上。同一個(gè)REDO GROUP 中的REDO文件的大小盡量設(shè)置為相同,否則系統(tǒng)以最小的一個(gè)為基準(zhǔn),比較浪費(fèi)空間。各個(gè)REDO GROUP 的大小也最好一致。


  • REDO文件恢復(fù)實(shí)例
2.1查看REDO 相關(guān)視圖
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- -------------------
1 1 14 10485760 2 YES ACTIVE 1304089 2006-07-06 12:33:59
2 1 15 10485760 2 YES INACTIVE 1314889 2006-07-06 15:55:10
3 1 16 10485760 2 NO CURRENT 1323514 2006-07-07 08:33:21
STATUS狀態(tài)的解釋:
CURRENT: 當(dāng)前的REDO文件,REDO BUFFER 的內(nèi)容有LGWR進(jìn)程寫(xiě)入當(dāng)前REDO文件,如果丟失該組文件,會(huì)造成數(shù)據(jù)的丟失.
ACTIVE : 文件中含有的內(nèi)容還沒(méi)有寫(xiě)入到ARCHIVELOG文件中,如果丟失該組文件也會(huì)造成數(shù)據(jù)的丟失.
INACTIVE: 已經(jīng)歸檔,丟失文件不會(huì)造成數(shù)據(jù)丟失,不過(guò)在做數(shù)據(jù)庫(kù)的恢復(fù)時(shí),該組文件可以用來(lái)做前滾操作.
SQL> SELECT * FROM V$LOGFILE ORDER BY GROUP#;
GROUP# STATUS TYPE MEMBER IS_
---------- ------- ------- ------------------------------ ---
1 ONLINE C:\ORADATA\AIDU\REDO01.LOG NO
1 ONLINE C:\ORADATA\AIDU\REDO01B.LOG NO
2 ONLINE C:\ORADATA\AIDU\REDO02.ORA NO
2 ONLINE C:\ORADATA\AIDU\REDO02B.ORA NO
3 ONLINE C:\ORADATA\AIDU\REDO03.LOG NO
3 ONLINE C:\ORADATA\AIDU\REDO03B.LOG NO
已選擇6行。
可以看到,當(dāng)前數(shù)據(jù)庫(kù)有3個(gè)REDO GROUP,每個(gè)GROUP 含有兩個(gè)MEMBER(REDO文件).

2.2 增加REDO GROUP
SQL> alter database add logfile group 4 'C:\ORADATA\AIDU\REDO04.ORA' SIZE 10M REUSE;
數(shù)據(jù)庫(kù)已更改。
SQL> SELECT * FROM V$LOGFILE ORDER BY GROUP#;
GROUP# STATUS TYPE MEMBER IS_
---------- ------- ------- ------------------------------ ---
1 ONLINE C:\ORADATA\AIDU\REDO01B.LOG NO
1 ONLINE C:\ORADATA\AIDU\REDO01.LOG NO
2 ONLINE C:\ORADATA\AIDU\REDO02.ORA NO
2 ONLINE C:\ORADATA\AIDU\REDO02B.ORA NO
3 ONLINE C:\ORADATA\AIDU\REDO03B.LOG NO
3 ONLINE C:\ORADATA\AIDU\REDO03.LOG NO
4 ONLINE C:\ORADATA\AIDU\REDO04.ORA NO
已選擇7行。

2.3 刪除REDO GROUP
SQL> ALTER DATABASE DROP LOGFILE GROUP 4;
數(shù)據(jù)庫(kù)已更改。
SQL> SELECT * FROM V$LOGFILE ORDER BY GROUP#;
GROUP# STATUS TYPE MEMBER IS_
---------- ------- ------- ------------------------------ ---
1 ONLINE C:\ORADATA\AIDU\REDO01.LOG NO
1 ONLINE C:\ORADATA\AIDU\REDO01B.LOG NO
2 ONLINE C:\ORADATA\AIDU\REDO02.ORA NO
2 ONLINE C:\ORADATA\AIDU\REDO02B.ORA NO
3 ONLINE C:\ORADATA\AIDU\REDO03.LOG NO
3 ONLINE C:\ORADATA\AIDU\REDO03B.LOG NO
已選擇6行。

2.4 REDO GROUP中增加REDO文件(MEMBER
SQL> ALTER DATABASE ADD LOGFILE MEMBER 'C:\ORADATA\AIDU\REDO01C.LOG' TO GROUP 1;
數(shù)據(jù)庫(kù)已更改。
SQL> SELECT * FROM V$LOGFILE ORDER BY GROUP#;
GROUP# STATUS TYPE MEMBER IS_
---------- ------- ------- ------------------------------ ---
1 INVALID ONLINE C:\ORADATA\AIDU\REDO01C.LOG NO
1 ONLINE C:\ORADATA\AIDU\REDO01.LOG NO
1 ONLINE C:\ORADATA\AIDU\REDO01B.LOG NO
2 ONLINE C:\ORADATA\AIDU\REDO02.ORA NO
2 ONLINE C:\ORADATA\AIDU\REDO02B.ORA NO
3 ONLINE C:\ORADATA\AIDU\REDO03.LOG NO
3 ONLINE C:\ORADATA\AIDU\REDO03B.LOG NO
已選擇7行。
我們注意到新建的MEMBER的狀態(tài)為INVALID,這個(gè)不用擔(dān)心,等下次切換到該組,然后狀態(tài)就會(huì)修改為正常。

2.5 REDO GROUP中刪除REDO 文件(MEMBER
SQL> ALTER DATABASE DROP LOGFILE MEMBER 'C:\ORADATA\AIDU\REDO01C.LOG';
數(shù)據(jù)庫(kù)已更改。
SQL> SELECT * FROM V$LOGFILE ORDER BY GROUP#;
GROUP# STATUS TYPE MEMBER IS_
---------- ------- ------- ------------------------------ ---
1 ONLINE C:\ORADATA\AIDU\REDO01.LOG NO
1 ONLINE C:\ORADATA\AIDU\REDO01B.LOG NO
2 ONLINE C:\ORADATA\AIDU\REDO02.ORA NO
2 ONLINE C:\ORADATA\AIDU\REDO02B.ORA NO
3 ONLINE C:\ORADATA\AIDU\REDO03.LOG NO
3 ONLINE C:\ORADATA\AIDU\REDO03B.LOG NO
已選擇6行。
注意: 不可以刪除REDO GROUP 中所有的REDO 文件,這樣會(huì)報(bào)錯(cuò),如下所示:
SQL> ALTER DATABASE DROP LOGFILE MEMBER 'C:\ORADATA\AIDU\REDO01.LOG';
數(shù)據(jù)庫(kù)已更改。
SQL> ALTER DATABASE DROP LOGFILE MEMBER 'C:\ORADATA\AIDU\REDO01B.LOG';
ALTER DATABASE DROP LOGFILE MEMBER 'C:\ORADATA\AIDU\REDO01B.LOG'
* 1 行出現(xiàn)錯(cuò)誤:
ORA-00361: 無(wú)法刪除最后一個(gè)日志成員 C:\ORADATA\AIDU\REDO01B.LOG ( 1)

2.6 已經(jīng)歸檔的REDO文件損壞的恢復(fù)
所謂已經(jīng)歸檔的REDO文件就是在V$LOG視圖中狀態(tài)為INACTIVEREDO文件。
這些文檔的丟失,不會(huì)對(duì)數(shù)據(jù)庫(kù)造成任何影響,但需要及時(shí)的恢復(fù),否則切換到這個(gè)組時(shí)將會(huì)發(fā)生錯(cuò)誤。
解決問(wèn)題有兩個(gè)辦法:
    A.刪除這個(gè)REDO GROUP,記住刪除后數(shù)據(jù)庫(kù)的REDO GROUP數(shù)目不應(yīng)小于2,如果當(dāng)前REDO GROUP數(shù)目為2,則不可以使用這個(gè)辦法。
      B.在組中增加新的同樣大小的REDO文件,然后刪除原來(lái)的MEMBER。增加、刪除REDO文件的方法見(jiàn)上面的2.4,2.5。


2.7沒(méi)有歸檔的REDO文件損壞的恢復(fù)

2.7.1 簡(jiǎn)述
所謂沒(méi)有歸檔的REDO文件就是在V$LOG視圖中狀態(tài)為ACTIVE,CURRENTREDO文件。如果沒(méi)有歸檔的REDO GROUP中含有多個(gè)REDO 文件,丟失或者損壞的只是部分REDO文件,則可以通過(guò)復(fù)制正常的REDO文件,覆蓋損壞的REDO文件的方式解決問(wèn)題,數(shù)據(jù)不會(huì)丟失,不用做恢復(fù)操作。
如果沒(méi)有歸檔的REDO GROUP組中所有的REDO文件都丟失或者損壞,將會(huì)導(dǎo)致數(shù)據(jù)庫(kù)數(shù)據(jù)丟失,如果沒(méi)有歸檔的REDO GROUP 為當(dāng)前組,則數(shù)據(jù)庫(kù)立即DOWN機(jī)。當(dāng)這個(gè)情況發(fā)生時(shí),就意味著數(shù)據(jù)的丟失,我們只能將數(shù)據(jù)庫(kù)恢復(fù)到前一次的歸檔日志切換時(shí)刻。


2.7.2 建立測(cè)試環(huán)境
檢查當(dāng)前的REDO GROUP為第1.
SQL> SELECT * FROM V$LOG;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS
---------- ---------- ---------- ---------- ---------- --- ----------------
FIRST_CHANGE# FIRST_TIME
------------- -------------------
1 1 17 10485760 1 NO CURRENT
1333209 2006-07-07 11:47:23
2 1 15 10485760 2 YES INACTIVE
1314889 2006-07-06 15:55:10
3 1 16 10485760 2 YES INACTIVE
1323514 2006-07-07 08:33:21
建立一個(gè)測(cè)試表,這個(gè)數(shù)據(jù)庫(kù)的變化存放在當(dāng)前的REDO文件中。
SQL> CREATE TABLE AIDU.TEST_FOR_REDO AS SELECT * FROM AIDU.TEST02;
表已創(chuàng)建。

2.7.3 模擬災(zāi)難發(fā)生
SQL> SHUTDOWN ABORT;
ORACLE 例程已經(jīng)關(guān)閉。
SQL>HOST DELETE C:ORADATAAIDUREDO01*.* #刪除當(dāng)前日志組的所有成員文件
SQL> STARTUP #啟動(dòng)數(shù)據(jù)庫(kù)時(shí)將報(bào)找不到數(shù)據(jù)庫(kù)文件的錯(cuò)誤,數(shù)據(jù)庫(kù)只能啟動(dòng)到MOUNT狀態(tài)。
ORA-32004: obsolete and/or deprecated parameter(s) specified
ORACLE 例程已經(jīng)啟動(dòng)。

Total System Global Area 268435456 bytes
Fixed Size 1248504 bytes
Variable Size 96469768 bytes
Database Buffers 167772160 bytes
Redo Buffers 2945024 bytes
數(shù)據(jù)庫(kù)裝載完畢。
ORA-00313: 無(wú)法打開(kāi)日志組 1 (用于線程 1) 的成員
ORA-00312: 聯(lián)機(jī)日志 1 線程 1: 'C:\ORADATA\AIDU\REDO01B.LOG'
ORA-27041: 無(wú)法打開(kāi)文件
OSD-04002: 無(wú)法打開(kāi)文件
O/S-Error: (OS 2) 系統(tǒng)找不到指定的文件。
SQL> SELECT OPEN_MODE FROM V$DATABASE;
OPEN_MODE
----------
MOUNTED

2.7.4 進(jìn)行災(zāi)難恢復(fù)

嘗試使用RESETLOG或者NORESETLOGS打開(kāi)數(shù)據(jù)庫(kù),結(jié)果失敗
SQL> alter database open resetlogs;
alter database open resetlogs
* 1 行出現(xiàn)錯(cuò)誤:
ORA-01139: RESETLOGS 選項(xiàng)僅在不完全數(shù)據(jù)庫(kù)恢復(fù)后有效
SQL> alter database open noresetlogs;
alter database open noresetlogs
* 1 行出現(xiàn)錯(cuò)誤:
ORA-01139: RESETLOGS 選項(xiàng)僅在不完全數(shù)據(jù)庫(kù)恢復(fù)后有效


嘗試刪除當(dāng)前被破壞的REDO GROUP,結(jié)果失敗
SQL> alter database drop logfile group 1;
alter database drop logfile group 1
*
1 行出現(xiàn)錯(cuò)誤:
ORA-01623: 日志 1 是實(shí)例 aidu (線程 1) 的當(dāng)前日志 - 無(wú)法刪除
ORA-00312: 聯(lián)機(jī)日志 1 線程 1: 'C:\ORADATA\AIDU\REDO01B.LOG'


清除當(dāng)前日志組的內(nèi)容,然后重新建立
SQL> ALTER DATABASE CLEAR UNARCHIVED LOGFILE GROUP 1;
* 1 行出現(xiàn)錯(cuò)誤:
ORA-01624: 日志 1 是緊急恢復(fù)實(shí)例 aidu (線程 1) 所必需的
ORA-00312: 聯(lián)機(jī)日志 1 線程 1: 'C:\ORADATA\AIDU\REDO01B.LOG'

這樣我們只能做不完全的恢復(fù)了,恢復(fù)的方法有兩個(gè):

  • 使用RMAN或者手工進(jìn)行基于CANCEL的恢復(fù)。
SQL>SHUTDOWN IMMEDIATE;
手工刪除數(shù)據(jù)文件(DATAFILE
C:>RMAN TARGET /
RMAN>STARTUP MOUNT
RMAN>RUN{
ALLOCATE CHANNEL D1 TYPE DISK;
RESTORE DATABASE;
RECOVER DATABASE;
RELEASE CHANNEL D1;}
RMAN>ALTER DATABASE OPEN RESETLOGS;
這里不詳細(xì)討論RMAN的恢復(fù)。


  • 使用EXP,IMP進(jìn)行恢復(fù)。
具體操作步驟如下:
SQL>SHUTDOWN IMMEDIATE;
init.ora中加入?yún)?shù): _allow_resetlogs_corruption=TRUE
重新啟動(dòng)數(shù)據(jù)庫(kù),利用until cancel恢復(fù)
SQL>recover database until cancel;
Cancel
如果出錯(cuò),不再理會(huì),發(fā)出
SQL>alter database open resetlogs;
數(shù)據(jù)庫(kù)被打開(kāi)后,馬上執(zhí)行一個(gè)full export
shutdown數(shù)據(jù)庫(kù),去掉_all_resetlogs_corrupt參數(shù)
重建庫(kù)
import并完成恢復(fù)
建議執(zhí)行一下ANALYZE TABLE ...VALIDATE STRUCTURE CASCADE

oracle redo日志恢復(fù)

Oracle備份恢復(fù)中,redo的恢復(fù)相對(duì)來(lái)說(shuō)還是比較簡(jiǎn)單的,只要保證每組的成員不止一個(gè),出現(xiàn)問(wèn)題的幾率就相當(dāng)小,即使出了問(wèn)題我們也可按照不同的方法將他們恢復(fù),所以如果碰到日志文件損壞,完全不必緊張!按照下面的方法來(lái)做,基本上都能搞定!

 

試驗(yàn)一:用命令清空日志組方法

1、  查看原來(lái)表中數(shù)據(jù)

SQL> conn test/test

Connected.

SQL> select * from test;

       TEL

----------

         1

         2

         3

2、插入新數(shù)據(jù)

SQL> insert into test values(4);

1 row created.

SQL> commit;

Commit complete.

SQL>

3、  正常關(guān)閉數(shù)據(jù)庫(kù)

4、  利用os command刪除所有redo文件

5、  啟動(dòng)數(shù)據(jù)庫(kù)

SQL> startup

ORACLE instance started.

Total System Global Area  353862792 bytes

Fixed Size                   730248 bytes

Variable Size             285212672 bytes

Database Buffers           67108864 bytes

Redo Buffers                 811008 bytes

Database mounted.

ORA-00313: open failed for members of log group 1 of thread 1

ORA-00312: online log 1 thread 1: '/T3/ORACLE/oradata/ORA9/redo01.log'

6、  查看當(dāng)前日志狀態(tài)

SQL> select * from v$log;

    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS

---------- ---------- ---------- ---------- ---------- --- ----------------

FIRST_CHANGE# FIRST_TIME

------------- ----------

         1          1          2  104857600          1 YES INACTIVE

       487837 01-9 -05

         2          1          4  104857600          1 NO  CURRENT

       487955 01-9 -05

         3          1          3  104857600          1 YES INACTIVE

       487839 01-9 -05

看來(lái)redo01.log不是當(dāng)前日志,對(duì)于這類(lèi)非當(dāng)前日志可以直接clear,系統(tǒng)會(huì)重新自動(dòng)生成一個(gè)redo文件

7、SQL> alter database clear logfile group 1;

Database altered.

7、  繼續(xù)啟動(dòng)db

SQL> alter database open;

alter database open

*

ERROR at line 1:

ORA-00313: open failed for members of log group 2 of thread 1

ORA-00312: online log 2 thread 1: '/T3/ORACLE/oradata/ORA9/redo02.log'

8、  看來(lái)redo也得恢復(fù),但是redo02是當(dāng)前redo,直接clear是不行的

SQL> alter database clear logfile group 2;

alter database clear logfile group 2

*

ERROR at line 1:

ORA-00350: log 2 of thread 1 needs to be archived

ORA-00312: online log 2 thread 1: '/T3/ORACLE/oradata/ORA9/redo02.log'

9、  按照oracle的某些做法也是不行的

SQL> alter database clear unarchived logfile group 2 unrecoverable datafile;

alter database clear unarchived logfile group 2 unrecoverable datafile

*

ERROR at line 1:

ORA-00313: open failed for members of log group 2 of thread 1

ORA-00312: online log 2 thread 1: '/T3/ORACLE/oradata/ORA9/redo02.log'

ORA-27037: unable to obtain file status

SVR4 Error: 2: No such file or directory

Additional information: 3

10、              嘗試從其他冷被分cp過(guò)來(lái)一個(gè),再作clear,還是不行

SQL> host cp /T3/ORACLE/oradata2/ORA9/redo02.log /T3/ORACLE/oradata/ORA9/

SQL> alter database clear unarchived logfile group 2 unrecoverable datafile;

alter database clear unarchived logfile group 2 unrecoverable datafile

*

ERROR at line 1:

ORA-00322: log 2 of thread 1 is not current copy

ORA-00312: online log 2 thread 1: '/T3/ORACLE/oradata/ORA9/redo02.log'

SQL>

11、              但是對(duì)于非當(dāng)前日志就都可以,下面看看redo03

SQL>  alter database clear logfile group 3;

Database altered.

結(jié)論:

如果數(shù)據(jù)庫(kù)是正常shutdown,非當(dāng)前日志都可以直接clear來(lái)重新生成,而且不丟失數(shù)據(jù),因?yàn)檎jP(guān)閉db,數(shù)據(jù)已經(jīng)寫(xiě)入dbf文件了。唯獨(dú)當(dāng)前日志不可以,當(dāng)前日志必須用其他方法恢復(fù),不管是不是正常關(guān)閉,

方法二:用cancel模式恢復(fù)數(shù)據(jù)庫(kù)

前面的出錯(cuò)提示,步驟都一樣,唯獨(dú)恢復(fù)的方法不一樣

SQL> startup

ORACLE instance started.

Total System Global Area  353862792 bytes

Fixed Size                   730248 bytes

Variable Size             285212672 bytes

Database Buffers           67108864 bytes

Redo Buffers                 811008 bytes

Database mounted.

ORA-00313: open failed for members of log group 1 of thread 1

ORA-00312: online log 1 thread 1: '/T3/ORACLE/oradata/ORA9/redo01.log'

看看丟失了哪些redo

SQL> host ls /T3/ORACLE/oradarta/ORA9/redo*

/T3/ORACLE/oradarta/ORA9/redo*: No such file or directory

看來(lái)redo都丟了

直接recover

SQL> recover database until cancel;

Media recovery complete.

這個(gè)時(shí)候redo還沒(méi)有生成

SQL> host ls /T3/ORACLE/oradata/ORA9/redo*

/T3/ORACLE/oradata/ORA9/redo*: No such file or directory

啟動(dòng)數(shù)據(jù)庫(kù)

SQL> alter database open ;

alter database open

*

ERROR at line 1:

ORA-01589: must use RESETLOGS or NORESETLOGS option for database open

SQL>  alter database open resetlogs;

Database altered.

注意,這里必須用resetlogs,否則會(huì)錯(cuò)誤的

SQL> alter database open noresetlogs;

alter database open noresetlogs

*

ERROR at line 1:

ORA-00313: open failed for members of log group 1 of thread 1

ORA-00312: online log 1 thread 1: '/T3/ORACLE/oradata/ORA9/redo01.log'

SQL>

Resetlogs其實(shí)就是根據(jù)控制文件讓系統(tǒng)自動(dòng)重新生成redo,如果noresetlog的話,就不會(huì)重新生成redo,缺少了文件,db自然無(wú)法啟動(dòng))

SQL>  host ls /T3/ORACLE/oradata/ORA9/redo*

/T3/ORACLE/oradata/ORA9/redo01.log  /T3/ORACLE/oradata/ORA9/redo02.log  /T3/ORACLE/oradata/ORA9/redo03.log

SQL>

檢驗(yàn)

SQL> select * from test.test;

       TEL

----------

         1

         2

         3

         4

SQL>

數(shù)據(jù)一點(diǎn)兒都沒(méi)有丟失

結(jié)論:

如果數(shù)據(jù)庫(kù)是正常關(guān)閉的,用recover database until cancel可以輕松恢復(fù)或者說(shuō)重新建立所有的redo,不再區(qū)分是否是當(dāng)前日志,而且由于正常關(guān)閉,不會(huì)丟失任何數(shù)據(jù),唯一可能丟失的情況就是如果日志還沒(méi)有歸檔

這種恢復(fù)方法 由于要resetlogs,所以在恢復(fù)完成后,日志清零,以前的備份不再起作用,所以建議立即備份

SQL> archive log list;

Database log mode              Archive Mode

Automatic archival             Enabled

Archive destination            /T3/ORACLE/arch

Oldest online log sequence     0

Next log sequence to archive   1

Current log sequence           1

SQL>

實(shí)驗(yàn)三:通過(guò)重新生成控制文件來(lái)恢復(fù)redo

前面的都一樣,只是處理方法不一樣

SQL> startup

ORACLE instance started.

Total System Global Area  353862792 bytes

Fixed Size                   730248 bytes

Variable Size             285212672 bytes

Database Buffers           67108864 bytes

Redo Buffers                 811008 bytes

Database mounted.

ORA-00313: open failed for members of log group 1 of thread 1

ORA-00312: online log 1 thread 1: '/T3/ORACLE/oradata/ORA9/redo01.log'

SQL> alter database backup controlfile to trace;

Database altered.

SQL> shutdown immediate

ORA-01109: database not open

Database dismounted.

ORACLE instance shut down.

SQL>

2、  修改一下剛才生成的那個(gè)文件

CREATE CONTROLFILE REUSE DATABASE "ORA9"  RESETLOGS  ARCHIVELOG

--  SET STANDBY TO MAXIMIZE PERFORMANCE

    MAXLOGFILES 50

    MAXLOGMEMBERS 5

    MAXDATAFILES 100

    MAXINSTANCES 1

    MAXLOGHISTORY 226

LOGFILE

  GROUP 1 '/T3/ORACLE/oradata/ORA9/redo01.log'  SIZE 100M,

  GROUP 2 '/T3/ORACLE/oradata/ORA9/redo02.log'  SIZE 100M,

  GROUP 3 '/T3/ORACLE/oradata/ORA9/redo03.log'  SIZE 100M

-- STANDBY LOGFILE

DATAFILE

  '/T3/ORACLE/oradata/ORA9/system01.dbf',

  '/T3/ORACLE/oradata/ORA9/undotbs01.dbf',

  '/T3/ORACLE/oradata/ORA9/cwmlite01.dbf',

  '/T3/ORACLE/oradata/ORA9/drsys01.dbf',

  '/T3/ORACLE/oradata/ORA9/example01.dbf',

  '/T3/ORACLE/oradata/ORA9/indx01.dbf',

  '/T3/ORACLE/oradata/ORA9/odm01.dbf',

  '/T3/ORACLE/oradata/ORA9/tools01.dbf',

  '/T3/ORACLE/oradata/ORA9/users01.dbf',

  '/T3/ORACLE/oradata/ORA9/xdb01.dbf',

  '/T3/ORACLE/oradata/ORA9/test01.dbf'

CHARACTER SET ZHS16GBK

;

另存為一個(gè)腳本,運(yùn)行他

SQL> @clone.sql

Control file created.

SQL> alter database open resetlogs;

Database altered.

SQL>

搞定……………

結(jié)論:這種方法的關(guān)鍵是重新創(chuàng)建控制文件,后面的步驟和前面的道理一樣的

前面的三種方法都是假設(shè)db是正常關(guān)閉的,數(shù)據(jù)已經(jīng)寫(xiě)入數(shù)據(jù)庫(kù)文件中,所以不會(huì)由數(shù)據(jù)存在redo種,所以clear的話也不會(huì)有數(shù)據(jù)丟失

 
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專(zhuān)區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP