Mover Controlfile de ubicación

Hace unos días unos compañeros de oficina me preguntaron como se mueve un archivo de control (controlfile) de ubicación y si es necesario bajar la base de dato. Los pasos necesarios para mover un archivo de control de ubicación son los siguientes:

  1. Obtener ubicación de archivos de control actuales ( con 1 basta).
  2. Modificar archivos de parámetros con la nueva ubicación.
  3. Bajar base de datos de forma normal (shutdown immediate), no se puede mover con la base de datos arriba.
  4. Subir la instancia con la opción nomount con RMAN.
  5. Utilizar el comando “RESTORE CONTROLFILE de RMAN”.
  6. Montar y abrir la base de datos con RMAN

Ubicación ControlFiles

[oracle@nodo01 netapp]$ sqlplus

SQL*Plus: Release 10.2.0.5.0 - Production on Thu Mar 8 18:29:04 2012

Copyright (c) 1982, 2010, Oracle. All Rights Reserved.

Enter user-name: / as sysdba

Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQ>select value

2 from v$parameter
3* where name ='control_files'
/

VALUE
--------------------------------------------------------------------------------
/u02/oradata/netapp/control01.ctl, /u02/oradata/netapp/control02.ctl, /u02/orada
ta/netapp/control03.ctl
SQL>

Respaldar el archivo de paramétros de la base de datos

.

SQL> create pfile='/respaldos/bck_spfilenetapp.ora' from spfile;

File created.

SQL>

Modificar ubicación ControlFile

.

Aqui modificamos el parametro control_file indicando la nueva ubicación.

SQL> alter system set control_files='/u02/ctl/netapp/control01.ctl','/u02/redo/netapp/control02.ctl','/u02/redo/netapp/control03.ctl' scope=spfile;
System altered.
SQL>

Bajar base de datos

Ahora debemos bajar la base de datos de forma normal
 

[oracle@nodo01 netapp]$ sqlplus

SQL*Plus: Release 10.2.0.5.0 - Production on Fri Mar 9 16:40:28 2012

Copyright (c) 1982, 2010, Oracle.  All Rights Reserved.

Enter user-name: / as sysdba

Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL>

Subir instancia en nomount con RMAN

Ahora subimos la base de datos con la opción nomount desde RMAN, esto también lo podriamos hacer desde sqlplus, pero con RMAN utilizamos el comando RESTORE CONTROLFILE para restaurar el archivo de control a la nueva ubicación, recuerden que el archivo de control puede estar en varios lugares (multiplexación), pero el contenido de todos los archivos es el mismo, por lo que con uno basta. Otra cosa importante es que cuando quieren mover el archivo de control no deben utilizar el backup del controlfile, si lo llegan a utilizar tendrán que abrir la base de datos con la opción “OPEN RESETLOGS”.

[oracle@nodo01 netapp]$ rman target /

Recovery Manager: Release 10.2.0.5.0 - Production on Thu Mar 8 18:34:39 2012

Copyright (c) 1982, 2007, Oracle. All rights reserved.

connected to target database (not started)

RMAN> startup nomount

Oracle instance started

Total System Global Area 436207616 bytes

Fixed Size 2096856 bytes
Variable Size 125829416 bytes
Database Buffers 301989888 bytes
Redo Buffers 6291456 bytes

Restaurar con RMAN el controlfile en nueva ubicación

Ahora utilizaremos el comando “RESTORE CONTROLFILE” para restaurar el actual archivo de control a la nueva ubicación, esto le pasa el trabajo manual de copia a RMAN.

RMAN> restore controlfile from '/u02/oradata/netapp/control01.ctl';

Starting restore at 08-MAR-12
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=156 devtype=DISK

channel ORA_DISK_1: copied control file copy
output filename=/u02/ctl/netapp/control01.ctl
output filename=/u02/redo/netapp/control02.ctl
output filename=/u02/redo/netapp/control03.ctl
Finished restore at 08-MAR-12

RMAN>

Montar y abrir la base de datos

RMAN> alter database mount
2> ;

database mounted
released channel: ORA_DISK_1

RMAN> alter database open;

database opened

RMAN>

Verificación nueva ubicación

[oracle@nodo01 netapp]$ sqlplus

SQL*Plus: Release 10.2.0.5.0 - Production on Thu Mar 8 19:01:04 2012

Copyright (c) 1982, 2010, Oracle. All Rights Reserved.

Enter user-name: / as sysdba

Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQ>select value

2 from v$parameter
3* where name ='control_files'
/

VALUE
--------------------------------------------------------------------------------
/u02/ctl/netapp/control01.ctl, /u02/redo/netapp/control02.ctl, 
/u02/redo/netapp/control03.ctl
SQL>

Espero que esto les sirva.

Instalación SnapDrive Linux OEL 5.7 x86_64

SnapDrive

SnapDrive es una herramienta de Netapp que simplifica la administración, aprovisionamiento y generación de SnapShot sin errores, y coherentes con el servidor.

Paquetes requeridos

  • netapp_linux_host_utilities-6-0.noarch.rpm
  • libhbaapi-2.2-4.el5.i386.rpm
  • libnl-1.0-0.10.pre5.5.i386.rpm
  • sg3_utils-1.25-5.el5.x86_64.rpm
  • sg3_utils-libs-1.25-5.el5.x86_64.rpm

Instalación

Ahora instalaremos los paquetes requeridos con “rpm”.

[root@nodo01 ~]# rpm -ivh netapp_linux_host_utilities-6-0.noarch.rpm
Preparing...                ########################################### [100%]
   1:netapp_linux_host_utili########################################### [100%]
[root@nodo01 ~]# rpm -ivh libhbaapi-2.2-4.el5.i386.rpm
warning: libhbaapi-2.2-4.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 1e5e0159
Preparing...                ########################################### [100%]
        package libhbaapi-2.2-4.el5.i386 is already installed
[root@nodo01 ~]# rpm -e libhbaapi-2.2-4.el5.i386
[root@nodo01 ~]# rpm -ivh libhbaapi-2.2-4.el5.i386.rpm
warning: libhbaapi-2.2-4.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 1e5e0159
Preparing...                ########################################### [100%]
   1:libhbaapi              ########################################### [100%]
[root@nodo01 ~]# rpm -ivh sg3_utils-libs-1.25-5.el5.x86_64.rpm
warning: sg3_utils-libs-1.25-5.el5.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID 1e5e0159
Preparing...                ########################################### [100%]
   1:sg3_utils-libs         ########################################### [100%]
[root@nodo01 ~]# rpm -ivh sg3_utils-1.25-5.el5.x86_64.rpm
warning: sg3_utils-1.25-5.el5.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID 1e5e0159
Preparing...                ########################################### [100%]
   1:sg3_utils              ########################################### [100%]
[root@nodo01 ~]# rpm -ivh netapp.snapdrive.linux_4_2.rpm
Preparing...                ########################################### [100%]
   1:netapp.snapdrive       ########################################### [100%]
Importing built-in Support Matrix data ...

The data files have been successfully imported from the specified source.
Executing sdconfcheck ...
See /var/log/sdconfcheck.out for detail ...
Starting snapdrive daemon: Successfully started daemon

[root@nodo01 ~]#

Configuración acceso a storage

Acontinuación es necesario configurar el acceso al storage que deseamos utilizar, de lo contrario no podremos utilizar SnapDrive. En mi ejemplo utilizare el usuario “root” del storage.

[root@nodo01 ~]# snapdrive config set root filer01.oracle-dba.cl
Password for root:
Retype password:
[root@nodo01 ~]#

Ahora para probar el correcto funcionamiento procederemos a crear una Lun en el storage

