在手动恢复数据库时,有时候需要在sql*plus提示符以及操作系统提示符,rman提示符下来回切换显得有些繁琐。实际上rman为我们提供
在手动恢复数据库时,有时候需要在sql*plus提示符以及操作系统提示符,rman提示符下来回切换显得有些繁琐。实际上rman为我们提供了命令行下执行一些简单的sql语句以及pl/sql的方法,以避免上述情形。本文描述了rman提示符下的一些常用命令及其用法。
1、rman提示符下执行sql语句
语法: sql '' ;
语法比较简单,就是提示符下输入sql,后接sql命令,命令用单引号括起来
command 通常为可执行的sql命令语句,也可以为pl/sql块
使用限制
如果sql语句中包含文件名,则文件名及路径需要使用两个单引号括起来,整个sql语句首尾需要使用双引号
可以执行sql查询语句,但是无任何结果输出
rman提示符下常用的命令
startup [nomount | mount], shutdown immediate
alter system archive log current
alter database open [resetlogs]
2、演示rman提示符下执行sql语句
a、执行常用的starup, alter sql 语句
robin@szdb:~> export oracle_sid=gobo1
robin@szdb:~> rman target /
recovery manager: release 10.2.0.3.0 - production on tue jun 4 11:04:26 2013
copyright (c) 1982, 2005, oracle. all rights reserved.
connected to target database (not started)
rman> startup nomount;
oracle instance started
total system global area 536870912 bytes
fixed size 2074080 bytes
variable size 314575392 bytes
database buffers 213909504 bytes
redo buffers 6311936 bytes
rman> alter database mount;
using target database control file instead of recovery catalog
database mounted
rman> alter database open;
database opened
rman> list copy of archivelog all; --->查看当前数据库的归档日志,列出了1个已归档日志
list of archived log copies
key thrd seq s low time name
------- ---- ------- - ----------------- ----
2084 1 8 a 20130604 09:53:17 /u02/database/gobo1/archive/arch_816906485_1_8.arc
rman> sql ' alter system archive log current '; --->对当前日志进行归档
sql statement: alter system archive log current
rman> list copy of archivelog all; --->归档后可以看到多出了1个已归档日志
list of archived log copies
key thrd seq s low time name
------- ---- ------- - ----------------- ----
2084 1 8 a 20130604 09:53:17 /u02/database/gobo1/archive/arch_816906485_1_8.arc
2085 1 9 a 20130604 10:46:36 /u02/database/gobo1/archive/arch_816906485_1_9.arc
b、执行sql查询语句,如下,没有任何结果输出
rman> sql 'select sysdate from dual';
sql statement: select sysdate from dual
rman> sql ' select * from v$database ';
sql statement: select * from v$database
c、执行带有路径及文件名的sql语句
--下面的执行那个中没有使用双引号开头以及双单引号括住路径,收到错误提示
rman> sql ' create tablespace ts1 datafile '/u02/database/gobo1/oradata/ts1.dbf' size 10m ';
rman-00571: ===========================================================
rman-00569: =============== error message stack follows ===============
rman-00571: ===========================================================
rman-00558: error encountered while parsing input commands
rman-01006: error signalled during parse
rman-02001: unrecognized punctuation symbol /
--下面的sql语句被成功执行
rman> sql create tablespace ts1 datafile ''/u02/database/gobo1/oradata/ts1.dbf'' size 10m;
sql statement: create tablespace ts1 datafile ''/u02/database/gobo1/oradata/ts1.dbf'' size 10m
d、执行pl/sql块
rman> sql ' begin dbms_lock.sleep(3); end;';
sql statement: begin dbms_lock.sleep(3); end;
e、rman块命令方式执行pl/sql块
rman> run{
2> sql ' begin dbms_lock.sleep(3); end; ';
3> }
sql statement: begin dbms_lock.sleep(3); end;
rman> run {
2> sql ' drop tablespace ts1 including contents and datafiles ';
3> }
sql statement: drop tablespace ts1 including contents and datafiles
rman> shutdown immediate;
database closed
database dismounted
oracle instance shut down
f、切换到系统提示符下
rman> host;
robin@szdb:~> exit
exit
host command complete
rman>
,