Oracle数据库连接-我需要填写哪些字段?

Oracle数据库连接-我需要填写哪些字段?,oracle,connection,service-name,Oracle,Connection,Service Name,我习惯于使用SQL Server,现在面临着连接到Oracle的问题。我可以得到一些完全明确的描述,说明我需要填写的所有字段是什么吗 具体而言,我想了解以下内容: 主页 主机名 端口 SID 服务名称 网络别名 连接标识符 我的基本理解是主机名是它所在的位置,但这和家里的不同吗? 端口是TCP端口,它默认为1521-这似乎很清楚 我只需要提供SID或服务名称?有什么区别?为什么是一个或另一个 如果我有一个TNS文件,网络别名和连接标识符是什么?如果不使用TNS文件,这些字段是否与我的其他字段相同

我习惯于使用SQL Server,现在面临着连接到Oracle的问题。我可以得到一些完全明确的描述,说明我需要填写的所有字段是什么吗

具体而言,我想了解以下内容:

主页
主机名
端口
SID
服务名称

网络别名
连接标识符

我的基本理解是主机名是它所在的位置,但这和家里的不同吗? 端口是TCP端口,它默认为1521-这似乎很清楚

我只需要提供SID或服务名称?有什么区别?为什么是一个或另一个

如果我有一个TNS文件,网络别名和连接标识符是什么?如果不使用TNS文件,这些字段是否与我的其他字段相同

很抱歉,我是这样一个笨蛋,但我初步寻找答案的过程仍然让我很困惑


谢谢

如果您使用的是
Oracle 10g
或更高版本,请使用
Easy Connect
语法:

//servername/dbname
,例如:

sqlplus scott/tiger@//servername/dbname
如果需要使用
TNS
,下面是
TNSNAMES.ORA
的示例:

XE = 
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.0.1)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = XE)
    )
  )
CONNECT\u DATA
中,您可以使用
SERVICE\u NAME
(这是向侦听器注册的实例的标识符)或
SID
(这是数据库标识符)

用几句话来说:

  • SERVICE\u NAME
    是实例的标识符:您将连接到的正在运行的
    Oracle
    可执行文件
  • SID
    是数据库的标识符:存储数据的一组文件
一个数据库可由多个Oracle实例使用

如有疑问,请使用
服务名称

在这种情况下,按如下方式连接:

sqlplus scott/tiger@XE
Home:ORACLE_Home,一个指向位置的环境变量 Oracle二进制文件(位置实例在服务器或客户端上运行 从运行(在客户端上) 主机名:服务器的名称 端口:侦听器侦听Oracle连接的端口 SID:*S**service**ID**entifier。数据库的名称。这是 侦听器将公开的标识符之一 服务名称:侦听器可能公开的备用标识符 在已配置的现有站点上,查找这些详细信息的最简单方法是从客户端(或服务器)上的tnsnames.ora文件,从该文件可以连接到数据库。在$ORACLE(下划线)HOME/network/admin下查看。使用set(Windows)或env(Unix)命令查找ORACLE(下划线)主页。tnsnames.ora也可能位于变量$TNS_ADMIN指向的位置

如果找不到tnsnames.ora,并且您有权访问服务器,请尝试以下命令,通常使用用户Oracle

lsnrctl status lsnrctl状态 lsnrctl是侦听器。Status将显示它知道的SID和服务名称(以及一些其他详细信息)

或者在$ORACLE_HOME/network/admin下或在env变量$TNS_admin指向的位置找到listener.ora和sqlnet.ora文件

一般来说,每个主机将有一个侦听器,因此每个主机有一个端口(可能会有更多,但并不常见)

要连接到Oracle,必须将客户端指向由主机名/端口组合指定的侦听器位置,并告诉它要连接哪个SID或服务

DCookie关于SID和服务名的评论基本上是正确的

可以使用找到SID(取决于版本)

从v$数据库中选择db_unique_名称 或 从v$数据库中选择db_名称 或者通过查找文件$ORACLE\u HOME/dbs/init(SID NAME).ora,或者

ps -ef | grep pmon ps-ef | grep pmon
注意进程名称的最后一部分,例如ora(下划线)pmon(下划线)SID

您是否正在尝试从SQL*Plus、.NET、Java?我对SERVICE_NAME vs.SID的理解:SERVICE NAME是用8i引入的(基本上代替了SID),是实例向TNS注册的值(与SERVICE_NAME初始化参数相对应)。它比SID更灵活(您可以通过更改服务名称轻松地将一个实例与另一个实例交换,对任何试图连接的客户端都是透明的),并且允许域命名。更改服务名称比更改SID容易得多,后者需要客户端更改tnsnames.ora select db_unique_name from v$database or select db_name from v$database ps -ef | grep pmon