August 2007 Archives

今天参加 AIX 的技术培训,听了一些关于 CPU 调度的算法,倒也都是些基本知识,回想讲课内容的时候倒让我想起 Linux Kernel 的 I/O Scheduler 来。

这篇 Choosing an I/O Scheduler for Red Hat Enterprise Linux 4 and the 2.6 Kernel 是必须的参考资料。相比 Linux 2.4 Kernel 的一种 IO 调度器,2.6 做了很多改进,共有四种 IO 调度器。

Deadline scheduler

Deadline scheduler 用 deadline 算法保证对于既定的 IO 请求以最小的延迟时间,从这一点理解,对于 DSS 应用应该会是很适合的。

Anticipatory scheduler

Anticipatory scheduler(as) 曾经一度是 Linux 2.6 Kernel 的 IO scheduler 。Anticipatory 的中文含义是"预料的, 预想的", 这个词的确揭示了这个算法的特点,简单的说,有个 IO 发生的时候,如果又有进程请求 IO 操作,则将产生一个默认的 6 毫秒猜测时间,猜测下一个 进程请求 IO 是要干什么的。这对于随即读取会造成比较大的延时,对数据库应用很糟糕,而对于 Web Server 等则会表现的不错。这个算法也可以简单理解为面向低速磁盘的,因为那个"猜测"实际上的目的是为了减少磁头移动时间。

Completely Fair Queuing

虽然这世界上没有完全公平的事情,但是并不妨碍开源爱好者们设计一个完全公平的 IO 调度算法。Completely Fair Queuing (cfq, 完全公平队列) 在 2.6.18 取代了 Anticipatory scheduler 成为 Linux Kernel 默认的 IO scheduler 。cfq 对每个进程维护一个 IO 队列,各个进程发来的 IO 请求会被 cfq 以轮循方式处理。也就是对每一个 IO 请求都是公平的。这使得 cfq 很适合离散读的应用(eg: OLTP DB)。我所知道的企业级 Linux 发行版中,SuSE Linux 好像是最先默认用 cfq 的.

NOOP

Noop 对于 IO 不那么操心,对所有的 IO请求都用 FIFO 队列形式处理,默认认为 IO 不会存在性能问题。这也使得 CPU 也不用那么操心。当然,对于复杂一点的应用类型,使用这个调度器,用户自己就会非常操心。

那么如果跑数据库应用,那个更好一些呢? 我们看Choosing an I/O Scheduler for Red Hat Enterprise Linux 4 and the 2.6 Kernel一文中的测试结果:

scheduler.jpg

对于数据库应用, Anticipatory Scheduler 的表现是最差的。Deadline 在 DSS 环境表现比 cfq 更好一点,而 cfq 综合来看表现更好一些。这也难怪 RHEL 4 默认的 IO 调度器设置为 cfq. 而 RHEL 4 比 RHEL 3,整体 IO 改进还是不小的。

哪一种方式更好? 很难说,每一种方式都有特定的应用对它是最适合的。就像上面的 as 好像表现比较差,如果是 CPU 密集型的应用呢?

Tip:
Q:如何确认当前用什么 IO 调度器?
A: 过滤 /var/log/boot.msg 文件, 查找 "io scheduler", 看到了么?

在 操作系统上可以查到的相关文档:
/usr/src/linux/Documentation/block/as-iosched.txt
/usr/src/linux/Documentation/block/deadline-iosched.txt

--EOF--

更新: Ubuntu Server 使用 Deadline 而不是桌面版的 CFQ 算法

从很多实际测试场景来看,Deadline 更适合跑 MySQL 数据库。

补充一下关于 RSS 订阅

FeedBurner 不能访问带来的影响有多大? Virushuo Che Dong 都说其实没那么严重,因为大部分都是用在线阅读器的,对这一部分的影响到的确是很小,但是要考虑到 GreatNews 用户和其他用桌面客户端工具订阅的啊。

继续是用 FeedBurner 的 Blogger,注意原来在 FeedBurner 上起用高级统计功能的,必须关闭掉,这样 RSS 阅读器抓到的文章链接就不需要通过 FeedBurner 中转了。

