Sauter au contenu

“create database” en 5 minutes et avec 1 paramètre

11 juillet 2009
by

Comme beaucoup de DBA, j’imagine, j’ai mis à jour quelques-uns de mes scripts de 10g en 11g sans même y penser! Pourtant, avec chaque version, vient une multitude d’améliorations et Oracle continue de simplifier l’utilisation de sa base de données. La création manuelle d’une instance et d’une base de données n’échappent pas à cette règle et ce que vous faisiez en 10 lignes avec Oracle 10g, vous pouvez maintenant le faire en 11 lignes 5 lignes avec Oracle 11g. Vous trouverez ci-dessous, une série de commandes que j’ai épurée pour créer une base de données avec la syntaxe la plus ramassée possible. Bien sur, vous préfèrerez utiliser DBCA dans de nombreux cas… quoique!

En substance, les améliorations apportées par Oracle 11g sont les suivantes:

  • Il est désormais obligatoire de positionnez la variable ORACLE_BASE. oraenv effectue cette opération, ce qui évite d’alimenter tous les paramètres à la background_dump_dest
  • Automatic Diagnostic Repository (ADR) remplace la foultitude de répertoires de trace et log d’Oracle 10g et il n’est plus nécessaire d’exécuter aucun mkdir
  • Certains paramètres obligatoires en 10g ont maintenant des valeurs par défaut et notamment  processes et memory_target
  • Vous pouvez utiliser la commande create spfile from pfile sans qu’une instance soit démarrée (Correction: c’est aussi le cas en 10.2 et sans doute avant!)

Etape 1. Positionner l’environnement

Cette étape dépend du système d’exploitation; sous Windows, on utilisera oradim. Sous Unix et Linux on utilisera  oratab et oraenv. Voici un exemple pour Linux (et AIX) qui positionne l’environnement pour une instance BLACK et un ORACLE_HOME de /u01/app/oracle/product/11.1.0/db_1 :

echo "BLACK:/u01/app/oracle/product/11.1.0/db_1:N" \
      >> /etc/oratab

. oraenv

ORACLE_SID = [x] ? BLACK
The Oracle base for ORACLE_HOME=/u01/app/oracle/product/11.1.0/db_1 is /u01/app/oracle

Etape 2. Créer un fichier spfile et un fichier de mode de passe

Si vous utilisez un fichier spfile, les paramètres sont mis à jour automatiquement par la commande CREATE DATABASE. Pour cette raison, commencez par créer un fichier init.ora comme ci-dessous et transformez le en spfile. Le seul paramètre qu’il est désormais obligatoire de positionner est db_name. Pour simplifier la création de la base de données, on utilisera OMF et  db_create_file_dest définit la destination des fichiers OMF ; Vous préférerez utilisez sga_target plutot que memory_target si vous voulez utiliser les HugePages avec Linux :

cd $ORACLE_HOME/dbs
cat >initBLACK.ora <<EOF
db_name=BLACK
db_create_file_dest=/u01/app/oracle/oradata
EOF
mkdir /u01/app/oracle/oradata/BLACK

Puis créez le SPFILE correspondant. Il est inutile de démarrer l’instance pour cela :

sqlplus / as sysdba

create spfile from pfile;

exit;

Enfin, créez un fichier de mots de passe :

orapwd  file=orapwBLACK password=change_on_install

Etape 3. Créer votre base de données

Cette “dernière étape” est rapide et vous ne configurerez que le minimum :

sqlplus / as sysdba

startup nomount
ORACLE instance started.

Total System Global Area  150667264 bytes
 Fixed Size                  1311940 bytes
 Variable Size              92277564 bytes
 Database Buffers           50331648 bytes
 Redo Buffers                6746112 bytes

create database extent management local;

@?/rdbms/admin/catalog
@?/rdbms/admin/catproc

Note
Si vous n’utilisez pas la clause “extend management local”, le tablespace SYSTEM sera “dictionary managed”.

Etape 4. Préparez votre base de données pour une vrai utilisation

Et voilà, vous avez créé une base de données en 5 minutes aussi, reste à :

  • Valider les composants,
  • Changer les mots de passe
  • Installer les scripts pour vos outils comme SQL*Plus
  • Passer en ARCHIVELOG et programmer des sauvegardes
  • Installer votre infrastructure de supervision
col comp_name format a35
col version format a11
select COMP_NAME, VERSION
  from dba_registry;
COMP_NAME                           VERSION
----------------------------------- -----------
Oracle Database Catalog Views       11.1.0.7.0
Oracle Database Packages and Types  11.1.0.7.0

select USERNAME, ACCOUNT_STATUS
  from dba_users;

USERNAME                       ACCOUNT_STATUS
------------------------------ --------------------------------
OUTLN                          OPEN
SYS                            OPEN
SYSTEM                         OPEN
TSMSYS                         EXPIRED & LOCKED
DIP                            EXPIRED & LOCKED
ORACLE_OCM                     EXPIRED & LOCKED
DBSNMP                         EXPIRED & LOCKED

connect outln/outln
Error accessing PRODUCT_USER_PROFILE
Warning:  Product user profile information not loaded!
You may need to run PUPBLD.SQL as SYSTEM
Connected.
passwd

connect / as sysdba
shutdown immediate
startup mount;
alter database archivelog;
alter database open
exit;

rman target /
show all;
backup database plus archivelog all delete input;

Vous voilà prêt à passer à la suite

2 Commentaires laisser un →
  1. Richard GAILLARD lien permanent
    11 juillet 2009 21:15

    Bonjour

    Vous présentez comme une nouveauté 11g la possibilité de créer un spfile depuis un pfile sans que l’instance ne soit démarrée.
    A vrai dire, cette possibilité (ainsi que l’opération symétrique) à toujours existé dès l’apparition du spfile en 9i.

    Dans mes cours d’administration, je demande aux stagiaires de donner à un paramètre non dynamique (donc SCOPE=SPFILE) une valeur inadmissible, telle que SGA_MAX_SIZE=400 (sans unité), ce qui empêchera le démarrage de l’instance, afin justement d’illustrer la conversion entre pfile et spfile lorsque l’instance refuse de démarrer.

    • arkzoyd lien permanent
      11 juillet 2009 23:06

      Richard,

      En effet, merci!

      Je pensais qu’il fallait une instance en 10.2 mais j’avais tord. J’ai corrigé l’article en laissant une référence à cette erreur pour que les gens comprennent ton commentaire.

      Amicalement,

      Grégory

Répondre

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Gravatar
Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Twitter picture

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Connexion à %s

Suivre

Get every new post delivered to your Inbox.

Joignez-vous à 36 followers