RMAN 提示符下執行SQL語句

 在手動恢復數據庫時,有時候需要在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>


作者:Leshami
來源:CSDN
原文:https://blog.csdn.net/leshami/article/details/9020727

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章