返回

解决:使用 SQLplus 18、19 或 21 连接包含 @ 符号密码的 Oracle 数据库

Linux

使用 SQLplus 18、19 或 21 连接包含 @ 符号密码的 Oracle 数据库

问题:

当你使用 SQLplus 18、19 或 21 连接到包含 @ 符号的 Oracle 数据库密码时,可能会遇到连接失败的问题。

解决方案:

有两种方法可以解决这个问题:

1. 使用 TNSNAMES.ORA 文件

步骤:

  • 创建或编辑文件 /etc/oracle/tnsnames.ora
  • 添加以下条目:
MY_ALIAS =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = SERVER)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = BASE)
    )
    (SECURITY = (P:PASSWORD))
  )
  • MY_ALIAS 替换为一个唯一的别名。
  • SERVER 替换为数据库服务器的名称或 IP 地址。
  • BASE 替换为服务名称。
  • PASSWORD 替换为你的密码,其中包含 @ 符号。

使用 SQLPLUS 连接:

sqlplus USER/MY_ALIAS
  • USER 替换为你的用户名。
  • MY_ALIAS 替换为你在 tnsnames.ora 文件中创建的别名。

2. 使用 SQLNET.ORA 文件

步骤:

  • 创建或编辑文件 /etc/oracle/sqlnet.ora
  • 添加以下条目:
SQLNET.AUTHENTICATION_SERVICES= (NTS)
  • NTS 替换为你的密码中包含 @ 符号的 Oracle Net 身份验证服务。

使用 SQLPLUS 连接:

sqlplus USER@SERVER:1521/BASE
  • USER 替换为你的用户名。
  • SERVER 替换为数据库服务器的名称或 IP 地址。
  • BASE 替换为服务名称。

提示:

  • 确保你的密码中没有其他特殊字符。
  • 如果以上步骤不起作用,请尝试使用不同的 Oracle Net 身份验证服务。

结论:

使用以上两种方法之一,你应该能够使用包含 @ 符号的密码连接到 Oracle 数据库。

常见问题解答:

1. 为什么我不能使用 sqlplus 12 中的方法?

sqlplus 12 中的转义方法不再适用于 sqlplus 18、19 和 21。

2. 我可以自动化连接过程吗?

是的,你可以使用 SQL*Plus 脚本或其他自动化工具来自动化连接过程。

3. 我可以使用其他身份验证方法吗?

是的,你可以使用其他身份验证方法,如 Kerberos 或 LDAP。

4. 我在连接时遇到其他错误,该怎么办?

请检查你的连接参数,并确保你的数据库正在运行。

5. 我还可以在哪里获得帮助?

你可以访问 Oracle 文档或在社区论坛上寻求帮助。