lunes, 28 de diciembre de 2015

Oracle Database 11g: "Client Failover" en "Standby Databases" ( Part I )

Oracle Database 11g: "Client Failover" en "Standby Databases" ( Part I )

Por Joel Pérez  & Mahir M. Quluzade
Publicado en Septiembre 2015

Reciban estimados tecnólogos Oracle un cordial saludo. A través del presente artículo, tendremos la oportunidad de tratar un tema de gran importancia como lo es el concepto de “Client Failover” en ambientes de bases de datos “Standby”
Introducción
En repetidas ocasiones cuando analizamos infraestructuras e implantaciones de clientes, una de las primeras actividades que realizamos es el chequeo de cómo las buenas practicas están implementadas o si realmente lo están.
Al momento de realizarlo en materia de “Standby Databases”. Siempre hacemos una pregunta típica: ¿Cual es procedimiento o método que aplican/usan para manejar las conexiones de aplicaciones al momento en que se ha llevado a cabo un “Switchover” o “Failover”?
Las respuestas son diversas, la más típica en muchos casos es:
“...como casi nunca realizamos “Switchover” y mucho menos “Failover” es poco común que tengamos que re-direccionar las conexiones de nuestras aplicaciones.. por lo tanto dado el momento en que tengamos que realizar dicha operación, nos dirigimos al servidor de aplicaciones, allí editamos de forma manual el “Tnsentry” que direcciona a nuestra base de datos de producción, y lo cambiaremos para que direccione posteriormente al servidor “Standby”... en el cual estará operando la base de datos con rol primario”
En líneas generales muchos clientes aplican métodos manuales para re-direccionar sus aplicaciones hacia servidores con bases de datos “Standby”, una vez efectuada una operación de tipo “Switchover” o “Failover”.
Antes de ir mas allá en este tema hay una pregunta que deberían hacerse todos los DBAs que implantan soluciones de “Standby Databases”/”Data Guard”. Los productos Oracle gozan de un nivel elevado en tecnicismo y mas aun cuando estos poseen diversas versiones de desarrollo tal como el tema relacionado con “Standby Databases”/”Data Guard”. La pregunta seria la siguiente: Si las soluciones mencionadas poseen alto tecnicismo para realizar operaciones de “Switchover”/”Failover” y mas, ¿“Oracle Corp.” dejaría de lado el desarrollo o disponibilidad de un modo para que las aplicaciones puedan estar en alta escalabilidad con lo mencionado anteriormente?
La respuesta para el caso es: Si, “Oracle Corp” posee solución y modo para ello, lo mismo es denominado “Client Failover” para conexiones de aplicaciones. El concepto referido a “Client Failover” no está basado solo para el contexto de “Data Guard”.
Para mayor información al respecto les dejamos acá unos enlaces en cual podrán abarcar en forma profunda toda la información al respecto:
Client Failover Best Practices for Highly Available Oracle Databases: Oracle Database 11g Release 2
http://www.oracle.com/technetwork/database/features/availability/maa-wp-11gr2-client-failover-173305.pdf
Client Failover Best Practices for Highly Available Oracle Databases Oracle Database 12c
http://www.oracle.com/technetwork/database/availability/client-failover-2280805.pdf
How To Configure Client Failover For Dataguard Connections Using Database Services
El objetivo de este artículo es exponer de forma breve y efectiva una de las principales técnicas para conseguir implementar “Client Failover” en solución “Data Guard”. A través de los enlaces proporcionados, usted podrá abarcar el tema en un contexto general.
Iniciemos…
En la siguiente figura se expone una configuración típica de una solución “Data Guard”

Los primeros cambios a ser aplicados serán para los archivos “tnsnames.ora” & “sqlnet.ora” de servidores y clientes. En la figura podemos visualizar un servidor con IP: 192.168.56.146 el cual funge conceptualmente como servidor primario y el segundo con dirección IP: 192.168.56.136 como servidor “Standby”. En la descripción del “Tnsentry” encontrara la inclusión de ambos servidores. En el archivo “sqlnet.ora” la inclusión del parámetro “SQLNET.INBOUND_CONNECT_TIMEOUT”

Para mayor información del uso del parámetro “SQLNET.INBOUND_CONNECT_TIMEOUT”, colocamos acá la referencia textual de su descripción proveniente de la documentación oficial Oracle.
http://docs.oracle.com/cd/B28359_01/network.111/b28317/sqlnet.htm#CIHCCCHD

El objetivo principal del articulo y de la técnica que estamos exponiendo es presentar una configuración en la que sea posible que el cliente pueda conectarse indistintamente a la base de datos primaria independientemente de que esta se encuentre en cualquiera de los servidores sin modificar los archivos del cliente para cuando ocurra alguna transición ocasionada por un “Switchover” o “Failover”.
En la figura tenemos como ejemplo la ejecución de una operación de “Failover”. Internamente en la base de datos de producción y por consiguiente de forma replicada en la base de datos “Standby”, tendremos un servicio que para el presente caso lleva por nombre “ADMAPP”. El mismo estará iniciado “started” solo en la base de datos primaria, en la base de datos “Standby” el mismo estará detenido. El control para lo mencionado lo establecernos a través de un disparador en evento “Startup on Database”. Tal como podrán visualizar el código es bastante sencillo, si el rol que ejecuta dicha base de datos en ese momento es de tipo “Primary” entonces se procederá a su inicio en caso contrario permanecerá detenido como es su condición por defecto al momento del inicio de la base de datos.


Ubiquémonos en el escenario en el cual ya se ha llevado a cabo una operación de “Swithover” o “Failover”. Como resultado de la misma la base de datos primaria transformo su rol a “Standby Database” y viceversa para la original “Standby Database”, la cual para el momento desempeñaría rol como base de datos primaria.
Para el caso descrito, los clientes podrán establecer conexión sin problema alguno bajo esta nueva configuración debido a que el servicio “ADMAPP” se encuentra iniciado en la base de datos primaria que se encuentra trabajando en el servidor ( 192.168.56.136 ). Analizando la configuración “tnsentry” descrita, observara que la misma soporta la conexión descrita.

Entonces de esta sencilla manera podemos establecer “Client Failover” para bases de datos “Standby”. Lo mostrado acá es solo el concepto principal. Hay información adicional que conocer con respecto a que pasaría con el funcionamiento del “Observer” en caso de estar configurado, como aplicar TAF y sus efectos.. etc .. todo ello lo abarcaremos en la próxima entrega.
Para concluir el presente artículo mostremos un ejemplo de “tnsentry” para soportar el modelo descrito para ambiente RAC. Tal como puede apreciarse, poseemos una entrada para una configuración RAC, para dicho caso seria la solución típica que conforma el primario ( Base de datos de producción en RAC ) y el lado “Standby” configurado para el presente caso con un servidor con base de datos “Single Instance”. Descripción de la figura:
*  “LOAD_BALANCE” & “FAILOVER” para los 2 elementos de la lista ( Configuración RAC & “Single Instance” )
* Como es de forma natural y habitual, “LOAD_BALANCE” para la configuración interna de la solución RAC.

Estimados lectores hemos llegado al final de esta entrega, esperando que el presente artículo sea de utilidad. Nos despedimos hasta la próxima entrega.
Saludos!

PURGE AUDITORIA 11G - 12C

Como decíamos al principio, vamos ha configurar la base de datos para que se borren los registros anteriores a 100 días.

Lo primero que tendremos que hacer es inicializar el paquete con  DBMS_AUDIT_MGMT.init_cleanup

 En nuestro caso lo lanzaremos sobre AUDIT_TRAIL_AUD_STD Ya que lo que queremos limpiar son los registros de las tablas de auditoria de la base de datos, si quisiéramos limpiar otro (por ejemplo los del S.O seguiríamos la tabla Audit Trail Types)
BEGIN
 DBMS_AUDIT_MGMT.init_cleanup(
 audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,
 default_cleanup_interval => 24 /* horas*/);
END;
Tras esto, con la propiedad SET_LAST_ARCHIVE_TIMESTAMP indicamos cual es la fecha del ultimo registro que queremos guardar.(en nuestro caso borraremos todo lo anterior a 100 días)
BEGIN
  DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP(
    audit_trail_type  => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,
    last_archive_time => SYSTIMESTAMP-100 /*100 días*/);
END;
-- Set the Maximum age of XML audit files to 10 days.
BEGIN
  DBMS_AUDIT_MGMT.set_audit_trail_property(
    audit_trail_type           => DBMS_AUDIT_MGMT.AUDIT_TRAIL_XML,
    audit_trail_property       => DBMS_AUDIT_MGMT.OS_FILE_MAX_AGE,
    audit_trail_property_value => 10);
