服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > 数据库技术 > Oracle技术 > DBA > 查看文档

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

  今天在测试的时候发现,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;

  数据库已更改。

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


  

扫描关注微信公众号