[root@nodo01 ~]# snapdrive storage create -lun filer01.oracle-dba.cl:/vol/voldbf01/lun01 -lunsize 5g -igroup ioracle

        LUN filer01:/vol/voldbf01/lun01 ... created

        mapping new lun(s) ... done
        discovering new lun(s) ... done

        LUN to device file mappings:
        - filer01.oracle-dba.cl:/vol/voldbf01/lun01 => /dev/sde, /dev/sdf

[root@nodo01 ~]#

[root@nodo01 ~]# snapdrive storage show -all

Connected LUNs and devices:

 device filename        adapter path    size    proto   state   clone      lun path                     backing snapshot
----------------        ------- ----    ----    -----   -----   -----      --------                     ----------------
/dev/sde                  -     P       5g      iscsi   online  No         filer01:/vol/voldbf01/lun01        -
/dev/sdf                  -     P       5g      iscsi   online  No         filer01:/vol/voldbf01/lun01        -

[root@nodo01 ~]#

Instalación y parchado silencioso (10gR2)

Hace un tiempo me encontré en un cliente donde solo tenia acceso vía SSH (puerto 22) al servidor donde se requería instalar un Oracle 10gR2 EE, y no tenia instalado Xming para hacer X11 Forwarding, por lo que me vi obligado en hacer una instalación de tipo silenciosa, y no quería utilizar el response file, ya que el requerimiento consideraba la instalación de varios ORACLE_HOME distintos para 10Gr2. Revise en MOS y encontré la nota 782918.1, donde se explicaba como instalar y desinstalar sin la necesidad de un responsefile.

A continuación les muestro un ejemplo de instalación y parchado silencioso.

Instalación

Durante el proceso de instalación aparecerán varios mensajes indicando el progreso, si todo sale ok aparecerá un mensaje que nos solicitará la ejecución de la shell “root.sh”. La descripción de los parámetros de runInstaller y los valores posibles para cada uno, se encuentran en el archivo “custom.rsp” del directorio “response” de los medios de instalación.

/oracle/stage/database/runInstaller -silent -force -debug 
FROM_LOCATION="/oracle/stage/database/stage/products.xml" 
ORACLE_HOME="/u01/app/oracle/product/10.2.0/db_2" 
ORACLE_HOME_NAME="Ora10gDB1" 
TOPLEVEL_COMPONENT={"oracle.server","10.2.0.1.0"} 
INSTALL_TYPE="EE" 
n_configurationOption=3 
COMPONENT_LANGUAGES={"es"} 
s_nameForDBAGrp="dba" s_nameForOPERGrp="oper"

3 archives were successfully processed.

LD_LIBRARY_PATH environment variable :
-------------------------------------------------------
Total args: 35
Command line argument array elements ...
Arg:0:/tmp/OraInstall2012-01-16_11-52-17AM/jre/1.4.2/bin/java:
Arg:1:-Doracle.installer.library_loc=/tmp/OraInstall2012-01-16_11-52-17AM/oui/lib/linux:
Arg:2:-Doracle.installer.oui_loc=/tmp/OraInstall2012-01-16_11-52-17AM/oui:
Arg:3:-Doracle.installer.bootstrap=TRUE:
Arg:4:-Doracle.installer.startup_location=/oracle/stage/database/install:
Arg:5:-Doracle.installer.jre_loc=/tmp/OraInstall2012-01-16_11-52-17AM/jre/1.4.2:
Arg:6:-Doracle.installer.nlsEnabled="TRUE":
Arg:7:-Doracle.installer.prereqConfigLoc=/tmp/OraInstall2012-01-16_11-52-17AM/prereq :
Arg:8:-Doracle.installer.unixVersion=2.6.18-194.el5:
Arg:9:-mx150m:

[main] [11:52:57:348] [Utils.getPropertyValue:221]  keyName=ocrconfig_loc props.val=/u01/app/oracle/product/10.2.0/db_1/cdata/localhost/local.ocr propValue=/u01/app/oracle/product/10.2.0/db_1/cdata/localhost/local.ocr
[main] [11:52:57:348] [Utils.getPropertyValue:292]  propName=ocrconfig_loc propValue=/u01/app/oracle/product/10.2.0/db_1/cdata/localhost/local.ocr
[main] [11:52:57:349] [UnixSystem.getLocalCSSHome:2940]  csshome = /u01/app/oracle/product/10.2.0/db_1
........................... 100% Done.


-----------------------------------------------------------------------------
Summary
Global Settings
    Source: /oracle/stage/database/stage/products.xml
    Oracle Home: /u01/app/oracle/product/10.2.0/db_2 (Ora10gDB1)
    Installation Type: Enterprise Edition
Product Languages
   English
Space Requirements
   / Required 1.74GB (includes 130MB temporary) : Available 9.91GB
