Eu tenho uma nova instância do Oracle Express 11g. Estou tentando criar um novo esquema com uma tabela e uma exibição no banco de dados padrão (xe).
Meu roteiro é:
create user XAuthority identified by mysecret;
alter session set current_schema = XAuthority;
create schema authorization XAuthority
create table CUSTOMER ( ID int, CUSTOMER text)
create view CUSTOMER_VIEW as select * from CUSTOMER
grant select on CUSTOMER_VIEW to xareadonly;
mas recebo um erro:
Erro SQL: ORA-02421: identificador de autorização de esquema ausente ou inválido 02421. 00000 - "identificador de autorização de esquema ausente ou inválido"
*Causa: o nome do esquema está ausente ou está incorreto em uma cláusula de autorização de uma instrução de criação de esquema.
*Ação: Se o nome estiver presente, ele deve ser igual ao esquema atual.
Estou familiarizado com Postgres e MySql, mas parece que o Oracle é bem diferente. Alguém pode me dizer o que há de errado aqui?
Bem, você tem vários problemas. Primeiro de tudo, você precisa ter
CREATE SESSION
o privilégio do sistema concedido ao usuário recém-criado. Em segundo lugar, seus tipos de dados são incompatíveis no Oracle (int
devem ser convertidos paranumber
etext
paravarchar2
).Para usar a
CREATE SCHEMA
instrução, você precisa estar conectado ao banco de dados como o usuário que você especificou na instrução.O problema é que você não está conectado ao banco de dados
xauthority
alterando a sessão.O usuário deveria ser
xauthority
, mas ainda éSYS
.Você precisa
create session
de privilégio de sistema para se conectar ao banco de dados.Você precisa de cota no espaço de tabela para criar objetos de esquema, como tabela.