<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>隐士心介江湖天</title>
    <description>虚心明理 实心却欲</description>
    <link>http://jaxon.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>关于Oracle的一些基础知识</title>
        <author>hejian1860</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://jaxon.javaeye.com">hejian1860</a>&nbsp;
          链接：<a href="http://jaxon.javaeye.com/blog/141191" style="color:red;">http://jaxon.javaeye.com/blog/141191</a>&nbsp;
          发表时间: 2007年11月23日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          这两天有同事抱怨公司的开发环境Oracle Server总是报告达到最大用户数限制登录，解决问题过程中，知道了一些早就应该掌握的oracle基本概念：<br />
<br />
1. <font size="2" face="verdana, arial, helvetica"><span class="javascript" id="text4798928" style="font-size: 12px;"> What's the difference between connections, sessions and processes?<br />
-- </span></font><font size="2" face="verdana, arial, helvetica"><span class="javascript" id="text4798928" style="font-size: 12px;"> A connection is a physical circuit between you and the database.  A connection <br />
might be one of many types -- most popular begin DEDICATED server and SHARED <br />
server.  Zero, one or more sessions may be established over a given connection <br />
to the database as show above with sqlplus.  A process will be used by a session <br />
to execute statements.  Sometimes there is a one to one relationship between <br />
CONNECTION-&gt;SESSION-&gt;PROCESS (eg: a normal dedicated server connection).  <br />
Sometimes there is a one to many from connection to sessions (eg: like <br />
autotrace, one connection, two sessions, one process).  A process does not have <br />
to be dedicated to a specific connection or session however, for example when <br />
using shared server (MTS), your SESSION will grab a process from a pool of <br />
processes in order to execute a statement.  When the call is over, that process <br />
is released back to the pool of processes.<br />
<br />
2. 以后补充..</span></font>
          <br/>
          <span style="color:red;">
            <a href="http://jaxon.javaeye.com/blog/141191#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/115' target='_blank'><span style="color:red;font-weight:bold;">JavaEye图灵杯第2届问答大赛开始了！8月4日至8月17日，奖品丰厚！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 23 Nov 2007 13:56:00 +0800</pubDate>
        <link>http://jaxon.javaeye.com/blog/141191</link>
        <guid>http://jaxon.javaeye.com/blog/141191</guid>
      </item>
      <item>
        <title>Tibco CDC面试经历</title>
        <author>hejian1860</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://jaxon.javaeye.com">hejian1860</a>&nbsp;
          链接：<a href="http://jaxon.javaeye.com/blog/143041" style="color:red;">http://jaxon.javaeye.com/blog/143041</a>&nbsp;
          发表时间: 2007年11月23日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Tibco CDC第一轮面试主要由内部工程师和招聘负责人组织，整体比较简单，介绍项目、考核基本功、外语基本能力，还遇到一个手写代码的小题目。<br />
<br />
昨天下午前往tibco CDC面试（第二轮面试），首先是上机考试，似乎是brainstore出的考题，约80道题目，要求2小时内完成，允许使用google。我去得比较晚，也不是很上心这个职位，没有使用google，仅用半个小时答完，成绩不是很理想，几近及格线水平。这套考题整体比较偏重JEE的基础理论，甚至问了很多API的使用。不是长期使用EJB2做开发的人一般难以适应这个考试。考试完成后直接进入老外电话面试阶段。招聘人员先打印一个scenario给我，给了几分钟阅读时间。文档大致要求采用JEE设计一个航空订票系统。老外拨通电话后直接进入正题，首先要求scenario提出自己的构架解决方案，然后每一层细致问下去，考核你的具体设计，并结合你提到的技术点深入问两句。此外，会让你比较不同方案的优缺点。问完所有层次后，加问了我以前项目中采用XForm的体验。<br />
<br />
这是我第一次被老外面试，英语听力不是很好, sorry, i didn't catch what u said, beg his pardon了两三次，他有一些英国口语，语速中等偏快，提问的时候长句比较多，实在听不懂的时候只能根据他的题干关键词来猜着回答，回答得也磕磕巴巴。面试完了，招聘人员都一脸同情的看着我，在他们如此眼光中自己很受伤地回家去了，很是郁闷，英语要能够无障碍沟通就好了，感觉自己问题答得很弱智，很多地方回答不到位，因为无法用英语解释不清楚。<br />
<br />
今天上午收到了他们的Offer，有些意外。自己将来想望CIO方面发展，目前工作有些脱离开发，在小公司干着很多杂活，虽然不开心，但还算安逸，有空可以周末去读在职，另外奢望能在这里通过绿卡把户口转过来。去TibcoCDC上班的动力不是很强。Anyway，以后还是会考虑去外企做项目开发，这次面试算是积累面经吧，也供同志们参考。
          <br/>
          <span style="color:red;">
            <a href="http://jaxon.javaeye.com/blog/143041#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/115' target='_blank'><span style="color:red;font-weight:bold;">JavaEye图灵杯第2届问答大赛开始了！8月4日至8月17日，奖品丰厚！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 23 Nov 2007 13:54:07 +0800</pubDate>
        <link>http://jaxon.javaeye.com/blog/143041</link>
        <guid>http://jaxon.javaeye.com/blog/143041</guid>
      </item>
      <item>
        <title>Oracle 性能优化的基本方法概述</title>
        <author>hejian1860</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://jaxon.javaeye.com">hejian1860</a>&nbsp;
          链接：<a href="http://jaxon.javaeye.com/blog/141238" style="color:red;">http://jaxon.javaeye.com/blog/141238</a>&nbsp;
          发表时间: 2007年11月16日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>1）设立合理的性能优化目标。<br />
