我在计算机A上安装了Oracle 11g XE。我可以使用命令connect username/password
通过sql命令行连接。我也可以将SQL指令发送到演示数据库:Select * from demo_customers;
数据库正在计算机A的本地主机上运行。
我希望计算机B连接到localhost上的计算机A的数据库。我怎么能这样做?
答案 0 :(得分:12)
您需要在服务器A上运行lsnrctl实用程序以启动侦听器。然后,您将使用以下语法从计算机B连接:
sqlplus username/password@hostA:1521 /XE
如果使用默认值1521,则端口信息是可选的。
Listener configuration documentation here. Remote connection documentation here.
答案 1 :(得分:5)
我安装了Oracle服务器,它允许从本地计算机连接没有问题。但是从我家网络中的另一个Maclaptop,它无法使用Sql Developer或Sql Plus进行连接。在做了一些研究后,我发现你需要做的另外一步:
使用Oracle网络管理器。选择监听器。除了127.0.0.1或localhost之外,添加IP地址(在我的例子中是192.168.1.12)。
这将最终添加一个条目到[OracleHome] \ product \ 11.2.0 \ dbhome_1 \ network \ admin \ listener.ora
重新启动侦听器服务。 (注意:对我来说,我重新启动机器一次以使其正常工作)
使用lsnrctl status验证
请注意,显示了额外的HOST = 192.168.1.12,这是使远程连接正常工作的原因。
C:\ Windows \ System32> lsnrctl status
适用于64位Windows的LSNRCTL:版本11.2.0.1.0 - 生产于05-SEP-2015 13:51:43
版权所有(c)1991,2010,Oracle。保留所有权利。
连接到(DESCRIPTION =(ADDRESS =(PROTOCOL = IPC)(KEY = EXTPROC1521))) LISTENER的状态Alias LISTENER
适用于64位Windows的TNSLSNR版本:版本11.2.0.1.0 - 生产
开课日期05-SEP-2015 13:45:18
正常运行时间0天0小时。 6分钟24秒
跟踪级别关闭 安全开启:本地OS验证
SNMP OFF
监听器参数文件
d:\ oracle11gr2 \产品\ 11.2.0 \ dbhome_1 \网络\ ADMIN \ listener.ora中
监听器日志文件d:\ oracle11gr2 \ diag \ tnslsnr \ eagleii \ listener \ alert \ log.xml
听力端点摘要...
(DESCRIPTION =(ADDRESS =(PROTOCOL = IPC)(PIPENAME = \。\管\ EXTPROC1521ipc)))
(DESCRIPTION =(ADDRESS =(PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)))
(DESCRIPTION =(ADDRESS =(PROTOCOL = TCP)(HOST = 192.168.1.12)(PORT = 1521)))
服务摘要...
服务“CLRExtProc”有1个实例 实例“CLRExtProc”,状态为UNKNOWN,具有此服务的1个处理程序...
服务“xe”有1个实例 实例“xe”,状态READY,有1个此服务的处理程序... 服务“xeXDB”有1个实例 实例“xe”,状态READY,有1个此服务的处理程序... 命令成功完成
使用 tnsping 来测试连接
ping IPv4地址,而不是localhost或127.0.0.1
C:\ Windows \ System32> tnsping 192.168.1.12
适用于64位Windows的TNS Ping实用程序:版本11.2.0.1.0 - 生产于05-SEP-2015 14:09:11
版权所有(c)1997,2010,Oracle。保留所有权利。
使用的参数文件:
D:\ oracle11gr2 \ product \ 11.2.0 \ dbhome_1 \ network \ admin \ sqlnet.ora使用EZCONNECT适配器解析别名
试图联系(DESCRIPTION =(CONNECT_DATA =(SERVICE_NAME =))(ADDRESS =(PROTOCOL = TCP)(HOST = 192.168.1.12)(PORT = 1521))) 好的(0毫秒)
答案 2 :(得分:4)
它非常容易在计算机上,你不需要做任何事情只是确保两个系统在同一网络上,如果它不是互联网访问(为此你需要静态IP)。好了,现在在计算机上b转到开始菜单查找oracle文件夹下的配置当窗口弹出时单击该文件夹下的Net Configuration Assistant单击本地网络配置选项它必须是第三个选项。
现在点击添加,然后在下一个屏幕中单击下一步它会询问服务名称你需要添加oracle全局数据库名称的计算机A(通常我使用oracle86进行安装)现在点击下一个屏幕选择协议正常其tcp点击下一步在主机名中输入计算机A的名称,您可以在我的计算机属性中找到该名称。单击下一步不要更改端口,直到您在计算机A中更改了该端口并单击下一步并立即选择测试连接此处可以检查您的连接是否正常,如果错误是用户名和密码不正确,则单击登录凭据按钮并填写正确的用户名和密码。如果它说无法到达计算机或未找到目标,则必须在1521端口的防火墙中添加例外,或者只是在计算机A上禁用防火墙。
答案 3 :(得分:3)
首先,确保接收客户端连接请求的数据库服务器(计算机A)上的侦听器正在运行。为此,请运行lsnrctl status
命令。
如果您收到TNS:no listener
消息(见下图),则表示侦听器服务未运行。要启动它,请运行lsnrctl start
命令。
其次,对于远程客户端的数据库操作和连接,必须将以下可执行文件添加到Windows防火墙例外列表中:(参见图像)
Oracle_home \ bin \ oracle.exe - Oracle数据库可执行文件
Oracle_home \ bin \ tnslsnr.exe - Oracle Listener
最后,在客户端计算机(计算机B)上安装 oracle instant client 并运行:
sqlplus user/password@computerA:port/XE
答案 4 :(得分:3)
首先。 必须为计算机A和B添加静态IP地址。 例如,在我的案例中,计算机A(172.20.14.13)和计算机B(172.20.14.78)。
第二。 在具有Net Manager的计算机A中,为侦听器添加新地址(172.20.14.13)或在listener.ora中手动添加新记录
# listener.ora Network Configuration File: E:\app\user\product\11.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 = E:\app\user\product\11.2.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:E:\app\user\product\11.2.0\dbhome_1\bin\oraclr11.dll")
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.20.14.13)(PORT = 1521))
)
)
ADR_BASE_LISTENER = E:\app\user
第三。 使用Net Manager使用IP地址计算机B(172.20.14.78)创建服务命名,或在tnsnames.ora中手动添加新记录
# tnsnames.ora Network Configuration File: E:\app\user\product\11.2.0\dbhome_1\NETWORK\ADMIN\tnsnames.ora
# Generated by Oracle configuration tools.
ALINADB =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = alinadb)
)
)
LISTENER_ALINADB =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
LOCAL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.20.14.13)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = alinadb)
)
)
ORACLR_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
(CONNECT_DATA =
(SID = CLRExtProc)
(PRESENTATION = RO)
)
)
ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.20.14.78)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
第四。 在计算机B(172.20.14.78)中安装win64_11gR2_client(例如,它适用于Windows 10 Pro 64位版)
五个。 使用Net Configuration Assistant侦听器(localhost)创建或在listener.ora
中手动添加记录# listener.ora Network Configuration File: F:\app\alinasoft\product\11.2.0\client_1\network\admin\listener.ora
# Generated by Oracle configuration tools.
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = myserver)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
ADR_BASE_LISTENER = F:\app\alinasoft
六个。 使用Net Manager使用IP地址计算机创建服务命名 (172.20.14.13)或手动在tnsnames.ora中添加新记录。
SERVER-DB =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.20.14.13)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = alinadb)
)
)
七个 (计算机A-(172.20.14.13))用于数据库操作和来自远程客户端的连接,必须将以下可执行文件添加到Windows防火墙例外列表中:(参见图片) Oracle_home \ bin \ oracle.exe-Oracle数据库可执行文件 Oracle_home \ bin \ tnslsnr.exe-Oracle侦听器
八 允许Oracle Enterprise Manager(https://172.20.14.13:1158/em/console/logon/logon)的端口1158(计算机A-(172.20.14.13))的连接
第九 允许连接端口1521(输入和输出)(计算机A-(172.20.14.17))
第十 在计算机B中172.20.14.78 sqlplus / NOLOG CONNECT系统/ oracle @ /// 172.20.14.13:1521/alinadb