Oracle au Minimum

Pourquoi utiliser des dizaines de variables ou de paramètres quand un seul suffit ? Pourquoi personnaliser des environnements quand Oracle fournit tout ce qu’il faut ? Vous voulez être rapide ? Soyez concis ! Evitez-vous la peine de faire évoluer vos scripts et procédures !

Dans cet article, vous trouverez les réponses à 5 questions, à propos d’Oracle. Ces questions ont toutes, pour point commun, de commencer par « Combien, au minimum, … ». Inventez les vôtres et n’hésitez pas à commenter cet article avec elles. Contribuez, vous aussi, à simplifier les environnements Oracle.

Note:
Cet article s’appuie sur Oracle 11.2 sur Linux et Unix. Il en faut un tout petit peu plus sous Windows mais guère plus.

Question 1: Combien, au minimum, faut-il de variables d’environnement pour utiliser Oracle ? 3 !

Il s’agit de ORACLE_SID, ORACLE_HOME et ORACLE_BASE ; pour des raisons de commodité, on aime bien ajouter la variable PATH mais elle n’est pas nécessaire.

Oracle fournit les scripts oraenv et coraenv qui, si vous avez alimenté le fichier oratab correctement positionne dans le cas de bases de données non-RAC ces 4 variables pour vous. Vous pouvez même utiliser ces scripts dans vos propres scripts shell comme ceci, en supposant que vous avez une instance nommé BLACK référencée dans le fichier oratab :

export ORAENV_ASK=NO
export ORACLE_SID=BLACK
source /usr/local/bin/oraenv

Evidemment, dans certaines circonstances, vous pourrez être amené à utiliser d’autres variables. Les plus fréquentes sont sans doute :

  • NLS_LANG pour fixer langue, territoire et jeu de caractères de votre client dans le cas où vous utilisez des scripts pour vos applications qui contiennent autre chose que de l’ASCII, utilise des séparateurs…
  • NLS_DATE_FORMAT pour fixer l’affichage des dates et en particulier si vous utilisez Recovery Manager afficher les heures et minutes

Par expérience, l’utilisation de toute autre variable décrite dans la documentation, y compris TNS_ADMIN, ORA_NLS, TWO_TASK (LOCALE sous Windows), LD_LIBRARY_PATH, CLASSPATH vous amènera des regrets un jour ou l’autre. Si elles sont nécessaires, positionnez-les plutôt dans un script que dans l’environnement.

Question 2: Combien, au minimum, faut-il de paramètre dans un pfile/spfile pour démarrer une instance ? 1 !

Il n’en faut qu’un seul, le db_name, comme l’illustre le script ci-dessous :

. oraenv
BLUE

echo db_name=BLUE > $ORACLE_HOME/dbs/initBLUE.ora
sqlplus / as sysdba
create spfile from pfile;
startup nomount
ORACLE instance started.

Total System Global Area 271437824 bytes
Fixed Size 2227456 bytes
Variable Size 213910272 bytes
Database Buffers 50331648 bytes
Redo Buffers 4968448 bytes
ORACLE instance started.

Evidemment, il ne s’agit pas de suggèrer de ne pas positionner les paramètres de mémoire ou processes ultérieurement, cela dit, pour restaurer un fichier spfile, pourquoi créer un pfile plus qui contient 10 paramètres ?

Question 3: Combien, au minimum, faut-il de paramètre dans un spfile pour créer une base de données avec la commande CREATE DATABASE ? 2 !

db_name évidemment et db_create_file_dest pour indiquer la destination des fichiers. Pour continuer l’exemple de la question précédente avec notre instance démarrée, on utilisera la commande ci-dessous :

alter system set db_create_file_dest='/u01/app/oracle/oradata';

Question 4: Combien, au minimum, faut-il de clause à la commande CREATE DATABASE pour créer une base de données viable ? 1 ou 3 !

En fait, la seule sans doute qui soit réellement incontournable est la clause character set ; cela étant, le nom par défaut du tablespace d’undo SYS_UNDOTS n’est pas mon préféré et vous préfèrerez sans doute mettre le tablespace SYSTEM en locally managed. De fait, la création d’une base de données nécessite sans doute 3 clauses :

create database
extent management local
undo tablespace undotbs1
character set al32utf8;

Une fois la base de données créée, il vous faudra encore lancer 2 scripts pour que celle-ci soit opérationnelle :

@?/rdbms/admin/catalog
@?/rdbms/admin/catproc
col comp_name format a36
col version format a12
col status format a8
select comp_name, version, status
from dba_registry;

COMP_NAME VERSION STATUS
------------------------------------ ------------ -------
Oracle Database Catalog Views 11.2.0.3.0 VALID
Oracle Database Packages and Types 11.2.0.3.0 VALID

Vous pourrez alors modifier la mémoire, le nombre de processus, activer surpervision et la sauvegarde.

Question 5: Combien, au minimum, faut-il de commande et de paramètre pour créer une base de données ? 1 commande et 6 paramètres !

Sans avoir à positionner aucune variable, vous pouvez créer une base de données avec toutes les options, alimenter oratab, mettre en œuvre une sauvegarde et cela, même en cluster, même sous Windows…

/u01/app/oracle/product/11.2.0/db_1/bin/dbca 
-silent -createDatabase
-templateName New_Database.dbt
-gdbName RED
-characterSet AL32UTF8
-totalMemory 2048

Bien sur vous pouvez personnaliser votre base de données à l’aide des autres paramètres de dbca, vérifiez avec dbca -help. Modifiez les options de la base de données en éditant le fichier New_Database.dbt situé dans $ORACLE_HOME/assistants/dbca/templates.

Retournez le problème dans tous les sens, trop souvent, les environnements sont sur-paramétrés et sur-configurés. Vous ne manquez sans doute pas d’exemple. N’hésitez pas à les partager via un commentaire.

1 réflexion sur “Oracle au Minimum”

  1. A la question 2 j’aurai dit au moins 2 paramètres : db_name et control_files

Les commentaires sont fermés.