RMAN和SQLPLUS一样,都可以获取在操作系统上定义的环境变量。
对RMAN而言,最常用的环境变量莫过于ORACLE_SID和ORACLE_HOME了。除了这两个变量,还经常需要设置NLS_LANG和NLS_DATE_FORMAT变量。
NLS_LANG用语设置语言和字符集信息。
NLS_DATE_FORMAT则设置RMAN输入、输出日期类型的变量时,使用的默认格式。
比如,查询一个备份的开始时间:
RMAN> list backupset 23;
备份集列表
===================
BS 关键字 类型 LV 大小 设备类型 经过时间 完成时间
------- ---- -- ---------- ----------- ------------ ----------
23 Full 1M DISK 00:00:01 08-7月 -07
BP 关键字: 22 状态: AVAILABLE 标记:
段名:F:ORACLEBACKUPC-974710760-20070708-00
控制文件包括: Ckp SCN: 58880369 Ckp 时间:08-7月 -07
默认情况下NLS_DATE_FORMAT的设置是DD-MON-YYYY,但是有的时候需要看到具体的时间点,或者在进行不完全恢复的时候,要恢复到具体的某个时间点,这个时候就需要设置一个包含时间的日期格式。
对于UNIX和LINUX环境,直接设置NLS_DATE_FORMAT=’YYYY-MM-DD HH24:MI:SS’即可:
bash-2.03$ export NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'
bash-2.03$ rman target /
恢复管理器: Release 10.2.0.3.0 - Production on 星期二 7月 10 00:11:01 2007
Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到目标数据库: TESTRAC (DBID=4291216984)
RMAN> list backupset 722;
使用目标数据库控制文件替代恢复目录
备份集列表===================
BS 关键字 大小 设备类型占用时间 完成时间
------- ---------- ----------- ------------ -------------------
722 12.05M DISK 00:00:01 2007-06-27 10:00:42
BP 关键字: 932 状态: AVAILABLE 已压缩: NO 标记: TAG20070627T100026段名:+DISK/testrac/backupset/2007_06_27/annnf0_tag20070627t100026_0.377.626349643
备份集 722 中的已存档日志列表
Thrd Seq 低 SCN 时间下限 下一个 SCN 下一次
---- ------- ---------- ------------------- ---------- ---------
2 281 5216784957 2007-06-25 20:21:55 5216910352 2007-06-26 17:54:27
而对于WINDOWS环境,如果也向上面的方式进行测试,会导致错误:
F:>SET NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'
F:>rman target /@test1
恢复管理器: 版本9.2.0.4.0 - Production
Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-00554: initialization of internal recovery manager package failed
RMAN-04005: error from target database:
ORA-00604: 递归 SQL 层 1 出现错误
ORA-02248: 无效的 ALTER SESSION 选项
如果根据METALINK上相应文档中的描述,改为双引号,虽然不会出现错误,但是并没有按照要求进行时间格式的转换:
F:>SET NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"
F:>rman target /@test1
恢复管理器: 版本9.2.0.4.0 - Production
Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.
连接到目标数据库: TEST1 (DBID=974710760)
RMAN> list backupset 23;
正在使用目标数据库控制文件替代恢复目录
备份集列表===================
BS 关键字 类型 LV 大小 设备类型 经过时间 完成时间
------- ---- -- ---------- ----------- ------------ ---------------------
23 Full 1M DISK 00:00:01 YYYY-MM-DD HH24:MI:SS
BP 关键字: 22 状态: AVAILABLE 标记:
段名:F:ORACLEBACKUPC-974710760-20070708-00
控制文件包括: Ckp SCN: 58880369 Ckp 时间:YYYY-MM-DD HH24:MI:SS
正确的参数设置方法居然是不见任何的引号:
F:>SET NLS_DATE_FORMAT=YYYY-MM-DD HH24:MI:SS
F:>rman target /@test1
恢复管理器: 版本9.2.0.4.0 - Production
Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.
连接到目标数据库: TEST1 (DBID=974710760)
RMAN> list backupset 23;
正在使用目标数据库控制文件替代恢复目录
备份集列表===================
BS 关键字 类型 LV 大小 设备类型 经过时间 完成时间
------- ---- -- ---------- ----------- ------------ -------------------
23 Full 1M DISK 00:00:01 2007-07-08 23:57:48
BP 关键字: 22 状态: AVAILABLE 标记:
段名:F:ORACLEBACKUPC-974710760-20070708-00
控制文件包括: Ckp SCN: 58880369 Ckp 时间:2007-07-08 23:57:47