1

当我得到这个错误时,我试图导出在 Oracle 11g 上创建的完整调度程序链(包括步骤、规则等):

ORA-31600: invalid input value CHAIN for parameter OBJECT_TYPE in function GET_DDL 
ORA-06512: at "SYS.DBMS_METADATA", line 5805
ORA-06512: at "SYS.DBMS_METADATA", line 8344 
ORA-06512: at line 1

留言含义

31600. 00000 -  "invalid input value %s for parameter %s in function %s"
*Cause:    A NULL or invalid value was supplied for the parameter.
*Action:   Correct the input value and try the call again.

失败的查询是:

select dbms_metadata.get_ddl('CHAIN','RUN_SERVICE_IP') from dual;

我们是否能够为链导出(获取 DDL)?导出整个链设置的替代方案是什么?

4

1 回答 1

2

以下在 Oracle 12c 上是正确的,我无法测试早期版本。

您需要指定'PROCOBJ'为 OBJECT_TYPE,因此:

select dbms_metadata.get_ddl('PROCOBJ','RUN_SERVICE_IP') from dual;

这对程序、作业和链有效。作业定义将包括属性。链定义将包括链步骤,但奇怪的是不包括链规则。这些您只能从视图中获得,*_SCHEDULER_CHAIN_RULES例如

select 'dbms_scheduler.define_chain_rule(
  chain_name => ''' || chain_name || ''',
  condition => ''' || condition || ''',
  action => ''' || action || ''',
  rule_name => ''' || rule_name || ''',
  comments => ''' || comments || '''
);'
from user_scheduler_chain_rules;
于 2015-09-11T13:47:18.807 回答