oracle数据库的迁移(从一台服务器到另一个台服务器,从oracle 10g到oracle 11g)
这个过程呢,还是蛮艰难的。。。。
一、最初我使用的是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)的更多相关文章
- [转帖]亚马逊彻底去掉 Oracle 数据库:迁移完成
亚马逊彻底去掉 Oracle 数据库:迁移完成 https://mp.weixin.qq.com/s/KFonq8efDZ5K6x4YzIVbbg 云头条的信息挺不错的.. 2019 年 10 月 1 ...
- ABP框架EF6链接Oracle数据库手动迁移
环境:VS2017 + ABP官方模板(不含Zero) +Oracle 11Gx64DB + Oracle 11Gx32Client(PLSQL工具访问) 一.Abp项目的下载以及运行 1.创建ab ...
- ORACLE数据库_迁移(新机器,新存储)
迁移: (10g 64老机器,老存储) ------>(11g 64新机器,新存储)注意要点:新老服务的时间,字符集,sid升级顺序:10.2.0.1------>10.2.0.4或10. ...
- Oracle数据库逻辑迁移之数据泵的注意事项
环境:数据迁移,版本 11.2.0.4 -> 12.2.0.1 思考: 对于DBA而言,常用物理方式的迁移,物理迁移的优势不必多说,使用这种方式不必担心对象前后不一致的情况,而这往往也解决了不懂 ...
- oracle 数据库数据迁移解决方案
大部分系统由于平台和版本的原因,做的是逻辑迁移,少部分做的是物理迁移,接下来把心得与大家分享一下 去年年底做了不少系统的数据迁移,大部分系统由于平台和版本的原因,做的是逻辑迁移,少部分做的是物理迁 ...
- Oracle 数据库基础学习 (二) 学习小例子:创建一个表,记录商品买卖的情况
运行环境:Oracle database 11g + PL/SQL Developer ex: --创建一个表 create table plspl_test_product( --加入not n ...
- oracle 数据库开发面试题,当时笔试的时候一个没做出来,现附原题及答案
1. ID123567810111215 表名tt,用sql找出ID列中不连续的ID,例如其中没有的4: --创建表及数据 CREATE TABLE tt(ID INTEGER); INSERT IN ...
- 针对Oracle数据库中SCOTT方案的多表查询的一个例子
查询出每个员工的姓名.职位.月薪.所属部门名.月薪等级及其领导的姓名.职位.所属部门名.月薪等级.select e.ename 员工姓名,e.job 员工职位,e.sal 员工月薪,d.dname 员 ...
- c#在不安装Oracle客户端的情况下与服务器上的Oracle数据库交互
概述: C#通过使用ADO的方式在未安装Oracle数据库的前提下,客户端程序远程访问服务器,会出现:“System.Data.OracleClient 需要 Oracle 客户端软件 8. ...
随机推荐
- Wannafly挑战赛13 C:zzf的好矩阵(思维)
题目描述 一个8 * 8的棋盘,第一个格子放1个麦穗,第二个格子放2个麦穗,第三个格子放4个麦穗……那么最后,共要放几个麦穗呢? zzf表示这个问题实在太简单,于是重新规定了游戏的规则. 初始的棋盘为 ...
- twitter oa
字符串括号匹配有效性: 要求从直接return改成了返回yes or no.需要添加到list后break,然后每次循环之前,boolean要重新初始化. array index报错是什么鬼?算了,脑 ...
- ABAP开发需要养成的习惯—变量定义
变量定义 Global variables are BAD 定义内表先在程序开头定义types,如 types: begin of ty_structure, id type i, ...
- Redis 与Spring-data-redis 整合后封装的工具类
此工具类方法是使用了redis 与spring 整合后,才可以使用的工具类,将 spring-data-redis 一些我们开发中常用的方法进行了封装,方便我们日常开发中进行调用: package c ...
- Redis 非关系性数据库集群的搭建与常用方法
redis 非关系型数据库,内存型数据库,现在大家都不陌生了,无论大中小型企业,都会将redis应用到自己的项目中,以此来减轻数据库的压力 安装步骤: 1.安装gcc 安装c语言的编译环境 yum i ...
- shell脚本计算斐波那契数列
计算斐波那契数列 [1,1,2,3,5,8,,,,,] #!/bin/bash n=$ num=( ) i= while [[ $i -lt $n ]] do let num[$i]=num[$i-] ...
- Dockerfile里指定执行命令用ENTRYPOING和用CMD有何不同?
结论:运行时机不太一样. RUN是在Build时运行的,先于CMD和ENTRYPOINT.Build完成了,RUN也运行完成后,再运行CMD或者ENTRYPOINT. ENTRYPOINT和CMD的不 ...
- @params、@PathVariabl和@RequestParam用法与区别
[1]params params: 指定request中必须包含某些参数值是,才让该方法处理. @RequestMapping(value = "testParamsAndHeaders&q ...
- golang语言中os/exec包的学习与使用
package main; import ( "os/exec" "fmt" "io/ioutil" "bytes" ) ...
- html5的离线缓存
一个离线网络应用程序就是一个URL的列表,html,css,js,图片,或者其他类型的资源. 把这些资源,在本地缓存下来,当你尝试在没有网络连接时访问网络应用程序,你的浏览器将自动切换并使用本地代替. ...