无法从其他计算机连接oracle数据库
cannot connect oracle database from other computer
我有两台电脑,电脑A的IP(10.11.11.2)包含oracle数据库11g R2,电脑B的IP(10.11.11.18)。我搜索了很多并在 Tnsnames.ora 和 listener.ora 文件中做了一些更改,但无法连接。但是当我从客户端 tnsping 10.11.11.2 时,它给了我 OK 输出。这意味着可以从客户端访问数据库,但我无法使用 Toad 或 Sqldeveloper 连接数据库。
给出错误:
tns 目前不知道请求的服务
我的电脑 A (10.11.11.2) tnsname.ora 和 listener.ora 文件粘贴在下面:
Tnsnames.ora 文件
# tnsnames.ora Network Configuration File: D:\app\Mobilityusr\product.2.0\dbhome_1\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.
LISTENER_ORCL =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
ORACLR_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
(CONNECT_DATA =
(SID = CLRExtProc)
(PRESENTATION = RO)
)
)
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
listener.ora 文件
# listener.ora Network Configuration File: D:\app\Mobilityusr\product.2.0\dbhome_1\network\admin\listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = D:\app\Mobilityusr\product.2.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:D:\app\Mobilityusr\product.2.0\dbhome_1\bin\oraclr11.dll")
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.11.11.2)(PORT = 1521))
)
)
ADR_BASE_LISTENER = D:\app\Mobilityusr
我的电脑 B (10.11.11.18) tnsname.ora 和 listener.ora 文件粘贴在下面:
tnsnames.ora 文件
# tnsnames.ora Network Configuration File: D:\app\product.2.0\dbhome_1\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.
LISTENER_ORCL =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
ORACLR_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
(CONNECT_DATA =
(SID = CLRExtProc)
(PRESENTATION = RO)
)
)
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
listener.ora
# listener.ora Network Configuration File: D:\app\product.2.0\dbhome_1\network\admin\listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = D:\app\product.2.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:D:\app\product.2.0\dbhome_1\bin\oraclr11.dll")
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
)
ADR_BASE_LISTENER = D:\app
另附上计算机B到oracle数据库(安装在计算机A上)的tnsping图片:
还附上了错误图片
在 SQLDeveloper 中,选择服务名称而不是指定 SID。
经过大量研究,我解决了problem.And我也必须与您分享,以便任何遇到此问题的人都能轻松解决。
Listener.ora 文件用于监听请求。如果我们想从另一台计算机访问数据库,我们必须在 listener.ora 中添加两个条目(一个用于 SID,另一个用于机器 IP 地址)。
电脑A文件(listener.ora和tnsnames.ora)设置如下:
Listener.ora
# listener.ora Network Configuration File: D:\app\Mobilityusr\product.2.0\dbhome_1\network\admin\listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = D:\app\Mobilityusr\product.2.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:D:\app\Mobilityusr\product.2.0\dbhome_1\bin\oraclr11.dll")
)
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(ORACLE_HOME = D:\app\Mobilityusr\product.2.0\dbhome_1)
(SID_NAME = orcl)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.11.11.2)(PORT = 1521))
)
)
ADR_BASE_LISTENER = D:\app\Mobilityusr
SID_LIST_LISTENER 首先包含两个条目 SID_DESC 是默认条目,我们必须添加第二个 SID_DESC 以识别 orcl SID,否则 Sqldeveloper 或 toad 将给出以下错误或从其他机器连接数据库时的sqlplus:
错误:sid 目前不知道
现在侦听器包含两个条目,默认情况下一个用于本地主机,我们必须添加第二个条目,其中包含服务器机器 IP。通过这个条目,服务器机器上的数据库可以侦听包含此 IP 地址的即将到来的连接将连接到服务器 database.Otherwise 数据库将不会连接。
注意:您可以使用这些配置,但不要忘记更改 IP 和 oracle_home 路径
和tnsnames.ora文件用于定义任何数据库参数(SID、PORT、HOST)的别名。但是不需要更改 tnsnames.ora 来连接服务器和客户端,所以我没有修改位于服务器计算机上的 tnsnames.ora。
计算机B tnsnames.ora与上述问题相同。
计算机 B listener.ora 与上述问题相同。
总结:
您只需要更改位于服务器计算机 (Oracle_home/network/admin/) 的 listener.ora 文件。并添加两个条目,一个在 SID_LIST_LISTENER 中添加 SID 详细信息,第二个在 LISTENER 中添加机器 IP 描述。
还要检查环境变量(ORACLE_UNQNAME、ORACLE_SID、ORACLE_HOME、TNS_ADMIN 等)
还有一件重要的事情你必须检查 Listener 服务是否启动并且 运行
使用这些命令(打开 CMD 并输入):
**lsnrctl 状态**
**lsnrctl 开始**
**lsnrctl 停止 **
并且当您更改 listener.ora 文件时,您必须停止然后再启动 lsnrctl 服务才能更改效果。
我在使用 Oracle 12C 时遇到了同样的问题。终于让它与几乎相似的解决方案一起工作。
我的数据库服务器在 192.168.1.165 上,端口为 1526。
还必须在 Windows 服务器防火墙中打开端口 1526。
# listener.ora Network Configuration File: G:\app\db12\product.1.0\dbhome_1\network\admin\listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = G:\app\db12\product.1.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:G:\app\db12\product.1.0\dbhome_1\bin\oraclr12.dll")
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1526))
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1526))
)
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1526))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.165)(PORT = 1526))
)
)
我有两台电脑,电脑A的IP(10.11.11.2)包含oracle数据库11g R2,电脑B的IP(10.11.11.18)。我搜索了很多并在 Tnsnames.ora 和 listener.ora 文件中做了一些更改,但无法连接。但是当我从客户端 tnsping 10.11.11.2 时,它给了我 OK 输出。这意味着可以从客户端访问数据库,但我无法使用 Toad 或 Sqldeveloper 连接数据库。
给出错误: tns 目前不知道请求的服务
我的电脑 A (10.11.11.2) tnsname.ora 和 listener.ora 文件粘贴在下面:
Tnsnames.ora 文件
# tnsnames.ora Network Configuration File: D:\app\Mobilityusr\product.2.0\dbhome_1\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.
LISTENER_ORCL =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
ORACLR_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
(CONNECT_DATA =
(SID = CLRExtProc)
(PRESENTATION = RO)
)
)
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
listener.ora 文件
# listener.ora Network Configuration File: D:\app\Mobilityusr\product.2.0\dbhome_1\network\admin\listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = D:\app\Mobilityusr\product.2.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:D:\app\Mobilityusr\product.2.0\dbhome_1\bin\oraclr11.dll")
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.11.11.2)(PORT = 1521))
)
)
ADR_BASE_LISTENER = D:\app\Mobilityusr
我的电脑 B (10.11.11.18) tnsname.ora 和 listener.ora 文件粘贴在下面:
tnsnames.ora 文件
# tnsnames.ora Network Configuration File: D:\app\product.2.0\dbhome_1\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.
LISTENER_ORCL =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
ORACLR_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
(CONNECT_DATA =
(SID = CLRExtProc)
(PRESENTATION = RO)
)
)
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
listener.ora
# listener.ora Network Configuration File: D:\app\product.2.0\dbhome_1\network\admin\listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = D:\app\product.2.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:D:\app\product.2.0\dbhome_1\bin\oraclr11.dll")
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
)
ADR_BASE_LISTENER = D:\app
另附上计算机B到oracle数据库(安装在计算机A上)的tnsping图片:
还附上了错误图片
在 SQLDeveloper 中,选择服务名称而不是指定 SID。
经过大量研究,我解决了problem.And我也必须与您分享,以便任何遇到此问题的人都能轻松解决。
Listener.ora 文件用于监听请求。如果我们想从另一台计算机访问数据库,我们必须在 listener.ora 中添加两个条目(一个用于 SID,另一个用于机器 IP 地址)。
电脑A文件(listener.ora和tnsnames.ora)设置如下:
Listener.ora
# listener.ora Network Configuration File: D:\app\Mobilityusr\product.2.0\dbhome_1\network\admin\listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = D:\app\Mobilityusr\product.2.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:D:\app\Mobilityusr\product.2.0\dbhome_1\bin\oraclr11.dll")
)
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(ORACLE_HOME = D:\app\Mobilityusr\product.2.0\dbhome_1)
(SID_NAME = orcl)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.11.11.2)(PORT = 1521))
)
)
ADR_BASE_LISTENER = D:\app\Mobilityusr
SID_LIST_LISTENER 首先包含两个条目 SID_DESC 是默认条目,我们必须添加第二个 SID_DESC 以识别 orcl SID,否则 Sqldeveloper 或 toad 将给出以下错误或从其他机器连接数据库时的sqlplus: 错误:sid 目前不知道
现在侦听器包含两个条目,默认情况下一个用于本地主机,我们必须添加第二个条目,其中包含服务器机器 IP。通过这个条目,服务器机器上的数据库可以侦听包含此 IP 地址的即将到来的连接将连接到服务器 database.Otherwise 数据库将不会连接。
注意:您可以使用这些配置,但不要忘记更改 IP 和 oracle_home 路径
和tnsnames.ora文件用于定义任何数据库参数(SID、PORT、HOST)的别名。但是不需要更改 tnsnames.ora 来连接服务器和客户端,所以我没有修改位于服务器计算机上的 tnsnames.ora。
计算机B tnsnames.ora与上述问题相同。 计算机 B listener.ora 与上述问题相同。
总结: 您只需要更改位于服务器计算机 (Oracle_home/network/admin/) 的 listener.ora 文件。并添加两个条目,一个在 SID_LIST_LISTENER 中添加 SID 详细信息,第二个在 LISTENER 中添加机器 IP 描述。
还要检查环境变量(ORACLE_UNQNAME、ORACLE_SID、ORACLE_HOME、TNS_ADMIN 等)
还有一件重要的事情你必须检查 Listener 服务是否启动并且 运行 使用这些命令(打开 CMD 并输入):
**lsnrctl 状态**
**lsnrctl 开始**
**lsnrctl 停止 **
并且当您更改 listener.ora 文件时,您必须停止然后再启动 lsnrctl 服务才能更改效果。
我在使用 Oracle 12C 时遇到了同样的问题。终于让它与几乎相似的解决方案一起工作。
我的数据库服务器在 192.168.1.165 上,端口为 1526。 还必须在 Windows 服务器防火墙中打开端口 1526。
# listener.ora Network Configuration File: G:\app\db12\product.1.0\dbhome_1\network\admin\listener.ora # Generated by Oracle configuration tools. SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = CLRExtProc) (ORACLE_HOME = G:\app\db12\product.1.0\dbhome_1) (PROGRAM = extproc) (ENVS = "EXTPROC_DLLS=ONLY:G:\app\db12\product.1.0\dbhome_1\bin\oraclr12.dll") ) ) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1526)) (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1526)) ) (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1526)) (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.165)(PORT = 1526)) ) )