|
多谢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"
=================================================================== |
|