前言

最近接触到一个项目,类似于搭建一个全新的环境吧。

因为是SpringBoot工程(是一个文件夹拷贝过去修改配置就能启动),所以就只涉及到Oracle和Redis环境的搭建和复制了。

搭建环境遇到的坑比较少,主要的时间大部分花在了数据库的复制粘贴上面。

正文

需求分析

要求:把A库数据以及数据结构用户名、表空间、索引空间原封不动转到B库。

一般来说DBA不完全了解业务,不能判断每一张表的作用,应该没有遗漏地无区分拷贝结构和数据。

这个行为的专业术语叫做:数据库的备份与恢复

几种数据库恢复

其实查找资料我们不难发现Oracle已经给我们提供了好几套解决方案:

1.依赖sql-developer(开发者工具)的数据库复制功能。

2.物理备份

3.逻辑备份

在此期间我们会接触到一些基础知识:

1.数据库文件分为:重做日志文件 、归档日志文件---开启影响性能

2.表空间和用户的关系

3.数据库权限(DBA、RESOURCE、CONNECT)是什么以及他们如何被分配

物理备份

物理备份说人话就是复制粘贴,因此这是需要操作系统账号的。其又分为:

1.热备份(归档模式、联机备份)

备份:把数据库置为归档模式(需要关闭数据库服务)

备份表空间

恢复:对当前日志进行归档

切换日志

关闭数据

删除数据文件并重启..............(太多了不说了自己看吧)

2.冷备份(不用归档模式、脱机备份)

备份:关闭数据库服务

复制需要的文件到其他磁盘。(操作系统层面的复制)

恢复:直接粘贴备份文件到磁盘内。

基础语法

查询日志模式:archive log list ;

修改日志模式:alter database achivelog;

alter system set log_archive_start=true scope=spfile;

立即关闭服务:shutdown immediate;

开启服务:startup mount;

总之记住一个单词:Archivelog---mode归档模式

这两种方法都涉及一件我们非常忌讳的事情:停止服务或者影响服务性能

因此不采纳

逻辑备份(导入导出)

逻辑备份也很好理解就是基于工具的导入导出方式,甲骨文提供了两种工具:

1.EXP/IMP工具

既可以在可以客户端使用,也可以在服务端使用。

2.EXPDP/IMPDP工具

oracle10g以后采用的数据泵技术的导入导出工具。

网上说只能在服务端使用,其实不全对,但是要有操作系统账号是肯定的。

这种方式很符合我们的需求,因此我们采用以上两种方法,加上sql-developer,一共是三种方法。

工欲善其事、必先利其器

这里就出现一件令人困惑、苦恼的事情了,这些工具去哪里下载?

1.SqlDeveloper在Oracle中文网的开发者工具里下载。

2.EXP/IMP工具、EXPDP/IMPDP工具在对应版本的客户端(Client)工具里面。通过

https://www.oracle.com/database/technologies/112010-win64soft.html点击Client的那一项就可以进行下载。

具体的安装教程网上都有,不赘述。但是WIN10的用户需要注意一点,安装包

client\stage\cvu下面有两个xml文件要修改,为了好看我放到文章最后。

之后就可以在其安装目录\product\11.2.0\client_1\BIN里面找到这四个exe文件(exp.exe/expdp.exe/imp.exe/impdp.exe)。

这时我们就可以开始进行工作了。

操作流程

首先,找数据库托管方,或者自己创建表空间、表索引、以及表空间管理员用户(最好与原库一致,我接下来要说的也是一致的情况)

模拟原库,我们在A库里创建几张表(一张正常表、一张带主键表、两张父子表、一张空表)。

CREATE TABLE T_DEMO_NORMAL (

ID NUMBER NOT NULL,

NAME VARCHAR2(40) NOT NULL,

VALID_FLAG VARCHAR2(1)

)

TABLESPACE SPACE_DAT;

CREATE TABLE T_DEMO_NORMAL_PRIMARYKEY (

ID NUMBER NOT NULL,

NAME VARCHAR2(40) NOT NULL,

VALID_FLAG VARCHAR2(1) ,

primary key(ID)

)

TABLESPACE SPACE_DAT;

CREATE TABLE T_DEMO_FATHER (

ID NUMBER NOT NULL,

NAME VARCHAR2(40) NOT NULL,

VALID_FLAG VARCHAR2(1) ,

primary key(ID)

)

TABLESPACE SPACE_DAT;

ALTER TABLE T_DEMO_FATHER ADD CONSTRAINT uk_001 UNIQUE (ID);

