Outils personnels

Reconstruire la DBconsole sur 10g : Différence entre versions

De wikiGite

(Page créée avec « Initialiser ORACLE_HOSTNAME avec le bon nom de serveur Initialiser ORACLE_SID (mais peut-être pas néceszsaire) Lancer emca -config dbcontrol db -repos recreate Répondr... »)
 
 
(9 révisions intermédiaires par 2 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
 +
== Création/recréation de la console ==
 
Initialiser ORACLE_HOSTNAME avec le bon nom de serveur
 
Initialiser ORACLE_HOSTNAME avec le bon nom de serveur
  
Initialiser ORACLE_SID (mais peut-être pas néceszsaire)
+
Initialiser ORACLE_SID (mais peut-être pas nécessaire)
  
 
Lancer
 
Lancer
 
  emca -config dbcontrol db -repos recreate
 
  emca -config dbcontrol db -repos recreate
 +
Eventuellement, pour être plus "propre", on peut la déconfigurer d'abord et la recréer ensuite
 +
emca -'''deconfig''' dbcontrol db -repos '''drop'''
 +
emca -config dbcontrol db -repos '''create'''
 +
(ça permet notamment de supprimer le répertoire de repo dans $ORACLE_HOME, avant recréation).
  
Répondre aux questions (port listener, passwd des users ORACLE)
+
Répondre aux questions (SID, port listener, mots de passe des users ORACLE)
 +
 
 +
Cette opération ne fonctionne pas toujours du premier coup, il n'est pas rare d'avoir à la relancer 2, voire 3 fois, avant d'avoir le message magique :
 +
La configuration d'Enterprise Manager a reussi
 +
 
 +
== En cas d'erreur ==
 +
=== à la création ===
 +
'''SEVERE: Error creating the repository'''
 +
Vérifier dans le log indiqué par le message. On doit trouver :
 +
CONFIG: ORA-06502: <span style="color:red">'''PL/SQL: numeric or value error: character string buffer too small'''</span>
 +
ORA-06512: at line 259
 +
 +
oracle.sysman.assistants.util.sqlEngine.SQLFatalErrorException: ORA-06502: PL/SQL: numeric or value error: character string buffer too small
 +
ORA-06512: at line 259
 +
 +
oracle.sysman.emcp.exception.EMConfigException: Error creating the repository
 +
 
 +
Vérifier tout d'abord que le ORACLE_HOME est bien positionné. Si oui, c'est un problème de longueur de variable dans le fichier sql de création de la console. Cette variable doit contenir le nom complet (FQDN) du host, et fait 32 caractères par défaut.
 +
 
 +
Pour vérifier si c'est le cas, se connecter SYSDBA :
 +
SYS@ORCL> select host_name, length(host_name) length from v$instance;
 +
HOST_NAME                                        LENGTH
 +
<nowiki>------------------------------------------------  -----------</nowiki>
 +
hhhhhhhhhhhhhhhhh.dddddd.dddddddd                33
 +
 +
Elapsed: 00:00:00.09
 +
 
 +
Solution :
 +
echo $ORACLE_HOME
 +
cd $ORACLE_HOME/sysman/admin/emdrep/sql/core/latest/self_monitor
 +
cp self_monitor_post_creation.sql self_monitor_post_creation.sql_bk
 +
Editer self_monitor_post_creation.sql et remplacer
 +
l_host_name VARCHAR2(32);
 +
par une taille pouvant contenir le nom du host (idéalement, 128).
 +
 
 +
'''NOTE''': Il y a '''2''' définitions de cette variable à remplacer dans le fichier sql.
 +
 
 +
Sauvegarder le script et recréer la console.
 +
 
 +
=== à la suppression ===
 +
ATTENTION : Le drop (donc le "recreate" aussi), met la base dans un état QUIESCE, empêchant de nouveau utilisateurs de se connecter. En cas de problème au moment de cette opération, la base peut '''rester dans cet état'''.
 +
 
 +
Pour la remettre dans un état normal :
 +
SQL> select active_state from v$instance;
 +
ACTIVE_ST
 +
---------
 +
QUIESCED
 +
 +
SQL> alter system unquiesce;
 +
System altered.
 +
 +
SQL> select active_state from v$instance;
 +
ACTIVE_ST
 +
---------
 +
NORMAL

Version actuelle datée du 6 juin 2013 à 09:34

Création/recréation de la console

Initialiser ORACLE_HOSTNAME avec le bon nom de serveur

Initialiser ORACLE_SID (mais peut-être pas nécessaire)

Lancer

emca -config dbcontrol db -repos recreate

Eventuellement, pour être plus "propre", on peut la déconfigurer d'abord et la recréer ensuite

emca -deconfig dbcontrol db -repos drop
emca -config dbcontrol db -repos create

(ça permet notamment de supprimer le répertoire de repo dans $ORACLE_HOME, avant recréation).

Répondre aux questions (SID, port listener, mots de passe des users ORACLE)

Cette opération ne fonctionne pas toujours du premier coup, il n'est pas rare d'avoir à la relancer 2, voire 3 fois, avant d'avoir le message magique :

La configuration d'Enterprise Manager a reussi

En cas d'erreur

à la création

SEVERE: Error creating the repository

Vérifier dans le log indiqué par le message. On doit trouver :

CONFIG: ORA-06502: PL/SQL: numeric or value error: character string buffer too small
ORA-06512: at line 259

oracle.sysman.assistants.util.sqlEngine.SQLFatalErrorException: ORA-06502: PL/SQL: numeric or value error: character string buffer too small
ORA-06512: at line 259

oracle.sysman.emcp.exception.EMConfigException: Error creating the repository

Vérifier tout d'abord que le ORACLE_HOME est bien positionné. Si oui, c'est un problème de longueur de variable dans le fichier sql de création de la console. Cette variable doit contenir le nom complet (FQDN) du host, et fait 32 caractères par défaut.

Pour vérifier si c'est le cas, se connecter SYSDBA :

SYS@ORCL> select host_name, length(host_name) length from v$instance;
HOST_NAME                                        LENGTH
------------------------------------------------  -----------
hhhhhhhhhhhhhhhhh.dddddd.dddddddd                33

Elapsed: 00:00:00.09

Solution :

echo $ORACLE_HOME
cd $ORACLE_HOME/sysman/admin/emdrep/sql/core/latest/self_monitor
cp self_monitor_post_creation.sql self_monitor_post_creation.sql_bk

Editer self_monitor_post_creation.sql et remplacer

l_host_name VARCHAR2(32);

par une taille pouvant contenir le nom du host (idéalement, 128).

NOTE: Il y a 2 définitions de cette variable à remplacer dans le fichier sql.

Sauvegarder le script et recréer la console.

à la suppression

ATTENTION : Le drop (donc le "recreate" aussi), met la base dans un état QUIESCE, empêchant de nouveau utilisateurs de se connecter. En cas de problème au moment de cette opération, la base peut rester dans cet état.

Pour la remettre dans un état normal :

SQL> select active_state from v$instance;
ACTIVE_ST
---------
QUIESCED

SQL> alter system unquiesce;
System altered.

SQL> select active_state from v$instance;
ACTIVE_ST
---------
NORMAL