CND8首页 - 软件下载 - 驱动下载 - 新闻资讯 - 软件学院 - 广告联系 - 设为首页 - 加入收藏
软件 | 软件分类 | 网络工具 | 系统工具 | 多媒体类 | 图形图像 | 应用软件 | 行业软件 | 教育教学 | 安全相关 | 编程开发 | 源码下载 | 电子书库 | 游戏娱乐 | 发布软件
驱动 | 硬件驱动 | PC机驱动 | 本本驱动 | 数码驱动 | 手机软件 | 办公驱动 | 硬件工具 | 新闻中心 | 软件资讯 | 硬件资讯 | 业界新闻 | 软件应用 | 安全相关 | 游戏娱乐
学院 | 操作系统 | 办公软件 | 聊天软件 | 图形图像 | 多 媒 体 | 程序开发 | 网页设计 | 网络编程 | 数 据 库 | QQ 专区 | Photoshop专区 | WindowsXP专区 | ASP PHP JSP
学院首页 | 操作系统 | 办公软件 | 聊天软件 | 图形图像 | 多 媒 体 | 程序开发 | 网页设计 | 网络编程 | 数 据 库
搜索:  热门搜索:QQ MSN Skype PhotoShop Flash 3DMax WindowsXP WindowsVista ASP PHP JSP VB
您的位置:首页 -> Oracle教程 -> Oracle 体系架构--Oracle存储

Oracle 体系架构--Oracle存储