另外,在本地 Blog 上引用 FeedBurner 订阅统计数的,会显示不出来。如果你是用 Dreamhost 这样的国外虚拟主机的用户,可以考虑在后台做一个 crontab 脚本,定期 wget 那个 订阅数字图片到本地来,然后直接引用本地图片地址就可以了(这样其实也减少了网络交互,对你的网站提速也有那么一点作用的。

最后一点友情提示: 请统一用我站内的 URL 地址订阅 RSS 更新。 这样每次变化就不会有影响了. 推荐用这两个地址:

http://www.dbanotes.net/index.xml 或者 http://www.dbanotes.net/atom.xml

--EOF--

早晚会有这么一天,连 Flickr 都被阻尼了,FeedBurner 每天有大量的"内容"进出,不被阻尼是怪事,被阻尼是正常事件,慢慢的就习惯了。再见, FeedBurner! 广大 Blogger 会想你.

现在默认大多数用户订阅的 Feed 应该自动转换到 FeedSky 上了。今天我还在外面开会,FeedSky 输出的 Feed 集成了 Flickr,会有不少垃圾输出,我尽快修改一下。

如果还不灵,手工用 这个地址更新一下吧: http://feed.feedsky.com/fenng

Upgrade:

有的朋友在我的 Blog 上搜索 关于这对这个事件对 Feed 地址 URL Rewrite 的信息: 其实并不复杂。我以前也说过,再重复一下。首先在模版管理的地方创建一个 2feedsky_index.xml 的文件,内容和 index.xml 或者 atom.xml 即可。然后在 FeedSky 上把自己的 Feed 地址修改为新创建的这个文件地址。再修改站点根目录下的 .htaccess 文件,内容如下:

Redirect temp /index.xml http://feed.feedsky.com/fenng
Redirect temp /atom.xml http://feed.feedsky.com/fenng

FeedBurner 不能访问带来的影响有多大? Virushuo Che Dong 都说其实没那么严重,因为大部分都是用在线阅读器的,对这一部分的影响到的确是很小,但是要考虑到 GreatNews 用户和其他用桌面客户端工具订阅的啊。

继续是用 FeedBurner 的 Blogger,注意原来在 FeedBurner 上起用高级统计功能的,必须关闭掉,这样 RSS 阅读器抓到的文章链接就不需要通过 FeedBurner 中转了。

另外,在本地 Blog 上引用 FeedBurner 订阅统计数的,会显示不出来。如果你是用 Dreamhost 这样的国外虚拟主机的用户,可以考虑在后台做一个 crontab 脚本,定期 wget 那个 订阅数字图片到本地来,然后直接引用本地图片地址就可以了(这样其实也减少了网络交互,对你的网站提速也有那么一点作用的。

补充建议: 请统一用我站内的 URL 地址订阅 RSS 更新。 这样每次变化就不会有影响了. 推荐用这两个地址:

http://www.dbanotes.net/index.xml 或者 http://www.dbanotes.net/atom.xml

另外 FeedBurner 的地址还是保留的,如果用在线阅读工具不会受到影响


--EOF--

2e3587f6

偶然间发现鲜果http 301 重定向 的识别也不够好,我本地的 RSS 文件是存在的,同时把 Feed 地址持久重定向(HTTP 301)到 FeedBurner 烧录的 Feed 地址。如果在线 RSS 阅读工具不能有效识别 HTTP 301 ,就会给我以及有类似情况的 Blogger带来的一个问题:订阅数不能汇总到一起。在鲜果的频道列表里看到我自己的 Blog 频道占了好几个,每个订阅数量都是不一样的。当然,最多的还是 FeedBurner 的这个。我给鲜果去邮件询问,他们很快回复告诉我可以"合并FEED地址",这可能是手工来做。

这一点,抓虾已经领先一步做到了。我记得抓虾最早对这个问题也不够重视,对于有疑问的用户当初的解决办法似乎也是用手工的方式汇总统计订阅数字。Google Reader 应该是没有问题的。至于其他的站点 FastLadder 目前似乎对该问题还没有重视。而 Bloglines 虽然最近推出了新的测试版,可总闹水管子工,没怎么细看,印象中倒是不支持的。

在这篇关于 RSS Feed 状态的文章中阅读器端对 只是建议支持。我倒是建议所有 RSS 工具的网站必须提供对 HTTP 301 的有效识别。Blogger 也可以把这一条用来评测 RSS 阅读工具。

支持 301 的另外一个好处是能够有效统计唯一订阅用户数。而订阅用户数对于 Blogger 来说,是比较重要的一个 Blogger 指标。提供准确、漂亮的订阅统计,虽说只是提高 Blogger 用户体验的一个小功能,但是很关键。

--EOF--

一地鸡毛

| 8 Comments

这段时间心情很不好,不痛快。

昨天夜里一直做梦,梦见这里系统出问题,那里出问题,工作几年来,总摆脱不了焦虑状态。以前做梦总梦见考试,高考考数学,而且,肯定还会想到自己还没有复习呢,这可如何是好? 最近一两年这梦的内容也逐渐改变了,总梦见系统故障,还都是零零碎碎的故障。早晨起来,想想这些事情,一天下来心里都不痛快。

好像突然一觉醒来,游戏规则全变了,你想要的东西,都他妈的是别人的了,剩下的都给你。想抱怨,可是不知道该抱怨谁。

想起了崔健的《投机分子》,下面这段歌词我很喜欢:

机会到底是什么,一时还不太清楚
可行动已经是雷厉风行,而且严肃

我们根本没有什么经验,我们也不喜欢过去
可是心里明白干下去,一定会有新的结果
不知生活真地需要手段还是生活就该苦干
反正事情已经重新开始就不能够怕乱

噢......我们有了机会就要表现我们的欲望
噢......我们有了机会就要表现我们的力量

这样干下去,一定会有新的结果。

今天终于忍不住在 Blog 上又写了个人的这点鸡毛蒜皮的事情,其实也好,过了一两年谁还能记得我这个时候心里不痛快呢? 给自己生活也算划个印,回头好能找到这里。

--EOF--

MT4 升级经验谈(之三) 留言篇

| 6 Comments

上周留言突破了 5000 条,很不容易。谢谢这些在我的 Blog 上不辞辛劳留言的朋友们。

自从正式迁移到 MT 4 ,到我发这篇为止,我一共收到了一则垃圾留言,只有一则垃圾留言。相对原来每天成百上千条的拉机信息轰炸,这下子总算眼前清净了许多。

MT 4 支持两类评论方式:验证或者是匿名评论。

匿名评论需要输入有效的邮件地址,并且需要写对下面的验证字。对不起,我起用了我也很讨厌的验证字,也是无奈之举。

验证支持 OpenID、TypeKeyLiveJournal、Vox 以及 Movable Type(也就是在本地 Blog 上注册的,我暂时关闭了注册)。MT 4 内建支持 OpenID 验证,其他几个验证方式都是自己家的产品(不巧的是有两个都被阻尼了)。我喜欢用 TypeKey (我的 Profile)。

经过验证后的评论是不需要审核的,直接发表。而匿名评论我设为需要审核才可以发表。

对于常来的朋友,最好不要用匿名评论,我都觉得有些麻烦。而且,匿名评论附带的网址是得不到 PageRank 的,暂时是这样设置。


--EOF--

Oracle 11g SQL*Plus 新特性: Error Logging

oracle11g_logo.gif

这是我的 Oracle 11g 系列的文章之一.

Oracle 11g SQL*Plus 也有不少新功能,这个 Error Logging 的新功能很有趣,也比较实用。当激活该功能后,可以记录 SQL*Plus 操作相关错误信息到具体的数据库表里面,对于以后追查很方便。激活的语法如下:

SQL> set ERRORLOG ON
SQL> desc SPERRORLOG
Name Null? Type ----------------------------------------- -------- ---------------------------- USERNAME VARCHAR2(256) TIMESTAMP TIMESTAMP(6) SCRIPT VARCHAR2(1024) IDENTIFIER VARCHAR2(256) MESSAGE CLOB STATEMENT CLOB

激活的时候会自动创建这个表。然后即可存储 ORA、PLS 与 SP2 类型的错误信息。

SQL> drop ttt ;
drop ttt
*
ERROR at line 1:
ORA-00950: invalid DROP option
SQL> select username,timestamp,message from SPERRORLOG;
USERNAME TIMESTAMP MESSAGE
---------- ------------------------------ ----------------------------------------
SCOTT 25-AUG-07 02.22.09.000000 PM ORA-00950: invalid DROP option

除此之外,亦可自行定制表,进一步定制存储错误信息。

默认情况下该选项是关闭的。另外,为避免递归调用错误记录, internal 错误不被记录.

--EOF--

MT4 升级经验谈(之二) 插件篇

| 7 Comments

上一篇谈到了升级到 MT4 之前需要考虑的事情。这一篇谈谈安装后插件的配置情况。MT 4 新集成了不少插件,但不是每个人对每个插件都能用上,而且有的编辑器插件真有点画蛇添足,我写 Blog 都是直接写 HTML 代码,其实只需要熟练掌握少数几个代码即可把 Blog 格式的可读性控制的很好。

我眼里的唯一的一个亮点就是 Feeds.App Lite 终于能支持中文了。以前用过几次,遇到中文就把整个页面都变成了乱码。这次通过这个插件把我的 del.icio.us 内容显示到首页了。看来今后也可以考虑把 Twitter 集成过来。

出于性能考虑,能不用的默认插件最好禁止掉。非默认的插件我用了如下几个:

MTRelatedEntries ByKeyword 插件用来显示相关文章

好多朋友都问我单篇归档上的相关文章是用什么做到的? 答案就是这个 MTRelatedEntries ByKeyword 插件。把该插件下载到 MT 的 Plugin 目录下,最好创建一个单独目录放置文件(个别 Beta 版本不能识别直接放在 Plugin 下的内容). 然后在模版管理的地方创建一个 Widget ,内容如下:

<ul class="widget-list" >
<MTRelatedEntriesByKeyword>
<MTEntries lastn="8">
<li class="widget-list-item">
<a href="<$MTEntryPermalink$>"><MTEntryTitle></a>
</li>
</MTEntries>
</MTRelatedEntriesByKeyword>
</ul>

这段显示关键字类似的 8 篇文章。在相关地方引用这个 Widget 即可。这个插件对 dbanotes.net 来说是不可或缺的。

对于相关文章显示,其实还有另外一种实现方法,也就是在 MT 邮件列表里大家讨论的 Tag Supplementals。这个是依赖 Tag 的,而我的 Blog 基本上用 Tag 对文章"分类"的,关键字贴近文章属性,所以我还是用老方法。

缩写词插件(Acronym Plugin)

插件是干啥的? 鼠标放在 MT 上看看效果就知道了。配置与使用都很简单,参考Acronym Plugin 首页的介绍。我很早就在使用这个插件,对这个插件的词库做了一点扩充,感兴趣的朋友可以在本地下载. 这个插件倒不是不可或缺的,只是有的时候我喜欢用一些术语缩写,该插件的提示让读者更容易理解。这也就是所谓的提高用户体验吧.

Paged Archives 插件对过长归档页面分页

原以为 MT 4 会默认带有分页功能,希望落空,还要自己想办法。Paged Archives 是否完全兼容 MT 4,还没有得到确认,插件作者说得也比较模糊。经过我的尝试,勉强可以用。还有 Bug 存在。要注意起用的时候,在模版中有两个地方都要添加 <MTPAEntry> 与 <MTPAEnd> 标记。还没有完全用灵活,具体经验随后分享吧。

使用新插件需要考虑的事情:该插件简单易用么? 是否需要修改现有程序,强调是"程序",如果修改程序的话,以后每次升级 MT ,都要考虑到这个事情,会带来很多后续的工作量。此外要考虑是否需要修改数据库? 插件需要额外修改数据库的也比较麻烦,很可能会带来比较严重的性能问题。

--EOF--

MT4 升级经验谈(之一)

| 15 Comments

Powered By Movable Type

经过了短暂测试之后,正式把 Blog 切换到了 Movable Type 4 正式版上。收集了一些朋友的意见之后,对旧模版进行了一些调整。

迁移之前需要考虑的问题:

  • 1) 是否一定要迁移 ? 迁移的目的是什么?
  • 2) 旧有插件的兼容性?
  • 3) 是否要重新设计模版,如果重新设计,需要的工作量

