已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
精品文档 1欢迎下载 SybaseSybase 到到 OracleOracle 数据迁移数据迁移 一 Sybase 数据导出 1 1 Sybase 数据导出到 TXT 文件 在跨数据库从 Sybase 导入 Oracle 过程中首先会遇到的问题是 中间以什么样的数据格 式做为 Sybase 与 Oracle 都认同的中间数据格式 Sybase 数据库导出一般使用 BCP BCP 出 来的 TXT 文档数据也能被 Oracle 所接受 所以在整个过程导出 Sybase 的数据选择 BCP 导出 例 导出命令 bcp personal PA ACCOUNT out PA ACCOUNT txt Upersonal Psuntek SSYBASE c oresult txt 1 2 Sybase 导出 TXT 文件异常处理 在前面的基础上讲一下 BCP 导出的时候可能会遇到的问题 Sybase 中 Bcp 导出的时候 如果表中的字段里面含有换行符号的话 会在 txt 文件中做换行处理 那行就会出现一行变 成两行 换行符号在实际数据中可能是用户拷贝粘贴或者 Web 提交的把换行提交到数据库中 如 图所示 上行的数据中 因为其数据中含有回车 一条记录导出 TXT 里换成了两行 我们在数据导 出过程要考虑这种情况 这种情况也是数据导出后导入 Oracle 失败的主要原因 解决以上情况的办法 一般的 BCP 导出的命令 bcp personal PA ACCOUNT out PA ACCOUNT txt Upersonal Psuntek SSYBASE c oresult txt 精品文档 2欢迎下载 在上面的导出命令中加入一个参数 r commit 建议 Sybase 中对应的除数值型数据外 在 Oracle 中全部转换为字符型 精品文档 5欢迎下载 2 2 Sybase 数据导入 Oracle 临时库 建议 Sybase 中非数值型的数据全部当字符型数据导入 然后在 Oracle 从临时库到正 式库处理时做具体转换 在大量 txt 类型的数据要导入 Oracle 中 Oracle 有一个自带的工具 SQL Loader 是 Oracle 提供的一个实用程序 用以将外部 TXT 文件按要求加载到 Oracle 数据库 SQL loader 的用法很简单下面以导入一个 pa super mail 表为例简单介绍一下 建立 pa super mail ctl 内容如下 load data infile pa super mail txt 指明 TXT 文件的路径 append into table pa super mai 指明要插入的表 l fields terminated by X 09 字段终止于 X 09 是一个制表符 TAB 分开 CN USERID CN MAIL CN PASSWD CN MEMO 这几个为字段名 见下面的 Oracle 临时表建表脚本 注意只要字段 名就可以了 不用指定数据类型 PA SUPER MAIL 建表脚本 Table PA SUPER MAIL 精品文档 6欢迎下载 create table PA SUPER MAIL CN USERID numeric 12 null CN MAIL varchar 40 null CN PASSWD varchar 15 null CN MEMO varchar 100 null commit create index i PA SUPER MAIL on PA SUPER MAIL CN USERID 表 Ctl 文件及 TXT 数据文件准备好就可以用 Sqlldr 导入 具体命令如下 sqlldr fj ora fj ora zxin control pa super mail ctl errors 999999 fj ora fj ora zxin 这个不用说了就是用户名密码及注册服务名 errors 999999 表示如果导入数据失败等于该值便终止导入 在导入数据完毕 根据其产生的 LOG 文件可以看到有多少数据成功与失败及失败的原 因 失败数据会写入一个 bad 文件中 从中可以分析出数据的问题之所在 不断修改而达到数 据100 的导入率 Log 日志如下 SQL Loader Release 9 2 0 6 0 Production on 星期一 5月 21 20 33 21 2007 Copyright c 1982 2002 Oracle Corporation All rights reserved 控制文件 pa super mail ctl 数据文件 pa super mail txt 错误文件 pa super mail bad 废弃文件 未作指定 精品文档 7欢迎下载 可废弃所有记录 加载数 ALL 跳过数 0 允许的错误 999999 绑定数组 64 行 最大 256000 字节 继续 未作指定 所用路径 常规 表 PA SUPER MAIL 已加载从每个逻辑记录 插入选项对此表 APPEND 生效 列名 位置 长度 中止 包装数据类型 CN USERID FIRST WHT CHARACTER CN MAIL NEXT WHT CHARACTER CN PASSWD NEXT WHT CHARACTER CN MEMO NEXT WHT CHARACTER 表 PA SUPER MAIL 13189 行 加载成功 由于数据错误 0 行 没有加载 由于所有 WHEN 子句失败 0 行 没有加载 精品文档 8欢迎下载 由于所有字段都为空的 0 行 没有加载 为结合数组分配的空间 66048字节 64行 读取 缓冲区字节数 1048576 跳过的逻辑记录总数 0 读取的逻辑记录总数 13189 拒绝的逻辑记录总数 0 废弃的逻辑记录总数 0 从星期一 5月 21 20 33 21 2007开始运行 在星期一 5月 21 20 33 22 2007处运行结束 经过时间为 00 00 00 89 CPU 时间为 00 00 00 12 从以上日志还可以看出导入数据的具体时间 建议 可以把 Sqlldr 命令做成 Bat 批处理文件 方便现场人员操作与处理 三 Oracle 临时库到 Oracle 正式库 本步骤是最为关键的一步 从 Sybase 到 Oracle 中 由于两边系统平台表结构及字段完 全不同 所以要对照进行转换 在编写转换脚本的时候对原 Sybase 的平台表结构要足够的熟 悉 最好有原始设计文档 不然是无法做数据转换的 在对 Sybase 与 Oracle 两边表结构足够 熟悉后 开始进行脚本编写 下面介绍几个重点步骤 3 1 在写导入脚本中修改回滚时间提高效率 修改回滚时间 提高效率 ALTER SYSTEM SET undo retention 30 SCOPE BOTH commit 精品文档 9欢迎下载 处理过程 处理完毕修改成默认时间 ALTER SYSTEM SET undo retention 900 SCOPE BOTH commit 3 2 导入数据过程中注意记录两边用户 ID 对应关系表 在数据迁移过程中从 Sybase 平台到 Oracle 平台的用户新旧 UserID 情况应做详细记 录 因为两边的 Userid 产生方式不一样也就是说用户到新平台其 ID 序列全部遵照 Oracle 平台规则产生 导入失败用户情况也应做详细记录 在导数据后进行数据查询与问题分析有 很重要的作用 在后面的密码处理过程就会用到新旧对应关系表 例 记录对应表 新照 ID 对应表 create table trans userid relation sybase userid int not null 现场用户 id oracle userid int not null 新系统用 户 id commit create unique index idx userid relation1 on trans userid relation sybase userid create unique index idx userid relation2 on 精品文档 10欢迎下载 trans userid relation oracle userid commit 开户失败用户 ID create table trans user fail sybase userid int not null 现场用户 id fail code int not null 例 过程处理中数据的写入 if v newuserid 1 then 开户失败写入数据中 v errcount v errcount 1 1失败表示开户号码重复 2程序出错 开户失败不进行下一步操作 如果失败就写源 ID insert into trans user fail sybase userid fail code values v orguserid v newuserid else 开户成功写入对应表 insert into trans userid relation sybase userid oracle userid values v userid v newuserid end if 精品文档 11欢迎下载 3 3 导数据过程中游标的使用 在编写导脚本的过程中主要用到游标 因为一个用户的导入会涉及很多用户数据的导 入 用户数据分布在不同的表中 所以用游标基本上是首选 在游标中还有嵌套游标 例 查询用户 declare v userinfo zxdbp 187 tb userinfo ROWTYPE cursor c userinfo is select from zxdbp 187 tb userinfo begin open c userinfo loop fetch c userinfo into v userinfo exit when c userinfo NOTFOUND DBMS OUTPUT PUT LINE userid is v userinfo strUserid 查询用户联系人群组 declare v deptinfo zxdbp 187 tb deptinfo ROWTYPE cursor c deptinfo is select from zxdbp 187 tb deptinfo where strUserid v userinfo strUserid begin open c deptinfo loop fetch c deptinfo into v deptinfo exit when c deptinfo NOTFOUND 精品文档 12欢迎下载 DBMS OUTPUT PUT LINE deptid is v deptinfo strDeptid end loop close c deptinfo end end loop close c userinfo end 在实际处理过程 如果用户数据百万级的 最外层最好不要用游标而改用循环 只在里 面用游标 循环可以借用 Oracle 的序列 然后更新用户表中的一个新增字段进行循环操作达 到游标的目的 3 4 导数据过程中数据写义的转换 用户数据从 Sybase 数据到 Oracle 新平台时可能还要做一些转换 这些转换要在对两边 平台足够的了解与深入分析 并不断导入数据反复测试的情况下做出的转换 保证两边数据 的高度一致性 例 对性别的定义 取得用户的相关信息 select cn sex cn birthday ch pos cn job place into v sex v birthday v job v company from fj ora pa personal setting where cn userid v userid 转换 sex 的定义 现网是0男1女 187定义是0女1男 if v sex 0 then v sex 1 精品文档 13欢迎下载 else v sex 0 end if 例 对状态定义的转换 现网 CN STATUS 0 有效 1 无效 CN GROUP TYPE 1 企业组 2 个人组 CN TYPE 0 统 一留言组1 其他组 有效标记 1 正常 2 取消使用 if iflagvalid 0 then iflagvalid 1 end if 3 5 关于 Sybase 日期型数据到 Oracle 的转换 在 Sybase 的日期在前面表脚本中转到 Oracle 的脚本中 我们是不能直接换成 Oracle 的 date 型的 在导入的时候会提示数据无效 所以在建表脚本的时候就把 Sybase 的 date 型对应成 Oracle 的 varchar 50 类型 在转换脚本中做处理 这为把日期类型做重点说 明 主要是因为在电信平台系统中 有很多日期的数据 日期型数据一般存储方式会有两种 一种直接用 Varchar 字符型保存 在整个系统中统一采用一种日期数据格式 如 yyyy mm dd hh mm ss 另一种是直接采用 Date 型 这里对 Date 型做转换介绍 Sybase Date 型导入 Oracle 临时库中的示例数据如下 Dec 14 2004 7 26 23 390PM Oracle 中转换语句如下 v date to date substr v datechar 1 length v datechar 6 substr v datechar length v datechar 1 2 Mon DD YYYY HH MI SSPM NLS DATE LANGUAGE American 精品文档 14欢迎下载 v datechar 就是 Dec 14 2004 7 26 23 390PM 这种类型的数据 3 6 MD5密码的破解处理 Md5破解 你一定觉得很惊奇 因为 MD5密码只是理论上有碰撞 现在还没有解密算法 如何解密 这里要讲的是不是解密 而是用暴力破解的手段 因为在电信业务中密码一般比较 特殊 因为在通话过程中能输入的密码只能是数字 所以就给了我们暴力密解的可能 并且一 般在业务会限定密码位数长度 这更加提供了暴力破解密码的条件 在现在智能网业务中 密码加密的算法是由自动业务的加密算生成的 所以要做 Md5 到智能网加密的转换 过程如下 1 用 Md5函数对限定位数密码进行穷举 每个穷举的密码对源表中进行比对 然后更 新成明码 2 用智能网算法对明码进行加密 在需要的情况可以用保留字段保存明码 在附件里面提供了自己根据 Java 算法编写的智能网加解密 Oracle 版存储过程及 MD5相关存储过程 在附件导数据过程 不是用的此方法 而是由另外的同事编写的软件进行该步骤 软 件对 Sybase 导出的含密码的 TXT 文件 拷贝一份 然后进行解密处理 把 Md5密码转换成智 能网密码并在保留字段中保存明文密码 该 TXT 文件破解完成后导入数据库 最后用同步密 码脚本进行
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年宜君县中小学教师招聘笔试备考试题及答案解析
- 消防设施操作员(初级)定岗定级必考专业知识500题(含答案)
- 2025年牙科根管治疗合同
- 2025年泰宁县教师招聘笔试参考试题及答案解析
- 蔬菜营养评价
- 2025年丘北县教师招聘笔试参考试题及答案解析
- 2025年宁波慈溪市中小学教师招聘笔试参考题库及答案解析
- 2025年阿合奇县中小学教师招聘笔试参考题库及答案解析
- 2025年虚拟现实培训课程合作合同协议
- Premiere视频编辑与处理案例教程(AI协同)(项目式)(微课版)课件 项目1 初识AIGC应用
- 《数据科学导论》教学大纲
- 大会-冠脉微循环障碍课件
- JB∕T 7301-2017 手持式凿岩机
- 绝缘手套试验报告(安全工器具试验报告)
- 少儿美术课件-《阿拉丁神灯》
- 废气处理专业设备酸雾净化塔技术方案书
- 健康饮食益处多(教案) 小学一致二年级体育
- 外科手术学教案-运动系统慢性损伤
- GB3956-97电缆的导体
- ALG测试指导书
- GL2400中文说明书
评论
0/150
提交评论