New Installations (109 products)
   Oracle Database 10g 10.2.0.1.0
   Enterprise Edition Options 10.2.0.1.0
   Oracle Partitioning 10.2.0.1.0
   Oracle Spatial 10.2.0.1.0
   Oracle OLAP 10.2.0.1.0
   Oracle Enterprise Manager Console DB 10.2.0.1.0
   Oracle Net Services 10.2.0.1.0
   Oracle Database 10g 10.2.0.1.0
   Oracle Net Listener 10.2.0.1.0
   HAS Files for DB 10.2.0.1.0
   Oracle Internet Directory Client 10.2.0.1.0
   Oracle Call Interface (OCI) 10.2.0.1.0
   Oracle Programmer 10.2.0.1.0
   Oracle interMedia 10.2.0.1.0
   Enterprise Manager Agent Core 10.2.0.1.0
   Oracle JVM 10.2.0.1.0
   Database Configuration and Upgrade Assistants 10.2.0.1.0
   Oracle interMedia Locator 10.2.0.1.0
   Oracle XML Development Kit 10.2.0.1.0
   Oracle Text 10.2.0.1.0
   Oracle Database Utilities 10.2.0.1.0
   Generic Connectivity Common Files 10.2.0.1.0
   Oracle Advanced Security 10.2.0.1.0
   Enterprise Manager Repository Core 10.2.0.1.0
   PL/SQL 10.2.0.1.0
   Oracle Net 10.2.0.1.0
   Assistant Common Files 10.2.0.1.0
   Oracle Notification Service 10.1.0.3.0
   Enterprise Manager plugin Common Files 10.2.0.1.0 Beta
   Buildtools Common Files 10.2.0.1.0
   Installation Common Files 10.2.0.1.0
   Oracle LDAP administration 10.2.0.1.0
   Oracle Java Client 10.2.0.1.0
   Oracle Recovery Manager 10.2.0.1.0
   SQL*Plus 10.2.0.1.0
   iSQL*Plus 10.2.0.1.0
   Enterprise Manager plugin Common Files 10.2.0.1.0
   Oracle Help for the  Web 1.1.10.0.0
   HAS Common Files 10.2.0.1.0
   Oracle Clusterware RDBMS Files 10.2.0.1.0
   Oracle Wallet Manager 10.2.0.1.0
   Enterprise Manager Minimal Integration 10.2.0.1.0
   Oracle Database User Interface 2.2.13.0.0
   Precompiler Common Files 10.2.0.1.0
   Secure Socket Layer 10.2.0.1.0
   Oracle ODBC Driver 10.2.0.1.0
   Database SQL Scripts 10.2.0.1.0
   OLAP SQL Scripts 10.2.0.1.0
   PL/SQL Embedded Gateway 10.2.0.1.0
   Required Support Files 10.2.0.1.0
   Character Set Migration Utility 10.2.0.1.0
   LDAP Required Support Files 10.2.0.1.0
   Oracle JDBC Thin Driver for JDK 1.4 10.2.0.1.0
   Oracle JDBC Thin Driver for JDK 1.2 10.2.0.1.0
   Oracle interMedia Client Option 10.2.0.1.0
   Oracle Required Support Files 32 bit 10.2.0.0.0
   Oracle Code Editor 1.2.1.0.0I
   Oracle Globalization Support 10.2.0.1.0
   JDBC Common Files 10.2.0.1.0
   Oracle Locale Builder 10.2.0.1.0
   Oracle Containers for Java 10.2.0.1.0
   Database Workspace Manager 10.2.0.1.0
   Oracle Core Required Support Files 10.2.0.1.0
   Platform Required Support Files 10.2.0.1.0
   Oracle interMedia Locator RDBMS Files 10.2.0.1.0
   Oracle JDBC/OCI Instant Client 10.2.0.1.0
   Oracle interMedia Annotator 10.2.0.1.0
   SQLJ Runtime 10.2.0.1.0
   Oracle interMedia Java Advanced Imaging 10.2.0.1.0
   Oracle Database 10g interMedia Files 10.2.0.1.0
   Oracle Data Mining RDBMS Files 10.2.0.1.0
   Enterprise Manager Baseline 10.2.0.1.0
   Oracle Help For Java 4.2.6.1.0
   Oracle UIX 2.1.22.0.0
   XML Parser for Java 10.2.0.1.0
   Precompiler Required Support Files 10.2.0.1.0
   XML Parser for Oracle JVM 10.2.0.1.0
   Oracle Database 10G 32 bit 10.2.0.1.0
   Oracle Message Gateway Common Files 10.2.0.1.0
   Oracle Starter Database 10.2.0.1.0
   Sample Schema Data 10.2.0.1.0
   Parser Generator Required Support Files 10.2.0.1.0
   Agent Required Support Files 10.2.0.1.0
   Oracle RAC Required Support Files-HAS 10.2.0.1.0
   RDBMS Required Support Files 10.2.0.1.0
   RDBMS Required Support Files for Instant Client 10.2.0.1.0
   XDK Required Support Files 10.2.0.1.0
   Oracle OLAP API 10.2.0.1.0
   Oracle OLAP RDBMS Files 10.2.0.1.0
   DBJAVA Required Support Files 10.2.0.1.0
   SQL*Plus Required Support Files 10.2.0.1.0
   Oracle JFC Extended Windowing Toolkit 4.2.33.0.0
   Oracle Ice Browser 5.2.3.6.0
   regexp 2.1.9.0.0
   Oracle Extended Windowing Toolkit 3.4.38.0.0
   Enterprise Manager Common Files 10.2.0.1.0
   Enterprise Manager Agent DB 10.2.0.1.0
   Oracle Net Required Support Files 10.2.0.1.0
   Enterprise Manager Repository DB 10.2.0.1.0
   Oracle Display Fonts 9.0.2.0.0
   SSL Required Support Files for InstantClient 10.2.0.1.0
   Bali Share 1.1.18.0.0
   Perl Interpreter 5.8.3.0.2
   Oracle Universal Installer 10.2.0.1.0
   Oracle One-Off Patch Installer 10.2.0.1.0
   Installer SDK Component 10.2.0.1.0
   Java Runtime Environment 1.4.2.0.8
   Java 2 SDK 1.4.2.0.8
   Sun JDK extensions 10.1.2.0.0
-----------------------------------------------------------------------------

Installation in progress (Mon Jan 16 11:53:02 CLST 2012)
...............................................................  14% Done.
...............................................................  28% Done.
...............................................................  42% Done.
...............................................................  56% Done.
...............................................................  70% Done.
................                                                 74% Done.
Install successful

Linking in progress (Mon Jan 16 11:57:15 CLST 2012)
.                                                                74% Done.
Link successful

Setup in progress (Mon Jan 16 12:03:50 CLST 2012)
..................                                              100% Done.
Setup successful

End of install phases.(Mon Jan 16 12:04:00 CLST 2012)
WARNING:The following configuration scripts
/u01/app/oracle/product/10.2.0/db_2/root.sh "<== Root.sh"  
need to be executed as root for configuring the system. If you skip the execution of the configuration tools, the configuration will not be complete and the product wont function properly. In order to get the product to function properly, you will be required to execute the scripts and the configuration tools after exiting the OUI.

Parchado

Al igual que en el proceso de instalación aparecerán varios mensajes en la pantalla, si todo anda bien, se les solicitará la ejecución de la shell “root.sh”.

[oracle@nodo01 bin]$ /oracle/stage/patch/Disk1/runInstaller -silent -force ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_2 ORACLE_HOME_NAME="Ora10gDB1" SECURITY_UPDATES_VIA_MYORACLESUPPORT=false DECLINE_SECURITY_UPDATES=true
Starting Oracle Universal Installer...

Checking installer requirements...

Checking operating system version: must be redhat-3, SuSE-9, SuSE-10, redhat-4, redhat-5, redhat-6, UnitedLinux-1.0, asianux-1, asianux-2, asianux-3, enterprise-4, enterprise-5 or SuSE-11
                                      Passed


All installer requirements met.

Preparing to launch Oracle Universal Installer from /tmp/OraInstall2012-01-16_12-44-38PM. Please wait ...[oracle@nodo01 bin]$
[oracle@nodo01 bin]$ Oracle Universal Installer, Version 10.2.0.5.0 Production
Copyright (C) 1999, 2010, Oracle. All rights reserved.

You can find a log of this install session at:
 /u01/app/oraInventory/logs/installActions2012-01-16_12-44-38PM.log
.................................................................................................... 100% Done.


Loading Product Information
.................................................................................................................. 100% Done.


Starting execution of Prerequisites...
Total No of checks: 8
Analyzing dependencies
...................................................................................................... 100% Done.


-----------------------------------------------------------------------------
Summary
Global Settings
    Source: /oracle/stage/patch/Disk1/stage/products.xml
    Oracle Home: /u01/app/oracle/product/10.2.0/db_2 (Ora10gDB1)
Product Languages
   English
Space Requirements
   / Required 1.49GB (includes 54MB temporary) : Available 6.93GB
