Oracle dbms_metadata.get_ddl для типа объекта JOB

Я хотел бы создать сценарии ddl для большинства объектов моей базы данных. dbms_metadata.get_ddl работает для большинства типов объектов. Например, следующее создает ddl для представления:

select dbms_metadata.get_ddl ( 'VIEW', 'SAMPLE_VIEW') from dual

С другой стороны, он не работает для object_type 'JOB'. Следующие:

select dbms_metadata.get_ddl( 'JOB', 'SAMPLE_JOB' ) from dual

выдает следующую ошибку:

ORA-31604: invalid NAME parameter "NAME" for object type JOB in function SET_FILTER
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 116
ORA-06512: at "SYS.DBMS_METADATA_INT", line 4705
ORA-06512: at "SYS.DBMS_METADATA_INT", line 8582
ORA-06512: at "SYS.DBMS_METADATA", line 2882
ORA-06512: at "SYS.DBMS_METADATA", line 2748
ORA-06512: at "SYS.DBMS_METADATA", line 4333
ORA-06512: at line 1

Если я перечислю свою работу, используя

select * from user_objects where object_type='JOB'

он показывает SAMPLE_JOB (точно так же, как показывает SAMPLE_VIEW, если отфильтрован для object_type='VIEW').

Почему он работает для VIEW (и TABLE, INDEX, TRIGGER, ...), а не для JOB?

Я использую Oracle 10g.

4 ответа

Решение
select dbms_metadata.get_ddl('PROCOBJ', 'yourJobNameGoesHere') from dual;

PROCOBJ являются процедурными объектами.

select dbms_metadata.get_ddl('PROCOBJ',['JOB'|'PROGRAM'|'SCHEDULE'],'OWNER') from dual;

PROCOBJ может быть РАБОТА, ПРОГРАММА и ГРАФИК.

Альтернативно, получить все задания из базы данных с их DDL:

select owner, job_name, dbms_metadata.get_ddl('PROCOBJ', job_name, owner) as ddl_output from ALL_SCHEDULER_JOBS

Даже я пробовал все вышеперечисленное, чтобы получить DDL в версии Oracle 10g, но безуспешно.Вот что я выясняю, чтобы получить подробную информацию о работе:

      set pages 200 lines 200
col owner format a20
col job_name format a25
col JOB_ACTION format a75
col COMMENTS format a60  

select owner, job_name, next_run_date, state, enabled from dba_scheduler_jobs where job_name like '%AUDIT%'; 
-- get the detail of scheduled jobs.

select OWNER,JOB_NAME, JOB_ACTION, COMMENTS FROM DBA_SCHEDULER_JOBS where JOB_NAME='PURGE_AUDIT_LOG';
-- get the limited detail from the selected coloumn.
    
select * FROM DBA_SCHEDULER_JOBS where JOB_NAME='PURGE_AUDIT_LOG';
-- to get the complete detail of a specific job along with code and other details.
Другие вопросы по тегам