123
 123

2008-01-10 Thu

22:31 纪念我的第一次淘宝成功购物 (1977 Bytes) » Oracle Life

©作者:eygle 发布在 eygle.com

上一次打算在淘宝上购买Canon 400D,结果被卖家放了鸽子,第一次淘宝交易以失败而告终。

最近装修完房子,有一些净化剂、活性炭之类的东西要买,在Julia的怂恿下,再一次尝试去淘宝购物。
这一次首先买了一块移动硬盘(之前一块80G的硬盘Over了,损失了不少数据),现在硬盘的价格的确是低,160G的移动硬盘只需要578元:

昨天已经到货,质量及性能都不错,推荐一下店主的这个宝贝
发现在淘宝上购物还的确是价廉物美的。

-The End-

相关文章|Related Articles

评论数量(0)|Add Comments

本文网址:

22:25 新书简介,作者简介,新书目录 (9159 Bytes) » dba on unix

下午动身去北京,明天就可以见到新书了,我也是第一次见到新书,相信出版社,印刷肯定很不错。

现在公布新书简介,作者简介与新书目录,新书目录在itpub其实早就公布过了,详细信息见:ITPUB技术丛书第五册《构建Oracle高可用环境》即将出版

新书简介

==============================

本书总结了作者多年以来Oracle高可用数据库的管理经验,特别是近些年来在淘宝网工作的大量实战经验。在写作过程中作者还参考了大量的资料与文献,希望给读者带来更多的收获。淘宝网作为亚洲最大的网络购物平台,后台数据库必须保证每天大量实时性交易的高可靠性,在高可用性上的要求也是显而易见的。因此,本书在帮助您学习Oracle高可用性方面极具参考价值。本书不仅仅适合于有高可用需求的 Oracle DBA,有些章节甚至适合于有Oracle高可用需求的系统管理员、系统构架师,以及管理者和决策者。

本书内容包括:

Oracle本身的高可用特性:RAC技术、Data guard技术、Streams技术、主机HA技术等

Oracle周边辅助环境的高可用性:存储高可用环境、主机高可用环境等

构架思想:高可用设计思想、数据容灾与分级存储的思想、数据迁移思想、高可用监控构架思想等

关于本书更多信息请访问作者个人站点:http://www.ixdba.com

作者简介

==============================

陈吉平(Piner)目前任职于淘宝网,拥有多年的Oracle数据库开发管理经验。2000年大学毕业后就从事于数据库开发,后转向数据库管理。2004年来到淘宝网,见证了淘宝网由小到大的成长历程。现任淘宝DBA团队管理者,负责后台数据库(OLTP)以及数据仓库(OLAP)的维护和开发支持,并决心带领团队成员一起打造中国最强大的DBA团队。

作者实践经验丰富,精通数据库管理、备份与恢复、容灾等高可用性设计与规划;精通高并发、高压力访问下的高可用OLTP数据库环境的优化与维护。具备优秀的数据库构架设计能力与创新能力,自主研发的技术曾获得国家专利保护。

2001-2002年,在CSDN担任Oracle数据库版大版主,并多次在《程序员》杂志上发表文章。

2002年,获得Oracle 8i OCP证书。

2004年,撰写《Oracle数据库DBA专题技术精粹》其中3章。同年正式入职淘宝,并任ITPUB数据库管理版版主。在此期间,多次担任ITPUB讲师,传授Oracle管理与Oracle高可用性知识。

2005年,撰写《Oracle数据库性能优化》其中的2章。

2007年,被Oracle公司授予Oracle ACE称号。

新书目录

==============================

第1篇  高可用性篇 1
第1章  什么是Oracle高可用环境 3
1.1  理解Oracle数据库 5
1.2  Oracle高可用特性(High Availability) 40
1.3  搭建高可用的周边辅助环境 50
1.4  高可用应用设计 53
1.5  高可用数据库设计 55
1.6  高可用性案例 63
1.7  总结 66
第2章  Oracle高可用性之辅助环境 67
2.1  存储的选择与规划 68
2.2  网络存储技术 97
2.3  主机的选择与规划 105
2.4  操作系统与存储管理 115
2.5  高可用环境硬件选型案例分析 124
2.6  总结 126
第3章  Oracle高可用之容灾与分级存储 127
3.1  容灾 128
3.2  容灾案例分析 143
3.3  分级存储 146
3.4  总结 150
第4章  Oracle高可用之RAC介绍 151
4.1  RAC的构架 152
4.2  Oracle 10g/11g中RAC的新特性 158
4.3  RAC的负载均衡 161
4.4  RAC的内部结构与优化 166
4.5  RAC的维护管理 171
4.6  ASM介绍 182
4.7  总结 188
第5章  Oracle高可用之Standby介绍 191
5.1  备用数据库(Standby/Data guard)简介 192
5.2  决定归档的一些参数说明 202
5.3  最大保护模式与最大可用模式 205
5.4  日常管理 207
5.5  主库与备用库的切换 212
5.6  逻辑备用(Logical Standby)库 216
5.7  Standby其他高可用特性 223
5.8  总结 227
第6章  Oracle之Streams介绍 229
6.1  Streams介绍 230
6.2  Streams特性 235
6.3  Streams简单配置 237
6.4  SharePlex与DSG RealSync 251
6.5  总结 253
第7章  高可用性之主机HA 255
7.1  主机HA简介 256
7.2  IBM HACMP简介 262
7.3  Veritas VCS简介 270
7.4  是否应当选择主机HA 272
7.5  总结 273
第8章  Oracle其他高可用特性 275
8.1  Oracle Flashback 276
8.2  Oracle高可用之Logmnr 305
8.3  在线表重定义 311
8.4  总结 321
第2篇  数据处理篇 323
第9章  高可用环境备份方案与策略 325
9.1  高可用环境的备份体系构架 326
9.2  使用导出/导入构建逻辑备份策略 333
9.3  使用RMAN构造物理备份策略 339
9.4  其他RMAN高可用特性 360
9.5  总结 367
第10章  高可用环境下数据迁移 369
10.1  数据迁移方案讨论 370
10.2  数据迁移案例分析 374
10.3  其他迁移方法 388
10.4  总结 398
第11章  高可用环境数据规划 399
11.1  表空间管理 400
11.2  数据规划分布 414
11.3  总结 421
第3篇  性能优化篇 423
第12章  高可用环境下性能优化 425
12.1  Statspack与AWR的介绍 426
12.2  Statspack与AWR的安装与配置 427
12.3  Statspack与AWR的使用 430
12.4  分析报表 432
12.5  Statspack与AWR的扩展 451
12.6  总结 453
第13章  高可用环境下优化案例 455
13.1  优化规则分析 456
13.2  表关联 464
13.3  优化案例分析 467
13.4  怎样选择最适合自己的环境 474
13.5  总结 477
第4篇  系统维护篇 479
第14章  高可用环境锁与并发控制 481
14.1  锁与阻塞 482
14.2  死锁分析 493
14.3  并发控制 503
14.4  总结 510
第15章  高可用环境之在线维护 513
15.1  高可用环境下修正数据(DML) 514
15.2  高可用环境下结构操作(DDL) 521
15.3  测试环境与统计分析数据 535
15.4  总结 539
第5篇  监控体系篇 541
第16章  高可用环境监控构架设计 543
16.1  监控构架设计 545
16.2  构建一个监控构架 554
16.3  分析功能的增强 565
16.4  监控与安全 570
16.5  辅助监控手段 573
16.6  其他监控手段与软件 577
16.7  总结 579
附录A  常见专有名称解释 581
附录B  公共代码 585 5.jpg (79.3 KB)
22:00 Ironic? (2791 Bytes) » The Tom Kyte Blog
I was going to read this article...

