<?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>GlobStudio &#187; oracle</title>
	<atom:link href="http://blog.globstudio.com/tag/oracle/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.globstudio.com</link>
	<description>记录成长历程，专注软件开发</description>
	<lastBuildDate>Wed, 14 Dec 2011 07:53:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>oracle锁表查询及解锁kill进程</title>
		<link>http://blog.globstudio.com/902.html</link>
		<comments>http://blog.globstudio.com/902.html#comments</comments>
		<pubDate>Tue, 09 Aug 2011 05:51:51 +0000</pubDate>
		<dc:creator>henry.wu</dc:creator>
				<category><![CDATA[数据库]]></category>
		<category><![CDATA[oracle]]></category>

		<guid isPermaLink="false">http://blog.globstudio.com/?p=902</guid>
		<description><![CDATA[select count(*) from v$locked_object; select * from v$locked_object; &#8211;查看哪个表被锁 select b.owner,b.object_name,a.session_id,a.locked_mode from v$locked_object a,dba_objects b where b.object_id = a.object_id; &#8211;查看是哪个session引起的 select b.username,b.sid,b.serial#,logon_time from v$locked_object a,v$session b where a.session_id = b.sid order by b.logon_time; &#8211;杀掉对应进程 alter system kill session&#8217;1025,41&#8242;; &#8211;1025为sid,41为serial# &#160; 转自：http://jinyumantang110.blog.163.com/blog/static/54579156201141272633337/]]></description>
			<content:encoded><![CDATA[<div>
<div>
<div>
<h3><span class="Apple-style-span" style="font-size: 13px; font-weight: normal;">select count(*) from v$locked_object;</span></h3>
</div>
</div>
</div>
<div>
<p>select * from v$locked_object;</p>
<p>&#8211;查看哪个表被锁<br />
select b.owner,b.object_name,a.session_id,a.locked_mode<br />
from v$locked_object a,dba_objects b<br />
where b.object_id = a.object_id;</p>
<p><span id="more-902"></span><br />
&#8211;查看是哪个session引起的<br />
select b.username,b.sid,b.serial#,logon_time<br />
from v$locked_object a,v$session b<br />
where a.session_id = b.sid order by b.logon_time;<br />
&#8211;杀掉对应进程</p>
<p>alter system kill session&#8217;1025,41&#8242;;</p>
<p>&#8211;1025为sid,41为serial#</p>
<p>&nbsp;</p>
<p>转自：<a href="http://jinyumantang110.blog.163.com/blog/static/54579156201141272633337/">http://jinyumantang110.blog.163.com/blog/static/54579156201141272633337/</a></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.globstudio.com/902.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>学习笔记2011-03</title>
		<link>http://blog.globstudio.com/861.html</link>
		<comments>http://blog.globstudio.com/861.html#comments</comments>
		<pubDate>Mon, 21 Mar 2011 16:03:32 +0000</pubDate>
		<dc:creator>henry.wu</dc:creator>
				<category><![CDATA[Linux开发]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[virtualbox]]></category>

		<guid isPermaLink="false">http://blog.globstudio.com/?p=861</guid>
		<description><![CDATA[2011年2月28日 创建数据库约束(ORACLE): alter table tablename add CONSTRAINT sys_name unique(field1, field2); 删除约束： alter table tablename drop CONSTRAINT sys_name; 或alter table tablename drop unique(field1, field2); &#160; 2011年3月2日 Mysql5.5.9编译安装 1，安装CMake mysql从5.5开始使用CMake build system sudo apt-get install cmake 2011年3月21日 查看centos版本：cat /etc/redhat-release &#160; centos5.2升级 yum clean all yum update glibc\* yum update yum\* rpm\* pyth\* yum clean all yum update [...]]]></description>
			<content:encoded><![CDATA[<p>2011年2月28日</p>
<p>创建数据库约束(ORACLE):</p>
<p>alter table tablename add CONSTRAINT sys_name unique(field1, field2);</p>
<p>删除约束：</p>
<p>alter table tablename drop CONSTRAINT sys_name;</p>
<p>或alter table tablename drop unique(field1, field2);</p>
<p>&nbsp;</p>
<p>2011年3月2日</p>
<p>Mysql5.5.9编译安装</p>
<p>1，安装CMake</p>
<p>mysql从5.5开始使用CMake build system</p>
<p>sudo apt-get install cmake</p>
<p><span id="more-861"></span></p>
<p>2011年3月21日</p>
<p>查看centos版本：cat /etc/redhat-release</p>
<p>&nbsp;</p>
<p>centos5.2升级</p>
<p>yum clean all</p>
<p>yum update glibc\*</p>
<p>yum update yum\* rpm\* pyth\*</p>
<p>yum clean all</p>
<p>yum update mkinitrd nash</p>
<p>yum update selinux\*</p>
<p>yum update</p>
<p>shutdown -r now</p>
<p>&nbsp;</p>
<p>VirtualBox命令行运行</p>
<p>查看安装的vms：VBoxManage list vms</p>
<p>查看正在运行的vms: VBoxManage list runningvms</p>
<p>vrdp方式启动：VBoxManage startvm vos-name -type vrdp</p>
<p>关闭vms：VBoxManage controlvm dcsvr08 poweroff [ause resume reset poweroff savestate acpipowerbutton acpisleepbutton]</p>
<p>重新设置vdi uuid:VBoxManage internalcommands setvdiuuid “E:\VirtualMachine\centos32\centosx64.vdi”</p>
<p>&nbsp;</p>
<p>查看磁盘使用情况</p>
<p>df查看文件系统及使用情况 df -lh</p>
<p>du查看目录大小 du -sm 以M为单位显示目录【总】大小</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.globstudio.com/861.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>【转】Oracle数据库提高命中率及相关优化</title>
		<link>http://blog.globstudio.com/759.html</link>
		<comments>http://blog.globstudio.com/759.html#comments</comments>
		<pubDate>Fri, 23 Apr 2010 02:05:44 +0000</pubDate>
		<dc:creator>henry.wu</dc:creator>
				<category><![CDATA[数据库]]></category>
		<category><![CDATA[oracle]]></category>

		<guid isPermaLink="false">http://blog.globstudio.com/?p=759</guid>
		<description><![CDATA[关于Oracle中各个命中率的计算以及相关的调优 1)Library Cache的命中率: .计算公式:Library Cache Hit Ratio = sum(pinhits) / sum(pins) SQL&#62;SELECT SUM(pinhits)/sum(pins) FROM V$LIBRARYCACHE; 通常在98%以上，否则，需要要考虑加大共享池，绑定变量，修改cursor_sharing等参数。 2)计算共享池内存使用率: SQL&#62;SELECT (1 - ROUND(BYTES / (&#38;TSP_IN_M * 1024 * 1024), 2)) * 100 &#124;&#124; '%' FROM V$SGASTAT WHERE NAME = 'free memory' AND POOL = 'shared pool'; 其中: &#38;TSP_IN_M是你的总的共享池的SIZE(M) 共享池内存使用率，应该稳定在75%-90%间，太小浪费内存，太大则内存不足。 查询空闲的共享池内存: SQL&#62;SELECT * FROM V$SGASTAT WHERE NAME = 'free memory' AND POOL = 'shared pool'; 3)db buffer cache命中率: 计算公式:Hit ratio = 1 &#8211; [physical reads/(block gets + consistent gets)] SQL&#62;SELECT NAME, PHYSICAL_READS, DB_BLOCK_GETS, CONSISTENT_GETS, 1 - (PHYSICAL_READS / (DB_BLOCK_GETS + CONSISTENT_GETS)) "Hit Ratio" FROM V$BUFFER_POOL_STATISTICS WHERE NAME='DEFAULT'; 通常应在90%以上，否则，需要调整,加大DB_CACHE_SIZE 另外一种计算命中率的方法(摘自ORACLE官方文档&#60;&#60;数据库性能优化&#62;&#62;): 命中率的计算公式为: Hit Ratio = 1 - ((physical reads - physical reads direct - physical reads direct (lob)) / (db block gets + consistent gets - physical reads direct - physical reads direct (lob)) 分别代入上一查询中的结果值,就得出了Buffer cache的命中率 SQL&#62;SELECT NAME, VALUE FROM V$SYSSTAT WHERE NAME IN('session logical reads', 'physical reads', 'physical reads direct', 'physical reads direct (lob)', [...]]]></description>
			<content:encoded><![CDATA[<p>关于Oracle中各个命中率的计算以及相关的调优</p>
<p><strong>1)Library Cache的命中率:</strong></p>
<p>.计算公式:Library Cache Hit Ratio = sum(pinhits) / sum(pins)</p>
<pre>
<ol>
<li>SQL&gt;SELECT SUM(pinhits)/sum(pins)</li>
<li>FROM V$LIBRARYCACHE;</li>
</ol>
</pre>
<p>通常在98%以上，否则，需要要考虑加大共享池，绑定变量，修改cursor_sharing等参数。<br />
<span id="more-759"></span><br />
<strong>2)计算共享池内存使用率:</strong></p>
<pre>
<ol>
<li>SQL&gt;SELECT (1 - ROUND(BYTES / (&amp;TSP_IN_M * 1024 * 1024), 2)) * 100 || '%'</li>
<li>FROM V$SGASTAT</li>
<li>WHERE NAME = 'free memory' AND POOL = 'shared pool';</li>
</ol>
</pre>
<p>其中: &amp;TSP_IN_M是你的总的共享池的SIZE(M)</p>
<p>共享池内存使用率，应该稳定在75%-90%间，太小浪费内存，太大则内存不足。</p>
<p>查询空闲的共享池内存:</p>
<pre>
<ol>
<li>SQL&gt;SELECT * FROM V$SGASTAT</li>
<li>WHERE NAME = 'free memory' AND POOL = 'shared pool';</li>
</ol>
</pre>
<p><strong>3)db buffer cache命中率:</strong></p>
<p>计算公式:Hit ratio = 1 &#8211; [physical reads/(block gets + consistent gets)]</p>
<pre>
<ol>
<li>SQL&gt;SELECT NAME, PHYSICAL_READS, DB_BLOCK_GETS, CONSISTENT_GETS,</li>
<li>1 - (PHYSICAL_READS / (DB_BLOCK_GETS + CONSISTENT_GETS)) "Hit Ratio"</li>
<li>FROM V$BUFFER_POOL_STATISTICS</li>
<li>WHERE NAME='DEFAULT';</li>
</ol>
</pre>
<p>通常应在90%以上，否则，需要调整,加大DB_CACHE_SIZE</p>
<p>另外一种计算命中率的方法(摘自ORACLE官方文档&lt;&lt;数据库性能优化&gt;&gt;):</p>
<p>命中率的计算公式为:</p>
<pre>
<ol>
<li>Hit Ratio = 1 - ((physical reads - physical reads direct - physical reads direct (lob)) / (db block gets +</li>
<li>consistent gets - physical reads direct - physical reads direct (lob))</li>
</ol>
</pre>
<p>分别代入上一查询中的结果值,就得出了Buffer cache的命中率</p>
<pre>
<ol>
<li>SQL&gt;SELECT NAME, VALUE</li>
<li>FROM V$SYSSTAT</li>
<li>WHERE NAME IN('session logical reads',</li>
<li>'physical reads',</li>
<li>'physical reads direct',</li>
<li>'physical reads direct (lob)',</li>
<li>'db block gets', 'consistent gets');</li>
</ol>
</pre>
<p><strong>4)数据缓冲区命中率：</strong></p>
<pre>
<ol>
<li>SQL&gt; select value from v$sysstat where name ='physical reads';</li>
<li>SQL&gt; select value from v$sysstat where name ='physical reads direct';</li>
<li>SQL&gt; select value from v$sysstat where name ='physical reads direct (lob)';</li>
<li>SQL&gt; select value from v$sysstat where name ='consistent gets';</li>
<li>SQL&gt; select value from v$sysstat where name = 'db block gets';</li>
</ol>
</pre>
<p>这里命中率的计算应该是</p>
<p>令 x = physical reads direct + physical reads direct (lob)</p>
<p>命中率 =100 &#8211; ( physical reads &#8211; x) / (consistent gets + db block gets &#8211; x)*100</p>
<p>通常如果发现命中率低于90%,则应该调整应用可可以考虑是否增大数据缓冲区</p>
<p><strong>5)共享池的命中率：</strong></p>
<pre>
<ol>
<li>SQL&gt; select sum(pinhits-reloads)/sum(pins)*100 "hit radio" from v$librarycache;</li>
</ol>
</pre>
<p>假如共享池的命中率低于95%,就要考虑调整应用（通常是没使用bind var ）或者增加内存</p>
<p><strong>6)计算在内存中排序的比率:</strong></p>
<pre>
<ol>
<li>SQL&gt;SELECT * FROM v$sysstat t WHERE NAME='sorts (memory)';—查询内存排序数</li>
<li>SQL&gt;SELECT * FROM v$sysstat t WHERE NAME='sorts (disk)';—查询磁盘排序数</li>
<li>--caculate sort in memory ratio</li>
<li>SQL&gt;SELECT round(&amp;sort_in_memory/(&amp;sort_in_memory+&amp;sort_in_disk),4)*100||'%' FROM dual;</li>
</ol>
</pre>
<p>此比率越大越好,太小整要考虑调整,加大PGA</p>
<p><strong>7)PGA的命中率:</strong></p>
<p>计算公式:BP x 100 / (BP + EBP)</p>
<p>BP: bytes processed</p>
<p>EBP: extra bytes read/written</p>
<pre>
<ol>
<li>SQL&gt;SELECT * FROM V$PGASTAT  WHERE NAME='cache hit percentage';</li>
</ol>
</pre>
<p>或者从OEM的图形界面中查看</p>
<p>我们可以查看一个视图以获取Oracle的建议值:</p>
<pre>
<ol>
<li>SQL&gt;SELECT round(PGA_TARGET_FOR_ESTIMATE/1024/1024) target_mb,</li>
<li>ESTD_PGA_CACHE_HIT_PERCENTAGE cache_hit_perc,</li>
<li>ESTD_OVERALLOC_COUNT</li>
<li>FROM V$PGA_TARGET_ADVICE;</li>
<li>The output of this query might look like the following:</li>
<li>TARGET_MB  CACHE_HIT_PERC  ESTD_OVERALLOC_COUNT</li>
<li>----------           --------------        --------------------</li>
<li>   63              23                   367</li>
<li>  125              24                    30</li>
<li>  250              30                     3</li>
<li>  375              39                     0</li>
<li>  500              58                     0</li>
<li>  600              59                     0</li>
<li>  700              59                     0</li>
<li>  800              60                     0</li>
<li>  900              60                     0</li>
</ol>
</pre>
<p>在此例中:PGA至少要分配375M</p>
<p>我个人认为PGA命中率不应该低于50%</p>
<p>以下的SQL统计sql语句执行在三种模式的次数: optimal memory size, one-pass memory size, multi-pass memory size:</p>
<pre>
<ol>
<li>SQL&gt;SELECT name profile, cnt, decode(total, 0, 0, round(cnt*100/total,4)) percentage</li>
<li>FROM (SELECT name, value cnt, (sum(value) over ()) total FROM V$SYSSTAT WHERE name like 'workarea exec%');</li>
</ol>
</pre>
<p><strong>8)共享区字典缓存区命中率</strong></p>
<p>计算公式：SUM(gets &#8211; getmisses &#8211; usage -fixed) / SUM(gets)</p>
<p>命中率应大于0.85</p>
<pre>
<ol>
<li>SQL&gt;select sum(gets-getmisses-usage-fixed)/sum(gets)</li>
<li>from v$rowcache;</li>
</ol>
</pre>
<p><strong>9)数据高速缓存区命中率</strong></p>
<p>计算公式：1-(physical reads / (db block gets + consistent gets))</p>
<p>命中率应大于0.90最好</p>
<pre>
<ol>
<li>SQL&gt;select name,value</li>
<li>from v$sysstat</li>
<li>where name in ('physical reads','db block gets','consistent gets');</li>
</ol>
</pre>
<p><strong>10)共享区库缓存区命中率</strong></p>
<p>计算公式：SUM(pins &#8211; reloads) / SUM(pins)</p>
<p>命中率应大于0.99</p>
<pre>
<ol>
<li>SQL&gt;select sum(pins-reloads)/sum(pins)</li>
<li>from v$librarycache;</li>
</ol>
</pre>
<p><strong>11)检测回滚段的争用</strong></p>
<p>SUM(waits)值应小于SUM(gets)值的1%</p>
<pre>
<ol>
<li>SQL&gt;select sum(gets),sum(waits),sum(waits)/sum(gets)</li>
<li>from v$rollstat;</li>
</ol>
</pre>
<p><strong>12)检测回滚段收缩次数</strong></p>
<pre>
<ol>
<li>SQL&gt;select name,shrinks</li>
<li>from v$rollstat, v$rollname</li>
<li>where v$rollstat.usn = v$rollname.usn;</li>
<li>-----------------------------------------------------------------------------</li>
</ol>
</pre>
<p>几个常用的检查语句</p>
<p>1. 查找排序最多的SQL:</p>
<pre>
<ol>
<li>SQL&gt;SELECT HASH_VALUE, SQL_TEXT, SORTS, EXECUTIONS</li>
<li>FROM V$SQLAREA</li>
<li>ORDER BY SORTS DESC;</li>
</ol>
</pre>
<p>2.查找磁盘读写最多的SQL:</p>
<pre>
<ol>
<li>SQL&gt;SELECT * FROM</li>
<li>(SELECT sql_text,disk_reads "total disk" , executions "total exec",disk_reads/executions "disk/exec" FROM v$sql</li>
<li>WHERE executions&gt;0 and is_obsolete='N' ORDER BY  4 desc)</li>
<li>WHERE ROWNUM&lt;11 ;</li>
</ol>
</pre>
<p>3.查找工作量最大的SQL(实际上也是按磁盘读写来排序的):</p>
<pre>
<ol>
<li>SQL&gt;select substr(to_char(s.pct, '99.00'), 2) || '%' load,s.executions executes,p.sql_text</li>
<li>from(select address,disk_reads,executions,pct,rank() over (order by disk_reads desc) ranking from</li>
<li>(select address,disk_reads,executions,100 * ratio_to_report(disk_reads) over () pct</li>
<li>from sys.v_$sql</li>
<li> where command_type != 47)</li>
<li>where disk_reads &gt; 50 * executions) s,sys.v_$sqltext p</li>
<li> where s.ranking &lt;= 5 and p.address = s.address</li>
<li>order by 1, s.address, p.piece;</li>
</ol>
</pre>
<p>4. 用下列SQL工具找出低效SQL:</p>
<pre>
<ol>
<li>SQL&gt;select executions,disk_reads,buffer_gets,round((buffer_gets-disk_reads)/buffer_gets,2) Hit_radio,round(disk_reads/executions,2) reads_per_run,sql_text</li>
<li>From v$sqlarea</li>
<li>Where executions&gt;0 and buffer_gets &gt;0 and (buffer_gets-disk_reads)/buffer_gets&lt;0.8</li>
<li>Order by 4 desc;</li>
</ol>
</pre>
<p>5、根据sid查看对应连接正在运行的sql</p>
<pre>
<ol>
<li>SQL&gt;select /*+ push_subq */command_type,sql_text,sharable_mem,persistent_mem,</li>
<li>runtime_mem,sorts,version_count,loaded_versions,open_versions,users_opening,executions,</li>
<li>users_executing,loads,first_load_time,invalidations,parse_calls,disk_reads,buffer_gets,</li>
<li>rows_processed,sysdate start_time,sysdate finish_time,’&gt;’||address sql_address,’N’status</li>
<li>From v$sqlarea</li>
<li>Where address=(select sql_address from v$session where sid=&amp;sid);</li>
<li>***************Oracle 缓冲区命中率低的分析及解决办法******************</li>
</ol>
</pre>
<p>首先确定下面的查询结果:</p>
<p>1,缓冲区命中率的查询(是否低于90%):</p>
<pre>
<ol>
<li>select round((1 - sum(decode(name,'physical reads',value,0)) /</li>
<li>(sum(decode(name,'db block gets',value,0)) + sum(decode(name,'consistent gets',value,0))) ),4) *100 || '%' chitrati</li>
<li>from v$sysstat;</li>
</ol>
</pre>
<p>2,使用率的查询(有无free状态的数据快.):</p>
<pre>
<ol>
<li>select count(*), status from v$bh group by status ;</li>
</ol>
</pre>
<p>3,相关等待事件的查询(是否有相关等待事件)</p>
<pre>
<ol>
<li>select event,total_waits from v$system_event where event in ('free buffer waits');</li>
</ol>
</pre>
<p>4,当前大小(是否已经很大)</p>
<pre>
<ol>
<li>select value/1024/1024 cache_size from v$parameter where name='db_cache_size'</li>
</ol>
</pre>
<p>5,top等待事件分析(Db file scatered read的比率是否大)</p>
<pre>
<ol>
<li>select event ,total_waits,suml</li>
<li>from</li>
<li>(select event,total_waits,round(total_waits/sumt*100,2)||'%' suml</li>
<li>from</li>
<li>(select event,total_waits from v$system_event ),</li>
<li>(select sum(total_waits) sumt from v$system_event)</li>
<li>order by total_waits desc)</li>
<li>where rownum&lt;6</li>
<li>and event not like 'rdbms%'</li>
<li>and event not like 'pmon%'</li>
<li>and event not like 'SQL*Net%'</li>
<li>and event not like 'smon%';</li>
</ol>
</pre>
<p>6,db_cache_advice建议值（9i后的新特性,可以根据他更好的调整cache_size）</p>
<pre>
<ol>
<li>select block_size,size_for_estimate,size_factor,estd_physical_reads from v$db_cache_advice;</li>
</ol>
</pre>
<p>说明分析:</p>
<p>缓冲区命中率(低于90的命中率就算比较低的).</p>
<p>没有free不一定说明需要增加,还要结合当前cache_size的大小(我们是否还可以再增大,是否有需要增加硬件,增加开销),<br />
空闲缓冲区等待说明进程找不到空闲缓冲区，并通过写出灰缓冲区，来加速数据库写入器生成空闲缓冲区，当DBWn将块写入磁盘后，灰数据缓冲区将被释放，以便重新使用.产生这种原因主要是:</p>
<p>1，DBWn可能跟不上写入灰缓冲区：i/0系统较慢，尽量将文件均匀的分布于所有设备，</p>
<p>2，缓冲区过小或过大。</p>
<p>3，可以增加db_writer_processes数量。</p>
<p>4,可能有很大的一个事物，或者连续的大事物</p>
<p>我们需要长期观察这个事件是否长期存在并数值一直在增大,如果一直在增大,则说明需要增大db_cache大小.或优化sql.<br />
数据分散读等待,通常表现存在着与全表扫描相关的等待，逻辑读时，在内存中进行的全表扫描一般是零散地，而并非连续的被分散到缓冲区的各个部分，可能有索引丢失，或被仰制索引的存在。该等待时间在数据库会话等待多块io读取结束的时候产生，并把指定的块数离散的分布在数据缓冲区。这意味这全表扫描过多，或者io不足或争用，</p>
<p>存在这个事件,多数都是问题的,这说明大量的全部扫描而未采用索引.</p>
<p>db_cache_advice对我们调整db_cache_size大小有一定的帮助,但这只是一个参考，不一定很精确。</p>
<p>通过上面6种情况的综合分析,判断是否需要增加大cache_size. 或者把常用的（小）表放到keep区。</p>
<p>但多数的时候做这些不会解决质的问题,</p>
<p>而真正的问题主要是对sql语句的优化(如:是否存在大量的全表扫描等)</p>
<p>索引是在不需要改变程序的情况下,对数据库性能，sql语句提高的最实用的方法.</p>
<p>我在生产中遇到过类似的问题,200M的cache_size,命中率很低21%,但通过对sql语句的优化(添加索引,避免全表扫描),命中率增加到96%,程序运行时间由原来的2小时减少到不到10分钟.</p>
<p>这就提到了怎么定位高消耗的sql问题.全表扫描的问题,在这里不做细致的解说,这里只说明方法,我会在相关的章节专门介绍怎么使用这些工具</p>
<p>1,sql_trace跟踪session.用tkprof 分别输出磁盘读,逻辑读,运行时间长的sql进行优化.这些高消耗的sql一般都伴随着全表扫描.</p>
<p>2,statspack分析.在系统繁忙时期进行时间点的统计分析,产看TOP事件是否有Db file scatered read.并查看TOP sql语句是否存在问题等.</p>
<p>注：电脑学习网首发。</p>
<p>还要说一句：当然在硬件允许的情况下，尽量增大db_cache_size 减少磁盘读，但并不是越大越好，一定要根据自己的库数据量的程度来调节，因为大的db_cache_size同样会增大数据库管理的开销，当然可能开销并不会明显的影响数据库的性能，硬件价格也越来越低，这就需要我们具体问题具体分析了，在我看来物尽其用就最好了，尽量不要浪费，找到问题的本质。调优是一件很艺术的事。</p>
<p>***********************Oracle数据库缓冲区命中率*****************<br />
1、查看Oracle数据库缓冲区命中率</p>
<pre>
<ol>
<li>select a.value + b.value "logical_reads", c.value "phys_reads",</li>
<li>    round(100 * ((a.value+b.value)-c.value) / (a.value+b.value)) "BUFFER HIT RATIO"</li>
<li>    from v$sysstat a, v$sysstat b, v$sysstat c</li>
<li>    where a.statistic# = 40 and b.statistic# = 41</li>
<li>    and c.statistic# = 42;</li>
</ol>
</pre>
<p>2、Tags: oracle</p>
<p>数据库缓冲区命中率：</p>
<pre>
<ol>
<li>sql&gt;select value from v$sysstat where name ='physical reads';</li>
<li>value</li>
<li>3714179</li>
<li>sql&gt;select value from v$sysstat where name ='physical reads direct';</li>
<li>value</li>
<li>0</li>
<li>sql&gt;select value from v$sysstat where name ='physical reads direct(lob)';</li>
<li>value</li>
<li>0</li>
<li>sql&gt;select value from v$sysstat where name ='consistent gets';</li>
<li>value</li>
<li>856309623</li>
<li>sql&gt;select value from v$sysstat where name ='db block gets';</li>
<li>value</li>
<li>19847790</li>
</ol>
</pre>
<p>这里命中率的计算应该是</p>
<p>令x＝physical reads direct + physical reads direct(lob)</p>
<p>命中率＝100－(physical reads -x)/(consistent gets +db block gets -x)*100</p>
<p>通常如果发现命中率低于90%，则应该调整应用可以考虑是否增大数据加</p>
<p>共享池的命中率</p>
<pre>
<ol>
<li>sql&gt; select sum(pinhits)/sum(pins)*100 "hit radio" from v$librarycache;</li>
</ol>
</pre>
<p>如果共享池的命中率低于95％就要考虑调整应用（通常是没应用bind var)或者增加内存。</p>
<p>关于排序部分</p>
<pre>
<ol>
<li>sql&gt; select name,value from v$sysstat where name like '%sort%';</li>
</ol>
</pre>
<p>如果我们发现sorts(disk)/(sorts(memory)+sorts(disk))的比例过高，则通常意味着sort_area_size部分内存教较小，可考虑调整相应的参数。</p>
<p>关于log_buffer</p>
<pre>
<ol>
<li>sql&gt;select name,value from v$sysstat where name in ('redo entries','redo buffer allocation retries');</li>
</ol>
</pre>
<p>假如redo buffer allocation retries/redo entries的比例超过1%我们就可以考虑增加log_buffer.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.globstudio.com/759.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>【转】九大Oracle性能优化基本方法详解</title>
		<link>http://blog.globstudio.com/757.html</link>
		<comments>http://blog.globstudio.com/757.html#comments</comments>
		<pubDate>Fri, 23 Apr 2010 02:01:35 +0000</pubDate>
		<dc:creator>henry.wu</dc:creator>
				<category><![CDATA[数据库]]></category>
		<category><![CDATA[oracle]]></category>

		<guid isPermaLink="false">http://blog.globstudio.com/?p=757</guid>
		<description><![CDATA[Oracle性能优化基本方法包括一下几个步骤，包括： 1）设立合理的Oracle性能优化目标。 2）测量并记录当前的Oracle性能。 3）确定当前Oracle性能瓶颈（Oracle等待什么、哪些SQL语句是该等待事件的成分）。 4）把等待事件记入跟踪文件。 5）确定当前的OS瓶颈。 6）优化所需的成分（应用程序、数据库、I/O、争用、OS等）。 7）跟踪并实施更改控制过程。 8）测量并记录当前性能 9）重复步骤3到7，直到满足优化目标 下面来一一详述。 1.设立合理的Oracle性能优化目标 重点：关于设立目标的最重要的一点是它们必须是可量化和可达到的。 方法：目标必须是当前性能和所需性能的的陈述形式的语句。 2.测量并记录当前Oracle性能重点： 1）需要在峰值活动时间获得当前系统性能快照 2）关键是要在出现性能问题的时间段内采集信息 3）必须在合理的时间段上采集，一般在峰值期间照几个为期15分钟的快照 3.确定当前Oracle性能瓶颈重点：从Oracle 等待接口v$system_event、v$session_event和v$session_wait中获得等待事件，进而找出影响性能的对象和sql语句。方法如下： 1)首先，利用v$system_event视图执行下面的查询查看数据库中某些常见的等待事件： select * from v$system_event where event in ('buffer busy waits', 'db file sequential read', 'db file scattered read', 'enqueue', 'free buffer waits', 'latch free', 'log file parallel write', 'log file sync'); 2)接着，利用下面对v$session_event和v$session视图进行的查询，研究具有对上面显示的内容有贡献的等待事件的会话： select se.sid,s.username,se.event,se.total_waits,se.time_waited,se.average_wait from v$session s,v$session_event se where s.sid = se.sid and se.event not like 'SQL*Net%' and s.status = 'ACTIVE' and s.username is not null; 3)使用下面查询找到与所连接的会话有关的当前等待事件。这些信息是动态的，为了查看一个会话的等待最多的事件是什么，需要多次执行此查询。 select sw.sid,s.username,sw.event,sw.wait_time,sw.state,sw.seconds_in_wait SEC_IN_WAIT from v$session s,v$session_wait sw where s.sid = sw.sid and sw.event not like 'SQL*Net%' and s.username is not null order by sw.wait_time desc; 4)查询会话等待事件的详细信息 select sid,event,p1text,p1,p2text,p2,p3text,p3 from v$session_wait where sid between &#38;1 and &#38;2 and event not like '%SQL%' and event not like '%rdbms%'; 5)利用P1、P2的信息，找出等待事件的相关的段 select owner,segment_name,segment_type,tablespace_name from dba_extents where file_id = &#38;fileid_in and &#38;blockid_in between block_id and block_id + blocks - 1; [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Oracle性能优化基本方法包括一下几个步骤，包括：</strong></p>
<p>1）设立合理的Oracle性能优化目标。<br />
2）测量并记录当前的Oracle性能。<br />
3）确定当前Oracle性能瓶颈（Oracle等待什么、哪些SQL语句是该等待事件的成分）。<br />
4）把等待事件记入跟踪文件。<br />
5）确定当前的OS瓶颈。<br />
6）优化所需的成分（应用程序、数据库、I/O、争用、OS等）。<br />
7）跟踪并实施更改控制过程。<br />
8）测量并记录当前性能<br />
9）重复步骤3到7，直到满足优化目标</p>
<p>下面来一一详述。<br />
<span id="more-757"></span></p>
<p><strong>1.设立合理的Oracle性能优化目标</strong></p>
<p>重点：关于设立目标的最重要的一点是它们必须是可量化和可达到的。</p>
<p>方法：目标必须是当前性能和所需性能的的陈述形式的语句。</p>
<p><strong>2.测量并记录当前Oracle性能重点：</strong></p>
<p>1）需要在峰值活动时间获得当前系统性能快照</p>
<p>2）关键是要在出现性能问题的时间段内采集信息</p>
<p>3）必须在合理的时间段上采集，一般在峰值期间照几个为期15分钟的快照</p>
<p><strong>3.确定当前Oracle性能瓶颈</strong>重点：从Oracle 等待接口v$system_event、v$session_event和v$session_wait中获得等待事件，进而找出影响性能的对象和sql语句。方法如下：</p>
<p>1)首先，利用v$system_event视图执行下面的查询查看数据库中某些常见的等待事件：</p>
<pre>
<ol>
<li>select * from v$system_event</li>
<li>where event in ('buffer busy waits',</li>
<li>'db file sequential read',</li>
<li>'db file scattered read',</li>
<li>'enqueue',</li>
<li>'free buffer waits',</li>
<li>'latch free',</li>
<li>'log file parallel write',</li>
<li>'log file sync');</li>
</ol>
</pre>
<p>2)接着，利用下面对v$session_event和v$session视图进行的查询，研究具有对上面显示的内容有贡献的等待事件的会话：</p>
<pre>
<ol>
<li>select se.sid,s.username,se.event,se.total_waits,se.time_waited,se.average_wait</li>
<li>from v$session s,v$session_event se</li>
<li>where s.sid = se.sid</li>
<li>and se.event not like 'SQL*Net%'</li>
<li>and s.status = 'ACTIVE'</li>
<li>and s.username is not null;</li>
</ol>
</pre>
<p>3)使用下面查询找到与所连接的会话有关的当前等待事件。这些信息是动态的，为了查看一个会话的等待最多的事件是什么，需要多次执行此查询。</p>
<pre>
<ol>
<li>select sw.sid,s.username,sw.event,sw.wait_time,sw.state,sw.seconds_in_wait SEC_IN_WAIT</li>
<li>from v$session s,v$session_wait sw</li>
<li>where s.sid = sw.sid</li>
<li>and sw.event not like 'SQL*Net%'</li>
<li>and s.username is not null</li>
<li>order by sw.wait_time desc;</li>
</ol>
</pre>
<p>4)查询会话等待事件的详细信息</p>
<pre>
<ol>
<li>select sid,event,p1text,p1,p2text,p2,p3text,p3</li>
<li>from v$session_wait</li>
<li>where sid between &amp;1 and &amp;2</li>
<li>and event not like '%SQL%'</li>
<li>and event not like '%rdbms%';</li>
</ol>
</pre>
<p>5)利用P1、P2的信息，找出等待事件的相关的段</p>
<pre>
<ol>
<li>select owner,segment_name,segment_type,tablespace_name</li>
<li>from dba_extents</li>
<li>where file_id = &amp;fileid_in</li>
<li>and &amp;blockid_in between block_id and block_id + blocks - 1;</li>
</ol>
</pre>
<p>6)获得操作该段的sql语句：</p>
<pre>
<ol>
<li>select sid, getsqltxt(sql_hash_value,sql_address)</li>
<li>from v$session</li>
<li>where sid = &amp;sid_in;</li>
</ol>
</pre>
<p>7)getsqltxt函数</p>
<p>8)至此已经找到影响性能的对象和sql语句，可以有针对性地优化</p>
<p><strong>4.把等待事件记入跟踪文件</strong></p>
<p>重点：如果在跟踪系统上的等待事件时，由于某种原因遇到了麻烦，则可以将这些等待事件记入一个跟踪文件。方法如下：</p>
<p>1)对于当前会话：</p>
<pre>
<ol>
<li>alter session set timed_statistics=true;</li>
<li>alter session set max_dump_file_size=unlimited;</li>
<li>alter session set events '10046 trace name context forever, level 12';</li>
</ol>
</pre>
<p>2)执行应用程序，然后在USER_DUMP_DEST指出的目录中找到跟踪文件。</p>
<p>3)查看文件中以词WAIT开始的所有行。</p>
<p>4)对于其它的会话</p>
<p>5)确定会话的进程ID（SPID）。下面的查询识别出名称以A开始的所有用户的会话进程ID：</p>
<pre>
<ol>
<li>select S.Username, P.Spid from V$SESSION S, V$PROCESS P</li>
<li>where S.PADDR = P.ADDR and S.Username like 'A%';</li>
</ol>
</pre>
<p>6)以sysdba进入sqlplus执行</p>
<pre>
<ol>
<li>alter session set timed_statistics=true;</li>
<li>alter session set max_dump_file_size=unlimited;</li>
<li>oradebug setospid</li>
<li>oradebug unlimit</li>
<li>oradebug event 10046 trace name context forever, level X /* Where X = (1,4,8,12) */</li>
</ol>
</pre>
<p>7)跟踪某个时间间隔得会话应用程序。</p>
<p>8)在USER_DUMP_DEST 的值指出的目录中利用SPID查看跟踪文件</p>
<p>9)查看文件中以词WAIT开始的所有行。</p>
<p><strong>5.确定当前OS瓶颈</strong>1）Windows NT上的监控</p>
<p>使用控制面板-〉管理工具-〉性能即可</p>
<p>2）UNIX上的监控</p>
<p>使用通用性的工具，包括sar、iostat、cpustat、mpstat、netstat、top、osview等。</p>
<p><strong>6．Oracle性能优化所需的成分（应用程序、数据库、I/O、争用、OS等）。</strong></p>
<p><strong>7．跟踪并实施更改控制过程。</strong></p>
<p><strong>8．测量并记录当前Oracle性能</strong></p>
<p><strong>9．重复步骤3到7，直到满足优化目标</strong></p>
<p>【转自】<a href="http://database.51cto.com/art/201004/196136.htm">http://database.51cto.com/art/201004/196136.htm</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.globstudio.com/757.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>【转】查看oracle当前连接数</title>
		<link>http://blog.globstudio.com/654.html</link>
		<comments>http://blog.globstudio.com/654.html#comments</comments>
		<pubDate>Wed, 10 Mar 2010 06:22:47 +0000</pubDate>
		<dc:creator>henry.wu</dc:creator>
				<category><![CDATA[数据库]]></category>
		<category><![CDATA[oracle]]></category>

		<guid isPermaLink="false">http://blog.globstudio.com/654.html</guid>
		<description><![CDATA[【转自】http://www.blogjava.net/temper/archive/2009/03/24/261657.html 怎样查看oracle当前的连接数呢？只需要用下面的SQL语句查询一下就可以了。 select * from v$session where username is not null select username,count(username) from v$session where username is not null group by username #查看不同用户的连接数 select count(*) from v$session #连接数 Select count(*) from v$session where status=&#8217;ACTIVE&#8217;　#并发连接数 show parameter processes #最大连接 alter system set processes = value scope = spfile;重启数据库 #修改连接 /home/oracle9i/app/oracle9i/dbs/init.ora /home/oracle9i/app/oracle9i/dbs/spfilexxx.ora ## open_cursor]]></description>
			<content:encoded><![CDATA[<p><span style="WORD-SPACING: 0px; FONT: medium Simsun; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); TEXT-INDENT: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BORDER-COLLAPSE: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px" class="Apple-style-span">【转自】<a href="http://www.blogjava.net/temper/archive/2009/03/24/261657.html"><span style="FONT-SIZE: 0.9em">http://www.blogjava.net/temper/archive/2009/03/24/261657.html</span></a></span></p>
<p><span style="WORD-SPACING: 0px; FONT: medium Simsun; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); TEXT-INDENT: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BORDER-COLLAPSE: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px" class="Apple-style-span">怎样查看oracle当前的连接数呢？只需要用下面的SQL语句查询一下就可以了。 <br/>select * from v$session where username is not null <br/><br/>select username,count(username) from v$session where username is not null group by username #查看不同用户的连接数</span></p>
<p> <span id="more-654"></span>
<p>select count(*) from v$session #连接数 <br/><br/>Select count(*) from v$session where status=&#8217;ACTIVE&#8217;　#并发连接数 <br/><br/>show parameter processes #最大连接 <br/><br/>alter system set processes = value scope = spfile;重启数据库 #修改连接</p>
<p>/home/oracle9i/app/oracle9i/dbs/init.ora</p>
<p>/home/oracle9i/app/oracle9i/dbs/spfilexxx.ora ## open_cursor</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.globstudio.com/654.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oracle创建同义词(synonym)</title>
		<link>http://blog.globstudio.com/383.html</link>
		<comments>http://blog.globstudio.com/383.html#comments</comments>
		<pubDate>Thu, 04 Mar 2010 10:47:45 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[开发技术]]></category>
		<category><![CDATA[create synonym]]></category>
		<category><![CDATA[oracle]]></category>

		<guid isPermaLink="false">http://www.globstudio.com/383.html</guid>
		<description><![CDATA[建立一个同义词可以排除一个对象名字的限制 如果你的数据库有多个用户，USER_A要访问USER_B的TABLE1,只能使用USER_B.TABLE1 建一个同义词abc指向USER_B.TABLE1,那你就可以select * from abc了,而且public的同义词会直接出现在所有用户的面前,开发不就方便多了~ create synonym table1 for schema1.table1 grant select on table1 to use1;为一个用户指定对目标的权限]]></description>
			<content:encoded><![CDATA[<p><span style="WORD-SPACING: 0px; FONT: medium Simsun; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); TEXT-INDENT: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BORDER-COLLAPSE: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px" class="Apple-style-span"><span style="FONT-SIZE: 12px; FONT-FAMILY: verdana, arial, helvetica" class="Apple-style-span">建立一个同义词可以排除一个对象名字的限制 <br/>如果你的数据库有多个用户，USER_A要访问USER_B的TABLE1,只能使用USER_B.TABLE1 <br/>建一个同义词abc指向USER_B.TABLE1,那你就可以select * from abc了,而且public的同义词会直接出现在所有用户的面前,开发不就方便多了~</span></span></p>
<p>create synonym table1 for schema1.table1</p>
<p>grant select on table1 to use1;为一个用户指定对目标的权限</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.globstudio.com/383.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oracle SQL语句一例(case,to_char,跨库跨表）</title>
		<link>http://blog.globstudio.com/100.html</link>
		<comments>http://blog.globstudio.com/100.html#comments</comments>
		<pubDate>Wed, 16 Dec 2009 05:16:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[开发技术]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://blog.0goshopping.com/100.html</guid>
		<description><![CDATA[select to_char(a.start_ts,&#8217;yyyymmddhh24miss&#8217;), to_char(a.end_ts,&#8217;yyyymmddhh24miss&#8217;), &#160;&#160;&#160;&#160;&#160;&#160; case &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; when a.field1_id = 0 then to_char(b.field1) &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; when a.field1_id = -1 then ” &#160;&#160;&#160;&#160;&#160;&#160; end &#160;&#160;&#160;&#160;&#160;&#160; field1, &#160;&#160;&#160;&#160;&#160;&#160; case &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; when a.server_id = 0 then to_char(b.server_id) &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; when a.server_id = -1 then ” &#160;&#160;&#160;&#160;&#160;&#160; end &#160;&#160;&#160;&#160;&#160;&#160; server_id, &#160;&#160;&#160;&#160;&#160;&#160; to_char(a.field2) &#124;&#124; &#8216;-&#8217; &#124;&#124; to_char(a.field3), &#160;&#160;&#160;&#160;&#160;&#160; a.point_type, to_char(a.points) from pay3.PAY_POINT_EXCHANGE_CONFIG a, [...]]]></description>
			<content:encoded><![CDATA[<p>select to_char(a.start_ts,&#8217;yyyymmddhh24miss&#8217;), to_char(a.end_ts,&#8217;yyyymmddhh24miss&#8217;),    <br />&#160;&#160;&#160;&#160;&#160;&#160; case     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; when a.field1_id = 0 then to_char(b.field1)     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; when a.field1_id = -1 then ”     <br />&#160;&#160;&#160;&#160;&#160;&#160; end     <br />&#160;&#160;&#160;&#160;&#160;&#160; field1,     <br />&#160;&#160;&#160;&#160;&#160;&#160; case     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; when a.server_id = 0 then to_char(b.server_id)     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; when a.server_id = -1 then ”     <br />&#160;&#160;&#160;&#160;&#160;&#160; end     <br />&#160;&#160;&#160;&#160;&#160;&#160; server_id,     <br />&#160;&#160;&#160;&#160;&#160;&#160; to_char(a.field2) || &#8216;-&#8217; || to_char(a.field3),     <br />&#160;&#160;&#160;&#160;&#160;&#160; a.point_type, to_char(a.points)     <br />from pay3.PAY_POINT_EXCHANGE_CONFIG a,     <br />&#160;&#160;&#160;&#160;&#160;&#160; memb3.ps_game_config b     <br />&#160;&#160; where a.site_cd = b.site_cd     <br />&#160;&#160;&#160;&#160; and a.site_cd = &#8216;AT&#8217;     <br />&#160; group by a.start_ts,a.end_ts,     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; case     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; when a.field1_id = 0 then to_char(b.field1)     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; when a.field1_id = -1 then ”     <br />&#160;&#160;&#160;&#160;&#160;&#160; end,     <br />&#160;&#160;&#160;&#160;&#160;&#160; case     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; when a.server_id = 0 then to_char(b.server_id)     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; when a.server_id = -1 then ”     <br />&#160;&#160;&#160;&#160;&#160;&#160; end,     <br />&#160;&#160;&#160;&#160;&#160;&#160; a.field2, a.field3,a.point_type, a.points</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.globstudio.com/100.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

