2009-07-30 3 views
1

Wir versuchen herauszufinden, wie man BULK INSERTs mit Oracle (10gR2) am besten handhaben kann, und ich finde, dass es ein ziemlich kompliziertes Thema sein kann. Eine Methode, die ich gefunden habe, beinhaltet das Anfügen Optimierungshinweis mit:Ist Direct-Path-Einfügen eine gute Möglichkeit, Masseneinfügungen in Oracle durchzuführen?

INSERT /*+ Append*/ 
INTO some_table (a, b) 
VALUES (1, 2) 

Mein Verständnis ist, dass dies sagen Oracle Indizes zu ignorieren und setzen nur die Ergebnisse am Ende der Tabelle. Dann alles, was ich sollte tun müssen, ist die Indizes neu zu erstellen:

ALTER INDEX some_index REBUILD 

Dies wäre einfacher, als zu versuchen, SQL * Loader als externer Prozess oder tun einige PL/SQL zu starten. Das erscheint mir fast zu einfach. Gibt es etwas, das mir fehlt? Irgendwelche Dinge, die zurückkommen könnten, um mich zu beißen, wenn ich diesen Ansatz nehme?

Antwort

2

Ein paar Anmerkungen ...

  1. Eine einzelne Zeile nicht angehängt werden kann, daher ist APPEND nur gültig mit INSERT INTO ... FROM Syntax SELECT.
  2. Eine Append ist die Hinzufügung von Daten über der Hochwassermarke der Tabelle, in der die Daten in vollständige Blöcke formatieren, die an den Tisch dann geschrieben werden, und die Umgehung die SQL-Engine
  3. Ein im Parallelmodus append erfordert dass jeder parallele Abfrage-Thread der Tabelle mindestens einen neuen Extent zuweist, in den die neuen Blöcke geschrieben werden. Dies kann eine Verschwendung von Platz sein.
  4. Die Indizes werden nicht ignoriert, aber ihre Pflege wird aufgehoben, bis die Blöcke in die Tabelle geschrieben wurden.

Siehe er docs für weitere wichtige Informationen: http://download.oracle.com/docs/cd/B19306_01/server.102/b14231/tables.htm#ADMIN01509

+2

Insert/* + * APPEND/reduziert Protokollierung, so bewrare, wenn Sie auf die Protokolle für Backup/Replikation http setzen: //www.pythian. com/news/1209/how-to-find-objects-creating-nologging-änderungen –

+0

Nicht ganz wahr, Gary. Nologging gilt nur für Einsätze, die im direkten Pfadmodus ausgeführt werden, direkte Pfadeinfügungen können jedoch weiterhin protokolliert werden. http://download.oracle.com/docs/cd/B19306_01/server.102/b14231/tables.htm#sthref2251 –

Verwandte Themen