Oracle rman中set newname可能很慢

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


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


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:
— 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);