Oracle迁移数据表空间

php中文网
发布: 2016-06-07 17:31:35
原创
1354人浏览过

为了一些大量基础数据的测试案例,IMP导入数据速度太慢,则使用下面方法可以对当前Oracle数据库中个某个表空间数据快速备份恢复;

为了一些大量基础数据的测试案例,imp导入数据速度太慢,则使用下面方法可以对当前oracle数据库中个某个表空间数据快速备份恢复;下面的方法也适合两个数据库(必须相同操作系统,相同数据库版本,相同字符集)之间的数据表空间移植。

实验环境:
source:192.168.1.249    tablespace: anenjoy 
Target:192.168.1.248      tablespace:anenjoy02
步骤一:先确保你oracle运行的平台支持transport tablespace (基本上都是支持的,学习下查看平台的命令)
SQL> select * from v$transportable_platform; (查看当前oracle下支持的平台)
SQL>  select platform_name from v$database;(查看当前oracle 运行的平台)
SQL> select d.platform_name,endian_format from v$transportable_platform tp , v$database d where tp.platform_name=d.platform_name; (查看oracle运行的平台是否在oracle 支持平台下,返回数据则为true)

步骤二:在source 上创建一个数据表空间和数据文件
SQL> create tablespace anenjoy datafile '/opt/oracle/oradata/test05/test05.dbf' size 50m extent management local autoallocate;
Tablespace created.
基于表空间创建表
SQL> create table test (name varchar2(15),work varchar2(10))  tablespace anenjoy; (两个字段 name和work)
Table created.
    插入一些数据,
insert into test (name,work) values ('frank','IT');
SQL> select * from test;

NAME                          WORK
------------------------------ --------------------
frank                          IT
alex                          caiwu
leon                          yanfa

步骤三:Pick a Self-Contained Set of Tablespaces (查看是不是自含,也就是说需要传输的表空间是独立的)
execute dbms_tts.transport_set_check('anenjoy',true);
如果你有多个表空间的话呢,用逗号隔开如:’anenjoy01,anenjoy02‘
输出日志:
PL/SQL procedure successfully completed.
执行命令,,检查下是否存在不能传输的表空间
SQL> select * from transport_set_violations;  如果有返回行,则需要处理后才可以传输

步骤四:生成传输字符集
首先要先将源表空间置于只读状态,以防表空间数据的修改
SQL> alter tablespace anenjoy read only;
接下来就是数据的导出步骤了(重要)

执行导入操作。导入操作应该与导出操作相对应,若是以exp导出的,需要以imp导入,若是以expdp导出的,需要以impdp导入,参考使用官方的expdp和impdp
Host expdp system  dumpfile=expdat.dmp directory=data_pump_dir transport_tablespaces='anenjoy' logfile=tts_export.log;
中间会提示输入system的密码,如果你忘记这个密码的话呢,可以参考上篇文章,学习下如何更改密码
提示点一:这里使用的是system的用户,如果你使用的是你自己定义的用户,那么你需要在target 主机上创建此用户
提示点二:命令行directory 参数data_pump_dir的路径是在/opt/oracle/admin/test05/dpdump下,test05是数据库名,这个目录在oracle database安装好之后就会创建的
可以通过SQL命令查看data_pump_dir 路径
select * from dba_directories;
日志输出为:
Job "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01" successfully completed at 13:36:16

步骤五:copy数据到target 主机上
Transport both the datafiles and the export (dump) file of the tablespaces to a place that is accessible to the destination database.
scp test05.dbf  oracle@192.168.1.248:/opt/oracle/oradata/test02/ (到target database 下)
scp -r dpdump/ oracle@192.168.1.248:/home/oracle/ (这个是export files)
然后呢,再将dpdump的文件copy到target 相应的data_pump_dir下,也就是你/opt/oracle/admin/ORALE_SID/dpdump

Marvel数据统计后台管理模板
Marvel数据统计后台管理模板

Marvel数据统计后台管理模板,响应式设计,兼容PC端和手机移动端,全体模板,包括仪表盘、UI元素、图表、选项卡和面板、响应表、窗体页、空白页等多个后台管理页面。

Marvel数据统计后台管理模板 150
查看详情 Marvel数据统计后台管理模板

步骤六:数据导入
impdp system dumpfile=expdat.dmp directory=data_pump_dir transport_datafiles='/opt/oracle/oradata/test02/test05.dbf' logfile=tts_import.log
正常的日志输出:
Job "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01" successfully completed at 00:41:33
之后,更改源和目标主机上的表空间属性
Alter tablespace anenjoy read write; (两台server上都去执行下)
验证阶段:
在target上,通过SQL 命令查看是否同步过来表空间anenjoy
SQL> select * from v$tablespace;

      TS# NAME  INCLUD BIGFIL FLASHB ENCRYP
6 ANENJOY  YES NOYES
查看表空间anenjoy下的表数据
SQL> select * from test;

NAME                          WORK
------------------------------ --------------------
frank                          IT
alex                          caiwu
leon                          yanfa

现在就可以向表test中插入数据,也可以再target anenjoy 表空间下创建新的数据表和索引

相关阅读:

[Oracle]表空间之间的数据迁移记录 

linux

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号