4 апреля 2008 г.

Подключение к iSQL*Plus как SYSDBA или SYSOPER в Oracle 10g

О подключении к iSQL*Plus как SYSDBA или SYSOPER в Oracle 9i можно почитать здесь.
На http://hostname:5560/isqlplus невозможен доступ под SYSDBA или SYSOPER, если даже в Connect Identifier допишите "as sysdba" после названия базы данных:
ERROR - ORA-28009: connection as SYS should be as SYSDBA or SYSOPER

Чтобы подключиться к iSQL*Plus как SYSDBA или SYSOPER, нужно воспользоваться ссылкой http://hostname:5560/isqlplus/dba.
По умолчанию, доступ к этому URL закрыт, а при попытке попасть получите сообщение:

"Для входа на сервер по адресу iSQL*Plus DBA нужны имя пользователя и пароль. ..."

Для того, чтобы разрешить пользователю подключаться URL к iSQL*Plus DBA, нужно с помощью утилиты JAZN (Java AuthoriZatioN):

1) Создать пользователя для iSQL*Plus DBA URL
2) Назначить ему роль webDba
3) Выйти из jazn и при необходимости перегрузить iSQL*Plus.

Запуск утилиты jazn:

D:\>set ORACLE_HOME=D:\oracle\product\10.2.0

D:\>set JAVA_HOME=%ORACLE_HOME%\jdk

D:\>cd %ORACLE_HOME%\oc4j\j2ee\isqlplus\application-deployments\isqlplus

D:\oracle\product\10.2.0\oc4j\j2ee\isqlplus\application-deployments\isqlplus>%JAVA_HOME%\bin\java -Djava.security.properties=%ORACLE_HOME%\oc4j\j2ee\home\config\jazn.security.props -jar %ORACLE_HOME%\oc4j\j2ee\home\jazn.jar -user "iSQL*Plus DBA\admin" -password welcome -shell

JAZN:>
В unix среде команды аналогичные, только нужно заменить % на $, set на export, и слэши.
JAZN:> adduser "iSQL*Plus DBA" urldba urlpasswd
JAZN:>
JAZN:> listusers
iSQL*Plus DBA/admin
iSQL*Plus DBA/urldba
JAZN:>
JAZN:> grantrole webDba "iSQL*Plus DBA" urldba
JAZN:> exit
Тепер, при входе в http://hostname:5560/isqlplus/dba можно ввести логин (urladmin) и пароль пользователя (urlpasswd) и попасть в iSQL*Plus DBA URL, где есть возможность подключиться к базе данных как SYSDBA и SYSOPER.

18 коммент.:

belokon комментирует...

при выполнении команды cd %ORACLE_HOME%\oc4j\....
выдается сообщение:системе не удается найти указанный путь.
Как исправить ошибку???

Oracle DBA комментирует...

Какая у вас версия Oracle?
Скорее всего 9i, в Oracle 9i используется стандартная утилита htpasswd - для добавления пользователя для базовой аутентификации:

$ORACLE_HOME/Apache/Apache/bin/htpasswd -b $ORACLE_HOME/sqlplus/admin/iplusdba.pw username password

Или же можно вообще отключить базовую аутентификацию для http://hostname:7776/isqlplusdba закомментировав 4 строчки в ORACLE_HOME/sqlplus/admin/isqlplus.conf:

<Location /isqlplusdba>
SetHandler fastcgi-script
Order deny,allow
#AuthType Basic
#AuthName 'iSQL*Plus DBA'
#AuthUserFile /testdb/u01/app/oracle/product/9.2.0.8.0/sqlplus/admin/iplusdba.pw
#Require valid-user
</Location>

belokon комментирует...

Версия Oracle 10!!!
может он просто не видит переменные среды, созданные set-ом??
или может надо прописать полный путь(%ORACLE_HOME%\oracle\product...oc4j\..)
А можно ли в oracle 10 закомментровать аутентификацию?

Oracle DBA комментирует...

>... или может надо прописать полный путь(%ORACLE_HOME%\oracle\product...oc4j\..)
папка oc4j у вас находится в папке %ORACLE_HOME%\oracle\product? по идее она должна быть в ORACLE_HOME.
Думаю, вам нужно либо ORACLE_HOME исправить, либо указывать полные пути.