Until I got to the bottom of the first (rather short) page and found....

It was 13 PAGES LONG and I'd have to click on the next page for each one.

And I asked myself, how can I do that (click through 13 pages - no next button! I'd have to hit the right number!!) and watch my email and the query I'm running and answer a question on asktom and keep up with the instant message chatter and ..........

Gotta love the title though

"The autumn of the multitaskers: neuroscience is confirming what we all suspect: multitasking is dumbing us down and driving us crazy. One man's odyssey through the nightmare of infinite connectivity."

about the length of the average news article today...



Funny, in conjunction with the article - tonight I was playing a game (called evolution - excellent game, Alan(15) and Megan(12) both enjoy it), and I let Alan put his ipod on my amplifier and play the background music. Alan has excellent taste in music (Led Zeppelin, Beatles, U2, etc...). As the music was playing and I was trying to concentrate on the game (it requires thought) I found the music was distracting to the point of "I cannot play".


What does this mean in practice? Consider a recent experiment at UCLA, where researchers asked a group of 20-somethings to sort index cards in two trials, once in silence and once while simultaneously listening for specific tones in a series of randomly presented sounds. The subjects' brains coped with the additional task by shifting responsibility from the hippocampus-which stores and recalls information--to the striatum, which takes care of rote, repetitive activities. Thanks to this switch, the subjects managed to sort the cards just as well with the musical distraction--but they had a much harder time remembering what, exactly, they'd been sorting once the experiment was over.


I know that feeling - very disjointed. I was listening to the music - because I liked it, and trying to play at the same time. Hard.

Unfortunately, my attention span only let me get to page 5... Maybe I'll finish it someday.












Just in case you are wondering.... I agree completely, multitasking is hard - hard to do and hard on you. I work much better doing one thing to completion. Always connected is bad - I've been going offline on the weekends entirely (with great effect!) for a while now.

don't be afraid to be serial.
don't be afraid to disconnect.
19:10 北京房价已开始下降 跌幅超过20% (4518 Bytes) » 存储部落

早上看到MSN上的文章说,北京的房价在12月份内已经有大幅度的降价,这真是一个好消息啊。

      根据中国房地产指数系统提供的数据,2007年11u月底,北京市的平均房价是每平方米15162元,而在12月底,每平方米的价格降为12180元,月环比降幅为19.67%,其中北京的东城、西城、崇文、宣武四个内城区在11月底的平均房价为每平方米23467元,而12月底则下降为18401元,跌幅高达21.59%,而朝阳、丰台、石景山、海淀四个外城区,在11底的平均房价为每平方米15829元,12月底降为14715元,降幅为7.04%。相反,北京通州、顺义、房山、怀柔等十一个郊区在12月房价却出现了较大幅度的上涨,让记者疑惑的是,在过去的一个月,许多北京的开发商宣称北京的房价绝不会下降,与此同时,北京城区的房价却出现了高达两位数的跌幅,那么中国房地产指数系统的统计是否科学?该系统的负责人黄瑜告诉记者,他们的数据来自于对北京所有在售楼盘的全样本统计,其科学性毋庸置疑。

        其实早在2007年的九、十月份,北京的楼市就开始遭遇寒流,开发商们发现,房子越来越不好卖了,这是位于北京朝阳区重要商业地段的华业玫瑰郡家苑,这个楼盘早在今年8月24号就拿到预售许可证,但是截止到12月,总共638套房源,签约销售出去的仅仅只有2套。

       原文地址:http://msn.china.ynet.com/view.jsp?oid=26955023&pageno=1

一直都认为北京的房价高得离谱,高到绝大多数人都买不起的地步了。我虽然工资不高,但怎么着也算跨入年薪过12万的高收入人群了,可是我仍然买不起4环,甚至5环以内的房子。

去年北京统计到的年薪超过12万的人总共有34万,如果大家认为这个数据要低于实际的数据,那把它放大到100万。但即使放大到100万,这些高收入人群数量相比较北京目前1700万的固定人口和流动人口来讲,所占的比例也只有6%,也就是说有90-94%的人买不起房子。这样房价还能算是合理的吗?

呼吁那些还没有买房子的兄弟姐妹,握好手中前钱,冷眼旁观,等看丫的房价一天一天的下降!!!


18:01 为什么多了一个空格? (3286 Bytes) » AnySQL.net

作者:AnySQL, 发布在anysql.net

    昨天要用SQL来获得一个分区的名称, 却发现生成的分区名中总是多了一个空格, 不知道原因何在, 只是数据库的字符集是UTF8. 如下所示:

18:50:50 SQL> SELECT TO_CHAR(9,'09') FROM DUAL;

TO_
---
 09

    用于获得分区名的语句, 其中9是根据一个公式算出来的值.

18:51:23 SQL> SELECT 'P'||TO_CHAR(9,'09') FROM DUAL;

'P'|
----
P 09

    是显示问题? 不是, DUMP函数显示就是多了一个空格.

18:52:45 SQL> SELECT DUMP(TO_CHAR(9,'09')) coldump from dual;

COLDUMP
----------------------------------------
Typ=1 Len=3: 32,48,57

    还有其他人遇到过吗? 帮忙测试一下? 用Perl或Java程序去执行这个查询, 返回值中一样多了个空格.

相关文章 | Related Artiles

评论这篇文章(4)

17:13 DBA警世录:年关临近 谨防数据库事故 (2805 Bytes) » Oracle Life

©作者:eygle 发布在 eygle.com

历史总数惊人的相似,以前我曾经写过一篇文章:年终难终 进入数据库事故多发期,现在又到了这样一个时期。
2007年即将结束,而数据库事故又进入多发期。

最近2天,仅仅接到电话要求协助恢复的需求已经有三个。

第一个是因为断电,数据库无法启动,600错误有一大堆
第二个是因为存储故障,一大堆坏块出现,数据库无法启动
第三个是因为断电,数百T的数据库无法启动

其实所有的悲惨故事,总结下来都是维护不当或者维护不够引发的,断电是由于环境可用性不高,无法恢复则是因为没有有效备份。
坏块则是由于监控不到位,不能及时发现问题。

当然,出现这些问题也并非无路可走,只不过要劳神耗时,并且承受业务中断的后果。
一个规划良好的系统,应当早已避免这些问题的出现;或者,具有良好维护的系统应当可以轻易的从这些事故中恢复。

顺便说一句的是,本站从2008年开始提供各类数据库维护和咨询服务,有需要的公司可以考虑,服务有保障,运行才可靠

-The End-

相关文章|Related Articles

评论数量(8)|Add Comments

本文网址:

16:58 Do it better with awk 1 (6971 Bytes) » Fenng's shared items in Google Reader

If you are system administrator or developer, you need to process log files to have a better grasp of situation. Many people use Perl or Python to help with this task. However, many times using one of the P languages is overkill. Furthermore, every single day I am on a machine that I cannot make changes to and thus cannot use my helper script. However, awk has the tools available to solve most on-the-fly log processing problems, directly from the command line. In addition, awk can provide a more concise and faster solution the the pipeline of cut, grep, sort, and other commands you are currently using.

In this article, this is the format of the file I am working with:

$ tail -n 1 access_log-2008-01
1.1.1.1 - - [10/Jan/2008:17:26:51 -0600] "GET / HTTP/1.1" 200 38856

Basically what we have here is: ip address, date, request, response code, response size. (Ignoring the dashes after the ip address.)

How would you find the largest response sent by your HTTP server? My typical solution has always been:

$ awk '{print $NF}' access_log-2008-01 | egrep -v '\-'  | sort -n | tail -n 1
10678272

However, there is clearly a better solution.

By default, awk splits input lines by spaces, and assigns the entire line to $0, each field to $n, and the number of fields to NF. See this example:

$ echo a b c d e f | awk '{print $0}'
a b c d e f
$ echo a b c d e f | awk '{print $1}'
a
$ echo a b c d e f | awk '{print $2}'
b
$ echo a b c d e f | awk '{print NF}'
6

Note that you can print the last field by saying print the (NF)’s variable:

$ echo a b c d e f | awk '{print $NF}'
f

Or print the second variable from the end:

$ echo a b c d e f | awk '{print $(NF-1)}'
e

Look at my example again:

$ awk '{print $NF}' access_log-2008-01 | egrep -v '\-'  | sort -n | tail -n 1
10678272

That solution starts three processes and filters the data three times. That is exceedingly inefficient! How about this:

$ awk '{if ($NF > max) { max = $NF;}} END {print max}' access_log-2008-01
10678272

This starts one process and filters the data only one time. That command in English says: For each line, if the last field is greater than the max, set it to the variable “max”. Once we have processed all the lines, print the variable max.

Which command do you suppose is faster?

 $ time awk '{print $NF}' access_log-2008-01 | egrep -v '\-'  | sort -n | tail -n 1
10678272
real    0m1.107s
user    0m1.070s
sys     0m0.037s

$ time awk '{if ($NF > max) { max = $NF;}} END {print max}' access_log-2008-01
10678272
real    0m0.207s
user    0m0.194s
sys     0m0.012s

Experts state that “1.0 second is about the limit for the user’s flow of thought to stay uninterrupted, even though the user will notice the delay.” That log file is only 12MB in size and there is a different in speed which you can notice at the terminal. Imagine if the log is 300MB?

Awk also has extremely accessible associative arrays. Here I use an array to count HTTP response codes:

$ awk '{counts[$(NF-1)]+=1}; END {for(code in counts) print code, counts[code]}' \
access_log-2008-01
206 177
301 1212
302 302
304 5051
403 5
200 82539
404 906
405 1
500 183

The previous command in English says: for each line, using the second to last field as our index, increment our array. Once we have proccessed all lines, loop through the array assigning “code” to the array index.

Lets count the number of requests for each URL:

$ awk '{counts[$(NF-3)]+=1}; END {for(url in counts) print counts[url], url}' \
access_log-2008-01 | sort -n
...output removed...
796 /media/centos5.0_install/common/AA-bios.jpg
846 /robots.txt
1063 /media/misc/why-bad-interpreter-premature-end-of-script-headers.png
1425 /media/10-linux-commands-youve-never-used/mkfifo-write-to-pipe.png
1443 /media/10-linux-commands-youve-never-used/read-from-pipe.png
1629 /
2066 /feed/
3073 /10-linux-commands-youve-never-used.html
3909 /wp2.3/wp-content/themes/minn-01/style.css
6989 /favicon.ico

Now lets sum the responses sizes each URL and display it in MB:

$ awk '{sizes[$(NF-3)]+=$NF}; END {for(url in sizes) print (sizes[url]/1024/1024) "MB", url}' \
access_log-2008-01  | sort -n
...output removed...
68.6784MB /media/centos5.0_install/gui_common/AQ-install-in-progress-3.png
72.0453MB /media/centos5.0_install/gui_common/AP-install-in-progress-2.png
74.0067MB /media/centos5.0_install/gui_common/AT-setup-agent-welcome.png
74.6089MB /media/centos5.0_install/gui_common/AV-setup-agent-firewall-r-u-sure.png
78.2652MB /media/centos5.0_install/gui_common/BA-setup-agent-sound-card.png
80.3148MB /media/centos5.0_install/gui_common/AG-bootloader-configuration.png
85.8359MB /media/centos5.0_install/gui_common/AI-set-timezone.png
101.836MB /media/centos_4.4_boot.iso
137.622MB /
263.253MB /media/centos_5.0_boot.iso

Lets do the same for IP addresses:

 $ awk '{counts[$1]+=1}; END {for(ip in counts) print counts[ip], ip}' \
access_log-2008-01 | sort -n
...output removed...
378 67.202.20.7
402 65.214.45.100
476 195.225.177.39
493 87.207.147.201
702 66.150.96.121
704 213.239.195.172
968 82.150.18.3
1335 65.28.61.246
2330 66.249.73.75
2883 71.63.249.40

$ awk '{sizes[$1]+=$NF}; END {for(ip in sizes) print (sizes[ip]/1024/1024) "MB", ip}' \
access_log-2008-01 | sort -n
...output removed...
20.9338MB 61.64.209.144
21.8517MB 116.71.182.210
23.4265MB 85.102.126.48
31.5194MB 213.239.195.172
32.732MB 67.176.123.158
37.9046MB 66.249.73.75
56.1901MB 71.63.249.40
57.9892MB 67.202.20.7
78.6117MB 65.28.61.246

Sum the size of all responses by ip address if the response code is 200:

$ awk '$(NF-1) == 200 {sizes[$1]+=$NF}; END {for(ip in sizes) print (sizes[ip]/1024/1024) "MB", ip}' \
access_log-2008-01 | sort -n
...output removed...
16.5405MB 220.181.38.245
16.7031MB 207.67.117.178
16.7661MB 128.227.0.66
16.9171MB 67.176.123.158
18.2246MB 71.72.54.173
31.5194MB 213.239.195.172
37.3774MB 66.249.73.75
53.6944MB 71.63.249.40
57.9885MB 67.202.20.7
76.9965MB 65.28.61.246

The command in English: for each line, if the response code is 200 ($(NF-1)), then increment our array at index ip address ($1), by response size ($NF).

Any questions, comments, or suggestions? I will be writing a second article on some other features of awk in the near future.

15:59 PHP vs. BIGINT vs. float conversion caveat (9020 Bytes) » MySQL Performance Blog

Sometimes you need to work with big numbers in PHP (gulp). For example, sometimes 32-bit identifiers are not enough and you have to use BIGINT 64-bit ids; e.g. if you are encoding additional information like the server ID into high bits of the ID.

I had already written about the mess that 64-bit integers are in PHP. But if the numbers you use do not cover 64-bit range fully, floats might save the day. The trick is that PHP floats are in fact doubles, i.e. double-precision 64-bit numbers. They have 52 bits for mantissa, and integer values up to 2^53-1 can be stored exactly. So if you're using up to 53 bits, you're OK with floats.

However, there's a conversion caveat you should be aware of.

On different systems, float is converted to string differently. (I spent a bit of time fighting with it today.) Consider the following script:

CODE:
  1. <?php
  2.  
  3. $f = 65536*65536*65536*4; // 2^52
  4. $f += 1; // 2^52+1
  5. $s1 = "$f"; // the usual way
  6. $s2 = sprintf ( "%.0f", $f ); // the "right" way
  7. print "s1=$s1 s2=$s2\n";
  8.  
  9. ?>

It prints the following (normally expected) output on x64 box running Linux with PHP 5.1.6 or 5.2.2, and also with PHP 4.4.2 on SPARC64 under NetBSD 3.0:

CODE:
  1. s1=1125899906842625 s2=1125899906842625

However 32-bit FreeBSD with PHP 4.4.7 produces different results:

CODE:
  1. s1=1.1258999068426E+15 s2=1125899906842625

The same 32-bit FreeBSD box with PHP 5.2.5 starts to emit all digits but still incorrectly:

CODE:
  1. s1=1125899906842600 s2=1125899906842625

And PHP 5.2.2 on Windows produces yet another variant:

CODE:
  1. s1=1125899906840000 s2=1125899906842625

As you can see float to string conversion is not portable across systems and PHP versions. So if you're handling large numbers stored as float (especially on 32-bit systems where 32-bit int overflow will implicitly convert to float) and getting strange bugs, remember that string conversion might let you down. sprintf(), on the other hand, is always a friend when it comes to fixing PHP "subtleties" in numeric value handling: it can be used to workaround signed vs. unsigned int issues; it helps with float formatting; always a saviour.


Entry posted by shodan | 2 comments

Add to: delicious | digg | reddit | netscape | Google Bookmarks

15:54 第五大道和两岸咖啡 (526 Bytes) » 柔嘉维则@life.oracle.eng
有比较有差别,前者的服务好多了。以后还是去第五大道。
14:42 Critical Patch Update January 2008 Pre-Release Analysis (4784 Bytes) » Oracle Security Blog
Here is a brief analysis of the pre-release announcement for the upcoming January 2008 Oracle Critical Patch Update (CPU) -

  • Overall, 27 security vulnerabilities are fixed in this CPU, which is the lowest number of bugs fixed since the original CPU released in January 2005 that fixed 25 bugs (Oct-07=51, Jul-07=45, Apr-07=36, Jan-07=51, Oct-06=101, Jul-06=62, Apr-06=34, Jan-06=80).
  • This is the first CPU that includes fixes for Oracle 11g (11.1.0.6).
  • The product and vulnerability mix appears to be similar to previous CPUs.  All CPU supported Oracle Database, Oracle Application Server, Oracle Collaboration Suite, and Oracle E-Business Suite versions are included.  The list of supported versions is getting very short and should be carefully reviewed to determine if version upgrades are required prior to applying the CPU security patches -
        • Database = 9.2.0.8, 10.1.0.5, 10.2.0.2, and 10.2.0.3, 11.1.0.6
        • Application Server = 9.0.4.3, 10.1.2, and 10.1.3
        • E-Business Suite = 11.5.9, 11.5.10.x, and 12.0.x
  • Oracle instituted a new policy with the July 2007 CPU in that platforms with few downloads of CPU patches will not have patches proactively created -- the CPU patches will only be available upon request.  According to the October 2007 CPU note (Metalink Note ID 455287.1), patches for 10.1.0.5 on several platforms will be available only upon request for the January 2008 CPU.  The database note for the January 2008 CPU will have a section titled "Planned Patches for Next CPU Release" that should be carefully reviewed to determine if your platform/version will be an "On Request" patch in the next release.

Oracle Database
  • There are 8 database vulnerabilities and none are remotely exploitable.
  • At least one of the database security vulnerabilities has a CVSS 2.0 metric of 6.5, which for database vulnerabilities should be considered high risk.  This typically means anyone with a valid database session is able to compromise the entire database, but is unable to achieve root operating system access.
  • According to the October 2007 CPU notes, there is only limited platform support for 10.2.0.2.  Only the following platforms are supported for 10.2.0.2 by the January 2008 CPU: AIX 5L, HP Itanium, HP/UX, IBM zLinux, Linux x86-64, Linux Itanium, and Linux on Power.  Key missing platforms include all Solaris and Windows operating systems.

Oracle Application Server
  • 5 of the 6 vulnerabilities are remotely exploitable without authentication, although none impact the Oracle HTTP Server (Apache).
  • A previously disclosed Jinitiator bug is fixed and the key to fixing this bug is removal of previous Jinitiator versions from all client PCs as well as upgrading Jinitiator on the application servers.  Whenever possible, Jinitiator should be upgraded to at least 1.3.1.29 or replaced with the Sun Java Plug-in.

Oracle E-Business Suite 11i and R12
  • 3 of the 7 vulnerabilities in the Oracle E-Business Suite are remotely exploitable without authentication.  Most of the vulnerabilities are in core components like OA Framework, so all implementations should consider most of these patches as critical.
  • 11.5.8 is no longer supported, therefore, there is no CPU support.  April 2008 will be the last CPU for 11.5.9.

Planning Impact
  • As with all previous CPUs, this quarter's security patches should be deemed critical and you should adhere to the established procedures and timing used for previous CPUs.

Note: The pre-release announcement is removed when the CPU is released.
14:31 Using Linux Processor Affinity To Beat The Oracle Licensing Police. « Kevin Closson’s Oracle Blog: Platform, Storage & Clustering Topics Related to Oracle Databases (0 Bytes) » del.icio.us/fenng/oracle
13:24 我们为什么要参加各种会议 (9513 Bytes) » Fenng's shared items in Google Reader
发表者:Adam Lasnik,搜索布道者
原文: Why we attend conferences
发表于:2007年5月23日,星期三,下午4:17

我向来喜欢旅行,但并不太喜欢坐飞机,正是考虑到这一点,我往往乘坐长途客车出行,即便是商务旅行也不例外。但是,了解有趣的文化轶事、享用各地美食以及 结交新朋友,所有这一切都能让我的生活更加丰富多彩。即便是一些小细节--例如在悉尼,人们问好时说"How are you going?",在英国要靠马路左侧--四处走走都是如此的令人遐思迩想。

作为谷歌搜索质量团队的一名代表,我经常听朋友们这样揶揄我:"旅途一定很颠簸吧?"实际上我并不觉得惊讶。然而,在这些会议上扮演积极的角色可不总是那么荣耀和惬意的。

从这里,你们可以一窥现实世界:

  • 有时候(谢天谢地,还不算多)我成了听众的"人体出气筒"。
  • 我的公司邮箱和个人邮箱上为什么没有"暂停"按钮?开了短短几天的会议,就堆积了一大摞要处理的电子邮件!
  • 顺带说一句,找不到WIFI接入的窘迫算什么?我的笔记本已经装配了Verizon宽带上网[sic],但结果还是……救命啊!
  • 出席会议需要大量的"额外时间"。我非常顽固地希望为每次会议设计全新的演示PPT,并且积极与同行的谷歌演讲人相互协调,但最后,我从会议上收集到的总 是一车皮的额外信息(很有价值但也很耗时间)。结合这一点以及前面所述的电子邮件问题,我计算了一下,每参加一天的会议就需要花费五天的时间进行准备、分 析和实施。

但是,下面是我为什么仍然喜欢参加会议的原因:

  • 我能从其他演讲人那里学到很多。与来自其他搜索引擎的同行或专家攀谈时,我常常想 -- 嘿,这条信息很有用,或者那是一种特别发人深省的解释方法。在大会上发言,我还是个新手,所以我这块海绵所吸进来的每一滴水都会有所帮助!
  • SEO和站长们一般都是超有趣的家伙。:-)
  • 虽然我未必总是有时间这样干,但能挤出一些时间在这些城市里逛逛总是不错。当然,圣何塞不能算,因为它就挨着谷歌的总部。但是,我已经迫不及待地想到多伦多看一看,(并且有可能在此之前到蒙特利尔过上几天属于我自己的日子。)
  • 我从与我攀谈过的站长们那里学到了非常多的东西。现在我可以回到同事们那里,并对他们说:“嘿,我们的算法要在这些方面做出改进”,或者“他们是这样理解我们的站长指南的,这些挑战都是我们的工具始料未及的”等等。我们的话题不仅限于搜索;关于Gmail、日历以及谷歌所做的几乎每一件事,我都听到了满耳的深刻思想,同时我也将竭尽所能将这些反馈转告我的同事以及其他部门的人。
  • 最后,与一些人面对面地交谈非常有助于我从全新的视角领会他们在线沟通的含义。有时候很容易误读网页上的文字,特别是你没有机会当时提出疑问。而面对面的交流则能把问题说得十分透彻,这样对大家都有好处。
