http://blog.oracle.com.cn/index.php/2446/viewspace-5932.html
本案例分两种情况:归档模式和非归档模式。在每种模式下采用两种重建方式,即resetlogs和noresetlogs。
一、archived模式下:
SQL> archive log list
数据库日志模式 存档模式
自动存档 启用
存档终点 C:/oracle/oradata/arch/ora9i
最早的概要日志序列 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:/ORACLE/ORADATA/ORA9I/REDO01.LOG' SIZE 10M,
10 GROUP 2 'C:/ORACLE/ORADATA/ORA9I/REDO02.LOG' SIZE 10M,
11 GROUP 3 'C:/ORACLE/ORADATA/ORA9I/REDO03.LOG' SIZE 10M
12 -- STANDBY LOGFILE
13 DATAFILE
14 'C:/ORACLE/ORADATA/ORA9I/SYSTEM01.DBF',
15 'C:/ORACLE/ORADATA/ORA9I/UNDOTBS01.DBF',
16 'C:/ORACLE/ORADATA/ORA9I/RMAN.DBF',
17 'C:/ORACLE/ORADATA/ORA9I/DRSYS01.DBF',
18 'C:/ORACLE/ORADATA/ORA9I/EXAMPLE01.DBF',
19 'C:/ORACLE/ORADATA/ORA9I/TEST1.DBF',
20 'C:/ORACLE/ORADATA/ORA9I/ODM01.DBF',
21 'C:/ORACLE/ORADATA/ORA9I/TEST2.DBF',
22 'C:/ORACLE/ORADATA/ORA9I/XDB01.DBF',
23 'C:/ORACLE/ORADATA/ORA9I/PORTAL.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:/ORACLE/ORADATA/ORA9I/TEMP01.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:/ORACLE/ORADATA/ORA9I/CONTROL01.CTL
C:/ORACLE/ORADATA/ORA9I/CONTROL02.CTL
C:/ORACLE/ORADATA/ORA9I/CONTROL03.CTL
SQL>
SQL> select member from v$logfile;
MEMBER
--------------------------------------------------------------------------------
C:/ORACLE/ORADATA/ORA9I/REDO01.LOG
C:/ORACLE/ORADATA/ORA9I/REDO03.LOG
C:/ORACLE/ORADATA/ORA9I/REDO02.LOG
SQL>
SQL> archive log list
数据库日志模式 存档模式
自动存档 启用
存档终点 C:/oracle/oradata/arch/ora9i
最早的概要日志序列 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:/ORACLE/ORADATA/ORA9I/REDO01.LOG' SIZE 10M,
10 GROUP 2 'C:/ORACLE/ORADATA/ORA9I/REDO02.LOG' SIZE 10M,
11 GROUP 3 'C:/ORACLE/ORADATA/ORA9I/REDO03.LOG' SIZE 10M
12 -- STANDBY LOGFILE
13 DATAFILE
14 'C:/ORACLE/ORADATA/ORA9I/SYSTEM01.DBF',
15 'C:/ORACLE/ORADATA/ORA9I/UNDOTBS01.DBF',
16 'C:/ORACLE/ORADATA/ORA9I/RMAN.DBF',
17 'C:/ORACLE/ORADATA/ORA9I/DRSYS01.DBF',
18 'C:/ORACLE/ORADATA/ORA9I/EXAMPLE01.DBF',
19 'C:/ORACLE/ORADATA/ORA9I/TEST1.DBF',
20 'C:/ORACLE/ORADATA/ORA9I/ODM01.DBF',
21 'C:/ORACLE/ORADATA/ORA9I/TEST2.DBF',
22 'C:/ORACLE/ORADATA/ORA9I/XDB01.DBF',
23 'C:/ORACLE/ORADATA/ORA9I/PORTAL.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:/ORACLE/ORADATA/ORA9I/TEMP01.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:/ORACLE/ORADATA/ORA9I/CONTROL01.CTL
C:/ORACLE/ORADATA/ORA9I/CONTROL02.CTL
C:/ORACLE/ORADATA/ORA9I/CONTROL03.CTL
SQL>
SQL> select member from v$logfile;
MEMBER
--------------------------------------------------------------------------------
C:/ORACLE/ORADATA/ORA9I/REDO03.LOG
C:/ORACLE/ORADATA/ORA9I/REDO02.LOG
C:/ORACLE/ORADATA/ORA9I/REDO01.LOG
SQL>
SQL> archive log list
数据库日志模式 存档模式
自动存档 启用
存档终点 C:/oracle/oradata/arch/ora9i
最早的概要日志序列 0
下一个存档日志序列 1
当前日志序列 1
SQL>
可看到,日志group的sequence又开始从1开始计数。
二、非归档模式下:
先将数据库由归档模式改为非归档模式,具体操作如下:
SQL> archive log list
数据库日志模式 存档模式
自动存档 启用
存档终点 C:/oracle/oradata/arch/ora9i
最早的概要日志序列 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:/oracle/oradata/arch/ora9i
最早的概要日志序列 2
当前日志序列 4
SQL>
1、noresetlogs方式
同归档模式下的noresetlogs方式
2、resetlogs方式
同非归档模式下的resetlogs方式
从这里再一次可看出重建控制文件跟数据库是否归档没有直接的关系。