Saturday, July 14, 2007

oracle 数据库引擎要点

1、PMON (The Process Monitor) 进程监控器
主要负责连接非正常中断后的清除工作,PMON负责释放相应的资源。
PMON将回滚没有提交的工作,释放锁,释放分配给这个失败进程的Free SGA资源。
除了清理失败的连接之外,PMON还负责监控所有其它的Oracle后台进程,假如有
需要的话,将重起这些后台进程,比如一个 shared server或者一个dispatcher
fail的话, PMON将跟进,重起另一个相应的进程。
2、SMON (The System Moniter) 系统监控器
主要负责其它进程不想处理的工作的进程,是数据库的一种”垃圾回收站”,主要包括:
2-1、临时空间的清除;
比如创建索引失败时,SMON将负责清除在创建索引过程当中分配出来的Temporary extent。
2-2、崩溃恢复;
2-3、Coalescing free space;
这个是在字典管理的表空间才会有的,SMON将表空间中连续的空闲的extent,合并成一个大的
free extent。这只能发生在字典管理的表空间,并且pctincrease 被设置成非零的时候。
2-4、Recovering transactions active against unavailable files;
2-5、OPS中失败节点的实例恢复;
在OPS中,当一个节点Fail,其它节点将打开失败节点的重做日志,对失败节点执行恢复。
(注意 实例恢复和崩溃恢复的区别)
2-6、清除OBJ$;
2-7、Shrinks 回滚段;
如果设置了Optimal,那么SMON将执行自动 Shrink 回滚段到Optimal 大小.
2-8、脱机 回滚段;
举个例子,比如在切换回滚表空间的时候,由于可能之前的回滚表空间中有活动的事务,所以
回滚表空间中的一些回滚段可能并不是真正的脱机,而只是标志为" Pending offline",要等到
活动事务提交或回滚之后,相应的回滚段才算真正的脱机,而SMON则周期性的在后台去真正的脱机
回滚段,直到回滚段真正的脱机为止。
3、CKPT (Checkpoint Process)
CKPT进程并不像它的名字暗示的那样会进行一个checkpoint事件,它只是更新数据文件头。
Oracle 8.0之前,CKPT是一个可选进程,之后就总是开启的了,更新数据文件头在CKPT出现之前
这是LGWR的任务,但是后来随着文件数量增大,这个LGWR的附加任务变得太大而成为负担。
于是就出现了CKPT,由CKPT分担着这部分任务。
4、DBWn (Database Block Writer)
DBWn是一个负责将dirty blocks写到磁盘的后台进程,通常将dirty blocks写到磁盘是为了腾空
更多的空闲空间(为了其它数据的读 而释放缓冲区), 或者advance 一个检查点事件(也就是在
发生故障实例恢复时, 将联机重做日志中Oracle开始读取的位置 前移以节省实例恢复的时间)
Log Switch 会触发一个Checkpoint,Oracle 需要advance这个Checkpoint以至于在实例恢复时
不需要这个刚被填满的online redo log,假如在重用这个日志之前,不能完成这个advance Checkpoint
的操作,则我们在alert将发现"Checkpoint not Compelete"信息,并且必须等待这个事件的完成。
5、LGWR (Log Writer)
LGWR负责将Redo log buffer (位于SGA中)中的内容写入到联机日志文件。
下面几种情况将会触发LGWR写log buffer:
1、每三秒;
2、当用户commit时;
3、当重做日志缓冲区 1/3满 或者包含1M 的缓冲数据时。
由于上面的原因,使用一个大于3M的重做日志缓冲区是不实际的---Oralce永远无法完全使用它。
与DBWn必须执行分散的I/O 不同,重做日志是以顺序写入的方式写入的,这样执行大量的批写入更
加有效率。
6、ARCn (Archive Process)
ARCn是负责copy 已经写满的online redo log到另外一个地方。注意这里的redo log的copy不是文件
级别的Copy,而是copy redo log里面的entries。这些归档日志可以用来处理Media
Recovery。比如你的system01.dbf文件丢失,那么你可以利用你一周前的备份,Restore 该数据文件。
然后请求数据库应用从备份开始后的所有的归档日志和在线日志文件,这样的话,该数据文件就可以
”追”上数据库中的其它的数据文件,然后我们可以继续processing,而不会丢失数据。
中文翻译 "catch up" that file with the reset of the datafiles in our database.中的"cacth
up"翻译为"弥补",我觉得翻译成"追"更合适,因为这样才能更好的理解日志其实是一种数据流。
实际上:
备份是baseline,而日志是一种数据流,指向到系统crash的点,两者共同使用才能回到当前点,
其实中文就这个很模糊,所谓恢复是两件事情,restore和recover 。
7、RECO (Distributed Database Recovery)

