2

我想知道 sqlplus 如何在连接语句“sqlplus /”中获取用户名和密码。

如果我想用不同的用户连接“sqlplus /”,我该如何更改配置。它可能看起来很尴尬,但在我的脚本中“sqlplus /”是硬编码的,我们无法更改它。只是我想使用相同的命令与不同的用户联系。

4

1 回答 1

3

从 Oracle 文档:

/

表示使用操作系统身份验证的默认登录。在默认登录中,SQL*Plus 通常会尝试使用用户名 OPS$name 让您登录,其中 name 是您的操作系统用户名。请注意,前缀“OPS$”可以设置为任何其他文本字符串。

例如,您可能希望将 INIT.ORA 参数文件中的设置更改为 LOGONname 或 USERIDname。有关操作系统身份验证的信息,请参阅 Oracle9i 数据库管理员指南。

因此,它使用您的操作系统详细信息来构建您的 Oracle 用户名,这意味着您可能无法设置任意名称。

用于指定前缀的 Oracle 初始化参数是OS_AUTHENT_PREFIX及其默认值 id OPS$

如果您无法更改调用 sqlplus 的脚本,您可以做的一件事是在 Oracle 脚本之前的路径中插入您自己的sqlplus 脚本,如下所示(未彻底测试):

#!/bin/bash
if [[ "$1" != "/" ]] ; then
    $ORACLE_HOME/bin/sqlplus "$@"
    exit
fi
shift
$ORACLE_HOME/bin/sqlplus $MY_ORA_USER/$MY_ORA_PWD "$@"

这将是您的脚本调用的那个,它会检查第一个参数以查看它是否是简单的/. 如果不是,它将sqlplus使用相同的参数调用真实的。

否则,它将替换为由环境变量/形成的用户/密码。MY_ORA_*

于 2012-05-08T07:50:44.047 回答