基于PLSQL的数据库备份方法及如何解决导出clob和blob类型数据报错的问题
基于PL/SQL的数据库备份方法
PL/SQL Developer是Oracle 数据库中用于导入或导出数据库的主要工具,本文主要介绍了利用PL/SQL Developer导入和导出数据库的过程,并对导入或导出时的一些注意事项进行了说明,接下来我们就一一介绍。
导出步骤:
1、tools ->export user object 选择选项,导出.sql 文件。
2、tools ->export tables-> Oracle Export 选择选项导出.dmp 文件。
导入步骤:
注:导入之前最好把以前的表删除,当然导入另外数据库除外。
1、tools->import tables->SQL Inserts 导入.sql 文件。
2、tools->import talbes->Oracle Import然后再导入dmp 文件。
一些说明:
Tools->Export User Objects导出的是建表语句(包括存储结构)。PS :这种方式只能导出属于这个用户的表,其他用户的表不能导出,建议用命令行(exp,imp)导出。
Tools->Export Tables里面包含三种导出方式,三种方式都能导出表结构以及数据,如下:
• Oracle Export
• Sql Insert
• pl/sql developer
第一种是导出为.dmp 的文件格式,.dmp 文件是二进制的,可以跨平台,还能包含权限,效率也很不错,用得最广 。
第二种是导出为.sql 文件的,可用文本编辑器查看,通用性比较好,但效率不如第一种,适合小数据量导入导出。尤其注意的是表中不能有大字段 (blob,clob,long ),如果有,会提示不能导出(提示如下: table contains one or more LONG columns cannot export in sql format,user Pl/sql developer format instead)。
第三种是导出为.pde 格式的,.pde 为Pl/sql developer 自有的文件格式,只能用Pl/sql developer 自己导入导出,不能用编辑器查看。
PS :只有"Oracle Export" 方式导出再导入后,表结构和索引结构没有发生变化,另两种方式都改变了索引类型。
--------------------------------------------------------------------------------------------------------------------------------------------------------------
第1章 导入数据的苦恼
最近,一直再为搭建测试数据库的事情烦恼,主要碰到如下困难:
1、使用oracle dump 方式导出的数据在导入的时候不能随意选择一张表的数据进行导入;一般业务的表的数量都有1000左右,在出现由于某张表数据异常导致的故障时,用dump 文件进行恢复基本不可行或者很费事;
2、表存在外键约束和触发器,使用oracle dump import 方式导入表的时候不能非常简单的禁止触发器和外键,导致大量错误产生,导入的表的数据不全,部分表数据没有导入;
3、当修改了某些表的数据后需要将这些表的数据恢复到测试环境搭建时的数据,import 不能将这些表的数据清空后重新导入。
4、当修改了某些表的字段后需要将这些表的数据恢复到测试环境搭建时的数据,import 不能将这些表重建后重新导入。

那么有没有一个工具能够解决上面我们这位工程师的苦恼呢?
第2章 PL/SQL Developer导入导出工具
PL/SQL Developer位于PLSQL DEV工具的“Tools ”菜单下的“Export tables„”和“Import tables „”下,可以进行数据的导出和导入。
2.1 导出功能介绍
Where clause: 使导出操作支持where 条件,比如你只需要导出每张表的10000条记录,可以在输入框里输入“rownum < 10001”。
Compress file: 选中后支持导出文件的压缩,节省存储空间,但是压缩会占用多余的时间。
Include storage: 导出的文件中包含建表信息,如果需要在导入的时候能支持建表操作,需要选中该项。
2.2 导入功能介绍

