3 Replies Latest reply: Mar 14, 2013 10:17 AM by user12116782 RSS

    ORA-26753: Mismatched columns found in 'DBO.TEST'

    895836
      I get this error in DBA_APPLY_ERROR after making replication between oracle and sybase but I use this command to create both table
      create table DBO.TEST (A char(10) primary key);

      how do I solve this problem ?
      please help me ?
        • 1. Re: ORA-26753: Mismatched columns found in 'DBO.TEST'
          user11981754
          This is a Streams bug and I solved it using an error handler, infact if you try to execute the error with dbms_apply_adm.execute_error the istruction is executed successfully.
          So you can connect as streams administrator (strmadmin) and execute this script:

          create or replace package mismatch_column_pkg as
          type emsg_array is table of varchar2(2000) index by binary_integer;
          procedure mismatch_column_error_handler(message           in anydata,
          error_stack_depth in number,
          error_numbers     in dbms_utility.number_array,
          error_messages    in emsg_array);
          end mismatch_column_pkg;
          */*
          create or replace package body mismatch_column_pkg as
          procedure mismatch_column_error_handler(message           in anydata,
          error_stack_depth in number,
          error_numbers     in dbms_utility.number_array,
          error_messages    in emsg_array) is
          ret pls_integer;
          lcr sys.lcr$_row_record;
          begin
          if (error_numbers(1) = 26753) then
          ret := message.getobject(lcr);
          lcr.execute(true);
          else
          raise_application_error(-20999,
          error_numbers(1) || ' ' || error_messages(1));
          end if;
          end mismatch_column_error_handler;
          end mismatch_column_pkg;
          */*
          +/*Then you have to associate the error handler with each table that gives the error ora-26753, and you can do it with the script below*/+
          begin
          dbms_apply_adm.set_dml_handler(object_name         => 'owner_of_your_table.name_of_your_table',
          object_type         => 'TABLE',
          operation_name      => 'DEFAULT',
          error_handler       => true,
          user_procedure      => 'strmadmin.mismatch_column_pkg.mismatch_column_error_handler',
          apply_database_link => null,
          apply_name          => null);
          end;
          */*
          +/*"apply_name=>null" means that the error handler will be used by every apply process you have in you environment. Remember to restart apply process after you executed this script otherwise the apply process will continue ignoring the error handler*/+
          • 2. Re: ORA-26753: Mismatched columns found in 'DBO.TEST'
            user11981754
            Did my opinion help you?
            • 3. Re: ORA-26753: Mismatched columns found in 'DBO.TEST'
              user12116782
              Thanks a lot. Working perfect!