始创于2000年 股票代码:831685
咨询热线:0371-60135900 注册有礼 登录
  • 挂牌上市企业
  • 60秒人工响应
  • 99.99%连通率
  • 7*24h人工
  • 故障100倍补偿
您的位置: 网站首页 > 帮助中心>文章内容

RMAN中时间格式问题

发布时间:  2012/9/5 17:01:51

利用RMAN进行基于时间点的修复,奇怪的是设置了nls_date_format之后,就不能登录RMAN了?
现象如下:

C:>set NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'

C:>rman nocatalog target rman/rman@test

Recovery Manager: Release 9.2.0.1.0 - Production-
 


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: error occurred at recursive SQL level 1
ORA-02248: invalid option for ALTER SESSION

在未设置NLS_DATE_FORMAT之前, 用rman nocatalog targetrman/rman@test是可以登录的

其实出现问题的原因是没有正确设置nls_date_format,由于受到在sqlplus中设置它的影响,
所以,有时候我们直接C:>set NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'
实际上在win cmd下虽然没有报错,但这是不正确的!
正确的做法是:
C:>set NLS_DATE_FORMAT=YYYY-MM-DD HH24:MI:SS --注意去掉了什么?
然后再,C:>rman nocatalog targetrman/rman@test
ok,成功!

附:rman until time recover
RMAN>run {
allocate channel c1 type disk;
alloctae channel c2 type disk;
set until time='2007-05-21:15:08:01';
restore database;
recover database;
sql 'alter database open resetlogs';
release channel c1;
release channel c2;
}

附:如何修改nls_date_format
win cmd下修改默认格式:
SQL>select sysdate from dual;

SYSDATE
----------
21-5月- 07

设置nls_date_format方法如下:
1.用alter session来修改
SQL>alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss'; --注意:这里可能会让我们形成思维定势
SQL> select sysdate from dual;

SYSDATE
-------------------
2007-05-21 15:51:26

2.在OS中设置nls_date_format
C:>SET NLS_DATE_FORMAT=yyyy-mm-dd hh24:mi:ss --注意:yyyy-mm-dd hh24:mi:ss不能加引号,但在unix系统中要加

SQL> select sysdate from dual;

SYSDATE
-------------------
2007-05-21 15:51:26

3.在RMAN中修改
RMAN>run { sql "alter session set nls_date_format=''yyyy-mm-dd hh24:mi:ss''";}
格式说明:
[单][单]yyyy-mm-dd hh24:mi:ss[单][单]
sql [双]……[双]

--[单]代表单引号,[双]代表双引号。

4.在RMAN中修改
直接在run中SET UNTIL TIME="TO_DATE('2007-05-21 15:08:01','yyyy-mm-dd hh24:mi:ss')";


5.永久生效
上述两种方法只对当前session有效,如果不想每次都设置,就修改环境变量,增加一个nls_date_format变量,
值为yyyy-mm-dd hh24:mi:ss


 


本文出自:亿恩科技【www.enkj.com】

服务器租用/服务器托管中国五强!虚拟主机域名注册顶级提供商!15年品质保障!--亿恩科技[ENKJ.COM]

  • 您可能在找
  • 亿恩北京公司:
  • 经营性ICP/ISP证:京B2-20150015
  • 亿恩郑州公司:
  • 经营性ICP/ISP/IDC证:豫B1.B2-20060070
  • 亿恩南昌公司:
  • 经营性ICP/ISP证:赣B2-20080012
  • 服务器/云主机 24小时售后服务电话:0371-60135900
  • 虚拟主机/智能建站 24小时售后服务电话:0371-60135900
  • 专注服务器托管17年
    扫扫关注-微信公众号
    0371-60135900
    Copyright© 1999-2019 ENKJ All Rights Reserved 亿恩科技 版权所有  地址:郑州市高新区翠竹街1号总部企业基地亿恩大厦  法律顾问:河南亚太人律师事务所郝建锋、杜慧月律师   京公网安备41019702002023号
      0
     
     
     
     

    0371-60135900
    7*24小时客服服务热线