什么网站需要经营性备案,建设网站教程2016,网站文字模板,素材网站有哪些关于DG环境下备库数据文件重命名的问题#xff1a;**前言:**主要想表明DG环境下备库数据文件重命名的问题#xff0c;以及db_file_name_convert与log_file_name_convert的作用。**实验证明#xff1a;**主库为备库备份一份控制文件RMAN backup current controlfile for …关于DG环境下备库数据文件重命名的问题**前言:**主要想表明DG环境下备库数据文件重命名的问题以及db_file_name_convert与log_file_name_convert的作用。**实验证明**主库为备库备份一份控制文件RMAN backup current controlfile for standby format /home/oracle/rman/standby.ctl;拷贝到备库进行恢复**备库此时不设置db_file_name_convert log_file_name_convert两个参数**SQL show parameter db_file_name_convert;NAME TYPE VALUE------------------------------------ ----------- ------------------------------db_file_name_convert stringSQL show parameter log_file_name_convert;NAME TYPE VALUE------------------------------------ ----------- ------------------------------log_file_name_convert string**恢复备库控制文件**RMAN restore controlfile from /home/oracle/rman/standby.ctl;SQL alter database mount;**查看控制文件中记录的数据文件信息**(proddg2为主库prod为备库曾做过主备切换)SQL select name from v$datafile;NAME/oracle/app/oradata/proddg2/system01.dbf/oracle/app/oradata/proddg2/sysaux01.dbf/oracle/app/oradata/proddg2/undotbs01.dbf/oracle/app/oradata/proddg2/users01.dbf/oracle/app/oradata/proddg2/example01.dbfSQL select member from v$logfile;MEMBER/oracle/app/oradata/proddg2/redo03.log/oracle/app/oradata/proddg2/redo02.log/oracle/app/oradata/proddg2/redo01.log/oracle/app/oradata/proddg2/std_redo04.log/oracle/app/oradata/proddg2/std_redo05.log/oracle/app/oradata/proddg2/std_redo06.log控制文件中记录的数据文件位置都是主库的进行restore前需要进行数据文件重命名**手动重命名**SQL set line 500SQL set pages 0SQL select q[alter database rename file ] || name || q[ to ] || q[/oracle/app/oradata/prod/] || substr(name,instr(name,/,-1)1) || q[;] from v$datafile;执行alter database rename file /oracle/app/oradata/proddg2/system01.dbf to /oracle/app/oradata/prod/system01.dbf;alter database rename file /oracle/app/oradata/proddg2/sysaux01.dbf to /oracle/app/oradata/prod/sysaux01.dbf;alter database rename file /oracle/app/oradata/proddg2/undotbs01.dbf to /oracle/app/oradata/prod/undotbs01.dbf;alter database rename file /oracle/app/oradata/proddg2/users01.dbf to /oracle/app/oradata/prod/users01.dbf;alter database rename file /oracle/app/oradata/proddg2/example01.dbf to /oracle/app/oradata/prod/example01.dbf;ERROR at line 1:ORA-01511: error in renaming log/data filesORA-01141: error renaming data file 1 - new file /oracle/app/oradata/prod/system01.dbf not foundORA-01110: data file 1: /oracle/app/oradata/proddg2/system01.dbfORA-27037: unable to obtain file statusLinux-x86_64 Error: 2: No such file or directoryAdditional information: 3**使用sqlplus手动进行重命名重命名后的文件要在指定目录存在。(适用于热备份方式同步搭建DG)****使用RMAN在restore前重命名**SQL select q[set newname for datafile ] || name || q[ to ] || q[/oracle/app/oradata/prod/] || substr(name,instr(name,/,-1)1) || q[;] from v$datafile;将获取到的内容复制到RMAN命令块中形成脚本recovery.sh:rman target / logrecover_log EOFrun{allocate channel d1 device type disk;allocate channel d2 device type disk;allocate channel d3 device type disk;catalog start with /home/oracle/rman;set newname for datafile /oracle/app/oradata/proddg2/system01.dbf to /oracle/app/oradata/prod/system01.dbf;set newname for datafile /oracle/app/oradata/proddg2/sysaux01.dbf to /oracle/app/oradata/prod/sysaux01.dbf;set newname for datafile /oracle/app/oradata/proddg2/undotbs01.dbf to /oracle/app/oradata/prod/undotbs01.dbf;set newname for datafile /oracle/app/oradata/proddg2/users01.dbf to /oracle/app/oradata/prod/users01.dbf;set newname for datafile /oracle/app/oradata/proddg2/example01.dbf to /oracle/app/oradata/prod/example01.dbf;release channel d1;release channel d2;release channel d3;restore database;switch datafile all;}exitEOFRecovery Manager complete.**查看数据文件以及日志文件的记录****数据文件**SQL select name from v$datafile;NAME/oracle/app/oradata/prod/system01.dbf/oracle/app/oradata/prod/sysaux01.dbf/oracle/app/oradata/prod/undotbs01.dbf/oracle/app/oradata/prod/users01.dbf/oracle/app/oradata/prod/example01.dbf数据文件重命名成功也恢复成功。**日志文件**SQL select member from v$logfile;MEMBER/oracle/app/oradata/proddg2/redo03.log/oracle/app/oradata/proddg2/redo02.log/oracle/app/oradata/proddg2/redo01.log/oracle/app/oradata/proddg2/std_redo04.log/oracle/app/oradata/proddg2/std_redo05.log/oracle/app/oradata/proddg2/std_redo06.log**日志文件还需要手动重命名因为不存在proddg2目录重命名至prod目录下****(日志文件是可以在sqlplus中mount状态下重命名的不需要在对应目录存在日志文件)。****2.如果在备库此时存在如下参数时的情况**db_file_name_convert /oracle/app/oradata/proddg2, /oracle/app/oradata/prodlog_file_name_convert/oracle/app/oradata/proddg2, /oracle/app/oradata/prod**恢复备库的控制文件**RMAN restore controlfile from /home/oracle/rman/standby.ctl;SQL alter database mount;Database altered.**查看数据文件与日志文件信息**SQL select name from v$datafile;NAME/oracle/app/oradata/prod/system01.dbf/oracle/app/oradata/prod/sysaux01.dbf/oracle/app/oradata/prod/undotbs01.dbf/oracle/app/oradata/prod/users01.dbf/oracle/app/oradata/prod/example01.dbfSQL select member from v$logfile;MEMBER/oracle/app/oradata/prod/redo03.log/oracle/app/oradata/prod/redo02.log/oracle/app/oradata/prod/redo01.log/oracle/app/oradata/prod/std_redo04.log/oracle/app/oradata/prod/std_redo05.log/oracle/app/oradata/prod/std_redo06.log**再直接使用RMAN执行restore database即可。**RMAN restore database;**总结**两种方式将主库的控制文件传给备库。**1**.alter database create standby controlfile as /home/oracle/control01.ctl;拷贝到备库将数据库启动到mount模式后需要手动进行数据文件重命名,**但是要保证重命名后的路径下存在相应的数据文件。**//该控制文件中记录的数据文件路径仍为主库的数据文件路径。2.backup current controlfile for standby format /home/oracle/%d_%I_%s_%p.bkp;使用RMAN备份的控制文件拷贝到备库时使用RMAN进行恢复控制文件时如果备库设置了db_file_name_convert与log_file_name_convert参数那么当数据库启动到mount时就无需手动进行数据文件重命名因为RMAN在恢复控制文件过程中会依据该参数设置自行修改控制文件中记录的数据文件路径日志文件路径。如果备库没有设置db_file_name_convert与log_file_name_convert参数那么就需要在restore前在RMAN的run块中对数据文件进行set new name 然后执行switch datafile all。但是日志文件还是需要手动重命名。3.另外意义db_file_name_convert与log_file_name_convert参数的另外一个意义就是当主库创建数据文件等操作时备库会根据该参数转化路径后自动创建一个相对应位置的数据文件前提是STANDBY_FILE_MANAGEMENT参数为auto模式。**疑问备库的redo与standby redo是如何生成的何时生成的。**