mardi 28 septembre 2010

ERROR emdrep.XMLLoaderContext flushTableStatements.1587 dans le fichier emems.log et emoms.trc de l'OMS du Grid Control 10.2.0.5

Il arrive que l'on rencontre le message suivant dans les fichier $OMS_HOME/sysman/log/emoms.log et $OMS_HOME/sysman/log/emoms.trc:

2010-09-28 09:12:08,282 [XMLLoader0 10000000352.xml] ERROR emdrep.XMLLoaderContext flushTableStatements.1587 - Error while flushing insert statementjava.sql.SQLException: ORA-00
001: unique constraint (SYSMAN.MGMT_DB_HDM_METRIC_HELPER) violated

Selon la Note The emoms.trc shows "ORA-00001: UNIQUE CONSTRAINT (SYSMAN.MGMT_DB_HDM_METRIC_HELPER) VIOLATED" [ID 1063813.1], ce message peut être ignoré.

Dans les versions futures, ce genre de messages seront générés à titre d'information et non comme étant une erreur.

Trop de fichiers log générés par le Cluster Verify Utility au niveau du Grid Infrastructure 11gR2

Il arrive qu'il y ait un nombre important de logs «cvutrace.log» générés dans le répertoire $GRID_HOME/cv/log.

Selon la Note Large Number Of Cvutrace.Log Files Monitoring 11.2 Cluster [ID 1098671.1], cela arrive lorsque le Grid Infrastructure 11gR2 est surveillé par l'OEM Grid Control 10.2.0.5 ou 11.1.