New Installations (86 products)
   Oracle Notification Service Patch 10.2.0.5.0
   Database Configuration and Upgrade Assistants Patch 10.2.0.5.0
   Character Set Migration Utility Patch 10.2.0.5.0
   Oracle Database 10g Patch 10.2.0.5.0
   Oracle JDBC/OCI Instant Client Patch 10.2.0.5.0
   Oracle Database 10g Patch 10.2.0.5.0
   Enterprise Manager plugin Common Files Patch 10.2.0.5.0
   SQL*Plus 10.2.0.5.0
   HAS Common Files Patch 10.2.0.5.0
   HAS Files for DB Patch 10.2.0.5.0
   Oracle Java Client Patch 10.2.0.5.0
   Oracle JVM Patch 10.2.0.5.0
   Oracle Internet Directory Client Patch 10.2.0.5.0
   iSQL*Plus 10.2.0.5.0
   Oracle Advanced Security Patch 10.2.0.5.0
   Oracle Net Patch 10.2.0.5.0
   Oracle Net Listener Patch 10.2.0.5.0
   Oracle Wallet Manager Patch 10.2.0.5.0
   Precompiler Common Files Patch 10.2.0.5.0
   Secure Socket Layer Patch 10.2.0.5.0
   Oracle ODBC Driver Patch 10.2.0.5.0
   Oracle OLAP Patch 10.2.0.5.0
   Oracle OLAP API Patch 10.2.0.5.0
   OLAP SQL Scripts Patch 10.2.0.5.0
   Oracle interMedia Client Option Patch 10.2.0.5.0
   Oracle Database 10g interMedia Files Patch 10.2.0.5.0
   Oracle interMedia Patch 10.2.0.5.0
   PL/SQL Embedded Gateway Patch 10.2.0.5.0
   Oracle XML Development Kit Patch 10.2.0.5.0
   Oracle Text Patch 10.2.0.5.0
   Oracle Clusterware RDBMS Files Patch 10.2.0.5.0
   Database SQL Scripts Patch 10.2.0.5.0
   Oracle Data Mining RDBMS Files Patch 10.2.0.5.0
   Generic Connectivity Common Files Patch 10.2.0.5.0
   Oracle Net Required Support Files Patch 10.2.0.5.0
   Oracle Starter Database Patch 10.2.0.5.0
   Sample Schema Data Patch 10.2.0.5.0
   Oracle interMedia Locator RDBMS Files Patch 10.2.0.5.0
   Oracle Call Interface (OCI) Patch 10.2.0.5.0
   Oracle OLAP RDBMS Files Patch 10.2.0.5.0
   PL/SQL 10.2.0.5.0
   Oracle Recovery Manager Patch 10.2.0.5.0
   Oracle Database Utilities Patch 10.2.0.5.0
   Oracle interMedia Locator Patch 10.2.0.5.0
   XML Parser for Java Patch 10.2.0.5.0
   Assistant Common Files Patch 10.2.0.5.0
   Oracle JDBC Thin Driver for JDK 1.2 Patch 10.2.0.5.0
   Oracle JDBC Thin Driver for JDK 1.4 Patch 10.2.0.5.0
   Oracle interMedia Java Advanced Imaging Patch 10.2.0.5.0
   SQLJ Runtime Patch 10.2.0.5.0
   XML Parser for Oracle JVM Patch 10.2.0.5.0
   Enterprise Manager Agent DB 10.2.0.5.0
   Enterprise Manager Baseline 10.2.0.5.0
   Oracle Enterprise Manager Console DB 10.2.0.5.0
   XDK Required Support Files Patch 10.2.0.5.0
   Agent Required Support Files Patch 10.2.0.5.0
   DBJAVA Required Support Files Patch 10.2.0.5.0
   LDAP Required Support Files Patch 10.2.0.5.0
   Precompiler Required Support Files Patch 10.2.0.5.0
   Oracle RAC Required Support Files-HAS Patch 10.2.0.5.0
   RDBMS Required Support Files for Instant Client Patch 10.2.0.5.0
   RDBMS Required Support Files Patch 10.2.0.5.0
   SQL*Plus Required Support Files Patch 10.2.0.5.0
   SSL Required Support Files for InstantClient Patch 10.2.0.5.0
   Installation Common Files Patch 10.2.0.5.0
   Oracle Globalization Support Patch 10.2.0.5.0
   Oracle Core Required Support Files Patch 10.2.0.5.0
   Platform Required Support Files 10.2.0.5.0
   Oracle Message Gateway Common Files Patch 10.2.0.5.0
   Enterprise Manager Agent Core Patch 10.2.0.5.0a
   Enterprise Manager Common Core Patch 10.2.0.5.0a
   Enterprise Manager Repository Core patch 10.2.0.5.0a
   Oracle Containers for Java 10.2.0.5.0
   Enterprise Manager Repository DB 10.2.0.5.0
   Oracle LDAP administration patch 10.2.0.5.0
   Oracle Required Support Files 32 bit Patch 10.2.0.5.0
   JDBC Common Files 10.2.0.5.0
   Database Workspace Manager 10.2.0.5.0
   Oracle interMedia Annotator 10.2.0.5.0
   Enterprise Manager Minimal Integration 10.2.0.5.0
   Parser Generator Required Support Files 10.2.0.5.0
   Buildtools Common Files 10.2.0.5.0
   Oracle UIX 2.2.24.6.0
   Bali Share 1.1.19.0.0
   Oracle Real Application Testing 10.2.0.5.0
   Oracle Configuration Manager 10.3.2.1.0
Upgrades (5 products)
   Oracle Universal Installer 10.2.0.5.0
   Oracle One-Off Patch Installer 10.2.0.4.2
   Installer SDK Component 10.2.0.5.0
   Java Runtime Environment 1.4.2.14.0
   Sun JDK 1.4.2.14.05
Already Installed (84 products)
   Oracle Notification Service 10.1.0.3.0
   Database Configuration and Upgrade Assistants 10.2.0.1.0
   Character Set Migration Utility 10.2.0.1.0
   Oracle Database 10g 10.2.0.1.0
   Oracle JDBC/OCI Instant Client 10.2.0.1.0
   Oracle Database 10g 10.2.0.1.0
   Enterprise Manager plugin Common Files 10.2.0.1.0
   SQL*Plus 10.2.0.1.0
   HAS Common Files 10.2.0.1.0
   HAS Files for DB 10.2.0.1.0
   Oracle Java Client 10.2.0.1.0
   Oracle JVM 10.2.0.1.0
   Oracle Internet Directory Client 10.2.0.1.0
   iSQL*Plus 10.2.0.1.0
   Oracle Advanced Security 10.2.0.1.0
   Oracle Net 10.2.0.1.0
   Oracle Net Listener 10.2.0.1.0
   Oracle Wallet Manager 10.2.0.1.0
   Precompiler Common Files 10.2.0.1.0
   Secure Socket Layer 10.2.0.1.0
   Oracle ODBC Driver 10.2.0.1.0
   Oracle OLAP 10.2.0.1.0
   Oracle OLAP API 10.2.0.1.0
   OLAP SQL Scripts 10.2.0.1.0
   Oracle interMedia Client Option 10.2.0.1.0
   Oracle Database 10g interMedia Files 10.2.0.1.0
   Oracle interMedia 10.2.0.1.0
   PL/SQL Embedded Gateway 10.2.0.1.0
   Oracle XML Development Kit 10.2.0.1.0
   Oracle Text 10.2.0.1.0
   Oracle Clusterware RDBMS Files 10.2.0.1.0
   Database SQL Scripts 10.2.0.1.0
   Oracle Data Mining RDBMS Files 10.2.0.1.0
   Generic Connectivity Common Files 10.2.0.1.0
   Oracle Net Required Support Files 10.2.0.1.0
   Oracle Starter Database 10.2.0.1.0
   Sample Schema Data 10.2.0.1.0
   Oracle interMedia Locator RDBMS Files 10.2.0.1.0
   Oracle Call Interface (OCI) 10.2.0.1.0
   Oracle OLAP RDBMS Files 10.2.0.1.0
   PL/SQL 10.2.0.1.0
   Oracle Recovery Manager 10.2.0.1.0
   Oracle Database Utilities 10.2.0.1.0
   Oracle interMedia Locator 10.2.0.1.0
   XML Parser for Java 10.2.0.1.0
   Assistant Common Files 10.2.0.1.0
   Oracle JDBC Thin Driver for JDK 1.2 10.2.0.1.0
   Oracle JDBC Thin Driver for JDK 1.4 10.2.0.1.0
   Oracle interMedia Java Advanced Imaging 10.2.0.1.0
   SQLJ Runtime 10.2.0.1.0
   XML Parser for Oracle JVM 10.2.0.1.0
   Enterprise Manager Agent DB 10.2.0.1.0
   Enterprise Manager Baseline 10.2.0.1.0
   Oracle Enterprise Manager Console DB 10.2.0.1.0
   XDK Required Support Files 10.2.0.1.0
   Agent Required Support Files 10.2.0.1.0
   DBJAVA Required Support Files 10.2.0.1.0
   LDAP Required Support Files 10.2.0.1.0
   Precompiler Required Support Files 10.2.0.1.0
   Oracle RAC Required Support Files-HAS 10.2.0.1.0
   RDBMS Required Support Files for Instant Client 10.2.0.1.0
   RDBMS Required Support Files 10.2.0.1.0
   SQL*Plus Required Support Files 10.2.0.1.0
   SSL Required Support Files for InstantClient 10.2.0.1.0
   Installation Common Files 10.2.0.1.0
   Oracle Globalization Support 10.2.0.1.0
   Oracle Core Required Support Files 10.2.0.1.0
   Platform Required Support Files 10.2.0.1.0
   Oracle Message Gateway Common Files 10.2.0.1.0
   Enterprise Manager Agent Core 10.2.0.1.0
   Enterprise Manager Common Files 10.2.0.1.0
   Enterprise Manager Repository Core 10.2.0.1.0
   Oracle Containers for Java 10.2.0.1.0
   Enterprise Manager Repository DB 10.2.0.1.0
   Oracle LDAP administration 10.2.0.1.0
   Oracle Required Support Files 32 bit 10.2.0.0.0
   JDBC Common Files 10.2.0.1.0
   Database Workspace Manager 10.2.0.1.0
   Oracle interMedia Annotator 10.2.0.1.0
   Enterprise Manager Minimal Integration 10.2.0.1.0
   Parser Generator Required Support Files 10.2.0.1.0
   Buildtools Common Files 10.2.0.1.0
   Oracle UIX 2.1.22.0.0
   Bali Share 1.1.18.0.0
