ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

【DB笔试面试500】在Oracle中,如何获取IP地址?

2021-04-15 15:06:01  阅读:252  来源: 互联网

标签:CURRENT NLS NAME DB SYS USERENV CONTEXT IP地址 Oracle


watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

♣          题目         部分

在Oracle中,如何获取IP地址?


     
♣          答案部分          


若是获取服务器IP地址,则使用UTL_INADDR.GET_HOST_ADDRESS。若是获取客户端IP地址则使用SYS_CONTEXT('USERENV','IP_ADDRESS')。


SYS_CONTEXT函数是Oracle提供的一个获取环境上下文信息的预定义函数。该函数用来返回一个指定NAMESPACE下的PARAMETER值。该函数可以在SQL和PL/SQL语言中使用。

 1SELECT SYS_CONTEXT('USERENV', 'ACTION') ACTION,
 2       SYS_CONTEXT('USERENV', 'AUDITED_CURSORID') AUDITED_CURSORID,
 3       SYS_CONTEXT('USERENV', 'AUTHENTICATED_IDENTITY') AUTHENTICATED_IDENTITY,
 4       SYS_CONTEXT('USERENV', 'AUTHENTICATION_TYPE') AUTHENTICATION_TYPE,
 5       SYS_CONTEXT('USERENV', 'AUTHENTICATION_DATA') AUTHENTICATION_DATA,
 6       SYS_CONTEXT('USERENV', 'AUTHENTICATION_METHOD') AUTHENTICATION_METHOD,
 7       SYS_CONTEXT('USERENV', 'BG_JOB_ID') BG_JOB_ID,
 8       SYS_CONTEXT('USERENV', 'CLIENT_IDENTIFIER') CLIENT_IDENTIFIER,
 9       SYS_CONTEXT('USERENV', 'CLIENT_INFO') CLIENT_INFO, --USERENV('CLIENT_INFO')
10       SYS_CONTEXT('USERENV', 'CURRENT_BIND') CURRENT_BIND,
11       SYS_CONTEXT('USERENV', 'CURRENT_EDITION_ID') CURRENT_EDITION_ID,
12       SYS_CONTEXT('USERENV', 'CURRENT_EDITION_NAME') CURRENT_EDITION_NAME,
13       SYS_CONTEXT('USERENV', 'CURRENT_SCHEMA') CURRENT_SCHEMA,
14       SYS_CONTEXT('USERENV', 'CURRENT_SCHEMAID') CURRENT_SCHEMAID,
15       SYS_CONTEXT('USERENV', 'CURRENT_SQL') CURRENT_SQL,
16       SYS_CONTEXT('USERENV', 'CURRENT_SQLN') CURRENT_SQLN,
17       SYS_CONTEXT('USERENV', 'CURRENT_SQL_LENGTH') CURRENT_SQL_LENGTH,
18       SYS_CONTEXT('USERENV', 'CURRENT_USER') CURRENT_USER,
19       SYS_CONTEXT('USERENV', 'CURRENT_USERID') CURRENT_USERID,
20       SYS_CONTEXT('USERENV', 'DATABASE_ROLE') DATABASE_ROLE,
21       SYS_CONTEXT('USERENV', 'DB_DOMAIN') DB_DOMAIN,
22       SYS_CONTEXT('USERENV', 'DB_NAME') DB_NAME,
23       SYS_CONTEXT('USERENV', 'DB_UNIQUE_NAME') DB_UNIQUE_NAME,
24       SYS_CONTEXT('USERENV', 'DBLINK_INFO') DBLINK_INFO,
25       SYS_CONTEXT('USERENV', 'ENTRYID') ENTRYID, --USERENV('ENTRYID')
26       SYS_CONTEXT('USERENV', 'ENTERPRISE_IDENTITY') ENTERPRISE_IDENTITY,
27       SYS_CONTEXT('USERENV', 'EXTERNAL_NAME') EXTERNAL_NAME,
28       SYS_CONTEXT('USERENV', 'FG_JOB_ID') FG_JOB_ID,
29       SYS_CONTEXT('USERENV', 'GLOBAL_CONTEXT_MEMORY') GLOBAL_CONTEXT_MEMORY,
30       SYS_CONTEXT('USERENV', 'GLOBAL_UID') GLOBAL_UID,
31       SYS_CONTEXT('USERENV', 'HOST') HOST, -- USERENV('TERMINAL') 
32       SYS_CONTEXT('USERENV', 'IDENTIFICATION_TYPE') IDENTIFICATION_TYPE,
33       SYS_CONTEXT('USERENV', 'INSTANCE') INSTANCE, --USERENV('INSTANCE')
34       SYS_CONTEXT('USERENV', 'INSTANCE_NAME') INSTANCE_NAME,
35       SYS_CONTEXT('USERENV', 'IP_ADDRESS') IP_ADDRESS, --ORA_CLIENT_IP_ADDRESS
36       SYS_CONTEXT('USERENV', 'ISDBA') ISDBA,  --USERENV('ISDBA')
37       SYS_CONTEXT('USERENV', 'LANG') LANG, --USERENV('LANG')
38       SYS_CONTEXT('USERENV', 'LANGUAGE') LANGUAGE, --USERENV('LANGUAGE'),
39       SYS_CONTEXT('USERENV', 'MODULE') MODULE,
40       SYS_CONTEXT('USERENV', 'NETWORK_PROTOCOL') NETWORK_PROTOCOL,
41       SYS_CONTEXT('USERENV', 'NLS_CALENDAR') NLS_CALENDAR,
42       SYS_CONTEXT('USERENV', 'NLS_CURRENCY') NLS_CURRENCY,
43       SYS_CONTEXT('USERENV', 'NLS_DATE_FORMAT') NLS_DATE_FORMAT,
44       SYS_CONTEXT('USERENV', 'NLS_DATE_LANGUAGE') NLS_DATE_LANGUAGE,
45       SYS_CONTEXT('USERENV', 'NLS_SORT') NLS_SORT,
46       SYS_CONTEXT('USERENV', 'NLS_TERRITORY') NLS_TERRITORY,
47       SYS_CONTEXT('USERENV', 'OS_USER') OS_USER,
48       SYS_CONTEXT('USERENV', 'POLICY_INVOKER') POLICY_INVOKER,
49       SYS_CONTEXT('USERENV', 'PROXY_ENTERPRISE_IDENTITY') PROXY_ENTERPRISE_IDENTITY,
50       SYS_CONTEXT('USERENV', 'PROXY_USER') PROXY_USER,
51       SYS_CONTEXT('USERENV', 'PROXY_USERID') PROXY_USERID,
52       SYS_CONTEXT('USERENV', 'SERVER_HOST') SERVER_HOST,
53       SYS_CONTEXT('USERENV', 'SERVICE_NAME') SERVICE_NAME,
54       SYS_CONTEXT('USERENV', 'SESSION_EDITION_ID') SESSION_EDITION_ID,
55       SYS_CONTEXT('USERENV', 'SESSION_EDITION_NAME') SESSION_EDITION_NAME,
56       SYS_CONTEXT('USERENV', 'SESSION_USER') SESSION_USER, --ORA_LOGIN_USER
57       SYS_CONTEXT('USERENV', 'SESSION_USERID') SESSION_USERID,
58       SYS_CONTEXT('USERENV', 'SESSIONID') SESSIONID, --  USERENV('SESSIONID') , V$SESSION.AUDSID
59       SYS_CONTEXT('USERENV', 'SID') SID,
60       SYS_CONTEXT('USERENV', 'STATEMENTID') STATEMENTID,
61       SYS_CONTEXT('USERENV', 'TERMINAL') TERMINAL   --USERENV('TERMINAL')
62  FROM DUAL;
     


USERENV函数用来返回当前的会话信息,常用的有如下信息:

1SELECT USERENV('CLIENT_INFO') CLIENT_INFO,
2       USERENV('LANGUAGE') 数据库字符集,
3       USERENV('ISDBA') 是否DBA角色,
4       USERENV('SESSIONID') 当前会话标识符,
5       USERENV('ENTRYID') 可审计的会话标识符,
6       USERENV('LANG') 会话语言名称的ISO简记,
7       USERENV('INSTANCE') 当前的实例,
8       USERENV('TERMINAL') 当前计算机名
9  FROM DUAL;
        

标签:CURRENT,NLS,NAME,DB,SYS,USERENV,CONTEXT,IP地址,Oracle
来源: https://blog.51cto.com/lhrbest/2708404

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有