Feb 28, 2008

陈冠希对联

上联:冠希艳照辞旧岁




下联:霆锋绿帽迎新春




横批:新陈代谢






上联:白天很傻很天真





下联:晚上很黄很暴力




横批:娇身冠养

Linux cat 显示中文

linux中让cat, more ,etc 显示中文
1) RedHat (rhel5) 编辑/etc/sysconfig/i18n,如下:
LC_CTYPE="zh_CN.GB18030"
LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"

SUPPORTED="zh_CN.GB18030:zh_CN:zh:zh_TW.Big5:zh_TW:zh:en_US.iso885915:en_US:en"
SYSFONT="lat0-sun16"
SYSFONTACM="iso15"

2) Ubuntu (7.04)
$ sudo locale-gen zh_CN.GB18030
$ sudo cat /etc/environment

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
LANG="en_US.UTF-8"
LC_CTYPE="zh_CN.GB18030"

注:1. 为了使cat,more, less等程序显示中文需要修改系统的LC_CTYPE
2. 根据自己的情况修改LC_CTYPE,比如,你要修改的文件类型为ISO-
8859,需设置LC_CTYPE为GB系列
3. 查看文件类型用 file - determine file type

Feb 27, 2008

Linux 下十六进制编辑器

编辑十六进制文件,windows下大家都用UltraEdit、Notepad++等,Linux下当然也
有很好的编辑器
1. vi
vim file
:%!xxd
...
edit
...
:%!xxd -r
:wq

2. ghex
ghex的整个窗口被垂直分成两部分,左半边以十六进制字节显示指定文件的内
容,右半边则对应地把每个字节以ASCII字符显示,无法显示的用"."代替。当用户
在任意一个窗口中移动光标时,另一个窗口中的光标也会相应移动。利用菜单命令
用户就可以方便地进行拷贝、剪切、粘贴等操作了。

3. hexedit/khexedit

4. emacs -f hexl-mode

5. hexer

......
ox0spy@ox0spy-desktop:~$ apt-cache search hex edit
....

Feb 25, 2008

人生致命的8个经典问题

问题一:如果你家附近有一家餐厅,东西又贵又难吃,桌上还爬着蟑螂,你会因为
它很近很方便,就一而再、再而三地光临吗?

回答:你一定会说,这是什么烂问题,谁那么笨,花钱买罪受


可同样的情况换个场合,自己或许就做类似的蠢事。


不少男女都曾经抱怨过他们的情人或配偶品性不端,三心二意,不负责任。明知在
一起没什么好的结果,怨恨已经比爱还多,却"不知道为什么"还要和他搅和下去,
分不了手。说穿了,只是为了不甘,为了习惯,这不也和光临餐厅一样?


——做人,为什么要过于执著?!


问题二:如果你不小心丢掉100块钱,只知道它好像丢在某个你走过的地方,你会
花200块钱的车费去把那100块找回来吗?


回答:一个超级愚蠢的问题。


可是,相似的事情却在人生中不断发生。做错了一件事,明知自己有问题,却怎么
也不肯认错,反而花加倍的时间来找借口,让别人对自己的印象大打折扣。被人骂
了一句话,却花了无数时间难过。道理相同,为一件事情发火,不惜损人不利已,
不惜血本,不惜时间,只为报复,不也一样无聊


失去一个人的感情,明知一切已无法挽回,却还是那么伤心,而且一伤心就是好几
年,还要借酒浇愁,形销骨立。其实这样一点用也没有,只是损失更多。


——做人,干吗为难自己?!


问题三:你会因为打开报纸发现每天都有车祸,就不敢出门吗?


回答:这是个什么烂问题?当然不会,那叫因噎废食。


然而,有不少人却曾说:现在的离婚率那么高,让我都不敢谈恋爱了。说得还挺理
所当然。也有不少女人看到有关的诸多报道,就对自己的另一半忧心忡忡,这不也
是类似的反应?所谓乐观,就是得相信:虽然道路多艰险,我还是那个会平安过马
路的人,只要我小心一点,不必害怕过马路。


——做人,先要相信自己


问题四:你相信每个人随便都可以成功立业吗?


回答:当然不会相信。


但据观察,有人总是在听完成功人士绞尽脑汁的建议,比如说,多读书,多练习之
后,问了另一个问题?那不是很难?


我们都想在3分钟内学好英文,在5分钟内解决所有难题,难道成功是那么容易的
吗?改变当然是难的。成功只因不怕困难,所以才能出类拔萃。


有一次坐在出租车上,听见司机看到自己前后都是高档车,兀自感叹:"唉,为什
么别人那么有钱,我的钱这么难赚?"


我心血来潮,问他:"你认为世上有什么钱是好赚的?"他答不出来,过了半晌才
说:好像都是别人的钱比较好赚。


其实任何一个成功者都是艰辛取得。我们实在不该抱怨命运。


——做人,依*自己!


问题五:你认为完全没有打过篮球的人,可以当很好的篮球教练吗?


回答:当然不可能,外行不可能领导内行。


可是,有许多人,对某个行业完全不了解,只听到那个行业好赚钱,就马上开起业
来了。


我看过对穿着没有任何口味、或根本不在乎穿着的人,梦想却是开间服装店;不知
道电脑怎么开机的人,却想在网上聊天,结果道听途说,却不反省自己是否专业能
力不足,只抱怨时不我与


——做人,量力而行。


问题六:相似但不相同的问题:你是否认为,篮球教练不上篮球场,闭着眼睛也可
以主导一场完美的胜利?


回答:有病啊,当然是不可能的。


