﻿<?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>BlogJava-努力创造未来！</title><link>http://www.blogjava.net/pdw2009/</link><description>J2EE相关应用技术日志</description><language>zh-cn</language><lastBuildDate>Sun, 23 Nov 2008 09:47:21 GMT</lastBuildDate><pubDate>Sun, 23 Nov 2008 09:47:21 GMT</pubDate><ttl>60</ttl><item><title>delphi 2009支持的泛型</title><link>http://www.blogjava.net/pdw2009/archive/2008/11/12/240078.html</link><dc:creator>有猫相伴的日子</dc:creator><author>有猫相伴的日子</author><pubDate>Wed, 12 Nov 2008 05:39:00 GMT</pubDate><guid>http://www.blogjava.net/pdw2009/archive/2008/11/12/240078.html</guid><wfw:comment>http://www.blogjava.net/pdw2009/comments/240078.html</wfw:comment><comments>http://www.blogjava.net/pdw2009/archive/2008/11/12/240078.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pdw2009/comments/commentRss/240078.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pdw2009/services/trackbacks/240078.html</trackback:ping><description><![CDATA[<p>unit Unit1;</p>
<p>interface</p>
<p>uses<br />
&nbsp; Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,<br />
&nbsp; Dialogs,generics.Collections, StdCtrls;</p>
<p>type<br />
&nbsp; TForm1 = class(TForm)<br />
&nbsp;&nbsp;&nbsp; Edit1: TEdit;<br />
&nbsp;&nbsp;&nbsp; Button1: TButton;<br />
&nbsp;&nbsp;&nbsp; Button2: TButton;<br />
&nbsp;&nbsp;&nbsp; Button3: TButton;<br />
&nbsp;&nbsp;&nbsp; procedure Button2Click(Sender: TObject);<br />
&nbsp;&nbsp;&nbsp; procedure Button3Click(Sender: TObject);<br />
&nbsp;&nbsp;&nbsp; procedure Button1Click(Sender: TObject);<br />
&nbsp; private<br />
&nbsp;&nbsp;&nbsp; { Private declarations }<br />
&nbsp; public<br />
&nbsp;&nbsp;&nbsp; { Public declarations }<br />
&nbsp; end;<br />
type<br />
&nbsp; TStud=class(TObject)<br />
&nbsp;&nbsp;&nbsp; public<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; studname:String;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; age :integer;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function toString(): String;<br />
&nbsp;&nbsp;&nbsp; private<br />
&nbsp; end;<br />
var<br />
&nbsp; Form1: TForm1;<br />
&nbsp; list:TList&lt;String&gt;;<br />
&nbsp; studList:TList&lt;TStud&gt;;<br />
implementation</p>
<p>{$R *.dfm}</p>
<p>{*<br />
The Tiburon Generics.Collections unit includes: TList, TQueue, TStack, TDictionary, TObjectList, TObjectQueue, TObjectStack, and TObjectDictionary.<br />
*}<br />
function TStud.toString;<br />
begin<br />
&nbsp; toString:= studname+ ' - '+ inttostr(age);<br />
end;<br />
procedure TForm1.Button1Click(Sender: TObject);<br />
begin<br />
&nbsp;&nbsp; list.Free;<br />
&nbsp;&nbsp; studList.Free;<br />
end;</p>
<p>procedure TForm1.Button2Click(Sender: TObject);<br />
var<br />
&nbsp; str:string;<br />
&nbsp; i:integer;<br />
&nbsp; j:integer;<br />
&nbsp; stud:TStud;<br />
begin<br />
&nbsp;&nbsp; list:=TList&lt;String&gt;.Create;<br />
&nbsp;&nbsp; studList:=TList&lt;TStud&gt;.Create;<br />
&nbsp;&nbsp; stud.Create ;<br />
&nbsp;&nbsp; stud.studname:='小裴';<br />
&nbsp;&nbsp; stud.age:=26;<br />
&nbsp;&nbsp; studList.Add(stud);</p>
<p><br />
&nbsp;&nbsp; list.Add('A');<br />
&nbsp;&nbsp; list.Add('B');<br />
&nbsp;&nbsp; list.Add('C');<br />
&nbsp;&nbsp; for i := 0 to List.Count - 1 do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; str:=str+'-'+list.Items[i];</p>
<p>&nbsp;&nbsp; edit1.Text:=str;<br />
end;</p>
<p>procedure TForm1.Button3Click(Sender: TObject);<br />
var<br />
&nbsp; i:integer;<br />
&nbsp; str:string;<br />
begin<br />
&nbsp; try<br />
&nbsp;&nbsp;&nbsp;&nbsp; list.Delete(0);<br />
&nbsp; except<br />
&nbsp;&nbsp;&nbsp;&nbsp; showmessage('超出范围');<br />
&nbsp; end;</p>
<p>&nbsp; for i := 0 to List.Count - 1 do<br />
&nbsp;&nbsp;&nbsp; str:=str+'-'+list.Items[i];<br />
&nbsp; edit1.Text:=str;<br />
end;</p>
<p>end.<br />
</p>
<img src ="http://www.blogjava.net/pdw2009/aggbug/240078.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pdw2009/" target="_blank">有猫相伴的日子</a> 2008-11-12 13:39 <a href="http://www.blogjava.net/pdw2009/archive/2008/11/12/240078.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle Profile 使用详解(转)</title><link>http://www.blogjava.net/pdw2009/archive/2008/10/17/234844.html</link><dc:creator>有猫相伴的日子</dc:creator><author>有猫相伴的日子</author><pubDate>Fri, 17 Oct 2008 02:54:00 GMT</pubDate><guid>http://www.blogjava.net/pdw2009/archive/2008/10/17/234844.html</guid><wfw:comment>http://www.blogjava.net/pdw2009/comments/234844.html</wfw:comment><comments>http://www.blogjava.net/pdw2009/archive/2008/10/17/234844.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pdw2009/comments/commentRss/234844.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pdw2009/services/trackbacks/234844.html</trackback:ping><description><![CDATA[何限制oracle中用户的资源的使用（包括连接时间和空闲时间等）<br />
<br />
<div class="t_msgfont" id="message69688">可以创建不同的资源限制，最好将ALTER SYSTEM SET RESOURCE_LIMIT=TRUE <br />
写在init文件中：RESOURCE_LIMIT=TRUE ，不然下次启动可能&#8230;&#8230;<br />
<br />
create profile low_limits limit<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;idle_time&nbsp;&nbsp;10 ----分钟<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;connect_time&nbsp;&nbsp;unlimited; ----分钟<br />
<br />
然后把某种配置文件赋给某个用户：<br />
alter user youruser&nbsp;&nbsp;profile low_limits;<br />
<br />
然后可以查看：<br />
select profile from dba_users where username='YOURUSER';<br />
select * from dba_profile where profile='low_limits';<br />
<br />
其它资源比如：<br />
session_per_user&nbsp; &nbsp;限制一个用户名可进行的连接<br />
cpu_per_session&nbsp; &nbsp;一次会话用户可使用的server的cpu时间（白分秒）<br />
cpu_per_call&nbsp; &nbsp;用户进程对数据库一次调用用时（百分秒）<br />
private_sga&nbsp; &nbsp;限制一个用户可占用内存<br />
<br />
</div>
<br />
<div>一、目的：</div>
<div style="text-indent: 21pt">Oracle系统中的profile可以用来对用户所能使用的数据库资源进行限制，使用Create Profile命令创建一个Profile，用它来实现对数据库资源的限制使用，如果把该profile分配给用户，则该用户所能使用的数据库资源都在该profile的限制之内。 </div>
<div style="margin: 0cm 0cm 0pt 21pt">&nbsp;</div>
<div>二、条件：</div>
<div style="text-indent: 21pt">创建profile必须要有CREATE PROFILE的系统权限。</div>
<div style="text-indent: 21pt">为用户指定资源限制，必须：</div>
<div style="text-indent: 21pt">1．动态地使用alter system或使用初始化参数resource_limit使资源限制生效。该改变对密码资源无效，密码资源总是可用。 </div>
<div style="margin: 0cm 0cm 0pt 21pt">SQL&gt; show parameter resource_limit</div>
<div style="margin: 0cm 0cm 0pt 21pt">&nbsp;</div>
<div style="margin: 0cm 0cm 0pt 21pt">NAME<span>&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;&nbsp; TYPE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VALUE</span></div>
<div style="margin: 0cm 0cm 0pt 21pt">------------------------------------ ----------- ------------------------------</div>
<div style="margin: 0cm 0cm 0pt 21pt">resource_limit<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; boolean&nbsp;&nbsp;&nbsp;&nbsp; FALSE</span></div>
<div style="margin: 0cm 0cm 0pt 21pt">&nbsp;</div>
<div style="margin: 0cm 0cm 0pt 21pt">SQL&gt; alter system set resource_limit=true;</div>
<div style="margin: 0cm 0cm 0pt 21pt">&nbsp;</div>
<div style="margin: 0cm 0cm 0pt 21pt">系统已更改。</div>
<div style="margin: 0cm 0cm 0pt 21pt">&nbsp;</div>
<div style="margin: 0cm 0cm 0pt 21pt">SQL&gt; show parameter resource_limit;</div>
<div style="margin: 0cm 0cm 0pt 21pt">&nbsp;</div>
<div style="margin: 0cm 0cm 0pt 21pt">NAME<span>&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;&nbsp; TYPE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VALUE</span></div>
<div style="margin: 0cm 0cm 0pt 21pt">------------------------------------ ----------- ------------------------------</div>
<div style="margin: 0cm 0cm 0pt 21pt">resource_limit<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;boolean&nbsp;&nbsp;&nbsp;&nbsp; TRUE</span></div>
<div style="margin: 0cm 0cm 0pt 21pt">&nbsp;</div>
<div style="margin: 0cm 0cm 0pt 21pt">SQL&gt;</div>
<div style="margin: 0cm 0cm 0pt 21pt">&nbsp;</div>
<div style="text-indent: 21pt">2．使用create profile创建一个定义对数据库资源进行限制的profile。</div>
<div style="text-indent: 21pt">3．使用create user 或alter user命令把profile分配给用户。</div>
<div>&nbsp;</div>
<div>三、语法：</div>
<pre><font size="2"><span>&nbsp;&nbsp;&nbsp;&nbsp; CREATE PROFILE profile</span></font></pre>
<pre style="text-indent: 30pt"><font size="2">LIMIT { resource_parameters</font></pre>
<pre><font size="2"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | password_parameters</span></font></pre>
<pre><font size="2"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></font></pre>
<pre><font size="2"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [ resource_parameters</span></font></pre>
<pre><font size="2"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;| password_parameters</span></font></pre>
<pre><font size="2"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ]... ;</span></font></pre>
<pre><font size="2">&nbsp;</font></pre>
<div>&lt;resource_parameters&gt; </div>
<pre><font size="2">{ { SESSIONS_PER_USER</font></pre>
<pre><font size="2">&nbsp;| CPU_PER_SESSION</font></pre>
<pre><font size="2">&nbsp;| CPU_PER_CALL</font></pre>
<pre><font size="2">&nbsp;| CONNECT_TIME</font></pre>
<pre><font size="2">&nbsp;| IDLE_TIME</font></pre>
<pre><font size="2">&nbsp;| LOGICAL_READS_PER_SESSION</font></pre>
<pre><font size="2">&nbsp;| LOGICAL_READS_PER_CALL</font></pre>
<pre><font size="2">&nbsp;| COMPOSITE_LIMIT</font></pre>
<pre><font size="2">&nbsp;}</font></pre>
<pre><font size="2">&nbsp;{ integer | UNLIMITED | DEFAULT }</font></pre>
<pre><font size="2">| PRIVATE_SGA</font></pre>
<pre><font size="2">&nbsp;{ integer [ K | M ] | UNLIMITED | DEFAULT }</font></pre>
<pre><font size="2">}</font></pre>
<div style="margin: 0cm 0cm 0pt 21pt">&nbsp;</div>
<div style="margin: 0cm 0cm 0pt 21pt">&lt; password_parameters &gt;</div>
<pre><font size="2">{ { FAILED_LOGIN_ATTEMPTS</font></pre>
<pre><font size="2">&nbsp;| PASSWORD_LIFE_TIME</font></pre>
<pre><font size="2">&nbsp;| PASSWORD_REUSE_TIME</font></pre>
<pre><font size="2">&nbsp;| PASSWORD_REUSE_MAX</font></pre>
<pre><font size="2">&nbsp;| PASSWORD_LOCK_TIME</font></pre>
<pre><font size="2">&nbsp;| PASSWORD_GRACE_TIME</font></pre>
<pre><font size="2">&nbsp;}</font></pre>
<pre><font size="2">&nbsp;{ expr | UNLIMITED | DEFAULT }</font></pre>
<pre><font size="2">| PASSWORD_VERIFY_FUNCTION</font></pre>
<pre><font size="2"><span>&nbsp;&nbsp;&nbsp;&nbsp; { function | NULL | DEFAULT }</span></font></pre>
<div>}</div>
<div style="margin: 0cm 0cm 0pt 21pt">&nbsp;</div>
<div>四、语法解释：</div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; profile</span>：配置文件的名称。Oracle数据库以以下方式强迫资源限制：</div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1</span>．如果用户超过了connect_time或idle_time的会话资源限制，数据库就回滚当前事务，并结束会话。用户再次执行命令，数据库则返回一个错误，</div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2</span>．如果用户试图执行超过其他的会话资源限制的操作，数据库放弃操作，回滚当前事务并立即返回错误。用户之后可以提交或回滚当前事务，必须结束会话。 </div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>提示：可以将一条分成多个段，如1小时(1/24天)来限制时间，可以为用户指定资源限制，但是数据库只有在参数生效后才会执行限制。 </div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Unlimited</span>：分配该profile的用户对资源使用无限制，当使用密码参数时，unlimited意味着没有对参数加限制。 </div>
<div>&nbsp;</div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Default</span>：指定为default意味着忽略对profile中的一些资源限制，Default profile初始定义对资源不限制，可以通过alter profile命令来改变。 </div>
<div>&nbsp;</div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Resource_parameter</span>部分</div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Session_per_user</span>：指定限制用户的并发会话的数目。</div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Cpu_per_session</span>：指定会话的CPU时间限制，单位为百分之一秒。 </div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Cpu_per_call</span>：指定一次调用（解析、执行和提取）的CPU时间限制，单位为百分之一秒。</div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Connect_time</span>：指定会话的总的连接时间，以分钟为单位。</div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Idle_time</span>：指定会话允许连续不活动的总的时间，以分钟为单位，超过该时间，会话将断开。但是长时间运行查询和其他操作的不受此限制。 </div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Logical_reads_per_session</span>：指定一个会话允许读的数据块的数目，包括从内存和磁盘读的所有数据块。 </div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Logical_read_per_call</span>：指定一次执行SQL（解析、执行和提取）调用所允许读的数据块的最大数目。</div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Private_sga</span>：指定一个会话可以在共享池（SGA）中所允许分配的最大空间，以字节为单位。（该限制只在使用共享服务器结构时才有效，会话在SGA中的私有空间包括私有的SQL和PL/SQL，但不包括共享的SQL和PL/SQL）。</div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Composite_limit</span>：指定一个会话的总的资源消耗，以service units单位表示。Oracle数据库以有利的方式计算cpu_per_session，connect_time，logical_reads_per_session和private-sga总的service units</div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></div>
<div>&nbsp;</div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Password_parameter</span>部分：</div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Failed_login_attempts</span>：指定在帐户被锁定之前所允许尝试登陆的的最大次数。</div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Password_life_time</span>：指定同一密码所允许使用的天数。如果同时指定了password_grace_time参数，如果在grace period内没有改变密码，则密码会失效，连接数据库被拒绝。如果没有设置password_grace_time参数，默认值unlimited将引发一个数据库警告，但是允许用户继续连接。</div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Password_reuse_time</span>和password_reuse_max：这两个参数必须互相关联设置，password_reuse_time指定了密码不能重用前的天数，而password_reuse_max则指定了当前密码被重用之前密码改变的次数。两个参数都必须被设置为整数。</div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1</span>．如果为这两个参数指定了整数，则用户不能重用密码直到密码被改变了password_reuse_max指定的次数以后在password_reuse_time指定的时间内。</div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>如：password_reuse_time=30，password_reuse_max=10，用户可以在30天以后重用该密码，要求密码必须被改变超过10次。 </div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2</span>．如果指定了其中的一个为整数，而另一个为unlimited，则用户永远不能重用一个密码。</div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3</span>．如果指定了其中的一个为default，Oracle数据库使用定义在profile中的默认值，默认情况下，所有的参数在profile中都被设置为unlimited，如果没有改变profile默认值，数据库对该值总是默认为unlimited。</div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4</span>．如果两个参数都设置为unlimited，则数据库忽略他们。</div>
<div>&nbsp;</div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Password_lock_time</span>：指定登陆尝试失败次数到达后帐户的缩定时间，以天为单位。</div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Password_grace_time</span>：指定宽限天数，数据库发出警告到登陆失效前的天数。如果数据库密码在这中间没有被修改，则过期会失效。</div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Password_verify_function</span>：该字段允许将复杂的PL/SQL密码验证脚本做为参数传递到create profile语句。Oracle数据库提供了一个默认的脚本，但是自己可以创建自己的验证规则或使用第三方软件验证。 对Function名称，指定的是密码验证规则的名称，指定为Null则意味着不使用密码验证功能。如果为密码参数指定表达式，则该表达式可以是任意格式，除了数据库标量子查询。 </div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></div>
<div>五、举例：</div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1</span>．创建一个profile：</div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create profile new_profile</span></div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; limit password_reuse_max 10</span></div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; password_reuse_time 30;</span></div>
<div>&nbsp;</div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2</span>．设置profile资源限制：</div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create profile app_user limit</span></div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sessions_per_user unlimited</span></div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cpu_per_session unlimited</span></div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cpu_per_call 3000</span></div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; connect_time 45</span></div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logical_reads_per_session default </span></div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logical_reads_per_call 1000</span></div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private_sga 15k</span></div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; composite_limit 5000000;</span></div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>总的resource cost不超过五百万service units。计算总的resource cost的公式由alter resource cost语句来指定。</div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3</span>．设置密码限制profile：</div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create profile app_users2 limit</span></div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; failed_login_attempts 5</span></div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; password_life_time 60</span></div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; password_reuse_time 60</span></div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; password_reuse_max 5</span></div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; password_verify_function verify_function</span></div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; password_lock_time 1/24</span></div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; password_grace_time 10;</span></div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4</span>．将配置文件分配给用户：</div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQL&gt; alter user dinya profile app_user;</span></div>
<div style="margin: 0cm 0cm 0pt 21pt; text-indent: 21pt">用户已更改。</div>
<div style="margin: 0cm 0cm 0pt 21pt; text-indent: 21pt">SQL&gt;</div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></div>
<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQL&gt; alter user dinya profile default;</span></div>
<div style="margin: 0cm 0cm 0pt 21pt; text-indent: 21pt">用户已更改。</div>
<div style="margin: 0cm 0cm 0pt 21pt; text-indent: 21pt">SQL&gt;</div>
<div>&nbsp;</div>
<br />
<br />
<img src ="http://www.blogjava.net/pdw2009/aggbug/234844.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pdw2009/" target="_blank">有猫相伴的日子</a> 2008-10-17 10:54 <a href="http://www.blogjava.net/pdw2009/archive/2008/10/17/234844.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>aix常用命令</title><link>http://www.blogjava.net/pdw2009/archive/2008/09/16/229208.html</link><dc:creator>有猫相伴的日子</dc:creator><author>有猫相伴的日子</author><pubDate>Tue, 16 Sep 2008 09:09:00 GMT</pubDate><guid>http://www.blogjava.net/pdw2009/archive/2008/09/16/229208.html</guid><wfw:comment>http://www.blogjava.net/pdw2009/comments/229208.html</wfw:comment><comments>http://www.blogjava.net/pdw2009/archive/2008/09/16/229208.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pdw2009/comments/commentRss/229208.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pdw2009/services/trackbacks/229208.html</trackback:ping><description><![CDATA[1、给逻辑券加空间<br />
chfs -a size=+100M /oracle <br />
2、查看物理内存<br />
<p><span style="font-size: 10pt">lsattr -El mem0 </span></p>
<p>&nbsp;</p>
<p><span style="font-size: 10pt">lsattr -El sys0 -a realmem</span></p>
3、查看系统所有的信息<br />
<p><span style="font-size: 10pt">svmon -G </span></p>
 <img src ="http://www.blogjava.net/pdw2009/aggbug/229208.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pdw2009/" target="_blank">有猫相伴的日子</a> 2008-09-16 17:09 <a href="http://www.blogjava.net/pdw2009/archive/2008/09/16/229208.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>GlassFish  入门</title><link>http://www.blogjava.net/pdw2009/archive/2008/08/20/223164.html</link><dc:creator>有猫相伴的日子</dc:creator><author>有猫相伴的日子</author><pubDate>Wed, 20 Aug 2008 02:06:00 GMT</pubDate><guid>http://www.blogjava.net/pdw2009/archive/2008/08/20/223164.html</guid><wfw:comment>http://www.blogjava.net/pdw2009/comments/223164.html</wfw:comment><comments>http://www.blogjava.net/pdw2009/archive/2008/08/20/223164.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pdw2009/comments/commentRss/223164.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pdw2009/services/trackbacks/223164.html</trackback:ping><description><![CDATA[<br />
GlassFish&nbsp;&nbsp;中文FAQ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://wiki.glassfish.java.net/Wiki.jsp?page=GlassFishUserFAQZh">http://wiki.glassfish.java.net/Wiki.jsp?page=GlassFishUserFAQZh</a><br />
用GlassFish2替换tomcat&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://www.javaeye.com/topic/141589">http://www.javaeye.com/topic/141589</a> <br />
在GlassFish2上部署Web项目&nbsp; <a href="http://jeffreyhsu.javaeye.com/blog/86953">http://jeffreyhsu.javaeye.com/blog/86953</a> <br />
GlassFish初试&nbsp; <a href="http://tamino.javaeye.com/blog/140550">http://tamino.javaeye.com/blog/140550</a>&nbsp;<br />
<br />
看完这几篇文件对GlassFish&nbsp;&nbsp;就算有一个基本的了解了<br />
</a><br />
<img src ="http://www.blogjava.net/pdw2009/aggbug/223164.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pdw2009/" target="_blank">有猫相伴的日子</a> 2008-08-20 10:06 <a href="http://www.blogjava.net/pdw2009/archive/2008/08/20/223164.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>分区表例子</title><link>http://www.blogjava.net/pdw2009/archive/2008/07/15/215017.html</link><dc:creator>有猫相伴的日子</dc:creator><author>有猫相伴的日子</author><pubDate>Tue, 15 Jul 2008 09:03:00 GMT</pubDate><guid>http://www.blogjava.net/pdw2009/archive/2008/07/15/215017.html</guid><wfw:comment>http://www.blogjava.net/pdw2009/comments/215017.html</wfw:comment><comments>http://www.blogjava.net/pdw2009/archive/2008/07/15/215017.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/pdw2009/comments/commentRss/215017.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pdw2009/services/trackbacks/215017.html</trackback:ping><description><![CDATA[在大量业务数据处理的项目中，可以考虑使用分区表来提高应用系统的性能并方便数据管理，本文详细介绍了分区表的使用。 <br />
<br />
　　在大型的企业应用或企业级的数据库应用中，要处理的数据量通常可以达到几十到几百GB，有的甚至可以到TB级。虽然存储介质和数据处理技术的发展也很快，但是仍然不能满足用户的需求，为了使用户的大量的数据在读写操作和查询中速度更快，Oracle提供了对表和索引进行分区的技术，以改善大型应用系统的性能。 <br />
<br />
　　使用分区的优点： <br />
<br />
　　&#183;增强可用性：如果表的某个分区出现故障，表在其他分区的数据仍然可用； <br />
<br />
　　&#183;维护方便：如果表的某个分区出现故障，需要修复数据，只修复该分区即可； <br />
<br />
　　&#183;均衡I/O：可以把不同的分区映射到磁盘以平衡I/O，改善整个系统性能； <br />
<br />
　　&#183;改善查询性能：对分区对象的查询可以仅搜索自己关心的分区，提高检索速度。 <br />
<br />
　　Oracle数据库提供对表或索引的分区方法有三种： <br />
<br />
　　&#183;范围分区 <br />
<br />
　　&#183;Hash分区（散列分区） <br />
<br />
　　&#183;复合分区 <br />
<br />
　　下面将以实例的方式分别对这三种分区方法来说明分区表的使用。为了测试方便，我们先建三个表空间。 <br />
<br />
<table bordercolor="#ffcc66" width="90%" align="center" bgcolor="#dadacf" border="1">
    <tbody>
        <tr>
            <td>create tablespace dinya_space01 <br />
            datafile &#8217;/test/demo/oracle/demodata/dinya01.dnf&#8217; size 50M <br />
            create tablespace dinya_space01 <br />
            datafile &#8217;/test/demo/oracle/demodata/dinya02.dnf&#8217; size 50M <br />
            create tablespace dinya_space01 <br />
            datafile &#8217;/test/demo/oracle/demodata/dinya03.dnf&#8217; size 50M </td>
        </tr>
    </tbody>
</table>
<br />
　　<strong>1.1. 分区表的创建</strong> <br />
<br />
　　1.1.1. 范围分区 <br />
<br />
　　范围分区就是对数据表中的某个值的范围进行分区，根据某个值的范围，决定将该数据存储在哪个分区上。如根据序号分区，根据业务记录的创建日期进行分区等。 <br />
<br />
　　需求描述：有一个物料交易表，表名：material_transactions。该表将来可能有千万级的数据记录数。要求在建该表的时候使用分区表。这时候我们可以使用序号分区三个区，每个区中预计存储三千万的数据，也可以使用日期分区，如每五年的数据存储在一个分区上。 <br />
<br />
　　根据交易记录的序号分区建表： <br />
<br />
<table bordercolor="#ffcc66" width="90%" align="center" bgcolor="#dadacf" border="1">
    <tbody>
        <tr>
            <td>SQL&gt; create table dinya_test <br />
            2 ( <br />
            3 transaction_id number primary key, <br />
            4 item_id number(8) not null, <br />
            5 item_description varchar2(300), <br />
            6 transaction_date date not null <br />
            7 ) <br />
            8 partition by range (transaction_id) <br />
            9 ( <br />
            10 partition part_01 values less than(30000000) tablespace dinya_space01, <br />
            11 partition part_02 values less than(60000000) tablespace dinya_space02, <br />
            12 partition part_03 values less than(maxvalue) tablespace dinya_space03 <br />
            13 ); <br />
            Table created.</td>
        </tr>
    </tbody>
</table>
<br />
　　　建表成功，根据交易的序号，交易ID在三千万以下的记录将存储在第一个表空间dinya_space01中，分区名为:par_01，在三千万到六千万之间的记录存储在第二个表空间：<br />
<br />
　　dinya_space02中，分区名为：par_02，而交易ID在六千万以上的记录存储在第三个表空间dinya_space03中，分区名为par_03. <br />
<br />
　　根据交易日期分区建表： <br />
<br />
<table bordercolor="#ffcc66" width="90%" align="center" bgcolor="#dadacf" border="1">
    <tbody>
        <tr>
            <td>SQL&gt; create table dinya_test <br />
            2 ( <br />
            3 transaction_id number primary key, <br />
            4 item_id number(8) not null, <br />
            <br />
            5 item_description varchar2(300), <br />
            6 transaction_date date not null <br />
            7 ) <br />
            8 partition by range (transaction_date) <br />
            9 ( <br />
            10 partition part_01 values less than(to_date(&#8217;2006-01-01&#8217;,&#8217;yyyy-mm-dd&#8217;)) <br />
            tablespace dinya_space01, <br />
            11 partition part_02 values less than(to_date(&#8217;2010-01-01&#8217;,&#8217;yyyy-mm-dd&#8217;)) <br />
            tablespace dinya_space02, <br />
            12 partition part_03 values less than(maxvalue) tablespace dinya_space03 <br />
            13 ); <br />
            Table created. </td>
        </tr>
    </tbody>
</table>
<br />
　　这样我们就分别建了以交易序号和交易日期来分区的分区表。每次插入数据的时候，系统将根据指定的字段的值来自动将记录存储到制定的分区（表空间）中。 <br />
<br />
　　当然，我们还可以根据需求，使用两个字段的范围分布来分区，如partition by range ( transaction_id ,transaction_date), 分区条件中的值也做相应的改变，请读者自行测试。 <br />
<br />
　　1.1.2. Hash分区（散列分区） <br />
<br />
　　散列分区为通过指定分区编号来均匀分布数据的一种分区类型，因为通过在I/O设备上进行散列分区，使得这些分区大小一致。如将物料交易表的数据根据交易ID散列地存放在指定的三个表空间中： <br />
<br />
<table bordercolor="#ffcc66" width="90%" align="center" bgcolor="#dadacf" border="1">
    <tbody>
        <tr>
            <td>SQL&gt; create table dinya_test <br />
            2 ( <br />
            3 transaction_id number primary key, <br />
            4 item_id number(8) not null, <br />
            5 item_description varchar2(300), <br />
            6 transaction_date date <br />
            7 ) <br />
            8 partition by hash(transaction_id) <br />
            9 ( <br />
            10 partition part_01 tablespace dinya_space01, <br />
            11 partition part_02 tablespace dinya_space02, <br />
            12 partition part_03 tablespace dinya_space03 <br />
            13 ); <br />
            Table created. </td>
        </tr>
    </tbody>
</table>
<br />
　　建表成功，此时插入数据，系统将按transaction_id将记录散列地插入三个分区中，这里也就是三个不同的表空间中。 <br />
<br />
　　1.1.3. 复合分区 <br />
<br />
　　有时候我们需要根据范围分区后，每个分区内的数据再散列地分布在几个表空间中，这样我们就要使用复合分区。复合分区是先使用范围分区，然后在每个分区内再使用散列分区的一种分区方法，如将物料交易的记录按时间分区，然后每个分区中的数据分三个子分区，将数据散列地存储在三个指定的表空间中： <br />
<br />
<table bordercolor="#ffcc66" width="90%" align="center" bgcolor="#dadacf" border="1">
    <tbody>
        <tr>
            <td>SQL&gt; create table dinya_test <br />
            2 ( <br />
            3 transaction_id number primary key, <br />
            4 item_id number(8) not null, <br />
            5 item_description varchar2(300), <br />
            6 transaction_date date <br />
            7 ) <br />
            8 partition by range(transaction_date)subpartition by hash(transaction_id) <br />
            9 subpartitions 3 store in (dinya_space01,dinya_space02,dinya_space03) <br />
            10 ( <br />
            11 partition part_01 values less than(to_date(&#8217;2006-01-01&#8217;,&#8217;yyyy-mm-dd&#8217;)), <br />
            12 partition part_02 values less than(to_date(&#8217;2010-01-01&#8217;,&#8217;yyyy-mm-dd&#8217;)), <br />
            13 partition part_03 values less than(maxvalue) <br />
            14 ); <br />
            Table created. </td>
        </tr>
    </tbody>
</table>
<br />
　　该例中，先是根据交易日期进行范围分区，然后根据交易的ID将记录散列地存储在三个表空间中
<img src ="http://www.blogjava.net/pdw2009/aggbug/215017.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pdw2009/" target="_blank">有猫相伴的日子</a> 2008-07-15 17:03 <a href="http://www.blogjava.net/pdw2009/archive/2008/07/15/215017.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>实体视图管理</title><link>http://www.blogjava.net/pdw2009/archive/2008/07/14/214790.html</link><dc:creator>有猫相伴的日子</dc:creator><author>有猫相伴的日子</author><pubDate>Mon, 14 Jul 2008 10:29:00 GMT</pubDate><guid>http://www.blogjava.net/pdw2009/archive/2008/07/14/214790.html</guid><wfw:comment>http://www.blogjava.net/pdw2009/comments/214790.html</wfw:comment><comments>http://www.blogjava.net/pdw2009/archive/2008/07/14/214790.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pdw2009/comments/commentRss/214790.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pdw2009/services/trackbacks/214790.html</trackback:ping><description><![CDATA[　　实体化视图管理是用于汇总,预计算,复制或分发数据的对象, 在大型的数据库中使用它可以提高涉及到的SUM,COUNT,AVG,MIN,MAX等的表的查询的速度,只要在实体化视图管理上创建了统计,查询优化器将自动的使用实体化视图管理,这特性被称为QUERY REWRITE(查询重写).与普通的视图不同的是实体化视图管理存储数据,占据数据库的物理空间的.<br />
<br />
　　创建实体化视图管理的用户的权限必须有: CREATE MATERIALZED VIEW,CREATE TABLE,CREATE VIEW,SELECT等,如果在其他的模式中创建的话要在表上有CREATE ANY MATERIALIZED VIEW和SELECT权限.<br />
<br />
　　要查询重引用别的模式中的实体化视图管理的话,还要有引用的表的GLOBAL QUERY REWRITE OR QUERY REWRITE权限.<br />
<br />
　　如果计划使用实体化视图管理的话,要修改参数文件中加: QUERY_REWRITE_ENABLE=TRUE<br />
<br />
　　<strong>2. 创建实体化视图注意事项:</strong><br />
<br />
　　创建之后,是否要填写数据<br />
<br />
　　多长时间刷新一次<br />
<br />
　　使用那种刷新类型: COMPLE(完全),FAST(快速),FORCE(强制),NEVER(从不)<br />
<br />
　　<strong>3. 创建实体化视图</strong><br />
<br />
　　CREATE MATERIALIZED VIEW TEST3<br />
<br />
　　PCTFREE 0 TABLESPACE MTEST<br />
<br />
　　STORAGE (INITIAL 1M NEXT 1M PCTINCREASE 0)<br />
<br />
　　BUILD DEFERRED<br />
<br />
　　REFRESH FAST ON COMMIT<br />
<br />
　　ENABLE QUERY REWRITE<br />
<br />
　　AS SELECT EMP_NO,SUM(QTY_PSC) AS QTY_PSC FROM BSEMPMS GROUP BY EMP_NO;<br />
<br />
　　<strong>4. 删除实体化视图</strong><br />
<br />
　　DROP MATERIALIZED VIEW TEST3;<br />
<br />
　　<strong>5. 管理和评估实体化视图的工具</strong><br />
<br />
　　要运行DBMSSNAP.SQL和DBMSSUM.SQL为实体化视图创建包DBMS_MVIEW和DBMS_OLAP<br />
<br />
　　DBMS_MVIEW用于执行管理活动的.<br />
<br />
　　DBMS_OLAP确定实体化视图是否能提高查询的性能.<br />
<br />
　　<strong>6. 刷新实体化视图的方法</strong><br />
<br />
　　EXECUTE DBMS_MVIEW.REFRESH('TEST3','C');<br />
<br />
　　其中TEST3为实体化视图名称,'C'为刷新类型中的一种.<br />
<br />
　　刷新类型有: C-完全刷新<br />
<br />
　　F-快速刷新和强制刷新<br />
<br />
　　EXECUTE DBMS_MVIEW.REFRESH_ALL<br />
<br />
　　不接受任何参数,全部刷新.<br />
<br />
　　<strong>7. 实体化视图间的完整性</strong><br />
<br />
　　在实体化视图互相嵌套的时候会用不同的实体化视图的刷新的方式和时间的不同而引起的数据的完整性的问题,对于这种情况,建议把相关联的实体化视图放在同一个刷新组中,协调进行刷新.<br />
<br />
　　DBMS_REFRESH软件包中提供MAKE过程来创建一个刷新组.<br />
<br />
　　例如:<br />
<br />
　　EXECUTE DBMS_REFRESH.MAKE<br />
<br />
　　(NAME=&gt;'TEST_GROUP',<br />
<br />
　　LIST=&gt;'LOC_EMP,LOC_DPT',<br />
<br />
　　NEXT_DATE=&gt;SYSDATE,<br />
<br />
　　INTERVAL=&gt;'SYSDATE+7');<br />
<br />
　　上面创建一个实体化视图刷新组TEST_GROUP,刷新周期为7天一次的.<br />
<br />
　　两个实体化视图LOC_EMP和LOC_DPT通过一个参数来传递给过程的.<br />
<br />
　　<strong>8. 向刷新组中增加刷新的实体化视图</strong><br />
<br />
　　DBMS_REFRESH.ADD<br />
<br />
　　(NAME IN VARCHAR2,<br />
<br />
　　LIST IN VARCHAR2,|<br />
<br />
　　TAB IN DBMS_UTILITY.UNCLARRAY,<br />
<br />
　　LAX IN BOOLEAN:=FALSE);<br />
<br />
　　<strong>9. 向刷新组中删除刷新的实体化视图</strong><br />
<br />
　　DBMS_REFRESH.SUBTRACT<br />
<br />
　　(NAME IN VARCHAR2,<br />
<br />
　　LIST IN VARCHAR2,|<br />
<br />
　　TAB IN DBMS_UTILITY.UNCLARRAY,<br />
<br />
　　LAX IN BOOLEAN:=FALSE);<br />
<br />
　　<strong>10. 手工删除一个刷新组</strong><br />
<br />
　　EXECUTE DBMS_REFRESH.REFRESH('TEST_GROUP');<br />
<br />
　　也可以<br />
<br />
　　EXECUTE DBMS_REFRESH.DESTROY(NAME=&gt;'TEST_GROUP');<br />
<br />
　　<strong>11. 实体化视图的日志管理</strong><br />
<br />
　　实体化视图日志是一个表,保持对实体化视图操作的历史记录.<br />
<br />
　　要创建实体化视图日志必须能在表上创建AFTER ROW触发器,必须有CREATE TRIGGER,CREATE TABLE权限<br />
<br />
　　例如:<br />
<br />
　　CREATE MATERIALIZED VIEW LOG ON BSEMPMS<br />
<br />
　　TABLESPACE DATA_TEST<br />
<br />
　　STORAGE(INITIAL 1M NEXT 1M PCTINCREASE 0)<br />
<br />
　　PCTFREE 5 PCTUSED 90;<br />
<br />
　　实体化视图日志的PCTFREE应该很小,PCTUSED应该很大的.<br />
<br />
　　通过ALTER MATERIALIZED VIEW LOG命令可以修改实体化视图日志参数.<br />
<br />
　　如:<br />
<br />
　　ALTER MATERIALIZED VIEW LOG BSEMPMS PCTFREE 1;<br />
<br />
　　要撤销实体化视图日志,可以用DROP MATERIALIZED VIEW LOG命令<br />
<br />
　　如:<br />
<br />
　　DROP MATERIALIZED VIEW LOG ON BSEMPMS;<br />
<br />
　　<strong>12. 清除实体化视图日志</strong><br />
<br />
　　要减少实体化视图日志使用的空间,可用DBMS_MVIEW软件包中的PURGE_LOG过程,PURGE_LOG有三个参数:<br />
<br />
　　主表名称,NUM变量,DELETE标志<br />
<br />
　　NUM指最近最少刷新的实体化视图数量<br />
<br />
　　例如:<br />
<br />
　　EXECUTE DBMS_MVIEW.PURGE_LOG<br />
<br />
　　(MATER=&gt;'BSEMPMS',<br />
<br />
　　NUM=&gt;1,<br />
<br />
　　FLAG=&gt;'DELETE');<br />
<br />
　　BSEMPMS表的实体化视图将清除实体化视图最近最少使用的条目.<br />
<br />
　　要在截断主表的时候而不丢失实体化视图日志条目,可以用命令<br />
<br />
　　TRUNCATE TABLE BSEMPMS PRESERVE MATERIALIZED VIEW LOG;<br />
<br />
<img src ="http://www.blogjava.net/pdw2009/aggbug/214790.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pdw2009/" target="_blank">有猫相伴的日子</a> 2008-07-14 18:29 <a href="http://www.blogjava.net/pdw2009/archive/2008/07/14/214790.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>数据仓库学习随笔</title><link>http://www.blogjava.net/pdw2009/archive/2008/07/14/214692.html</link><dc:creator>有猫相伴的日子</dc:creator><author>有猫相伴的日子</author><pubDate>Mon, 14 Jul 2008 04:13:00 GMT</pubDate><guid>http://www.blogjava.net/pdw2009/archive/2008/07/14/214692.html</guid><wfw:comment>http://www.blogjava.net/pdw2009/comments/214692.html</wfw:comment><comments>http://www.blogjava.net/pdw2009/archive/2008/07/14/214692.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pdw2009/comments/commentRss/214692.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pdw2009/services/trackbacks/214692.html</trackback:ping><description><![CDATA[1、ETL主要是做数据整理，实体视图用于优化不汇总数据。<br />
<p>根据模型的设计和源数据的情况，有四种数据ETL模式：</p>
<p>&nbsp;&nbsp; 完全刷新：数据仓库数据表中只包括最新的数据，每次加载均删除原有数据，然后完全加载最新的源数据。这种模式下，数据抽取程序抽取源数据中的所有记录，在加载前，将目标数据表清空，然后加载所有记录。为提高删除数据的速度，一般是采用Truncate清空数据表。如本系统中的入库当前信息表采用此种模式。</p>
<p>镜像增量：源数据中的记录定期更新，但记录中包括记录时间字段，源数据中保存了数据历史的记录，ETL可以通过记录时间将增量数据从源数据抽取出来以附加的方式加载到数据仓库中，数据的历史记录也会被保留在数据仓库中。 <br />
&nbsp; <br />
事件增量：每一个记录是一个新的事件，相互之间没有必然的联系，新记录不是对原有记录数值的变更，记录包括时间字段，可以通过时间字段将新增数据抽取出来加载到数据库中。</p>
<p>镜像比较：数据仓库数据具有生效日期字段以保存数据的历史信息，而源数据不保留历史并且每天都可能被更新。因此，只能将新的镜像数据与上次加载的数据的镜像进行比较，找出变更部分，更新历史数据被更新记录的生效终止日期，并添加变更后的数据。大多数源数据中需保存历史信息的维表</p>
<img src ="http://www.blogjava.net/pdw2009/aggbug/214692.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pdw2009/" target="_blank">有猫相伴的日子</a> 2008-07-14 12:13 <a href="http://www.blogjava.net/pdw2009/archive/2008/07/14/214692.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hibernate springTemplate 一些常用写法</title><link>http://www.blogjava.net/pdw2009/archive/2008/07/01/211946.html</link><dc:creator>有猫相伴的日子</dc:creator><author>有猫相伴的日子</author><pubDate>Tue, 01 Jul 2008 08:41:00 GMT</pubDate><guid>http://www.blogjava.net/pdw2009/archive/2008/07/01/211946.html</guid><wfw:comment>http://www.blogjava.net/pdw2009/comments/211946.html</wfw:comment><comments>http://www.blogjava.net/pdw2009/archive/2008/07/01/211946.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pdw2009/comments/commentRss/211946.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pdw2009/services/trackbacks/211946.html</trackback:ping><description><![CDATA[<p>&nbsp;<br />
分页的关联查询<br />
</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;List&nbsp;queryTrade(</span><span style="color: #0000ff">final</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;offset,</span><span style="color: #0000ff">final</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;length,</span><span style="color: #0000ff">final</span><span style="color: #000000">&nbsp;Date&nbsp;startdate,</span><span style="color: #0000ff">final</span><span style="color: #000000">&nbsp;Date&nbsp;enddate,</span><span style="color: #0000ff">final</span><span style="color: #000000">&nbsp;String&nbsp;comUsername){<br />
<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;getHibernateTemplate().executeFind(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;HibernateCallback()&nbsp;{<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;Object&nbsp;doInHibernate(Session&nbsp;session)&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;HibernateException,&nbsp;SQLException&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StringBuffer&nbsp;hql</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;StringBuffer();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000">{<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;queryString&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">select&nbsp;A.comUsername,A.joinId,B.dtBuyTime,B.decAmount&nbsp;&nbsp;from&nbsp;&nbsp;BarOrderInfo&nbsp;A,&nbsp;EcpRichJoin&nbsp;B&nbsp;where&nbsp;A.comUsername=?&nbsp;&nbsp;and&nbsp;A.joinId=B.intOrdeId&nbsp;&nbsp;and&nbsp;B.dtBuyTime&nbsp;&gt;=?&nbsp;and&nbsp;B.dtBuyTime&nbsp;&lt;=?&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Query&nbsp;query&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;session.createQuery(queryString);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;query.setString(</span><span style="color: #000000">0</span><span style="color: #000000">,&nbsp;comUsername);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;query.setDate(</span><span style="color: #000000">1</span><span style="color: #000000">,startdate&nbsp;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;query.setDate(</span><span style="color: #000000">2</span><span style="color: #000000">,enddate);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;query.setFirstResult(offset);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;query.setMaxResults(length);<br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List&nbsp;result</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;ArrayList();&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List&nbsp;list</span><span style="color: #000000">=</span><span style="color: #000000">query.list();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TradeReportVO&nbsp;trvo</span><span style="color: #000000">=</span><span style="color: #0000ff">null</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;i</span><span style="color: #000000">&lt;</span><span style="color: #000000">list.size();i</span><span style="color: #000000">++</span><span style="color: #000000">){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trvo</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;TradeReportVO();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Object&nbsp;o[]</span><span style="color: #000000">=</span><span style="color: #000000">(Object[])list.get(i);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">o.length---&gt;</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">o.length);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trvo.setComUsername(o[</span><span style="color: #000000">0</span><span style="color: #000000">].toString());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trvo.setJoinId(o[</span><span style="color: #000000">1</span><span style="color: #000000">].toString());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trvo.setDtBuyTime(o[</span><span style="color: #000000">2</span><span style="color: #000000">].toString());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trvo.setDecAmount(o[</span><span style="color: #000000">3</span><span style="color: #000000">].toString());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(o[</span><span style="color: #000000">0</span><span style="color: #000000">].toString()</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">-</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">o[</span><span style="color: #000000">1</span><span style="color: #000000">].toString()</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">-</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">o[</span><span style="color: #000000">2</span><span style="color: #000000">].toString()</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">-</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">o[</span><span style="color: #000000">3</span><span style="color: #000000">].toString());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result.add(trvo);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;result;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #0000ff">catch</span><span style="color: #000000">(RuntimeException&nbsp;re){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log.error(re.getMessage());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log.error(</span><span style="color: #000000">"</span><span style="color: #000000">find&nbsp;failed</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;re);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log.error(</span><span style="color: #000000">"</span><span style="color: #000000">hql====</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;hql);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">throw</span><span style="color: #000000">&nbsp;re;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;});<br />
}<br />
</span></div>
<br />
直接查询<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">/**</span><span style="color: #008000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;查找交班记录<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@return</span><span style="color: #008000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;List&nbsp;findWorkShift(String&nbsp;VcComUsername,String&nbsp;vcCoaUsername,Date&nbsp;startDatetime,Date&nbsp;endDatetime){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;queryString&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">from&nbsp;BarCommerOpaction&nbsp;as&nbsp;model&nbsp;where&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;model.VcComUsername=?&nbsp;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;and&nbsp;model.vcCoaUsername&nbsp;=?&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;and&nbsp;model.dtCoaTime&nbsp;&gt;&nbsp;?&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;and&nbsp;model.dtCoaTime&nbsp;&lt;=&nbsp;?&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;getHibernateTemplate().find(queryString,</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Object[]{VcComUsername,vcCoaUsername,startDatetime,endDatetime});<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(RuntimeException&nbsp;re)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log.error(</span><span style="color: #000000">"</span><span style="color: #000000">get&nbsp;failed</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;re);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">throw</span><span style="color: #000000">&nbsp;re;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</span></div>
<br />
当Hibernate 使用时间类型时,要记住Date类型与Timestamp类型的区别，Date只取到日期，不取时间的。
<img src ="http://www.blogjava.net/pdw2009/aggbug/211946.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pdw2009/" target="_blank">有猫相伴的日子</a> 2008-07-01 16:41 <a href="http://www.blogjava.net/pdw2009/archive/2008/07/01/211946.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle 存储过程事务使用断点回滚</title><link>http://www.blogjava.net/pdw2009/archive/2008/06/24/210341.html</link><dc:creator>有猫相伴的日子</dc:creator><author>有猫相伴的日子</author><pubDate>Tue, 24 Jun 2008 08:41:00 GMT</pubDate><guid>http://www.blogjava.net/pdw2009/archive/2008/06/24/210341.html</guid><wfw:comment>http://www.blogjava.net/pdw2009/comments/210341.html</wfw:comment><comments>http://www.blogjava.net/pdw2009/archive/2008/06/24/210341.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pdw2009/comments/commentRss/210341.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pdw2009/services/trackbacks/210341.html</trackback:ping><description><![CDATA[<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">create</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">or</span><span style="color: #000000">&nbsp;</span><span style="color: #ff00ff">replace</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">procedure</span><span style="color: #000000">&nbsp;delete_exceed_bound(playtype&nbsp;&nbsp;</span><span style="font-weight: bold; color: #000000">varchar2</span><span style="color: #000000">,&nbsp;end07&nbsp;&nbsp;</span><span style="font-weight: bold; color: #000000">varchar2</span><span style="color: #000000">&nbsp;,&nbsp;end08&nbsp;&nbsp;</span><span style="font-weight: bold; color: #000000">varchar2</span><span style="color: #000000">)<br />
&nbsp;&nbsp;</span><span style="color: #0000ff">is</span><span style="color: #000000"><br />
<br />
&nbsp;&nbsp;</span><span style="color: #0000ff">begin</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">delete</span><span style="color: #000000">&nbsp;lotterydate&nbsp;</span><span style="color: #0000ff">where</span><span style="color: #000000">&nbsp;lotterydate.playtype</span><span style="color: #808080">=</span><span style="color: #000000">playtype&nbsp;</span><span style="color: #808080">and</span><span style="color: #000000">&nbsp;&nbsp;lotterydate.lotterydate_name</span><span style="color: #808080">&gt;</span><span style="color: #000000">end07&nbsp;</span><span style="color: #808080">and</span><span style="color: #000000">&nbsp;lotterydate.lotterydate_name&nbsp;</span><span style="color: #808080">like</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">07%</span><span style="color: #ff0000">'</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">delete</span><span style="color: #000000">&nbsp;lotterydate&nbsp;</span><span style="color: #0000ff">where</span><span style="color: #000000">&nbsp;lotterydate.playtype</span><span style="color: #808080">=</span><span style="color: #000000">playtype&nbsp;</span><span style="color: #808080">and</span><span style="color: #000000">&nbsp;&nbsp;lotterydate.lotterydate_name</span><span style="color: #808080">&gt;</span><span style="color: #000000">end08&nbsp;</span><span style="color: #808080">and</span><span style="color: #000000">&nbsp;lotterydate.lotterydate_name&nbsp;</span><span style="color: #808080">like</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">08%</span><span style="color: #ff0000">'</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;savepoint&nbsp;p1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">delete</span><span style="color: #000000">&nbsp;province_sell_amounts&nbsp;</span><span style="color: #0000ff">where</span><span style="color: #000000">&nbsp;province_sell_amounts.play_no</span><span style="color: #808080">=</span><span style="color: #000000">playtype&nbsp;</span><span style="color: #808080">and</span><span style="color: #000000">&nbsp;province_sell_amounts.term</span><span style="color: #808080">&gt;</span><span style="color: #000000">end07&nbsp;</span><span style="color: #808080">and</span><span style="color: #000000">&nbsp;province_sell_amounts.term&nbsp;</span><span style="color: #808080">like</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">07%</span><span style="color: #ff0000">'</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">delete</span><span style="color: #000000">&nbsp;province_sell_amounts&nbsp;</span><span style="color: #0000ff">where</span><span style="color: #000000">&nbsp;province_sell_amounts.play_no</span><span style="color: #808080">=</span><span style="color: #000000">playtype&nbsp;</span><span style="color: #808080">and</span><span style="color: #000000">&nbsp;province_sell_amounts.term</span><span style="color: #808080">&gt;</span><span style="color: #000000">end08&nbsp;</span><span style="color: #808080">and</span><span style="color: #000000">&nbsp;province_sell_amounts.term&nbsp;</span><span style="color: #808080">like</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">08%</span><span style="color: #ff0000">'</span><span style="color: #000000">;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">delete</span><span style="color: #000000">&nbsp;province_winning_prize&nbsp;</span><span style="color: #0000ff">where</span><span style="color: #000000">&nbsp;province_winning_prize.play_no</span><span style="color: #808080">=</span><span style="color: #000000">playtype&nbsp;</span><span style="color: #808080">and</span><span style="color: #000000">&nbsp;province_winning_prize.term</span><span style="color: #808080">&gt;</span><span style="color: #000000">end07&nbsp;</span><span style="color: #808080">and</span><span style="color: #000000">&nbsp;province_winning_prize.term&nbsp;</span><span style="color: #808080">like</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">07%</span><span style="color: #ff0000">'</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">delete</span><span style="color: #000000">&nbsp;province_winning_prize&nbsp;</span><span style="color: #0000ff">where</span><span style="color: #000000">&nbsp;province_winning_prize.play_no</span><span style="color: #808080">=</span><span style="color: #000000">playtype&nbsp;</span><span style="color: #808080">and</span><span style="color: #000000">&nbsp;province_winning_prize.term</span><span style="color: #808080">&gt;</span><span style="color: #000000">end08&nbsp;</span><span style="color: #808080">and</span><span style="color: #000000">&nbsp;province_winning_prize.term&nbsp;</span><span style="color: #808080">like</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">08%</span><span style="color: #ff0000">'</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;savepoint&nbsp;p2;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">delete</span><span style="color: #000000">&nbsp;condition_winning_prize&nbsp;</span><span style="color: #0000ff">where</span><span style="color: #000000">&nbsp;condition_winning_prize.play_no</span><span style="color: #808080">=</span><span style="color: #000000">playtype&nbsp;</span><span style="color: #808080">and</span><span style="color: #000000">&nbsp;condition_winning_prize.term</span><span style="color: #808080">&gt;</span><span style="color: #000000">end07&nbsp;</span><span style="color: #808080">and</span><span style="color: #000000">&nbsp;condition_winning_prize.term&nbsp;</span><span style="color: #808080">like</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">07%</span><span style="color: #ff0000">'</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">delete</span><span style="color: #000000">&nbsp;condition_winning_prize&nbsp;</span><span style="color: #0000ff">where</span><span style="color: #000000">&nbsp;condition_winning_prize.play_no</span><span style="color: #808080">=</span><span style="color: #000000">playtype&nbsp;</span><span style="color: #808080">and</span><span style="color: #000000">&nbsp;condition_winning_prize.term</span><span style="color: #808080">&gt;</span><span style="color: #000000">end08&nbsp;</span><span style="color: #808080">and</span><span style="color: #000000">&nbsp;condition_winning_prize.term&nbsp;</span><span style="color: #808080">like</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">08%</span><span style="color: #ff0000">'</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;savepoint&nbsp;p3;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">delete</span><span style="color: #000000">&nbsp;open_result&nbsp;</span><span style="color: #0000ff">where</span><span style="color: #000000">&nbsp;open_result.play_no</span><span style="color: #808080">=</span><span style="color: #000000">playtype&nbsp;</span><span style="color: #808080">and</span><span style="color: #000000">&nbsp;open_result.term</span><span style="color: #808080">&gt;</span><span style="color: #000000">end07&nbsp;</span><span style="color: #808080">and</span><span style="color: #000000">&nbsp;open_result.term&nbsp;</span><span style="color: #808080">like</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">07%</span><span style="color: #ff0000">'</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">delete</span><span style="color: #000000">&nbsp;open_result&nbsp;</span><span style="color: #0000ff">where</span><span style="color: #000000">&nbsp;open_result.play_no</span><span style="color: #808080">=</span><span style="color: #000000">playtype&nbsp;</span><span style="color: #808080">and</span><span style="color: #000000">&nbsp;open_result.term</span><span style="color: #808080">&gt;</span><span style="color: #000000">end08&nbsp;</span><span style="color: #808080">and</span><span style="color: #000000">&nbsp;open_result.term&nbsp;</span><span style="color: #808080">like</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">08%</span><span style="color: #ff0000">'</span><span style="color: #000000">;<br />
<br />
<br />
&nbsp;&nbsp;exception<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">when</span><span style="color: #000000">&nbsp;others&nbsp;</span><span style="color: #0000ff">then</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dbms_output.put_line(sqlerrm);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">rollback</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">to</span><span style="color: #000000">&nbsp;savepoint&nbsp;p1;<br />
&nbsp;&nbsp;</span><span style="color: #0000ff">end</span><span style="color: #000000">&nbsp;delete_exceed_bound;<br />
</span></div>
保存点<span style="font-size: 12pt; font-family: Verdana">(SAVEPOINT)</span><span style="font-size: 12pt; font-family: 宋体">是事务处理过程中的一个标志，与回滚命令</span><span style="font-size: 12pt; font-family: Verdana">(ROLLBACK)</span><span style="font-size: 12pt; font-family: 宋体">结合使用，主要的用途是允许用户将某一段处理回滚而不必回滚整个事务。</span>
<p>&nbsp;</p>
<p style="text-indent: 24pt"><span style="font-size: 12pt; font-family: 宋体">如果定义了多个</span><span style="font-size: 12pt; font-family: Verdana">savepoint</span><span style="font-size: 12pt; font-family: 宋体">，当指定回滚到某个</span><span style="font-size: 12pt; font-family: Verdana">savepoint</span><span style="font-size: 12pt; font-family: 宋体">时，那么回滚操作将回滚这个</span><span style="font-size: 12pt; font-family: Verdana">savepoint</span><span style="font-size: 12pt; font-family: 宋体">后面的所有操作（即使后面可能标记了</span><span style="font-size: 12pt; font-family: Verdana">N</span><span style="font-size: 12pt; font-family: 宋体">个</span><span style="font-size: 12pt; font-family: Verdana">savepoint</span><span style="font-size: 12pt; font-family: 宋体">）。</span></p>
<p style="text-indent: 24pt"><span style="font-size: 12pt; font-family: 宋体">在一段处理中定义了3个</span><span style="font-size: 12pt; font-family: Verdana">savepoint</span><span style="font-size: 12pt; font-family: 宋体">，从第2个</span><span style="font-size: 12pt; font-family: Verdana">savepoint</span><span style="font-size: 12pt; font-family: 宋体">回滚，后面的第3个标记的操作都将被回滚，如果不使用</span><span style="font-size: 12pt; font-family: Verdana">ROLLBACK TO savepoint_name</span><span style="font-size: 12pt; font-family: 宋体">而使用</span><span style="font-size: 12pt; font-family: Verdana">ROLLBACK</span><span style="font-size: 12pt; font-family: 宋体">，将会滚整个事务处理。</span></p>
<img src ="http://www.blogjava.net/pdw2009/aggbug/210341.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pdw2009/" target="_blank">有猫相伴的日子</a> 2008-06-24 16:41 <a href="http://www.blogjava.net/pdw2009/archive/2008/06/24/210341.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Servlet 各种监听接口简介</title><link>http://www.blogjava.net/pdw2009/archive/2008/06/22/209818.html</link><dc:creator>有猫相伴的日子</dc:creator><author>有猫相伴的日子</author><pubDate>Sun, 22 Jun 2008 02:54:00 GMT</pubDate><guid>http://www.blogjava.net/pdw2009/archive/2008/06/22/209818.html</guid><wfw:comment>http://www.blogjava.net/pdw2009/comments/209818.html</wfw:comment><comments>http://www.blogjava.net/pdw2009/archive/2008/06/22/209818.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/pdw2009/comments/commentRss/209818.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/pdw2009/services/trackbacks/209818.html</trackback:ping><description><![CDATA[<p><font size="4"><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 目前Servlet2.4和JSP2.0总共有8个监听器接口和6个Event类，其中HttpSessionAttributeListener与HttpSessionBindingListener皆使用HttpSessionBindingEvent;HttpSessionListener和HttpSessionActivationListener则都使用HttpSessionEvent;其余Listener对应的Event如下所示：</font></p>
<table style="border-right: medium none; border-top: medium none; border-left: medium none; border-bottom: medium none; border-collapse: collapse" cellspacing="0" cellpadding="0" border="1">
    <tbody>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 213.05pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; background-color: transparent" valign="top" width="284">
            <p><font size="4"><span lang="EN-US">Listener</span><span style="font-family: 宋体">接口</span></font></p>
            </td>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; border-left-color: #ece9d8; padding-bottom: 0cm; width: 213.05pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; background-color: transparent" valign="top" width="284">
            <p><font size="4"><span lang="EN-US">Event</span><span style="font-family: 宋体">类</span></font></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 213.05pt; border-top-color: #ece9d8; padding-top: 0cm; border-bottom: windowtext 1pt solid; background-color: transparent" valign="top" width="284">
            <p><span lang="EN-US"><font size="4">ServletContextListener</font></span></p>
            </td>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; border-left-color: #ece9d8; padding-bottom: 0cm; width: 213.05pt; border-top-color: #ece9d8; padding-top: 0cm; border-bottom: windowtext 1pt solid; background-color: transparent" valign="top" width="284">
            <p><span lang="EN-US"><font size="4">ServletContextEvent</font></span></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 213.05pt; border-top-color: #ece9d8; padding-top: 0cm; border-bottom: windowtext 1pt solid; background-color: transparent" valign="top" width="284">
            <p><span lang="EN-US"><font size="4">ServletContextAttributeListener</font></span></p>
            </td>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; border-left-color: #ece9d8; padding-bottom: 0cm; width: 213.05pt; border-top-color: #ece9d8; padding-top: 0cm; border-bottom: windowtext 1pt solid; background-color: transparent" valign="top" width="284">
            <p><span lang="EN-US"><font size="4">ServletContextAttributeEvent</font></span></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 213.05pt; border-top-color: #ece9d8; padding-top: 0cm; border-bottom: windowtext 1pt solid; background-color: transparent" valign="top" width="284">
            <p><span lang="EN-US"><font size="4">HttpSessionListener</font></span></p>
            </td>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; border-left-color: #ece9d8; padding-bottom: 0cm; width: 213.05pt; border-top-color: #ece9d8; padding-top: 0cm; border-bottom: windowtext 1pt solid; background-color: transparent" valign="top" width="284" rowspan="2">
            <p><span lang="EN-US"><font size="4">HttpSessionEvent</font></span></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 213.05pt; border-top-color: #ece9d8; padding-top: 0cm; border-bottom: windowtext 1pt solid; background-color: transparent" valign="top" width="284">
            <p><span lang="EN-US"><font size="4">HttpSessionActivationListener</font></span></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 213.05pt; border-top-color: #ece9d8; padding-top: 0cm; border-bottom: windowtext 1pt solid; background-color: transparent" valign="top" width="284">
            <p><span lang="EN-US"><font size="4">HttpSessionAttributeListener</font></span></p>
            </td>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; border-left-color: #ece9d8; padding-bottom: 0cm; width: 213.05pt; border-top-color: #ece9d8; padding-top: 0cm; border-bottom: windowtext 1pt solid; background-color: transparent" valign="top" width="284" rowspan="2">
            <p><span lang="EN-US"><font size="4">HttpSessionBindingEvent</font></span></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 213.05pt; border-top-color: #ece9d8; padding-top: 0cm; border-bottom: windowtext 1pt solid; background-color: transparent" valign="top" width="284">
            <p><span lang="EN-US"><font size="4">HttpSessionBindingListener</font></span></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 213.05pt; border-top-color: #ece9d8; padding-top: 0cm; border-bottom: windowtext 1pt solid; background-color: transparent" valign="top" width="284">
            <p><span lang="EN-US"><font size="4">ServletRequestListener</font></span></p>
            </td>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; border-left-color: #ece9d8; padding-bottom: 0cm; width: 213.05pt; border-top-color: #ece9d8; padding-top: 0cm; border-bottom: windowtext 1pt solid; background-color: transparent" valign="top" width="284">
            <p><span lang="EN-US"><font size="4">ServletRequestEvent</font></span></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 213.05pt; border-top-color: #ece9d8; padding-top: 0cm; border-bottom: windowtext 1pt solid; background-color: transparent" valign="top" width="284">
            <p><span lang="EN-US"><font size="4">ServletRequestAttributeListener</font></span></p>
            </td>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; padding-left: 5.4pt; border-left-color: #ece9d8; padding-bottom: 0cm; width: 213.05pt; border-top-color: #ece9d8; padding-top: 0cm; border-bottom: windowtext 1pt solid; background-color: transparent" valign="top" width="284">
            <p><span lang="EN-US"><font size="4">ServletRequestAttributeEvent</font></span></p>
            </td>
        </tr>
    </tbody>
</table>
<br />
<p><font size="4">分别介绍：<br />
一 ServletContext相关监听接口<br />
补充知识：<br />
通过ServletContext 的实例可以存取应用程序的全局对象以及初始化阶段的变量。<br />
在JSP文件中，application 是 ServletContext 的实例，由JSP容器默认创建。Servlet 中调用 getServletContext()方法得到 ServletContext 的实例。<br />
注意：<br />
全局对象即Application范围对象，初始化阶段的变量指在web.xml中，经由&lt;context-param&gt;元素所设定的变量，它的范围也是Application范围，例如：</font></p>
<p><font size="4">&lt;context-param&gt; <br />
&lt;param-name&gt;Name&lt;/param-name&gt; <br />
&lt;param-value&gt;browser&lt;/param-value&gt;<br />
&lt;/context-param&gt;<br />
当容器启动时，会建立一个Application范围的对象，若要在JSP网页中取得此变量时：<br />
String name = (String)application.getInitParameter("Name");<br />
或者使用EL时：<br />
${initPara.name}<br />
若是在Servlet中，取得Name的值方法：<br />
String name = (String)ServletContext.getInitParameter("Name");</font></p>
<p><br />
<font size="4">1.ServletContextListener：<br />
用于监听WEB 应用启动和销毁的事件，监听器类需要实现javax.servlet.ServletContextListener 接口。<br />
ServletContextListener 是 ServletContext 的监听者，如果 ServletContext 发生变化，如服务器启动时 ServletContext 被创建，服务器关闭时 ServletContext 将要被销毁。 </font></p>
<p><font size="4">ServletContextListener接口的方法：<br />
void contextInitialized(ServletContextEvent sce)<br />
通知正在接受的对象，应用程序已经被加载及初始化。<br />
void contextDestroyed(ServletContextEvent sce)<br />
通知正在接受的对象，应用程序已经被载出。</font></p>
<p><font size="4">ServletContextEvent中的方法：<br />
ServletContext getServletContext()<br />
取得ServletContext对象</font></p>
<p><br />
<font size="4">2.ServletContextAttributeListener：用于监听WEB应用属性改变的事件，包括：增加属性、删除属性、修改属性，监听器类需要实现javax.servlet.ServletContextAttributeListener接口。</font></p>
<p><font size="4">ServletContextAttributeListener接口方法：<br />
void attributeAdded(ServletContextAttributeEvent scab)<br />
若有对象加入Application的范围，通知正在收听的对象<br />
void attributeRemoved(ServletContextAttributeEvent scab)<br />
若有对象从Application的范围移除，通知正在收听的对象<br />
void attributeReplaced(ServletContextAttributeEvent scab)<br />
若在Application的范围中，有对象取代另一个对象时，通知正在收听的对象</font></p>
<p><br />
<font size="4">ServletContextAttributeEvent中的方法：<br />
java.lang.String getName()<br />
回传属性的名称<br />
java.lang.Object getValue()<br />
回传属性的值</font></p>
<p><font size="4">二、HttpSession相关监听接口<br />
1.HttpSessionBindingListener接口<br />
注意：HttpSessionBindingListener接口是唯一不需要再web.xml中设定的Listener</font></p>
<p><font size="4">当我们的类实现了HttpSessionBindingListener接口后，只要对象加入Session范围（即调用HttpSession对象的setAttribute方法的时候）或从Session范围中移出（即调用HttpSession对象的removeAttribute方法的时候或Session Time out的时候）时，容器分别会自动调用下列两个方法：<br />
void valueBound(HttpSessionBindingEvent event)<br />
void valueUnbound(HttpSessionBindingEvent event)</font></p>
<p><font size="4">思考：如何实现记录网站的客户登录日志， 统计在线人数？</font></p>
<p><font size="4">2.HttpSessionAttributeListener接口<br />
HttpSessionAttributeListener监听HttpSession中的属性的操作。<br />
当在Session增加一个属性时，激发attributeAdded(HttpSessionBindingEvent se) 方法；当在Session删除一个属性时，激发attributeRemoved(HttpSessionBindingEvent se)方法；当在Session属性被重新设置时，激发attributeReplaced(HttpSessionBindingEvent se) 方法。这和ServletContextAttributeListener比较类似。 </font></p>
<p><font size="4">3.HttpSessionListener接口<br />
HttpSessionListener监听HttpSession的操作。当创建一个Session时，激发session Created(HttpSessionEvent se)方法；当销毁一个Session时，激发sessionDestroyed (HttpSessionEvent se)方法。</font></p>
<p><font size="4">4.HttpSessionActivationListener接口<br />
主要用于同一个Session转移至不同的JVM的情形。</font></p>
<p><font size="4">四、ServletRequest监听接口<br />
1.ServletRequestListener接口<br />
和ServletContextListener接口类似的，这里由ServletContext改为ServletRequest<br />
2.ServletRequestAttributeListener接口<br />
和ServletContextListener接口类似的，这里由ServletContext改为ServletRequest</font>&nbsp;</p>
<br />
<img src ="http://www.blogjava.net/pdw2009/aggbug/209818.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/pdw2009/" target="_blank">有猫相伴的日子</a> 2008-06-22 10:54 <a href="http://www.blogjava.net/pdw2009/archive/2008/06/22/209818.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>