Create and Manage a Tablespace that uses NFS Mounted File System File

1. Documentación en Tahiti -> Masters Book List -> Administrator’s Guide -> 5 Oracle Database Postinstallation Tasks -> Required Product-Specific Postinstallation Tasks -> Configuring and Using Direct NFS Client

En MOS (Metalink) existe una nota con los detalles para configurar Direct NFS en Linux (11g) -> “Step by Step – Configure Direct NFS Client (DNFS) on Linux (11g) [ID 762374.1]“.

2. Existen dos opciones a la hora de almacenar DATAFILES en recursos NFS. Podemos utilizar el cliente interno NFS del SO, o bien, podemos utilizar el driver incluido en el software de Oracle. Para este ejercicio utilizaremos el driver de Oracle conocido como Direct NFS para almacenar los DATAFILES de un TBS de prueba. Más adelante, haremos una prueba con el software NFS de Oracle Linux en el objetivo “Create and Manage as ASM Instance“.

# La primera parte, que es proporcionar el recurso NFS a la máquina OCM, es prácticamente idéntico al objetivo mencionado.
# Creamos la ubicación para alojar los discos NFS. Para ello hacemos los siguientes pasos como root en OCM:
mkdir -p /u01/nfs_storage
vi /etc/exports
# Añadimos la siguiente linea a /etc/exports. (Es importante añadir la opción 'insecure')
/u01/nfs_storage               *(rw,sync,no_wdelay,insecure,insecure_locks,no_root_squash)
# Arrancamos el servicio nfs
chkconfig nfs on
service nfs restart

# Ahora debemos configurar el acceso a los discos NFS
# Ejecutamos estas instrucciones en OCM (como root también)
mkdir -p /u01/nfs_oradata
# Configuramos el fichero /etc/fstab para poder montar el recurso NFS
vi /etc/fstab
# Añadimos la siguiente linea (en esta caso hemos eliminado la opción "actimeo=0" porque no estamos usando un RAC)
ocm:/u01/nfs_storage    /u01/nfs_oradata        nfs     rw,bg,hard,nointr,tcp,vers=3,timeo=600,rsize=32768,wsize=32768        0 0
# Montamos el filesystem, creamos un directorio para los DATAFILES de la BD OCM y damos los permisos adecuados
mount /u01/nfs_oradata
mkdir -p /u01/nfs_oradata/OCM
chown -R oracle:oinstall /u01/nfs_oradata
# Chequeamos que el recurso se ha ya montado correctamente (debemos ver la configuración con sus atributos)
mount

# Ahora vamos a configurar Direct NFS. El cliente del Kernel de Oracle determina los puntos de montaje de dispositivos NFS en este orden:
# 1. $ORACLE_HOME/dbs/oranfstab
# 2. /etc/oranfstab
# 3. /etc/mtab
# Oracle necesita que el recurso esté montado por el propio cliente del Kernel del SO aunque vayamos a usar Direct NFS (vaya chufa, no?)
# Nosotros usaremos sólo '/etc/mtab' (el fichero oranfstab se utiliza para añadir balanceo de carga por varios interfaces)
-- Paramos la BD
SHUTDOWN IMMEDIATE
# Habilitamos Direct NFS (específico de 11gR2)
cd $ORACLE_HOME/rdbms/lib
make -f ins_rdbms.mk dnfs_on
-- Levantamos la BD
STARTUP
-- Validamos que en el ALERT de la BD aparece la siguiente linea indicando que ya está utilizando Direct NFS:
-- # "Oracle instance running with ODM: Oracle Direct NFS ODM Library Version 2.0"

-- Creamos un TBS de prueba en el recurso NFS
CREATE TABLESPACE TESTNFS DATAFILE '/u01/nfs_oradata/OCM/testnfs01.dbf' SIZE 100M;
-- Si volvemos a revisar el ALERT, cuando empieza a utilizar Direct NFS aparecen las siguientes lineas:
-- # Direct NFS: channel id [0] path [ocm] to filer [ocm] via local [] is UP
-- # Direct NFS: channel id [1] path [ocm] to filer [ocm] via local [] is UP

-- Vamos a hacer otras comprobaciones para confirmar que estamos usando Direct NFS (DNFS)
-- Comprobamos la lista de servidores accedidos utilizando DNFS
SELECT * FROM V$DNFS_SERVERS;
-- Comprobamos la lista de ficheros (DATAFILES) abiertos con DNFS (tenemos que ver el que acabamos de crear 'testnfs01.dbf')
SELECT * FROM V$DNFS_FILES;
-- Otras vistas de interés son V$DNFS_CHANNELS (canales disponibles) y V$DNFS_STATS (estadísticas de rendimiento)

-- Ahora deshacemos todo el entuerto
-- Borramos el TBS
DROP TABLESPACE TESTNFS INCLUDING CONTENTS AND DATAFILES;
-- Paramos la BD
SHUTDOWN IMMEDIATE
# Desmontamos el recurso NFS (como root)
umount /u01/nfs_oradata
# Paramos el servicio y deshabilitamos el arranque automático
service nfs stop
chkconfig nfs off
# Borramos los directorios
rm -Rf /u01/nfs_storage
rm -Rf /u01/nfs_oradata
# Borramos las lineas añadidas a /etc/fstab y /etc/export
# Por último, desvinculamos la librería de DNFS del Kernel de Oracle (ejecutamos esto como oracle)
cd $ORACLE_HOME/rdbms/lib
make -f ins_rdbms.mk dnfs_off
-- Levantamos la BD y aquí como si no ha pasado nada
-- En el alert ya no debería aparecer la linea -> "Oracle instance running with ODM: Oracle Direct NFS ODM Library Version 2.0"
STARTUP