Friday, July 13, 2007

GUN, OPENSOURCE, LAW, SERVICE, ...

GUN

GNU计划,又称革奴计划,是由Richard Stallman在1983年9月27日公开发起的。它的目标是创建一套完全自由的操作系统。Richard Stallman最早是在net.unix-wizards新闻组上公布该消息,并附带一份《GNU宣言》等解释为何发起该计划的文章,其中一个理由就是要“重现当年软件界合作互助的团结精神”。

GNU是“GNU's Not Unix”的递归缩写。Stallman宣布GNU应当发音为Guh-NOO,与canoe发音相同,以避免与gnu(非洲牛羚,发音与new相同)这个单词混淆。

UNIX是一种广泛使用的商业操作系统的名称。由于GNU将要实现UNIX系统的接口标准,因此GNU计划可以分别开发不同的操作系统部件。GNU计划采用了部分当时已经可自由使用的软件,例如TeX排版系统和X Window视窗系统等。不过GNU计划也开发了大批其他的自由软件。

为保证GNU软件可以自由地“使用、复制、修改和发布”,所有GNU软件都在一份在禁止其他人添加任何限制的情况下授权所有权利给任何人的协议条款,GNU通用公共许可证(GNU General Public License,GPL)。这个就是被称为“反版权”(或称Copyleft)的概念。

1985年Richard Stallman又创立了自由软件基金会(Free Software Foundation)来为GNU计划提供技术、法律以及财政支持。尽管GNU计划大部分时候是由个人自愿无偿贡献,但FSF有时还是会聘请程序员帮助编写。当GNU计划开始逐渐获得成功时,一些商业公司开始介入开发和技术支持。当中最著名的就是之后被Red Hat兼并的Cygnus Solutions。

到了1990年,GNU计划已经开发出的软件包括了一个功能强大的文字编辑器Emacs,C语言编译器GCC,以及大部分UNIX系统的程序库和工具。唯一依然没有完成的重要组件就是操作系统的内核(称为HURD)。

1991年Linus Torvalds编写出了与UNIX兼容的Linux操作系统内核并在GPL条款下发布。Linux之后在网上广泛流传,许多程序员参与了开发与修改。1992年Linux与其他GNU软件结合,完全自由的操作系统正式诞生。该操作系统往往被称为“GNU/Linux”或简称Linux。(尽管如此GNU计划自己的内核Hurd依然在开发中,目前已经发布Beta版本。)

许多UNIX系统上也安装了GNU软件,因为GNU软件的质量比之前UNIX的软件还要好。GNU工具还被广泛地移植到Windows和Mac OS上

总之,GNU是一项伟大的计划

取自"http://wiki.ccw.com.cn/GNU"



GPL

GNU通用公共许可证(简称为GPL),是由自由软件基金会发行的用于计算机软件的许可证。最初由Richard Stallman为GNU计划而撰写。目前大多数的GNU程序和超过半数的自由软件使用此许可证。此许可证最新版本为“版本2”,1991年发布。GNU宽通用公共许可证(简称LGPL)是由GPL衍生出的许可证,被用于一些GNU程序库。



目录

1 自由

2 历史

2.1 GPLv3

3 条款

3.1 授予的权利

3.2 copyleft

3.3 GPL是许可证

4 版权所有人

5 争议

6 兼容性

7 批评



自由

GPL授予程序接受人以下权利,或称“自由”:

以任何目的运行此程序的自由;

以学习程序工作机理为目的,对程序进行修改的自由(能得到源代码是前提);再发行复制件的自由;



改进此程序,并公开发布改进的自由(能得到源代码是前提)相反地,随版权所有软件的最终用户许可证几乎从不授予用户任何权利(除了使用的权利),甚至可能限制法律允许的行为,比如逆向工程。



