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进行了操作,效果不错。

以下有几个需要特别注意的事情,提前说,很重要的。

  1. ORACLE SQL DEVELOPER不是pl/sql developer,这个要注意啊
  2. ORACLE SQL DEVELOPER的版本问题,上面地址参考文档或者从oracle官方站点下载的我都没有试验成功,反而到是一个比较老的版本3.0.04的版本试验成功了,在文档最后我提供了下载,这个版本是没有jre的,对应的是6不是7啊,请自行安装,在首次运行的时候提示指定jre6的路径,指定对了就可以正常运行了。
  3. 上面文档中没有提及怎么导入,这个是非常重要的,需要将导出的文档上传到服务器执行。
  4. 编码,这个是折腾我最多的内容,因为sql server2008 R2不支持bcp的utf-8导出,但是oracle 生产机现在基本都是al32utf8的,所以需要手工将导出的data文件夹的内容转码到utf-8.EditPlus有一个批量转码的功能,非常好用对小文件批量操作很好,我的480多个文件基本都是靠它完成的。对于大于100M以上的文件editplus完全hang不住,只能使用ultraedit,我用它执行2G多的一个文件,几分钟搞定。

二、实际步骤

此步骤很多参考绝殇 的内容啊,版权是他的啊。我在其中补充和修正了一些内容。

  1.  第一部分:获取工具

不建议去oracle官网下载,虽然支持到oracle 12C,反正我是没用它弄好我的sql server 2008 R2到oracle 11G 的转换,能使用的人如果成功告诉我下。

直接到文档最后下载提供的内容即可,注意自行安装jre6

    2.   下载SQL SERVER的驱动程序

绝殇说的”点击菜单帮助,选择检查更新,弹出检查更新向导窗口”我一直没成功,我只好自己自行下载了jtds-1.2.2-dist,这个我也提供了下载。关联方式如下

启动develop -----工具-----首选项-------数据库-----第三方jdbc驱动程序,添加条目选中jtds的文件,然后重启develop即可。

  1. 连接oraclesql,建立账户