所幸的是,代表谷歌与站长们面对面演示和交谈的人不止我一个,否则我一定会累死,而你们也会被我闷死的。从下面的名单中,大家可以看出,我们这些"会虫子"的确组成了一个团队。从这个月(译者注:2007年5月。以下所有时间均为2007年)起直到6月,谷歌搜索质量团队和站长中心的同事们还将举办下面一些会议:

搜索引擎战略 - 中国厦门 -5月25、26至-30日
  • 朱健飞 (软件工程师): 为什么你被删了?
搜索引擎战略 - 意大利米兰 - 5月29-30日
  • Brian White (技术项目经理)
  • Luisella Mazza (搜索质量分析师)
  • Stefano Bezze (搜索质量协理)
美国营销协会热点话题系列 - 纽约州纽约市,- 5月25日
  • Maile Ohye (资深开发者支持工程师): 搜索引擎营销
谷歌开发者日 - 加利福尼亚圣何塞(地点原定于山景城) - 5月31日
  • Jonathan Simon (站长趋势分析师)
  • Maile Ohye (资深开发者支持工程师)
搜索营销高级展览 - 华盛顿州西雅图 - 6月4日至5日
  • Matt Cutts (软件工程师): 你和观众,个性化搜索惩戒盒
  • Vanessa Fox (站长中心产品经理): 重复内容
