Close Menu
  • Home
  • Databases
    • Oracle
      • ASM
      • Data Guard
      • RAC
  • Performance
  • Tools
  • Troubleshooting
  • Python
  • Shell Script
Search

Oracle RAC 12.2 no VMware Workstation — Post 3: Instalação do Grid Infrastructure

2026-04-05 Oracle By Henrique

Oracle RAC 12.2 no VMware Workstation — Post 1: Configuração do VMware e Openfiler

2026-04-05 Oracle By Henrique

Oracle RAC 12.2 no VMware Workstation – Post 2: Configuração do Oracle Linux e iSCSI

2026-04-05 Oracle By Henrique
YouTube LinkedIn RSS
  • Sobre
  • Contato
  • Legal
    • Aviso Legal
    • Política de Cookies
    • Política de Privacidade
    • Termos de Uso
  • RSS
  • Português
    • Inglês
Execute StepExecute Step
YouTube LinkedIn RSS
  • Home
  • Databases
    • Oracle
      • ASM
      • Data Guard
      • RAC
  • Performance
  • Tools
  • Troubleshooting
  • Python
  • Shell Script
Execute StepExecute Step
Home » ORA-01031 — Privilégio Insuficiente ao Criar Coluna IDENTITY
Oracle Oracle

ORA-01031 — Privilégio Insuficiente ao Criar Coluna IDENTITY

HenriqueBy Henrique2026-04-03Updated:2026-04-034 Mins Read
Share
Facebook Twitter LinkedIn Pinterest Email Telegram WhatsApp

This post is also available in: English (Inglês)

Você tenta criar uma tabela com coluna de identidade e o Oracle responde com erro de privilégio — mesmo que você tenha CREATE TABLE. Veja por que isso acontece e como resolver.

SQL> CREATE TABLE pedidos (
  2    id   INT GENERATED BY DEFAULT AS IDENTITY,
  3    desc VARCHAR2(100)
  4  );
  id   INT GENERATED BY DEFAULT AS IDENTITY,
*
ERROR at line 2:
ORA-01031: insufficient privileges

O erro aparece mesmo com CREATE TABLE concedido. O problema está em outro privilégio que passa despercebido.


Por Que Acontece

Colunas IDENTITY foram introduzidas no Oracle 12c como um atalho para o padrão sequence + default. Internamente, ao criar uma coluna identity, o Oracle cria uma sequence implícita associada àquela coluna. Essa sequence é gerenciada pelo banco, mas continua sendo uma sequence — e criar uma sequence exige o privilégio CREATE SEQUENCE.

Sem ele, o CREATE TABLE falha com ORA-01031 antes mesmo de tocar na tabela em si.


Diagnóstico

Verifique os privilégios do usuário atual:

-- Privilégios de sistema da sessão atual
SELECT privilege
FROM   session_privs
ORDER BY privilege;

Se CREATE SEQUENCE não aparecer na lista, esse é o problema.

Para verificar um usuário específico (como DBA):

SELECT privilege
FROM   dba_sys_privs
WHERE  grantee = 'MEU_USUARIO'
ORDER BY privilege;

Solução

Conceda o privilégio CREATE SEQUENCE ao usuário:

-- Conectado como DBA
GRANT CREATE SEQUENCE TO meu_usuario;

Após a concessão, a criação da tabela funciona normalmente:

SQL> CREATE TABLE pedidos (
  2    id   INT GENERATED BY DEFAULT AS IDENTITY,
  3    desc VARCHAR2(100)
  4  );

Table created.

As Três Variantes de IDENTITY — Todas Exigem CREATE SEQUENCE

O comportamento é o mesmo para as três formas de coluna identity disponíveis no Oracle 12c+:

VarianteComportamentoTambém falha sem CREATE SEQUENCE?
GENERATED ALWAYS AS IDENTITYOracle sempre gera o valor; INSERT explícito na coluna é bloqueado✅ Sim
GENERATED BY DEFAULT AS IDENTITYOracle gera o valor por padrão; INSERT explícito é permitido✅ Sim
GENERATED BY DEFAULT ON NULL AS IDENTITYOracle gera o valor quando o INSERT passa NULL na coluna✅ Sim

