jueves, 22 de agosto de 2013

EXAMPLE BACKUP AS COPY



[oracle@localhost labs2]$ rman target /
Recovery Manager: Release 11.2.0.1.0 - Production on Thu Aug 22 17:37:16 2013
Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
connected to target database: ACME (DBID=2003395651)
RMAN> backup incremental level 1 for recover of copy with tag 'backup_incr' database;
Starting backup at 2013-08-22:17:38:04
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=37 device type=DISK
no parent backup or copy of datafile 1 found
no parent backup or copy of datafile 2 found
no parent backup or copy of datafile 5 found
no parent backup or copy of datafile 3 found
no parent backup or copy of datafile 4 found
channel ORA_DISK_1: starting datafile copy
input datafile file number=00001 name=/u01/app/oracle/oradata/acme/system01.dbf
output file name=/u01/app/oracle/flash_recovery_area/ACME/datafile/o1_mf_system_91f4phck_.dbf tag=BACKUP_INCR RECID=2 STAMP=824146789
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:01:45
channel ORA_DISK_1: starting datafile copy
input datafile file number=00002 name=/u01/app/oracle/oradata/acme/sysaux01.dbf
output file name=/u01/app/oracle/flash_recovery_area/ACME/datafile/o1_mf_sysaux_91f4svo0_.dbf tag=BACKUP_INCR RECID=3 STAMP=824146910
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:02:07
channel ORA_DISK_1: starting datafile copy
input datafile file number=00005 name=/u01/app/oracle/oradata/acme/example01.dbf
output file name=/u01/app/oracle/flash_recovery_area/ACME/datafile/o1_mf_example_91f4xrrq_.dbf tag=BACKUP_INCR RECID=4 STAMP=824146928
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:15
channel ORA_DISK_1: starting datafile copy
input datafile file number=00003 name=/u01/app/oracle/oradata/acme/undotbs01.dbf
output file name=/u01/app/oracle/flash_recovery_area/ACME/datafile/o1_mf_undotbs1_91f4y845_.dbf tag=BACKUP_INCR RECID=5 STAMP=824146942
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:08
channel ORA_DISK_1: starting datafile copy
input datafile file number=00004 name=/u01/app/oracle/oradata/acme/users01.dbf
output file name=/u01/app/oracle/flash_recovery_area/ACME/datafile/o1_mf_users_91f4yjjo_.dbf tag=BACKUP_INCR RECID=6 STAMP=824146945
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01
Finished backup at 2013-08-22:17:42:25
Starting Control File and SPFILE Autobackup at 2013-08-22:17:42:26
piece handle=/u01/app/oracle/flash_recovery_area/ACME/autobackup/2013_08_22/o1_mf_s_824146946_91f4yny0_.bkp comment=NONE
Finished Control File and SPFILE Autobackup at 2013-08-22:17:42:33
RMAN> list copy of tablespace example;
List of Datafile Copies
=======================
Key     File S Completion Time     Ckp SCN    Ckp Time          
------- ---- - ------------------- ---------- -------------------
4       5    A 2013-08-22:17:42:08 2084754    2013-08-22:17:42:00
        Name: /u01/app/oracle/flash_recovery_area/ACME/datafile/o1_mf_example_91f4xrrq_.dbf
        Tag: BACKUP_INCR

RMAN> backup incremental level 1 for recover of copy with tag 'backup_incr' database;
Starting backup at 2013-08-22:18:04:22
using channel ORA_DISK_1
channel ORA_DISK_1: starting incremental level 1 datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00001 name=/u01/app/oracle/oradata/acme/system01.dbf
input datafile file number=00002 name=/u01/app/oracle/oradata/acme/sysaux01.dbf
input datafile file number=00005 name=/u01/app/oracle/oradata/acme/example01.dbf
input datafile file number=00003 name=/u01/app/oracle/oradata/acme/undotbs01.dbf
input datafile file number=00004 name=/u01/app/oracle/oradata/acme/users01.dbf
channel ORA_DISK_1: starting piece 1 at 2013-08-22:18:04:23
channel ORA_DISK_1: finished piece 1 at 2013-08-22:18:05:48
piece handle=/u01/app/oracle/flash_recovery_area/ACME/backupset/2013_08_22/o1_mf_nnnd1_BACKUP_INCR_91f67v6c_.bkp tag=BACKUP_INCR comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:01:25
Finished backup at 2013-08-22:18:05:48
Starting Control File and SPFILE Autobackup at 2013-08-22:18:05:48
piece handle=/u01/app/oracle/flash_recovery_area/ACME/autobackup/2013_08_22/o1_mf_s_824148348_91f6bfxw_.bkp comment=NONE
Finished Control File and SPFILE Autobackup at 2013-08-22:18:05:51
RMAN> list copy of tablespace example;
List of Datafile Copies
=======================
Key     File S Completion Time     Ckp SCN    Ckp Time          
------- ---- - ------------------- ---------- -------------------
4       5    A 2013-08-22:17:42:08 2084754    2013-08-22:17:42:00
        Name: /u01/app/oracle/flash_recovery_area/ACME/datafile/o1_mf_example_91f4xrrq_.dbf
        Tag: BACKUP_INCR

RMAN> backup incremental level 1 for recover of copy with tag 'backup_incr' database;
Starting backup at 2013-08-22:18:19:54
using channel ORA_DISK_1
channel ORA_DISK_1: starting incremental level 1 datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00001 name=/u01/app/oracle/oradata/acme/system01.dbf
input datafile file number=00002 name=/u01/app/oracle/oradata/acme/sysaux01.dbf
input datafile file number=00005 name=/u01/app/oracle/oradata/acme/example01.dbf
input datafile file number=00003 name=/u01/app/oracle/oradata/acme/undotbs01.dbf
input datafile file number=00004 name=/u01/app/oracle/oradata/acme/users01.dbf
channel ORA_DISK_1: starting piece 1 at 2013-08-22:18:19:55
channel ORA_DISK_1: finished piece 1 at 2013-08-22:18:21:00
piece handle=/u01/app/oracle/flash_recovery_area/ACME/backupset/2013_08_22/o1_mf_nnnd1_BACKUP_INCR_91f74vxw_.bkp tag=BACKUP_INCR comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:01:05
Finished backup at 2013-08-22:18:21:01
Starting Control File and SPFILE Autobackup at 2013-08-22:18:21:01
piece handle=/u01/app/oracle/flash_recovery_area/ACME/autobackup/2013_08_22/o1_mf_s_824149261_91f76z85_.bkp comment=NONE
Finished Control File and SPFILE Autobackup at 2013-08-22:18:21:04
RMAN> list copy of tablespace example;
List of Datafile Copies
=======================
Key     File S Completion Time     Ckp SCN    Ckp Time          
------- ---- - ------------------- ---------- -------------------
4       5    A 2013-08-22:17:42:08 2084754    2013-08-22:17:42:00
        Name: /u01/app/oracle/flash_recovery_area/ACME/datafile/o1_mf_example_91f4xrrq_.dbf
        Tag: BACKUP_INCR

RMAN> recover copy of tablespace example with tag 'backup_incr';        
Starting recover at 2013-08-22:18:31:13
using channel ORA_DISK_1
allocated channel: ORA_SBT_TAPE_1
channel ORA_SBT_TAPE_1: SID=43 device type=SBT_TAPE
channel ORA_SBT_TAPE_1: WARNING: Oracle Test Disk API
channel ORA_DISK_1: starting incremental datafile backup set restore
channel ORA_DISK_1: specifying datafile copies to recover
recovering datafile copy file number=00005 name=/u01/app/oracle/flash_recovery_area/ACME/datafile/o1_mf_example_91f4xrrq_.dbf
channel ORA_DISK_1: reading from backup piece /u01/app/oracle/flash_recovery_area/ACME/backupset/2013_08_22/o1_mf_nnnd1_BACKUP_INCR_91f67v6c_.bkp
channel ORA_DISK_1: piece handle=/u01/app/oracle/flash_recovery_area/ACME/backupset/2013_08_22/o1_mf_nnnd1_BACKUP_INCR_91f67v6c_.bkp tag=BACKUP_INCR
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
channel ORA_DISK_1: starting incremental datafile backup set restore
channel ORA_DISK_1: specifying datafile copies to recover
recovering datafile copy file number=00005 name=/u01/app/oracle/flash_recovery_area/ACME/datafile/o1_mf_example_91f4xrrq_.dbf
channel ORA_DISK_1: reading from backup piece /u01/app/oracle/flash_recovery_area/ACME/backupset/2013_08_22/o1_mf_nnnd1_BACKUP_INCR_91f74vxw_.bkp
channel ORA_DISK_1: piece handle=/u01/app/oracle/flash_recovery_area/ACME/backupset/2013_08_22/o1_mf_nnnd1_BACKUP_INCR_91f74vxw_.bkp tag=BACKUP_INCR
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
Finished recover at 2013-08-22:18:31:19
Starting Control File and SPFILE Autobackup at 2013-08-22:18:31:19
piece handle=/u01/app/oracle/flash_recovery_area/ACME/autobackup/2013_08_22/o1_mf_s_824149879_91f7t7yj_.bkp comment=NONE
Finished Control File and SPFILE Autobackup at 2013-08-22:18:31:22
RMAN> list copy of tablespace example;
List of Datafile Copies
=======================
Key     File S Completion Time     Ckp SCN    Ckp Time          
------- ---- - ------------------- ---------- -------------------
8       5    A 2013-08-22:18:31:18 2087900    2013-08-22:18:19:55
        Name: /u01/app/oracle/flash_recovery_area/ACME/datafile/o1_mf_example_91f4xrrq_.dbf
        Tag: BACKUP_INCR

RMAN>

viernes, 16 de agosto de 2013

PASSWORD ORACLE

SYS.USER$ view, what do the CTIME, PTIME, and LTIME

Oracle y VMware: ¿amigos o enemigos?

 

Me encontré este Articulo y me pareció interesante

http://blog.avanttic.com/2010/12/01/oracle-y-vmware-%c2%bfamigos-o-enemigos/#more-2543

Oracle y VMware: ¿amigos o enemigos?

En esta entrada de blog intentaré aclarar el estado en que se encuentra la combinación de Oracle y VMware a fecha de hoy y describir lo que personalmente creo será el futuro de esta combinación de tecnologías.
VMWARE_vs_ORACLE
En el primer punto, que dividiré en “estado de soporte” de la combinación y “requerimientos de licenciado”, intentaré ser lo más simple y neutral posible, basándome únicamente en lo que ambas empresas (Oracle y VMware) han publicado al respecto.
El segundo punto será justo lo contrario, fruto de opiniones tanto personales como recogidas por la red… por lo que será totalmente discutible.
Nota: Téngase en cuenta que  toda la información aquí presentada ha sido recopilada con fecha 22-11-2010, y que en el momento de la lectura de este post se podrían haber producido cambios de política o estrategia por parte de Oracle.

Soporte Oracle de productos ejecutados sobre VMware

A la pregunta: ¿cuál es el estado del soporte del software Oracle instalado sobre la plataforma de virtualización de VMware?
La respuesta la encontramos en la nota de Oracle:
Support Position for Oracle Products Running on VMWare Virtualized Environments [ID 249212.1]
que básicamente dice lo siguiente:
  • Oracle no certifica ninguno de sus productos sobre la plataforma de virtualización VMware.
  • En caso de encontrar un problema ya tipificado como tal, se facilitaran los parches y posibles mecanismos alternativos de solución ya existentes.
  • Se investigará (y creará un parche si fuese necesario) sólo si el cliente demuestra que se reproduce la incidencia sobre máquinas físicas (entornos sin virtualizar).
  • No se dará soporte en ningún caso para instalaciones de Oracle RAC versión 11gR1 o anteriores. Para instalaciones Oracle RAC 11gR2 o superiores se siguen las mismas normas que para el resto de productos (puntos anteriores).
Por tanto, si no se cumplen las anteriores condiciones no se considerará problema de Oracle y deberá ser VMware quien dé soporte a la incidencia.
La mencionada nota fue actualizada en día 8-11-2010, provocando un gran revuelo en el mundo VMware. La causa de tal revuelo fue que apareció el soporte para Oracle RAC a partir de la versión 11gR2 (previamente no se soportaba RAC en ningún caso).
Resumiendo, si opto por integrar los productos Oracle en mi plataforma de virtualización VMware, ¿me dará Oracle soporte?
>>> Si el problema por el que se pide soporte ya ha sido reportado, Soporte Oracle nos indicará los parches y/o workarrounds disponibles. Lo que no hará será pedir a los desarrolladores que investiguen o creen un parche si no se dispone previamente de éste, a no ser que demostremos que la incidencia se reproduce en un entorno no virtualizado.
En el siguiente link tenéis la nota original de Oracle Support a fecha 08-11-2010 (es de libre distribución):
http://www.avanttic.com/pdf/Blog/Support_Position_Oracle_VMWare.pdf

Licenciamiento de Oracle sobre VMware

A la pregunta: ¿en caso de disponer de productos Oracle sobre VMWare, cómo los debo licenciar?
Podemos contestar que, si bien VMware permite asignar a una determinada maquina virtual sólo una parte de las CPU’s de la máquina física en la que se ejecuta, Oracle no reconoce ese sistema como válido para particionar a nivel de servidor.
Soft partitioning is not permitted as a means to determine or limit the number of software licenses required for any given server.
Existen sistemas de particionado de servidores que Oracle considera como hard partitions, entre ellos algunos de Sun, HP o IBM. Estos sistemas permiten crear “particiones virtuales” con un subconjunto de CPU’s, memoria y disco de una máquina física. En estos casos Oracle requiere licenciar sólo el subconjunto de CPU’s de la partición.
VMware a partir de la versión 4.1 dispone de un sistema llamado DRS Virtual Machine Host Affinity, que permite “confinar” una maquina virtual en un subconjunto de máquinas físicas del cluster. Hasta el momento Oracle no lo ha considerado un sistema de hard partition, y por tanto seguimos con las condiciones de licenciado anteriormente mencionadas.
Para más detalles de qué Oracle considera hard partitioning y qué soft partitioning, podéis consultar el documento al respecto disponible en la web de Oracle:
http://www.oracle.com/us/corporate/pricing/partitioning-070609.pdf

Y personalmente pienso que…

El software Oracle sobre entornos virtualizados simplemente irá en aumento. Cada vez son más los departamentos de informática que deciden pasar sus entornos físicos a virtuales por las ventajas que estos aportan, y los productos Oracle no pueden esquivar esta tendencia. De hecho Oracle ya dispone de su propio entorno de virtualitzación (Oracle VM) y da soporte a sus productos sobre él.
El principal problema acostumbra a ser más el licenciado que el soporte, básicamente por el sobrecoste que representa el tener que licenciar todas las CPU’s físicas. A nivel de soporte, y si se usan versiones de productos con un cierto recorrido, es baja la posibilidad de tener incidentes que no estén ya “reportados”.
Existen multitud de empresas que han pasado sus entornos productivos Oracle a VMware, y VMware está muy interesada en ello, de manera que no escatima esfuerzos para que los productos Oracle funcionen correctamente bajo su entorno de virtualización:
http://www.vmware.com/solutions/partners/alliances/oracle-database-customers.html
Para disminuir en parte el problema con el licenciado algunas empresas crean múltiples clusters VMware en lugar de uno solo. El primero con pocas maquinas físicas (2 por ejemplo) para las maquinas virtuales con productos Oracle, y el segundo con el resto de servidores físicos para el resto de maquinas virtuales.
En nuestro caso particular trabajamos con varios clientes que han optado por esta solución con resultados satisfactorios en la mayoría de los casos, tanto para entornos de desarrollo como para productivos.
Hacer notar que, de momento, no todas las opciones que nos aporta VMware son susceptibles de ser aplicadas a servidores con productos Oracle:
  • Los “snapshots en caliente” de máquinas con BBDD son motivo de controversia pues la BBDD deberá realizar una recuperación cuando arranquemos desde uno de ellos. ¿Se pueden por tanto considerar un sistema de copias valido? En mi opinión no, y deberíamos continuar realizando las copias a nivel de Oracle (con RMAN por ejemplo) y no optar por ellos como sistema de backup.
  • Existen casos reportados de problemas con VMotion y Oracle RAC por lo que, personalmente, tampoco recomiendo su uso. No obstante también podemos encontrar casos en que funciona sin problemas. En consecuencia, usarlos o no es una elección a realizar por el cliente que use Oracle RAC sobre VMware.
Por otra parte la virtualización nos aporta muchas ventajas:
  • Alta disponibilidad:  En caso de problemas en el servidor físico en que esté ubicada la maquina virtual, la podemos arrancar en otro nodo del cluster (de manera manual o automática).
  • Facilidad y seguridad ante cambios: Podemos realizar un snapshot con la maquina parada y actualizar el S.O. o el propio software Oracle con la tranquilidad de que si algo malo pasa, todo podrá volver a quedar “como antes” sin prácticamente esfuerzo.
  • Crear entornos para desarrollo o para test de nuevas aplicaciones, con gran facilidad, partiendo de copias en frio de las maquinas virtuales productivas.
  • Y, principalmente, integrar los servidores Oracle con el resto de nuestros sistemas virtualizados, evitando que sean “sistemas a parte”.
Llegados a este punto lo normal sería seguir con dudas sobre si implementar Oracle sobre VMware o no. Es una decisión a tomar por cada departamento de IT y no es fácil, pero la tendencia parece apuntar a que la virtualización seguirá ganando terreno, incluso en los entornos Oracle.

lunes, 12 de agosto de 2013

UTL_MAIL

ORA-06502 ORA-24247 calling UTL_MAIL from Oracle 11gR2

Environment: Oracle database 11.2.0.3.0, Oracle Linux 6.2
Sending e-mails from within the Oracle database using the UTL_MAIL PL/SQL package used to be quite easy in Oracle 10g. However, in Oracle 11gR2, things have changed.
Suppose that you created the following wrapper procedure in PL/SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
CREATE OR REPLACE PROCEDURE UTILS.SEND_MAIL (
   p_sender       IN   VARCHAR2,
   p_recipients   IN   VARCHAR2,
   p_cc           IN   VARCHAR2 DEFAULT NULL,
   p_bcc          IN   VARCHAR2 DEFAULT NULL,
   p_subject      IN   VARCHAR2,
   p_message      IN   VARCHAR2,
   p_mime_type    IN   VARCHAR2 DEFAULT 'text/plain; charset=us-ascii'
)
IS
 BEGIN
   UTL_MAIL.SEND (sender          => p_sender,
                  recipients      => p_recipients,
                  cc              => p_cc,
                  bcc             => p_bcc,
                  subject         => p_subject,
                  message         => p_message,
                  mime_type       => p_mime_type
                 );
EXCEPTION
   WHEN OTHERS
   THEN
      RAISE;
END send_mail;
/

To get this procedure working on Oracle 11g, there are several steps you need to take.
First, you need to actually install the UTL_MAIL package. It’s not installed by default on 11g:
 
1
2
3
4
5
6
7
$ sqlplus /nolog
SQL*Plus: Release 11.2.0.3.0 Production on Fri Apr 27 14:49:33 2012
SQL> connect / as sysdba
Connected.
SQL> @?/rdbms/admin/utlmail.sql
SQL> @?/rdbms/admin/prvtmail.plb
SQL> grant execute on utl_mail to public;

Next, you need to add the address and port of the e-mail server to the “smtp_out_server” initialization parameter. If you do not do this, you will receive a “ORA-06502: PL/SQL: numeric or value error” error when you try to use the UTL_MAIL package.
Execute the following with user SYS as SYSDBA:
 
1
SQL> alter system set smtp_out_server = 'mymailserver@mydomain.com:25' scope=both;

Finally, you need to create an Access Control List (ACL) for your e-mail server and grant the necessary users access to this ACL. Without an ACL, you will receive the following error: “ORA-24247: network access denied by access control list (ACL)“.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
BEGIN
   DBMS_NETWORK_ACL_ADMIN.CREATE_ACL (
    acl          => 'mail_access.xml',
    description  => 'Permissions to access e-mail server.',
    principal    => 'PUBLIC',
    is_grant     => TRUE,
    privilege    => 'connect');
   COMMIT;
END;
 
BEGIN
   DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL (
    acl          => 'mail_access.xml',
    host         => 'mymailserver@mydomain.com',
    lower_port   => 25,
    upper_port   => 25
    );
   COMMIT;
END;
After these steps, you should be able to successfully send e-mails from within the database:

begin
utils.send_mail(
p_sender => ‘ora11gtest@mydomain.com’,
p_recipients => ‘matthiash@mydomain.com’,
p_subject => ‘This is the subject line!’,
p_message => ‘Hello World!’);
end;
*Action:
anonymous block completed
Matthias

ORA-24247 during LDAP authentication from APEX 4.1.1 on Oracle 11gR2

Environment: APEX 4.1.1, Oracle database 11.2.0.3.0, Oracle Linux 6.2
In Oracle database 11g, access to external network resources has been more restricted than in previous versions. Access to network resources is now controlled through ACL’s (Access Control Lists). This can lead to various problems when you migrate APEX applications from a server running Oracle 10g to one running 11g.For example, if you wrote your own LDAP authentication functions using the built-in DBMS_LDAP package, you will receive the following error message when you try to authenticate to LDAP:
ORA-24247: network access denied by access control list (ACL)
This is because the owner of the authentication function lacks access to the required network resources. You can easily test this with the following piece of PL/SQL code:
1
2
3
4
5
declare
l_session dbms_ldap.session;
begin
l_session := dbms_ldap.init('windowsdc.mydomain.com',389);
end;
In this case, “windowsdc.mydomain.com” is a Windows LDAP server running Microsoft’s Active Directory.
To grant access to a specific network resource in 11g, you first need to create a ACL (Access Control List). I executed this with SYS as SYSDBA:
1
2
3
4
5
6
7
8
9
BEGIN
   DBMS_NETWORK_ACL_ADMIN.CREATE_ACL (
    acl          => 'ldap_access.xml',
    description  => 'Permissions to access LDAP servers.',
    principal    => 'MATTHIASH',
    is_grant     => TRUE,
    privilege    => 'connect');
   COMMIT;
END;
In this example, “ldap_access.xml” is the name of my ACL, and “MATTHIASH” is the name of the user account which needs access to the LDAP server. This account owns my custom LDAP authentication function.
Next, you need to add the LDAP server to the ACL we just created (don’t forget to COMMIT):
1
2
3
4
5
6
7
8
9
BEGIN
   DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL (
    acl          => 'ldap_access.xml',
    host         => 'windowsdc.mydomain.com',
    lower_port   => 389,
    upper_port   => 389
    );
   COMMIT;
END;
You can check the ACL using the following queries:

SELECT * FROM DBA_NETWORK_ACLS;
SELECT * FROM DBA_NETWORK_ACL_PRIVILEGES;