Tengo este extraño problema desde ayer. He intentado varias opciones y realmente reinstalé ORACLE y el DB mismo.Oracle - Zombie Table
Aquí está el problema: Tengo esta tabla que es comprarme una clase de zombi. Aquí están los síntomas:
SELECT TABLE_NAME FROM USER_TABLES WHERE TABLE_NAME='MYTABLE'
Devuelve un registro, lo que significa que la tabla existe.
SELECT COLUMN_NAME FROM USER_TAB_COLUMNS WHERE TABLE_NAME = 'MYTABLE'
Devuelve todas las columnas de MYTABLE. Hasta ahora todo bien, la mesa existe.
SELECT * FROM MYTABLE
devoluciones ORA-00942: la tabla o vista no existe. En este punto estoy bastante confundido: la tabla parece existir en los USERTABLES pero no puedo SELECCIONAR sobre ella?
CREATE TABLE MYTABLE (Foo NUMBER) TABLESPACE MYTABLESPACE
Devuelve: ORA-00604: Se produjo un error en el nivel de SQL recursivo 1 ORA-00001: restricción única (SYS.I_OBJ2) violaron
No entiendo este error. Pero lo mejor aún está por venir.
SELECT * FROM MYTABLE
Sorprendentemente, la consulta anterior (una copia exacta de la tercera consulta) devuelve varios registros ahora! Además, noté que la columna Foo no está presente: la tabla que ahora veo es mi tabla inicial que tenía otras columnas.
DROP TABLE MYTABLE
ahora tratar de llevar la mesa y me sale el siguiente error:
ORA-00604: Se ha producido el error a nivel de SQL recursivo 1 ORA-00942: la tabla o vista no existe ORA -06512: en la línea 19
SELECT * FROM MYTABLE
más confundido que nunca, trato de la consulta anterior y, oh sorpresa, la mesa ya no existe.
No entiendo esto: la tabla está en USERTABLES pero no puedo SELECCIONAR sobre ella, sin embargo, si creo una nueva tabla con el mismo nombre, obtengo un error pero ahora puedo SELECCIONAR sobre la versión anterior de esa tabla con varios registros.
¿Alguna idea? Realmente necesito su ayuda :(
EDITAR - he comprobado ahora:.. Soy incapaz de dejar cualquier tabla Puede que sólo sea un nuevo síntoma
Solución
El problema era que la tabla MDSYS.SDO_GEOR_SYSDATA_TABLE faltaba y un desencadenador de evento drop intentaba acceder a ella, generando el error. La solución era restaurar esa tabla.
Suena como que necesita para echar un vistazo a la mesa real - evitar el tema, posiblemente, de sinónimos, etc. Así que cuando se ejecuta la consulta para ver si existe la tabla, ¿con quién estás conectado? ¿Es un usuario regular, o sistema, o qué? Seleccione PROPIETARIO, TABLE_NAME en la primera consulta. Y trate de especificar el nombre completo, como en OWNER.TABLE_NAME para ver si lo que usted PIENSA está sucediendo realmente es lo que está sucediendo. – MJB
¿Estás 100% seguro de que es _exactly_ ''MYTABLE'' y no'' MyTable'' o algo por el estilo? – Ben
@MJB Buen punto, pero ya lo he intentado. USER_TABLES no tiene una columna PROPIETARIO, pero ALL_TABLE tiene. Revisé el PROPIETARIO en ALL_TABLE y estoy conectado usando ese usuario. También intenté especificar el nombre completo, pero no tuve suerte. – jpaires