RMAN的PIPE介面(二)
RMAN除了支援互動式和批處理式,還支援一種PIPE的介面,透過這種PIPE介面,可以在ORACLE中將各種命令傳送給RMAN。
這篇討論一下RMAN的PIPE介面的第二種使用方法。
RMAN的PIPE介面:http://yangtingkun.itpub.net/post/468/65127
如果先啟動PIPE方式工作的RMAN,那麼RMAN會一直處於等待命令的方式。直到RMAN接收到退出的命令。
這種方式是由RMAN來建立管道。這種方式就是前面文章介紹的。
這裡還可以透過PL/SQL方式顯示建立一個管道,併發出相應的命令。RMAN以PIPE方式啟動時可以指定TIMEOUT為0,這樣讀取管道中的命令並執行完所有的命令後,自動退出。
SQL> SET SERVEROUT ON SIZE 1000000
SQL> DECLARE
2 V_INPUT VARCHAR2(32767) := 'SHOW ALL;';
3 V_OUT NUMBER;
4 BEGIN
5 V_OUT := DBMS_PIPE.CREATE_PIPE('ORA$RMAN_P1_IN', 32767, TRUE);
6 DBMS_OUTPUT.PUT_LINE(V_OUT);
7 DBMS_PIPE.PACK_MESSAGE(V_INPUT);
8 V_OUT := DBMS_PIPE.SEND_MESSAGE('ORA$RMAN_P1_IN');
9 DBMS_OUTPUT.PUT_LINE(V_OUT);
10 V_INPUT := 'BACKUP DATABASE;';
11 DBMS_PIPE.PACK_MESSAGE(V_INPUT);
12 V_OUT := DBMS_PIPE.SEND_MESSAGE('ORA$RMAN_P1_IN');
13 DBMS_OUTPUT.PUT_LINE(V_OUT);
14 COMMIT;
15 END;
16 /
0
0
0
PL/SQL 過程已成功完成。
下面以PIPE方式啟動RMAN:
F:>RMAN PIPE P1 TARGET /@TEST1 TIMEOUT = 0
恢復管理器: 版本9.2.0.4.0 - Production
Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.
F:>
RMAN操作結束後,可以透過管道檢視RMAN的輸出資訊:
SQL> DECLARE
2 V_OUTPUT VARCHAR2(32767);
3 V_OUT NUMBER := 0;
4 BEGIN
5 WHILE (V_OUT = 0) LOOP
6 V_OUT := DBMS_PIPE.RECEIVE_MESSAGE('ORA$RMAN_P1_OUT', 5);
7 IF V_OUT = 0 THEN
8 DBMS_PIPE.UNPACK_MESSAGE(V_OUTPUT);
9 DBMS_OUTPUT.PUT_LINE(V_OUTPUT);
10 END IF;
11 END LOOP;
12 COMMIT;
13 END;
14 /
連線到目標資料庫: TEST1 (DBID=974710760)
RMAN-00572: waiting for dbms_pipe input
正在使用目標資料庫控制檔案替代恢復目錄
RMAN 配置引數為:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'F:ORACLEORACLE920DATABASESNCFTEST1.ORA'; # default
RMAN-00572: waiting for dbms_pipe input
啟動 backup 於 03-6月 -07
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=13 devtype=DISK
通道 ORA_DISK_1: 正在啟動 full 資料檔案備份集
通道 ORA_DISK_1: 正在指定備份集中的資料檔案
在備份集中包含當前的 SPFILE
備份集中包括當前控制檔案
輸入資料檔案 fno=00001 name=F:ORACLEORADATATEST1SYSTEM01.DBF
輸入資料檔案 fno=00002 name=F:ORACLEORADATATEST1UNDOTBS01.DBF
輸入資料檔案 fno=00008 name=F:ORACLEORADATATEST1YANGTK01.DBF
輸入資料檔案 fno=00007 name=F:ORACLEORADATATEST1XDB01.DBF
輸入資料檔案 fno=00004 name=F:ORACLEORADATATEST1INDX01.DBF
輸入資料檔案 fno=00006 name=F:ORACLEORADATATEST1USERS01.DBF
輸入資料檔案 fno=00003 name=F:ORACLEORADATATEST1DRSYS01.DBF
輸入資料檔案 fno=00005 name=F:ORACLEORADATATEST1TOOLS01.DBF
通道 ORA_DISK_1: 正在啟動段 1 於 03-6月 -07
通道 ORA_DISK_1: 已完成段 1 於 03-6月 -07
段 handle=F:ORACLEORACLE920DATABASE3IJABGR_1_1 comment=NONE
通道 ORA_DISK_1: 備份集已完成, 經過時間:00:02:06
完成 backup 於 03-6月 -07
RMAN-00572: waiting for dbms_pipe input
恢復管理器完成。
PL/SQL 過程已成功完成。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-69297/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- RMAN的PIPE介面
- oracle實驗-RMAN的PIPE介面Oracle
- 使用Pipe來執行RMAN命令
- 【IPC程式間通訊之二】管道PipeC程式
- Linux中的pipe(管道)與named pipe(FIFO 命名管道)Linux
- RMAN 系列(二) ---- RMAN 設定和配置
- 管道pipe
- Broken pipe
- RMAN 學習(二)
- 整理:RMAN命令(二)
- PIPE函式的例子函式
- Node Stream pipe的誕生
- OpenCL中的管道cl::Pipe的使用
- pipe函式使用函式
- Linux pipe功能Linux
- EXP&IMP PIPE
- pipe stderr into another process
- [Bash] pipe intro
- [Python] pipe模組Python
- Oracle備份之RMAN工具(二)Oracle
- rman還原控制檔案(二)
- RMAN複製資料庫(二)資料庫
- rman duplicate搭建第二個 dg
- 精讀《pipe operator for JavaScript》JavaScript
- RMAN實戰系列之二:用RMAN實現災難恢復
- SlimPhp框架的使用(二)編寫介面PHP框架
- 線上生成二維碼的API介面API
- Migrating to ASM Using RMAN(二)ASM
- RMAN之客戶端互動(二)客戶端
- How to recover from USB pipe errorsError
- java.net.SocketException: Broken pipeJavaException
- 利用RMAN遷移表空間碰到的問題(二)
- stream pipe的原理及簡化原始碼分析原始碼
- pipe row的用法, Oracle split 函式寫法.Oracle函式
- 解決ssh的"Write failed: Broken pipe"問題AI
- gRPC 的介面描述語言 ProtoBuffer(二)RPC
- RMAN 備份與恢復深入解析(二)
- RMAN 常用操作命令二(備份保留策略)