基本和文档一样(不清楚脚本见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 $/$ 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 data

infile 'data/dbo_jzprod.CARDCOMBINATIONDETAIL.dat'

 "str '<EORD>'"

into table dbo_jzprod.CARDCOMBINATIONDETAIL

fields terminated by '<EOFD>'

trailing nullcols

需要在into 之前增加APPEND

(3) 执行

执行shell,可能大家觉得非常简单,但是也需要有些注意事项

./**.sh 没问题,但是我们需要注意,我们需要执行dbo目录下的shell

因为默认的developer给我们生成了很多层的sh,我们需要执行最内层的sh

3.1:^M的问题:

我们编辑的sh,执行会报错,vi会发现内部的每行最后存在一个^M

使用如下代码即可。

 :,$ s/^M//g

^M 输入方法: ctrl+V ,ctrl+M

3.2:后台运行

直接运行shell需要时间比较长,我们采用nohup后台进程运行的方式

nohup ./command.sh > output >& &

注意这里回车exit一直到退出此进程,然后重新启动一个新进程

Tail –f output观测实际的进展即可。

3.3 最后导出成功后,需要重建索引并且迁移到单独的表空间,对lob字段单独表空间存储等

oracle sql developer:http://pan.baidu.com/s/1hq7oIUg

jtds:http://pan.baidu.com/s/1sjO7vop

SQL迁移到ORACLE实例的更多相关文章

  1. win7 X64系统上 PL/SQL不能识别Oracle实例

    电脑系统为Win7 64位,安装的PLSql为64位,安装的Oracle客户端为运行时类型的,应该为32位客户端 电脑上之前安装的32位toad可以识别Oracle实例 在系统添加了oracle_ho ...

  2. 从 Microsoft SQL Server 迁移到 Oracle

    来源于:http://www.oracle.com/technetwork/cn/database/migration/sqlserver-095136-zhs.html Oracle SQL Dev ...

  3. SQL SERVER 2000/2005/2008数据库数据迁移到Oracle 10G细述

    最近参与的一个系统涉及到把SQL Server 2k的数据迁移到Oracle 10G这一非功能需求.特将涉及到相关步骤列举如下供大家参考: 环境及现有资源: 1.OS: Windows 7 Enter ...

  4. 使用 Oracle GoldenGate 在 Microsoft SQL Server 和 Oracle Database 之间复制事务

    使用 Oracle GoldenGate 在 Microsoft SQL Server 和 Oracle Database 之间复制事务 作者:Nikolay Manchev 分步构建一个跨这些平台的 ...

  5. 数据库 --> SQL Server 和 Oracle 以及 MySQL 区别

    SQL Server 和 Oracle 以及 MySQL 区别 三者是目前市场占有率最高(依安装量而非收入)的关系数据库,而且很有代表性.排行第四的DB2(属IBM公司),与Oracle的定位和架构非 ...

  6. 将数据从MySQL迁移到Oracle的注意事项

    将数据从MySQL迁移到Oracle的注意事项1.自动增长的数据类型处理MYSQL有自动增长的数据类型,插入记录时不用操作此字段,会自动获得数据值.ORACLE没有自动增长的数据类型,需要建立一个自动 ...

  7. SQL语句学习手册实例版

    SQL语句学习手册实例版 表操作 例1  对于表的教学管理数据库中的表 STUDENTS ,可以定义如下: CREATE  TABLE  STUDENTS (SNO      NUMERIC (6, ...

  8. ORACLE 实例及RAC

    ORACLE 实例及RAC 一.问题 (1)现象 部署一个sh脚本到生产oracle服务器上,该sh脚本负责读取外系统提供的txt文件,然后用sql loader入库,由oracle服务器的cront ...

  9. Oracle实例和Oracle数据库(Oracle体系结构)

    --========================================== --Oracle实例和Oracle数据库(Oracle体系结构) --==================== ...

随机推荐

  1. 【洛谷P3258】松鼠的新家

    很好的一道题 LCA+树上前缀和 sum数组是前缀和数组, 分类讨论一下, 1.访问到一个点p1,若下一个点p2需要往儿子下面找的话,那么lca就是这个点p1,则sum[p1]--; sum[p2]+ ...

  2. Jade之条件语句

    条件语句 jade支持js中的if/elseif/else语法. jade: - var user = { description: 'foo bar baz' } - var authorised ...

  3. VS2010中使用GDAL(一)

    初次使用visual studio 对工具不熟悉,有些步骤可以配置的 (1)在VS2005中新建win32控制台程序 testGDALconsole,(向导中附加选项不能选为空项目) 将C:\GDAL ...

  4. Lintcode 175 Invert Binary Tree

    I did it in a recursive way. There is another iterative way to do it. I will come back at it later. ...

  5. linux SMP启动

    SMP简介 1,硬件上,CPU没有主次之分 2,软件上,每个CPU平等动态地从进程就绪队列中调度进程加以执行,中断请求也是等概率动态的分布给某个CPU SMP启动 1,SMP结构中的CPU都是平等的, ...

  6. C++混合编程之idlcpp教程(一)

    我是C++语言的忠实拥趸,由于在上学时经历了资源匮乏的DOS时代,对C/C++这种更加接近硬件的语言由衷的喜爱.一直以来也是已C++作为工作的语言,对别的语言那是不屑一顾.在java火爆流行的时候,没 ...

  7. Html5 学习系列(五)Canvas绘图API快速入门(2)

    Canvas绘图API Demos 上一篇文章中,笔者已经给大家演示了怎么快速用Canvas的API绘制一个矩形出来.接下里我会在本文中给各位介绍Canvas的其他API:绘制线条.绘制椭圆.绘制图片 ...

  8. [ACM_水题] Yet Another Story of Rock-paper-scissors [超水 剪刀石头布]

    Description Akihisa and Hideyoshi were lovers. They were sentenced to death by the FFF Inquisition. ...

  9. C语言实现二叉树-利用二叉树统计单词数目

    昨天刚参加了腾讯2015年在线模拟考: 四道大题的第一题就是单词统计程序的设计思想: 为了记住这一天,我打算今天通过代码实现一下: 我将用到的核心数据结构是二叉树: (要是想了解简单二叉树的实现,可以 ...

  10. 测量行业(RTK)相关的小知识总结

    RTK测量系统,一般需要先架设基准站(参考站),数据链模式外挂大电台(有天线大功率模式,理想范围方圆18公里以内).基准站通过收到卫星(多星)进行计算出当前的位置. 其中涉及到频率的设置,波特率,以及 ...