В Oracle 10g http server видимо написан на Java, и настройки тоже сильно отличаются от Apache. Отключить базовую аутентификацию можно, но используйте этот способ на свой риск и страх (Oracle нигде не документирует, как отключить в 10g):

в файле ORACLE_HOME\oc4j\j2ee\oc4j_applications\applications\isqlplus\isqlplus\WEB-INF\web.xml удалите такие строчки (строчки 165-191):

<security-constraint>
<web-resource-collection>
<web-resource-name>dba.uix</web-resource-name>
<description>
</description>
<url-pattern>/dba.uix</url-pattern>
<url-pattern>/dbA.uix</url-pattern>
<url-pattern>/dBa.uix</url-pattern>
<url-pattern>/dBA.uix</url-pattern>
<url-pattern>/Dba.uix</url-pattern>
<url-pattern>/DbA.uix</url-pattern>
<url-pattern>/DBa.uix</url-pattern>
<url-pattern>/DBA.uix</url-pattern>
</web-resource-collection>
<web-resource-collection>
<web-resource-name>DynamicDba</web-resource-name>
<description>
</description>
<url-pattern>/dba/dynamic</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>webDba</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>NONE</transport-guarantee>
</user-data-constraint>
</security-constraint>

После перегруза iSQL*Plus уже не будет запрашивать логин и пароль.

isqlplus stop
isqlplus start

belokon комментирует...

папка oc4j находится в db_3!полный путь таков:D:\oracle\product\10.2.0\db_3\oc4j\j2ee\isqlplus\application-deployments\isqlplus
Никакой папки ORACLE_HOME у меня нет)))))
Тогда как прописать запуск isql???

belokon комментирует...

Вы пишите ->
D:\oracle\product\10.2.0\oc4j\j2ee\isqlplus\application-deployments\isqlplus>%JAVA_HOME%\bin

У меня нет папки bin, у меня следующее:
D:\oracle\product\10.2.0\db_3\oc4j\j2ee\isqlplus\application-deployments\isqlplus\config
а, в папке config пусто!!!!!????

belokon комментирует...

JAVA_HOME - это имеется exe-файл???
То у меня следующее:
D:\oracle\product\10.2.0\db_3\jdk\bin\java.
Тогда мне его запускать?

Oracle DBA комментирует...

ORACLE_HOME и JAVA_HOME - это переменные среды, ORACLE_HOME - указывает на папку, где установлен ORACLE, а JAVA_HOME:
"$JAVA_HOME is the location of your JDK (1.4 or above). It should be set to $ORACLE_HOME/jdk, but you may use another JDK."
Эти переменные и устанавливаются на первых 2 строчках:
D:\>set ORACLE_HOME=D:\oracle\product\10.2.0

D:\>set JAVA_HOME=%ORACLE_HOME%\jdk

>> полный путь таков:D:\oracle\product\10.2.0\db_3\oc4j\j2ee\isqlplus\application-deployments\isqlplus
Судя по пути, переменная среды ORACLE_HOME у вас D:\oracle\product\10.2.0\db_3,
а JAVA_HOME =D:\oracle\product\10.2.0\db_3\jdk

>> Вы пишите ->
D:\oracle\product\10.2.0\oc4j\j2ee\isqlplus\application-deployments\isqlplus>%JAVA_HOME%\bin

D:\oracle\product\10.2.0\oc4j\j2ee\isqlplus\application-deployments\isqlplus> - это command prompt, а сама команда начинается с %JAVA_HOME%\bin, можно и полный путь указывать везде.
Приятного дня!

Oracle DBA комментирует...

*** команда начинается с %JAVA_HOME%\bin\java

Да, вы правы в %JAVA_HOME%\bin и должен лежать java.exe, его и нужно запускать.

belokon комментирует...

У меня получилось следующее:

D:\>set ORACLE_HOME=D:\oracle\product\10.2.0\db_3

D:\>set JAVA_HOME=D:\oracle\product\10.2.0\db_3\jdk\bin\java

