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

cmd命令导入导出库

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

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

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

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

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

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

imp root/123456@127.0.0.1:1521/orcl file=d:\test.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:\test.dmp owner=root

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

imp root/123456@127.0.0.1:1521/orcl file=d:\test.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反而用的比较少。

记一次oracle数据库复制过程的更多相关文章

  1. Navicat工具Oracle数据库复制 or 备用、恢复功能(评论都在谈论需要教)

    GXPT它是一个分布式系统,该系统包括一个临时许可系统.基本系统.教学评价体系.考试系统,每个系统都有自己的oracle数据库.统,而评教系统的正常须要借助于权限系统和基础系统,详细的业务这里就不多解 ...

  2. oracle数据库安装过程中的疑惑—该记录是本人以前写在微博上的文章

    转行IT初学者关于oracle数据库整理第一次安装数据库的时候都是按照操作步骤一步一步进行安装,并没有对操作步骤产生过怀疑或者为什么要这么进行操作?2017年12月8日再次阅读安装操作说明书的时候有了 ...

  3. Oracle 数据库启动过程

    一 启动数据库 Oracle启动过程涉及几种模式,这些模式涉及不同的文件,每个状态下数据库做不同的事情,同时这些模式适用于不同的维护需求,主要的模式有三种:NOMOUNT.MOUNT.OPEN. 1 ...

  4. 记一次Oracle数据库迁移部署

    --20141230部署脚本(按照时间顺序从上往下) --命令行,导出要部署的数据库数据(无分号) --expdp RMB3/test123@orcl3 SCHEMAS=RMB3 directory= ...

  5. 【记坑】Oracle数据库Date类型查询结果多出".0"的解决方法

    oracle设置数据库某张表的字段类型为date,数据库存值为 2019-11-25 18:51:47 格式,但是从数据库查询出来之后格式为 String stopTime = map.get(&qu ...

  6. 记一次 oracle 数据库在宕机后的恢复

    系统:redhat 6.6 oracle版本: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production 问题描述: ...

  7. 记一次mysql数据库失而复得过程

    背景: 由于是自己买的vps搭建的博客,用的是军哥的一键lnmp源码编译安装的,文章也就几篇,对备份并不太重视,想着等服务器快到期的时候备份一下不就行了. 后来在该服务器上测试lnmp分别编译编译安装 ...

  8. Oracle数据库插入过程中特殊符号

    -- 问题描述:(插入数据中有特殊符号)数据插入后乱码. -- 背景:客户提供部分Excel表格数据要求导入数据库.由于考虑到数据量不大所以粗略在Excel中进行了sql处理(在数据前后添加sql及对 ...

  9. Oracle DB 复制数据库

    • 列出创建副本数据库的目的 • 选择用于复制数据库的方法 • 使用RMAN 复制数据库 • 使用RMAN 备份复制数据库 • 基于正在运行的实例复制数据库 使用副本数据库 • 使用副本数据库可执行以 ...

随机推荐

  1. Vue系列之 => html-webpack-plugin的两个基本作用

    安装 npm i html-webpack-plugin -D webpack.config.js const path = require('path'); //启用热更新的第二步,导入webpac ...

  2. html5 css练习浮动布局

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  3. C# 正则表达式提取字符串中括号里的值

    version = Regex.Replace(str, @"(.*\()(.*)(\).*)", "$2"); //小括号() Regex rgx = new ...

  4. Qt3D 5.9 and future

    2017-05 http://blog.qt.io/blog/2017/05/24/qt3d/ Qt3D future 5.9 Use Qt Quick or QPainter to render i ...

  5. 用AOP记录操作日志,并写进数据库。

    先用AOP注解 1 package com.vlandc.oss.apigate.log.aspect; import java.util.Map; import java.util.Optional ...

  6. C#返回字符串的字节长度,一个中文算两个字符的代码

    如下代码段是关于C#返回字符串的字节长度,一个中文算两个字符的代码. public static int GetLength(string str) { if (str.Length == 0) re ...

  7. oracle 事务 与 提交

    Oracle事务 一般事务(DML)即数据修改(增.删.改)的事务事务会将所有在事务中被修改的数据行加上锁(行级锁),来阻止其它人(会话)同时对这些数据的修改操作.当事务被提交或回滚后,这些数据才会被 ...

  8. html5中视频播放问题总结

    html5中视频播放问题总结 文章 1.问题一 框架? 加个标签就OK! <video id="video1" src="/video1.mp4" con ...

  9. 安卓使用TextView实现图片加文字说明

    背景:通讯录列表,每个单元格显示头像+名字,且头像显示圆形 方案一:ImageView + TextView 方案二:只用TextView + drawableLeft 属性 <TextView ...

  10. PHP共享内存yac操作类

    http://www.laruence.com/2013/03/18/2846.html   鸟哥介绍 https://www.cnblogs.com/willamwang/p/8918377.htm ...