Oracle отсутствует или неверна опция
Я только что установил oracle11g, и в нем отсутствовала схема Скотта. Поэтому я пытаюсь создать его сам. Я получил sql-скрипт схемы «Скотт», но когда я пытаюсь запустить запрос «создать пользователя Скотта, идентифицированного тигром;» он отображает следующую ошибку:
ORA-65096: недопустимое имя обычного пользователя или роли в Oracle.
По сути, это не позволяет мне создать пользователя «Скотт». Почему это так и как я могу решить свою проблему?
Возможно, вы установили клиент 11g, но подключаетесь к базе данных 12c? Что именно вы установили?В 99,9% случаев ошибка ORA-65096: invalid common user or role name означает, что вы вошли в CDB, тогда как вы должны войти в PDB.
Но если вы настаиваете на неправильном создании пользователей, выполните следующие действия.
ОПАСНОСТЬ
Установка недокументированных параметров, подобных этому (обозначенных ведущим подчеркиванием), должна выполняться только под руководством службы поддержки Oracle. Изменение таких параметров без таких указаний может привести к аннулированию вашего контракта на поддержку. Так что делайте это на свой страх и риск.
В частности, если вы установили "_ORACLE_SCRIPT"=true , некоторые изменения словаря данных будут сделаны с столбцом ORACLE_MAINTAINED, установленным на «Y». Эти пользователи и объекты будут неправильно исключены из некоторых сценариев DBA. И они могут быть некорректно включены в некоторые системные скрипты.
Если вы согласны с вышеуказанными рисками и не хотите правильно создавать обычных пользователей, используйте ответ ниже.
Перед созданием пользователя запустите:
Имейте в виду, что это скрытый параметр, и его следует использовать только тогда, когда это рекомендовано службой поддержки Oracle. Опасно использовать параметры подчеркивания (скрытые) в производственных системах, так как это может привести к недействительности вашего контракта на поддержку. Поэтому вам следует посоветовать людям установить их, не давая соответствующего предупреждения. это неправильно и не поддерживается в Oracle, я использовал его, и это вызвало другие внутренние проблемы. Он работает с Oracle Database 18c Express Edition Release 18.0.0.0.0 - Production @Victor - потому что нам разрешено изменять их только по указанию службы поддержки Oracle. Как я уже сказал, установка недокументированных параметров самостоятельно может аннулировать наш контракт на поддержку. В общем, настройки Oracle по умолчанию для документированных и недокументированных параметров обычно подходят для всех приложений и не нуждаются в изменении. Настройка параметров подчеркивания привлекает людей, которым нравится острые ощущения от тайного доступа, а это худшая причина для их настройки. Но если у вас нет контракта на поддержку, о котором нужно беспокоиться, вы можете рискнуть повредить свою систему любым удобным для вас способом ;-)Я только что установил oracle11g
ORA-65096: недопустимое общее имя пользователя или роли в Oracle
Нет, вы установили Oracle 12c . Эта ошибка может быть только включенной 12c и не может быть включенной 11g .
Всегда проверяйте версию вашей базы данных до 4 знаков после запятой:
- корневой контейнер ( CDB )
- и / или ноль, одна или несколько подключаемых баз данных ( PDB ).
Вы должны были создать базу данных как базу данных контейнера . Пока вы пытаетесь создать пользователя в контейнере, то есть CDB $ ROOT , однако вы должны создать пользователя в базе данных PLUGGABLE .
Вы не должны создавать объекты, связанные с приложением, в контейнере, контейнер содержит метаданные для подключаемых баз данных. Вы должны использовать подключаемую базу данных для общих операций с базой данных. В противном случае не создавайте его как контейнер и не используйте мультитенантность . Однако начиная с версии 12cR2 вы все равно не можете создать неконтейнерную базу данных.
И, скорее всего, образцы схем могли быть уже установлены, вам просто нужно разблокировать их в подключаемой базе данных.
Например, если вы создали подключаемую базу данных как pdborcl :
Чтобы отобразить PDB и подключиться к подключаемой базе данных из корневого контейнера:
Примечание : ответы, предлагающие использовать _ORACLE_SCRIPT скрытый параметр для установки значения true, опасны для производственной системы и могут также сделать недействительным ваш контракт на поддержку. Осторожно, без консультации со службой поддержки Oracle НЕ используйте скрытые параметры .
В ORACLE SQL Developer это получает execute, когда я пытаюсь запустить вызов процедуры с ее выводом. create or replace procedure allparam_proc(name varchar2,nestedtable_param VARCHAR2_TT) is begin DBMS_OUTPUT.PUT_LINE('allparam_proc'); FOR i IN nestedtable_param.FIRST..nestedtable_param.LAST LOOP.
В Toad 9 при выполнении 'SET DEFINE OFF;' я получаю ошибку как 'ORA-00922: отсутствует или недопустимый параметр'
Как указывали другие, "set server output on"-это команда SQL*Plus. Если вам нужна эта функциональность в plsql, то вы ищете DBMS_OUTPUT.ENABLE. Ваш вышеуказанный блок становится:
Если использовать SQL*plus, то этот код работает нормально.
Похоже, что вы использовали SET SERVEROUTPUT ON в процедуре PL/SQL (или анонимный блок), например
Возможно, вы не опубликовали все, что у вас есть на самом деле; является ли эта команда SET частью более масштабной процедуры? Если да, то уберите его.
Похожие вопросы:
Я пытаюсь выполнить блок кода PL/SQL, используя запрос JDBC, как показано ниже set serveroutput on; declare .. BEGIN DBMS_OUTPUT.ENABLE(); .. .. DBMS_OUTPUT.PUT_LINE(X); END; Но я получаю ошибку как.
В ORACLE SQL Developer это получает execute, когда я пытаюсь запустить вызов процедуры с ее выводом. create or replace procedure allparam_proc(name varchar2,nestedtable_param VARCHAR2_TT) is begin.
В Toad 9 при выполнении 'SET DEFINE OFF;' я получаю ошибку как 'ORA-00922: отсутствует или недопустимый параметр'
Это plsql возвращает ошибку: ORA-00922: отсутствует или недействителен параметр DECLARE BEGIN EXECUTE IMMEDIATE 'ALTER USER upper(:USERNAME) IDENTIFIED BY :NEW_PASSWORD REPLACE :OLD_PASSWORD'; END;
Я разрабатываю образец java, в котором я выполняю запрос один за другим, чтобы получить ddl indexces. Мой код java-это - Statement stmt2 = con.createStatement(); ResultSet rs2 =null; String query =.
Получение ошибки как ORA-00922: отсутствует или недопустима опция при создании процедуры PL / SQL, вот процедура. CREATE OR REPLACE consession_calculate(item_ID IN NUMBER, CON_PRICE OUT NUMBER) IS.
create table Consulting Project( ID varchar(4) not null, Name varchar(5) not null, Gender varchar(1) not null, Job_Title varchar(15) not null, Contribution number(1,0) not null ) и получил.
При входе в базу данных Oracle может выдаваться ошибка ORA-01017: invalid username/password; logon denied, хотя пароль при вводе набирается правильный. Причин может быть несколько, но в данном посте будет рассмотрена одна из них – инициализационный параметр sec_case_sensitive_logon.
Параметр sec_case_sensitive_logon позволяет включать или выключать чувствительность к регистру паролей в базе данных Oracle (БД). Параметр принимает два значения – TRUE или FALSE, при TRUE – пароли пользователей чувствительны к регистру, а при FALSE, соответственно, нет. Значение параметра sec_case_sensitive_logon можно просмотреть командой show parameter sec_case_sensitive_logon. Запрос ниже показывает, что параметр имеет значение TRUE. Это означает, что чувствительность к регистру паролей в БД включена.
Изменить значение параметра sec_case_sensitive_logon можно командой alter system set sec_case_sensitive_logon = false или alter system set sec_case_sensitive_logon = true. Команда ниже отключает чувствительность к регистру паролей.
Начиная с версии Oracle Database 12.1.0.1, параметр sec_case_sensitive_logon считается устаревшим. Это значит, что Oracle не вносит в него дальнейших изменений, и пользователи не должны менять значение параметра. Значение по умолчанию TRUE. Если же значение будет изменено, то пользователь получит предупреждение при запуске БД:
Также, начиная с Oracle Database 12c release 2 (12.2), по умолчанию версией протокола аутентификации является 12 (известный как Exclusive Mode). Этот протокол для аутентификации требует чувствительные к регистру пароли. Например, для Oracle Database 12c release 2 (12.2) значение по умолчанию для параметра SQLNET.ALLOWED_LOGON_VERSION_SERVER в файле SQLNET.ORA равно 12. Файл SQLNET.ORA по умолчанию находится в следующей директории операционной системы:
Параметр SQLNET.ALLOWED_LOGON_VERSION_SERVER отображает протокол аутентификации, используемый для сервера. И по умолчанию, Oracle больше не поддерживает пароли, не чувствительные к регистру – разрешены только новые версии паролей (11G и 12C). В связи с этим при входе в БД с значением FALSE для параметра sec_case_sensitive_logon можно получить ошибку:
ORA-01017: invalid username/password.
Данная ситуация возникает из-за того, что параметр sec_case_sensitive_logon имеет значение FALSE и параметр SQLNET.ALLOWED_LOGON_VERSION_SERVER имеет значение 12 или 12a. Oracle Database не запрещает использование значения FALSE параметра sec_case_sensitive_logon, когда значение SQLNET.ALLOWED_LOGON_VERSION_SERVER равно 12 или 12a. Но при таких условиях, все учетные записи кроме имеющих роль sysdba становятся недоступными. И именно такие настройки вызывают ошибку ORA-01017: invalid username/password. Есть два способа выхода из этой ситуации.
Вторым способом является присвоение параметру SQLNET.ALLOWED_LOGON_VERSION_SERVER в файле SQLNET.ora значение, ниже 12, например, 11 версию протокола аутентификации. Но это решение подразумевает необходимость смены паролей для всех пользователей БД с ролью, отличной от sysdba. Ниже в примерах показывается возникновение ошибки и ее решение двумя вышеописанными способами.
Пример 1. Возникновение ошибки при изменении параметра sec_case_sensitive_logon. Выполняется подключение к подключаемой базой данных (Pluggable Database – PDB) XEPDB1 Oracle Database 18c Express Edition под пользователем sys:
Проверяется текущее значение параметра sec_case_sensitive_logon. Результат команды показывает, что параметр чувствительности к регистру пароля включен:
Назначается пароль пользователю hr и выполняется выход из БД:
Выполняется подключение к базе данных под пользователем hr.
Подключение успешно прошло под пользователем hr.
Далее, выполняется отключение от базы под пользователем hr и подключение к контейнерной базе данных (Container Database – CDB) Oracle Dabase 18c Express Edition под пользователем sys.
Изменяется значение параметра sec_case_sensitive_logon на FALSE.
Проверяется новое значение параметра sec_case_sensitive_logon.
Для информации: значение параметра sec_case_sensitive_logon в Oracle Database 18c Express Edition необходимо сменить в контейнерной базе данных, а не в подключаемой базе данных. В противном случае можно получить следующую ошибку:
ERROR at line 1: ORA-65040: operation not allowed from within a pluggable database
Далее, нужно подключиться к подключаемой базе данных под пользователем hr.
При подключении система выдает ошибку, сообщающую о том, что был введен неверный логин или пароль.
Проверяется, поможет ли возврат значения параметра успешно подключиться к базе данных. Подключение к БД происходит под пользователем hr еще раз.
Как можно убедиться, подключение прошло без ошибок после возвращения значения на TRUE.
Пример 2. Возвращается параметру sec_case_sensitive_logon значение FALSE, чтобы смоделировать ошибку и показать второй способ решения. Выполняется подключение к БД под пользователем sys и меняется значение параметра sec_case_sensitive_logon на FALSE.
Выполняется исправление ошибки другим способом. Осуществляется переход в папку $ORACLE_HOME/network/admin и проверяется ее содержимое.
На подключение к базе данных также влияет значение параметра SQLNET.ALLOWED_LOGON_VERSION_SERVER в файле sqlnet.ora. Как было сказано выше, по умолчанию для версий Oracle Database 12.2 и выше используется версия алгоритма пароля, равная 12. В Oracle Database 18с Express Edition, которая используется в данном примере, параметр SQLNET.ALLOWED_LOGON_VERSION_SERVER в файле sqlnet.ora отсутствует. Это значит, что БД использует версию алгоритма паролей равную 12 по умолчанию. Вручную, добавив строку SQLNET.ALLOWED_LOGON_VERSION_SERVER=11 задается значение параметра равное 11. После этого содержимое файла sqlnet.ora выглядит следующим образом:
Пароли пользователей кроме имеющих роль sysdba должны быть изменены после изменения значения параметра SQLNET.ALLOWED_LOGON_VERSION_SERVER на 11 версию. Иначе они получат ошибку при входе, как показано в примере ниже.
Выполняется подключение под пользователем sys и проверяется версия протоколов пароля пользователя hr:
Результат выполнения команды показывает, что у hr до сих пор применяются версии протоколов пароля 11g и 12c. Необходимо сменить ему пароль, чтобы в данном случае исключить ошибку при входе пользователя. Для этого, изменяется пароль пользователю hr и проверяется версия паролей пользователя hr.
После смены пароля выполняется подключение под пользователем hr. Ниже результат команды показывает, что подключение прошло успешно.
На этом завершается описание способов решения ошибки ORA-01017: invalid username/password; logon denied, связанной с параметром sec_case_sensitive_logon.
Администрирование Oracle. Программирование на PL\SQL. А также все что касается лидера разработки корпоративного ПО.
среда, сентября 21, 2011
Oracle Gateway 11.2 для Oracle Database 10.2 для WinX64
Многие из тех, кому по той или иной причине приходится администрировать СУБД Oracle на платформе Windows Server, кто переехал на 64-битную платформу, были неприятно удивлены, что такая простая штука как hsodbc теперь не работает (касается версий Oracle выше 9.2).
Весьма неприятное известие для тех, кто собирает данные из множества сторонних баз, MS SQL Server, DB2 и даже, если у вас кто-то предоставляет данные в виде регулярно обновляемого Excel-файла или базы в Access или dBase, было проще всего организовать ODBC-коннект через HSODBC. Но халява кончилась.
- рядом с Oracle Database 10.1-11.2 для Windows x64 поставить 32-битную версию Oracle Database, настроить в ней hsodbc, настроить Listener на нестандартный порт;
- извращаться с инициацией передачи данных со стороны источника;
- установить Oracle Database Gateway 11.2 и организовать коннект через него.
- Имя листенера должно отличаться от основного, скажем LISTENERGTW
- HOST=<имя хоста с гейтом>
- PORT=<отличный от порта основного слушателя, например 1522>
- SID_NAME=MSDB
SID_LIST_LISTENERGTW=
(SID_LIST=
(SID_DESC=
(SID_NAME= msdb )
(ORACLE_HOME= <OraGtw_home> )
(PROGRAM= <OraGtw_home> \bin\dg4odbc.exe )
)
)
CREATE DATABASE LINK msdb_link CONNECT TO
msuser IDENTIFIED BY mspass
USING ' msdb ';
- Ошибка:
ORA-28513: internal error in heterogeneous remote agent
ORA-02063: preceding line from MSDB_LINK - Источник проблемы в неправильной настройке гетерогенного сервиса, как правило, это означает, что:
- в OraGtw_home\hs отсутствует файл init<SID>.ora, т.е. в нашем примере initmsdb.ora;
- либо в этом файле указан неверный DSN;
- либо DSN отсутствует в настройках ODBC для 64-битных приложений.
- Ошибка:
ORA-28546: connection initialization failed, probable Net8 admin error
ORA-02063: preceding line from TEST_NAVI - Источник проблемы где-то в TNSNAMES, скорее всего просто нужно пересчитать скобки в конфигурационном файле и перепроверить положение записи (HS=OK).
Если кто знает способ редактирования ODBC для 64-битных программ без возни с реестром, пожалуйста, подскажите.
Буду рад, если это поможет кому-нибудь безболезненно переехать с HSODBC на Database Gateway for ODBC.Читайте также: