したがって、私はSYSDBAとしてOracleに接続しており、次のコマンドを実行しようとしています。
create user C##demo identified by demopassword;
それはユーザー作成で終わります。
次に、実行します:
alter user C##demo default tablespace PAVEL_DATA temporary tablespace PAVEL_TEMP;
これはエラーで終了します:
ORA-00959:表領域「PAVEL_DATA」が存在しません
しかし、このコマンドを実行すると:
SELECT TABLESPACE_NAME, STATUS, CONTENTS
FROM USER_TABLESPACES;
私はテーブルスペースを見ることができます:
TABLESPACE_NAME STATUS CONTENTS
------------------------------ --------- ---------
SYSTEM ONLINE PERMANENT
SYSAUX ONLINE PERMANENT
TEMP ONLINE TEMPORARY
USERS ONLINE PERMANENT
UNDOTBS2 ONLINE UNDO
PAVEL_DATA ONLINE PERMANENT
PAVEL_TEMP ONLINE TEMPORARY
では、作成時にエラーテーブルスペースが存在しないのはなぜですか?
[〜#〜]編集[〜#〜]
コメントに従って続けて、これは私が実行したときに私が見るものですselect tablespace_name, con_id from cdb_tablespaces
:
TABLESPACE_NAME CON_ID
------------------------------ ----------
PAVEL_DATA 1
PAVEL_TEMP 1
SYSTEM 4
SYSAUX 4
TEMP 4
USERS 4
TABLESPACE_NAME CON_ID
------------------------------ ----------
SYSTEM 3
SYSAUX 3
TEMP 3
USERS 3
EXAMPLE 3
PAVEL_TEMP 3
PAVEL_DATA 3
したがって、両方のテーブルスペースがDB $ ROOT(id = 1)とプラガブルデータベース(id> 2)に作成されます。それでも、プラガブルデータベースに接続すると、同じエラーが発生します。ばかげているに違いないが、今は盲目だ...
共通ユーザーを作成するとき、次の句を使用して指定されたデフォルトのテーブルスペース、一時テーブルスペース、またはプロファイルは、CDBに属するすべてのコンテナーに存在する必要があります。
- デフォルトのテーブルスペース
- 一時テーブルスペース
- クォータ
- プロフィール
更新した出力によると、PAVEL_DATA
テーブルスペースはコンテナ番号4
に存在しないようです。
さらに、CREATE USER
またはALTER USER
コマンドでDEFAULT TABLESPACE
またはDEFAULT TEMPORARY TABLESPACE
句を指定すると、現在閉じているPDBSに指定されたデフォルト/一時テーブルスペースが存在しない場合、成功する可能性があります。ただし、作成または変更したばかりの共通ユーザーを使用して、これらの新しく開いたPDBを開こうとしたり接続しようとすると、エラーが発生する場合があります。
デモンストレーション:
SQL> create user c##_sales_hr identified by password default tablespace tbs_sales;
create user c##_sales_hr identified by password default tablespace tbs_sales
*
ERROR at line 1:
ORA-65048: error encountered when processing the current DDL statement in
pluggable database ORAPDB1
ORA-00959: tablespace 'TBS_SALES' does not exist
SQL> select tablespace_name, con_id from cdb_tablespaces;
TABLESPACE_NAME CON_ID
------------------------------ ----------
SYSTEM 1
SYSAUX 1
UNDOTBS1 1
TEMP 1
USERS 1
TBS_SALES 1
SYSTEM 4
SYSAUX 4
TEMP 4
ORAPDB1_TBS1 4
MGMT_ECM_DEPOT_TS 4
11 rows selected.
SQL> alter session set container=orapdb1;
Session altered.
SQL> create tablespace tbs_sales datafile '+DATA' size 50M;
Tablespace created.
SQL> conn / as sysdba
Connected.
SQL> create user c##_sales_hr identified by password default tablespace tbs_sales;
User created.