Gibt es eine gute Abhilfe, um die Oracle-IMPDP REMAP_SCHEMA Problem mit Triggern (ORA-39083, ORA-00942)?

Kann man verwenden Oracle data pump-import-tool (IMPDP.EXE zum importieren von einem schema in ein anderes mit der REMAP_SCHEMA option. Allerdings gibt es ein Problem, dass die Trigger nicht richtig zugeordnet. Dies führt zu der trigger nicht erstellt wird, mit einer Fehlermeldung wie folgt:

ORA-39083: Object type TRIGGER failed to create with error: ORA-00942: table or view does not exist Failing sql is: CREATE TRIGGER "**NEW_SCHEMA**"."METER_ALARMS_BI"   BEFORE INSERT ON
**OLD_SCHEMA**.METER_ALARMS ...

Der Grund für dieses ist, weil das erstellen von SQL-bezieht sich noch auf OLD_SCHEMA. Es sagt, dass in der Oracle-Dokumentation:

Die Zuordnung kann nicht 100 Prozent
vollständig, denn es gibt bestimmte
schema-Referenzen, die den Import nicht
in der Lage zu finden. Zum Beispiel,
Import finden nicht schema-Referenzen
eingebettet innerhalb des Körpers
Definitionen von Typen, views,
Prozeduren und packages.

IMHO ist dies ein bit von a cop-out von Oracle-aber das ist eine andere Diskussion!

Laut Oracle Metalink note 750783.1, die Abhilfe ist:

  1. Erstellen Sie eine SQLFILE, die relevanten DDL-Befehl(en):
      impdp system/****** directory=test_dp
      DUMPFILE=export_schemas.dmp
     remap_schema=u1:u2 sqlfile=script.sql
  1. - Extrakt die betroffenen DDL aus der SCHRIFTLICHEN SQLFILE und korrigieren Sie die
    schema reference. Dann führen Sie den Befehl manuell ein.

Dies ist nicht ein guter Weg, es zu tun, vor allem, wenn Sie viele fehlerhafte Objekte und automatisieren möchten, den Prozess der Kombination mehrerer schema-für-Feld Aktualisierung von Datenbanken.

Hat jemand einen besseren Weg gefunden, dies zu tun? Ich brauche eine Lösung, dass muss 100% zuverlässig sein, wenn Ihr im Feld verwendet. Ich könnte Parsen der generierten SQL-Datei, aber kann man dies 100% korrekt ist? Gibt es nicht irgendeine Weise abfangen, die das ERSTELLEN von SQL-Anweisungen ausführen, die von IMPDP und korrigieren Sie es on the fly " beim Import? Könnte ein patch der DMP-Datei direkt?

  • Ich begann zu schreiben, dies als eine Antwort, aber es ist wirklich mehr eine Bemerkung - ich kann mir nicht vorstellen, dass es eine guten Grund für das schema name als Objekt-Qualifizierer in einem anderen Objekt, das das schema besitzt. Es ist mir nicht klar, was die Kontrolle über die Datenbanken, die Sie aktualisieren, aber ich würde Stimmen für eine einmalige Bereinigung dieser Verweise zu beseitigen das problem an der Quelle. In der pre-DataPump Tage (exp/imp), habe ich direkt geändert .dmp-Dateien ein paar mal ohne Probleme, aber noch nicht angeschaut, das neuere format. Offensichtlich sind Sie auf Ihre eigenen so weit wie Oracle ist besorgt, wenn Sie dies tun.
  • Punkt zu beachten: wir sind der Umgang mit einige legacy-Objekte, die bereinigt werden wir aber auch eine Besitzer-weniger-schema, IMPDP ist REMAP_SCHEMA noch nicht richtig mit Trigger. Und ja, ich habe auch "gepatcht" die DMP-Datei direkt zuordnen schema, aber ich finde, es gibt weniger Probleme, wenn eine DMP-Datei erstellen EXP anstatt EXPDP.
  • Mit der SQLFILE option zum generieren der SQL-Ausführung durch IMPDP wie vorgeschlagen von Oracle gibt auch Probleme bei der Verwendung von SQL*Plus ausgeführt werden: - Random cr/lf in der gespeicherten Prozedur Kommentare, gibt 'ORA-00933: SQL-Befehl nicht korrekt beendet" etc. Generierte SQL ist zu lang für die Aussicht gibt "SP2-0027: Eingabe ist zu lang (> 2499 Zeichen) - Zeile ignoriert".
InformationsquelleAutor VinceJS | 2010-01-26
Schreibe einen Kommentar