GPL与其他一些更“许可的”自由软件许可证(比如BSD许可证)相比,主要区别就在于GPL寻求确保上述自由能在复制件及演绎作品中得到保障。它通过一种由Stallman发明的叫Copyleft的法律机制实现,即要求GPL程序的演绎作品也要在GPL之下。相反,BSD式的许可证并不禁止演绎作品变成版权所有软件。



由于某些原因,GPL成为了自由软件和开源软件的最流行许可证。到2004年4月,GPL已占Freshmeat上所列的自由软件的约75%,SourceForge的约68%。类似的,2001年一项关于Red Hat Linux 7.1的调查显示器一般的代码以GPL发布。著名的GPL自由软件包括Linux核心和GCC。



历史

GPL由Richard Stallman撰写,用于GNU计划。它以GNU Emacs、GDB、GCC的许可证的早期版本为蓝本。这些许可证都包含有一些GPL的版权思想,但仅只针对特定程序。Stallman的目标就是创造出一种四海之内皆可使用的许可证,这样就能为许多源代码共享计划带来福音。GPL版本1就这样,在1989年1月诞生。

到1990年时,因为一些共享库而出现了对比GPL更宽松的许可证的需求。所以当GPL版本2在1991年6月发布时,另一许可证——库通用许可证(Library General Public License,简称LGPL)也随之发布,并记作“版本2”以示对GPL的补充。版本号在LGPL版本2.1发布时不再相同,而LGPL也被重命名为GNU宽通用公共许可证(Lesser General Public License)以体现GNU哲学观。



GPLv3

到2005年,GPL版本3正由Richard Stallman起草,由Eben Moglen和Software Freedom Law Center提供法律咨询。.

Stallman2006年2月25日在自由及开源软件开发者欧洲会议的演讲上说: 在所有的改动中,最重要的四个:

解决软件专利问题;

与其他许可证的兼容性;

源代码分割和组成的定义;

解决数字版权管理 (数字限制管理) 问题。

2006年,自由软件基金会针对GPL的可能的修改开始了12个月的公共咨询。 GPLv3草稿于2006年1月16日开始可用。版本2与3的非官方比较对照参见: Stallman预计GPLv3将在2006年7月份另一草稿起草后,在2006年10月份或2007年年初完成。



条款

授予的权利

此GPL的条款和条件适用于任何收到GPL下的作品的人(即“许可证接受人”)。任何接受这些条款和条件的许可证接受人都有修改、复制、再发行作品或作品的演绎版本的授权。许可证接受人可以对此项服务收取费用,反之亦然。这一点是GPL与其他禁止商业用途的自由软件许可证最大的不同。Stallman认为自由软件不应限制其商业用途,同时GPL清楚地说明了这一点。

但GPL又规定发行者不能限制GPL授予的权利。例如,这禁止对软件在单纯沉默(消极默示)式协议或合同下的发行。GPL下的发行者同时也同意在软件中使用的专利可以在其它GPL软件中使用。

copyleft

GPL不会授予许可证接受人无限的权利。再发行权的授予需要许可证接受人开放软件的源代码,及所有修改。且复制件、修改版本,都必须以GPL为许可证。

这些要求就是copyleft,它的基础就是作品在法律上版权所有。由于它版权所有,许可证接受人就无权进行修改和再发行(除合理使用),除非它有一个copyleft条款。如果某人想行使通常被法律所禁止的权利,只需同意GPL的条款。相反地,如果某人发行软件违反了GPL(比如不开放源代码),他就有可能被原作者起诉。

copyleft利用版权法来达到与其相反的目的: copyleft给人不可剥夺的权利,而不是版权法所规定的诸多限制。这也是GPL被称作“被黑的版权法”的原因。

许多GPL软件发行者都把源代码与可执行程序捆绑起来。另一方式就是以物理介质(比如CD)为载体提供源代码。在实践中,许多GPL软件都是在互联网上发行的,源代码也有许多可以FTP方式得到。

copyleft只在程序再发行时发生效力。对软件的修改可以不公开或开放源代码,只要不发行。注意copyleft只对软件有效力,而对软件的输出并无效力(除非输出的是软件本身)。不过这在GPL版本3中可能会有改动。

GPL是许可证

GPL设计为一种许可证,而不是合同。在英美法系国家,许可证与合同有法律上的明确区别:合同由合同法保障效力,而GPL作为一种许可证有版权法保障效力。不过在许多采用欧陆法系的国家并无此种区别。