Selon cette Note, au niveau du Grid Infrastructure 11gR2, la trace est implicitement activée par défaut avec SRVM_TRACE="true" (vous ne verrez pas cette ligne dans le fichier cluvfy car l'activation est implicite).

La Note recommande donc de désactiver la trace en ajoutant la ligne SRVM_TRACE="false" au debut du fichier $GRID_HOME/bin/cluvfy (juste après les commentaires) comme ci-dessous:

#!/bin/sh
#
# $Header: opsm/cvutl/cluvfy.sbs /st_has_11.2.0.1.0/4 2009/10/16 17:46:01 kfgriffi Exp $
#
# cluvfy.sbs
#
# Copyright (c) 2003, 2009, Oracle and/or its affiliates. All rights reserved.
#
# NAME
# cluvfy.sbs - Starts the cluster verification driver
#
# DESCRIPTION
# This requires these environmental variables.
# CV_HOME: home for CV tools
# CV_JDKHOME: java home
# CV_DESTLOC: the remote locations where the required files can be
# copied and executed. The user MUST have write permission
# on this location, on all the nodes.
#
# NOTES
#
#
# Build: 101305
SRVM_TRACE="false"
if [ -z "$AWK" ]; then AWK=/bin/awk; fi
if [ -z "$ECHO" ]; then ECHO=/bin/echo; fi
if [ -z "$ID" ]; then ID=/usr/bin/id; fi
if [ -z "$GREP" ]; then GREP=/bin/grep; fi

...
...

lundi 27 septembre 2010

Comment filtrer le résultat de la commance «crsctl stat res -t»?

Lorsque l'on a plusieurs ressources au niveau du clusterware 11gR2 et qu'on exécute la commande «crsctl stat res -t», il est difficile de retrouver la ressource qu'on recherchait car la liste peut être très longue.

Exécuter la commande «crsctl stat res» avec l'option «-h» pour voir les différentes options:

oracle@ucm01a:/u01/home/dba/oracle> crsctl stat res -h
Usage:
crsctl status resource [[...]-w ] [<-p-v> [-e]] [[-f-l-g]] [[-k -n ] [-d ]] [-s -k [-d ]]
Vérifier le statut des ressources désignées
crsctl stat resource [[...]-w ] -t
Imprimer le statut des ressources dans un tableau

resName [...] Plusieurs noms de ressource séparés par des blancs
-w Filtre de la ressource (ex : 'TYPE = ora.db')
-p Imprimer config. s
-v Imprimer config. runtime
-e Evaluer valeurs spéciales de l'instance de ressource
-f Imprimer config. complète
-l Imprimer tous membres cardinaux et de degré
-g Vérifier l'inscr. des ressources
-k ID de cardinalité
-d ID de degré
-n Nom du serveur
-s Obtenir serveurs cible pour transfert
-t Ta
oracle@ucm01a:/u01/home/dba/oracle>


On voit que l'option «-w» permet de filtrer le résultat obtenu.

Exemple:

Si on veut voir toutes les ressources qui contiennent le mot «asm»:

crsctl stat res -t -w "NAME co asm"
--Les ressources dont le nom (NAME) contient le mot «asm»

oracle@ucm01a:/u01/home/dba/oracle> crsctl stat res -t -w "NAME co asm"
--------------------------------------------------------------------------------
NAME TARGET STATE SERVER STATE_DETAILS
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.asm
ONLINE ONLINE ucm01a
ONLINE ONLINE ucm01b
ONLINE ONLINE ucm01c Started
oracle@ucm01a:/u01/home/dba/oracle>

Si on veut voir toutes les ressources qui contiennent le mot «dg» (pour les diskgroups):

crsctl stat res -t -w "NAME co dg"
--Les ressources dont le nom (NAME) contient le mot «dg»

oracle@ucm01a:/u01/home/dba/oracle> crsctl stat res -t -w "NAME co dg"
--------------------------------------------------------------------------------
NAME TARGET STATE SERVER STATE_DETAILS
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.DATADG01.dg
ONLINE ONLINE ucm01a
ONLINE ONLINE ucm01b
ONLINE ONLINE ucm01c
ora.FRADG01.dg
ONLINE ONLINE ucm01a
ONLINE ONLINE ucm01b
ONLINE ONLINE ucm01c
ora.FRADG02.dg
ONLINE ONLINE ucm01a
ONLINE ONLINE ucm01b
ONLINE ONLINE ucm01c
ora.SYSDG01.dg
ONLINE ONLINE ucm01a
ONLINE ONLINE ucm01b
ONLINE ONLINE ucm01c
oracle@ucm01a:/u01/home/dba/oracle>

La commande précédente correspond à la commande ci-dessous (les 2 commandes permettent de rechercher les diskgroups):

crsctl stat res -t -w "TYPE = ora.diskgroup.type"
-- Les ressources dont le type est égal à «ora.diskgroup.type»

Note:
Remarquer l'espace après "TYPE " et après le signe d'égalité "= " dans la commande précédente.
Les différents types de ressources peuvent s'obtenir avec la commande:

crsctl stat res -p | grep TYPE=ora

Dans l'ensemble, les différents types se résument à:

TYPE=ora.diskgroup.type
TYPE=ora.listener.type
TYPE=ora.scan_listener.type
TYPE=ora.asm.type
TYPE=ora.service.type
TYPE=ora.database.type
TYPE=ora.eons.type
TYPE=ora.gsd.type
TYPE=ora.network.type
TYPE=ora.oc4j.type
TYPE=ora.ons.type
TYPE=ora.scan_vip.type
TYPE=ora.cluster_vip_net1.type

Tout en espérant que cet article vous sera utile...

ERROR ctlr.EmBaselineController isSatisified dans les fichiers emoms.log et emoms.trc de l'OMS du grid control

Il arrive que le message suivant soit inscrit dans les fichiers <oms_home>/sysman/log/emoms.log et <oms_home>/sysman/log/emoms.trc de l'OMS du grid control (10.2.0.5.3 dans mon cas):

2010-09-27 12:58:46,827 [EMUI_12_58_46_/console/database/instance/sitemap] ERROR ctlr.EmBaselineController isSatisified.6439 -
oracle.sysman.emSDK.page.mtrx.bsln.DisconnectedException
at oracle.sysman.dbTarget.metrics.bsln.model.EmBaselineEngine.__reinitialize(EmBaselineEngine.java:755)
at oracle.sysman.emSDK.page.mtrx.bsln.BaselineEngine._reinitialize(BaselineEngine.java:631)
at oracle.sysman.emSDK.page.mtrx.bsln.BaselineEngineRegistry._lookup(BaselineEngineRegistry.java:566)
at oracle.sysman.emSDK.page.mtrx.bsln.BaselineEngineRegistry.lookup(BaselineEngineRegistry.java:341)
at oracle.sysman.eml.metrics.bsln.ctlr.BaselineableTarget.isSatisified(EmBaselineController.java:6431)
at oracle.sysman.eml.metrics.bsln.ctlr.EmBaselineURLGenerator.isSatisified(EmBaselineURLGenerator.java:361)
at oracle.sysman.emSDK.intg.IntegrationManager$ConditionLink.isApplicable(IntegrationManager.java:919)
at oracle.sysman.emSDK.intg.IntegrationManager.getRelatedLinks(IntegrationManager.java:704)
at oracle.sysman.emSDK.intg.IntegrationManager.getRelatedLinks(IntegrationManager.java:745)
at oracle.sysman.emSDK.svlt.PageHandler.addIntegratedRelatedLinks(PageHandler.java:1033)
at oracle.sysman.db.adm.inst.SitemapController.prepareData(SitemapController.java:4490)
at oracle.sysman.emSDK.svlt.PageHandler.handleRequest(PageHandler.java:591)
at oracle.sysman.db.adm.RootController.handleRequest(RootController.java:247)
at oracle.sysman.db.adm.BaseController.handleRequest(BaseController.java:1263)
at oracle.sysman.db.adm.inst.SitemapController.handleRequest(SitemapController.java:3077)
at oracle.sysman.db.adm.DBControllerResolver.handleRequest(DBControllerResolver.java:114)
at oracle.sysman.emSDK.svlt.EMServlet.myDoGet(EMServlet.java:777)
at oracle.sysman.emSDK.svlt.EMServlet.doGet(EMServlet.java:328)
at oracle.sysman.eml.app.Console.doGet(Console.java:304)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at com.evermind.server.http.ResourceFilterChain.doFilter(ResourceFilterChain.java:65)
at oracle.sysman.eml.app.EMRepLoginFilter.doFilter(EMRepLoginFilter.java:265)
at com.evermind.server.http.EvermindFilterChain.doFilter(EvermindFilterChain.java:16)
at oracle.sysman.eml.app.BrowserVersionFilter.doFilter(BrowserVersionFilter.java:122)
at com.evermind.server.http.EvermindFilterChain.doFilter(EvermindFilterChain.java:20)
at oracle.sysman.emSDK.svlt.EMRedirectFilter.doFilter(EMRedirectFilter.java:102)
at com.evermind.server.http.EvermindFilterChain.doFilter(EvermindFilterChain.java:20)
at oracle.sysman.eml.app.ContextInitFilter.doFilter(ContextInitFilter.java:369)
at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:670)
at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:341)
at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:816)
at com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java:231)
at com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java:136)
at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:192)
at java.lang.Thread.run(Thread.java:534)


Selon la Note 10g OMS trace and log files reporting "ERROR ctlr.EmBaselineController isSatisified.6439 - oracle.sysman.emSDK.page.mtrx.bsln.DisconnectedException" [ID 1127723.1], ce message peut être ignoré car l'on ne devrait rencontrer ce message qu'en mode DEBUG.

Cela sera résolu dans la version 11.1

vendredi 17 septembre 2010

Comment restaurer le catalogue RMAN (sous ASM) pris en backup par RMAN (sans catalogue)?

