En cuanto a ORACLE, seria importante hacerse las siguiente preguntas:
¿Cómo saber si una base de datos Oracle, esta activa?
SELECT open_mode
FROM v$database;
Si el valor es:
- 'MOUNTED', la base de datos esta montada
- 'READ WRITE', entonces asumimos que la base de datos esta activa
- 'READ ONLY' , entonces podría ejecutar consultas en modo de sólo lectura, pero no esta activa.
SELECT controlfile_type
FROM v$database;
FROM v$database;
Si el valor es:
- 'CURRENT', la base de datos esta activa
- 'STANDBY', la base de datos esta en espera.
La siguiente consulta muestra el estado de la instancia, su nombre y su estado.
SELECT instance_name,database_status,status,instance_role,active_state
FROM v$instance;
FROM v$instance;
Si el valor STATUS es:
- STARTED, indica que la base de datos esta activa pero no montada
- MOUNTED, indica que la base de datos esta montada.
- OPEN, indica que el esta abierta y activa
- OPEN-MIGRATE, indica que esta en actualización
Si el valor DATABASE_STATUS es:
- ACTIVE
Si el valor ACTIVE_STATE es:
- 'NORMAL' indica la base de datos está en un estado normal.
- 'QUIESCING' indica que la sentencia ALTER SYSTEM QUIESCE RESTRICTED ha sido ejecutada: no hay nuevas transacciones de usuario, consultas o PL/SQL son procesados en este caso.
- 'QUIESCED', es Inmovilizado. indica que la sentencia RESTRINGIDO ALTER SISTEMA QUIESCE se ha ejecutado: Transacciones de usuario, consultas o declaraciones PL / SQL emitidas después de la instrucción no se procesan.
¿Verificamos las sessiones? Posiblemente existan mas que la licencia permitida
SELECT Nvl(s.username, '(oracle)') AS username,s.osuser,s.sid,s.serial#,p.spid,
s.lockwait,s.status,s.MODULE,s.machine,s.program,
To_char(s.logon_time, 'DD-MON-YYYY HH24:MI:SS') AS logon_time
FROM v$session s,v$process p
WHERE s.paddr = p.addr
AND s.username = 'PED_CDD' -- Change the username
ORDER BY s.username,s.osuser;
s.lockwait,s.status,s.MODULE,s.machine,s.program,
To_char(s.logon_time, 'DD-MON-YYYY HH24:MI:SS') AS logon_time
FROM v$session s,v$process p
WHERE s.paddr = p.addr
AND s.username = 'PED_CDD' -- Change the username
ORDER BY s.username,s.osuser;
¿Cuantos cursores están permitidos y cuantos se abrieron?
SELECT Max(a.value) AS highest_open_cur,p.value AS max_open_cur
FROM v$sesstat a,v$statname b,v$parameter p
WHERE a.statistic# = b.statistic#
AND b.name = 'opened cursors current'
AND p.name = 'open_cursors'
GROUP BY p.value;
FROM v$sesstat a,v$statname b,v$parameter p
WHERE a.statistic# = b.statistic#
AND b.name = 'opened cursors current'
AND p.name = 'open_cursors'
GROUP BY p.value;
¿Cuantos procesos, sessiones y que ultima sql ejecutaron ?
SELECT sess.process,sess.status,sess.username,sess.schemaname,SQL.sql_text
FROM v$session sess,v$sql SQL
WHERE SQL.sql_id(+) = sess.sql_id;
FROM v$session sess,v$sql SQL
WHERE SQL.sql_id(+) = sess.sql_id;
SELECT sess.process,sess.status,sess.username,sess.schemaname,SQL.sql_text
FROM v$session sess,v$sql SQL
WHERE SQL.sql_id(+) = sess.sql_id
AND sess.TYPE = 'USER'
FROM v$session sess,v$sql SQL
WHERE SQL.sql_id(+) = sess.sql_id
AND sess.TYPE = 'USER'
SELECT S.username,s.sid,s.osuser,t.sql_id,sql_text
FROM v$sqltext_with_newlines t,v$session s
WHERE t.address = s.sql_address
AND t.hash_value = s.sql_hash_value
AND s.status = 'ACTIVE'
AND s.username <> 'SYSTEM'
ORDER BY s.sid,t.piece
FROM v$sqltext_with_newlines t,v$session s
WHERE t.address = s.sql_address
AND t.hash_value = s.sql_hash_value
AND s.status = 'ACTIVE'
AND s.username <> 'SYSTEM'
ORDER BY s.sid,t.piece
Solucion final:
Shutdown Inmediate and Start mount. LSNRCTL for a STOP and START