Chargement rapide des données oracle 12c

12 mar

Chér(e) ami(e)s  en oracle

 

Vous souhaitez charger rapidement des données dans une table. il  faut pour cela déactiver la journalisation sur les tables concernées .

cela minimise la génération Redo pour les opérations de chemin direct
Utilisez ensuite une fonctionnalité de chargement de chemin direct, par exemple:

INSERT /*+ APPEND */ on queries that use a subquery for determining which records are
inserted
• INSERT /*+ APPEND_VALUES */ on queries that use a VALUES clause
• CREATE TABLE...AS SELECT

Par défaut les tables sont en mode journalisation  LOGGIN
EXemple :
create table emp(
emp_id number
,first_name varchar2(30)
,last_name varchar2(30));


SQL> select table_name, logging
  2  from user_tables
  3  where table_name = 'EMP';


SQL> /

TABLE_NAME         LOG
-----------------------
EMP                YES

SQL> alter table emp nologging;

TABLE_NAME         LOG
-----------------------
EMP                NO


Avantage:
Les inserts de chemin direct (sans passé par le tempo) ont deux avantages de performances par rapport aux instructions d'insertion standard:
• Si NOLOGGING est spécifié, une quantité minimale de redo est générée.
• Le cache tampon est contourné et les données sont chargées directement dans les fichiers de données.
 Ceci peut améliorer de manière significative les performances de chargement.
La fonction NOLOGGING minimise la génération des recovers pour les opérations de chemin direct uniquement. 
Pour les inserts de chemin direct, l'option NOLOGGING peut augmenter considérablement la vitesse de chargement.
Inconvénient :
 Si vos données sont critiques, n'utilisez pas NOLOGGING
Si vos données peuvent être facilement recréées, alors NOLOGGING est souhaitable lorsque vous 
essayez d'améliorer les performances de charges de données volumineuses.



OraclementVotre




Pas encore de commentaire

Laisser une réponse

Unblog.fr | Créer un blog | Annuaire | Signaler un abus