RMAN的PIPE介面
RMAN的PIPE介面 RMAN除了支援互動式和批處理式,還支援一種PIPE的介面,通過這種PIPE介面,可以在ORACLE中將各種命令傳送給RMAN。 首先,以PIPE方式啟動RMAN,其中P1是管道的名稱: F:>RMAN PIPE P1 TARGET /@TEST NOCATALOG 恢復管理器: 版本9.2.0.4.0 - Production Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved. 以PIPE方式啟動RMAN,RMAN一直處於執行狀態,並等待從管道中傳送來的命令。而且,RMAN的輸出也不會列印到螢幕上,而是在管道上傳送。 然後就可以通過DBMS_PIPE包給RMAN傳送命令,並接收返回訊息了。和RMAN進行互動的管道名稱為ORA$RMAN_pipename_IN和ORA$RMAN_pipename_OUT。其中pipename就是RMAN命令裡包含的管道名稱。 SQL> SET SERVEROUT ON SIZE 1000000 SQL> DECLARE V_INPUT VARCHAR2(32767) := 'SHOW ALL;'; V_OUT NUMBER; BEGIN DBMS_PIPE.PACK_MESSAGE(V_INPUT); V_OUT := DBMS_PIPE.SEND_MESSAGE('ORA$RMAN_P1_IN'); DBMS_OUTPUT.PUT_LINE(V_OUT); COMMIT; END; / 0 PL/SQL 過程已成功完成。 SQL> DECLARE V_OUTPUT VARCHAR2(32767); V_OUT NUMBER := 0; BEGIN WHILE (V_OUT = 0) LOOP V_OUT := DBMS_PIPE.RECEIVE_MESSAGE('ORA$RMAN_P1_OUT', 5); IF V_OUT = 0 THEN DBMS_PIPE.UNPACK_MESSAGE(V_OUTPUT); DBMS_OUTPUT.PUT_LINE(V_OUTPUT); END IF; END LOOP; COMMIT; END; / 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:ORACLEORACLE920DATABASESNCFTEST.ORA'; # default RMAN-00572: waiting for dbms_pipe input PL/SQL 過程已成功完成。 通過DBMS_PIPE包就可以RMAN進行互動了,下面讓RMAN執行資料庫的全備: SQL> DECLARE V_INPUT VARCHAR2(32767) := 'BACKUP tablespace users;'; V_OUT NUMBER; BEGIN DBMS_PIPE.PACK_MESSAGE(V_INPUT); V_OUT := DBMS_PIPE.SEND_MESSAGE('ORA$RMAN_P1_IN'); DBMS_OUTPUT.PUT_LINE(V_OUT); COMMIT; END; / 0 PL/SQL 過程已成功完成。 SQL> DECLARE V_OUTPUT VARCHAR2(32767); V_OUT NUMBER := 0; BEGIN WHILE (V_OUT = 0) LOOP V_OUT := DBMS_PIPE.RECEIVE_MESSAGE('ORA$RMAN_P1_OUT', 5); IF V_OUT = 0 THEN DBMS_PIPE.UNPACK_MESSAGE(V_OUTPUT); DBMS_OUTPUT.PUT_LINE(V_OUTPUT); END IF; END LOOP; COMMIT; END; / 啟動 backup 於 02-4月 -06 分配的通道: ORA_DISK_1 通道 ORA_DISK_1: sid=16 devtype=DISK 通道 ORA_DISK_1: 正在啟動 full 資料檔案備份集 通道 ORA_DISK_1: 正在指定備份集中的資料檔案 在備份集中包含當前的 SPFILE 備份集中包括當前控制檔案 輸入資料檔案 fno=00001 name=F:ORACLEORADATATESTSYSTEM01.DBF 輸入資料檔案 fno=00002 name=F:ORACLEORADATATESTUNDOTBS01.DBF 輸入資料檔案 fno=00006 name=F:ORACLEORADATATESTYANGTK01.DBF 輸入資料檔案 fno=00003 name=F:ORACLEORADATATESTINDX01.DBF 輸入資料檔案 fno=00005 name=F:ORACLEORADATATESTUSERS01.DBF 輸入資料檔案 fno=00004 name=F:ORACLEORADATATESTTOOLS01.DBF 通道 ORA_DISK_1: 正在啟動段 1 於 02-4月 -06 通道 ORA_DISK_1: 已完成段 1 於 02-4月 -06 段 handle=F:ORACLEORACLE920DATABASEIHFHTAE_1_1 comment=NONE 通道 ORA_DISK_1: 備份集已完成, 經過時間:00:01:47 完成 backup 於 02-4月 -06 RMAN-00572: waiting for dbms_pipe input PL/SQL 過程已成功完成。 當備份結束後,可以通過DBMS_PIPE包結束RMAN命令: SQL> DECLARE V_INPUT VARCHAR2(32767) := 'EXIT;'; V_OUT NUMBER; BEGIN DBMS_PIPE.PACK_MESSAGE(V_INPUT); V_OUT := DBMS_PIPE.SEND_MESSAGE('ORA$RMAN_P1_IN'); DBMS_OUTPUT.PUT_LINE(V_OUT); END; / 0 PL/SQL 過程已成功完成。 SQL> DECLARE V_OUTPUT VARCHAR2(32767); V_OUT NUMBER := 0; BEGIN WHILE (V_OUT = 0) LOOP V_OUT := DBMS_PIPE.RECEIVE_MESSAGE('ORA$RMAN_P1_OUT', 5); IF V_OUT = 0 THEN DBMS_PIPE.UNPACK_MESSAGE(V_OUTPUT); DBMS_OUTPUT.PUT_LINE(V_OUTPUT); END IF; END LOOP; COMMIT; END; / 恢復管理器完成。 PL/SQL 過程已成功完成。 |
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24558279/viewspace-746150/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- RMAN的PIPE介面(二)
- oracle實驗-RMAN的PIPE介面Oracle
- 使用Pipe來執行RMAN命令
- Linux中的pipe(管道)與named pipe(FIFO 命名管道)Linux
- 管道pipe
- Broken pipe
- 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
- 精讀《pipe operator for JavaScript》JavaScript
- How to recover from USB pipe errorsError
- java.net.SocketException: Broken pipeJavaException
- stream pipe的原理及簡化原始碼分析原始碼
- pipe row的用法, Oracle split 函式寫法.Oracle函式
- 解決ssh的"Write failed: Broken pipe"問題AI
- Oracle vs PostgreSQL Develop(19) - PIPE ROWOracleSQLdev
- 對於Pipe管道之愛 - jessfraz
- Pandas - pandas.Series.pipe 函式函式
- JavaScript中的compose函式和pipe函式JavaScript函式
- 關於 pipe row的用法(轉,待做實驗)
- 【RMAN】RMAN的備份保留策略
- oracle系統包——DBMS_PIPE用法Oracle
- 【轉】使用oracle pipe傳遞訊息Oracle
- 記錄一次因subprocess PIPE 引起的線上故障
- RMAN的原理
- Python多程式之資料交換PipePython
- linux程式間通訊--管道(PIPE & FIFO)Linux
- 小而美的 golang 部落格平臺 PipeGolang
- IPC實現機制(一)---pipe(匿名管道)
- linux程式設計之pipe()函式Linux程式設計函式
- 【IPC程式間通訊之二】管道PipeC程式
- 事件匯流排有個 pipe 管道方法事件