标签:dba-建库
原创作品,出自 “深蓝的blog” 博客,欢迎转载,转载时请务必注明出处,否则追究版权法律责任。
深蓝的blog: http://blog.csdn.net/huangyanlong/article/details/48776573
【前言】
自接触oracle至今,愈是深入了解oracle愈是察觉到个人的渺小,时常感受到技术知识可以助推思维方式,一路走来,在汗水中收获着成长的充实,不仅局限于oracle技术,借由此系列文章,分享个人在追逐DBA道路上收获的些许感悟与成长的点滴记录。在浩瀚星空里,鉴证自己人生中那一道弧线。
凌乱中找回生活的节奏,在加班的日子里,没有了多余的杂念。
——深蓝
很久没有更新文章了,在这段日子里,兼顾着原本的工作的基础上,开始逐步学习项目建设、项目管理的知识,学习着如何推进项目,如何建设团队,零零总总的知识,一时间感觉到24小时还真是如此短暂。
在紧张的工作之余,意料之外的找到了一些生活的气息。还是比较心怀感恩的在一步一步前行着。曾几何时,有老大哥跟我说生活不只是工作而已,需要有梦想,同样需要有情感的支持,生活是个永恒的旋律,不能单方向前行,要不然索然无味,生活乏味会让人身心疲惫。想毕,当时是不以为然,而现如今的转变,很多事,已经可以放下,这才发现,原来不经意的一次尝试,可能真有什么命里注定,当不再驻足过往的风景时,人生中的岔路口上,会自然而然的铺开一条路,而顺路前行,心灵如同是敞开了一扇开阔而且光亮的窗。
开始学着经营起一份感情,不刻意,不强求,随遇而安,岁月安好。
篇章一:回归生活
当机缘让两个人相遇,将不再是悔恨往昔,冥冥中,不期而遇的某一天,对未来有了更美好的憧憬。
——深蓝
钟摆嘀嗒嘀嗒,1:00,2:00,3:00,今夜有些莫名的孤单,不太想说话,注视着夜色的光亮顺着窗帘映射进酒店的房间内,眼望天色在天边处已渐渐探出一丝光亮。一种说不出的情绪,在静谧的夜空下却感觉出下雨的情绪。
不经意间,已经转眼过了22天,仿佛只是过了两天的光景,意识中有些分不出是哪个周末发生的事,在某一个清晨开始了这段旅程,却在心里贮藏了一个有些朦胧的面庞。
——于郑州,9月12日,早。
感情,是需要时间去了解彼此内心的,一个圆,左半部分和右半部分,有一点偏离了,那就不再是圆了。
——深蓝 于郑州2015年9月20日星期日 2:00 早安。
当遇见,有些慌张来的不适时宜,又却恰当好处,不刻意,不掩饰,对于未来既然已坚定,对当前就应义无反顾。且行且珍惜的态度。
夜幕下,突然醒了过来,睁着眼睛发呆,看着天花板,眼前开始闪现出不同的画面,一幕幕幻灯片的情节,仿佛就像是昨天发生的一样,一刹那感觉时间这东西,原来过得好快。回望在一个人的日子里,自由、无拘、无束、没什么不用管、没什么牵绊、享受着孤独、想走就走的日子里,让人反而觉得自在。这样的日子是不是需要改变一下了呢?静谧下,脑子里突然乱乱的。
想好了嘛?自己在质疑。
自己靠谱嘛?优容寡断的那种感觉?还要太认真嘛?一时间突然又仿佛陷入到曾经的过往里面。
朦朦胧胧的有些飘离。
——深蓝 于郑州2015年9月21日星期一 05:00。
未来安好
有些小幼稚,却心里很温暖。
记不清上次收到类似礼物这样子的东西是什么时候了,有些意料之内,却被一些小幼稚触动着心底,狠狠的暖了一把。
——深蓝 于郑州2015年9月21日星期一 00:00。
中秋,平静中度过
中午好像空调开的过猛,嗓子变得沙哑,不想说话,脑袋有些迷糊,爬在床上不想动堪。
但,迷糊的,还是有些莫名的高兴。当看到蹦蹦哒的消息时心情就会好好的。哈,有些幼稚吧。出差在外的日子里,不联络与距离感有时候可能是一道屏障,但有时候似乎也是一种体验,也许在经历过了这样的日子里,才懂得身边的人,需要珍惜。一路花香,回望风景,人在其中,却未闻花香,而远了,才感受到,花香其实早在不经意间环绕在身旁。
愿,安好。健康。豁达。
——深蓝于郑州2015年9月28日星期一 02:32
篇章二:数据迁移
靡不有初,鲜克有终。做好该做的责任,为建库护航,不会丢弃的oracle。
——深蓝
本次完成一次数据迁移的任务,数据库字符集的调整:ZHS16GBK—>AL32UTF8
源库建库时使用的字符集是ZHS16GBK,目标库的数据库字符集是AL32UTF8。
本次迁移,新库与老库的区别上,简单分为如下情况:
第一部分:新库与老库,表级结构不变化,数据量小(5G);
第二部分:新库与老库,表级结构不变化,数据量大(1T);
第三部分:新库与老库,表级结构变化,数据量小(15G);
有数据量不大的表,计划采用dmp的方式进行。但是遇到一个问题就是关于中文字符的处理。在ZHS16GBK下,一个中文需要两个字节,而在AL32UTF8下,一个中文需要三个字节。这也就意味着相同的表结构下,源库下的数据有可能在插入到新库时出现字符超长的可能。
对于该部分,先在新库中创建相同的表空间、用户、赋予相应权限。
由于数据量不大,迁移前,做一次全库级导入测试,保留imp日志,会在日志中筛选出由于中文引起的长度问题;
然后将业务中字段长度不受影响的表以dmp的方式导入目标库中,查看dmp日志;
(1)、查看日志,如果出现“EXP-00003:未找到段 (0,0)的存储定义”错误,需手工补充建表;
(2)、查看日志,如果出现“ORA-01461:仅能绑定要插入 LONG列的 LONG值”错误,由于字符长度超过4000引起,需要把数据类型由varchar2改为clob;
(3)、通过dmp日志,查看到需要扩充字段长度的表信息,例如:
根据上面查明的问题,由源端数据库导出相应的建表语句,针对不同问题修改脚本,重新整理补充建表语句,并把需要扩容长度的表手工将其调整结构后,手工创建出来。接下来,执行了目标端补充建表语句。然后,手工抽取字段长度变更表的业务数据。最后对源端、目标端表级数量进行一次统计,数据量相同后确认迁移完成。
迁移第二大部分,表级结构不变,但是大数据量的表,对部分创建分区的数据,以分区的形式dmp导出数据。然后导入到新库下面,最后导出完成后,统计源端、目标端的数据量,确认导出完成。由于该大数据量表数据皆增量来自于不同的业务库,所以后续迁移完成后,调整了数据增量的地址。
而对于迁移第三大部分,涉及到结构变更,就不能使用dmp的方式了,而是选择采用了编写字段对应的方式,使用insert的方式完成数据的迁移任务。
篇章三:字典转换打开尘封的潘多拉,曾经坚定的梦,原定的路,依然在继续前行。
——深蓝
在本次的建库工作中,不只是需要数据迁移,还需要完成字典转换的任务。原因在于字典类的代码由业务部门进行了重新的调整和统一,所以需要按新标准对字典进行转换。
这次对于字典转换,涉及到两个方面,如下:
第一方面:对于落地数据字典的转换;
第二方面:对于增量的数据,按新标准字典进行转换;
首先需要整理出一套新标准代码与老代码的对应关系,类似格式如下:
字典翻译用表:
范例:表名称:CODE_YEWU 业务平台字典表
简单的列举一个处理方式,思路上就是使用子查询的方式,如下:
落地数据的转换范例:对test表的ysdm字段进行转换,其中ysdm表示颜色代码,ysmc代表颜色名称。
参考语句如:
update table test a set (a.ysdm,a.ysmc)=(
select b.code,b.name
from code_yewu b
where b.root_key=’YSDM’
and b.old_code=a.ysdm
);
新数据的转换范例:
在对新增量数据进行转换时,采用插入数据时通过调用字典转换表(code_yewu)来完成字典的转换后,直接插入到数据库中。
参考语句如下:
insert into test(id,name,ysdm,ysmc)
select
sys_guid,
t.name
(select a.code,
a.name
from code_yewu a
where a.root_key=’YSDM’
and a.old_code=t.ysdm)
from old_test@dblink t;
篇章四:表结构的差异比较在不同的业务系统之间,有时候会遇到比对表结构差异的情况,这里举例一个方式,可以利用oracle的外连接来实现列举两方的结构差异。
举例一个方法:
整理的源库中的表结构excel;
整理的目标库的表结构excel;
创建A表的结构(为了放入源库结构数据)
create table A
(
t_name_A varchar2(500),
t_col varchar2(500),
t_type varchar2(500),
t_comment varchar2(500)
);
–源库中表名,字段名,类型,中文注释
创建B表的结构(为了放入目标库结构数据)
create table B
(
t_name_A varchar2(500),
t_name_B varchar2(500),
t_col varchar2(500),
t_type varchar2(500),
t_comment varchar2(500)
);
–源库中表名,目标库中表名,字段名,类型,中文注释
–这里为了做比较,所以把A表的源库表名也建在了B表中,这样有个更直观的比较,为后续做准备
然后使用SQL Loader或PL/SQL Developer等工具把excel数据导入到相应的表中去。
下面从A表和B表中获取到需要拼接及比较差异的字段,生成中间表A1、B1
create table A1 as
select t_name_A,t_col,t_type,t_comment,t_name_A||t_col lm
from A;
create table B1 as
select t_name_A,t_name_B,t_col,t_type,t_comment,t_name_A||t_col lm
from B;
然后,根据A1、B1的内容,利用join形成差异统计表数据
create table bd
as
select
a.t_name_A,a.t_col,a.t_type,a.t_comment,a.lm,b.lm b_lm,b.t_name_A b_t_name_A,b.t_name_B,b.t_col b_t_col,b.t_type b_t_type,b.t_comment b_t_comment
from
(select t_name_A,t_col,t_type,t_comment,lm from A1) a
FULL join
(select t_name_A,t_name_F,t_col,t_type,t_comment,lm from B1) b
on a.lm=b.lm;
补充,可以利用all_tab_columns视图,查看出具体表下字段的结构,不过用此视图拼接的话,得到的number类型长度默认为number(22),得到的date类型默认为date(7),还需要手工二次修正。
篇章五:望眼项目读万卷,行万里,面对苍茫,沉心静气,迎新去垢。
——深蓝
在尝试角色变换的日子里,蓝,感受到不曾有过的压力感,同样意识到需要学习的知识和技能,不是一朝一夕就可以达到的。这个需要一段时间来让自己强大起来。
后续的计划,简单中摸索:
(计划1)
熟读百遍的“指导任务书”:想成为团队的掌舵人,就要先把自己的认知丰富起来;
很多时候,重复是最好的老师,把简单的方法量化起来,那就会显得不简单。
(计划2)
学而不思则罔,思而不学则殆:项目建设,技术思维乘风,管理思维破浪;
项目经理既不是技术的实施者,也不是什么事都要自己来的“超人”,把控整个的项目建设才是应该做的,而不要把自己放置到了一个打杂的定位上去。
不要让安逸毁了自己,不要让胆怯混沌了目光,做坚毅的践行者,为项目付诸于一腔热血。
——深蓝
*********************************蓝的成长记系列_20150820*************************************
原创作品,出自 “深蓝的blog” 博客,欢迎转载,转载时请务必注明出处(http://blog.csdn.net/huangyanlong)。
版权声明:本文为博主原创文章,未经博主允许不得转载。
蓝的成长记——追逐DBA(20):何故缘起,建库护航 (二次发布-练习使用markdown编辑)
标签:dba-建库
原文地址:http://blog.csdn.net/huangyanlong/article/details/49110347