Modificar el editor por defecto de SQLplus en Unix

Vamos con una nota rápida y sencilla, pero bastante útil.

SQLPlus tiene por defecto el editor ed , sinceramente, el ed no es el editor mas usado del mundo, de hecho, no conozco a nadie que lo tenga como su primera opción, la pregunta ahora es, ¿Como hacemos para modificar este editor por defecto?

muy sencillo:


define_editor='vi'

Para no tener que estar añadiendo esta línea cada vez que entramos, podemos añadirla al fichero profile de sqlplus genérico que se encuentra en


$ORACLE_HOME/sqlplus/admin/glogin.sql

Problemas con los requerimientos del cliente 11gr2 en windows

Volvemos tras las vacaciones navideñas con una pequeña entrada de esas tremendamente simples, pero que pueden ser evitarnos una gran pérdida de tiempo.

Una de las cosas mas engorrosas de las instalaciones de Oracle es la instalación del cliente, en primer lugar, porque pocas veces nos especifican que es exactamente los componentes del cliente que necesitan, y en segundo lugar, por que, hasta estas últimas versiones la instalación ( especialmente la desinstalación) del cliente de windows era muy engorrosa.

Pues bien, el otro día en la instalación de un cliente 11gr2 en windows me encontré con un error nuevo:

error_instalacion_XP

Mi windows XP detectaba un error en los requerimientos de la instalacion del cliente (no instantclient), cuando, todos los requerimientos eran correctos.

La solución es tan sencilla como el habilitar el uso compartido de C$. Parece ser que el instalador utiliza «\\< servidor >\C$\temp» , con lo que si no está habilitado el recurso, la instalación falla.

La información completa del caso está (como siempre) en metalink, en la nota «Installation of 11gR2 on Windows Fails Checking Requirements [ID 1133495.1]»

Sqlplus para dummies III ( Bloqueos )

Otra de las cosas que mas amenudo tenemos que hacer es el encontrar quien nos está bloqueando y que bloquea.

Para ello, la consulta mas sencilla que podemos hacer es:

SELECT
     a.session_id , username ,type , mode_held, mode_requested 
     lock_id1,lock_id2
FROM
     sys.v_$session b,
     sys.dba_blockers c,
     sys.dba_lock a
WHERE
     c.holding_session=a.session_id AND
     c.holding_session=b.sid

Pero,  seguramente queramos saber mas cosas, como que tipo de bloqueos y que objetos están implicados, para ello podemos usar esta consulta en la que aparecen  datos de la sesión, del proceso tanto en el server como en el cliente y de los objetos y tipo de bloqueo que lleva a cabo

 

SELECT 
substr(to_char(l.sid),1,4) "SID", 
s.serial# "SERIAL",
P.spid "Server  PID", 
s.USERNAME,
s.type, 
s.process "Client  PID", 
MACHINE, 
l.type, 
DECODE(L.TYPE,'MR','File_ID: '||L.ID1, 
'TM', LO.NAME, 
'TX','USN: '||to_char(TRUNC(L.ID1/65536))||' RWO: '||nvl(RWO.NAME,'None'),L.ID1) LOCK_ID1, 
decode(l.lmode, 
0, 'None', 
1, 'Null', 
2, 'Row-S (SS)', 
3, 'Row-X (SX)', 
4, 'Share', 
5, 'S/Row-X (SSX)', 
6, 'Exclusive', 
substr(to_char(l.lmode),1,13)) "Locked Mode", 
decode(l.request, 
0, 'None', 
1, 'Null', 
2, 'Row-S (SS)', 
3, 'Row-X (SX)', 
4, 'Share', 
5, 'S/Row-X (SSX)', 
6, 'Exclusive', 
substr(to_char(l.request),1,13)) "Requested", 
l.ctime, 
l.block ,
s.logon_time
FROM v$process P, 
v$session S, 
v$lock l, 
sys.obj$ lo, 
sys.obj$ rwo 
WHERE l.sid = S.sid (+) 
AND S.paddr = P.addr (+) 
AND LO.OBJ#(+) = L.ID1 
AND RWO.OBJ#(+) = S.ROW_WAIT_OBJ#
and S.type!='BACKGROUND'
order by SID;

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