不同表空间导入数据
来源:互联网 发布:图片 js 点击放大 wap 编辑:程序博客网 时间:2024/05/13 16:00
随着业务的不断拓展,我们经常需要对系统进行调整,比如:存储系统升级、服务器升级、平台的迁移、数据库版本升级等等,这些情况我们都需要借助数据迁移工作来完成。
在迁移过程中,我们经常会遇到一些很难解决的问题。因为,如果是在相同的操作系统平台、或相同的数据库平台之间做数据库的迁移,会有较多解决方案能够实现;但是,如果在异构环境下,做操作系统的升级或变更、数据库的升级、存储设备的升级等等,都大幅度地提高了迁移的复杂程度。
数据库迁移要求:
1、要求业务系统可用时间最大化,最好支持在线迁移
2、数据零丢失
3、快速导出、导入
4、完整的备份方案
5、严格的控制
环境概况:
源库:
IP:
系统:windows xp
数据库版本:oracle 10g 32bit
用户:ecims_aio/ecims_aio
表空间:user
目标库:
IP:
系统:linux centos6.6
数据库版本:oracle 11g 64bit
用户:ecims_aio/ecims_aio
表空间:ecimsaio_data(数据表空间)、ecimsaio_index_data(索引表空间)
数据库迁移工具选择:
源数据库跟目标数据库表空间不一致所以选用expdp/inpdp导出/导入工具,通过数据磅的 remap_tablespace=source_tbs:target_tbs
需求:
异构平台,不同版本数据库数据文件迁移。要求windows 2003 oracle 10.2.0 数据文件迁移到 centos 6.6 oracle 11.2.0。
需求分析:
不同版本,不同平台,可选择的方案很多,考虑到数据量不是很大(大约1G),建议使用exp/imp或者expdp/impdp工具。因为两个数据库之间的用户所属表空间不同,所以建议使用expdp/impdp工具,可以使用remap_tablespace参数转换表空间。
迁移步骤:
源库数据导出、备份
1、以sysdba登录到源服务器创建directory对象
create directory mydir as 'D:/mydir';
2、赋予用户ECIMS_AIO读写权限
grant write,read on directory mydir to ECIMS_AIO;
3、使用数据泵导出数据
expdp ECIMS_AIO/ECIMS_AIO directory=mydir dumpfile=ecims_20160226_expdp.dump logfile=ecims_20160226_expdp.log ;
目标数据库数据导入
1、在目标数据端创建directory对象:
create directory mydir as '/home/oracle/mydir';
2、赋予用户ECIMS_AIO读写权限 :
grant write,read on directory mydir to ECIMS_AIO;
3、在目标数据库创建用户及表空间:
删除用户ECIMS_AIO下所有对象
drop user ECIMS_AIO cascade;
删除表空间
drop tablespace ECIMSAIO_DATA including contents and datafiles;
删除表空间
drop tablespace ECIMSAIO_INDEX_DATA including contents and datafiles;
创建用户
CREATE USER ECIMS_AIO IDENTIFIED BY ECIMS_AIO ACCOUNT UNLOCK;
授予权限,因为要创建表空间所以授予dba权限
GRANT create SESSION,RESOURCE,DBA TO ECIMS_AIO; --
默认ECIMS_AIO用户默认表空间
CONN ECIMS_AIO/ECIMS_AIOCREATE TABLESPACE ECIMSAIO_DATA DATAFILE '+DATA/jhdb/datafile/ECIMSAIO_DATA.DBF' SIZE 500M AUTOEXTEND ON NEXT 50M;
存放索引
alter user ECIMS_AIO default tablespace ECIMSAIO_DATA;CREATE TABLESPACE ECIMSAIO_INDEX_DATA DATAFILE '+DATA/jhdb/datafile/ECIMSAIO_INDEX_DATA.DBF' SIZE 500M AUTOEXTEND ON NEXT 50M;
- 把目标数据库导出的数据文件上传到mydir下面
使用ftp工具把导出的数据上传到制定的地方 - 使用数据泵导入数据并转化表空间,将user表空间的数据转换到ecimsaio_data
impdp ECIMS_AIO/ECIMS_AIO directory=aiodir dumpfile=ECIMS_20160226_EXP.DUMP logfile= ECIMS_20160226_impdp.log parallel=4 cluster=n remap_tablespace=users: ECIMSAIO_DATA;
- 重建索引文件:
重建索引
select index_name,table_owner,table_name from dba_ind_columns where index_owner='ECIMS_AIO';select ' alter index '||index_name||' rebuild tablespace ECIMSAIO_INDEX_DATA;' From dba_ind_columns where index_owner='ECIMS_AIO'
alter index STEEL_RES_PRIMARY_KEY rebuild tablespace ECIMSAIO_INDEX_DATA;
“
错误案例:
EXP-00091: Exporting questionable statistics.导出错误的统计信息,查询官方文档可知是 exp工具和db数据库字符信息不一致导致。我们可以在使用exp工具导出的时候修改下nls_lang信息 set NLS_LANG=AMERICA_AMERICA.AL32UTF8 (win)设置跟db数据库字符集一致。
EXP-00106: Invalid Database Link Passwords.无效的数据库链接密码,查询官方文档可知是 exp工具跟db数据库版本不一致导致,严格上讲客户端的版本要比db数据库版本要高,解决方案是升级exp工具版本。
- 不同表空间导入数据
- 不同表空间导入数据
- oracle导入dmp数据,不同表空间
- 如何把数据导入不同的表空间?
- 把数据导入不同的表空间(exp,imp)
- 如何把数据导入不同的表空间?
- 如何把数据导入不同的表空间
- 把数据导入不同的表空间(exp,imp)
- 如何把数据导入不同的表空间?
- 如何把数据导入不同的表空间?
- oracle如何把数据导入不同的表空间
- 如何把数据导入不同的表空间?
- 如何把数据导入不同的表空间?
- oracle 数据导入不同的表空间-dmp文件
- Oracle 把数据导入不同的表空间
- oracle通过impdp导入不同表用户、不同表空间的数据
- oracle通过impdp导入不同表用户、不同表空间的数据
- oracle通过impdp导入不同表用户、不同表空间的数据
- 利用Annotation和Aop实现日志记录
- java虚拟机垃圾回收执行流程
- GitChat·DevOps | 如何结合 Scrum 和 Kanban
- linux版wps-office安装缺少的字体
- 并查集基本操作
- 不同表空间导入数据
- VB三种基本结构
- Excel2010条件格式结合公式和格式刷使用存在严重bug
- 北大告别过去,走向未来
- 面试利器(二)-------插入排序(直接插入排序和希尔排序(Shell排序))
- 模板渲染和参数传递.
- Centos 6.5搭建Hadoop-2.7.3分布式集群
- zookeeper伪分布安装
- ConcurrentHashMap详解