可是却有不少朋友,自己没有时间打理,却拼命投资去开咖啡馆,开餐厅,开自己
根本不懂的公司,火烧屁股一样急着把辛苦积攒的积蓄花掉,去当一个稀里糊涂的
投资人。亏的总是比赚的多,却觉得自己是因为运气不好,而不是想法出了问题。


——做人,记得反省自己。


问题七:你宁可永远后悔,也不愿意试一试自己能否转败为胜

解答:恐怕没有人会说:"对,我就是这样的孬种。"


然而,我们却常常在不该打退堂鼓时拼命打退堂鼓,为了恐惧失败而不敢尝试成功。


以关颖珊赢得2000年世界花样滑冰冠军时的精彩表现为例:她一心想赢得第一名,
然而在最后一场比赛前,她的总积分只排名第三,在最后的自选曲项目上,她选择
了突破,而不是少出错。在4分钟的长曲中,结合了最高难度的三周跳,并且还大
胆地连跳了两次。她也可能会败得很难看,但是,她毕竟成功了。


她说:"因为我不想等到失败,才后悔自己还有潜力没发挥。"


一个中国伟人曾说:胜利的希望和有利情况的恢复,往往产生于再坚持一下的努力
之中。


——做人,何妨放手一搏


问题八:你的时间无限,长生不老,所以最想做的事,应该无限延期?


回答:不,傻瓜才会这样认为。


然而我们却常说,等我老了,要去环游世界;等我退休,就要去做想做的事情;等
孩子长大了,我就可以……


我们都以为自己有无限的时间与精力。其实我们可以一步一步实现理想,不必在等
待中徒耗生命。如果现在就能一步一步努力接近,我们就不会活了半生,却出现自
己最不想看到的结局。

Feb 22, 2008

通过Tor 访问wiki、blogspot、opera等

这个方法大家都用了很久了,我以前只是上下blogspot.com 所以修改下 hosts
文件即可.
今天想在我的Ubuntu上下zh.wikipedia.org,没发现别的简单的方法,就用tor了.

好,现在开始安装 && 设置
1) 安装软件
$ sudo apt-get update
$ sudo apt-get install tor // install tor
$ sudo apt-get install privoxy // install privoxy

2) 配置privoxy,把下面的一行添加到 /etc/privoxy/config (任何地方均可)
forward-socks4a / localhost:9050 .

3) 启动服务
$ sudo /etc/init.d/tor start
$ sudo /etc/init.d/privoxy start

检查服务是否启动
$ netstat -a | grep 9050
看到下面内容,表示已经启动
tcp 0 0 localhost:9050 *:* LISTEN
4) 安装Firefox插件
安装 Firefox Torbutton
<https://addons.mozilla.org/en-US/firefox/addon/2275> 扩展,重起Firefox
就可以看到底部状态栏会出现Tor的激活按钮,激活它
就可以访问受限站点。
注:如果不安装Torbutton,修改Firefox,如下:
1. Edit -> Preferences
2. 选择Advanced -> Network 标签
3. Settings
4. Manual proxy configuration
Http Proxy: localhost Port: 8118
SOCKS Host: localhost Port: 9050 (SOCKS v5)

oracle是如何工作的 [zz]

相信大家看了这篇文章对Oracle如何工作有一个形象的了解!

摘自----《Oracle备份与恢复》
-----------------------------------------------------------------------------------------------------------------

一个名叫Sid的男人,狂热地爱好拍摄、保存和整理照片。Sid的妻子名叫Debbie,
他们有三个儿子Logan、Archie和Chuck。他有一所很大的房子,同住的有男管家
Simon和女仆Pam。我将介绍他的家庭、他的房子和他的爱好:拍摄、收集和炫耀他
的照片。
现在,Sid快乐地生活着—家庭、朋友和假期。他不时地拍照。事实上,他总是随身
带着相机。他不想错过任何东西。每一个早餐、午餐和晚宴,都会被拍下来。当孩
子们从学校回家,镜头摄入他们对父亲的问候。当孩子们做家庭作业的时候,"卡
嚓、卡嚓、卡嚓",照相机的快门响个不停。棒球赛上,儿子Archie的每一个投掷
都被拍摄下来。学校的舞会上,Chuck的父亲拍下了每一个缓慢的舞步以及在苏打
水机器旁的交谈。而他的狗——Sadie则是这个世界上被拍摄次数最多的狗。
他和他的家庭收藏了数以百万计的照片。一些照片被销毁掉了,一些则经历了改
变。Sid有一套神奇的系统来处理这些照片。让我来告诉你一些关于他的家庭、他
的房子的事,以及关于他和他的家人如何致力于发展、组织和保护所有这些照片。
Sid用一架特殊的相机拍摄。他的相机每拍摄一次,就同时产生一张照片和一张底
片。他从来不用换胶卷(这是一种科幻技术)。照片被贴在房间的墙壁上,而底片
则被保存在一个安全的地方。

1.1.1 Sid的家
我介绍过Sid的家了吗?嗯。那里非常的大而且到处都是照片。因为照片实在是太
多了,所以Sid必须寻找地方来放置它们。一些照片被挂在墙上,一些被藏在照相
簿内,一些被插入剪贴簿里,一些被放在储藏室的一个盒子里再也不会被撇上一
眼。所有这些照片都被放在他家中的某处。他称呼这些放置照片的地方为"相片空
间"。一个相片空间可能是一个有着很多墙壁的房间,或者是有着很多页的剪贴
簿。一个房间是照片的逻辑存储单元。房间内的墙壁则是相片空间中保存照片的物
理结构。