迁还是不迁?

MT 4 相对 MT 3 来说,做了很多改进,不过对于我来说,只有两个功能还算吸引人。一个是留言系统重构(默认验证字(CAPTCHA)的支持以及对留言方式的改进)。另外一个则是 MT 4 采用了新的版权方式,软件开源。过去几个月里,真的被 Spam 轰炸折腾烦了。采用全新模式安装的 MT 4 经过几天的测试后,发现没有放过一个 Spam!从这一点来说,必须升级。而新的软件版权方式也能让老用户相信 MT 焕发了青春,会有更多的开源研发力量投入。不会被 WordPress 甩的太远。

为什么不用 WordPress 呢? 只有一个理由:MT 是全静态发布的,用户访问页面的时候对数据库产生的压力非常小。而 WP 是伪静态发布,对性能的压力大一些。不要忘了,我的 Blog 可是假设在 Dreamhost 这个专给穷人用的虚拟主机供应商上面的。静态,只有静态才是王道。

插件兼容性

插件问题是第二个需要考虑的,期待原来使用的插件都能被 MT 4 兼容是不太现实的。先看一下插件兼容列表 ,不兼容的列表能否不用? 还好,问题不大,只有一个 Blogroll 插件,如果不用,可以通过手工 HTML 代码来做到,工作量不算大。

模版重新设计

MT 3 的模版也可以在 MT 4 上使用,原打算不重新设计模版了,因为这是个耗时间的活儿。可是在全新安装的 MT 上尝试使用了新的模版体系之后,觉得有必要起用 MT 4 的模版系统。如果说 MT 3 的模版已经在模块化上前进了一步的话,那么 MT 4 就是一个飞跃,完全的模块化,模块可复用的程度大大提高。一次设计,以后获益。痛下决心,重新设计一套。

从哪里开始?

从哪里开始? 当然是全新安装一个 MT 4 ,使用新的空数据库,不要和现有的 MT 3 或是测试版有数据交互。然后是测试插件,修改模版,迁移(参考 MT 4 官方站点的推荐方法),然后重新改进。

新鲜的 MT 4 安装完毕后,我遇到了第一个问题:留言的邮件通知信是乱码,因为默认的 mt-config.cgi 配置信息是没有设置 MailEncoding 参数的。

下一篇谈一下 MT 4 上我使用的插件。

--EOF--

世界是噪音的垃圾场

| 7 Comments

声音碎片乐队这张《世界是噪音的花园》专辑的名字成了很多人抱怨噪音时的标准标题。要我说啊,花园还是太诗意化了,就是垃圾场。

熬了一个晚上,晃晃悠悠回家,想睡觉? 邻居家在装修,电锯声暴响。我一向对噪音很有忍耐力的,可今天这么大的电锯声音,还真的睡不着,尽管累得很。咋整? 忍吧。不忍还能咋样? 人家也算够礼貌的了,电梯门口还贴了一张安民告示。在中国(这么说语气的确不好,我不应该怨天尤人嘛)也就只能这样了,谁让房价那么贵,搞得那么多人买卖二手房? 买了二手房能不装修么? 装修能没有噪音么?

--EOF--

Blog 准备迁移到 MT4

| 9 Comments

这几天利用一点空闲时间定制了 MT4(点击查看测试页面,现在切换到首页了 2007/08/23), 其实我现在 Blog 已经在用 MT4 Beta2 了,为什么还要搞个新测试页面呢? 差异在于正式版和我现在用的 Beta 版之间模版体系是不一样的。经过一段时间的熟悉,我发现 MT4 新的模版设计理念真让人赞叹。

要感谢 FireBug 这个工具让我节省了大量时间。测试页面中的模版是根据 Unity-Blue 这个模版定制的,基本上和我原来的模版风格保持一致。

等正式起用这个新模板之后和大家分享一下该过程之中的一些经验。

--EOF--

尽管很多人都在抱怨 Oracle 的 License 价格不菲,可实际上也有一些省钱的空子可钻。很多人买 Oracle 服务,其实不过是想获取 Metalink 访问权限而已。最少要多少钱可以获取一个 Oracle Metalink 账户?

可能有的人还不知道,你最少只需要 75 美元,就可以获取一个 Metalink 账户,为期一年。用 75 美元买什么产品呢? Oracle Collaboration Suite! 这 75 美元包括 60 美元的单用户永久 License ,以及一个 15 美元的软件更新 License 与支持服务,也就你可以获取一个 Metalink 账户。

大约 500 块就可以搞定,个人都承担的起。尤其是当前美元贬值的情况下 :)

Oracle 11g 新的 License 组件

| 1 Comment

