1 comment on “Oracle Redirected Restore File Name Variables”

Oracle Redirected Restore File Name Variables

En la siguiente tabla podemos encontrar el listado de las variables que podemos especificar al momento de redireccionar nuestras piezas (Pieces from a backupset pieces on restore.)

Estas nos ayudaran a trabajar en el redireccionamiento de almacenamiento en nuestros nuevos TARGETS:

Variable Description
%U Note: This variable covers most cases.This variable specifies a system-generated unique file name with the following format:

data-D-%d_id-%I_TS-%N_FNO-%f.

The %d variable specifies the database name. For example, data-D-prod_id-22398754_TS-users_FNO-7.

%b This variable specifies the file name without the fully qualified directory path. For example, the data file name /oradata/prod/financial.dbf becomes financial.dbf.This variable preserves the names of the data files while you move them to different directory. You can use this variable when you create an image copies. The variable cannot be used for OMF data files or backup sets.
%f Specifies the absolute file number of the data file for which the new name is generated. For example, if data file 2 is duplicated, then %f generates the value 2.
%I This variable is optional and specifies the database ID (DBID).
%N This variable is optional and specifies the tablespace name.

Oracle HPUX Tips | How to Know the Filesystem Size as df command

How to check Disk Space on HPUX

Vamos a sumar en la sección de scripting, como conocer el volumen size de cada file system en un HPUX.

Este script nos es muy útil, por que en muchos customers, ellos aun continúan almacenando los TABLESPACES de sus bases de datos en Filsesystem y no en ASM.

Para ello les dejo este script que encontre en la web hace un tiempo y lo viera en mis notas y  que me fuera de mucha utilidad en la ayuda de obtencion de volumenes para comenzar a diagramar mi nueva arquitectura de datos en Oracle 12c.

df -Pk | awk '{ 
 if ( NR == 1 ) { next } 
 if ( NF == 6 ) { print } 
 if ( NF == 5 ) { next } 
 if ( NF == 1 ) { 
 getline record; 
 $0 = $0 record 
 print $0 
 } 
 }' | awk '
BEGIN {print "Filesystem                                    Mount Point                 Total GB   Avail GB    Used GB  Used"
       print "--------------------------------------------- ------------------------- ---------- ---------- ---------- -----"}
END {print ""}
/dev/ || /^[0-9a-zA-Z.]*:\// {
printf ("%-45.45s %-25s %10.2f %10.2f %10.2f %4.0f%\n",$1,$6,$2/1024/1024,$4/1024/1024,$3/1024/1024,$5)
}'

Muchas Gracias

Saludos a la comunidad de Chile !!

AIX tips | How to know the CPU, Version and Memory

Alguna vez se habrán encontrado con tener que realizar un assesment en un cliente.

Básicamente , precisamos cosas como versión, CPU y memoria.

La idea de este simple articulo es tener a mano una breve guiá de los comandos de AIX que precisamos.

Saludos a Nelson de Bolivia de quien tengo un grato recuerdo  y es por el que nace este articulo.

Version
Con este breve scrpt podemos capturar lo necesario

# oslevel -s
5300-12-07-1241
# OSLEVEL=$(oslevel -s)
# AIXVERSION=$(echo "scale=1; $(echo $OSLEVEL | cut -d'-' -f1)/1000" | bc)
# AIXTL=$(echo $OSLEVEL | cut -d'-' -f2 | bc)
# AIXSP=$(echo $OSLEVEL | cut -d'-' -f3 | bc)
# echo "AIX ${AIXVERSION} - Technology Level ${AIXTL} - Service Pack ${AIXSP}"

BEST PRACTICES:

  • Llevar siempre armada la lista de tareas y comandos asociados a ese assesment.

Espero les sea util !

Reclamable Space on Oracle Tables script

Cuando tenemos actividades en la base de datos, con tipo de transacciones que involucran  DML’s del tipo UPDATE, DELETE, derivara con el tiempo realizar tareas de mantenimiento y  reorganización de datos.

De esta manera la TABLA se ira degradando.

La acción requerida, sera compactarla, reorganizarla.

Parte de nuestra tarea consiste en averiguar las TABLAS candidatas a ser reorganizadas, con el método SHRINK.

Por ello, es necesario revisar y contar con un listado.

Ejecutar el siguiente query