D:\>cd %ORACLE_HOME%\oc4j\j2ee\isqlplus\application-deployments\isqlplus


D:\oracle\product\10.2.0\db_3\oc4j\j2ee\isqlplus\application-deployments\isqlplu
s>%ORACLE_HOME%\bin\java-Djava.security.properties=%ORACLE_HOME%\oc4j\j2ee\home\
jazn.jar -user "iSQL*Plus DBA\admin" -1234 welcome -shell
"D:\oracle\product\10.2.0\db_3\bin\java-Djava.security.properties" не является в
нутренней или внешней
командой, исполняемой программой или пакетным файлом.

Oracle DBA комментирует...

"D:\oracle\product\10.2.0\db_3\bin\java-Djava.security.properties"
между ...\java и -Djava... есть пробел, и "-password" не нужно менять на "-1234",
вместо "%ORACLE_HOME%\bin\java" нужно "%JAVA_HOME%\bin\java"

Запустите следующее как есть, ничего не меняя:)
set ORACLE_HOME=D:\oracle\product\10.2.0\db_3

set JAVA_HOME=D:\oracle\product\10.2.0\db_3\jdk

cd %ORACLE_HOME%\oc4j\j2ee\isqlplus\application-deployments\isqlplus

следующее в одной строчке:
%JAVA_HOME%\bin\java -Djava.security.properties=%ORACLE_HOME%\oc4j\j2ee\home\config\jazn.security.props -jar %ORACLE_HOME%\oc4j\j2ee\home\jazn.jar -user "iSQL*Plus DBA\admin" -password welcome -shell
конец строки

Если будет ошибка "User does not exist in system", попробуйте заменить слэш в "iSQL*Plus DBA\admin" на "iSQL*Plus DBA/admin".

Надеюсь получится)

belokon комментирует...

произошла ошибка "User does not exist in system"!!!
А заменив слэш в "iSQL*Plus DBA\admin" на "iSQL*Plus DBA/admin" получилось ->
D:\oracle\product\10.2.0\db_3\oc4j\j2ee\isqlplus\application-deployments\isqlplu
s>%JAVA_HOME%\bin\java -Djava.security.properties=%ORACLE_HOME%\oc4j\j2ee\home\c
onfig\jazn.security.props -jar %ORACLE_HOME%\oc4j\j2ee\home\jazn.jar -user "iSQL
*Plus DBA/admin" -password welcome -shell

Realm [iSQL*Plus DBA] does not exist in system!!!!!!!!!!

Oracle DBA комментирует...

Откройте файл ORACLE_HOME\oc4j\j2ee\isqlplus\application-deployments\isqlplus\config\jazn-data.xml,
и найдите тэги <realm-name> и в них тэг <name> и скиньте их сюда. Например:
<realm-name>iSQL*Plus DBA</realm-name>
<type>role</type>
<class>oracle.security.jazn.spi.xml.XMLRealmRole</class>
<name>iSQL*Plus DBA/admin</name>

belokon комментирует...

В db_3\oc4j\j2ee\isqlplus\application-deployments\isqlplus\config\(пусто!)
файл jazn-data.xml отсутствует.

jazn-data.xml - методом поиска удалось найти D:\oracle\product\10.2.0\univ\oc4j\j2ee\isqlplus\config\jazn-data.xml - но не в db_3(ORACLE_HOME),а как видно в UNIV!!!!
Выложить?

Oracle DBA комментирует...

ага, выложите сюда

Oracle DBA комментирует...

скорее всего в D:\oracle\product\10.2.0\univ\oc4j\j2ee\isqlplus\config\jazn-data.xml не окажется того, что нужно....
belokon, я думаю, вам нужно разобраться с установками Oracle, видимо у вас несколько установок Oracle, и возможно есть и клиентская и серверная установки.
К сожаления, дальше не могу ничем помочь.
Удачи вам!

michaelulyanov комментирует...

Выполнил все подготовительные процедуры для подключения к EM только вот войти не могу-вхожу как SYSDBA с именем пользователя HR -а вот какой пароль незнаю,какие еще параметры нужно проверить?

michaelulyanov комментирует...
Этот комментарий был удален автором.