Donnerstag, Dezember 20, 2007

logon trigger

keine neue Erkenntnis, sondern ein Syntaxbeispiel:

create or replace trigger scott_logon_trigger
after logon on database
begin
if user = 'SCOTT' then
execute immediate 'alter session set WORKAREA_SIZE_POLICY=Manual';
execute immediate 'alter session set sort_area_size = 100000000';
execute immediate 'alter session set hash_area_size = 100000000';
end if;
end;
/

In 10g erfolgt das PGA-Management per default automatisch. Eine Umstellung der WORKAREA_SIZE_POLICY und explizite Setzung der %_area_size-Parameter kann für kostspielige Operationen interessant sein, da die automatische Zuweisung des PGA-Memories bestimmte (prozentual bestimmte) Obergrenzen nicht überschreitet.

Ein logon trigger ist vor allem dann interessant, wenn ein Parameter für Sessions einer Applikation gesetzt werden soll, die diese Setzung selbst nicht vornehmen können.

Freitag, Dezember 14, 2007

Outer Join Syntax

Die Leute, die den Oracle Optimizer entwickeln, haben unter http://optimizermagic.blogspot.com/2007/12/outerjoins-in-oracle.html die Unterschiede zwischen der ANSI-Syntax für Outer Join Operationen und Oracles (+)-Operator erläutert. Ausgesprochen erhellend.

sys_connect_by_path

da ich die Syntax dieser hübschen Möglichkeit, die übergeordneten Elemente in einer Hierarchie auf einfache Weise darzustellen, regelmäßig vergesse, hier ein Beispiel für die Verwendung der sys_connect_by_path-Funktion:

SQL> r
1  select empno,
2         ename,
3         job,
4         sys_connect_by_path(job, '/') job_hierarchy
5    from emp
6  connect by prior empno = mgr
7   start with mgr is null
8*

EMPNO ENAME      JOB       JOB_HIERARCHY
---------- ---------- --------- ---------------------------------
7839 KING       PRESIDENT /PRESIDENT
7566 JONES      MANAGER   /PRESIDENT/MANAGER
7788 SCOTT      ANALYST   /PRESIDENT/MANAGER/ANALYST
7876 ADAMS      CLERK     /PRESIDENT/MANAGER/ANALYST/CLERK
7902 FORD       ANALYST   /PRESIDENT/MANAGER/ANALYST
7369 SMITH      CLERK     /PRESIDENT/MANAGER/ANALYST/CLERK
7698 BLAKE      MANAGER   /PRESIDENT/MANAGER
7499 ALLEN      SALESMAN  /PRESIDENT/MANAGER/SALESMAN
7521 WARD       SALESMAN  /PRESIDENT/MANAGER/SALESMAN
7654 MARTIN     SALESMAN  /PRESIDENT/MANAGER/SALESMAN
7844 TURNER     SALESMAN  /PRESIDENT/MANAGER/SALESMAN
7900 JAMES      CLERK     /PRESIDENT/MANAGER/CLERK
7782 CLARK      MANAGER   /PRESIDENT/MANAGER
7934 MILLER     CLERK     /PRESIDENT/MANAGER/CLERK

14 Zeilen ausgewählt.

Funktioniert seit 9i.