Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle DBMS_应用程序_INFO.SET_客户端_INFO不工作_Oracle_Oracle11g - Fatal编程技术网

Oracle DBMS_应用程序_INFO.SET_客户端_INFO不工作

Oracle DBMS_应用程序_INFO.SET_客户端_INFO不工作,oracle,oracle11g,Oracle,Oracle11g,我需要设置client_info值以区分不同的客户端 这些是我正在运行以测试的脚本 步骤1:系统模式 ALTER SYSTEM FLUSH SHARED_POOL; ALTER SYSTEM FLUSH BUFFER_CACHE; select * from ( select a.SQL_ID ,a.SQL_FULLTEXT ,to_char( a.LAST_ACTIVE_TIME,'DD-MON-Y

我需要设置client_info值以区分不同的客户端

这些是我正在运行以测试的脚本

步骤1:系统模式

ALTER SYSTEM FLUSH SHARED_POOL;
ALTER SYSTEM FLUSH BUFFER_CACHE;
select
    *
from
    (
        select
           a.SQL_ID
          ,a.SQL_FULLTEXT
          ,to_char( a.LAST_ACTIVE_TIME,'DD-MON-YYYY HH24:MI:SS' )                                                                                as LAST_ACTIVE_TIME
          ,a.SERVICE
          ,b.SCHEMANAME
          ,b.CLIENT_INFO
          ,a.MODULE
          ,a.ACTION
        from
            GV$SQL a
        left outer join GV$SESSION b
        on
            (
                b.SQL_ID = a.SQL_ID
            )
        where
            a.EXECUTIONS != 0
    )
    c
where
    c.MODULE like '%CHECK%'
order by
    c.LAST_ACTIVE_TIME desc ;
ALTER SYSTEM FLUSH SHARED_POOL;
ALTER SYSTEM FLUSH BUFFER_CACHE;
SELECT
    a.SQL_ID
   ,a.CLIENT_INFO
   ,a.MODULE
   ,a.ACTION
   ,a.SCHEMANAME
   ,a.USERNAME
FROM
   V$SESSION a
WHERE
    a.MODULE = 'CHECK';
步骤2:人力资源模式

EXEC DBMS_APPLICATION_INFO.SET_CLIENT_INFO(UTL_INADDR.GET_HOST_NAME );
EXEC DBMS_APPLICATION_INFO.SET_MODULE( 'CHECK','select' );

select                                      
    a.FIRST_NAME || ' ' || LAST_NAME AS FULL_NAME
from                                        
    HR.EMPLOYEES a                                      
where                                       
    a.DEPARTMENT_ID = '40'
;
EXEC DBMS_APPLICATION_INFO.SET_CLIENT_INFO(UTL_INADDR.GET_HOST_NAME );
EXEC DBMS_APPLICATION_INFO.SET_MODULE( 'CHECK','select' );
步骤3:系统模式

ALTER SYSTEM FLUSH SHARED_POOL;
ALTER SYSTEM FLUSH BUFFER_CACHE;
select
    *
from
    (
        select
           a.SQL_ID
          ,a.SQL_FULLTEXT
          ,to_char( a.LAST_ACTIVE_TIME,'DD-MON-YYYY HH24:MI:SS' )                                                                                as LAST_ACTIVE_TIME
          ,a.SERVICE
          ,b.SCHEMANAME
          ,b.CLIENT_INFO
          ,a.MODULE
          ,a.ACTION
        from
            GV$SQL a
        left outer join GV$SESSION b
        on
            (
                b.SQL_ID = a.SQL_ID
            )
        where
            a.EXECUTIONS != 0
    )
    c
where
    c.MODULE like '%CHECK%'
order by
    c.LAST_ACTIVE_TIME desc ;
ALTER SYSTEM FLUSH SHARED_POOL;
ALTER SYSTEM FLUSH BUFFER_CACHE;
SELECT
    a.SQL_ID
   ,a.CLIENT_INFO
   ,a.MODULE
   ,a.ACTION
   ,a.SCHEMANAME
   ,a.USERNAME
FROM
   V$SESSION a
WHERE
    a.MODULE = 'CHECK';
模块和操作列正在获取值,但客户端信息没有显示任何内容

我有什么遗漏吗

更新: 我也试过,但运气不好

EXEC DBMS_APPLICATION_INFO.SET_CLIENT_INFO( SYS_CONTEXT('userenv','ip_address') );
EXEC DBMS_APPLICATION_INFO.SET_CLIENT_INFO( '10.10.10.10' );

SET\u CLIENT\u INFO
与会话相关,而不是与单个SQL语句相关

这样做

步骤1:系统模式

ALTER SYSTEM FLUSH SHARED_POOL;
ALTER SYSTEM FLUSH BUFFER_CACHE;
select
    *
from
    (
        select
           a.SQL_ID
          ,a.SQL_FULLTEXT
          ,to_char( a.LAST_ACTIVE_TIME,'DD-MON-YYYY HH24:MI:SS' )                                                                                as LAST_ACTIVE_TIME
          ,a.SERVICE
          ,b.SCHEMANAME
          ,b.CLIENT_INFO
          ,a.MODULE
          ,a.ACTION
        from
            GV$SQL a
        left outer join GV$SESSION b
        on
            (
                b.SQL_ID = a.SQL_ID
            )
        where
            a.EXECUTIONS != 0
    )
    c
where
    c.MODULE like '%CHECK%'
order by
    c.LAST_ACTIVE_TIME desc ;
ALTER SYSTEM FLUSH SHARED_POOL;
ALTER SYSTEM FLUSH BUFFER_CACHE;
SELECT
    a.SQL_ID
   ,a.CLIENT_INFO
   ,a.MODULE
   ,a.ACTION
   ,a.SCHEMANAME
   ,a.USERNAME
FROM
   V$SESSION a
WHERE
    a.MODULE = 'CHECK';
步骤2:人力资源模式

EXEC DBMS_APPLICATION_INFO.SET_CLIENT_INFO(UTL_INADDR.GET_HOST_NAME );
EXEC DBMS_APPLICATION_INFO.SET_MODULE( 'CHECK','select' );

select                                      
    a.FIRST_NAME || ' ' || LAST_NAME AS FULL_NAME
from                                        
    HR.EMPLOYEES a                                      
where                                       
    a.DEPARTMENT_ID = '40'
;
EXEC DBMS_APPLICATION_INFO.SET_CLIENT_INFO(UTL_INADDR.GET_HOST_NAME );
EXEC DBMS_APPLICATION_INFO.SET_MODULE( 'CHECK','select' );
步骤3:系统模式

ALTER SYSTEM FLUSH SHARED_POOL;
ALTER SYSTEM FLUSH BUFFER_CACHE;
select
    *
from
    (
        select
           a.SQL_ID
          ,a.SQL_FULLTEXT
          ,to_char( a.LAST_ACTIVE_TIME,'DD-MON-YYYY HH24:MI:SS' )                                                                                as LAST_ACTIVE_TIME
          ,a.SERVICE
          ,b.SCHEMANAME
          ,b.CLIENT_INFO
          ,a.MODULE
          ,a.ACTION
        from
            GV$SQL a
        left outer join GV$SESSION b
        on
            (
                b.SQL_ID = a.SQL_ID
            )
        where
            a.EXECUTIONS != 0
    )
    c
where
    c.MODULE like '%CHECK%'
order by
    c.LAST_ACTIVE_TIME desc ;
ALTER SYSTEM FLUSH SHARED_POOL;
ALTER SYSTEM FLUSH BUFFER_CACHE;
SELECT
    a.SQL_ID
   ,a.CLIENT_INFO
   ,a.MODULE
   ,a.ACTION
   ,a.SCHEMANAME
   ,a.USERNAME
FROM
   V$SESSION a
WHERE
    a.MODULE = 'CHECK';

您是否为“步骤3”打开了新连接?@WernfriedDomscheit No。这些操作是在SQL developer上的两个并行会话中完成的。您是否从中获得了任何信息:
SELECT*from V$SESSION,其中CLIENT_INFO不为NULL
只需查看
V$SESSION,其中客户端信息不为空
。不要混淆SQL和PL/SQL。
SET\u CLIENT\u INFO
与会话相关,而不是与单个SQL语句相关。你想达到什么目标?尝试
SELECT*FROM V$SESSION,其中USERNAME={用于连接的用户}