GPL原理简单:在版权法下,你不遵守GPL的条款和条件你就没有相应权利。而作品在没有GPL的情况下,版权法作为默认条款发生效力,而不是作品进入公有领域。

版权所有人

GPL文本是版权所有的,且著作权人人是自由软件基金会(FSF)。但是,FSF没有在GPL下发行作品的著作权(除非作者制定FSF是著作权人)。只有著作权人才有权对许可证的违反进行起诉。

FSF允许人们使用以GPL为基础的其他许可证,但不允许演绎的许可证未经授权地使用GPL的前言。不过像这样的许可证通常与GPL不兼容。 GNU计划创立的其他许可证包括:GNU宽通用公共许可证和GNU自由文档许可证。

争议

一个关于GPL重要的争议是,非GPL软件是否可以动态链接到GPL库。GPL对GPL作品的演绎作品在GPL下发布规定很明确。但是对于动态链接到GPL库的作品是否是演绎作品就规定得不清楚了。自由和开放源代码社区为此分成两派,FSF认为这种作品就是演绎作品,但其他专家并不同意。这个问题根本的并不关乎GPL本身,而是一个版权法如何定义演绎作品。美国联邦上诉法院第九巡回审判庭在Galoob v. Nintendo案对演绎作品尝试定义,但最终没有明确的结果。



不幸的是,许多开发者觉得这是个技术问题。不对,这完全是法律问题。不过由于迄今为止没有案例表明有人以动态链接的方式来绕过GPL的条款或者并被起诉,动态链接的限制已经是事实上地(de facto)有效,不论它是否是法律上地(de jure)有效。



2002年,MySQL AB公司起诉Progress NuSphere侵犯版权和商标。NuSphere被指以链接代码的形式侵犯了著作权。最终此案以调解结束。在听证期间,法官“认为没有什么原因”(不管是否是动态链接)会使得GPL失去法律效力。



2003年8月,SCO Group称他们认为GPL没有法律效力,且准备就在Linux核心中使用的SCO Unix代码进行诉讼。参见:en:SCO-Linux争议和en:SCO诉IBM(英文)。



2004年4月,在SiteCom拒绝停止发行Netfilter项目的GPL软件后,慕尼黑地区法庭据对GPL条款的侵犯判定对SiteCom进行临时性禁令(诉前停止侵犯专利权行为的措施)。同年7月,法庭确认此勒令为对SiteCom最终判决。此判决明显的印证了FSF的法律顾问Eben Moglen的预言:



“被告侵犯了原告的著作权:提供了软件netfilter/iptables的广告及下载,但没有遵守GPL的条款。可以说,如果被告有许可证许可,这些行为是完全合法的……原被告就GPL是否达成协议这是一个独立的问题。如果当事人没有同意,被告将没有复制、发行、公开‘netfilter/iptables’的权利。” 此判决十分重要,因为它是全球首次法庭确认GPL是有法律效力的。



2005年5月,Daniel Wallace于美国联邦印第安纳南区地方法院起诉自由软件基金会,因为二者对GPL是否是非法意见不一。后诉讼于3月结束,因为Wallace没有有效的反托拉斯陈述。法庭注意到“GPL鼓励,而不是反对电脑操作系统的自由竞争和发行,这直接使消费者受益。”Wallace被拒绝改变诉由,并被要求支付诉讼费用。

兼容性

大多数自由软件许可证,比如MIT/X许可证、BSD许可证、LGPL,都是“GPL兼容的”,即它们的代码与GPL代码混用无冲突(但新代码则是GPL下的)。但是有某些开源软件许可证不是GPL兼容的。通常意见是开发者仅只使用GPL兼容的许可证,以免法律问题。

批评

2001年微软的首席执行官Steve Ballmer称Linux为“癌症”,因为GPL的影响。微软的批评指出,微软憎恶GPL的真正原因是因为对微软的“包围、扩展、消灭”策略起了反作用。注意微软已以GPL为许可证发行了SFU(Microsoft Windows Services for UNIX)中所包含的部分组件,例如 gcc。



GPL的批评者常常认为GPL是有“传染性”的“病毒” ,因为GPL条款规定演绎作品也必须是GPL的。由于“演绎作品”通常被解释为包含GPL代码或动态链接到GPL库(如上)的软件,“病毒说”来源于GPL对于许可证的强制继承的要求。这正是GPL与BSD式许可证的哲学思想上的差异。GPL的支持者确信自由软件应确保其演绎作品同样“自由”,但其他人认为自由软件应给用户最大的自由。

