ORACLE存储结构层次
块(block)
区(extent)
段(segments)
表空间(tablespace)
块是最小的读写单位,区是最小的空间分配单位,区的大小由oracle自动管理,一般情况下
前16个extent,每个extent 64K,
17-79 每个extent 1M
80-199 每个extent 8M
200开始每个 64M
段是我们的数据库对象了,如表,索引
表空间是最大的逻辑存储结构了,包含了 段、区、块,物理上它由一个或多个数据文件组成
表空间的管理方式
字典管理
所有的空间分配都记录在数据字典中 fet$ uet$ ,在并发量较大时,数据字典就成为瓶
劲了
本地管理
在每个数据文件的文件头选6个块,在其中存放bitmap 来记录空间的分配信息
表空间类型
永久表空间
存放永久性数据,如表、索引等
临时表空间
存放一些临时性数,如:排序的中间结果、临进表
UNDO表空间
存放的是数据修改前的镜象
永久表空间管理
创建:
CREATE TABLESPACE 表空间名
DATAFILE ......
BLOCKSIZE ......
例:
SQL> create tablespace tt
2 datafile '/u01/app/oracle/oradata/tt01.dbf' size 50m;
例:创建非标准块的表空间
SQL> alter system set db_32k_cache_size=10m;
SQL> create tablespace tt2
2 datafile '/u02/tt201.dbf' size 50m blocksize 32k;
默认表空间
默认表空间分两个层次:数据库级、用户级
查看数据库级的默认表空间
SQL> select PROPERTY_NAME,PROPERTY_VALUE from database_properties;
修改数据库级的默认表空间:
SQL> alter database default tablespace tt;
查看用级默认表空间
SQL> select USERNAME,DEFAULT_TABLESPACE from dba_users;
修改用户级默认表空间
SQL> alter user SCOTT default tablespace tt;
查看表空间的剩余空间:
SQL> select TABLESPACE_NAME,sum(BYTES)/1024/1024 from dba_free_space
2 group by TABLESPACE_NAME;
查看表空间总空间:
SQL> select TABLESPACE_NAME,sum(BYTES)/1024/1024 from dba_data_files
2 group by TABLESPACE_NAME;
表空间扩容
1)增加数据文件
SQL> alter tablespace users add datafile
'/u01/app/oracle/oradata/orcl/users02.dbf' size 50m;
2)重置数据文件大小(使数据文件变得更大)
SQL> select TABLESPACE_NAME,FILE_NAME,BYTES/1024/1024 from dba_data_files;
SQL> alter database datafile '/u01/app/oracle/oradata/orcl/example01.dbf'
resize 200m;
3)设置数据文件自动增长
SQL> select TABLESPACE_NAME,FILE_NAME,AUTOEXTENSIBLE from dba_data_files;
SQL> alter database datafile '/u01/app/oracle/oradata/tt01.dbf' autoextend on
2 next 10m maxsize 100m;
为用户限额:
1、取消用户无限制使用表空间的权限
SQL> revoke unlimited tablespace from scott;
2、设置限额
SQL> alter user scott quota 5m on users;
查看限额信息:
SQL> select TABLESPACE_NAME,USERNAME,MAX_BYTES/1024/1024
from dba_ts_quotas order by username;
表空间状态修改:
表空间状态有:online、offline、read only、read write
修改: ALTER TABLESPACE tablespace_name online|offline|read only|read write
表空间只读后,其中的数据不能被修改,但对象可被删除
如果处在归档模式,数据文件也能offline
表空间改名:
SQL> alter tablespace tt2 rename to mm;
数据文件移动:
1、查看数据文件在哪个表空间,放在哪
SQL> select TABLESPACE_NAME,FILE_NAME,BYTES/1024/1024 from dba_data_files;
2、把数据文件所在的表空间离线,再把相应的数据文件移走
SQL> alter tablespace tt offline;
SQL> select TABLESPACE_NAME,CONTENTS,STATUS from dba_tablespaces;
SQL> host mv /u01/app/oracle/oradata/tt01.dbf /u02/tt01.dbf
3、修改控制文件记录,使表空间的文件指向到新的位置
SQL> alter database rename file '/u01/app/oracle/oradata/tt01.dbf'
2 to '/u02/tt01.dbf';
4、表空间 online
大文件表空间
ORACLE中分为大文件表空间和小文件表空间
大文件表空间:
一个表空间只能有一个文件,文件最大可以达到 2的32次方(4G)个块
8-128T
小文件表空间:
原则上数据文件的数量无限制,文件最大可以达到 2的22次方(4M)个块
8G-128G
创建方法:
SQL> create bigfile tablespace bf_t1
2 datafile '/u02/bf_t101.dbf' size 50m;
创建后,怎么看是大文件表空间还是小文件表空间
SQL> select TABLESPACE_NAME,BLOCK_SIZE,CONTENTS,BIGFILE from dba_tablespaces;
设置默认表空间类型
千万不要以为默认创建的是小文件表空间,究间是大文件表空间还是小文件表空间,取决于oracle的设置
ALTER DATABASE SET DEFAULT smallfile|bigfile TABLESPACE
OMF管理的表空间
使用OMF管理表空间,需要设置
db_create_file_dest
SQL> alter system set db_create_file_dest='/u02/';
使用omf
SQL> create tablespace omf1;
使用omf后,文件名,文件大小可以不管了,由oracle自己定,删除表空间,
操作系统上的文件,oracle会自动帮你删除
OMF创建文件时的默认大小是100M,如果想改大小,加datafile size ...
删除表空间
DROP TABLESPACE ...... [ INCLUDING CONTENTS ]
永久表空间使用上的一些建议:
1、分隔参与资源争用的数据
如表和索引,经常同时访问,最好把他们分别放到不同的表空间上
2、分隔具有不同存储要求的对象
如将较小的表和较大表放到不同的表空间上
3、对分区表,将不同的分区放到不同的表空间上
临进表空间
临进表空间存放一些临时性数据,如排序的中间结果、临时表之类的
创建:
CREATE TEMPORARY TABLESPACE tablespace_name
TEMPFILE ......
SQL> CREATE TEMPORARY TABLESPACE temp2
2 TEMPFILE '/u02/temp201.dbf' size 100m;
扩容:
1)增加临时文件
SQL> alter tablespace temp2 add tempfile
2 '/u02/temp202.dbf' size 50m;
2)重置数据文件大小(使数据文件变得更大)
SQL> select TABLESPACE_NAME,FILE_NAME,BYTES/1024/1024 from dba_data_files;
SQL> alter database tempfile '/u02/temp201.dbf' resize 100m;
3)设置数据文件自动增长
SQL> select TABLESPACE_NAME,FILE_NAME,AUTOEXTENSIBLE from dba_data_files;
SQL> alter database tempfile '/u02/temp201.dbf' autoextend on
2 next 10m maxsize 200m;
临时表空间使用不同于永久表空间
临时表空间,系统或用户只能用一个临地表空间(默认的那一个)
查看默认临进表空间
SQL> select PROPERTY_NAME,PROPERTY_VALUE from database_properties;
SQL> select USERNAME,DEFAULT_TABLESPACE,TEMPORARY_TABLESPACE from dba_users;
修改系统临时表空间
SQL> alter database default temporary tablespace temp2;
修改用户临时表空间
SQL> alter user scott temporary tablespace temp2;
临时表空间组
临进表空间组是一个逻辑的概念,它不需要显示的去创建,也不需要显示的去删除
在创建临地表空间时,可以指定一个表空间组,也可以在创建后加入到一个组
临时表空间组中的成员全部移走后,组就自动删除
SQL> create temporary tablespace temp3 tempfile '/u03/temp301.dbf' size 50m
2 tablespace group temp_grp;
SQL> alter tablespace temp2 tablespace group temp_grp;
将表空间从组中移除
SQL> alter tablespace temp3 tablespace group '';
UNDO表空间
保存数据修改前的镜象
创建:
CREATE UNDO TABLESPACE tablespace_name
DATAFILE ...
SQL> CREATE UNDO TABLESPACE undo2
2 DATAFILE '/u02/undo201.dbf' size 100m;
其它的一些维护操作与永久表空间一样
UNDO表空间管理参数设定
undo_tablespace 使用哪个UNDO表空间
undo_retention 数据在UNDO表空间保留时长(目标时长,是不能保证的,
如果一定保留这么久,也有办法)
SQL> alter tablespace undo2 retention GUARANTEE;
与表空间相关的数据字典:
dba_tablespaces
dba_data_files
dba_temp_files
v$datafile
v$tempfile
DBA_FREE_SPACE
DBA_TS_QUOTAS
块(block)
区(extent)
段(segments)
表空间(tablespace)
块是最小的读写单位,区是最小的空间分配单位,区的大小由oracle自动管理,一般情况下
前16个extent,每个extent 64K,
17-79 每个extent 1M
80-199 每个extent 8M
200开始每个 64M
段是我们的数据库对象了,如表,索引
表空间是最大的逻辑存储结构了,包含了 段、区、块,物理上它由一个或多个数据文件组成
表空间的管理方式
字典管理
所有的空间分配都记录在数据字典中 fet$ uet$ ,在并发量较大时,数据字典就成为瓶
劲了
本地管理
在每个数据文件的文件头选6个块,在其中存放bitmap 来记录空间的分配信息
表空间类型
永久表空间
存放永久性数据,如表、索引等
临时表空间
存放一些临时性数,如:排序的中间结果、临进表
UNDO表空间
存放的是数据修改前的镜象
永久表空间管理
创建:
CREATE TABLESPACE 表空间名
DATAFILE ......
BLOCKSIZE ......
例:
SQL> create tablespace tt
2 datafile '/u01/app/oracle/oradata/tt01.dbf' size 50m;
例:创建非标准块的表空间
SQL> alter system set db_32k_cache_size=10m;
SQL> create tablespace tt2
2 datafile '/u02/tt201.dbf' size 50m blocksize 32k;
默认表空间
默认表空间分两个层次:数据库级、用户级
查看数据库级的默认表空间
SQL> select PROPERTY_NAME,PROPERTY_VALUE from database_properties;
修改数据库级的默认表空间:
SQL> alter database default tablespace tt;
查看用级默认表空间
SQL> select USERNAME,DEFAULT_TABLESPACE from dba_users;
修改用户级默认表空间
SQL> alter user SCOTT default tablespace tt;
查看表空间的剩余空间:
SQL> select TABLESPACE_NAME,sum(BYTES)/1024/1024 from dba_free_space
2 group by TABLESPACE_NAME;
查看表空间总空间:
SQL> select TABLESPACE_NAME,sum(BYTES)/1024/1024 from dba_data_files
2 group by TABLESPACE_NAME;
表空间扩容
1)增加数据文件
SQL> alter tablespace users add datafile
'/u01/app/oracle/oradata/orcl/users02.dbf' size 50m;
2)重置数据文件大小(使数据文件变得更大)
SQL> select TABLESPACE_NAME,FILE_NAME,BYTES/1024/1024 from dba_data_files;
SQL> alter database datafile '/u01/app/oracle/oradata/orcl/example01.dbf'
resize 200m;
3)设置数据文件自动增长
SQL> select TABLESPACE_NAME,FILE_NAME,AUTOEXTENSIBLE from dba_data_files;
SQL> alter database datafile '/u01/app/oracle/oradata/tt01.dbf' autoextend on
2 next 10m maxsize 100m;
为用户限额:
1、取消用户无限制使用表空间的权限
SQL> revoke unlimited tablespace from scott;
2、设置限额
SQL> alter user scott quota 5m on users;
查看限额信息:
SQL> select TABLESPACE_NAME,USERNAME,MAX_BYTES/1024/1024
from dba_ts_quotas order by username;
表空间状态修改:
表空间状态有:online、offline、read only、read write
修改: ALTER TABLESPACE tablespace_name online|offline|read only|read write
表空间只读后,其中的数据不能被修改,但对象可被删除
如果处在归档模式,数据文件也能offline
表空间改名:
SQL> alter tablespace tt2 rename to mm;
数据文件移动:
1、查看数据文件在哪个表空间,放在哪
SQL> select TABLESPACE_NAME,FILE_NAME,BYTES/1024/1024 from dba_data_files;
2、把数据文件所在的表空间离线,再把相应的数据文件移走
SQL> alter tablespace tt offline;
SQL> select TABLESPACE_NAME,CONTENTS,STATUS from dba_tablespaces;
SQL> host mv /u01/app/oracle/oradata/tt01.dbf /u02/tt01.dbf
3、修改控制文件记录,使表空间的文件指向到新的位置
SQL> alter database rename file '/u01/app/oracle/oradata/tt01.dbf'
2 to '/u02/tt01.dbf';
4、表空间 online
大文件表空间
ORACLE中分为大文件表空间和小文件表空间
大文件表空间:
一个表空间只能有一个文件,文件最大可以达到 2的32次方(4G)个块
8-128T
小文件表空间:
原则上数据文件的数量无限制,文件最大可以达到 2的22次方(4M)个块
8G-128G
创建方法:
SQL> create bigfile tablespace bf_t1
2 datafile '/u02/bf_t101.dbf' size 50m;
创建后,怎么看是大文件表空间还是小文件表空间
SQL> select TABLESPACE_NAME,BLOCK_SIZE,CONTENTS,BIGFILE from dba_tablespaces;
设置默认表空间类型
千万不要以为默认创建的是小文件表空间,究间是大文件表空间还是小文件表空间,取决于oracle的设置
ALTER DATABASE SET DEFAULT smallfile|bigfile TABLESPACE
OMF管理的表空间
使用OMF管理表空间,需要设置
db_create_file_dest
SQL> alter system set db_create_file_dest='/u02/';
使用omf
SQL> create tablespace omf1;
使用omf后,文件名,文件大小可以不管了,由oracle自己定,删除表空间,
操作系统上的文件,oracle会自动帮你删除
OMF创建文件时的默认大小是100M,如果想改大小,加datafile size ...
删除表空间
DROP TABLESPACE ...... [ INCLUDING CONTENTS ]
永久表空间使用上的一些建议:
1、分隔参与资源争用的数据
如表和索引,经常同时访问,最好把他们分别放到不同的表空间上
2、分隔具有不同存储要求的对象
如将较小的表和较大表放到不同的表空间上
3、对分区表,将不同的分区放到不同的表空间上
临进表空间
临进表空间存放一些临时性数据,如排序的中间结果、临时表之类的
创建:
CREATE TEMPORARY TABLESPACE tablespace_name
TEMPFILE ......
SQL> CREATE TEMPORARY TABLESPACE temp2
2 TEMPFILE '/u02/temp201.dbf' size 100m;
扩容:
1)增加临时文件
SQL> alter tablespace temp2 add tempfile
2 '/u02/temp202.dbf' size 50m;
2)重置数据文件大小(使数据文件变得更大)
SQL> select TABLESPACE_NAME,FILE_NAME,BYTES/1024/1024 from dba_data_files;
SQL> alter database tempfile '/u02/temp201.dbf' resize 100m;
3)设置数据文件自动增长
SQL> select TABLESPACE_NAME,FILE_NAME,AUTOEXTENSIBLE from dba_data_files;
SQL> alter database tempfile '/u02/temp201.dbf' autoextend on
2 next 10m maxsize 200m;
临时表空间使用不同于永久表空间
临时表空间,系统或用户只能用一个临地表空间(默认的那一个)
查看默认临进表空间
SQL> select PROPERTY_NAME,PROPERTY_VALUE from database_properties;
SQL> select USERNAME,DEFAULT_TABLESPACE,TEMPORARY_TABLESPACE from dba_users;
修改系统临时表空间
SQL> alter database default temporary tablespace temp2;
修改用户临时表空间
SQL> alter user scott temporary tablespace temp2;
临时表空间组
临进表空间组是一个逻辑的概念,它不需要显示的去创建,也不需要显示的去删除
在创建临地表空间时,可以指定一个表空间组,也可以在创建后加入到一个组
临时表空间组中的成员全部移走后,组就自动删除
SQL> create temporary tablespace temp3 tempfile '/u03/temp301.dbf' size 50m
2 tablespace group temp_grp;
SQL> alter tablespace temp2 tablespace group temp_grp;
将表空间从组中移除
SQL> alter tablespace temp3 tablespace group '';
UNDO表空间
保存数据修改前的镜象
创建:
CREATE UNDO TABLESPACE tablespace_name
DATAFILE ...
SQL> CREATE UNDO TABLESPACE undo2
2 DATAFILE '/u02/undo201.dbf' size 100m;
其它的一些维护操作与永久表空间一样
UNDO表空间管理参数设定
undo_tablespace 使用哪个UNDO表空间
undo_retention 数据在UNDO表空间保留时长(目标时长,是不能保证的,
如果一定保留这么久,也有办法)
SQL> alter tablespace undo2 retention GUARANTEE;
与表空间相关的数据字典:
dba_tablespaces
dba_data_files
dba_temp_files
v$datafile
v$tempfile
DBA_FREE_SPACE
DBA_TS_QUOTAS
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/21175589/viewspace-755711/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/21175589/viewspace-755711/