(2010-06-19)关于undo表空间大小设定的讨论
来源:互联网 发布:win7仿mac os x全套 编辑:程序博客网 时间:2024/05/22 17:37
最近准备开始看看OCP试题了,不为考试,只为检测下自己的水平和从试题中去查看相关的资料来丰富自己的知识面。这不,刚看到第一道题就卡住了,答案选错了。第一道题是:选出三项决定undo tablespace的因素,对于undo表空间的资料很久之前看过了,现在又忘了,算了,重新温习下吧。温故而知新嘛。
言归正传。
1.undo_retention值越大,需要的undo表空间越大
undo_retention值表示一个undo数据块最久能在undo表空间中停留的时间,单位是秒,缺省值为900。(问:如果已经超过了这个时间,而事务还么有提交,此时该undo数据块可以被覆盖吗?)
undo表空间资源是循环使用的,在undo_retention时间内,undo数据块的内容是不会被释放掉,也即不会被新的undo数据覆盖。所以设置停留时间越久,undo表空间就越大。
undo_retention值表示一个undo数据块最久能在undo表空间中停留的时间,单位是秒,缺省值为900。(问:如果已经超过了这个时间,而事务还么有提交,此时该undo数据块可以被覆盖吗?)
undo表空间资源是循环使用的,在undo_retention时间内,undo数据块的内容是不会被释放掉,也即不会被新的undo数据覆盖。所以设置停留时间越久,undo表空间就越大。
2.工作量很大,业务量大,事务很多时,每秒钟所产生undo数据块的个数越多,需要的undo表空间越大。
3.和db_block_size的大小有关
select begin_time,end_time,undoblks
from v$undostat;
BEGIN_TIME END_TEME UNDOBLKS
------------------ ------------------- ----------
28-SEP-O8 13:43:02 28-SEP-O8 13:44:18 19
28-SEP-O8 13:33:02 28-SEP-O8 13:43:18 1474
28-SEP-O8 13:23:02 28-SEP-O8 13:33:18 1347
28-SEP-O8 13:13:02 28-SEP-O8 13:23:18 16 28
此语句记录了undo数据块的历史使用情况,每隔10分钟刷一次。此结果表示记录前40分钟分别用到undo数据块19个、1474个、1347个、1628个;
from v$undostat;
BEGIN_TIME END_TEME UNDOBLKS
------------------ ------------------- ----------
28-SEP-O8 13:43:02 28-SEP-O8 13:44:18 19
28-SEP-O8 13:33:02 28-SEP-O8 13:43:18 1474
28-SEP-O8 13:23:02 28-SEP-O8 13:33:18 1347
28-SEP-O8 13:13:02 28-SEP-O8 13:23:18 16 28
此语句记录了undo数据块的历史使用情况,每隔10分钟刷一次。此结果表示记录前40分钟分别用到undo数据块19个、1474个、1347个、1628个;
select addr,used_ublk
from v$transaction;
ADDR USED_UBLK
--------- --------------
5932F4A0 863
from v$transaction;
ADDR USED_UBLK
--------- --------------
5932F4A0 863
此语句可以查看当前事务所需要数据块的个数,此结果表示,当前用户只有一个事务正在执行,此事务需要863个undo数据块。
事务越多,操作影响数据越多,需要的undo数据块也越多。
如何计算所需undo表空间的大小:
1.计算业务高峰期每秒产生undo数据块的个数:
SQL> select max(undoblks / ((end_time - begin_time)*24*3600))
SQL> from undostat;
1.计算业务高峰期每秒产生undo数据块的个数:
SQL> select max(undoblks / ((end_time - begin_time)*24*3600))
SQL> from undostat;
2.得到undo数据块在undo表空间中可以保留的最长时间
show parameter undo_retention
show parameter undo_retention
3.得到数据块大小
show parameter db_block;
show parameter db_block;
4.将以上三者的数据相乘就是所需undo表空间的大小数。
发现undo表空间不够的时候,赶紧增加undo表空间的大小,执行语句如下:
alter tablespace undotbs
add datafile '/u01/oradata/undotbs2.dbf' size 700M
autoextend on;
alter tablespace undotbs
add datafile '/u01/oradata/undotbs2.dbf' size 700M
autoextend on;
ORA-01555
查询失败,其他事务产生的undo数据覆盖了undo表空间中查询需要的old数据块。
查询失败,其他事务产生的undo数据覆盖了undo表空间中查询需要的old数据块。
---------------------------------------------------------------------------------------------------------------------
删除undo tablespace实验:
SQL> create undo tablespace undotbs2
2 datafile '/opt/oradata/oradata/orcl/undotbs02.dbf' SIZE 100m
3 autoextend off;
Tablespace created.
SQL> show parameter undo
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_management string AUTO
undo_retention integer 10800
undo_suppress_errors boolean FALSE
undo_tablespace string UNDOTBS1
SQL> alter system set undo_tablespace=UNDOTBS2 scope=both;
System altered.
SQL> show parameter undo
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_management string AUTO
undo_retention integer 10800
undo_suppress_errors boolean FALSE
undo_tablespace string UNDOTBS2
SQL> select segment_name ,tablespace_name ,segment_id from dba_rollback_segs;
SEGMENT_NAME TABLESPACE_NAME SEGMENT_ID
------------------------------ ------------------------------ ----------
SYSTEM SYSTEM 0
_SYSSMU1$ UNDOTBS1 1
_SYSSMU2$ UNDOTBS1 2
_SYSSMU3$ UNDOTBS1 3
_SYSSMU4$ UNDOTBS1 4
_SYSSMU5$ UNDOTBS1 5
_SYSSMU6$ UNDOTBS1 6
_SYSSMU7$ UNDOTBS1 7
_SYSSMU8$ UNDOTBS1 8
_SYSSMU9$ UNDOTBS1 9
_SYSSMU10$ UNDOTBS1 10
SEGMENT_NAME TABLESPACE_NAME SEGMENT_ID
------------------------------ ------------------------------ ----------
_SYSSMU11$ UNDOTBS2 11
_SYSSMU12$ UNDOTBS2 12
_SYSSMU13$ UNDOTBS2 13
_SYSSMU14$ UNDOTBS2 14
_SYSSMU15$ UNDOTBS2 15
_SYSSMU16$ UNDOTBS2 16
_SYSSMU17$ UNDOTBS2 17
_SYSSMU18$ UNDOTBS2 18
_SYSSMU19$ UNDOTBS2 19
_SYSSMU20$ UNDOTBS2 20
21 rows selected.
SQL> select usn,status,xacts from v$rollstat;
USN STATUS XACTS
------------- --------------- -------------
0 ONLINE 0
10 PENDING OFFLINE 1
11 ONLINE 0
12 ONLINE 0
13 ONLINE 0
14 ONLINE 0
15 ONLINE 0
16 ONLINE 0
17 ONLINE 0
18 ONLINE 0
19 ONLINE 1
USN STATUS XACTS
------------- --------------- -------------
20 ONLINE 0
12 rows selected.
发现原UNDOTBS1的回滚段处于PENDING OFFLINE状态,并有一个事物存在,需要等到事务完成后,才能drop UNDOTBS1
SQL> select usn,status,xacts from v$rollstat;
USN STATUS XACTS
------------- --------------- -------------
0 ONLINE 0
10 PENDING OFFLINE 0
11 ONLINE 0
12 ONLINE 0
13 ONLINE 0
14 ONLINE 0
15 ONLINE 0
16 ONLINE 0
17 ONLINE 0
18 ONLINE 0
19 ONLINE 1
USN STATUS XACTS
------------- --------------- -------------
Tablespace created.
SQL> show parameter undo
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_management string AUTO
undo_retention integer 10800
undo_suppress_errors boolean FALSE
undo_tablespace string UNDOTBS1
SQL> alter system set undo_tablespace=UNDOTBS2 scope=both;
System altered.
SQL> show parameter undo
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_management string AUTO
undo_retention integer 10800
undo_suppress_errors boolean FALSE
undo_tablespace string UNDOTBS2
SQL> select segment_name ,tablespace_name ,segment_id from dba_rollback_segs;
SEGMENT_NAME TABLESPACE_NAME SEGMENT_ID
------------------------------ ------------------------------ ----------
SYSTEM SYSTEM 0
_SYSSMU1$ UNDOTBS1 1
_SYSSMU2$ UNDOTBS1 2
_SYSSMU3$ UNDOTBS1 3
_SYSSMU4$ UNDOTBS1 4
_SYSSMU5$ UNDOTBS1 5
_SYSSMU6$ UNDOTBS1 6
_SYSSMU7$ UNDOTBS1 7
_SYSSMU8$ UNDOTBS1 8
_SYSSMU9$ UNDOTBS1 9
_SYSSMU10$ UNDOTBS1 10
SEGMENT_NAME TABLESPACE_NAME SEGMENT_ID
------------------------------ ------------------------------ ----------
_SYSSMU11$ UNDOTBS2 11
_SYSSMU12$ UNDOTBS2 12
_SYSSMU13$ UNDOTBS2 13
_SYSSMU14$ UNDOTBS2 14
_SYSSMU15$ UNDOTBS2 15
_SYSSMU16$ UNDOTBS2 16
_SYSSMU17$ UNDOTBS2 17
_SYSSMU18$ UNDOTBS2 18
_SYSSMU19$ UNDOTBS2 19
_SYSSMU20$ UNDOTBS2 20
21 rows selected.
SQL> select usn,status,xacts from v$rollstat;
USN STATUS XACTS
------------- --------------- -------------
0 ONLINE 0
10 PENDING OFFLINE 1
11 ONLINE 0
12 ONLINE 0
13 ONLINE 0
14 ONLINE 0
15 ONLINE 0
16 ONLINE 0
17 ONLINE 0
18 ONLINE 0
19 ONLINE 1
USN STATUS XACTS
------------- --------------- -------------
20 ONLINE 0
12 rows selected.
发现原UNDOTBS1的回滚段处于PENDING OFFLINE状态,并有一个事物存在,需要等到事务完成后,才能drop UNDOTBS1
SQL> select usn,status,xacts from v$rollstat;
USN STATUS XACTS
------------- --------------- -------------
0 ONLINE 0
10 PENDING OFFLINE 0
11 ONLINE 0
12 ONLINE 0
13 ONLINE 0
14 ONLINE 0
15 ONLINE 0
16 ONLINE 0
17 ONLINE 0
18 ONLINE 0
19 ONLINE 1
USN STATUS XACTS
------------- --------------- -------------
20 ONLINE 0
12 rows selected.
SQL> select usn,status,xacts from v$rollstat;
USN STATUS XACTS
------------- --------------- -------------
0 ONLINE 0
11 ONLINE 0
12 ONLINE 0
13 ONLINE 0
14 ONLINE 0
15 ONLINE 0
16 ONLINE 0
17 ONLINE 0
18 ONLINE 0
19 ONLINE 1
20 ONLINE 0
11 rows selected.
SQL> drop tablespace undotbs1 including contents and datafiles;
Tablespace dropped.
SQL>
12 rows selected.
SQL> select usn,status,xacts from v$rollstat;
USN STATUS XACTS
------------- --------------- -------------
0 ONLINE 0
11 ONLINE 0
12 ONLINE 0
13 ONLINE 0
14 ONLINE 0
15 ONLINE 0
16 ONLINE 0
17 ONLINE 0
18 ONLINE 0
19 ONLINE 1
20 ONLINE 0
11 rows selected.
SQL> drop tablespace undotbs1 including contents and datafiles;
Tablespace dropped.
SQL>
- (2010-06-19)关于undo表空间大小设定的讨论
- 如何缩小undo表空间的大小
- UNDO表空间大小评估
- 计算undo表空间大小
- 估算Undo表空间大小
- oracle undo 表空间 ——估算UNDO表空间的大小
- 如何确定或调整undo表空间的大小
- undo系列学习之如何计算undo表空间的大小
- 查看undo tablespace空间的大小
- 关于回收UNDO表空间
- Oracle undo表空间大小估算
- UNDO表空间与Undo的认识
- 关于Oracle中不能扩展Undo表空间的问题
- 关于Oracle 释放过度使用的Undo表空间
- 关于undo表空间配置错误的ORA-30012
- oracle中关于undo表空间的使用
- undo表空间的切换
- UNDO表空间的管理
- 笔试常见链表题
- 直接在资源管理器内将PPT转成pdf文件
- Linux Network Configuration
- ARM汇编伪指令 .word
- 《叩开C#之门》系列之三
- (2010-06-19)关于undo表空间大小设定的讨论
- 配置交货单smartform
- 算法的学习步骤
- Oracle 备份、恢复单表或多表数据步骤
- Dom4j解析XML文档
- 由“两个链表的连接”思考C
- 了解团队开发的,请进。
- xcx
- jquery 将disabled的元素置为enabled的三种方法