Wednesday, July 11, 2007

T-SQL同PL/SQL::oracle应该支持T-SQL

最近有关心起oracle来了, 说真的, 数据库市场随着internet应用的推移, 会有很大的变化...
特别是mysql等开源数据库系统的魅力, ...

实际上, 我个人觉得, oracle应该支持T-SQL, T-SQL比pl/sql有明显的优势, PL/SQL就是看到T-SQL, 就是sybase的基于存储过程的sql而clone的一个品种..., 当然, OCI是更底层的东西...

总之, 觉得sybase不错的数据库体系...oracle应该支持T-SQL...

Tuesday, July 10, 2007

卖房过程中的20个大骗局

售楼小姐吐真言:
  1、大家购房所付的保险费其实是可以打八五折的,不要在售楼处买保单,外面的保险公司都可以为你打折。
  2、现在高价房根本不用首付三成,但是你不要去找大银行,找像民生、浦发等小行,你完全可以办成8成贷款,四大银行每年都要被央行来查,所以他们很少违规,但小银行却可以不受限制。
  3、开盘绝对没有好房子,好的房子全部被保留,然后每个月推出几套,但单价升得很快,要么就是你有关系,我们才给你好的房子。
  4、广告没有一个是真的,千万别相信其中的外立面颜色,很多造出来比画的难看多了。
  5、售楼员会用许多方法来逼你买房 (业内叫SP) ,让你无时无刻感到紧张,这时你千万要冷静。要自己看中才买。
  6、别以为高层中的九到十一楼不错,那你大错了,这些楼层正好是扬灰层,脏空气到这个高度就会停顿,我们是不会告诉你们的。
  7、别对景观抱太大希望,树和草是在交房前一个月从外地买来直接插土进去的,所以能多多存活就不错了。
  8、别以为面砖的外墙是好的,其实面砖漏水比涂料漏水的几率大多了,在国外都是用的高级涂料,没人用面砖当外墙。
  9、别以为实测面积是对的,其实测绘局都被我们买通的,少你一个平米你也看不出来,但是国家就只承认他的测绘报告。
  10、得房率,绿化率,容积率大多都是与实际不相符的,千万别相信我们,我们只是听工程部随便说说的,能对八成就不错了。
  11、漏水和外立面的材料根本没关系,你们要关心的是桩有多深,因为新房漏水大多是因为房屋沉降过大,造成外墙裂缝才漏水的。
  12、不要再相信任何奖项,我们公司买到的最大的一个奖是全国人居经典奖,是在人民大会堂发的奖状,你说大不大?五万一个嘛!
  13、开盘的时候售楼处会有许多四五十岁的人在模型边上说这个房子好,千万别信,这些人大多是公司的领导来捧场的。
  14、注意,有人代理公司来代理的楼盘他们通常花样最多,比如排队买号等,但是开房商直接销售就不会搞很多花头,那是因为代理商想赚开发商更多的代理费。
  15、为何上海的所有凸窗看上去很大,但是能通风的只有很小一扇,我们说是为了安全,其实是整个上海的开发商都是为了省钱而内部统一那么做的。
  16、如果报纸广告上的哪个楼盘单独印了一个房型,那你千万不要去买这个房型,不是买不掉的就是位置有问题,我们叫最后冲刺,你想啊,他干嘛不印其他的呢?
  17、到售楼处后直接问售楼员看一样叫销控的本子,这样你才可以确切的知道哪些房子是真的没了,哪些房子还在,这本东西特别准,只有少数楼盘会做一份假的。
  18、一个好的施工单位关键是看他的工地是否干净,建材堆放是否井井有条。
  19、不要相信物业管理会是广告上的外资单位来管理,通常只买他们的一个名字,然后叫物业顾问,这些外资物业公司通常只为单价在一万以上的楼盘来服务,别的其实都由本地公司来管理。
  20、不要相信建筑设计是什么美国或加拿大的公司,这也是假的,国家规定外资设计单位不能单独参与一个楼盘的建筑设计,而必须是是外加一个国内设计公司来共同设计,但是真正做出房型的就是国内公司,弄个外国名字只是满足你们的崇洋媚外的心理。