Oracle Live

06/05/2016

Montar Filesystem compartido con DBFS

Filed under: Golden Gate,Laboratorios — mogukiller @ 11:04 am
Tags:

Aprovechando que estoy trabajando con Exadatas voy a explicar como montar un filesystem compartido que se monten o desmonte dependiendo del role de la base de datos.

Montar un filesystem compartido entre la primaria y la standby es el primer paso para configurar Golden Gate en HA. La nota de referencia que he utilizado es: Configuring DBFS on Oracle Exadata Database Machine (Doc ID 1054431.1).

Hay que destacar la utilización de dbcli es una herramienta de configuracion que se utiliza para ejecutar en paralelo sentencias en los nodos de un cluster. Para poder utilizarla tenemos que tener en cuenta dos cosas: generar un fichero donde indiquemos los nodos que componen nuestro cluster y generar una public key para las conexiones ssh.

'nota:En mi caso, parto de un entorno con libfuse configurado.'

1.- Creo el tablespace que albergara el contenido del filesystem.

SQL> CREATE BIGFILE TABLESPACE "OGG_DBFS_MOGU" DATAFILE SIZE 10G AUTOEXTEND OFF; 

2.- Creamos un usuario con cuota en ese tablespace.

SQL> CREATE USER "OGG_DBFS_MOGU" IDENTIFIED BY OGG_DBFS_MOGU DEFAULT TABLESPACE "OGG_DBFS_MOGU" TEMPORARY TABLESPACE "TMP_MOGU0_1";
SQL> ALTER USER OGG_DBFS_MOGU quota unlimited on OGG_DBFS_MOGU;
SQL> GRANT CREATE SESSION, CREATE TABLE, CREATE VIEW, CREATE PROCEDURE, DBFS_ROLE TO OGG_DBFS_MOGU;

3.- Creamos los objetos necesarios para el filesystem.

SQL> conn OGG_DBFS_MOGU/OGG_DBFS_MOGU
SQL> @?/rdbms/admin/dbfs_create_filesystem OGG_DBFS_MOGU OGG
/*
No errors.
--------
CREATE STORE:
begin dbms_dbfs_sfs.createFilesystem(store_name => 'OGG', tbl_name => 'OGG', tbl_tbs => 'OGG_DBFS_MOGU', lob_tbs => 'OGG_DBFS_MOGU',
do_partition => false, partition_key => 1, do_compress => false, compression => '', do_dedup => false, do_encrypt => false); end;
--------
REGISTER STORE:
begin dbms_dbfs_content.registerStore(store_name=> 'OGG', provider_name => 'sample1', provider_package => 'dbms_dbfs_sfs'); end;
--------
MOUNT STORE:
begin dbms_dbfs_content.mountStore(store_name=>'OGG', store_mount=>'OGG'); end;
--------
CHMOD STORE:
declare m integer; begin m := dbms_fuse.fs_chmod('/OGG', 16895); end;
No errors.
*/

4.- Bajamos de la nota adjunta la ultima version de los scripts para gestionar los filesystem.

cat mount-dbfs-MOGU.conf
/*
    DBNAME=MOGU1
    MOUNT_POINT=/ogg-dbfs-MOGU
    DBFS_USER=ogg_dbfs_mogu
    ORACLE_HOME=/u01/oradb/rdbms1210/121020
    GRID_HOME=/u01/oradb/asm/1210
    LOGGER_FACILITY=user
    MOUNT_OPTIONS=allow_other,direct_io
    PERL_ALARM_TIMEOUT=14
    DBFS_PASSWD=ogg_dbfs_mogu
    DBFS_PWDFILE_BASE=/tmp/.dbfs-passwd.txt
    WALLET=false
    TNS_ADMIN (used only if WALLET=true)
    DBFS_LOCAL_TNSALIAS  (used only if WALLET=true)
*/

5.- Con dcli movemos los ficheros de configuracion a /etc/oracle y los scripts a $CRS_HOME/crs/script a todos los nodos

dcli -g /root/dbs_group -l root -d /etc/oracle -f /tmp/mount/mount-dbfs-MOGU.conf
dcli -g /root/dbs_group -l root chown usodbms:dba /etc/oracle/mount-dbfs-MOGU.conf
dcli -g /root/dbs_group -l root chmod 750 /etc/oracle/mount-dbfs-MOGU.conf

