天天看點

oracle os_authent_prefix,為什麼采用作業系統驗證時,OS_AUTHENT_PREFIX不能接受"OPS$"之外的值?...

多謝codePeon,全是粗心的"by"惹的禍.去掉by,則成功了.

先測試了你上面的質疑:

1.os_authent_prefix="OPS$",按密碼認證建立的(by)且以"OPS$"開頭命名的使用者,還是會認為是外部認證

===============================================================

SQL> create user "OPS$MYCOMP\OWNER" identified by externally;

使用者已建立

SQL> grant connect to "OPS$MYCOMP\OWNER";

授權成功。

SQL> connect /;

已連接配接。

SQL> show user;

USER 為"OPS$MYCOMP\OWNER"

==================================================================

2.os_authent_prefix="XX$"(或其它值),按密碼認證建立的(by)且以"XX$"開頭命名的使用者,卻不會認為是外部認證

===================================================================

SQL> alter system set os_authent_prefix="XX$" scope=spfile;

系統已更改。

SQL> shutdown

資料庫已經關閉。

已經解除安裝資料庫。

ORACLE 例程已經關閉。

SQL> startup

ORACLE 例程已經啟動。

資料庫裝載完畢。

資料庫已經打開。

SQL> create user "XX$MYCOMP\OWNER" identified by externally

使用者已建立

SQL> grant connect to "XX$MYCOMP\OWNER";

授權成功。

SQL> connect /;

ERROR:

ORA-01017: invalid username/password; logon denied

警告: 您不再連接配接到 ORACLE。

SQL> connect "XX$MYCOMP\OWNER"/externally;

已連接配接。

===================================================================

将"by"去掉後,"XX$"測試成功

===================================================================

SQL> alter system set os_authent_prefix="XX$" scope=spfile;

系統已更改。

SQL> shutdown;

資料庫已經關閉。

已經解除安裝資料庫。

ORACLE 例程已經關閉。

SQL> startup;

ORACLE 例程已經啟動。

資料庫裝載完畢。

資料庫已經打開。

SQL> connect / as sysdba;

已連接配接。

SQL> create user "XX$MYCOMP\OWNER" identified externally;

使用者已建立

SQL> grant connect to "XX$MYCOMP\OWNER";

授權成功。

SQL> connect /;

已連接配接。

SQL> show user;

USER 為"XX$MYCOMP\OWNER"

===================================================================