Independente da variante escolhida, a sequence implícita é sempre criada — e o CREATE SEQUENCE é sempre exigido.


Como Reproduzir em Lab

-- 1. Criar usuário de teste (conectado como DBA)
CREATE USER lab_identity IDENTIFIED BY lab123;
GRANT CREATE SESSION TO lab_identity;
GRANT CREATE TABLE TO lab_identity;
-- Intencionalmente SEM CREATE SEQUENCE

-- 2. Conectar como lab_identity e reproduzir o erro
sqlplus lab_identity/lab123@ORCLPDB1

CREATE TABLE t_identidade (
  id   INT GENERATED BY DEFAULT AS IDENTITY,
  nome VARCHAR2(50)
);
-- Esperado: ORA-01031: insufficient privileges

-- 3. Voltar como DBA e conceder CREATE SEQUENCE
CONNECT / AS SYSDBA
GRANT CREATE SEQUENCE TO lab_identity;

-- 4. Reconectar como lab_identity e confirmar a correção
sqlplus lab_identity/lab123@ORCLPDB1

CREATE TABLE t_identidade (
  id   INT GENERATED BY DEFAULT AS IDENTITY,
  nome VARCHAR2(50)
);
-- Esperado: Table created.

-- 5. Confirmar a sequence implícita criada pelo Oracle
SELECT sequence_name, min_value, max_value, increment_by, cache_size
FROM   user_sequences;

-- Limpeza
DROP TABLE t_identidade;

Checklist Rápido

-- 1. Verificar privilégios da sessão
SELECT privilege FROM session_privs ORDER BY privilege;

-- 2. Conceder CREATE SEQUENCE (como DBA)
GRANT CREATE SEQUENCE TO meu_usuario;

-- 3. Recriar a tabela
CREATE TABLE minha_tabela (
  id INT GENERATED BY DEFAULT AS IDENTITY,
  ...
);

Referências

  • Oracle Database SQL Language Reference — Identity Columns
  • Oracle Database Security Guide — System Privileges

create sequence identity column lab ora-01031 troubleshooting
Share. Facebook Twitter Pinterest LinkedIn Tumblr Email WhatsApp
Previous ArticleORA-12547 — TNS:lost contact ao conectar com sqlplus
Next Article Oracle RAC 12.2 no VMware Workstation – Apresentação da Série

Related Posts

Oracle

ORA-12547 — TNS:lost contact ao conectar com sqlplus

2026-04-03
Read More
Oracle

Resetando Sequences no Oracle: RESTART e o Método Clássico

2026-03-31
Read More
Oracle

OPATCHAUTO-72115 — Sessão Anterior Não Completada no Out-of-Place Patching

2026-03-30
Read More
Add A Comment
Leave A Reply Cancel Reply

Demo
Follow Me
  • Email
  • GitHub
  • LinkedIn
  • RSS
  • YouTube

INS-06006 – Passwordless SSH Connectivity Not Set Up

2026-02-2614 Views

Limpeza da biblioteca de software OEM: Purge seguro e controle de crescimento de swlib

2026-02-215 Views

ORA-29548 – Como corrigir o erro “Java System Class Reported” no Oracle Database

2026-03-053 Views
Demo
Tags
alter-sequence asm chrony compatible-asm cv-assume-distid database-vault datapatch disk-group dvsys enterprise manager grid-infrastructure how-to identity-column ins-08101 inventory java lab ntp oem oem-13c opatchauto opatchauto-72083 ora-01400 ora-15221 ora-29548 oracle oracle-rac oracle-sequence patch de dados patching prvg-01017 rhel-8 runcluvfy software-library storage troubleshooting
Execute Step
YouTube LinkedIn RSS
  • Home
  • Sobre
  • Contato
  • RSS
  • Português
    • English (Inglês)
© 2026 ExecuteStep. Designed by ThemeSphere.

Type above and press Enter to search. Press Esc to cancel.

Ad Blocker Enabled!
Ad Blocker Enabled!
Our website is made possible by displaying online advertisements to our visitors. Please support us by disabling your Ad Blocker.