-----------------------------------------------------------------------------


Deinstall in progress (Monday, January 16, 2012 12:45:05 PM CLST)
...............................................................   0% Done.
...............................................................  14% Done.
...............................................................  28% Done.
...............................................................  42% Done.
...............................................................  56% Done.
...............................................................  70% Done.
...............................................................  85% Done.
...                                                             100% Done.

Deinstall successful

Installation in progress (Monday, January 16, 2012 12:45:05 PM CLST)
...............................................................  14% Done.
...............................................................  28% Done.
...............................................................  42% Done.
...............................................................  56% Done.
...............................................................  70% Done.
...............................................................  85% Done.
.............                                                    88% Done.
Install successful

Linking in progress (Monday, January 16, 2012 12:48:33 PM CLST)
...                                                              88% Done.
Link successful

Setup in progress (Monday, January 16, 2012 12:50:22 PM CLST)
...........                                                     100% Done.
Setup successful

End of install phases.(Monday, January 16, 2012 12:50:31 PM CLST)
WARNING:
The following configuration scripts need to be executed as the "root" user.
#!/bin/sh
#Root script to run
/u01/app/oracle/product/10.2.0/db_2/root.sh
To execute the configuration scripts:
    1. Open a terminal window
    2. Log in as "root"
    3. Run the scripts

The installation of Oracle Database 10g Release 2 Patch Set 4 was successful.
Please check '/u01/app/oraInventory/logs/silentInstall2012-01-16_12-44-38PM.log' for more details.

Espero que esto les sirva.

Eliminar archives aplicados en base Standby

Uno de las tareas que no podemos olvidar luego de habilitar una base de datos Standby, es el borrado de los archives ya aplicados. El siguiente es un ejemplo de borrado utilizando el package DBMS_BACKUP_RESTORE para realizar dicha tarea.

Listar archive ya aplicados

[oracle@nodo01 bin-netapp]$ sqlplus

SQL*Plus: Release 10.2.0.5.0 - Production on Mon Jan 16 11:09:36 2012

Copyright (c) 1982, 2010, Oracle.  All Rights Reserved.

Enter user-name: / as sysdba

Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> SELECT recid, stamp, name, thread#, sequence#, resetlogs_change#, first_change#, block_size
    FROM v$archived_log
    WHERE deleted = 'NO'
    AND applied='YES'
    ORDER by recid desc  2    3    4    5
  6  /

     RECID      STAMP
---------- ----------
NAME
--------------------------------------------------------------------------------
   THREAD#  SEQUENCE# RESETLOGS_CHANGE# FIRST_CHANGE# BLOCK_SIZE
---------- ---------- ----------------- ------------- ----------
         7  772198918
+DG_ARCH01/netapp/archivelog/2012_01_10/thread_1_seq_3.262.772198919
         1          3            388265        396886        512

         6  772198918
+DG_ARCH01/netapp/archivelog/2012_01_10/thread_1_seq_5.261.772198919
         1          5            388265        421365        512

     RECID      STAMP
---------- ----------
NAME
--------------------------------------------------------------------------------
   THREAD#  SEQUENCE# RESETLOGS_CHANGE# FIRST_CHANGE# BLOCK_SIZE
---------- ---------- ----------------- ------------- ----------

         5  772198918
+DG_ARCH01/netapp/archivelog/2012_01_10/thread_1_seq_4.260.772198917
         1          4            388265        417524        512


Script PL/SQL de borrado de archive ya aplicados

SQL> DECLARE
  2    v_res binary_integer;
  3  BEGIN
  4    FOR c_arch_logs IN (
  5      SELECT recid, stamp, name, thread#, sequence#, resetlogs_change#, first_change#, block_size
  6      FROM v$archived_log
  7      WHERE deleted = 'NO'
  8      AND applied='YES'
  9      ORDER by recid desc ) LOOP
 10    v_res := DBMS_BACKUP_RESTORE.validatearchivedlog
 11            (
 12             recid => c_arch_logs.recid,
 13        stamp => c_arch_logs.stamp,
 14        fname => c_arch_logs.NAME,
 15        THREAD => c_arch_logs.thread#,
 16        SEQUENCE => c_arch_logs.sequence#,
 17        resetlogs_change => c_arch_logs.resetlogs_change#,
 18        first_change => c_arch_logs.first_change#,
 19        blksize => c_arch_logs.block_size
 20             );
 21      IF v_res=0 THEN
 22         DBMS_BACKUP_RESTORE.deletearchivedlog
 23         (
 24         recid => c_arch_logs.recid,
 25         stamp => c_arch_logs.stamp,
 26         fname => c_arch_logs.NAME,
 27         THREAD => c_arch_logs.thread#,
 28         SEQUENCE => c_arch_logs.sequence#,
 29         resetlogs_change => c_arch_logs.resetlogs_change#,
 30         first_change => c_arch_logs.first_change#,
 31         blksize => c_arch_logs.block_size
 32         );
 33      END IF;
 34    END LOOP;
 35  END;
 36  /

PL/SQL procedure successfully completed.

SQL> SELECT recid, stamp, name, thread#, sequence#, resetlogs_change#, first_change#, block_size
    FROM v$archived_log
    WHERE deleted = 'NO'
    AND applied='YES'
    ORDER by recid desc  2    3    4    5
  6  /

no rows selected

Si quisiéramos mantener los últimos 2 días de archives, podemos agregar la siguiente linea al CURSOR principal “AND COMPLETION_TIME < sysdate-2″

Espero que estos les sea de utilidad.

Utilizando SnapMirror y Oracle

SnapMirror

SnapMirror es una solución de replicación avanzada a nivel de storage de Netapp, que no solo puede ser utilizado como mecanismo de recuperación ante desastres, ya en combinación con FlexClone permite crear copias con uso eficiente del espacio, que pueden ser utilizadas para testing, Business Inteligence y ambientes de desarrollo.

SnapMirror utiliza la tecnologia de SnapShot de Netapp para su operación.

Oracle soporta oficialmente el uso de tecnologías de terceros de SnapShot (MOS 604683.1) para crear imágenes del tipo Crash Consistent, sin la necesidad de poner la base de datos en modo BEGIN BACKUGP
que pueden ser usadas como opciones de Respaldo, restauración y recuperación.

Ventajas de SnapMirror

  • No requiere de espacio adicional en el servidor de destino.
  • Se realiza a nivel de Storage
  • No requiere poner la base de datos en modo Begin Backup (Crash Consistency images)
  • La replicación puede ser bidireccional, como Oracle DataGuard luego de un switchover

