Buscando el propietario de los lobs

Hoy vamos con otra entradita sencilla y de uso bastante comun.

¿Cuantas veces nos hemos encontrado con un objeto LOB que no sabemos que o de quien es por que su nombre no es descriptivo?

Para ayudarnos a lidiar con estos casos, oracle tiene la vista dba_lobs y all_lobs.

Gracias a estas vistas, con una sencilla consulta podemos saber a quien pertenece este lob que nos incordia.
SELECT owner, table_name, column_name
  FROM all_lobs
 WHERE segment_name = ‘SYS_LOB0000XXXX$$$’

Despues de saber de que esquema y tabla estamos hablando, seguramente querras saber cuanto ocupa.

select sum(dbms_lob.getlength ( ‘SYS_LOB0000XXXX$$$’))  as bytes  from OWNER.TABLE_NAME;

 

 

Como siempre, si los lobs te vuelven loco, puedes ir a buscar mas informacion en la  Nota :

RDBMS Large Oobejst (LOBS)  [ID 1268771.1]

 

Como evitar los .aud

Hoy tenemos uno de los parámetros mas sencillos de modificar y que nos evitaran quebraderos de cabeza.

Muchas veces   a la hora de revisar el filesysten encuentras muchisimos ficheros .aud , estos ficheros con poca utilidad real en el día a día pueden llegar a generar verdaderos problemas de rendimiento en las operaciones con los directorios que los continen.

¿Que hacemos con estos ficheros?

La respuesta es facil, si no los vas a usar,deshabilitalos.

Solo has de cambiar el parámetro  audit_sys_operations=FALSE

 

Otra opcion es rotarlos y/o borrarlos, la manera de saber donde van parar y rotarlos, para ello puedes consultar lel parámetro   audit_file_dest

 

QL> show parameter audit_file_dest

NAME                                 TYPE        VALUE
———————————— ———– ——————————
audit_file_dest                      string      /opt/oracle/app/product/11.2.0/grid/rdbms/audit

Que version tengo de oracle ?

Hoy vamos a añadir una nueva entrada «para dummies».

La respuesta a la pregunta del título es muy facil, podemos obtenerla de la  tabla PRODUCT_COMPONENT_VERSION , o bien mirando simplemente la vista dinámica v$version .

Si quremos mirar la primera desde sqlplus, lo mejor será el dar formato previamente a las columnas,  la consulta sería algo similar a .

set linesize 120;
column PRODUCT format a60;
column VERSION format a20;
column STATUS format a20;
select * from product_component_version;

También podemos obtener información de que hay instalado y la version con


set linesize 120;
column comp_name format a60;
column VERSION format a20;
column STATUS format a20;
SELECT comp_name, version, status
FROm dba_registry
ORDER BY 1;

Si con esto no estais satisfechos, podeis  hurgar en el inventory de Oracle y ver con mas detalle que se ha puesto, especialmente los parches instalados .

Esto puedes hacerlo con

$ORACLE_HOME/OPatch/opatch lsinventory

 

Hay un caso en el que  esto no puede servirnos, y es cuando tenemos una 10g,11g que no ha sido creado desde el DBCA, en ese caso puede que el banner de la version de oracle no nos indique si es una version Estandard o Enterprise.

Para averiguarlo en ese caso modemos mirarlo en el fichero

$ORACLE_HOME/inventory/Components21/oracle.server/*/context.xml

En este fichero xml podemos mirar la propiedad s_serverInstallType donde nos dira si es estandard (SE) o Enterprise (EE).

En la version 11g el fichero a buscar es el
$ORACLE_HOME/inventory/globalvariables/oracle.server/globalvariables.xml
y tenemos que buscar la variable oracle_install_db_InstallType

Generar un fichero separado por comas

Que ocurre cuando queremos obtener la salida de una consulta en un formato facil de transportar a alguna otra aplicacion (normalmente la dichosa excel)?

La solucion mas sencilla es hacer un fichero separado por comas.

set heading off
set termout off
spool fichero_por_comas.txt
select machine
||chr(44)||
count(*) numero
from v$session where type != 'BACKGROUND'
and status='ACTIVE'
group by machine order by numero desc;
exit;

El truco aqui se encuantra en el ||chr(44)||, con esa concatenacion estamos diciendole al SQLplus que concatene con el caracter 44, conde el caracter 44 es una coma.
Al igual que hemos utilizado una coma podíamos haber usado cualquier otro caracter que nos interese.

Nota: la tabla de caracteres se puede encontrar en :http://www.asciitable.com/

Salida básica en el sqlplus

A la hora del uso del sqlplus el formateo de  la salida es muy importante, tanto en el uso diario como para poder hacer pequeños scripts.

Algunos comandos básicos son:

Tamaño de la página
set pagesize 50000
Tamaño de la línea
set linesize 200
Para ver el comando que ejecutas
set echo off
suppresses the display of output from a command file
set termout off
Quitar las cabeceras
set heading off
Quitar la linea «x rows selected»
set feedback off;
Formateo de longitud de una columna
column XX format a20 (20 catarcetres)
column XX format 999.999 (decimales)
column XX format €999.999 (ponemos moneda)
Dejar un log con el nombre del SID siempre y cuando sea una variable global definida
spool /path/salida_${ORACLE_SID}.log

Algunos enlaces útiles:
http://www.adp-gmbh.ch/ora/sqlplus/
http://docs.oracle.com/cd/B19306_01/server.102/b14357/toc.htm