ITPub博客

首页 > 数据库 > Oracle > db_file_name_convert顺序问题

db_file_name_convert顺序问题

原创 Oracle 作者:lusklusklusk 时间:2018-02-13 16:23:00 0 删除 编辑
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

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30126024/viewspace-2151081/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
Welcome to Lukes DB HOME。 Oracle OCM、Mysql OCP, 10年DBA工作经验,博客仅记录自己的一个学习过程,不代表完全准确,如有需要,欢迎转载。

注册时间:2015-02-02

  • 博文量
    348
  • 访问量
    1174958