Managing Tablespaces
本地管理表空间
创建本地管理表空间
1.AUTOALLOCATE模式
默认模式,自动管理extent的大小。Extent最小值为64k。
CREATE TABLESPACE lmtbsb DATAFILE '/u02/oracle/data/lmtbsb01.dbf' SIZE 50M
EXTENT MANAGEMENT LOCAL AUTOALLOCATE;
2. UNIFORM模式
手动管理extent大小,指定了extent的值,如果不指定size,默认值是1M。
CREATE TABLESPACE lmtbsb DATAFILE '/u02/oracle/data/lmtbsb01.dbf' SIZE 50M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K;
3.使用自动段管理
创建表空间并使用自动segment管理
CREATE TABLESPACE lmtbsb DATAFILE '/u02/oracle/data/lmtbsb01.dbf' SIZE 50M
EXTENT MANAGEMENT LOCAL
SEGMENT SPACE MANAGEMENT AUTO;
给表空间增加数据文件
ALTER TABLESPACE lmtbsb
ADD DATAFILE '/u02/oracle/data/lmtbsb02.dbf' SIZE 1M;
大文件表空间
创建大文件表空间
CREATE BIGFILE TABLESPACE bigtbs
DATAFILE '/u02/oracle/data/bigtbs01.dbf' SIZE 50G
查看大文件表空间
可以通过以下视图查看
DBA_TABLESPACES
USER_TABLESPACES
V$TABLESPACE
增加大文件表空间大小
ALTER TABLESPACE bigtbs RESIZE 80G;
大文件表空间不可以增加数据文件
临时表空间
默认临时表空间
更改默认临时表空间
ALTER DATABASE DEFAULT TEMPORARY TABLESPACE tablespace_name;
查看当前默认临时表空间
ELECT PROPERTY_NAME, PROPERTY_VALUE FROM DATABASE_PROPERTIES WHERE
PROPERTY_NAME='DEFAULT_TEMP_TABLESPACE';
创建临时表空间
CREATE TEMPORARY TABLESPACE lmtemp TEMPFILE '/u02/oracle/data/lmtemp01.dbf'
SIZE 20M REUSE;
给临时表空间增加数据文件
ALTER TABLESPACE lmtemp
ADD TEMPFILE '/u02/oracle/data/lmtemp02.dbf' SIZE 18M REUSE;
改变临时表空间大小
ALTER DATABASE TEMPFILE '/u02/oracle/data/lmtemp02.dbf' RESIZE 18M;
删除临时表空空间文件
ALTER DATABASE TEMPFILE '/u02/oracle/data/lmtemp02.dbf' DROP
INCLUDING DATAFILES;
收缩临时表空间
可以释放临时表空间中未使用的空间
缩小到最小可能值
ALTER TABLESPACE lmtemp1 SHRINK SPACE
缩小到20M
ALTER TABLESPACE lmtemp1 SHRINK SPACE KEEP 20M;
缩小临时表空间文件
ALTER TABLESPACE lmtemp2 SHRINK TEMPFILE '/u02/oracle/data/lmtemp02.dbf';
修改表空间可用性
表空间离线
ALTER TABLESPACE...OFFLINE {normal|temporary|immediate}
normal是首选方式,这种情况下oracle发出一个checkpoint,当将表空间online时不需要recover,如果normal方式不行,则选用TEMPORARY方式 ,使用此方式offline后,在online时只需recover有error的数据文件。最后一种方式就是immediate方式,此种方式不发出checkpoint,online时需要recover.
注意:system表空间,undo表空间,临时表空间不能离线
离线表空间在数据库重启后依然处在离线状态
表空间上线
ALTER TABLESPACE users ONLINE;
只读表空间
设置表空间为只读
ALTER TABLESPACE flights READ ONLY;
使表空间可写
ALTER TABLESPACE flights READ WRITE;
重命名表空间
ALTER TABLESPACE users RENAME TO usersts
System和sysaux表空间不能被重命名
如果表空间是只读的,则被修改。
删除表空间
删除表空间及其包含的段
DROP TABLESPACE users INCLUDING CONTENTS;
删除表空间及其包含的段及对应数据文件
DROP TABLESPACE users INCLUDING CONTENTS AND DATAFILES;
常用的视图查询
1.查看表空间存储参数
SQL>SELECT TABLESPACE_NAME "TABLESPACE",
INITIAL_EXTENT "INITIAL_EXT",
NEXT_EXTENT "NEXT_EXT",
MIN_EXTENTS "MIN_EXT",
MAX_EXTENTS "MAX_EXT",
PCT_INCREASE
FROM DBA_TABLESPACES;
TABLESPACE INITIAL_EXT NEXT_EXT MIN_EXT MAX_EXT PCT_INCREASE
------------------------------ ----------- ---------- ---------- ---------- ------------
SYSTEM 65536 1 2147483645
SYSAUX 65536 1 2147483645
UNDOTBS1 65536 1 2147483645
TEMP 1048576 1048576 1 0
USERS 65536 1 2147483645
EXAMPLE 65536 1 2147483645
BIGTBS 65536 1 2147483645
TEMP2 1048576 1048576 1 0
2.列出表空间和其对应的数据文件
SQL> SELECT FILE_NAME, BLOCKS, TABLESPACE_NAME
FROM DBA_DATA_FILES;
FILE_NAME BLOCKS TABLESPACE_NAME
------------ ---------- -------------------
/U02/ORACLE/IDDB3/DBF/RBS01.DBF 1536 RBS
/U02/ORACLE/IDDB3/DBF/SYSTEM01.DBF 6586 SYSTEM
/U02/ORACLE/IDDB3/DBF/TEMP01.DBF 6400 TEMP
/U02/ORACLE/IDDB3/DBF/TESTTBS01.DBF 6400 TESTTBS
/U02/ORACLE/IDDB3/DBF/USERS01.DBF 384 USERS
3.查看表空间的空闲空间
SQL> SELECT TABLESPACE_NAME "TABLESPACE", FILE_ID,
2 COUNT(*) "PIECES",
3 MAX(blocks) "MAXIMUM",
4 MIN(blocks) "MINIMUM",
5 AVG(blocks) "AVERAGE",
6 SUM(blocks) "TOTAL"
7 FROM DBA_FREE_SPACE
8 GROUP BY TABLESPACE_NAME, FILE_ID;
TABLESPACE FILE_ID PIECES MAXIMUM MINIMUM AVERAGE TOTAL
---------- ------- ------ ------- ------- ------- ------
RBS 2 1 955 955 955 955
SYSTEM 1 1 119 119 119 119
TEMP 4 1 6399 6399 6399 6399
TESTTBS 5 5 6364 3 1278 6390
USERS 3 1 363 363 363 363
PIECES表示空闲extent的个数,MAXIMUM and MINIMUM 表示数据块中最小和最大相邻的连续空间,average表示空闲extent的平均值,total表示表空间的空闲值。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25427762/viewspace-1063577/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/25427762/viewspace-1063577/