lunes 9 de enero de 2012

Instalación - Oracle Enterprise Manager 12c

Instalación Oracle Enterprise Manager 12c
 
Instalaremos OEM 12C sobre un nodo que previamente había sido parte de un cluster oracle 10g, intentaremos que funcione sobre un portátil (3Gb, 2 cores) virtualizado con virtualbox.

Reutilización de la ip 192.168.0.115 de antigua instalación de OEM Grid Control, así toda la monitorización estaría funcionando hasta el último momento hasta hacer el switch por la nueva.

Se seguirá la guía:


http://www.oracle-base.com/articles/12c/CloudControl12cR1InstallationOnOracleLinux5And6.php

En la creación dbca de una instancia para oem_12c, aparece el error:

ORA-29702: error occurred in Cluster Group Service operation

Se borró el directorio /u01/app/11.2.0/grid después de lanzar el “deinstall -local (que no terminó correctamente)”

Ver enlace:
http://blog.contractoracle.com/2009/08/ora-29702-error-occurred-in-cluster.html



"
cd $ORACLE_HOME/rdbms/lib
make -f ins_rdbms.mk rac_off
make -f ins_rdbms.mk ioracle 

"

Se intenta en nuestro nodo, pero con el siguiente mensaje:

/usr/bin/ld: /u01/app/oracle/product/11.2.0/dbhome_1/lib//libctx11.a(drud.o): don't know how to handle section `' [0x     100]
/u01/app/oracle/product/11.2.0/dbhome_1/lib//libctx11.a: could not read symbols: File format not recognized
collect2: ld devolvió el estado de salida 1
make: *** [/u01/app/oracle/product/11.2.0/dbhome_1/rdbms/lib/oracle] Error 1
 
Se intenta una vez mas el 18/12/2011, con usuario oracle, ubicados en el directorio, y todo correcto, se crean los ejecutables oracle en $ORACLE_HOME/bin y el dbca parece que funciona bien.

Ampliación de espacio para dar cabida a instalación oracle_12c, se añade otro disco de 20GB (dinámico) a la máquina virtualbox y se aplican comandos típicos LVM:

vgdisplay --verbose
fdisk /dev/sdb (n, p, 1, intro, intro, t, 8e (partición Linux VM), w)
partprobe /dev/sdb (para crear el dispositivo /dev/sdb1)
pvcreate /dev/sdb1
vgextend VolGroup00 /dev/sdb1
lvextend -L +10G /dev/VolGroup00/LogVol00
resize2fs /dev/VolGroup00/LogVol00

[root@linux2 software]# df -k
S.ficheros         Bloques de 1K   Usado    Dispon Uso% Montado en
/dev/mapper/VolGroup00-LogVol00
                     27424956  10867584  15141924  42% /
/dev/sda1               101086     19928     75939  21% /boot
tmpfs                   764684         0    764684   0% /dev/shm

Nos quedan 15Gb libres (dejamos 10Gb reservados sin asignar al logVol00 para controlar)

Ahora pasamos los ficheros em12_linux64_disk1of2.zip  y em12_linux64_disk2of2.zip al directorio /u01/software

Seguimos las instrucciones de http://www.oracle-base.com/articles/12c/CloudControl12cR1InstallationOnOracleLinux5And6.php

Nombre de host, cuidado al cambiar valores en /etc/hosts ya que se debe reiniciar el instalador para que coja la nueva configuración de /etc/hosts:

Debe quedar así:
127.0.0.1        linux2.localdomain   linux2

Password administrador: .... (requiere al menos 8 caracteres, siendo 1 numérico)
Datos conexión bbdd: 192.168.0.115 / 1521 / em12c

Revisión instalación, puertos:


Se reciben errores en la parte de configuración que pueden estar relacionados con la lentitud general de la VB, copiamos la VM a otro sistema (Quad-core, 8GB) para ver si conseguimos la instalación completa.
 
Se cambian las rutas del fichero .vbox para que pueda arrancar correctamente desde otra ubicación.

Se le amplia la memoria de la máquina virtual de 1,5Gb a 4Gb y las cpus de 2 a 4, el almacenamiento ahora es local al servidor y no  está montado en un HD USB (antes en el portátil estaba en un HD USB).
 
Se elimina instalación anterior (directorios y entradas en oraInventory/ContentsXML/inventory.xml) incluida las antiguas entradas de RAC:
 
Falla el arranque del listener debido a que quiere notificar a CRS (antigua instalación y no existe), se ve en el listener.log:

“Listener completed notification to CRS on start”

Se arranca correctamente metiendo la siguiente linea en el listener.ora:

SUBSCRIBE_FOR_NODE_DOWN_EVENT_LISTENER=OFF.

Gestión de Xs remotas a través de Xming , para ello, en el servidor:
 
export DISPLAY=192.168.0.197:1.0 (192.168.0.197 es el portátil desde el que lanzaremos la instalación, que se realiza sobre el servidor ubuntu)

Se debe borrar también el esquema SYSMAN_MDS:

<ORACLE_HOME>/sysman/admin/emdrep/bin/RepManager  <HostBasedeDatos> <PuertoListener> <SID/NombreServicio> -action dropall -dbUser <UsuarioBD> -dbPassword <Contraseña BD> -dbRole <Rol Usuario BD> -reposName  <Nombre Repositorio> -reposPassword <ContraseñaRepositorio> -mwHome <MW HOME> -mwOraHome <MW ORA HOME> -oracleHome <ORACLE_HOME>

No conseguimos borrar con este comando, se borran manualmente los usuarios sysman_*, mgmt_view, los sinónimos publicos que apuntaban a ellos.

Una vez se lanza de nuevo el installer:

Fallo en “MDS Schema Configuration”, el los logs aparece:

RCU-6016:Ya existe el prefijo especificado.
RCU-6091:Fallo de validación de prefijo de esquema/nombre de componente.

para corregirlo, se lanza:

“delete from SCHEMA_VERSION_REGISTRY where COMP_NAME='Metadata Services';”,

según post: https://forums.oracle.com/forums/thread.jspa?threadID=1068831

Con ese delete, el “MDS Schema Configuration” se ejecuta correctamente , tras pulsar “reintentar”

Fallo en “Start Oracle Management Service”, se cambian las entradas del host:

127.0.0.1        localhost
192.168.0.115        linux2.localdomain   linux2

Ya que el error aparece en la llamada:

getaddrinfo(localhost , …)  failed (Name or service not known)

Fallo en “Start Oracle Management Service”, ahora parece problema de espacio, se amplia volumen 5GB más:

lvextend -L +5G /dev/VolGroup00/LogVol00
resize2fs /dev/VolGroup00/LogVol00

Y se pulsa sobre reintentar.

Fallo de nuevo en “Start Oracle Management Service”, errores relativos a la lectura del Policy Store, se sigue la nota metalink:

oracle.security.jps.JpsRuntimeException: Cannot Read From Policy Store [ID 1330253.1]

No recuperamos la instalación, se borra todo y se inicia de nuevo, con las siguientes entradas en el /etc/hosts:

192.168.0.115    linux2.localdomain linux2
127.0.0.1       localhost.localdomain localhost

(Borrando los esquemas y tablespaces tb de la bbdd y el registro de la tabla SCHEMA_VERSION_REGISTRY)

Ejecución correcta:

Accesos: https://linux2.localdomain:7802/em
https://linux2.localdomain:7102/console




Usuarios: sysman / ... (clave administrador que introdujimos al principio)
weblogic / welcome (usuario administrador consola weblogic)

Al entrar en "...:7802/em" y logarnos aparece el error:


ADFC-0619: Authorization check failed: 'oracle.jbo.uicli.binding.JUFormDef …

Se observa en el fichero de log: /u01/app/oracle/Middleware/gc_inst/user_projects/domains/GCDomain/servers/EMGC_OMS1/logs/EMGC_OMS1.out