正当我们为 Oracle 新版本中有的特性稍微感动激动的时候,一瓢凉水浇了下来:想用新特性,拿钱来。

在 Oracle 这篇声明中宣布了 11g 有四个额外的特性是要单独收取 License 费用的。价格呢? 就是一个字,贵! 新的四个收费功能:

* Oracle Real Application Testing -- $10,000 per processor or $200 per named user;
* Oracle Advanced Compression -- $10,000 per processor or $200 per named user;
* Oracle Total Recall -- $5,000 per processor or $100 per named user; and,
* Oracle Active Data Guard -- $5,000 per processor or $100 per named user.

点击查看 Oracle 全部产品价格列表

一方面四面出击,大手比收购,一方面银子大笔落袋。查看资料显示,Oracle 在整个 2007 财年,"Oracle应用软件新许可证收入增长了32%"。Oracle 的抢钱本领让人赞叹。

--EOF--

Oracle 11g 新特性: RMAN 压缩备份

| 1 Comment

oracle11g_logo.gif

这是我的 Oracle 11g 系列的文章之一.

用压缩的方式备份,这其实是一个 Oracle 早就应该有的功能。在 10g 中,终于看到 Oracle 实现了这个特性。而 11g 中,又提供了新的可选压缩方式:

RMAN> show all;
......
CONFIGURE COMPRESSION ALGORITHM 'BZIP2'; # default

默认的压缩是 BZIP2。另外一种支持的压缩方式是 ZLIB。相比前者, ZLIB 压缩率不高,不过处理速度快。

做了一个简单的测试,无论是用BZIP2 方式还是 ZLIB 方式, 备份当前的控制文件,压缩与未压缩比率接近为 1:10. 对于海量数据的备份,节省的空间将是惊人的。

要注意的是,COMPATIBLE 初始化参数必须设置 11.0 或者更高。

--EOF--

关注近期几起网站运维事故

| 8 Comments

最近看到几则新闻,都是和网站运营维护有关的,一个比一个离谱。

第一个是云网主站点不可访问。看新闻是从上午折腾到下午还没有修复。有趣的是出了故障之后云网居然把 IP 指向了 127.0.0.1。这是 8 月 9 号的事情。好像找不到云网任何官方对这次故障的说明,至少我没有找到。

第二个是关于工行的。8 月 15 号到 16 号,工行个人银行服务出现故障。据说是"由于15日是存款利息税下调、系统升级改造、新基金发行和拆分、养老金和工资的发放等业务集中所致",更具体一点是什么原因,恐怕永远不得而知。要说起银行的 IT 系统建设,那可是天文数字啊。可以不夸张的说,硬件只挑贵的买。业务流程,什么标准化的东西,也都是早早建立起来的,但是,但是,但是,但是,还是不管用。

第三个,"当当当", 当当网的数据库账户泄漏事件。程序出错页面居然把数据库连接串和密码什么的都打印出来了。不得不佩服一下。

点击查看出错页面的精彩图片

当当用的是 SQL Server.

网站的运维是个高精度而高复杂度的事情,远非弄一堆所谓的花哨流程、买一堆昂贵的机器所能解决一切问题的。

当然类似的事情也不止国内有,Facebook 不也出了个源代码泄漏的事故么。总算和国际接轨了。

最让人晕死的事情是今天 Dreamhost DNS 服务出现问题,导致我这个 Blog 10 来个小时不能访问。

--EOF--

OOW 会议之旅 (5 / End)

| 2 Comments

关于 Oracle Open World 的最后一篇。记录一些比较有趣的事情。

巧遇 Mugen 同学

第一天下午刚到会场的时候展厅还没有开放,偷着溜了进去。在 ITpub 的展台旁边停留了一会儿。偶然注意到登记簿上第一个会员签名居然是 Mugen。巧的是,转了一圈就看到了他。Mugen 告诉我,他上次考 OCM 就差一道题没有过,很是惋惜。线下的 Mugen, 一点都不向以前网络上的那个 Mugen 那么搞笑,他在 ITpub 上的经典句式"人才啊"让无数人笑倒。Mugen 的 Blog 写的还是挺好玩的,最近买房子那一篇很好看,真情实感。在杭州和他一起吃过饭的,但是总感觉还没有见过他。怪哉。

Biti_rainy 的 GPS 趣事

IT168 请会员吃饭,几十人的大聚餐。我和 Anysql(d.c.b.a) 两个人早早就出发了,出了地铁站走了好远,一身汗。可我们到了好久 Biti 他们才到。原来,他们开车找不到路,在他手里好好的 GPS,交给了 Kamus 就不管用,也不知道是不是盗版的问题,汗一个,在浦东绕了两圈还找不到地下通道入口,不得已开车回了宾馆,打了一辆出租车...

SAP 混进 Oracle 展会

美国那边 Oracle 和 SAP 视同水火,口水仗打的不可开交。可在中国好像不是那么一回事。SAP 在 Oracle Open World 有个展位的。大家看了都笑。

Sun(AMD?)展位的 起不来的 Solaris

Sun_kernel_panic.jpg

应该是 Sun 的展台。因为送的 T-shirt 是 Sun 的,可那件 T-shirt 是 2005 年活动剩下的,可真够节省的。

--EOF--

Oracle 11g INVISIBLE index

| 6 Comments

oracle11g_logo.gif

这是我的 Oracle 11g 系列的文章之一.

在 Oracle 11g 以前的版本,在一个产品环境评估一个有待添加的索引是个麻烦事情。稍有不慎影响该表 SQL 执行计划走错,就可能带来灾难性的影响。这个问题可能也是 Oracle 比较重视的,在 11g 上新推出了 INVISIBLE 索引。这个索引创建后,默认对于 CBO 是不可见的。也就是说不会影响(抛开 DDL 时候的 SQL 重新解析)现有的 SQL 执行计划。如果要在 Session 级别激活这个索引,需要设置初始化参数: OPTIMIZER_USE_INVISIBLE_INDEXES .

创建 INVISIBLE 索引

注意新的关键字
SQL> CREATE INDEX emp_ename ON emp(ename)
2 TABLESPACE users
3 INVISIBLE;
Index created

USER_INDEXES 视图的新列 VISIBILITY

SQL> select INDEX_NAME ,VISIBILITY from user_indexes;
INDEX_NAME VISIBILITY
------------------------------------------------------------ ------------------
PK_DEPT VISIBLE
PK_EMP VISIBLE
EMP_ENAME INVISIBLE

观察执行计划的影响

SQL> select count(*) from emp where ename='ADAMS';
COUNT(*)
----------
1
Execution Plan
----------------------------------------------------------
Plan hash value: 2083865914
---------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
---------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 7 | 3 (0)| 00:00:01 |
| 1 | SORT AGGREGATE | | 1 | 7 | | |
|* 2 | TABLE ACCESS FULL| EMP | 1 | 7 | 3 (0)| 00:00:01 |
---------------------------------------------------------------------------

告诉优化器使用 INVISIBLE 索引

