Modifier des paramètres, arrêter et redémarrer une base oracle.

Les paramètres Oracle sont présents dans le fichier init.ora ; ils sont également dans la vue sys.V$PARAMETER.
Ils sont visualisables via la commande show parameters. Pour connaître un paramètre, la commande permet également de spécifier une sous chaîne du paramètre dont on cherche à voir la valeur :
sous Oracle 9i :
SQL> show parameter optim

NAME                           TYPE       VALUE
----------------------------- -------- -----------
object_cache_optimal_size     integer    102400
optimizer_dynamic_sampling    integer    1
optimizer_features_enable     string     9.2.0
optimizer_index_caching       integer    0
optimizer_index_cost_adj      integer    100
optimizer_max_permutations    integer    2000
optimizer_mode                string     FIRST_ROWS


Il existe une notion de scope, précisant la nature d'une modification d'une variable, elle peut être faite au niveau de la connexion (c'est à dire session) ou au niveau système.
On distingue ainsi les modifications de variables selon le scope.
Ex :
ALTER SYSTEM
SET MAX_DUMP_FILE_SIZE = 0;

ALTER SESSION
SET MAX_DUMP_FILE_SIZE = 0;

Cependant, seule quelques rares paramètres peuvent être modifiés sur différents scope.
Voyez la doc oracle (ici) pour plus de précisions, mais globalement, tout ce qui concerne la restitution porte sur la session, tandis qu'au niveau fonctionnement de la base, ce sera un ALTER SYSTEM.
Ex :
ALTER SESSION SET NLS_COMP=ANSI

ALTER SYSTEM SET DB_KEEP_CACHE_SIZE = 32K


Certains paramètres peuvent être modifiés "à chaud", c'est à dire sans arrêt relance ou interruption de services pour les utilisateurs ; d'autres, nécessitent une interruption de service, il faut alors redémarrer la base ; à noter qu'au fil des versions, Oracle essaie de réduire les besoins de redémarrage qui, dans le cadre d'une production coûtent cher (intervention la nuit, indisponibilité de l'application, ...).

Toutes les opérations agissant sur system ne peuvent effectuée qu'avec un user connecté en sysdba ; de même pour arréter/démarrer la base. Exemple par sqlplus :
oracle$> export ORACLE_SID=BDDEX
oracle$> sqlplus '/ as sysdba'


Arrêter la base


Différents mode d'arrêt : du plus léger au plus brutal :

SQL> shutdown;

attend la fin de chaque transaction pour fermer puis éteindre la base.
SQL> shutdown immediate;
termine les process en cours et effectue un rollback sur les sessions non "comittée", ferme puis éteint la base.

SQL> shutdown abort;
termine de façon brutale les process en cours, annule les sessions en cours et ferme puis éteint la base.

Démarrer la base


Une base de données Oracle passe par plusieurs étapes avant d'être réellement démarrer et accessible à tous les utilisateurs : ouverture, montage puis démarrage.

SQL> startup;
ORACLE instance started.

Total System Global Area 527761588 bytes
Fixed Size 501700 bytes
Variable Size 181031808 bytes
Database Buffers 35541432 bytes
Redo Buffers 671648 bytes
Database mounted.
Database opened.

Démarre la base complètement à partir d'une base arrétée.

SQL> startup nomount;
ne fait que démarrer l'instance, la base n'est ni ouverte ni montée

SQL> startup mount;
démarre l'instance et monte les fichiers de contrôle mais la base n'est pas ouverte.

SQL> alter database mount;
A partir de l'instance démarrée, monte les fichiers de contrôle.

SQL> alter database open;
A partir d'une base montée, ouvre la base (la rend disponible aux utilisateurs).

Vérifier quelles sont les bases qui sont démarrées


en Unix :
$> ps -edf | grep pmon | grep -v grep
Le process pmon$ORACLE_SID indique que l'instance d'oracle correspondante à cet SID est démarrée.

en SQL (il faut regarder les SID un par un, mais permet de connaître également le statut de la base, en plus de l'état de l'instance):
SQL> select instance_name, status, database_status from v$instance;


Lorsque la base est démarrée, le fichier $ORACLE_HOME/dbs/lk<$SID> est créé.
un ls $ORACLE_HOME/dbs/lk* permet tout autant de connaître les bases démarrées. Lors de problèmes, il faut donc vérifier cette cohérence (entre process unix et fichier d'état).

Connaître la version d'Oracle


Une simple connexion SQL*plus donne la version d'oracle :

sqlplus 'USEREX/PASSEX'

SQL*Plus: Release 9.2.0.8.0 - Production on Wed Nov 7 09:54:47 2007

Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.


Connected to:
Oracle9i Enterprise Edition Release 9.2.0.8.0 - 64bit Production
JServer Release 9.2.0.8.0 - Production


Une requête SQL interrogeant le dictionnaire permet également de connaître la version :

SQL> select * from v$version;

BANNER
----------------------------------------------------------------
Oracle9i Enterprise Edition Release 9.2.0.8.0 - 64bit Production
PL/SQL Release 9.2.0.8.0 - Production
CORE 9.2.0.8.0 Production
TNS for Solaris: Version 9.2.0.8.0 - Production
NLSRTL Version 9.2.0.8.0 - Production


Voir également :
- le vidage de cache, utile en cas de modification de paramètres
- le listener et l'accessibilité de votre base.




Vous n'avez pas trouver réponse à votre question ? Préciser votre recherche :

Catégories