重建控制檔案的案例(RESETLOGS模式和NORESETLOGS模式)

shiyihai發表於2006-05-01

[@more@]

本案例分兩種情況:歸檔模式和非歸檔模式。在每種模式下采用兩種重建方式,即resetlogs和noresetlogs。

一、archived模式下:

SQL> archive log list
資料庫日誌模式 存檔模式
自動存檔 啟用
存檔終點 C:oracleoradataarchora9i
最早的概要日誌序列 1
下一個存檔日誌序列 2
當前日誌序列 2
SQL>

1、noresetlogs方式

注意:all online logs are available

將所有的控制檔案刪除掉後執行重建控制檔案指令碼,日誌如下:

SQL> STARTUP NOMOUNT
ORACLE 例程已經啟動。

Total System Global Area 135864308 bytes
Fixed Size 454644 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 1191936 bytes
SQL> CREATE CONTROLFILE REUSE DATABASE "ORA9I" NORESETLOGS ARCHIVELOG
2 -- SET STANDBY TO MAXIMIZE PERFORMANCE
3 MAXLOGFILES 50
4 MAXLOGMEMBERS 5
5 MAXDATAFILES 100
6 MAXINSTANCES 1
7 MAXLOGHISTORY 226
8 LOGFILE
9 GROUP 1 'C:ORACLEORADATAORA9IREDO01.LOG' SIZE 10M,
10 GROUP 2 'C:ORACLEORADATAORA9IREDO02.LOG' SIZE 10M,
11 GROUP 3 'C:ORACLEORADATAORA9IREDO03.LOG' SIZE 10M
12 -- STANDBY LOGFILE
13 DATAFILE
14 'C:ORACLEORADATAORA9ISYSTEM01.DBF',
15 'C:ORACLEORADATAORA9IUNDOTBS01.DBF',
16 'C:ORACLEORADATAORA9IRMAN.DBF',
17 'C:ORACLEORADATAORA9IDRSYS01.DBF',
18 'C:ORACLEORADATAORA9IEXAMPLE01.DBF',
19 'C:ORACLEORADATAORA9ITEST1.DBF',
20 'C:ORACLEORADATAORA9IODM01.DBF',
21 'C:ORACLEORADATAORA9ITEST2.DBF',
22 'C:ORACLEORADATAORA9IXDB01.DBF',
23 'C:ORACLEORADATAORA9IPORTAL.DBF'
24 CHARACTER SET ZHS16GBK;

控制檔案已建立

SQL>
SQL> ALTER SYSTEM ARCHIVE LOG ALL;

系統已更改。

SQL>
SQL> ALTER DATABASE OPEN;

資料庫已更改。

SQL>
SQL> ALTER TABLESPACE TEMP ADD TEMPFILE 'C:ORACLEORADATAORA9ITEMP01.DBF'
2 SIZE 20971520 REUSE AUTOEXTEND OFF;

表空間已更改。

SQL>
SQL> shutdown immediate;
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL>
SQL> startup;
ORACLE 例程已經啟動。

Total System Global Area 135864308 bytes
Fixed Size 454644 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 1191936 bytes
資料庫裝載完畢。
資料庫已經開啟。
SQL>
SQL> select name from v$controlfile;

NAME
--------------------------------------------------------------------------------
C:ORACLEORADATAORA9ICONTROL01.CTL
C:ORACLEORADATAORA9ICONTROL02.CTL
C:ORACLEORADATAORA9ICONTROL03.CTL

SQL>
SQL> select member from v$logfile;

MEMBER
--------------------------------------------------------------------------------
C:ORACLEORADATAORA9IREDO01.LOG
C:ORACLEORADATAORA9IREDO03.LOG
C:ORACLEORADATAORA9IREDO02.LOG

SQL>

SQL> archive log list
資料庫日誌模式 存檔模式
自動存檔 啟用
存檔終點 C:oracleoradataarchora9i
最早的概要日誌序列 1
下一個存檔日誌序列 3
當前日誌序列 3
SQL>

可看到,日誌group的sequence並沒有從1開始計數。

1、resetlogs方式

注意:online logs are damaged.

將所有的控制檔案和日誌檔案都刪除掉後執行重建控制檔案指令碼,日誌如下:

SQL> STARTUP NOMOUNT
ORACLE 例程已經啟動。

