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.
jueves, 26 de noviembre de 2015
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)
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 QuesadaPublicado 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
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: choptLa 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 TRUEProceda 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 successfullyAntes 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.logUna 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.
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)
Nombre | IPs Originales | Nuevas IPs |
MyServer1.lab.com | 169.254.234.10 | 169.254.234.70 |
MyServer2.lab.com | 169.254.234.20 | 169.254.234.80 |
MyServer3.lab.com | 169.254.234.30 | 169.254.234.90 |
Nombre | IPs Originales | Nuevas IPs |
MyServer1-vIP.lab.com | 169.254.234.11 | 169.254.234.71 |
MyServer2-vIP.lab.com | 169.254.234.12 | 169.254.234.81 |
MyServer3-vIP.lab.com | 169.254.234.13 | 169.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.
- Detener la base de datos y deshabilitar el inicio automático de los servicios de RAC. Utilizar el procedimiento estándar para bajar las instancias de base de datos. Bajar todas las instancias de base de datos.
- Detener las instancias ASM
- Detener nodeapps
- Detener la instancia ASM y deshabilitar el inicio automático. Es recomendable también deshabilitar la instancia ASM ya que en una situación de problema, es más sencillo poder hacer revisiones.
- Detener el servicio de cluster del nodo donde se va a cambiar la IP. 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.
- Desmontar los filesystems NFS 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.
- Actualizar el archivo /etc/hosts en todos los nodos de base de datos. 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.
- Actualizar el archivo ifcfg-eth0 con la nueva IP. 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.
- Reiniciar el servicio de red.
- Realizar una prueba con el comando ping
- Modificar el archivo listener.ora 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.
- Iniciar el servicio de cluster Con el usuario root, iniciar el servicio de cluster en todos los nodos.
- Volver a detener el servicio de nodeapps en todos los nodos.
- Cambiar las direcciones IPs públicas en el OCR Se realiza con el usuario root. La sub-red es 10.12.20.0
- Revisar nuevamente el archivo /etc/hosts. 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.
- Cambiar las direcciones IPs Virtuales 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)
- Reiniciar el nodeapps en cada nodo.
- Volver a montar los filesystems NFS listados en el archivo /etc/fstab. 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.
- Verificar e iniciar las instancias de base de datos. De manera opcional se puede correr el utilitario runcluvfy.sh para verificar la configuración de red.
Luego de bajar las instancias de base de datos es necesario>
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.
El comando para detener el servicio de cluster es:
[root@MyServer1 ~]#/etc/init.d/init.crs stop
[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
[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
[root@MyServer1 ~]# service network stop [root@MyServer1 ~]# service network start
[root@MyServer1 ~]# ping 169.254.234.70 [root@MyServer1 ~]# ping 169.254.234.80 [root@MyServer1 ~]# ping 169.254.234.90
[root@MyServer1 ~]#/etc/init.d/init.crs start [root@MyServer2 ~]#/etc/init.d/init.crs start [root@MyServer3 ~]#/etc/init.d/init.crs start
[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
[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
[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
[root@MyServer3 ~]# $ORA_CRS_HOME/bin/srvctl start nodeapps -n $HOSTNAME
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 SilvaPublicado 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. |
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:
PgSQL
and then set an https port unique on the server:
PgSQL
If you’ve already done it but you don’t remember the port number you can get it with this query:
PgSQL
To enable it, it’s necessary to check that the parameter dispatchers is enabled for XDB:
1
2
3
4
5
|
SQL> show parameter dispatchers
NAME TYPE VALUE
----------- ------ -----------------------------------
dispatchers string (PROTOCOL=TCP) (SERVICE=CLASSICXDB)
|
and then set an https port unique on the server:
1
2
3
4
5
|
SQL> exec dbms_xdb_config.sethttpsport (5502);
PL/SQL procedure successfully completed.
SQL>
|
If you’ve already done it but you don’t remember the port number you can get it with this query:
1
2
3
4
5
|
SQL> select dbms_xdb_config.gethttpsport () from dual;
DBMS_XDB_CONFIG.GETHTTPSPORT()
------------------------------
5502
|
https://yourserver:5502/em
|
martes, 10 de noviembre de 2015
create a trigger to open the PDBs.
CREATE OR REPLACE TRIGGER ABRIR_TODOS_PDBS
AFTER STARTUP ON DATABASE
BEGIN
EXECUTE IMMEDIATE 'ALTER PLUGGABLE DATABASE ALL OPEN';
END;
TEST ORACLE RAC
ssh 10.1.1.10 date
ssh USBLDDB1010 date
ssh USBLDDB1010.usb.com date
ssh 10.1.1.11 date
ssh USBLDDB2011 date
ssh USBLDDB2011.usb.com date
ssh 192.168.2.10 date
ssh USBLDDB1010-priv date
ssh USBLDDB1010-priv.usb.com date
ssh 192.168.2.11 date
ssh USBLDDB2011-priv date
ssh USBLDDB2011-priv.usb.com date
#IP's Virtuales
#ssh 10.1.1.40 date
#ssh USBLDDB1010-vip date
#ssh USBLDDB1010-vip.usb.com date
#ssh 10.1.1.41 date
#ssh USBLDDB1011-vip date
ssh 10.1.1.10 date
ssh USBLDDB1010 date
ssh USBLDDB1010.usb.com date
ssh 10.1.1.11 date
ssh USBLDDB2011 date
ssh USBLDDB2011.usb.com date
ssh 192.168.2.10 date
ssh USBLDDB1010-priv date
ssh USBLDDB1010-priv.usb.com date
ssh 192.168.2.11 date
ssh USBLDDB2011-priv date
ssh USBLDDB2011-priv.usb.com date
#IP's Virtuales
#ssh 10.1.1.40 date
#ssh USBLDDB1010-vip date
#ssh USBLDDB1010-vip.usb.com date
#ssh 10.1.1.41 date
#ssh USBLDDB1011-vip date
#ssh USBLDDB1011-vip.usb.com date
#ssh USBLDDB1011-vip.usb.com date
ssh USBLDDB1010 date
ssh USBLDDB1010.usb.com date
ssh 10.1.1.11 date
ssh USBLDDB2011 date
ssh USBLDDB2011.usb.com date
ssh 192.168.2.10 date
ssh USBLDDB1010-priv date
ssh USBLDDB1010-priv.usb.com date
ssh 192.168.2.11 date
ssh USBLDDB2011-priv date
ssh USBLDDB2011-priv.usb.com date
#IP's Virtuales
#ssh 10.1.1.40 date
#ssh USBLDDB1010-vip date
#ssh USBLDDB1010-vip.usb.com date
#ssh 10.1.1.41 date
#ssh USBLDDB1011-vip date
ssh 10.1.1.10 date
ssh USBLDDB1010 date
ssh USBLDDB1010.usb.com date
ssh 10.1.1.11 date
ssh USBLDDB2011 date
ssh USBLDDB2011.usb.com date
ssh 192.168.2.10 date
ssh USBLDDB1010-priv date
ssh USBLDDB1010-priv.usb.com date
ssh 192.168.2.11 date
ssh USBLDDB2011-priv date
ssh USBLDDB2011-priv.usb.com date
#IP's Virtuales
#ssh 10.1.1.40 date
#ssh USBLDDB1010-vip date
#ssh USBLDDB1010-vip.usb.com date
#ssh 10.1.1.41 date
#ssh USBLDDB1011-vip date
#ssh USBLDDB1011-vip.usb.com date
#ssh USBLDDB1011-vip.usb.com date
lunes, 9 de noviembre de 2015
Protegiendo Backups de RMAN contra fallos de la SAN (Parte I)
Protegiendo Backups de RMAN contra fallos de la SAN (Parte I)
Por Joel PérezPublicado en septiembre 2012
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 el tema de protección de los backups realizados con RMAN (Oracle Recovery Manager).
Los artículos que conforman esta serie son los siguientes:
1. Base de datos 11g Release1: El comando cp perteneciente al utilitario asmcmd
2. Base de datos 11g: La opción Backup Backupset perteneciente al conjunto de comandos y opciones de RMAN.
3. Base de datos 11g: La existencia del paquete DBMS_TRANSFER
2. Base de datos 11g: La opción Backup Backupset perteneciente al conjunto de comandos y opciones de RMAN.
3. Base de datos 11g: La existencia del paquete DBMS_TRANSFER
A partir de la versión de servidor de base de datos 10g contamos con la tecnología de almacenamiento de información ASM (Automatic Storage Management) la cual revoluciono la forma de almacenar y administrar nuestras base de datos. Trajo consigo el concepto y modo de almacenamiento de nuestros backups, archived redo logs y otros elementos en el área (FRA: Flash Recovery Area). El FRA representa una respuesta a los cambios de costos y criticidad a la hora de gestar y recuperar nuestra backups.
Siempre se ha tenido la tradición de almacenar los backups en unidades de cinta, NAS o cualquier otro medio adaptado para tal fin, llevándose a cabo así el objetivo de protegernos contra fallos de hardware o software. A partir de la versión de manejador de base de datos 10g, la primera línea de backup por excelencia y best-practice paso a ser el FRA, por qué?, porque no hay nada mas rápido para recuperar o realizar un backup desde o hacia los propios discos duros con los cuales hemos trabajado toda la vida. En tiempos anteriores, en contraste a nuestros días, el costo de los discos duros era bastante alto, ya hoy en día ya no es así en la mayoría de los casos. Es por ello que nace el concepto del FRA.
Cuando se planifica e implementa una estrategia de backup robusta para nuestras bases de datos, tenemos principalmente la misión de protegernos contra fallos parciales o totales de hardware o software.
El FRA representa una solución practica de alto nivel para poseer la primera línea de backup en dispositivos rápidos (discos/particiones de SAN).
Habitualmente estos llamados discos realmente son particiones que provienen de una SAN (Storage Area Network).
SAN (Concepto): es una red concebida para conectar servidores, matrices (arrays) de discos y librerías de soporte. Principalmente, está basada en tecnología fibre channel y más recientemente en iSCSI. Su función es la de conectar de manera rápida, segura y fiable los distintos elementos que la conforman.
En las instalaciones de RAC (Real Application Cluster) e inclusive Single Instance sobre ASM es común disponer de particiones o bien llamadas (LUNs) para conformar los denominados Diskgroups de ASM, finalmente sobre los Diskgroups ASM es donde se alojaran los componentes de nuestra BBDD y eventualmente otros elementos del Oracle Server, RAC Clusterware, y otros.
Generalmente en particiones de SAN es donde realmente poseemos nuestras bases de datos y backups pero que pasaría si ocurre una falla fatal en la SAN...?, podemos permitirnos perder la data de nuestra compañía o negocio?, definitivamente la respuesta es: No.
Tenemos que poseer protección contra ese posible caso. Para ellos presentaremos diversas técnicas que nos ayudaran a tener una segunda línea de protección de backup para nuestras bases de datos.
Listaremos posibles opciones de almacenamiento diversas y/o externas al FRA. Dentro de las cuales resaltamos las siguientes:
- En infraestructura NAS : NAS (del inglés Network Attached Storage) es el nombre dado a una tecnología de almacenamiento dedicada a compartir la capacidad de almacenamiento de un computador (Servidor) con ordenadores personales o servidores clientes a través de una red (normalmente TCP/IP), haciendo uso de un Sistema Operativo optimizado para dar acceso con los protocolos CIFS, NFS, FTP o TFTP. Generalmente, los sistemas NAS son dispositivos de almacenamiento específicos a los que se accede desde los equipos a través de protocolos de red (normalmente TCP/IP). También se podría considerar un sistema NAS a un servidor (Linux, Windows, ...) que comparte sus unidades por red, pero la definición suele aplicarse a sistemas específicos.
- Discos duros externos
- NFS
- Cinta
- Y otros
Técnicas para extraer nuestros backups del ASM
- Opción 1: Desde la versión de manejador de base de datos 11g Release1 tenemos disponible el comando cp perteneciente al utilitario asmcmd. Esta opción fue presentada y desarrollada en el articulo: "Protegiendo backups de RMAN contra fallos de la SAN (Parte I)"
- Opción 2: Desde versiones anteriores al manejador de base de datos 11g, tenemos las opciones de: Backup Backupset perteneciente al conjunto de comandos y opciones de RMAN. Esta opción fue presentada y desarrollada en el articulo: "Protegiendo backups de RMAN contra fallos de la SAN (Parte II)"
- Opción 3: Desde la versión de base de datos 10g tenemos la existencia del paquete DBMS_TRANSFER. Esta será la técnica utilizada para el presente artículo.
DBMS_FILE_TRANSFER
The DBMS_FILE_TRANSFER package provides procedures to copy a binary file within a database or to transfer a binary file between databases.Oracle® Database PL/SQL Packages and Types Reference
11g Release 2 (11.2)
http://docs.oracle.com/cd/E11882_01/appdev.112/e25788/d_ftran.htm
Vamos a realizarlo:
Base de Datos: DB
Diskgroup (DATA): +DATA
Diskgroup (FRA): +FRA
Paso1: Tomar backup full con RMAN estableciendo una etiqueta que nos pueda ayudar a identificar unívocamente las piezas pertenecientes a este:
rman_backup_full.sh export ORACLE_SID=MYDB export V_DATE=`date +%d%m%Y_%H%M` export V_LOGFILE=En el caso presente estamos tomando un backup full de la BBDD y el elemento que nos ayudara a identificar de forma univoca el mismo será el TAG aplicado en la sentencia de backup full./BKFULL_MYDB_RMAN_$V_DATE.log rman target / @ /run.rcv log=$V_LOGFILE run.rcv run { backup database tag='FULL_WEEKLY'; } exit
Una vez tomado el backup, visualizamos la piezas generadas del mismo:
RMAN> List Backup;
using target database control file instead of recovery catalog
List of Backup Sets =================== BS Key Type LV Size Device Type Elapsed Time Completion Time ------- ---- -- ---------- ----------- ------------ --------------- 5 Full 1019.86M DISK 00:01:15 10-NOV-11 BP Key: 5 Status: AVAILABLE Compressed: NO Tag: FULL_WEEKLY Piece Name: +FRA/mydb/backupset/2011_11_10/nnndf0_full_weekly_0.271.766859353 List of Datafiles in backup set 5 File LV Type Ckp SCN Ckp Time Name ---- -- ---- ---------- --------- ---- 1 Full 1072131 09-NOV-11 +DATA/mydb/datafile/system.256.766584645 2 Full 1072131 09-NOV-11 +DATA/mydb/datafile/sysaux.257.766584645 3 Full 1072131 09-NOV-11 +DATA/mydb/datafile/undotbs1.258.766584647 4 Full 1072131 09-NOV-11 +DATA/mydb/datafile/users.259.766584647 5 Full 1072131 09-NOV-11 +DATA/mydb/datafile/example.276.766585261 BS Key Type LV Size Device Type Elapsed Time Completion Time ------- ---- -- ---------- ----------- ------------ --------------- 6 Full 9.58M DISK 00:00:01 10-NOV-11 BP Key: 6 Status: AVAILABLE Compressed: NO Tag: FULL_WEEKLY Piece Name: +FRA/mydb/backupset/2011_11_10/ncsnf0_full_weekly_0.269.766859431 SPFILE Included: Modification time: 09-NOV-11 SPFILE db_unique_name: mydb Control File Included: Ckp SCN: 1072131 Ckp time: 09-NOV-11 RMAN> En el log presentado se puede apreciar la generación de 2 piezas +FRA/mydb/backupset/2011_11_10/nnndf0_full_weekly_0.271.766859353 & +FRA/mydb/backupset/2011_11_10/ncsnf0_full_weekly_0.269.766859431).Cada pieza posee atributos únicos, en esta ocasión determinaremos las mismas a transferir mediante los atributos TAG & BS KEY. Ambas piezas representan el objetivo para transferir a una localización de disco diversa al FRA.
Paso2: Visualizando localizaciones de piezas generadas en el FRA
Visualicemos las especificaciones de las piezas generadas a través de las vistas de diccionario de datos de nuestra base de datos.
SQL> select HANDLE from v$backup_piece 2 where TAG='FULL_WEEKLY'; HANDLE ----------------------------------------------------------------- +FRA/mydb/backupset/2011_11_10/nnndf0_full_weekly_0.271.766859353 +FRA/mydb/backupset/2011_11_10/ncsnf0_full_weekly_0.269.766859431 SQL>Paso3: Creación del paquete DBMS_FILE_TRANSFER.
Una vez divisadas las piezas a transferir externamente de nuestro almacenamiento ASM. Procederemos a verificar si el paquete DBMS_FILE_TRANSFER esta creado.
SQL> desc dbms_file_transfer PROCEDURE COPY_FILE Argument Name Type In/Out Default? ------------------------------ ------------------ ------ -------- SOURCE_DIRECTORY_OBJECT VARCHAR2 IN SOURCE_FILE_NAME VARCHAR2 IN DESTINATION_DIRECTORY_OBJECT VARCHAR2 IN DESTINATION_FILE_NAME VARCHAR2 IN PROCEDURE GET_FILE Argument Name Type In/Out Default? ------------------------------ ------------------ ------ -------- SOURCE_DIRECTORY_OBJECT VARCHAR2 IN SOURCE_FILE_NAME VARCHAR2 IN SOURCE_DATABASE VARCHAR2 IN DESTINATION_DIRECTORY_OBJECT VARCHAR2 IN DESTINATION_FILE_NAME VARCHAR2 IN PROCEDURE PUT_FILE Argument Name Type In/Out Default? ------------------------------ ------------------ ------ -------- SOURCE_DIRECTORY_OBJECT VARCHAR2 IN SOURCE_FILE_NAME VARCHAR2 IN DESTINATION_DIRECTORY_OBJECT VARCHAR2 IN DESTINATION_FILE_NAME VARCHAR2 IN DESTINATION_DATABASE VARCHAR2 IN SQL>Si el mismo no esta creado, podremos crearlo con el siguiente script:
{ORACLE_HOME}/rdbms/admin/dbmsxfr.sql
Si algún usuario diferente de sys necesita acceso al mismo, podemos otorgar el privilegio de la siguiente manera:
GRANT EXECUTE ON dbms_file_transfer TO
Paso4: Creación de directorios origen y destino para la transferencia
SQL> create directory source_dir as 2 '+FRA/mydb/backupset/2011_11_10'; Directory created. SQL> create directory target_dir as 2 '/home/oracle/MyExternalFileSystem'; Directory created.Para cualquier usuario que necesite acceder a estos directorios se deberá otorgar los permisos necesarios:
SQL> grant read, write on directory source_dir toPaso5: Llevando a cabo las transferencias:; Grant succeeded. SQL> grant read, write on directory target_dir to ; Grant succeeded. SQL>
BEGIN sys.dbms_file_transfer.copy_file(source_directory_object => 'SOURCE_DIR', source_file_name => 'nnndf0_full_weekly_0.271.766859353', destination_directory_object => 'TARGET_DIR' , destination_file_name => 'MyFullBackupPiece01.bkp'); END; / PL/SQL procedure successfully completed. BEGIN sys.dbms_file_transfer.copy_file(source_directory_object => 'SOURCE_DIR', source_file_name => 'ncsnf0_full_weekly_0.269.766859431', destination_directory_object => 'TARGET_DIR' , destination_file_name => 'MyFullBackupPiece02.bkp'); END; / PL/SQL procedure successfully completed.Visualizacion de archivos (piezas de RMAN) generadas en el sistema operativo
[oracle@MYSERVER-mydb MyExternalFileSystem]$ ls -lt total 1057452 -rw-r----- 1 oracle dba 10059776 Nov 10 18:08 MyFullBackupPiece01.bkp -rw-r----- 1 oracle dba 1071702016 Nov 10 18:07 MyFullBackupPiece02.bkp [oracle@MYSERVER-mydb MyExternalFileSystem]$Para utilizar las piezas generadas en recuperaciones de nuestra base de datos, debemos catalogar las mismas. Esto se podrá llevar a cabo a través del comando CATALOG de RMAN.
RMAN> catalog start with '/home/oracle/MyExternalFileSystem';
Aplicaciones y uso
Las posibles aplicaciones reales que podemos realizar con transferencias de piezas o archivos desde ASM hacia otros destinos son variadas. Listamos algunas:- Transferencia de Archived Redo Logs para resolver casos de GAP para Manual Standby Databases o Data Guard en versiones 10g/11g.
- Extraer RMAN backups (full, archives, controlfiles, etc...) para procedimientos tales como: RMAN Duplicate, Instanciación de Standby o Data Guard Databases, etc... y otros.
- Transferencias de ASM a ASM para replicación de BBDDs
- Y muchas otras mas
Protegiendo Backups de RMAN contra fallos de la SAN ( Parte II )
Protegiendo Backups de RMAN contra fallos de la SAN ( Parte II )
Por Joel PérezPublicado en enero 2012
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 el tema de protección de los backups realizados con RMAN ( Oracle Recovery Manager ).
Los artículos que conforman esta serie son los siguientes:
1. Base de datos 11g Release1: El comando cp perteneciente al utilitario asmcmd
2. Base de datos 11g: La opción Backup Backupset perteneciente al conjunto de comandos y opciones de RMAN.
3. Base de datos 11g: La existencia del paquete DBMS_TRANSFER
2. Base de datos 11g: La opción Backup Backupset perteneciente al conjunto de comandos y opciones de RMAN.
3. Base de datos 11g: La existencia del paquete DBMS_TRANSFER
A partir de la versión de servidor de base de datos 10g contamos con la tecnología de almacenamiento de información ASM ( Automatic Storage Management ) la cual revoluciono la forma de almacenar y administrar nuestras base de datos. Trajo consigo el concepto y modo de almacenamiento de nuestros backups, archived redo logs y otros elementos en el área ( FRA: Flash Recovery Area ). El FRA representa una respuesta a los cambios de costos y criticidad a la hora de gestar y recuperar nuestra backups.
Siempre se ha tenido la tradición de almacenar los backups en unidades de cinta, NAS o cualquier otro medio adaptado para tal fin, llevándose a cabo así el objetivo de protegernos contra fallos de hardware o software. A partir de la versión de manejador de base de datos 10g, la primera línea de backup por excelencia y best-practice paso a ser el FRA, porque ?, porque no hay nada mas rápido para recuperar o realizar un backup desde o hacia los propios discos duros con los cuales hemos trabajado toda la vida. En tiempos anteriores, en contraste a nuestros días, el costo de los discos duros era bastante alto; ya hoy en día ya no es así en la mayoría de los casos. Es por ello que nace el concepto del FRA.
Cuando se planifica e implementa una estrategia de backup robusta para nuestras bases de datos, tenemos principalmente la misión de protegernos contra fallos parciales o totales de hardware o software.
El FRA representa una solución practica de alto nivel para poseer la primera línea de backup en dispositivos rápidos ( discos/particiones de SAN ).
Habitualmente estos llamados discos realmente son particiones que provienen de una SAN (storage area network). SAN ( Concepto ): es una red concebida para conectar servidores, matrices (arrays) de discos y librerías de soporte. Principalmente, está basada en tecnología fibre channel y más recientemente en iSCSI. Su función es la de conectar de manera rápida, segura y fiable los distintos elementos que la conforman.
En las instalaciones de RAC ( Real Application Cluster ) e inclusive Single Instance sobre ASM es común disponer de particiones o bien llamadas ( LUNs ) para conformar los denominados Diskgroups de ASM, finalmente sobre los Diskgroups ASM es donde se alojaran los componentes de nuestra BBDD y eventualmente otros elementos del Oracle Server, RAC Clusterware, y otros.
Generalmente en particiones de SAN es donde realmente poseemos nuestras bases de datos y backups pero que pasaría si ocurre una falla fatal en la SAN… ?, podemos permitirnos perder la data de nuestra compañía o negocio ?, definitivamente la respuesta es: No.
Tenemos que poseer protección contra ese posible caso. Para ellos presentaremos diversas técnicas que nos ayudaran a tener una segunda línea de protección de backup para nuestras bases de datos.
Listaremos posibles opciones de almacenamiento diversas y/o externas al FRA. Dentro de las cuales resaltamos las siguientes:
- En infraestructura NAS : NAS (del inglés Network Attached Storage) es el nombre dado a una tecnología de almacenamiento dedicada a compartir la capacidad de almacenamiento de un computador (Servidor) con ordenadores personales o servidores clientes a través de una red (normalmente TCP/IP), haciendo uso de un Sistema Operativo optimizado para dar acceso con los protocolos CIFS, NFS, FTP o TFTP. Generalmente, los sistemas NAS son dispositivos de almacenamiento específicos a los que se accede desde los equipos a través de protocolos de red (normalmente TCP/IP). También se podría considerar un sistema NAS a un servidor (Linux, Windows, ...) que comparte sus unidades por red, pero la definición suele aplicarse a sistemas específicos
- Discos duros externos
- NFS
- Cinta
- Y otros
Técnicas para extraer nuestros backups del ASM
- Opción 1: Desde la versión de manejador de base de datos 11g Release1 tenemos disponible el comando cp perteneciente al utilitario asmcmd. Esta opción fue presentada y desarrollada en el articulo : “Protegiendo backups de RMAN contra fallos de la SAN ( Parte I )”
- Opción 2: Desde versiones anteriores al manejador de base de datos 11g, tenemos las opciones de: Backup Backupset perteneciente al conjunto de comandos y opciones de RMAN. Esta será la técnica utilizada para el presente artículo.
- Opción 3: Desde versiones anteriores al manejador de base de datos 11g, tenemos la existencia del paquete DBMS_TRANSFER. Esta opción será desarrollada en la parte III del presente articulo : “Protegiendo backups de RMAN contra fallos de la SAN ( Parte III )”
Backups of Backup Sets ( Concepto )
The RMAN
BACKUP BACKUPSETcommand backs up backup sets rather than actual database files. This command supports disk-to-disk or disk-to-tape backups, but not tape-to-tape backups.
The
BACKUP BACKUPSETcommand uses the default disk channel to copy backup sets from disk to disk. To back up from disk to tape, you must either manually allocate a channel of DEVICE TYPE sbt or configure an automatic sbt channel.
Una vez visto en detalle el concepto del comando “Backup Backupset”. Planteemos un ejemplo práctico ajustado a la realidad del día a día de nuestras labores como DBA.
Normalmente los backups full realizados con RMAN residen en nuestra área FRA y para el escenario que estamos planteando, existirá la necesidad de transferir las piezas del un backup full a filesystem ( filesystem perteneciente a una unidad NAS, NFS, DD externos o cualquier otro ).
Vamos a realizarlo:
Base de Datos: MYDB Diskgroup ( DATA ): +DATA Diskgroup ( FRA ): +FRA
Paso1: Tomar backup full con RMAN estableciendo una etiqueta que nos pueda ayudar a identificar unívocamente las piezas pertenecientes a este:
rman_backup_full.sh export ORACLE_SID=MYDB export V_DATE=`date +%d%m%Y_%H%M` export V_LOGFILE=En el caso presente estamos tomando un backup full de la BBDD y el elemento que nos ayudara a identificar de forma univoca el mismo será el TAG aplicado en la sentencia de backup full./BKFULL_MYDB_RMAN_$V_DATE.log rman target / @ /run.rcv log=$V_LOGFILE run.rcv run { backup database tag='FULL_WEEKLY'; } exit
Una vez tomado el backup, visualizamos la piezas generadas del mismo:
RMAN> List Backup;using target database control file instead of recovery catalog
List of Backup Sets =================== BS Key Type LV Size Device Type Elapsed Time Completion Time ------- ---- -- ---------- ----------- ------------ --------------- 5 Full 1019.86M DISK 00:01:15 10-NOV-11 BP Key: 5 Status: AVAILABLE Compressed: NO Tag: FULL_WEEKLY Piece Name: +FRA/mydb/backupset/2011_11_10/nnndf0_full_weekly_0.271.766859353 List of Datafiles in backup set 5 File LV Type Ckp SCN Ckp Time Name ---- -- ---- ---------- --------- ---- 1 Full 1072131 09-NOV-11 +DATA/mydb/datafile/system.256.766584645 2 Full 1072131 09-NOV-11 +DATA/mydb/datafile/sysaux.257.766584645 3 Full 1072131 09-NOV-11 +DATA/mydb/datafile/undotbs1.258.766584647 4 Full 1072131 09-NOV-11 +DATA/mydb/datafile/users.259.766584647 5 Full 1072131 09-NOV-11 +DATA/mydb/datafile/example.276.766585261 BS Key Type LV Size Device Type Elapsed Time Completion Time ------- ---- -- ---------- ----------- ------------ --------------- 6 Full 9.58M DISK 00:00:01 10-NOV-11 BP Key: 6 Status: AVAILABLE Compressed: NO Tag: FULL_WEEKLY Piece Name: +FRA/mydb/backupset/2011_11_10/ncsnf0_full_weekly_0.269.766859431 SPFILE Included: Modification time: 09-NOV-11 SPFILE db_unique_name: mydb Control File Included: Ckp SCN: 1072131 Ckp time: 09-NOV-11 RMAN>En el log presentado se puede apreciar la generación de 2 piezas
+FRA/mydb/backupset/2011_11_10/nnndf0_full_weekly_0.271.766859353 & +FRA/mydb/backupset/2011_11_10/ncsnf0_full_weekly_0.269.766859431).Cada pieza posee atributos únicos, en esta ocasión determinaremos las mismas a transferir mediante los atributos TAG & BS KEY. Ambas piezas representan el objetivo para transferir a una localización de disco diversa al FRA.
Paso2: Visualizando localizaciones de piezas generadas en el FRA
Visualicemos las especificaciones de las piezas generadas a través del vistas de diccionario de datos de nuestra base de datos.
SQL> select HANDLE from v$backup_piece 2 where TAG='FULL_WEEKLY'; HANDLE -------------------------------------------------------------------------------- +FRA/mydb/backupset/2011_11_10/nnndf0_full_weekly_0.271.766859353 +FRA/mydb/backupset/2011_11_10/ncsnf0_full_weekly_0.269.766859431 SQL>Paso3: Construir script para transferir las piezas externamente al FRA
Base de Datos: MYDB
Version de Oracle Server: 11g Release2
ASM Home: /u01/app/11.2.0/grid
Diskgroup ( FRA ): +FRA
Pre_transfer_backup_full.sh export ORACLE_SID=MYDB sqlplus / as sysdba @Es apreciable destacar que la vista “V$BACKUP_FILES” posee campos altamente útiles para delimitar las piezas a transferir. A través de esta podemos ajustar y filtrar de forma adecuada las piezas requeridas para la labor./Extracting_script.sql Extracting_script.sql SET NEWPAGE 0 SET SPACE 0 SET PAGESIZE 0 SET ECHO OFF SET FEEDBACK OFF SET HEADING OFF SET TERMOUT OFF SET VERIFY OFF set linesize 400 spool /Transfer_full_backup.sql select distinct jp from ( select 'run { backup backupset ' || BS_KEY || ' format ''/MyExternalFileSystem/PIECE_BSKEY_' || BS_KEY || '.BKP' || '''' || '; }' jp from v$backup_files where tag='FULL_WEEKLY' ); spool off exit;
Referencia de la vista “V$BACKUP_FILES”
V$BACKUP_FILES
Oracle® Database Reference 11g Release 1 (11.1)
Part Number B28320-03
http://download.oracle.com/docs/cd/B28359_01/server.111/b28320/dynviews_1047.htmPor ejemplo, si se desea filtrar las piezas por:
- TAG utilizamos el campo TAG
- BS_KEY representando la llave primaria que identifica la pieza perteneciente a un backupset
- Modo de compresión utilizamos el campo COMPRESSED
- y así sucesivamente
El contenido del script “Transfer_full_backup.sql” será algo similar a lo siguiente:s
run { backup backupset 5 format '/MyExternalFileSystem/PIECE_BSKEY_5.BKP'; } run { backup backupset 6 format '/MyExternalFileSystem/PIECE_BSKEY_6.BKP'; }Paso4: Ejecutar el script “Transfer_full_backup.sql” desde RMAN
El script “Transfer_full_backup.sql” posteriormente tendrá que se ejecutado desde una sesión de RMAN. Para el presente caso se generan piezas equivalentes a las generadas en el FRA, el destino escogido para las mismas es el filesystem “/MyExternalFileSystem”. El “feedback” de la ejecución seria de la siguiente manera:
RMAN> run { backup backupset 5 format '/MyExternalFileSystem/PIECE_BSKEY_5.BKP'; } Starting backup at 10-NOV-11 using target database control file instead of recovery catalog allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=34 device type=DISK channel ORA_DISK_1: input backup set: count=11, stamp=766859352, piece=1 channel ORA_DISK_1: starting piece 1 at 10-NOV-11 channel ORA_DISK_1: backup piece +FRA/mydb/backupset/2011_11_10/nnndf0_full_weekly_0.271.766859353 piece handle=/MyExternalFileSystem/PIECE_BSKEY_5.BKP comment=NONE channel ORA_DISK_1: finished piece 1 at 10-NOV-11 channel ORA_DISK_1: backup piece complete, elapsed time: 00:01:05 Finished backup at 10-NOV-11 RMAN> RMAN> run { backup backupset 6 format '/MyExternalFileSystem/PIECE_BSKEY_6.BKP'; } Starting backup at 10-NOV-11 using channel ORA_DISK_1 channel ORA_DISK_1: input backup set: count=12, stamp=766859429, piece=1 channel ORA_DISK_1: starting piece 1 at 10-NOV-11 channel ORA_DISK_1: backup piece +FRA/mydb/backupset/2011_11_10/ncsnf0_full_weekly_0.269.766859431 piece handle=/MyExternalFileSystem/PIECE_BSKEY_6.BKP comment=NONE channel ORA_DISK_1: finished piece 1 at 10-NOV-11 channel ORA_DISK_1: backup piece complete, elapsed time: 00:00:01 Finished backup at 10-NOV-11 RMAN> Las piezas obtenidas son: PIECE_BSKEY_5.BKP & PIECE_BSKEY_6.BKPPaso5: También se puede llevar a cabo la tarea con una sola instrucción de la siguiente manera:
RMAN> backup backupset 5,6 format '/MyExternalFileSystem/MyBackup_out_of_ASM_%t_s%s_s%p.BKP'; Starting backup at 10-NOV-11 using channel ORA_DISK_1 channel ORA_DISK_1: input backup set: count=15, stamp=766864699, piece=1 channel ORA_DISK_1: starting piece 1 at 10-NOV-11 channel ORA_DISK_1: backup piece +FRA/mydb/backupset/2011_11_10/nnndf0_full_weekly_0.271.766859353 piece handle=/MyExternalFileSystem/MyBackup_out_of_ASM_766864699_s15_s1.BKP comment=NONE channel ORA_DISK_1: finished piece 1 at 10-NOV-11 channel ORA_DISK_1: backup piece complete, elapsed time: 00:00:55 channel ORA_DISK_1: input backup set: count=16, stamp=766864775, piece=1 channel ORA_DISK_1: starting piece 1 at 10-NOV-11 channel ORA_DISK_1: backup piece +FRA/mydb/backupset/2011_11_10/ncsnf0_full_weekly_0.269.766859431 piece handle=/MyExternalFileSystem/MyBackup_out_of_ASM_766864775_s16_s1.BKP comment=NONE channel ORA_DISK_1: finished piece 1 at 10-NOV-11 channel ORA_DISK_1: backup piece complete, elapsed time: 00:00:01 Finished backup at 10-NOV-11 RMAN>Tal cual como se puede apreciar, el identificador de las piezas es el atributo BS_KEY.
Visualizacion de archivos ( piezas de RMAN ) generadas en el sistema operativo
[oracle@MYSERVER-mydb MyExternalFileSystem]$ ls -lt total 1057452 -rw-r----- 1 oracle dba 10059776 Nov 10 18:08 MyBackup_out_of_ASM_766864775_s16_s1.BKP -rw-r----- 1 oracle dba 1071702016 Nov 10 18:07 MyBackup_out_of_ASM_766864699_s15_s1.BKP [oracle@MYSERVER-mydb MyExternalFileSystem]$Dichas piezas son perfectamente validas y consistentes para cualquier recuperación de nuestra base de datos. Las mismas quedan catalogadas en los controlfiles y/o catalogo de RMAN.
Aplicaciones y uso
Las posibles aplicaciones reales que podemos realizar con transferencias de piezas o archivos desde ASM hacia otros destinos son variadas. Listamos algunas:
- Transferencia de Archived Redo Logs para resolver casos de GAP para Manual Standby Databases o Data Guard en versiones 10g
- Extraer RMAN backups ( full, archives, controlfiles, etc… ) para procedimientos tales como: RMAN Dupliicate, Instanciacion de Standby o Data Guard Databases, etc… y otros
- Transferencias de ASM a ASM para replicación de BBDDs
- Y muchas otras mas
Suscribirse a:
Entradas (Atom)