Me gustaría compartir con ustedes algunas de las funciones que tiene oracle y que son muy útiles a la hora de estar administrando un servidor. Principalmente me refiero a las diferentes maneras que tiene oracle para identificar el usuario con el que estamos conectados así como información relacionada a nuestra sesión.

SYS_CONTEXT

SYS_CONTEXT(n , p [, length]), puede tomar 3 parámetros de entrada, donde n es un namespace, p es un parámetro asociado al namespace n y lenght es el tamaño del valor regresado en bytes que por default es 256. El namespace en Oracle es llamado USERENV el cuál describe nuestra sesión, por lo que siempre colocaremos USERENV y como resultado obtenemos un VARCHAR2.

Existen una gran diversidad de parámetros para el namespace USERENV pero solo voy a colocar los más utilizados:

CURRENT_SCHEMA
CURRENT_SCHEMAID
HOST
INSTANCE
INSTANCE_NAME
IP_ADDRESS
ISDBA
LANG
LANGUAGE
NETWORK_PROTOCOL
NLS_CALENDAR
NLS_CURRENCY
NLS_DATE_FORMAT
NLS_DATE_LANGUAGE
NLS_SORT
NLS_TERRITORY
OS_USER
SERVER_HOST
SERVICE_NAME
SESSION_USER
SESSION_USERID
SESSIONID
SID
TERMINAL

Por ejemplo si queremos ver la IP de donde estamos conectados ejecutamos el siguiente comando:

SELECT SYS_CONTEXT(‘USERENV’,’IP_ADDRESS’)
FROM dual;

SYS_CONTEXT('USERENV','IP_ADDRESS')
------------------------------------
192.168.1.100

Si no te muestra una IP es debido a que no te estas conectando por medio de TCP.Otro ejemplo es el siguiente:

COLUMN usuario FORMAT A10 
COLUMN esquema FORMAT A10
COLUMN host FORMAT A30
COLUMN NLS_TERRITORY FORMAT A15

SELECT SYS_CONTEXT('USERENV', 'OS_USER') usuario,
       SYS_CONTEXT('USERENV', 'CURRENT_SCHEMA') esquema,
       SYS_CONTEXT('USERENV', 'HOST') host,
       SYS_CONTEXT('USERENV', 'NLS_TERRITORY') NLS_TERRITORY
FROM dual;

USUARIO    ESQUEMA    HOST                 NLS_TERRITORY
---------- ---------- ------------------------------ ---------------
usuario01  SYS          oracle.dbaremoto.com.mx     AMERICA

UID

          Esta función no toma parámetros de entrada y nos entrega el ID de la se sessión. El ID de usuario es un identificador único para cada usuario en una base de datos y puede seleccionarse de la vista DBA_USERS.
SQL> SHOW USER
USER is “SYS”

SQL> SELECT user_id,username, account_status
FROM dba_users
WHERE user_id = UID;

   USER_ID USERNAME              ACCOUNT_STATUS
---------- ------------------------------ --------------------------------
     0 SYS                  OPEN

USER

          No toma parámetros de entrada y nos regresa un string que contiene el nombre de usuario de nuestra sesión.
SQL> SELECT default_tablespace, temporary_tablespace
FROM dba_users
WHERE username = USER;

DEFAULT_TABLESPACE           TEMPORARY_TABLESPACE
------------------------------ ------------------------------
SYSTEM                   TEMP

Existe la función USERENV pero al parecer va a desaparecer ya que oracle la deprecio desde la versión 9i, por lo que se recomienda usar SYS_CONTEXT.

You are not authorised to post comments.

Comments powered by CComment

DBASupport - Foro

Mirroring con estados disconnected
Hola, el día de hoy después de reiniciar mi servidor de destino a donde realizo el mirroring ya no pude replicar más, el error que muestra es que...

Se me duplica el mensaje en /etc/motd
  • Topic started by agamez
  • in General
  • 5 months ago.
  • 5 months ago.
  • 2 replies
Buen día, alguien tiene idea porque después de actualizar a fedora 28 se me esta duplicando la salida de mi /etc/motd?

Cómo puedo filtrar un mensaje en el log messages
  • Topic started by carlos25
  • in General
  • 9 months ago.
  • 9 months ago.
  • 2 replies
Buenos días, estoy recibiendo en mi log de errores muchos mensajes de cron, ya que tengo varios crones configurados en mi server. Existe alguna...

Cómo validar la hora de ejecución de un proceso
Hola, estoy tratando de validar que un proceso sólo pueda ser ejecutado dentro de un periodo de tiempo, en este caso entre las 7:00 AM y las 7:00...