Cet article est la suite de celui concernant la sauvegarde d'un catalogue RMAN (sous ASM). Il s'agit ici de restaurer la BD (sous ASM) qui avait été prise en backup par RMAN (sans catalogue). La version utilisée est 11.2.0.1

Cette procédure se base sur le fait que la BD est restaurée sur le serveur initial. Il faut donc l'adapter selon le besoin.

Si la base de données du catalogue n’est plus accessible et que l’on veut la restaurer à partir d’un backup RMAN, il faut connaître son DBID.

1. DÉTERMINER LE DBID DE LA BD À RESTAURER

Pour déterminer le DBID de la base de données à restaurer:

- Il faut voir le contenu des fichiers log de backup.

- Le DBID est donné par le format '%F' du controlfile autobackup.
Dans mon cas, le fichier de backup créé par le «controlfile autobackup» est sous le format «ctl_SID_c-DBID_date» (voir article concernant le backup).

2. S’ASSURER QUE L’INSTANCE ASM EST DÉMARRÉE

Dans une session putty :

ps –ef | grep pmon | grep ASM

3. LANCER RMAN ET POSITIONNER LE DBID

Étant dans l’environnement de la BD du catalogue:

echo $ORACLE_SID -- Le résultat doit être l'instance du catalogue à restaurer

rman target / nocatalog

RMAN> set dbid <DBID>


Note:
Il s’agit du DBID retrouvé à l’étape 1.

4. DÉMARRER UNE INSTANCE FICTIVE

Étant connecté à RMAN et le DBID positionné (session RMAN précédente), démarrer une instance fictive.

RMAN> startup force nomount

Note :
Ce «startup» se fait sans le vrai spfile.
rman utilisera un spfile par défaut pour démarrer une instance dans le but de restaurer le backup du spfile pris en backup avec le «controlfile autobackup»

Noter que cette étape créera une arborescence DB_UNKNOWN dans ASM (avec ASMCMD, vous verrez une arborescence DB_UNKNOWN au niveau des diskgroups).

5. RESTAURER LE SPFILE

Étant connecté à RMAN et le DBID positionné (session RMAN précédente), restaurer le spfile pris en backup avec le «controlfile autobackup» :
-- J'utilise le type SBT_TAPE car mon backup a été fait sur TAPE.

run {
allocate channel ch00 type 'SBT_TAPE';
SET CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE 'SBT_TAPE' TO 'ctl_%d_%F.back';
send 'NB_ORA_SERV=pellan, NB_ORA_POLICY=_RMAN_CAT11GR2, NB_ORA_CLIENT=udl001';
restore spfile from autobackup db_name='CAT11GR2';
shutdown immediate;
release channel ch00;
}

Note :
Les éléments en rouge sont à adapter. Selon votre cas, vous n'aurez certainement pas besoin de tous ces éléments. Le format du «controlfile autobackup» est celui qui a été utilisé pour faire le backup.

Sortir de la session RMAN.

RMAN> exit;

6. DÉMARRER L’INSTANCE AVEC LE SPFILE RESTAURÉ

Étant dans l’environnement de la BD du catalogue:

echo $ORACLE_SID -- Le résultat doit être l'instance du catalogue à restaurer

sqlplus / as sysdba
SQL> startup nomount;

7. ENLEVER LA VALEUR DU PARAMETRE «DB_CREATE_FILE_DEST» ET REDEMARRER L’INSTANCE

Note :
Enlever la valeur du paramètre «db_create_file_dest» sinon tous les fichiers de données seront restaurés à l'emplacement donné par la valeur de ce paramètre.

Étant dans la session SQLPLUS précédente, modifier la valeur du paramètre «db_create_file_dest» et redémarrer l’instance comme suit:

Faire un «show parameter» et prendre en copie la valeur actuelle :

SQL> show parameter db_create_file_dest;

Modifier la valeur et redémarrer l’instance:

alter system reset db_create_file_dest scope=spfile;
shutdown immediate;
startup nomount;

8. LANCER RMAN ET POSITIONNER LE DBID

Étant dans l’environnement de la BD du catalogue:

echo $ORACLE_SID -- Le résultat doit être l'instance du catalogue à restaurer

rman target / nocatalog

RMAN> set dbid <DBID>

Note:
Il s’agit du DBID retrouvé à l’étape 1.

9. RESTAURER LA BD

Étant connecté à RMAN et le DBID positionné (session RMAN précédente), restaurer la bd:

run {
allocate channel ch00 type 'SBT_TAPE';
SET CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE 'SBT_TAPE' TO 'ctl_%d_%F.back';
send 'NB_ORA_SERV=pellan, NB_ORA_POLICY=_RMAN_CAT11GR2, NB_ORA_CLIENT=udl001';
restore controlfile from autobackup db_name='CAT11GR2';
ALTER DATABASE MOUNT;
allocate channel ch01 type 'SBT_TAPE';
allocate channel ch02 type 'SBT_TAPE';
restore database; -- Mettre des options en fonction du point jusqu'auquel l'on veut restaurer
recover database; -- Mettre des options en fonction du point jusqu'auquel l'on veut restaurer
release channel ch00;
release channel ch01;
release channel ch02;
}

Note :
Les éléments en rouge sont à adapter. Selon votre cas, vous n'aurez certainement pas besoin de tous ces éléments. Le format du «controlfile autobackup» est celui qui a été utilisé pour faire le backup.

10. OUVRIR LA BD AVEC «RESETLOGS» PUIS L’ARRÊTER

Étant connecté à RMAN et le DBID positionné (session RMAN précédente), ouvrir la bd puis l’arrêter :

RMAN> alter database open resetlogs;
RMAN> shutdown immediate;


Sortir de la session RMAN.

RMAN> exit;

11. DÉMARRER LA BD AVEC SRVCTL

