Objets PL/SQL
Les objets sont conservés dans l'espace mémoire partagé (shared pool) en utilisant le package « dbms_shared_pool ». Ce dernier doit être installé à partir du script « dbmspool.sql ».
Voici comment mettre en mémoire un objet :
execute dbms_shared_pool.keep('propriétaire.nom_objet');
Pour lister tous les objets qui sont conservés dans l'espace mémoire partagé :
select owner,name,type,sharable_mem from v$db_object_cache where kept='YES';
Pour identifier les objets qui pourrait être conservés en mémoire :
select substr(owner,1,10)'.'substr(name,1,35) "ObjectName",
type, sharable_mem,loads, executions, kept
from v$db_object_cache
where type in ('TRIGGER','PROCEDURE','PACKAGE BODY','PACKAGE')
and executions > 0
order by executions desc,loads desc,sharable_mem desc;
Certains objets appartenant à SYS pourraient être des candidats très intéressants, dépendamment de leur utilisation.
Tables et Indexes
Initialiser le cache « KEEP »
Alter system set db_keep_cache_size = 208M scope=spfile;
-- Peut être très intéressant pour les grosses tables qui sont chargées à 'occasion. Les données misent en cache n'affecteront pas les caches habituelles.
-- alter system set db_recycle_cache_size = 50M;
shutdown immediate
startup
Générer la commande mettant les tables candidates en cache « KEEP »
select 'Alter table 'owner'.'table_name
' storage (buffer_pool keep);', num_rows
from dba_tables
where owner in ('SCHEMA_1','SCHEMA_2')
and table_name in ('TABLE_1','TABLE_2')
order by num_rows
/
Générer la commande mettant les indexes candidates en cache « KEEP »
select 'Alter index 'owner'.'index_name
' storage (buffer_pool keep);', num_rows
from dba_indexes
where owner in ('SCHEMA_1','SCHEMA_2') and table_name in
('TABLE_1','TABLE_2')
order by num_rows
/
Charger les données dans le pool « KEEP »
select 'Select /*+ FULL(TABL) */ * from '
owner'.'table_name' TABL;'
from dba_tables
where owner in ('SCHEMA_1','SCHEMA_2')
and table_name in ('TABLE_1','TABLE_2')
order by num_rows
/
Aucun commentaire:
Publier un commentaire