仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 940|回复: 8
打印 上一主题 下一主题

[学习教程] MYSQL教程之ORACLE回滚段办理

[复制链接]
爱飞 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:42:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
那时候Sybase已经诞生了6年的时间。至于其他值得关注的开源数据库,PostgreSQL将在2009年达到20岁的生日。虽然MySQL并不是市场上最年轻的数据库,但是却有更多成熟的数据库可供我们选择。oracle
回滚段办理一向是ORACLE数据库办理的一个困难,本文经由过程实例先容ORACLE回滚段的观点,用法和计划及成绩的办理。

回滚段概述

回滚段用于寄存数据修正之前的值(包含数据修正之前的地位和值)。回滚段的头部包括正在利用的该回滚段事件的信息。一个事件只能利用一个回滚段来寄存它的回滚信息,而一个回滚段能够寄存多个事件的回滚信息。

回滚段的感化

事件回滚:当事件修正表中数据的时分,该数据修正前的值(即前影象)会寄存在回滚段中,当用户回滚事件(ROLLBACK)时,ORACLE将会使用回滚段中的数据前影象来将修正的数据恢复到本来的值。

事件恢复:当事件正在处置的时分,例程失利,回滚段的信息保留在重做日记文件中,ORACLE将鄙人次翻开数据库时使用回滚来恢复未提交的数据。

读分歧性:当一个会话正在修正数据时,其他的会话将看不到该会话未提交的修正。并且,当一个语句正在实行时,该语句将看不到从该语句入手下手实行后的未提交的修正(语句级读分歧性)。当ORACLE实行SELECT语句时,ORACLE按照以后的体系改动号(SYSTEMCHANGENUMBER-SCN)来包管任何前于以后SCN的未提交的改动不被该语句处置。能够设想:当一个长工夫的查询正在实行时,若其他会话改动了该查询要查询的某个数据块,ORACLE将使用回滚段的数据前影象来机关一个读分歧性视图。

事件级的读分歧性

ORACLE一样平常供应SQL语句级(SQLSTATEMENTLEVEL)的读分歧性,能够用以下语句来完成事件级的读分歧性。

SETTRANSACTIONREADONLY;

或:

SETTANNSACTIONSERIALIZABLE;

以上两个语句都将在事件入手下手后供应读分歧性。必要注重的是,利用第二个语句对数据库的并发性和功能将带来影响。

回滚段的品种

体系回滚段:当数据库创立后,将主动创立一个体系回滚段,该回滚段只用于寄存体系表空间中工具的前影象。

非体系回滚段:具有多个表空间的数据库最少应当有一个非体系回滚段,用于寄存非体系表空间中工具的数据前影象。非体系回滚段又分为公有回滚段和私有回滚段,公有回滚段应在参数文件的ROLLBACKSEGMENTS参数中列出,以便例程启动时主动使其在线(ONLINE)。私有回滚段一样平常在OPS(ORACLE并行服务器)中呈现,将在例程启动时主动在线。

DEFERED回滚段:该回滚段在表空间离线(OFFLINE)时由体系主动创立,当表空间再次在线(ONLINE)时由体系主动删除,用于寄存表空间离线时发生的回滚信息。

回滚段的利用

分派回滚段:当事件入手下手时,ORACLE将为该事件分派回滚段,并将具有起码事件的回滚段分派给该事件。事件能够用以下语句请求指定的回滚段:

SETTRANSTRACTIONUSEROLLBACKSEGMENTrollback_segment

事件将以按次,轮回的体例利用回滚段的区(EXTENTS),铛铛前区用满后移到下一个区。几个事件能够写在回滚段的统一个区,但每一个回滚段的块只能包括一个事件的信息。

比方(两个事件利用统一个回滚段,该回滚段有四个区):

1、事件在举行中,它们正在利用回滚段的第三个区;

2、当两个事件发生更多的回滚信息,它们将持续利用第三个区;

3、当第三个区满后,事件将写到第四个区,当事件入手下手写到一个新的区时,称为翻转(WRAP);

4、当第四个区用满时,假如第一个区是余暇或非举动(利用该区的一切事件完成而没有举动的事件)的,事件将接着利用第一个区。

