VLDB Management

Rédacteur: Vincent Fenoll DBA Oracle à Montreal & Oracle Doc.

BIGFiles : Présentation

Un Tablespace Bigfile (BFT) contient un fichier unique ; taille max entre 8 et 128To.
Toutes les opérations que l’on pouvait effectuer sur les DF peuvent maintenant être effectuées sur les TS (ALTER tablespace ____  resize ___) ; c’est ce qu’on appelle la transparence avec les fichiers de données.

Les BFT simplifient donc la gestion de l’espace pour les grosses bases et permet une certaine.

Les BFT sont pris en charge pour tous les TS gérés localement et avec bitmaps.

Il faut éviter de créer des BFT sur un système ne prenant pas en charge le stripping.

La taille des extents est également définie avec AUTOALLOCATE ou avec UNIFORM.

La définition de leur taille est importante car de trop nombreux extents peuvent ralentir les opérations de type DDL

Pour créer un BFT dans EM cocher la case «Use Bigfile ».

Le type de TS par défaut, BIGFILE ou SMALLFILE est stocké de manière persistante dans le dict. Ces mots clé sont utilisés dans la clause datafile du CREATE TS.

CREATE DATABASE test

SET DEFAULT BIGFILE TABLESPACE

Datafile ‘________’ size 1G

SMALLFILE DEFAULT TEMPORARY TS temp

SMALLFILE UNDO TS undo datafile ‘__’;

ALTER DB SET DEFAULT BIGFILE TABLESPACE;

ALTER TABLESPACE users AUTOEXTEND ON;

Pour la migration d’un TS vers l’un ou l’autre, il faut utiliser soit Datapump ou « ALTER TABLE MOVE » ou « CREATE TABLE AS SELECT ».

Bigfiles; dictionnaire de données

Ajout de la colonne BIGFILE aux vues: DBA_TABLESPACES et V$TABLESPACE.

Ajout d’une ligne dans la vue database_properties ;

where property_name=’DEFAULT_TBS_TYPE’

Bigfiles; dbverify

Avec les BFT il est impossible de lancer en parallèle des instances de dbverify sauf en mentionnant explicitement les adresses de blocs de début et de fin.

Bigfiles; dbms_utility

Les fonctions DATA_BLOCK_ADDRESS_FILE et DATA_BLOCK_ADDRESS_BLOCK ne doivent pas être utilisées avec les BFT.

 

Ces fonctions renvoient le numéro de fichier et de block à partir d’une structure d’adresse du bloc de données.

Le numéro de fichier est toujours 1024 pour les BFT et l’adresse du bloc représente le numéro du bloc.

Bigfiles ; ROWID

Pour les BFT il n’est pas nécessaire d’inclure le numéro de fichier (FFF) dans les ROWID

SMALLFILE :             000000            FFF BBBBBB              RRR

BIGFILE :                   000000 LLL LLLLLLL             RRR

Avec,

000000 numéro d’objet

FFF numéro de fichier relatif

BBBBBBB numéro de bloc de données

RRR numéro de ligne

LLL numéro de bloc encodé

Pour les BFT, les numéros de blocs sont relatifs par rapport au tablespace et sont uniques dans un tablespace.

Il faut toujours utiliser DBMS_ROWID pour obtenir les composantes des ROW ID étendus

Groupes de TS temporaires

Regroupe plusieurs TS temporaires. Il est créé implicitement lorsque le premier TS lui est affecté et est supprimé lors de la suppression du dernier TS TEMP.

Il a le même espace de nom que les TS ; par conséquent il ne peut pas porter un nom identique à un TS.

Avantages :

–         Permet d’utiliser plusieurs TS TEMP dans plusieurs sessions

–         Permet aux processus esclaves d’un opération en parallèle d’utiliser plusieurs TS TEMP

–         Permet d’indiquer plusieurs TS TEMP par défaut au niveau base de données

Dans EM : « Temporary TS Groups ».

CREATE TEMPORARY TABLESPACE temp1 ________________

TABLESPACE GROUP group1 ;

CREATE TEMPORARY TABLESPACE temp1 ________________

TABLESPACE GROUP ‘’;

à affecté à aucun groupe, équivaut à la syntaxe historique.
ALTER TABLESPACE temp1 GROUP group2 ;

ALTER TABLESPACE temp1 GROUP ‘’;  (dissociation)

ALTER DATABASE DEFAULT TEMPORARY TABLESPACE group2;

CREATE USER __________ TEMPORARY TABLESPACE group2;

Un TS temp ou un groupe de TS temp ne peut être supprimé que s’il ne fait plus partie de la liste des TS ou group par défaut.

Nouvelle vue : DBA_TABLESPACE_GROUPS

Partitions

