我正在尝试使用remap_data参数(数据泵模式)导出数据,以隐藏一些数据。
这适用于“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
答案 0 :(得分:1)
文档没有提到将REMAP_DATA与LONG列一起使用的限制,但因为它们在其他方面受到限制 - 包括无法调用从SQL获取LONG参数的函数,后者获取ORA-00997 - 它是不允许的,这并不奇怪。
"Data Transformations with Oracle Data Pump"上有一份Oracle白皮书,其中包含第6页上的一节"使用REMAP_DATA时的特殊注意事项"
REMAP_DATA参数还有其他限制,无法解决。 ... 它也不能用于修改包含LONG或LONG RAW数据类型的列的表。
您收到的消息无益,并且有一个关于ORA-00907误导的错误(19157986)。没有将您的LONG列转换为CLOB,似乎不是一种解决方法
答案 1 :(得分:0)
由于没有解决方法,我必须以不同的方式导出,例如:
我将导出整个数据库并排除TABLE1
我将使用:
type="text/css"
然后我将导入生成的这两个转储文件。
这样就可以了。