这个过程呢,还是蛮艰难的。。。。

一、最初我使用的是Navicat中的数据传输来迁移的,虽说整个数据库的迁移没有成功,但传输指定的对象时还是传输成功了。所以还是记录一下吧。

1.前提连接好数据库。在指定的数据库上右击,选择“数据传输”。

2.在弹出的框内选择源库和目的库以及模式和你要传输的对象,如下图所示

3.点击开始便可传输

二、在利用Navicat只可传输对象,没办法传输模式等。但是如果要迁移整个数据库,肯定不仅只有迁移对象这么简单了。于是我选择了expdp和impdp导入导出的方法来迁移。

1.从源数据库中导出(我是远程连接数据库导出的,本机windows,远程linux)

expdp userid='sys/oraclepwd@210.77.71.23:1521/orcl as sysdba' directory=data_pump_dir dumpfile=234backup.dmp logfile=235back.log version=11.2.0.1.0 full=y

下面我具体介绍一下参数吧:

(1)userid主要是获取数据库的连接

sys=>用户名;oraclepwd=>密码;210.77.71.23=>远程服务器IP地址;1521=>端口号;orcl=>数据库名;as sysdba=>如果连接sys用户,需要写这个,如果是普通用户就不写了。(注:在windows下的dos命令下加as sysdba可以正常运行,但是你如果利用xshell远程连接到服务器上做导出,即使是sys用户也不要加as sysdba,运行时会报错。不加的话运行时会自己提示让你输入用户名和密码)。

(2)directory=data_pump_dir是存放导出文件的目录,你无需纠结到底存放到哪里了,因为在导出成功后,在末尾系统会告诉你导出的路径。

(3)dumpfile是导出的文件的名字,这个需要你自己指定。

(4)logfile是你导出的过程中运行的日志,会记录在这个文件里。如果报错,你可以在这个文件里面找对应的错误。

(5)version:这里的version不是源数据库的版本,而是目标数据库的版本

(6)full=y就是全部导出的意思。包括用户,表空间,表等。如果你想导出指定模式下的对象,你可以使用schemas参数来指定。(注:schemas参数和full参数不能同时用)

如果你导出指定的表,视图等,expdp也有相应的参数,你可以自己百度一下,这里就不做详细介绍了。

2.导入目标数据库(相对导出,导入就变得很麻烦了。我是直接利用xshell远程登录到服务器上做的导入)

注:

(1)做导入时,建议你尽量新建一个实例来导入。你如果在原来的实例中导入的话,如果有相同表名或模式等的话,它会先删除在重新创建。不过也有阻止导入时删除的方法,但是如果迁移整个数据库的话,会让你很觉得很混乱,除非你很了解源数据库和目标数据库的模式及其对象等。

(2)运行下面命令之前,你要现将你导出的dmp文件复制到目标数据库的directory目录下。有点悲剧的是,有可能你不知道这个目录在哪,这时你可以在目标数据库做一个小的导出,在末尾查看这个目录,将dmp文件复制到这个目录下即可。

impdp userid='sys/admin@127.0.0.1:1521/db11' directory=data_pump_dir dumpfile=234backup.dmp logfile=235back.log

REMAP_DATAFILE='/opt/oradata/db10/sdbp.dbf':'casnw/app/oradata/db11/sdbp.dbf','/opt/oradata/db10/sdbptemp01.dbf':'casnw/app/oradata/db11/sdbptemp01.dbf','/opt/oradata/db10/casnw01.dbf':'casnw/app/oradata/db11/casnw01.dbf','/opt/oradata/db10/casnwtemp01.dbf':'casnw/app/oradata/db11/casnwtemp01.dbf',

version=11.2.0.1.0 full=y  TABLE_EXISTS_ACTION=REPLACE

前面几个参数不做介绍了,和expdp中同样意思。下面我介绍一下新增的几个参数吧:

REMAP_DATAFILE:因为这个参数我也是被折腾的够呛的。经过日志查看导入的过程是这样的。先建立表空间,在通过表空间建立对应的用户,在建表,传输数据。传输视图,函数和存储过程,序列等。但是在建表空间的过程中就报错了,说找不到指定的数据文件的路径。因为源数据库中存数表空间数据文件的路径和目标数据库中的不同。这是就要用到这个参数了,用这个参数指定目标数据库建立表空间数据文件的路径,用来替换源数据库的路径。这样就可以创建表空间了。

TABLE_EXISTS_ACTION:这个参数共有四种值,在这里我一一介绍下。(1)skip:是如果已存在对象,则跳过并处理下一个对象;(2)append是为表增加数据;(3)truncate是截断表,然后为其增加新数据;(4)replace:如果遇到已存在的表,则先删除,再创建一个。并加数据。

以上导入方法,在导入存储过程时会报错,我在网上查看了下,说是要在导出前或导入后重新编译一下。存储过程未导入成功,于是最后我利用navicat导入存储过程成功了。

注:(1)要确保两个数据库的字符集相同,如果不同会报错。我的查了下两个数据库字符集相同,所以具体报什么错我也不太清楚。查看数据库字符集:

SELECT * FROM V$NLS_PARAMETERS WHERE PARAMETER IN ('NLS_CHARACTERSET', 'NLS_NCHAR_CHARACTERSET');

(2)因为整个数据库迁移过去,所以导致你的目标数据库的sys用户密码会变成源数据库sys用户的密码,你后期改过来即可

SQL>sqlplus /nolog

