概述
duplicate时如果远程的一个目录空间不够,可以把文件拆分到两个目录,使用db_file_name_convert即可
db_file_name_convert不是对目录名称进行转换,而是对文件名称进行转换
比如源端的文件路径都是/u01/app/oracle/oradata/prod1
文件名称都是诸如/u01/app/oracle/oradata/prod1/u*.dbf、/u01/app/oracle/oradata/prod1/sys*.dbf
发现源端/u01/app/oracle/oradata/prod1目录下的文件大于4T,但是目标端/u01/app/oracle/oradata/prod1std只有3T,怎么办?
挂载一个存储,新增一个/u02的目录,如下方式使用db_file_name_convert对文件名进行转换
db_file_name_convert=('/u01/app/oracle/oradata/prod1/u','/u02/u','/u01/app/oracle/oradata/prod1','/u01/app/oracle/oradata/prod1std')
表示先把文件名称中的/u01/app/oracle/oradata/prod1/u改为了/u02/u
剩下的文件名称中没有/u01/app/oracle/oradata/prod1/u的,就把文件名称中的/u01/app/oracle/oradata/prod1改为/u01/app/oracle/oradata/prod1std
db_file_name_convert=('/u01/app/oracle/oradata/prod1','/u01/app/oracle/oradata/prod1std','/u01/app/oracle/oradata/prod1/u',' /u02/u ')
表示先把文件名称中的/u01/app/oracle/oradata/prod1改为了/u01/app/oracle/oradata/prod1std
剩下的文件名称中没有/u01/app/oracle/oradata/prod1的,就把文件名称中的/u01/app/oracle/oradata/prod1/u改为/u02/u
--所以如上述发现目标端一个目录空间不够时,要转换部分数据文件时,必须把要转换的部分数据文件名放在前面,即如上案例必须把/u02/u放到/u01/app/oracle/oradata/prod1std前面
源端的文件名称如下
SQL> select file_name from dba_data_files;
FILE_NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/prod1/users01.dbf
/u01/app/oracle/oradata/prod1/undotbs01.dbf
/u01/app/oracle/oradata/prod1/sysaux01.dbf
/u01/app/oracle/oradata/prod1/system01.dbf
/u01/app/oracle/oradata/prod1/example01.dbf
run {duplicate target database to prod1std from active database
db_file_name_convert=('/u01/app/oracle/oradata/prod1','/u01/app/oracle/oradata/prod1std','/u01/app/oracle/oradata/prod1/u','/u02/u')
logfile '/u01/app/oracle/oradata/prod1std/redo01.log' size 100M,
'/u01/app/oracle/oradata/prod1std/redo02.log' size 100M,
'/u01/app/oracle/oradata/prod1std/redo03.log' size 100M;}
目标端
SQL> select file_name from dba_data_files;
FILE_NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/prod1std/system01.dbf
/u01/app/oracle/oradata/prod1std/sysaux01.dbf
/u01/app/oracle/oradata/prod1std/undotbs01.dbf
/u01/app/oracle/oradata/prod1std/users01.dbf
/u01/app/oracle/oradata/prod1std/example01.dbf
run {duplicate target database to prod1std from active database
db_file_name_convert=('/u01/app/oracle/oradata/prod1/u','/u02/u','/u01/app/oracle/oradata/prod1','/u01/app/oracle/oradata/prod1std')
logfile '/u01/app/oracle/oradata/prod1std/redo01.log' size 100M,
'/u01/app/oracle/oradata/prod1std/redo02.log' size 100M,
'/u01/app/oracle/oradata/prod1std/redo03.log' size 100M;}
目标端
SQL> select file_name from dba_data_files;
FILE_NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/prod1std/system01.dbf
/u01/app/oracle/oradata/prod1std/sysaux01.dbf
/u02/undotbs01.dbf
/u02/users01.dbf
/u01/app/oracle/oradata/prod1std/example01.dbf
db_file_name_convert不是对目录名称进行转换,而是对文件名称进行转换
比如源端的文件路径都是/u01/app/oracle/oradata/prod1
文件名称都是诸如/u01/app/oracle/oradata/prod1/u*.dbf、/u01/app/oracle/oradata/prod1/sys*.dbf
发现源端/u01/app/oracle/oradata/prod1目录下的文件大于4T,但是目标端/u01/app/oracle/oradata/prod1std只有3T,怎么办?
挂载一个存储,新增一个/u02的目录,如下方式使用db_file_name_convert对文件名进行转换
db_file_name_convert=('/u01/app/oracle/oradata/prod1/u','/u02/u','/u01/app/oracle/oradata/prod1','/u01/app/oracle/oradata/prod1std')
表示先把文件名称中的/u01/app/oracle/oradata/prod1/u改为了/u02/u
剩下的文件名称中没有/u01/app/oracle/oradata/prod1/u的,就把文件名称中的/u01/app/oracle/oradata/prod1改为/u01/app/oracle/oradata/prod1std
db_file_name_convert=('/u01/app/oracle/oradata/prod1','/u01/app/oracle/oradata/prod1std','/u01/app/oracle/oradata/prod1/u',' /u02/u ')
表示先把文件名称中的/u01/app/oracle/oradata/prod1改为了/u01/app/oracle/oradata/prod1std
剩下的文件名称中没有/u01/app/oracle/oradata/prod1的,就把文件名称中的/u01/app/oracle/oradata/prod1/u改为/u02/u
--所以如上述发现目标端一个目录空间不够时,要转换部分数据文件时,必须把要转换的部分数据文件名放在前面,即如上案例必须把/u02/u放到/u01/app/oracle/oradata/prod1std前面
源端的文件名称如下
SQL> select file_name from dba_data_files;
FILE_NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/prod1/users01.dbf
/u01/app/oracle/oradata/prod1/undotbs01.dbf
/u01/app/oracle/oradata/prod1/sysaux01.dbf
/u01/app/oracle/oradata/prod1/system01.dbf
/u01/app/oracle/oradata/prod1/example01.dbf
run {duplicate target database to prod1std from active database
db_file_name_convert=('/u01/app/oracle/oradata/prod1','/u01/app/oracle/oradata/prod1std','/u01/app/oracle/oradata/prod1/u','/u02/u')
logfile '/u01/app/oracle/oradata/prod1std/redo01.log' size 100M,
'/u01/app/oracle/oradata/prod1std/redo02.log' size 100M,
'/u01/app/oracle/oradata/prod1std/redo03.log' size 100M;}
目标端
SQL> select file_name from dba_data_files;
FILE_NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/prod1std/system01.dbf
/u01/app/oracle/oradata/prod1std/sysaux01.dbf
/u01/app/oracle/oradata/prod1std/undotbs01.dbf
/u01/app/oracle/oradata/prod1std/users01.dbf
/u01/app/oracle/oradata/prod1std/example01.dbf
run {duplicate target database to prod1std from active database
db_file_name_convert=('/u01/app/oracle/oradata/prod1/u','/u02/u','/u01/app/oracle/oradata/prod1','/u01/app/oracle/oradata/prod1std')
logfile '/u01/app/oracle/oradata/prod1std/redo01.log' size 100M,
'/u01/app/oracle/oradata/prod1std/redo02.log' size 100M,
'/u01/app/oracle/oradata/prod1std/redo03.log' size 100M;}
目标端
SQL> select file_name from dba_data_files;
FILE_NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/prod1std/system01.dbf
/u01/app/oracle/oradata/prod1std/sysaux01.dbf
/u02/undotbs01.dbf
/u02/users01.dbf
/u01/app/oracle/oradata/prod1std/example01.dbf
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30126024/viewspace-2151081/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/30126024/viewspace-2151081/
最后
以上就是帅气大地为你收集整理的db_file_name_convert顺序问题的全部内容,希望文章能够帮你解决db_file_name_convert顺序问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复