[JpsAuth] Check Permission
         PolicyContext:        [emgc]
         Resource/Target:      [sdk.core.uifwk.template.templateDefPageDef]
         Action:               [view]
         Permission Class:     [oracle.adf.share.security.authorization.RegionPermission]
         Result:               [FAILED]
         For more information on this failure, please set -Djps.auth.debug.verbose=true

Se modifica el fichero jazn-data.xml, situado en : /u01/app/oracle/Middleware/gc_inst/user_projects/domains/GCDomain/servers/EMGC_OMS1/tmp/_WL_user/oracle.security.apm_11.1.1.3.0/p1stos/META-INF
las líneas:

 <class>oracle.security.jps.internal.core.principals.JpsAnonymousRoleImpl</class>
                 <name>anonymous-role</name>

por:

 <class>oracle.security.jps.internal.core.principals.JpsAnonymousRoleImpl</class>
                 <name>Administrators</name>

Ya que el roll anonymous-role no aparece en dicho fichero jazn-data.xml

links:
https://forums.oracle.com/forums/thread.jspa?threadID=2233633
https://forums.oracle.com/forums/thread.jspa?threadID=841951
y bug oracle: Bug 9174870: LOGS INCLUDING A LOT OF ERRORS: [JPSAUTH] CHECK PERMISSION (REGIONPERMISSION)

Se entra en la interfaz de administración (weblogic / welcome)

Se establece la propiedad “-Djps.auth.debug.verbose=true” en los parámetros de arranque de EMGC_OMS1

Se descomenta la parte de jazn-data.xml:

<role-categories>
         <role-category>
           <name>Administrators</name>
           <display-name>Administrators</name>
           <description>Administrators Category</description>
           <members>
             <role-name-ref>APMAdmin</role-name-ref>
           </members>
         </role-category>
       </role-categories>

Sigue apareciendo el mismo error.



Se prueba con https://kr.forums.oracle.com/forums/thread.jspa?threadID=905531

Sin éxito, sigue apareciendo el mismo error.

Se prueba creando usuarios administradores mediante la interfaz de texto emcli, sin éxito.

Pasa otro día, estoy más despejado, ….

Probamos a desabilitar la seguridad ADF según se indica en este post:
https://forums.oracle.com/forums/thread.jspa?threadID=2132032

ENTRAMOS correctamente.

Ficheros modificados:

/u01/app/oracle/Middleware/gc_inst/user_projects/domains/GCDomain/servers/EMGC_OMS1/tmp/_WL_user/oracle.security.apm_11.1.1.3.0/p1stos/adf/META-INF/adf-config.xml
/u01/app/oracle/Middleware/oms/sysman/archives/emgc/deployments/GCDomain/emgc.ear/adf/META-INF/adf-config.xml

Entradas antiguas:
authorizationEnforce="true"
authenticationRequire="true"


Por:

authorizationEnforce="false"
authenticationRequire="false"


En los logs se sigue observanto los errores relativos a los permisos ADF, pero en el frontend ya no se muestra el error ADFC-0619.

domingo 11 de diciembre de 2011

Oracle RAC (migración rápida 10g a 11g) REAL

Describiremos los pasos reales en la migración a Oracle 11g GridInfraestructure a partir de una instalación Oracle RAC 10g,  a partir de la idea de migración del post: http://www.soportedba.com/2011/12/oracle-rac-migracion-rapida-10g-11g.html

Estos pasos también servirían por ejemplo, si ocurre una catástrofe en el RAC antiguo y se pierden todos los nodos y backups (quedando sólo el acceso al almacenamiento).


Pasos básicos para el upgrade de la bbdd: http://onlineappsdba.com/index.php/2009/01/22/upgrade-oracle-database-10g-to-11g-r1-111x/

Antes de la migración se debe “registrar” la bbdd en el RAC, para ello simulamos la creación de una bbdd en otro grupo de discos FRA por ejemplo, con el mismo nombre , para posteriormente cambiar directamente el spfile y los recursos asociados, aunque se podría hacer de otra forma, registrando bien los recursos ...
 
