今天想要做下异机恢复,由于原库与现库的目录不同,所以要转换一下。脑中第一反应就是db_file_name_convert,可是设置好这个参数之后发现不行,restore根本没有转换,还会报错:
channel ORA_DISK_1: reading from backup piece /orabak/oracle_bak/fullrac_EPTDB_821_1_20130802
ORA-19870: error reading backup piece /orabak/oracle_bak/fullrac_EPTDB_821_1_20130802
ORA-19504: failed to create file "/dev/rrac_lv02_20g"
ORA-27040: file create error, unable to create file
IBM AIX RISC System/6000 Error: 13: Permission denied
于是查了下db_file_name_convert这个参数。
DB_FILE_NAME_CONVERT
Property | Description |
---|---|
Parameter type | String |
Syntax | DB_FILE_NAME_CONVERT = ' string1 ' , ' string2 ' , ' string3 ' , ' string4 ' , ... Where:
You can use as many pairs of primary and standby replacement strings as required. You can use single or double quotation marks. The following are example settings that are acceptable:
|
Default value | There is no default value. |
Modifiable | ALTER SESSION |
Basic | No |
DB_FILE_NAME_CONVERT
is useful for creating a duplicate database for recovery purposes. It converts the filename of a new datafile on the primary database to a filename on the standby database. If you add a datafile to the primary database, you must add a corresponding file to the standby database. When the standby database is updated, this parameter converts the datafile name on the primary database to the datafile name on the standby database. The file on the standby database must exist and be writable, or the recovery process will halt with an error.
If you specify an odd number of strings (the last string has no corresponding replacement string), an error is signalled during startup. If the filename being converted matches more than one pattern in the pattern/replace string list, the first matched pattern takes effect. There is no limit on the number of pairs that you can specify in this parameter (other than the hard limit of the maximum length of multivalue parameters).
Set the value of this parameter to two strings. The first string is the pattern found in the datafile names on the primary database. The second string is the pattern found in the datafile names on the standby database.
You can also use DB_FILE_NAME_CONVERT
to rename the datafiles in the clone control file when setting up a clone database during tablespace point-in-time recovery.
可以看出,这个参数只能在建立备库使用,在做异机恢复时该参数不起作用。
于是只能用set newname datafile 1 to ‘…’;之后再restore,restore之后需要switch datafile all;
run
{
set newname for datafile 1 to '/ora/oradata/eptdb/rrac_system_2g';
set newname for datafile 2 to '/ora/oradata/eptdb/rrac_undo1_5g';
restore database;
switch datafile all;
}
操作成功,没有报错!