2008-09-04 Thu

08:13 B-Tree Index Internals: Rebuilding The Truth (533 Bytes) » 玉面飞龙的BLOG
似乎是Richard2007年12月份新总结的文档。非常不错,对过去的Index Internal作了完善和补充。itpub这里有下载。 以下内容都非常好: 1) freelist&freelist group and ASSM will make worse cluster_factor: if there is not freelist contention,don’t need to increase it. 2) analyze index validate structure is not suitable in online active table & big indexes. 3) bug 3196414 of 50-50 index plit during loop insert-commit has been fixed in 10g. 4) The redo generated by the Coalesce [...]
07:07 香港的旺角 梦幻的城市 (2649 Bytes) » Oracle Life

©作者:eygle 发布在 eygle.com

今年四月底的时候,和老婆一起去了次香港,这是我第一次去这个回归了10多年的城市。

虽然香港是一个国际化的大都市以及金融中心,但是在我的记忆里,香港是一座记忆之城,属于历史的很多东西在香港有自然的一脉相承。

比如满街林立纷繁的广告牌,那属于香港,也属于记忆中的中国,不过在内地,这样的景象已经不多了,为了形象,我们拥有的历史建筑已经并不像历史了。

站在旺角的街头,你会觉得你在过去的城市中:

还和老婆一起去坐渡轮,去星光大道,去太平山,走了很多很多的地方:

发件人 2008 迷人的香港

香港是一个走过会让人想念的城市,虽然在哪里你会觉得很渺小很渺小。

-The End-

相关文章|Related Articles

评论数量(0)|Add Comments

本文网址:

02:03 expect实现ssh自动交互 (2010 Bytes) » 架构研究室

由于最近刚接手一批oracle数据库服务器,只能使用指定用户oracle进行相关操作。而且ssh没有做public key,并且也没有权限做ssh的public key,使用shell脚本居然问我一次又一次的要密码,怎么脚本自动化?没办法,只能使用expect来实现了。
一般使用ssh的public key的ssh脚本如下:

#!/bin/sh
servers=`cat /etc/hosts | grep -v ^# | grep ^192.168.1 | cut -f1`
username="oracle"
echo exec cmd all...
for server in $servers; do
        echo "##########################################"
        echo $server
        ssh  $username@$server $1
        echo "##########################################"
done
wait
echo complete!

上面是shell脚本,这里就不多解释了,相信大家都能看明白。$1可以是运行命令也可以执行脚本,随便你,只要你喜欢!
如果不允许或者没有权限使用ssh的public key,那么只能使用expect进行ssh自动交互了

#!/usr/bin/expect
set username "oracle"
#ssh的用户名
set passwd "oracle11"
#ssh的密码
set servers [exec cat /etc/hosts | grep -v ^# | grep ^192.168.1 | cut -f1]
#读取hosts中要访问的主机
foreach server $servers {
#循环
spawn ssh $username@$server "[lindex $argv 0]";
#执行ssh,注意expect中输入的第一个变量用$argv 0表示。
expect "*password: ";
sleep .1;
send "$passwd\r";
#当出现提示输入密码时,自动输入密码
interact;
}

ok,这样指定的一般用户在ssh且不能使用key时就不用一次次输入密码了。

  2008-09-03 Wed

23:43 Google Chrome遭遇SPA崩溃 (2546 Bytes) » OracleBlog.cn

昨天晚上google的浏览器Chrome 放出来了,兴冲冲的下载来试了一下,发现打开就立即崩溃:

后来在公司的论坛上看到高人指点,原来是和公司的网络终端软件SPA(Symantec Protection Agent)有冲突。用下面的方法即可解决:

chrome是一个新的玩具,但是由于采用了sandbox技术,被spa无情的干掉了
 
即使在SPA被干掉的情况下,chrome也无法正常启动
 
解决方法是手工在command界面里面执行 chrome.exe -no-sandbox
 
或者在你的快捷方式-右键-属性,在“目标”里面最后加上-no-sandbox
 
类似这样"C:\Documents and Settings\username\Local Settings\Application Data\Google\Chrome\Application\chrome.exe" -no-sandbox
22:38 重新换一个模板 (250 Bytes) » 老熊的三分地

以前的模板,不太适合于写技术类文章,左边内容部分太窄,现在换一个。页面基调为绿色,但上去比较轻爽,似乎不太适合于技术类,不过自己的地盘,自己作主,自己喜欢就行。^_^

20:34 xen虚拟机开启过多后用完loop设备问题解决 (298 Bytes) » 架构研究室

xen虚拟机开设超过4个后
会用完loop device
处理方法为
修改
/etc/modprobe.conf:
增加
options loop max_loop=64
执行
/sbin/rmmod loop
/sbin/modprobe loop
执行
ls -l /dev/loop* | wc -l
应该返回64

07:00 Google Chrome! (5549 Bytes) » Chanel [K]

Google正式推出了自己的浏览器 - Google Chrome

按照Google的解释,这是一个全新开发的多进程的浏览器,每个Tab都跑在自己的Structure上,一个Tab如果因为某些原因崩溃了,不会影响到其它的Tab。

除了IE, Firefox, Opera,现在我们又有了Google Chrome,一个全新的开源浏览器产品?并不是全新的,但是它融合了多方的技术,在浏览器的关于里面,我们可以看到:
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US)
AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27
Safari/525.13

