原创

Oracle表空间的创建与修改

表空间分为系统表空间、临时表空间、回滚表空间、用户表空间(数据表空间)。系统表空间和用户表空间都属于永久保留内容的表空间。
普通数据表空间

create tablespace tbs_1
datafile 'F:\app\lee\oradata\orcl\tbs_1.dbf' size 10M;

查看数据表空间信息:select * from dba_data_files where tablespace_name='TBS_1';在创建表空间时,加上autoextend on关键字,可将表空间设置为自动扩展。
临时表空间

create temporary tablespace tmp_tbs_1
tempfile 'F:\app\lee\oradata\orcl\temp_tbs_1.dbf' size 10M;

查看临时表空间信息:select * from dba_temp_files where tablespace_name='TMP_TBS_1';
回滚表空间

create undo tablespace undo_tbs_1
datafile 'F:\app\lee\oradata\orcl\undo_tbs_1.dbf' size 10M;

查看回滚表空间信息:select * from dba_data_files where tablespace_name='UNDO_TBS_1';
查看系统表空间信息:select * from dba_data_files where tablespace_name like 'SYS%';
查看表空间信息:select * from dba_tablespaces;

用户表空间块的大小如果不采用默认值,一般为8KB,则只能在建库时指定。

查看Oracle可启用的块的大小:
SQL> show parameter cache_size
结果

NAME TYPE VALUE


client_result_cache_size big integer 0
db_16k_cache_size big integer 0
db_2k_cache_size big integer 0
db_32k_cache_size big integer 0
db_4k_cache_size big integer 0
db_8k_cache_size big integer 0
db_cache_size big integer 0
db_flash_cache_size big integer 0
db_keep_cache_size big integer 0
db_recycle_cache_size big integer 0
意味着可以设置2K、4K、8K、16K、32K的块大小。当把db_16k_cache_size设置为100M时,意味着SGA中将会有100M的大小让内存块可以以16K大小进行访问,同时也意味着16K的设置生效。
启用block_size为16K的块:
SQL> alter system set db_16k_cache_size=100M;
创建块大小为16K的表空间:

create tablespace tbs_16k_1
blocksize 16k
datafile 'F:\app\lee\oradata\orcl\tbs_16k_1.dbf' size 10M;

区的扩展大小默认为1M,也可以创建表空间时指定。

create tablespace tbs_2M_extent_1
datafile 'F:\app\lee\oradata\orcl\tbs_2M_extent_1.dbf' size 10M
uniform size 2M;

表空间不够时,可通过增加数据文件,扩大表空间;或把表空间设置为自动扩展。--表空间扩大是要格式化操作系统文件为Oracle可以识别的数据库,创建表空间时要预先规划好大小,避免不必要的开销。
增加数据文件:alter tablespace tbs_1 add datafile 'F:\app\lee\oradata\orcl\tbs_2.dbf' size 10M;
表空间设置为自动扩展:alter database datafile 'F:\app\lee\oradata\orcl\tbs_2.dbf' autoextend on;

删除表空间同时删除表空间中的数据和对应的数据文件:drop tablespace tbs_1 including contents and datafiles;

控制表空间最大尺寸(next 64K基本等同于uniform size 64K的功能,但是此处不能替换):

create tablespace tbs_1
datafile 'F:\app\lee\oradata\orcl\tbs_1.dbf' size 10M
autoextend on
next 64K
maxsize 5G;

回滚表空间的切换
查看当前在用的回滚表空间:SQL> show parameter undo

NAME TYPE VALUE


undo_management string AUTO
undo_retention integer 900
undo_tablespace string UNDOTBS1
切换回滚表空间:alter system set undo_tablespace=undo_tbs_1 scope=both;
回滚表空间可以建多个,可自由切换,但数据库当前使用的回滚表空间只能有一个(RAC数据库会有多个)。

临时表空间的新建与切换
切换单个用户的临时表空间
alter user lee temporary tablespace temp_tbs_1;
切换所有用户的临时表空间
alter database default temporary tablespace temp_tbs_1;

创建临时表空间组:

create temporary tablespace tmp_tbs_01 tempfile 'F:\app\lee\oradata\orcl\tmp_tbs_01.dbf' size 10M tablespace group tmp_group1;
create temporary tablespace tmp_tbs_02 tempfile 'F:\app\lee\oradata\orcl\tmp_tbs_02.dbf' size 10M tablespace group tmp_group1;

查看临时表空间组:select * from dba_tablespace_groups;
将已有临时表空间移到表空间组:alter tablespace tmp_tbs_1 tablespace group tmp_group1;
将用户的临时表空间设置为临时表空间组:alter user lee temporary tablespace tmp_group1;--同一个用户,不同session,可以被分配到不同的临时表空间。

正文到此结束
该篇文章的评论功能已被站长关闭