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 <Patch17501296> to correct the dictionary.