搜索引擎战略 - 加拿大多伦多 - 6月12至13日
  • Adam Lasnik: 友好型搜索引擎设计最糟糕的SEO神话、禁忌和骗局
搜索经济学 - 加利福尼亚州圣克拉拉县 - 6月27日
  • Shashi Thakur (软件工程师): 友好型搜索引擎设计
  • Greg Grothaus (软件工程师): 网络2.0版的搜索、动态Web站点与SEO
* * *

我们盼望能与你们中更多的人进行面对面交流。即便你不能或不想亲自出席我们的会议,我们依旧欢迎大家提出问题、建议,哪怕在我们的站长帮助讨论组里做一个友好的自我介绍都行。

各位保重,无论你的在线和离线旅行把你带向何方,祝大家过一个愉快的夏天。
11:24 Filter plan error (1 Bytes) » Oracle Scratchpad
10:31 Sharding with Cookie-Based Session Storage (829 Bytes) » Fenng's shared items in Google Reader

In a recent project, I utilized RoR's cookie-based session storage to shard geographically distinct user groups. My technique for doing so was unique and, although it was a premature optimization, it is none-the-less an idea worth exploring.

10:01 使用SQL判断一个数是否质数 (573 Bytes) » yangtingkun
前两天用SQL计算一个数以内的所有质数,这里补一篇判断一个数是否是质数的SQL实现。用SQL计算100以内的质数:http://yangtingkun.itpub.net/post/468/450278这个SQL的实现方法前面那个SQL很类似:SQL> UNDEF NUMSQL> WITH 2 T AS (SELECT ROWNUM RN FROM DUAL CONNECT BY LEVEL <= &&NUM/2) 3 SELECT &NUM 4 || DECODE 5 ( 6 ( 7 SELECT &NUM FROM DUAL 8 MINUS 9 SELECT A.RN * B.RN FROM T A, T B 10 WHERE A.RN <= ROUND(POWER(&NUM, 0.5)) 11 AND B.RN >= ROUND(POWER(&NUM, 0.5)) 12 ), 13 NULL, 14 '不' 15 ) 16 || '是质数' 17 FRO...
08:19 Migrating MySQL to Oracle Part I (235 Bytes) » DBASupport
This two part article discusses all of the steps involved in migrating a database and its attendant applications, questions to ask yourself, what to watch out for, and how to perform the whole thing within a limited window of downtime.
06:58 Critical Patch Update January 2008 E-Mail Reminder (3004 Bytes) » Oracle Security Blog
As part of the Oracle quarterly Critical Patch Update (CPU) process, a new reminder e-mail of the upcoming CPU is being sent to all individuals who signed up for e-mail notifications on the CPU web page.  This e-mail is only a reminder that the next CPU will be released on January 15, 2008 (sometime after noon Pacific Time).