SQL> alter session set OPTIMIZER_USE_INVISIBLE_INDEXES=true;
Session altered.
SQL> select count(*) from emp where ename='ADAMS';
COUNT(*)
----------
1
Execution Plan
----------------------------------------------------------
Plan hash value: 1569421590
-------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
-------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 7 | 1 (0)| 00:00:01 |
| 1 | SORT AGGREGATE | | 1 | 7 | | |
|* 2 | INDEX RANGE SCAN| EMP_ENAME | 1 | 7 | 1 (0)| 00:00:01 |
-------------------------------------------------------------------------------

值得注意的是 VISIBILITY 索引在 Rebuild 后会变成可见索引:

SQL> select INDEX_NAME ,VISIBILITY from user_indexes;
INDEX_NAME VISIBILITY
------------------------------------------------------------ ------------------
PK_DEPT VISIBLE
PK_EMP VISIBLE
EMP_ENAME INVISIBLE
SQL> alter index EMP_ENAME rebuild;
=Index altered.
SQL> select INDEX_NAME ,VISIBILITY from user_indexes;
INDEX_NAME VISIBILITY
------------------------------------------------------------ ------------------
PK_DEPT VISIBLE PK_EMP VISIBLE
EMP_ENAME VISIBLE SQL>

这算是个 Bug 么? 还是本身的特性 ?

对于 INVISIBLE 索引,可以修改属性为 VISIBLE。正常的索引也可以修改为 INVISIBLE 状态。如果修改后仍然要使用这个索引,在语句中使用 HINT 即可。我就不一一演示了。

很多人都知道 Oracle 在 OEM 中早就实现了一个类似的功能:Virtual index(虚拟索引)。但是差别也是比较明显的。虚拟索引,真的是虚拟的,并不占用实际的磁盘空间。而 Invisible 索引需要占用磁盘空间。虚拟索引不可以 Alter ,而 Invisible 可以象正常索引那样进行一些维护工作。Invisible 索引的实现思路有些类似 Quest 以前的优化建议,也是直接会在数据库里面创建建议的索引,但是却不能屏蔽对 CBO 的影响。另外一个需要考虑的是 Virtual index 是 OEM 优化包 的功能,需要额外的 License (当然也可以用命令行创建)。

Invisible 对 DBA 来说,对 DBA 调优的时候多了一个更好的可选方法。

--EOF--

Oracle 11g 的 自动内存管理

| 6 Comments

oracle11g_logo.gif

这是我的 Oracle 11g 系列的文章之一.

Oracle 的 9i/10g 中已经对内存管理逐步做了很大的简化,11g 则更进一步,引入了一个新的概念自动化内存管理(Automatic Memory Management,AMM) . 如果 DBA 真的想偷懒的话,只需要设定两个参数就可以把烦心的事情都交给 Oracle 折腾了(只要 DBA 足够心宽)。PGA 与 SGA 一起搞定。这两个参数分别是:

MEMORY_TARGET--操作系统的角度上 Oracle 所能使用的最大内存值。动态参数
MEMORY_MAX_TARGET--MEMORY_TARGET所能设定的最大值。非动态可调。

Tip: 如果使用的是 pfile,设定了 MEMORY_TARGET 而没有指定 MEMORY_MAX_TARGET 的值,则实例启动后 MEMORY_MAX_TARGET 的值与 MEMORY_TARGET 相等。如果 pfile 中指定了 MEMORY_MAX_TARGET 而没有指定 MEMORY_TARGET ,实例启动后 MEMORY_TARGET 为 0 。

AMM 在后台会启动一个内存管理(Memory Manager, mman)进程。

因为 AMM 的引入,Oracle 内存管理更加灵活多样。 组合出来有 5 种内存管理形式.

  • 自动内存管理
  • 自动共享内存管理
  • 手工共享内存管理
  • 自动 PGA 管理
  • 手动 PGA 管理

1) 自动内存管理

默认安装的实例即是 AMM 方式。如下
SQL> show parameters target 
NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
archive_lag_target integer 0
db_flashback_retention_target integer 1440
fast_start_io_target integer 0
fast_start_mttr_target integer 0
memory_max_target big integer 1216M
memory_target big integer 1216M
pga_aggregate_target big integer 0
sga_target big integer 0
要注意到 SGA_TARGET 和 都为 0 。

2.自动共享内存管理(Automatic Shared Memory Management, ASMM)

这是 10g 引入的管理方式,要使用这种方式,需要设置初始化参数 MEMORY_TARGET=0 ,然后显式的指定 SGA_TARGET 的值。
SQL> alter system set sga_target=1024m scope=both;
alter system set sga_target=1024m scope=both
*
ERROR at line 1:
ORA-02097: parameter cannot be modified because specified value is invalid
ORA-00839: SGA_TARGET cannot be modified to the specified value
SQL> alter system set memory_target=0 scope=both;
System altered.
SQL> alter system set sga_target=1024m scope=both;
System altered.
SQL>

这两个参数的修改是有严格顺序的,如果不遵守倒也没问题--Oracle 会报告错误。

3.手工共享内存管理

这个又更加原始了一些。因为原始,所以新的初始化参数 SGA_TARGET 与 MEMORY_TARGET 都要设置为 0. 然后手工设定 share_pool_size 、db_cache_size 等 sga 参数。要注意 RESULT_CACHE_SIZE 参数是 11g 新引入的,用来缓存 SQL 结果。

4.自动 PGA 内存管理

如果使用 AMM , 则对 PGA 不用操心。如果要做到精细控制而切换到自动 PGA 内存管理模式,需要设定WORKAREA_SIZE_POLICY = AUTO(默认即为 AUTO),然后需要指定 PGA_AGGREGATE_TARGET 的值。如需要精确控制PGA,则 WORKAREA_SIZE_POLICY = MANUAL .(Thanks vongates)

5.手动 PGA 管理

前提是 WORKAREA_SIZE_POLICY = manual ,然后分别指定 SORT_AREA_SIZE 等 PGA 相关的参数。估计现在没有人干这个吃力不讨好的事情了。这个模式大可以忽略。

AMM 的限制

如果初始化参数 LOCK_SGA = true ,则 AMM 是不可用的。

相关动态视图

V$MEMORY_DYNAMIC_COMPONENTS
V$MEMORY_RESIZE_OPS

11g 在简化 DBA 基本工作上还是下了很大功夫。可是这样也掩盖了一些技术细节,Oracle 正在逐步把内存的管理变成一个黑盒子,当然这也也是相关算法更加稳定作为基础的。总体来说,利大于弊。11g DBA, 准备好了没有?

--EOF--

我的 del.icio.us 账户下有个 egosurf 标签,专门是收集我写的文章以及关于 egosurf 的一些信息。稍加整理了一下。目前被收藏最多的文章列表如下:

Flickr 的开发者的 Web 应用优化技巧
目前共有 121 人收藏
Flickr 绝对是 Web 2.0 站点中的当红明星。所以 Flickr 开发者的技巧也容易引起人关注。这是除了我的 Blog 首页之外被收藏最多的一篇文章。