回滚段的扩大(EXTEND)

铛铛前回滚段区的一切块用完而事件还必要更多的回滚空间时,回滚段的指针将移到下一个区。当最初一个区用完,指针将移到第一个区的后面。回滚段指针移到下一个区的条件是下一个区没有举动的事件,同时指针不克不及跨区。当下一个区正在利用时,事件将为回滚段分派一个新的区,这类分派称为回滚段的扩大。回滚段将一向扩大到该回滚段区的个数抵达回滚段的参数MAXEXTENTS的值时为止。

回滚段的接纳和OPTIMAL参数

OPTIMAL参数指明回滚段余暇时压缩到的地位,指明回滚段的OPTIMAL参数能够削减回滚段空间的华侈。

创立回滚段

语法:

CREATE[PUBLIC]ROLLBACKSEGMENTrollback_segment
[TABLESPACEtablespace]
[STORAGE([INITIALinteger[K|M]][NEXTinteger[K|M]]
[MINEXTENTSinteger]
[MAXTENTS{integer|UNLIMITED}]
[OPTIMAL{integer[K|M]|NULL}])]

注:


回滚段能够在创立时指明PRIVATE或PUBLIC,一旦创建将不克不及修正。MINEXTENTS必需年夜于即是2PCTINCREASE必需是0OPTIMAL假如要指定,必需年夜于即是回滚段的初始巨细(由MINEXTENTS指定)

倡议:

一样平常情形下,INITIAL=NEXT设置OPTIMAL参数来勤俭空间的利用不要设置MAXEXTENTS为UNLIMITED回滚段应创立在一个特定的回滚段表空间内

例:

CREATEROLLBACKSEGMENTrbs01
TABLESPACErbs
STORAGE(INITIAL100KNEXT100KMINEXTENTS10
MAXEXTENTS500OPTIMAL1000K);

使回滚段在线

当回滚段创立后,回滚段是离线的,不克不及被数据库利用,为了使回滚段被事件使用,必需将回滚段在线。能够用以下命令使回滚段在线:

ALTERROLLBACKSEGMENTrollback_segmentONLINE;

例:

ALTERROLLBACKSEGMENTrbs01ONLINE;

为了使回滚段在数据库启动时主动在线,能够在数据库的参数文件中列出回滚段的名字。比方在参数文件中到场以下一行:

ROLLBACK_SEGMENT=(rbs01,rbs02)

修正回滚段的存储参数

可使用ALTERROLLBACKSEGMENT命令修正回滚段的存储参数(包含OPTIMAL,MAXEXTENTS)。

语法:

ALTERROLLBACKSEGMENTrollback_segment
[STORAGE([NEXTinteger[K|M]]
[MINEXTENTSinteger]
[MAXEXTENTS{integer|UNLIMITED}]
[OPTIMAL{integer[K|M]|NULL}])]

例:

ALTERROLLBACKSEGMENTrbs01STORAGE(MAXEXTENTS1000);

接纳回滚段的空间

假如指定了回滚段的OPTIMAL参数,ORACLE将主动接纳回滚段到OPTIMAL指定的地位。用户也能够手动接纳回滚段的空间。

语法:

ALTERROLLBACKSEGMENTrollback_segmentSHRINK[TOinteger[K|M]];

申明:

假如不指明TOinteger的数值,ORACLE将试图接纳到OPTIMAL的地位。

例:

ALTERROLLBACKSEGMENTrbs01SHRINKTO2M;

使回滚段离线

为了到达以下两个目标将要回滚段离线:

1.制止新的事件利用该回滚段;

2.该回滚段必需删除。

语法:

ALTERROLLBACKSEGMENTrollback_segmentOFFLINE;

例:

ALTERROLLBACKSEGMENTrbs01OFFLINE;

申明:

假如有事件正在利用该回滚段,运转该命令后,回滚段的形态将是PENDINGOFFLINE。事件停止后,形态将改成OFFLINE,能够经由过程V$ROLLSTAT查询回滚段的形态。

删除回滚段

当回滚段不再必要或要重修以改动INITIAL,NEXT或MINEXTENTS参数时,能够将其删除。要删除回滚段,不准使该回滚段离线。

