郭一军,网名guoyJoe,尖峰在线培训创始人、Oracle OCM、ITPUB论坛Oracle认证版版主、2013最佳精华贴、Senior DBA、Oracle OCT、 ACOUG MEMBER、CSDN 认证专家、RHCE、在线技术分享的倡导者和实践者。 http://www.jianfengedu.com http://jianfengedu.taobao.com
全部博文(72)
2014年(72)
分类: Oracle
2014-06-19 10:34:15
从逻辑上讲,数据存储在段(通常是表)中;从物理上讲,数据存储在数据文件(datafile)中。表空间(tablespace)实体是二者的桥梁,一个表空间可能包含多个段,并由多个数据文件组成。段和数据文件没有直接关系。数据文件可以作为文件系统中的文件存在,从10 g版本开始,也可以作为自动存储管理(Automatic Storage Management,ASM)设备上的文件存在。
一丶Oracle数据存储模型
将逻辑存储与物理存储分开是关系数据库范例的必要部分。关系数据库范例表明:编程人员只处理逻辑结构,而让数据库去管理到物理结构的映射。这意味着,可以重新组织物理存储,也可以将整个数据库移动到完全不同的硬件和操作系统上,而应用程序意识不到任何更改。
如下图展示Oracle存储模型,逻辑结构在左,物理结构在右。
1丶Oracle数据库逻辑结构
(1)DATABASE:一个数据库可划分为多个称为表空间的逻辑存储单元。
(2)TABLESPACE:只能属一个数据库,包括一个或多个文件。
(3)SEGMENT:存在于表空间中,包含一个或多个区。
包括:表段丶表分区段丶索引段丶索引分区段丶临时段丶撤销段丶BLOB丶CLOB
高水位
PCTFREE和PCTUSED
行迁移和行链接
INITRANS和MAXTRANS
(4)EXTENT:由相邻的数据块的组成,这意味着每个区只能存在于一个数据文件中。
(5)BLOCK:是数据库中最小的I/O单元,db_block_size
2丶Oracle数据库物理结构
(1)丶OS文件
A丶仅属于一个表空间
B丶是构成表空间的基础文件
(2)丶OS块
A丶tune2fs -l /dev/sda1
B丶扇区:512字节 操作系统一次IO的大小
3丶表空间丶表丶区丶块及文件号的关系由视图dba_extents展显出来
gyj@OCM> create tablespace tp1 datafile\'/u01/app/oracle/oradata/ocm/tp1.dbf\' size 100M,\'/u01/app/oracle/oradata/ocm/tp2.dbf\' size 100M EXTENT MANAGEMENT LOCAL UNIFORMSIZE 1M;
gyj@OCM> alter user gyj defaulttablespace tp1;
gyj@OCM> conn gyj/gyj
gyj@OCM> create table t10 (id int,namevarchar2(100));
gyj@OCM> begin
2 for i in 1 .. 200000 loop
3 insert into t10values(i,\'gyj\'||i);
4 commit;
5 end loop;
6 end;
7 /
gyj@OCM> col tablespace_name for a10
gyj@OCM> col segment_name for a10
gyj@OCM> selecttablespace_name,segment_name,extent_id,file_id,block_id,bytes,blocks fromdba_extents where segment_name=\'T10\' order by extent_id;
TABLESPACE SEGMENT_NA EXTENT_ID FILE_ID BLOCK_ID BYTES BLOCKS
---------- ---------- ---------- -------------------- ---------- ----------
TP1 T10 0 6 128 1048576 128
TP1 T10 1 7 128 1048576 128
TP1 T10 2 6 256 1048576 128
TP1 T10 3 7 256 1048576 128
TP1 T10 4 6 384 1048576 128
二丶表空间类型
1丶普通表空间:系统表空间与非系统表空间
2丶临时表空间
3丶回滚表空间
三丶创建空间
CREATE TABLESPACE TP25 DATAFILE\'/u01/app/oracle/oradata/ocp/tp2501.dbf\' SIZE 50M,
\'/u01/app/oracle/oradata/ocp/tp2502.dbf\' size50M
AUTOEXTEND ON next 10M MAXSIZE 2G,
\'/u01/app/oracle/oradata/ocp/tp2503.dbf\' size50M
--EXTENT MANAGEMENT DICTIONARY
AUTOEXTEND ON next 10M MAXSIZE 2G
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 2M
SEGMENT SPACE MANAGEMENT AUTO;
CREATE TABLESPACE TP21 DATAFILE\'/u01/app/oracle/oradata/ocp/tp2501.dbf\' SIZE 50M
EXTENT MANAGEMENT DICTIONARY;
create tablespace tp22 datafile\'/u01/app/oracle/oradata/ocp/tp22_1.dbf\' size10M,\'/u01/app/oracle/oradata/ocp/tp22_2.dbf\' size 10M EXTENT MANAGEMENT LOCAL;
四丶删除表空间
1.删除没有对象的表空间
drop tablespace tp1;
2丶删除有对象的表空间,但不删除物理文件
drop tablespace tp1 including contents;
3丶删除有对象的表空间和删除物理文件
drop tablespace tp20 including contents and datafiles cascadeconstraints;
五丶管理表空间中的空间
1丶区管理方式(8i的默认空间管理是DMT,9I的默认空间管理是LMT)
(1)数据字典管理
SYS.UET$ ――具有描述已用的区的行
SYS.FET$ ――具有描述可用区的行
(2)本地管理
a.统一
b.自动
alter system dump datafile 5 block 2;
alter system dump datafile 5 block 3;
(3)本地管理表空间的优势
a.不需要执行递归空间管理操作
b.不记录数据字典表中的的空闲空间,可以减少争用
c.可自动跟踪相邻的空闲空间无需合并空闲空间
d.系统自动确定本地管理区的大小
e.对区位图进行更改不会生成还原信息,国为这些更改并不更新数据字典中的表(表空间限额信息等特殊情况除外)
(4)可以使用下面的PL/SQL程序,将任何字典管理的表空间转换成为本地管理:
Executedbms_space_admin.tablespace_migrage_to_local(‘tablespacename’);
2丶段管理方式
(1)SSM:自动管理方式(BMB段:BitmapManagedSegments),使用位图管理段中的数据块空闲空间,大并发量。
(2)MSSM:手工管理方式(FreeList),使用空闲列表来管理段中的数据块空闲空间,串行操作容易引起段头的争用。
--dump段头信息
(3)OMF(OracleManaged Files)管理
①设置参数
DB_CREATE_FILE_DEST
DB_CREATE_ONLINE_LOG_DEST_n
DB_RECOVERY_FILE_DEST
②创建表空间
ALTERSYSTEM SET DB_CREATE_FILE_DEST = \'/u01/oradata\';
CREATETABLESPACE tbs_1;
六丶临时表空间
1丶数据库默认的临时表空间
sys@OCM> select * fromdatabase_properties where property_name=\'DEFAULT_TEMP_TABLESPACE\';
sys@OCM> alter databasedefault temporary tablespace temp1;
2丶创建临时表空间或临时表空间组
(1)创建临时表空间
CREATE TEMPORARY TABLESPACE temp1 TEMPFILE\'/u01/app/oracle/oradata/ocp/temp1.dbf\' SIZE 10m;
(2)创建临时表空间组
CREATE TEMPORARY TABLESPACE temp1 TEMPFILE\'/u01/app/oracle/oradata/ocp/temp1.dbf\' SIZE 10M TABLESPACE GROUP group1;
CREATE TEMPORARY TABLESPACE temp2 TEMPFILE\'/u01/app/oracle/oradata/ocp/temp2.dbf\' SIZE 10M TABLESPACE GROUP group1;
3丶收缩临时表空间和临时文件
(1)方法一收缩临时表空间
gyj@OCM> alter tablespace TEMP shrink space keep 10M;
Tablespace altered.
(2)方法三收缩临时表空间的某个文件
sys@OCM>alter tablespace temp shrink tempfile\'/u01/app/oracle/oradata/ocm/temp01.dbf\' keep 10M;
Tablespace altered.
(3)方法三重新定义临时文件的大小
gyj@OCM> alter database tempfile\'/u01/app/oracle/oradata/ocm/temp01.dbf\' resize 100M;
Database altered.
3丶删除临时表空间
(1)查临时表空间
sys@OCM> selecttablespace_name,file_name,bytes/1024/1024 file_size,autoextensible fromdba_temp_files;
TABLESPACE_NAME FILE_NAME FILE_SIZE AUT
-------------------------------------------------------------------------------- ---------- ---
TEMP /u01/app/oracle/oradata/ocm/temp01.dbf 10.9921875 YES
(2)彻底删除临时表空间
sys@OCM> drop tablespace temp includingcontents and datafiles cascade constraints;
(3)删除临时表空间某个文件
sys@OCM>alter database tempfile\'/u01/app/oracle/oradata/orcl/temp02.dbf\' drop;-
七丶监控表空间
gyj@OCM> set line 200 pagesize 9999
gyj@OCM> select b.tablespace_name,round(sum(b.bytes)/1024/1024,0) sum_MB,round(sum(nvl(a.bytes,0))/1024/1024,0)
2 free_MB,round((sum(b.bytes)-sum(nvl(a.bytes,0)))/sum(b.bytes),4)*100use_precent
3 from (selecttablespace_name,file_id,sum(bytes) bytes from dba_free_space group bytablespace_name,file_id ) a,dba_data_files b
4 where a.file_id(+)=b.file_idand a.tablespace_name(+)=b.tablespace_name
5 group by b.tablespace_name;
order by use_precent;
TABLESPACE SUM_MB FREE_MB USE_PRECENT
---------- ----------- --------------- ---------------------
TP1 200 193 3.5
UNDOTBS1 145 18 87.84
SYSAUX 520 29 94.45
USERS 5 1 81.25
SYSTEM 680 4 99.39
EXAMPLE 100 21 78.75
八丶扩大数据库的方式
1丶创建新表空间
2丶在表空间添加文件
sys@OCM> alter tablespace tp1 add datafile\'/u01/app/oracle/oradata/ocm/tp3.dbf\' size 10M;
Tablespace altered
3丶增加文件大小
sys@OCM> alter database datafile\'/u01/app/oracle/oradata/ocm/tp3.dbf\' resize 20M;
Database altered.
4丶动态扩展数据文件
(1)查数据文件的自动扩展
sys@OCM> col file_name for a50;
sys@OCM> select file_name,autoextensiblefrom dba_data_files;
FILE_NAME AUT
-----------------------------------------------------
/u01/app/oracle/oradata/ocm/users01.dbf YES
/u01/app/oracle/oradata/ocm/undotbs01.dbf YES
/u01/app/oracle/oradata/ocm/sysaux01.dbf YES
/u01/app/oracle/oradata/ocm/system01.dbf YES
/u01/app/oracle/oradata/ocm/example01.dbf YES
/u01/app/oracle/oradata/ocm/tp1.dbf NO
/u01/app/oracle/oradata/ocm/tp2.dbf NO
/u01/app/oracle/oradata/ocm/tp3.dbf NO
(2)把tp3.dbf文件改成自动扩展
sys@OCM> alter database datafile\'/u01/app/oracle/oradata/ocm/tp3.dbf\'autoextend on next 2M maxsize 2048M;
Database altered.
(3)再次确认tp3.dbf文件是否自动扩展
sys@OCM> select file_name,autoextensiblefrom dba_data_files;
FILE_NAME AUT
-----------------------------------------------------
/u01/app/oracle/oradata/ocm/users01.dbf YES
/u01/app/oracle/oradata/ocm/undotbs01.dbf YES
/u01/app/oracle/oradata/ocm/sysaux01.dbf YES
/u01/app/oracle/oradata/ocm/system01.dbf YES
/u01/app/oracle/oradata/ocm/example01.dbf YES
/u01/app/oracle/oradata/ocm/tp1.dbf NO
/u01/app/oracle/oradata/ocm/tp2.dbf NO
/u01/app/oracle/oradata/ocm/tp3.dbf YES
**********本博客所有内容均为原创,如有转载请注明作者和出处!!!**********
Name: guoyJoe
QQ: 252803295
Email: oracledba_cn@hotmail.com
Blog: http://blog.csdn.net/guoyJoe
ITPUB: http://www.itpub.net/space-uid-28460966.html
OCM:
_____________________________________________________________
加群验证问题:哪些SGA结构是必需的,哪些是可选的?否则拒绝申请!!!
答案在:http://blog.csdn.net/guoyjoe/article/details/8624392
Oracle@Paradise 总群:127149411
Oracle@Paradise No.1群:177089463(已满)
Oracle@Paradise No.2群:121341761
Oracle@Paradise No.3群:140856036