当前位置:首页 > 网络编程 > 数据库 > Oracle > 重建控制文件会导致密码文件发生变化

重建控制文件会导致密码文件发生变化

点击次数:28 次 发布日期:2008-11-22 17:17:27 作者:源代码网
源代码网推荐 今天在测试的时候发现,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行。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;

    数据库已更改。

    密码文件由于可以方便的重建,因此,很少包括在备份集中,不过由于存在上述问题,进行全备份的时候,不妨同时备份当时的密码文件,可以避免产生错误。

    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 例程已经启动。

源代码网供稿.
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华