今天的任务是:将线上老的数据库里的数据同步到本地现有的二期数据库中来,即二期项目需要线上数据进行最后测试,于是就有了今天这篇,线上生产数据库更新到本地数据库的笔记。
由于数据量较大,我尝试过将线上的表导出成一个个Excel或者insert语句来完成更新,但是老数据里存着clob结构的html标签,着实难办,于是在老前辈的提醒下建议我使用exp或expdp的方式进行导出。
步骤总览
本文的操作环境是在Windows下进行,Linux下也有相同之处,把路径换成对应的即可。
伪代码:exp 用户名/密码@数据库名 file=导出的文件存储路径
用户名和密码就是你想要导出的那个数据库的,数据库名我这里是ORCL
示例代码:exp user/pwd@ORCL file=E:\db\0713dump\test.dmp
执行完会在文件夹中显示test.dmp,
再将dmp文件拷到本地有oracle的那台机器上。
新建用户
伪代码:create user 用户名 identified by 密码;
示例代码:create user TEMPJOB identified by xxx;
新建表空间
–>Oracle数据库表空间多少合适?这取决于数据库的大小和使用情况。一般来说,建议将表空间大小设置为数据库大小的1/4到1/2。
伪代码:create tablespace 表空间名 datafile ‘C:\表空间名.dbf’ size 1024M autoextend on;
示例代码:create tablespace HK_TEMPJOB datafile ‘C:\HK_TEMPJOB.dbf’ size 1024M autoextend on;
执行时可能会卡一下,是在分配空间,请耐心等待
为新建的用户授权
伪代码:grant connect, resource,IMP_FULL_DATABASE to 用户名;
示例代码:grant connect, resource,IMP_FULL_DATABASE to TEMPJOB;
指定用户该表空间不受限
伪代码:alter user 用户名 quota unlimited on 表空间;
示例代码:alter user TEMPJOB quota unlimited on HK_TEMPJOB;
打开cmd
导出命令:
imp TEMPJOB/xxx@ORCL full=y file= C:\0714import\test.dmp ignore=y
这里你可能会遇到有一些用户或角色xxx不存在,无视即可,如果你还需要这些用户或角色,就记录下来再去创建-赋权
静待完成,导入成功会显示成功终止导入
,我这里报错是因为有一些定时任务和之前冲突了
这是导入成功的意思
你可以利用SQL工具去连接这个用户名进行查看导入的数据库了。
如果导入期间有报错,你根据报错代码
进行关键字搜索即能完成90%的问题解决。
到这里,其实已经实现了从线上到线下的数据导入导出,如果还想进一步,将本地的这个刚导入的数据库里其中一些表数据同步到另外一个库中,
可以参考这篇博文,使用DBlink的方式进行同步(后边的定时任务步骤可以省略):
链接: 【笔记】Oracle不同数据库之间的表级别同步
Oracle导出dmp文件(数据库备份、数据库导出、数据库转移)
oracle创建用户并授权
还有另外一种expdp的方式导入导出,这里没有试过
expdp/impdp 数据泵导入导出
多学习多请教,多做笔记多睡觉。