END;
/
Antes de ejecutar el trabajo, vamos a ver cual es el registro más antiguo:
SQL> select min(ntimestamp#) from sys.aud$;
-------------------------------------------
17/10/13 00:00:50,119000
Ejecutamos el purgado con la llamada
BEGIN
  DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL(
   audit_trail_type=> DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,
   use_last_arch_timestamp => TRUE);
END;
Tras ejecutar esto, el último registro debería de corresponderse con la fecha SYSDATE-100.
Si lo comprobamos tendremos que
SQL> select to_date(SYSTIMESTAMP-100) from dual 
--------
11/11/13
SQL> select min(ntimestamp#) from sys.aud$;
------------------------------------------
11/11/13 16:46:08,889000
Con lo que, efectivamente, habremos borrado todos los registros anteriores a 100 días.
A partir de ahora, podemos, o bien llevar a cabo los borrados de manera puntual con la llamada anterior, o planificarlos con en un job de purgado con la llamada
BEGIN
  DBMS_AUDIT_MGMT.CREATE_PURGE_JOB(
    audit_trail_type  => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,
    audit_trail_purge_interval => 24 /* horas */,  
    audit_trail_purge_name => 'PURGADO_DE_TABLAS_AUDITORIA',
    use_last_arch_timestamp=> TRUE);
END;

Generando reportes AWR, ASH y ADDM

Generando reportes AWR, ASH y ADDM
En algún momento durante el monitoreo de nuestra base de datos Oracle será necesario obtener información detallada en reportes, estos podrían ser los de AWR, AHR y/o ADDM. Este post se enfocará en realizar las mismas utilizando scripts, una manera alternativa a lo que nos ofrece con la interfaz gráfica de Enterprise Manager. A continuación se detalla los pasos para obtener los reportes.

A) Reporte AWR (awrrpt.sql)
El utilitario de informes AWR proporciona una visión general del rendimiento de bases de datos en un determinado tiempo. En esencia, calcula la variación de la actividad de la base de datos en el intervalo de tiempo elegido. el script "awrrpt.sql" se encuentra en el directorio $ORACLE_HOME/RDBMS/admin.
La salida del archivo es ubicada en el directorio actual. Para una mejor comprensión de dicho informe seleccionar el formato HTML.

1. Ingresamos al directorio donde se generará el Informe AWR.
bash-3.2$ cd /u01/informes/
bash-3.2$ pwd
/u01/informes
bash-3.2$ ls
bash-3.2$
2 Nos conectamos vía sqlplus con usuario de provilegios de DBA.
bash-3.2$ sqlplus pticona

SQL*Plus: Release 11.2.0.3.0 Production on Sun Jun 22 23:58:15 2014

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

Enter password:

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options

SQL>
3. Ejecutamos awrrpt.sql y nos aparecerá los datos actuales de la instancia.
SQL> @$ORACLE_HOME/rdbms/admin/awrrpt.sql

Current Instance
~~~~~~~~~~~~~~~~

   DB Id    DB Name      Inst Num Instance
----------- ------------ -------- ------------
  798387748 PRMY                1 prmy
3.1. Elegimos la opción para que el informe se genere en formato "html".
Specify the Report Type
~~~~~~~~~~~~~~~~~~~~~~~
Would you like an HTML report, or a plain text report?
Enter 'html' for an HTML report, or 'text' for plain text
Defaults to 'html'
Enter value for report_type:html

Type Specified:  html


Instances in this Workload Repository schema
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

   DB Id     Inst Num DB Name      Instance     Host
------------ -------- ------------ ------------ ------------
* 798387748         1 PRMY         prmy         primario

Using  798387748 for database Id
Using          1 for instance number

3.2. Para encontrar todos los AWR de la base de datos solo damos enter sin escribir nada.
Specify the number of days of snapshots to choose from
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Entering the number of days (n) will result in the most recent
(n) days of snapshots being listed.  Pressing  without
specifying a number lists all completed snapshots.

Enter value for num_days:

Listing all Completed Snapshots

                                                        Snap
Instance     DB Name        Snap Id    Snap Started    Level
------------ ------------ --------- ------------------ -----
prmy         PRMY                 1 18 Jun 2014 01:30      1
                                  2 18 Jun 2014 11:13      1
                                  3 18 Jun 2014 12:00      1
                                  4 22 Jun 2014 15:04      1
                                  5 22 Jun 2014 16:00      1
                                  6 22 Jun 2014 17:00      1
                                  7 22 Jun 2014 18:00      1
                                  8 22 Jun 2014 19:00      1
                                  9 22 Jun 2014 20:00      1
                                 10 22 Jun 2014 21:00      1
                                 11 22 Jun 2014 22:00      1
                                 12 22 Jun 2014 23:00      1
                                 13 23 Jun 2014 00:01      1
3.3. Con el listado desplegado, elegimos el intervalo de tiempo.
Specify the Begin and End Snapshot Ids
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Enter value for begin_snap: 10
Begin Snapshot Id specified: 10

Enter value for end_snap: 11
End   Snapshot Id specified: 11
3.4. Asignamos el nombre para el reporte.
Specify the Report Name
~~~~~~~~~~~~~~~~~~~~~~~
The default report file name is awrrpt_1_10_11.html.  To use this name,
press  to continue, otherwise enter an alternative.

Enter value for report_name: reporte_awr.html
.
.
Report written to reporte_awr.html
3.5. Salimos de sqlplus.
SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options
bash-3.2$
4 Finalmente verificamos el archivo creado.
bash-3.2$ pwd
/u01/informes
bash-3.2$ ls
reporte_awr.html
bash-3.2$
5 Para realizar una comparativa de reportes AWR, utilizar el siguiente script.
SQL> @$ORACLE_HOME/rdbms/admin/awrddrpt.sql
B) Reporte ASH (ashrpt.sql)
El reporte ASH es útil para determinar la cantidad de sesiones activas, lo que estaban haciendo, y que sentencias SQL son las más activas durante el período de tiempo seleccionado. Especialmente es muy útil para el análisis de problemas de rendimiento transitoria. El script "ashrpt.sql" se encuentra en el directorio $ORACLE_HOME/RDBMS/admin.
La salida del archivo es ubicada en el directorio actual. Para una mejor comprension de dicho informe seleccionar el formato HTML. 

1. Ingresamos al directorio donde se generará el Informe ASH.
bash-3.2$ cd /u01/informes/
bash-3.2$ pwd
/u01/informes
bash-3.2$ ls
bash-3.2$
2 Nos conectamos vía sqlplus con usuario de provilegios de DBA.
bash-3.2$ sqlplus pticona

SQL*Plus: Release 11.2.0.3.0 Production on Sun Jun 22 23:58:15 2014

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

Enter password:

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options

SQL>
3. Ejecutamos ashrpt.sql y nos aparecerá los datos actuales de la instancia.
SQL> @$ORACLE_HOME/rdbms/admin/ashrpt.sql

Current Instance
~~~~~~~~~~~~~~~~

   DB Id    DB Name      Inst Num Instance
----------- ------------ -------- ------------
  798387748 PRMY                1 prmy
3.1. Elegimos la opción para que el informe se genere en formato "html".
Specify the Report Type
~~~~~~~~~~~~~~~~~~~~~~~
Enter 'html' for an HTML report, or 'text' for plain text
Defaults to 'html'
Enter value for report_type: html

Type Specified:  html

Instances in this Workload Repository schema
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

   DB Id     Inst Num DB Name      Instance     Host
------------ -------- ------------ ------------ ------------
* 798387748         1 PRMY         prmy         primario

Defaults to current database

Using database id: 798387748

Enter instance numbers. Enter 'ALL' for all instances in a
RAC cluster or explicitly specify list of instances (e.g., 1,2,3).
Defaults to current instance.

Using instance number(s): 1

3.2. Ingresamos la hora de inicio y el intervalo de tiempo de duracion para el reporte ASH.
ASH Samples in this Workload Repository schema
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Oldest ASH sample available:  18-Jun-14 01:19:24   [   7150 mins in the past]
Latest ASH sample available:  23-Jun-14 00:29:06   [      0 mins in the past]


Specify the timeframe to generate the ASH report
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Enter begin time for report:

--    Valid input formats:
--      To specify absolute begin time:
--        [MM/DD[/YY]] HH24:MI[:SS]
--        Examples: 02/23/03 14:30:15
--                  02/23 14:30:15
--                  14:30:15
--                  14:30
--      To specify relative begin time: (start with '-' sign)
--        -[HH24:]MI
--        Examples: -1:15  (SYSDATE - 1 Hr 15 Mins)
--                  -25    (SYSDATE - 25 Mins)

Defaults to -15 mins
Enter value for begin_time: 06/22/14 21:05
Report begin time specified: 06/22/14 21:05

Enter duration in minutes starting from begin time:
Defaults to SYSDATE - begin_time
Press Enter to analyze till current time
Enter value for duration: 60
Report duration specified:   60

Using 22-Jun-14 21:05:00 as report begin time
Using 22-Jun-14 22:05:00 as report end time
3.3. Asignamos el nombre para el reporte ASH.
Specify the Report Name
~~~~~~~~~~~~~~~~~~~~~~~
The default report file name is ashrpt_1_0622_2205.html.  To use this name,
press  to continue, otherwise enter an alternative.
Enter value for report_name: reporte_ash.html
.
.
Report written to reporte_ash.html
3.4. Salimos de sqlplus.
SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options
bash-3.2$
4 Finalmente verificamos el archivo creado.
bash-3.2$ pwd
/u01/informes
bash-3.2$ ls
reporte_ash.html
bash-3.2$
C) Reporte ADDM (addmrpt.sql)
El utilitario de ADDM crea un informe con las conclusiones de rendimiento de base de datos. El script "addmrpt.sql" se encuentra en el directorio $ORACLE_HOME/RDBMS/admin. La salida del archivo se ubica en el directorio actual y es enformato de archivo de texto.
1. Ingresamos al directorio donde se generará el reporte ADDM.
bash-3.2$ cd /u01/informes/
bash-3.2$ pwd
/u01/informes
bash-3.2$ ls
bash-3.2$
2 Nos conectamos vía sqlplus con usuario de provilegios de DBA.
bash-3.2$ sqlplus pticona

SQL*Plus: Release 11.2.0.3.0 Production on Sun Jun 22 23:58:15 2014

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

Enter password:

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options

SQL>
3. Ejecutamos addmrpt.sql y nos aparecerá los datos actuales de la instancia.
SQL> @$ORACLE_HOME/rdbms/admin/addmrpt.sql

Current Instance
~~~~~~~~~~~~~~~~

   DB Id    DB Name      Inst Num Instance
----------- ------------ -------- ------------
  798387748 PRMY                1 prmy


Instances in this Workload Repository schema
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

   DB Id     Inst Num DB Name      Instance     Host
------------ -------- ------------ ------------ ------------
* 798387748         1 PRMY         prmy         primario

Using  798387748 for database Id
Using          1 for instance number


