Antalya DBA etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Antalya DBA etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

ORA-22992: cannot use LOB locators selected from remote tables


Ben bu hatayı remote db üzerinden, DDL scriptini almak istediğimde yaşadım.
Buda Remote db üzerinden CLOB bir datayı alamayacağım anlamına geliyor

SELECT DBMS_METADATA.GET_DDL@DB_TESTDB('TABLE','T','ILKER') FROM DUAL@DB_TESTDB;
ERROR:
ORA-22992: cannot use LOB locators selected from remote tables

no rows selected

SQL>

Workaround olarak substring'e çevirerek bir çözüm sağlayabilir siniz.

Select DBMS_LOB.SUBSTR@DB_TESTDB(DBMS_METADATA.GET_DDL@DB_TESTDB('TABLE','T','ILKER'),4000,1) from dual@DB_TESTDB;

Sheared cursor detail v$sql_shared_cursor


Aşağıdaki sorgu yardımı ile, belirlediğimiz bir sql'in sqlid ni girerek, SGA içerisindeki davranış detayını, oluşturduğu child tipini görebilirsiniz.

P.S: Neden ihtiyaç duyabiliriz ?
P.S.S: Pek çok kez sql detayını incelediğimizde bir sql'in pek çok childinin oluştuğunu görebiliriz. Bunların hangi type yapısınıda olduğunun detayını bize verir. Ve buna göre aksiyon alabiliriz.


