We can identify the IP addresses of all the client connect to server. Below the command to identified the IP address ,machine name,sid .
SQL> select sid, machine, UTL_INADDR.get_host_address (substr(machine,instr(machine,'\')+1)) ip from v$session where type='USER' and username is not null order by sid;
Oracle provides the method to identifying and relating to the IP addresses and host names for Oracle clients and servers. The few methods are :
1.) UTL_INADDR
2.) SYS_CONTEXT
3.) V$INSTANCE
4.) V$SESSION
1.) UTL_INADDR : The UTL_INADDR package provides a PL/SQL procedures to support internet addressing. It provides an API to retrieve host names and IP addresses of local and remote hosts.The utl_inaddr like the two function :
1.) get_host_address and 2.) get_host_name.
Now we check the description of UTL_INADDR
SQL> desc UTL_INADDR
FUNCTION GET_HOST_ADDRESS RETURNS VARCHAR2
Argument Name Type In/Out Default?
----------------- ------------ -------- -------------
HOST VARCHAR2 IN DEFAULT
FUNCTION GET_HOST_NAME RETURNS VARCHAR2
Argument Name Type In/Out Default?
---------------- --------------- -------- ------------
IP VARCHAR2 IN DEFAULT
I.) Get_host_address: The get_host_address function like the argument name "HOST" , data types "varchar2" and by default NULL. The get_host_address get local IP address and remote host given its IP address.
II.) Get_host_name: The get_host_name function like the argument name "IP" , data types "varchar2" and by default NULL. The get_host_name get local host name and remote host given its name.
Let see some example :
The GET_HOST_ADDRESS function returns the IP address of the specified host name
SQL>select UTL_INADDR.get_host_address('TECH-284') from dual;
UTL_INADDR.GET_HOST_ADDRESS('TECH-284')
-----------------------------------------------------------
192.100.0.85
The GET_HOST_NAME function returns the host name of the specified IP address.
SQL> SELECT UTL_INADDR.get_host_name('192.168.52.127') FROM dual;
UTL_INADDR.GET_HOST_NAME('192.168.52.127')
----------------------------------------------------------
tech-199
The host name of the database server is returned if the specified IP address is NULL or omitted.
2.) SYS_CONTEXT : Oracle has a very useful built-in function called SYS_CONTEXT. The SYS_CONTEXT function is able to return the following host and IP address information for the current session.SYS_CONTENT has the following options as
TERMINAL - An operating system identifier for the current session. This is often the client machine name.
HOST - The host name of the client machine.
IP_ADDRESS - The IP address of the client machine.
SERVER_HOST - The host name of the server running the database instance.
What makes this function more interesting is the fact that Oracle provides a built-in namespace called USERENV with predefined parameters, which describes the current session.
The syntax of this function goes like this:
SYS_CONTEXT ( 'namespace' , 'parameter' [, length] )
Let see some example :
SQL> SELECT SYS_CONTEXT('USERENV','TERMINAL') FROM dual;
SYS_CONTEXT('USERENV','TERMINAL')
---------------------------------------------------
TECH-199
SQL> SELECT SYS_CONTEXT('USERENV','HOST') FROM dual;
SYS_CONTEXT('USERENV','HOST')
------------------------------------------
TECH\TECH-199
SQL> SELECT SYS_CONTEXT('USERENV','IP_ADDRESS') FROM dual;
SYS_CONTEXT('USERENV','IP_ADDRESS')
--------------------------------------------------
192.100.0.112
SQL> SELECT SYS_CONTEXT('USERENV','SERVER_HOST') FROM dual;
SYS_CONTEXT('USERENV','SERVER_HOST')
-----------------------------------------------------
tech-199
For more about sys_context check the below link .
http://download.oracle.com/docs/cd/B14117_01/server.101/b10759/functions150.htm
http://www.adp-gmbh.ch/ora/sql/sys_context.html
3.) V$INSTANCE : The host_name column of the V$INSTANCE view contains the host name of the server running the instance.
SQL> SELECT host_name FROM v$instance;HOST_NAME
-----------------
TECH-199
4.) V$SESSION : V$SESSION displays session host information for each current session. The column such as terminal and machine give the following details.
TERMINAL: The operating system terminal name for the client.This is often set to the client machine name.
MACHINE :The operating system name for the client machine.This may include the domain name if present.
SQL> SELECT terminal, machine FROM v$session WHERE username = 'HR';
TERMINAL MACHINE
------------- --------------------
TECH-199 TECH\TECH-199
Enjoy :-)
No comments:
Post a Comment