YouTube 的架构扩展
目前共有 55 人收藏
这是我一直想写的一个题材。可直到最近才找到一些蛛丝马迹,顺藤摸瓜写了一点介绍。YouTube 因为 Google 的关系也是很吸引眼球的。

Craigslist 的数据库架构
目前共有 48 人收藏
介绍了著名分类广告网站 Craigslist 的数据库架构以及一些相关数据。

了解一下 Technorati 的后台数据库架构
目前共有 45 人收藏
对著名 Blog 搜索引擎 Technorati 的数据库架构的分析介绍。Technorati 被绿色长城挡住了好久不能访问,因为这个原因,现在国内 Blog 圈子对他的注意力小多了。

Yapache--Yahoo! Apache 的秘密
目前共有 20 人收藏
Yahoo! Apache 的一些介绍。

eBay 的应用服务器规模
目前共有 16 人收藏
eBay 的后台架构介绍。另外还有一篇 eBay 的数据库分布扩展架构也推荐一下

Web 2.0 站点扩展性问题随感
目前共有 16 人收藏
关于站点扩展性问题有感而发之作。关心人数也算可以

Geek ? 什么是 Geek ? 谁是 Geek ?
目前共有 16 人收藏
Nerd 会在 Slashdot 流连忘返,而 Geek 或许每天都看 Engadget。Hacker 呢? IRC 里去找找看, 运气好你能碰到一个,但那些自称是 Hacker 的,其实都不是。最后说一下,我用这篇文章作了一下 SEO 实践。

关于世界上的超大数据库
目前共有 13 人收藏
关于世界上排名前几位的 VLDB 的信息。VLDB,超大数据库,其实叫做"狂大数据库"倒是也很贴切。这类题材一向容易有不少读者,可没啥实际参考价值。

回答的智慧
目前共有 13 人收藏
相信很多人都看过那篇提问的智慧,回答也需要智慧。

观察到的一些东西:

1) 可能是 del.icio.us 用户群都是偏 IT 人士,所以 egosurf 到的收藏最多的文章题材大多是关于 Web 2.0 站点的后台架构的。

2) 收藏归收藏,但是添加注释的少之又少。可能这就是 1/100 规律

3) 自己用心写的很多文章其实读者未必会关心的。大多数读者还是更关心热点信息

这篇 Blog 发表后订阅数或许就会有变化了

--EOF--

oracle11g_logo.gif

上一篇 在 RHEL 5 上安装 Oracle 11g 还是比较粗糙的。对照官方手册 Oracle Database Installation Guide 11g Release 1 for Linux 还是遗漏了一些内容的。

关于 Oracle Inventory 用户组

图形界面起来后,先是判断 Oracle Inventory group 这个玩意儿(通过 oraInst.loc). 如果默认目录权限有问题,会有如下提示:

11g_installer_2.png

这个提示信息其实没什么,点击 OK 即可。然后会提示手工输入可替代 Inventory 地址。

OSASM 用户组

如果使用 ASM,则最好创建一个 OSASM 组:

# /usr/sbin/groupadd asadmin

创建实例前修改 Shell 限制

修改 /etc/security/limits.conf 文件. 添加内容如下:
oracle              soft    nproc   2047
oracle              hard    nproc   16384
oracle              soft    nofile  1024
oracle              hard    nofile  65536

修改(或创建) /etc/pam.d/login ,内容如下:

session    required     /lib/security/pam_limits.so
session required pam_limits.so

还差一步,修改 /etc/profile , 内容如下:

if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi

在 NFS 上跑 11g

mount nfs 文件系统上有几个参数是强制性的 : hard , rsize, wsize, actime=0(或者 noac). hard 方式是 10g 遗留下来的后遗症。

想到其他的再继续补充...

--EOF--

Oracle 11g 文档的变化

| 1 Comment

Oracle OTN 上提供的 11g 文档库有在线版本和可下载介质两种形式。建议 DBA 都下载一份到本地硬盘上,这也是我一向的习惯。现在硬盘空间这么大,没人会斤斤计较几百兆的文档占地方。而一旦不能访问网络又想看文档的时候,便利性就体现出来了。

11g 文档这次变成了左右栏显示,查找内容也更加方便了许多。字体也做了调整,在 Firefox 下看起来很舒服。值得注意的是新增了一个Oracle Database Storage Administration 手册,文档内容其实是继承了以前 ASM 的内容,这次独立开来也是体现了 ASM 在以后产品线中的重要性。

现在恐怕下载了文档库的人,90% 都在看 New Features Guide 吧?

--EOF--

阿里妈妈测试版发布

| 7 Comments