select sql_id,sebep reason,sum(decode(sorun,'Y',1,0)) adet from (
select sql_id,
UNBOUND_CURSOR ,
SQL_TYPE_MISMATCH ,
OPTIMIZER_MISMATCH ,
OUTLINE_MISMATCH ,
STATS_ROW_MISMATCH ,
LITERAL_MISMATCH ,
FORCE_HARD_PARSE ,
EXPLAIN_PLAN_CURSOR ,
BUFFERED_DML_MISMATCH ,
PDML_ENV_MISMATCH ,
INST_DRTLD_MISMATCH ,
SLAVE_QC_MISMATCH ,
TYPECHECK_MISMATCH ,
AUTH_CHECK_MISMATCH ,
BIND_MISMATCH ,
DESCRIBE_MISMATCH ,
LANGUAGE_MISMATCH ,
TRANSLATION_MISMATCH ,
BIND_EQUIV_FAILURE ,
INSUFF_PRIVS ,
INSUFF_PRIVS_REM ,
REMOTE_TRANS_MISMATCH ,
LOGMINER_SESSION_MISMATCH ,
INCOMP_LTRL_MISMATCH ,
OVERLAP_TIME_MISMATCH ,
EDITION_MISMATCH ,
MV_QUERY_GEN_MISMATCH ,
USER_BIND_PEEK_MISMATCH ,
TYPCHK_DEP_MISMATCH ,
NO_TRIGGER_MISMATCH ,
FLasHBACK_CURSOR ,
ANYDATA_TRANSFORMATION ,
PDDL_ENV_MISMATCH ,
TOP_LEVEL_RPI_CURSOR ,
DIFFERENT_LONG_LENGTH ,
LOGICAL_STANDBY_APPLY ,
DIFF_CALL_DURN ,
BIND_UACS_DIFF ,
PLSQL_CMP_SWITCHS_DIFF ,
CURSOR_PARTS_MISMATCH ,
STB_OBJECT_MISMATCH ,
CROSSEDITION_TRIGGER_MISMATCH ,
PQ_SLAVE_MISMATCH ,
TOP_LEVEL_DDL_MISMATCH ,
MULTI_PX_MISMATCH ,
BIND_PEEKED_PQ_MISMATCH ,
MV_REWRITE_MISMATCH ,
ROLL_INVALID_MISMATCH ,
OPTIMIZER_MODE_MISMATCH ,
PX_MISMATCH ,
MV_STALEOBJ_MISMATCH ,
FLasHBACK_TABLE_MISMATCH ,
LITREP_COMP_MISMATCH ,
PLSQL_DEBUG ,
LOAD_OPTIMIZER_STATS ,
ACL_MISMATCH ,
FLasHBACK_ARCHIVE_MISMATCH ,
LOCK_USER_SCHEMA_FAILED ,
REMOTE_MAPPING_MISMATCH ,
LOAD_RUNTIME_HEAP_FAILED ,
HasH_MATCH_FAILED ,
PURGED_CURSOR ,
BIND_LENGTH_UPGRADEABLE ,
USE_FEEDBACK_STATS
from v$sql_shared_cursor where sql_id='&sql_id')
unpivot (sorun for sebep in (
UNBOUND_CURSOR as 'UNBOUND_CURSOR',
SQL_TYPE_MISMATCH as 'SQL_TYPE_MISMATCH',
OPTIMIZER_MISMATCH as 'OPTIMIZER_MISMATCH',
OUTLINE_MISMATCH as 'OUTLINE_MISMATCH',
STATS_ROW_MISMATCH as 'STATS_ROW_MISMATCH',
LITERAL_MISMATCH as 'LITERAL_MISMATCH',
FORCE_HARD_PARSE as 'FORCE_HARD_PARSE',
EXPLAIN_PLAN_CURSOR as 'EXPLAIN_PLAN_CURSOR',
BUFFERED_DML_MISMATCH as 'BUFFERED_DML_MISMATCH',
PDML_ENV_MISMATCH as 'PDML_ENV_MISMATCH',
INST_DRTLD_MISMATCH as 'INST_DRTLD_MISMATCH',
SLAVE_QC_MISMATCH as 'SLAVE_QC_MISMATCH',
TYPECHECK_MISMATCH as 'TYPECHECK_MISMATCH',
AUTH_CHECK_MISMATCH as 'AUTH_CHECK_MISMATCH',
BIND_MISMATCH as 'BIND_MISMATCH',
DESCRIBE_MISMATCH as 'DESCRIBE_MISMATCH',
LANGUAGE_MISMATCH as 'LANGUAGE_MISMATCH',
TRANSLATION_MISMATCH as 'TRANSLATION_MISMATCH',
BIND_EQUIV_FAILURE as 'BIND_EQUIV_FAILURE',
INSUFF_PRIVS as 'INSUFF_PRIVS',
INSUFF_PRIVS_REM as 'INSUFF_PRIVS_REM',
REMOTE_TRANS_MISMATCH as 'REMOTE_TRANS_MISMATCH',
LOGMINER_SESSION_MISMATCH as 'LOGMINER_SESSION_MISMATCH',
INCOMP_LTRL_MISMATCH as 'INCOMP_LTRL_MISMATCH',
OVERLAP_TIME_MISMATCH as 'OVERLAP_TIME_MISMATCH',
EDITION_MISMATCH as 'EDITION_MISMATCH',
MV_QUERY_GEN_MISMATCH as 'MV_QUERY_GEN_MISMATCH',
USER_BIND_PEEK_MISMATCH as 'USER_BIND_PEEK_MISMATCH',
TYPCHK_DEP_MISMATCH as 'TYPCHK_DEP_MISMATCH',
NO_TRIGGER_MISMATCH as 'NO_TRIGGER_MISMATCH',
FLASHBACK_CURSOR as 'FLASHBACK_CURSOR',
ANYDATA_TRANSFORMATION as 'ANYDATA_TRANSFORMATION',
PDDL_ENV_MISMATCH as 'PDDL_ENV_MISMATCH',
TOP_LEVEL_RPI_CURSOR as 'TOP_LEVEL_RPI_CURSOR',
DIFFERENT_LONG_LENGTH as 'DIFFERENT_LONG_LENGTH',
LOGICAL_STANDBY_APPLY as 'LOGICAL_STANDBY_APPLY',
DIFF_CALL_DURN as 'DIFF_CALL_DURN',
BIND_UACS_DIFF as 'BIND_UACS_DIFF',
PLSQL_CMP_SWITCHS_DIFF as 'PLSQL_CMP_SWITCHS_DIFF',
CURSOR_PARTS_MISMATCH as 'CURSOR_PARTS_MISMATCH',
STB_OBJECT_MISMATCH as 'STB_OBJECT_MISMATCH',
CROSSEDITION_TRIGGER_MISMATCH as 'CROSSEDITION_TRIGGER_MISMATCH',
PQ_SLAVE_MISMATCH as 'PQ_SLAVE_MISMATCH',
TOP_LEVEL_DDL_MISMATCH as 'TOP_LEVEL_DDL_MISMATCH',
MULTI_PX_MISMATCH as 'MULTI_PX_MISMATCH',
BIND_PEEKED_PQ_MISMATCH as 'BIND_PEEKED_PQ_MISMATCH',
MV_REWRITE_MISMATCH as 'MV_REWRITE_MISMATCH',
ROLL_INVALID_MISMATCH as 'ROLL_INVALID_MISMATCH',
OPTIMIZER_MODE_MISMATCH as 'OPTIMIZER_MODE_MISMATCH',
PX_MISMATCH as 'PX_MISMATCH',
MV_STALEOBJ_MISMATCH as 'MV_STALEOBJ_MISMATCH',
FLASHBACK_TABLE_MISMATCH as 'FLASHBACK_TABLE_MISMATCH',
LITREP_COMP_MISMATCH as 'LITREP_COMP_MISMATCH',
PLSQL_DEBUG as 'PLSQL_DEBUG',
LOAD_OPTIMIZER_STATS as 'LOAD_OPTIMIZER_STATS',
ACL_MISMATCH as 'ACL_MISMATCH',
FLASHBACK_ARCHIVE_MISMATCH as 'FLASHBACK_ARCHIVE_MISMATCH',
LOCK_USER_SCHEMA_FAILED as 'LOCK_USER_SCHEMA_FAILED',
REMOTE_MAPPING_MISMATCH as 'REMOTE_MAPPING_MISMATCH',
LOAD_RUNTIME_HEAP_FAILED as 'LOAD_RUNTIME_HEAP_FAILED',
HASH_MATCH_FAILED as 'HASH_MATCH_FAILED',
PURGED_CURSOR as 'PURGED_CURSOR',
BIND_LENGTH_UPGRADEABLE as 'BIND_LENGTH_UPGRADEABLE',
USE_FEEDBACK_STATS as 'USE_FEEDBACK_STATS'
) )
group by sql_id,sebep
having sum(decode(sorun,'Y',1,0))>0;

