ORA-01775: looping chain of synonyms
Saludos a toda la comunidad, hoy vengo con un nuevo problema resuelto que esta referido a RMAN.
Me disponía a la toma de un backup hot de una base que serviría para generar un nuevo ambiente.
En la base había sido aplicado recientemente el patch 10.2.0.4
SQL> SELECT * FROM V$VERSION; BANNER ---------------------------------------------------------------- Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi PL/SQL Release 10.2.0.4.0 - Production CORE 10.2.0.4.0 Production TNS for Linux: Version 10.2.0.4.0 - Production NLSRTL Version 10.2.0.4.0 - Production
Cuando me logueo y ejecuto RMAN me encuentro con el error ORA-04063.
[oracle@sdat2101lx db_oapm1n]$ rman target / Recovery Manager: Release 10.2.0.4.0 - Production on Wed Nov 24 12:12:10 2010 Copyright (c) 1982, 2007, Oracle. All rights reserved. RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-00554: initialization of internal recovery manager package failed RMAN-04005: error from target database: ORA-04063: package body "SYS.DBMS_BACKUP_RESTORE" has errors ORA-06508: PL/SQL: could not find program unit being called: "SYS.DBMS_BACKUP_RESTORE" ORA-06512: at line 1 RMAN-04015: error setting target database character set to US7ASCII
Bien , voy a revisar los parametros en especial el NLS_LANGUAGE y me encuentro que todo esta como corresponde.
SQL> desc sys.props$ Name Null? Type ----------------------------------------- -------- ---------------------------- NAME NOT NULL VARCHAR2(30) VALUE$ VARCHAR2(4000) COMMENT$ VARCHAR2(4000)
SQL> set line 150 set pages 200 col NAME format a30 col VALUE$ format a30 col COMMENT$ format a50 select * from sys.props$;SQL> SQL> SQL> SQL> SQL> NAME VALUE$ COMMENT$ ------------------------------ ------------------------------ -------------------------------------------------- DICT.BASE 2 dictionary base tables version # DEFAULT_TEMP_TABLESPACE TEMP Name of default temporary tablespace DEFAULT_PERMANENT_TABLESPACE USERS Name of default permanent tablespace NLS_LANGUAGE AMERICAN Language DEFAULT_TBS_TYPE SMALLFILE Default tablespace type NLS_NCHAR_CHARACTERSET AL16UTF16 NCHAR Character set GLOBAL_DB_NAME OAPT1N.BANCOCREDICOOP.COOP Global database name EXPORT_VIEWS_VERSION 8 Export views revision # DBTIMEZONE 00:00 DB time zone NLS_TERRITORY AMERICA Territory NLS_CURRENCY $ Local currency NLS_ISO_CURRENCY AMERICA ISO currency NLS_NUMERIC_CHARACTERS ., Numeric characters NLS_CHARACTERSET WE8ISO8859P1 Character set NLS_CALENDAR GREGORIAN Calendar system NLS_DATE_FORMAT DD-MON-RR Date format NLS_DATE_LANGUAGE AMERICAN Date language NLS_SORT BINARY Linguistic definition NLS_TIME_FORMAT HH.MI.SSXFF AM Time format NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM Time stamp format NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR Time with timezone format NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR Timestamp with timezone format NLS_DUAL_CURRENCY $ Dual currency symbol NLS_COMP BINARY NLS comparison NLS_LENGTH_SEMANTICS BYTE NLS length semantics NLS_NCHAR_CONV_EXCP FALSE NLS conversion exception NLS_RDBMS_VERSION 10.2.0.4.0 RDBMS version for NLS parameters WORKLOAD_CAPTURE_MODE CAPTURE implies workload capture is in progress 28 rows selected. SQL>
Bien, ahora ejecuto un script que me va a compilar todos los objetos , y al revisar veo que estos terminaron OK.
Pero me encuentro con muchos otros nuevos descompilados.
Hago el proceso nuevamente y siguen apareciendo nuevos objetos descompilados, es como si hubiese entrado en un loop.
Entonces me decido a revisar y verificar que ocurre en algún cliente gráfico, más precisamente con el sqldeveloper observando que se descompilan otros objetos, cuando compilo los actuales.
Y al querer revisar algún objeto en particular me aparece el siguiente error:
ORA-01775: looping chain of synonyms
Ahora si ! Veo que el problema viene por otro lado. Intento buscar si algún sinónimo de los usuarios de aplicación fueron mal generados, y quedan operando de manera circular para dropearlos y volver a generarlos. Pero descubro que solo pasa en el schema de sys.
Ejecuto el query que pongo a continuación para ver si realmente todos los objetos descompilados pertenecen a sys.
Y asi es efectivamente.
COL OBJECT_NAME FORMAT A40 SET LINE 200 SELECT OBJECT_NAME , OBJECT_TYPE , CREATED , STATUS , OWNER FROM DBA_OBJECTS where STATUS='INVALID' and owner ='SYS'; OBJECT_NAME OBJECT_TYPE CREATED STATUS OWNER ---------------------------------------- ------------------- --------- ------- ------------------------------ DBMS_ERRLOG PACKAGE BODY 19-DEC-06 INVALID SYS DBMS_ALERT PACKAGE BODY 19-DEC-06 INVALID SYS DBMS_DESCRIBE PACKAGE BODY 19-DEC-06 INVALID SYS DBMS_DDL_INTERNAL PACKAGE BODY 19-DEC-06 INVALID SYS DBMS_DDL PACKAGE BODY 19-DEC-06 INVALID SYS DBA_PENDING_TRANSACTIONS VIEW 19-DEC-06 INVALID SYS ANYDATA TYPE BODY 19-DEC-06 INVALID SYS ANYDATASET TYPE BODY 19-DEC-06 INVALID SYS DBMS_RULE PACKAGE BODY 19-DEC-06 INVALID SYS DBMS_RULE_ADM PACKAGE BODY 19-DEC-06 INVALID SYS DBMS_RULE_EXIMP PACKAGE BODY 19-DEC-06 INVALID SYS DBMS_LOGREP_EXP PACKAGE 19-DEC-06 INVALID SYS AQ$_SRVNTFN_MESSAGE TYPE 19-DEC-06 INVALID SYS DBMS_AQ PACKAGE BODY 19-DEC-06 INVALID SYS DBMS_AQ_INV PACKAGE BODY 19-DEC-06 INVALID SYS ... ... KUPC$_MASTERERROR TYPE BODY 06-AUG-08 INVALID SYS KUPC$_MASTERJOBINFO TYPE BODY 06-AUG-08 INVALID SYS KUPC$_FILE_LIST TYPE BODY 06-AUG-08 INVALID SYS KUPC$_GET_WORK TYPE BODY 06-AUG-08 INVALID SYS KUPC$_WORKER_FILE TYPE BODY 06-AUG-08 INVALID SYS KUPC$_DEVICE_IDENT TYPE BODY 06-AUG-08 INVALID SYS KUPC$_BAD_FILE TYPE BODY 06-AUG-08 INVALID SYS KUPC$_TABLE_DATA_ARRAY TYPE BODY 06-AUG-08 INVALID SYS KUPC$_WORKER_LOG_ENTRY TYPE BODY 06-AUG-08 INVALID SYS KUPC$_WORKERERROR TYPE BODY 06-AUG-08 INVALID SYS KUPC$_WORKER_EXIT TYPE BODY 06-AUG-08 INVALID SYS KUPC$_WORKER_FILE_LIST TYPE BODY 06-AUG-08 INVALID SYS KUPC$_JOBINFO TYPE BODY 06-AUG-08 INVALID SYS KUPC$DATAPUMP_QUETAB TABLE 06-AUG-08 INVALID SYS SYSNTU8xf5ha3eVjgQIAKBQhIag== TABLE 06-AUG-08 INVALID SYS SYSNTU8xf5ha5eVjgQIAKBQhIag== TABLE 06-AUG-08 INVALID SYS XMLSEQCUR_IMP_T TYPE 06-AUG-08 INVALID SYS AGGXMLIMP TYPE 06-AUG-08 INVALID SYS AGGXQIMP TYPE 06-AUG-08 INVALID SYS OLAPI_MDX_ROWSET_IMPL_T TYPE 06-AUG-08 INVALID SYS AQ$KUPC$DATAPUMP_QUETAB_R VIEW 08-AUG-08 INVALID SYS AQ$_KUPC$DATAPUMP_QUETAB_P TABLE 08-AUG-08 INVALID SYS SYSNTU/fMwiVWzGrgQIAKBAg04w== TABLE 08-AUG-08 INVALID SYS SYSNTU/fMwiVYzGrgQIAKBAg04w== TABLE 08-AUG-08 INVALID SYS 535 rows selected.
Comprobado, que me queda por hacer ? Ejecuto el script utlrp.sql y finaliza su ejecución con errores.
ORA-04063: package body "SYS.DBMS_REGISTRY_SYS" has errors
Bien , siguiendo los rastros de lo ejecutado por el DBA de la empresa, llegamos a la conclución de que la migarción había quedado inconsistente debido a que el procedimiento que utilizo , le faltaban pasos.
Ejecutamos en el orden siguiente.
SQLPLUS AS SYSDBA SHUTDOWN IMMEDIATE STARTUP MIGRATE @?/rdbms/admin/catalog.sql @?/rdbms/admin/catproc.sql @?/rdbms/admin/utlrp.sql SHUTDOWN STARTUP
Y ya pudimos finalizar nuestra tarea ! Regards, saludos , até mais !
Gracias. con esto pude solventar el problema que tenia te lo agradezco. Dios te bendiga.
Me gustaMe gusta