April 25, 2007
新书定稿与山海雄关
作者:eygle
出处:http://blog.eygle.com
在今天这个离开北京回家的日子,公布一下我的新书的写作进度。
这么长一段时间以来,一直在不停的修订我的书稿,说实话,修订的难度甚至大于写作。
在这个阶段要仔细斟酌与取舍,要确保内容是有益的、确实对读者有用;还要确保内容没有谬误之处,这对于作者是个极大的考验。在写作这本书的过程中,我不断采纳与接受《深入浅出Oracle》一书读者们的建议,并且深有所获,现在翻看《深入浅出Oracle》一书,我甚至觉得,某些内容我实在不应该写入,而有些内容又可以更见深入。现在我对于“对读者有用”这几个有了更深入的理解。
经过这次写作,我自己对书中的很多知识又有了一次全新的体验,在整个写作过程中,甚至对于一些已知的知识又有了很多深入的发现与理解,这包括第8章中对于Oracle闪回机制、计时机制的理解,还包括对于第1章中对数据库创建过程中对于很多知识的理解;经过这次的深入旅行,自己对于Oracle的很多设计理念有了更透彻的理解,很多时候甚至为Oracle的一些细节设计拍案叫绝。所以,写作的过程虽然艰辛,但是绝对深有所得。
到现在为止,我终于可以为这本新书做一个阶段性预告:
截至目前,新书的多次校订与修正工作终于完成,也就是说,这本书已经接近可以出版的边缘。
当然,在出版之前可能还会有一些小的修正,但是整体已经全面竣工。
这本新书包括11章,这些章节分别是:
E:\Itpub丛书\News>ls -l [01]*|awk '{print "Chapter Name "$9}'
Chapter Name 01.创建Oracle数据库.docx
Chapter Name 02.从OEM到iSQLPlus.docx
Chapter Name 03.Oracle的字符集.docx
Chapter Name 04.用户的创建与管理.doc
Chapter Name 05.表空间和数据文件.docx
Chapter Name 06.临时表空间和临时文件.docx
Chapter Name 07.备份与恢复.docx
Chapter Name 08.Oracle的闪回特性.doc
Chapter Name 09.数据的加载和卸载.doc
Chapter Name 10.从statspack到ADDM.docx
Chapter Name 11.故障诊断及分析方法.docx
这些章节中,第一章是全书的书眼,我对Oracle的整个理解由此展开,甚至《深入浅出Oracle》也可以完全包含到这个体系之中;第二章是本着对用户有用的想法来进行写作,其中包含了很多Oracle10g极为有益确鲜为人知的特性;第三章是对以前文章的一个完善和总结,这部分内容对于我的知识体系是不可缺少的;第十章是一次全新的写作,其中的很多内容深具使用价值,读过这一章你一定会觉得深有所值;备份恢复写了100多页还觉得意犹未尽,于是在修订过程中不断压缩并不断扩展,最终以现在的样子来等待读者的评判;第11章从方法论和实践结合的角度来阐释故障诊断和分析方法,希望通过这一章的内容能够将大家的已有知识系统结合起来,从而能够真的做到融会贯通。
总之,当我终于可以长舒一口气的时候,我终于觉得,这本书可以去见它的读者们了。
剩下的,就是请大家多多支持了:)
2007-04-25 23:00 于 Z61次列车 上,火车过一会就会东出天下第一雄关“山海关”,也祝贺自己的新书终于能够冲出自己这一关,准备来到各位读者的面前。
-The End-
Posted by eygle at 10:38 PM | Comments (17)
April 23, 2007
准备回东北 芳菲四月天
作者:eygle
出处:http://blog.eygle.com
4.25日,将回到东北老家,车票已经买好。
Julia的爸爸妈妈,加上我们一家三口,还好小猫咪不用买票,四张软卧车票,一辆直达火车,六个小时旅程,天亮抵达长春。
这次回家,妈妈他们在家里又准备了几桌酒席,权当一次庆祝、一个声明,告诉家乡的父老乡亲,俺业未立,家已成。
在东北老家,四五月间,正是春回大地的时候,农村应该已经开始播种,东北平原的希望在这个季节开始孕育。俺们的小猫咪在这个季节也在加速成长。
准备回家,在芳菲乍起的四月天。
-The End-
Posted by eygle at 10:33 PM | Comments (13)
DBA及系统工程师招聘信息
作者:eygle
出处:http://blog.eygle.com
Note:把这个信息Up上来,朋友公司还没招到人,上次有几个朋友投了简历,但是面试的时候都没去。看看还有没有人感兴趣。
-----------------------------------------------------------------------------------------------
帮朋友发布一个DBA及系统工程师招聘信息。
工作地点为北京,公司简介:
中国认证认可信息网的运营商--北京中认网信息技术有限公司是致力于互联网信息技术、电子商务软件和管理软件开发的高科技企业。
中国认证认可信息网作为认证认可行业的专业性网站,将面向全社会为企业、认证机构、认可机构、检测机构、咨询培训机构和广大消费者提供认证认可领域的最新、最权威的信息。
北京中认网信息技术有限公司在北京设有专门的服务器机房。公司以最快的网络链路、最先进最成熟的技术、最好的服务质量服务于客户。公司技术成员都有长期从事多媒体创作或数据库设计经验,又有丰富的互联网应用经验,对相关技术的运用非常成熟。
北京中认网信息技术有限公司必将为企业、用户、消费者提供更全面的信息,更优质高效的服务。服务于认证认可领域、服务于社会。
如果有兴趣的朋友可以发简历给我( eygle [@] eygle.com ),我可以帮忙推荐,薪资待遇可以面谈。
DBA
职位描述:
数据库系统的规划和管理;
数据库的日常维护、备份、恢复、优化以及安全;
支持,审查数据库的设计和开发
任职资格:
计算机相关专业大学本科以上学历;
具有大型Oracle数据库管理、备份、性能优化、迁移升级工作的经验
具有OCP认证,同时具有其他数据库管理经验者优先;
熟悉数据库备份与恢复,能够熟练使用rman等工具进行数据库的备份恢复,具备数据库管理及SQL优化经验;
熟悉Oracle存储过程和Shell脚本编写;
熟悉LINUX/UNIX,MYSQL,以及访问数据库各种程序接口;
对Oracle数据库内部工作机制有深入了解;
数据库性能的优化与调整,数据库核心参数的设置与调整;
具有DBA认证,熟悉Oracle RAC者优先;
能够处理各种数据库问题
有很好的技术敏感度
良好的学习能力和强烈的进取心
强烈的责任心和时不我待的忧患意识,具有团队精神
思维缜密、思路清晰,较好的逻辑分析能力。
良好的沟通和口头、书面表达能力。
系统工程师
职位描述:
工作职责:
保证业务运营系统的稳定运行与日常维护任务;
负责业务运营备份、存储、容灾系统的规划设计工作,负责业务运营的主机、安全防护的规划管理工作,
参与应用数据库、操作系统等性能、优化与稳定方面测试。
任职资格:
大学本科以上学历,
有丰富的主机与操作系统管理、数据库管理、存储管理与规划、安全管理与规划经验
精通Liunx/AIX/2000/2003Server操作系统
精通中间件webspher/weblogic安装配置及运维管理,精通MQ者优先;
精通Oracle 9i/DB2数据库,可独立安装和升级维护数据库服务器oracle/db2;
精通网络存储系统的设计与规划工作,可根据业务发展情况设计系统存储备份、灾难恢复方案,并制定未来的存储需求计划。
数据库性能的优化与调整,数据库核心参数的设置与调整。
控制和监控用户对数据库的存取访问。
管理维护介质上的存档或者备份数据。
大家有合适的人员也可以帮忙推荐.
-The End-
Posted by eygle at 5:04 PM | Comments (19)
April 21, 2007
在Oracle University大学演讲
作者:eygle
出处:http://blog.eygle.com
今天,和Kamus,Coolyl在Oracle大学搞了一天的免费培训活动,在现场的还有Jack.Han,他从广州赶过来,另外一位是OU上海的Han老师。
一天的小课程,我下午有一个小时左右的演讲,演讲的题目是《深入浅出与Oracle之路》,主要是一点经验的分享和一点技术内容的探讨。
现场的气氛很不错,很多朋友是相识的,OU准备了不少的礼物,大家都有了一点小小的收获。
不过OU的教室实在是闷热,热得我汗水涔涔,真应该投诉一下。
很久没有讲课,一个小时将下来,还是觉得有一点点的辛苦。
不过还是满开心的一天,下课之后,Jack请大家在小王府撮了一顿,菜色不错,饱餐而归:)
btw:今天看到biti和dcba的ACE信息已经在OTN上登出,顺便恭喜一下。
-The End-
Posted by eygle at 10:31 PM | Comments (6)
悼念我的第一次淘宝购物经历
作者:eygle
出处:http://blog.eygle.com
我的第一次淘宝购物,终于以失败而告终。
昨天被卖家告知,货没有搞定,请我们去申请退款。天啊,我还不知道怎么申请退款,Alipay也是刚刚申请的。好在D400的买家建立了一个群,有人告诉我如何去申请退款。
晚上有时间,上网去申请,结果还要填写银行卡的开户行信息,打电话去银行查询,第一次知道了自己卡片的开户行名称。顺利申请了退款。
总结一下,这次失败的购物经历中,有以下几点收获:
1.了解了淘宝的购物流程
2.开通了支付宝帐号
3.确认了自己银行卡的开户行信息
4.了解了网络购物的不确定性
5.安装了阿里旺旺-又一个IM工具
希望自己以后还能有机会再次在淘宝上交易。
阿门!
-The End-
Posted by eygle at 11:39 AM | Comments (3)
April 20, 2007
DBA警世录:人祸猛于虎
作者:eygle
出处:http://blog.eygle.com
传说中的故障,终于又见到有人遇到了。
今天在Thomas Zhang的杂货铺上看到这样一则故障:
存储厂商过来划分存储,不小心将已经在用的盘重新划分,导致2个应用测试库和一个培训库瘫痪。万幸的是没把生产库也给搞掉[在一个阵列上]。
这真是一场千载难逢的灾难,也幸好还有万幸。
咋就有那么多不认真的工程师呢?存储厂商的工程师的操作也太草率了。
除此之外,我们不应该让存储厂商的工程师随意操作啊,DBA、SA的核查也是必不可少的。
记得我以前收录过一句话:
Don't believe a customer when they say they didn't do it. Get evidence.
我们也不应该相信任何第三方工程师,一定要自己确认後才能进行操作。
不过我接触的EMC工程师一般都比较慎重,不知道Tomas的存储是哪一家的?
收录于此,引以为戒!
-The End-
Posted by eygle at 11:41 AM | Comments (5)
April 19, 2007
Oracle中独一无二的Cache对象
作者:eygle
出处:http://blog.eygle.com
在Oracle10g之前,数据库中存在一个独一无二的Cache对象,这个对象就是:SQL> select segment_name,segment_type,header_file,header_block
2 from dba_segments where segment_type='CACHE';
SEGMENT_NAME SEGMENT_TYPE HEADER_FILE HEADER_BLOCK
-------------------- ------------------ ----------- ------------
1.417 CACHE 1 417
这个对象的名称来自于文件号和数据块号,1.417正好就是文件1的第417个数据块。
这个Cache对象在Oracle数据库中的含义非同一般,在bootstrap$的过程中,这个对象之前的所有对象都需要用来bootstrap。
我们看一下1.417之前的所有对象:
SQL> select b.object_id,a.segment_name,a.segment_type,a.header_block from dba_segments a,dba_objects b
2 where a.segment_name=b.object_name(+) and a.header_file=1 and a.header_block <= 417
3 order by a.header_block
4 /
OBJECT_ID SEGMENT_NAME SEGMENT_TYPE HEADER_BLOCK
---------- -------------------- ------------------ ------------
SYSTEM ROLLBACK 9
2 C_OBJ# CLUSTER 25
3 I_OBJ# INDEX 49
6 C_TS# CLUSTER 57
7 I_TS# INDEX 65
8 C_FILE#_BLOCK# CLUSTER 73
9 I_FILE#_BLOCK# INDEX 81
10 C_USER# CLUSTER 89
11 I_USER# INDEX 97
15 UNDO$ TABLE 105
17 FILE$ TABLE 113
18 OBJ$ TABLE 121
23 PROXY_DATA$ TABLE 129
24 I_PROXY_DATA$ INDEX 137
25 PROXY_ROLE_DATA$ TABLE 145
26 I_PROXY_ROLE_DATA$_1 INDEX 153
27 I_PROXY_ROLE_DATA$_2 INDEX 161
28 CON$ TABLE 169
29 C_COBJ# CLUSTER 177
30 I_COBJ# INDEX 185
OBJECT_ID SEGMENT_NAME SEGMENT_TYPE HEADER_BLOCK
---------- -------------------- ------------------ ------------
33 I_TAB1 INDEX 193
34 I_UNDO1 INDEX 201
35 I_UNDO2 INDEX 209
36 I_OBJ1 INDEX 217
37 I_OBJ2 INDEX 225
38 I_OBJ3 INDEX 233
39 I_IND1 INDEX 241
40 I_ICOL1 INDEX 249
41 I_FILE1 INDEX 257
42 I_FILE2 INDEX 265
43 I_TS1 INDEX 273
44 I_USER1 INDEX 281
45 I_COL1 INDEX 289
46 I_COL2 INDEX 297
47 I_COL3 INDEX 305
48 I_CON1 INDEX 313
49 I_CON2 INDEX 321
50 I_CDEF1 INDEX 329
51 I_CDEF2 INDEX 337
52 I_CDEF3 INDEX 345
53 I_CDEF4 INDEX 353
OBJECT_ID SEGMENT_NAME SEGMENT_TYPE HEADER_BLOCK
---------- -------------------- ------------------ ------------
54 I_CCOL1 INDEX 361
55 I_CCOL2 INDEX 369
56 BOOTSTRAP$ TABLE 377
1.417 CACHE 417
45 rows selected
一共有44个对象。我们再来看一下初始化过程中bootstrap$中的信息:
SQL> select * from bootstrap$ order by obj#;
LINE# OBJ# SQL_TEXT
---------- ---------- --------------------------------------------------------------------------------
-1 -1 8.0.0.0.0
0 0 CREATE ROLLBACK SEGMENT SYSTEM STORAGE ( INITIAL 112K NEXT 1024K MINEXTENTS 1 M
2 2 CREATE CLUSTER C_OBJ#("OBJ#" NUMBER) PCTFREE 5 PCTUSED 40 INITRANS 2 MAXTRANS 25
3 3 CREATE INDEX I_OBJ# ON CLUSTER C_OBJ# PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE
4 4 CREATE TABLE TAB$("OBJ#" NUMBER NOT NULL,"DATAOBJ#" NUMBER,"TS#" NUMBER NOT NULL
5 5 CREATE TABLE CLU$("OBJ#" NUMBER NOT NULL,"DATAOBJ#" NUMBER,"TS#" NUMBER NOT NULL
6 6 CREATE CLUSTER C_TS#("TS#" NUMBER) PCTFREE 10 PCTUSED 40 INITRANS 2 MAXTRANS 255
7 7 CREATE INDEX I_TS# ON CLUSTER C_TS# PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE (
8 8 CREATE CLUSTER C_FILE#_BLOCK#("TS#" NUMBER,"SEGFILE#" NUMBER,"SEGBLOCK#" NUMBER)
9 9 CREATE INDEX I_FILE#_BLOCK# ON CLUSTER C_FILE#_BLOCK# PCTFREE 10 INITRANS 2 MAXT
10 10 CREATE CLUSTER C_USER#("USER#" NUMBER) PCTFREE 10 PCTUSED 40 INITRANS 2 MAXTRANS
11 11 CREATE INDEX I_USER# ON CLUSTER C_USER# PCTFREE 10 INITRANS 2 MAXTRANS 255 STORA
12 12 CREATE TABLE FET$("TS#" NUMBER NOT NULL,"FILE#" NUMBER NOT NULL,"BLOCK#" NUMBER
13 13 CREATE TABLE UET$("SEGFILE#" NUMBER NOT NULL,"SEGBLOCK#" NUMBER NOT NULL,"EXT#"
14 14 CREATE TABLE SEG$("FILE#" NUMBER NOT NULL,"BLOCK#" NUMBER NOT NULL,"TYPE#" NUMBE
15 15 CREATE TABLE UNDO$("US#" NUMBER NOT NULL,"NAME" VARCHAR2(30) NOT NULL,"USER#" NU
16 16 CREATE TABLE TS$("TS#" NUMBER NOT NULL,"NAME" VARCHAR2(30) NOT NULL,"OWNER#" NUM
17 17 CREATE TABLE FILE$("FILE#" NUMBER NOT NULL,"STATUS$" NUMBER NOT NULL,"BLOCKS" NU
18 18 CREATE TABLE OBJ$("OBJ#" NUMBER NOT NULL,"DATAOBJ#" NUMBER,"OWNER#" NUMBER NOT N
19 19 CREATE TABLE IND$("OBJ#" NUMBER NOT NULL,"DATAOBJ#" NUMBER,"TS#" NUMBER NOT NULL
LINE# OBJ# SQL_TEXT
---------- ---------- --------------------------------------------------------------------------------
20 20 CREATE TABLE ICOL$("OBJ#" NUMBER NOT NULL,"BO#" NUMBER NOT NULL,"COL#" NUMBER NO
21 21 CREATE TABLE COL$("OBJ#" NUMBER NOT NULL,"COL#" NUMBER NOT NULL,"SEGCOL#" NUMBER
22 22 CREATE TABLE USER$("USER#" NUMBER NOT NULL,"NAME" VARCHAR2(30) NOT NULL,"TYPE#"
23 23 CREATE TABLE PROXY_DATA$("CLIENT#" NUMBER NOT NULL,"PROXY#" NUMBER NOT NULL,"CRE
24 24 CREATE UNIQUE INDEX I_PROXY_DATA$ ON PROXY_DATA$(CLIENT#,PROXY#) PCTFREE 10 INIT
25 25 CREATE TABLE PROXY_ROLE_DATA$("CLIENT#" NUMBER NOT NULL,"PROXY#" NUMBER NOT NULL
26 26 CREATE INDEX I_PROXY_ROLE_DATA$_1 ON PROXY_ROLE_DATA$(CLIENT#,PROXY#) PCTFREE 10
27 27 CREATE UNIQUE INDEX I_PROXY_ROLE_DATA$_2 ON PROXY_ROLE_DATA$(CLIENT#,PROXY#,ROLE
28 28 CREATE TABLE CON$("OWNER#" NUMBER NOT NULL,"NAME" VARCHAR2(30) NOT NULL,"CON#" N
29 29 CREATE CLUSTER C_COBJ#("OBJ#" NUMBER) PCTFREE 0 PCTUSED 50 INITRANS 2 MAXTRANS 2
30 30 CREATE INDEX I_COBJ# ON CLUSTER C_COBJ# PCTFREE 10 INITRANS 2 MAXTRANS 255 STORA
31 31 CREATE TABLE CDEF$("CON#" NUMBER NOT NULL,"OBJ#" NUMBER NOT NULL,"COLS" NUMBER,"
32 32 CREATE TABLE CCOL$("CON#" NUMBER NOT NULL,"OBJ#" NUMBER NOT NULL,"COL#" NUMBER N
33 33 CREATE INDEX I_TAB1 ON TAB$(BOBJ#) PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE (
34 34 CREATE UNIQUE INDEX I_UNDO1 ON UNDO$(US#) PCTFREE 10 INITRANS 2 MAXTRANS 255 STO
35 35 CREATE INDEX I_UNDO2 ON UNDO$(NAME) PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE (
36 36 CREATE UNIQUE INDEX I_OBJ1 ON OBJ$(OBJ#) PCTFREE 10 INITRANS 2 MAXTRANS 255 STOR
37 37 CREATE UNIQUE INDEX I_OBJ2 ON OBJ$(OWNER#,NAME,NAMESPACE,REMOTEOWNER,LINKNAME,SU
38 38 CREATE INDEX I_OBJ3 ON OBJ$(OID$) PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE (
39 39 CREATE UNIQUE INDEX I_IND1 ON IND$(OBJ#) PCTFREE 10 INITRANS 2 MAXTRANS 255 STOR
40 40 CREATE INDEX I_ICOL1 ON ICOL$(OBJ#) PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE (
LINE# OBJ# SQL_TEXT
---------- ---------- --------------------------------------------------------------------------------
41 41 CREATE UNIQUE INDEX I_FILE1 ON FILE$(FILE#) PCTFREE 10 INITRANS 2 MAXTRANS 255 S
42 42 CREATE UNIQUE INDEX I_FILE2 ON FILE$(TS#,RELFILE#) PCTFREE 10 INITRANS 2 MAXTRAN
43 43 CREATE UNIQUE INDEX I_TS1 ON TS$(NAME) PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAG
44 44 CREATE UNIQUE INDEX I_USER1 ON USER$(NAME) PCTFREE 10 INITRANS 2 MAXTRANS 255 ST
45 45 CREATE UNIQUE INDEX I_COL1 ON COL$(OBJ#,NAME) PCTFREE 10 INITRANS 2 MAXTRANS 255
46 46 CREATE INDEX I_COL2 ON COL$(OBJ#,COL#) PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAG
47 47 CREATE UNIQUE INDEX I_COL3 ON COL$(OBJ#,INTCOL#) PCTFREE 10 INITRANS 2 MAXTRANS
48 48 CREATE UNIQUE INDEX I_CON1 ON CON$(OWNER#,NAME) PCTFREE 10 INITRANS 2 MAXTRANS 2
49 49 CREATE UNIQUE INDEX I_CON2 ON CON$(CON#) PCTFREE 10 INITRANS 2 MAXTRANS 255 STOR
50 50 CREATE UNIQUE INDEX I_CDEF1 ON CDEF$(CON#) PCTFREE 10 INITRANS 2 MAXTRANS 255 ST
51 51 CREATE INDEX I_CDEF2 ON CDEF$(OBJ#) PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE (
52 52 CREATE INDEX I_CDEF3 ON CDEF$(ROBJ#) PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE
53 53 CREATE INDEX I_CDEF4 ON CDEF$(ENABLED) PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAG
54 54 CREATE INDEX I_CCOL1 ON CCOL$(CON#,COL#) PCTFREE 10 INITRANS 2 MAXTRANS 255 STOR
55 55 CREATE UNIQUE INDEX I_CCOL2 ON CCOL$(CON#,INTCOL#) PCTFREE 10 INITRANS 2 MAXTRAN
56 56 CREATE TABLE BOOTSTRAP$("LINE#" NUMBER NOT NULL,"OBJ#" NUMBER NOT NULL,"SQL_TEXT
57 rows selected
bootstarp的对象都是在1.417之前的,当然有部分对象是基于Cluster创建的。
那么这个对象在启动之前有什么作用呢?
itpub上的jametong同学给出了一个重要的信息,在SYSTEM文件头,Oracle存储了一个root dba:
Root dba: This field only occurs in data file #1, and is the location of blocks required
during bootstrapping the data dictionary (bootstrap$)
这个root dba指向了1.417对象,而1.417对象的上一个对象正是bootstrap$,Oracle通过1.417找到了bootstrap$对象就可以启动了数据库。
我们可以从文件头的转储中找到这个root dba,以下是一个Oracle9i的数据文件头信息:
DATA FILE #1:
(name #9) /opt/oracle/oradata/eygle/system01.dbf
creation size=0 block size=8192 status=0xe head=9 tail=9 dup=1
tablespace 0, index=1 krfil=1 prev_file=0
unrecoverable scn: 0x0004.6c4b5cba 04/10/2007 13:34:26
Checkpoint cnt:6933 scn: 0x0004.6c4dfc0c 04/16/2007 14:38:05
Stop scn: 0xffff.ffffffff 04/07/2007 21:03:02
Creation Checkpointed at scn: 0x0000.00000007 04/24/2006 11:34:39
thread:0 rba:(0x0.0.0)
enabled threads: 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000
Offline scn: 0x0004.6c432ebf prev_range: 0
Online Checkpointed at scn: 0x0004.6c432ec0 03/28/2007 11:22:37
thread:1 rba:(0x1.2.0)
enabled threads: 01000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000
Hot Backup end marker scn: 0x0000.00000000
aux_file is NOT DEFINED
FILE HEADER:
Software vsn=153092096=0x9200000, Compatibility Vsn=134217728=0x8000000
Db ID=1407686520=0x53e79778, Db Name='EYGLE'
Activation ID=0=0x0
Control Seq=1299557=0x13d465, File size=27017=0x6989
File Number=1, Blksiz=8192, File Type=3 DATA
Tablespace #0 - SYSTEM rel_fn:1
Creation at scn: 0x0000.00000007 04/24/2006 11:34:39
Backup taken at scn: 0x0004.6c2d657e 02/12/2007 15:54:52 thread:1
reset logs count:0x24dc1f7d scn: 0x0004.6c432ec0 recovered at 04/07/2007 21:04:11
status:0x4 root dba:0x004001a1 chkpt cnt: 6933 ctl cnt:6932
begin-hot-backup file size: 32000
Checkpointed at scn: 0x0004.6c4dfc0c 04/16/2007 14:38:05
thread:1 rba:(0x17.2.10)
enabled threads: 01000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000
Backup Checkpointed at scn: 0x0004.6c2d657e 02/12/2007 15:54:52
thread:1 rba:(0x18e1.30.10)
enabled threads: 01000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000
External cache id: 0x0 0x0 0x0 0x0
Absolute fuzzy scn: 0x0000.00000000
Recovery fuzzy scn: 0x0000.00000000 01/01/1988 00:00:00
Terminal Recovery Stamp scn: 0x0000.00000000 01/01/1988 00:00:00
这个root dba:0x004001a1 正好指向的是file 1 block 417
而我们dump file 1 block 417就可以找到bootstrap$的地址:
Start dump data blocks tsn: 0 file#: 1 minblk 417 maxblk 419
buffer tsn: 0 rdba: 0x004001a1 (1/417)
scn: 0x0004.6c47f014 seq: 0x01 flg: 0x04 tail: 0xf0140d01
frmt: 0x02 chkval: 0xa59e type: 0x0d=Compatibility segment
Header: size 12 next rdba 0x0 entries 25 offset 536f
Compatibility entry for 'COMPATSG':
Size: 24 Release 0x134217728 By 0x153092096
Dump of memory from 0x0AA84E34 to 0x0AA84E38
AA84E30 00000000 [....]
Compatibility entry for 'BOOTSTRP':
Size: 24 Release 0x134217728 By 0x153092096
Dump of memory from 0x0AA84E4C to 0x0AA84E50
AA84E40 00400179 [y.@.]
Compatibility entry for 'UNDODATA':
Size: 36 Release 0x153092096 By 0x153092096
Dump of memory from 0x0AA84E64 to 0x0AA84E74
AA84E60 00000042 5221003E 6C47F00D [B...>.!R..Gl]
AA84E70 00000004 [....]
dba号00400179 正好指向的file 1 block 377.
在Oracle10g中,Oracle将这个root dba更改得更为直接:
DATA FILE #1:
(name #7) +ORADG/danaly/datafile/system.264.600173859
creation size=38400 block size=8192 status=0xe head=7 tail=7 dup=1
tablespace 0, index=1 krfil=1 prev_file=0
unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00
Checkpoint cnt:45507 scn: 0x081a.88397cdd 04/19/2007 10:36:17
Stop scn: 0xffff.ffffffff 01/27/2007 17:56:34
Creation Checkpointed at scn: 0x0000.00000007 09/03/2006 10:57:47
thread:1 rba:(0x1.3.10)
enabled threads: 01000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000
Offline scn: 0x0000.00000000 prev_range: 0
Online Checkpointed at scn: 0x0000.00000000
thread:0 rba:(0x0.0.0)
enabled threads: 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000
Hot Backup end marker scn: 0x0000.00000000
aux_file is NOT DEFINED
V10 STYLE FILE HEADER:
Compatibility Vsn = 169869568=0xa200100
Db ID=3965153484=0xec5770cc, Db Name='DANALY'
Activation ID=0=0x0
Control Seq=2912565=0x2c7135, File size=84180=0x148d4
File Number=1, Blksiz=8192, File Type=3 DATA
Tablespace #0 - SYSTEM rel_fn:1
Creation at scn: 0x0000.00000007 09/03/2006 10:57:47
Backup taken at scn: 0x0000.00000000 01/01/1988 00:00:00 thread:0
reset logs count:0x23c5ed0c scn: 0x0000.00000001 reset logs terminal rcv data:0x0 scn: 0x0000.00000000
prev reset logs count:0x0 scn: 0x0000.00000000 prev reset logs terminal rcv data:0x0 scn: 0x0000.00000000
recovered at 01/28/2007 21:29:12
status:0x2004 root dba:0x00400179 chkpt cnt: 45507 ctl cnt:45506
begin-hot-backup file size: 0
这里的root dba直接指向了0x00400179 ,也就是file 1 block 377.
随之,这个唯一的Cache的对象在Oracle10g中不复存在。
SQL> select COUNT(*) from dba_segments where segment_type='CACHE';
COUNT(*)
----------
0
那么为什么Oracle10g能够作出这样的变更呢?
如果注意一下我们可以发现,cache对象实际上是为了兼容性目的所保留的,其中的主要信息如下:
*** SESSION ID:(9.149) 2007-04-18 21:32:17.682
Start dump data blocks tsn: 0 file#: 1 minblk 417 maxblk 419
buffer tsn: 0 rdba: 0x004001a1 (1/417)
scn: 0x0004.6c47f014 seq: 0x01 flg: 0x04 tail: 0xf0140d01
frmt: 0x02 chkval: 0xa59e type: 0x0d=Compatibility segment
Header: size 12 next rdba 0x0 entries 25 offset 536f
Compatibility entry for 'COMPATSG':
Size: 24 Release 0x134217728 By 0x153092096
Dump of memory from 0x0AA84E34 to 0x0AA84E38
AA84E30 00000000 [....]
Compatibility entry for 'BOOTSTRP':
Size: 24 Release 0x134217728 By 0x153092096
Dump of memory from 0x0AA84E4C to 0x0AA84E50
AA84E40 00400179 [y.@.]
Compatibility entry for 'UNDODATA':
Size: 36 Release 0x153092096 By 0x153092096
Dump of memory from 0x0AA84E64 to 0x0AA84E74
AA84E60 00000042 5221003E 6C47F00D [B...>.!R..Gl]
AA84E70 00000004 [....]
Compatibility entry for 'LMST':
Size: 20 Release 0x153092096 By 0x153092096
Compatibility entry for 'PDMLITLS':
Size: 20 Release 0x150994944 By 0x153092096
Compatibility entry for 'LOB_RET':
Size: 20 Release 0x153092096 By 0x153092096
Compatibility entry for 'NWIMGFMT':
Size: 20 Release 0x135266304 By 0x153092096
Compatibility entry for 'FASTDROP':
Size: 20 Release 0x135290880 By 0x153092096
Compatibility entry for 'LOCMGDTS':
Size: 20 Release 0x135266304 By 0x153092096
Compatibility entry for 'UNDOTBSP':
Size: 20 Release 0x150994944 By 0x153092096
Compatibility entry for 'TEMPTAB':
Size: 20 Release 0x135266304 By 0x153092096
Compatibility entry for 'PGTMGDTS':
Size: 20 Release 0x150999808 By 0x153092096
Compatibility entry for 'DATETIME':
Size: 20 Release 0x135266304 By 0x153092096
Compatibility entry for 'OPERATOR':
Size: 20 Release 0x135266304 By 0x153092096
Compatibility entry for 'VYCLOB':
Size: 20 Release 0x135266304 By 0x153092096
Compatibility entry for 'SEVTRIG':
Size: 20 Release 0x135266304 By 0x153092096
Compatibility entry for 'RLENG':
Size: 20 Release 0x153092096 By 0x153092096
Compatibility entry for 'APPCTX':
Size: 20 Release 0x135266304 By 0x153092096
Compatibility entry for 'HSC':
Size: 20 Release 0x153092096 By 0x153092096
Compatibility entry for 'BMINVPRT':
Size: 20 Release 0x135266304 By 0x153092096
Compatibility entry for 'EDTRIG':
Size: 20 Release 0x135290880 By 0x153092096
Compatibility entry for 'EXTTAB':
Size: 20 Release 0x150994944 By 0x153092096
Compatibility entry for 'JAVA':
Size: 20 Release 0x135266304 By 0x153092096
Compatibility entry for 'WRDIR':
Size: 20 Release 0x150994944 By 0x153092096
Compatibility entry for 'PLUGTS':
Size: 20 Release 0x135266304 By 0x153092096
buffer tsn: 0 rdba: 0x004001a2 (1/418)
这个信息和v$compatseg的信息完全相同:
SQL> select * from V$COMPATSEG;
TYPE_ID RELEASE UPDATED
-------- -------------------- --------------------
COMPATSG 8.0.0.0.0 9.2.0.0.0
BOOTSTRP 8.0.0.0.0 9.2.0.0.0
UNDODATA 9.2.0.0.0 9.2.0.0.0
LMST 9.2.0.0.0 9.2.0.0.0
PDMLITLS 9.0.0.0.0 9.2.0.0.0
LOB_RET 9.2.0.0.0 9.2.0.0.0
NWIMGFMT 8.1.0.0.0 9.2.0.0.0
FASTDROP 8.1.6.0.0 9.2.0.0.0
LOCMGDTS 8.1.0.0.0 9.2.0.0.0
UNDOTBSP 9.0.0.0.0 9.2.0.0.0
TEMPTAB 8.1.0.0.0 9.2.0.0.0
PGTMGDTS 9.0.1.3.0 9.2.0.0.0
DATETIME 8.1.0.0.0 9.2.0.0.0
OPERATOR 8.1.0.0.0 9.2.0.0.0
VYCLOB 8.1.0.0.0 9.2.0.0.0
SEVTRIG 8.1.0.0.0 9.2.0.0.0
RLENG 9.2.0.0.0 9.2.0.0.0
APPCTX 8.1.0.0.0 9.2.0.0.0
HSC 9.2.0.0.0 9.2.0.0.0
BMINVPRT 8.1.0.0.0 9.2.0.0.0
TYPE_ID RELEASE UPDATED
-------- -------------------- --------------------
EDTRIG 8.1.6.0.0 9.2.0.0.0
EXTTAB 9.0.0.0.0 9.2.0.0.0
JAVA 8.1.0.0.0 9.2.0.0.0
WRDIR 9.0.0.0.0 9.2.0.0.0
PLUGTS 8.1.0.0.0 9.2.0.0.0
25 rows selected
所以在启动数据库时要读取这个信息是因为在每个数据文件头都记录有兼容性信息,如果兼容性设置改变,在数据库启动之前,Oracle需要去更新每个文件头,所以这个信息必须被优先读取。
在Oracle10g中,由于兼容性特典的变更,'V$COMPATSEG'已经不再存在,所以
SQL> select count(*) from dba_objects where object_name='V$COMPATSEG';
COUNT(*)
----------
0
由于这个变化,CACHE对象不再需要,root dba的指向也由此改变。
-The End-
Posted by eygle at 4:44 PM | Comments (15)
April 18, 2007
光纤通道故障导致数据库崩溃
作者:eygle
出处:http://blog.eygle.com
早上一到公司,同事告知,昨晚一台SUN4500上的数据库Crash了。
故障是由于光纤通道问题导致,在系统日志中记录了如下信息:
socal: [ID 403145 kern.info] ID[SUNWssa.socal.link.5010] socal1: port 1: Fibre Channel is OFFLINE
scsi: [ID 243001 kern.warning] WARNING: /sbus@3,0/SUNW,socal@0,0/sf@1,0 (sf3):
Offline Timeout
scsi: [ID 243001 kern.info] /sbus@3,0/SUNW,socal@0,0/sf@1,0 (sf3):
target 0x1 al_pa 0xe8 lun 0 offlined
scsi: [ID 107833 kern.warning] WARNING: /sbus@3,0/SUNW,socal@0,0/sf@1,0/ssd@w50020f2300007f86,0 (ssd0):
ssdrestart transport failed (fffffffe)
socal: [ID 403145 kern.info] ID[SUNWssa.socal.link.6010] socal1: port 1: Fibre Channel Loop is ONLINE
socal: [ID 403145 kern.info] ID[SUNWssa.socal.link.5010] socal1: port 1: Fibre Channel is OFFLINE
socal: [ID 403145 kern.info] ID[SUNWssa.socal.link.6010] socal1: port 1: Fibre Channel Loop is ONLINE
数据库日志中记录如下信息:
Tue Apr 17 23:12:46 2007
Thread 1 advanced to log sequence 572945
Current log# 2 seq# 572945 mem# 0: /u01/oracle/oradata/hysms02/redo02.log
LGWR: terminating instance due to error 340
Wed Apr 18 01:36:08 2007
KCF: write/open error block=0x455f5 online=1
file=75 /u01/oracle8/oradata/hysms02/rbs02.dbf
error=27072 txt: 'SVR4 Error: 5: I/O error
Additional information: 284149'
Wed Apr 18 01:36:08 2007
Instance terminated by LGWR, pid = 527
故障过程是光纤通道Offline,导致LGWR写失败,LGWR中止了数据库。随后光纤通道自动恢复正常,数据库能够重新启动,经过如下恢复过程:
Wed Apr 18 02:44:37 2007
ALTER DATABASE OPEN
Beginning crash recovery of 1 threads
Wed Apr 18 02:44:40 2007
Thread recovery: start rolling forward thread 1
Recovery of Online Redo Log: Thread 1 Group 2 Seq 572945 Reading mem 0
Mem# 0 errs 0: /u01/oracle/oradata/hysms02/redo02.log
Wed Apr 18 02:46:35 2007
Thread recovery: finish rolling forward thread 1
Thread recovery: 5129 blocks read, 4998 blocks written
Crash recovery completed successfully
Picked broadcast on commit scheme to generate SCNs
这台SUN 4500 + T3已经服务了5年多,进入了故障多发期,故障发生时,该主机已经持续运行了497天左右:
oracle:/oracle/oracle8>uptime
9:51am up 497 day(s), 10:50, 6 users, load average: 3.21, 3.06, 3.09
-The End-
Posted by eygle at 9:25 AM | Comments (6)
April 17, 2007
纪念我的第一次淘宝购物
作者:eygle
出处:http://blog.eygle.com
昨天,在淘宝上购买了自己的第一件宝贝-佳能 EOS 400D套机,通过支付宝支付了定金。
虽然有很多朋友在淘宝、阿里和支付宝工作,但是一直也没有注册支付宝的帐号,也没有进行过任何的淘宝交易。
不过最近朋友推荐的这块Canon EOS 400D,让我动了心,马上注册了一个支付宝帐号,下单,完成了第一笔淘宝交易。

这款相机据朋友们介绍,性能及价位都相当不错,所以这个卖家一推出来5台的团购转眼被抢购一空,继而推出的15台也于一天只能售空,卖家现在又推出10台的团购,真是生意兴隆啊。
现在开始等卖家发货,希望这第一次的淘宝交易能够顺利完成。
-The End-
Posted by eygle at 1:46 PM | Comments (28)
April 16, 2007
将在阿里巴巴"中国网络工程师侠客行"大会演讲
作者:eygle
出处:http://blog.eygle.com
感谢Piner和Biti以及诸位阿里朋友的推荐,下个月将要出席阿里巴巴举行的“首届中国网络工程师侠客行大会暨中国互联网技术精英论坛”。
关于这个大会,Fenng和Chedong都已经做过了宣传:)
关于大会这个名字-“首届中国网络工程师侠客行大会”,我觉得颇值得商榷,如果断句为"首届中国网络,工程师侠客行大会"则更为妥当一些,如果是“网络工程师”,被狭义解读,则可能会让大家觉得范围有些歧义。

在这次大会上,会议主办方为我安排了一个讲演时间,关于这个讲演题目颇费了一番思量,阿里是一个DBA高手云集之地,到这样的地方演讲对我实在是一个考验,周末陪着老婆在公园里转了两天,还不时思考这个题目的问题;直到今天下午再次收到阿里的MM催促的邮件,才蓦然想到一个题目:Oracle Database 10g:开启全方位性能优化的时代
最近在写作我的新书,对于Oracle10g的很多变革及巨大改进有了更深一步的体会,有时候不禁为Oracle的某些想法及技术规划拍案叫绝,所以趁此机会,把自己的一些体会和大家就此分享一下吧。这个演讲将是框架性及细节性的一个结合,对于非技术人员,我希望大家能够了解一下Oracle的优化结构及变迁,这个是具有普遍参考意义的;对于Oracle技术人员,我则可以和大家分享一下我的一些有意思的思考和研究。希望能把这个普通的题目讲出一点新东西。
当然参加这次会议最主要的,可以在人间天堂的杭州,相会众多的老朋友。
国内的技术会议慢慢多了起来,这真是一个好的现象,几个月内我参加过的就已经有:
2006年12月1日,中国软件技术大会
2007年1月19-20日:2007中国开发者精英论坛-暨ITPUB/IXPUB年会
2007年4月6日:2007中国软件技术英雄会-暨CSDN社区英雄榜颁奖典礼
ITPUB和CSDN的大会都是以社区为主,而阿里这次大会明显规模要更庞大,嘉宾也全是重量级人物(除了俺),看看会议的名字也要气派了许多:
2007年5月19-20日:首届中国网络工程师侠客行大会暨中国互联网技术精英论坛”
希望通过这些会议的组织和推动,中国的技术气氛能够慢慢成熟起来。也同时预祝“侠客行”大会能够圆满成功。
对了,马云有没有考虑给每个参会嘉宾分配一个侠客id呢?
-The End-
Posted by eygle at 3:51 PM | Comments (12)

