学无止境
分类: Oracle
2013-08-19 09:52:52
10g数据库,在创建数据库时会创建SYSTEM表空间和SYSAUX表空间,这2个表空间都不能rename,或是drop,SYSTEM表空间不能offile,SYSAUX表空间可以。
创建持久表空间,默认会建成本地管理表空间,extent自动分配,段自动管理ASSM,现在本地管理表空间的EXTENT管理只有AUTOALLOCATE和UNIFORM。
关于DEFAULT storage语句,在创建表空间时,如果带了DEFAULT storage语句,考虑是否指定了MININUM EXTENT子句,如果指定了MININUM EXTENT子句,MININUM EXTENT,INITIAL,NEXT都相等,并且PCTINCREASE为0,那么创建出来的本地管理表空间为uniform extent,大小为INITIAL大小;如果MININUM EXTENT,INITIAL,NEXT不相等,或者PCTINCREASE不为0,那么extent管理为AUTOALLOCATE。如果没有指定MININUM EXTENT子句,只有在INITIAL,NEXT相等,并且PCTINCREASE为0的情况下,才为uniform extent管理,否则是AUTOALLOCATE。
创建一个自动分配extent的本地管理表空间:
CREATE TABLESPACE lmtbsb DATAFILE '/u02/oracle/data/lmtbsb01.dbf' SIZE 50M
EXTENT MANAGEMENT LOCAL AUTOALLOCATE;
创建一个固定extent大小的表空间,uniform子句中如果忽略了size,默认uniform是1M。
CREATE TABLESPACE lmtbsb DATAFILE '/u02/oracle/data/lmtbsb01.dbf' SIZE 50M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K;
段自动管理表空间,没有特别指明,默认创建的表空间都是段自动管理表空间,也可以明确指出,在RAC环境中,建议都使用ASSM:
CREATE TABLESPACE lmtbsb DATAFILE '/u02/oracle/data/lmtbsb01.dbf' SIZE 50M
EXTENT MANAGEMENT LOCAL
SEGMENT SPACE MANAGEMENT AUTO;
段手动管理表空间:
CREATE TABLESPACE lmtbsb DATAFILE '/u02/oracle/data/lmtbsb01.dbf' SIZE 50M
EXTENT MANAGEMENT LOCAL
SEGMENT SPACE MANAGEMENT MANUAL;
修改本地管理表空间
1.增加数据文件:
ALTER TABLESPACE lmtbsb
ADD DATAFILE '/u02/oracle/data/lmtbsb02.dbf' SIZE 1M;
2.表空间offline,online
SYSTEM、UNDO、默认的TEMPORARY,3个表空间不能offline。offline表空间的用途,让数据库的一部分暂时不可用,允许访问其他部分;执行offline表空间备份;维护应用,将一部分表临时不可用;重命名或迁移数据文件位置。
offline有3种方式NORMAL,TEMPORARY,IMMEDIATE,默认是NORMAL,必须要没有错误才能offline;TEMPORARY方式即使有错误也能offline,比如数据文件已经offline或处于recover状态,online的时候,可能需要介质恢复,这2种方式都会检查checkpoint;IMMEDIATE方式,数据库必须运行在归档模式下才可以,不检查checkpoint,online时需要介质恢复。
ALTER TABLESPACE users OFFLINE NORMAL;
ALTER TABLESPACE users ONLINE;
3.表空间为只读或读写
ALTER TABLESPACE flights READ ONLY;
ALTER TABLESPACE flights READ WRITE;
4.表空间重命名,删除表空间
ALTER TABLESPACE users RENAME TO usersts;
DROP TABLESPACE users INCLUDING CONTENTS;
DROP TABLESPACE users INCLUDING CONTENTS AND DATAFILES;
5.表空间数据文件重命名,开关数据文件自动扩展,resize数据文件
数据文件改名:
ALTER TABLESPACE users OFFLINE NORMAL;
在OS层面移动重命名或数据文件
ALTER TABLESPACE users
RENAME DATAFILE '/u02/oracle/rbdb1/users01.dbf',
'/u02/oracle/rbdb1/users02.dbf'
TO '/u03/oracle/rbdb1/users01.dbf',
'/u04/oracle/rbdb1/users02.dbf';
ALTER TABLESPACE users online;
及时备份数据库。
修改数据文件:
ALTER DATABASE DATAFILE '/u02/oracle/rbdb1/stuff01.dbf'
RESIZE 100M;
修改自动扩展:
ALTER TABLESPACE users
ADD DATAFILE '/u02/oracle/rbdb1/users03.dbf' SIZE 10M
AUTOEXTEND ON
NEXT 512K
MAXSIZE 250M;
删除数据文件:删除数据文件有一定的限制:数据库必须open;数据文件必须是空的;如果要删除一个非空的数据文件,不能通过删除该数据文件上的对象使其变空后删除,需要删除该表空间;不能删除表空间的第一个数据文件,所以不能删除大文件表空间的数据文件;不能删除只读表空间的数据文件;不能删除SYSTEM表空间的数据文件;如果数据文件属于LMT,且offline,不能删除。
alter tablespace lmtbsb drop datafile 'D:\ORACLE\ORADATA\ORA10G\LMTBSB02.DBF';
临时表空间
创建临时表空间,临时表空间的extent都是uniform,不能用autoallocate。
CREATE TEMPORARY TABLESPACE lmtemp TEMPFILE '/u02/oracle/data/lmtemp01.dbf'
SIZE 20M REUSE
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 16M;
变更临时表空间,非系统默认的临时表空间:
ALTER TABLESPACE lmtemp
ADD TEMPFILE '/u02/oracle/data/lmtemp02.dbf' SIZE 18M REUSE;
ALTER TABLESPACE lmtemp TEMPFILE OFFLINE;
ALTER TABLESPACE lmtemp TEMPFILE ONLINE;
ALTER DATABASE TEMPFILE '/u02/oracle/data/lmtemp02.dbf' OFFLINE;
ALTER DATABASE TEMPFILE '/u02/oracle/data/lmtemp02.dbf' ONLINE;
ALTER DATABASE TEMPFILE '/u02/oracle/data/lmtemp02.dbf' RESIZE 18M;
ALTER DATABASE TEMPFILE '/u02/oracle/data/lmtemp02.dbf' DROP INCLUDING DATAFILES;
创建临时表空间组,可以将多个临时表空间加入到临时表空间组中,临时表空间组不能单独建立,在建立临时表空间时指定建立。
CREATE TEMPORARY TABLESPACE lmtemp2 TEMPFILE '/u02/oracle/data/lmtemp201.dbf'
SIZE 50M
TABLESPACE GROUP group1;
ALTER TABLESPACE lmtemp TABLESPACE GROUP group2;
移出临时表空间组:
ALTER TABLESPACE lmtemp3 TABLESPACE GROUP '';
设置数据库默认临时表空间使用临时表空间组:
ALTER DATABASE sample DEFAULT TEMPORARY TABLESPACE group2;
创建一个非标准块的表空间,在创建之前必须先设置参数DB_nK_CACHE_SIZE。
CREATE TABLESPACE lmtbsb DATAFILE '/u02/oracle/data/lmtbsb01.dbf' SIZE 50M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K
BLOCKSIZE 8K;