1.1. 2 Debbie的家务事
因为Sid忙于拍摄和处理照片,他没有足够的精力来放置和储存它们—那是她妻子的
工作。Debbie的全名是Debra Wrider。她的T恤衫上印着DBWR—这是一种家庭传统—
为所有的东西做标签。
把所有这些照片放置得井井有条是一件巨大的工作,不过Sid和Debbie已经建立了
一个系统。当Sid拍摄结束后,他把照片都放在厨房里一个特定的架子上。那个特
定的架子被称为"DB_BUFFER_CACHE"。Debbie时常检查那个架子,看看上面是否有
新拍摄的照片。在白天,她把从架子上取回的照片分别放置到对应的相片空间。事
实上,在一场棒球赛或者学校的舞会上,Sid制作照片的速度太快了。以至于
Debbie几乎跟不上。这是一个特别的情景,Sid拍摄照片,然后放置在那个特定的
架子上,Debbie把这些照片放在剪贴簿里,挂在墙上或者插入照相簿内。
当Sid带着照片和底片进入厨房时,他和他妻子之间可能会有这样的一段对话:
Sid:"亲爱的,猜猜我给你带回来了什么?"
Debbie:"你又拍了很多照片,是吗?你知道我是多么喜欢整理照片啊。"
Sid:"当然了,Archie的棒球队赢得了最后一局。他在第九局以两个二垒打获胜,
我全部都拍摄下来了。"
Debbie:"太好了,那些照片放在相片空间9号墙壁的运动类里,看上去一定棒极
了。我已经等不及去放置它们了,我将邀请所有的邻居来观赏。"
Sid:"Archie也非常高兴。OK,我再去拍一些照片,我将在23毫秒后回来。哦,顺
便说一下,我刚才将那些照片放在 DB_BUFFER_CACHE架子上。现在Sid的目录号为
1332935。"Debbie:"知道了,再见。"
为了易于管理照片、框架和日志,他使用一种特殊的数字来建立目录,称之为Sid
的目录编号。他用这些独特的、不断递增的数字来追踪对这所房子内所有照片的操
作。Sid和Debbie已经对查阅Sid的目录编号感到厌倦。Sid在所有的照片、录像带
和底片上都写上"Sid的目录编号",累得手要抽筋。最后,他们将"Sid的目录编号"
缩略为SCN。记住SCN,Sid的生活都围绕着它展开。
现在,全家人都知道这个数字被简称为SCN。你可以在每一个地方都看到SCN。Sid
把它们写在底片上,然后他把低位和高位的SCN写在每一包底片外面。 Debbie把它
们写在她放置照片的地方。这些数字在Sid的复杂家庭生活中显得尤为重要。
Debbie把照片放在框架里,房子里的每一个框架都是一样大小。一些框架只保存了
一张照片,一些框架则保存了几张照片。一些特别大的照片则要占据多个框架。
Sid有一张和原物同样大小的照片,拍摄的是他在跳伞后在空中做造型动作,这张
照片占据了两个框架。当照片跨越框架时,Sid称之为照片链。
任何时候,只要Debbie改变框架内的照片,她就把照片的SCN写在框架上。房子内
的每张照片都有一个惟一的数字。他们称照片的这个数字为照片ID。这些照片ID帮
助Sid管理家中所有墙上的照片。如果他需要尽快找到一张照片,他通过照片ID来
实现。通过照片ID,Sid能够迅速找到墙壁和保存照片的框架。
有时候,Sid会对照片进行一些改变。如果他要编辑一张照片,那么他让Debbie通
过照片ID找到他的照片。Debbie给他一份包括所需照片的整个框架的拷贝。为防止
Sid可能改变主意,不喜欢他已经做的一些改变,他把那份拷贝放在一个储藏室
内,称之为"回退"储藏室。当Sid完成了更改并且确定了以后,Debbie把更改后的
照片放回到墙壁上原先的地方,并且把新的SCN写在框架上。如果Sid不喜欢他的更
改,他们就从"回退"储藏室里取出框架并且把它放回墙上。这样一来,照片就和
Sid没有改动以前一样。

1.1.3 Logan的家务事
Debbie为了处理Sid的照片已经忙得焦头烂额,所以她没有足够的时间和精力来处
理Sid的底片。Sid认为他的儿子们在玩电子游戏和吃土豆片上浪费了太多的时间,
他决定给他们安排任务。
Sid的大儿子叫做Logan William Randolph。Logan的衬衫上都印着LGWR。Logan有
一个非常简单但是非常重要的任务。Sid的相机产生照片的同时产生了底片,Logan
的任务是将底片放入笔记本里。家中的厨房里竖着另一个架子,架子上Sid贴了一
个标签,用来标记那些发送给大儿子的底片。标签被称为 "LOG_BUFFER",Logan坐
在厨房的桌子旁,观察这个特殊的LOG_BUFFER架子。当有底片被放到这个架子上
时,他立即把底片放在笔记本里。Sid称这些笔记本为"重做笔记本"。他使用这个
名称是因为以后他可以用里面的底片重新制作一张照片。Logan检查他的架子的频
率要比Debbie 的高得多。Sid表示,只要有底片,他就可以随时重新制作一份照
片。Logan和他父亲的对话简短而温馨:
Sid:"Logan,底片在架子上了!"
Logan:"知道了,我会立即处理的。"
Logan按照他得到底片的顺序将这些底片放入"重做笔记本"。一旦当前的笔记本装
满了底片,他就换另一个新的笔记本。每一次他更换"重做笔记本"后,都在"告警
笔记本"上做一个记录,然后通知他的兄弟来进行他们的家务活。
悲哀,是不是?老爸和他的大儿子太专注于底片了!
顺便提到,不是所有的照片都有对应的底片保存。Sid指定某些照片不必被做日
志,这些照片就没有对应的底片保存在"重做笔记本"里。Sid称其为"无日志"。

1.1.4 Archie的家务事
Sid的第二个儿子Archibald则另有任务。他的衬衫上写着ARCH。Archie从重做笔记
本里提取底片后,把它们放置在一个安全的地方。
当Archie发现Logan更换到另一个重做笔记本的时候,他就开始行动。他拿起重做
笔记本中的那些底片,把它们放在房子外面的一个安全地方。Sid在后院建造了一
个控制好温湿的地下室。那是他保存底片的安全地点。如果暴风来到,破坏了房
子,他可以使用保存在地下室的底片来替换那些被损坏的照片。每一份 Logan的
"重做笔记本"拷贝,被称为"归档的重做笔记本"。
可能某一天,你可以听到Sid和他次子之间的笑谈:
Sid::"Archie?你在哪里?"
Archie:"老爸,我在自己房间里,Logan现在切换笔记本了吗?"
Sid:"是的,他刚刚干完。"
Archie:"知道了,老爸。我会复制这些底片并且制作一个新的笔记本放在地下室
里。然后,我会更新'控制笔记本',并且在'告警笔记本'里写一个记录。"
Sid:"你是一个好孩子,我知道可以相信你。"

1.1.5 Chuck的家务事
Sid最小的儿子Chuck确保每一件事情都是同步的。他的全名是Charles Kenneth
Patrick Thomas。他衬衫上的字母是CKPT,Chuck的任务是将每一面墙壁、相片册
和剪贴簿上的相片数字和控制笔记本中的数字协调起来。当他得到信号,他就开始
在房子里奔跑起来,在每一面墙壁上写下数字,同时将同样的数字也记录在控制笔
记本里。这使得每一件事情都协调起来。以下是一段Sid和Chuck的对话:
Sid:"hi,Chuck。"
Chuck:"老爸,Logan又开始更换笔记本了吗?"
Sid:"是的,儿子,你知道规矩。带着目录编号1332935跑遍房间,把这个数字写
到每一面墙壁的开头,每一个剪贴簿的封面和照片盒子的顶部。"
Chuck:"没问题,给我几微秒时间搞定"。
Sid:"别忘记把1332935写在控制笔记本上!"
Chuck:"老爸,我知道了,同样的事我一天内已经做过几百次了。"
我敢打赌,你已经对阅读这个疯狂的Sid之家感到厌倦,是不是?到现在为止,你
可能已经看出Sid有一个功能失常的家庭。功能失常?是的!不过却有效而可靠。
Sid喜欢这样。

1.1.6控制笔记本
这个家庭怎样维持所有这些活动?Sid、Debbie、Logan、Archie和Chuck断定,要
想把这项照片收集和整理工作处理的井井有条,必须要制作很多详细的笔记。他们
每个人都把自己的东西写入一个日志,称之为"控制笔记本"。
控制笔记本有一个记录整个房子中每一堵墙壁、剪贴簿和照片盒子的家庭财产清单
条目。如果Sid增加了一个房间,来放置更多的照片,他在控制笔记本里做一个记
录。当Logan更换重做笔记本时,他在控制笔记本里做摘要记录。每次Archie制作
一个归档的重做笔记本放入地下室时,他把名字和SCN的范围写在控制笔记本里。
每次Chuck在房子里跑完一圈,他把细节也记录在控制笔记本里。这特殊的笔记本
动态保存了所有地方的资产情况,和房子里以数字表示的进程。

1.1.7告警日志
时不时的总会有些意外发生,也可能出现错误。Debbie可能在把照片放进框架的时
候发生问题,因为那面墙上已经没有多余的空间了。Archie可能无法折叠起底片
条,因为有人把苏打水喷在上面。Sid考虑到了所有的可能,他买了一个螺旋轴的
笔记本,放在厨房的抽屉里。在笔记本的面子上写上"告警日志"。每一个家庭成员
将遇到的问题写在这个日志里。他们不仅要记下发生的错误,还要记下正常的活动
过程。这个告警日志是一个用来保存在Sid家里已经和即将发生的事情的便利场
所。如果他们要解释某个情形下额外的细节,他们制作一个新的"追踪笔记本",把
信息记录在里面。这样一来,这个告警笔记本不会变得比它原先的样子更杂乱。

1.1.8清晨程序
全家早晨一起醒来,也总是同时上床睡觉。他们称这些时间为一天的"启动"和"关
闭"。下面是早晨的启动程序:
Sid从床上起来,端上一杯咖啡开始他的一天。在咖啡壶边上,他将一系列指令保
存在笔记本里,称之为初始化参数文件。阅读这列指令帮助他开始新的一天。啜着
咖啡,他走过去确认控制笔记本是否放在老地方。他在房子里打转叫醒Debbie、
Chuck、Logan、Archie、Simon和Pamela(你很快就会遇到他们)。
当每一个人都醒来后,就打开控制笔记本。确认根据控制笔记本的内容,所有的照
片墙壁都没有问题,当所有的东西都被检查过以后,他打开房子迎接宾客,并开始
拍摄照片。Sid雇佣了一个男管家,Simon,在早晨帮助他,Simon的燕尾服上写着
字母SMON(省掉名字里的一个字母)。有些早晨房子里特别凌乱,因为在前一个就
寝时间,家庭的每一个成员都没有及时清理好各自的事物。当Simon就位后,Sid打
开窗帘,挂好电话,打开门锁,他的家庭开放,准备好了迎接客人。Sid和Simon可
能这样开始一天:
Simon:"早上好,先生。我今天能帮你做什么吗?"
Sid:"是的Simon,早上好。看来我们这里很凌乱啊。我们昨天晚上突然中断了。
你能否处理一下所有这些没有完成的照片和'回退'。"
Simon:"当然了,所有这些底片在重做笔记本里的都要被重新制作,然后以简单的
顺序放置在正确的框架里。"
Sid:"你处理完这些后,接着处理'回退',是吗?"
Simon:"当然了,先生。我从回退储藏室里取出照片框架,然后把旧的版本放回它
们原来的地方。"
Sid:"太棒了,你完成后,我就打开房子。"

1.1.9夜间程序
Sid家的夜间程序也很有趣。当Sid躺下准备休息的时候,他要求家里所有的东西都
放好、关掉和停下。就寝时间的第一个行动是要求房子里所有的客人回家去。Sid
晚上的情绪有四种情况。第一种,有时他很有耐性,等待所有的男女客人自行离去
后,再就寝;第二种,Sid没有耐性,他亲自来监督每一个客人,当客人干完各自
的事情(看照片等等)后,他给客人指示出门的方向;第三种,Sid非常没有耐
性,他揪着客人陪他们出门,不让他们干完正在干的事;第四种, Sid拉下房子的
电闸,大叫"时间到",房子里一片狼藉。Simon不得不在第二天早晨来清理混乱的
场面。
当一个客人走后留下一团糟时,Sid叫来他的女佣PamelaMonica。她监控客人的活
动,并且在客人走后处理善后。她的清洁设备上贴着标签 PMON。
如果Sid没有突然拉闸,每个人都打开灯,进行清理。同步处理笔记本来完成各自
的任务。Debbie从DB_BUFFER_CACHE架子上取走所有的照片,放到合适的墙壁上。
Logan确
保LOG_BUFFER架子是空的,所有的底片都在当前的重做笔记本里。Chuck在房子里
兜一圈,用最高和最低的目录编号(SCN)来更新墙壁和笔记本。Archie把最后的
那张底片放入归档的重做笔记本,放到后院的地下室。然后更新控制和告警笔记
本。当每个人都干完后,Sid关灯,大伙儿睡觉。

1.1.10 Sid的问题
有时候,Sid家会出现问题。当以下这些事件中任何一件发生时,房子里的活动就
会停止。
•当Sid醒来,而他无法找到初始化文件,则无法开始一天的工作。
•有时,Sid需要用Archie保存在后院地下室的底片来恢复丢失的照片,如果他丢失
了一张底片,或者在恢复过程中底片遭到破坏。他无法恢复任何在那张无效底片以
后拍摄
的所有照片。
•Sid一次丢失了几张底片。他不小心打开相机,曝光了胶卷。这使得他情绪极坏,
他的世界好像走到了尽头。他联系了照相机厂家,他们提供了一个特殊的照相机,
带有两个胶卷舱。如此一来,万一胶卷破坏了,他还可以指望另一个舱内的胶卷。
Sid称之为镜像。
•如果后院的地下室满了,Archie没有空间来放置新的底片。Archie只是在地下室
里等着新的空间。这使得Sid和Debbie也跟着等待,整个 Sid的家庭活动陷于停顿
状态。
•如果Debbie得了流感,卧病在床。你猜猜看会怎么样:Sid疯狂地关上了门。尽管
有这些问题和其他一些家庭挫折及功能失常,但Sid的家庭仍然可以处理百万计的
照片和数以千计的同时到访的客人。

和我一样,你可能会想知道,Sid怎么会有那么多的时间和精力来进行照片收集活
动。他没有工作吗?事实上,没有。钱不是Sid的目标。他不必工作。他在几年以
前完成了一个聪明的投资。他在1984年以后买入了大量的电脑公司的股票,那时它
们刚开始向公众发行。他所投资的公司总部在加利福尼亚州的红树海岸。

在介绍了Sid的家庭后,你会发现他为家庭的所有活动设计了结构。就像这个家庭
的活动一样,Oracle数据库也有空间、过程和程序。在脑中与这个家庭类比,我现
在简短地描述Oracle数据库体系结构、过程和操作中属于Oracle数据备份和恢复的
部分。可能你会发现和Sid家的相似之处。

Oracle字符集问题总结 [zz]

经常有同事咨询oracle数据库字符集相关的问题,如在不同数据库做数据迁
移、同其它系统交换数据等,常常因为字符集不同而导致迁移失败或数据库内数据
变成乱码。现在我将oracle字符集相关的一些知识做个简单总结,希望对大家今后
的工作有所帮助。

  一、什么是oracle字符集

  Oracle字符集是一个字节数据的解释的符号集合,有大小之分,有相互的包容关
系。ORACLE 支持国家语言的体系结构允许你使用本地化语言来存储,处理,检索
数据。它使数据库工具,错误消息,排序次序,日期,时间,货币,数字,和日历
自动适应本地化语言和平台。

  影响oracle数据库字符集最重要的参数是NLS_LANG参数。它的格式如下:

  NLS_LANG = language_territory.charset

  它有三个组成部分(语言、地域和字符集),每个成分控制了NLS子集的特性。其中:

  Language 指定服务器消息的语言,territory 指定服务器的日期和数字格
式,charset 指定字符集。如:AMERICAN _ AMERICA. ZHS16GBK

  从NLS_LANG的组成我们可以看出,真正影响数据库字符集的其实是第三部分。
