我正在尝试在虚拟机中设置 Oracle 数据库服务器(目前仅用于测试目的)。
我正在使用的设置:
- 虚拟盒
- NAT模式的网络适配器(重定向端口22->22、80->80、1521->1521、8080->8080)
- 如果可能的话,我宁愿避免使用桥接网络
- 如果数据库可以被外界访问,而不仅仅是主机操作系统,那就太好了
- CentOS 6.4 64 位
- Oracle XE,版本 11.2.0.2.0“生产”,使用默认端口(1521 和 8080)安装和配置
- 客户操作系统和主机操作系统中的防火墙均已禁用
- 主机操作系统位于代理之后
问题
我无法从主机访问数据库(通过端口 1521,使用 sqlplus 或 SQL developer)。但我可以从虚拟机本身访问它(使用 sqlplus)。
我还可以通过 SSH 从主机进入虚拟机,并且可以通过以下方式从主机访问 Web 界面:
http://127.0.0.1:8080/apex
因此,VirtualBox 的 NAT 设置似乎在某种程度上起作用。
当我执行时,监听器似乎已经启动lsnctrl 状态listener.ora 文件如下所示:
# listener.ora Network Configuration File:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/xe)
(PROGRAM = extproc)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521))
)
)
DEFAULT_SERVICE_LISTENER = (XE)
当我尝试从主机连接时,出现以下错误(在 CentOS 中执行时相同的命令有效):
PS C:\Users\winuser> sqlplus system/[email protected]
SQL*Plus: Release 11.2.0.3.0 Production on Fr Jul 12 16:56:25 2013
Copyright (c) 1982, 2011, Oracle. All rights reserved.
ERROR:
ORA-12154: TNS:could not resolve the connect identifier specified
端口 1521 似乎在虚拟机中也处于活动状态,并且在 VirtualBox 中正确设置了端口转发:
[root@localhost admin]# nmap 127.0.0.1
Starting Nmap 5.51 ( http://nmap.org ) at 2013-07-12 17:02 CEST
Nmap scan report for localhost.localdomain (127.0.0.1)
Host is up (0.0000050s latency).
Not shown: 994 closed ports
PORT STATE SERVICE
22/tcp open ssh
25/tcp open smtp
111/tcp open rpcbind
631/tcp open ipp
1521/tcp open oracle
8080/tcp open http-proxy
Nmap done: 1 IP address (1 host up) scanned in 0.06 seconds
感谢您的任何提示或建议。
答案1
您无法仅使用 IP 地址连接到数据库。
跑步
lsnrctl status
在客户机上找出服务名称和实例名称(例如 ORCL)。然后在主机上编辑 tnsnames.ora,如下所示:
ORCL=
(DESCRIPTION=
(ADDRESS=
(PROTOCOL=TCP)
(HOST=127.0.0.1)
(PORT=1521)
)
(CONNECT_DATA=
(SERVER=dedicated)
(SERVICE_NAME=your_service_name_here)
)
)
然后尝试 TNSPING 一下:
tnsping ORCL
它应该会说类似“Ok(20 毫秒)”的内容。最后运行 sqlplus:
sqlplus user/password@ORCL
有关详细信息,请阅读 Oracle 文档: http://www.oracle.com/pls/db112/portal.portal_db?selected=4&frame=#network_management
答案2
这听起来像是您的 Oracle 网络配置有问题。请使用网络管理器或手动编辑 $ORACLE_HOME/network/admin 中的 sqlnet.ora 和 tnsnames.ora。