Re: Ora-8103 error

  • From: Jonathan Lewis <jlewisoracle@xxxxxxxxx>
  • To: Pap <oracle.developer35@xxxxxxxxx>
  • Date: Mon, 28 Jun 2021 12:35:47 +0100

The parameter enable_ddl_logging comes under the extra cost "Lifecycle
Management" option.
Don't do it unless you've paid for the licence.

You may want to set up your own logging mechanism (writing to a table, or
to a file) using a database trigger , if the problem is relevant only to a
specific table you could do something like the following as the first lines
of thw trigger:

create or replace trigger before_ddl
before ddl
on test_user.schema
begin
        if (
                (sys.dbms_standard.DICTIONARY_OBJ_OWNER = 'TEST_USER')
            and (sys.dbms_standard.dictionary_obj_type  = 'TABLE')
            and (sys.dbms_standard.DICTIONARY_OBJ_NAME  = 'TRANSACTIONS')
        )
        then  ...

Regards
Jonathan Lewis



On Mon, 28 Jun 2021 at 11:51, Pap <oracle.developer35@xxxxxxxxx> wrote:

This question came from a friend in a forum for version 19.9.0.0.0 of
oracle , stating,  one of the SELECT query is failing with ora-08103 object
no longer exists error intermittently and rerun makes that query finish
without any error. And the query does have some partition tables used but
they aren't able to find any partition maintenance activities during this
period. But there must be some DDL happening and thus the SELECT query is
failing. And it might be that the DDL is too quick that it's not logged in
ASH/AWR views. So is there any method to get hold of the DDL statement and
its source ? I saw enabling DDL_LOGGING at the system level is one
approach, but thinking if it's having any negative sides if it's set at
system level for a long duration and if any other possible approach
exists?

Regards
Pap

Other related posts: