首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >RMAN 提示符下执行SQL语句

RMAN 提示符下执行SQL语句

作者头像
Leshami
发布2018-08-14 09:57:41
8480
发布2018-08-14 09:57:41
举报
文章被收录于专栏:乐沙弥的世界乐沙弥的世界

       在手动恢复数据库时,有时候需要在SQL*Plus提示符以及操作系统提示符,RMAN提示符下来回切换显得有些繁琐。实际上RMAN为我们提供了命令行下执行一些简单的SQL语句以及PL/SQL的方法,以避免上述情形。本文描述了RMAN提示符下的一些常用命令及其用法。

1、RMAN提示符下执行SQL语句        语法: SQL '<command>' ;           语法比较简单,就是提示符下输入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 

-- Author : Robinson
-- Blog   : http://blog.csdn.net/robinson_0612

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>
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2013年06月04日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档