Si vous utilisez Oracle Restart, démarrer la BD avec la commande srvctl.

Étant dans l’environnement de la BD du catalogue:

echo $ORACLE_SID -- Le résultat doit être l'instance du catalogue restaurée

srvctl start database -d $ORACLE_SID

Si la BD n'est pas déjà enregistrée auprès d'oracle restart, il faut d'abord l'enregistrer:

srvctl add database -d $ORACLE_SID -o $ORACLE_HOME -n $ORACLE_SID -p '+SYSDG01/CAT11GR2/spfileCAT11GR2.ora' -s open -t immediate

12. REMETTRE LE PARAMÈTRE «DB_CREATE_FILE_DEST»

Étant dans le bon environnement:
echo $ORACLE_SID -- Le résultat doit être l'instance du catalogue à restaurée

sqlplus / as sysdba
SQL> alter system set db_create_file_dest='+DISKGROUP' scope=both;
SQL> exit;

Note :
Remplacer «DISKGROUP» par la valeur prise en copie au point 7.

13. RECRER LE TABLESPACE TEMPORAIRE

Il se peut qu'à la fin du RESTORE le « tempfile » indique le diskgroup mais pas le fichier (à valider).

Pour vérifier :

sqlplus / as sysdba
SQL> select file#, status, name from v$tempfile;

FILE# STATUS NAME
1 ONLINE +SYSDG01

On doit donc recréer complètement le tablespace « temp ». Ne pas oublier de spécifier la taille du tablespace temporaire.

sqlplus / as sysdba

SQL> CREATE TEMPORARY TABLESPACE TEMP01 TEMPFILE '+SYSDG01' AUTOEXTEND ON NEXT 100M MAXSIZE 3500M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1024K;

SQL> ALTER DATABASE DEFAULT TEMPORARY TABLESPACE TEMP01 ;
SQL> DROP TABLESPACE TEMP INCLUDING CONTENTS AND DATAFILES ;
SQL> ALTER TABLESPACE TEMP01 RENAME TO TEMP ;

SQL> SELECT * FROM DATABASE_PROPERTIES where PROPERTY_NAME='DEFAULT_TEMP_TABLESPACE';
sql> select file#, status, name from v$tempfile;
sql> exit;


Hope it helps....

Comment utiliser Oracle Single Sign-On (SSO) avec Oracle Fusion Middleware (OFM) 11g?

Il n'y a pas de Single Sign-ON (SSO) inclus dans Oracle Fusion Middleware (OFM) 11g.
Par conséquent, si l'on désire utiliser cette composante dans un environnement OFM 11g, oracle recommande d'utiliser une version 10g de SSO pour cohabiter avec les composantes 11g d'OFM.

Cet article explique comment installer donc ce SSO 10g avec OFM 11g.

La Note How to Install SSO with Oracle Fusion Middleware 11g [ID 1069426.1] donne plus de détails à ce sujet.

Cette note fait référence au chapitre 11 du document d'installation d'oracle identity management 11g:
http://download.oracle.com/docs/cd/E14571_01/install.1111/e12002/sso_das.htm#CIHEGHIG

En gros, il faut savoir qu'oracle a créé un nouveau Metadata Repository Creation Assistant (MRCA 10.1.4.3.1). Cette version de MRCA permet d'installer un SSO 10.1.4.x avec un «Oracle Internet Directory» (OID) 11g. Sans cette version spéciale de MRCA, cette configuration n'est pas possible.
Il faut aussi savoir que cette version de MRCA n'existe que pour les plateformes Linux x86 et Windows x86.
Il faut donc l'exécuter à distance pour se connecter à n'importe quelle version certifiée de base de données Oracle (10.2.0.4+, 11.1.0.7+, 11.2.0.1+) pour créer le référentiel.

Suivre donc le lien http://download.oracle.com/docs/cd/E14571_01/install.1111/e12002/sso_das.htm#CIHEGHIG pour installer un SSO + DAS 10g avec un OID 11g.

Notes:
SSO: Single Sign-On
DAS: Delegated Administration Services
OID: Oracle Internet Directory

jeudi 16 septembre 2010

Comment migrer les usagers d'un OID vers un autre OID?

1. Exporter les usagers et leurs attributs dans un fichier :

Syntaxe :
ldapsearch -h <oid_host> -p <port> -D "cn=orcladmin" -w <password> -L -s one -b “cn=users,dc=yapson,dc=com" -z 1000 "cn=*" dn sn cn uid userpassword objectclass > users.ldif

Notes:
• -z: is for size limit which means the number of users you want to export.
• “cn=*”: the search filter in our case we want all of them .
• You can define what attributes you want to be exported with the user by adding the attribute name after the search filter e.g: "cn=*" dn sn cn uid userpassword objectclass
• Users.ldif: the name of the export file.
Now in case you want all attributes, simply don't write any attribute after search filter..:)


Exemple (export des usagers avec tous leurs attributs dans le fichier «users_edm_unit.ldif»):

ldapsearch -h gauguin -p 389 -D "cn=orcladmin" -w <password> -L -s one -b “cn=Users,dc=yapson,dc=com" "cn=*" > users_edm_unit.ldif

Note:
Demander à un admin OAS de le faire si vous n'avez pas le mot de passe de «orcladmin»

2. Importer le fichier ldif généré précédemment dans le nouvel OID

• Transférer le fichier ldif généré précédemment sur le serveur cible (en environ unix, le transfert doit se faire en mode ASCII)
• Importer le fichier dans le nouvel OID

Syntaxe :
ldapadd -h <oid_host> -p <oid_port> -D "cn=orcladmin" -w <password> -c -v -f users.ldif

Exemple:

ldapadd -h <nouv_oid_host> -p <port> -D "cn=orcladmin" -w <password> -c -v -f users_edm_unit.ldif

