0

一部のデータを非表示にするために、remap_data パラメータ (datapump モード) を使用してデータをエクスポートしようとしています。

これは、「varchar2」または「number」列では正常に機能しますが、「long」列では失敗します。エクスポート ログ ファイルで、ORA-31693 エラー、次に ORA-00907 エラーを確認できます。

誰でもこれで私を助けてもらえますか? ありがとう

ここに私のコード例があります:

-- data creation
create table TABLE1 (
   COL1         LONG
)
tablespace TAB
/

INSERT INTO TABLE1 (COL1) VALUES ('data1');

COMMIT;

-- package creation
CREATE OR REPLACE PACKAGE hidelong AS
    FUNCTION change_long ( valuetest IN LONG ) RETURN LONG;
END hidelong;
/

CREATE OR REPLACE PACKAGE BODY hidelong AS
    LongX LONG := 'XXXXXXXXXX';

    FUNCTION change_long ( valuetest IN LONG ) RETURN LONG IS
    BEGIN
        RETURN LongX;
    END change_long;

END hidelong;
/

エクスポート コマンド:

expdp system/manager@DB1 schemas=TEST directory=datapump dumpfile=EXP.DMP LOGFILE=EXP.log remap_data=TEST.TABLE1.COL1:hidelong.change_long

EXP.log ファイルの内容:

Export: Release 11.2.0.1.0 - Production on Mer. Avr. 20 14:56:30 2016

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
;;; 
Connecté à : Oracle Database 11g Release 11.2.0.1.0 - 64bit Production
Démarrage de "SYSTEM"."SYS_EXPORT_SCHEMA_01" : system/********@DB1 schemas=TEST directory=datapump dumpfile=EXP.DMP LOGFILE=EXP.log remap_data=TEST.TABLE1.COL1:hidelong.change_long 
Estimation en cours à l'aide de la méthode BLOCKS ...
Traitement du type d'objet SCHEMA_EXPORT/TABLE/TABLE_DATA
Estimation totale à l'aide le la méthode BLOCKS : 64 KB
Traitement du type d'objet SCHEMA_EXPORT/USER
Traitement du type d'objet SCHEMA_EXPORT/SYSTEM_GRANT
Traitement du type d'objet SCHEMA_EXPORT/ROLE_GRANT
Traitement du type d'objet SCHEMA_EXPORT/DEFAULT_ROLE
Traitement du type d'objet SCHEMA_EXPORT/TABLESPACE_QUOTA
Traitement du type d'objet SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
Traitement du type d'objet SCHEMA_EXPORT/TABLE/TABLE
Traitement du type d'objet SCHEMA_EXPORT/PACKAGE/PACKAGE_SPEC
Traitement du type d'objet SCHEMA_EXPORT/PACKAGE/COMPILE_PACKAGE/PACKAGE_SPEC/ALTER_PACKAGE_SPEC
Traitement du type d'objet SCHEMA_EXPORT/PACKAGE/PACKAGE_BODY
ORA-31693: Echec du chargement/déchargement de l'objet de données de table "TEST"."TABLE1" ; l'objet est ignoré en raison de l'erreur :
ORA-00907: parenthèse de droite absente
Table maître "SYSTEM"."SYS_EXPORT_SCHEMA_01" chargée/déchargée avec succès
******************************************************************************
L'ensemble de fichiers de vidage de SYSTEM.SYS_EXPORT_SCHEMA_01 est :
  C:\EXP.DMP
Travail "SYSTEM"."SYS_EXPORT_SCHEMA_01" terminé avec 1 erreur(s) à 14:57:03
4

2 に答える 2

1

ドキュメントには LONG 列での REMAP_DATA の使用に関する制限については言及されていませんが、他の方法で制限されているため (ORA-00997 を取得する SQL から LONG パラメータを受け取る関数を呼び出すことができないなど)、まったく驚くべきことではありません。許可されていません。

「Oracle Data Pump を使用したデータ変換」に関する Oracle ホワイト ペーパーがあり、6 ページに「REMAP_DATA を使用する場合の特別な考慮事項」に関するセクションが含まれています。

REMAP_DATA パラメータには、回避できない制限が他にもあります。... また、LONG または LONG RAW データ型の列を含むテーブルの変更にも使用できません。

表示されるメッセージは役に立たず、誤解を招く ORA-00907 に関するバグ (19157986) があります。LONG 列を CLOB に変換する以外に、回避策はないようです

逸話的には、他のデータ型にも影響を与える可能性があります

于 2016-04-20T15:16:33.640 に答える