What is missing from the e-mail is that on Thursday January 10th, Oracle will release a pre-announcement of the upcoming CPU with some details as to the number of security bugs fixed and the maximum severity of the bugs fixed for each product set.  This pre-announcement does provide limited insight, but generally won't change many organizations plans unless there is something dramatic and out of the ordinary fixed.  It is most useful for Oracle Application Server and Oracle E-Business Suite customers as there is variability to the components fixed and a specific CPU may not impact security critical components like Single-Signon or EBS Internet modules.

From: Oracle Security Alerts [mailto:replies@oracle-mail.com]
Sent: Thursday, January 10, 2008 12:25 AM
To: Kost, Stephen
Subject: Oracle Critical Patch Update January 2008

January 9th, 2008
Oracle Critical Patch Update January 2008

Dear Oracle customer,

The Critical Patch Update for January 2008 is planned to be released on January 15, 2008. Oracle strongly recommends applying the patches as soon as possible.

The Critical Patch Update Advisory is the starting point for relevant information. It includes the list of products affected, pointers to obtain the patches, a summary of the security vulnerabilities for each product suite, and links to other important documents. Supported products that are not listed in the "Supported Products and Components Affected" section of the advisory do not require new patches to be applied.

Also, it is essential to review the Critical Patch Update supporting documentation referenced in the Advisory before applying patches, as this is where you can find important pertinent information.