Specify the number of days of snapshots to choose from
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Entering the number of days (n) will result in the most recent
(n) days of snapshots being listed.  Pressing  without
specifying a number lists all completed snapshots.



Listing the last 3 days of Completed Snapshots

                                                        Snap
Instance     DB Name        Snap Id    Snap Started    Level
------------ ------------ --------- ------------------ -----
prmy         PRMY                 4 22 Jun 2014 15:04      1
                                  5 22 Jun 2014 16:00      1
                                  6 22 Jun 2014 17:00      1
                                  7 22 Jun 2014 18:00      1
                                  8 22 Jun 2014 19:00      1
                                  9 22 Jun 2014 20:00      1
                                 10 22 Jun 2014 21:00      1
                                 11 22 Jun 2014 22:00      1
                                 12 22 Jun 2014 23:00      1
                                 13 23 Jun 2014 00:01      1
3.1. Elegimos el intervalo de snapshots para el reporte ADDM.
Specify the Begin and End Snapshot Ids
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Enter value for begin_snap: 10
Begin Snapshot Id specified: 10

Enter value for end_snap: 11
End   Snapshot Id specified: 11
3.2. Asignamos el nombre para el reporte.
Specify the Report Name
~~~~~~~~~~~~~~~~~~~~~~~
The default report file name is addmrpt_1_10_11.txt.  To use this name,
press  to continue, otherwise enter an alternative.

Enter value for report_name: reporte_addm.txt
.
.
.
The database's maintenance windows were active during 100% of the analysis
period.

End of Report
Report written to reporte_addm.txt
SQL>
3.3. Salimos de sqlplus.
SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options
bash-3.2$
4 Finalmente verificamos el archivo creado.
bash-3.2$ pwd
/u01/informes
bash-3.2$ ls
reporte_addm.txt
bash-3.2$

lunes, 14 de diciembre de 2015

CLOUD CONTROL 12C

Comenzamos parando Cloud Control y todas las dependencias.
1
2
3
4
5
6
7
8
9
10
11
12
13
# Primero paramos Oracle Management Server (OMS)
$OMS_HOME/bin/emctl stop oms -all
 
# Paramos el Agente
$AGENT_HOME/bin/emctl stop agent
 
# Paramos la BD del Repositorio (MS12C) con SQL*Plus
sqlplus / as sysdba << EOF
SHUTDOWN IMMEDIATE
EOF
 
# Paramos el Listener
lsnrctl stop
Levantamos Cloud Control, pero hay que hacerlo en orden inverso a la parada.
1
2
3
4
5
6
7
8
9
10
11
12
13
# Levantamos el Listener
lsnrctl start
 
# Paramos la BD del Repositorio (MS12C) con SQL*Plus
sqlplus / as sysdba << EOF
STARTUP
EOF
 
# Levantamos Oracle Management Server (OMS)
$OMS_HOME/bin/emctl start oms
 
# Por último levantamos el Agente (se recomienda esperar al menos 15 segundos antes de lanzar el comando)
$AGENT_HOME/bin/emctl start agent

viernes, 20 de noviembre de 2015

Verificar y limitar el valor de ZFS buffer cache en Solaris

Modificar el siguiente parámetro en el /etc/system 

Este ejemplo setea el valor del buffer de ZFS en 1GB (el valor es exadecimal).

set zfs:zfs_arc_max=0x3B9ACA00

root@t52srv02:~# echo ::memstat | mdb -k

root@USBLDDB1010:~# echo ::memstat | mdb -k
Page Summary                 Pages             Bytes  %Tot
----------------- ----------------  ----------------  ----
Kernel                     1681062             12.8G    6%
Guest                            0                 0    0%
ZFS Metadata                445216              3.3G    2%
ZFS File Data             16733771            127.6G   61%
Anon                       5755643             43.9G   21%
Exec and libs                65620            512.6M    0%
Page cache                   28895            225.7M    0%
Free (cachelist)             31067            242.7M    0%
Free (freelist)            2521702             19.2G    9%
Total                     27262976              208G

jueves, 19 de noviembre de 2015

Step By Step Guide On Creating Physical Standby Using RMAN(ASM)

Step By Step Guide On Creating Physical Standby Using RMAN(ASM)

This article explains steps to create physical standby database using Oracle Database 11g RMAN  FROM ACTIVE DATABASE capability to the DUPLICATE FOR STANDBY command.
Primary database Name:primdv1
Standby database Name:stbydv1
Step1)Make sure primary database is running in archive log mode.
2)Determine if FORCE LOGGING is enabled. If it is not enabled, enable FORCE LOGGING mode.
SQL> SELECT force_logging FROM v$database;
FOR

NO
SQL> ALTER DATABASE FORCE LOGGING;
Database altered.
SQL> SELECT force_logging FROM v$database;
FOR

