[20161214]rman checksyntax.txt

简介: [20161214]rman checksyntax.txt --rman在命令行使用参数checksyntax可以检查命令语法是否正确,而且并不会真正执行.但是昨天在恢复一个10g的数据库时遇到问题,做 --一个记录: 1.

[20161214]rman checksyntax.txt

--rman在命令行使用参数checksyntax可以检查命令语法是否正确,而且并不会真正执行.但是昨天在恢复一个10g的数据库时遇到问题,做
--一个记录:

1.环境:
--要恢复的数据库版本:
> @ &r/ver1
PORT_STRING                    VERSION        BANNER
------------------------------ -------------- ----------------------------------------------------------------
x86_64/Linux 2.4.xx            10.2.0.4.0     Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi

2.建立脚本
$ cat reco.rman
run
{
set until time '2016-12-03 04:00:00';
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
restore database;
recover database;
release channel c1;
release channel c2;
release channel c3;
}

3.测试:
$ rlrman checksyntax
Recovery Manager: Release 10.2.0.4.0 - Production on Wed Dec 14 10:51:12 2016
Copyright (c) 1982, 2007, Oracle.  All rights reserved.
connected to target database: STATISTI (DBID=3581654166)

RMAN> @ reco.rman
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-00558: error encountered while parsing input commands
RMAN-01009: syntax error: found "identifier": expecting one of: "allocate, alter, backup, beginline, blockrecover, catalog, change, connect, copy, convert, create, crosscheck, configure, duplicate, debug, delete, drop, exit, endinline, flashback, host, {, library, list, mount, open, print, quit, recover, register, release, replace, report, renormalize, reset, restore, resync, rman, run, rpctest, set, setlimit, sql, switch, spool, startup, shutdown, send, show, test, transport, upgrade, unregister, validate"
RMAN-01008: the bad identifier was: reco
RMAN-01007: at line 1 column 2 file: standard input

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-00558: error encountered while parsing input commands
RMAN-01009: syntax error: found "dot": expecting one of: "allocate, alter, backup, beginline, blockrecover, catalog, change, connect, copy, convert, create, crosscheck, configure, duplicate, debug, delete, drop, exit, endinline, flashback, host, {, library, list, mount, open, print, quit, recover, register, release, replace, report, renormalize, reset, restore, resync, rman, run, rpctest, set, setlimit, sql, switch, spool, startup, shutdown, send, show, test, transport, upgrade, unregister, validate"
RMAN-01007: at line 1 column 6 file: standard input

--//如果仔细看报错信息,RMAN-01008: the bad identifier was: reco,昨天学习如何看这种错误,采用从底向上的方式查看.
--//于是采用copy&paste的方式检查发现没有错误,难道10g支持脚本这样的检查方式吗?于是我取消@与reco.rman之间的空格(在这步我浪
--//费大量的时间):

RMAN> @reco.rman
RMAN> run
2> {
3> set until time '2016-12-03 04:00:00';
4> allocate channel c1 type disk;
5> allocate channel c2 type disk;
6> allocate channel c3 type disk;
7> restore database;
8> recover database;
9> release channel c1;
10> release channel c2;
11> release channel c3;
12> }
The cmdfile has no syntax errors
RMAN> **end-of-file**

--Ok,原来这样的检查方式不能在@与脚本文件之间存在空格.另外如果真正执行也是一样,不能在@与脚本文件之间存在空格.大家可以自行测试.

4.继续测试在11g的情况.
SYS@book> @ &r/ver1

PORT_STRING                    VERSION        BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx            11.2.0.4.0     Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

$ rlrman checksyntax
Recovery Manager: Release 11.2.0.4.0 - Production on Wed Dec 14 11:02:24 2016
Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.
connected to target database: BOOK (DBID=1337401710)

RMAN> @ reco.rman
RMAN> run
2> {
3> set until time '2016-12-03 04:00:00';
4> allocate channel c1 type disk;
5> allocate channel c2 type disk;
6> allocate channel c3 type disk;
7> restore database;
8> recover database;
9> release channel c1;
10> release channel c2;
11> release channel c3;
12> }
The cmdfile has no syntax errors
RMAN> **end-of-file**

RMAN> @reco.rman
RMAN> run
2> {
3> set until time '2016-12-03 04:00:00';
4> allocate channel c1 type disk;
5> allocate channel c2 type disk;
6> allocate channel c3 type disk;
7> restore database;
8> recover database;
9> release channel c1;
10> release channel c2;
11> release channel c3;
12> }
The cmdfile has no syntax errors
RMAN> **end-of-file**

--//很明显11g已经修复了这个bug,可以在@与脚本文件加入空格.这个错误我浪费了1个多小时,晚下班半个小时,oracle真是处处是陷阱.

5.补充在10g的测试:
$ rlrman
run
{
  allocate channel c1 device type DISK;
  allocate channel c2 device type DISK;
  #list backup summary;
  release channel c1;
  release channel c2;
}