EM prend en charge la création complète des tables partitionnées ainsi que leur maintenance.

Améliorations IOT partitionnées

Nouvelles options prises en charge :

–         Par liste de valeurs (avant juste par intervalle)

–         Maintenance des index globaux pour les IOT partitionnées ; quelque soit les opérations de maintenance effectuées sur les partitions les index restent USABLE

–         Index bitmap locaux partitionnés

–         Les colonnes LOB sont prises en charge dans tous les types de tables IOT partitionnées.

Améliorations index partitionnés locaux

Dans les versions antérieures les opérations de maintenance effectuées sur les partitions rendaient les index UNUSABLE (add, split, merge, move), en outre, les partitions d’index locales associées étaient placées dans le TS par défaut ou dans le même TS.

Avec 10g, nouvelle clause UPDATE INDEXES pour indiquer les attributs de stockage et pour les reconstruire automatiquement.

ALTER TABLE t1 MOVE PARTITION p3 TABLESPACE usr

UPDATE INDEXES (___________ TABLESPACE exemple)

Cette fonctionnalité augmente la disponibilité des données

Ignorer les index UNUSABLE

SKIP_UNUSABLE_INDEXES est maintenant dynamique, valeur par défaut est TRUE.

Par contre il faut surveiller DBA_IND_PARTITIONS et les nouvelles entrées de l’Alert.log.

Ce paramètre ne désactive pas les erreurs remontées pour les index uniques (sinon pb d’intégrité référentielle).

Index globaux partitionnés par hashage

C’est une nouveauté (avant juste par plage).

L’optimiseur procède à la sélection des partitions avec les prédicats « IN (__,__,__ » ou « d’égalité ».

Cette nouvelle méthode de partitionnement améliore les perf des index au cours d’insertion en parallèle de numéros de séquence qui se suivent ; permet de réduire la contention et le déséquilibre du b-tree à droite (dans ce cas de figure ce sont les mêmes feuilles d’index qui sont mises à jour en même temps) .

Les avantages sont expliqués en détail P13-37 (complexe).

Avec le hashage, la contention est répartie sur le nombre de partitions définies car les numéros de séquences sont répartis sur toutes les partitions

Les interrogations les performances sont égales avec les index non partitionnés sauf si on utilise le hint /*+ PARALLEL_INDEX(indx1) */

CREATE INDEX _____on t1(order_id)   GLOBAL

PARTITION BY HASH (order_id)  (

partition p1 tablespace t1

partition p2 tablespace t2);

ou

CREATE INDEX _____on t1(order_id)   GLOBAL

PARTITION BY HASH (order_id)  (

PARTITIONS 4

STORE IN (t1, t2);

Ajouter une partition :

ALTER INDEX indx1 ADD PARTITION p4 TABLESPACE t4 PARALLEL ;

Réduire le nombre de partitions :

ALTER INDEX indx1 COALESCE PARTITION PARALLEL ;

Opérations non prises en charge :

ALTER TABLE SPLIT INDEX PARTITION

ALTER TABLE MERGE INDEX PARTITIONS

ALTER INDEX REBUILD

ALTER INDEX MODIFY PARTITION

Index bitmaps: Améliorations

Ils offrent de meilleures performances et sont moins sujets à fragmentation lorsque de nombreuses opérations LMD impliquant une seule ligne sont effectuées.

Mais il faut respecter COMPATIBLE >=10.0.0.0.

Il est fortement conseillé de reconstruire les index bitmaps après une migration en 10g.

Journalisation des erreurs LMD

(avant) L’abandon et le rollback d’opérations LMD en masse dont l’exécution est longue représente une perte de temps.

Leur journalisation permet de poursuivre le traitement de ces opérations : les erreurs sont consignées dans une table de journalisation des erreurs (comme pour SQL*Loader).

Créer la table de journalisation des erreurs :

exec DBMS_ERRLOG.CREATE_ERROR_LOG(‘table_a_charger’, ‘errlog’)

INSERT INTO___ SELECT ___

LOG ERRORS INTO errlog (‘nom_opération’)  REJECT LIMIT 10;

Remarque: dans les opérations en parallèle, la limite de rejet est appliqué par processus esclave.

La table de journalisation des erreurs est constituée d’un nombre fixe de colonnes d’information, suivies d’un nombre variable de colonnes contenant les valeurs de données issues de la ligne en erreur.

La journalisation s’applique aux cas suivants:

–         valeurs trop grandes

–         contraintes (non différées)

–         erreurs générées par triggers

–         conversions de type

–         mapping de partitions

Ne sont pas prises en charges :

–         Les colonnes LOB, LONG, BFILE, ADT (Abstract Data Type)*

–         Contraintes différées

–         Manque d’espace

–         /*+ direct */

–         Violation de contraintes uniques

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.