Comment migrer les connexions discoverer d'une instance OAS vers une autre instance OAS?

Pour exporter et importer les connexions discoverer, l'on a besoin du mot de passe de l'usager ORASSO.

Pour retrouver le mot de passe de l’usager ORASSO :

ldapsearch -h <oid_host> -p <oid_port> -D cn=orcladmin -w <password> -b "cn=IAS,cn=Products,cn=OracleContext" -s sub -v OrclresourceName=ORASSO grep orclpasswordattribute

a. Exporter les connexions discoverer de l’installation source:

Sur le serveur source, exécuter la commande suivante:

<oracle_home>/sso/bin/ssomig -s ORASSO -p <orasso_password> -c <src_tns_alias> -export

Où:
• <orasso_password> est le mot de passé de ORASSO.
• <src_tns_alias> est le nom de service de la bd dans laquelle le SSO source a été installé.

Si les installations source et cible sont sur des serveurs différents, copier les fichiers suivants du serveur source vers le serveur cible (répertoire $ORACLE_HOME/sso/log ou semblable):
• Le fichier dump (*.dmp) et le fichier log.

b. Importer les connexions discoverer au niveau de l’installation cible :

• Sur le serveur cible, retrouver le mot de passé de l’usager ORASSO (syntaxe à l’étape précédente)..

• Sur le serveur cible, exécuter la commande suivante:

<oracle_home>/portal/admin/plsql/sso/ssomig -s ORASSO -p <orasso_password> -c <dst_tns_alias> -import -merge -discoforce

Note importante concernant le processus d’import :

Il se peut que rien ne se passe lorsqu’on lance l’import avec ssomig. Cela peut être dû à la version d’import utilisée par ssomig versus la version de la BD. Voir Note 392005.1 pour plus de details.

Si cela arrive, voir doc ci-dessous:

Using an earlier version of the import utility against a later
version of the database
will hang. That is if you are using a 9.2.0.6 for
example against a 10.2 database,
the import will hang. The ssomig utility is
just a wrapper script for the database import.
The solution is to use the
import utility that is the same version as that of your target database.
Thus if you target database is 10.2.0 then your import utility should also
be 10.2.0
Possible ways to achieve this:
You can install the 10.2
utility into a separate oracle home on your middle tier.
Then setup your
environment so that the ssomig will pickup the 10.2 import utility.
Transfer
the dump file to the Database Server and manually perform the import.
Option
1 would be the recommended solution.
The only problem is that in this case I
have to to run the ssomig-command in the ORACLE_HOME from the
infrastructure-database, and this is in this case not the infrastructure-home.
Dirty trick which solved this inconvenience:
- Copy the complete sso AND
the perl-directory (save the old-one !!) from the infrastructure-home to the
database-home, and run the ssomig-script from there.
Don’t forget to
activate the old perl-directory again after you have done this!

lundi 13 septembre 2010

Processus «defunct» ou «Zombie» générés par l'agent OEM 10.2.0.5

Ce problème m'est arrivé avec la version 10.2.0.5

Il arrive que l'agent OEM génère des processus de type «defunct» ou «zombie».

Le fichier $AGENT_HOME/sysman/log/emagent.trc montre les erreurs suivantes:

2010-09-13 07:01:07,807 Thread-239619 ERROR command: failed to write to stdin of process 20697: (errno=32: Broken pipe)
2010-09-13 07:01:19,029 Thread-239564 ERROR command: failed to write to stdin of process 20932: (errno=32: Broken pipe)
2010-09-13 07:01:19,030 Thread-239564 ERROR fetchlets.oslinetok: Error writing input stream for the java external fetchlet
2010-09-13 07:01:19,030 Thread-239564 ERROR engine: [oracle_database,D018.WORLD,windowsPlatform] : nmeegd_GetMetricData failed : Error writing input stream for OS fetchlet
2010-09-13 07:01:19,030 Thread-239564 WARN collector: Error exit. Error message: Error writing input stream for OS fetchlet

Pour régler le problème, suivre la note 820794.1 DrivePerm and Wintools Metrics are Failing on 10.2.0.5 Grid Control Agents.

Les recommandations consistent à mettre en commentaire les lignes STDINEM_TARGET_USERNAME et STDINEM_TARGET_PASSWORD des métriques suivantes:

a)windowsPlatform
b)drivePerm
c)domainUsersGrp
d)wintools

Rechercher chacune de ces metriques dans le fichier $AGENT_HOME/sysman/admin/metadata/instance.xmlp. Pour chacune de ces métriques, mettre les propriétés STDINEM_TARGET_USERNAME et STDINEM_TARGET_PASSWORD en commentaire comme suit:

<!-- Workaround for BUG 8496773 <Property NAME="STDINEM_TARGET_USERNAME" SCOPE="INSTANCE">UserName</Property> -->
<!--Workaround for BUG 8496773 <Property NAME="STDINEM_TARGET_PASSWORD" SCOPE="INSTANCE">password</Property> -->

Note:
Pour régler le problème, l'on peut aussi appliquer le patch 8235910 au AGENT_HOME ou appliquer le PSU 10.2.0.5.3.

vendredi 3 septembre 2010

Oracle 11g - Mots de passe majuscule/miniscule

Avec oracle 11g, les mots de passe des usagers respectent les caratères majuscules et miniscules (case sensitive).

Cela est est dû au fait que la valeur par défaut du paramètre d'initialisation SEC_CASE_SENSITIVE_LOGON est TRUE.

Il faut donc mettre la valeur à FALSE pour désactiver cette option et revenir au comportement d'avant 11g (case insensitive).

ALTER SYSTEM SET SEC_CASE_SENSITIVE_LOGON = FALSE SCOPE=BOTH;

