 
          Introduction
La commande create database Oracle 11g est lancée manuellement avec
            SQL*Plus, puis les scripts catproc.sql et catalog.sql sont exécutés dans cette
            nouvelle base de données.
oracle[UBXU1ORA]> sqlplus "/ as sysdba"startup nomount pfile=/Software/oracle/Instances/UBXU1ORA/pfile/initUBXU1ORA.ora; create database UBXU1 noarchivelog maxinstances 1 maxlogfiles 32 maxdatafiles 32 maxlogmembers 4 character set WE8PC850 national character set AL16UTF16 extent management local datafile '/ubix/oracle/UBXU1ORA/SYSTEM_01.dbf' size 500M logfile group 1 ( '/ubix/oracle/UBXU1ORA/redo1_01.log', '/ubix/oracle/UBXU1ORA/redo1_02.log') size 50M, group 2 ( '/ubix/oracle/UBXU1ORA/redo2_01.log', '/ubix/oracle/UBXU1ORA/redo2_02.log') size 50M, group 3 ( '/ubix/oracle/UBXU1ORA/redo3_01.log', '/ubix/oracle/UBXU1ORA/redo3_02.log') size 50M sysaux datafile '/ubix/oracle/UBXU1ORA/SYSAUX_01.dbf' size 500M undo tablespace UNDO datafile '/ubix/oracle/UBXU1ORA/UNDO_01.dbf' size 500M default temporary tablespace TEMP tempfile '/ubix/oracle/UBXU1ORA/TEMP_01.dbf' size 100M ;
oracle[UBXU1ORA]> sqlplus "/ as sysdba"@?/rdbms/admin/catalog.sql; @?/rdbms/admin/catproc.sql;
Durant l’exécution de catproc.sql ou au redémarrage de l’instance, des
            erreurs ORA-48258 et ORA-00600 tombent avec des messsages de corruptions sur
            les pages AMS :
ORA-48258: AMS Corrupt Page Found - Rebuild Relation
ORA-00600: internal error code, arguments: [dbgripmg_2: infinite init action], [11], [ADR_CONTROL], [], [], [], [], [], [], [], [], []Dans le cas d’un redémarrage, la base de données ne peut même pas être ouverte !
Instinctivement, la base de données est recréée en modifiant dans le fichier
            d’initialisation les paramètres de mémoire (memory_target, etc.)… Rien n’y
            fait. La solution est bien plus simple : il suffit de regarder d’un peu plus
            près le contexte de la création de la base de données et de faire attention à
            quelques petits résidus éventuellement présents dans le répertoire défini par
            le paramètre Oracle diagnostic_dest.
Contexte de la création de la base de données
La base de données UBXU1 est créée sur une machine SunOS X86 64 bits pour y
            accueillir des tablespaces provenant d’une plateforme Sun SPARC 64 bits. Il
            s’agit d’une migration cross-plateforme d’une instance, les poids étant
            différents entre ces deux plateformes (little endian/big endian); pour plus
            d’informations sur les migrations cross plateformes avec les tablespaces
            transportables : Oracle 11g R2, migrations
              cross plateformes avec les tablespaces transportables 
 
          
          Lors de la création de la base de données UBXU1 sur la machine cible SunOS
            Actinium, le paramètre d’initialisation Oracle diagnostic_dest (nouveauté 11g,
            Automatic Diagnostic Repository) est le même que celui de l’instance sur la
            machine source SPARC : 
oracle[UBXU1ORA]> cat /Software/oracle/Instances/UBXU1ORA/pfile/initUBXU1ORA.ora | \ grep 'diagnostic_dest'diagnostic_dest = "/Software/oracle/Instances/UBXU1ORA/bdump"
L’intégralité du répertoire diagnostic_dest est copié de la machine source
            vers la machine cible et ce détail a une importance capitale dans l’erreur
            ORA-48258 (AMS Corrupt Page Found - Rebuild Relation).