2）测量并记录当前性能。<br />
3）确定当前Oracle性能瓶颈（Oracle等待什么、哪些SQL语句是该等待事件的成分）。<br />
4）把等待事件记入跟踪文件。<br />
5）确定当前的OS瓶颈。<br />
6）优化所需的成分（应用程序、数据库、I/O、争用、OS等）。<br />
7）跟踪并实施更改控制过程。<br />
8）测量并记录当前性能<br />
9）重复步骤3到7，直到满足优化目标 <font color="#ffffff">bitscn.com中国网管联盟</font> </p>
<p><strong>1．设立合理的性能优化目标<br />
</strong>重点：关于设立目标的最重要的一点是它们必须是可量化和可达到的。<br />
方法：目标必须是当前性能和所需性能的的陈述形式的语句。只需填写下列语句中的空格即可。<br />
<font color="#0000ff">&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;&nbsp;&nbsp;&nbsp; 。</font> </p>
<div class="Wrq795">搜一搜so.bitsCN.com</div>
<p><strong>2．&nbsp;测量并记录当前性能<br />
</strong>重点：<br />
（1）需要在峰值活动时间获得当前系统性能快照<br />
（2）关键是要在出现性能问题的时间段内采集信息<br />
（3）必须在合理的时间段上采集，一般在峰值期间照几个为期15分钟的快照<br />
方法：执行STATSPACK<br />
<font color="#0000ff"><font color="#000000">-- 建立性能快照表空间<br />
</font>sqlplus sys as sysdba<br />
create tablespace perfstat datafile '/u02/oradata/dbnms/perfstat.dbf' size 500M extent management local;<br />
&nbsp;-- 安装STATSPACK<br />
&nbsp;@$ORACLE_HOME/rdbms/admin/spcreate.sql;<br />
<font color="#000000">&nbsp;-- 获取性能数据，可以生成多个快照<br />
</font>&nbsp;sqlplus perfstat<br />
&nbsp;execute statspack.snap;<br />
<font color="#000000">&nbsp;&nbsp;-- 生成性能快照的报表<br />
</font>&nbsp;sqlplus perfstat<br />
&nbsp;select min(snap_id) snapid_min, max(snap_id) snapid_max from stats$snapshot;<br />
&nbsp;@$ORACLE_HOME/rdbms/admin/spreport;<br />
</font>&nbsp;-- 该报告中有关于性能的重要信息，如前5位的等待事件、cache大小、各种内存结构的命中率、每秒及每事务逻辑、物理读写数据块数、性能最差的sql语句等 <span class="Wrq795">bitsCN_com</span> </p>
<p><strong>3．&nbsp;确定当前Oracle性能瓶颈<br />
</strong>重点：从Oracle 等待接口v$system_event、v$session_event和v$session_wait中获得等待事件，进而找出影响性能的对象和sql语句<br />
方法：<br />
-- 首先，利用v$system_event视图执行下面的查询查看数据库中某些常见的等待事件：<br />
<font color="#0000ff">select * from v$system_event<br />
where event in ('buffer busy waits',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'db file sequential read',<br />
&nbsp;&nbsp;'db file scattered read',<br />
&nbsp;&nbsp;'enqueue',<br />
&nbsp;&nbsp;'free buffer waits',<br />
&nbsp;&nbsp;'latch free',<br />
&nbsp;&nbsp;'log file parallel write',<br />
&nbsp;&nbsp;'log file sync');<br />
</font>-- 接着，利用下面对v$session_event和v$session视图进行的查询，研究具有对上面显示的内容有贡献的等待事件的会话：<br />
<font color="#0000ff">select se.sid,s.username,se.event,se.total_waits,se.time_waited,se.average_wait<br />
from v$session s,v$session_event se<br />
where s.sid = se.sid<br />
and se.event not like 'SQL*Net%'<br />
and s.status = 'ACTIVE'<br />
and s.username is not null;
<p class="Wrq795">bitscn.com中国网管联盟</p>
<br />
</font>-- 使用下面查询找到与所连接的会话有关的当前等待事件。这些信息是动态的，为了查看一个会话的等待最多的事件是什么，需要多次执行此查询。<br />
<font color="#0000ff">select sw.sid,s.username,sw.event,sw.wait_time,sw.state,sw.seconds_in_wait SEC_IN_WAIT<br />
from v$session s,v$session_wait sw<br />
where s.sid = sw.sid<br />
and sw.event not like 'SQL*Net%'<br />
and s.username is not null<br />
order by sw.wait_time desc;<br />
</font>-- 查询会话等待事件的详细信息<br />
<font color="#0000ff">select sid,event,p1text,p1,p2text,p2,p3text,p3<br />
from v$session_wait<br />
where sid between &amp;1 and &amp;2<br />
and event not like '%SQL%'<br />
and event not like '%rdbms%';<br />
</font>-- 利用P1、P2的信息，找出等待事件的相关的段<br />
<font color="#0000ff">select owner,segment_name,segment_type,tablespace_name<br />
from dba_extents<br />
where file_id = &amp;fileid_in<br />
and &amp;blockid_in between block_id and block_id + blocks - 1;<br />
</font>-- 获得操作该段的sql语句：<br />
<font color="#0000ff">select sid, getsqltxt(sql_hash_value,sql_address)<br />
from v$session
<div class="Wrq795">DL.bitsCN.com网管软件下载</div>
<br />
where sid = &amp;sid_in;<br />
</font>-- getsqltxt函数<br />
<font color="#0000ff">create or replace<br />
function GetSQLtxt (hashaddr_in in v$sqltext.hash_value%type,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; addr_in in v$sqltext.address%type)<br />
return varchar2<br />
is<br />
&nbsp;temp_sqltxt varchar2(32767);<br />
&nbsp;cursor sqlpiece_cur<br />
&nbsp;is<br />
&nbsp;&nbsp;select piece,sql_text<br />
&nbsp;&nbsp;from v$sqltext<br />
&nbsp;&nbsp;where hash_value = hashaddr_in<br />
&nbsp;&nbsp;and address = addr_in<br />
&nbsp;&nbsp;order by piece;<br />
begin<br />
&nbsp;for sqlpiece_rec in sqlpiece_cur<br />
&nbsp;loop<br />
&nbsp;&nbsp;temp_sqltxt := temp_sqltxt || sqlpiece_rec.sql_text;<br />
&nbsp;end loop;<br />
&nbsp;return temp_sqltxt;<br />
end GetSQLtxt;<br />
</font>-- 至此已经找到影响性能的对象和sql语句，可以有针对性地优化 </p>
<div class="Wrq795">BBS.bitsCN.com国内最早的网管论坛</div>
<p><strong>4．&nbsp;把等待事件记入跟踪文件<br />
</strong>重点：如果在跟踪系统上的等待事件时，由于某种原因遇到了麻烦，则可以将这些等待事件记入一个跟踪文件。<br />
方法：<br />
-- 对于当前会话：<br />
<font color="#0000ff">alter session set timed_statistics=true;<br />
alter session set max_dump_file_size=unlimited;<br />
alter session set events '10046 trace name context forever, level 12';<br />
</font>-- 执行应用程序，然后在USER_DUMP_DEST指出的目录中找到跟踪文件。<br />
-- 查看文件中以词WAIT开始的所有行。 </p>
<div class="Wrq795">搜一搜so.bitsCN.com</div>
<p>-- 对于其它的会话<br />
-- 确定会话的进程ID（SPID）。下面的查询识别出名称以A开始的所有用户的会话进程ID：<br />
<font color="#0000ff">select S.Username, P.Spid from V$SESSION S, V$PROCESS P<br />
where S.PADDR = P.ADDR and S.Username like 'A%';<br />
</font>-- 以 sysdba 进入sqlplus执行<br />
<font color="#0000ff">alter session set timed_statistics=true;<br />
alter session set max_dump_file_size=unlimited;<br />
oradebug setospid &lt;SPID&gt;<br />
oradebug unlimit<br />
oradebug event 10046 trace name context forever, level X /* Where X = (1,4,8,12) */<br />
</font>-- 跟踪某个时间间隔得会话应用程序。<br />
-- 在USER_DUMP_DEST 的值指出的目录中利用SPID查看跟踪文件<br />
-- 查看文件中以词WAIT开始的所有行。 <span class="Wrq795">搜一搜so.bitsCN.com</span> </p>
<p><strong>5．&nbsp;确定当前OS瓶颈<br />
</strong>（1）Windows NT上的监控<br />
使用控制面板-〉管理工具-〉性能即可 </p>
<p class="Wrq795">bitscn.com中国网管联盟</p>
<p>（2）UNIX上的监控<br />
使用通用性的工具，包括sar、iostat、cpustat、mpstat、netstat、top、osview等。<br />
1）&nbsp;CPU使用情况<br />
sar -u 5 1000<br />
%sys和%wio的数值应该小于百分之10到15<br />
2）&nbsp;设备使用情况<br />
sar -d 5 1000<br />
在%busy超过60%时，最佳设备利用率开始降低；在具有足够磁盘高速缓存的系统上，认为avserv为100毫秒的值非常高。<br />
3）&nbsp;虚拟内存使用情况<br />
vmstat -S 5 1000<br />
执行队列（r）应该明确的平均小于（2*CPU数目） <font color="#ffffff">搜一搜so.bitsCN.com</font> </p>
<p><strong>6．优化所需的成分（应用程序、数据库、I/O、争用、OS等）。</strong> <span class="Wrq795">bitscn.com中国网管联盟</span> </p>
<p><strong>7．跟踪并实施更改控制过程。</strong> <span class="Wrq795">bitscn.com中国网管联盟</span> </p>
<p><strong>8．测量并记录当前性能</strong> </p>
<p class="Wrq795">bitsCN_com</p>
<p><strong>9．重复步骤3到7，直到满足优化目标</strong></p>
<p><strong>转自 http://www.bitscn.com/oracle/optimize/200709/109337.html</strong><strong></strong></p>
          <br/>
          <span style="color:red;">
            <a href="http://jaxon.javaeye.com/blog/141238#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/115' target='_blank'><span style="color:red;font-weight:bold;">JavaEye图灵杯第2届问答大赛开始了！8月4日至8月17日，奖品丰厚！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 16 Nov 2007 16:34:19 +0800</pubDate>
        <link>http://jaxon.javaeye.com/blog/141238</link>
        <guid>http://jaxon.javaeye.com/blog/141238</guid>
      </item>
      <item>
        <title>开张咯。。</title>
        <author>hejian1860</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://jaxon.javaeye.com">hejian1860</a>&nbsp;
          链接：<a href="http://jaxon.javaeye.com/blog/141177" style="color:red;">http://jaxon.javaeye.com/blog/141177</a>&nbsp;
          发表时间: 2007年11月16日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          仔细想来，还是应该有个技术文章类的博客，记录一些读书笔记和摘录，JavaEye的博客不需要额外注册，就在这里安家了。
          <br/>
          <span style="color:red;">
            <a href="http://jaxon.javaeye.com/blog/141177#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/115' target='_blank'><span style="color:red;font-weight:bold;">JavaEye图灵杯第2届问答大赛开始了！8月4日至8月17日，奖品丰厚！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 16 Nov 2007 14:47:12 +0800</pubDate>
        <link>http://jaxon.javaeye.com/blog/141177</link>
        <guid>http://jaxon.javaeye.com/blog/141177</guid>
      </item>
  </channel>
</rss>