【问题标题】:How do I connect to the Database on a different server?如何连接到不同服务器上的数据库?
【发布时间】:2014-08-07 04:29:42
【问题描述】:

我有一台机器 A,上面有数据库服务器。 我有一台机器 B,上面安装了 Oracle 客户端。

我通过添加以下内容修改了机器 B 中的 tnsnames.ora 文件:

  TRIAL1 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = machineName.example.com)(PORT = 1521)(QUEUESIZE=100))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = Trial1.world)
    )
  )

但是,我无法在机器 B 上成功运行命令 sqlplus name/pwd@trial as sysdba。它会抛出一个错误,指出“权限不足”。是否需要对机器 A 上的 sqlnet.ora 或 tnsnames.ora 文件进行任何修改?

【问题讨论】:

  • 您是否需要连接as sysdba - 您是否连接到管理员帐户?这是导致错误的原因。如果您以没有该子句的普通用户身份连接,它应该可以正常工作。如果您确实需要以管理员身份进行远程连接,那么您需要做一些额外的事情,但不确定是否有必要?
  • 是的,Alex,我正在尝试连接到管理员帐户。我还需要做什么?

标签: oracle sqlplus tnsnames


【解决方案1】:

为了能够以 sysdba 身份进行远程连接,您需要将该系统权限授予需要这样做的用户。

grant sysdba to name;

从现在开始,您可以使用sqlplus name/pwd@trial1 as sysdba 从任何机器进行连接。该名称是您连接到的数据库中定义的用户名,无论您从哪个操作系统帐户连接或从哪台机器连接,只要可以建立连接即可。

剩下的问题是:您是否需要在该数据库中以 sysdba 身份工作。除非您知道自己在做什么,否则不要这样做。实际上,您作为目录的所有者 SYS 工作。最轻微的拼写错误都会使您的数据库像渡渡鸟一样死掉。

对于大多数人来说,即使是普通的 dba 帐户也已经太多了。尽快创建一个常规帐户,为其提供所需的权限并使用该帐户来完成您的工作。所需权限是完成工作所需的最低权限(创建会话、创建表、创建过程等(几乎肯定不是 dba))

【讨论】:

  • @Zelf,所以假设我需要将权限授予 machineB.example.com 上的用户“用户”,以下将是命令? --> 将 sysdba 授予 User@machineB.example.com
  • 不,在您的数据库中,您以 sysdba 的身份在本地连接,并将 sysdba 授予已在该数据库中定义的用户名。这没有使用主机身份验证。
  • 我的问题是如何授予机器-B 的“用户”权限以访问机器-A 上的数据库。
  • 您的问题是关于连接到 name@trial1,我回答了这个问题。远程操作系统身份验证是另一个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-22
  • 1970-01-01
  • 2016-12-17
相关资源
最近更新 更多