控制文件实验
实验一 :
1. 关闭数据库
2. 将控制文件复制一份到/tmp/的路径下
3. 启动数据库
4. 对控制文件进行一次在线热备
5. 关闭数据库
6. 将控制文件全部移动到/u01/app/oracle/oradata/OCP12C/bak/路径下
7. 将/tmp/路径下控制文件和在线热备的控制文件分别 复制一份到/u01/app/oracle/oradata/OCP12C/路径下
8. 启动数据库(不能正常启动,因为两个控制文件的版本号不同)
9. 解决方法:将在线热备的控制文件再复制一份覆盖从/tmp/路径下复制来的控制文件,此时可以将数据库启动到mount状态,但依然不能打开数据库,将/u01/app/oracle/oradata/OCP12C/bak/路径下的控制文件复制到u01/app/oracle/oradata/OCP12C/路径下,再次启动数据库成功
10. 总结:数据库启动到第二阶段要加载控制文件时,发现控制文件版本号不同,所以报错,当使用在线热备的两份控制文件时,版本号一致,但数据库在第二次关闭时,数据文件头部也记录了控制文件的版本号信息,此信息与在线热备控制文件版本号信息不同,所以数据库只能启动到mount状态,不能正常open。在/u01/app/oracle/oradata/OCP12C/bak/路径下的控制文件版本号信息与数据文件头部记录的信息是一致的,最后成功启动数据库。
实验代码:
1 第一步: 2 SQL> shutdown immediate 3 Database closed. 4 Database dismounted. 5 ORACLE instance shut down. 6 第二步: 7 [oracle@oracle12c OCP12C]$ cp control0* /tmp 8 第三步: 9 SQL> startup 10 ORACLE instance started. 11 12 Total System Global Area 1660944384 bytes 13 Fixed Size 8793448 bytes 14 Variable Size 939524760 bytes 15 Database Buffers 704643072 bytes 16 Redo Buffers 7983104 bytes 17 Database mounted. 18 Database opened. 19 SQL> select status from v$instance; 20 21 STATUS 22 ------------------------ 23 OPEN 24 第四步: 25 SQL> alter database backup controlfile to ‘/tmp/contorl01.bak‘; 26 27 Database altered. 28 第五步: 29 SQL> shutdown immediate 30 Database closed. 31 Database dismounted. 32 ORACLE instance shut down. 33 第六步: 34 [oracle@oracle12c OCP12C]$ mv control0* bak/ 35 第七步: 36 [oracle@oracle12c OCP12C]$ cp /tmp/control01.ctl . 37 [oracle@oracle12c OCP12C]$ cp /tmp/contorl01.bak control02.ctl 38 第八步: 39 SQL> startup nomount 40 ORACLE instance started. 41 42 Total System Global Area 1660944384 bytes 43 Fixed Size 8793448 bytes 44 Variable Size 939524760 bytes 45 Database Buffers 704643072 bytes 46 Redo Buffers 7983104 bytes 47 SQL> alter database mount 48 2 ; 49 alter database mount 50 * 51 ERROR at line 1: 52 ORA-00214: control file ‘/u01/app/oracle/oradata/OCP12C/control02.ctl‘ version 53 41363 inconsistent with file ‘/u01/app/oracle/oradata/OCP12C/control01.ctl‘ 54 version 41348 55 第九步: 56 [oracle@oracle12c OCP12C]$ cp control02.ctl control01.ctl 57 58 SQL> alter database mount; 59 60 Database altered. 61 62 SQL> alter database open; 63 alter database open 64 * 65 ERROR at line 1: 66 ORA-01589: must use RESETLOGS or NORESETLOGS option for database open 67 68 69 SQL> alter database open RESETLOGS; 70 alter database open RESETLOGS 71 * 72 ERROR at line 1: 73 ORA-01152: file 1 was not restored from a sufficiently old backup 74 ORA-01110: data file 1: ‘/u01/app/oracle/oradata/OCP12C/system01.dbf‘ 75 第十步: 76 [oracle@oracle12c OCP12C]$ cp bak/control0* . 77 78 SQL> alter database open; 79 80 Database altered. 81 82 SQL> select status from v$instance; 83 84 STATUS 85 ------------------------ 86 OPEN 87 88 SQL>
原文:https://www.cnblogs.com/eniniemand/p/13648243.html