Oracle

Oracle 11g Express Edition - 模式授權標識符缺失或無效

  • July 20, 2017

我有一個全新的 Oracle Express 11g 實例。我正在嘗試在預設數據庫(xe)中創建一個帶有表和視圖的新模式。

我的腳本是:

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;

但我收到一個錯誤:

SQL 錯誤:ORA-02421:架構授權標識符 02421 缺失或無效。00000 - “架構授權標識符缺失或無效”

*原因:創建模式語句的授權子句中模式名稱失去或不正確。

*操作:如果名稱存在,它必須與目前架構相同。

我熟悉 Postgres 和 MySql,但 Oracle 似乎完全不同。誰能告訴我這裡有什麼問題?

創建模式

目的

使用 CREATE SCHEMA 語句在單個事務中創建多個表和視圖並在您自己的模式中執行多個授權。

那麼你有多個問題。首先,您需要為CREATE SESSION新創建的使用者授予系統權限。其次,您的數據類型在 Oracle 中不兼容(int應轉換為和number)。text``varchar2

為了使用CREATE SCHEMA語句,您需要以您在語句中指定的使用者身份連接到數據庫。

問題是您沒有xauthority通過更改會話連接到數據庫。

SQL> conn sys/password
Connected.

SQL> create user XAuthority identified by mysecret;

User created.

SQL> alter session set current_schema = XAuthority;

Session altered.

SQL> create schema authorization XAuthority
create table CUSTOMER(ID number, CUSTOMER_name varchar2(20))
create view CUSTOMER_VIEW as select * from CUSTOMER
grant select on CUSTOMER_VIEW to xareadonly;  2    3    4  
create schema authorization XAuthority
*
ERROR at line 1:
ORA-02421: missing or invalid schema authorization identifier

SQL> show user
USER is "SYS"

使用者應該是xauthority,但它仍然是SYS

您需要create session係統權限才能連接到數據庫。

SQL> grant create session to xauthority;

Grant succeeded.

您需要表空間配額來創建模式對象,例如表。

SQL> alter user xauthority quota unlimited on orapdb1_tbs1;

User altered.

SQL> conn xauthority/mysecret
Connected.

SQL> conn xauthority/mysecret
Connected.
SQL> create schema authorization XAuthority
create table CUSTOMER(ID number, CUSTOMER_name varchar2(20))
create view CUSTOMER_VIEW as select * from CUSTOMER;

Schema created.

引用自:https://dba.stackexchange.com/questions/160517