The Critical Patch Update Advisory is available at any of the following locations:

Oracle Technology Network: http://www.oracle.com/technology/deploy/security/alerts.htm

Oracle, PeopleSoft and JD Edwards products: http://www.peoplesoft.com/corp/en/support/security_index.jsp

The next four Critical Patch Update release dates are:

April 15, 2008
July 15, 2008
October 14, 2008
January 13, 2009

Sincerely, Oracle Security Alerts


(Thanks to Randy for pointing out this e-mail)
06:23 小猪猪与小猴子 (1913 Bytes) » Ricky's Test Blog

昨天晚上拍的小猪猪跟小猴子,另外一张是元旦的时候在园博园,小猪猪与小乌龟
小猪与小猴
monkey

小猪与小猴二
monkey 2

小猪与乌龟
toise


05:30 Linux 下的 df 命令以及其他 (3998 Bytes) » DBA notes

作者:Fenng 发布在 dbanotes.net. 订阅 DBA notes

手边有 AIX 以及 Linux 环境,df 算是我用的频率较高的系统命令了。这个小小的命令在不同的环境中差别还是很大的。比如 "-v" 这个参数,在 AIX 上可以配合 -k -m -g 等参数显示可读性更强的信息, Linux 上只是为了兼容 System V 的 df 命令而保留 "-v"。在 Linux 上类似的命令 是 “-B” ,可以接 k 、m、g 等. 如 df -Bg 按照 GB 显示。如果同时维护这样的混合环境,在命令的使用上也要考虑“兼容性”。

以前介绍过 GNU 核心工具,不过没介绍那份有趣的 GNU Core Utilities FAQ,前两天又重新读了一遍。多少有点新内容。比如那个比较经典的问题,“Linux 下 df 与 du 显示的为什么不一样" (我自己就遇到过一次),在 FAQ 上更新了很有权威性的线索: df and du report different information

我这里补充一下的是,在比较大的文件系统上,保留给超级用户的数据块也可能会产生混淆。默认是 5%,如果文件系统比较大,这里的浪费还是比较惊人的,需要就实际情况作权衡。这个也会对 df 的显示有影响。如果创建文件系统的时候需要修改,用"-m"参数指定特定的百分数。

虽说差不多每天都在用 Unix ,但是总有无数知识盲点.

--EOF--

相关文章|Related Articles

评论数量(2)|Add Comments

本文网址:
最近作者还说了什么? Follow Twitter / Fenng

04:38 Linux的shell变量 (26944 Bytes) » ilonng

Linux的变量可分为两类:环境变量和本地变量

环境变量,或者称为全局变量,存在与所有的shell中,在你登陆系统的时候就已经有了相应的系统定义的环境变量了。Linux的环境变量具有继承性,即子shell会继承父shell的环境变量。

本地变量,当前shell中的变量,很显然本地变量中肯定包含环境变量。Linux的本地变量的非环境变量不具备继承性。

Linux中环境变量的文件

    当你进入系统的时候,linux就会为你读入系统的环境变量,这些环境变量存放在什么地方,那就是环境变量的文件中。Linux中有很多记载环境变量的文件,它们被系统读入是按照一定的顺序的。

    /etc/profile

