Archive for 十一月, 2006
美国的医疗保险制度(转)
首先我们来解释一下美国的医疗保险制度。美国的医疗保险,分为公私两大块。大部分的美国人参加私立医疗保险。公司的雇员一般可以从几百家医疗保险公司当中,选择一家符合自己需要的保险公司购买医疗保险。
*雇主雇员分担*
由于美国医疗保险的费用非常昂贵,一般的做法是公司负担百分之八十到九十,个人负担百分之十到二十 。如果公司效益好,比如在网络经济红火的时代,很多高科技公司百分之百地负担雇员及其家属的医疗保险费用。
美国的医疗保险计划分个人和全家两种。如果你是单身,那就只需要购买个人医疗保险计划。如果你有家室,那就可以买家庭保险计划,每个月交纳的费用也相应多一些。一人购买,涵盖全家,包括配偶和未成年子女。
*保险费*
交纳医疗保险费一般占收入的多少呢?以美国首都华盛顿为例,根据2005年美国人口统计局公布的数字,美国大华府都市区家庭年收入的中线是89300美元,每个月中等家庭平均收入为7741元。医疗保险费一般由所在单位承担百分之80,个人负担百分之20,大概每个家庭平均每个月要从工资单中扣除120美元左右用于医疗保险,医疗保险的费用占家庭收入的百分之1.5。
*穷人老人*
从克林顿时代开始,美国医疗保健制度改革的话题此起彼伏,一直没有间断过。其中一个很重要的焦点就是由于医疗保险费用昂贵,很多美国人买不起保险。听众朋友们一定会问,低收入的美国人,或者退休的老年人,他们的医疗保险是怎么安排的呢?
低收入和老年人这两部分人通过参加政府的医疗福利计划而获得医疗保险。根据“全美亚太裔耆老中心”的介绍,国家医疗保健福利计划分为两种:一种是给老年人提供的,称为“老年医疗保险”(Medicare);另一种是为低收入的美国人提供的,称之为“医疗辅助保险”(Medicaid)。
先让我们介绍一下“老年医疗保险”的情况。申请老年医疗保险首先有年龄的限制:年满65岁才符合资格申请联邦老年医疗保险(Medicare)。参加这个计划不受收入和资产方面的限制。也就是说,百万富翁和工薪阶层的普通退休职工在参加联邦老年医疗保险计划方面是一视同仁的,而且这一计划一旦申请通过,一般享受终身。
另一种专门给低收入家庭和个人提供的医疗保健计划由州政府负责,这种计划称为“医疗辅助保险”(Medicaid)。申请这种保险有一定的限制。
据纽约出版的中文报纸世界日报报道:以纽约州为例,单身职工每个月收入必须低于692美元,(相当于5536元人民币),资产在4150美元之下,才有资格申请政府医疗补助计划。不过这里的资产不包括汽车和住房,仅仅指各种银行存款的账户加起来的数字不得超过4千多美元。
换句话说,申请政府提供的“医疗辅助保险”(Medicaid),只要每个月的工资不够高,而且银行里面没有存很多钱,就可以申请医疗保险,对你拥有一部什么样的汽车和拥有什么样的房产并没有任何限制。
*急诊救助 无分贫富*
另外,我们还要介绍一下美国的急诊室。在美国看急诊,只要打一个电话,救护车就会呼啸而至,然后由急救人员把病人用救护车拉到急诊室抢救。
美国的医院奉行救死扶伤的原则,不论发生什么情况,先救人要紧。即使被拉进急诊室的是一名没有任何收入,没有任何身份的非法移民,医院急诊室的医疗和护理人员也不得追问病人的移民身分,也不会向移民局打报告,透露申请者的移民身分。美国国土安全部的相关人员也无权向医疗单位调阅求诊人的医疗和个人资料。
根据联邦 EMTALA 法的规定,任何医院的急诊室都不能因为无法支付医药费或非法移民身分而把需要就医的病人伤患送走,或拒绝提供医药救助。
另外,据有关专家的介绍,非法移民期间或者没有合法身分期间所累积的医疗费用,并不需要在以后归化成美国公民或取得合法身分时偿还;除非是用诈欺方式取得医疗补助。
*代价高 困难大*
不过,美国的急诊护理业近几年来也出现一些问题。美国华盛顿邮报六月刊登一篇呼吁改善美国急诊的文章。文章中说,美国的急诊室面临严重亏损的危险。约14%的急诊室病人没有医疗保险,约16%的病人有联邦和州府政府为穷人提供的医疗保险,约21%的病人有为老人提供的联邦医疗保险。半数以上医院声称,为这些病人提供急诊护理会导致亏损。
美国西海岸旧金山湾区的医疗卫生以及保险方面的专家孙晓光博士说,很多情况下,私人医院不堪重负,最后破产倒闭。
华盛顿邮报的文章指出,美国急诊护理业的问题除了经济方面的压力外,还有急诊室床位少病人多的矛盾,医院(尤其是农村地区的医院)常常找不到愿意去急诊室工作的专门医师,急诊室的压力和嘈杂的环境造成医生误诊等问题。有关专家呼吁成立一个新的联邦机构来管理急诊护理系统。
*揭示危机以消除危机*
美国媒体一贯以立法,司法,行政之外的第四权力机构自称,认为大众传播媒体的社会责任就是监督政府,媒体在危机到来之前喊狼来了更是天经地义的做法。
例如,众所周知,美国的教育体系,特别是高等教育,是世界各地莘莘学子深造的首选,然而美国媒体和教育界经常疾呼教育危机,籍危机感保持领先的地位。华盛顿邮报的这篇文章,也有异曲同工之处。
关于教育的一些报道
*民国时代已开始 民初教师地位高*
其实义务教育的概念,在中国已经不是什么新闻了。早在1901年,当时的大清就意识到教育的重要性,并且指派从英国任大使回来的张百熙为管学大臣。和当时的很多知识分子一样,张百熙在英国任大使期间,一直在观察研究英国为何能够船坚炮利,并且号称是日不落帝国的原因。他得出的结论是:一定要振兴教育。
1904年,根据张百熙的计划,清政府颁定《奏定学堂章程》,规定:“儿童自6岁起受蒙学4年,10岁入寻常小学修业3年。埃各处学堂一律办齐后,无论何色人等皆应受此7年教育,然后听其任为各项事业。”中国自此开始有了义务教育的概念。
孙中山推翻满清成立了中华民国后,立即强调在中国实行免费义务教育。1912年9月29日,中华民国教育部公布《学校征收学费规程》16条,明确规定:“初小、师范、高等师范免收学费”。当时很多家境贫穷的学生,免费上师范就成了他们接受教育的唯一途径。中国前国家领袖毛泽东就是在湖南师范学校毕业的。
和今天中国中小学教师的待遇和地位相比,民国初年教师的地位是相当高的,这也说明当时的中华民国政府对教育的重视。据中国教育方面的专家介绍说,当时普通警察一个月两块银洋,县长一个月20块银洋。而国小校长老师一个月可以拿到40块银洋,民国时期小学教师的地位和待遇要远远超过县长。
即使是在抗战期间的兵荒马乱的年月,当时的国民政府在财政状态极为艰苦的情况下,仍然坚持免费教育的做法。1939年7月28日,当时的国民政府教育部公布《师范学校毕业生服务规程》21条。其中规定:“6岁至12岁之学龄儿童,一律受基本教育,免纳学费。”“已逾学龄未受基本教育之人民,一律受补习教育,免纳学费。”
*七年普及成泡影 义务教育终虚话*
建国后,一度对义务教育非常重视。据教育专家提供的数字,1952年,全国学龄儿童入学率已达49.2%,小学毕业生升学率高达96%。
*学费猛涨 负担如山*
中国老百姓形象地把教育危机称作是“上不起学,看不起病,买不起房”这新三座大山之一。
据中国媒体透露,如今,每年全国义务教育阶段的杂费收入已达上百亿元之巨!中共中央求是杂志社主管的《小康》杂志社七月四号报道说:中国近20年期间,大学费用已经上涨了25倍。学费涨幅远远超过了国民收入增长速度。从支付能力看,中国现阶段的大学支出是世界大学教育支付最高的国家的3倍以上。
小康杂志问道:近20年,什么价格在中国上涨的速度最快?答案是:大学费用。
20年前,在中国上大学的学费大约为每年200元,现在已经上涨至每年平均5000元。近20年时间里,上涨了25倍。而1994年至今的10余年间,中国国民人均收入却增长不到4倍,学费涨幅远远超过了国民收入增长速度。
2006年全国两会期间,全国政协委员孙继业也提出,高等教育收费过高,已经超出了普通家庭的承受能力。
中国的《小康》杂志调查数据显示,支持一个大学生的教育花费,在农村要占到家庭收入的将近三分之一,为32.6%,而对城市家庭来说,养活一个大学生的花费,要占家庭收入的四分之一,为25.9%。
*美国严控公立学校学费*
美国的高等教育傲视全球,然而在这个世界上最发达的国家,大学的学费,特别是州立大学等公立学校的学费,受到严格的控制。每个州的州立大学,都对居住在本州,并且在本州纳税的居民提供子女上大学的优惠收费标准。据统计数字表明,在美国,大学学费平均仅占人均收入的六分之一左右。
*中国高校扩招大跃进*
由于中国教育改革产业化和市场化,导致中国大学生的学费高昂,各个大学最近几年都想方设法,巧立名目,多收学生,特别是多招自费生,为学校创收。
中国大学的扩大招生,受到中国媒体的盛赞。《小康》杂志报道说:
“1999年,我国高校开始大举进行扩招。此后,高校扩招每年都以40万人以上的速度递增。7年时间里,我国高校在校生总规模从1998年的643万人,增加到2005年的2300多万人,翻了近三番,此增长速度居全世界第一。中国高等教育规模的扩张,只用4年时间就走过了美国27年历程。”
*毕业即失业者的比例*
而目前旅居美国的中国教育专家何清涟认为,这种所谓的扩招,成为国家对中国普通平民百姓的又一次剥夺和清洗。农民倾家荡产培养出一个高价大学生,而毕业之后竟然一半以上的人找不到工作,成为中国高等教育改革的又一个弊端。
根据何清涟女士的研究,中国从2004年开始,在参加高考的考生人数723万人当中,农村考生人数首次超过城镇,占考生人数达55%。然而,这些跳入龙门的大学生毕业之后,面临的却是一个非常严峻的就业市场。
何清涟女士指出,中国2003年高校毕业生一次就业率低于50%。
大学生就业难的问题严重到什么样的程度了呢?根据中国媒体的报道,中国政府有关部门反复强调要将城市下岗工人、大学毕业生与农村过剩劳动力的就业当作最重要的政府工作来抓。大学毕业生已经成为中国就业难的三大社会群体之一,大学生毕业就业难的局面,由此可见一斑。
*国家教育投入少 校园贫困学生多*
何清涟女士还通过研究,用数字说话,揭露了中国教育的畸形现状。何清涟女士说,首先中国公共教育经费居世界上最低。据中国政府公布的数字,二OOO年,中国的教育经费占全国GDP的2.3%,而联合国教科文组织年鉴提供的资料仅为2%),比一九八O年的2.5%下降了0.2个百分点,低于世界各国5.1%的平均水平。
何清涟女士提请注意的另一个数字是中国在校贫困大学生比例偏高。近年来,由于教育产业化政策的推行,不少家庭无法支付日益昂贵的学费,贫困大学生数量增大,成了高等教育中一道让人感到悲哀的风景线。据调查,在北京大学、清华、复旦这类一流学校中,贫困大学生(每月伙食费150元人民币)比例为15%;而在普通高校中,则高达30%以上。这些学生因长期吃不饱饭而营养严重不良。在就业机会稀缺的中国,不少大学生被迫卖血、求乞,女大学生被迫卖淫。
作家何建明经过两年多调查,写了一本反映贫困大学生群体的报告文学《落泪是金》。另外一位名叫陈杰人的记者发表了一篇《女大学生卖淫调查》,引起刊登该报导的《青年参考》杂志主编被撤职。
*高科技人才不足 知识型劳力过剩*
然而,在中国却出现了一个奇怪的现象,大学本科毕业生的就业率越低,上大学的费用越来越高,而愿意在大学本科教育上大量投资的人反而越多,没有任何出路的农家子弟只有通过参加高考才能摆脱贫困的境地,反过来,这又刺激了大学的持续膨胀,导致大学毕业生的就业率进一步下降。从而造成一方面中国目前还有大量文盲,迫切需要各种高科技人才,而另一方面,中国政府又承认,“知识型劳力过剩”现象在中国将会长期存在。中国教育资源的配置不当,投资效率低下,受过相当教育的知识型劳动者处在闲置和半闲置状态中,人力资源严重浪费。
也说墨攻
墨攻,编剧/导演 张之亮
主演:刘德华,王志文,安圣基(韩国)
昨天想看电影,查了下各个电影院的电影排期,没有想看的《三峡好人》 。别的电影都没有什么兴趣。
早上表哥打电话问要不要看,他有票。于是出门赶10:30的点。
看下来感觉就是一个中国版的“大片” ,所谓大片,现在的感觉就是没有思想,或者想表达什么思想但是因为语无伦次而让观众不知所云,比如《英雄》。
稍微有点感觉的是 安圣基演的将军的角色比较有光彩。
至于故事情节,对白都是普普通通,连bug也是普普通通。
比如刘德华里面提到的因果,在战国时期,佛教还没有到中国,何来因果一词?
攻入梁城的赵军,被不知道怎么来的地下水和几辆百姓推来的烧着草的车包围拿下。
那个时候有老外吗?还是个奴隶。
莫明其妙
一个词,不推荐看
持斋一周
上周的今天开始持斋,虽然开始前试着持了几天,但是吃饭的时候,还是遇到一些麻烦:素食很少或者几乎没有。
所以这几天对素食的定义一再宽松,鸡蛋是不是素食存在有争议,我觉得现在的鸡蛋和历史上的都不一样:历史上不会有现在社会这样大规模养殖的方式,现在的方式导致我们买到的鸡蛋(尤其是比较便宜的),都应该是没有受精的。 我觉得吃它们,应该不算杀生。
对一些菜,比如芹菜,韭菜,葱,蒜。葱很难不吃,因为很多时候作为调料了,蒜,韭菜,芹菜可以不主动吃。不过我还是只把蒜列为不吃,别的还不是很严格。
这样下来一周,除了和老婆一起吃饭时点菜需要注意外,别的都挺好。因为中午不吃大荤菜,相对吃的好像少了一些,下午比较容易饿,有时吃了一些萨琪玛。
今天早上称体重,空腹已经67公斤了。长了1斤。我和老婆都分析是萨琪玛的原因。
differences between global partitioned index and local partitioned index
You Asked (Jump to Tom’s latest followup)
Hi Tom, please explain the differences between global partitioned index and
local partitioned index.
Thanks!
and we said…
<quote src=expert one on one Oracle>
Partitioning Indexes
Indexes, like tables, may be partitioned. There are two possible methods to
partition indexes. You may either:
Equipartition the index with the table – Also known as a local
index. For every table partition, there will be an index partition that indexes
just that table partition. All of the entries in a given index partition point
to a single table partition and all of the rows in a single table partition are
represented in a single index partition.
Partition the index by range – Also known as a global index. Here
the index is partitioned by range, and a single index partition may point to any
(and all) table partitions.
In the locally partitioned index, the index entries in a given partition, point
into exactly one table partition. The globally partitioned index diagram
however, shows that the index entries in a global index may point into any or
all of the table partitions. Also, note that the number of index partitions may
in fact be different than the number of table partitions.
Since global indexes may be partitioned by range only, you must use local
indexes if you wish to have a hash or composite partitioned index. The local
index will be partitioned using the same scheme as the underlying table.
</quote>
现代企业职位新解(转贴)
所谓社会百态
现代企业职位新解:
总是在裁人,简称总裁;
老是板着脸,所以称老板;
总想监视人,所以叫总监;
经常没道理,就叫经理;
让领导秘密舒服,称为秘书。
参加ISA巡展
昨天有幸参加了ISA优化运营信息中心巡回展。
ISA: Intanium Solutions Alliance 安腾解决方案联盟
包括成员:
BULL, Fujitsu, Fujitsu Siemens Computers, Hitachi, HP, Intel, NEC, SGI, Unisys.
都是硬件厂商。
这里面有些是以前大名鼎鼎的,现在没落的,比如SGI. BULL 第一次听说;Fujitsu Siemens Computers是富士通和西门子在德国的合资公司;
几种芯片架构:
RISC: Reduced Instruction Set Computing 精简指令计算, 比如IBM的 Power芯片,Sun的sparc芯片
CISC: Complex Instruction Set Computer 复杂指令计算,比如Intel, AMD的X86 ,Xeon.
IA-64 : EPIC: Explicitly Parallel Instruction Computers 精确并行计算机, 不兼容X86的应用,只有安腾芯片。
X86-64 :(AMD64 / EM64T)兼容X86的应用
安腾的优势: 多家硬件,软件厂商支持,可以运行Windows, Linux, HP-UX等。安腾的解决方案是开放的。不会把用户锁在一家硬件厂商,比如如果觉得HP的服务器不好,可以换富士通的,而应用不用修改。比较RISC各个硬件厂商不通的RISC架构,导致被硬件厂商绑架,厂商要什么价格就是什么价格,没有选择的余地。
其中,SGI是一家mainframe 技术很强的公司。他们的服务器可以最多配置1024个core,2T内存,注意,不是cluster,是一个OS. 一个典型的应用是可以把数据都放在内存里面, 比如Oracle的TimesTen内存数据库,放在内存里面可以达到一般的DBMS不能相象的速度。TOP500里面SGI最前面的是第八
BULL公司是一家法国的IT公司,历史上曾经很强,比如IC卡是BULL发明的。现在top500 超级计算里面,第七名是BULL的。
安腾的劣势:不兼容X86的软件,很多C/C++/Fortuan应用在移植时要重新编译。
分析:随着Linux的发展,在x86上的服务器已经逐步成为主流,在x86 linux上安装oracle成为很多中小企业少花钱,多办事的解决方案。在高端,如果安腾解决方案能逐步成为主流,那么Linux在服务器的前途不可限量。
附:top500中,linux最多,达到75.2%
Operating system Family
Operating system Family Count Share % Rmax Sum (GF) Rpeak Sum (GF) Processor Sum
Linux 376 75.20 % 2014910 3195766 516189
Unix 86 17.20 % 559636 807423 142104
BSD Based 3 0.60 % 47697 53248 5888
Mixed 32 6.40 % 872226 1104103 350484
Mac OS 3 0.60 % 32989 53008 6296
Totals 500 100% 3527458.35 5213548.18 1020961
附录:
64位技术 |
|||
|
持21天戒
从2006.11.18号(农历9月28)开始。
转贴一个幽默的回帖
原帖子:
http://www.itpub.net/663021,3.html
1:你最擅长的是oracle哪部分?
shutdown immediate;
2:喜欢oracle吗?喜欢上论坛吗?或者偏好oracle的哪一部分?
n/a? n/a?我不知道oracle有没有下半部分。
3:随意说说你觉得oracle最有意思的部分或者最困难的部分
oracle最有意思的部分就是oracle给我提示:Please contract your database administrator …
TNND,我就是database administrator !!!
4:为何要选择做DBA呢?
当时太小,不懂事,以为DBA就是NBA…
查lock的信息
有时因为DML语句没有及时commit,导致其它session等待其占用的锁,引起hang.
引用:
http://www.itpub.net/244694.html
http://www.builder.com.cn/developer/database/story/0,3800066906,39451598-1,00.htm
1.找到等待的session
select /*+ NO_MERGE(a) NO_MERGE(b) NO_MERGE(c) */ ‘Wait’ “Status”, a.username, a.machine, a.sid, a.serial#, a.last_call_et “Seconds”, b.id1, c.sql_text “SQL”
from v$session a, v$lock b, v$sqltext c
where a.username is not null
and a.lockwait = b.kaddr
and c.hash_value =a.sql_hash_value
union
select /*+ NO_MERGE(a) NO_MERGE(b) NO_MERGE(c) */ ‘Lock’ “Status”, a.username, a.machine, a.sid, a.serial#, a.last_call_et “Seconds”, b.id1, c.sql_text “SQL”
from v$session a, v$lock b, v$sqltext c
where b.id1 in
(select /*+ NO_MERGE(d) NO_MERGE(e) */ distinct e.id1
from v$session d, v$lock e
where d.lockwait = e.kaddr)
and a.username is not null
and a.sid = b.sid
and b.request=0
and c.hash_value =a.sql_hash_value;
2.取出session等待的信息
select row_wait_obj#,row_wait_file#,row_wait_block#,row_wait_row# from v$session where sid = &sid;
3.取出等待的对象,所在的表空间
select owner, segment_name, segment_type, tablespace_name from dba_extents
where file_id = &fileid_in
and &blockid_in between block_id and block_id + blocks – 1
但是还不能查到引起持有资源的那个sql?
其它:
asktom上tom对lock的一个答复
You Asked (Jump to Tom’s latest followup)
Hi Tom,
Here are the few questions on Locking.
1)How do I use v$lock to figure out lock details ? Details like
whos has locked,on which table,who else is waiting, and what type
of locking (shared or exlusive ?), since when it is locked.
2)Why and when exclusive/shared locks are used ? Could you give me
example please ?
Thanks for the answer, I understand better.
3)Could you tell me significance of v$mystat and v$locked_object ?
Thank you .
4) Do we have page level locking in Oracle ?
Thank you
Thanks in advance,
Gururaj
and we said…
1) Here is a small example showing how this happens. We will use three V$ tables
in order to see how this works; V$TRANSACTION, V$SESSION, and V$LOCK.
V$TRANSACTION contains an entry for every active transaction. V$LOCK contains an
entry for all locks held as well as locks being waited on. V$SESSION shows us
the sessions logged in. We’ll start by starting a transaction in one session and
looking at the state of the system at that point:
tkyte@TKYTE816> update dept set deptno = deptno+10;
4 rows updated.
tkyte@TKYTE816> select username,
2 v$lock.sid,
3 trunc(id1/power(2,16)) rbs,
4 bitand(id1,to_number(‘ffff’,'xxxx’))+0 slot,
5 id2 seq,
6 lmode,
7 request
8 from v$lock, v$session
9 where v$lock.type = ‘TX’
10 and v$lock.sid = v$session.sid
11 and v$session.username = USER
12 /
USERNAME SID RBS SLOT SEQ LMODE REQUEST
——– ———- ———- ———- ———- ———- ———-
TKYTE 8 2 46 160 6 0
tkyte@TKYTE816> select XIDUSN, XIDSLOT, XIDSQN
2 from v$transaction
3 /
XIDUSN XIDSLOT XIDSQN
———- ———- ———-
2 46 160
The interesting things to note here are:
ć The LMODE is 6 in the V$LOCK table and the request is 0. If you refer to the
definition of the V$LOCK table in the Oracle Server Reference, you will find
that LMODE=6 is an exclusive lock. A value of 0 in the request means we are not
making a request ¡V we have the lock.
ć There is only one row in this table. This V$LOCK table is more of a queuing
table than a lock table. Many people expect there would be four rows in V$LOCK
since we have four rows locked. What you must remember however is that Oracle
does not store a master list of every row locked anywhere. To find out if a row
is locked, we must go to that row.
ć I took the ID1 and ID2 columns, and performed a bit of bit manipulation on
them. Oracle needed to save three 16bit numbers, but only had two columns in
order to do it. So, the first column ID1 holds two of these numbers. By dividing
by 2^16 with trunc(id1/power(2,16)) rbs and by masking out the high bits with
bitand(id1,to_number(‘ffff’,'xxxx’))+0 slot, I am able to get the two numbers
that are hiding in that one number back out.
ć The RBS, SLOT, and SEQ values match the V$TRANSACTION information. This is my
transaction ID.
Now I’ll start another session using the same user name, update some rows in
EMP, and then try to update DEPT:
tkyte@TKYTE816> update emp set ename = upper(ename);
14 rows updated.
tkyte@TKYTE816> update dept set deptno = deptno-10;
I am now blocked in this session. If we run the V$ queries again, we see:
tkyte@TKYTE816> select username,
2 v$lock.sid,
3 trunc(id1/power(2,16)) rbs,
4 bitand(id1,to_number(‘ffff’,'xxxx’))+0 slot,
5 id2 seq,
6 lmode,
7 request
8 from v$lock, v$session
9 where v$lock.type = ‘TX’
10 and v$lock.sid = v$session.sid
11 and v$session.username = USER
12 /
USERNAME SID RBS SLOT SEQ LMODE REQUEST
——– ———- ———- ———- ———- ———- ———-
TKYTE 8 2 46 160 6 0
TKYTE 9 2 46 160 0 6
TKYTE 9 3 82 163 6 0
tkyte@TKYTE816> select XIDUSN, XIDSLOT, XIDSQN
2 from v$transaction
3 /
XIDUSN XIDSLOT XIDSQN
———- ———- ———-
3 82 163
2 46 160
What we see here is that a new transaction has begun ¡V (3,82,163) is the
transaction ID. It has two rows in V$LOCK this time. One row represents the
locks that it owns (where LMODE=6). It also has a row in there that shows a
REQUEST with a value of 6. This is a request for an exclusive lock. The
interesting thing to note here is that the RBS/SLOT/SEQ values of this request
row are the transaction ID of the holder of the lock. We can easily see that the
transaction with SID=8 is blocking the transaction with SID=9. Now, if we commit
in SID = 8 the above changes:
tkyte@TKYTE816> select username,
2 v$lock.sid,
3 trunc(id1/power(2,16)) rbs,
4 bitand(id1,to_number(‘ffff’,'xxxx’))+0 slot,
5 id2 seq,
6 lmode,
7 request, block
8 from v$lock, v$session
9 where v$lock.type = ‘TX’
10 and v$lock.sid = v$session.sid
11 and v$session.username = USER
12 /
USERNAME SID RBS SLOT SEQ LMODE REQUEST
——– ———- ———- ———- ———- ———- ———-
TKYTE 9 3 82 163 6 0
tkyte@TKYTE816> select XIDUSN, XIDSLOT, XIDSQN
2 from v$transaction
3 /
XIDUSN XIDSLOT XIDSQN
———- ———- ———-
3 82 163
that request row has gone ¡V it disappeared the instant the other session gave
up its lock. That request row was the queuing mechanism. The database is able to
wake up the blocked sessions the instant the transaction is completed. Note that
the above gives us a very easy way to see blockers and waiters:
tkyte@TKYTE816> select
(select username from v$session where sid=a.sid) blocker,
2 a.sid,
3 ‘ is blocking ‘,
4 (select username from v$session where sid=b.sid) blockee,
5 b.sid
6 from v$lock a, v$lock b
7 where a.block = 1
8 and b.request > 0
9 and a.id1 = b.id1
10 and a.id2 = b.id2
11 /
BLOCKER SID ‘ISBLOCKING’ BLOCKEE SID
——– ———- ————- ——– ———-
TKYTE 8 is blocking TKYTE 9
simply by doing a self-join of V$LOCK with itself (I ran this query before
committing the session with SID=8).
2) exclusive lock — I updated a row. no one else can update it until I commit.
I have an X lock on that row and only one person at a time can have an X lock.
an X lock provides serialization to a resource.
A shared lock — when I update a table, I take a shared lock on the DEFINITION
of the table. Everyone else can do that as well (more then one session can get
a shared lock on the table definition). So, more than one person at a time can
update the table. If you wanted to ALTER the table, you would need an X lock on
the defintion. You cannot get an X lock when there are shared locks so you wait
until there are no shared locks.
3) mystat has the statistics (cpu use, blocks read, cursors opened, etc) for
your session only. v$locked_object shows you all of the locks in the system.
4) no, never.