YES
3)Configure the primary database to receive redo data, by adding the standby logfiles to the primary
It is highly recommended that you have one more standby redo log group than you have online redo log groups as the primary database.
The files must be the same size or larger than the primary database’s online redo logs.
ALTER DATABASE ADD STANDBY LOGFILE
‘+DATA1/primdv1/srl01.log’
SIZE 52428800
/
ALTER DATABASE ADD STANDBY LOGFILE
‘+DATA1/primdv1/srl02.log’
SIZE 52428800
/
ALTER DATABASE ADD STANDBY LOGFILE
‘+DATA1/primdv1/srl03.log’
SIZE 52428800
/
ALTER DATABASE ADD STANDBY LOGFILE
‘+DATA1/primdv1/srl04.log’
SIZE 52428800
/
4)Set primary database initialization parameters
ALTER SYSTEM SET log_archive_config = ‘dg_config=(primdv1,stbydv1)’;
ALTER SYSTEM SET log_archive_dest_2 =
‘service=stbydv1 async valid_for=(online_logfile,primary_role) db_unique_name=stbydv1′;
show parameter log_archive_config
show parameter log_archive_dest_2
If you get following error
ERROR at line 1:
ORA-02097: parameter cannot be modified because specified value is invalid
ORA-16019: cannot use LOG_ARCHIVE_DEST_1 with LOG_ARCHIVE_DEST or LOG_ARCHIVE_DUPLEX_DEST
Solution :
1. Reset the LOG_ARCHIVE_DEST to NULL value :
SQL> ALTER SYSTEM set log_archive_dest=”;
2. Set the LOG_ARCHIVE_DEST_1 to the value set to LOG_ARCHIVE_DEST before
SQL> ALTER SYSTEM set log_archive_dest_1=’LOCATION=/…’;
if you use this code, you dont need to restart database:
ALTER SYSTEM SET LOG_ARCHIVE_DEST_1=’LOCATION=h:\oradata\archive’ SCOPE=BOTH;
To check archival destination issue is ok:
show parameter LOG_ARCHIVE_DEST;
select DEST_ID, DEST_NAME,DESTINATION from v$archive_dest;
update tnsnames.ora file with the following entries on both hosts:
PRIMDV1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = dgprim0001.ukatru.com)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = primdv1.ukatru.com)
)
)
STBYDV1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = dgstby0001.ukatru.com)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = stbydv1.ukatru.com)
)
)
update the listner.ora with the following values on standby database:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = standby1.example.com)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1)
(SID_NAME = standby1)
)
)
copy the remote login password file (orapwprimdv1) from the primary database system to the $ORACLE_HOME/dbs directory on the
standby database system, renaming it to orapwstbydv1.
In the $ORACLE_HOME/dbs directory of the standby system, create an initialization parameter file named initstbydv1.ora
containing a single parameter: DB_NAME=stbydv1(i.e. stbydv1)
On the standby system, change to the /u01/app/oracle/admin directory. Create a directory with a name that matches your physical standby SID (i.e. stbydv1).
Change to the newly created directory (i.e. stbydv1) and create an adump directory.
now on the standby system log into database
export ORACLE_SID=stbydv1
dgstby0001:/u01/app/oracle/admin/stbydv1>export ORACLE_SID=stbydv1
dgstby0001:/u01/app/oracle/admin/stbydv1>sqlplus / as sysdba
SQL*Plus: Release 11.2.0.3.0 Production on Sat Apr 14 22:57:24 2012
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Connected to an idle instance.
SQL>
SQL> startup nomount pfile=$ORACLE_HOME/dbs/initstbydv1.ora
ORACLE instance started.
Total System Global Area 238034944 bytes
Fixed Size 2227136 bytes
Variable Size 180356160 bytes
Database Buffers 50331648 bytes
Redo Buffers 5120000 bytes
RMAN> connect target sys
target database Password:
connected to target database: PRIMDV1 (DBID=1462743077)
RMAN> connect auxiliary sys@stbydv1
auxiliary database Password:
connected to auxiliary database: STBYDV1 (not mounted)
Below is the rman script to create standby database:
run {
allocate channel prmy1 type disk;
allocate channel prmy2 type disk;
allocate channel prmy3 type disk;
allocate channel prmy4 type disk;
allocate auxiliary channel stby type disk;
duplicate target database for standby from active database
spfile
parameter_value_convert ‘primdv1′,’stbydv1′
set db_unique_name=’stbydv1′
set db_file_name_convert=’/primdv1/’,’/stbydv1/’
set log_file_name_convert=’/primdv1/’,’/stbydv1/’
set control_files=’+DATA1′
set log_archive_max_processes=’5′
set fal_client=’stbydv1′
set fal_server=’primdv1′
set standby_file_management=’AUTO’
set log_archive_config=’dg_config=(primdv1,stbydv1)’
set log_archive_dest_2=’service=primdv1 ASYNC valid_for=(ONLINE_LOGFILE,PRIMARY_ROLE) db_unique_name=primdv1′
;
}
channel prmy3: SID=55 device type=DISK
allocated channel: prmy4
channel prmy4: SID=56 device type=DISK
allocated channel: stby
channel stby: SID=19 device type=DISK
Starting Duplicate Db at 14-APR-12
contents of Memory Script:
{
backup as copy reuse
targetfile ‘/u01/app/oracle/product/11.2.0.3/db_1/dbs/orapwprimdv1’ auxiliary format
‘/u01/app/oracle/product/11.2.0.3/db_1/dbs/orapwstbydv1’ targetfile
‘+DATA1/primdv1/spfileprimdv1.ora’ auxiliary format
‘/u01/app/oracle/product/11.2.0.3/db_1/dbs/spfilestbydv1.ora’ ;
sql clone “alter system set spfile= ”/u01/app/oracle/product/11.2.0.3/db_1/dbs/spfilestbydv1.ora””;
}
executing Memory Script
Starting backup at 14-APR-12
Finished backup at 14-APR-12
sql statement: alter system set spfile= ”/u01/app/oracle/product/11.2.0.3/db_1/dbs/spfilestbydv1.ora”
contents of Memory Script:
{
sql clone “alter system set audit_file_dest =
”/u01/app/oracle/admin/stbydv1/adump” comment=
”” scope=spfile”;
sql clone “alter system set dispatchers =
”(PROTOCOL=TCP) (SERVICE=stbydv1XDB)” comment=
”” scope=spfile”;
sql clone “alter system set log_archive_dest_1 =
”LOCATION=+DATA1/stbydv1” comment=
”” scope=spfile”;
sql clone “alter system set db_unique_name =
”stbydv1” comment=
”” scope=spfile”;
sql clone “alter system set db_file_name_convert =
”/primdv1/”, ”/stbydv1/” comment=
”” scope=spfile”;
sql clone “alter system set log_file_name_convert =
”/primdv1/”, ”/stbydv1/” comment=
”” scope=spfile”;
sql clone “alter system set control_files =
”+DATA1” comment=
”” scope=spfile”;
sql clone “alter system set log_archive_max_processes =
5 comment=
”” scope=spfile”;
sql clone “alter system set fal_client =
”stbydv1” comment=
”” scope=spfile”;
sql clone “alter system set fal_server =
”primdv1” comment=
”” scope=spfile”;
sql clone “alter system set standby_file_management =
”AUTO” comment=
”” scope=spfile”;
sql clone “alter system set log_archive_config =
”dg_config=(primdv1,stbydv1)” comment=
”” scope=spfile”;
sql clone “alter system set log_archive_dest_2 =
”service=primdv1 ASYNC valid_for=(ONLINE_LOGFILE,PRIMARY_ROLE) db_unique_name=primdv1” comment=
”” scope=spfile”;
shutdown clone immediate;
startup clone nomount;
}
executing Memory Script
sql statement: alter system set audit_file_dest = ”/u01/app/oracle/admin/stbydv1/adump” comment= ”” scope=spfile
sql statement: alter system set dispatchers = ”(PROTOCOL=TCP) (SERVICE=stbydv1XDB)” comment= ”” scope=spfile
sql statement: alter system set log_archive_dest_1 = ”LOCATION=+DATA1/stbydv1” comment= ”” scope=spfile
sql statement: alter system set db_unique_name = ”stbydv1” comment= ”” scope=spfile
sql statement: alter system set db_file_name_convert = ”/primdv1/”, ”/stbydv1/” comment= ”” scope=spfile
sql statement: alter system set log_file_name_convert = ”/primdv1/”, ”/stbydv1/” comment= ”” scope=spfile
sql statement: alter system set control_files = ”+DATA1” comment= ”” scope=spfile
sql statement: alter system set log_archive_max_processes = 5 comment= ”” scope=spfile
sql statement: alter system set fal_client = ”stbydv1” comment= ”” scope=spfile
sql statement: alter system set fal_server = ”primdv1” comment= ”” scope=spfile
sql statement: alter system set standby_file_management = ”AUTO” comment= ”” scope=spfile
sql statement: alter system set log_archive_config = ”dg_config=(primdv1,stbydv1)” comment= ”” scope=spfile
sql statement: alter system set log_archive_dest_2 = ”service=primdv1 ASYNC valid_for=(ONLINE_LOGFILE,PRIMARY_ROLE) db_unique_name=primdv1” comment= ”” scope=spfile
Oracle instance shut down
connected to auxiliary database (not started)
Oracle instance started
Total System Global Area 1068937216 bytes
Fixed Size 2235208 bytes
Variable Size 616563896 bytes
Database Buffers 444596224 bytes
Redo Buffers 5541888 bytes
allocated channel: stby
channel stby: SID=21 device type=DISK
contents of Memory Script:
{
sql clone “alter system set control_files =
”+DATA1/stbydv1/controlfile/current.256.780620989” comment=
”Set by RMAN” scope=spfile”;
backup as copy current controlfile for standby auxiliary format ‘+DATA1/stbydv1/controlfile/current.257.780620989’;
sql clone “alter system set control_files =
”+DATA1/stbydv1/controlfile/current.257.780620989” comment=
”Set by RMAN” scope=spfile”;
shutdown clone immediate;
startup clone nomount;
}
executing Memory Script
sql statement: alter system set control_files = ”+DATA1/stbydv1/controlfile/current.256.780620989” comment= ”Set by RMAN” scope=spfile
Starting backup at 14-APR-12
channel prmy1: starting datafile copy
copying standby control file
output file name=/u01/app/oracle/product/11.2.0.3/db_1/dbs/snapcf_primdv1.f tag=TAG20120414T230949 RECID=1 STAMP=780620989
channel prmy1: datafile copy complete, elapsed time: 00:00:03
Finished backup at 14-APR-12
sql statement: alter system set control_files = ”+DATA1/stbydv1/controlfile/current.257.780620989” comment= ”Set by RMAN” scope=spfile
Oracle instance shut down
connected to auxiliary database (not started)
Oracle instance started
Total System Global Area 1068937216 bytes
Fixed Size 2235208 bytes
Variable Size 616563896 bytes
Database Buffers 444596224 bytes
Redo Buffers 5541888 bytes
allocated channel: stby
channel stby: SID=23 device type=DISK
contents of Memory Script:
{
sql clone ‘alter database mount standby database’;
}
executing Memory Script
sql statement: alter database mount standby database
RMAN-05529: WARNING: DB_FILE_NAME_CONVERT resulted in invalid ASM names; names changed to disk group only.
contents of Memory Script:
{
set newname for tempfile 1 to
“+data1”;
switch clone tempfile all;
set newname for datafile 1 to
“+data1”;
set newname for datafile 2 to
“+data1”;
set newname for datafile 3 to
“+data1”;
set newname for datafile 4 to
“+data1”;
backup as copy reuse
datafile 1 auxiliary format
“+data1” datafile
2 auxiliary format
“+data1” datafile
3 auxiliary format
“+data1” datafile
4 auxiliary format
“+data1” ;
sql ‘alter system archive log current’;
}
executing Memory Script
executing command: SET NEWNAME
renamed tempfile 1 to +data1 in control file
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
executing command: SET NEWNAME
Starting backup at 14-APR-12
channel prmy1: starting datafile copy
input datafile file number=00001 name=+DATA1/primdv1/datafile/system.261.780607599
channel prmy2: starting datafile copy
input datafile file number=00002 name=+DATA1/primdv1/datafile/sysaux.262.780607621
channel prmy3: starting datafile copy
input datafile file number=00003 name=+DATA1/primdv1/datafile/undotbs1.263.780607639
channel prmy4: starting datafile copy
input datafile file number=00004 name=+DATA1/primdv1/datafile/users.265.780607653
output file name=+DATA1/stbydv1/datafile/users.260.780621011 tag=TAG20120414T231009
channel prmy4: datafile copy complete, elapsed time: 00:00:08
output file name=+DATA1/stbydv1/datafile/undotbs1.261.780621011 tag=TAG20120414T231009
channel prmy3: datafile copy complete, elapsed time: 00:01:47
output file name=+DATA1/stbydv1/datafile/system.258.780621011 tag=TAG20120414T231009
channel prmy1: datafile copy complete, elapsed time: 00:02:28
output file name=+DATA1/stbydv1/datafile/sysaux.259.780621011 tag=TAG20120414T231009
channel prmy2: datafile copy complete, elapsed time: 00:02:27
Finished backup at 14-APR-12
sql statement: alter system archive log current
contents of Memory Script:
{
switch clone datafile all;
}
executing Memory Script
datafile 1 switched to datafile copy
input datafile copy RECID=1 STAMP=780621158 file name=+DATA1/stbydv1/datafile/system.258.780621011
datafile 2 switched to datafile copy
input datafile copy RECID=2 STAMP=780621158 file name=+DATA1/stbydv1/datafile/sysaux.259.780621011
datafile 3 switched to datafile copy
input datafile copy RECID=3 STAMP=780621158 file name=+DATA1/stbydv1/datafile/undotbs1.261.780621011
datafile 4 switched to datafile copy
input datafile copy RECID=4 STAMP=780621158 file name=+DATA1/stbydv1/datafile/users.260.780621011
Finished Duplicate Db at 14-APR-12
released channel: prmy1
released channel: prmy2
released channel: prmy3
released channel: prmy4
released channel: stby
RMAN> **end-of-file**
Perform a log switch on the primary database and redo will start being sent to the standby.
dgprim0001:/u01/app/oracle/wkdir>sqlplus / as sysdba
SQL*Plus: Release 11.2.0.3.0 Production on Sat Apr 14 23:14:57 2012
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 – 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options
SQL> alter system switch logfile;
System altered.
dgstby0001:/u01/app/oracle/product/11.2.0.3/db_1/network/admin>sqlplus / as sysdba
SQL*Plus: Release 11.2.0.3.0 Production on Sat Apr 14 23:15:50 2012
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 – 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options
SQL> alter database recover managed standby database
2 using current logfile disconnect;
Database altered.
Now Verify that the Physical Standby Database is Performing Correctly
SELECT sequence#, first_time, next_time, applied
FROM v$archived_log
ORDER BY sequence#
/
SQL> SELECT sequence#, first_time, next_time, applied
FROM v$archived_log
ORDER BY sequence#
/
2 3 4
SEQUENCE# FIRST_TIM NEXT_TIME APPLIED
———- ——— ——— ———
31 14-APR-12 14-APR-12 YES
32 14-APR-12 14-APR-12 YES
33 14-APR-12 14-APR-12 YES
34 14-APR-12 14-APR-12 YES
35 14-APR-12 14-APR-12 YES
36 14-APR-12 14-APR-12 IN-MEMORY
6 rows selected.

