2

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

具体来说,我想了解这些是什么:

Home
主机名
端口
SID
服务名称

网络别名
连接标识符

我的基本理解是 hostname 是它所在的 pooter,但这与 home 不同吗?端口是 TCP 端口,默认为 1521 - 这似乎很清楚。

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

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

很抱歉成为这样的菜鸟,但我初步寻找答案仍然让我很困惑。

谢谢!

4

2 回答 2

1

如果您正在使用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_DATA中,您可以使用SERVICE_NAME(这是向侦听器注册的实例的标识符)或SID(这是数据库标识符)。

简而言之:

  • SERVICE_NAME是实例的标识符:Oracle您将连接到的正在运行的可执行文件
  • SID是数据库的标识符:存储数据的一组文件。

一个数据库可以被多个Oracle实例使用。

有疑问时使用SERVICE_NAME

在这种情况下,连接如下:

sqlplus scott/tiger@XE
于 2009-06-09T14:13:10.860 回答
1
home:ORACLE_HOME,环境变量,指向位置
Oracle 二进制文件(实例从服务器或客户端运行的任何位置)
从客户端运行)
主机名:服务器的名称
端口:Listener 监听 Oracle 连接的端口
SID:**S**服务**ID**entifier。数据库的名称。这是
侦听器将公开的标识符之一
服务名称:侦听器可能公开的替代标识符

在现有的已配置站点上,查找这些详细信息的最简单方法是从客户端(或服务器)上的 tnsnames.ora 文件中连接到数据库。查看 $ORACLE(下划线)HOME/network/admin。使用 set (Windows) 或 env (Unix) 命令查找 ORACLE(下划线)HOME。tnsnames.ora 也可能位于变量 $TNS_ADMIN 指向的位置。

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

lsnrctl 状态

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

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

通常每台主机会有一个监听器,因此每台主机有一个端口(可能有更多但不常见)

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

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

SID 可以通过(取决于版本)找到

从 v$database 中选择 db_unique_name
   或者
从 v$database 中选择 db_name

或通过查看文件 $ORACLE_HOME/dbs/init(SID NAME).ora 或通过执行

ps -ef | grep pmon

并注意进程名称的最后一部分,例如 ora(underscore)pmon(underscore)SID

于 2009-06-10T07:12:16.923 回答