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

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方式

从这里再一次可看出重建控制文件跟数据库是否归档没有直接的关系。

你可能感兴趣的:(sql,数据库,database,System,character,archive)