Alimama.gif 又将震动业界的事件: 阿里妈妈 (http://www.alimama.com/) 上线了。据说,"阿里妈妈"这个名字当初差点替代"淘宝",只是淘宝"两个字更有口彩的名字取而代之。现在阿里妈妈隆重登场,目标是广告交易平台

网络广告市场有多大?根据一些调查报告显示,2005 年中国网络广告市场规模为 31.3 亿元,2006 年,中国网络广告市场规模是 46 亿元。而美国呢? 早在 2005 年,美国网络广告市场规模就达 125 亿美元, 2006年,美国网络广告市场规模 159 亿美元。在这片看似竞争激烈的无边的红海里,应该还有潜在的蓝海区域。

阿里妈妈,让天下没有难做的广告!

--EOF--

在 RHEL 5 上安装 Oracle 11g

| 7 Comments

期待已久的 Oracle 11g 终于发布正式可以提供下载了。第一个发布的平台果然是 Linux 版本。几年前都是 Solaris 第一个。可见操作系统领域市场的变迁。

11g 的软件介质不小,单个文件,1.7G,这个文件是个大杂烩,包含了一大堆的组件。在 RHEL 5 上安装相对还是比较顺利。先需要看看我以前写的 10g 安装攻略。有时间的话,也不仿移步访问一下这篇:RHEL 上安装 Oracle 的注意事项

环境变量的变化

ORA_NLSxx 环境变量必须(?) 用 ORA_NLS10 ,以前在 10g 上还兼容的 ORA_NLS33 不能继续用的。

export ORA_NLS10=$ORACLE_HOME/nls/data

否则建库的时候会报告 ORA-12075 错误。

核心变量的设置

修改 /etc/sysctl.conf,追加如下内容:
# First line:SEMMSL SEMMNS SEMOPM SEMMNI
kernel.sem=1055 32000 100 128
kernel.shmmax=2147483648
kernel.shmall = 2097152
net.ipv4.tcp_sack = 0
net.ipv4.tcp_timestamps = 0
net.ipv4.conf.default.rp_filter = 0
net.core.optmem_max = 65535
net.core.rmem_default = 4194304
net.core.wmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_max = 262144
fs.file-max = 6553600
net.ipv4.ip_local_port_range = 1024 65000

RHEL 5 默认安装几乎不用作额外配置,当然,要关闭 seLinux 和防火墙。./runInstaller 后图形界面起来,检查的时候也会报告 warning 信息,比如 libaio-devel 没有安装什么的。如果只是测试目的,倒是不用非那么多心思。

关于一些界面的变化,可以看我的 Yupoo 相册. 个人评价是 Oracle 对安装流程还是做了不少改进,有的地方相比 Oracle 10g 交代的更清楚一点。

--EOF--

AWStats 6.7 正式版发布

| 1 Comment

邮件列表里看到的消息。AWStats 6.7 正式版发布了。新特性/改进列表:

- Full support for -day option. To build different report for each day
- Added virtualenamequot tag
- Added option NotPageList
- Addes .jobs and .mobi domains

对于第一条,按日构建报告其实从 6.5 版本以后就提供了相关功能。6.7 版本说是 "Full Support",没看明白怎么个 "Full"。更多内容可以参考车东的AWStats的千万级日志解决方案

--EOF--

Oracle 的 Btrfs 项目

| 13 Comments

Oracle 似乎越来越想直接填补 OS 与 RDBMS 之间的技术缝隙。之前的 ASM 已经向存储层跨了一大步,可以说是 Oracle 自己的 LVM 软件,而且,应该说也占据了一定的市场。然后是 OCFS (Oracle Cluster File System)更进一步--用于集群的文件系统,OCFS 的表现似乎还需要观察(主要是还不够稳定)。现在,Oracle 又准备开发新的文件系统了。这个项目名字叫做 Btrfs

这个 Btrfs 的特性中列表:

  • Extent based file storage (2的64次方 max file size)
  • Space efficient packing of small files 【 vs ZFS: Built in compression】
  • Space efficient indexed directories
  • Dynamic inode allocation
  • Writable snapshots
  • Subvolumes (separate internal filesystem roots)
  • Object level mirroring and striping 【对象级别的镜像与条带】
  • Checksums on data and metadata (multiple algorithms available)
  • Strong integration with device mapper for multiple device support 【似乎 Oracle 对当前 Linux 系统的 LVM 软件并不满意】
  • Online filesystem check 【 vs ZFS: Always consistent on disk】
  • Very fast offline filesystem check 【对于大文件系统十分有效】
  • Efficient incremental backup and FS mirroring 【 vs ZFS: Fast native backup and restore】

【】内是我的注释或猜测。看得出来,Btrfs 应该参考了 Sun ZFS 的很多设计思想,而 Btrfs 的设计目的是面向数据库的,所以有很多独特的面向数据库的特性在里面。Btrfs 目前还在设计中,所有关键特性都实现并且成熟稳定恐怕还真是有待时日,Oracle 软件代码的质量那可真是叫人没话说--可不是好的让人没话说。

或许很多人已经忘记了 Oracle 多年以前失败的 Raw Iron 项目,但现在,Oracle 似乎在用搭机木的方式重新实现这个目标。

--EOF--

Updated: Btrfs 0.16 版本在扩展性与稳定性上都有很大的提升。

Btrfs 读音为:"Better FS"

关于职场的感慨

| 12 Comments

今天看到关于某跨国 IT 企业大连分公司员工暴料出来的邮件。想不到这个素称以人为本的大公司也是内斗不休,内部关系错综复杂,朋党营私,裙带关系...表面再光鲜也是没有用的。所谓职场如官场,一点不假。那封邮件最后一句话很让人触动:

每一台冰冷的电脑后都有一颗火热鲜活奔腾的心!你们可以把他们当作机器,你们也可以漠视他们的感受!但,你们永远无法玷污他们纯洁正直的心!永远!

这么复杂的环境中说这样的话,只能说太天真了。这句话如果说给只知道埋头干活的程序员该有多好。

都说"多年的媳妇熬成婆",可有的时候还真不那么容易,要有熬下去的耐心和勇气,还要有绝对的顺从感才是。今天听到的另一句话也很有意思:公司从小到大就是老兵欺负新兵的历史。深表赞同。

--EOF--

关联阅读:《老板,请给我换一把好一点的椅子!》

空调病

| 15 Comments

从昨天到现在好像得了空调病,不像是感冒。症状是:发烧,鼻塞,怕冷,出不来汗。两年前在北京好像有过一次,喝了一瓶藿香正气水(真够难喝的),阴差阳错就好了。中医有的时候倒是也有效果,虽然不知道有啥潜在的隐患

谁还有什么好的建议? 以前在北京倒是去医院看过,医生也是拿一堆药给你,哪个吃好了哪个算。

--EOF--

Updated:

什么是"空调病"(Air-condition Disease)?它是一种内分泌综合症,其症状主要表现为头晕、发热、盗汗、身子发虚,由于这些症状,大家往往将"空调病"误认为感冒。

有研究表明,室内废气甲醛是空调病的罪魁祸首。

OOW 会议之旅 (4)

| 2 Comments

还是周三的事情。

晚上 10 点多才回来。有个大学同学也来我这里叙旧,他晚饭没吃,一起到正大广场逛了一圈,所有店都打烊了,出来的时候却发现东方明珠对面的马路边有很多小吃可以买。很惊讶,白天的时候根本想不到会有这样的市井生活。想起来大学的时候校园门口那些小食品来了。不知不觉,都快 10 年了。10年,有的同学已经作学生做了 10 年,很佩服他们的耐心。

买东西的时候刚好过来一个貌似华人的小孩跨着一个外国 Girl,结果小贩直接抛下我们两个中国人对外国人做起生意来了,不得不承认,卖给老外的价格也贵多了,我只好原谅他的崇洋媚外,毕竟人家也是做生意。之后,这个小贩还对我们说:"真少见啊。外国男人领着中国女的多,中国男带着外国女的可不容易...没怎么宰他们。" 言下之意,是为国争光了。我仔细看了看,说"没准儿那是个日本人呢..."

之前晚上出去玩的时候也看见一个女的躺在老外的怀里,看样子快乐极了。子非鱼,安知鱼之乐? 有的人说,你总看这些干嘛?没办法,那两个人就坐在我前排,还都比我高。上海毕竟是个国际化的城市,看事情当然也要国际化一点。平时在杭州的时候,也经常能看到类似的情景,不过男主角老外基本都比较差的那种,当然女的也比较...那个。很多人都和我说,其实来中国混的老外也有很差的,诚然。不过,不是有那句老话么: 物以稀为贵。

--EOF--

OOW 会议之旅 (3)

| 1 Comment

周三上午听了 Oracle Database Vault 的专题演讲。在数据库厂商中,只有 Oracle 有这样的工具。远景是非常好的,产品看起来还不是很成熟,而且对性能的影响还不得而知。

午餐是 Oracle 免费提供,灯影牛肉丝味道不错。下午还是要参加 OTN 的互动。另外一个会议室有个关于 JDBC 高可用的讲座,非常想听,可惜时间冲突。OTN 活动结束后在宾馆里接受了 IT168 熊建国老师的采访。采访进行了大约 20 分钟,开始我还有点局促,后来慢慢放开了。负责摄像的几个小伙子这几天估计也很辛苦。视频内容现在还看不到,等发布了我再通知各位。

这次的 OOW 也算是比较奇怪的一次了。因为软件还没有正式发布,整个会场上见到 Oracle 11g Beta 版的人还是寥寥可数。连 Oracle 公司的员工很多也不知道到底什么时候能拿到 11g 介质。这个版本绝对算不上象 Oracle 宣传的那样什么 "11g是甲骨文公司30年来发布的最重要的数据库版本", 只不过能证明 Oracle 依然是关系数据库市场上的领导者罢了。

待续...

--EOF--

你选择哪一个阅读器?抓虾鲜果,还是 Google reader? 对国内 Blogger 来说,RSS 阅读器的选择是一个问题。先看看订阅工具统计:

FeedBurner_Sub_20070803.png

Google Reader 的订阅量占据了一半。抓虾也有很大的份额。下面只从我自己使用的角度稍加比较一下这几个在线 RSS 阅读器。

抓虾的优点

最近的一系列改进增强了 SNS 功能。'热文排行'栏目也设计的不错。偶尔能从中发现不错的文章,缺点是这个栏目没有提供 RSS 输出。如果文章被推上热文,能给 Blog 带来不小的流量。这一点很多 Blogger 还是很关心的。

Google Reader 的优点

速度快,共享文章能够 RSS 输出,可以很方便的分享给其他人。阅读习惯分析这个功能对我来说也很实用,通过这个工具删掉了很多价值不大而又浪费时间的 RSS。Google Reader 的快捷键很好用,其实 Bloglines 的快捷键设计也很好用,不过 Bloglines 的速度不好,又总闹水管工。

鲜果的优点

可以参考车东使用鲜果的理由."鲜果也有类似于Google Reader的收藏RSS输出"。鲜果在这一点上倒是和 Google Reader 看齐了,而这个功能倒是抓虾不具备的。鲜果的'热点文章'栏目设计的很糟。

我的选择

我用的是 Google Reader。Google Reader 能够对变化过的 RSS 内容进行抓取,而抓虾和鲜果对这一点还做不到。估计可能是和服务器资源有关,也可能是还没有更好的使用 Last-Modified 和 ETag 的方法。当然,也经常访问抓虾,主要是用来发现一些新文章。鲜果很少去,只是最近鲜果的订阅量增长倒还可以。

你用什么在线 RSS 阅读工具?

--EOF--

OOW 会议之旅 (2)

| 1 Comment

周二早晨起来,直奔国际会议中心。刚好赶上 Oracle 服务器技术执行副总裁 Chuck Rozwat 的主题演讲。Chunk 远远看上去很帅啊。所有会议的 Keynote 都是很无聊的,当然,技术追星族除外(还好 Larry 这次没来)。接下来是神州数码的郭为演讲,如果非要评价演讲水平的话,"比较差",很多口语,每句话一个"这(zhei四声)个", 他的那个 PPT 内容质量也不是一般的差,如果是秘书写的,干脆开掉算了--还是 90 年代初的视野。我没有在现场听过杨元庆的演讲,不知到水平如何。

本来我还想去听一个技术讲座的,不过 Oracle 为我们公司几位 DBA 安排了一个交流会,与来自美国的三位专家进行一些技术讨论。交谈的主题分别是优化、安全、数据仓库。大家的英语口语都不怎么过关,听力还都凑合,只能求助于翻译。所以花的时间就多了不少。最后是与来自雅虎的 Mason Ng 进行了一些交流,Mason Ng 是香港人,在Chuck Rozwat 演讲的时候上台进行了聊天互动,给 Yahoo! 着实做了不少宣传 :) .我们的探讨也是集中在数据库这个角度,我也问了几个比较感兴趣的其他方面的话题,包括最近的巴拿马计划。