Total System Global Area 135864308 bytes
Fixed Size 454644 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 1191936 bytes
SQL> CREATE CONTROLFILE REUSE DATABASE "ORA9I" RESETLOGS ARCHIVELOG
2 -- SET STANDBY TO MAXIMIZE PERFORMANCE
3 MAXLOGFILES 50
4 MAXLOGMEMBERS 5
5 MAXDATAFILES 100
6 MAXINSTANCES 1
7 MAXLOGHISTORY 226
8 LOGFILE
9 GROUP 1 'C:ORACLEORADATAORA9IREDO01.LOG' SIZE 10M,
10 GROUP 2 'C:ORACLEORADATAORA9IREDO02.LOG' SIZE 10M,
11 GROUP 3 'C:ORACLEORADATAORA9IREDO03.LOG' SIZE 10M
12 -- STANDBY LOGFILE
13 DATAFILE
14 'C:ORACLEORADATAORA9ISYSTEM01.DBF',
15 'C:ORACLEORADATAORA9IUNDOTBS01.DBF',
16 'C:ORACLEORADATAORA9IRMAN.DBF',
17 'C:ORACLEORADATAORA9IDRSYS01.DBF',
18 'C:ORACLEORADATAORA9IEXAMPLE01.DBF',
19 'C:ORACLEORADATAORA9ITEST1.DBF',
20 'C:ORACLEORADATAORA9IODM01.DBF',
21 'C:ORACLEORADATAORA9ITEST2.DBF',
22 'C:ORACLEORADATAORA9IXDB01.DBF',
23 'C:ORACLEORADATAORA9IPORTAL.DBF'
24 CHARACTER SET ZHS16GBK;

控制檔案已建立

SQL>
SQL> prompt RECOVER DATABASE USING BACKUP CONTROLFILE
RECOVER DATABASE USING BACKUP CONTROLFILE
SQL>
SQL> ALTER DATABASE OPEN RESETLOGS;

資料庫已更改。

SQL>
SQL> ALTER TABLESPACE TEMP ADD TEMPFILE 'C:ORACLEORADATAORA9ITEMP01.DBF'
2 SIZE 20971520 REUSE AUTOEXTEND OFF;

表空間已更改。

SQL>
SQL> shutdown immediate;
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL>
SQL> startup;
ORACLE 例程已經啟動。

Total System Global Area 135864308 bytes
Fixed Size 454644 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 1191936 bytes
資料庫裝載完畢。
資料庫已經開啟。
SQL>
SQL>
SQL> select name from v$controlfile;

NAME
--------------------------------------------------------------------------------
C:ORACLEORADATAORA9ICONTROL01.CTL
C:ORACLEORADATAORA9ICONTROL02.CTL
C:ORACLEORADATAORA9ICONTROL03.CTL

SQL>
SQL> select member from v$logfile;

MEMBER
--------------------------------------------------------------------------------
C:ORACLEORADATAORA9IREDO03.LOG
C:ORACLEORADATAORA9IREDO02.LOG
C:ORACLEORADATAORA9IREDO01.LOG

SQL>

SQL> archive log list
資料庫日誌模式 存檔模式
自動存檔 啟用
存檔終點 C:oracleoradataarchora9i
最早的概要日誌序列 0
下一個存檔日誌序列 1
當前日誌序列 1
SQL>

可看到,日誌group的sequence又開始從1開始計數。

二、非歸檔模式下:

先將資料庫由歸檔模式改為非歸檔模式,具體操作如下:

SQL> archive log list
資料庫日誌模式 存檔模式
自動存檔 啟用
存檔終點 C:oracleoradataarchora9i
最早的概要日誌序列 2
下一個存檔日誌序列 4
當前日誌序列 4
SQL> shutdown immediate;
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> startup nomount;
ORACLE 例程已經啟動。

Total System Global Area 135864308 bytes
Fixed Size 454644 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 1191936 bytes
SQL> alter database noarchivelog;
alter database noarchivelog
*
ERROR 位於第 1 行:
ORA-01507: ??????


SQL> alter database mount;

資料庫已更改。

SQL> alter database noarchivelog;

資料庫已更改。

SQL> alter database open;

資料庫已更改。

SQL> archive log list
資料庫日誌模式 非存檔模式
自動存檔 啟用
存檔終點 C:oracleoradataarchora9i
最早的概要日誌序列 2
當前日誌序列 4
SQL>

1、noresetlogs方式

同歸檔模式下的noresetlogs方式

2、resetlogs方式

同非歸檔模式下的resetlogs方式

從這裡再一次可看出重建控制檔案跟資料庫是否歸檔沒有直接的關係。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/38542/viewspace-914028/,如需轉載,請註明出處,否則將追究法律責任。

相關文章