Chinaunix首页 | 论坛 | 博客
  • 博客访问: 863939
  • 博文数量: 72
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 435
  • 用 户 组: 普通用户
  • 注册时间: 2013-04-27 20:07
个人简介

郭一军,网名guoyJoe,尖峰在线培训创始人、Oracle OCM、ITPUB论坛Oracle认证版版主、2013最佳精华贴、Senior DBA、Oracle OCT、 ACOUG MEMBER、CSDN 认证专家、RHCE、在线技术分享的倡导者和实践者。 http://www.jianfengedu.com http://jianfengedu.taobao.com

文章分类
文章存档

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


阅读(865) | 评论(0) | 转发(0) |
0

上一篇:网络配置

下一篇:用户管理

给主人留下些什么吧!~~