A continuación les muestro un ejemplo de recuperación de una base de datos Oracle utilizando SnapMirror como mecanismo de recuperación ante desastres (FailOver).

Configuración del laboratorio:

  • 2 Oracle Database 11.2 Single Instance
  • Oracle ASM
  • 2 Data Ontap 8.0 simulator (filer)
  • iSCSI Protocol
  • Oracle Enterprise Linux 5.7 x86_64
  • Vmware Player
Habilitación SnapMirror en el storage de origen y destino
filer01> options snapmirror.enable
snapmirror.enable on
filer01>

filer02> options snapmirror.enable
snapmirror.enable on
filer02>

Acceso para SnapMirror

Es necesario que el filer de destino tenga acceso al filer de origen, para ello debemos agregar el nombre y ip en el archivo /etc/snapmirror.allow del filer de origen, podemos utilizar el comando wrfile y rdfile

filer01> rdfile /etc/snapmirror.allow
192.168.161.139
filer02
filer01>

Inicializacion de SnapMirror relation

Primero debemos crear los volumenes necesarios en el filer de destino, estos deben ser del mismo tamaño o mayor que los volumenes de origen.

Volumenes de origen

filer01> df -h
Filesystem total used avail capacity Mounted on
/vol/vol0/ 647MB 132MB 515MB 20% /vol/vol0/
/vol/vol0/.snapshot 161MB 28MB 133MB 17% /vol/vol0/.snapshot
/vol/voldb/ 4096MB 4096MB 0MB 100% /vol/voldb/
/vol/voldb/.snapshot 1024MB 103MB 920MB 10% /vol/voldb/.snapshot
/vol/vol_archive/ 2457MB 2192MB 265MB 89% /vol/vol_archive/
/vol/vol_archive/.snapshot 614MB 452KB 613MB 0% /vol/vol_archive/.snapshot
filer01>

Volumenes de destino

filer02> vol create voldb aggr0 5g
Creation of volume 'voldb' with size 5g on containing aggregate
'aggr0' has completed.
filer02> vol create vol_archive aggr0 3g
Creation of volume 'vol_archive' with size 3g on containing aggregate
'aggr0' has completed.
filer02> df -Ah
Aggregate total used avail capacity
aggr0 11GB 9052MB 2917MB 76%
aggr0/.snapshot 630MB 304MB 325MB 48%
filer02> df -h
Filesystem total used avail capacity Mounted on
/vol/vol0/ 647MB 127MB 520MB 20% /vol/vol0/
/vol/vol0/.snapshot 161MB 5288KB 156MB 3% /vol/vol0/.snapshot
/vol/voldb/ 4096MB 108KB 4095MB 0% /vol/voldb/
/vol/voldb/.snapshot 1024MB 0TB 1024MB 0% /vol/voldb/.snapshot
/vol/vol_archive/ 2457MB 108KB 2457MB 0% /vol/vol_archive/
/vol/vol_archive/.snapshot 614MB 0TB 614MB 0% /vol/vol_archive/.snapshot
filer02>

Segundo, debemos poner en modo restringido los volumenes en el filer de destino.

filer02> vol restrict voldb
Volume 'voldb' is now restricted.
filer02> vol restrict vol_archive
Volume 'vol_archive' is now restricted.
filer02>

Tercero, debemos inicializar el SnapMirror, para ello utilizamos el siguiente comando.

filer02> snapmirror initialize -S filer01:voldb filer02:voldb
Transfer started.
Monitor progress with 'snapmirror status' or the snapmirror log.
filer02> snapmirror initialize -S filer01:vol_archive filer02:vol_archive
Transfer started.
Monitor progress with 'snapmirror status' or the snapmirror log.
filer02> snapmirror status
Snapmirror is on.
Source Destination State Lag Status
filer01:vol_archive filer02:vol_archive Uninitialized - Transferring
filer01:voldb filer02:voldb Uninitialized - Transferring (73 MB done)
filer02>

Podemos monitorear el estado de la transferencia con el comando “snapmirror status”, hasta que el estado sea “idle”.

filer02> snapmirror status
Snapmirror is on.
Source Destination State Lag Status
filer01:vol_archive filer02:vol_archive Uninitialized - Transferring
filer01:voldb filer02:voldb Uninitialized - Transferring (250 MB done)
filer02>

filer02> snapmirror status
Snapmirror is on.
Source                       Destination           State          Lag        Status
filer01:vol_archive  filer02:vol_archive   Snapmirrored   00:57:39   Idle
filer01:voldb        filer02:voldb         Snapmirrored   00:58:03   Idle
filer02>

Configuración iSCSI

Ahora debemos configurar la conexión iSCSI en el filer de destino, y la maquina donde recuperaremos la base de datos.

Debemos obtener el IQN del nodo02, esto corresponde al contenido del archivo /etc/iscsi/initiator.name

[root@nodo02 ~]# more /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.1994-05.com.redhat:5249af2f9f59
[root@nodo02 ~]#

En el filer de destino debemos crear un igroup de tipo iSCSI, al cual le asignaremos las Luns replicadas con snapmirror, y le daremos acceso al nodo02.

filer02>igroup create -i -t linux simdb iqn.1994-05.com.redhat:5249af2f9f59
filer02> lun show
 /vol/vol_archive/volarc01 2g (2147483648) (r/o, online)
 /vol/voldb/volasm01 3g (3221225472) (r/o, online)
filer02> lun map /vol/vol_archive/volarc01 simdb
Tue Dec 27 18:29:08 GMT [lun.map:info]: LUN /vol/vol_archive/volarc01 was mapped to initiator group simdb=0
filer02> lun map /vol/voldb/volasm01 simdb
Tue Dec 27 18:29:19 GMT [lun.map:info]: LUN /vol/voldb/volasm01 was mapped to initiator group simdb=1
filer02>

Ahora debemos terminar la relación del SnapMirror en el servidor de destino, de lo contrario no podremos utilizar los volumenes replicados.

filer02> snapmirror break -f voldb
snapmirror break: Destination voldb is now writable.
Volume size is being retained for potential snapmirror resync.  If you would like to grow the volume and do not expect to resync, set vol option fs_size_fixed to off.
filer02> snapmirror break -f vol_archive
snapmirror break: Destination vol_archive is now writable.
Volume size is being retained for potential snapmirror resync.  If you would like to grow the volume and do not expect to resync, set vol option fs_size_fixed to off.
filer02>

En el servidor de base de datos debemos reconfigurar iSCSI para que reconozca los 2 nuevos discos, para ello debemos ejecutar lo siguiente

[root@nodo02 ~]# service iscsi restart
Logging out of session [sid: 1, target: iqn.1992-08.com.netapp:sn.80335005, portal: 192.168.161.139,3260]
Logout of [sid: 1, target: iqn.1992-08.com.netapp:sn.80335005, portal: 192.168.161.139,3260]: successful
Stopping iSCSI daemon:
iscsid dead but pid file exists                            [  OK  ]
Starting iSCSI daemon:                                     [  OK  ]
                                                           [  OK  ]
Setting up iSCSI targets: Logging in to [iface: default, target: iqn.1992-08.com.netapp:sn.80335005, portal: 192.168.161.139,3260]
Login to [iface: default, target: iqn.1992-08.com.netapp:sn.80335005, portal: 192.168.161.139,3260]: successful
                                                           [  OK  ]
[root@nodo02 ~]#

Luego de esto aparecerán las 2 nuevas luns, para que ASM identifique las LUN clonadas, podemos ejecutar el comando “scandisk” de ASM o reiniciar el servidor.

[root@nodo02 ~]# /etc/init.d/oracleasm listdisks
VOL01
VOL02

[root@nodo02 ~]# /etc/init.d/oracleasm scandisks
Scanning the system for Oracle ASMLib disks:               [  OK  ]
[root@nodo02 ~]# /etc/init.d/oracleasm listdisks
VOL01
VOL02
VOL_NETASM01
VOL_NETFRA01
[root@nodo02 ~]#

