oracle10g经典实战第10章其他概念.ppt

上传人:sh****n 文档编号:6393540 上传时间:2020-02-24 格式:PPT 页数:40 大小:856KB
返回 下载 相关 举报
oracle10g经典实战第10章其他概念.ppt_第1页
第1页 / 共40页
oracle10g经典实战第10章其他概念.ppt_第2页
第2页 / 共40页
oracle10g经典实战第10章其他概念.ppt_第3页
第3页 / 共40页
点击查看更多>>
资源描述
第10章其他概念 这一章讨论概念包括事务 锁 快照和序列等 事务与锁概念与Oracle的并发控制有关 序列定义存储在数据字典中 序列通过提供唯一数值的顺序表用来简化程序设计工作 可以使用快照把远程数据库的本地拷贝提供给用户 10 1事务 事务是Oracle操作完成的逻辑单位 事务的处理必须满足以下原则 1 可分性事务只有两种状态 即完成和未完成 2 一致性事务必须完成全部的操作 事务开始时系统为一个确定的状态 完成后则成为另一个确定的状态 未完成则回到事务开始时的确定状态 不允许出现未知的 不一致的 中间 状态 3 孤立性事务的这个原则很好理解 即事务之间不能相互干扰 这种要求有时也被称为事务的串行性 10 2锁 多用户在访问相同的资源时 锁是用于防止事务之间的有害性交互的机制 当用户对数据库并发访问时 为了确保事务完整性和数据库一致性 需要使用锁 它是实现数据库并发控制的主要手段 锁可以防止用户读取正在由其他用户更改的数据 并可以防止多个用户同时更改相同数据 如果不使用锁 则数据库中的数据可能在逻辑上不正确 并且对数据的查询可能会产生意想不到的结果 Oracle通过获得不同类型的锁 允许或阻止其他用户对相同资源的同时存取 并确保不破坏数据的完整性 从而自动满足了数据的完整性 并行性和一致性 为了在实现锁时不在系统中形成瓶颈和不阻止对数据的并行存取 Oracle根据所执行的数据库操作自动地要求不同层次的锁定 以确保最大的并行性 10 2 1锁机制和死锁 1 锁机制在Oracle中 提供了两种锁机制 1 共享锁 sharelock 共享锁通过数据存取的高并行性来实现 如果获得了一个共享锁 那么用户就可以共享相同的资源 许多事务可以获得相同资源上的共享锁 2 独占锁 exclusivelock 独占锁防止共同改变相同的资源 假如一个事务获得了某一资源上的一个专用锁 那么直到该锁被解除 其他的事务才能修改那个资源 但允许对资源进行共享 所有的锁在事务期间被保持 事务中的SQL语句所做的修改只有在事务提交时才能对其他事务可用 Oracle在事务提交和回滚事务时 释放事务所使用的锁 2 死锁当两个或者多个用户等待其中一个被锁住的资源时 就有可能发生死锁现象 对于死锁 Oracle自动进行定期搜索 通过回滚死锁中包含的其中一个语句来解决死锁问题 也就是释放其中一个冲突锁 同时返回一个消息给对应的事务 用户在设计应用程序时 要遵循一定的锁规则 尽力避免死锁现象的发生 10 2 2锁的类型 Oracle自动提供几种不同类型的锁 控制对数据的并行访问 一般情况下 Oracle的锁可以分为以下几种类型 1 DML锁DML锁的目标是保证并行访问的数据完整性 DML锁防止同步冲突的DML和DDL操作的破坏性交互 2 DDL锁DDL锁保护方案对象的定义 调用一个DDL语句将会隐式提交事务 DDL锁有多种形式 1 独占DDL锁 当CREATE ALTER和DROP等语句用于一个对象时使用该锁 2 共享DDL锁 当GRANT与CREATEPACKAGE等语句用于一个对象时使用此锁 3 可破的分析DDL锁 库高速缓存区中语句或PL SQL对象有一个用于它所引用的每一个对象的锁 假如被引用的对象改变了 可破的分析DDL锁会持续 3 内部锁内部锁包含内部数据库和内存结构 对用户来说 它们是不可访问的 因为用户不需要控制它们的发生 10 2 3表锁和事务锁 为了使事务能够保护表中的DML存取以及防止表中产生冲突的DDL操作 Oracle获得表锁 TM 表10 1列出了不同的模式 当执行特定的语句时 由RDBMS获得这些模式的表锁 通过V lock动态表可以查看锁的相关信息 模式列的值分别为2 3或6 数值2表示一个行共享锁 RS 3表示一个行独占锁 RX 6表示一个独占锁 X 表10 1使用的语句与获得的锁 10 2 3表锁和事务锁 当一个事务发出表10 2所列出的语句时 将获得事务锁 TX 事务锁总是在行级上获得 事务锁独占地锁住该行 并阻止其他事务修改改行 直到持有该锁的事务回滚或提交数据为止 注意 要想获得事务锁 TX 事务首先必须获得该表锁 TM 表10 2事务锁语句 10 2 4实例分析 Oracle在动态状态表V lock中存储与数据库中的锁有关的所有信息 使用DESCRIBE命令可查看表V lock的结构 SQL DESCRIBEV lock 结果为 名称是否为空 类型ADDRRAW 4 KADDRRAW 4 SIDNUMBERTYPEVARCHAR2 2 ID1NUMBERID2NUMBERLMODENUMBERREQUESTNUMBERCTIMENUMBERBLOCKNUMBER 10 2 4实例分析 其中 1 SID 会话标识符 2 TYPE 所获得的或会话等待的锁类型 TX 事务 TM DML或表锁 MR 介质恢复 ST 磁盘空间事务 3 LMODE REQUEST 包含锁的模式 0 无1 空2 行共享 RS 3 行独占 RX 4 共享 S 5 共享行独占 SRX 6 独占 X ID1 根据锁类型的不同数值有不同的含义 ID2 假如锁类型是TM 那么数值是0 假如锁类型是TX 那么数值表示交换次数 也就是回滚槽重新使用的次数 10 2 4实例分析 在允许多个用户同时访问时 Oracle使用锁维护数据的一致性和完整性 但是 当两个或两个以上的用户会话试图竞争同一对象的锁时 锁就会成为坏信息 数据库管理员应该监控并管理数据库中对象的锁争用 管理锁争用可分下列三步 1 识别等待获得锁的会话 2 查找哪个会话持有阻塞锁 3 确定想要做什么 可以让当前持有锁的会话继续持有该锁并完成该事务处理 或者强迫它释放锁 监控锁的方法有三种 1 使用CATBLOCK SQL和UTLLOCK SQL 2 直接查询数据字典视图 3 使用OEM 10 3快照 快照基于一个查询 该查询链接远程数据库 可以把快照设置成只读方式或可更新方式 若要改善性能 可以索引快照使用的本地表 根据快照基本查询的复杂性 可以使用快照日志 snapshotlog 来提高复制操作的性能 复制操作根据用户为每个快照的安排自动完成 有两种可用的快照类型 复杂快照 complexsnapshot 和简单快照 simplesnapshot 在一个简单快照中 每一行都基于一个远程数据库表中的一个行 而复杂快照的行则基于一个远程数据表的多行 例如通过一个groupby操作或是基于多个表连接的结果 由于快照将在本地数据库中创建一些对象 因此 创建快照的用户必须要有CREATETABLE权限和UNLIMITEDTABLESPACE权限或存储快照对象的表空间的定额 快照在本地数据库中创建并从远程主数据库获取数据 在创建一个快照之前 首先要在本地数据库中创建一个到源数据库的链接 下面的例子创建一个名为SH LINK的私有数据库链接 例10 1 创建一个名为SH LINK的私有数据库链接 CREATEDATABASELINKSH LINKCONNECTTOADMINIDENTIFIEDBYPUFFINSTUFFUSING XSCJ 10 3 1创建快照 1 使用OEM创建快照如图10 1所示 选中 实体化视图 单击鼠标左键 进入 实体化视图搜索 界面 如图10 2所示 图10 1Oracle企业管理器 图10 2实体化视图搜索界面 10 3 1创建快照 1 使用OEM创建快照单击 创建 按钮 进入 创建实体化视图 界面 如图10 3所示 图10 3一般信息选项页面 10 3 1创建快照 创建实体化视图 界面有5个选项页面 一般信息 刷新 存储 索引存储和选项 1 一般信息 选项页面 指定实体化视图的相关信息 名称 指定实体化视图的名称 方案 指定包含当前将要创建的实体化视图的方案 表空间 指定Oracle在其中创建实体化视图的表空间 为查询重写启用实体化视图 仅用于数据仓库 如启用 则表示实体化视图可用于查询重写 也就是说 查询被改写为使用概要表 而不是从表 仅用于数据仓库 使实体化视图可以更新 仅用于高级复制 如启用 则表示当前实体化视图可更新 对实体化视图的更改将传播到目标主体站点 从现有表创建 如果某个表的名称与另一个表的名称相匹配 而且两个表属于同一方案 则可将该表注册为预先初始化的实体化视图 若选择该选项 那么就选择表 实体化视图 快照 查询可编辑的文本区域 可以在此输入用于置入实体化视图的SQL查询 10 3 1创建快照 2 刷新 选项卡 切换到 刷新 选项卡界面 如图10 4所示 图10 4刷新选项页面 10 3 1创建快照 在 刷新 选项卡指定关于实体化视图的刷新特性的信息 如果实体化视图是刷新组的一部分 通常将在刷新组中管理实体化视图的刷新特性 单独设置刷新特性可能会导致与相关的实体化视图的数据不一致问题 立即置入该实体化视图 该选项可用于实体化视图的创建 但在修改实体化视图时不可用 此选项将要求完全刷新类型选项组用于选择实体化视图所用的刷新类型 刷新类型 包括以下3项 强制 FORCE 指定能快速刷新则进行快速刷新 不能快速刷新则进行完全刷新 快速 FAST 使用最近的更改更新实体化视图 完全 COMPLETE 选择 完全 可全部替换实体化视图 刷新方法选项组用于选择实体化视图所用的刷新方法 主键 选择 主关键字 让所选实体化视图在刷新时可以使用 主关键字 行ID 选择 行ID 允许所选实体化视图在刷新时使用 行 ID 10 3 1创建快照 注意 详细资料表具有主关键字可选择 主关键字 选项 否则 行ID 是唯一选择 刷新时间间隔 选项组指定Oracle如何以及何时自动刷新实体化视图 修改了一个实体化视图的主体表后 必须更新实体化视图中的数据 以确保实体化视图正确地反映其主体表中的当前数据 该选项使您可以为Oracle自动刷新实体化视图设定时间并指定模式 根据需要刷新 指定根据需要用调用三个DBMS MVIEW过程之一的方法刷新实体化视图 在每次提交时刷新 指定在下一次COMMIT操作时自动刷新 限制 仅对实体化联接视图和实体化聚集视图才支持该子句 自动刷新 为自动刷新的第一个时间指定一个日期 还可以设置以后每次刷新的时间间隔间间隔 从不 指定不执行刷新 回退段 选项组指定所使用的回退段 主体 输入刷新时在主体表上所用的回退段的名称 本地 选择刷新时在快照站点上所用的回退段的名称 10 3 1创建快照 3 存储 选项页面 存储 界面如图10 5所示 在该选项页面可以指定实体化视图的存储特征 具体设置请参照创建表相关的内容 图10 5存储选项页面 10 3 1创建快照 4 索引存储 选项页面 索引存储 界面如图10 6所示 图10 6索引存储选项页面 10 3 1创建快照 在 索引存储 选项页面可以进行如下设置 不要创建实体化视图的默认索引 选择该选项 则抑制创建默认索引 您可以使用创建索引功能来明确创建其他索引 如果指定了 不在实体化视图上创建默认索引 并且要使用增量刷新方法 快速刷新 来创建实体化视图 则应该创建此类索引 使用以下设置创建默认索引 可以为Oracle用以维护实体化视图数据的默认索引设置事务处理初始数量的值 事务处理的最大数量的值以及存储设置 Oracle使用默认索引来加快对实体化视图的增量刷新速度 若选择了 使用以下设置创建默认索引 则可以进行以下设置 若选择 与实体化视图存储设置相同 则使用为实体化视图存储所指定的相同设置 也可以选择 使用以下存储设置 选项来自己指定实体化视图存储设置 具体设置请参照创建表相关的内容 10 3 1创建快照 5 选项 选项页面 选项 界面如图10 7所示 图10 7选项选项界面 10 3 1创建快照 在 选项 选项界面可以进行如下设置 并行 若选中 并行 复选框 用于创建实体化视图并以并行方式装载它 选中该选项即可指定并行执行某一操作 并行 选项有下列2个选择 默认值 所用查询服务器的默认数量 根据CPU数和存储要并行扫描的实体化视图的 设备 数计算得出 值 用户指定的查询服务器数量 高速缓存 确定Oracle将为实体化视图检索的块存储在缓冲区高速缓存的位置 对于将经常访问的数据 高速缓存 选项指定 当执行全表扫描时 把为该实体化视图检索的块放置在缓冲区高速缓存中的LRU列表的最近使用的一端 对于不经常访问的数据 不选择 高速缓存 选项则指定 当执行全表扫描时 把为该实体化视图检索的块放置在缓冲区高速缓存中的LRU列表的最近最少使用的一端 单击 创建 系统弹出创建成功提示框 然后单击 确定 完成操作 10 3 1创建快照 2 使用SQL命令创建快照语法格式 CREATESNAPSHOT schema snapshot name 将要创建的快照名称 PCTFEEinteger PCTUSEDinteger INITRANSinteger MAXTRANSinteger STORAGEstorage clasue 快照的存储特征 TABLESPACEtablespace 指定表空间 USINGINDEX PCTFEEinteger 使用索引 PCTUSEDinteger INITRANSinteger MAXTRANSinteger REFRESH FAST COMPLETE FORCE STARTWITHdate NEXTdate 指定快照的刷新特性的信息 FORUPDATE ASsubquery 用于置入快照的SQL查询 10 3 1创建快照 2 使用SQL命令创建快照其中 schema 创建的快照的用户方案 snapshot name 创建的快照的名称 USINGINDEX 维护快照数据的默认索引设置事务处理初始数量的值 事务处理的最大数量的值以及存储设置 Oracle使用默认索引来加快对快照的增量刷新速度 REFRESH 指定快照的刷新特性的信息 FAST为快速刷新 COMPLETE为完全刷新 FORCE表明为强制刷新 STARTWITH为自动刷新的第一个时间指定一个日期 NEXT指定自动刷新的时间间隔 10 3 1创建快照 例10 2 在本地服务器上创建快照 CREATESNAPSHOTXS COUNTPCTFREE5TABLESPACESNAPREFRESHCOMPLETESTARTWITHSysDateNEXTSysDate 7ASSELECTZYM COUNT XS COUNTFROMADMIN XS SH LINKGROUPBYZYM 注意 创建一个快照时 必须引用远程数据库中的整个对象名 在上面的例子中 对象名是ADMIN XS 10 3 2修改快照 1 利用OEM修改快照快照创建之后 可以利用OEM对其进行修改 在如图10 1所示的界面中 选择要修改的快照 单击鼠标右键 从弹出的快捷菜单中选择 查看 编辑详细资料 激活 编辑实体化视图 窗口 在该窗口中对该快照进行修改即可 修改快照和创建快照的步骤大同小异 在此不在赘述 10 3 2修改快照 2 利用SQL命令修改快照语法格式 ALTERSNAPSHOT schema snapshot name PCTFEEinteger PCTUSEDinteger INITRANSinteger MAXTRANSinteger STORAGEstorage clasue 快照的存储特征 TABLESPACEtablespace 指定表空间 USINGINDEX PCTFEEinteger 使用索引 PCTUSEDinteger INITRANSinteger MAXTRANSinteger REFRESH FAST COMPLETE FORCE STARTWITHdate NEXTdate 指定快照的刷新特性的信息 10 3 2修改快照 例10 3 修改例10 2中的快照 ALTERSNAPSHOTXS COUNTPCTFREE10PCTUSED25INITRANS1MAXTRANS20 10 3 3删除快照 若要撤消一个快照 可以使用OEM或SQL命令来删除 例如 要删除XS COUNT快照 只需在10 1所示的窗口中选择XS COUNT 然后单击鼠标右键 从弹出的快捷菜单中选择 移去 即可 用SQL命令删除快照的语法格式为 DROPSNAPSHOTsnapshotnamesnapshotname为要删除的快照名称 例如 要删除XS COUNT快照 可使用如下语句 DROPSNAPSHOTXS COUNT 10 4序列 序列 sequence 定义存储在数据字典中 序列通过提供唯一数值的顺序表用来简化程序设计工作 当一个序列第一次被查询调用时 它将返回一个预定值 在随后的每一次查询中 序列将产生一个按其指定的增量增长的值 序列可以是循环的 或者是连续增加的 直到指定的最大值为止 使用一个序列时 不保证将生成一串连续不断的值 例如 如果查询一个序列的下一个值供insert使用 则该查询是能使用这个序列值的唯一会话 如果未能提交事务处理 则序列值就不被插入表中 以后的insert将使用该序列随后的值 10 4 1创建序列 1 利用OEM创建序列利用OEM创建序列的步骤如下 1 在如图10 1所示的Oracle企业管理界面中 选中 序列 单击鼠标左键 进入 序列搜索 界面 如图10 8所示 图10 8序列浏览编辑界面 10 4 1创建序列 2 单击 创建 按钮 进入 创建序列 界面 如图10 9所示 图10 9创建序列界面 10 4 1创建序列 在如图10 9所示的 创建序列 界面设置新序列的信息 创建序列 界面包含以下信息 一般信息 选项组包含以下信息 名称 待定义的序列的名称 序列的名称必须是一个有效的Oracle标识符 方案 在方案文本框输入该序列的方案 也可以通过 手电筒 形状的按钮打开 方案选择 界面选择方案 新序列的默认方案就是登录用户 序列类型 可以为序列定义如下类型 升序 若选中该选项 序列值自初始值向最大值递增 这是创建序列时的默认设置 降序 若选中该选项 序列值自初始值向最小值递减 值 选项组包含以下信息 最小值 序列可允许的最小值 创建序列时 该字段最初为空 如果创建序列该字段为空 则对升序序列将使用默认值1 而对降序序列使用默认值 1 0E28 10的28次方 最大值 序列可允许的最大值 创建序列时 该字段最初为空 如果选中 创建 按钮后该字段为空 则将对升序序列使用默认值1 0E27 10的27次方 而对降序序列使用默认值 1 时间间隔 序列递增 递减的间隔数值 升序序列 创建序列时 该字段最初为空 如果选中 创建 按钮后该字段为空 将使用默认值1 该字段只能为正整数 初始值 序列的起始值 如果选中 创建 按钮后该字段为空 对升序序列将使用该序列默认的最小值 对降序序列 将使用该序列默认的最大值 10 4 1创建序列 选项 选项组可选择的设置为 循环值 选中此选项 即指定在达到序列最小值或最大值之后 序列应继续生成值 对升序序列来说 在达到最大值后将生成最小值 对降序序列来说 在达到最小值后将生成最大值 如果未选中 循环值 序列将在达到最小值或最大值后停止生成任何值 创建序列时 该复选框在默认情况下是未选中状态 排序值 选中该选项 即指定序列号要按请求次序生成 创建序列时 该复选框在默认情况下是未选中状态 高速缓存选项组 若勾选该选项 需要设置高速缓存大小 默认值为20 也可以指定值 可接受的最小值为2 对循环序列来说 该值必须小于循环中值的个数 如果序列能够生成的值数的上限小于高速缓存大小 则高速缓存大小将自动改换为该上限数 默认情况下选中此选项 如果没有勾选该选项 则指定不预分配序列值 3 单击 确定 按钮 系统创建序列 创建成功后返回到图10 8所示界面 此时可看见序列S XH 10 4 1创建序列 2 利用SQL命令创建序列也可以使用SQL命令创建序列 语法格式为 CREATESEQUENCE schema sequence name 将要创建的序列名称 INCREMENTBYinteger 递增或递减值 STARTWITHinteger 初始值 MAXVALUEinteger NOMAXVALUE 最大值 MINVALUEinteger NOMINVALUE 最小值 CYCLE NOCYCLE 是否循环 CACHEinteger NOCACHE 高速缓冲区设置 ORDER NOORDER 序列号是序列否按照次序生成 10 4 1创建序列 2 利用SQL命令创建序列其中 INCREMENTBY 指定序列递增或递减的间隔数值 Integer只能为正值 STARTWITH 序列的起始值 若不指定该值 对升序序列将使用该序列默认的最小值 对降序序列 将使用该序列默认的最大值 MAXVALUE 序列可允许的最大值 若指定为NOMAXVALUE 则将对升序序列使用默认值1 0E28 10的28次方 而对降序序列使用默认值 1 MINVALUE 序列可允许的最小值 若指定为NOMINVALUE 则对升序序列将使用默认值1 而对降序序列使用默认值1 0E28 10的28次方 CYCLE 指定在达到序列最小值或最大值之后 序列应继续生成值 对升序序列来说 在达到最大值后将生成最小值 对降序序列来说 在达到最小值后将生成最大值 若指定为NOCYCLE 则序列将在达到最小值或最大值后停止生成任何值 CACHE 由数据库预分配并存储的值的数目 默认值为20 也可以指定值 可接受的最小值为2 对循环序列来说 该值必须小于循环中值的个数 如果序列能够生成的值数的上限小于高速缓存大小 则高速缓存大小将自动改换为该上限数 若指定为NOORDER 则指定不预分配序列值 10 4 1创建序列 例10 4 创建一个降序序列 CREATESEQUENCEADMIN S TESTINCREMENTBY 2STARTWITH4500MAXVALUE4500MINVALUE1CYCLECACHE20NOORDER 10 4 2修改序列 1 利用OEM修改序列序列创建之后 可以利用OEM对其进行修改 在如图10 8所示的界面中 选择要修改的序列 单击 编辑 按钮 进入 编辑序列 界面 在该界面中对该快照进行修改即可 修改序列和创建序列的步骤大同小异 在此不在赘述 2 利用SQL命令修改序列语法格式 ALTERSEQUENCE schema sequence name INCREMENTBYinteger 递增或递减值 MAXVALUEinteger NOMAXVALUE 最大值 MINVALUEinteger NOMINVALUE 最小值 CYCLE NOCYCLE 是否循环 CACHEinteger NOCACHE 高速缓冲区设置 ORDER NOORDER 10 4 2修改序列 例10 5 修改例10 4中序列 ALTERSEQUENCEADMIN S TESTINCREMENTBY 1MAXVALUE9000MINVALUE4500NOORDER 10 4 3删除序列 既可以在OEM中删除序列 也可以利用SQL命令删除序列 若要在OEM中删除序列 则在如图10 7所示的界面中 选择要删除的序列 单击鼠标右键 从弹出的快捷菜单中选择 移去 即可 用SQL命令删除快照的语法格式为 DROPSEQUENCEsequence namesequence name为要删除的序列名称 例如 要删除S TEST序列 可使用如下语句 DROPSEQUENCES TEST
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!