﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>IT博客-&lt;b&gt;&lt;font size=6 color=#66CD00&gt;nauicca&lt;/font&gt;&lt;/b&gt;-随笔分类-oracle</title><link>http://www.cnitblog.com/nauicca/category/3863.html</link><description /><language>zh-cn</language><lastBuildDate>Mon, 26 Sep 2011 15:06:05 GMT</lastBuildDate><pubDate>Mon, 26 Sep 2011 15:06:05 GMT</pubDate><ttl>60</ttl><item><title>ORACLE基础</title><link>http://www.cnitblog.com/nauicca/archive/2008/09/07/48819.html</link><dc:creator>faye</dc:creator><author>faye</author><pubDate>Sun, 07 Sep 2008 13:45:00 GMT</pubDate><guid>http://www.cnitblog.com/nauicca/archive/2008/09/07/48819.html</guid><wfw:comment>http://www.cnitblog.com/nauicca/comments/48819.html</wfw:comment><comments>http://www.cnitblog.com/nauicca/archive/2008/09/07/48819.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/nauicca/comments/commentRss/48819.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/nauicca/services/trackbacks/48819.html</trackback:ping><description><![CDATA[<p>进程分两种（服务器进程，用户进程）<br>服务器进程<br>系统监控进程（SMON） 进程监控进程（PMON） 数据库写入进程（DBWR）日志写入进程（LGWR） <br>归档进程（ARCH）检查点进程（CKPT） 恢复进程（RECO） 锁进程（LCKN）<br>快照进程（SNPn）高度进程（Dnnn)<br><br>系统全局区（SGA）（一种用于进程之间传递信息）<br>由四个部份组成(数据缓冲区、字典缓冲区、日志缓冲区、SQL共享泄)<br><br>程序全局区（PGA）一种用于保存单个用户进程所需要的信息<br>逻辑结构（数据库、表空间、逻辑对象、数据段、数据区间、数据块）<br>存储结构（数据库、物理文件、物理块）<br>通过数据库链接访问数据表的形式：数据表名@数据库链接名/</p>
<p>触发器：触发器是一种特殊类型的存储过程，由一些SQL语句组成，主要用于强制性的业务规则或要求，但不返回结果<br>数据库之间通过net8协议连接。因此异种网络之间也可以互联互通。</p>
<img src ="http://www.cnitblog.com/nauicca/aggbug/48819.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/nauicca/" target="_blank">faye</a> 2008-09-07 21:45 <a href="http://www.cnitblog.com/nauicca/archive/2008/09/07/48819.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>(转)windows命令行下启动oracle</title><link>http://www.cnitblog.com/nauicca/archive/2008/04/07/42100.html</link><dc:creator>faye</dc:creator><author>faye</author><pubDate>Mon, 07 Apr 2008 13:31:00 GMT</pubDate><guid>http://www.cnitblog.com/nauicca/archive/2008/04/07/42100.html</guid><wfw:comment>http://www.cnitblog.com/nauicca/comments/42100.html</wfw:comment><comments>http://www.cnitblog.com/nauicca/archive/2008/04/07/42100.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/nauicca/comments/commentRss/42100.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/nauicca/services/trackbacks/42100.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.cnitblog.com/nauicca/archive/2008/04/07/42100.html'>阅读全文</a><img src ="http://www.cnitblog.com/nauicca/aggbug/42100.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/nauicca/" target="_blank">faye</a> 2008-04-07 21:31 <a href="http://www.cnitblog.com/nauicca/archive/2008/04/07/42100.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>links</title><link>http://www.cnitblog.com/nauicca/archive/2006/09/21/17159.html</link><dc:creator>faye</dc:creator><author>faye</author><pubDate>Thu, 21 Sep 2006 11:49:00 GMT</pubDate><guid>http://www.cnitblog.com/nauicca/archive/2006/09/21/17159.html</guid><wfw:comment>http://www.cnitblog.com/nauicca/comments/17159.html</wfw:comment><comments>http://www.cnitblog.com/nauicca/archive/2006/09/21/17159.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cnitblog.com/nauicca/comments/commentRss/17159.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/nauicca/services/trackbacks/17159.html</trackback:ping><description><![CDATA[
		<p>
				<span lang="EN-US" style="FONT-SIZE: 16pt; mso-bidi-font-size: 12.0pt">
						<font size="3">DBA麻烦终结者之路<br /><a href="http://blog.itpub.net/post/96/2265">http://blog.itpub.net/post/96/2265</a><br /><a href="http://blog.itpub.net/post/96/15634">http://blog.itpub.net/post/96/15634</a><br /><br />ORACLE之FAQ<br /><a href="http://www.cnoug.org/viewthread.php?tid=2226">http://www.cnoug.org/viewthread.php?tid=2226</a><br /><br />一个DBA常用的sql列表<br /><a href="http://xzh2000.itpub.net/post/96/251">http://xzh2000.itpub.net/post/96/251</a><br /><br />如何监控temp表空间使用<br /><a href="http://xzh2000.itpub.net/post/96/207523">http://xzh2000.itpub.net/post/96/207523</a><br /><br />面向 DBA 的 Linux Shell 脚本简介<br /><a href="/nauicca/admin/&lt;http://xzh2000.itpub.net/post/96/49498BR">http://xzh2000.itpub.net/post/96/49498</a></font>
						<br />
						<br />
						<a href="http://www.eygle.com/case/how.to.getsql.which.cost.most.CPU.htm">
								<font size="3">http://www.eygle.com/case/how.to.getsql.which.cost.most.CPU.htm</font>
						</a>
						<font size="3">
								<br />
								<br />
						</font>
						<a href="http://www.dbonline.cn/source/oracle/20031218/oracle%20SQL%20performance%20tuning1.html">
								<font size="3">http://www.dbonline.cn/source/oracle/20031218/oracle%20SQL%20performance%20tuning1.html</font>
						</a>
						<font size="3">
								<br />
								<br />
						</font>
						<a href="http://www.itpub.net/showthread.php?threadid=238615">
								<font size="3">http://www.itpub.net/showthread.php?threadid=238615</font>
						</a>
						<font size="3">
								<br />
								<br />
						</font>
						<a href="http://www.itpub.net/124424.html">
								<font size="3">http://www.itpub.net/124424.html</font>
						</a>
						<br />
						<font size="3">
								<br />performance views<br /><a href="http://www.eygle.com/pdf/Oracle10g_Views.pdf">http://www.eygle.com/pdf/Oracle10g_Views.pdf</a></font>
				</span>
		</p>
<img src ="http://www.cnitblog.com/nauicca/aggbug/17159.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/nauicca/" target="_blank">faye</a> 2006-09-21 19:49 <a href="http://www.cnitblog.com/nauicca/archive/2006/09/21/17159.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>9个重要视图</title><link>http://www.cnitblog.com/nauicca/archive/2006/09/19/17017.html</link><dc:creator>faye</dc:creator><author>faye</author><pubDate>Mon, 18 Sep 2006 16:11:00 GMT</pubDate><guid>http://www.cnitblog.com/nauicca/archive/2006/09/19/17017.html</guid><wfw:comment>http://www.cnitblog.com/nauicca/comments/17017.html</wfw:comment><comments>http://www.cnitblog.com/nauicca/archive/2006/09/19/17017.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/nauicca/comments/commentRss/17017.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/nauicca/services/trackbacks/17017.html</trackback:ping><description><![CDATA[<h4 class=TextColor1 id=subjcns!9745F14B4AEB3B72!508 style="MARGIN-BOTTOM: 0px">&nbsp;</h4>
<div id=msgcns!9745F14B4AEB3B72!508>
<p>1）v$lock</p>
<p>给出了锁的信息，如type字段， user type locks有3种：TM，TX，UL，system type locks有多种，常见的有：MR，RT，XR，TS等。我们只关心TM，TX锁。</p>
<p>当TM锁时，id1字段表示object_id；当TX锁时，trunc(id1/power(2,16))代表了回滚段号。</p>
<p>lmode字段，session持有的锁的模式，有6种：<br>0 - none <br>1 - null (NULL) <br>2 - row-S (SS) <br>3 - row-X (SX) <br>4 - share (S) <br>5 - S/Row-X (SSX) <br>6 - exclusive (X) </p>
<p>request字段，process请求的锁的模式，取值范围与lmode相同。</p>
<p>ctime字段，已持有或等待锁的时间。</p>
<p>block字段，是否阻塞其它锁申请，当block=1时说明这个session阻塞了别的session。</p>
<p><br>2）v$sqlarea</p>
<p>共享池中存储的sql和一些相关的信息，如累计的执行次数（executions），逻辑读（buffer_gets），物理读（disk_reads）等统计信息。</p>
<p>根据address和hash_value可以定位一条sql。sql_text字段存的这个sql的前1000个字符。查找整个的sql还需去v$sqltext或者v$sqltext_with_newlines。</p>
<p><br>3）v$session </p>
<p>所有当前session的信息，包括一些用户信息如username，terminal，program，logon_time等，command字段表示session执行的什么命令。</p>
<p>通过v$session.paddr=v$process.addr跟process相关，通过v$session.taddr=v$transaction.addr跟trancation相关。</p>
<p>通过sid可以到相关视图中查询与这个session相关的各种信息，如v$sesstat中有session的统计信息，v$sess_io中有session的io统计信息，v$session_wait中有session的等待信息，v$session_event中有session在一段时间内所等待的各种事件的信息。</p>
<p>根据lockwait字段可以查询当前正在等待的锁的相关信息：<br>select * from v$lock where kaddr in (select lockwait from v$session where sid=&amp;sid);</p>
<p>(sql_address,sql_hash_value)，(prev_sql_addr,prev_hash_value) 根据这两组字段, 可以查询到当前session正在执行的或者最近一次执行的sql语句的详细信息：<br>select * from v$sqltext where address = &amp;sql_address and hash_value = &amp;sql_hash_value;</p>
<p><br>4）v$sesstat</p>
<p>根据session id可以得到这个session的统计信息：<br>select a.name,b.value<br>from v$statname a,v$sesstat b <br>where a.STATISTIC#=b.STATISTIC# <br>and b.sid=&amp;sid <br>and b.value &lt;&gt;0<br>order by b.value;&nbsp; </p>
<p><br>5）v$session_wait </p>
<p>根据session id可以得到这个session的等待情况。</p>
<p>event字段表示等待事件。</p>
<p>p1、p2、p3告诉我们等待事件的具体含义，如果wait event是db file scattered read，<br>p1=file_id/p2=block_id/p3=blocks，然后通过dba_extents即可确定出热点对象；如果是latch free的话，<br>p2为闩锁号，它指向v$latch。</p>
<p>P1RAW,P2RAW,P3RAW列对应P1,P2,P3的十六进制值；P1TEXT,P2TEXT,P3TEXT列对应P1,P2,P3列的解释。</p>
<p>--求等待事件及其对应的latch</p>
<p>col event format a32<br>col name format a32<br>select sid,event,p1 as file_id, p2 as "block_id/latch", p3 as blocks,l.name<br>from v$session_wait sw,v$latch l<br>where event not like '%SQL%' and event not like '%rdbms%' <br>and event not like '%mon%' and sw.p2 = l.latch#(+);</p>
<p>--求等待事件及其热点对象</p>
<p>col owner format a18<br>col segment_name format a32<br>col segment_type format a32<br>select owner,segment_name,segment_type<br>from dba_extents<br>where file_id = &amp;file_id and &amp;block_id between block_id <br>and block_id + &amp;blocks - 1;</p>
<p>--综合以上两条sql，同时显示latch及热点对象(速度较慢)</p>
<p>select sw.sid,event,l.name,de.segment_name<br>from v$session_wait sw,v$latch l,dba_extents de<br>where event not like '%SQL%' and event not like '%rdbms%' <br>and event not like '%mon%' and sw.p2 = l.latch#(+) and sw.p1 = de.file_id(+) and p2 between de.block_id and de.block_id + de.blocks - 1;</p>
<p>--如果是非空闲等待事件，通过等待会话的sid可以求出该会话在执行的sql</p>
<p>select sql_text <br>from v$sqltext_with_newlines st,v$session se<br>where st.address=se.sql_address and st.hash_value=se.sql_hash_value<br>and se.sid =&amp;wait_sid order by piece;</p>
<p><br>6）v$process</p>
<p>根据session id可以查到操作系统进程的信息：<br>select * from v$process where addr in (select paddr from v$session where sid=&amp;sid );<br>spid字段是操作系统进程号，可以用来进行 kill -9 spid 这么一个操作。</p>
<p>可以找到 unix命令 top 出来的最耗cpu资源的pid，根据pid最耗资源的sql：<br>SELECT&nbsp;&nbsp; /*+ ORDERED */<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sql_text<br>&nbsp;&nbsp;&nbsp; FROM v$sqltext a<br>&nbsp;&nbsp; WHERE (a.hash_value, a.address) IN (<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SELECT DECODE (sql_hash_value,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0, prev_hash_value,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sql_hash_value<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ),<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DECODE (sql_hash_value, 0, prev_sql_addr, sql_address)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM v$session b<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE b.paddr = (SELECT addr<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM v$process c<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE c.spid = '&amp;pid'))<br>ORDER BY piece ASC<br>/</p>
<p><br>7）v$transaction</p>
<p>根据session id可以查到当前session正在执行的事务信息：<br>select * from v$transaction where addr in (select taddr from v$session where sid=&amp;sid );</p>
<p>看下面这两个字段可以看到事务进行到什么程度了：<br>USED_UBLK<br>&nbsp;NUMBER<br>&nbsp;Number of undo blocks used<br>&nbsp;<br>USED_UREC<br>&nbsp;NUMBER<br>&nbsp;Number of undo records used</p>
<p>重复查询这两个值，可以看到变化，可以估计事务的进度，尤其是长时间的回滚操作，当这两个值为0，回滚也就完成了。</p>
<p><br>8）v$sort_usage</p>
<p>temp表空间的使用情况，当temp表空间变得巨大的时候，根据session_addr可以得到session id，根据sqladdr和sqlhash可以得到正在执行的sql：<br>select se.username,se.sid,su.extents,su.blocks*to_number(rtrim(p.value)) as Space,tablespace,segtype,sql_text <br>from v$sort_usage su,v$parameter p,v$session se,v$sql s<br>where p.name='db_block_size' <br>and su.session_addr=se.saddr <br>and s.hash_value=su.sqlhash <br>and s.address=su.sqladdr <br>order by se.username,se.sid;</p>
<p><br>9）v$sysstat<br>所有instance的统计信息。</p>
</div>
<img src ="http://www.cnitblog.com/nauicca/aggbug/17017.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/nauicca/" target="_blank">faye</a> 2006-09-19 00:11 <a href="http://www.cnitblog.com/nauicca/archive/2006/09/19/17017.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>