如何获取 Oracle 数据库的 SID、服务名称和端口?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/50750812/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-09 02:16:31  来源:igfitidea点击:

How to get SID, Service Name and Port for Oracle database?

oracledatabase-connectionconnection-stringtnsping

提问by bobetko

I have oracle database running on address xx.xx.xx.xx I know login, password and initial catalog

我在地址 xx.xx.xx.xx 上运行 oracle 数据库我知道登录名、密码和初始目录

I am trying to set up new connection in Oracle SQL Developer so I can access this database to take a look at it. In order to do that, I need to know SID or Service Name.

我正在尝试在 Oracle SQL Developer 中设置新连接,以便我可以访问该数据库以查看它。为此,我需要知道 SID 或服务名称。

Long time ago I would run TNSPing.exe to get service name, but this program is not available any more. Oracle is not distributing it.

很久以前,我会运行 TNSPing.exe 来获取服务名称,但该程序不再可用。Oracle 不会分发它。

Is there a way to access this info somewhere?

有没有办法在某处访问这些信息?

Thanks

谢谢

回答by Connor McDonald

If you have an OS login to the database server you can run:

如果您有操作系统登录到数据库服务器,您可以运行:

lsnrctl status

lsnrctl 状态

to get details of what the listener is offering out. Or you can query the database itself if you can logon locally

获取听众提供的内容的详细信息。或者如果可以本地登录也可以查询数据库本身

SQL> select name from dba_services;

NAME
---------------------------------------
SYS$BACKGROUND
SYS$USERS
db122XDB
db122

But if you have no access other than the IP address, then you'll need to ask someone (DBA) for the service name. As Alex said, tnsping doesnt "reveal" anything, it simply tries to connect to a service name that you already have knowledge of.

但是,如果您除了 IP 地址之外没有其他访问权限,那么您需要向某人 (DBA) 询问服务名称。正如亚历克斯所说,tnsping 不会“显示”任何东西,它只是尝试连接到您已经知道的服务名称。

回答by PhamNguyenDucDuong

'Cause you've said that you have "I know login, password and initial catalog". Then I said:

因为你说过你有“我知道登录名、密码和初始目录”。然后我说:

Get Oracle SID: $ ps -ef | grep pmon; (or $ cat /etc/oratab- format: ORACLE_SID:ORACLE_HOME)

获取 Oracle SID: $ ps -ef | grep pmon; (或$ cat /etc/oratab-格式:ORACLE_SID:ORACLE_HOME

Get Service Name: $ cat $ORACLE_HOME/network/admin/tnsnames.ora. With tnsnames.ora format, you can cat SERVICE_NAME

获取服务名称:$ cat $ORACLE_HOME/network/admin/tnsnames.ora. 用tnsnames.ora格式,可以cat SERVICE_NAME

net_service_name= 
 (DESCRIPTION= 
   (ADDRESS=(protocol_address_information))
   (CONNECT_DATA= 
     (SERVICE_NAME=service_name))) 

In order to execute tnsping, you can install Oracle Client appropriate to your machine.

为了执行 tnsping,您可以安装适合您机器的 Oracle 客户端。

回答by Dmitry Demin

If you have access to the server, then you can determine how many processes the listener is running, what IP addresses and ports it is listening to. An example for Linux.

如果您有权访问服务器,则可以确定侦听器正在运行的进程数、侦听的 IP 地址和端口。Linux 的一个例子。

[oracle@krw-ssps-db-02 ~]$ ps -ef|grep tnslsnr
oracle    6090     1  0  2015 ?        01:11:39 /home/oracle/app/oracle/product/11.2.0/dbhome_1/bin/tnslsnr LISTENER -inherit
oracle    6712  6653  0 05:59 pts/1    00:00:00 grep tnslsnr
oracle   17064     1  0  2017 ?        00:19:15 /home/oracle/app/oracle/product/11.2.0/dbhome_1/bin/tnslsnr LISTENER_SSPS -inherit

If the variable $TNS_ADMINis defined, it will override $ORACLE_HOME/network/admin

如果$TNS_ADMIN定义了变量,它将覆盖$ORACLE_HOME/network/admin

[oracle@krw-ssps-db-02 ~]$ env |grep ORA
ORACLE_UNQNAME=ssps_db2
ORACLE_SID=ssps
ORACLE_BASE=/home/oracle/database
ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_1
[oracle@krw-ssps-db-02 ~]$ env |grep TNS
TNS_ADMIN=/home/oracle/app/oracle/product/11.2.0/dbhome_1/network/admin
[oracle@krw-ssps-db-02 ~]$

For a start you can make a SQL query

首先,您可以进行 SQL 查询

select * from v$listener_network;

LOCAL LISTENER  (ADDRESS=(PROTOCOL=TCP)(HOST=krw-ssps-db-02)(PORT=1521))
SERVICE NAME    ssps_db2
SERVICE NAME    ssps_db2


[oracle@krw-ssps-db-02 ~]$ ifconfig -a
eth0      Link encap:Ethernet  HWaddr 00:50:56:8F:78:59
          inet addr:10.*.*.244  Bcast:10.*.*.255  Mask:255.255.255.192
          ...

eth0:1    Link encap:Ethernet  HWaddr 00:50:56:8F:78:59
          inet addr:10.*.*.242  Bcast:10.*.*.255  Mask:255.255.255.192
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          .....


[oracle@krw-ssps-db-02 ~]$ lsnrctl status LISTENER

LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 08-JUN-2018 06:00:48

Copyright (c) 1991, 2013, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.4.0 - Production
Start Date                04-DEC-2015 08:48:38
Uptime                    419 days 18 hr. 44 min. 17 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /home/oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
Listener Log File         /home/oracle/database/diag/tnslsnr/krw-ssps-db-02/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.*.*.244)(PORT=1521)))
Services Summary...
Service "ssps" has 1 instance(s).
  Instance "ssps", status UNKNOWN, has 1 handler(s) for this service...
Service "sspsXDB" has 1 instance(s).
  Instance "ssps", status READY, has 1 handler(s) for this service...
Service "ssps_db2" has 1 instance(s).
  Instance "ssps", status READY, has 1 handler(s) for this service...
The command completed successfully
[oracle@krw-ssps-db-02 ~]$ lsnrctl status LISTENER_SSPS

LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 08-JUN-2018 06:01:12

Copyright (c) 1991, 2013, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1525)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER_SSPS
Version                   TNSLSNR for Linux: Version 11.2.0.4.0 - Production
Start Date                11-DEC-2017 06:37:30
Uptime                    178 days 23 hr. 23 min. 42 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /home/oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
Listener Log File         /home/oracle/database/diag/tnslsnr/krw-ssps-db-02/listener_ssps/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1525)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.*.*.242)(PORT=1521)))
Services Summary...
Service "asut" has 1 instance(s).
  Instance "asut", status UNKNOWN, has 1 handler(s) for this service...
Service "ssps" has 1 instance(s).
  Instance "ssps", status UNKNOWN, has 1 handler(s) for this service...
Service "tch7" has 1 instance(s).
  Instance "tch7", status UNKNOWN, has 1 handler(s) for this service...
Service "tch8" has 1 instance(s).
  Instance "tch8", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
[oracle@krw-ssps-db-02 ~]$ lsnrctl services LISTENER_SSPS

LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 08-JUN-2018 06:02:24

Copyright (c) 1991, 2013, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1525)))
Services Summary...
Service "asut" has 1 instance(s).
  Instance "asut", status UNKNOWN, has 1 handler(s) for this service...
    Handler(s):
      "DEDICATED" established:102970 refused:0
         LOCAL SERVER
Service "ssps" has 1 instance(s).
  Instance "ssps", status UNKNOWN, has 1 handler(s) for this service...
    Handler(s):
      "DEDICATED" established:222841 refused:0
         LOCAL SERVER
Service "tch7" has 1 instance(s).
  Instance "tch7", status UNKNOWN, has 1 handler(s) for this service...
    Handler(s):
      "DEDICATED" established:107112 refused:0
         LOCAL SERVER
Service "tch8" has 1 instance(s).
  Instance "tch8", status UNKNOWN, has 1 handler(s) for this service...
    Handler(s):
      "DEDICATED" established:102970 refused:0
         LOCAL SERVER
The command completed successfully
[oracle@krw-ssps-db-02 ~]$ lsnrctl services LISTENER

LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 08-JUN-2018 06:04:10

Copyright (c) 1991, 2013, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
Services Summary...
Service "ssps" has 1 instance(s).
  Instance "ssps", status UNKNOWN, has 1 handler(s) for this service...
    Handler(s):
      "DEDICATED" established:47 refused:8
         LOCAL SERVER
Service "sspsXDB" has 1 instance(s).
  Instance "ssps", status READY, has 1 handler(s) for this service...
    Handler(s):
      "D000" established:0 refused:0 current:0 max:1022 state:ready
         DISPATCHER <machine: krw-ssps-db-02, pid: 16980>
         (ADDRESS=(PROTOCOL=tcp)(HOST=krw-ssps-db-02)(PORT=53933))
Service "ssps_db2" has 1 instance(s).
  Instance "ssps", status READY, has 1 handler(s) for this service...
    Handler(s):
      "DEDICATED" established:103158 refused:0 state:ready
         LOCAL SERVER
