oracle rename redo,ORACLE的redo里是否包含 rename 和resize?

先备份datafile 3,再备份控制文件,然后rename file,datafile resize,shutdown.用dbms_restore恢复出controlfile,mount后进行恢复,可以看到恢复后的数据文件名是rename前的名,alert.log里面并没有因为rename产生的cannot identify/lock data file 10错误, 也就是说rename并没有包含在redo中并被应用.

----- 调置归档模式:

SQL> alter system set log_archive_dest = 'd:\ora92\oradata\ice\archive\' scope=spfile;系统已更改。SQL> alter system set log_archive_format = '%s.arc' scope=spfile;系统已更改。SQL>alter system set log_archive_start = true scope=spfile;系统已更改。SQL> shutdown immediate数据库已经关闭。已经卸载数据库。ORACLE 例程已经关闭。SQL> startup mountORACLE 例程已经启动。Total System Global Area    97589952 bytes                                       Fixed Size                    453312 bytes                                       Variable Size               58720256 bytes                                       Database Buffers            37748736 bytes                                       Redo Buffers                  667648 bytes                                       数据库装载完毕。SQL> alter database archivelog;数据库已更改。SQL> alter database open;数据库已更改。SQL> archive log list数据库日志模式             存档模式自动存档              启用存档终点             d:\ora92\oradata\ice\archive\最早的概要日志序列      6下一个存档日志序列    8当前日志序列            8SQL> alter system switch logfile;系统已更改。

----创建测试表空间:SQL> create tablespace test_rename datafile 'd:\ora92\oradata\ice\rename01.dbf' size 10m;表空间已创建。SQL> select file_id,file_name   2   from dba_data_files;

FILE_ID                                                                      ----------                                                                      FILE_NAME                                                                       --------------------------------------------------------------------------------          1                                                                      D:\ORA92\ORADATA\ICE\SYSTEM01.DBF                                                                                                                                         2                                                                      D:\ORA92\ORADATA\ICE\UNDOTBS01.DBF                                                                                                                                        3                                                                      D:\ORA92\ORADATA\ICE\RENAME01.DBF

----备份测试表空间:

SQL> alter tablespace test_rename begin backup;

表空间已更改。

SQL> host ocopy d:\ora92\oradata\ice\rename01.dbf d:\ora92\oradata\;

SQL> alter tablespace test_rename end backup;表空间已更改。

----备份控制文件:SQL> alter database backup controlfile to 'd:\ora92\oradata\controlbak.bak';数据库已更改。

---- Rename Datafile:SQL> alter tablespace test_rename offline;表空间已更改。

--- OS上rename datafile 。SQL> alter database rename file 'd:\ora92\oradata\ice\rename01.dbf' to 'd:\ora92\oradata\ice\rename02.dbf';数据库已更改。SQL> alter tablespace test_rename online;表空间已更改。SQL> select file_id,file_name   2   from dba_data_files;

FILE_ID                                                                      ----------                                                                      FILE_NAME                                                                       --------------------------------------------------------------------------------          1                                                                      D:\ORA92\ORADATA\ICE\SYSTEM01.DBF                                                                                                                                         2                                                                      D:\ORA92\ORADATA\ICE\UNDOTBS01.DBF                                                                                                                                        3                                                                      D:\ORA92\ORADATA\ICE\RENAME02.DBF

系统已更改。----Resize datafile:                                              SQL>alter database datafile 3 resize 20m;

数据库已更改。

SQL> select bytes/1024   2   from dba_data_files   3   where file_id = 3;

BYTES/1024                                                                      ----------                                                                            20480                                                                      SQL> alter system switch logfile;

系统已更改。SQL> shutdown immediate数据库已经关闭。已经卸载数据库。ORACLE 例程已经关闭。

---- 用备份的控制文件,数据文件Restore:SQL> startup mountORACLE 例程已经启动。

Total System Global Area    97589952 bytes                                       Fixed Size                    453312 bytes                                       Variable Size               58720256 bytes                                       Database Buffers            37748736 bytes                                       Redo Buffers                  667648 bytes                                       数据库装载完毕。SQL> recover database using backup controlfile;ORA-00279: 更改 202902 (在 04/17/2006 11:20:45 生成) 对于线程 1 是必需的ORA-00289: 建议: D:\ORA92\ORADATA\ICE\ARCHIVE\9.ARCORA-00280: 更改 202902 对于线程 1 是按序列 # 9 进行的 指定日志: {=suggested | filename | AUTO | CANCEL}d:\ora92\oradata\ice\redo01.logORA-00310: 存档日志包含序列 7;要求序列 9ORA-00334: 归档日志: 'D:\ORA92\ORADATA\ICE\REDO01.LOG'