Note:
  1. Les utilisateurs importés d'une BD 10g dans une BD 11g gardent leur ancien comportement par rapport à leur mots de passe (case insensitive).
    Cela veut dire que quelque soit la valeur du paramètre SEC_CASE_SENSITIVE_LOGON, ces utilisateurs ne sont pas concernés (leurs mots de passe restent case insensitive). Ils prennent le comportement de la 11g aussitôt que leur mot de passe est modifié dans la BD 11g.
  2. Interroger la colonne password_versions de la vue DBA_USERS pour voir le comportement du mot de passe de chaque usager:
    - Pour un utlisateur qui vient juste d'être importé de la 10g, la valeur de cette colonne sera 10G (le mot de pass est case insensitive)
    - Aussitôt que le mot de passe est modifé pour cet utilisateur, la valeur devient 10G 11G (le mot de passe devient case sensitive)
    - Pour un utilisateur nouvellement créé dans la bd 11g, la valeur de la colonne est 11G (le mot de passe est case sensitive)

Pour créer un password file (pour les utiliseurs avec privilèges SYSDBA et SYSOPER) avec un mot de passe «case insensitive», utiliser l'option «ignorecase=y». Lorsque «ignorecase=n» le mot de passe est «case sensitive».
La valeur par défaut est «n».


orapwd file=orapwDB11G entries=10 ignorecase=y password=mypassword


Pour ceux qui utilisent des mots de passe associés à leurs database links, ceci pourrait vous interesser:
- 11g to 11g: The database link must be created with the password in the correct case to match the remote users password.
- 11g to Pre-11g: The database link can be created with the password in any case as case is ignored by the remote database.
- Pre-11g to 11g: The remote user must have its password modified to be totally in upper case, as this is how it will be stored and passed by the Pre-11g database.

Problème de démarrage d'un agent OEM 10.2.0.5

En essayant de démarrer un agent OEM 10.2.0.5 j'ai été confronté au problème suivant:

oracle@udl001:/ucl03a_u01/home/dba/oracle/product/agent10g/sysman/log> emctl start agent
Oracle Enterprise Manager 10g Release 5 Grid Control 10.2.0.5.0.
Copyright (c) 1996, 2009 Oracle Corporation. All rights reserved.
Starting agent ..................................................................... failed.
EMAgent is Thrashing. Exiting watchdog
Consult the log files in: /ucl03a_u01/home/dba/oracle/product/agent10g/sysman/log
oracle@udl001:/ucl03a_u01/home/dba/oracle/product/agent10g/sysman/log>

Voir plus particulièrement le fichier $AGENT_HOME/sysman/log/emagent.log

Dans mon cas, cela était dû à deux principaux problèmes:
1 - Certaines BD qui n'existaient plus sur le serveur en question figuraient toujours dans le fichier $AGENT_HOME/sysman/emd/targets.xml.
2 - Pour d'autres BD le mot de passe de l'usager DBSNMP n'était plus correct

Pour corriger le problème, il m'a fallu supprimer manuellement du fichier $AGENT_HOME/sysman/emd/targets.xml tous les TARGETS associés aux BD à problème.

Mais pour éviter les erreurs humaines et ne pas corrompre le fichier $AGENT_HOME/sysman/emd/targets.xml, l'on peut suivre la note metalink 365252.1 How To Recreate a Targets.xml File in Grid Control 10.2.x Using 'agentca' Commands
pour le recréer.

Après avoir obtenu un fichier targets.xml neuf, il a suffi de relancer la commande pour démarrer l'agent:

oracle@udl001:/ucl03a_u01/home/dba/oracle/product/agent10g/sysman/emd> emctl start agent
Oracle Enterprise Manager 10g Release 5 Grid Control 10.2.0.5.0.
Copyright (c) 1996, 2009 Oracle Corporation. All rights reserved.
Starting agent ................... started.
oracle@udl001:/ucl03a_u01/home/dba/oracle/product/agent10g/sysman/emd>


Une fois l'agent démarré, ne pas oublier de faire la redécouverte des targets soit dans la console OEM, soit en utilisant l'option «-d» de la commande «agentca».

Comment retourner au prompt unix après un telnet?

Lorsqu'on utilise la commande telnet pour vérifier l'accessibilité à un serveur par un port donné, l'on peut se poser la question de savoir comment revenir au prompt unix.

La solution est d'utiliser les touches CTRL et ] pour avoir le prompt telnet> puis de saisir quit pour sortir.

Exemple:

oracle@nobel:/nobel_u01/home/dba/oracle> telnet udl001 3872
Trying 10.100.78.168...
Connected to udl001.mtq8.min8.labo.
Escape character is '^]'.

Appuyer sur CTRL et ] pour avoir le prompt telnet:

oracle@nobel:/nobel_u01/home/dba/oracle> telnet udl001 3872
Trying 10.100.78.168...
Connected to udl001.mtq8.min8.labo.
Escape character is '^]'.
^]
telnet>


Saisir quit pour sortir:

oracle@nobel:/nobel_u01/home/dba/oracle> telnet udl001 3872
Trying 10.100.78.168...
Connected to udl001.mtq8.min8.labo.
Escape character is '^]'.
^]
telnet> quit
Connection to udl001.mtq8.min8.labo closed.
oracle@nobel:/nobel_u01/home/dba/oracle>

jeudi 2 septembre 2010

Comment sauvegarder le catalogue RMAN lorsque la BD est sous ASM?

Note:
Cet article a été rédigé en me basant sur la version 11gR2

La méthode de sauvegarde de bd recommandée par Oracle est l'utilisation de RMAN.
Il ne faut cependant pas oublier de sauvegarder aussi la bd qui habrite le catalogue RMAN. La méthode standard lorsque ASM n'est pas utilisé pour cette bd est d'utiliser le «user-managed backup». Cela consiste à mettre la bd entière ou les tablespaces en mode «begin backup» et de copier les fichiers de données à l'aide des commandes de l'OS.