所以两个数据库之间的字符集只要第三部分一样就可以相互导入导出数据,前面影
响的只是提示信息是中文还是英文。

  二、如何查询Oracle的字符集

  很多人都碰到过因为字符集不同而使数据导入失败的情况。这涉及三方面的字
符集,一是oracel server端的字符集,二是oracle client端的字符集;三是dmp文
件的字符集。在做数据导入的时候,需要这三个字符集都一致才能正确导入。

  1、查询oracle server端的字符集

  有很多种方法可以查出oracle server端的字符集,比较直观的查询方法是以
下这种:SQL>select userenv('language') from dual;

  结果类似如下:AMERICAN _ AMERICA. ZHS16GBK

  2、如何查询dmp文件的字符集

  用oracle的exp工具导出的dmp文件也包含了字符集信息,dmp文件的第2和第3
个字节记录了dmp文件的字符集。如果dmp文件不大,比如只有几M或几十M,可以用
UltraEdit打开(16进制方式),看第2第3个字节的内容,如0354,然后用以下SQL查
出它对应的字符集:

  SQL> select nls_charset_name(to_number('0354','xxxx')) from dual;

  ZHS16GBK

  如果dmp文件很大,比如有2G以上(这也是最常见的情况),用文本编辑器打开
很慢或者完全打不开,可以用以下命令(在unix主机上):

  cat exp.dmp |od -x|head -1|awk '{print $2 $3}'|cut -c 3-6

  然后用上述SQL也可以得到它对应的字符集。

  3、查询oracle client端的字符集

  这个比较简单。在windows平台下,就是注册表里面相应OracleHome的
NLS_LANG。还可以在dos窗口里面自己设置,比如:

  set nls_lang=AMERICAN_AMERICA.ZHS16GBK

  这样就只影响这个窗口里面的环境变量。

  在unix平台下,就是环境变量NLS_LANG。

  $echo $NLS_LANG

  AMERICAN_AMERICA.ZHS16GBK

  如果检查的结果发现server端与client端字符集不一致,请统一修改为同
server端相同的字符集。

  三、修改oracle的字符集

  上文说过,oracle的字符集有互相的包容关系。如us7ascii就是zhs16gbk的子
集,从us7ascii到zhs16gbk不会有数据解释上的问题,不会有数据丢失。在所有的字
符集中utf8应该是最大,因为它基于unicode,双字节保存字符(也因此在存储空间上
占用更多)。

  一旦数据库创建后,数据库的字符集理论上讲是不能改变的。因此,在设计
<http://design.yesky.com/>和安装之初考虑使用哪一种字符集十分重要。根据
Oracle的官方说明,字符集的转换是从子集到超集受支持,反之不行。如果两种字
符集之间根本没有子集和超集的关系,那么字符集的转换是不受oracle支持的。对
数据库server而言,错误的修改字符集将会导致很多不可测的后果,可能会严重影
响数据库的正常运行,所以在修改之前一定要确认两种字符集是否存在子集和超集
的关系。一般来说,除非万不得已,我们不建议修改oracle数据库server端的字符
集。特别说明,我们最常用的两种字符集ZHS16GBK和ZHS16CGB231280之间不存在子
集和超集关系,因此理论上讲这两种字符集之间的相互转换不受支持。

  1、修改server端字符集(不建议使用)

  在oracle 8之前,可以用直接修改数据字典表props$来改变数据库的字符集。
但oracle8之后,至少有三张系统表记录了数据库字符集的信息,只改props $表并
不完全,可能引起严重的后果。正确的修改方法如下:

  $sqlplus /nolog

  SQL>conn / as sysdba;

  若此时数据库服务器已启动,则先执行SHUTDOWN IMMEDIATE命令关闭数据库服
务器,然后执行以下命令:

  SQL>STARTUP MOUNT;

  SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION;

  SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;

  SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=0;

  SQL>ALTER DATABASE OPEN;

  SQL>ALTER DATABASE CHARACTER SET ZHS16GBK;

  SQL>ALTER DATABASE national CHARACTER SET ZHS16GBK;

  SQL>SHUTDOWN IMMEDIATE;

  SQL>STARTUP

  2、修改dmp文件字符集

  上文说过,dmp文件的第2第3字节记录了字符集信息,因此直接修改dmp文件的
第2第3字节的内容就可以'骗'过oracle的检查。这样做理论上也仅是从子集到超集
可以修改,但很多情况下在没有子集和超集关系的情况下也可以修改,我们常用的
一些字符集,如US7ASCII, WE8ISO8859P1,ZHS16CGB231280,ZHS16GBK基本都可
以改。因为改的只是dmp文件,所以影响不大。

  具体的修改方法比较多,最简单的就是直接用UltraEdit修改dmp文件的第2和
第3个字节。比如想将dmp文件的字符集改为 ZHS16GBK,可以用以下SQL查出该种字
符集对应的16进制代码:

  SQL> select to_char(nls_charset_id('ZHS16GBK'), 'xxxx') from dual;

  0354

  然后将dmp文件的2、3字节修改为0354即可。

  如果dmp文件很大,用ue无法打开,就需要用程序 <http://dev.yesky.com/>
的方法了。网上有人用java <http://dev.yesky.com/devjava/>存储过程写了转换
的程序(用java存储过程的好处是通用性教好,缺点是比较麻烦)。我在windows下
测试通过。但要求oracle数据库一定要安装 JVM选项。有兴趣的朋友可以研究一下
程序代码

Linux 修改分辨率、刷新率