Montar DiskGroup en ASM

Luego de reconocidas las Luns clonadas debemos montarlas en ASM, para ello debemos ejecutar lo siguiente

[oracle@nodo02 grid]$ sqlplus

SQL*Plus: Release 11.2.0.2.0 Production on Tue Dec 27 11:58:55 2011

Copyright (c) 1982, 2010, Oracle.  All rights reserved.

Enter user-name: / as sysasm (SYSASM no SYSDBA)

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
With the Automatic Storage Management option

SQL> alter diskgroup dg_netapp_data mount;

Diskgroup altered.

SQL> alter diskgroup dg_netapp_fra mount;

Diskgroup altered.

SQL>

Montar la base de destino

La siguiente etapa consiste en montar la base de datos en los volumenes replicados, y luego realizar un recuperación del tipo Point in Time.

SQL> startup mount
ORACLE instance started.

Total System Global Area  463478784 bytes
Fixed Size                  2227512 bytes
Variable Size             176161480 bytes
Database Buffers          281018368 bytes
Redo Buffers                4071424 bytes
Database mounted.

Obtener el SCN minimo

Ahora debemos ejecutar el archivo “scandatafiles.sql” para obtener el minimo SCN consistente, que es requerido para recuperar la base de datos a un punto del tiempo consistente. Este paso puede demorar un tiempo en completarse.

SQL> start scandatafiles
File 1 absolute fuzzy scn = 1241419
File 2 absolute fuzzy scn = 1241417
File 3 absolute fuzzy scn = 1241419
File 4 absolute fuzzy scn = 0
File 5 absolute fuzzy scn = 1238741
File 6 absolute fuzzy scn = 1238651
Minimum PITR SCN = 1241419

PL/SQL procedure successfully completed.

SQL> recover database until change 1241419;
Media recovery complete.
SQL> alter database open resetlogs;

 

 

Archivo SQL scandatafiles

