How to Use DBMS_ADVANCED_REWRITE in Oracle 10g

在Oracle10g之后,提供了DBMS_ADVANCED_REWRITE包,具有强大的查询重写功能,可以让我们在数据库层面实现很多微妙的调整。假设我们有一个应用,但是现在无法直接修改应用程序的编码,但是又想能够让应用程序的某些SQL产生我们想要的变化,那么就可以使用DBMS_ADVANCED_REWRITE包。 [sourcecode language=”sql” light=”true”]drop table t; create table t as select object_id,object_name from dba_objects; drop table t1; create table t1 as select object_id,object_name from dba_objects where 1=0;[/sourcecode] [sourcecode language=”sql” light=”true”]SQL> select count(*) from t; COUNT(*) ———- 16636 SQL> select count(*) from t1; COUNT(*) ———- 0[/sourcecode] 现在我们有表T和T1,表结构相同,但是表T中有1.6万记录,而表T1中没有记录,如果说我们的应用中有一个SQL多次地查询表T的总记录数,占用了大量的CPU和逻辑读,而这样的count记录数又是完全没有用处的,但是我们无法修改应用程序去掉这个SQL,那么我们就可以通过DBMS_ADVANCED_REWRITE包来讲查询表T的SQL转变为查询表T1,这样就大大减少了这条SQL的逻辑读。 首先DBMS_ADVANCED_REWRITE包的执行权限必须显式赋给需要的用户。 [sourcecode language=”sql” light=”true”]CONN sys/password AS SYSDBA GRANT EXECUTE…

ORA-01017 When Connect SYSDBA by SQL Developer

在尝试使用SQL Developer用SYSDBA连接数据库时总是报ORA-01017错误。 ORA-01017: invalid username/password; logon denied 实际上用户名密码是正确的,并且在数据库服务器上使用SQL*Plus通过监听连接也是正常的。 [sourcecode language=”sql” light=”true”]C:\Users\Kamus>sqlplus "sys/oracle@orcl11g as sysdba" SQL*Plus: Release 11.1.0.7.0 – Production on Fri Mar 12 12:17:01 2010 Copyright (c) 1982, 2008, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 – Production With the Partitioning, OLAP and Real Application Testing options SQL> [/sourcecode]…

ACOUG!

有感于国外Oracle用户组的发达,我跟eygle从今年开始尝试组建中国的Oracle用户组,All China Oracle User Group。我们的站点是acoug.org。 我们希望能够为全中国的Oracle技术爱好者提供一个交流与活动的平台,我们希望能够激发更多人对于Oracle技术以及相关知识的兴趣,我们希望沉浸在这些技术中的人员获得更多的乐趣。这是我跟eygle一直以来的一个理想,但愿我们能为此付出并且有所回报。 我们认识到中国目前掌握Oracle技术的人员广度和深度都跟美国、欧洲甚或是印度存在着较大差距,这需要我们更有热情的去付出,但愿在不久的将来ACOUG在全球Oracle用户组中占据一席之地。 ACOUG计划定期举行线下活动,而线下活动也将是ACOUG未来工作的重点,邀请著名的业内人士(不仅限于国内)来进行主题演讲,并围绕相关主题进行广泛的讨论从而使更多人获益。 eygle的文章有关于ACOUG更多的阐述,请猛击这里。 预计在这个月的3月20日(周六)开展ACOUG第一次线下活动,详细的地点、场地以及演讲主题还未确定,但是请有兴趣的朋友时刻关注ACOUG网站,欢迎参加。