Oracle的表空间

1. oracle表空间:数据库的逻辑存储空间。

2. 表空间分类:

  (1), 永久表空间:用于存放数据库中要永久花存储的对象,比如表,视图等。

  

  (2),临时表空间: 中间存储过程,比如临时变量。

  (3),UNDO表空间: 用于保存事务所修改的备份。防止事务的回滚等操作。

3. 查看用户的表空间:

两个数据字典:

  (1),dba_tablespaces:针对系统管理员用户。

  

SQL> desc dba_tablespaces
 名称                                      是否为空? 类型
 ----------------------------------------- -------- ----------------------------
 TABLESPACE_NAME                           NOT NULL VARCHAR2(30)
 BLOCK_SIZE                                NOT NULL NUMBER
 INITIAL_EXTENT                                     NUMBER
 NEXT_EXTENT                                        NUMBER
 MIN_EXTENTS                               NOT NULL NUMBER
 MAX_EXTENTS                                        NUMBER
 MAX_SIZE                                           NUMBER
 PCT_INCREASE                                       NUMBER
 MIN_EXTLEN                                         NUMBER
 STATUS                                             VARCHAR2(9)
 CONTENTS                                           VARCHAR2(9)
 LOGGING                                            VARCHAR2(9)
 FORCE_LOGGING                                      VARCHAR2(3)
 EXTENT_MANAGEMENT                                  VARCHAR2(10)
 ALLOCATION_TYPE                                    VARCHAR2(9)
 PLUGGED_IN                                         VARCHAR2(3)
 SEGMENT_SPACE_MANAGEMENT                           VARCHAR2(6)
 DEF_TAB_COMPRESSION                                VARCHAR2(8)
 RETENTION                                          VARCHAR2(11)
 BIGFILE                                            VARCHAR2(3)
 PREDICATE_EVALUATION                               VARCHAR2(7)
 ENCRYPTED                                          VARCHAR2(3)
 COMPRESS_FOR
SQL> select tablespace_name from dba_tablespaces;

TABLESPACE_NAME
------------------------------
SYSTEM
SYSAUX    作为example的辅助表空间。
UNDOTBS1  存储撤销表空间的。
TEMP
USERS    永久性表空间
EXAMPLE    

已选择6行。

SQL>

  (2),user_tablespaces:普通用户。

SQL> desc user_tablespaces
 名称                                      是否为空? 类型
 ----------------------------------------- -------- ----------------------------
 TABLESPACE_NAME                           NOT NULL VARCHAR2(30)
 BLOCK_SIZE                                NOT NULL NUMBER
 INITIAL_EXTENT                                     NUMBER
 NEXT_EXTENT                                        NUMBER
 MIN_EXTENTS                               NOT NULL NUMBER
 MAX_EXTENTS                                        NUMBER
 MAX_SIZE                                           NUMBER
 PCT_INCREASE                                       NUMBER
 MIN_EXTLEN                                         NUMBER
 STATUS                                             VARCHAR2(9)
 CONTENTS                                           VARCHAR2(9)
 LOGGING                                            VARCHAR2(9)
 FORCE_LOGGING                                      VARCHAR2(3)
 EXTENT_MANAGEMENT                                  VARCHAR2(10)
 ALLOCATION_TYPE                                    VARCHAR2(9)
 SEGMENT_SPACE_MANAGEMENT                           VARCHAR2(6)
 DEF_TAB_COMPRESSION                                VARCHAR2(8)
 RETENTION                                          VARCHAR2(11)
 BIGFILE                                            VARCHAR2(3)
 PREDICATE_EVALUATION                               VARCHAR2(7)
 ENCRYPTED                                          VARCHAR2(3)
 COMPRESS_FOR                                       VARCHAR2(12)

SQL>
SQL> select tablespace_name from user_tablespaces;

TABLESPACE_NAME
------------------------------
SYSTEM
SYSAUX
UNDOTBS1
TEMP
USERS
EXAMPLE

已选择6行。

SQL>
SQL> connect scott/910214
已连接。
SQL> select tablespace_name from dba_tablespaces;
select tablespace_name from dba_tablespaces
                            *1 行出现错误:
ORA-00942: 表或视图不存在


SQL> select tablespace_name from user_tablespaces;

TABLESPACE_NAME
------------------------------
SYSTEM
SYSAUX
UNDOTBS1
TEMP
USERS
EXAMPLE

已选择6行。

SQL>

  (3),dba_users数据字典:系统管理员级别的;

  