Estadisticas en la base de datos
Buenos días, estoy teniendo problemas de performance en mis queries y quisiera saber como puedo validar que mis tablas tienen las estadisticas...
URGE AYUDA
  • Topic started by
  • in General
  • 13 years ago.
  • 13 years ago.
  • 30 replies
HOLA ESPERO ME PUEDAN AYUDAR. TEN GO UNA TABLA CON una estructura similar a la siguiente: id_mov cargo subtotal total...

Duada de Memoria de SQL Server 2005
  • Topic started by Erzengel
  • in General
  • 9 years ago.
  • 8 years ago.
  • 30 replies
Buen Día Recurro nuevamente a su sabiduría. Quiero saber el porque tiene un tope SQL Serever de 2GB en Windows server 2003 de 32 bit y si alguien...

SqlDateTime overflow
  • Topic started by
  • in General
  • 12 years ago.
  • 12 years ago.
  • 11 replies
Alguno de ustedes ha tenido este problema: SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM.' Les...

problemas para iniciar el agente sql
  • Topic started by acgch
  • in General
  • 12 years ago.
  • 12 years ago.
  • 11 replies
Recientemente para asegurar el sql server 2005, cree una cuenta sql con derechos de sysadmin y borre el grupo BUILTIN\Administradores para evitar...

Problemas para levantar mirror
  • Topic started by acgch
  • in General
  • 11 years ago.
  • 11 years ago.
  • 16 replies
Hola amigos, tengan un buen día, les comento que estoy configurando mirror siguiendo los pasos a través del wizard del managment studio y también...
Mirroring con estados disconnected
Hola, el día de hoy después de reiniciar mi servidor de destino a donde realizo el mirroring ya no pude replicar más, el error que muestra es que...

Se me duplica el mensaje en /etc/motd
  • Topic started by agamez
  • in General
  • 5 months ago.
  • 5 months ago.
  • 2 replies
Buen día, alguien tiene idea porque después de actualizar a fedora 28 se me esta duplicando la salida de mi /etc/motd?

Cómo puedo filtrar un mensaje en el log messages
  • Topic started by carlos25
  • in General
  • 9 months ago.
  • 9 months ago.
  • 2 replies
Buenos días, estoy recibiendo en mi log de errores muchos mensajes de cron, ya que tengo varios crones configurados en mi server. Existe alguna...

Cómo validar la hora de ejecución de un proceso
Hola, estoy tratando de validar que un proceso sólo pueda ser ejecutado dentro de un periodo de tiempo, en este caso entre las 7:00 AM y las 7:00...

Estadisticas en la base de datos
Buenos días, estoy teniendo problemas de performance en mis queries y quisiera saber como puedo validar que mis tablas tienen las estadisticas...
Deshabilitar todos los jobs
  • Topic started by agamez
  • in Jobs
  • one year ago.
  • one year ago.
  • 1 reply
Buenos días, alguien sabe como puedo deshabilitar rapidamente todos los jobs de SQL Server, gracias.

Mirroring con estados disconnected
Hola, el día de hoy después de reiniciar mi servidor de destino a donde realizo el mirroring ya no pude replicar más, el error que muestra es que...

Se me duplica el mensaje en /etc/motd
  • Topic started by agamez
  • in General
  • 5 months ago.
  • 5 months ago.
  • 2 replies
Buen día, alguien tiene idea porque después de actualizar a fedora 28 se me esta duplicando la salida de mi /etc/motd?

Cómo puedo filtrar un mensaje en el log messages
  • Topic started by carlos25
  • in General
  • 9 months ago.
  • 9 months ago.
  • 2 replies
Buenos días, estoy recibiendo en mi log de errores muchos mensajes de cron, ya que tengo varios crones configurados en mi server. Existe alguna...

Cómo validar la hora de ejecución de un proceso
Hola, estoy tratando de validar que un proceso sólo pueda ser ejecutado dentro de un periodo de tiempo, en este caso entre las 7:00 AM y las 7:00...

Necesitas Soporte

Proveemos soporte de base de datos SQL Server, Sybase, Oracle y MySQL. Nuestro servicio, le permite contar con un experto las 24 horas al día los 365 días del año.

Nuestros servicios están diseñados para que solo pague por el soporte que necesita. El pago se realiza de manera mensual basado en el nivel de cobertura que requiera. En promedio este costo va de un 30% a un 60% menos, de lo que le pagaría a un DBA en sitio.

Contactanos