Tour de Magie pour les DBAs /*+Bizarre*/

Voilà qui devrait encore laisser quelques DBA perplexes… Ci-dessous, la copie d’un script réalisé sur Oracle 10g (XE et ça marche biensûr sur EE). Regardez bien les mots en rouge et expliquez pourquoi, ce qui se passe… se passe !

sqlplus / as sysdba
SQL> set autotrace on explain
SQL> select ename from scott.emp;

ENAME
————–
ACCOUNTING
RESEARCH
SALES
OPERATIONS

Plan d’exécution
———————————————————-
Plan hash value: 3383998547

————————————————————————–
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
————————————————————————–
| 0 | SELECT STATEMENT | | 4 | 36 | 2 (0)| 00:00:01 |
| 1 | TABLE ACCESS FULL| DEPT | 4 | 36 | 2 (0)| 00:00:01 |
————————————————————————–

La réponse…
Le truc est un peu éculé. Pour le réaliser, il vous faut une base de données 10g avec un schéma d’exemple « SCOTT/TIGER ». Le setup prend 2 minutes, il suffit de taper préalablement à votre test :

sqlplus / as sysdba
SQL> alter system set query_rewrite_enabled=true;
SQL> alter system set query_rewrite_integrity=trusted;
SQL> exec dbms_advanced_rewrite.declare_rewrite_equivalence( –
> ‘DEMO’, ‘select ename from scott.emp’, –
> ‘select dname from scott.dept’, false, ‘text_match’)
SQL> col owner format a5
SQL> col destination_stmt format a27
SQL> col source_stmt format a28
SQL> col destination_stmt format a28
SQL> select * from dba_rewrite_equivalences;
OWNER NAME SOURCE_STMT DESTINATION_STMT REWRITE_MO
—– —– —————————- —————————- ———-
SYS DEMO select ename from scott.emp select dname from scott.dept TEXT_MATCH
SQL>exit;

Attention, l’option TEXT_MATCH positionnée dans le script nécessite que l’ordre passé « select ename from scott.emp » soit exactement le même… à la lettre, les minuscules et aux espaces prêts !

DBMS_ADVANCED_REWRITE est une fonction qui apparaît en 10g. Elle permet de réécrire un ordre SQL dans la base de données sans toucher à l’application… Attention, elle ne fonctionne pas avec des variables « bindées », ni avec des pseudo-colonnes comme ROWNUM.

Dans la vrai vie, cette fonction sert surtout faire perdre l’esprit aux DBA... J’espère que vous en surprendrez quelques uns !

GarK!

1 réflexion sur “Tour de Magie pour les DBAs /*+Bizarre*/”

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *