您的位置:首页 > 其它

蓝的成长记——追逐DBA(20):何故缘起,建库护航

2015-09-28 03:07 369 查看
原创作品,出自 “深蓝的blog” 博客,欢迎转载,转载时请务必注明出处,否则追究版权法律责任。

深蓝的blog: /article/1551700.html

【前言】

自接触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日志,查看到需要扩充字段长度的表信息,例如:

表名

列名
源数据最大长度
源数据最大长度*1.5
计划扩充长度
CAS_VISITINFO
IS_SUSPICIOUS_INTER
3
4.5
10
CAS_VISITINFO
IS_SUSPICIOUS
3
4.5
10
CAS_VISITINFO
INTER_GENDER
3
4.5
10
CAS_VISITINFO
INTER_VIDEO
3
4.5
10
CAS_VISITINFO
CAR_IS_BROKEN
3
4.5
10
CAS_VISITINFO
CAR_IS_OTHERS
3
4.5
10
CAS_VISITINFO
DRIVER_ISTALK
3
4.5
10
CAS_VISITINFO
INTERVIEWEE
12
18
50
CAS_VISITINFO
VICTIM_GENDY
3
4.5
10
CAS_VISITINFO
VICTIM_NAME
12
18
50
CODE_AREA
NAME
102
153
200
CODE_AREA
SHORTNAME
70
105
200
CODE_CASE_MEANS
SHORTNAME
39
58.5
100
CODE_LAAB
SHORTNAME
39
58.5
100
COO_APPLY_INFO
APPLY_USER_NAME
15
22.5
50
COO_APPLY_INFO
ASSISTANT_NAME
12
18
50
COO_INTRODUTION
INTR_NO
21
31.5
50
DAT_META
TJJG
24
36
50
DAT_META
BSC
12
18
50
DAT_META
DXLC
30
45
50
DAT_META
SM
132
198
200
DAT_META
ZY
110
165
200
DAT_META
GX
122
183
200
DAT_META
SJLX
12
18
50
FOCUS_RMCXX
YWXXLY
15
22.5
50
FOCUS_RYDJFCXX
YW_XXLY
15
22.5
50
HOM_PERSON
JOB_DESC
30
45
50
HOM_PERSON
PSESON_NAME
21
31.5
50
TABLE_COLUMNS_DEFINE
COLUMN_CN
36
54
100
UPLOADFILE
ID
45
67.5
100
根据上面查明的问题,由源端数据库导出相应的建表语句,针对不同问题修改脚本,重新整理补充建表语句,并把需要扩容长度的表手工将其调整结构后,手工创建出来。接下来,执行了目标端补充建表语句。然后,手工抽取字段长度变更表的业务数据。最后对源端、目标端表级数量进行一次统计,数据量相同后确认迁移完成。
迁移第二大部分,表级结构不变,但是大数据量的表,对部分创建分区的数据,以分区的形式dmp导出数据。然后导入到新库下面,最后导出完成后,统计源端、目标端的数据量,确认导出完成。由于该大数据量表数据皆增量来自于不同的业务库,所以后续迁移完成后,调整了数据增量的地址。
而对于迁移第三大部分,涉及到结构变更,就不能使用dmp的方式了,而是选择采用了编写字段对应的方式,使用insert的方式完成数据的迁移任务。

篇章三:字典转换

打开尘封的潘多拉,曾经坚定的梦,原定的路,依然在继续前行。
——深蓝
在本次的建库工作中,不只是需要数据迁移,还需要完成字典转换的任务。原因在于字典类的代码由业务部门进行了重新的调整和统一,所以需要按新标准对字典进行转换。

这次对于字典转换,涉及到两个方面,如下:
第一方面:对于落地数据字典的转换;
第二方面:对于增量的数据,按新标准字典进行转换;

首先需要整理出一套新标准代码与老代码的对应关系,类似格式如下:
字典翻译用表:

范例:表名称:CODE_YEWU 业务平台字典表

root_key
root_name
code
name
old_code
old_name
范例
YSDM
颜色代码
1001
黑色
1
黑色
范例
YSDM
颜色代码
1002
白色
2
黑色
简单的列举一个处理方式,思路上就是使用子查询的方式,如下:

落地数据的转换范例:对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)
学而不思则罔,思而不学则殆:项目建设,技术思维乘风,管理思维破浪;
项目经理既不是技术的实施者,也不是什么事都要自己来的“超人”,把控整个的项目建设才是应该做的,而不要把自己放置到了一个打杂的定位上去。





不要让安逸毁了自己,不要让胆怯混沌了目光,做坚毅的践行者,为项目付诸于一腔热血。
——深蓝


*******************************************蓝的成长记系列[b]_20150820*************************************[/b]

原创作品,出自 “深蓝的blog” 博客,欢迎转载,转载时请务必注明出处(http://blog.csdn.net/huangyanlong)。
蓝的成长记——追逐DBA(1):奔波于路上,挺进山东

蓝的成长记——追逐DBA(2):安装!安装!久违的记忆,引起我对DBA的重新认知

蓝的成长记——追逐DBA(3):古董上操作,数据导入导出成了问题

蓝的成长记——追逐DBA(4):追忆少年情愁,再探oracle安装(Linux下10g、11g)

蓝的成长记——追逐DBA(5):不谈技术谈业务,恼人的应用系统

蓝的成长记——追逐DBA(6):做事与做人:小技术,大为人

蓝的成长记——追逐DBA(7):基础命令,地基之石

蓝的成长记——追逐DBA(8):重拾SP报告,回忆oracle的STATSPACK实验

蓝的成长记——追逐DBA(9):国庆渐去,追逐DBA,新规划,新启程

蓝的成长记——追逐DBA(10):飞刀防身,熟络而非专长:摆弄中间件Websphere

蓝的成长记——追逐DBA(11):回家后的安逸,晕晕乎乎醒了过来

蓝的成长记——追逐DBA(12):七天七收获的SQL

蓝的成长记——追逐DBA(13):协调硬件厂商,六个故事:所见所感的“服务器、存储、交换机......”

蓝的成长记——追逐DBA(14):难忘的“云”端,起步的hadoop部署

蓝的成长记——追逐DBA(15):以为FTP很“简单”,谁成想一波三折

蓝的成长记——追逐DBA(16):DBA也喝酒,被捭阖了

[b]蓝的成长记——追逐DBA(17):是分享,还是消费,在后IOE时代学会成长[/b]

蓝的成长记——追逐DBA(18):小机上WAS集群故障,由一次更换IP引起

蓝的成长记——追逐DBA(19):路上的插曲:触碰“框架”与“软件系统”

蓝的成长记——追逐DBA(20):何故缘起,建库护航*****************************************************************************************************[b]*************[/b]



********************************************足球与oracle系列[b]_20150528***********************************[/b]

原创作品,出自 “深蓝的blog” 博客,欢迎转载,转载时请务必注明出处(http://blog.csdn.net/huangyanlong)。
足球与oracle系列(1):32路诸侯点兵,oracle32进程联盟 之A组巴西SMON进程的大局观

足球与oracle系列(2):巴西揭幕战预演,oracle体系结构杂谈

足球与oracle系列(3):oracle进程排名,世界杯次回合即将战罢!

足球与oracle系列(4):从巴西惨败于德国,想到,差异的RAC拓扑对比!

足球与oracle系列(5):fifa14游戏缺失的directX库类比于oracle的rpm包!

足球与oracle系列(6):伴随建库的亚洲杯——加油中国队

*****************************************************************************************************[b]*************[/b]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: