web-dev-qa-db-ja.com

テーブルの作成時にデフォルトのテーブルスペースはどのように決定されますか?

テーブルを作成する場合、Tablespaceパラメータはオプションです。

CREATE TABLEステートメントの実行時に、Oracleは、定義されていない場合はデフォルトのステートメントを割り当てます。

デフォルトのデータベースには、「USERS」テーブルスペースがあります。複数のテーブルスペースが定義されている場合、どれが割り当てられますか?

27
Centurion

新しいユーザーを作成するときに、オプションで、そのユーザーが作成したオブジェクトのデフォルトのテーブルスペースとデフォルトの一時テーブルスペースを指定できます。例えば:

CREATE USER phil IDENTIFIED BY l33t
       DEFAULT TABLESPACE philtablespace
       TEMPORARY TABLESPACE philtemp;

ユーザーの作成時に句を省略すると、ユーザーはデータベースのデフォルト値を継承します。これらは次のように照会できます。

SQL> select *
  2  from database_properties
  3  where property_name like 'DEFAULT%TABLESPACE';

PROPERTY_NAME                  PROPERTY_VALUE       DESCRIPTION
------------------------------ -------------------- ----------------------------------------
DEFAULT_TEMP_TABLESPACE        TEMP                 Name of default temporary tablespace
DEFAULT_PERMANENT_TABLESPACE   USERS                Name of default permanent tablespace

SQL>

...そしてそのように変更されました:

alter database default tablespace PHILTS; 

alter database default temporary tablespace PHILTEMP;

特定のユーザーのデフォルト値をクエリするには、次のクエリを使用します。

SQL> select USERNAME, DEFAULT_TABLESPACE, TEMPORARY_TABLESPACE
  2  from DBA_USERS
  3  where USERNAME='PHIL';

USERNAME                       DEFAULT_TABLESPACE             TEMPORARY_TABLESPACE
------------------------------ ------------------------------ ------------------------------
PHIL                           USERS                          TEMP

SQL>
41
Philᵀᴹ

SELECT DEFAULT_TABLESPACE FROM DBA_USERS各ユーザーのデフォルトのテーブルスペースを確認します。 ALTER DATABASE DEFAULT TABLESPACE othertablespace;はデフォルトのテーブルスペースを変更します。通常、いくつかのテーブルスペースがある場合、管理者はCREATE USER myuser IDENTIFIED BY mypass DEFAULT TABLESPACE onetablespaceのような新しいユーザーを作成するときにデフォルトのテーブルスペースを設定する必要があります