Se hace el switch del init de la bbdd "initdbmaq1.ora" por el antigo pfile (cambiando varios parámetros como cluster_database=no, compatible=11.1.0, eliminar user_dump_dest, backgroup_dump..., etc)


En el proceso de migración, el “catupgrd.sql” se obtiene el error:

TO_NUMBER(value$) != (SELECT tz_version from registry$database))
*
ERROR at line 6:
ORA-00942: table or view does not exist

Que se evitaría habiendo lanzado los pasos previos (motor de la 10g ejecutando el utlu112i.sql) pero como no lo hicimos, lo que se hace es eliminar la comprobación del TZ_VERSION del script que llama el catupgrd.sql que se llama “catupstr.sql”, parece que el proceso de migración avanza correctamente, aunque está claro que podrá haber corrupción en datos almacenados con Timezone o similar.

Ejecución del script upgrade principal correcta:

@?/rdbms/admin/catupgrd.sql

Tras la ejecución de los últimos scripts:

@?/rdbms/admin/utlu112s.sql
@?/rdbms/admin/catuppst.sql
@?/rdbms/admin/utlrp.sql

Todo correcto y todo compilado.

Ahora cambiamos el init para que se utilice el +DATA

create spfile=’+DATA’ from pfile;

ponemos en los initdbmaqX.ora :

SPFILE=’+DATA/DBMAQ/initdbmaq.ora’

Todo arranca y funciona correctamente.

Para deregistrar el spfile y que tenga en cuenta el grupo DATA, (en otro caso, en los arranque se sustituye automáticamente el init* por los de la preinstalación previa apuntando al FRA)
 
srvctl modify database -d dbmaq -p ' ' -a "DATA,FRA"

