我是靠谱客的博主 欣喜溪流,最近开发中收集的这篇文章主要介绍大量数据文件恢复时,set new…,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

需要把大量数据文件恢复到新的目录(如RMAN异机恢复),可以设置DB_CREATE_FILE_DEST参数,使用OMF自动生成文数据文件名,比拼SQL还要简单快速

 

set newname for datafile * to NEW;

 

参考文档:

 

Goal
 Solution

--------------------------------------------------------------------------------


Applies to:
Oracle Database - Standard Edition - Version 10.1.0.2 and later
Oracle Database - Enterprise Edition - Version 9.0.1.2 and later
Information in this document applies to any platform.
***Checked for relevance on 29-Apr-2013***

 

Goal
When you must restore the database the same directory structure is not always there. If you have a database containing 1000s of datafiles it can be very tedious to setup the set newname commands for all the datafiles.
Using sqlplus we can extract the information we need into a file which can then be easily modifed and executed as an RMAN script to complete the task.

Solution
You are restoring or duplicating the target database to a new host using RMAN. The datafiles are not OMF files and you want to make them OMF. Using 'set newname for datafile to NEW' will generate a new OMF filename for the restored datafile.
This will avoid the manual entry or vi/notepad editing of similar output. Using this output the datafiles will be restored to the DB_CREATE_FILE_DEST. If this parameter is not set you must add the correct path as in '/path/NEW' will direct the files to the new location and give an OMF filename.

sqlplus /nolog
connect system/manager

set echo off pages 0 feed off sqlp #
spool /path/setnewnamedf.lst
select 'set newname for datafile '||file#||' to NEW;' from v$datafile;
-- select 'set newname for datafile '||file#||' to /newpath/NEW;' from v$datafile;
spool offThere are 2 select statements above with slightly different output.

Select #1 Output:

set newname for datafile 1 to NEW;
set newname for datafile 2 to NEW;
set newname for datafile 3 to NEW;
set newname for datafile 4 to NEW;
set newname for datafile 5 to NEW;

Select #2 Output:

set newname for datafile 1 to /newpath/NEW;
set newname for datafile 2 to /newpath/NEW;
set newname for datafile 3 to /newpath/NEW;
set newname for datafile 4 to /newpath/NEW;
set newname for datafile 5 to /newpath/NEW;
In this scenario you do not use OMF naming for your files and you want to continue to control the datafile names. To generate set newname commands to point to an ASM volume execute the sql below. It will create a file that you just add your restore command to complete the script and execute in RMAN inside a run block. 

sqlplus /nolog
connect system/manager

set echo off pages 0 feed off sqlp #
spool /path/setnewnamedf.lst
select 'set newname for datafile '||file#||' to ''+DG'';' from v$datafile;
spool offSelect #3 Output:

set newname for datafile 1 to '+DG';
set newname for datafile 2 to '+DG';
set newname for datafile 3 to '+DG';
set newname for datafile 4 to '+DG';
set newname for datafile 5 to '+DG';
With the following query you keep the same path and name as on the original target. Using vi global search and replace you change change the path to the new directory using %s. This becomes very useful when there are 1000s of files to update. If using multiple directories you can split the output to change the path all in a file then merge the files or find a quicker method. Here is the example output of before and after the search and replace. 

set echo off pages 0 feed off sqlp #
spool setnewnamedf.lst
select 'set newname for datafile '||file#||' to '''||name||''';' from v$datafile;
spool offSelect #4 Output: Before change:

set newname for datafile 1 to '/u01/64bit/app/oracle/oradata/V102REP1/system01.dbf';
set newname for datafile 2 to '/u01/64bit/app/oracle/oradata/V102REP1/undotbs01.dbf';
set newname for datafile 3 to '/u01/64bit/app/oracle/oradata/V102REP1/sysaux01.dbf';
set newname for datafile 4 to '/u01/64bit/app/oracle/oradata/V102REP1/users01.dbf';
set newname for datafile 5 to '/u01/64bit/app/oracle/oradata/V102REP1/fujitsu_1.dbf';
Command to change the above path:

 :%s//dir1/dir2//newdir1/newdir2/g :%s//u01/64bit/app/oracle/oradata/V102REP1//newpath/gAfter executing the search and replace we are left with:

set newname for datafile 1 to '/newpath/system01.dbf';
set newname for datafile 2 to '/newpath/undotbs01.dbf';
set newname for datafile 3 to '/newpath/sysaux01.dbf';
set newname for datafile 4 to '/newpath/users01.dbf';
set newname for datafile 5 to '/newpath/fujitsu_1.dbf';

Using these methods, or something similar with other editors, you can quickly setup a restore or duplicate script to be used on a new host and directory structure no matter the number of files.


--------------------------------------------------------------------------------
 

最后

以上就是欣喜溪流为你收集整理的大量数据文件恢复时,set new…的全部内容,希望文章能够帮你解决大量数据文件恢复时,set new…所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部