CREATE TABLE T_DEMO_SON (

ID NUMBER NOT NULL,

FATHER_ID NUMBER,

NAME VARCHAR2(40) ,

VALID_FLAG VARCHAR2(1) ,

CONSTRAINT fk_pro FOREIGN KEY(FATHER_ID)

REFERENCES T_DEMO_FATHER (ID)

ON DELETE CASCADE

)

TABLESPACE SPACE_DAT;

CREATE TABLE T_DEMO_EMPTY (

ID NUMBER NOT NULL,

NAME VARCHAR2(40) NOT NULL,

VALID_FLAG VARCHAR2(1) ,

)

开始表演

第一次尝试

首先我们使用SqlDeveloper的数据库复制工具。

点击这个位置

出现这个怎么选.png

根据这个大哥https://www.cnblogs.com/sucretan2010/p/11406568.html的原话是:先复制表和数据(选择性复制表数据),再复制视图,触发器序列等。以免触发器序列等对复制数据时造成干扰,导致复制失败。

当然我试过很多次尝试但是在实际生产库里总会产生一些莫名其妙的索引,有人说他是无害的,可是我不相信。

奇奇怪怪的索引

因此我决定删库跑路使用其他的方法再试试看。

删库跑路

想要删库跑路还真不容易下面是语法,小朋友学会了别乱玩。

1.得到删除全部表的语句:

select 'drop table '||table_name||';' from user_tables;

2.复制粘贴执行语句

3.看看索引删干净了没all_indexes全部索引。

4.清空回收站:

purge recyclebin;

第二次尝试

这次我们使用EXP/IMP进行试验

先执行

EXP 用户名/密码@IP:端口(一般是1523)/表空间名 file=c:\EXP.dmp

等执行完了,再执行

IMP 用户名/密码@IP:端口(一般是1523)/表空间名 file=c:\EXP.dmp full=y;

如果是生产库,可能会花上一天时间。

发现一个问题,

EXP-0003

这导致一些空表无法被导出,也就无从导入。

你也可以插入一条垃圾数据再导出就是了,不过个人觉得太麻烦了。

第三次尝试

最后,我直接要了一下A库的操作系统账号。决心使用数据泵技术来重振朝纲(改变局面)。

1.直接以软件拥有者身份进行最高身份登陆:sqlplus / as sysdba;

2.建一个文件夹/home/ora11g/IMPDIR ,诸如此类的。mkdir

3.把文件夹路径纳入数据库的管理中:CREATE DIRECTORY DMP_DIR AS '/home/ora11g/IMPDIR ';

4.把这个文件夹权限交给你自己GRANT READ,WRITE ON DIRECTORY DMP_DIR TO AUTOBEAR;

5.执行(你可以选择在本地操作或者远程操作,都无所谓,最后生产的dmp反正在操作系统里)

再三确认一下路径:SELECT * FROM DBA_DIRECTORIES

WINDOWS下执行的:

expdp 用户名/密码@IP:端口/服务名 directory=DMP_DIR dumpfile=exp.dmp logfile=expdp.log

impdp 用户名/密码@IP:端口/服务名 DIRECTORY=DMP_DIR DUMPFILE=exp.dmp

LINUX下执行的:

expdp 用户名/密码 directory=DMP_DIR dumpfile=exp.dmp logfile=expdp.log

impdp 用户名/密码 directory=DMP_DIR dumpfile=exp.dmp

这里的目录DMP_DIR只能绑定数据库操作系统端的。

结论

通过三次试验,推荐使用第三种,数据泵技术天下无敌。

资料区

cvu_prereq.xml

oracle.client_InstantClient.xml

