
ORACLE工作机制
文章平均质量分 85
指尖上的程序
座右铭:做人、做事、做学问;
展开
-
Oracle实例恢复——说说前滚和回滚
保持数据一致性和完整性,是每一款成功商业数据库软件都必须要做到的基本要求。从故障中恢复,保证ACID原则,保证事务完整性,一直是Oracle数据库核心功能组成部分。本篇主要介绍Oracle实例意外终止(断电或者强制关闭)之后,重新启动时发生的恢复过程,也可以称作“前滚和回滚”。 基础知识说明 为了更明确的说明问题,笔者首先介绍一下本文涉及到的一些重要知识。 数据库实例失败转载 2013-11-27 11:56:56 · 2165 阅读 · 0 评论 -
oracle 回收站recyclebin
racle10g Recycle Bin回收站1>什么是Recycle Bin实际上,Recycle Bin只是一个保存被drop的对象的一个数据字典表。所以,可以通过如下语句查询回收站中的信息:select * from recyclebin除非拥有sysdba权限,每个用户只能看到属于自己的对象。所以,对于用户来说,好像每个人都拥有自己的回收站。即使用户有删除其他schema对象的权限,也只能原创 2014-06-04 17:14:09 · 781 阅读 · 0 评论 -
oracle的TM锁、TX锁知识完全普及
锁概念基础 数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。 加锁是实现数据库并发控制的一个非常重要的技术。当事务在对某个数据对象进行操作前,先向系统发出请求,对其加锁。加锁后事务就对该数据对象有了一定的控制,在该事务释放锁之前,其他的事务不能对此数据对象进行原创 2014-01-16 17:13:46 · 863 阅读 · 0 评论 -
查看Oracle系统各项参数使用情况的脚本
select name,total,round(total-free,2) used, round(free,2) free,round((total-free)/total*100,2) pctused from (select 'SGA' name,(select sum(value/1024/1024) from v$sga) total, (select sum(bytes/1024/原创 2013-12-23 11:05:26 · 878 阅读 · 0 评论 -
浅谈cursor_sharing取值对SQL共享的影响(下)
上篇我们介绍了Oracle SQL共享游标的机制,以及cursor_sharing参数EXACT取值作用。本篇我们继续介绍cursor_sharing参数的其他两个取值:FORCE和SIMILAR的实际含义。 4、 FORCE——强制共享执行计划 默认值EXACT的作用是不对非字面SQL绑定变量进行替换操作。而FORCE值和SIMILAR取值意味着Oracle需要对输入的SQL转载 2013-11-28 15:04:24 · 1501 阅读 · 0 评论 -
浅谈cursor_sharing取值对SQL共享的影响(上)
声明:本篇实验思路感谢dbsnake老师指点。 在Oracle中,用户应用输入的SQL语句要进行所谓的Parse解析过程,用于生成执行计划,这也就是Query Optimizer的主要工作。在Parse中,有两种具体类型,被称为“hard parse”(硬解析)和“Soft parse”(软解析)。 “实现执行计划shared cursor共享,减少硬解析”是我们OLTP系统优转载 2013-11-28 15:03:27 · 2669 阅读 · 0 评论 -
浅谈optimizer_mode优化器模式
Oracle query optimizer(查询优化器)是我们接触最多的一个数据库组件。查询优化器最主要的工作就是接受输入的SQL以及各种环境参数、配置参数,生成合适的SQL执行计划(Execution Plan)。 Query Optimizer一共经历了两个历史阶段:RBO和CBO。RBO时代,Oracle执行计划是通过一系列固化的规则进行执行计划生成。而CBO时代,则是利用系统转载 2013-11-28 15:00:56 · 990 阅读 · 0 评论 -
Append与Direct-Path Insert(一)
Append提示在进行批量数据加载的时候,是很高效的一个手段。前段进行实验,发现这个hint在使用的时候,还是有一些需要注意的地方的。 1、 基础知识 还是先看看基础知识吧。append是oracle提供给SQL开发者使用的hint之一。所谓hint的作用,简单说就是影响Oracle优化器生成特定的执行计划。SQL是一种数据描述语言。实际对数据进行操作是通过对SQL的解析,生成执行转载 2013-11-27 12:15:58 · 661 阅读 · 0 评论 -
Oracle并行操作——从串行到并行
并行(Parallel)操作特性,是Oracle为更充分利用服务器硬件处理资源,提高特定大数据量操作效率,应对海量生产数据而推出的一种技术特性。通常,我们进行的SQL处理都是单进程操作,对应单个CPU操作单元。所谓的并行操作,就是在软硬件条件允许的情况下,Oracle调用多个处理单元分别进行处理,最后汇合结果的过程。对一些SQL进行有计划的并行操作,可以显著提高系统操作速度。 1、海量数据原创 2013-11-27 12:49:45 · 1939 阅读 · 0 评论 -
HWM的一点研究
今天一位同事发现11g环境中一张实验数据表筛选变得很慢,即使为空表。通过EM观察,发现指定sql语句等待时间和执行时间都很长(达到秒级)。 经过进一步询问,确定该表曾经进行批量数据DML操作,多次重复操作。而且数据表包括分区信息。所以初步认为是高水位线HWM过大引起的问题。 在Oracle中,数据表的存储结构是一种类似河道水位的结构。数据表段(segment)就在一系列不连续的区(转载 2013-11-27 12:24:47 · 793 阅读 · 0 评论 -
Append与Direct-Path Insert(二)
1、 唱唱反调——Append中的非并行 在实验中,偶然发现了这样的现象。 //单值情况 //自身session1(sid=140)允许多次添加 SQL> insert /*+ append */into t values('ABC',34,32); 1 row inserted SQL> insert /*+ append */into t values转载 2013-11-27 12:16:57 · 623 阅读 · 0 评论 -
Oracle中的死锁Dead Lock(二)
Oracle死锁监控和解决 在前文中提到,死锁问题解决方法分为死锁监控和死锁处理。所谓死锁监控就是发现死锁。Oracle中,通过锁之间的连接关系,有自动的监控死锁、解决死锁的机制。但是实际中,特别是开发测试过程中,还是可能出现死锁的情况。下面是一些网络上推荐的脚本,可以发现和解决死锁。 1、 发现锁对象和对应的SID //发现锁定 SELECT s.username, l转载 2013-11-27 12:12:46 · 1484 阅读 · 0 评论 -
Oracle中的死锁Dead Lock(一)
几天前和一位做应用的同事讨论,聊到了死锁。笔者觉得很有意思,就把讨论中的一些想法和知识拿出来和大家分享。 死锁Dead Lock 我们大家最早接触死锁这个概念可能是在操作系统课程中,说多个进程(线程)对一个可共享的资源进行请求的时候,可能出现死锁。死锁问题分为死锁检测、处理等多个子问题可以进行讨论。 其实,死锁问题绝不仅仅限制在操作系统乃至计算机科学领域。死锁存在的两个必要转载 2013-11-27 12:11:48 · 2007 阅读 · 0 评论 -
说说Oracle监听器(二)
一直想写写监听器。 Oracle监听器listener是一个重要的数据库服务器组件,在整个Oracle体系结构中,扮演着重要的作用。 监听器Lisener功能 从当前的Oracle版本看,Listener主要负责下面的几方面功能: 1、 监听客户端请求。监听器运行在数据库服务器之上,与Oracle实例(可为多个)相关关联,是一个专门的进程process,在wi转载 2013-11-27 12:10:24 · 564 阅读 · 0 评论 -
说说Oracle监听器(二)
监听器工作过程 下面我们谈谈监听器的工作过程。一般,监听器作为一个独立process在操作系统中运行,守候在特定网络端口(默认为:1521),等待客户端请求的到来。注意:我们在客户端配置命名服务的时候,输入的1521也就是为了与监听器程序建立连接。 当一个请求“如期而至”,监听器对照已经注册的服务列表,查找对应的数据库实例信息,获取到指定实例的ORACLE_HOME路径。相当于表明转载 2013-11-27 12:09:59 · 475 阅读 · 0 评论 -
Oracle启动三阶段(二)
mount阶段 mount阶段是启动的第二个阶段。此处,我们说mount的是什么?mount的是数据文件和控制文件,同时对应的日志文件信息也已经获取到。mount阶段下,所有的系统参数已经加载完成,通过参数找到的控制文件帮助实例定位加载了数据文件。同时,针对上次关闭系统中的问题,比如未完成事务和恢复等,都要进行处理。 //进入mount状态 SQL> alter database转载 2013-11-27 12:08:35 · 542 阅读 · 0 评论 -
Oracle启动三阶段(一)
Oracle启动是可以分为三个阶段的,分别为:nomount、mount和open。在这三个阶段中,Oracle分别实现了不同的职责和目标,将数据库服务器相关的信息和数据进行加载。 下面就一起来看一下三个阶段的现象和作用。 基础知识——关于Oracle实例相关的三个组成 在谈到Oracle启动关闭的时候,我们需要提一下三个主要组件:Oracle监听器、Oracl转载 2013-11-27 12:07:46 · 665 阅读 · 0 评论 -
从Alert_Log看Oracle数据库启动三阶段
Oracle数据库启动是分为三个不同的阶段的,分别为nomount、mount和open。在不同的阶段,Oracle进行不同的行为,执行不同的操作。在笔者《Oracle启动三阶段》(http://space.itpub.net/17203031/viewspace-684503)系列中,已经进行一定程度的说明。本篇打算从Alert_log,也就是数据库自身的日志中,分析启动三阶段的不同行为和操作。转载 2013-11-27 12:00:45 · 1251 阅读 · 0 评论 -
关于Oracle数据库中行迁移/行链接的问题
一、 行迁移/行链接的简介 在实际的工作中我们经常会碰到一些Oracle数据库性能较低的问题,当然,引起Oracle数据库性能较低的原因是多方面的,我们能够通过一些正确的设计和诊断来尽量的避免一些Oracle数据库性能不好,Row Migration (行迁移) & Row Chaining (行链接)就是其中我们可以尽量避免的引起Oracle数据库性能低下的潜在原创 2014-06-05 16:02:34 · 931 阅读 · 0 评论