[Oracle学习笔记] 基本表空间的创建,修改和删除
一,创建表空间语法:
CREATE [TEMPORARY | UNDO] TABLESPACE tablespace_name
[DATAFILE | TEMPFILE file_name SIZE K | M [REUSE] [AUTOEXTENT OFF|ON [NEXT number K | M MAXSIZE UNLIMITED | number K | M ] ] ]
[BLOCKSIZE number K]
[ONLINE | OFFLINE]
[LOGGING | NOLOGGING]
[FORCE LOGGING]
[DEFAULT STORAGE storage]
[COMPRESS | NOCOMPRESS]
[PERMANENT | TEMPORARY]
[EXTENT MANAGEMENT DICTIONARY | LOCAL [AUTOALLOCATE | UNIFORM SIZE number K | M ] ]
[SEGMENT SPACE MANAGEMENT AUTO | MANUAL]
1. TEMPORARY | UNDO 表明表空间用途,临时表空间/撤销表空间,不指定则标识基本表空间。
2. REUSE 文件存在则清除该文件,并重新创建,如果未使用,则当文件存在时将报错
3. BLOCKSIZE 创建非标准数据块表空间
4. DEFAULT STORAGE 只适用于数据字典管理的表空间,一般不用
5. EXTENT MANAGEMENT 盘区管理方式,一般选用LOCAL,字典管理方式存储效率不高,难以管理以及易造成磁盘碎片
6. AUTOALLOCATE,UNIFORM SIZE,盘区管理方式为LOCAL时适用, AUTOALLOCATE表示盘区大小由系统自动分配, UNIFORM设置盘区大小,所有盘区大小相同
7. SEGMENT SPACE MANAGEMENT 段管理方式,一般选用AUTO,这时Oracle采用位图来管理段中已用块和空闲块,如果选用MANUAL,Oracle使用可用列表来管理段中已用块和空闲块
示例:
SQL> create tablespace tls01
2 datafile 'f:\tls01.dbf' size 20m autoextend on next 10m maxsize unlimited;
通过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
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)
示例:
SQL> select tablespace_name, extent_management, segment_space_management
2 from dba_tablespaces;
TABLESPACE_NAME EXTENT_MAN SEGMEN
------------------------------ ---------- ------
SYSTEM LOCAL MANUAL
UNDOTBS1 LOCAL MANUAL
SYSAUX LOCAL AUTO
TEMP LOCAL MANUAL
USERS LOCAL AUTO
TLS01 LOCAL AUTO
已选择6行。
二,修改表空间
1. 添加数据文件
ALTER TABLESPACE tablespace_name
ADD DATAFILE datafile_specification
示例:
SQL> alter tablespace tls01
2 add datafile 'f:\tls02.dbf' size 20m;
2. 修改数据文件大小
首先查询dba_data_files了解数据文件的位置,大小等信息
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, file_id, bytes from dba_data_files
2 where tablespace_name='TLS01';
FILE_NAME FILE_ID BYTES
---------- ---------------------------------
F:\TLS01.DBF 5 20971520
F:\TLS02.DBF 6 20971520
注意:数据字典里表空间名是大写
修改数据文件大小:
ALTER DATABASE DATAFILE file_name RESIZE size
示例:
SQL> alter database datafile 'f:\tls01.dbf' resize 50m;
3. 修改数据文件自动扩展
SQL> alter database datafile 'f:\tls01.dbf' autoextend on;
同样适用于ALTER TABLESPACE ADD DATAFILE
4. 修改表空间状态
表空间状态:OFFLINE, ONLINE, READ ONLY, READ WRITE
SQL> alter tablespace tls01 offline;
5. 移动数据文件
如果数据文件所在磁盘空间不足,则需要将数据文件移到另一个磁盘,方法是:
1. 修改表空间状态offline
2. 复制数据文件到另一个磁盘
3. 使用ALTER TABLESPACE RENAME语句
4. 恢复表空间状态online
示例:
1) SQL> alter tablespace tls01 offline;
2) 通过操作系统命令复制或剪贴数据文件f:\tls01.dbf到e:\tls01.dbf
3) SQL> alter tablespace tls01
2 rename datafile 'f:\tls01.dbf' to 'e:\tls01.dbf';
4) SQL> alter tablespace tls01 online;
重新查询dba_data_files,数据文件路径发生了变化
SQL> column file_name format a50
SQL> select file_id, file_name from dba_data_files
2 where tablespace_name='TLS01';
FILE_ID FILE_NAME
---------- --------------------------------------------------
5 E:\TLS01.DBF
6 F:\TLS02.DBF
三、删除表空间
DROP TABLESPACE tablespace_name
| [INCLUDING CONTENTS]
| [INCLUDING CONTENTS AND DATAFILES]
示例:
SQL> drop tablespace tls01
2 including contents and datafiles;
表空间已删除。
浙公网安备 33010602011771号