oracle数据库 复制粘贴,Oracle数据库复制相关推荐

  1. (最简单)安装vmware-tools实现复制粘贴和文件复制粘贴

    现在已经推出开源的open-vm-tools工具了,无需手动从安装包安装vmware-tools. 一.如果你以前安装过VMware-tools,需要使用下面的命令彻底删除它. sudo vmware ...

  2. Chrome浏览器——复制网址+标题以及如何复制粘贴网页不能复制粘贴的内容

    1.复制网址+标题 这个功能在智慧浏览器上是默认存在的,所以常常将网址复制粘贴到智慧浏览器上,再右键进行复制粘贴,相对麻烦. Chrome浏览器有一款插件TabCopy可以处理,具体的安装不详细,这里 ...

  3. 电脑连续复制粘贴,随意复制,随意粘贴,需要打开剪贴板功能。

    电脑连续复制粘贴,随意粘贴,需要打开剪贴板功能. 以win10为例,连续复制粘贴步骤如下所示: 1.在电脑桌面点击windows图标. 2.点击齿轮状图标,进入设置. 3.在windows设置中,点击 ...

  4. c语言程序复制粘贴成一行,复制粘贴,你只用Ctrl+C、Ctrl+V来实现?说明你已经Out了...

    Excel是我们日常工作中经常用到的一个软件,其重要性不言而喻,在Excel中,经常也会用到复制粘贴,那么,Excel中的复制粘贴只能用Ctrl+C和Ctrl+V吗? 一.Ctrl+D:快速填充上一行 ...

  5. 计算机复制粘贴教案,《复制与粘贴图形》教学设计

    <复制与粘贴图形>教学设计 <复制与粘贴图形>是苏科版<小学信息技术(3年级)>第23课的内容,属于基础模块"信息的加工与表达"的内容,是&qu ...

  6. php 鼠标 复制粘贴,特殊符号复制粘贴的方法

    特殊符号复制粘贴的方法:1.用鼠标勾选想选中的特殊符号,并点击鼠标右键进行复制粘贴:2.用鼠标勾选符号,利用快捷键[CTRL+C]和[CTRL+V]进行赋值粘贴. 特殊符号,平常确实少见.然而利用复制 ...

  7. linux vim yny复制粘贴,vi/vim复制粘贴命令

    1. 选定文本块.使用v进入可视模式,移动光标键选定内容. 2.复制的命令是y,即yank(提起) ,常用的命令如下: y      在使用v模式选定了某一块的时候,复制选定块到缓冲区用: yy    ...

  8. html重复复制粘贴,CAD使用复制粘贴的时候弹出“忽略块的重复定义”怎么解决?...

    本教程分享有关pasteclip图文教程内容,希望对您有用 CAD使用复制粘贴的时候弹出"忽略块的重复定义"怎么解决?很多用户都在CAD中复制粘贴时遭遇过忽略块的重复定义(&quo ...

  9. html重复复制粘贴,cad使用复制粘贴的时候弹出忽略块的重复定义怎么解决

    cad是计算机辅助设计,它的作用是利用计算机及其图形设备帮助设计人员进行设计工作.可是有用户在操作cad使用复制粘贴的时候弹出"忽略块的重复定义",那么遇到cad使用复制粘贴的时候 ...

  10. oracle命令窗口粘贴,Oracle数据库中的Copy命令

    SQL*Plus的Copy命令 在数据表间复制数据是Oracle DBA经常面对的任务之一,Oracle为这一任务提供了多种解决方案,SQL*Plus Copy 命令便是其中之一.SQL*Plus C ...

最新文章

  1. HDU 4540 威威猫系列故事――打地鼠(DP)
  2. ASP实现单条件和多条件组合查询的实例
  3. 这家公司向苹果索赔百亿!一场鏖战八年的专利之争仍未结束
  4. 【ubuntu-version】 几种常见工具查看版本的命令
  5. php鼠标悬停显示图片,鼠标滑过出现预览的大图提示效果
  6. vue 循环tabs 标签页 组件_Vue render函数实战--实现tabs选项卡组件
  7. 提高.net网站的性能
  8. iOS UICollectionView示例教程
  9. 2.5.1 命令与参数
  10. 偶然翻开旧日记本,发现了好多的情诗!!!!
  11. 大华监控相机RTSP视频流
  12. Mac中在Matlab中安装Mosek
  13. ArcGIS投影坐标系xy转地理坐标系经纬度
  14. DBA-doing business as
  15. 利用数据集在水晶报表中显示图像的 .NET 程序教程
  16. gps wifi信号测试软件,搜星+WiFi+EMI 导航平板信号性能横评
  17. forensics - make virtual machine with E01[ewf] files on OSX ———— 电子取证 MAC OS平台仿真
  18. 计算机组成原理-I/O系统
  19. 注册国外邮箱须知(ZIP CODE)
  20. linux基础知识总结(上)

热门文章

  1. lisp方格网法计算土方量_方格网法计算土方工程量
  2. POJ-1436Horizontally Visible Segments
  3. Vue项目:IE11中地址栏直接改变路由页面不跳转bug
  4. Python之使用代理服务器访问网页
  5. CF949D Curfew solution
  6. choco 代理强制失效方法
  7. Java编程工具(10-1):idea moudle没有蓝色的小方块
  8. Xcode7 网络请求报错:The resource could not be loaded be
  9. git生成/添加SSH公钥
  10. Ouroboros for Mac(AE路径生长MG动画脚本)