web-dev-qa-db-fra.com

Comment l'espace de table par défaut est-il déterminé lors de la création d'une table?

Le paramètre Tablespace est facultatif lors de la création de tables.

Lors de l'exécution d'un CREATE TABLE, Oracle attribue celle par défaut si elle n'a pas été définie.

Dans la base de données par défaut, il y a un espace de table "USERS". Si plusieurs tablespaces étaient définis, lequel serait attribué?

27
Centurion

Lorsque vous créez un nouvel utilisateur, vous pouvez éventuellement spécifier l'espace disque logique par défaut et l'espace disque logique temporaire par défaut pour tous les objets créés par cet utilisateur. Par exemple:

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

Si vous omettez les clauses lors de la création de l'utilisateur, l'utilisateur héritera des valeurs par défaut de la base de données. Ceux-ci peuvent être interrogés comme suit:

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>

... et modifié comme suit:

alter database default tablespace PHILTS; 

alter database default temporary tablespace PHILTEMP;

Pour interroger les valeurs par défaut pour un utilisateur donné, utilisez la requête suivante:

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 pour connaître l'espace disque logique par défaut de chaque utilisateur. ALTER DATABASE DEFAULT TABLESPACE othertablespace; pour modifier l'espace disque logique par défaut. Habituellement, s'il existe certains espaces de table, l'administrateur doit définir l'espace de table par défaut lors de la création d'un nouvel utilisateur comme CREATE USER myuser IDENTIFIED BY mypass DEFAULT TABLESPACE onetablespace