viernes, 13 de noviembre de 2015

Deshabilitar en Oracle Database 11g Enterprise Edition, Opciones licenciables después de instalar la BD

Deshabilitar en Oracle Database 11g Enterprise Edition, Opciones licenciables después de instalar la BD

Por Ronald Vargas Quesada
Publicado en julio 2013
Tip Oracle Database 11gR2, opciones configurables para la base de datos versión Enterprise Edition
Una de las cosas -entre tantas- de cuales tenemos que tener mucho cuidado, es escoger de manera correcta y adecuada, la versión y opciones de la base de datos, que hemos adquirido con nuestro licenciamiento con Oracle.
Recuerde que cuando usted compra un producto de Oracle, firma un contrato OLSA, que transfiere a Oracle, la potestad de realizar revisiones periódicas, tantas cuantas sea necesarias, de los productos y opciones utilizadas con dichos productos.
Generalmente, este tipo de procesos son conocidos como LMS y causan por lo general, un verdadero dolor de cabeza a las empresas, cuando por error humano, muchas veces inducido por el desconocimiento, se instalan opciones del motor de la base de datos, sin que lo hallamos claramente indicado, como producto de una instalación de facto - NEXT NEXT.
La versión Enterprise Edition del producto Oracle Database, es uno de los productos del portafolio de Oracle, que más opciones licenciables por separado tiene.
Entre ellas sobresalen, las opciones de:
  • Particionamiento
  • Olap
  • Seguridad
  • Minería de datos
  • Real Application Cluster
  • Dataguard
  • RAC
Ahora bien, tenemos el inconveniente, que cuando creamos una instancia de la base de datos en la versión E.E., con el procedimiento "WINDOWS", o sea, NEXT NEXT, podríamos instalar opciones que no son gratuitas en la base de datos. Estas opciones una vez instaladas, en algunos casos, no pueden ser desinstaladas desde la interfaz gráfica del runInstaller.
En la versión 11g, aparece un utilitario llamado "CHOPT", el cual permite de manera rápida y fácil, crear un script, que puede ser utilizado, para "APAGAR", estas opciones en una instancia, ya creada.
A continuación, podrá encontrar el procedimiento para realizar el apagado, de la opción de "Particionamiento" en una instancia de la base de datos, que se ha instalado con la metodología de "DOS gráfico" y que puede ser utilizada, para las distintas opciones que permite este utilitario.
Para que funcione adecuadamente, es necesario que siga al pie de la letra el procedimiento.
Nota: Antes de ejecutar este procedimiento, asegúrese de contar con los respaldos actualizados de su base de datos, en caso de que sea necesario acudir a ellos, por algún error que se genere en el proceso de ejecución del procedimiento.
[oracle@rac3 ~]$ sqlplus /nolog

SQL*Plus: Release 11.2.0.1.0 Production on Wed Oct 19 06:18:18 2011

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

SQL> connect / as sysdba
Connected.
SQL> set pagesize 40
SQL> column comp_name format a37
SQL> /

COMP_NAME                             VERSION        STATUS
------------------------------------- -------------- -----------
OWB                                   11.2.0.1.0     VALID
Oracle Application Express            3.2.1.00.10    VALID
Oracle Enterprise Manager             11.2.0.1.0     VALID
OLAP Catalog                          11.2.0.1.0     VALID
Spatial                               11.2.0.1.0     VALID
Oracle Multimedia                     11.2.0.1.0     VALID
Oracle XML Database                   11.2.0.1.0     VALID
Oracle Text                           11.2.0.1.0     VALID
Oracle Expression Filter              11.2.0.1.0     VALID
Oracle Rules Manager                  11.2.0.1.0     VALID
Oracle Workspace Manager              11.2.0.1.0     VALID
Oracle Database Catalog Views         11.2.0.1.0     VALID
Oracle Database Packages and Types    11.2.0.1.0     VALID
JServer JAVA Virtual Machine          11.2.0.1.0     VALID
Oracle XDK                            11.2.0.1.0     VALID
Oracle Database Java Packages         11.2.0.1.0     VALID
OLAP Analytic Workspace               11.2.0.1.0     VALID
Oracle OLAP API                       11.2.0.1.0     VALID

18 rows selected.

SQL>

[oracle@rac3 ~]$ chopt

usage:

chopt  
La ejecución del comando podría brindarle la siguiente salida. No se preocupe, hasta este punto, no se ha ejecutado nada. Sin embargo, por si las dudas y por medida de precaución, antes de ejecutar el comando, proceda primero a bajar las instancias de base de datos disponibles.
Writing to /opt/oracle/product/11gR2/install/disable_partitioning.log...
%s_unixOSDMakePath% -f /opt/oracle/product/11gR2/rdbms/lib/ins_rdbms.mk part_off
%s_unixOSDMakePath% -f /opt/oracle/product/11gR2/rdbms/lib/ins_rdbms.mk ioracle

[oracle@rac3 ~]$ sqlplus /nolog

SQL*Plus: Release 11.2.0.1.0 Production on Wed Oct 19 06:22:10 2011

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

SQL> connect / as sysdba
Connected.
SQL> select * from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
PL/SQL Release 11.2.0.1.0 - Production
CORE    11.2.0.1.0      Production
TNS for Linux: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production

SQL> desc v$option
 Name                  Null?    Type
 --------------------- -------- ----------------------------
 PARAMETER                      VARCHAR2(64)
 VALUE                          VARCHAR2(64)

Verique que el parámetro de la opción correspondiente a ser modificada, tiene el valor de "TRUE" indicando que está instalada.
SQL> select parameter, value from v$option where parameter like 'Part%';

SQL> column PARAMETER format a20
SQL> column VALUE format a10
SQL> /

PARAMETER            VALUE
-------------------- ----------
Partitioning         TRUE

Proceda a bajar las instancias de la base de datos.
SQL>
[oracle@rac3 ~]$ sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on Wed Oct 19 06:36:36 2011
Copyright (c) 1982, 2009, Oracle.  All rights reserved.

SQL> connect / as sysdba
Connected.
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> exit

Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, Oracle Label Security, OLAP, Data Mining,
Oracle Database Vault and Real Application Testing options
[oracle@rac3 ~]$ lsnrctl stop

LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 19-OCT-2011 06:36:59

Copyright (c) 1991, 2009, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=rac3.lab.com)(PORT=1521)))
The command completed successfully

Antes de correr este procedimiento, asegúrese que la instancia o instancias de la base de datos, han sido bajadas.
Vaya al directorio que indicó el comando CHOPT, dónde este ha dejado un archivo .log con las instrucciones a ser ejecutadas ('chopt disable partitioning') y proceda a cambiar el valor de la variable en el archivo log, por la ubicación del comando "MAKE" y cambie los permisos del archivo, para que pueda ser ejecutado.
[oracle@rac3 ~]$ pwd
/home/oracle
[oracle@rac3 ~]$ cd /opt/oracle/product/11gR2/install
[oracle@rac3 install]$ vi disable_partitioning.log
[oracle@rac3 install]$ more disable_partitioning.log
/usr/bin/make -f /opt/oracle/product/11gR2/rdbms/lib/ins_rdbms.mk part_off
/usr/bin/make -f /opt/oracle/product/11gR2/rdbms/lib/ins_rdbms.mk ioracle
[oracle@rac3 install]$ chmod 711 disable_partitioning.log

Una vez cambiado los permisos del archivo, ejecute el mismo de la siguiente manera. El proceso puede durar de unos 5 a 10 minutos.
[oracle@rac3 install]$ ./disable_partitioning.log

/usr/bin/ar d /opt/oracle/product/11gR2/rdbms/lib/libknlopt.a kkpoban.o
/usr/bin/ar cr /opt/oracle/product/11gR2/rdbms/lib/libknlopt.a 
/opt/oracle/product/11gR2/rdbms/lib/ksnkkpo.o
chmod 755 /opt/oracle/product/11gR2/bin

 - Linking Oracle
rm -f /opt/oracle/product/11gR2/rdbms/lib/oracle
gcc  -o /opt/oracle/product/11gR2/rdbms/lib/oracle -m32 
-L/opt/oracle/product/11gR2/rdbms/lib/ -L/opt/oracle/product/11gR2/lib/ 
-L/opt/oracle/product/11gR2/lib/stubs/ -L/opt/oracle/product/11gR2/lib/ -lirc 
-lipgo    -Wl,-E /opt/oracle/product/11gR2/rdbms/lib/opimai.o 
/opt/oracle/product/11gR2/rdbms/lib/ssoraed.o 
/opt/oracle/product/11gR2/rdbms/lib/ttcsoi.o  -Wl,--whole-archive -lperfsrv11 
-Wl,--no-whole-archive /opt/oracle/product/11gR2/lib/nautab.o 
/opt/oracle/product/11gR2/lib/naeet.o /opt/oracle/product/11gR2/lib/naect.o 
/opt/oracle/product/11gR2/lib/naedhs.o /opt/oracle/product/11gR2/rdbms/lib/config.o
  -lserver11 -lodm11 -lcell11 -lnnet11 -lskgxp11 -lsnls11 -lnls11  -lcore11 
 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 -lxml11 -lcore11 -lunls11 -lsnls11 
-lnls11 -lcore11 -lnls11 -lclient11  -lvsn11 -lcommon11 -lgeneric11 -lknlopt `if 
/usr/bin/ar tv /opt/oracle/product/11gR2/rdbms/lib/libknlopt.a | grep xsyeolap.o > 
/dev/null 2>&1 ; then echo "-loraolap11" ; fi` -lslax11 -lpls11  -lrt -lplp11 
-lserver11 -lclient11  -lvsn11 -lcommon11 -lgeneric11 `if [ -f 
/opt/oracle/product/11gR2/lib/libavserver11.a ] ; then echo "-lavserver11" ; else 
echo "-lavstub11"; fi` `if [ -f /opt/oracle/product/11gR2/lib/libavclient11.a ] ; 
then echo "-lavclient11" ; fi` -lknlopt -lslax11 -lpls11  -lrt -lplp11 -ljavavm11 
-lserver11  -lwwg  `cat /opt/oracle/product/11gR2/lib/ldflags`    -lncrypt11 
-lnsgr11 -lnzjs11 -ln11 -lnl11 -lnro11 `cat /opt/oracle/product/11gR2/lib/ldflags`
    -lncrypt11 -lnsgr11 -lnzjs11 -ln11 -lnl11 -lnnz11 -lzt11 -lmm -lsnls11 -lnls11
-lcore11 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 -lxml11 -lcore11 -lunls11 
-lsnls11 -lnls11 -lcore11 -lnls11 -lztkg11 `cat 
/opt/oracle/product/11gR2/lib/ldflags`    -lncrypt11 -lnsgr11 -lnzjs11 -ln11 -lnl11
 -lnro11 `cat /opt/oracle/product/11gR2/lib/ldflags`    -lncrypt11 -lnsgr11 
-lnzjs11 -ln11 -lnl11 -lnnz11 -lzt11   -lsnls11 -lnls11  -lcore11 -lsnls11 -lnls11 
-lcore11 -lsnls11 -lnls11 -lxml11 -lcore11 -lunls11 -lsnls11 -lnls11 -lcore11 
-lnls11 `if /usr/bin/ar tv /opt/oracle/product/11gR2/rdbms/lib/libknlopt.a | grep 
"kxmnsd.o" > /dev/null 2>&1 ; then echo " " ; else echo "-lordsdo11"; fi` 
-L/opt/oracle/product/11gR2/ctx/lib/ -lctxc11 -lctx11 -lzx11 -lgx11 -lctx11 -lzx11 
-lgx11 -lordimt11 -lclsra11 -ldbcfg11 -lhasgen11 -lskgxn2 -lnnz11 -lzt11 -lxml11 
-locr11 -locrb11 -locrutl11 -lhasgen11 -lskgxn2 -lnnz11 -lzt11 -lxml11 -lasmclnt11 
-lcommon11 -lcell11 -lskgxp11 -lgeneric11  -lcommon11 -lgeneric11  -loraz -llzopro 
-lorabz2 -lsnls11 -lnls11  -lcore11 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 
-lxml11 -lcore11 -lunls11 -lsnls11 -lnls11 -lcore11 -lnls11 -lsnls11 -lunls11  
-lsnls11 -lnls11  -lcore11 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 -lxml11 
-lcore11 -lunls11 -lsnls11 -lnls11 -lcore11 -lnls11 -lasmclnt11 -laio    `cat 
/opt/oracle/product/11gR2/lib/sysliblist` -Wl,-rpath,/opt/oracle/product/11gR2/lib 
-lm    `cat /opt/oracle/product/11gR2/lib/sysliblist` -ldl -lm   
-L/opt/oracle/product/11gR2/lib
test ! -f /opt/oracle/product/11gR2/bin/oracle ||\
           mv -f /opt/oracle/product/11gR2/bin/oracle /opt/oracle/product/11gR2/bin/oracleO
mv /opt/oracle/product/11gR2/rdbms/lib/oracle /opt/oracle/product/11gR2/bin/oracle
chmod 6751 /opt/oracle/product/11gR2/bin/oracle
[oracle@rac3 install]$

Terminada la ejecución del procedimiento, arranque todos los servicios
[oracle@rac3 install]$ lsnrctl start

LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 19-OCT-2011 06:47:31
Copyright (c) 1991, 2009, Oracle.  All rights reserved.
Starting /opt/oracle/product/11gR2/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 11.2.0.1.0 - Production
System parameter file is /opt/oracle/product/11gR2/network/admin/listener.ora
Log messages written to /opt/oracle/product/diag/tnslsnr/rac3/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=rac3.lab.com)(PORT=1521)))

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=rac3.lab.com)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date                19-OCT-2011 06:47:31
Uptime                    0 days 0 hr. 0 min. 0 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /opt/oracle/product/11gR2/network/admin/listener.ora
Listener Log File         /opt/oracle/product/diag/tnslsnr/rac3/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=rac3.lab.com)(PORT=1521)))
The listener supports no services
The command completed successfully
[oracle@rac3 install]$ sqlplus /nolog

SQL*Plus: Release 11.2.0.1.0 Production on Wed Oct 19 06:47:35 2011

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

SQL> connect / as sysdba
Connected to an idle instance.
SQL> startup
ORACLE instance started.

Total System Global Area  318046208 bytes
Fixed Size                  1336260 bytes
Variable Size             239078460 bytes
Database Buffers           71303168 bytes
Redo Buffers                6328320 bytes
Database mounted.
Database opened.


SQL> column parameter format a20
SQL> column value format a10
SQL> select parameter, value from v$option where parameter like 'Parti%';

PARAMETER            VALUE
-------------------- ----------
Partitioning         FALSE

SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Oracle Label Security, OLAP, Data Mining, Oracle Database Vault
and Real Application Testing options
[oracle@rac3 install]$

Como puede observar, efectivamente a la hora de salir de la base de datos, ya no muestra que la opción de "Particionamiento", se encuentra instalada y el valor del parámetro dentro de la configuración del diccionario de la base de datos es "FALSE".

Procedimiento para cambiar IPs de servidores en RAC11gR2

Procedimiento para cambiar IPs de servidores en RAC11gR2

Por Joel Pérez , Ajith Narayanan y Jorge Zorrilla (OCP)
Publicado en Abril 2015
Reciban estimados tecnólogos Oracle un cordial saludo. A través del presente artículo tendremos la oportunidad de visualizar y adentrarnos un poco en algunas de las tantas tareas posibles de realizar entorno a la administración de la solución Oracle denominada RAC ( Real Application Cluster ).
Ahora, ¿en qué escenario es necesario cambiar la(s) IP(s) de los servidores de base de datos?
Existen muchos escenarios que pueden conllevar un cambio de este tIPo. Ilustremos uno:
A nivel empresarial normalmente los requerimientos de auditoría indican que las bases de datos que manejen información crítica en general deben de estar en una red aislada, separada a través de un Firewall especial o varios de ellos.  Para el caso de cuando ya se tiene instalada toda la infraestructura ( Servidores, software, etc.. ), y se deseen aplicar las mejores practicas mencionadas, es cuando nos encontramos con la necesidad de cambiar direcciones IP no solo para los servidores sino para la configuración del software que se encuentra trabajando internamente en este.
En este artículo deseamos explicar paso a paso el procedimiento para cambiar las IPs de una configuración en RAC.
En una configuración RAC cada servidor tiene 3 direcciones IPs asignadas.
  • IP Publica: resuelve al nombre . Ejm  MyServer1. Se define en el DNS y en el archivo /etc/hosts.
  • IP Virtual(VIP): resuelve al nombre -vIP. Ejm MyServer1-vIP.  Se define en el DNS y en el archivo /etc/hosts.
  • IP Privada(Interconnect): resuelve al nombre -priv. Ejm MyServer1-priv.
Solo las IPs públicas y Virtuales serán modificas ya que las IPs Privadas no se encentran en la red LAN y ningún otro sistema o servidor acceden a ellas.
La siguiente tabla muestra las direcciones IPs originales y las nuevas direcciones IPs que se desean definir:
(NOTA: Para el ejemplo utilizamos direcciones IPs dentro de una red doméstica, sin embargo, el procedimiento es el mismo para IPs en diferentes tipos de redes)
NombreIPs OriginalesNuevas IPs
MyServer1.lab.com169.254.234.10169.254.234.70
MyServer2.lab.com169.254.234.20169.254.234.80
MyServer3.lab.com169.254.234.30169.254.234.90

NombreIPs OriginalesNuevas IPs
MyServer1-vIP.lab.com169.254.234.11169.254.234.71
MyServer2-vIP.lab.com169.254.234.12169.254.234.81
MyServer3-vIP.lab.com169.254.234.13169.254.234.91

Guardar la configuración Actual
Guardar el detalle de la configuración actual puede ser muy útil al momento de resolver problemas que puedan presentarse.
Para obtener la configuración actual debemos de ejecutar la siguiente secuencia de comandos
Configuración de nodeapps
[oracle@MyServer1 ~]# srvctl config nodeapps -n $HOSTNAME -a   


Interfaces de red almacenadas en el OCR
[root@MyServer1 ~]# $ORA_CRS_HOME/bin/oifcfg getif   


Configuración de red a nivel del Sistema Operativo.
[root@MyServer1 ~]# /sbin/ifconfig


