SQL迁移到ORACLE实例
nohup ./command.sh > output 2>&1 &
SQL迁移到ORACLE实例
日常运维中,我们经常会有数据库不同类型的迁移,比较多的就是从sql server迁移到oracle 的情况,前一阶段正好有一个类似的项目进行,我将其中的一些注意事项记录下来。
一、迁移的方案
之前也进行过sql -> oracle的迁移,使用过sql server的dts也单独自己写过sqlloader脚本,但是两种方案都不是很满意,dts经常出错,sqlldr的手工编辑很费劲,稍不注意就会写错。
这次参考了http://www.cnblogs.com/hiizsk/archive/2011/07/10/2102452.html
使用ORACLE SQL DEVELOPER进行了操作,效果不错。
以下有几个需要特别注意的事情,提前说,很重要的。
- ORACLE SQL DEVELOPER不是pl/sql developer,这个要注意啊
- ORACLE SQL DEVELOPER的版本问题,上面地址参考文档或者从oracle官方站点下载的我都没有试验成功,反而到是一个比较老的版本3.0.04的版本试验成功了,在文档最后我提供了下载,这个版本是没有jre的,对应的是6不是7啊,请自行安装,在首次运行的时候提示指定jre6的路径,指定对了就可以正常运行了。
- 上面文档中没有提及怎么导入,这个是非常重要的,需要将导出的文档上传到服务器执行。
- 编码,这个是折腾我最多的内容,因为sql server2008 R2不支持bcp的utf-8导出,但是oracle 生产机现在基本都是al32utf8的,所以需要手工将导出的data文件夹的内容转码到utf-8.EditPlus有一个批量转码的功能,非常好用对小文件批量操作很好,我的480多个文件基本都是靠它完成的。对于大于100M以上的文件editplus完全hang不住,只能使用ultraedit,我用它执行2G多的一个文件,几分钟搞定。
二、实际步骤
此步骤很多参考绝殇 的内容啊,版权是他的啊。我在其中补充和修正了一些内容。
- 第一部分:获取工具
不建议去oracle官网下载,虽然支持到oracle 12C,反正我是没用它弄好我的sql server 2008 R2到oracle 11G 的转换,能使用的人如果成功告诉我下。
直接到文档最后下载提供的内容即可,注意自行安装jre6
2. 下载SQL SERVER的驱动程序
绝殇说的”点击菜单帮助,选择检查更新,弹出检查更新向导窗口”我一直没成功,我只好自己自行下载了jtds-1.2.2-dist,这个我也提供了下载。关联方式如下
启动develop -----工具-----首选项-------数据库-----第三方jdbc驱动程序,添加条目选中jtds的文件,然后重启develop即可。
- 连接oracle和sql,建立账户
基本和文档一样(不清楚脚本见http://www.cnblogs.com/hiizsk/archive/2011/07/10/2102452.html),这里多说一句,默认新创建的用户的默认表空间是user,我不建议这样,新建立一个表空间,然后建立的MIGRATONS用户的表空间使用新建的,尽量不要影响默认表空间。
另外后面脚本执行完毕后,创建的表的默认空间也是user,这个时候导入数据前建议在新建一个表空间,将这些表移动到新表空间如newtbs。
Select 'alter table '||table_name||' move tablespace newtbs;' from user_all_tables;
3. 数据库移植向导等
完全可按照文档执行,最后一步也是脱机即可。
(1)SqlServer中的架构到Oracle中的模式,名称的处理
这部分不用这么处理,后面我有更好的办法,跳过
(2)转移数据
从这部分后,文档语焉不详,其实这才是执行导入容易出错的地方。首先导出数据执行unload_script [server] [username] [password]
这个执行可以在本机使用cmd执行,注意看下生成的目录结构如下
导出数据可以在2014-09-28_17-02-42下执行unload_script.bat
我的项目导出10G左右大概在十几分钟即可。
接下来就是转码工作了,在上图的data目录中,选中文件使用editplus或者ultraedit就可以把文件转码到utf8格式。
(3)导入数据
把全部的文件上传到linux服务器(你的oracle不会运行在windows下吧?)
(1) 修改shell文件
修改dbo文件下的oracle_ctl.sh文件
增加
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
注意这里的值是你目的oracle的nls值,可以自行查询
如果您的文件中有类似我的超过500M的大文件,修改默认的sqlldr语句
默认:
sqlldr $1/$2 control=control/dbo_jzprod.uf_bud_payoutdetthird.ctl log=log/dbo_jzprod.uf_bud_payoutdetthird.log
在后面增加下面的语句采用平行append方式,跳过索引
direct=true parallel=true skip_index_maintenance=true
(2) 修改control文件
如果你使用了上面的direct=true的数据,那对应的control文件也需要修改,如上面的dbo_jzprod.uf_bud_payoutdetthird,control文件在control目录下,如:
load datainfile 'data/dbo_jzprod.CARDCOMBINATIONDETAIL.dat'"str '<EORD>'"into table dbo_jzprod.CARDCOMBINATIONDETAILfields terminated by '<EOFD>'trailing nullcols
需要在into 之前增加APPEND
(3) 执行
执行shell,可能大家觉得非常简单,但是也需要有些注意事项
./**.sh 没问题,但是我们需要注意,我们需要执行dbo目录下的shell
因为默认的developer给我们生成了很多层的sh,我们需要执行最内层的sh
3.1:^M的问题:
我们编辑的sh,执行会报错,vi会发现内部的每行最后存在一个^M
使用如下代码即可。
:1,$ s/^M//g
^M 输入方法: ctrl+V ,ctrl+M
3.2:后台运行
直接运行shell需要时间比较长,我们采用nohup后台进程运行的方式
nohup ./command.sh > output 2>&1 &
注意这里回车exit一直到退出此进程,然后重新启动一个新进程
Tail –f output观测实际的进展即可。
3.3 最后导出成功后,需要重建索引并且迁移到单独的表空间,对lob字段单独表空间存储等
oracle sql developer:http://pan.baidu.com/s/1hq7oIUg
jtds:http://pan.baidu.com/s/1sjO7vop
转载于:https://www.cnblogs.com/tippoint/p/4001593.html
SQL迁移到ORACLE实例相关推荐
- 新建oracle数据库 环境查询,Oracle单实例数据库迁移到Oracle RAC 环境之(2)--实施篇...
Oracle单实例数据库迁移到Oracle RAC 环境之(2)--实施篇 系统环境: 操作系统:RedHat EL55 Oracle : Oracle 11.2.0.1.0 集群软件:Oracle ...
- Oracle RAC迁移到单实例(通过备份集手动恢复)
该文章为网络资源整理,仅供个人学习笔记用途,如有侵权请联系删除! 实验环境 操作系统:centos6.8 源端:RAC11.2.0.4 (10.16.35.131/132) 目标端:Oracle 软件 ...
- 应用程序的数据库从Sql Server迁移到Oracle
应用程序的数据库从Sql Server迁移到Oracle 迁移案例一:数据库: Sql Server 2008到Oracle 9i 工具: Sybase PowerDesiner 12 试用版, PL ...
- Oracle实例迁移_真实场景实操
背景 环境: oracle为11.2版本 Linux-Centos6.5操作系统. 现状: 两台主机198,197 ,均已安装了oracle服务端. 其中198上已经创建了两个实例,197上只有orc ...
- sqldeveloper mysql迁移_通过SQL Developer工具将MySQL数据库内容迁移至Oracle的步骤
通过SQL Developer工具将MySQL数据库内容迁移至Oracle的步骤 发布时间:2020-06-08 15:52:18 来源:51CTO 阅读:210 作者:三月 本篇文章给大家主要讲的是 ...
- oracle 图片 显示不出,Sql Server 中image类型迁移到Oracle 中Blob类型出现图片显示不出来,why????请博客们帮忙 | 学步园...
我现在在一项目中碰到这么一个问题 Sql Server 中image类型迁移到Oracle Blob类型出现图片显示不出来,我在Sql Server 中看了一条image数据 如下: 1.Sql Se ...
- RAC 实例 迁移到 单实例 -- 使用导出导入
昨天整理做了用导出导入的方法,将Oracle 单实例 迁移到 RAC 实例的实验. 今天来做一个用导出导入的方法将RAC 实例迁移到 Oracle 单实例. 方法都差不多. 只不过顺序倒过来了. Or ...
- Oracle 实例管理
Oracle实例(instance)是一组Oracle后台进程和内存结构的集合.后台进程主要包括SMON, PMON, DBWR, CKPT 和 LGWR 等:内存结构包括数据库高速缓冲区.重做日志 ...
- Mysql迁移到Oracle方法
目录 1简介... 1 2 准备... 1 2.1 环境说明... 1 3 安装... 2 4 配置... 2 5 使用... 2 5.1 验证实验... 2 5.2 问题分析... 4 6 延展.. ...
最新文章
- C++返回字符串函数的几种实现方法
- 自定义分页 html,MVC 自定义HtmlHelper帮助类型之分页
- 2017-10-08 前端日报
- Ubuntu 18.04环境下Django的安装配置图文详解
- mysql -e 导出_mysql 导出数据导入数据
- 油猴脚本使用方法与管理插件方法+开发插件与安装插件的方法
- cad直线和圆弧倒角不相切_数控加工中心如何使用任意角度倒角C和倒圆角R功能的编程...
- CAT的Client端初始化
- 原创超简单代码(1.21.50)
- Vue上传文件 iview Upload UI 组件上传组件
- 爬虫之上传文件,request如何上传文件
- button标签定义type属性
- 统计学——数据的分类
- 将各种格式flv,avi,mp4等的文件,转码成MP4(无音频)
- 杂谈2008—关于游戏和游戏的那些事
- Pycharm配置——解释器(interpreter)
- 互信息的深度理解(总结的不错值得一看)
- 致敬即将到来的web3.0
- 参加UI培训课程学什么
- 在麒麟V10服务器上安装与运行金蝶AAS中间件