??xml version="1.0" encoding="utf-8" standalone="yes"?> # su - oracle $ cp font.properties font.properties.bak $ cd $ORACLE_HOME/jre/1.4.2/lib/ $ cd $ORACLE_HOME/oc4j/j2ee/oc4j_applications/\ $ emctl stop dbconsole
]]>
该方法适合U旗Asianux 2.0?/span>3.0{操作系l环境?/span>
一、故障问?/span>
打开http://ip:1158/emӞ看到如下的显C,其中中文字符部分是ؕ码:(x)
二、解决问?/span>
1、改?/span>$ORACLE_HOME/jdk目录下的jre的默认字?/span>
$ cd $ORACLE_HOME/jdk/jre/lib/
$ ls font*zh_CN*
其中Q?/span>font.properties是默认用的字体。还可以看到font.properties.zh_CN.Redhat和其它的字体?/span>
$ cp font.properties.zh_CN.Redhat font.properties
2、改?/span>$ORACLE_HOME/jre下的默认字体
使用上面同样的方法来操作?/span>
$ ls font*zh_CN*
$ cp font.properties font.properties.bak
$ cp font.properties.zh_CN.Redhat font.properties
3、删?/span>Cache下的gif文g
em里面?x)用到这些图片?x)
applications/em/em/cabo/images/cache/zhs/
$ ls *.gif
$ rm *.gif
?/span> 注意不要搞错目录Q修改的是中文环境的?/span>
4、重新启?/span>EM服务
$ emctl start dbconsole
q入EM看看中文问题是否已经解决?/span>
新打开的界面如下:(x)
]]>
1、在Linux下安装新的JDKQJREQ,我装的是1.6Q?/font>
2、修改DBCA所对应的JRE路径Q默认下/u01/app/oralce/product/10.2.0/db_1/bin/dbcaQ?/font>
3、完成(em修改同理Q?/font>
|
SCNQSystem Chang NumberQ作为oracle中的一个重要机Ӟ在数据恢复、Data Guard、Streams复制、RAC节点间的同步{各个功能中L(fng)重要作用。理解SCN的运作机Ӟ可以帮助你更加深入地?jin)解上述功能?/span>
SQL> select dbms_flashback.get_system_change_number, SCN_TO_TIMESTAMP(dbms_flashback.get_system_change_number) from dual;
GET_SYSTEM_CHANGE_NUMBER
------------------------
SCN_TO_TIMESTAMP(DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER)
---------------------------------------------------------------------------
2877076756
17-AUG-07 02.15.26.000000000 PM
SQL> select timestamp_to_scn(SYSTIMESTAMP) as scn from dual;
SCN
----------
2877078439
数据库连接池概述Q?/p>
数据库连接是一U关键的有限的昂늚资源Q这一点在多用L(fng)|页应用E序中体现得ؓ(f)H出。对数据库连接的理能显著媄(jing)响到整个应用E序的~性和健壮性,影响到程序的性能指标。数据库q接池正是针对这个问题提出来的?/p>
数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复用一个现有的数据库连接,而再不是重新建立一个;释放I闲旉过最大空闲时间的数据库连接来避免因ؓ(f)没有释放数据库连接而引L(fng)数据库连接遗漏。这Ҏ(gu)术能明显提高Ҏ(gu)据库操作的性能?/p>
?据库q接池在初始化时创Z定数量的数据库连接放到连接池中,q些数据库连接的数量是由最数据库q接数来讑֮的。无些数据库q接是否被用,q接 池都一直保证至拥有这么多的连接数量。连接池的最大数据库q接数量限定?jin)这个连接池能占有的最大连接数Q当应用E序向连接池h的连接数过最大连?数量Ӟq些h被加入到等待队列中。数据库q接池的最连接数和最大连接数的设|要考虑C列几个因素:(x)
1) 最连接数是连接池一直保持的数据库连接,所以如果应用程序对数据库连接的使用量不大,会(x)有大量的数据库连接资源被费Q?/p>
2) 最大连接数是连接池能申L(fng)最大连接数Q如果数据库q接h过此数Q后面的数据库连接请求将被加入到{待队列中,q会(x)影响之后的数据库操作?/p>
3) 如果最连接数与最大连接数相差太大Q那么最先的q接h会(x)获利Q之后超q最连接数量的q接h{h(hun)于徏立一个新的数据库q接。不q,q些大于最连接数的数据库q接在用完不会(x)马上被释放,它将被放到连接池中等待重复用或是空闲超时后被释放?/p>
锁( locking Q?/p>
业务逻辑的实现过E中Q往往需要保证数据访问的排他性。如在金融系l的日终l算
处理中,我们希望针对某个 cut-off 旉点的数据q行处理Q而不希望在结进行过E中
Q可能是几秒U,也可能是几个时Q,数据再发生变化。此Ӟ我们需要通过一些机
制来保证q些数据在某个操作过E中不会(x)被外界修改,q样的机Ӟ在这里,也就是所?/p>
?“ ?” Q即l我们选定的目标数据上锁,使其无法被其他程序修攏V?/p>
Hibernate 支持两种锁机Ӟ(x)即通常所说的 “ (zhn)观锁( Pessimistic Locking Q?”
?“ 乐观锁( Optimistic Locking Q?” ?/p>
(zhn)观锁( Pessimistic Locking Q?/p>
(zhn)观锁,正如其名Q它指的是对数据被外界(包括本系l当前的其他事务Q以?qing)来?/p>
外部pȝ的事务处理)(j)修改持保守态度Q因此,在整个数据处理过E中Q将数据处于锁定
状态。?zhn)观锁的实玎ͼ往往依靠数据库提供的锁机Ӟ也只有数据库层提供的锁机制才?/p>
真正保证数据讉K的排他性,否则Q即使在本系l中实现?jin)加锁机Ӟ也无法保证外部?/p>
l不?x)修?gu)据)(j)?/p>
一个典型的倚赖数据库的(zhn)观锁调用:(x)
select * from account where name=”Erica” for update
q条 sql 语句锁定?account 表中所有符合检索条Ӟ name=”Erica” Q的记录?/p>
本次事务提交之前Q事务提交时?x)释放事务过E中的锁Q,外界无法修改q些记录?/p>
Hibernate 的?zhn)观锁Q也是基于数据库的锁机制实现?/p>
注意Q只有在查询开始之前(也就?Hiberate 生成 SQL 之前Q设定加锁,才会(x)
真正通过数据库的锁机制进行加锁处理,否则Q数据已l通过不包?for update
子句?Select SQL 加蝲q来Q所谓数据库加锁也就无从谈v?/p>
乐观锁( Optimistic Locking Q?/p>
相对(zhn)观锁而言Q乐观锁机制采取?jin)更加宽杄加锁机制。?zhn)观锁大多数情况下?/p>
靠数据库的锁机制实现Q以保证操作最大程度的独占性。但随之而来的就是数据库
性能的大量开销Q特别是寚w事务而言Q这L(fng)开销往往无法承受?/p>
如一个金融系l,当某个操作员d用户的数据,q在d的用h据的基础上进
行修Ҏ(gu)Q如更改用户帐户余额Q,如果采用(zhn)观锁机Ӟ也就意味着整个操作q?/p>
E中Q从操作员读出数据、开始修改直x交修改结果的全过E,甚至q包括操?/p>
员中途去煮咖啡的旉Q,数据库记录始l处于加锁状态,可以惌Q如果面对几
百上千个q发Q这L(fng)情况导致怎样的后果?/p>
乐观锁机制在一定程度上解决?jin)这个问题。乐观锁Q大多是Z数据版本
Q?Version Q记录机制实现。何谓数据版本?即ؓ(f)数据增加一个版本标识,在基?/p>
数据库表的版本解x案中Q一般是通过为数据库表增加一?“version” 字段?/p>
实现?/p>
d出数据时Q将此版本号一同读出,之后更新ӞҎ(gu)版本号加一。此Ӟ提
交数据的版本数据与数据库表对应记录的当前版本信息q行比对Q如果提交的数据
版本号大于数据库表当前版本号Q则予以更新Q否则认为是q期数据?/p>
对于上面修改用户帐户信息的例子而言Q假设数据库中帐户信息表中有一?/p>
version 字段Q当前gؓ(f) 1 Q而当前帐户余额字D( balance Qؓ(f) $100 ?/p>
1 操作?A 此时其dQ?version=1 Q,q从其帐户余额中扣除 $50
Q?$100-$50 Q?/p>
2 在操作员 A 操作的过E中Q操作员 B 也读入此用户信息Q?version=1 Q,q?/p>
从其帐户余额中扣?$20 Q?$100-$20 Q?/p>
3 操作?A 完成?jin)修改工作,数据版本号加一Q?version=2 Q,q同帐户?/p>
除后余额Q?balance=$50 Q,提交x据库更新Q此时由于提交数据版本大
于数据库记录当前版本Q数据被更新Q数据库记录 version 更新?2 ?/p>
4 操作?B 完成?jin)操作,也将版本号加一Q?version=2 Q试囑数据库提交数
据( balance=$80 Q,但此时比Ҏ(gu)据库记录版本时发玎ͼ操作?B 提交?/p>
数据版本号ؓ(f) 2 Q数据库记录当前版本也ؓ(f) 2 Q不满 “ 提交版本必须大于?/p>
录当前版本才能执行更?“ 的乐观锁{略Q因此,操作?B 的提交被驛_?/p>
q样Q就避免?jin)操作?B 用基?version=1 的旧数据修改的结果覆盖操?/p>
?A 的操作结果的可能?/p>
从上面的例子可以看出Q乐观锁机制避免?jin)长事务中的数据库加锁开销Q操作员 A
和操作员 B 操作q程中,都没有对数据库数据加锁)(j)Q大大提升了(jin)大ƈ发量下的p?/p>
l整体性能表现?/p>
需要注意的是,乐观锁机制往往Zpȝ中的数据存储逻辑Q因此也具备一定的局
限性,如在上例中,׃乐观锁机制是在我们的pȝ中实玎ͼ来自外部pȝ的用?/p>
余额更新操作不受我们pȝ的控Ӟ因此可能?x)造成脏数据被更新到数据库中。在
pȝ设计阶段Q我们应该充分考虑到这些情况出现的可能性,q进行相应调_(d)?/p>
乐观锁{略在数据库存储q程中实玎ͼ对外只开攑֟于此存储q程的数据更新?/p>
径,而不是将数据库表直接对外公开Q?/p>