语法:

DROPROLLBACKSEGMENTrollback_segment;

例:

DROPROLLBACKSEGMENTrbs01;

查询回滚段的信息

所用数据字典:DBA_ROLLBACK_SEGS

能够查询的信息:回滚段的标识(SEGMENT_ID)、称号(SEGMENT_NAME)、地点表空间(TABLESPACE_NAME)、范例(OWNER)、形态(STATUS)。

例:

SQL>SELECTsegment_name,tablespace_name,owner,statusFROMdba_rollback_segs;

回滚段的统计信息

数据字典:V$ROLLNAME,V$ROLLSTAT

例:

SQL>SELECTn.name,s.extents,s.rssize,s.optsize,s.hwmsize,s.xacts,s.status
FROMv$rollnamen,v$rollstats
WHEREn.usn=s.usn;



回滚段确当前举动事件

数据字典:V$SESSION,V$TRANSACTION

例:


SQL>SELECTs.username,t.xidusn,t.ubafil,t.ubablk,t.used_ublkFROMv$sessions,v$transactiontWHEREs.saddr=t.ses_addr;USERNAMEXIDUSNUBAFILUBABLKUSED_UBLK------------------------------------------------SYSTEM2271SCOTT1216312rowsselected.


回滚段的数目计划

关于OLTP体系,存在大批的大事务处置,一样平常倡议:数目多的小回滚段;每四个事件一个回滚段;每一个回滚段不要凌驾十个事件。

关于批处置,一样平常倡议:少的年夜回滚段;每一个事件一个回滚段。

回滚段的成绩及办理办法

成绩一:事件请求的回滚段空间不敷,体现为表空间用满(ORA-01560毛病),回滚段扩大抵达参数MAXEXTENTS的值(ORA-01628)。

办理办法:向回滚段表空间增加文件或使已有的文件变年夜;增添MAXEXTENTS的值。

成绩二:读分歧性毛病(ORA-01555SNAPSHOTTOOOLD)

办理办法:增添MINEXTENTS的值,增添区的巨细,设置一个高的OPTIMAL值。
DBaaS并不意味着解决方案提供者要让自己失业。与其他系统一样,在实施DBaaS解决方案时,客户可能需要部署、迁移、支持、异地备份、系统集成和灾难恢复等方面的帮助。
谁可相欹 该用户已被删除
沙发
发表于 2015-1-18 10:52:54 | 只看该作者
其实可以做一下类比,Oracle等数据库产品老早就支持了java编程,而且提供了java池参数作为用户配置接口。但是现在有哪些系统大批使用了java存储过程?!连Oracle自己的应用都不用为什么?!
蒙在股里 该用户已被删除
板凳
发表于 2015-1-21 19:03:25 | 只看该作者
光写几个SQL实在叫无知。
爱飞 该用户已被删除
地板
 楼主| 发表于 2015-1-30 21:53:51 | 只看该作者
我们学到了什么?思考问题的时候从表的角度来思考问
山那边是海 该用户已被删除
5#
发表于 2015-2-6 16:11:21 | 只看该作者
一个百万级别的基本信息表A,一个百万级别的详细记录表B,A中有个身份证id,B中也有身份id;先要找出A中在B的详细记录。
分手快乐 该用户已被删除
6#
发表于 2015-2-17 02:54:56 | 只看该作者
相信各位对数据库和怎么样学习数据库都有一些经验和看法,也会有人走了一些弯路总结出自己的经验来,希望大家能把各自的看法和经验拿出来分享,给别人一份帮助,给自己一份快乐
深爱那片海 该用户已被删除
7#
发表于 2015-3-5 14:57:09 | 只看该作者
至于淘汰的问题,只能说在你的项目周期之内,微软应该都不会倒闭。
简单生活 该用户已被删除
8#
发表于 2015-3-12 08:42:29 | 只看该作者
光写几个SQL实在叫无知。
乐观 该用户已被删除
9#
发表于 2015-3-19 19:31:16 | 只看该作者
从底层原理到表层引用,书籍多的很。个人认为没有什么那本书好?这样的说法。主要看和个人的学习方法是否适合。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-15 11:14

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表