日期:2014-05-16  浏览次数:20440 次

Oracle10g系统管理9

51.UNDO数据的作用
回退事务
读一致性
事务恢复
闪回查询

?

使用UNDO参数
UNDO_MANAGEMENT:AUTO,MANUAL
UNDO_TABLESPACE:在RAC结构下,因为一个UNDO表空间不能由多个例程同时使用,必须为每个例程配置一个独立的UNDO表空间
UNDO_RETENTION:控制UNDO数据的最大保留时间,默认值为900秒

?

使用CREATE DATABASE命令建立UNDO表空间
CREATE DATABASE db01

UNDO TABLESPACE undotbs_01
DATAFILE ‘/u01/oracle/db01/undo01.dbf’ size 30m;

使用CREATE UNDO TABLESPACE命令建立UNDO表空间
CREATE UNDO TABLESPACE undotbs
DATAFILE ‘/u01/oracle/db01/undotbs.dfb’ size 10m;

修改UNDO表空间
ALTER TABLESPACE undotbs
ADD DATAFILE '/u01/oroacle/db01/undotbs1.dbf' size 5m;

切换UNDO表空间,同一时刻特定实例只能使用一个UNDO表空间。
切换UNDO表空间是指停止例程当前在用的UNDO表空间,并启用其他UNDO表空间。
alter system set undo_tablespace=undotbs02;

?

显示UNDO段统计信息
select a.name, b.xacts, b.writes, b.extents from v$rollname a, v$rollstat b
where a.usn = b.usn;

显示活动事务信息
v$session显示会话的详细信息,v$transaction显示事务的详细信息,v$rollname显示联机undo段得名称。
执行连接查询,可以确定正在执行事务操作的会话、事务所使用的UNDO段,以及事务所占用的UNDO块个数。
select a.username,b.name,c.used_ublk from v$session a,v$rollname b,v$transaction c
where a.saddr=c.ses_addr and b.usn = c.xidusn and a.username='SCOTT';

?

52.表段(Table)
表分区段(Table Partition)
簇段(Cluster)
索引段(Index)
索引分区段(Index Partition)
索引组织表段(Index-organized Table)
UNDO段
临时段(Temporary Segment)
LOB段
LOB索引段
嵌套表段(Nested Table)
根引导段(Cache)

?

显示段类型
select distinct segment_type from dba_segments;

显示段详细信息(段所有者、段所在表空间、区个数、块个数和尺寸)
select tablespace_name,extents,bytes from dba_segments
where owner='SCOTT' and segment_name='EMP';

存储参数
Initial
Next
Pctincrease
Minextents
Maxextents
Freelist groups
用于指定对象的空闲列表组个数,每个空闲列表组会占用一个数据块,Oracle建议为Oracle Real Application Cluster的每个例程
指定一个空闲列表组,Freelist Groups只能在段级别指定
Freelists
用于指定每个空闲列表组上的空闲别表个数,空闲列表用于维护可插入数据的数据块,Freelists只能在段级指定

显示已分配区
select extent_id, file_id, block_id, bytes from dba_extents
where owner=’SYS’ and segment_name=’T1’;

显示空闲区
select sum(bytes) from dba_free_space where tablespace_name=’USER01’;

块空间参数
pctfree:用于指定在数据块内为UPDATE操作所预留空间的百分比,默认为10。
pctused:用于指定将数据块标记为可重用块得已用空间最低百分比,默认为40。
initrans:用于指定初始事务入口个数。

select pct_free, pct_used, ini_trans, max_trans from dba_tables
where owner=’SYSTEM’ and table_name=’DEPARTMENT’;

select pct_free, ini_trans, max_trans from dba_indexes
where owner=’SYSTEM’ and index_name=’PK_DEPTNO’;