dcli -g /root/dbs_group -l root "ls -ltr /etc/oracle/mount-*-MOGU.conf"
/*
tehol041: -rwxr-x--- 1 usodbms dba 3746 Apr 15 15:03 /etc/oracle/mount-dbfs-MOGU.conf
tehol042: -rwxr-x--- 1 usodbms dba 3746 Apr 15 15:03 /etc/oracle/mount-dbfs-MOGU.conf
*/

dcli -g /root/dbs_group -l root -d /u01/oradb/asm/1210/crs/script -f /tmp/mount/mount-dbfs-MOGU.sh
dcli -g /root/dbs_group -l root chown usodbms:dba /u01/oradb/asm/1210/crs/script/mount-dbfs-MOGU.sh
dcli -g /root/dbs_group -l root chmod 750 /u01/oradb/asm/1210/crs/script/mount-dbfs-MOGU.sh

dcli -g /root/dbs_group -l root "ls -ltr /u01/oradb/asm/1210/crs/script/mount-*-MOGU.sh"
/*
tehol041: -rwxr-x--- 1 usodbms dba 13286 Apr 15 14:45 /u01/oradb/asm/1210/crs/script/mount-dbfs-MOGU.sh
tehol042: -rwxr-x--- 1 usodbms dba 13286 Apr 15 14:45 /u01/oradb/asm/1210/crs/script/mount-dbfs-MOGU.sh
*/

6.- Creamos un servicio del que dependera nuestro recursos

srvctl add service -db MOGU1 -service mogu1_oggserv -role PRIMARY -preferred MOGU11 -available MOGU12
srvctl start service -db MOGU1 -service mogu1_oggserv 

7.- Creamos el recurso con dependencias de este servicio
'nota: Lanzamos el script con el usuario oracle, con las variables de entorno de asm.'
[oracle] # export ORACLE_HOME=$CRS_HOME
[oracle] # export ORACLE_SID=+ASM1
[oracle] # cat >crea_recurso_dbfs.sh
#!/bin/bash
ACTION_SCRIPT=/u01/oradb/asm/1210/crs/script/mount-dbfs-MOGU.sh
RESNAME=oggdbfs_MOGU
DEPNAME=ora.mogu1.mogu_oggserv.svc
ORACLE_HOME=/u01/oradb/asm/1210
PATH=$ORACLE_HOME/bin:$PATH
export PATH ORACLE_HOME
crsctl add resource $RESNAME \
-type cluster_resource \
-attr "ACTION_SCRIPT=$ACTION_SCRIPT, \
CHECK_INTERVAL=30,RESTART_ATTEMPTS=10, \
START_DEPENDENCIES='hard($DEPNAME)pullup($DEPNAME)',\
STOP_DEPENDENCIES='hard($DEPNAME)',\
SCRIPT_TIMEOUT=300"

[oracle] # chmod 777 add-dbfs-resource.sh
[oracle] # ./add-dbfs-resource.sh
/*
When successful, this command has no output.
*/

[oracle] # crsctl stauts resource -t
/*
oggdbfs_mogu                                                 OFFLINE      OFFLINE     
*/

8.- La nota de oracle recomienda reiniciar la base de datos.

[oracle] # srvctl stop database -d mogu1
[oracle] # srvctl start database -d mogu1

9.- Levantamos el recurso
[asm] # crsctl start resource oggdbfs_mogu
/*
CRS-2672: Attempting to start 'oggdbfs_mogu' on 'tehol041'
CRS-2676: Start of 'oggdbfs_mogu' on 'tehol041' succeeded
*/

10.- Con un df -h comprobamos que ha montado el filesystem correctamente.

1 comentario »

  1. […] de un entorno donde ya se han configurado el almacenamiento compartido con dbfs. Aqui el enlace donde se describe el […]

    Pingback por Instalar Gonden Gate en alta disponibilidad | Oracle Live — 06/05/2016 @ 12:27 pm


RSS feed for comments on this post. TrackBack URI

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Crea un blog o un sitio web gratuitos con WordPress.com.

A %d blogueros les gusta esto: