【笔记】oracle线上生产数据库使用exp的方式更新到本地

笔记来源

今天的任务是:将线上老的数据库里的数据同步到本地现有的二期数据库中来,即二期项目需要线上数据进行最后测试,于是就有了今天这篇,线上生产数据库更新到本地数据库的笔记。

由于数据量较大,我尝试过将线上的表导出成一个个Excel或者insert语句来完成更新,但是老数据里存着clob结构的html标签,着实难办,于是在老前辈的提醒下建议我使用exp或expdp的方式进行导出。


文章目录

  • 笔记来源
  • 前言、
  • 一、线上导出
    • 1.新建对应空白文件夹(Linux换一个路径格式)
    • 2.CMD窗口运行导出命令
  • 二、线下导入
    • 1.使用oracle自带的SQL plus进入管理员账号
    • 2.创建新用户和表空间
      • `新建用户`
      • `新建表空间`-->Oracle数据库表空间多少合适?
      • `为新建的用户授权`
      • `指定用户该表空间不受限`
    • 3.cmd输入导入命令
      • `打开cmd`
  • 三、线下同步
  • 四、参考链接
  • 五、总结


前言、

步骤总览
本文的操作环境是在Windows下进行,Linux下也有相同之处,把路径换成对应的即可。

如图:
【笔记】oracle线上生产数据库使用exp的方式更新到本地_第1张图片

一、线上导出

1.新建对应空白文件夹(Linux换一个路径格式)

【笔记】oracle线上生产数据库使用exp的方式更新到本地_第2张图片

2.CMD窗口运行导出命令

伪代码:exp 用户名/密码@数据库名 file=导出的文件存储路径

用户名和密码就是你想要导出的那个数据库的,数据库名我这里是ORCL

示例代码:exp user/pwd@ORCL file=E:\db\0713dump\test.dmp

执行完会在文件夹中显示test.dmp,

再将dmp文件拷到本地有oracle的那台机器上。


二、线下导入

1.使用oracle自带的SQL plus进入管理员账号

这一步是在本地新建用户和表空间,所以需要管理员账号
【笔记】oracle线上生产数据库使用exp的方式更新到本地_第3张图片

2.创建新用户和表空间

新建用户

伪代码: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;

如图:
【笔记】oracle线上生产数据库使用exp的方式更新到本地_第4张图片

3.cmd输入导入命令

打开cmd

导出命令:
imp TEMPJOB/xxx@ORCL full=y file= C:\0714import\test.dmp ignore=y

这里你可能会遇到有一些用户或角色xxx不存在,无视即可,如果你还需要这些用户或角色,就记录下来再去创建-赋权
【笔记】oracle线上生产数据库使用exp的方式更新到本地_第5张图片

静待完成,导入成功会显示成功终止导入,我这里报错是因为有一些定时任务和之前冲突了
这是导入成功的意思
【笔记】oracle线上生产数据库使用exp的方式更新到本地_第6张图片

你可以利用SQL工具去连接这个用户名进行查看导入的数据库了。
【笔记】oracle线上生产数据库使用exp的方式更新到本地_第7张图片

如果导入期间有报错,你根据报错代码进行关键字搜索即能完成90%的问题解决。


三、线下同步

到这里,其实已经实现了从线上到线下的数据导入导出,如果还想进一步,将本地的这个刚导入的数据库里其中一些表数据同步到另外一个库中,

可以参考这篇博文,使用DBlink的方式进行同步(后边的定时任务步骤可以省略):

链接: 【笔记】Oracle不同数据库之间的表级别同步


四、参考链接

Oracle导出dmp文件(数据库备份、数据库导出、数据库转移)

oracle创建用户并授权

还有另外一种expdp的方式导入导出,这里没有试过

expdp/impdp 数据泵导入导出


五、总结

多学习多请教,多做笔记多睡觉。

你可能感兴趣的:(笔记,数据库,笔记,oracle)