Mais qu'en est-il lorsqu'ASM est utilisé pour cette BD?

Lorsqu'on utilise ASM, on ne peut plus faire de copie de datafiles par les commandes de l'OS. Il faut donc trouver une autre manière de sauvegarder la bd du catalogue RMAN.

Pour répondre à cette préoccupation, Oracle propose d'utiliser RMAN pour sauvegarder la bd du catalogue RMAN. Mais cette sauvegarde RMAN se fera sans catalogue (c'est à dire que les control files de la bd qui seront utilisés pour sauvegarder les metadonnées de la sauvegarde).

Procéder comme suit pour sauvegarder la bd du catalogue RMAN:

1 - Configurer le paramètre AUTOBACKUP de rman de sorte à prendre en copie le control file et le spfile:

oracle@udl001:/ucl03a_u01/home/dba/oracle/backup/CAT11GR2> . oraenv
ORACLE_SID = [BD11201] ? CAT11GR2
The Oracle base for ORACLE_HOME=/ucl03a_u01/home/dba/oracle/product/11.2.0.1.0 is /udl001_u01/home/dba/oracle
oracle@udl001:/ucl03a_u01/home/dba/oracle/backup/CAT11GR2>
-- CAT11GR2 est la bd du catalogue RMAN


oracle@udl001:/ucl03a_u01/home/dba/oracle> rman target /
Recovery Manager: Release 11.2.0.1.0 - Production on Jeu. Sept. 2 14:34:50 2010
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
connected to target database: CAT11GR2 (DBID=546181866)
RMAN>

a - Faire un «show all» pour voir les paramètres actuels:

RMAN> show all;

using target database control file instead of recovery catalog
RMAN configuration parameters for database with db_unique_name CAT11GR2 are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION ON;
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/ucl03a_u01/home/dba/oracle/product/11.2.0.1.0/dbs/snapcf_CAT11GR2.f'; # default

RMAN>

b - Mettre le paramètre AUTOBACKUP à ON:

RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
new RMAN configuration parameters:
CONFIGURE CONTROLFILE AUTOBACKUP ON;
new RMAN configuration parameters are successfully stored
RMAN>

Si la sauvegarde doit se faire sur TAPE:

RMAN>CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE SBT_TAPE TO 'ctl_%d_%F.back';
new RMAN configuration parameters:
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE 'SBT_TAPE' TO 'ctl_%d_%F.back';
new RMAN configuration parameters are successfully stored
RMAN>

Si la sauvegarde doit se faire sur disque:

RMAN> CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/ucl03a_u01/home/dba/oracle/backup/CAT11GR2/CTL/ctl_%d_%F.back';

new RMAN configuration parameters:
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/ucl03a_u01/home/dba/oracle/backup/CAT11GR2/CTL/ctl_%d_%F.back';
new RMAN configuration parameters are successfully stored
RMAN>

Note:

Pour remettre la valeur par défaut:

RMAN> CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE SBT_TAPE CLEAR;
old RMAN configuration parameters:
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE 'SBT_TAPE' TO 'ctl_%d_%F.back';
RMAN configuration parameters are successfully reset to default value

RMAN> CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK CLEAR;
old RMAN configuration parameters:
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/ucl03a_u01/home/dba/oracle/backup/CAT11GR2/CTL/ctl_%d_%F.back';
RMAN configuration parameters are successfully reset to default value

RMAN> CONFIGURE CONTROLFILE AUTOBACKUP OFF;

old RMAN configuration parameters:
CONFIGURE CONTROLFILE AUTOBACKUP ON;
new RMAN configuration parameters:
CONFIGURE CONTROLFILE AUTOBACKUP OFF;
new RMAN configuration parameters are successfully stored

2 - Une fois les paramètres positionnés, l'on peut lancer la sauvegarde comme suit (ceci est juste un exemple):
-- La commande «tee» ajoutée permet de rediriger le log dans un fichier

rman target / nocatalog | tee /ucl03a_u01/home/dba/oracle/backup/CAT11GR2/LOG/backup_rman_cat11gr2.log
run{
allocate channel c1 type disk
format '/ucl03a_u01/home/dba/oracle/backup/CAT11GR2/DBF/df_%U.bak';
backup incremental level=0 cumulative
database;
sql 'alter system archive log current';
release channel c1;
allocate channel c2 type disk
format '/ucl03a_u01/home/dba/oracle/backup/CAT11GR2/ARCH/arch_%U.bak';
backup
filesperset 10
archivelog all;
release channel c2;
}

Exemple:

oracle@udl001:/ucl03a_u01/home/dba/oracle> rman target / nocatalog | tee /ucl03a_u01/home/dba/oracle/backup/CAT11GR2/LOG/backup_rman_cat11gr2.log

Recovery Manager: Release 11.2.0.1.0 - Production on Jeu. Sept. 2 14:56:14 2010

Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.

connected to target database: CAT11GR2 (DBID=546181866)
using target database control file instead of recovery catalog

RMAN> run{
2> allocate channel c1 type disk
format '/ucl03a_u01/home/dba/oracle/backup/CAT11GR2/DBF/df_%U.bak';
backup incremental level=0 cumulative
database;
sql 'alter system archive log current';
release channel c1;
3> allocate channel c2 type disk
4> format '/ucl03a_u01/home/dba/oracle/backup/CAT11GR2/ARCH/arch_%U.bak';
backup
filesperset 10
archivelog all;
5> 6> release channel c2;
}
7> 8> 9> 10> 11> 12> 13> 14>
allocated channel: c1
channel c1: SID=334 device type=DISK

