oracle数据库的迁移(从一台服务器到另一个台服务器,从oracle 10g到oracle 11g)

摘要:
在指定的数据库上右击,选择“数据传输”。因为源数据库中存数表空间数据文件的路径和目标数据库中的不同。

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

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

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

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

oracle数据库的迁移(从一台服务器到另一个台服务器,从oracle 10g到oracle 11g)第1张

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)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇IntelliJ IDEA Ultimate 6.2 版本免费试用期过期后如何破解etcd 启动错误下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

mysql的itcast笔记

1 课程回顾 自定义标签&编码实战                             1)自定义标签步骤:                                                1.1 编写标签处理器类,继承SimpleTagSupport类,覆盖doTag方法                             ...

import cx_Oracle ImportError: DLL load failed: 找不到指定的模块。

我们知道,Python使用cx_Oracle连接oracle的三个步骤是: 1、先安装cx-Oracle包,地址:https://pypi.org/project/cx-Oracle/5.3/#files 2、下载Oracle客户端instantclient-basic-win64-12.rar(我的电脑是64位,12是版本,还有11、10等),解压后将o...

Oracle审计表AUD$处理方法 (Z)

oracle 数据处理的方式: 1。查询 2。创建表空间 3。移动到新的tablespace 4。修改,编辑procedure 5。自动调度Job Oracle审计表AUD$处理方法 Oracle版本:11.2.0,其他版本要测试DBMS_AUDIT_MGMT能否成功 1. 查询表,然后truncate select count(*) from aud$;...

oracle imp导入数据到另一个表空间

http://blog.163.com/darlingchenlin@126/blog/static/7156283420100531431855/ 1、在第一个数据库导出数据:qlyg_xs_db_chinatelecom_0910191029.dmp(用户为QLYG_XS) 2、将qlyg_xs_db_chinatelecom_0910191029.d...

危化品速查APP--Android Project

开发环境 Android studio 2.3.1 功能描述 集成多种查询方式,查看本地数据库中危险化学品的信息; 按照中文拼音和英文首字母,对化学品进行查询; 按照UN号或者CAS号查询相应的化学品; 按照化学品特性描述的关键词检索化学品; 查看产品手册以及使用说明文档; Github 地址 git@github.com:guoyaohua/Chem...

数据库分库分表的类型和特点

从维度来说分成两种,一种是垂直,一种是水平。垂直切分:基于表或字段划分,表结构不同。我们有单库的分表,也有多库的分库。水平切分:基于数据划分,表结构相同,数据不同,也有同库的水平切分和多库的切分。   1.1 垂直切分 垂直分表有两种,一种是单库的,一种是多库的。 1.1.1 单库垂直分表 单库分表,比如:商户信息表,拆分成基本信息表,联系方式表,结算信...