set lines 2000
set tab off
select s.osuser,
s.username,
s.sid || ',' || s.serial# sid_serial#,
p.spid,
s.terminal,
s.module,
s.seconds_in_wait,
to_char(s.logon_time, 'dd.mm.yyyy hh24:mi:ss') logon_time,
sql.sql_text
from v$sqlarea sql
, v$process p
, v$session s
where s.paddr = p.addr
and s.sql_address = sql.address (+)
and s.sql_hash_value = sql.hash_value (+)
and s.username is not null
order by s.osuser, s.username, s.sid
/
Mittwoch, April 26, 2006
Current_Sessions
Das folgende Statement liefert ein paar allgemeine Informationen zu den aktiven Sessions. Die spid ist enthalten, um unter Windows eine Zuordnung der sid zum zugehörigen Trace-file zu ermöglichen. Lesbar wird die Ausgabe unter Windows mit einem entsprechend dimensionierten DOS-Fenster und passenden sqlplus-Einstellungen:
Donnerstag, Januar 19, 2006
Reorganisation von Tablespaces
In 10g gibt es zwar einen Shrink-Befehl für Tabellen, aber eine Möglichkeit, einen TS automatisch zu reorganisieren, ist mir nicht bekannt. Da ist man dann auf exp/imp (bzw. expdp/impdp) und alter table ... move tablespace ... (bzw. alter index ... rebuild tablespace ...) angewiesen.
Aus diesem Grund verwende ich meine TS immer als logische Einheiten für zusammengehörige Elemente, die ich im Fall einer Löschung komplett loswerden möchte (also Tabellen und zugehörige Indizes; damit ich dann ggf. den TS samt allen data files wegwerfen kann).
Die Trennung von Indizes und Tabellen war meines Wissens früher einmal aus Performancegründen interessant (zur Verteilung von IOs), aber heute spielt das normalerweise keine Rolle mehr (wg. RAID etc.), was Tom Kyte gelegentlich erläutert hat (der hier ursprünglich angegebene AskTom-Link funktionierte nicht mehr).
Dienstag, Januar 03, 2006
REMAP_SCHEMA
Der Transfer von Daten aus einem Schema in ein anderes erfolgt beim Data Pump Import über den Parameter REMAP_SCHEMA (der an die Stelle der Parameter FromUser und ToUser des alten imp tritt). Der Befehl:
Die Verschiebung in einen anderen Tablespace erfolgt über den Parameter REMAP_TABLESPACE.
impdp hr/hr@db REMAP_SCHEMA=hr:scottbewirkt somit den Import der hr-Objekte ins Schema Scott.
Die Verschiebung in einen anderen Tablespace erfolgt über den Parameter REMAP_TABLESPACE.
Dienstag, Dezember 20, 2005
Flashback
Eine ganz kurze Demonstration zur Flashback-Funktionalität in 10g:
create table test1(a number); insert into test1 values (1); commit; drop table test1; select * from test1; from test1 * FEHLER in Zeile 2: ORA-00942: Tabelle oder View nicht vorhanden flashback table test1 to before drop; select * from test1; A ---------- 1
Mittwoch, Dezember 14, 2005
Web-Adresse der DB Console
Die Adresse der db console einer Instanz kann auf mehreren Wegen ermittelt werden. Während der Einrichtung der console durch den emca werden logs geschrieben:
- unter %OracleHome%\cfgtoollogs wird in 10.1 im Rahmen der Installation eine Datei emca.log.0 abgelegt, in der die Adresse zu finden ist. Hier bekommt anscheinend die erste Installation die 5500 und weitere Installationen dann die folgenden ports (5501, 5502 etc.).
- In 10.2 ist das Verzeichnis cfgtoollogs aufgeräumt worden. Dort hat dann jedes Tool sein eigenes Verzeichnis mit Unterverzeichnissen für die zugehörigen Instanzen - also %OracleHome%\cfgtoollogs\emca\<sid> - und darin liegen dann emca_<datum>_<uhrzeit>.log-Dateien. In 10.2 scheint die Portvergabe nicht mehr bei 5500 zu beginnen (jedenfalls nicht in meinen Installationen).
Freitag, November 25, 2005
Windows Memory Limit
Unter Windows (32-Bit) kann ein Prozess üblicherweise nicht mehr als 2 GB RAM verwenden. Dieses Limit lässt sich über eine Einstellung in der boot.ini erhöhen. Näheres dazu z.B. unter http://www.brianmadden.com/content/content.asp?ID=69.
Donnerstag, November 03, 2005
Outer Join mit OR-Verknüpfung
Laut Oracle Database SQL Reference (für 10g) gilt: "A WHERE condition containing the (+) operator cannot be combined with another condition using the OR logical operator."
Die Datenbank behauptet das gleiche:
SQL> r 1 select * 2 from test2 t2, test3 t3 3 where t2.a = t3.a(+) 4* or t3.b = 3 where t2.a = t3.a(+) *ERROR at line 3: ORA-01719: outer join operator (+) not allowed in operand of OR or IN
Es gibt allerdings ab Oracle 9 die folgende Möglichkeit:
select * from test2 t2 left outer join test3 t3 on (t2.a = t3.a or t3.b = 3);
Das Problem liegt also beim (+)-Operator (dessen Verwendung Oracle auch nicht mehr empfiehlt - obwohl er mir immer besser gefallen hat als die verbose "left outer join on blabla"-Variante - was angesichts solcher Einschränkungen allerdings einleuchtet).
Nachtrag 27.07.2011: Wolfgang Breitling (den Link muss ich schuldig bleiben) und andere (z.B. der Herr Lewis) haben gelegentlich darauf hingewiesen, dass Oracle (in diesem Fall also der CBO) mit der traditionellen (und über Jahrzehnte hinweg eingesetzten) Join-Syntax besser zurecht kommt.
Freitag, Oktober 21, 2005
database cloning
Da das Thema <cloning> offenbar häufiger angeschnitten wird, hier ein Link auf die passenden Threads bei AskTom:
Nachtrag 19.10.2012: die Links verweisen dieser Tage ins Nirvana, aber man findet beim Herrn Kyte natürlich immer noch viel Relevantes zu diesem Thema, z.B. hier.
- http://asktom.oracle.com/pls/ask/f?p=4950:8:::::F4950_P8_DISPLAYID:634671569269
- http://asktom.oracle.com/pls/ask/f?p=4950:8:::::F4950_P8_DISPLAYID:318216852435
Nachtrag 19.10.2012: die Links verweisen dieser Tage ins Nirvana, aber man findet beim Herrn Kyte natürlich immer noch viel Relevantes zu diesem Thema, z.B. hier.
Abonnieren
Posts (Atom)