Starting backup at 2010-09-02 14:57:08
channel c1: starting incremental level 0 datafile backup set
channel c1: specifying datafile(s) in backup set
input datafile file number=00002 name=+SYSGRP01/cat11gr2/datafile/sysaux.256.714929507
input datafile file number=00001 name=+SYSGRP01/cat11gr2/datafile/system.258.714929633
input datafile file number=00005 name=+DATAGRP01/cat11gr2/datafile/rman_di01.311.714929707
input datafile file number=00003 name=+SYSGRP01/cat11gr2/datafile/undotbs1.259.714929827
input datafile file number=00007 name=+DATAGRP01/cat11gr2/datafile/admtec_d01.259.714929827
input datafile file number=00006 name=+DATAGRP01/cat11gr2/datafile/admtec_i01.310.714929707
input datafile file number=00004 name=+SYSGRP01/cat11gr2/datafile/users.257.714929507
channel c1: starting piece 1 at 2010-09-02 14:57:10
channel c1: finished piece 1 at 2010-09-02 14:57:35
piece handle=/ucl03a_u01/home/dba/oracle/backup/CAT11GR2/DBF/df_0elmt2u5_1_1.bak tag=TAG20100902T145708 comment=NONE
channel c1: backup set complete, elapsed time: 00:00:25
Finished backup at 2010-09-02 14:57:35

Starting Control File and SPFILE Autobackup at 2010-09-02 14:57:35
piece handle=/ucl03a_u01/home/dba/oracle/backup/CAT11GR2/CTL/ctl_CAT11GR2_c-546181866-20100902-00.back comment=NONE
Finished Control File and SPFILE Autobackup at 2010-09-02 14:57:36

sql statement: alter system archive log current

released channel: c1

allocated channel: c2
channel c2: SID=334 device type=DISK

Starting backup at 2010-09-02 14:57:39
current log archived
channel c2: starting archived log backup set
channel c2: specifying archived log(s) in backup set
input archived log thread=1 sequence=172 RECID=386 STAMP=725296879
input archived log thread=1 sequence=173 RECID=388 STAMP=725321525
input archived log thread=1 sequence=174 RECID=390 STAMP=725393479
input archived log thread=1 sequence=175 RECID=391 STAMP=725412997
input archived log thread=1 sequence=176 RECID=393 STAMP=725479953
input archived log thread=1 sequence=177 RECID=396 STAMP=725493717
input archived log thread=1 sequence=178 RECID=398 STAMP=725547663
input archived log thread=1 sequence=179 RECID=399 STAMP=725566441
input archived log thread=1 sequence=180 RECID=402 STAMP=728423395
input archived log thread=1 sequence=181 RECID=403 STAMP=728423395
channel c2: starting piece 1 at 2010-09-02 14:57:42
channel c2: finished piece 1 at 2010-09-02 14:57:57
piece handle=/ucl03a_u01/home/dba/oracle/backup/CAT11GR2/ARCH/arch_0glmt2v5_1_1.bak tag=TAG20100902T145739 comment=NONE
channel c2: backup set complete, elapsed time: 00:00:15
channel c2: starting archived log backup set
channel c2: specifying archived log(s) in backup set
input archived log thread=1 sequence=182 RECID=405 STAMP=728423398
input archived log thread=1 sequence=183 RECID=407 STAMP=728425223
input archived log thread=1 sequence=184 RECID=410 STAMP=728425249
input archived log thread=1 sequence=185 RECID=411 STAMP=728425279
input archived log thread=1 sequence=186 RECID=414 STAMP=728425306
input archived log thread=1 sequence=187 RECID=415 STAMP=728425337
input archived log thread=1 sequence=188 RECID=417 STAMP=728425364
input archived log thread=1 sequence=189 RECID=419 STAMP=728425391
input archived log thread=1 sequence=190 RECID=422 STAMP=728425419
channel c2: starting piece 1 at 2010-09-02 14:57:58
channel c2: finished piece 1 at 2010-09-02 14:58:13
piece handle=/ucl03a_u01/home/dba/oracle/backup/CAT11GR2/ARCH/arch_0hlmt2vl_1_1.bak tag=TAG20100902T145739 comment=NONE
channel c2: backup set complete, elapsed time: 00:00:15
channel c2: starting archived log backup set
channel c2: specifying archived log(s) in backup set
input archived log thread=1 sequence=191 RECID=424 STAMP=728425448
input archived log thread=1 sequence=192 RECID=425 STAMP=728425472
input archived log thread=1 sequence=193 RECID=427 STAMP=728425496
input archived log thread=1 sequence=194 RECID=430 STAMP=728431301
input archived log thread=1 sequence=195 RECID=431 STAMP=728488823
input archived log thread=1 sequence=196 RECID=433 STAMP=728531251
input archived log thread=1 sequence=197 RECID=436 STAMP=728604191
input archived log thread=1 sequence=198 RECID=438 STAMP=728665058
input archived log thread=1 sequence=199 RECID=439 STAMP=728665059
channel c2: starting piece 1 at 2010-09-02 14:58:14
channel c2: finished piece 1 at 2010-09-02 14:58:21
piece handle=/ucl03a_u01/home/dba/oracle/backup/CAT11GR2/ARCH/arch_0ilmt305_1_1.bak tag=TAG20100902T145739 comment=NONE
channel c2: backup set complete, elapsed time: 00:00:07
Finished backup at 2010-09-02 14:58:21

Starting Control File and SPFILE Autobackup at 2010-09-02 14:58:21
piece handle=/ucl03a_u01/home/dba/oracle/backup/CAT11GR2/CTL/ctl_CAT11GR2_c-546181866-20100902-01.back comment=NONE
Finished Control File and SPFILE Autobackup at 2010-09-02 14:58:22

released channel: c2

RMAN>

On voit bien qu'une copie du control file et du spfile a été prise à la fin du backup.

Dans un prochain article, l'on verra comment restaurer un tel backup.