笔记来源
今天的任务是:将线上老的数据库里的数据同步到本地现有的二期数据库中来,即二期项目需要线上数据进行最后测试,于是就有了今天这篇,线上生产数据库更新到本地数据库的笔记。
由于数据量较大,我尝试过将线上的表导出成一个个Excel或者insert语句来完成更新,但是老数据里存着clob结构的html标签,着实难办,于是在老前辈的提醒下建议我使用exp或expdp的方式进行导出。
文章目录
- 笔记来源
- 前言、
- 一、线上导出
- 1.新建对应空白文件夹(Linux换一个路径格式)
- 2.CMD窗口运行导出命令
- 二、线下导入
- 1.使用oracle自带的SQL plus进入管理员账号
- 2.创建新用户和表空间
- 3.cmd输入导入命令
- 三、线下同步
- 四、参考链接
- 五、总结
前言、
步骤总览
本文的操作环境是在Windows下进行,Linux下也有相同之处,把路径换成对应的即可。
如图:
一、线上导出
1.新建对应空白文件夹(Linux换一个路径格式)
2.CMD窗口运行导出命令
伪代码:exp 用户名/密码@数据库名 file=导出的文件存储路径
用户名和密码就是你想要导出的那个数据库的,数据库名我这里是ORCL
示例代码:exp hustjob/jinjiao@ORCL file=E:\db\0713dump\test.dmp
执行完会在文件夹中显示test.dmp,
再将dmp文件拷到本地有oracle的那台机器上。
二、线下导入
1.使用oracle自带的SQL plus进入管理员账号
这一步是在本地新建用户和表空间,所以需要管理员账号
2.创建新用户和表空间
新建用户
伪代码:create user 用户名 identified by 密码;
示例代码:create user TEMPJOB identified by jinjiao;
新建表空间
伪代码:create tablespace 表空间名 datafile ‘C:\表空间名.dbf’ size 1024M(大小建议比导出的dmp文件大) 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;
3.cmd输入导入命令
打开cmd
导出命令:
imp TEMPJOB/jinjiao@ORCL full=y file= C:\0714import\test.dmp ignore=y;
静待完成,导入成功会显示成功终止导入
,我这里忘记截图了。
这是导入成功的意思
你可以利用SQL工具去连接这个用户名进行查看导入的数据库了。
如果导入期间有报错,你根据报错代码
进行关键字搜索即能完成90%的问题解决。
三、线下同步
到这里,其实已经实现了从线上到线下的数据导入导出,如果还想进一步,将本地的这个刚导入的数据库里其中一些表数据同步到另外一个库中,
可以参考这篇博文,使用DBlink的方式进行同步(后边的定时任务步骤可以省略):
链接: 【笔记】Oracle不同数据库之间的表级别同步
四、参考链接
Oracle导出dmp文件(数据库备份、数据库导出、数据库转移)
oracle创建用户并授权
还有另外一种expdp的方式导入导出,这里没有试过
expdp/impdp 数据泵导入导出
五、总结
多学习多请教,多做笔记多睡觉。