undo表空间! undo表空间过小,会对数据库有何影响? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 当查询的数据比较大时有影响,undo表空间主要用于统计和排序空间过小统计和排序会慢好多 回滚段表空间 i. 回滚段在系统中的作用 当数据库进行更新插入删除等操作的时候,新的数据被更新到原来的数据文件,而旧的数据(Before Image)就被放到回滚段中,如果数据需要回滚,那么可以从回滚段将数据再复制到数据文件中。来完成数据的回滚。在系统恢复的时候, 回滚段可以用来回滚没有被commit 的数据,解决系统的一至性。 回滚段在什么情况下都是大量的写,一般是少量读,因此建议把回滚段单独出来放在一个单独的设备(如单独的磁盘或RAID),以减少磁盘的IO争用。 ii. 回滚段的工作方式 一个回滚表空间可以被划分成多个回滚段. 一个回滚段可以保存多个会话的数据. 回滚段是一个圆形的数据模型 假设回滚段由4 个区间组成,他们的使用顺序就是区间1à区间2à区间3à区间4à区间1。也就是说,区间是可以循环使用的,当区间4到区间1的时候,区间1里面的会话还没有结束, 区间4用完后就不能再用区间1,这时系统必须分配区间5,来继续为其他会话服务服务。 纠正:回滚段表空间小确实影响速度,但不是排序和统计,而是事务回滚\事务恢复\读一致性等空间小的时候,对提交比较大的数据数据交换空间不够而会慢,具体参考下面;回滚段概述 回滚段用于存放数据修改之前的值(包括数据修改之前的位置和值)。回滚段的头部包含正在使用的该回滚段事务的信息。一个事务只能使用一个回滚段来存放它的回滚信息,而一个回滚段可以存放多个事务的回滚信息。 回滚段的作用 事务回滚:当事务修改表中数据的时候,该数据修改前的值(即前影像)会存放在回滚段中,当用户回滚事务(ROLLBACK)时,ORACLE将会利用回滚段中的数据前影像来将修改的数据恢复到原来的值。 事务恢复:当事务正在处理的时候,例程失败,回滚段的信息保存在重做日志文件中,ORACLE将在下次打开数据库时利用回滚来恢复未提交的数据。 读一致性:当一个会话正在修改数据时,其他的会话将看不到该会话未提交的修改。而且,当一个语句正在执行时,该语句将看不到从该语句开始执行后的未提交的修改(语句级读一致性)。当ORACLE执行SELECT语句时,ORACLE依照当前的系统改变号(SYSTEM CHANGE NUMBER-SCN)来保证任何前于当前SCN的未提交的改变不被该语句处理。可以想象:当一个长时间的查询正在执行时,若其他会话改变了该查询要查询的某个数据块,ORACLE将利用回滚段的数据前影像来构造一个读一致性视图。 回滚段存储的是dml操作的前映象;oracle执行dml操作的步骤是这样的:1,从磁盘文件中将数据读入数据缓冲区;2,当一个update或者delete执行的时候,将缓冲区中的数据块先写到回滚段中3,然后将缓冲区中的数据块对应记录修改过来(此时数据变成dirty block)4,如果这时执行rollback,系统后台进程将会使用回滚段中的数据块替换缓冲区中的数据块;5,如果执行的是commit,则oracle会释放对回滚段的占用。回滚段的管理方式是循环覆盖的。一个表空间中可以有多个回滚段,一个回滚段中允许有多个区。一个回滚段对应多个事务,每个事务只能使用一个回滚段。假设回滚段1有四个区;dml事务a占用了第一个区而一直没有commit;事务b占用第四个区,如果b中数据较多,而回滚段又不允许扩展,则事务b需要一直等待a释放第一个区才可以。在这里,如果一个update或者delete语句一直没有执行commit;那么事务将会保持对回滚段的持续占用,这时新的update操作执行前,必须等待前面的dml操作释放需要的回滚空间(当然,如果回滚段允许扩展将不存在这个问题)。 可能引起ORA-01555 快照过旧 请教store procedure中的问题。 PL/SQL 配置中文显示乱码问题(喜欢攻克难题的朋友请进) 求助:复制某一张表的一行的内容的sql语句的写法 ORACLE关于存储过程参数组合SQL的问题 问题求助,在线等,急急急急急!!! 过年关喽!今年你挣了多少? 一个触发器语法的问题。 难道没人能解决这个问题? 急!急!pb与oracle连接的问题!!(得到答案立即在线给分!) ORACLE11i的问题 忘记了system密码该怎么办? 高手支招,redo log 的问题
空间过小统计和排序会慢好多
i. 回滚段在系统中的作用
当数据库进行更新插入删除等操作的时候,新的数据被更新到原来的数据文件,而旧的数据(Before Image)就被放到回滚段中,如果数据需要回滚,那么可以从回滚段将数据再复制到数据文件中。来完成数据的回滚。在系统恢复的时候, 回滚段可以用来回滚没有被commit 的数据,解决系统的一至性。
回滚段在什么情况下都是大量的写,一般是少量读,因此建议把回滚段单独出来放在一个单独的设备(如单独的磁盘或RAID),以减少磁盘的IO争用。
ii. 回滚段的工作方式
一个回滚表空间可以被划分成多个回滚段.
一个回滚段可以保存多个会话的数据.
回滚段是一个圆形的数据模型
假设回滚段由4 个区间组成,他们的使用顺序就是区间1à区间2à区间3à区间4à区间1。也就是说,区间是可以循环使用的,当区间4到区间1的时候,区间1里面的会话还没有结束, 区间4用完后就不能再用区间1,这时系统必须分配区间5,来继续为其他会话服务服务。
回滚段表空间小确实影响速度,但不是排序和统计,而是事务回滚\事务恢复\读一致性等
空间小的时候,对提交比较大的数据数据交换空间不够而会慢,具体参考下面;回滚段概述
回滚段用于存放数据修改之前的值(包括数据修改之前的位置和值)。回滚段的头部包含正在使用的该回滚段事务的信息。一个事务只能使用一个回滚段来存放它的回滚信息,而一个回滚段可以存放多个事务的回滚信息。
回滚段的作用
事务回滚:当事务修改表中数据的时候,该数据修改前的值(即前影像)会存放在回滚段中,当用户回滚事务(ROLLBACK)时,ORACLE将会利用回滚段中的数据前影像来将修改的数据恢复到原来的值。
事务恢复:当事务正在处理的时候,例程失败,回滚段的信息保存在重做日志文件中,ORACLE将在下次打开数据库时利用回滚来恢复未提交的数据。 读一致性:当一个会话正在修改数据时,其他的会话将看不到该会话未提交的修改。而且,当一个语句正在执行时,该语句将看不到从该语句开始执行后的未提交的修改(语句级读一致性)。当ORACLE执行SELECT语句时,ORACLE依照当前的系统改变号(SYSTEM CHANGE NUMBER-SCN)来保证任何前于当前SCN的未提交的改变不被该语句处理。可以想象:当一个长时间的查询正在执行时,若其他会话改变了该查询要查询的某个数据块,ORACLE将利用回滚段的数据前影像来构造一个读一致性视图。
1,从磁盘文件中将数据读入数据缓冲区;
2,当一个update或者delete执行的时候,将缓冲区中的数据块先写到回滚段中
3,然后将缓冲区中的数据块对应记录修改过来(此时数据变成dirty block)
4,如果这时执行rollback,系统后台进程将会使用回滚段中的数据块替换缓冲区中的数据块;
5,如果执行的是commit,则oracle会释放对回滚段的占用。
回滚段的管理方式是循环覆盖的。
一个表空间中可以有多个回滚段,一个回滚段中允许有多个区。
一个回滚段对应多个事务,每个事务只能使用一个回滚段。
假设回滚段1有四个区;
dml事务a占用了第一个区而一直没有commit;
事务b占用第四个区,如果b中数据较多,而回滚段又不允许扩展,则事务b需要一直等待a释放第一个区才可以。在这里,如果一个update或者delete语句一直没有执行commit;
那么事务将会保持对回滚段的持续占用,这时新的update操作执行前,必须等待前面的dml操作释放需要的回滚空间(当然,如果回滚段允许扩展将不存在这个问题)。
ORA-01555 快照过旧