linux - 在 ORACLE SQL 中更改机器名称

标签 linux oracle ubuntu jdbc

我是 SQL 开发的新手。在工作中尝试访问远程数据库时,我经常无法访问,因为我的机器名称很奇怪。我希望它复制我的计算机名称,但它看起来像这样:

select OSUSER, MACHINE from v$session where username = 'user1'

OSUSER      MACHINE

myOsName    jdbcclient
运行 hostname 或 hostnamectl 会显示我的电脑的正确名称,即“Grynek-pc”。有没有办法更改机器名称?
操作系统:Ubuntu 19.04,程序:SQL Developer

最佳答案

您在 V$SESSION 中看到的属性与您可以使用默认上下文 ( SYS_CONTEXT ) 恢复的相同。在这种情况下,您有两个感兴趣的领域:

  • MACHINE 操作系统机器名称。
  • TERMINAL 操作系统终端名称。

  • 一个例子:
    1.我使用 Toad 从我的笔记本电脑访问
    SQL> select username , osuser ,  machine,terminal , program from v$session where 
         username = 'MY_DB_USER' and upper(osuser) = 'MY_OS_USER' ;
    
    USERNAME                       OSUSER                         MACHINE                        TERMINAL                       PROGRAM
    ------------------------------ ------------------------------ ------------------------------ ------------------------------ --------------------
    MY_DB_USER                     MY_OS_USER                     DOMAIN\xxxxxxxxxxxxxx          xxxxxxxxxxxx                Toad.exe
    
    在这种情况下 MACHINE正在给我带有域窗口信息的主机名称,同时终端只给我没有域信息的终端名称。在程序栏中,我可以看到我的 Toad 软件。
    2.我用sqlplus本地连接
    SQL> host whoami
    ftpcpl
    
    SQL> select username , osuser ,  machine,terminal , program from v$session where username = 'SYS' and osuser = 'ftpcpl' ;
    
    USERNAME                       OSUSER                         MACHINE                        TERMINAL                       PROGRAM
    ------------------------------ ------------------------------ ------------------------------ ------------------------------ --------------------
    SYS                            ftpcpl                         my_database_server_hostname    pts/1                          sqlplus@xxxxxx
    
    在我的本地连接中,终端是我的tty linux终端 session ,机器是本地数据库主机名。
    但是,通常当您使用 Weblogic、Websphere 或 Tomcat 等中间件软件时,Oracle v$session程序栏显示“JDBC Thin Client”,终端栏显示“未知”。追溯此连接来自何处的方法是查看 Oracle SQL*Net 监听器日志。如果您使用的是瘦 jdbc 驱动程序,通常不会看到比使用厚 (oci8) 驱动程序多的信息
    回答您的问题,不,您不能更改 V$SESSION 中的终端或机器名称,这些是 session 本身的继承属性。但是,您可以使用 DBMS_SESSION 将 CONTEXT LEVEL 信息应用于您的 session 。
    检查这篇好文章:
    https://oracle-base.com/articles/misc/dbms_session

    关于linux - 在 ORACLE SQL 中更改机器名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63353195/

    相关文章:

    oracle - 如何在 Oracle 中找到不同的 b/w TIMESTAMP 格式值?

    c - 如何在 Ubuntu 中查找默认代理设置

    linux - makefile 中的 $< 和 $^ 有什么区别?

    linux - 在 rc.local 之前启动时运行命令

    oracle - 子查询中的公用表表达式

    c# - 与 Oracle 数据库连接失败

    python - Selenium 发送 key 在 Ubuntu 上无法使用/

    linux - 在 .desktop 文件中启用多尺寸图标支持

    sql - postgreSQL中执行查询的时间

    c++ - 重载 'ref(Select::Expressions::Code&)' 的调用在 C++11 中不明确