Oracle 11g作为成熟的企业级关系型数据库,数据导入导出和事务管理是日常运维、数据迁移、开发测试过程中高频使用的核心能力,掌握相关操作能有效提升数据库管理效率,保障数据一致性。

Oracle 11g数据导入导出常用工具
Oracle 11g提供了多套原生的数据导入导出工具,适配不同的使用场景,用户可以根据数据量、操作复杂度选择合适的工具。
1. 传统导出导入工具exp/imp
exp是Oracle 11g的传统导出工具,用于将数据库对象和数据导出为二进制文件,imp则是对应的导入工具,适合小数据量的迁移场景。导出命令的基本语法如下:
-- 导出scott用户下的所有对象 exp scott/tiger@orcl file=/data/scott_exp.dmp owner=scott -- 导出指定表的数据 exp scott/tiger@orcl file=/data/emp_exp.dmp tables=emp,dept
对应导入命令的示例如下:
-- 将导出的文件导入到目标用户 imp scott/tiger@orcl file=/data/scott_exp.dmp full=y -- 导入指定表到目标用户 imp scott/tiger@orcl file=/data/emp_exp.dmp tables=emp fromuser=scott touser=test
2. 数据泵工具expdp/impdp
expdp和impdp是Oracle 11g推荐的数据泵工具,相比传统exp/imp性能更高,支持并行操作,适合大数据量的迁移场景。使用前需要先创建目录对象:
-- 创建目录对象,需要管理员权限 create directory dump_dir as '/data/dump'; -- 给scott用户授予目录读写权限 grant read,write on directory dump_dir to scott;
数据泵导出示例:
-- 导出scott用户所有数据,并行度2 expdp scott/tiger@orcl directory=dump_dir dumpfile=scott_dp.dmp schemas=scott parallel=2
数据泵导入示例:
-- 将导出的数据导入到test用户 impdp system/manager@orcl directory=dump_dir dumpfile=scott_dp.dmp remap_schema=scott:test
3. SQL*Loader工具
SQL*Loader用于将文本文件的数据批量加载到Oracle 11g表中,适合外部数据入库的场景。首先需要准备控制文件,示例如下:
-- 控制文件load_emp.ctl内容 load data infile '/data/emp.txt' into table emp fields terminated by ',' (empno,ename,job,mgr,hiredate date 'yyyy-mm-dd',sal,comm,deptno)
执行加载命令:
sqlldr scott/tiger@orcl control=/data/load_emp.ctl log=/data/load_emp.log
Oracle 11g事务管理基础
事务是Oracle 11g保证数据一致性的核心机制,遵循ACID特性:原子性、一致性、隔离性、持久性。
事务控制语句
Oracle 11g中常用的事务控制语句如下:
- COMMIT:提交事务,将事务中的所有修改永久保存到数据库
- ROLLBACK:回滚事务,撤销事务中所有未提交的修改
- SAVEPOINT:设置保存点,可以回滚到指定的保存点,不需要回滚整个事务
事务操作示例:
-- 开启事务(Oracle默认不需要显式开启,第一条DML语句自动开启) update emp set sal=sal+100 where deptno=10; -- 设置保存点 savepoint sp1; update emp set sal=sal+200 where deptno=20; -- 回滚到保存点,只撤销deptno=20的修改 rollback to sp1; -- 提交事务,保存deptno=10的修改 commit;
事务隔离级别
Oracle 11g默认的事务隔离级别是读已提交(Read Committed),支持的事务隔离级别如下:
| 隔离级别 | 说明 |
|---|---|
| 读已提交 | 只能读取其他事务已经提交的数据,避免脏读,是Oracle默认级别 |
| 串行化 | 事务串行执行,避免脏读、不可重复读、幻读,性能开销较大 |
| 只读 | 事务只能读取数据,不能进行修改操作 |
导入导出过程中的事务注意事项
在使用导入导出工具时,事务的处理直接影响数据的一致性,需要注意以下几点:
- 使用exp导出时,默认会开启一致性读,导出的数据是导出开始时间点的快照,保证导出数据的一致性,不需要额外加事务控制
- 使用imp导入时,默认每个表导入完成后会自动提交,如果需要保证多个表导入的原子性,可以加上
commit=n参数,所有表导入完成后再手动提交 - 数据泵expdp导出时同样保证一致性,impdp导入时可以通过
transform=disable_archive_logging:y减少日志产生,提升导入性能,但需要注意如果导入失败需要手动清理不完整数据 - SQL*Loader加载数据时,默认会在加载完成后自动提交,如果加载过程中出现错误,会回滚已经加载的数据,也可以通过
rows参数设置每多少行提交一次
实际使用中,如果需要在导入导出过程中保证多步操作的原子性,可以结合事务控制语句,在导入完成后检查数据完整性,再决定是否提交事务,避免不完整数据写入数据库。
Oracle_11g数据导入导出事务管理SQL*Loaderexpdp修改时间:2026-06-06 22:43:36