我有一个Oracle(10.2.0.4)数据库表,其中一列由dbms_obfuscation_toolkit.DESEncrypt工具包加密。
我们的一些数据因使用其他密钥重新加密而搞砸了。
我想对此数据进行一些测试以尝试恢复它。因此,我想将数据从我们的实时系统复制到测试系统中。
我尝试过简单地从SQL Developer导出数据(以各种基于文本的格式),但加密数据的“二进制”特性似乎打破了文件格式。
我尝试了exp,但是报告了错误(虽然我不确定这是否与加密数据有关)。
如何将这一个表的数据从一个数据库复制到另一个数据库?
感谢。
导出表时出现的错误如下。我是从连接到远程数据库的本地计算机上执行此操作的:
c:\>exp <user>/<password>@<sid> FILE=export.dmp TABLES=(TABLE1)
Export: Release 11.1.0.6.0 - Production on Thu Oct 14 20:46:51 2010
Copyright (c) 1982, 2007, Oracle. All rights reserved.
Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit
Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Export done in WE8ISO8859P1 character set and AL16UTF16 NCHAR character set
server uses WE8ISO8859P15 character set (possible charset conversion)
About to export specified tables via Conventional Path ...
. . exporting table TABLE1
EXP-00008: ORACLE error 904 encountered
ORA-00904: "MAXSIZE": invalid identifier
答案 0 :(得分:1)
我会尝试使用数据库链接。如果你不能创建数据库链接,你可以尝试SQL * Plus的COPY命令,虽然我不确定它是否适用于加密列(看起来这个命令是deprecated in the newest releases )。
如果失败,将数据从Oracle导出/导入Oracle的最佳工具可能是Data Pump(包含在数据库中)。
答案 1 :(得分:1)
事实证明,与我们的live(unix)系统相比,我的Windows测试数据库的字符集编码略有不同 - WE8ISO8859P1 -v- WE8ISO8859P15。我使用说明here在我的测试数据库上进行了字符集转换,然后我就可以导入数据了。