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

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

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

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

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

3.点击开始便可传输

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

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

expdp userid=‘sys/[email protected]: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/[email protected]: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;

时间: 2024-11-02 14:56:59

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

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

环境:VS2017 + ABP官方模板(不含Zero) +Oracle 11Gx64DB  + Oracle 11Gx32Client(PLSQL工具访问) 一.Abp项目的下载以及运行 1.创建abp项目.进入官网 https://aspnetboilerplate.com/下载项目模板.abp项目有两种架构,一种是单页面(angularjs),另一种是mvc的.点击创建按钮.入下图: 2.对下载的源码首先进行编译,让其自动下载Nuget项目依赖包,保证源码可以编译通过. 3.在WinRun2

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

大部分系统由于平台和版本的原因,做的是逻辑迁移,少部分做的是物理迁移,接下来把心得与大家分享一下 去年年底做了不少系统的数据迁移,大部分系统由于平台和版本的原因,做的是逻辑迁移,少部分做的是物理迁移,有一些心得体会,与大家分享. 首先说说迁移流程,在迁移之前,写好方案,特别是实施的方案步骤一定要写清楚,然后进行完整的测试.我们在迁移时,有的系统测试了四五次,通过测试来完善方案和流程. 针对物理迁移,也即通过RMAN备份来进行还原并应用归档的方式(这里不讨论通过dd方式进行的冷迁移),虽然注意的是

Linux oracle 数据库整体迁移或备份

expdp: sql的命令只执行一次,以后不用再执行 mkdir /home/oracle/backup chmod 777 /home/oracle/backup SQL> create directory EXPDIR as '/home/oracle/backup'; SQL> grant read,write on directory EXPDIR to DEEPRADAR; SQL> execute dbms_metadata_util.load_stylesheets; ex

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

1. ID123567810111215 表名tt,用sql找出ID列中不连续的ID,例如其中没有的4: --创建表及数据 CREATE TABLE tt(ID INTEGER); INSERT INTO tt SELECT 1 FROM dual UNION ALL SELECT 2 FROM dual UNION ALL SELECT 3 FROM dual UNION ALL SELECT 5 FROM dual UNION ALL SELECT 6 FROM dual UNION ALL

使用Oracle SQL Developer迁移MySQL至Oracle数据库

Oracle SQL Developer是Oracle官方出品的数据库管理工具.本文使用Oracle SQL Developer执行从MySQL迁移至Oracle数据库的操作. 2017年3月6日 操作步骤: 1.在Oracle数据库中创建移植资料档案库用户 资料档案库用户不是用来接收MySQL迁移数据的用户,而是进行数据迁移配置的用户. Oracle创建用户命令如下: create user migrater identified by migrater; alter user migrate

客户端连接远程服务器上的oracle数据库

其实在一个内网中,想要在客户端B远程连接服务器A上的oracle数据库是一件十分简单的事情. 1.首先在B中下载oracle数据库客户端和PLSQL软件并安装: 2.修改在oracle数据库客户端的安装目录(如D:\Instant Client\network\admin)下的tnsnames.ora文件.将下图中的1处改为服务器的IP地址:2.3处改为服务器oracle中的数据库名. 3.打开PLSQL软件,输入用户名和密码,并且选择上图中的数据库名,点击链接,就实现了远程连接服务器的功能.

Oracle 数据库 体系结构 (二):服务器结构

目录 前言 Oracle 内存结构 Oracle 进程结构 文章总结 前言 上一篇文章体现了 Oracle 数据库的一些基本结构和存储结构,这篇文章将会讲到Oracle的服务器结构,实际上就是主要讲实例的结构.需要把这些底层的结构了解,在生产环境或是对Oracle才会有一些了解. Oracle服务器是由Oracle实例+Oracle数据库组成. Oracle实例是有SGA+后台进程组成. 每一个Oracle实例都有自己的SGA和独立的Oracle进程集. Oracle 内存结构 以上图很好说明了

Oracle数据库(甲骨文)

Oracle数据库(甲骨文) 所属篇章:第二学年——Linux安全高级应用——第3章:部署Oracle数据库 大纲 1. 安装Oracle 11g数据库 1.1 前置条件的准备 1.2 Oracle 11g 安装过程 2. Oracle 11g的基本管理 2.1 启动.停止oracle数据库 2.2 数据库的逻辑备份 此次实验环境使用:Red Hat Enterprise Linux Server release 6.1 32位 系统配置的一般要求: 物理内存,不少于2GB 交换分区,为物理内存

如何手动的干净的删除linux上的ORACLE数据库

最近在用VMWARE虚拟机做ORACLE的数据库实验,我们都知道在WINDOWS上,我可以到添加删除程序里去自动删除已经安装的所有的应用程序,但是在LINUX上没有这个服务可以进行自动的删除,于是尝试了下手动的删除ORACLE数据库.具体步骤如下: 1,先查下ORACLE_SID,ORACLE_HOME.ORACLE_BASE的信息: [[email protected] dbs]$ echo $ORACLE_SID PROD [[email protected] dbs]$ echo $ORA