此文件为系统的环境变量,它为每个用户设置环境信息,当用户第一次登录时,该文件被执行。并从/etc/profile.d目录的配置文件中搜集shell的设置。

    这个文件,是任何用户登陆操作系统以后都会读取的文件(如果用户的shellcshtcshzsh,则不会读取此文件),用于获取系统的环境变量,只在登陆的时候读取一次。

    假设用户使用的是BASH,那么

    /etc/bashrc

在执行完/etc/profile内容之后,如果用户的SHELL运行的是bash,那么接着就会执行此文件。另外,当每次一个新的bash shell被打开时,该文件被读取。

    每个使用bash的用户在登陆以后执行完/etc/profile中内容以后都会执行此文件,在新开一个bash的时候也会执行此文件。因此,如果你想让每个使用bash的用户每新开一个bash和每次登陆都执行某些操作,或者给他们定义一些新的环境变量,就可以在这个里面设置。

    ~/.bash_profile

每个用户都可使用该文件输入专用于自己使用的shell信息。当用户登录时,该文件仅仅执行一次,默认情况下,它设置一些环境变量,执行用户的.bashrc文件。

    单个用户此文件的修改只会影响到他以后的每一次登陆系统。因此,可以在这里设置单个用户的特殊的环境变量或者特殊的操作,那么它在每次登陆的时候都会去获取这些新的环境变量或者做某些特殊的操作,但是仅仅在登陆时。

    ~/.bashrc

该文件包含专用于单个人的bash shellbash信息,当登录时以及每次打开一个新的shell,该该文件被读取。

    单个用户此文件的修改会影响到他以后的每一次登陆系统和每一次新开一个bash。因此,可以在这里设置单个用户的特殊的环境变量或者特殊的操作,那么每次它新登陆系统或者新开一个bash,都会去获取相应的特殊的环境变量和特殊操作。

~/.bash_logout

当每次退出系统(退出bash shell),执行该文件。

几个命令

    envprintenv

    这两个变量用于打印所有的环境变量:

[root@devdb1 worksh]# env

HOSTNAME=devdb1

TERM=vt100

..........................................................

OLDPWD=/root

[root@devdb1 worksh]# printenv

HOSTNAME=devdb1

TERM=vt100

..........................................................

OLDPWD=/root

[root@devdb1 worksh]#

    另外,env变量还有其他的功能,如下:

env [-i|-] [name=value] [command [argument]]

这里的“-i”或者“-”,都是表示忽略继承的环境变量;这里的name=value,用于指定本地变量对,可以有多组;整个命令的含义是,忽略继承的环境变量,设定多组name变量,在此基础上运行命令command。如

env -i test="test" bash -c 'echo $SHELL; env'

/bin/bash

PWD=/home/oracle

test=test

SHLVL=1

_=/bin/env

很显然,这里新运行bash并没有继承环境变量,但是却设置了本地变量test

    set

    用于显示与设置当前本地变量。单独一个set就显示了当前环境的所有的变量,它肯定包括环境变量和一些非环境变量,如:

[oracle@devdb1 oracle]$ set

BASH=/bin/bash

BASH_VERSINFO=([0]="2" [1]="05b" [2]="0" [3]="1" [4]="release" [5]="i386-redhat-linux-gnu")

BASH_VERSION='2.05b.0(1)-release'

BDUMP=/opt/oracle/admin/devdb/bdump

COLORS=/etc/DIR_COLORS

COLUMNS=132

DIRSTACK=()

EUID=500

GROUPS=()

G_BROKEN_FILENAMES=1

HISTFILE=/home/oracle/.bash_history

HISTFILESIZE=1000

HISTSIZE=1000

HOME=/home/oracle

.............................

    set很有很多其他的选项,具体请参考man set

    unset

    用于清除变量。不管这个变量是环境变量还是本地变量,它都可以清除。

-- 下面是清除本地变量

[oracle@devdb1 oracle]$ set|grep myname

myname=ilonng

[oracle@devdb1 oracle]$ unset myname

[oracle@devdb1 oracle]$ set|grep myname

-- 下面是清除环境变量

[oracle@devdb1 oracle]$ env|grep myname

myname=ilonng

[oracle@devdb1 oracle]$ unset myname

[oracle@devdb1 oracle]$ env|grep myname

    export

用于把变量变成当前shell和其子shell的环境变量,存活期是当前的shell及其子shell,因此重新登陆以后,它所设定的环境变量就消失了。如何将环境变量永久化?修改上面介绍的那几个环境变量的配置文件。

[oracle@devdb1 oracle]$ export myname=ilonng

[oracle@devdb1 oracle]$ env|grep myname

myname=ilonng

[oracle@devdb1 oracle]$ bash

[oracle@devdb1 oracle]$ env|grep myname

myname=ilonng

[oracle@devdb1 oracle]$ exit

exit

[oracle@devdb1 oracle]$ env|grep myname

myname=ilonng

    source

当直接执行一个脚本的时候,其实是在一个子shell环境运行的,即开启了一个子shell来执行这个脚本,脚本执行完后该子shell自动退出。

有没有办法在当前shell中执行一个脚本呢?使用source命令就可以让脚本在当前shell中执行。如:

[oracle@dbamonitor NBU]$ cat test.sh   -- 查看脚本内容,显示变量内容

echo $myname

[oracle@dbamonitor NBU]$ echo $myname  -- 变量存在,内容是ilonng

ilonng

[oracle@dbamonitor NBU]$ set |grep myname -- 变量是本地变量

myname=ilonng

[oracle@dbamonitor NBU]$ env |grep myname -- 变量不是环境变量

[oracle@dbamonitor NBU]$ sh test.sh  -- 直接执行,新开子shell,非环境变量的本地变量不具备继承性,在子shell中不可见

  -- 这里什么都没有输出

[oracle@dbamonitor NBU]$ source test.sh -- source命令,是脚本在当前shell中执行

ilonng

03:33 Oracle XML DB的发展历程 (5292 Bytes) » DBA@Taobao

XML作为一种通用的数据交换语言,已经成为业界的一种具有垄断性的标准,在跨平台跨系统数据交换方面,拥有无可比拟的优势,其在企业级开发中所扮演的角色也是越来越重要。和关系数据库拥有强大的存储和分析引擎不同,XML只专注于数据的表示,这也使得XML在数据量急速膨胀的时候,如何有效的管理和使用XML就成为了一件令人头痛的事情。而关系数据库经过多年的发展,目前从理论到实现都已经是相当的成熟。那么,借助关系数据库的存储和分析能力来提升XML应用,就成为一种自然而然的需求。XML是一种自我描述的层次数据,数据和描述数据的元数据是混合在一起的,如何在关系数据库中存储和表示XML数据,成为关系数据库厂商面前的一大难题。