CND8学院 Oracle教程 发布日期:2012年01月31日


     一,表空间 tablespace
    系统表空间       一定要online
    辅助表空间
    回滚表空间       一定要online
    临时表空间
    应用表空间
    SELECT * FROM Database_Properties      记录db级的一些参数的缺省值
    如缺省表空间,缺省临时表空间,缺省表空间类型
    1,创建表空间:
    create tablespace ts datafile '/u1/oradata/a/ts.dbf' size 10M
    extent management local autoallocate    也可为unifom size 1M
    segment space management auto;      也可为manual
    创建临时表空间:
    create temporary tablespace mytemp tempfile '/u1/oradata/a/mytemp.dbf' size 10M
    extent management local uniform size 1M
    segment space management manual;
    临时表空间只可以用uniform size 和 manual
    设定表空间为DB的默认表空间
    alter database default tablespace ts
    设定某临时表空间为DB的默认表空间
    alter database temporary tablespace mytemp
    查 Database_Properties发现默认表空间改变
    2,临时表空间组 (10g新特性)
    用于解决同一用户多个会话表空间争用问题
    创建临时表空间组(添加组员):
    alter tablespace mytemp tablespace group g1;
    alter tablespace mytemp2 tablespace group g1;
    产生一个组后产生一个数据字典:SELECT * FROM Dba_Tablespace_Groups 可查
    将用户的临时表空间设置成该临时表空间组
    alter user scott temporary tablespace g1
    将DB默认的临时表空间设为该临时表空间
    alter database default temporary tablespace g1;
    将临时表空间成员从临时表空间组中删除
    alter tablespace mytemp tablespace group '';
    v$tempfile 和 dba_temp_files区别?
    v$tempfile 在控制文件中,mount状态可读。dba_temp_files在数据文件中
    设计这两个功能相近的数据字典是为了恢复方便
    3,辅助表空间,
    SELECT * FROM v$sysaux_occupants;  可查看辅助表空间有哪些工具
    二,数据块
    标准块:大小和db_block_size一样的块
    非标准块:大小和db_block_size不一样的块
    块的大小
    块小:每一块中的记录少,并发概率小,但是块比较多,查询速度慢
    块大:并发概率大,但是查询速度快
    若建表是块大小已经比较大了,事后发现并发量太大如和做?
    调整pct_free
    复合型:
    在内存中每个块的缓冲区大小show parameter cache_size可查
    若内存中默认cache_size 为8k有一个表的块大小是16k,则需要在内存中开辟一段空间,器
    cache_size为16k。所以 cache中既有8k的空间又有16k的空间,所以称为复合型
    alter system set db_32k_cache_size=20M    把32k的cache设置为20M大小
    可用dump oracle最底层剖析来分析
    三,对象管理
    1,表:
    分类:
    a,normal 对表
    b,分区表(方便维护,可以提高性能)
    c,索引组织表(IOT)
    d,簇表  会减少链接的代价:当需要两个表连接时会生成一个簇表,查询时减少链接代价
    表的属性:    SELECT * FROM Dba_Tables;
    logging :默认写日志,参照表空间的属性
    initextent:不指定默认和表空间一致
    pct_free
    pct_used
    ini_trans   事务槽的初始长度
    max_trans   事务槽的最大长度
    事务槽位于块头下面,当块中记录被修改了事务槽就记录一条,如事务槽最大长度为200
    那么当修改第201次记录且之前事务都没结束时会报错
    创建表时指定事务槽大小:
    create table aaa(a int) max_trans=3;
    rowid 逻辑地址:rowid是不存在任何块中,存在索引中
    前6位:对象ID(表或索引)     Dba_Objects
    7-9位:对象所在文件ID        Dba_Data_Files      v$datafile
    10-15位:数据块ID,针对数据文件的
    16-18位:块内行号
    SELECT dbms_rowid.rowid_object(ROWID) AS obj#,
    dbms_rowid.rowid_relative_fno(ROWID) AS file#,
    dbms_rowid.rowid_block_number(ROWID) AS block#,
    dbms_rowid.rowid_row_number(ROWID) AS row#
    FROM scott.dept;
    查dept表中所有记录的rowid
    rowid 如何映射到块内的行的?
    通过查询索引,查到要查信息的rowid。通过rowid的信息查找到块以及块内的行号,若块中那
    行记录曾经alter并且新记录没有记录在原来的部位,则原来的部位会记录一个偏移量,从而找到该
    记录的新位置
    消除碎片的方法:
    (1)move   (8i,9i)
    alter table ts move TBSNAME;
    show parameter user_segment 可查
    注意:move时全表锁,做完后重建索引
    (2)shink  (10g新特性)
    原理:先排序后释放空间
    要先让表有行移动的功能:
    alter table test1 enable row movement
    排序:
    alter table test1 shink space compact
    释放空间:
    alter table test1 shink space
    shink过程不会引发行级触发器,但索引要重建
    (3)exp imp  备份恢复技术
    面试题:如何清空一个大表?
    若delete from  要写日志
    若truncate 只在数据字典中标记,并不删除数据释放区间;
    所以要删除一个大表应该先回落HWL在系统空闲的时候在释放空间:
    所以先truncate
    然后系统空闲时 alter table scott.tab1 deallocate unused keep 100m  释放到还剩100m
    alter table scott.tab1 deallocate unused keep 0m    完全释放
    建表时设定不记录日志:
    create table scott.tab as select * from dba.objects nologging;
    删除表并释放空间:
    truncate table scott.tab1 reuse storage
    2,索引:
    在无索引的情况下:要查找empno=7369的人的name时,要全表扫描,即使找到一个还是要继
    续扫描全表
    有索引的情况下

点这里查看更多Oracle教程


 分类导航
操作系统 | Windows2000 | WindowsXP | Vista | Windows7
办公软件 | Office | Word | Excel | PowerPoint | Access
聊天软件 | QQ | MSN | Skype
图形图像 | PhotoShop | FireWorks | CorelDraw | AutoCad
     | Illustrator
多 媒 体 | Flash | 3DMax | Maya | Authorware
程序开发 | VB | VC | Java | C/C++ | Delphi
网页设计 | Dreamweaver | FireWorks | HTML | Javascript
     | CSS
网络编程 | ASP | PHP | JSP | .NET | Ajax | XML
数 据 库 | Access | MySQL | SQL Server | Oracle
CND8首页 | 软件分类 | 驱动下载 | 资讯中心 | 软件学院 | 网站地图 | 下载帮助 | 本站声明 | 发布软件 | 广告联系 | 设为首页 | 加入收藏
Copyright © 2003-2010 CND8.com 版权所有 中国下载吧 ,联系QQ:289740304
苏ICP备05005485号