*Agradecemos a Lucas Juarez por compartirlo.

set line 200
set pages 200
col OWNER format a10
    select 
	owner,
	table_name,
	mb_total,
	mb_usado,
	mb_total-mb_usado mb_reclamable,
	round((mb_total-mb_usado)/mb_total*100,2) "%_RECLAMABLE"
		from (select owner,table_name,round((blocks*8)/1024,2) mb_total, round((num_rows*avg_row_len/1024)/1024,2) mb_usado
					from dba_tables
						where owner not in ('ANONYMOUS','APEX_PUBLIC_USER','APEX_030200','APPQOSSYS','BI','CTXSYS',
                       'DBSNMP','DIP','DMSYS','EXFSYS','HR','IX','PUBLIC','MDSYS','ORACLE_OCM',
                       'LBACSYS','MDDATA','MDSYS','MGMT_VIEW','ODM','ODM_MTR','OE','OLAPSYS','ORDDATA',
					   'ORDPLUGINS','ORDSYS','OUTLN','PM','PERFSTAT','TSMSYS','SCOTT','SH','SI_INFORMTN_SCHEMA',
					   'SPATIAL_CSW_ADMIN_USR','OWF_MGR','SPATIAL_WFS_ADMIN_USR','SYS','SYSMAN','SYSTEM','TRACESRV',
					   'MTSSYS','OWBSYS_AUDIT','WEBSYS','WMSYS','XDB')
		and blocks <> 0 )
			where ( (mb_total > 10   and mb_total < 50 and round((mb_total-mb_usado)/mb_total*100,2) > 50 ) 
			or (mb_total > 50   and mb_total < 200 and round((mb_total-mb_usado)/mb_total*100,2) > 40 )
			or (mb_total > 200 and mb_total < 500 and round((mb_total-mb_usado)/mb_total*100,2) > 30 )
			or (mb_total > 500 and round((mb_total-mb_usado)/mb_total*100,2)  > 15 ) )
		order by mb_total desc;

Como resultado podemos obtener una salida como la siguiente:

Kill Session MetaQuery

Para hacer sencillo nuestro mundo, nada mejor que un metaquery que nos ayude a realizar una tarea que involucraría tiempo que no existe cuando surge una tarea delicada como la de matar cierto tipo de sessiones.

En el día de hoy compartimos el query de la semana, en un caso particular, donde se tuvo que matar sessiones de un aplicativo que conforma como parte de un ecosistema de aplicaciones , con el mismo repositorio y que afectaba la operatoria completa del negocio.

select 
'ALTER SYSTEM KILL SESSION '''||SID||','||SERIAL#||',@'||INST_ID||''' IMMEDIATE;' 
 query,
 inst_id, 
 sid,
 serial#,
 username,
 status,
 schemaname,
 osuser,
 module,
 machine,
 program,
 sql_id,
 logon_time,
 last_call_et,
 blocking_session,
 event,
 state 
        from gv$session 
           where machine like 'srvlappsp%' 
               and status = 'ACTIVE' order by last_call_et desc;

Saludos a LATAM, INDIA & German People y a Lucas Juarez por su aporte diario como DBA en nuestro equipo de trabajo !

Bash scripts | Variables de Entorno de Instancias en RAC

Cuando trabajamos en ambientes Clusterizados utilizamos variables de entorno que cambian sus nombres de instancia según el nodo al que nos conectamos . ( En detalle lo que cambia es la variable $ORACLE_SID. ) 

Por ello desarrolle un script para no tener que andar modificando manualmente en cada uno de los nodos y los actualizo por medio de scp, ya que mi usuario tiene llaves publicas y privadas.

Aqui les dejo el modelo.

En mi caso particular yo lo hice para un cluster de cinco nodos.

bash scripts | Adding Privileges to Oracle CRS

Agregar Privilegios en Oracle CRS

Con la salida de el script VER_PERMISOS_CRS ya conocemos cuales son los privilegios que tiene cada usuario de clusterware, pero ahora es preciso agregar que permisos obtendra según nuestra politica de Seguridad.

  • Es preciso conocer el nombre de Usuario de SO al cual serán asignados los privilegios.
  • Es preciso conocer cuales son los privilegios que se asignarán a determinados usuarios.
  • Tener el archivo que generamos con los servicios que serán adjuntados a nuestro usuario de SO.