SQL> connect system/910214
已连接。
SQL> desc dba_users;
 名称                                      是否为空? 类型
 ----------------------------------------- -------- ----------------------------
 USERNAME                                  NOT NULL VARCHAR2(30)
 USER_ID                                   NOT NULL NUMBER
 PASSWORD                                           VARCHAR2(30)
 ACCOUNT_STATUS                            NOT NULL VARCHAR2(32)
 LOCK_DATE                                          DATE
 EXPIRY_DATE                                        DATE
 DEFAULT_TABLESPACE                        NOT NULL VARCHAR2(30)
 TEMPORARY_TABLESPACE                      NOT NULL VARCHAR2(30)
 CREATED                                   NOT NULL DATE
 PROFILE                                   NOT NULL VARCHAR2(30)
 INITIAL_RSRC_CONSUMER_GROUP                        VARCHAR2(30)
 EXTERNAL_NAME                                      VARCHAR2(4000)
 PASSWORD_VERSIONS                                  VARCHAR2(8)
 EDITIONS_ENABLED                                   VARCHAR2(1)
 AUTHENTICATION_TYPE                                VARCHAR2(8)

SQL>
SQL> select default_tablespace,temporary_tablespace from dba_users;

DEFAULT_TABLESPACE             TEMPORARY_TABLESPACE
------------------------------ ------------------------------
SYSTEM                         TEMP
SYSTEM                         TEMP
SYSTEM                         TEMP
SYSAUX                         TEMP
SYSAUX                         TEMP
USERS                          TEMP
SYSTEM                         TEMP
SYSAUX                         TEMP
SYSAUX                         TEMP
SYSAUX                         TEMP
SYSAUX                         TEMP

DEFAULT_TABLESPACE             TEMPORARY_TABLESPACE
------------------------------ ------------------------------
SYSAUX                         TEMP
SYSAUX                         TEMP
SYSAUX                         TEMP
SYSAUX                         TEMP
SYSAUX                         TEMP
SYSAUX                         TEMP
SYSAUX                         TEMP
SYSAUX                         TEMP
SYSAUX                         TEMP
SYSAUX                         TEMP
SYSAUX                         TEMP

DEFAULT_TABLESPACE             TEMPORARY_TABLESPACE
------------------------------ ------------------------------
SYSAUX                         TEMP
USERS                          TEMP
USERS                          TEMP
USERS                          TEMP
USERS                          TEMP
USERS                          TEMP
USERS                          TEMP
USERS                          TEMP
USERS                          TEMP
USERS                          TEMP
USERS                          TEMP

DEFAULT_TABLESPACE             TEMPORARY_TABLESPACE
------------------------------ ------------------------------
USERS                          TEMP
USERS                          TEMP
USERS                          TEMP

已选择36行。

  (4),user_users数据字典:普通用户级别的。

3. 设置用户的默认或者临时表空间:

设置默认表空间就是用"default"设置临时表空间就是用“temporary”;

普通用户没有修改表空间的权限。要想让它可以修改就必须给它设置权限。

将system的默认表空间更改为system;

SQL>
SQL> alter user system
  2  default tablespace  system;

用户已更改。

SQL>

4. 创建表空间:(永久表空间,临时表空间)

  (1), 创建永久表空间:

  

SQL> create tablespace test1_tablespace
  2  datafile 'test1file.dbf' size 10m;

表空间已创建。

SQL>

  (2), 创建临时表空间:

  

SQL>
SQL> create temporary tablespace temptest1_tablespace
  2  tempfile 'tempfile1.dbf' size 10m;

表空间已创建。

  (3), 查看表空间:

SQL> desc dba_data_files
 名称                                      是否为空? 类型
 ----------------------------------------- -------- ----------------------------
 FILE_NAME                                          VARCHAR2(513)
 FILE_ID                                            NUMBER
 TABLESPACE_NAME                                    VARCHAR2(30)
 BYTES                                              NUMBER
 BLOCKS                                             NUMBER
 STATUS                                             VARCHAR2(9)
 RELATIVE_FNO                                       NUMBER
 AUTOEXTENSIBLE                                     VARCHAR2(3)
 MAXBYTES                                           NUMBER
 MAXBLOCKS                                          NUMBER
 INCREMENT_BY                                       NUMBER
 USER_BYTES                                         NUMBER
 USER_BLOCKS                                        NUMBER
 ONLINE_STATUS                                      VARCHAR2(7)

默认情况下数据文件存放的位置(默认表空间):

SQL> select file_name from dba_data_files where tablespace_name='TEST1_TABLESPACE';

FILE_NAME
--------------------------------------------------------------------------------
F:APPWYLPRODUCT11.2.0DBHOME_1DATABASETEST1FILE.DBF

默认情况下数据文件存放的位置(临时表空间):

SQL> select file_name from dba_temp_files where tablespace_name='TEMPTEST1_TABLESPACE';

FILE_NAME
--------------------------------------------------------------------------------
F:APPWYLPRODUCT11.2.0DBHOME_1DATABASETEMPFILE1.DBF