Oracle从9i第一版起推出了一种新的数据类型:XMLType,专门用于对XML数据的存储和处理。9i第二版在第一版基础上,将XML相关的一系列特性和工具进行了全新的包装,作为Oracle XML DB组件推出,支持native xml和各种标准,包括W3C XML和XML Schema模型,以及W3C XPath和ISO-ANSI SQL/XML标准。

Oracle XML DB的架构主要包含两部分内容:

  • 存储XMLType数据的表和视图
  • XML DB知识库

要在Oracle数据库中启用XML DB,需要在DBCA创建或者配置数据库时选中Oracle XML DB组件:
Oracle XML DB

或者通过执行脚本$ORACLE_HOME/RDBMS/ADMIN/CATQM.SQL为已经存在的数据库添加XML DB组件。

XMLType是一种面向对象的数据类型,既可以作为关系表中列的数据类型,也可以将整个关系表定义为XMLType类型:

SQL>create table testxml1 (id INT, x XMLType);

表已创建。

SQL>create table testxml2 of XMLType;

表已创建。

对于XML数据载入到数据库,或者从数据库中查询,更新节点数据等操作,Oracle提供了多种方式。例如,我们可以用SQL直接向testxml2表中插入一个TEST.XML文档:

CREATE DIRECTORY XML_DIR AS ‘path_to_folder_containing_XML_file';

INSERT INTO testxml2 VALUES (XMLType (BFILENAME ('XML_DIR', 'TEST.XML'), NLS_CHARSET_ID ('AL32UTF8')));

由于testxml2是一个XMLType类型的表,我们可以通过OBJECT_VALUE来查看其中的值:

SELECT object_value from testxml2;

由于篇幅的原因,这里不打算具体的演示对于XMLType数据的各种操作,有兴趣的读者,可以参考Oracle各个版本的官方文档《Oracle® XML DB Developer’s Guide》。

XMLType在数据库中的实际存储方式,Oracle9i和Oracle10g中主要有两种:

  • 结构化存储(Structured storage)。也就是将XMLType解构为一系列的对象存储到一个或者多个关系表中。
  • 非结构化存储(Unstructured storage)。也就是将XMLType整体存储到一个CLOB字段中。

这两种方式是在关系数据库中存储XML数据非常典型的两种方式,但都有不足之处。在关系数据库中存储对象,其性能和易用性目前都不是非常的好,而整体存成CLOB,则无法高效的利用SQL来处理XML。为了解决XML在Oracle数据库中的存储问题,Oracle在最新的11g版本中整合上述两种存储方式的优点,推出了一种全新的存储方式:

  • 二进制XML存储(Binary xml storage),先将XML解析成一种中间状态,然后以二进制的方式存到CLOB中。

和最初的非结构化直接存储元始的XML数据为CLOB不同,二进制XML存储综合了结构化和非结构化存储方式的优点,很好的解决了利用SQL来处理XML数据的问题。同时,Oracle11g还为CLOB存储的XML数据引入了索引机制:XMLIndex,从而大大增强了对于XML数据的检索性能。

对于存储到数据库中的XML数据,Oracle可以用普通的SQL对其进行处理,也可以通过XML Developer Kit提供的API接口,由外部程序比如C/Java等进行处理。而XML DB知识库中的数据,甚至支持通过FTP, HTTP(S), and WebDAV等协议直接访问。在Oracle11g中,又增加了对web service的全面支持,对于程序员来说,这真是一个非常大的惊喜。Oracle11g另外一个比较大的改进,就是去掉了每个节点不能超过64K数据的限制。

可以看到,Oracle11g对于XML是相当的重视,在Oracle11g上实现企业级的XML数据关系化应用,将会变得非常的便利和实用。这也算是针对DB2 V9大力宣传pureXML,以XML功能作为最大卖点的反击吧。

注:本文是为《程序员》2007.12期杂志写的原稿,未经允许,请勿转载
00:25 Digging for porn in China (1980 Bytes) » Fenng's shared items in Google Reader
saohuang.jpg
Digging the yellow pages

Every six months or so, one or another government body launches a campaign to crack down on pornography and other types of 'unhealthy information'. Such crackdowns are usually called sao huang (扫黄) or 'sweep away the yellow', the color being a symbol for porn.

Some enterprising Chinese web master has started a site at Saohuang.cn that purports to be an aggregator of user complaints about immoral Chinese web pages. The complaints are presented in a way familiar to users of Digg, where users vote to determine what appears at the top of the home page. On Saohuang.cn however, they vote for web pages that contain 'offensive' content.

The site also contains serious sounding messages about protecting the good morals and healthy development of the youth, and links to online government services for reporting 'unhealthy' websites.

But there is something a little fishy about a system that pushes links to the filthiest content to the top of the page.

This article is from Danwei.org

00:25 十年 (1521 Bytes) » Chanel [K]

当我收到姐姐的短信,当我看到你MSN Space的密码 。。。

十年了,是的,我不能做什么。

但是,我现在在想,你的飞行同时也是在对我的拷问吧。

我能说那时候我们还年轻吗?我不能。

我能帮你的我一定尽力去做,阿姨今天心脏不太好,岩岩,如果你在天上有看到,那么保佑她身体恢复健康吧。

2008-01-09 Wed

23:01 三言二拍:同一个世界,同一个导演 » Fenng's shared items in Google Reader
22:23 Married in Zanzibar! » Fenng's shared items in Google Reader
22:15 Alimama_bug_3 » Photos from dbanotes
20:30 探索 AIX 6:新特性概览(中) » developerWorks : AIX 专区的文章,教程
18:34 大褂还是内裤 » Fenng's shared items in Google Reader
16:50 从程序员的温情管理文化说起 » Fenng's shared items in Google Reader
16:32 Use Google Web History Without Installing Google Toolbar » Fenng's shared items in Google Reader
14:07 The choice of Linux » Red Hat Magazine
10:32 临时表产生REDO过多的bug » yangtingkun
10:32 临时表产生REDO过多的bug » yangtingkun
09:27 More on Using Tools for Tracing » DBASupport
09:20 程序员的温情管理文化 » Fenng's shared items in Google Reader
08:37 Alimama_UI_bug2 » Photos from dbanotes
08:34 Alimama_UI_bug » Photos from dbanotes
06:54 MapReduce » Photos from dbanotes
04:41 Google Reveals New MapReduce Stats » Fenng's shared items in Google Reader
04:39 Oracle RAC VIP不能启动2 » AnySQL.net
02:29 天下之铁 » Fenng's shared items in Google Reader
01:59