# scans all files and update file headers with meta information
# depending on number and sizes of files, the scandatafile procedure can be a
# time consuming operation.
# create a script, “scandatafile”, with the following content
spool scandatafile.sql
set serveroutput on
declare
scn number(12) := 0;
scnmax number(12) := 0;
begin
for f in (select * from v$datafile) loop
scn := dbms_backup_restore.scandatafile(f.file#);
dbms_output.put_line('File ' || f.file# ||' absolute fuzzy scn = ' || scn);
if scn > scnmax then scnmax := scn; end if;
end loop;
dbms_output.put_line('Minimum PITR SCN = ' || scnmax);
end;
/

Mas información en Using Crash-Consistent Snapshot Copies as Valid Oracle Backups

Oracle DirectNFS

Oracle Direct NFS  (DNFS)

 Es una implementación de NFS V3 construida directamente en el kernel de la base de datos vía Oracle Disk Manager (ODM) en Oracle 11g. Esto permite que la base de datos se comunique directamente con el almacenamiento NFS, sin utilizar el cliente NFS del sistema operativo. Esta nueva característica puede ser utilizada para bases RAC y no RAC (Single Instance).

Direct NFS incluye dos características fundamentales de I/O que aumentan el rendimiento general de la base de datos. Primero, Direct NFS es capaz de realizar llamadas de tipo Direct I/O de forma concurrente, que se saltan cualquier llamada al cache de sistema operativo y elimina cualquier trabajo de ordenamiento de bloqueos de escritura. Esto disminuye el consumo de memoria eliminando escenarios donde los datos Oracle son almacenados en la SGA y el cache de sistema operativo, y elimina el costo del modo kernel de CPU cuando se copia la información desde el cache del sistema operativo dentro de la SGA. Segundo, Direct NFS realiza llamadas de I/O asincrónicas, que permite que el procesamiento continué mientras los requerimientos de I/O son enviados y procesados.

Otra carateristica importante es que Oracle Direct NFS puede utilizar más de una interfaz de red para poder acceder al almacenamiento NFS.
Configurando Oracle Direct NFS

 1.- Montar filesystem de tipo NFS con las siguientes opciones

 <servidor_nfs>:/mnt/oradata_nfs /oradata_nfs nfs rw,bg,hard,nointr,rsize=32768,wsize=32768,tcp,actimeo=0,vers=3,timeo=600 0 0

 2.- Configurar archivo oranfstab

Direct NFS utiliza este nuevo archivo de configuración o el archivo de puntos de montaje (/etc/mtab en Linux) para determinar la configuración del almacenamiento NFS.

 Este archivo es requerido solamente para configuración de balanceo de carga o para instancias de tipo no RAC ( Single Instance ). Es posible habilitar DNFS sin este archivo, DNFS obtiene la configuración de puntos de montaje desde /etc/mtab en Linux.

 En ambientes de tipo RAC el archivo oranfstab debe estar sincronizado en todos los nodos en /etc/oranfstab

DNFS busca la configuración de puntos de montaje en el siguiente orden:
1.- $ORACLE_HOME/dbs/oranfstab
2.-  /etc/oranfstab
3.- /etc/mtab

Contenido archivo oranfstab

$ORACLE_HOME/dbs/oranfstab
server:  openfiler
path:  openfiler.oracle-dba.cl
export: /mnt/datosnfs/nfs_vol/oradata mount: /u03/oradata

3.- Habilitar la librería ODM de DNFS

cd $ORACLE_HOME/lib 
mv libodm11.so libodm11.so_stub
ln –s libnfsodm11.so libodm11.so

4.- Reiniciar la base de datos

En el archivo de alerta debe aparecer un mensaje como el siguiente:
“Oracle instance running with ODM: Oracle Direct NFS ODM Library Version 2.0”

5.- Crear un tablespace y datafile en el directorio DNFS

Create tablespace dnfs_ts datafile ‘/u03/oradata/dnfs_ts_01.dbf’ size 128M;

6.- Verificar estado del servidor

1* select * from v$dnfs_servers
   ID SVRNAME     DIRNAME                            MNTPORT    NFSPORT      WTMAX      RTMAX
----- ----------- ------------------------------- ---------- ---------- ---------- ----------
   13 openfiler  /mnt/datosnfs/nfs_vol/oradata           896       2049          0          0

Vistas de administración de Direct NFS

Vista Descripción
v$dnfs_servers Muestra la lista de servidores accesados utilizando DNFS
v$dnfs_files Muestra la lista de archivos que actualmente están abiertos a través DNFS
v$dnfs_channles Muestra una lista de las rutas de red abiertas (channels) hacia los servidores de NFS
v$dns_stats Muestra estadísticas de rendimiento de DNFS

Deshabilitar DNFS

Bajar todas las instancias
cd $ORACLE_HOME/dbs
rm libodm11.so
mv libodm11.so_stub libodm11.so
Subir todas las instancias

Más información sobre Oracle Direct NFS

Espero que esto sea de utilidad.

Aumentar el rendimiento de RMAN (RMAN PERFORMANCE)

En las charlas de RMAN dictadas por Robert Freeman en CLOUG 2009, nos entrego algunos consejos para aumentar el rendimiento de los respaldos con RMAN.

El primero de ellos consistia en realizar respaldos y recuperaciones en paralelo, es decir, utilizar más de un canal (channel) al momento de respaldar o recuperar nuestra base de datos, el otro consejo era la realización de respaldos comprimidos. A continuación les muestro un ejemplo con respaldo con un solo canal y otro con dos canales para que veamos como mejora el rendimiento de nuestros respaldos.

Ejemplo 1 canal, el respaldo total demoro 6:18 minutos

[oracle@prod db11g:-odba]$ rman target / cmdfile=uncanal.rcv

Recovery Manager: Release 11.1.0.6.0 - Production on Sat Apr 18 00:12:16 2009

Copyright (c) 1982, 2007, Oracle.  All rights reserved.

connected to target database: ODBA (DBID=2080959378)

RMAN> run
2> { allocate channel c1 device type disk format '/respaldo1/%U';
3>  backup database;
4> }
5>
using target database control file instead of recovery catalog
allocated channel: c1
channel c1: SID=135 device type=DISK

Starting backup at 18/04/2009 00:12:23
channel c1: starting full datafile backup set
channel c1: specifying datafile(s) in backup set
input datafile file number=00001 name=/u02/oracle/odba/system01.dbf
input datafile file number=00002 name=/u02/oracle/odba/sysaux01.dbf
input datafile file number=00003 name=/u02/oracle/odba/undotbs01.dbf
input datafile file number=00005 name=/u02/oracle/odba/example01.dbf
input datafile file number=00004 name=/u02/oracle/odba/users01.dbf
channel c1: starting piece 1 at 18/04/2009 00:12:47
channel c1: finished piece 1 at 18/04/2009 00:18:27
piece handle=/respaldo1/29kco3f8_1_1 tag=TAG20090418T001224 comment=NONE
channel c1: backup set complete, elapsed time: 00:05:40
channel c1: starting full datafile backup set
channel c1: specifying datafile(s) in backup set
including current control file in backup set
including current SPFILE in backup set
channel c1: starting piece 1 at 18/04/2009 00:18:38
channel c1: finished piece 1 at 18/04/2009 00:18:41
piece handle=/respaldo1/2akco3qj_1_1 tag=TAG20090418T001224 comment=NONE
channel c1: backup set complete, elapsed time: 00:00:03
Finished backup at 18/04/2009 00:18:41
released channel: c1

Recovery Manager complete.

Ejemplo 2 canales, el respaldo total demoro 4  minutos y 36 segundos, lo cual es un incremento de un 27% en el rendimiento del respaldo

[oracle@prod db11g:-odba]$ rman target / cmdfile=doscanales.rcv

Recovery Manager: Release 11.1.0.6.0 - Production on Sat Apr 18 00:19:14 2009

Copyright (c) 1982, 2007, Oracle.  All rights reserved.

connected to target database: ODBA (DBID=2080959378)

RMAN> run
2> { allocate channel c1 device type disk format '/respaldo1/%U';
3>   allocate channel c2 device type disk format '/respaldo2/%U';
4>  backup database;
5> }
6>
using target database control file instead of recovery catalog
allocated channel: c1
channel c1: SID=127 device type=DISK

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

Starting backup at 18/04/2009 00:19:17
channel c1: starting full datafile backup set
channel c1: specifying datafile(s) in backup set
input datafile file number=00001 name=/u02/oracle/odba/system01.dbf
input datafile file number=00004 name=/u02/oracle/odba/users01.dbf
input datafile file number=00003 name=/u02/oracle/odba/undotbs01.dbf
channel c1: starting piece 1 at 18/04/2009 00:19:24
channel c2: starting full datafile backup set
channel c2: specifying datafile(s) in backup set
input datafile file number=00002 name=/u02/oracle/odba/sysaux01.dbf
input datafile file number=00005 name=/u02/oracle/odba/example01.dbf
channel c2: starting piece 1 at 18/04/2009 00:19:31
channel c2: finished piece 1 at 18/04/2009 00:23:19
piece handle=/respaldo2/2ckco3sc_1_1 tag=TAG20090418T001917 comment=NONE
channel c2: backup set complete, elapsed time: 00:03:48
channel c2: starting full datafile backup set
channel c2: specifying datafile(s) in backup set
channel c1: finished piece 1 at 18/04/2009 00:23:45
piece handle=/respaldo1/2bkco3s6_1_1 tag=TAG20090418T001917 comment=NONE
channel c1: backup set complete, elapsed time: 00:04:21
channel c1: starting full datafile backup set
channel c1: specifying datafile(s) in backup set
including current SPFILE in backup set
channel c1: starting piece 1 at 18/04/2009 00:23:52
including current control file in backup set
channel c2: starting piece 1 at 18/04/2009 00:23:52
channel c1: finished piece 1 at 18/04/2009 00:23:53
piece handle=/respaldo1/2ekco44h_1_1 tag=TAG20090418T001917 comment=NONE
channel c1: backup set complete, elapsed time: 00:00:01
channel c2: finished piece 1 at 18/04/2009 00:23:53
piece handle=/respaldo2/2dkco43o_1_1 tag=TAG20090418T001917 comment=NONE
channel c2: backup set complete, elapsed time: 00:00:01
Finished backup at 18/04/2009 00:23:53
released channel: c1
released channel: c2

Recovery Manager complete.

Ejemplo 3, respaldo un canal comprimido, el respaldo total demoro 4  minutos y 25 segundos, lo cual es un incremento de un 30% en el rendimiento del respaldo

[oracle@prod db11g:-odba]$ rman target / cmdfile=uncomprimido.rcv

Recovery Manager: Release 11.1.0.6.0 - Production on Sat Apr 18 01:10:39 2009

Copyright (c) 1982, 2007, Oracle.  All rights reserved.

connected to target database: ODBA (DBID=2080959378)

RMAN> run
2> { allocate channel c1 device type disk format '/respaldo1/%U';
3>  backup as compressed backupset incremental level 0 database;
4> }
5>
using target database control file instead of recovery catalog
allocated channel: c1
channel c1: SID=127 device type=DISK

Starting backup at 18/04/2009 01:10:41
channel c1: starting compressed incremental level 0 datafile backup set
channel c1: specifying datafile(s) in backup set
input datafile file number=00001 name=/u02/oracle/odba/system01.dbf
input datafile file number=00002 name=/u02/oracle/odba/sysaux01.dbf
input datafile file number=00003 name=/u02/oracle/odba/undotbs01.dbf
input datafile file number=00005 name=/u02/oracle/odba/example01.dbf
input datafile file number=00004 name=/u02/oracle/odba/users01.dbf
channel c1: starting piece 1 at 18/04/2009 01:10:48
channel c1: finished piece 1 at 18/04/2009 01:14:54
piece handle=/respaldo1/2jkco6si_1_1 tag=TAG20090418T011041 comment=NONE
channel c1: backup set complete, elapsed time: 00:04:06
channel c1: starting compressed incremental level 0 datafile backup set
channel c1: specifying datafile(s) in backup set
including current control file in backup set
including current SPFILE in backup set
channel c1: starting piece 1 at 18/04/2009 01:15:12
channel c1: finished piece 1 at 18/04/2009 01:15:13
piece handle=/respaldo1/2kkco74e_1_1 tag=TAG20090418T011041 comment=NONE
channel c1: backup set complete, elapsed time: 00:00:01
Finished backup at 18/04/2009 01:15:13
released channel: c1

Recovery Manager complete.

Conclusiones, efectivamente los consejos entregados por Robert mejoran notablemente los tiempos de respaldo.  Las pruebas se realizaron en 1 servidor con Oracle Enterprise Linux 5.2 y 2 discos USB separados para los respaldos.

Impresiones sobre CLOUG (Chilean Oracle Users Group) 2009

Esta semana tuve el honor de asistir al CLOUG 2009 realizado en el hotel Ritz Carlton de Santiago de Chile, fue una experiencia espectacular, las charlas fueron realizadas por destacados profesionales a nivel mundial del mundo Oracle como Daniel Morgan, Robert Freeman, Tim Hall, Francisco Muñoz Alvarez por nombrar algunos.

Mis felicitaciones a los miembors de CLOUG por haber organizado tan gran evento, en Noviembre se realizará el segundo CLOUG y espero poder participar también.