SQL>

5.修改表空间:

  1. 状态:

    设置联机或脱机状态:

  ALTER TABLESPACE tablespace_name ONLINE | OFFLINE;

    

SQL> select file_name from dba_temp_files where tablespace_name='TEMPTEST1_TABLESPACE';

FILE_NAME
--------------------------------------------------------------------------------
F:APPWYLPRODUCT11.2.0DBHOME_1DATABASETEMPFILE1.DBF

SQL> ALTER TABLESPACE test1_tablespace OFFLINE;

表空间已更改。

SQL> desc dba_tablespaces;
 名称                                      是否为空? 类型
 ----------------------------------------- -------- ----------------------------
 TABLESPACE_NAME                           NOT NULL VARCHAR2(30)
 BLOCK_SIZE                                NOT NULL NUMBER
 INITIAL_EXTENT                                     NUMBER
 NEXT_EXTENT                                        NUMBER
 MIN_EXTENTS                               NOT NULL NUMBER
 MAX_EXTENTS                                        NUMBER
 MAX_SIZE                                           NUMBER
 PCT_INCREASE                                       NUMBER
 MIN_EXTLEN                                         NUMBER
 STATUS                                             VARCHAR2(9)
 CONTENTS                                           VARCHAR2(9)
 LOGGING                                            VARCHAR2(9)
 FORCE_LOGGING                                      VARCHAR2(3)
 EXTENT_MANAGEMENT                                  VARCHAR2(10)
 ALLOCATION_TYPE                                    VARCHAR2(9)
 PLUGGED_IN                                         VARCHAR2(3)
 SEGMENT_SPACE_MANAGEMENT                           VARCHAR2(6)
 DEF_TAB_COMPRESSION                                VARCHAR2(8)
 RETENTION                                          VARCHAR2(11)
 BIGFILE                                            VARCHAR2(3)
 PREDICATE_EVALUATION                               VARCHAR2(7)
 ENCRYPTED                                          VARCHAR2(3)
 COMPRESS_FOR                                       VARCHAR2(12)

查询表空间状态:

SQL> select status from dba_tablespaces where tablespace_name='TEST1_TABLESPACE';

STATUS
---------
OFFLINE

SQL>

修改表空间:

SQL> select status from dba_tablespaces where tablespace_name='TEST1_TABLESPACE';

STATUS
---------
OFFLINE

SQL> alter tablespace test1_tablespace
  2  online;

表空间已更改。

SQL> select status from dba_tablespaces where tablespace_name='TEST1_TABLESPACE';

STATUS
---------
ONLINE

SQL>

  设置表空间的只读或者可读写状态:

alter tablespace tablespace_name READ ONLY | READ WRITE(可读写的);

只有联机状态才可以修改;

SQL>
SQL>
SQL> alter tablespace test1_tablespace
  2  read only;

表空间已更改。

SQL> select status from dba_tablespaces where tablespace_name='TEST1_TABLESPACE';

STATUS
---------
READ ONLY

SQL>

默认的联机状态就是可读写状态:

SQL> alter tablespace test1_tablespace
  2  read write;

表空间已更改。

SQL> select status from dba_tablespaces where tablespace_name='TEST1_TABLESPACE';

STATUS
---------
ONLINE

SQL>

(2). 修改表空间中的数据文件:

  1. 增加数据文件

    ALTER TABLESPACE tablespace_name ADD DATAFILE 'xx.dbf' SIZE xx;

  

SQL> alter tablespace test1_tablespace
  2  add datafile 'test2-file.dbf' size 10m;

表空间已更改。

SQL> select file_name from dba_data_files where tablespace_name='TEST1_TABLESPACE';

FILE_NAME
--------------------------------------------------------------------------------
F:APPWYLPRODUCT11.2.0DBHOME_1DATABASETEST1FILE.DBF
F:APPWYLPRODUCT11.2.0DBHOME_1DATABASETEST2-FILE.DBF

SQL>

  2. 删除数据文件:

  ALTER TABLESPACE tablespace_name DROP DATAFILE 'xx.dbf';

SQL> alter tablespace test1_tablespace
  2  DROP datafile 'test2-file.dbf';

表空间已更改。

SQL> select file_name from dba_data_files where tablespace_name='TEST1_TABLESPACE';

FILE_NAME
--------------------------------------------------------------------------------
F:APPWYLPRODUCT11.2.0DBHOME_1DATABASETEST1FILE.DBF

SQL>

6. 删除表空间:

  DROP TABLESPACE

  tablespace_name [INCLUDING CONTENTS]

SQL> drop tablespace test1_tablespace including contents;

表空间已删除。

SQL>
原文地址:https://www.cnblogs.com/blogofwyl/p/4823730.html