ORA-04052 Remote query fail

Bu hatayı db link ile remote db den bir distributed query çekmek isterken aldım.

SELECT o.OWNER, o.OBJECT_NAME, o.OBJECT_TYPE, os.source_size
  FROM dba_objects@db_link o, dba_object_size@db_link os
   WHERE o.OWNER=os.owner
       and o.OBJECT_NAME = os.name
       and o.OBJECT_TYPE = os.type
       and o.object_name = upper(p_OBJECT_NAME)
   

LINE/COL ERROR
-----------------------------------------------------------------
ORA-04052: error occurred when looking up remote object
SYS.IDL_UB2$@DB_LINK
ORA-00604: error occurred at recursive SQL level 1
ORA-06552: PL/SQL: Compilation unit analysis terminated
ORA-06553: PLS-201: identifier 'UNDEFINED' must be decl

workarounds olarak bir çözüm üretmek gerekirse

1-) Local db üzerinden bir view yaratabiliriz.
On local
Create or replace view remote_obje
SELECT o.OWNER, o.OBJECT_NAME, o.OBJECT_TYPE, os.source_size
  FROM dba_objects@db_link o,dba_object_size@db_link os
   WHERE o.OWNER=os.owner
       and o.OBJECT_NAME = os.name
       and o.OBJECT_TYPE = os.type
       and o.object_name = upper(p_OBJECT_NAME);

2-)Ya da remote db üzerinde bu view yaratıp sorgumuzu yapabiliriz. 
on destination

Create or replace view remote_obje 
SELECT o.OWNER, o.OBJECT_NAME, o.OBJECT_TYPE, os.source_size
   FROM dba_objects o, dba_object_size os
   WHERE o.OWNER=os.owner
       and o.OBJECT_NAME = os.name
       and o.OBJECT_TYPE = os.type
       and o.object_name = upper(p_OBJECT_NAME);

Ara