Drop tables:支持在导入数据前先删除表,选择该项后,默认选择“Create tables”选项,并且“Truncate tables”和“Delete table”操作变成灰色不可用状态。
Create tables :支持在导入数据前先创建表,比如我们已将建好了用户,这个时候需要导入表而之前又没有执行建表脚本的时候,可以选中此项。
Truncate tables :支持在导入数据前先清空表数据,想恢复表数据到建测试环境的时候可以使用这个选项,该选项和“Delete tables”互斥。
Delete tables :支持在导入数据前删除表数据,这个选项目前还没有发现比较特殊的使用意义,该选项和“Truncate tables”互斥。该选项的导入速度大大慢于“Truncate tables”,一般使用“Truncate tables”。
2.3 如何解决导出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 = 'ICDPUB' and a.TABLE_NAME not in (select t.TABLE_NAME from sys.all_tab_columns t where t.OWNER = 'ICDPUB' and t.DATA_TYPE in ('CLOB','BLOB'))
注意:上面的sql 语句里的ICDPUB 是用户名
2、按照上面的语句的执行结果生成Object selection的文件(后缀是.osf ),文件的内容如下:
PL/SQL Developer Object Selection File 1
TABLE "ICDPUB"."ACTIVE_ALARMS"
TABLE "ICDPUB"."ALLAPPOINT"
TABLE "ICDPUB"."ALLOPTIONVIEW"
TABLE "ICDPUB"."ALLOTCONFIG"
TABLE "ICDPUB"."ALLPAPERAUTHVIEW"
TABLE "ICDPUB"."ALLPAPERVIEW"
TABLE "ICDPUB"."ALLQUESTIONVIEW"
3、在导出表功能的表选择框里单击右键选择“Load Object selection”,选择上一步制作的文件, 完成表的选择。
4、选择合适的参数,进行导出操作。
5、用oracle export方式导出包含clob 和blob 的数据。
基于PLSQL的数据库备份方法及如何解决导出clob和blob类型数据报错的问题的更多相关文章
- 最简便的MySql数据库备份方法
http://www.kankanews.com/ICkengine/archives/194.shtml 使用MYSQL进行数据库备份,又很正规的数据库备份方法,同其他的数据库服务器有相同的概念,但 ...
- SQL Server数据库备份方法
数据库备份,是在数据丢失的情况下,能及时恢复重要数据,防止数据丢失的一种重要手段.一个合理的数据库备份方案,应该能够在数据丢失时,有效地恢复重要数据,同时需要考虑技术实现难度和有效地利用资源. 数据库 ...
- linux系统下mySQL数据库 备份方法和脚本
数据库备份1.创建个备份存储目录mkdir /root/backup/2.以下内容写到dbbackup.sh #!/bin/bash cd /data/db_backup/mysqldump -uad ...
- MS-SQL数据库备份方法
一.手动备份 打开企业管理器 --> 右键点击需要备份的数据库 --> 所有任务 --> 备份数据库 或者: 查询分析器: use master backup database 数 ...
- sqlserver数据库备份方法
须事先准备一个工具curl,把它放在c盘.然后,在数据库所在服务器安装7z.最后把这2个存储过程执行,在sqlserver的代理中新建作业,即可实现备份操作. --备份指定数据库到本地和远程指定位置( ...
- 数据库:ubantu下MySQL数据库备份方法
1.编辑/etc/crontab文件设定定时任务,在制定时间执行backup_databases.sh vi /etc/crontab # /etc/crontab: system-wide cron ...
- 使用mybatis操作mysql数据库SUM方法返回NULL解决
使用SQL语句用函数SUM叠加的时候,默认查询没有值的情况下返回的是NULL,而实际可能我们要用的是返回0 解决: SELECT SUM(total) FROM test_table 改成: SE ...
- Mysql数据库每天定时执行备份方法
此数据库备份方法是简单的数据库备份方法,就是从Mysql的数据文件下,将数据库文件拷贝到指定的文件夹目录下 1.创建txt文件,添加脚本 net stop mysql xcopy D:\MySql\D ...
- mysql 数据库备份和恢复
物理备份对比逻辑备份 物理备份是指直接复制包含数据的文件夹和文件.这种类型的备份适用于大数据量且非常重要,遇到问题需要快速回复的数据库. 逻辑备份保存能够代表数据库信息的逻辑结构(CREATE DAT ...
随机推荐
- js获取上传图片的尺寸大小
当上传图片时,有时候需要控制下上传图片的尺寸大小,需要给个提示 //获取图片的尺寸,控制尺寸大小 var reader = new FileReader(), img = new Image(); / ...
- 我的MAC可能在设置环境变量的时候设置错了,现在整个MAC的vi,ls等命令都执行不了了。
1,在命令行中输入export PATH=/usr/bin:/usr/sbin:/bin:/sbin:/usr/X11R6/bin这样可以保证命令行命令暂时可以使用.命令执行完之后先不要关闭终端或者c ...
- [转]解决Docker容器时间与主机不一致问题
原文: https://blog.csdn.net/luckystar689/article/details/76572046 https://stackoverflow.com/questions/ ...
- Warning: isMounted(...) is deprecated in plain JavaScript React classes.
1.错误提示 警告:isMounted(…)在纯 react.js 类中被弃用. 2.原因解析 出现此错误提示的原因是源代码内有已被React舍弃的代码,但此并不影响程序运行. 在index.js 内 ...
- 替代 Navigator 组件
前言:最近在研究 react-native 时,突然发现 Navigator 组件被 react-native 包 抛弃了.现总结了几种替代方法. 方法一:引入 react-native-deprec ...
- 【BIEE】BIEE 11g BI Publisher报表开发实例
环境准备 JDK下载地址:直接去百度软件中心下载即可 BIPublisher下载地址:http://pan.baidu.com/s/1bpk03Jh 本例子中以win7 32位操作系统为例 1.安装已 ...
- PIVOT 和 UPIVOT 的使用(行转列)
PIVOT 通过将表达式某一列中的唯一值转换为输出中的多个列来旋转表值表达式,并在必要时对最终输出中所需的任何其余列值执行聚合.UNPIVOT 与 PIVOT 执行相反的操作,将表值表达式的列转换为列 ...
- DelphiXe 中静态数组TByteArray和动态数组TBytes /array of byte 的区别
在应用中发现静态数组和动态数组是有区别的: procedure TForm1.Button1Click(Sender: TObject);var RsltStream: TMemoryStream; ...
- JAVA、Android与Cordova环境搭建
一些坑(如Manager.exe闪退的问题)请查看:https://www.cnblogs.com/CyLee/p/9911195.html 官方网址: # Cordova http://cordov ...
- Atitit..jdk java 各版本新特性 1.0 1.1 1.2 1.3 1.4 1.5(5.0) 1.6(6.0) 7.0 8.0 9.0 attilax 大总结
Atitit..jdk java 各版本新特性 1.0 1.1 1.2 1.3 1.4 1.5(5.0) 1.6(6.0) 7.0 8.0 9.0 attilax 大总结 1.1. Java的编年史2 ...