一、表空间的管理方式
1、dictionary管理
字典管理的表空间,使用数据字典fet$和uet$记录区段的可用情况。当数据库需要为段分配区段时,oracle会查询fet$,为段分配区段,在fet$上删除相应的记录,且在uet$上增加相应的记录。使用字典管理的表空间,当需要分配或者释放区段时,会产生递归sql,同时在修改数据字典时也会产生撤销数据,影响性能
extent management dictionary
2、本地管理
本地管理的表空间,数据库在数据文件的头部使用位图定位跟踪区段的使用情况。
extent management locl
二、段空间管理方式
1、手工管理
oracle使用空闲列表和pctfree、pctused记录段中数据块的可用情况。(在创建模式对象时,如果使用本地管理的表空间,可以不设置pctused,即便设置也不会出错,但被忽略。可以设置pctfree)
segment space management manual
2、自动管理
oracle使用位图跟踪数据块的可用情况。
segment space management auto
三、区段分配类型
1、自动分配
oracle自动选择区段的尺寸,从64k到64m,甚至大于64m,但以64k为单位不断递增。
autoallocate
2、统一分配
使用uniform指定统一分配,使用size指定区段的尺寸。如果没有size选项,则oracle默认为1m。
uniform 【size n m】 --n为区段尺寸的数值,m为单位。
四、指定闪回方式
1、启用
flashback on
2、禁用
flashback off
如果某个表空间禁用闪回,则在闪回数据库时必须先把该表空间脱机。
五、创建表空间
create tablespace tablespace_name
datafile 'datafile_path_name'
size nm --n为数据文件大小的数值
--默认情况下是本地管理,区段大小自动分分配,自动管理段空间。可以创建不同的,如:
create tablespace tablespace_name
datefile 'datafile_path_name'
size nm
uniform size 1m --可以不指定size选项,默认为1m。
segment space management manual;
可以指定多个数据文件 如:
create tablespace tablespace_name
datafile 'datafile_path_name1'
size nm,
'datafile_path_name2'
size mm;
可以在创建表空间时指定数据文件自动扩展 如:
create tablespace tablespace_name
datafile 'datafile_path_name '
size nm
autoextend on next mm maxsize pm ; --mm为下次扩展的大小,单位m,pm为
创建不同块尺寸的表空间:
create tablespace tablespace_name
datafile 'datafile_path_name '
size nm
blocksize nk --nk为块尺寸
表空间不能闪回:
create tablespace tablespace_name
datafile 'datafile_path_name '
size nm
flashback off;
六、删除表空间
1、drop tablespace tablespace_name;
如果表空间中含有数据,可以使用以下方式删除:
2、drop tablespace tablespace_name including contents;
或者:drop tablespace tablespace_name including contents and datafiles;
--若使用including contents 方式删除表空间,则数据绕过回收站直接删除;若不使用,且表空间中有数据,则删除不成功,但回收站中的数据仍然被删除。
3、如果表空间中的数据被其他表空间的数据引用,则需要使用以下方式删除:
drop tablespace tablespace_name including contents and datafiles cascade constraints;
七、区段的分配与解除
当段需要更多的区段的时候,oracle按照表空间的存储参数自动为段分配区段,dba也可以手工分配:
如:alter table table_name allocate extent (size nm datafile 'datafile_path_name');
当区段分配给段之后,区段永远属于段,直到段被删除。dba也可以解除这些区段:
如:truncate table table_name drop storage;
或者:alter table table_name deallocate unused;
八、扩展表空间
1、增加数据文件
alter tablesapce tablespace_name add datafile 'datafile_path_name' size nm [autoextend on next mm maxsize pm] ; --可以在增加一个自动扩展的数据文件。
2、更改原有数据文件的大小(可大也可小)
alter database datafile 'datafile_path_nmae' resize nm; --不可以在更改原有数据文件大小的同时使数据文件自动扩展
3、数据文件自动扩展
alter database datafile 'datafile_path_name' autoextend on next nm maxsize mm;
九、更改表空间
1、脱机
脱机的方式:normal ,immediate,temporary,for recover默认为normal 如:
alter tablespace tablespace_name offline [normal];
数据文件的脱机:
alter database datafile 'datafile_path_name' offline或者alter database datafile n offline --n为数据文件的编号。
2、联机
alter tablespace tablespace_name online;
数据文件的脱机:
alter database datafile 'datafile_path_name' online或者alter database datafile n online --n为数据文件的编号。
3、只读
alter tablespace tablespace_name read only;
限制:表空间处于开始备份模式,不能更改为只读
表空间中含有撤销数据,不能更改为只读
表空间处于脱机或者有部分数据文件处于脱机,则不能更改为只读
表空间正在发送数据,不能更改为只读模式
表空间处于只读模式,不能对table进行insert update delete ,但可以drop,并且可以对其他对象进行insert、update、delete。
4、读写
alter tablespace tablespace_name read write;
5、重命名
alter tablespace tablespace_name rename to new_name;
限制:不能对system和sysaux表空间重命名
不能对处于脱机或者部分数据文件处于脱机的表空间进行重命名
如果表空间只读,则重命名不能更改数据文件的文件头。
数据文件的重命名:open状态:表空间脱机或者数据文件脱机
在操作系统重命名数据文件(cp、mv)
alter tablespace tablespace_name rename datafile 'datafile_path_name' to 'new_datafile_path_name'
mount状态:startup mount
在操作系统重命名数据文件
alter database rename file 'datafile_path_name' to 'new_datafile_path_name';
alter database open;
6、开始备份模式
alter tablespace tablespace_name begin backup;
7、结束备份模式
alter tablespace tablespace_name end backup;