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