愚蠢的问题:
我已在我的 Linux 机器上成功安装了 Oracle 11g。
我可以连接到它并通过 C#/mono 检索国家表,使用下面的连接字符串,在默认安装(+新密码+解锁)后,使用 HR 帐户“按原样”。
string strConnectionString =
"User Id=HR;Password=myPassword;Data Source=(DESCRIPTION=" +
"(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))" +
"(CONNECT_DATA=(SID=orcl)));";
当我使用机器名或从路由器获得的 IP(而不是本地主机)从同一台计算机连接时,它不起作用。防火墙已关闭。
string strConnectionString =
"User Id=HR;Password=myPassword;Data Source=(DESCRIPTION=" +
"(ADDRESS=(PROTOCOL=TCP)(HOST=machine-name-or-IP)(PORT=1521))" +
"(CONNECT_DATA=(SID=orcl)));";
我认为我必须允许远程连接并授予从任何计算机登录 HR 帐户的权限。
但是如何做以及在何处做呢?
或许可以配置数据库来监听正确的 IP。
我该怎么做?在哪里做?
我已经在谷歌上搜索过了,但到目前为止还没有发现任何有用的东西......
请注意,我所说的“远程连接”是指192.168.*.*
答案1
侦听器是否在侦听外部 IP?您可以使用 netstat -an 检查侦听器是否只侦听 127.0.0.1 的端口 1521,或者是否还侦听 192.168....
据我所知,远程登录默认处于启用状态。如果您创建新用户,则该用户需要角色资源并进行连接才能连接到数据库并创建表和其他内容。
答案2
您不应该检查路由器。问题是本地机器知道的有关 IP 或帽子名称的信息可以解决。简单的 ping 和 nslookup 应该会为您指明正确的方向。如果有效,请使用 tnsping 进行检查。