找回密码
 注册
搜索
热搜: 回贴
微赢网络技术论坛 门户 数据库 查看内容

重建控制文件导致密码文件变化探讨

2009-12-14 19:04| 发布者: admin| 查看: 35| 评论: 0|原作者: 天仙子

○今天在测试的时候发现,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;
数据库已更改。
密码文件由于可以方便的重建,因此,很少包括在备份集中,不过由于存在上述问题,进行全备份的时候,不妨同时备份当时的密码文件,可以避免产生错误。

最新评论

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏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.

返回顶部