The command completed successfully

Example of a listener.ora

一个监听器的例子.ora

[oracle@krw-ssps-db-02 admin]$  more listener.ora

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.*.*.244)(PORT = 1521))
    )
  )

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
        (GLOBAL_DBNAME = ssps)
        (ORACLE_HOME = /home/oracle/app/oracle/product/11.2.0/dbhome_1)
        (SID_NAME = ssps)
    )
  )

LISTENER_SSPS =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1525))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.*.*.242)(PORT = 1521))
    )
  )

SID_LIST_LISTENER_SSPS =
  (SID_LIST =
    (SID_DESC =
        (GLOBAL_DBNAME = ssps)
        (ORACLE_HOME = /home/oracle/app/oracle/product/11.2.0/dbhome_1)
        (SID_NAME = ssps)
    )
     (SID_DESC=
        (SID_NAME=tch8)
        (ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_1)
        (PROGRAM=dg4msql)
          )
    (SID_DESC=
         (SID_NAME=tch7)
         (ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_1)
         (PROGRAM=dg4msql)
         )
     (SID_DESC=
        (SID_NAME=asut)
        (ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_1)
        (PROGRAM=dg4msql)
       )
  )


ADR_BASE_LISTENER = /home/oracle/database

Example the name of the service ssps_db3is incorrect. The utility tnsping diagnoses only the answer of the listener to the address and port. The correctness of the service name is not checked.

示例服务名称ssps_db3不正确。实用程序 tnsping 仅诊断侦听器对地址和端口的回答。不检查服务名称的正确性。

C:\oracle\ora92\network\admin>tnsping ssps_db 3

TNS Ping Utility for 32-bit Windows: Version 9.2.0.1.0 - Production on 09-JUN-2018 11:43:29

Copyright (c) 1997 Oracle Corporation.  All rights reserved.

Used parameter files:
C:\oracle\ora92\network\admin\sqlnet.ora


Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.*.*.244)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ssps_db3)))
OK (20 msec)
OK (0 msec)
OK (0 msec)

C:\oracle\ora92\network\admin>sqlplus system@ssps_db

SQL*Plus: Release 9.2.0.1.0 - Production on Sat Jun 9 11:43:38 2018

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

Enter password:
ERROR:
ORA-12514: TNS:listener could not resolve SERVICE_NAME given in connect
descriptor

Log unsuccessful connection in the log file listener.log

在日志文件 listener.log 中记录不成功的连接

09-JUN-2018 11:43:29 * ping * 0
09-JUN-2018 11:43:29 * ping * 0
09-JUN-2018 11:43:29 * ping * 0
Sat Jun 09 11:43:45 2018
09-JUN-2018 11:43:45 * (CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=ssps_db3)(CID=(PROGRAM=C:\oracle\ora92\bin\sqlplus.EXE)(HOST=DEMIN)(USER=DeminDV))) * (ADDRESS=(PROTOCOL=tcp)(HOST=10.*.*.45)(PORT=61522)) * establish * ssps_db3 * 12514
TNS-12514: TNS:listener does not currently know of service requested in connect descriptor

Example the name of the service ssps_db2is correct C:\oracle\ora92\network\admin>tnsping ssps_db 3

示例服务名称ssps_db2正确 C:\oracle\ora92\network\admin>tnsping ssps_db 3

TNS Ping Utility for 32-bit Windows: Version 9.2.0.1.0 - Production on 09-JUN-2018 11:45:18

Copyright (c) 1997 Oracle Corporation.  All rights reserved.

Used parameter files:
C:\oracle\ora92\network\admin\sqlnet.ora


Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.89.251.244)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ssps_db2)))
OK (0 msec)
OK (10 msec)
OK (0 msec)

C:\oracle\ora92\network\admin>sqlplus system@ssps_db

SQL*Plus: Release 9.2.0.1.0 - Production on Sat Jun 9 11:45:23 2018

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

Enter password:

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

[krw-ssps-db-02.krw.rzd] system@ssps>

Log successful connection in the log file listener.log

在日志文件 listener.log 中记录连接成功

09-JUN-2018 11:45:18 * ping * 0
09-JUN-2018 11:45:18 * ping * 0
09-JUN-2018 11:45:18 * ping * 0
Sat Jun 09 11:45:28 2018
09-JUN-2018 11:45:28 * (CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=ssps_db2)(CID=(PROGRAM=C:\oracle\ora92\bin\sqlplus.EXE)(HOST=DEMIN)(USER=DeminDV))) * (ADDRESS=(PROTOCOL=tcp)(HOST=10.*.*.45)(PORT=61529)) * establish * ssps_db2 * 0