Oracle Database Error:关于EXP导出时的ORA-01555的错误模拟与排除(不完整版本)

By | 2014年10月12日

在开始本文档之前,你需要有一套位于Linux系统之上的Oracle Database系统。
在本环境中,它是位于RHEL5.8 64bit上的Oracle Database 11g单实例(Single Instance)架构。

在正式开始EXP之前,需要准备环境,以便作为EXP导出的对象。
一、准备数据:
首先,创建一个独立的表空间:ADAMHUAN

如上所示,我们创建了一个3G的表空间:ADAMHUAN。
它具有一个数据文件,位于:
/u01/app/oracle/oradata/orcl11g/adamhuan01.dbf

此时,文件系统的使用情况是:

如上所示,/u01挂载点还有5.6G的剩余空间,足够导出的DMP文件的存放。

创建一个全新的SCHEMA:ADAMHUAN,该SCHEMA会作为EXP的导出对象。

为SCHEMA:ADAMHUAN,添加数据。
添加数据前:

开始添加:
a) 普通的数据表

b) 大对象:程序
创建数据表

创建导入脚本,并导入:

c) 大对象:图片
创建数据表:

创建目录对象:

导入脚本(批量导入某个路径下的文件到数据库的BLOB):

导入前:

开始导入:

导入后:

至此,数据的准备,初步完成。

二、导出阶段:导出信息确认
先查看我们要导出的数据量。

上述“SUM”函数的最后显示单位为:MB
文件系统中,通过大对象导入的源文件的大小:

1.4G*1024=1433.6MB
跟上述SQL(select segment_type,count(*),sum(bytes)/1024/1024 from dba_segments …)查出来的差不多。

当前,数据库表空间的使用量:

可以看到,ADAMHUAN表空间的使用量为:47.18 %

当前操作系统的挂载点使用量:

可以看到,根分区(“/”)以及“/u01”的剩余容量(Avail)都是充足的。

要导出的对象:

三、导出阶段:开始导出
1.创建导出路径

2.环境变量:NLS_LANG
查询数据库实例的字符集设置

通过上述信息,可以得到NLS_LANG的设置:
NLS_LANG=AMERICAN_AMERICA.WE8MSWIN1252

3.关于导出
(在该阶段,关注UNDO表空间的变化)
第一种导出:

上述导出的过程中,没有用户连入数据库操作。
导出顺利完成。

第二种导出:
导出过程中,有用户连入数据库做操作。

上述导出可以看到,导出的adamhuan.adamhuan_software表只有5条记录。
事实上,在操作这条导出的时候,另一个会话中,通过:
sh /script/insert_into_oracle_blob_data.sh
同一时间向数据库的adamhuan.adamhuan_software表中添加记录。
在该场景中,UNDO表空间的使用率有明显的上升,如图所示:
exp_yes_UserOperation_yes_UNDO_usage
### 当前数据库中与UNDO有关的参数

最后,导出成功的时候,事实上,数据表中已经有十条记录了:

导出的5条记录仅为发起exp时的adamhuan.adamhuan_software状态。

虽然导出成功,但是EXP过程中遇到的快照太旧的错误没有模拟出来。
这是很可惜的。
还需要更多的思考,以及对基础的巩固。
——————————————————
Ending。

打赏

说点什么

avatar

This site uses Akismet to reduce spam. Learn how your comment data is processed.

  Subscribe  
提醒