我是 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
) 恢复的相同。在这种情况下,您有两个感兴趣的领域:
一个例子:
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/