web-dev-qa-db-ja.com

Oracle 11g Express Edition-スキーマ認可識別子がないか無効です

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:スキーマ許可ID 02421が欠落しているか無効です。00000-「スキーマ許可IDが欠落しているか無効です」

*原因:スキーマ名が欠落しているか、スキーマ作成ステートメントの許可文節に誤りがあります。

*アクション:名前が存在する場合、現在のスキーマと同じである必要があります。

私はPostgresとMySqlに精通していますが、Oracleはかなり異なっているようです。誰かがここで何が悪いのか教えてもらえますか?

3
Black

スキーマを作成

目的

CREATE SCHEMAステートメントを使用して、複数のテーブルとビューを作成し、独自のスキーマで単一のトランザクションで複数の付与を実行します。

さて、あなたは複数の問題を抱えています。まず、新しく作成したユーザーにCREATE SESSIONシステム権限を付与する必要があります。次に、データ型がOracleで互換性がありません(intnumberに、textvarchar2に変換する必要があります)。

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.
2
JSapkota