○今天在测试的时候发现,Oracle控制文...... 今天在测试的时候发现,Oracle控制文件重建的话,密码文件也会相应的发生变化。 重建控制文件后,虽然密码文件内容没有发生变化。但是密码文件本身的状态已经发生了改变,最明显的一点,就是利用以前的备份进行恢复时,会报密码文件的错误。 首先创建一个备份: SQL> SELECT 'ALTER TABLESPACE ' || TABLESPACE_NAME || ' BEGIN BACKUP;' FROM DBA_TABLESPACES 2 WHERE CONTENTS != 'TEMPORARY'; 'ALTERTABLESPACE'||TABLESPACE_NAME||'BEGINBACKUP;' ALTER TABLESPACE SYSTEM BEGIN BACKUP; ALTER TABLESPACE UNDOTBS1 BEGIN BACKUP; ALTER TABLESPACE INDX BEGIN BACKUP; ALTER TABLESPACE TOOLS BEGIN BACKUP; ALTER TABLESPACE USERS BEGIN BACKUP; ALTER TABLESPACE YANGTK BEGIN BACKUP; 已选择6行。 SQL> ALTER TABLESPACE SYSTEM BEGIN BACKUP; 表空间已更改。 SQL> ALTER TABLESPACE UNDOTBS1 BEGIN BACKUP; 表空间已更改。 SQL> ALTER TABLESPACE INDX BEGIN BACKUP; 表空间已更改。 SQL> ALTER TABLESPACE TOOLS BEGIN BACKUP; 表空间已更改。 SQL> ALTER TABLESPACE USERS BEGIN BACKUP; 表空间已更改。 SQL> ALTER TABLESPACE YANGTK BEGIN BACKUP; 表空间已更改。 SQL> HOST COPY F:ORACLEORADATATEST*.* F:ORACLEBACKUPTEST20061106 SQL> SELECT 'ALTER TABLESPACE ' || TABLESPACE_NAME || ' END BACKUP;' FROM DBA_TABLESPACES 2 WHERE CONTENTS != 'TEMPORARY'; 'ALTERTABLESPACE'||TABLESPACE_NAME||'ENDBACKUP;' ALTER TABLESPACE SYSTEM END BACKUP; ALTER TABLESPACE UNDOTBS1 END BACKUP; ALTER TABLESPACE INDX END BACKUP; ALTER TABLESPACE TOOLS END BACKUP; ALTER TABLESPACE USERS END BACKUP; ALTER TABLESPACE YANGTK END BACKUP; 已选择6行。 SQL> ALTER TABLESPACE SYSTEM END BACKUP; 表空间已更改。 SQL> ALTER TABLESPACE UNDOTBS1 END BACKUP; 表空间已更改。 SQL> ALTER TABLESPACE INDX END BACKUP; 表空间已更改。 SQL> ALTER TABLESPACE TOOLS END BACKUP; 表空间已更改。 SQL> ALTER TABLESPACE USERS END BACKUP; 表空间已更改。 SQL> ALTER TABLESPACE YANGTK END BACKUP; 表空间已更改。 下面看看重建控制文件后的情况: SQL> CONN YANGTK/YANGTK@TEST AS SYSDBA 已连接。 SQL> SHUTDOWN IMMEDIATE 数据库已经关闭。 已经卸载数据库。 ORACLE 例程已经关闭。 SQL> STARTUP NOMOUNT ORACLE 例程已经启动。 Total System Global Area 76619308 bytes Fixed Size 454188 bytes Variable Size 50331648 bytes Database Buffers 25165824 bytes Redo Buffers 667648 bytes SQL> CREATE CONTROLFILE REUSE DATABASE "TEST" NORESETLOGS ARCHIVELOG 2 -- SET STANDBY TO MAXIMIZE PERFORMANCE 3 MAXLOGFILES 50 4 MAXLOGMEMBERS 5 5 MAXDATAFILES 100 6 MAXINSTANCES 1 7 MAXLOGHISTORY 680 8 LOGFILE 9 GROUP 1 'F:ORACLEORADATATESTREDO01.LOG' SIZE 100M, 10 GROUP 2 'F:ORACLEORADATATESTREDO02.LOG' SIZE 100M, 11 GROUP 3 'F:ORACLEORADATATESTREDO03.LOG' SIZE 100M 12 -- STANDBY LOGFILE 13 DATAFILE 14 'F:ORACLEORADATATESTSYSTEM01.DBF', 15 'F:ORACLEORADATATESTUNDOTBS01.DBF', 16 'F:ORACLEORADATATESTINDX01.DBF', 17 'F:ORACLEORADATATESTTOOLS01.DBF', 18 'F:ORACLEORADATATESTUSERS01.DBF', 19 'F:ORACLEORADATATESTYANGTK01.DBF' 20 CHARACTER SET ZHS16GBK 21 ; 控制文件已创建。 SQL> ALTER DATABASE OPEN; 数据库已更改。 这个时候,密码文件已经被修改。从操作系统中文件的信息也可以看到,文件最后修改时间就是控制文件的重建时间。这个时候,如果需要利用以前的备份恢复数据库,那么就需要重建密码文件: SQL> SHUTDOWN IMMEDIATE 数据库已经关闭。 已经卸载数据库。 ORACLE 例程已经关闭。 SQL> HOST COPY F:ORACLEBACKUPTEST20061106*.CTL F:ORACLEORADATATEST SQL> HOST COPY F:ORACLEBACKUPTEST20061106*.LOG F:ORACLEORADATATEST SQL> HOST COPY F:ORACLEBACKUPTEST20061106*.DBF F:ORACLEORADATATEST SQL> STARTUP MOUNT ORACLE 例程已经启动。 Total System Global Area 76619308 bytes Fixed Size 454188 bytes Variable Size 50331648 bytes Database Buffers 25165824 bytes Redo Buffers 667648 bytes ORA-01991: ???????'F:oracleoracle920DATABASEPWDtest.ORA' SQL> SHUTDOWN ORA-01109: ?????? 已经卸载数据库。 ORACLE 例程已经关闭。 SQL> HOST DEL F:ORACLEORACLE920DATABASEPWDTEST.ORA SQL> HOST ORAPWD FILE=F:ORACLEORACLE920DATABASEPWDTEST.ORA PASSWORD=TEST SQL> STARTUP MOUNT ORACLE 例程已经启动。 Total System Global Area 76619308 bytes Fixed Size 454188 bytes Variable Size 50331648 bytes Database Buffers 25165824 bytes Redo Buffers 667648 bytes 数据库装载完毕。 SQL> RECOVER DATABASE; 完成介质恢复。 SQL> ALTER DATABASE OPEN; 数据库已更改。 密码文件由于可以方便的重建,因此,很少包括在备份集中,不过由于存在上述问题,进行全备份的时候,不妨同时备份当时的密码文件,可以避免产生错误。 |
|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )
GMT+8, 2024-9-30 07:16 , Processed in 0.154307 second(s), 12 queries , Gzip On, MemCache On.
Powered by Discuz! X3.5
© 2001-2023 Discuz! Team.