oracle實驗-RMAN的PIPE介面
轉載:http://www.**e.com/bbs/thread-16668-1-1.html
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 過程已成功完成。
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/21584437/viewspace-716744/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- RMAN的PIPE介面
- RMAN的PIPE介面(二)
- oracle實驗記錄 (transport tablespace(Rman))Oracle
- oracle實驗記錄Rman duplicate database(1)OracleDatabase
- oracle實驗記錄Rman duplicate database 2OracleDatabase
- 使用Pipe來執行RMAN命令
- 關於 pipe row的用法(轉,待做實驗)
- oracle實驗記錄 (oracle 10G rman transport database)OracleDatabase
- oracle實驗記錄 (恢復-rman catalog)Oracle
- oracle實驗記錄 (恢復-rman保留策略)Oracle
- oracle實驗記錄 (恢復-rman恢復)Oracle
- ORACLE的使用試驗-- RMAN之一Oracle
- oracle實驗記錄 (恢復-rman維護(1))Oracle
- oracle實驗記錄 (恢復-rman維護(2))Oracle
- oracle實驗記錄 (恢復-rman增量備份)Oracle
- oracle實驗記錄 (rman 備份檢查&preview)OracleView
- oracle實驗記錄 (oracle 10G dataguard(8)rman 建立dg)Oracle
- 實驗---介面
- oracle實驗記錄 (恢復-rman reset incatnation(1))Oracle
- oracle實驗記錄 (恢復-rman操作delete(all) input )Oracledelete
- Oracle Pipe解決實時輸出問題Oracle
- 【rman備份策略】實驗
- oracle實驗記錄 (恢復-rman操作(設定&備份))Oracle
- oracle實驗記錄 (oracle 10G dataguard(9)rman恢復與dg)Oracle
- oracle實驗記錄 (恢復-rman基於控制檔案的恢復)Oracle
- Oracle RMAN備份實戰Oracle
- Oracle vs PostgreSQL Develop(19) - PIPE ROWOracleSQLdev
- pipe row的用法, Oracle split 函式寫法.Oracle函式
- Oracle Display the process of the procedure ( oracle pipe , dbms_output , prompt )Oracle
- oracle系統包——DBMS_PIPE用法Oracle
- 【轉】使用oracle pipe傳遞訊息Oracle
- Rman-ORACLE資料庫RMAN實現自動備份Oracle資料庫
- oracle rmanOracle
- Oracle實驗(03):number的使用Oracle
- oracle實驗記錄 (恢復-表空間基於時間點恢復(rman))Oracle
- 【Oracle】rman 的相容策略Oracle
- oracle11g rman驗證備份有效性Oracle
- Linux中的pipe(管道)與named pipe(FIFO 命名管道)Linux