Lei*_*fel 5 oracle oracle-11g-r2 jobs dbms
我已经设置了一个凭据/程序/程序/文件观察程序/作业来监视新文件的文件夹,但它不起作用。我想弄清楚我可以检查什么来解决为什么这不起作用。在将代码缩减到最低限度之后,以下是我已经完成的事情。
*_j000_*.trc
,但他们只有这个:FILE_TRANSFER error is:
后面没有任何内容。有人可以解释我做错了什么或给我一种方法来进一步解决这个问题吗?这是我的测试代码:
--Create Credential.
BEGIN
sys.dbms_scheduler.create_credential(
username => 'oracle',
password => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
database_role => NULL,
windows_domain => NULL,
comments => NULL,
credential_name => 'TestCredential'
);
END;
/
CREATE TABLE FilesFound(FoundDate Date);
CREATE OR REPLACE PROCEDURE TestProcedure(iFileInfo In sys.scheduler_filewatcher_result) AS
BEGIN
INSERT INTO FilesFound VALUES (sysdate);
COMMIT;
END;
/
BEGIN
DBMS_SCHEDULER.create_program(
program_name => 'TestProgram',
program_type => 'stored_procedure',
program_action => 'TestProcedure',
number_of_arguments => 1,
enabled => False);
DBMS_SCHEDULER.define_metadata_argument(
program_name => 'TestProgram',
metadata_attribute => 'event_message',
argument_position => 1);
END;
/
BEGIN
dbms_scheduler.create_file_watcher(
file_watcher_name => 'TestFileWatcher',
directory_path => '/u01/test',
file_name => '*.*',
credential_name => 'TestCredential',
destination => NULL,
enabled => False);
END;
/
BEGIN
dbms_scheduler.create_job(
job_name => 'TestJob',
program_name => 'TestProgram',
event_condition => NULL,
queue_spec => 'TestFileWatcher',
auto_drop => False,
enabled => False);
--Enable Everything.
dbms_scheduler.enable('TestProgram, TestFileWatcher, TestJob');
end;
/
--Set a one minute check interval.
BEGIN
DBMS_SCHEDULER.set_attribute(
'file_watcher_schedule',
'repeat_interval',
'freq=minutely; interval=1');
END;
/
--Create a file.
DECLARE
vFile utl_file.file_type;
BEGIN
EXECUTE IMMEDIATE 'create or replace directory TESTDIRECTORY as ''/u01/test''';
vFile := utl_file.fopen('TESTDIRECTORY', 'TestFileWatcher.txt', 'w', NULL);
utl_file.put_line(vFile, 'File has arrived '||SYSTIMESTAMP, TRUE);
utl_file.fclose(vFile);
END;
/
--Delay to give time for file to appear.
BEGIN
DBMS_LOCK.SLEEP(120);
END;
/
--Check the table.
BEGIN
FOR vx IN (select count(*) ct from sys.FilesFound) LOOP
If (vx.ct = 0) Then
DBMS_Output.Put_Line('Failed - No File Watcher Activity.');
Else
DBMS_Output.Put_Line('Success - File Watcher Activity Found.');
End If;
END Loop;
END;
/
--Cleanup.
EXECUTE dbms_scheduler.drop_job(job_name => 'TestJob');
EXECUTE dbms_scheduler.drop_program(program_name => 'TestProgram');
EXECUTE dbms_scheduler.drop_file_watcher(file_watcher_name => 'TestFileWatcher');
EXECUTE DBMS_SCHEDULER.drop_credential(credential_name => 'TestCredential');
drop table FilesFound;
drop procedure TestProcedure;
drop directory TestDirectory;
Run Code Online (Sandbox Code Playgroud)
小智 1
要使用文件监视程序,必须安装数据库 Java 虚拟机 (JVM) 组件。
检查java是否安装:
COMP_NAME STATUS
-------------------------------------------------- -----------
Oracle Expression Filter VALID
Oracle Enterprise Manager VALID
Oracle Workspace Manager VALID
Oracle Database Catalog Views VALID
Oracle Database Packages and Types VALID
JServer JAVA Virtual Machine VALID
Oracle XDK VALID
Oracle Database Java Packages VALID
Run Code Online (Sandbox Code Playgroud)
已选择 8 行。
SQL> l
1* select comp_name, status from dba_registry
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1804 次 |
最近记录: |