SQL>connect sys /as sysdba

SQL>alter user sys identified by admin;

oracle数据库的迁移(从一台服务器到另一个台服务器,从oracle 10g到oracle 11g)的更多相关文章

  1. [转帖]亚马逊彻底去掉 Oracle 数据库:迁移完成

    亚马逊彻底去掉 Oracle 数据库:迁移完成 https://mp.weixin.qq.com/s/KFonq8efDZ5K6x4YzIVbbg 云头条的信息挺不错的.. 2019 年 10 月 1 ...

  2. ABP框架EF6链接Oracle数据库手动迁移

    环境:VS2017 + ABP官方模板(不含Zero) +Oracle 11Gx64DB  + Oracle 11Gx32Client(PLSQL工具访问) 一.Abp项目的下载以及运行 1.创建ab ...

  3. ORACLE数据库_迁移(新机器,新存储)

    迁移: (10g 64老机器,老存储) ------>(11g 64新机器,新存储)注意要点:新老服务的时间,字符集,sid升级顺序:10.2.0.1------>10.2.0.4或10. ...

  4. Oracle数据库逻辑迁移之数据泵的注意事项

    环境:数据迁移,版本 11.2.0.4 -> 12.2.0.1 思考: 对于DBA而言,常用物理方式的迁移,物理迁移的优势不必多说,使用这种方式不必担心对象前后不一致的情况,而这往往也解决了不懂 ...

  5. oracle 数据库数据迁移解决方案

    大部分系统由于平台和版本的原因,做的是逻辑迁移,少部分做的是物理迁移,接下来把心得与大家分享一下   去年年底做了不少系统的数据迁移,大部分系统由于平台和版本的原因,做的是逻辑迁移,少部分做的是物理迁 ...

  6. Oracle 数据库基础学习 (二) 学习小例子:创建一个表,记录商品买卖的情况

      运行环境:Oracle database 11g + PL/SQL Developer ex: --创建一个表 create table plspl_test_product( --加入not n ...

  7. oracle 数据库开发面试题,当时笔试的时候一个没做出来,现附原题及答案

    1. ID123567810111215 表名tt,用sql找出ID列中不连续的ID,例如其中没有的4: --创建表及数据 CREATE TABLE tt(ID INTEGER); INSERT IN ...

  8. 针对Oracle数据库中SCOTT方案的多表查询的一个例子

    查询出每个员工的姓名.职位.月薪.所属部门名.月薪等级及其领导的姓名.职位.所属部门名.月薪等级.select e.ename 员工姓名,e.job 员工职位,e.sal 员工月薪,d.dname 员 ...

  9. c#在不安装Oracle客户端的情况下与服务器上的Oracle数据库交互

     概述:     C#通过使用ADO的方式在未安装Oracle数据库的前提下,客户端程序远程访问服务器,会出现:“System.Data.OracleClient 需要 Oracle 客户端软件 8. ...

随机推荐

  1. Wannafly挑战赛13 C:zzf的好矩阵(思维)

    题目描述 一个8 * 8的棋盘,第一个格子放1个麦穗,第二个格子放2个麦穗,第三个格子放4个麦穗……那么最后,共要放几个麦穗呢? zzf表示这个问题实在太简单,于是重新规定了游戏的规则. 初始的棋盘为 ...

  2. twitter oa

    字符串括号匹配有效性: 要求从直接return改成了返回yes or no.需要添加到list后break,然后每次循环之前,boolean要重新初始化. array index报错是什么鬼?算了,脑 ...

  3. ABAP开发需要养成的习惯—变量定义

    变量定义 Global variables are BAD 定义内表先在程序开头定义types,如 types: begin of ty_structure,         id type i,   ...

  4. Redis 与Spring-data-redis 整合后封装的工具类

    此工具类方法是使用了redis 与spring 整合后,才可以使用的工具类,将 spring-data-redis 一些我们开发中常用的方法进行了封装,方便我们日常开发中进行调用: package c ...

  5. Redis 非关系性数据库集群的搭建与常用方法

    redis 非关系型数据库,内存型数据库,现在大家都不陌生了,无论大中小型企业,都会将redis应用到自己的项目中,以此来减轻数据库的压力 安装步骤: 1.安装gcc 安装c语言的编译环境 yum i ...

  6. shell脚本计算斐波那契数列

    计算斐波那契数列 [1,1,2,3,5,8,,,,,] #!/bin/bash n=$ num=( ) i= while [[ $i -lt $n ]] do let num[$i]=num[$i-] ...

  7. Dockerfile里指定执行命令用ENTRYPOING和用CMD有何不同?

    结论:运行时机不太一样. RUN是在Build时运行的,先于CMD和ENTRYPOINT.Build完成了,RUN也运行完成后,再运行CMD或者ENTRYPOINT. ENTRYPOINT和CMD的不 ...

  8. @params、@PathVariabl和@RequestParam用法与区别

    [1]params params: 指定request中必须包含某些参数值是,才让该方法处理. @RequestMapping(value = "testParamsAndHeaders&q ...

  9. golang语言中os/exec包的学习与使用

    package main; import ( "os/exec" "fmt" "io/ioutil" "bytes" ) ...

  10. html5的离线缓存

    一个离线网络应用程序就是一个URL的列表,html,css,js,图片,或者其他类型的资源. 把这些资源,在本地缓存下来,当你尝试在没有网络连接时访问网络应用程序,你的浏览器将自动切换并使用本地代替. ...