the Most Simple Method to Get Tracefile Name in 11g

Oracle数据库产生的跟踪文件命名规则是sid_ora_pid.trc,因此可以通过查询数据字典的方式拼出跟踪文件的名称。 Eygle提供过具体的脚本来演示如何获得跟踪文件名称。 他的另一篇文章中有blue_prince提供的简化版本 – 获得跟踪文件名称的gettrcname.sql。 而在最新的Oracle 11g中,这个SQL我们可以进一步简化,因为在v$process视图中oracle新增加了TRACEFILE字段。 SQL> SELECT p.TRACEFILE 2 FROM vsession s, vprocess p, v$mystat m 3 WHERE s.paddr = p.addr 4 AND s.SID = m.SID 5 AND m.statistic# = 0; TRACEFILE ——————————————————————————– d:\oracle\diag\rdbms\orcl11g\orcl11g\trace\orcl11g_ora_5760.trc

User Default Password Check in Oracle 11g

在数据库安全性检查中有一项首先要完成的工作,就是检查数据库中的用户密码是否还仍然保留着默认值,比如sys的密码是否还是change_on_install,system的密码是否还是manager,scott的密码是否还是tiger。 在Oracle 11g之前,我们需要手工来完成这样的工作,大概步骤是: 1. 创建一张自定义的表,保存下常用的系统用户以及默认密码的HASH值。 2. 将系统中的用户密码HASH值与该表中的HASH值比较,如果相同,则表明还在使用默认值。 注意:在数据字典中存储的密码是被HASH算法加密过的,加密后的值不但跟密码本身有关还跟用户名有关,也就是,如果是不相同的用户名那么即使是完全相同的密码,加密后的HASH值也是不一样的。这样保证了每一个用户的每一个密码都有自己独一无二的HASH值。 在Oracle 11g之前,加密后的密码可以从DBA_USERS数据字典的PASSWORD字段中获得,因此可以通过这个字段中存储的值来做是否是默认值的检查。但是在11g中,PASSWORD字段却不再显示密码的内容了。 先看一下文档中对这个字段的描述: Indicates whether the user is authenticated by OID (GLOBAL) or externally authenticated (EXTERNAL); NULL otherwise SQL> select username,decode(password,null,’NULL’,password) password from dba_users; USERNAME PASSWORD —————————— —————————— MGMT_VIEW NULL SYS NULL SYSTEM NULL DBSNMP NULL SNPM NULL SYSMAN NULL SNPW NULL SCOTT NULL KAMUS NULL OUTLN…

Abnormal result by “show sga” command in 11g

一个有趣的现象。在11.1.0.6版本的数据库中show sga的显示结果并不正确。 KAMUS@orcl11g> select * from vversion; BANNER ——————————————————————————– Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 – Production PL/SQL Release 11.1.0.6.0 – Production CORE 11.1.0.6.0 Production TNS for 32-bit Windows: Version 11.1.0.6.0 – Production NLSRTL Version 11.1.0.6.0 – Production Elapsed: 00:00:00.06 KAMUS@orcl11g> show sga Total System Global Area 380817408 bytes Fixed Size 1333340 bytes Variable…