Oracle OS身份验证

Oracle OS身份验证,oracle,authentication,Oracle,Authentication,我在登录数据库中的一个帐户时遇到问题。情况是这样的 用户已经在Linux上登录到他的帐户环境,例如从他的个人帐户 su - projectA 用户尝试使用 [projectA@myDB2]$ sqlplus / 我们得到的信息是: ORA-01017:无效的用户名/密码:拒绝登录 我在下面运行了这个命令,它缺少前缀 SQL> SHOW PARAMETER os_authent_prefix NAME TYPE

我在登录数据库中的一个帐户时遇到问题。情况是这样的

用户已经在Linux上登录到他的帐户环境,例如从他的个人帐户

su - projectA
用户尝试使用

[projectA@myDB2]$ sqlplus / 
我们得到的信息是:

ORA-01017:无效的用户名/密码:拒绝登录

我在下面运行了这个命令,它缺少前缀

SQL> SHOW PARAMETER os_authent_prefix
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
os_authent_prefix                    string      
SQL>

如何在
os\u authent\u prefix
上设置前缀?

不允许为
os\u authent\u prefix
设置任何值,但如果设置了前缀,则数据库帐户需要与操作系统帐户相同,即
projectA
而不是
OPS$projectA

如果您确实希望帐户具有
OPS$
前缀,则初始化参数必须匹配。您可以在评论中将其设置为@kfinity:

alter system set OS_AUTHENT_PREFIX='OPS$' scope=spfile;
接着是分贝反弹。但由于这是默认值(我认为仍然如此!),很可能是有人故意清除了它,所以请谨慎行事

最重要的是要始终如一。如果您有其他具有
OPS$
的用户帐户,那么您可能应该设置它(并且您可以检查您提到的旧数据库,查看用户和设置是否相同)。如果您没有任何其他帐户名,则需要验证是否有任何未加前缀的帐户名是通过
dba\u users.authentication\u type
列在外部识别的。如果存在任何问题,则更改初始化参数将破坏这些问题


数据库帐户是如何创建的?前缀可以为空。您可能希望
创建
更改外部标识的用户项目
。如果你真的想设置前缀,我会做
altersystemsetos\u AUTHENT\u prefix='your\u prefix\u here'scope=spfile
然后跳出数据库。@JustinC-我指的是数据库中用户的帐户,而不是数据库本身。如果数据库帐户创建为
ops$projectA
,则
OS\u AUTHENT\u前缀
需要是
OP$s
。如果未设置前缀,则帐户名也不应具有该前缀。两者都是有效的,但你需要决定走哪条路;这可能是基于旧数据库或当前有效的其他帐户。谢谢你对我们的帮助。高级数据库确认,它是在sqlplus上运行的正确语句,正如大家在这里评论的那样。实际上,我也想运行该语句,但Java开发人员担心它可能会弄乱到外部表(文本文件)的链接。说实话,我来自Java/Python背景,但作为初级数据库承担了这项工作。所以这里有很多东西要学。再次感谢您。我不确定更改会如何影响外部表,这些表使用DB目录对象并依赖操作系统权限-DB用户的身份验证似乎不相关。我同意您的看法,但当时正在处理该框的Java开发人员不确定。这只是带前缀或不带前缀字符串的操作系统身份验证。至少我们学到了一些新东西,尤其是我,这对每个人来说都是件好事。再次感谢亚历克斯抽出时间。我真的非常感谢你的帮助和帮助。