友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!
oracle从入门到精通(PDF格式)-第14部分
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部! 如果本书没有阅读完,想下次继续接着阅读,可使用上方 "收藏到我的浏览器" 功能 和 "加入书签" 功能!
DB_16K_CACHE_SIZE FOR 16 KB BLOCKS
DB_32K_CACHE_SIZE FOR 32 KB BLOCKS
DB_nK_CACHE_SIZE 不允许使用与标准块对应的参数。
第 64 页,共 106 页
…………………………………………………………Page 65……………………………………………………………
资源来自网络,仅供学习! Oracle 从入门到精通
7、数据块的内容:
1。 块头:
自顶向下递增
事务槽:通过事务槽来表示锁定的事务,如果想执行事务必须先获得事务槽。
2。 空闲空间:没有碎片
3。 数据:自底向上递增
8、块的空间利用参数:
INITRANS 初始事务数(事务槽的个数:平常并发事务的个数)
MAXTRANS 最大事务数(最大事务槽数)
PCTFREE 为 UPDATE 保留空间的百分比;如果没有 UPDATE操作设置为零。
PCTUSED 标识数据块什么时候可以成为可用状态(FREELIST)
FREELIST 可用数据块状态
当块没有空间后,会构建新的块,并在原块里保留指针制向新块,但性能下降(行迁移)。
9、数据块管理:
设置好之后不能更改。
1、自动空间管理:(默认)
管理数据库的段中空闲的一种方法:
使用 bitmap用 0 或1 标识不可用或可用状态。
只能在表空间级上才能设置:
在 CREATE TABLESPACE 语句最后加上 SEGMENT SPACE MANAGEMENT AUTO;
限制:不能用于包含了 LOB(大对象)对象的表空间。
2、手动管理:
可以使用下面的参数手动配置数据块:
PCTFREE PCTUSED FREELIST
得到存储信息:
DBA_EXTENTS 查看区信息
DBA_SEGMENTS 查看段信息
DBA_TABLESPACES 查看表空间信息
DBA_DATA_FILES 查看数据文件信息
DBA_FREE_SPACE 查看空闲空间信息
10、管理回滚段(Undo)的数据
管理方法:
1。 自动 Undo 管理
2。 手动 Undo 管理
回滚段的原理:
用来暂时保存事务中的原始数据,至少保存到事务结束,保留到事务结束后回滚段中的空间
被其他事务覆盖之前;
作用:
第 65 页,共 106 页
…………………………………………………………Page 66……………………………………………………………
资源来自网络,仅供学习! Oracle 从入门到精通
1。 事务回滚;
2。 事务恢复;
3。 读一致性;
在事务提交后查询,是在被查询表中查询的;
如果在事务执行中并发查询,数据库会在回滚段中取得数据,但正在并发查
询的时候事务提交就会产生读一致性错误的问题。
特性:
1。 最少需要两个区;
2。 使用区是以循环的方式使用;
3。 一个事务只能使用一个回滚段(事务不能跨回滚段);
4。 在一个回滚段上可以有多个事务(多个事务可以共享一个回滚段),每个事务使
用不同的区;
5。 在一个区中可以同时有多个事务的数据,但只能有一个活动的事务。
6。 事务对区的使用是连续的,当他将要写的下一个区有活动的事务时,它就会执
行扩展区操作;
长时间执行事务不提交,会造成阻碍会话。
减小事务大小,提交次数高一些,避免区扩展操作;
20、Undo 段的类型:
1。NON…SYSTEM类型:
自动模式:需要一个 UNDO 类型的表空间。(默认)设计为最少 200M,一般是几个 G。
配置参数: UNDO_MANAGEMENT = AUTO/MANUAL 自动/手动
UNDO_TABLESPACE = tablespace_name
提供足够大的 UNDO 类型表空间;
可以创建多个回滚类型的表空间,但只有一个是被使用的,当做切换操作的时候才需要多个表
空间。
切换:正在运行的事务可以切换。
可以在创建数据库的 CREATE DATABASE 命令中增加一个子句创建 UNDO 表空间:
CREATE DATABASE database_name
。。。。。。。
undo tablespace space_name datafile 'filepath' size nM autoextend on
或
使用 CREATE UNDO TABLESPACE 命令创建:
create undo tablespace space_name datafile 'filepath' size nM ;
手动模式:
需要一个永久类型的表空间
私有:被单个实例使用
公有:被任意实例使用
DEFERRED :当表空间被修改为 OFFLINE ;IMMEDIATE,TEMPORARY,RECOVERY 状态时候出现。
2。SYSTEM类型:
用于 SYSTEM 表空间的对象。
第 66 页,共 106 页
…………………………………………………………Page 67……………………………………………………………
资源来自网络,仅供学习! Oracle 从入门到精通
修改一个 UNDO 表空间:
alter tablespace space_name add datafile 'filepath' size nM autoextend on;
切换 UNDO 表空间:
可以从一个 UNDO 表空间切换到另一个。
在实例中一次只能使用一个 UNDO 表空间。
多个 UNDO 表空间可以存放在一个实例中,但只有一个是激活的。
使用 ALTER SYSTEM 命令动态切换 UNDO 表空间。
ALTER SYSTEM set UNDO_TABLESPACE = space_name;
删除 UNDO 表空间:
drop tablespace space_name;
UNDO 只是在当前实例没有使用它的时候才可以删除。
为了删除一个激活的 UNDO 表空间:
切换到一个新的 UNDO 表空间;
当所有表空间上的当前事务结束后删除表空间;
3。自动UNDO段管理的其他参数:
UNDO_SUPPRESS_ERRORS parameter
设置为 TRUE,可以压制在 AUTO 模式下执行手动管理命令时的错误。
UNDO_RETENTION parameter
控制为了保证读一致性而保留在提交后回滚段中数据的时间。
查看 UNDO 段信息:
SELECT。。。 FROM VUNDOSTAT;回滚段的使用频度
DBA_ROLLBACK_SEGS
21、管理表
rowid 格式:伪列。
扩展型(extended)
组成:数据对象号(data object number)、相对文件号(relative file number)、
块号(block number)、行号(row number)(每个号6 个字节)
由 18 个字母组织的,存成 60 个字节,代表一行数据的绝对地址
限制型(restrcted)
组成:块号(block number)、行号(row number)、文件号(file number)
exec DBMS_ROWID 包(backage)
SELECT 。。。DBMS_ROWID。 。。。FROM table_name;
1。创建表提示:
将表创建在独立的表空间中;
使用本地管理;
表使用标准的区大小来避免在表空间上产生碎片;
第 67 页,共 106 页
…………………………………………………………Page 68……………………………………………………………
资源来自网络,仅供学习! Oracle 从入门到精通
在创建各种文件的时候最好都有它们独立的表空间支持。
2。创建临时表
CREATE GLOBAL TEMPORARY TABLE
。。。。。。。
特征:
用户创建的临时表是用户的会话独占的;
表在事务或会话过程中包含数据;
只会有结构而不会有存储;
在数据上不会得到 DML锁;
对该表所做的 DML 操作不会写到日志上;
不用做 DELETE 或TRUNCATE 操作,该表在内存中,当事务结束或会话结束时释放;
可以在临时表上创建索引、视图、触发器;
3。修改存储参数和块空间利用参数:
alter table owner。table_name
pctfree 30//块参数
pctused 50//块参数
storage(next 500k minextents 2 maxextents 120);//存储参数
4。手动分配区:
alter table hr。employees allocate extent(size 500k datafile 'filepath');
5。非分区表的重组
alter table owner。table move tablespace space_name;
当表被重组后,它的结构被重组,但内容没有影响;
约束条件不变,但与其对应的索引不存在了,所以重组之后的索引必须重建;
可以被用于移动表到新的表空间或者重组区;
6。删除列:
alter table owner。table_name drop
column col_name cascade constraints checkpoint 1000;
checkpoint 1000 每一千行 执行一次检查点
检查点:完成同步,将写入日志的改变对应的数据写入数据文件中;
从每行中删除掉列占据的长度和数据,释放在数据块中占用的空间。
删除大表中的一列将花费比较长的时间。
7。重命名表中的一列:
alter table owner。table_name
第 68 页,共 106 页
…………………………………………………………Page 69……………………………………………………………
资源来自网络,仅供学习! Oracle 从入门到精通
rename column old_name to new_name;
8。标记列不再使用:
alter table owner。table_name
set unused column col_name cascade constraints;
9。删除不使用的列:
alter table owner。table_name
drop unused columns checkpoint 1000;
10。继续列的删除操作:
alter table owner。table_name
drop columns continue checkpoint 1000;
11。得到表的信息:
DBA_TABLES DBA_OBJECTS
22、管理索引(index)
关键字+ROWID,排序!!!
1。索引的分类:
逻辑上:
Single column 单行索引
Concatenated 多行索引
Unique 唯一索引
NonUnique 非唯一索引
Function…based 函数索引
Domain 域索引
物理上:
Partitioned 分区索引
NonPartitioned 非分区索引
B…tree:
Normal 正常型 B 树
Rever Key 反转型 B 树
Bitmap 位图索引
2。索引结构:
B…tree:
适合与大量的增、删、改(OLTP);
第 69 页,共 106 页
…………………………………………………………Page 70……………………………………………………………
资源来自网络,仅供学习! Oracle 从入门到精通
不能用包含 OR 操作符的查询;
适合高基数的列(唯一值多)
典型的树状结构;
每个结点都是数据块;
大多都是物理上一层、两层或三层不定,逻辑上三层;
叶子块数据是排序的,从左向右递增;
在分支块和根块中放的是索引的范围;
Bitmap:
适合与决策支持系统;
做 UPDATE 代价非常高;
非常适合 OR操作符的查询;
基数比较少的时候才能建位图索引;
树型结构:
索引头
开始 ROWID,结束 ROWID(先列出索引的最大范围)
BITMAP
每一个 BIT对应着一个 ROWID,它的值是 1 还是0,如果是 1,表示着 BIT对应
的 ROWID 有值;
3。存储参数:
initial 初始化大小
next 下一个区大小
pctincrease 区大小增量
minextents 最小区数(本地管理)
maxextents 最大区数(本地管理)
4。创建B…TREE索引:
CREATE INDEX owner。index_name
ON owner。table_name(col_list)
PCTFREE n
STORAGE(INITAL nK NEXT nK PCTINCREASE n MAXEXTENTS n )
TABLESPACE space_name;
5。索引PCTFREE的变化:
索引不存在 PCTUSED;
PCTFREE 的含义是为新的插入预留的空间,在索引创建时保留;
在索引中是没有 UPDATE的。
6。创建索引的提示:
平衡查询与 DML 操作的需求,不要建太多的索引;
将索引放在单独的表空间;
使用统一的区大小:5 块的整倍数或表空间的 MINIMUMEXTENT的大小;
第 70 页,共 106 页
…………………………………………………………Page 71……………………………………………………………
资源来自网络,仅供学习! Oracle 从入门到精通
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!