2012-09-20 9 views
6

Unter normalen Bedingungen (nicht SYS verwenden oder vielleicht ist es verwenden) -Die Magie der DUAL

SQL> select * from dual; 

D 
- 
X 

Unter nicht so normalen Bedingungen (verbunden als SYS) -

SQL> alter database close; 
Statement processed. 

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

Ich weiß DUAL a spezielle magische Tabelle (etc. etc.) aber

Was ist anders mit DUAL, wenn die DB im Standby ist? Was ist die Relevanz, wenn ADDR, INDX, INST_ID im Standby-Modus sind?

+0

Besser gefragt auf http://dba.stackexchange.com – DCookie

+2

Nun, ich bin mir nicht sicher, ob ein DBA würde die Relevanz dieser Spalten oder ein Programmierer wissen würde !! – Annjawn

Antwort

2

Tom Kyte hat ausgezeichnete Arbeit geleistet vor, diese Frage schon einige Jahre zu beantworten, hier:

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

Hoffnung, das hilft.

+1

Ich habe diesen Post gesehen, aber ich sehe nicht, wo er die Spalten 'ADDR',' INDX', 'INST_ID' und deren Relevanz erklärt hat, und warum diese Spalte nur in DB Standby erscheinen würde. Ich denke, es ist nur eines der Dinge in Oracles "Black Box". – Annjawn

+0

Dies sind alle Standardspalten in einer X $ -Tabelle. ADDR ist die Adresse, wörtlich die Speicheradresse, wo diese bestimmte Zeile in der SGA zugeordnet ist. INST_ID ist die Instanz-ID. Für Datenbanken mit einer einzigen Instanz (nicht RAC) ist es immer 1. Für RAC-Datenbanken variiert sie von 1 bis n, wobei n die Anzahl der Knoten im RAC-Cluster ist. Und INDX, denke ich, ist ein internes Array, das alle X $ -Tabellen indiziert. Wenn also n X $ -Tabellen im System vorhanden sind, hat jedes X $ einen eindeutigen Wert von 1 bis n. –