Which statement about using RMAN stored scripts is true?
A. To create and execute an RMAN stored script, you must use a recovery catalog.
B. When executing a stored script and a command fails, the remainder of the script is executed, and a message is written to the alert log file.
C. RMAN stored scripts can always be executed against any target database that is registered in the recovery catalog.
D. When you execute a stored script, it always executes using the persistent channel settings previously set with the CONFIGURE command.
如果要使用 RMAN 存储脚本,就必须使用恢复目录。 --A 正确。
如果脚本中的某一 RMAN 命令失败,则不会执行脚本中的后续 RMAN 命令。 --B 错。
存储脚本在创建的时候可以定义为全局存储脚本或本地存储脚本。本地存储脚本与创建脚本时 RMAN 连接到的目标数据库相关联,只有连接到该目标数据库时才能执行本地存储脚本。全局存储脚本则可针对在恢复目录中注册的任何数据库执行,如果 RMAN 客户机连接到恢复目录和某一目标数据库。 C 错,没有指明是否是 global stored script 还是 local scrip。
存储脚本就是 create script 括号内支持 RUN 块相同的命令,但是 run @和@@命令不支持。可以在创建的的时候使用 replace 选项进行替换。
例如:
CREATE SCRIPT full_backup
{
BACKUP DATABASE PLUS ARCHIVELOG;
DELETE OBSOLETE;
}
同样的,如果要创建全局脚本,还可以加上注释选项:
CREATE GLOBAL SCRIPT global_full_backup
COMMENT 'use only with ARCHIVELOG mode databases'
{
BACKUP DATABASE PLUS ARCHIVELOG;
DELETE OBSOLETE;
}
你也可以从文件中读取,但是必须用{}将命令括起来,否则就会出现语法错误,就像使用命令行键入一样:
CREATE SCRIPT full_backup
FROM FILE '/tmp/my_script_file.txt';
如果要使用 RMAN 存储脚本,就必须使用恢复目录。创建 RMAN 存储脚本时:连接到所需的目标数据
库和恢复目录,然后执行 CREATE SCRIPT 命令即可创建存储脚本。
在使用 DELETE SCRIPT 命令删除脚本时,首先会搜寻连接到目标库上是否有对应的脚本,如果没有的话就会删除相同名称的 global 脚本。
执行:
RUN
{
EXECUTE SCRIPT full_backup;
}
--也可以指定 GLOBAL 参数运来指定运行全局脚本
还可以在脚本中使用变量:
CREATE SCRIPT quarterly {
ALLOCATE CHANNEL c1
DEVICE TYPE sbt
PARMS 'ENV=(OB_MEDIA_FAMILY=&1)';
BACKUP
TAG &2
FORMAT '/disk2/bck/&1%U.bck'
KEEP FOREVER
RESTORE POINT &3
DATABASE;
}
在RMAN 连接的时候可以直接传递参数进去,或者在 RUN 块运行的时候指定:
rman TARGET / CATALOG rman@catdb USING arc_backup bck0906 FY06Q3
RMAN> @/tmp/catscript.rman
或
RUN
{
EXECUTE SCRIPT quarterly
USING arc_backup
bck1206
FY06Q4;
}
在连接到 RMAN 的时候执行脚本:
rman TARGET / CATALOG rman@catdb SCRIPT '/tmp/fbkp.cmd';
--其中 fbkp.cmd 是写好的 RMAN 脚本