2012-09-20 28 views
6

En condiciones normales (sin utilizar SYS o tal vez de usarlo) -La magia de la doble

SQL> select * from dual; 

D 
- 
X 

En condiciones no tan normales (conectado como SYS) -

SQL> alter database close; 
Statement processed. 

SQL> select * from dual; 
ADDR  INDX  INST_ID D 
-------- ---------- ---------- - 
00FA6E50   0   1 X 

DUAL es una mesa mágica especial (etc., etc.) pero

¿Qué es diferente con DUAL cuando el DB está en modo de espera? ¿Cuál es la relevancia si ADDR, INDX, INST_ID en modo de espera?

+0

Mejor preguntado en http://dba.stackexchange.com – DCookie

+2

¡Bien, no estoy seguro de si un DBA sabría la relevancia de estas columnas o si un programador lo hiciera! – Annjawn

Respuesta

2

Tom Kyte hizo un excelente trabajo de responder a esta pregunta hace unos cuantos años, aquí:

http://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:1562813956388

Espero que ayude.

+1

He visto esta publicación, pero no veo dónde explicó las columnas 'ADDR',' INDX', 'INST_ID' y su relevancia, y por qué estas columnas solo aparecerían en DB Standby. Supongo que es solo una de las cosas en la "caja negra" de Oracle. – Annjawn

+0

Esas son todas las columnas estándar en cualquier tabla X $. ADDR es la dirección, literalmente, la dirección de memoria donde esa fila en particular está mapeada en el SGA. INST_ID es el ID de instancia. Para las bases de datos de instancia única (no RAC), siempre es 1. Para las bases de datos RAC, varía de 1 a n, donde n es la cantidad de nodos en el clúster RAC. E INDX, creo que es una matriz interna que indexa todas las tablas X $. Entonces, si hay n X $ tablas en el sistema, cada X $ tendrá un valor único, de 1 a n. –

Cuestiones relacionadas