环境: Ubuntu 7.04
调整显示屏幕偏移,的频率太低,显示器闪的厉害的解决办法
1) 控制台上允许
# xvidtune
2) 会有一个设置显示器的图形工具,用left和right按钮调好屏幕位置,test一
下,调到显示位于最中间为准,再show一下,将终端窗口上显示的那一行输出记下
来,类似这样的语句,在控制台下用鼠标帖到编辑器上。
"1024x768" 65.00 1024 1048 1184 1344 768 791 797 822 +hsync
+vsync
3) 编辑 /etc/X11/xorg.conf
找到Section "Monitor"中当前分辨率的那段,在EndSection的上一行添加
ModeLine "1024x768" 65.00 1024 1048 1184 1344 768
791 797 822 +hsync +vsync
4) 重启X

Feb 20, 2008

在Oracle9i中手工创建数据库 [zt]

From : http://blog.chinaunix.net/u/1495/showart_100306.html

[oracle@netpower oracle]$ echo $ORACLE_HOME
/opt/ora9/product/9.2
[oracle@netpower oracle]$ echo $ORACLE_BASE
/opt/ora9
[oracle@netpower oracle]$ export ORACLE_SID=mwhdata
[oracle@netpower oracle]$ echo $ORACLE_SID
mwhdata
#建立操作系统目录,用于存放第二个ORACLE9I数据库物理文件.
[oracle@netpower oracle]$ mkdir $ORACLE_BASE/admin/$ORACLE_SID
[oracle@netpower oracle]$ mkdir $ORACLE_BASE/admin/$ORACLE_SID/bdump
[oracle@netpower oracle]$ mkdir $ORACLE_BASE/admin/$ORACLE_SID/cdump
[oracle@netpower oracle]$ mkdir $ORACLE_BASE/admin/$ORACLE_SID/create
[oracle@netpower oracle]$ mkdir $ORACLE_BASE/admin/$ORACLE_SID/pfile
[oracle@netpower oracle]$ mkdir $ORACLE_BASE/admin/$ORACLE_SID/udump
[oracle@netpower oracle]$ mkdir $ORACLE_BASE/oradata/$ORACLE_SID
[oracle@netpower oracle]$ ls $ORACLE_BASE/admin/$ORACLE_SID
bdump cdump create pfile udump
#建立密码文件.
#切换到$ORACLE_HOME/bin目录,执行orapwd指令建立密码文件,文件名为
orapwmwhdata,密码为chinaunix:
[oracle@netpower bin]$ orapwd file=$ORACLE_HOME/dbs/orapwmwhdata
password=chinaunix entries=5
#建立初始参数文件.
#将原SID为ora9i的数据库的初始参数文件复制到$
ORACLE_BASE/admin/mwhdata/pfile目录下,并?命名为 initmwhdata.ora.
[oracle@netpower bin]$cd /opt/ora9/admin/ora9i/pfile
[oracle@netpower pfile]$ cp initora9i.ora.32200662355
$ORACLE_BASE/admin/mwhdata/pfile/initmwhdata.ora

