记一次oracle数据库复制过程

记录一次自己数据库复制的过程(从公司测试环境复制到客户测试环境),主要是每次自己都会忘记,不如记录一下,方便自己以后找,因此,本篇内容不会很详细,主要是用于给我自己提醒,相对于一种记笔记的效果

cmd命令导入导出库

一开始,我是打算使用cmd输命令进行导入导出数据的,因为以前试过这样比较方便,也不会出现什么clob,blob数据录入时候的报错,省力省心,只是命令给忘记了,百度了一会儿,使用命令如下:

exp root/123456@127.0.0.1:1521/orcl file=d: est.dmp full=y

即:exp 用户名/密码@实例名 file=保存的dmp文件路径 full=y

然后不出所料的报了什么标识符无效的错误,当时没想到是oracle版本问题,然后又试了下以下命令

exp root/123456@127.0.0.1:1521/orcl owner=root file=d: est.dmp

结果还是报了个标识符无效,只是是另一个标识符,这时候反应过来,版本不匹配,我本地装的是oracle11,公司测试库装的是oracle10,随后百度半天,未果。。。。无奈放弃使用命令导出库,不过内容还是得补全一下,以下导入命令暂未测试,先记录下

imp root/123456@127.0.0.1:1521/orcl file=d: est.dmp full=y

即:imp 用户名/密码@实例名 file=导入的dmp文件路径 full=y

----------------------------------------------------------------------------2019-04-02改动---------------------------------------------------

今天正好又需要我挪数据库数据,我还是更为喜欢用cmd的exp命令来操作,之前是太过粗略了,正好这次记录下。

首先在执行exp命令之前,先进行如下操作:

1.执行如下sql,该sql执行完的结果将会是查询出一堆sql语句,例如“alter table APP_AUDIT allocate extent;”这一类的,其中的表名指的就是那些表内无数据内容的表,具体原理我不太懂,反正是将查出的结果sql再全部执行一遍,之后再进行exp命令导出,此时导出来的结果中会包含那些空内容的表,省略该步操作的,会导致导出的dmp中不包含无数据内容的表结构。

select 'alter table '|| table_name || ' allocate extent;'
from user_tables
where num_rows = 0 or num_rows is null;

2.执行如下exp命令,与此前的不同是原先用的full=y,此处用的owner指定用户对象,这样导出感觉快很多,原先我用full=y的模式导了十多分钟跑不完,估计是同一个服务器下其他的数据库有什么影响吧,我不太懂这块,反正用full=y的模式我手动终止了文件大小都有2m以上了,而指定owner的情况下导完没出错也就800k。

exp root/123456@127.0.0.1:1521/orcl file=d:	est.dmp owner=root

3.正常执行imp命令,这个上面写的没啥问题,就是再多个ignore=y,忽略一些错误,比如表已经存在啥的

imp root/123456@127.0.0.1:1521/orcl file=d:	est.dmp full=y ignore=y

PLSQL导入导出库

随后选择换用了PLSQL工具进行导入导出数据库,操作顺序如下:

第一步:登陆待导出用户,选择菜单栏tools——Export User Objects...——弹出的界面选择相应的user,然后选好output file即保存地址,点击Export,完成对象导出(此处导出内容包含结构、序列、触发器等,不包含表数据)

第二步:切换导入用户,选择菜单栏tools——Import Tables...——弹出界面选择SQL Inserts界面,仅修改下面的impor file路径为第一步导出的sql文件即可,点击import(完成表结构、序列、触发器的导入)

第三步:切换导出用户,选择菜单栏tools——Export Tables...——选择全部表,再排除包含clob和bolb字段的表,以及内容特别多的日志表,下面选择PL/SQL Developer,选择相应导出地址,点击Export,完成数据导出,导出的文件是pde文件

第四步:切换导入用户,选择菜单栏tools——Import Tables...——弹出界面选择PL/SQL Developer界面,import file路径选择第三步导出的pde文件即可,点击import,完成数据导入

最后再去处理那些第三步排除掉的那几个表,这时候就自己想办法了,我是使用navicat工具同步那几个表的数据的,因为平时我这个用的比较多,plsql反而用的比较少。

原文地址:https://www.cnblogs.com/lilh/p/10553100.html