Los siguientes pasos son requeridos para poder hacer el cambio de direcciones IPs en una arquitectura de base de datos RAC.
  1. Detener la base de datos y deshabilitar el inicio automático de los servicios de RAC.
  2. Utilizar el procedimiento estándar para bajar las instancias de base de datos.  Bajar todas las instancias de base de datos.
    Luego de bajar las instancias de base de datos es necesario>
    • Detener las instancias ASM
    • Detener nodeapps

  3. Detener la instancia ASM y deshabilitar el inicio automático.
  4. Es recomendable también deshabilitar la instancia ASM ya que en una situación de problema, es más sencillo poder hacer revisiones.
    Los comandos que utilizamos son los siguientes:
    [oracle@MyServer1 ~]#srvctl stop  database –d 
    [oracle@MyServer1 ~]#srvctl disable  instance -d  -i 
    [oracle@MyServer1 ~]#srvctl disable asm  -n $HOSTNAME 
    

    El siguiente paso es detener el nodeapps y verificar que las IPs Virtuales ya no se encuentran activas. Para eso ejecutamos el comando 'ifconfig -a'
    [oracle@MyServer1 ~]#ifconfig -a

    SI las interfaces aún se encuentran activas, puede que existan recursos dependiente de las IPs Virtuales, aun activos.  El comando crs_stat nos puede ayudar a revisar cuales son los recursos activos.
  5. Detener el servicio de cluster del nodo donde se va a cambiar la IP
  6. Detenemos el servicio de cluster CRS con el usuario root.  Si no se detiene el CRS, el servicio puede entrar en un estado inestable y provocar reinicios inesperados de los servidores.
    El comando para detener el servicio de cluster es:
    [root@MyServer1 ~]#/etc/init.d/init.crs  stop

  7. Desmontar los filesystems NFS
  8. Consultar el archivo /etc/fstab y desmontar todos los filesystems NFS que comparten información.  Es necesario desmontar dichos filesystem antes de hacer el cambio de IP pública debido a que puede causar inestabilidad en los filesystems locales. Esto puede provocar que el acceso del usuario oracle, mediante ssh, no funcione correctamente.
  9. Actualizar el archivo /etc/hosts en todos los nodos de base de datos.
  10. Conectarse con el usuario root a todos los nodos de la arquitectura RAC y actualizar el archivo /etc/hosts.  Los valores a cambiar serán las IPs públicas y virtuales.
    ​[root@MyServer1 ~]# vi /etc/hosts
    169.254.234.70   MyServer1 MyServer1.lab.com
    169.254.234.71   MyServer1-vIP MyServer1-vIP.lab.com
    172.16.100.51    MyServer1-priv MyServer1-priv.lab.com
    169.254.234.80   MyServer2 MyServer2.lab.com
    169.254.234.81   MyServer2-vIP MyServer2-vIP.lab.com
    172.16.100.52    MyServer2-priv MyServer2-priv.lab.com 
    169.254.234.90   MyServer2 MyServer2.lab.com
    169.254.234.91   MyServer2-vIP MyServer2-vIP.lab.com
    172.16.100.53    MyServer2-priv MyServer2-priv.lab.com
    169.254.234.250  MyServer-scan MyServer-scan.lab.com
    169.254.234.251  MyServer-gns MyServer-gns.lab.com
    ::1              localhost6.localdomain6  localhost6
    127.0.0.1        localhost.localdomain localhost 


  11. Actualizar el archivo ifcfg-eth0 con la nueva IP.
  12. Actualizar el archivo ifcfg-eth0 en la ruta /etc/sysconfig/network-scrIPts/ con la nueva IP. También se puede realizar mediante la interfaz gráfica del sistema operativo.
    [root@MyServer1 ~]# ls -l /etc/sysconfig/network-scrIPts/ 
    total 392
    -rw-r--r-- 3 root root   116  Oct 10 12:40 ifcfg-eth0
    -rw-r--r-- 3 root root   187  Oct 10 12:40 ifcfg-eth1
    -rw-r--r-- 3 root root   127  Oct 21 16:46 ifcfg-eth2
    -rw-r--r-- 1 root root   254  Mar  3   2008 ifcfg-lo
    [...]
    [root@MyServer1 ~]# cat /etc/sysconfig/network-scrIPts/ifcfg-eth0
    # 
    DEVICE=eth0
    BOOTPROTO=static
    HWADDR=00:14:4F:29:00:1D
    IPADDR=169.254.234.70
    NETMASK=255.255.255.0
    ONBOOT=no 


  13. Reiniciar el servicio de red.
  14. [root@MyServer1 ~]# service network stop
    [root@MyServer1 ~]# service network  start 


  15. Realizar una prueba con el comando ping
  16. [root@MyServer1 ~]# ping 169.254.234.70
    [root@MyServer1 ~]# ping 169.254.234.80
    [root@MyServer1 ~]# ping 169.254.234.90 


  17. Modificar el archivo listener.ora
  18. Si los listener están definidos con IPs y no con nombre del servidor, es necesario modificar la dirección IP en el listener.ora.
  19. Iniciar el servicio de cluster
  20. Con el usuario root, iniciar el servicio de cluster en todos los nodos.
    [root@MyServer1 ~]#/etc/init.d/init.crs  start
    [root@MyServer2 ~]#/etc/init.d/init.crs  start
    [root@MyServer3 ~]#/etc/init.d/init.crs  start 


  21. Volver a detener el servicio de nodeapps en todos los nodos.
  22. [oracle@MyServer1 ~]# srvctl stop  nodeapps -n $HOSTNAME
    [oracle@MyServer2 ~]# srvctl stop  nodeapps -n $HOSTNAME
    [oracle@MyServer3 ~]# srvctl stop  nodeapps -n $HOSTNAME 

    Revisar que el nodeapps se encuentre detenido en todos los nodos.  Cuando se detuvo el servicio de cluster las IPs Virtuales se relocalizaron en otro nodo y se mantuvieron en dicho nodo incluso después de volver a iniciar el servicio de cluster.
    [oracle@MyServer1 ~]# srvctl status  nodeapps -n $HOSTNAME 
     
  23. Cambiar las direcciones IPs públicas en el OCR
  24. Se realiza con el usuario root.  La sub-red es 10.12.20.0
    [root@MyServer1 ~]#  $ORA_CRS_HOME/bin/oifcfg delif -global eth0
    [root@MyServer1 ~]#  $ORA_CRS_HOME/bin/oifcfg setif -global eth0/169.254.234.70:public
    
    [root@MyServer2 ~]#  $ORA_CRS_HOME/bin/oifcfg delif -global eth0
    [root@MyServer2 ~]#  $ORA_CRS_HOME/bin/oifcfg setif -global eth0/169.254.234.80:public
    
    [root@MyServer3 ~]#  $ORA_CRS_HOME/bin/oifcfg delif -global eth0
    [root@MyServer3 ~]#  $ORA_CRS_HOME/bin/oifcfg setif -global eth0/169.254.234.90:public 


  25. Revisar nuevamente el archivo /etc/hosts. 
  26. El comando setif puede haber agregado registros en el archivo /etc/hosts, apuntando a las IP privadas.  Si se ha agregado algún registro, es necesario removerlo.  Además es necesario revisar que el registro de las IPs públicas de cada servidor se definan con el nombre del servidor y dominio (FDQN), así como también, con solo el nombre del servidor.
  27. Cambiar las direcciones IPs Virtuales
  28. Con el usuario root modificar las IPs virtuales con el comando srvctl (corregir el nombre del servidor, la dirección IP y la máscara de red si fuera necesario)
    [root@MyServer1 ~]# srvctl modify nodeapps -n MyServer1 -A 169.254.234.71/255.255.255.0/eth0 
    [root@MyServer2 ~]# srvctl modify nodeapps -n MyServer1 -A  169.254.234.81/255.255.255.0/eth0 
    [root@MyServer3 ~]# srvctl modify nodeapps -n MyServer1 -A  169.254.234.91/255.255.255.0/eth0 


  29. Reiniciar el nodeapps en cada nodo.
  30. [root@MyServer3 ~]# $ORA_CRS_HOME/bin/srvctl start nodeapps -n  $HOSTNAME 


  31. Volver a montar los filesystems NFS listados en el archivo /etc/fstab. 
  32. Si existe algún problema de permisos, trabajar con el equipo de Storage para limpiar la cache del DNS en el servidor NAS.  También es importante revisar que no haya direcciones IPs fijas definidas en el archivo /etc/hosts del servidor NAS.
  33. Verificar e iniciar las instancias de base de datos.
  34. De manera opcional se puede correr el utilitario runcluvfy.sh para verificar la configuración de red.
    Validar que el nodeapps y el listener inicien de manera exitosa en todos los nodos.
    Finalmente proceder a levantar las instancias de base de datos.

Emulando una Super DLT a Disco flash_recovery_area

Emulando una Super DLT a Disco

Por Alberto Silva
Publicado en noviembre 2009


Descubriendo Oracle Test Disk API


En mi búsqueda para encontrar ambientes que puedan emular tecnología muy costosa, me encontré con un problema cuando respalde el Flash Recovery Area. El error ORA-6747 indica que no es posible respaldar a disco la (FRA) y debe ser asignado una canal SBT. La verdad que si no tengo cintas estoy "frito" y no puedo respaldar en caso de alguna catástrofe.
Respaldando Flash Recovery Area con RMAN
Al configurar el (FRA) con RMAN, sera posible mantener los respaldos realizados sin tener que ser llevados a cinta. Esto aumenta la disponibilidad de respaldos en caso de alguna falla y disminuye el MTTR.
 MTTR 'Mean Time to Recover'
Este término significa el tiempo promedio que
se demora al recuperar un sistema. En este caso,
es tiempo que demora recuperar la base de
datos.
 
Para revisar el espacio disponible en el (FRA), se puede consultar la siguiente vista:

SQL> select SPACE_RECLAIMABLE from
V$RECOVERY_FILE_DEST; SPACE_RECLAIMABLE ----------------- 43008