(ver http://oraganism.wordpress.com/2010/01/02/srvctl-p-option/)

Arracamos el dbconsole:
 
emctl start dbconsole

Aparece un error que evita podamos acceder, recreamos la key:

emctl config emkey -repos -force

Todo correcto, el acceso a los datos correcto, el acceso al EM Database Control correcto.

miércoles 7 de diciembre de 2011

ACFS (error “ADVM/ACFS is not supported on ...")

Mensaje de error tras instalación grid (en ejecución de root.sh)

"ADVM/ACFS is not supported on centos-release-5-6.el5.centos.1"

Para resolverlo, se cambian los ficheros "/etc/issue"
, "redhar-release", ....

http://ivan.kartik.sk/oracle/install_ora11gR2_elinux.html

http://brianbontrager.blogspot.com/2009/09/learning-asm-breakin-rules-or-running.html

Con esta última guia se consigue instalar ACFS para Centos, teniendo presente el tipo de instalación x86 o x86_64:

mkdir /lib/modules/2.6.18-128.el5/extra/usm
cp /u01/app/oragrid/product/11.2.0/grid/install/usm/EL5/i386/2.6.18-8/2.6.18-8.el5-i686/bin/*ko /lib/modules/2.6.18-128.el5/extra/usm
chmod 744
/lib/modules/2.6.18-128.el5/extra/usm

cd /u01/app/oragrid/product/11.2.0/grid/bin
./acfsdriverstate -orahome
/u01/app/oragrid/product/11.2.0/grid version

"ACFS-9205: OS/ADVM,ACFS installed version = 2.6.18-8.el5(i386)/090715.1"

depmod

Oracle RAC (migración rápida 10g a 11g)

Una forma de realizar las migraciones entre Oracle RAC 10g hacia Oracle Grid 11g rápidamente, sería:

1) Se van quitando nodos de un RAC(10g) antiguo y se reinstalan sobre la nueva arquitectura GRID (11g), el sistema debe estar dimensionado de forma que pueda funcionar correctamente con la mitad de nodos.






2) Una vez todo configurado, se apaga el RAC antiguo(antes habrá que ejecutar los scripts de comprobaciones y pre-upgrade indicados por Oracle)  y se ponen visibles los discos para el GRID nuevo, se montan los Disk Groups y se arrancan las bbdd en el nuevo (startup migrate, ... y se deberán lanzar los scripts/procedimientos de migración correspondientes), con lo que se consigue un tiempo de corte mínimo.


3) El resto de nodos del RAC antiguo se van reinstalando e introduciendo en el GRID nuevo.

Sólo en el punto 2 sería necesaria la parada (tiempo de upgrade de las bbdd), pero el tiempo sería mínimo si estuviera todo preparado y probado.

Con esta técnica no existe movimiento real de datos, aunque está claro que se deberán tomar todas las medidas de seguridad oportunas (backups previos, backup de configuraciones, etc).

ASM (comandos amdu y kfed)

Extraído de: http://asmsupportguy.blogspot.com/2011/09/amdu-asm-metadata-dump-utility.html

amdu - ASM Metadata Dump Utility (>=11g)

Comando muy interesante para el análisis de la metadata de discos ASM e incluso extraer los ficheros (datafiles, controlfiles, ...) contenidos en ellos, sin requerir que el Disk Group esté montado o la instancia ASM operativa.

- Extracción del fichero de control del Disk Group DATA :

amdu -diskstring="ORCL:*" -extract DATA.276 -output control.276 -noreport -nodir

- Extracción de un datafile:

amdu -diskstring="ORCL:*" -extract DATA.267 -output NSA_TN_DATA.267 -noreport -nodir

Para saber los nombres de los datafiles, se pueden utilizar comandos ASM (asmcmd) previos, que requieren del montaje de los Disk Groups y disponibilidad de la instancia ASM o se puede utilizar comandos "kfed":

...
for (( i=0; i<256; i++ ))
do
  kfed read /dev/oracleasm/disks/DISK2 aun=8 blkn=$i | grep -1 NSA
done
...

Extraído de: http://asmsupportguy.blogspot.com/2010/04/kfed-asm-metadata-editor.html

kfed - ASM Metadata Editor (>=10g)

Comando muy interesante para leer y modificar la metadata de discos ASM, no requiere que el Disk Group esté montado o la instancia ASM operativa.

cd $ORACLE_HOME/rdbms/lib
make -f ins* ikfed

- Comprobación de que la cabecera del disco asm está bien:

kfed read /dev/oracleasm/disks/DISK4

Si se observa kfbh.type=KFBTYP_INVALID , puede indicar que la cabecera del disco asm está dañada.


RedHat / Centos (comando yum)

-- Para la actualización de nuestros linux RedHat / Centos

cd /etc/yum.repos.d

mv ULN-Base.repo ULN-Base.repo.disabled
wget http://public-yum.oracle.com/public-yum-el4.repo

(modificamos el .repo para habilitar la release que nos convenga)

yum clean all
yum update glibc\*
yum update yum\* rpm\* python\*
yum clean all
yum update
reboot

Otras opciones, por ejemplo, la instalación de oracle-validated (para cambios automáticos de parámetros y demás para ejecución de software Oracle)
yum --enablerepo=el4_u7_base install oracle-validated

Si tenemos algún problema con un kernel parcheado, podemos volver a los anteriores editanto el /etc/grub.conf y eligiendo como kernel default de arranque el antiguo 2.6.9.42 u otro.



LVM (Ampliación de espacio en volumen)

-- Ampliación online de espacio en nodo CentOS Virtualizado (vmware) en volumen local "/"

Se amplia el disco virtualizado en 10G más (a través de la interfaz de gestión vmware), y después se aplican comandos típicos de LVM:


vgdisplay --verbose

fdisk /dev/sda (n, 3, intro, intro, t, 8e (partición Linux VM))

partprobe /dev/sda (para crear el dispositivo /dev/sda3)

pvcreate /dev/sda3

vgextend VolGroup00 /dev/sda3

lvextend -L +10G /dev/VolGroup00/LogVol00

ext2online /dev/VolGroup00/LogVol00