首先,我正在创建一个可执行作业:
BEGIN
DBMS_SCHEDULER.CREATE_JOB(job_name => 'PIPE_JOB', job_type => 'EXECUTABLE', job_action => 'RMAN PIPE TEST_PIPE_1 target / TIMEOUT = 60');
END;
接下来,我尝试使用这一系列 Oracle 命令执行该作业:
DECLARE
pipename CONSTANT VARCHAR2(100) := 'TEST_PIPE_1';
create_result INTEGER;
send_result INTEGER;
BEGIN
create_result := DBMS_PIPE.CREATE_PIPE(pipename);
DBMS_PIPE.PACK_MESSAGE('BACKUP INCREMENTAL LEVEL 1 CUMULATIVE DEVICE TYPE DISK DATABASE INCLUDE CURRENT CONTROLFILE;');
send_result := DBMS_PIPE.SEND_MESSAGE(pipename);
DBMS_SCHEDULER.RUN_JOB(job_name => 'PIPE_JOB', use_current_session => false);
END;
现在,当我调用 RUN_JOB 时,RMAN 可执行文件在服务器上启动,但随后立即退出,大概是因为它从未接收到我试图打包到管道中的命令。
如何正确使用管道使 RMAN 接收我尝试发送的命令?