El valor de esta columna se incrementa cada vez que se realiza un respaldo, si esta definido en el flash recovery area.
API oracle.disksbt
El oracle.disksbt es un API que nos provee Oracle para poder testear procedimientos de respaldo que utilizan dispositivos SBT. En este caso se define como un pseudo dispositivo de cinta que en definitiva esta configurado contra un filesystem ó directorio definido para almacenar ahí los respaldos realizados con esta API. Finalmente, RMAN asume que tiene una cinta y que el dispositivo SBT esta disponible cada vez que necesita consultar, respaldar o recuperar. Es importante generar una configuración persistente mediante la definición del parámetro con el comando CONFIGURE.
1. Crear un directorio donde el usuario dueño del motor Oracle pueda escribir.
    ejemplo : mkdir /oracle/tape_backup

2. Llamando a la API desde RMAN
    Ej: run {     allocate channel DR1 device type 'SBT_TAPE'
    PARMS="SBT_LIBRARY=oracle.disksbt,ENV=(BACKUP_DIR=/oracle/type_backup)"
;
    backup as compressed backupset database plus archivelog;
    backup current controlfile;
    backup spfile tag=FULL_DB
    }

allocated channel: DR1
channel DR1: sid=134 devtype=SBT_TAPE
channel DR1: WARNING: Oracle Test Disk API

Starting backup at 27-AUG-09
current log archived
channel DR1: starting compressed archive log backupset
channel DR1: specifying archive log(s) in backup set
input archive log thread=1 sequence=17 recid=17 stamp=695996692
input archive log thread=1 sequence=18 recid=18 stamp=695996761
input archive log thread=1 sequence=19 recid=19 stamp=695997028
channel DR1: starting piece 1 at 27-AUG-09
channel DR1: finished piece 1 at 27-AUG-09
piece handle=2skno4j5_1_1 tag=TAG20090827T123029 comment=API Version 2.0,MMS Version 8.1.3.0
channel DR1: backup set complete, elapsed time: 00:00:02
Finished backup at 27-AUG-09

Starting backup at 27-AUG-09
channel DR1: starting compressed full datafile backupset
channel DR1: specifying datafile(s) in backupset
input datafile fno=00001 name=/oracle/product/10.2.0/oradata/BIZPR1/BIZPR1/system01.dbf
input datafile fno=00003 name=/oracle/product/10.2.0/oradata/BIZPR1/BIZPR1/sysaux01.dbf
input datafile fno=00002 name=/oracle/product/10.2.0/oradata/BIZPR1/BIZPR1/undotbs01.dbf
input datafile fno=00004 name=/oracle/product/10.2.0/oradata/BIZPR1/BIZPR1/users01.dbf
channel DR1: starting piece 1 at 27-AUG-09
channel DR1: finished piece 1 at 27-AUG-09
piece handle=2tkno4j8_1_1 tag=TAG20090827T123031 comment=API Version 2.0,MMS Version 8.1.3.0
channel DR1: backup set complete, elapsed time: 00:01:25
Finished backup at 27-AUG-09

Starting backup at 27-AUG-09
current log archived
channel DR1: starting compressed archive log backupset
channel DR1: specifying archive log(s) in backup set
input archive log thread=1 sequence=20 recid=20 stamp=695997117
channel DR1: starting piece 1 at 27-AUG-09
channel DR1: finished piece 1 at 27-AUG-09
piece handle=2ukno4lv_1_1 tag=TAG20090827T123159 comment=API Version 2.0,MMS Version 8.1.3.0
channel DR1: backup set complete, elapsed time: 00:00:02
Finished backup at 27-AUG-09

Starting backup at 27-AUG-09
channel DR1: starting full datafile backupset
channel DR1: specifying datafile(s) in backupset
including current control file in backupset
channel DR1: starting piece 1 at 27-AUG-09
channel DR1: finished piece 1 at 27-AUG-09
piece handle=2vkno4m2_1_1 tag=TAG20090827T123202 comment=API Version 2.0,MMS Version 8.1.3.0
channel DR1: backup set complete, elapsed time: 00:00:02
Finished backup at 27-AUG-09

Starting backup at 27-AUG-09
channel DR1: starting full datafile backupset
channel DR1: specifying datafile(s) in backupset
including current SPFILE in backupset
channel DR1: starting piece 1 at 27-AUG-09
channel DR1: finished piece 1 at 27-AUG-09
piece handle=30kno4m5_1_1 tag=FULL_DB comment=API Version 2.0,MMS Version 8.1.3.0
channel DR1: backup set complete, elapsed time: 00:00:02
Finished backup at 27-AUG-09

Starting Control File and SPFILE Autobackup at 27-AUG-09
piece handle=c-3301411538-20090827-09 comment=API Version 2.0,MMS Version 8.1.3.0
Finished Control File and SPFILE Autobackup at 27-AUG-09
released channel: DR1 RMAN> list backup;

List of Backup Sets
===================

BS Key   Size Device  Type Elapsed Time  Completion  Time
----------  -----------------  ---------------------------  ----------------  --------
4452 256.00K SBT_TAPE 00:00:01 27-AUG-09
BP Key: 4454 Status: AVAILABLE Compressed: YES Tag: TAG20090827T123029
Handle: 2skno4j5_1_1 Media:

List of Archived Logs in backup set 4452
Thrd  Seq Low  SCN Low  Time  Next  SCN Next Time
------- ------- ---------- --------- ---------- -------------
1 17 490207 27-AUG-09 490569 27-AUG-09
1 18 490569 27-AUG-09 490612 27-AUG-09
1 19 490612 27-AUG-09 490799 27-AUG-09

BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
4453 Full 95.00M SBT_TAPE 00:01:22 27-AUG-09
BP Key: 4455 Status: AVAILABLE Compressed: YES Tag: TAG20090827T123031
Handle: 2tkno4j8_1_1 Media:

List of Datafiles in backup set 4453 File LV Type Ckp SCN Ckp Time Name
-------------------- --------------- ----------------- ------------------ --------------- -------------
1 Full 490809 27-AUG-09 /oracle/product/10.2.0/oradata/BIZPR1/BIZPR1/system01.dbf
2 Full 490809 27-AUG-09 /oracle/product/10.2.0/oradata/BIZPR1/BIZPR1/undotbs01.dbf
3 Full 490809 27-AUG-09 /oracle/product/10.2.0/oradata/BIZPR1/BIZPR1/sysaux01.dbf
4 Full 490809 27-AUG-09 /oracle/product/10.2.0/oradata/BIZPR1/BIZPR1/users01.dbf

BS Key Size Device Type Elapsed Time Completion Time
-------- ------------------- ------------ --------------- ----------------------
4468 256.00K SBT_TAPE 00:00:01 27-AUG-09
BP Key: 4473 Status: AVAILABLE Compressed: YES Tag: TAG20090827T123159
Handle: 2ukno4lv_1_1 Media:

List of Archived Logs in backup set 4468
Thrd Seq Low SCN Low Time Next SCN Next Time
---------- ------------ ---------- ------------ ------------ ---------
1 20 490799 27-AUG-09 490843 27-AUG-09

BS Key Type LV Size Device Type Elapsed Time Completion Time
---------- --------- ------ -------------- --------------- --------------- -----------------
4481 Full 7.00M SBT_TAPE 00:00:01 27-AUG-09
BP Key: 4483 Status: AVAILABLE Compressed: NO Tag: TAG20090827T123202
Handle: 2vkno4m2_1_1 Media:
Control File Included: Ckp SCN: 490863 Ckp time: 27-AUG-09

BS Key Type LV Size Device Type Elapsed Time Completion Time
----------- -------- ------- -------------- --------------- ---------------- ------------------
4493 Full 256.00K SBT_TAPE 00:00:01 27-AUG-09
BP Key: 4495 Status: AVAILABLE Compressed: NO Tag: FULL_DB
Handle: 30kno4m5_1_1 Media:
SPFILE Included: Modification time: 27-AUG-09

BS Key Type LV Size Device Type Elapsed Time Completion Time
----------- --------- ---- ------------- -------------- --------------- --------------------
4505 Full 7.25M SBT_TAPE 00:00:01 27-AUG-09
BP Key: 4507 Status: AVAILABLE Compressed: NO Tag: TAG20090827T123209
Handle: c-3301411538-20090827-09 Media:
Control File Included: Ckp SCN: 490886 Ckp time: 27-AUG-09
SPFILE Included: Modification time: 27-AUG-09

Y ahora podemos respaldar el Flash Recovery Area:

RMAN> backup recovery area;

Starting backup at 27-AUG-09
allocated channel: ORA_SBT_TAPE_1
channel ORA_SBT_TAPE_1: sid=134 devtype=SBT_TAPE
channel ORA_SBT_TAPE_1: WARNING: Oracle Test Disk API
specification does not match any datafile copy in the repository
specification does not match any backupset in the repository
skipping archive log file /oracle/product/10.2.0/db_1/flash_recovery_area/BIZPR1/ archivelog/2009_08_27/o1_ mf_1_17_59fdtmw0_.arc; already backed up 1 time(s) skipping archive log file /oracle/product/10.2.0/db_1/flash_recovery_area/BIZPR1/ archivelog/2009_08_27/o1_ mf_1_18_59fdws7p_.arc; already backed up 1 time(s) skipping archive log file /oracle/product/10.2.0/db_1/flash_recovery_area/BIZPR1/archivelog/2009_08_27/o1_ mf_1_19_59ff54nn_.arc; already backed up 1 time(s) skipping archive log file /oracle/product/10.2.0/db_1/flash_recovery_area/BIZPR1/archivelog/2009_08_27/o1_ mf_1_20_59ff7xl3_.arc; already backed up 1 time(s) Finished backup at 27-AUG-09

CONSOLA 12C DB EXPRESS

The DB Express runs entirely with pl/sql code within the XDB schema. It’s XDB that leverages its features to enable a web-based console, and it’s embedded by default in the database.
To enable it, it’s necessary to check that the parameter dispatchers is enabled for XDB:


and then set an https port unique on the server:
  

If you’ve already done it but you don’t remember the port number you can get it with this query: