2013年4月2日
Oracle rman中set newname可能很慢
M
mac
Author
5 min
Read Time
50
Views
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);