不管如何,这只是一个测试版,问题不少。

1. 太简洁了。。。简洁到我不知道收藏夹在哪里?即使我选择导入Firefox的收藏夹,我仍然不能在Chrome的任何地方找到它们。

2. 即使我选择了英文版本,但是在我的机器上,仍然显示了中文版本,而且我不知道在哪里可以修改,并且中文版本中默认的浏览器字体仍然不敢恭维。

3. 多进程的浏览器说,一个Tab崩溃了,其它Tab没事儿,但是Chrome在我试用的十几分钟内,却有一次强健到即使我点关闭按钮,它也仍然自顾自地运行在我的桌面上,唯一的办法是,Task Manager里面直接Kill掉它。。。这。。。强健的有些过头了。

4. 如果我在Chrome里面点击“Get bookmark Add-ons”,会把我扔到Firefox的Addons下载界面去,但是我无论如何也不知道该如何在Chrome里面把Addons安装上,点击下载,它就真的下载了xpi文件,我尝试用Chrome打开这个xpi文件,结果它又重新帮我copy了一份同样的xpi。

最后还是有好话的,启动速度确实快,页面渲染速度也确实快,闪电一样,只是不知道等什么时候装完十几个Addons以后会怎样,要知道FF3刚下载安装以后,启动速度也是惊人的。那时候如果Chrome还能闪电一样打开,我立刻抛弃Firefox,但是现在,我还是先把Chrome放到脑后吧。

哦,还有,将某个网页创建成桌面快捷方式,也是挺好玩的一件事情,一个单独的Google Reader界面和一个单独的Gmail界面,完美的Desktop Application和Web Application的结合。

Google Guys,尽快地release一个更少问题的版本吧。面对FF3,还有一段路需要追赶。

Update@2008-9-4
今天继续试用Chrome。
1. 对于它的速度实在是没有任何可以诟病的地方。
2. 没有Tab的控制,无处设置新的Tab创建在什么地方,无法设置地址栏中输入地址是要启动一个新的tab还是刷新当前Tab,也无法设定鼠标双击Tab页标签就可以关闭Tab页。表明推出的有些仓促,想当年谷歌输入法推出的时候就已经是一个很成熟的产品了。
3. 关于导入收藏夹的问题,我想是因为我的Firefox是Portable版本的,所以Chrome找不到他的具体位置,但是很明显应该设置一个可以从HTML文件中带入收藏夹的选项。
4. 内存占用可绝对不低,每个打开的新页面都是一个chrome进程,那些习惯一下子开十几个窗口的兄弟们要掂量一下自己的机器了。

看到一则比较有趣的评析。

Chrome将主要从哪一款浏览器手中抢夺用户?

《华尔街日报》专栏作家Kara Swisher撰文称,Google选在这一时刻发布浏览器是由于担心微软的IE8损害自身的搜索和广告业务。因此,Google将很乐于见到IE用户转向Chrome。不过,实际上火狐浏览器目前的用户更容易转向Chrome,因为火狐浏览器用户对浏览器的性能更重视,他们原本就是从IE转向火狐的。预计火狐浏览器的占有率将会下降。


01:39 记一次Oracle数据库无响应(hang住)故障的处理 (13939 Bytes) » 老熊的三分地

先说说这个数据库的环境:
Oracle 9.2.0.4 RAC,只不过这个RAC只运行了一个节点,另一节点没有开启。
AIX 5.3 TL04
主机为p550,4CPU,16G内存
应用为部署在Weblogic下的WEB应用。

故障现象:
首先是客户端的操作没有响应,从weblogic上看连接数非常高,其日志里面不停报超出连接池的最大连接数。在主机上用sqlplus “/ as sysdba”,在显示sqlplus的banner后,停止响应。