#编辑新的初始化文件,将文件中所有的ora9i(原来的SID)替代为mwhdata(新的SID).
[oracle@netpower pfile]$ vi initmwhdata.ora
##############################################################################
# Copyright (c) 1991, 2001, 2002 by Oracle Corporation
##############################################################################
###########################################
# Cache and I/O
###########################################
db_block_size=8192
db_cache_size=33554432
db_file_multiblock_read_count=16
###########################################
# Cursors and Library Cache
###########################################
open_cursors=300
###########################################
# Database Identification
###########################################
db_domain=""
db_name=mwhdata
###########################################
# Diagnostics and Statistics
###########################################
background_dump_dest=/opt/ora9/admin/mwhdata/bdump
core_dump_dest=/opt/ora9/admin/mwhdata/cdump
timed_statistics=TRUE
user_dump_dest=/opt/ora9/admin/mwhdata/udump
###########################################
# File Configuration
###########################################
control_files=("/opt/ora9/oradata/mwhdata/control01.ctl",
"/opt/ora9/oradata/mwhdata/
control02.ctl", "/opt/ora9/oradata/mwhdata/control03.ctl")
###########################################
# Instance Identification
###########################################
instance_name=mwhdata
###########################################
# Job Queues
###########################################
job_queue_processes=10
###########################################
# MTS
###########################################
dispatchers="(PROTOCOL=TCP) (SERVICE=mwhdataXDB)"
###########################################
# Miscellaneous
###########################################
aq_tm_processes=1
compatible=9.2.0.0.0
###########################################
# Optimizer
###########################################
hash_join_enabled=TRUE
query_rewrite_enabled=FALSE
star_transformation_enabled=FALSE
###########################################
# Pools
###########################################
java_pool_size=83886080
large_pool_size=16777216
shared_pool_size=83886080
###########################################
# Processes and Sessions
###########################################
processes=150
###########################################
# Redo Log and Recovery
###########################################
fast_start_mttr_target=300
###########################################
# Security and Auditing
###########################################
remote_login_passwordfile=EXCLUSIVE
###########################################
# Sort, Hash Joins, Bitmap Indexes
###########################################
pga_aggregate_target=25165824
sort_area_size=524288
###########################################
# System Managed Undo and Rollback Segments
###########################################
undo_management=AUTO
undo_retention=10800
undo_tablespace=UNDOTBS1

[oracle@netpower pfile]$ export ORACLE_SID=mwhdata
#在/home/oracle目录下编辑建立数据库的CreateDB.sql脚本文件.
[oracle@netpower oracle]$ vi CreateDB.sql
create database mwhdata
maxinstances 1
maxloghistory 1
maxlogfiles 5
maxlogmembers 5
maxdatafiles 100
datafile '/opt/ora9/oradata/mwhdata/system01.dbf' size 420M reuse
autoextend on next 10240K maxsize 32767M
extent management local
default temporary tablespace
temp tempfile '/opt/ora9/oradata/mwhdata/temp01.dbf' size 40M reuse
autoextend on next 640K maxsize 32767M
undo tablespace "undotbs1"
datafile '/opt/ora9/oradata/mwhdata/undotbs01.dbf' size 200M reuse
autoextend on next 5129K maxsize 32767M
character set ZHS16CGB231280
national character set AL16UTF16
logfile group 1 ('/opt/ora9/oradata/mwhdata/redo01.log') size 102400K,
group 2 ('/opt/ora9/oradata/mwhdata/redo02.log') size 102400K,
group 3 ('/opt/ora9/oradata/mwhdata/redo03.log') size 102400K;
#启动ORACLE9I执行项次.
#建立初始参数文件后,必须先启动ORACLE9I执行项次才能建立数据库.
#先以/nolog选项启动SQL*Plus,再用SYS(密码为chinaunix)帐号以SYSDBA身份登录
ORACLE9I.
#执行STARTUP NOMOUNT指令启动ORACLE9I执行项次,此时必须在STARTUP指令后面加
上PFILE选项,
#以指定初始参数文件的位置.
[oracle@netpower pfile]$ sqlplus /nolog
SQL*Plus: Release 9.2.0.4.0 - Production on Sat Apr 8 16:06:14 2006
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
SQL> conn sys/chinaunix as sysdba
Connected to an idle instance.
SQL> startup nomount pfile=$ORACLE_BASE/admin/mwhdata/pfile/initmwhdata.ora
ORACLE instance started.
Total System Global Area 236000356 bytes
Fixed Size 451684 bytes
Variable Size 201326592 bytes
Database Buffers 33554432 bytes
Redo Buffers 667648 bytes
#用存放在/home/oracle目录下的编辑好的CreateDB.sql脚本创建新的数据库.
SQL> @/home/oracle/CreateDB.sql
Database created.
#成功建立数据库后,ORACLE9I会自动将数据库开启到OPEN状态.
#现执行SHUTDOWN指令将数据库关闭,然后执行EXIT指令离开SQL*PLUS,将数据库重
新启动.
#这一次STARTUP指令只提供PFILE选项,直接将数据库开启至OPEN状态.
SQL> shutdown
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> exit
Disconnected from Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.4.0 - Production
[oracle@netpower pfile]$ sqlplus /nolog
SQL*Plus: Release 9.2.0.4.0 - Production on Sat Apr 8 16:06:14 2006
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
SQL> conn sys/chinaunix as sysdba
Connected to an idle instance.
SQL> startup pfile=$ORACLE_BASE/admin/mwhdata/pfile/initmwhdata.ora
ORACLE instance started.
Total System Global Area 236000356 bytes
Fixed Size 451684 bytes
Variable Size 201326592 bytes
Database Buffers 33554432 bytes
Redo Buffers 667648 bytes
Database mounted.
Database opened.
#执行下列指令可以确认目前的ORACLE9I执行项次名称:
SQL> select instance_name from v$instance;
INSTANCE_NAME
----------------
mwhdata

##########建立其他表空间###########
#在/home/oracle目录下编辑CreateDBFiles.sql脚本.
create tablespace "indx" logging
datafile '/opt/ora9/oradata/mwhdata/indx01.dbf' size 50M reuse
autoextend on next 1280K maxsize 32767M blocksize 8192
extent management local
segment space management auto;
create tablespace "tools" logging
datafile '/opt/ora9/oradata/mwhdata/tools01.dbf' size 5M reuse
autoextend on next 320K maxsize 32767M blocksize 8192
extent management local
segment space management auto;
create tablespace "users" logging
datafile '/opt/ora9/oradata/mwhdata/users01.dbf' size 100M reuse
autoextend on next 1280K maxsize 32767M blocksize 8192
extent management local
segment space management auto;

#执行CreateDBFiles.sql脚本.
SQL> @/home/oracle/CreateDBFiles.sql
Tablespace created.

Tablespace created.

Tablespace created.
#建立数据字典视图,成功执行这两个脚本后,ORACLE9I数据库的建立就算完成了.
SQL> @$ORACLE_HOME/rdbms/admin/catalog.sql;
SQL> @$ORACLE_HOME/rdbms/admin/catproc.sql;

Feb 14, 2008

Oracle9i (9.2.0.4.0) Installation on Red Hat Enterprise Linux 5 (RHEL5) Use shell script

安装oracle的确挺麻烦的,要做好多准备工作,安装的过程中还可能出现一些故障。
我很懒,所以写了几个简单的脚本,不用每次安装都敲好多命令。
而且最近看我博客的除了我,全是奔着 Oracle9i (9.2.0.4.0) Installation on Red Hat Enterprise Linux 5 (RHEL5) 来的,故把我的补丁、脚本都打包发出来。
环境:
Red Hat Enterprise Linux 5
Oracle 9i (9.2.0.4.0)
内存 512M

下载地址: http://www.fs2you.com/files/70035d3d-dac4-11dc-a327-00142218fc6e/
注: 运行前需要根据自己的情况修改BeforInstallOracle.sh 中的kernel parameters设置

Feb 1, 2008

Resource

linux:


http://ftp.chinalinuxpub.com

http://code.google.com/p/linuxeden

http://www.douzhe.com/bbs/forum-25-1.html