匆忙吃了一个午饭,赶紧回到香格里拉参加那边的 Oracle 开发者大会,这边有个与 Oracle 专家面对面交流的活动需要我们几个 ACE 参加。赶到的时候,刚好盖国强上一个讲座完毕,已经开始面对面讨论了。活动现场很热闹,网友注册领取T-shirt 的也都挺多,也有追着问问题的。Oracle 的 Jack Han 是我们几位 ACE 的推荐者,终于在网下见到了,前一段时间 Oracle 大学有个活动,我都答应参加的,结果还是放了鸽子,赔罪 :) 楼方鑫坐在角落里,差点没认出来, Kamus 也在, 这家伙的耳钉很引人注意。另一位 ACE 万正勇这回也是第一次见面,在 Oracle 中间件方面很有研究。前两天在 ITpub 上对他的个别行为有点分歧,希望他别对我有意见 :) 何致亿(《Oracle9i实务管理讲座--系统核心篇》的作者)则是晚上饭桌上结识的,而另外活动主持人孙晓东则是周三下午才认识。

交流结束后和楼方鑫一起到我的房间里休息,我还给香格里拉打了一个投诉电话--因为昨天晚上他们给了我错误的信息,最后的处理结果是给我换一个更大的房间。原来的房间是江景房,可以看到东方明珠的,角度很好。新房间果然很大,正好对着号称"万国建筑博览"的外滩建筑群,"万国"? 总感觉有些半殖民地的味道。不管怎么说,房间总体上还是不错的,我比较满意。总算没有遇到店大欺客的事情。

在新房间休息了一会儿,楼方鑫领着我去饭局的地点,先去冲印店取他用胶片相机拍的照片。给我灌输了不少拍照的知识,感觉他真是个很热爱生活的家伙。天很热,一路走,一路聊,倒也没什么。

IT168/ITpub 做东,来参加饭局的都是常在论坛上泡着的人,好多人我只是熟悉 ID,没看过真人,也不知道真名字。四五十位齐聚一堂,吃吃喝喝,不亦快哉!

--EOF--

另: 在 CNOUG.net 聚合了不少参会 DBA 写的文章。透过不同角度看 OOW.


2e3587f6

OOW 会议之旅 (1)

| 4 Comments

星期一搭同事的车到的上海,借助他的 GPS 一路相对顺利的抵达浦东香格里拉。我的房间位置还是不错的。面对黄浦江,还能看到东方明珠。

休息了一下,就乘坐 Oracle 的大会班车去上海国际会议中心。会场门口的大牌子很醒目,Oracle 毕竟是财大气粗,每次会议的场地真是只挑贵的租。注册领取入场牌很简单,领取了几件礼品,上楼听开幕式主题演讲。陆续的看到了来参会的同事。算了算,好像阿里巴巴集团的几个公司一共来了 16 个人。

下午媒体见面会上 Biti_rainy(冯春培) 获得了 the 100th Oracle ACE award,这个奖有偶然因素,也有必然因素。一方面是肯定冯春培在 Oracle 技术社区内作出的贡献,另一方面也能体现出来 Oracle 对中国用户的重视(这里有个对他的采访)。

晚上 ITpub 对 几位 ACE 进行了采访,大家针对 11g 的几个话题讨论很热烈,采访持续了两个多小时。回到宾馆都 23 点半了。

会上我拍了几张照片,可以到 我的 Yupoo 相册观看

--EOF--

关于这篇归档

This page is an archive of entries from August 2007 listed from newest to oldest.

July 2007 is the previous archive.

September 2007 is the next archive.

Find recent content on the main index or look in the archives to find all content.