从故障现象来看,是数据库hang住了。

由于sqlplus不能操作,那么这个时候没办法通过oracle来dump system state。先看看操作系统里面,用topas命令观察,发现一个oracle进程占用了26%左右的CPU资源,IO等待几乎为0,可用的物理内存还比较多。根据那个占用CPU的进程号用ps命令查看,是一个普通的Server Process。

看来起这个进程陷入死循环了,26%的CPU资源正好是1个CPU(因为系统共4个CPU)。如果一个oracle进程拿到比较重要的资源,比如shared pool latch、library cache latch等,然后陷入了死循环(SPIN)后,其他进程没法解析SQL等,也就只有挂起了。

用kill命令杀掉那个进程,系统恢复正常,看来前面对故障的推断是正确的,不过没过几分钟,又出现了此故障现象。

只有找到oracle当时正在干什么,也能进行处理。用dbx来dump system state:

# dbx -a 446910
Waiting to attach to process 446910 …
Successfully attached to oracle.
Type ‘help’ for help.
reading symbolic information …
stopped in iosl.select at 0×9000000000c94d8 ($t2)
0×9000000000c94d8 (select+0xfffffffffff06318) e8410028 ld r2,0×28(r1)
(dbx) print ksudss(10)

Segmentation fault in slrac at 0×100083aa0 ($t2)
0×100083aa0 (slrac+0xe4) 88030000 lbz r0,0×0(r3)
(dbx) detach

分析trace文件:

Starting Systemstate 1
……………………………………………………………………
………………….
Ass.Awk Version 1.0.9 - Processing oa2_ora_446910.trc

System State 1
~~~~~~~~~~~~~~~~
1:
2: waiting for ‘pmon timer’ seq=16329
3:
4: waiting for ‘rdbms ipc message’ seq=33158
5: waiting for ‘ges remote message’ seq=30917
6: waiting for ‘gcs remote message’ seq=52339
7: waiting for ‘gcs remote message’ seq=52407
8: waiting for ‘rdbms ipc message’ seq=32661
9: waiting for ‘rdbms ipc message’ seq=32504
10: waiting for ‘rdbms ipc message’ seq=19573
11: waiting for ‘rdbms ipc message’ seq=52125
12: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=16415
13: waiting for ‘rdbms ipc message’ seq=270
14: waiting for ‘rdbms ipc message’ seq=3494
15: waiting for ‘rdbms ipc message’ seq=29593
16: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=54430
17: waiting for ‘rdbms ipc message’ seq=52224
18: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=23413
19: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=49796
20: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=20730
21: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=12464
Cmd: Select
22: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=34653
Cmd: Select
23: waiting for ‘latch free’ [Latch 7000001491d2850] seq=58618
24: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=36619
25: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=56192
26: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=60361
27: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=19963
28: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=10464
29: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=29548
30: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=15077
31: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=32472
32: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=17466
33: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=34712
34: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=27146
35: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=2911
36: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=16634
Cmd: Select
37: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=43400
38: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=8435
39: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=39939
40: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=59619
41: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=16259
42: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=21150

43: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=35843
44: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=27141
45: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=29400
46: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=51444
47: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=19142
48: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=1031
49: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=31852
50: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=46957
51: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=41609
52: waiting for ‘latch free’ [Latch 7000001491d2850] seq=57255
53: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=34982
54: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=26060
55: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=16070
56: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=63913
57: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=2724
58: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=42177
59: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=19973
60: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=47446
61: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=42112
Cmd: Select
62: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=927
63: waiting for ‘latch free’ [Latch 7000001491d2850] seq=3182
64: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=2347
65: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=18928
66: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=1512
67: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=53568
68: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=20420
69: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=30353
70: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=36936
71: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=50852
72: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=8533
73: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=31009
74: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=15406
75: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=4375
Cmd: Select
76: waiting for ‘library cache load lock’ seq=207
78: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=6165
79: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=22977
80: last wait for ‘SQL*Net message from client’
81: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=20226
82: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=17323
Cmd: Select
83: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=19680
84: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=5997
85: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=54166
Cmd: Select
86: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=61874
87: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=33285
88: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=16784
89: last wait for ‘latch free’
Cmd: Select
90: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=63834
91: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=42945
92: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=3676
93: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=59730
94: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=42691
Cmd: Update
95: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=41076
96: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=23230
97: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=64835
98: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=45314
99: waiting for ‘latch free’ [Latch 7000001491d2a40] seq=65301
100:waiting for ‘latch free’ [Latch 7000001491d2a40] seq=51423
101:waiting for ‘latch free’ [Latch 7000001491d2a40] seq=25171
Blockers
~~~~~~~~

