设为首页 收藏本站
查看: 1299|回复: 0

[经验分享] Oracle OCP笔记(13)表空间和数据文件

[复制链接]

尚未签到

发表于 2015-11-9 10:00:32 | 显示全部楼层 |阅读模式
Oracle OCP笔记(13)表空间和数据文件


1.数据库存储结构
    实例由进程和内存结构组成,所有数据处理都在内存中执行,数据存储发生在磁盘的数据库中。
    数据库包含三类文件: 控制文件,联机重做日志文件和数据文件。数据存储在数据文件中。
    数据库将逻辑存储从物理存储中抽象出来。DBA必须了解逻辑存储和物理存储之间的关系。


    逻辑存储结构: 表空间(tablespace) -< 段(segment) -< 区间(extent) -< 块(block)
    物理存储结构: 数据文件(datafile) -< 操作系统块(block)


    程序设计人员只处理逻辑结构,而让数据库去管理逻辑结构到物理结构的映射。
    从逻辑上讲,数据在段(segment)中存储;从物理上讲,数据在数据文件(datafile)中存储。
    表空间(tablespace)实体消除了段与数据文件之间的多对多关联(由数据库管理,程序设计人员不用关心),一个表空间可能包含多个段,而且可以由多个数据文件组成。这意味着,一个段可以分布在多个数据文件中,而任一数据文件可以包含多个段的全部和一部分。
    段(segment)实体表示存储数据从而需要表空间的任何数据库对象,如:表段、索引段、撤消段。段和数据文件没有直接关系。数据文件可以作为文件系统中的文件存在,也可以作为自动存储管理(ASM)设备上的文件存在。
    块(block)是数据库的I/O单元。数据文件被设置为连续编号的Oracle数据库块。块由数据文件与块编号唯一标识。块大小固定不变。
    在Linux或Windows上,块大小一般是2-16KB,其它系统上可达到32KB,默认块大小由参数db_block_size控制. 一个Oracle块对应一个或多个操作系统块。
    区间(extent)是一个数据文件中一组连续编号的Oracle块。


    每个段将由一个或多个连续编号的区间组成,这些区间可能位于构成表空间的任何或所有数据文件中。
    区间可以根据段的维度或数据文件的维度确定。
    段的维度: 区间根据每个段连续编号,从零开始.
    数据文件的维度: 每个区间在一个文件中,从某个Oracle块编号开头。


    selec * from dba_segments;
    select tablespace_name,file_id,extent_id,block_id,block,butes from dba_extents;
    select tablespace_name,file_name,file_id from dba_data_files;


