Comment importer Oracle (C) LOB dans un autre tablespace
-
20-09-2019 - |
Question
Je l'importation d'une décharge de base de données d'une installation Oracle 10g dans un autre. La source a une mise en page avec plusieurs tablespaces. La cible a un tablespace par défaut pour l'utilisateur que je importe la sauvegarde dans.
Tout fonctionne très bien, pour les tables ordinaires. Les tables sont relocalisés de leur tablespace d'origine au défaut de l'utilisateur. Le problème que je suis confronté, plusieurs tables contiennent CLOBs avec les directives de stockage explicites. Autrement dit, ils appellent leur tablespace de stockage. La commande diablotin semble être incapable de déplacer ces CLOBs à tablespace par défaut de l'utilisateur.
Y at-il une option de ligne de commande cachée pour la commande diablotin de déplacer le stockage CLOB au tablespace par défaut de l'utilisateur ou même un tablespace nommé?
Le message d'erreur ORACLE 959 ressemble à ceci:
IMP-00017: Nachfolgende Anweisung war wegen Oracle-Fehler 959 erfolglos: "CREATE TABLE "IF_MDE_DATA_OUT" ("OID" NUMBER(10, 0) NOT NULL ENABLE, "CLIEN" "T_OID" NUMBER(10, 0) NOT NULL ENABLE, "TS_CREATE" TIMESTAMP (6) NOT NULL EN" "ABLE, "TS_UPDATE" TIMESTAMP (6) NOT NULL ENABLE, "OP_CREATE" VARCHAR2(30) N" "OT NULL ENABLE, "OP_UPDATE" VARCHAR2(30) NOT NULL ENABLE, "IDENTIFIER" VARC" "HAR2(50), "TRANSFERTYPE" VARCHAR2(20) NOT NULL ENABLE, "STORE" NUMBER(10, 0" "), "DATUM" DATE, "STATE" NUMBER(3, 0) NOT NULL ENABLE, "DATA_OLD" LONG RAW," " "SUPPLIER" NUMBER(10, 0), "BUYER" NUMBER(10, 0), "GOODS_OUT_IDS" VARCHAR2(" "4000), "CUSTOM_FIELD" VARCHAR2(50), "DATA_ARCHIVE" BLOB, "DATA" BLOB) PCTF" "REE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 STORAGE(INITIAL 65536 FREELISTS 1" " FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "DATA32M" LOGGING NOCOMP" "RESS LOB ("DATA_ARCHIVE") STORE AS (TABLESPACE "DATA32M" ENABLE STORAGE IN" " ROW CHUNK 8192 PCTVERSION 10 NOCACHE LOGGING STORAGE(INITIAL 65536 FREELI" "STS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)) LOB ("DATA") STORE AS (TABLE" "SPACE "DATA32M" ENABLE STORAGE IN ROW CHUNK 8192 PCTVERSION 10 NOCACHE LOGG" "ING STORAGE(INITIAL 65536 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAUL" "T))" IMP-00003: ORACLE-Fehler 959 aufgetreten ORA-00959: Tablespace 'DATA32M' nicht vorhanden
La solution
Vous pouvez pré-créer la table en utilisant les paramètres de stockage dont vous avez besoin, et définir l'importation d'ignorer les erreurs.
Autres conseils
Comme Karl, je recommande Datadump mais utiliser REMAP_TABLESPACE
Si vous utilisez Data Pump Décharges, vous pouvez essayer l'option remap_schema pour corriger le tablespace.