Oracleで1つの新しいスキーマを作成し、サンプルコードを使用します。サンプルコードは here で入手できます。
CREATE SCHEMA AUTHORIZATION oe
CREATE TABLE new_product
(color VARCHAR2(10) PRIMARY KEY, quantity NUMBER)
CREATE VIEW new_product_view
AS SELECT color, quantity FROM new_product WHERE color = 'RED'
GRANT select ON new_product_view TO scott
/
しかし、エラーが発生しました
ERROR at line 1:
ORA-02421: missing or invalid schema authorization identifier
また、使用可能なすべてのスキーマの名前をリストする方法を教えてください。使ってます
select username from dba_users;
スキーマをリストすることはできますが、ユーザーとスキーマには多対多の関係があるため、適切なアプローチではないと思います。つまり、ここですべてのスキーマ名を取得することはできません。
私を助けてください !!
Oracleから ドキュメント :
このステートメントは実際にはスキーマを作成しません。ユーザーを作成すると、Oracle Databaseは自動的にスキーマを作成します
したがって、最初に ユーザーの作成 とスキーマ名を指定する必要があります
クエリに関しては、ユーザー名のリストは利用できないスキーマ名と等しいため、問題ありません
UPDATE:今は実際にテストすることはできませんが、次のようになるはずです。
CREATE USER oe IDENTIFIED BY oePSWRD;
CREATE SCHEMA AUTHORIZATION oe
CREATE TABLE new_product
(color VARCHAR2(10) PRIMARY KEY, quantity NUMBER)
CREATE VIEW new_product_view
AS SELECT color, quantity FROM new_product WHERE color = 'RED'
GRANT select ON new_product_view TO scott;
ドキュメントから: http://docs.Oracle.com/cd/B28359_01/server.111/b28286/statements_6014.htm
スキーマ名は、Oracleデータベースのユーザー名と同じである必要があります。
すべてのユーザーを検索しますか、それともテーブル(たとえば)が存在するすべてのユーザーを検索しますか?後者の場合...
select distinct
owner
from
dba_tables
where
owner not in ('SYS','SYSTEM')
必要に応じて、リストに表示したくない他のユーザー名を追加します。