Если приводить выдержку из документации:
OS_AUTHENT_PREFIX specifies a prefix that Oracle uses to authenticate users attempting to connect to the server. Oracle concatenates the value of this parameter to the beginning of the user's operating system account name and password. When a connection request is attempted, Oracle compares the prefixed username with Oracle usernames in the database.
Итак попробуем:
Теперь попробуем поменять значение префикса (для этого придется перезапускать экземпляр)
Попробуем создать пользователя не с паролем, а внешнего:
Выводы
1. При локальном подключении, если OS_AUTHENT_PREFIX отличен от OPS$, то пользователь в Oracle должен быть заведен identified externally
2. Если OS_AUTHENT_PREFIX=OPS$, то пользователь может быть заведен как внешний, так и с паролем.
Подключение по сети
А теперь попробуме подключится к серверу из вне без ввода пароля. Для этого (хоть Oracle этого так и не рекомендует, установим параметр REMOTE_OS_AUTHENT=TRUE.
Теперь попробуем варианты:
1. OS_AUTHENT_PREFIX <> OPS$, identified externally
2. OS_AUTHENT_PREFIX <> OPS$, identified by password
3. OS_AUTHENT_PREFIX = OPS$, identified by password
Таким образом для внешнего подключения при REMOTE_OS_AUTHENT=TRUE поведение такое же, как и для внутреннего.
OS_AUTHENT_PREFIX specifies a prefix that Oracle uses to authenticate users attempting to connect to the server. Oracle concatenates the value of this parameter to the beginning of the user's operating system account name and password. When a connection request is attempted, Oracle compares the prefixed username with Oracle usernames in the database.
Итак попробуем:
oracle@v-pc-dev-3:~> sqlplus /
ERROR:
ORA-01017: invalid username/password; logon denied
oracle@v-pc-dev-3:~> sqlplus / as sysdba
Connected to:
Oracle Database 10g Release 10.2.0.1.0 - Production
SQL> show parameter os_authent_prefix
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
os_authent_prefix string ops$
SQL> grant create session to ops$oracle identified by pass;
Grant succeeded.
SQL> exit
Disconnected from Oracle Database 10g Release 10.2.0.1.0 - Production
oracle@v-pc-dev-3:~> sqlplus /
Connected to:
Oracle Database 10g Release 10.2.0.1.0 - Production
SQL>
Таким образом, создав пользователя OPS$ORACLE нам удалось подключится к локальному экземпляру без пароля.Теперь попробуем поменять значение префикса (для этого придется перезапускать экземпляр)
SQL> show parameter OS_AUTHENT_PREFIX
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
os_authent_prefix string XYZ$
SQL> grant create session to XYZ$ORACLE identified by pass;
Мы создали пользователя Oracle, соответствующего данному префиксу. Теперь подключаемся:
oracle@v-pc-dev-3:~> sqlplus /
SQL*Plus: Release 10.2.0.1.0 - Production on Sun Feb 7 15:05:04 2010
Copyright (c) 1982, 2005, Oracle. All rights reserved.
ERROR:
ORA-01017: invalid username/password; logon denied
Упс. Не получилось.Попробуем создать пользователя не с паролем, а внешнего:
SQL> create user XYZ$ORACLE identified externally;
User created.
SQL> grant create session to XYZ$ORACLE;
Grant succeeded.
и подключаемся снова
oracle@v-pc-dev-3:~> sqlplus /
Connected to:
Oracle Database 10g Release 10.2.0.1.0 - Production
Выводы
1. При локальном подключении, если OS_AUTHENT_PREFIX отличен от OPS$, то пользователь в Oracle должен быть заведен identified externally
2. Если OS_AUTHENT_PREFIX=OPS$, то пользователь может быть заведен как внешний, так и с паролем.
Подключение по сети
А теперь попробуме подключится к серверу из вне без ввода пароля. Для этого (хоть Oracle этого так и не рекомендует, установим параметр REMOTE_OS_AUTHENT=TRUE.
Теперь попробуем варианты:
1. OS_AUTHENT_PREFIX <> OPS$, identified externally
SQL> create user "XYZ$ANDREY.ZAYTSEV" identified externally;
SQL> grant connect to "XYZ$ANDREY.ZAYTSEV";
Grant succeeded.
/>sqlplus /@v-pc-dev-3
Connected to:
Oracle Database 10g Release 10.2.0.1.0 - Production
ПОЛУЧИЛОСЬ2. OS_AUTHENT_PREFIX <> OPS$, identified by password
SQL> create user "XYZ$ANDREY.ZAYTSEV" identified by pass;
User created.
SQL> grant connect to "XYZ$ANDREY.ZAYTSEV";
Grant succeeded.
/>sqlplus /@v-pc-dev-3
ERROR:
ORA-01017: invalid username/password; logon denied
НЕ ПОЛУЧИЛОСЬ 3. OS_AUTHENT_PREFIX = OPS$, identified by password
SQL> create user "OPS$ANDREY.ZAYTSEV" identified by pass;
User created.
SQL> grant connect to "OPS$ANDREY.ZAYTSEV";
Grant succeeded.
C:\Documents and Settings\andrey.zaytsev>sqlplus /@v-pc-dev-3
Connected to:
Oracle Database 10g Release 10.2.0.1.0 - Production
ПОЛУЧИЛОСЬТаким образом для внешнего подключения при REMOTE_OS_AUTHENT=TRUE поведение такое же, как и для внутреннего.
Комментариев нет:
Отправить комментарий