まず、実行可能なジョブを作成しています。
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 に受信させるにはどうすればよいですか?