PLS-00306: wrong number or types of arguments in call to 'SYNCRN'"

After Upgrade to 11.2.0.4 Unable to Delete Any Rows from Table with Context Index due to Error: "PLS-00306: wrong number or types of arguments in call to 'SYNCRN'" (文档 ID 1586704.1)

 

After database upgrade to 11.2.0.4 cannot delete any rows from a table with context index due to PLS-306 error:
 

SQL> delete from foo where a=1;

1 row deleted.

SQL> commit;
commit
*
ERROR at line 1:
ORA-00604: error occurred at recursive SQL level 1
ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to 'SYNCRN'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored

 

 

Changes

 Database has been upgraded to 11.2.0.4, applied Patch 13390677

Cause

The cause of this problem has been analyzed in unpublished Bug 17501296. Commit callback procedure ctxsys.syncrn is not in sync with 11.2.0.4 C-code

Solution

To resolve the problem apply Patch 17501296 or recreate ctxsys.syncrn procedure as below:

connect / as sysdba
alter session set current_schema=CTXSYS;

create or replace procedure syncrn (
  ownid IN binary_integer,
  oname IN varchar2,
  idxid IN binary_integer,
  ixpid IN binary_integer,
  rtabnm IN varchar2,
  srcflg IN binary_integer,
  smallr IN binary_integer
)
  authid definer
  as external
  name "comt_cb"
  library dr$lib
  with context
  parameters(
    context,
    ownid  ub4,
    oname  OCISTRING,
    idxid  ub4,
    ixpid  ub4,
    rtabnm OCISTRING,
    srcflg ub1,
    smallr ub1
);
/

 

Patch Notes:

The patch for this issue supplies corrected upgrade and downgrade scripts
such that any new upgrade / downgrade should get the correct definition.

If you have already upgraded WITHOUT the patch already in place then you need
to execute "@?/sqlpatch/17501296/postinstall.sql" from to correct the dictionary.

你可能感兴趣的:(Oracle)