Oracle rman中set newname可能很慢

Oracle rman中set newname可能很慢, 对于该问题有几种可能:

 

1、rman 软件bug ,具体请去MOS查询

2、打开了BACKUP OPTIMIZATION on,show all命令确认下,若是则 CONFIGURE BACKUP OPTIMIZATION OFF; 暂时关掉

3、 set newname 之前不要set until time之类的设置,最好也别allocate channel xx type sbt,可以在set newname之后再设不迟

4 、使用catalog 恢复目录替代controlfile模式往往可以绕过该问题

 

具体的set newname操作涉及到  sys . dbms_backup_restore . normalizeFileName和 dbms_rcvman . translateDataFile  2个存储过程:

 

FUNCTION normalizeFileName (fname IN varchar2) RETURN varchar2;

– Normalizes the file name according to the rules of the target
— database and returns the normalized filename.

— Input parameters:
— fname
— File name to be normalized.
— Exceptions:
— NAME-TOO-LONG (ora-19704)
— The specified file name is longer than the port-specific
— maximum file name length.

– translateDataFile translates the datafile name/number into
– a datafile number and creation SCN and filename. getDataFile must
– be called to obtain the translation info, just as for the other translate
– functions.
– Unlike the other translation functions, translateDatafile by name is always
– performed relative to current time. If an until setting is in effect,
– and if the filename is ambiguous, then an exception is raised. Ambiguous
– means that the filename refers to different datafile at the until time than
– it does at the current time. This happens only when a filename has been
– reused. When fno and ckpscn are passed, the filename and other info as of
– that scn is returned.

– Input parameters:
– fname
– name of the datafile to be translated.
– The name must be a normalized filename.
– fno
– The datafile number. If the datafile number was not in use at the
– until time, then an exception is raised.
– Exceptions:
– DATAFILE_DOES_NOT_EXIST (ORA-20201)
– the datafile to be translated does not exists
– Check that the recovery catalog is current.

PROCEDURE translateDataFile(
fname IN varchar2);

PROCEDURE translateDatafile(
fno IN number);

PROCEDURE translateDatafile(
fno IN number
,ckpscn IN number);