RMAN> @ r.rman
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-00558: error encountered while parsing input commands
RMAN-01009: syntax error: found "identifier": expecting one of: "allocate, alter, backup, beginline, blockrecover, catalog, change, connect, copy, convert, create, crosscheck, configure, duplicate, debug, delete, drop, exit, endinline, flashback, host, {, library, list, mount, open, print, quit, recover, register, release, replace, report, renormalize, reset, restore, resync, rman, run, rpctest, set, setlimit, sql, switch, spool, startup, shutdown, send, show, test, transport, upgrade, unregister, validate"
RMAN-01008: the bad identifier was: r
RMAN-01007: at line 1 column 2 file: standard input

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-00558: error encountered while parsing input commands
RMAN-01009: syntax error: found "dot": expecting one of: "allocate, alter, backup, beginline, blockrecover, catalog, change, connect, copy, convert, create, crosscheck, configure, duplicate, debug, delete, drop, exit, endinline, flashback, host, {, library, list, mount, open, print, quit, recover, register, release, replace, report, renormalize, reset, restore, resync, rman, run, rpctest, set, setlimit, sql, switch, spool, startup, shutdown, send, show, test, transport, upgrade, unregister, validate"
RMAN-01007: at line 1 column 3 file: standard input

RMAN> @r.rman
RMAN> run
2> {
3>   allocate channel c1 device type DISK;
4>   allocate channel c2 device type DISK;
5> #   list backup summary;
6>   release channel c1;
7>   release channel c2;
8> }
using target database control file instead of recovery catalog
allocated channel: c1
channel c1: sid=484 devtype=DISK

allocated channel: c2
channel c2: sid=483 devtype=DISK

released channel: c1

released channel: c2

RMAN> **end-of-file**

--//以后注意10g,rman下脚本执行时@与脚本文件之间不能带空格.
--//另外大家可以看看我以前写的blog http://blog.itpub.net/267265/viewspace-1988542/=> [20160214]rman执行脚本注解问题.txt
--//实际上这个问题再次体现一点,认真看出错信息很重要.我当时就是心里太浮躁.....

目录
相关文章
|
Oracle 关系型数据库
[20180423]关于rman备份的问题2.txt
[20180423]关于rman备份的问题2.txt --//别人问的问题,rman备份放在哪里的问题. SCOTT@book> @ ver1 PORT_STRING                    VERSION        BANNER --...
928 0
|
Oracle 关系型数据库 Linux
[20180115]RMAN-06820.txt
[20180115]RMAN-06820.txt --//在备库做归档备份出现RMAN-06820的问题。就是如果在备库做全表,因为要做主库日志切换,一般执行rman target /会出现问题。
1416 0
|
Oracle 关系型数据库 测试技术
[20171225]RMAN-06808.txt
[20171225]RMAN-06808: SECTION SIZE cannot be used when piece limit is in effect.txt --//朋友拿我的一些例子来测试遇到的RMAN-06808: SECTION SIZE cannot be used when piece limit is in effect问题.
947 0
|
关系型数据库
[20171221]RMAN-05501.txt
[20171221]RMAN-05501 aborting duplication of target database.txt --//昨天使用rman duplicate建立dg,出现如下错误: rman > duplicate target database for standby from active database; .
1068 0
|
Oracle 关系型数据库
[20171130]关于rman的一些总结.txt
[20171130]关于rman的一些总结.txt --//最近一直做rman相关测试,测试那个乱,没办法.无法从周围的人获得帮助,纯粹是自己的乱猜,乱测,不知道别人是否能看懂我写的东西.
1087 0
|
Oracle 关系型数据库 Shell
[20171121]rman backup as copy 2.txt
[20171121]rman backup as copy 2.txt --//昨天测试backup as copy ,备份时备份文件的文件头什么时候更新.是最后完成后还是顺序写入备份文件.
1011 0
|
Oracle 关系型数据库 Linux
[20171121]rman backup as copy.txt
[20171121]rman backup as copy.txt --//上个星期做数据文件块头恢复时,提到使用rman备份数据文件时,文件头数据库信息是最后写入备份集文件的,在filesperset=1的情况 --//下写入备份集文件中的倒数第2块就是文件头的备份.
1225 0
|
Oracle 关系型数据库 API
[20170208]rman tape.txt
[20170208]rman tape.txt --前一阵子,同事测试使用磁带做rman备份,留下一些备份信息在控制文件,要清除. --我依稀记得我以前也干过这些事情,晚上看了一下书: Apress.
983 0
|
Oracle 关系型数据库 测试技术
[20170207]RMAN-06820错误.txt
[20170207]RMAN-06820 WARNING failed to archive current log at primary database.txt --//生产系统越来越大,备份的时间窗口越来越长,现在生产系统全备从晚上11点开始,基本到第2天早上8点多才结束.
1248 0
|
关系型数据库 Oracle Linux
[20161230]rman checksyntax2.txt
[20161230]rman checksyntax2.txt --曾经写过一篇rman checksyntax的问题,这个问题存在10g: http://blog.
757 0