SQL> recover database using backup controlfile;ORA-00279: 更改 202902 (在 04/17/2006 11:20:45 生成) 对于线程 1 是必需的ORA-00289: 建议: D:\ORA92\ORADATA\ICE\ARCHIVE\9.ARCORA-00280: 更改 202902 对于线程 1 是按序列 # 9 进行的

指定日志: {=suggested | filename | AUTO | CANCEL}d:\ora92\oradata\ice\redo02.logORA-00310: 存档日志包含序列 8;要求序列 9ORA-00334: 归档日志: 'D:\ORA92\ORADATA\ICE\REDO02.LOG'

SQL> recover database using backup controlfile;ORA-00279: 更改 202902 (在 04/17/2006 11:20:45 生成) 对于线程 1 是必需的ORA-00289: 建议: D:\ORA92\ORADATA\ICE\ARCHIVE\9.ARCORA-00280: 更改 202902 对于线程 1 是按序列 # 9 进行的

指定日志: {=suggested | filename | AUTO | CANCEL}d:\ora92\oradata\ice\redo03.log已应用的日志。完成介质恢复。SQL> alter database open;alter database open*ERROR 位于第 1 行: ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项

SQL> alter database open resetlogs;

数据库已更改。

-----验证结果:

SQL> select file_name,bytes/1024/1024   2   from dba_data_files;

FILE_NAME                                                                       --------------------------------------------------------------------------------BYTES/1024/1024                                                                 ---------------                                                                 D:\ORA92\ORADATA\ICE\SYSTEM01.DBF                                                            500                                                                                                                                                 D:\ORA92\ORADATA\ICE\UNDOTBS01.DBF                                                           200                                                                                                                                                 D:\ORA92\ORADATA\ICE\RENAME01.DBF             20

可以看到file name 没有改变过来,而file size则改变过来了,

这就证明:redo log中会记录file size的改变,而file name的改变只会记录在控制文件中。

这个有什么用呢?

在DG当中用处就大了:

需要注意的是:在primary 上rename a datafile,即使STANDBY_FILE_MANAGEMENT = auto,也需要在standby上手工执行相同的操作。-------------------------修改相应的primary数据文件路径-----------------------1.Offline 表空间:Alter tablespace tools offline NORMAL;2.Mv dbfile:Mv /data4/oradata/crmtemp/tools02.dbf /disk3/oradata/crmtemp/3.Rename:Alter tablespace toolsrename datafile '/data4/oradata/crmtemp/tools02.dbf'To '/disk3/oradata/crmtemp/tools02.dbf';4.Online:Alter tablespace tools online;-------------------------修改相应的standby 数据文件路径-----------------------1.RecoverSQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE2> DISCONNECT FROM SESSION;确定已经所有的log都已经应用了。2.Cancel RECOVER:SQL> SELECT NAME, SEQUENCE#, ARCHIVED, APPLIED 2> FROM V$ARCHIVED_LOG;SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;3.ShutdownSQL> SHUTDOWN;4.Mv dbfile:Mv /data4/oradata/crmtemp/tools02.dbf /disk3/oradata/crmtemp/5.mountSQL> STARTUP NOMOUNT;SQL> ALTER DATABASE MOUNT STANDBY DATABASE;6.Rename:ALTER DATABASE RENAME FILE '/data4/oradata/crmtemp/tools02.dbf'To '/data1/oradata/crmtemp/tools02.dbf';7.Recover:SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

alter database datafile '/data2/oradata/crmtemp/feedback_index04.dbf' resize 512mprimary上resize 这个动作,即使STANDBY_FILE_MANAGEMENT = manual , standby上也不需要做什么动作,既可以自动应用。

对于rename file ,是修改的控制文件 中的文件名,数据库中本身没有记录文件名,所以我猜测 rename file 并没有产生相关信息进入日志,所以standby需要手工处理。而resize 产生了相关的日志的(大小变了),在standby一端能解析出这个命令来。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值