问题:
1、 使用 oracle dump方式导出的数据在导入的时候不能随意选择一张表的数据进行导入;
一般业务的表的数量都有 1000左右,在出现由于某张表数据异常导致的故障时,用 dump文件进行恢复基本不可行或者很费事;
2、 表存在外键约束和触发器,使用 oracle dump import方式导入表的时候不能非常简单
的禁止触发器和外键,导致大量错误产生,导入的表的数据不全,部分表数据没有导入;
3、 当修改了某些表的数据后需要将这些表的数据恢复到测试环境搭建时的数据, import
不能将这些表的数据清空后重新导入。
4、 当修改了某些表的字段后需要将这些表的数据恢复到测试环境搭建时的数据, import
不能将这些表重建后重新导入。
解决:
PL/SQL Developer导入导出工具
PL/SQL Developer位于 PLSQL DEV工具的 “Tools”菜单下的 “Export tables„”和 “Import
tables„”下,可以进行数据的导出和导入。
导出功能介绍
Where clause:
使导出操作支持where条件,比如你只需要导出每张表的10000条记录,可以在输入框里输入
“rownum < 10001”。
Compress file:
选中后支持导出文件的压缩,节省存储空间,但是压缩会占用多余的时间。
Include storage:
导出的文件中包含建表信息,如果需要在导入的时候能支持建表操作,需要选中该项。
导入功能介绍
Drop tables:
支持在导入数据前先删除表,选择该项后,默认选择 “Create tables”选项,并且 “Truncate
tables”和 “Delete table”操作变成灰色不可用状态。
Create tables:
支持在导入数据前先创建表,比如我们已将建好了用户,这个时候需要导入表而之前又没有执
行建表脚本的时候,可以选中此项。
Truncate tables:
支持在导入数据前先清空表数据,想恢复表数据到建测试环境的时候可以使用这个选项,该选
项和 “Delete tables”互斥。
Delete tables:
支持在导入数据前删除表数据,这个选项目前还没有发现比较特殊的使用意义,该选项和
“Truncate tables”互斥。该选项的导入速度大大慢于 “Truncate tables”,一般使用 “Truncate tables”。
如何解决导出 clob 和 blob 类型数据报错的问题
当表字段中含有 clob和 blob类型数据时,使用 PL/SQL Developer导出会报 stream read error
的错误,导出操作终止,说明 PL/SQL Developer方式导出不支持这种类型, oracle export方式可以支持这种类型。
由于需要导出的表很多, PL/SQL在导出前都要对需要导出的表进行分析,通常都会花费十几分
钟的时间,然而由于某张表存在 clob和 blob类型数据时就会异常终止,那之前的操作时间就会浪费,为了导出所有表需要将导出的表进行标记,只导出没有 clob和 blob类型数据的表。我们通常的做法是在导出表的时候用 ctrl或者 shift按键进行手工选择,通过导出的日志记录不能导出的表,然后手工将这些表反选出待导出的表。但是这样操作费时费力,需要通过不停反复的操作,才能知道哪些表不能导出。
如何使用 oracle 系统视图 all_tab_columns 和 PL/SQL 在导出表的时候提供的
Object selection 功能快速导出不包含 clob 和 blob 的表数据。
1、 使用下面的 sql语句拼出 Object selection的文件内容。
--不包含 clob和 blob的表
select distinct('TABLE "'||a.OWNER ||'"."'||a.TABLE_NAME||'"') from sys.all_tab_columns a
where a.OWNER = '用户名'
and a.TABLE_NAME not in (select t.TABLE_NAME from sys.all_tab_columns t where t.OWNER =
'用户名' and t.DATA_TYPE in ('CLOB','BLOB'))
2、 按照上面的语句的执行结果生成 Object selection的文件(后缀是 .osf),文件的内容
如下:
PL/SQL Developer Object Selection File
1
TABLE "用户名"."表名1"
TABLE "用户名"."表名2"
TABLE "用户名"."表名3"
3、 在导出表功能的表选择框里单击右键选择 “Load Object selection”,选择上一步制
作的文件 ,完成表的选择。
4、选择合适的参数,进行导出操作。 用 oracle export方式导出包含 clob和 blob的数据。
本文为张军原创文章,转载无需和我联系,但请注明来自张军的军军小站,个人博客http://www.zhangjunbk.com