Haciendo pruebas con este script que les platico, en pruebas, acabe borrando todos los datafiles, controlfiles y redologs!!! Esto si que es preocupante si fuera la base de datos de produccion, pero como era una de pruebas, no pasa nada, el problema surgio cuando tratando de recrear la base de datos, no me dejaba conectarme ni como sysdba, marcando el error ORA-12547.
oracle $ sqlplus
SQL*Plus: Release 11.2.0.2.0 Production on Thu Mar 10 22:39:43 2011
Copyright (c) 1982, 2010, Oracle. All rights reserved.
Enter user-name: /as sysdba
ERROR:
ORA-12547: TNS:lost contact
SQL*Plus: Release 11.2.0.2.0 Production on Thu Mar 10 22:39:43 2011
Copyright (c) 1982, 2010, Oracle. All rights reserved.
Enter user-name: /as sysdba
ERROR:
ORA-12547: TNS:lost contact
Cual es mi sorpresa que al buscar informacion de los procesos de la base de datos en mi servidor, veo que ninguno esta corriendo
ejemplo
oracle $ ps -eaf | grep TESTDB | grep -v "grep" | wc -l
0
0
Despues de unos cuantos dolores de cabeza tratando de averiguar que fue lo que me estaba impidiendo acceder desde sqlplus a mi instancia, por cierto teniendo todas las variables de ambiente correctas, me di cuenta de que los segmentos de memoria compartida y los semaforos en Unix seguian presentes.
Oracle en 9i,10g y 11g trae una utileria llamada sysresv que nos permite saber que semaforos y segmentos de memoria compartida esta siendo utilizada por nuestra instancia.
$ORACLE_HOME/bin/sysresv
Una vez que corri e identifique los segmentos de memoria compartida y los semaforos que estaban presentes para mi instancia
oracle $ $ORACLE_HOME/bin/sysresv
IPC Resources for ORACLE_SID "TESTDB" :
Shared Memory:
ID KEY
1073741917 0xfc4002bc
Semaphores:
ID KEY
2130706467 0x0b90e3f0
67108901 0x0b90e3f1
1711276072 0x0b90e3f5
1543503922 0x0b90e3f6
1828716596 0x0b90e3f7
Oracle Instance not alive for sid "TESTDB"
IPC Resources for ORACLE_SID "TESTDB" :
Shared Memory:
ID KEY
1073741917 0xfc4002bc
Semaphores:
ID KEY
2130706467 0x0b90e3f0
67108901 0x0b90e3f1
1711276072 0x0b90e3f5
1543503922 0x0b90e3f6
1828716596 0x0b90e3f7
Oracle Instance not alive for sid "TESTDB"
Me di a la tarea de removerlos con el comando "ipcrm", de las siguientes dos maneras, toma en cuenta que mi prompt en unix es "oracle $"
oracle $ ipcrm -m [shared_memory_ID]
oracle $ ipcrm -s [semaphore_ID]
oracle $ ipcrm -s [semaphore_ID]
Ahora si, despues de que los segmentos de memoria y semaforos no estaban presentes, pude acceder a sqlplus sin ningun problema, pudiendo arrancar mi instancia sin ningun inconveniente
oracle $ sqlplus
SQL*Plus: Release 11.2.0.2.0 Production on Thu Mar 10 23:07:51 2011
Copyright (c) 1982, 2010, Oracle. All rights reserved.
Enter user-name: /as sysdba
Connected to an idle instance.
TESTDB> startup nomount
ORACLE instance started.
Total System Global Area 2088402944 bytes
Fixed Size 2159904 bytes
Variable Size 721423072 bytes
Database Buffers 1342177280 bytes
Redo Buffers 22642688 bytes
TESTDB>
SQL*Plus: Release 11.2.0.2.0 Production on Thu Mar 10 23:07:51 2011
Copyright (c) 1982, 2010, Oracle. All rights reserved.
Enter user-name: /as sysdba
Connected to an idle instance.
TESTDB> startup nomount
ORACLE instance started.
Total System Global Area 2088402944 bytes
Fixed Size 2159904 bytes
Variable Size 721423072 bytes
Database Buffers 1342177280 bytes
Redo Buffers 22642688 bytes
TESTDB>
Conclusion
Espero que este pequeño ejemplo les ayude cuande se les presente esta situacion, aunque no es algo que sucede seguido, cuando sucede puede ser un dolor de cabeza arreglarlo y atacarlo.
No hay comentarios.:
Publicar un comentario