"Oracle 11g 数据迁移方案,通过 expdp 和 impdp 工具进行分区表的重映射导出与导入。本方案以SI01用户为例,详细阐述了如何在新表空间中重映射分区表,实现数据的完整迁移,并确保迁移后的数据一致性。" 在Oracle数据库环境中,数据迁移是常见的任务,尤其是对于包含分区表的大型数据库而言。Oracle提供了一套强大的数据泵工具(expdp 和 impdp)来协助这一过程。本方案以SI01用户为例,将指导你完成以下步骤: 1. **环境确认**:首先,确认数据库的基本设置,如NLS参数,通过查询`NLS_DATABASE_PARAMETERS`表中的`NLS_LANGUAGE`, `NLS_TERRITORY`, `NLS_CHARACTERSET`等字段,确保源数据库与目标数据库的字符集等配置相同。 2. **版本检查**:使用`v$version`视图检查数据库版本,确保源数据库和目标数据库的版本兼容。如果目标数据库版本高于源数据库,通常不会有大问题,但反向操作可能需要额外的注意事项。 3. **用户和表空间检查**: - 使用`USER_USERS`视图查询SI01用户的默认表空间。 - 通过`DBA_SEGMENTS`视图获取SI01用户的所有表空间分配情况,确保有足够的空间用于迁移。 - 通过`DBA_OBJECTS`视图检查SI01用户的所有对象状态,包括有效和无效的对象,以识别可能的问题。 4. **临时和回滚段检查**:确保源数据库的临时表空间和回滚段足够处理数据迁移过程,避免因空间不足导致的迁移失败。 5. **创建目标目录**:在目标服务器上创建用于存放导出文件的目录,并赋予Oracle用户适当的权限,例如在/u01/oracle/dump创建目录,并用`sqlplus`执行SQL命令创建数据库目录对象。 6. **使用expdp导出数据**:运行expdp命令,指定用户名、连接信息、导出目录、导出文件名和日志文件名,如`expdp SI01/kelantas@orcldirectory=dump_kakoudb dumpfile=kakou1.dmp logfile=expdp_kakou.log` 7. **分区表重映射**:在目标数据库中创建新的分区表结构,根据需要调整表空间。重映射可以是简单地改变分区的存储属性,也可以是创建新的分区策略。 8. **使用impdp导入数据**:使用impdp工具进行数据导入,同时利用`REMAP_TABLESPACE`选项重映射分区表到新的表空间。例如,`impdp SI01/kelantas@orcldirectory=dump_kakoudb dumpfile=kakou1.dmp remap_tablespace=old_tablespace:new_tablespace` 9. **数据一致性检查**:迁移完成后,对比源数据库和目标数据库的分区表,确保数据的一致性。可以使用SQL查询验证表的记录数、分区数量等信息。 10. **清理和优化**:删除不再需要的导出文件,检查并优化目标数据库的索引、触发器和约束,以确保最佳性能。 遵循这个详尽的步骤,你将能够成功地使用Oracle 11g的expdp和impdp工具进行分区表的数据迁移,并在新的表空间中重映射这些表,保证数据的一致性和完整性。
1、查看字符集,确保导出数据库和导入数据库的字符集完全相同,否则,请按照导出数据库重建导入的目标数据库。
数据库服务器字符集select * from nls_database_parameters,其来源于props$,是表示数据库的字符集。
NLS_LANGUAGE
AMERICAN
NLS_TERRITORY
AMERICA
NLS_CHARACTERSET
ZHS16GBK
NLS_NCHAR_CHARACTERSET
AL16UTF16
确保以上字段完全相同
2、查看数据库版本
select * from v$version;
确保导入库的版本号>=导出数据库的版本号
3、si01 查看当前用户的缺省表空间
SQL>select username,default_tablespace from user_users;
3.1、
提取用户使用的所有表空间
select distinct dbas.tablespace_name from dba_segments dbas where owner='SI01';
3.2、
评估用户使用的表空间大小,确保新建的导入库的表空间大小大于已使用的10G。
select owner,sum(bytes)/1024/1024 from dba_extents group by owner;
3.3
提取当前用户所有的有效对象数量和列表,如导入后,检查失效对象数量,如有需要,重新编译对象。
select owner,object_type,object_name,status from dba_objects do
where owner in ('SI01')
select count(1) from dba_objects do
where owner='SI01'
select count(1),do.object_type from dba_objects do
where owner in ('SI01') group by do.object_type
注意valid对象,invalid对象做导出前核对,导入后核对。
3.4
导出前加大导出库的temp表空间,和 undo 表空间,防止snapshot 过旧的错误。
4.2
在导出主机上创建导出目录,确保使用oracle用户
mkdir -p /u01/oracle/dump
chown oracle:oinstall /u01/oracle
在plsql或者sqlplus中执行命令
创建导出目录
create directory dump_kakoudb as '/u01/oracle/dump';
给用户赋权限使用
剩余13页未读,继续阅读
- 粉丝: 3
- 资源: 21
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C++标准程序库:权威指南
- Java解惑:奇数判断误区与改进方法
- C++编程必读:20种设计模式详解与实战
- LM3S8962微控制器数据手册
- 51单片机C语言实战教程:从入门到精通
- Spring3.0权威指南:JavaEE6实战
- Win32多线程程序设计详解
- Lucene2.9.1开发全攻略:从环境配置到索引创建
- 内存虚拟硬盘技术:提升电脑速度的秘密武器
- Java操作数据库:保存与显示图片到数据库及页面
- ISO14001:2004环境管理体系要求详解
- ShopExV4.8二次开发详解
- 企业形象与产品推广一站式网站建设技术方案揭秘
- Shopex二次开发:触发器与控制器重定向技术详解
- FPGA开发实战指南:创新设计与进阶技巧
- ShopExV4.8二次开发入门:解决升级问题与功能扩展