Above is a list of all the processes. If they are waiting for a resource
then it will be given in square brackets. Below is a summary of the
waited upon resources, together with the holder of that resource.
Notes:
~~~~~
o A process id of ‘???’ implies that the holder was not found in the
systemstate.

Resource Holder State
Latch 7000001491d2a40 80: last wait for ‘SQL*Net message from client’
Latch 7000001491d2a40 89: last wait for ‘latch free’
Latch 7000001491d2850 26: 26: is waiting for 80: 89:

Object Names
~~~~~~~~~~~~
Latch 7000001491d2a40 Child library cache
Latch 7000001491d2850 Child library cache

很多进程都在等待library cache latch,而持有library cache latch的进程出现了异常,因而导致了数据库被hang住。对出现异常的进程进行分析,发现异常进程执行的SQL都是应用中的普通的SQL(并且后来出现异常的多个进程执行的SQL都不相同)。由于急需恢复应用,所以不得已先重启了数据库,再继续查找原因。

然而数据库重启只能使用1天,就会再次出现此类问题。
针对此故障,首先怀疑可能是BUG引起。但在确认BUG之前,需要收集足够多的证据。随后发现,这个数据库存在下面几个问题:

1、这个库的shared pool 设置很大,达到了4G。
2、应用没有使用绑定变量,全部都是拼接的SQL,并且没有使用任何存储过程,也就是应用的全部SQL都是硬解析。4G的shared pool可以在1天之内全部填满。
3、从alert日志文件里面看到,这个库经常因为ORA-04031错误崩溃。

看来这个库的问题比较严重。数据库hang住和ORA-04031应该都与硬解析过多有关。但目前改变应用是十分困难的事情。只好通过将cursor_sharing设置为similar,强制使用绑定变量。

将cursor_sharing设置为similiar之后,经过一段时间的观察,数据库运行正常,不再出现hang住的现象,hard parse从以前每秒数十次减少为每秒不到1次。shared pool的内存使用非常少,并且减少了shared_pool_size的设置。

不过cursor_sharing设置为similar有比较多的BUG,最常见的就是statspack的BUG和会有大量高version count的SQL。

对于OLTP系统来说,使用绑定变量,怎么强调都不过分。

  2008-09-02 Tue

20:07 谨慎的使用shutdown abort » OracleBlog.cn
18:56 MYSQL 编译优化参数 » 架构研究室
18:49 有感于RAC与性能 » 老熊的三分地
09:29 我如何在豆瓣寻找兴趣相似的人? » 淘宝数据仓库团队
04:25 samba 服务无法访问 » 架构研究室
03:53 青海行 - 偷懒的理由 » Chanel [K]

  2008-09-01 Mon

23:57 postgresql中的分区表 » ORATEA
23:37 postgresql常用命令(4) » ORATEA
23:37 postgresql常用命令(3) » ORATEA
23:36 postgresql常用命令(2) » ORATEA
23:35 postgresql常用命令(1) » ORATEA
22:19 如何恢复被删除的表空间? » Alibaba DBA Team
06:55 在 AIX 中运行 Oracle » developerWorks 中国 : 技术文章 , 教程 AIX
01:11 入手Canon 450D » Ricky's Blog on Testing and RAC
00:26 不要删除你所有的归档日志 » OracleBlog.cn

2008-08-31 Sun

22:00 HP中无法使用@符号 » OracleBlog.cn
18:56 RAC备份 » 梦想有多远
05:25 创新,京剧,中秋,嫦娥 » 玉面飞龙的BLOG
00:17 学习latch笔记 » Alibaba DBA Team

  2008-08-30 Sat

21:14 世界真的是平的 » Free2way@Net
21:11 Wish » Chanel [K]
21:00 入手Canon 450D » NinGoo.net
19:38 球迷 » NinGoo.net
11:07 浅析网购模式(3) » 淘宝数据仓库团队
11:01 浅析网购模式(2) » 淘宝数据仓库团队
10:55 浅析网购模式(1) » 淘宝数据仓库团队
10:38 数据挖掘与知识发现(2) » 淘宝数据仓库团队
05:33 EM » 梦想有多远

  2008-08-29 Fri

19:05 杀蟑螂 » 玉面飞龙的BLOG
10:30 小议compress表 » OracleBlog.cn
08:23 漫长的出差 » 老熊的三分地
07:30 问题拾遗 » Chanel [K]
06:25 北飞的候鸟 » Chanel [K]

  2008-08-28 Thu

 123
 123