2.查询存储结构的视图
    控制文件的名称和大小
    select name,block_size*file_size_blks bytes from v$controlfile;
    联机重做日志文件成员的名称和大小
    select member,bytes from v$log join v$logfile using (group#);
    数据文件和临时文件的名称和大小
    select name,bytes from v$datafile;
    select name,bytes from v$tempfile;


3.数据文件的大小限制:
    (1)smallfile表空间的数据文件:
    Rowid包括四部分组成: 对象号&#43;相对文件号&#43;块号&#43;行号(32bit object# &#43; 10bit rfile# &#43; 22bit block# &#43; 16 bit row#),10Bytes.
    select dbms_rowid.rowid_object(rowid) object_id,
           dbms_rowid.rowid_relative_fno(rowid) relative_fno,
           dbms_rowid.rowid_block_number(rowid) block_number,
           dbms_rowid.rowid_row_number(rowid) row_number,           
      from mms.usr_mstr
     where rownum < 10;


    每个文件都包括两个编号,一个是绝对文件编号file_id,另一个是相对文件编号relative_fno。
    select dbms_rowid.rowid_relative_fno(rowid) relative_fno,                     -- 相对文件编号(最大1024)
           dbms_rowid.rowid_to_absolute_fno(rowid,'MMS','USR_MSTR') absolute_fno  -- 绝对文件编号
      from mms.usr_mstr
     where rownum < 10;


    在smallfile表空间的数据文件中,Oracle利用22位进行块地址存储,22位最多只能代表2^22-1=4194303=4M个数据块,如果数据块大小为8k,则数据文件的理论大小上限为32G。如果最大数据块大小为32K,则数据文件的理论大小上限为128G。一个表空间只能有1023个数据文件。
    因此,数据文件大小和db_block_size有关,数据块大小与数据文件最大理论&#20540;的对应关系如下:
    2KB       8GB
    4KB      16GB
    8KB      32GB
    16KB     64GB
    32KB    128GB


    (2)bigfile表空间的数据文件
    在bigfile表空间的数据文件中,由于一个表空间只允许有一个数据文件,事情会有所不同。
    select dbms_rowid.rowid_object(rowid) object_id,
           dbms_rowid.rowid_relative_fno(rowid,'BIGFILE') relative_fno,
           dbms_rowid.rowid_block_number(rowid) block_number,
           dbms_rowid.rowid_row_number(rowid) row_number
      from mms.usr_mstr
     where rownum < 10;


    bigfile表空间只能有一个数据文件,Rowid的文件号就没有意义了,直接就是1024。由于没有relative_fno的问题,这样rowid中就不需要保存relative_fno的最多1024的数&#20540;。这样就节省出10位二进制位给数据块定位,相同长度的rowid就可以进行32位二进制长度的数据块寻址。每个数据文件中,最多可以包含2^32-1=4G个数据块。如果数据块大小8K,则数据文件理论大小上限为32TB。如果数据块大小为32K,则数据文件理论大小上限为128TB。
   
*** 数据文件大小也与操作系统的限制有关。


4.表空间的统计信息
    SELECT d.status &quot;Status&quot;,
           d.tablespace_name &quot;Name&quot;,
           d.contents &quot;Type&quot;,
           d.extent_management &quot;Extent Management&quot;,
           NVL(a.bytes / 1024 / 1024, 0) &quot;Size (M)&quot;,
           TO_CHAR(NVL(a.bytes - NVL(f.bytes, 0), 0)/1024/1024,'99999999.999') &quot;Used (M)&quot;,
           ROUND(NVL((a.bytes - NVL(f.bytes, 0)) / a.bytes * 100, 0),2) &quot;Used (%)&quot;
      FROM sys.dba_tablespaces d,
           (select tablespace_name, sum(bytes) bytes from dba_data_files group by tablespace_name) a,
           (select tablespace_name, sum(bytes) bytes from dba_free_space group by tablespace_name) f
     WHERE d.tablespace_name = a.tablespace_name(&#43;)
       AND d.tablespace_name = f.tablespace_name(&#43;)
       AND NOT (d.extent_management like 'LOCAL' AND d.contents like 'TEMPORARY')
     UNION ALL
    SELECT d.status &quot;Status&quot;,
           d.tablespace_name &quot;Name&quot;,
           d.contents &quot;Type&quot;,
           d.extent_management &quot;Extent Management&quot;,
           NVL(a.bytes / 1024 / 1024, 0) &quot;Size (M)&quot;,
           TO_CHAR(NVL(t.bytes,0)/1024/1024,'99999999.999') &quot;Used (M)&quot;,
           ROUND(NVL(t.bytes / a.bytes * 100, 0),2) &quot;Used (%)&quot;
      FROM sys.dba_tablespaces d,
           (select tablespace_name, sum(bytes) bytes from dba_temp_files group by tablespace_name) a,
           (select tablespace_name, sum(bytes_cached) bytes from v$temp_extent_pool group by tablespace_name) t
     WHERE d.tablespace_name = a.tablespace_name(&#43;)
       AND d.tablespace_name = t.tablespace_name(&#43;)
       AND d.extent_management like 'LOCAL'
       AND d.contents like 'TEMPORARY'
     ORDER BY 2;


    select t.tablespace_name name, d.allocated, u.used, f.free, t.status, d.datafiles, contents,
           t.extent_management extman, t.segment_space_management segman
      from dba_tablespaces t,
           (select tablespace_name, sum(bytes) allocated, count(file_id) datafiles from dba_data_files group by tablespace_name) d,
           (select tablespace_name, sum(bytes) free from dba_free_space group by tablespace_name) f,
           (select tablespace_name, sum(bytes) used from dba_segments group by tablespace_name) u
     where t.tablespace_name = d.tablespace_name(&#43;)
       and t.tablespace_name = f.tablespace_name(&#43;)
       and t.tablespace_name = u.tablespace_name(&#43;);


5.管理表空间
    (1).创建表空间
    create [smallfile|bigfile] tablespace tablespace_name
      datafile '/u01/app/oracle/oradata/SID/***.dbf'
      size 100M autoextend on next 10M maxsize 200M
      logging
      extent management local
      segment space management auto
      default nocompress;


    v$tablespace查看smallfile或bigfile;


    (2).更改表空间
    alter tablespace tablespaceoldname rename to tablespacenewname;          --重命名表空间
    alter tablespace tablespacename offline [normal|immediate|temporary];    --使表空间脱机
    alter tablespace tablespacename [read only|read write];                  --表空间标记只读和读写
    alter database datafile filename resize n[M|G|T];                        --重新调整表空间数据文件大小
    alter tablespace tablespacename add datafile datafilename size n[M|G|T]; --添加数据文件进表空间
    alter database datafile filename autoextend on next 100M maxsize 4G;     --修改表空间数据文件的自动扩展


    (3).重命名表空间和数据文件
    alter tablespace tablespacename rename to newtablespacename;
    alter tablespace tablespacename offline;
    host rename xxxxx.dbf xxxxxxx.dbf
    alter database rename file 'oldfilename' to 'newfilename';
    alter tablespace tablespacename online;


    (4).删除表空间
    drop tablespace tablespacenmae [including contents [and datafiles]];


    使用OMF特性管理数据库文件的创建,设置以下参数
    db_create_file_dest                   --数据文件的默认位置
    db_create_online_log_dest_1           --联机重做日志的默认位置
    db_create_online_log_dest_2
    db_create_online_log_dest_3
    db_create_online_log_dest_4
    db_create_online_log_dest_5
    db_recovery_file_dest                 --快速恢复区默认位置、归档日志文件和备份文件的默认位置         版权声明:本文为博主原创文章,未经博主允许不得转载。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-136902-1-1.html 上篇帖子: 关于OCP11g解析——2014-07-30 下篇帖子: OCP-1Z0-051 第109题 聚合函数的使用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表