Le répertoire diagnostic_dest (ADR) et les méta-données
À partir de la version 11g, une refonte profonde a été apportée à propos de
            la localisation des répertoires des fichiers de log et de trace Oracle avec la
            nouveauté de l’ADR (Automatic Diagnostic Repository). Les paramètres
            d’initialisation background_dump_dest, core_dump_dest et user_dump_dest
            disparaissent avec la version 11g et sont remplacés par un paramètre unique :
            diagnostic_dest.
Le paramètre d’initialisation d’une instance Oracle diagnostic_dest définit
            la racine de l’arborescence de l’ADR (Automatic Diagnostic Repository) :
            $ADR_BASE.
Pour une instance Oracle, le paramètre diagnostic_dest génère la création
            automatique de l’arborescence ci-dessous :
            $ADR_BASE/diag/rdbms/<db_name>/<SID>
 
          
          Le tableau ci-dessous donne les correspondances avec les anciens paramètres
            core_dump_dest, user_dump_dest et background_dump_dest :
| Diagnostic | Localisation 10g | Localisation ADR 11g | 
|---|---|---|
| Traces des processus de premier plan (foreground processes) | user_dump_dest | $ADR_HOME/trace | 
| Traces des processus d’arrière plan (background processes) | background_dump_dest | $ADR_HOME/trace | 
| Fichier d’alertes alert_SID.log(format texte) | background_dump_dest | $ADR_HOME/trace | 
| Fichier d’alertes alert_SID.log(format XML) | background_dump_dest | $ADR_HOME/alert | 
| Core dumps | core_dump_dest | $ADR_HOME/cdump | 
Le répertoire $ADR_HOME/metadata est la cause des erreurs de corruption
            ORA-48258 rencontrées lors de la création de la base de données : ce répertoire
            contient des fichiers de meta données avec l’extension *.ams, fichiers qui sont
            créés pour leur majorité lors de la création de la base de données et si ils
            existent déjà, ils ne sont pas recréés. 
oracle[UBXU1ORA]> ls -ll /Software/oracle/Instances/UBXU1ORA/bdump/diag/rdbms/ubxu1/UBXU1ORA/metadata... -rw-r----- 1 oracle dba 65536 Oct 18 12:38 PROBLEM.ams -rw-r----- 1 oracle dba 65536 Oct 18 12:38 INCCKEY.ams -rw-r----- 1 oracle dba 65536 Oct 18 12:38 INCIDENT_FILE.ams ...
Ces fichiers *.ams sont au format binaire et donc dépendants de la
            plateforme sur laquelle ils sont créés : les fichiers de meta données *.ams
            provenant d’une plateforme SPARC (big endian, poids fort), ils apparaissent en
            conséquence corrompus sur la plateforme SunOS X86 (little endian, poids
            faible).
Pour éradiquer cette erreur, supprimer tous les fichiers *.ams dans le
            répertoire $ADR_HOME/metadata qui proviendraient d’une plateforme avec un poids
            différent et relancer la création de la base de données.
Si la recréation de la base de données s’avère fastidieuse (tablespace
            utilisateurs déjà créés, etc.), une autre astuce existe : redémarrer
            l’instance en modifiant le paramètre diagnostic_dest et en le définissant vers
            un nouveau répertoire
oracle[UBXU1ORA]> cat /Software/oracle/Instances/UBXU1ORA/pfile/initUBXU1ORA.ora | grep 'diagnostic_dest'diagnostic_dest = "/Software/oracle/Instances"
La modification du paramètre diagnostic_dest élimine l’erreur ORA-48258 car
            une nouvelle arborescence $ADR_BASE
            (/Software/oracle/Instances/diag/rdbms/ubxu1/UBXU1ORA) est intégralement recréée, y
            compris les fichiers de meta donneés *.ams : il suffit alors d’écraser les
            fichiers *.ams du répertoire metadata par ceux créés dans cette nouvelle
            arborescence.
Rebasculer ensuite l’instance vers l’arborescence originelle
            diagnostic_dest.