Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

ORA-01031 1С:Предприятие и СУБД

Ошибка ORA-01031: insufficient privileges в Oracle DB — настройка прав

Обновлено: 26.08.2026 · Официальная документация ↗
  • Ошибка ORA-01031: insufficient privileges при выполнении DDL/DML операций, создании пакетов или процедур.
  • Невозможность подключиться локально под учетной записью sysdba (sqlplus / as sysdba).
  • Сбой выполнения административных команд (ALTER SYSTEM, GRANT, CREATE USER).

1. Проверка прямых системных привилегий и ролей пользователя

-- Проверка системных привилегий
SELECT * FROM dba_sys_privs WHERE grantee = 'APP_USER';

-- Проверка назначенных ролей
SELECT * FROM dba_role_privs WHERE grantee = 'APP_USER';

-- Проверка объектных прав на таблицы
SELECT * FROM dba_tab_privs WHERE grantee = 'APP_USER';

2. Выдача необходимых системных прав

-- Разрешение создания сессий и таблиц
GRANT CREATE SESSION, CREATE TABLE, CREATE VIEW TO APP_USER;

-- Выдача прав на выполнение пакета
GRANT EXECUTE ON DBMS_LOCK TO APP_USER;

3. Решение сбоя 'sqlplus / as sysdba' на уровне Linux

Если ORA-01031 возникает при локальном входе без пароля через сокет ОС, убедитесь, что пользователь ОС входит в группу dba:

# Проверка групп текущего пользователя Linux
id

# Добавление пользователя в группу dba
usermod -aG dba oracle

4. Проверка файла паролей (Password File) для удаленного SYSDBA

-- Проверка пользователей с административными привилегиями
SELECT * FROM v$pwfile_users;

Если файл паролей поврежден, пересоздайте его утилитой orapwd:

orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=MySysPassword entries=10 force=y
💡 Практика специалистов: Не раздавайте роль `DBA` прикладным сервисам для устранения ORA-01031. Используйте принцип наименьших привилегий (Principle of Least Privilege), создавая изолированные роли с точечными `GRANT` на конкретные объекты.

Частые вопросы (FAQ)

Почему ORA-01031 возникает при создании представления (CREATE VIEW), хотя на таблицу есть SELECT?

Для создания VIEW требуется прямая системная привилегия CREATE VIEW, а также прямые (не через роли) права SELECT на все таблицы, участвующие в представлении.

Что такое опция WITH ADMIN OPTION / WITH GRANT OPTION?

Опция WITH GRANT OPTION позволяет пользователю передавать полученные объектные права другим схемам. Без этой опции попытка передать права вызовет ORA-01031.

Влияет ли параметр REMOTE_LOGIN_PASSWORDFILE на ORA-01031?

Да. Если remote_login_passwordfile установлен в NONE, подключение под SYSDBA по сети невозможно и будет отклоняться с ORA-01031. Значение должно быть EXCLUSIVE.

Почему триггер падает с ORA-01031 при вызове динамического SQL (EXECUTE IMMEDIATE)?

Динамический SQL внутри хранимого кода выполняется с прямыми правами владельца схемы. Роли, назначенные владельцу, игнорируются.

Полезные материалы
Рекомендуем