新年快乐

这一年过的很闲散,最重要的是我有找到佟老师小朋友,更重要的是在新年来临之际我们终成眷属。 佟老师小朋友自己选的自己折的喜糖包就在上面了,在这个冬日的午后看着她盘腿坐在沙发上,一颗一颗往喜糖包里放巧克力,我知道对于我这就是幸福。 2009年的最后一天了,祝所有的朋友在新的一年,万事顺利。

Continue Reading新年快乐

How to trace another session using PL/SQL Package

1.DBMS_SYSTEM包 [sourcecode language="sql" light="true"]EXECUTE dbms_system.set_sql_trace_in_session (sid,serial,TRUE);[/sourcecode] 这样的trace相当于event 10046 level 1。 停止:EXECUTE dbms_system.set_sql_trace_in_session (sid,serial,FALSE); [sourcecode language="sql" light="true"]EXECUTE dbms_system.set_ev (sid,serial,10046,12,'');[/sourcecode] 这样直接设置某个会话的10046 event level 12,相当于level 4+level 8,也就是binds和waits都记录下来。 停止:EXECUTE dbms_system.set_ev (sid,serial,10046,0,''); 2. DBMS_SUPPORT包 [sourcecode…

Continue ReadingHow to trace another session using PL/SQL Package

Some Oracle Database Questions

本文起源自dbsnake的《昨天我被问到的问题》。 如果这几个问题是问到我,那么我怎么回答呢? 1. dedicated模式、非RAC、无连接池、要求支持2000个连接,在这样的条件下如何设置PGA? 根据应用程序特性的不同,SQL语句优化的程度,PGA的设置会相差很远。即使是知道专属连接方式,有2000个连接,恐怕我也无法再没有测试前就知道该设置多大的PGA。有一点默认的考虑,一个应用程序如果要支持2000个连接,那么通常不会是数据仓库系统,那么是OLTP系统的话,单个会话使用的PGA理应不需要很大。按照一般的经验值,给每个连接3M-5M,那么PGA的初始设置应该在6G-10G,然后跑测试,根据statspack或者awr report,再去判断是需要增加还是减少PGA。 2. 如何解决ORA-04031问题? ORA-04031:unable to allocate string bytes of shared memory ("string","string","string","string") 通常表示Shared Pool不足,一种情况是确实设置过小,另外一种情况是共享池碎片太多,没有足够的连续空间来放置一个稍大的空间请求,前一种情况就是增大共享池,大概到2G如果还报4031错误,那么应该是后一种情况了,而后一种情况则很可能是由于绑定变量不足导致过多的SQL Cursor存在,优化应用程序吧。再有那就可能是Oracle Database的bug了,那就五花八门不一而足了。 3. Current online redo log被删掉或者损坏后如何恢复? 当前联机日志损坏或者被删除,那么通常意味着必然会有数据损失,如果有备份,那么做full database restore,然后做不完全恢复,open resetlogs启动数据库。如果没有备份,那么利用_allow_resetlogs_corruption的隐含参数强制open数据库,做全库export,然后重建新库,做import。…

Continue ReadingSome Oracle Database Questions