天高地厚

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

随笔分类 -  Oracle

Oracle
摘要:今天发现一个Oracle测试库的字符集设置不正确,原本的字符集是UTF-8,正确的字符集应该是ZHS16GBK,因为UTF-8是ZHS16GBK的超集,无法修改,只能重建数据库,幸好该测试库上还没有数据。虽然用DBCA也可以创建数据库,但我个人更喜欢手工创建数据库,其主要步骤如下(数据库版本11.2):1. 设置ORACLE_SID默认的ORACLE_SID是orcl,我个人强烈建议起个唯一、且意义的名字,比如**testdb,**proddb等等,在Oracle用户下执行:exportORACLE_SID=lxdbtestexport ORACLE_SID=lxdbtest2. 重建PFIL 阅读全文

posted @ 2013-07-26 14:29 天高地厚-GNU 阅读(334) 评论(0) 推荐(0)

摘要:假设有一个张表Student,有100万条数据,其中有三行: Name Age 张三 -11 李四 -13 王五 14 程序员A发现数据有错误,有一些学生的年龄有负数,他连接数据库,打算把所有的负数变成正数,并且希望在修改的时候,别人不可以读取数据。此时他对两行数据加了X排他锁。 程序员B发现有几个的姓名写错了,要修改,这时他打算给整张表加上S锁,也就是,别人可以读取数据,但是不能修改。这时数据库需要判断,这张表是否可以加S锁?如何判断呢:要看这张表中的100万行数据中有没有X锁,如果被加锁的这两行数据刚好在最后,那么要判断100万次才能得出结论:有一行加了X锁,该表不能加S锁,请等待该锁释放 阅读全文

posted @ 2013-05-16 15:14 天高地厚-GNU 阅读(346) 评论(0) 推荐(0)

摘要:SQL> desc dba_data_files Name Null? Type ----------------------------------------- -------- ---------------------------- FILE_NAME VARCHAR2(257) FILE_ID NUMBER TABLESPACE_NAME ... 阅读全文

posted @ 2013-05-09 16:32 天高地厚-GNU 阅读(180) 评论(0) 推荐(0)

摘要:我们都知道在Oracle中每条SQL语句在执行之前都需要经过解析,这里面又分为软解析和硬解析。在Oracle中存在两种类型的SQL语句,一类为 DDL语句(数据定义语言),他们是从来不会共享使用的,也就是每次执行都需要进行硬解析。还有一类就是DML语句(数据操纵语言),他们会根据情况选择要么进行硬解析,要么进行软解析。DML:INSERT,UPDATE,DELETE,SELECTDDL:CREATE,DROP,ALTER一. SQL 解析过程Oracle对此SQL将进行几个步骤的处理过程: 1、语法检查(syntax check): 检查此sql的拼写是否语法。 2、语义检查(semantic 阅读全文

posted @ 2013-05-06 17:03 天高地厚-GNU 阅读(228) 评论(0) 推荐(0)

摘要:一,简单演示hash算法....二、详解oracle中是如何使用hash算法的....三、名词解释:....四、生动的例子:什么叫哈希表(Hash Table)一,简单演示hash算法 在介绍library cache的内部管理机制前,先简单介绍一下所谓的hash算法。 oracle内部在实现管理的过程中大量用到了hash算法。hash算法是为了能够进行快速查找定位所使用一种技术。哈希表是一个以空间换取时间的数据结构 。所谓hash算法,就是根据要查找的值,对该值进行一定的hash算法后得出该值所在的索引号,然后进入到该值应该存在的一列数值列表(可以理解为一个二维数组)里,通过该索引号去找.. 阅读全文

posted @ 2013-05-06 17:00 天高地厚-GNU 阅读(632) 评论(0) 推荐(0)

摘要:锁(locking ) 业务逻辑的实现过程中,往往需要保证数据访问的排他性。如在金融系统的日终结算 处理中,我们希望针对某个 cut-off 时间点的数据进行处理,而不希望在结算进行过程中 (可能是几秒种,也可能是几个小时),数据再发生变化。此时,我们就需要通过一些机 制来保证这些数据在某个操作过程中不会被外界修改,这样的机制,在这里,也就是所谓 的 “ 锁 ” ,即给我们选定的目标数据上锁,使其无法被其他程序修改。 Hibernate 支持两种锁机制:即通常所说的 “ 悲观锁( Pessimistic Locking ) ”和 “ 乐观锁( Optimistic Locking ) ” 。悲 阅读全文

posted @ 2013-04-10 09:30 天高地厚-GNU 阅读(143) 评论(0) 推荐(0)

摘要:Oracle 高可用性的三个主要体现是: RAC, Data Guard 和 Stream. 所以熟练掌握这些技术就是评价DBA的标准一个。 RAC + Data Guard 主要用在灾备或者报表服务器上。 比如用RAC+ 逻辑standby 做报表,从而减轻RAC 系统的压力。关于Data Guard 的一些原理知识可以参考: Oracle Data Guard 理论知识 http://blog.csdn.net/tianlesoftware/archive/2010/04/22/5514082.aspxOracle Data Gurad Physical Standby 相关说明http: 阅读全文

posted @ 2013-02-04 10:01 天高地厚-GNU 阅读(10227) 评论(0) 推荐(0)

摘要:1回滚与撤销Refer:《深入解析oracle》by eygle(1)为了多用户的读一致性和能回退事务,oracle提供了为修改的数据保存修改之前的旧值。(2)Redo:保证在故障时事务可以恢复Undo:保证事务可以被回滚或撤销(3)9i之前,oracle提供回滚段(rollback)来撤销数据;之后,oracle使用undo表空间来管理。(4)下面这个例子是介绍9i前,是如何保证可以回滚的。Update emp set sal=4000 where empno=7788;简单看一下这个语句的执行过程:A:检查empno=7788记录在database buffer cache中是否存在;否, 阅读全文

posted @ 2013-01-31 10:11 天高地厚-GNU 阅读(573) 评论(0) 推荐(0)

摘要:undo表空间有个脾气,就是新事务优先,长查询滞后! 情况有两:查询在前、查询在后 查询在后: if [查scn>提交scn] if [查sid = 提交 sid] 返回新值; else返回旧值; end if; 查询在前: 第一个if条件就不满足,直接跑去构造CR块。 如果在整个交易的过程中,运行了很长时间,但突然在交易尾巴出错了,则只是单独rollback这一个,而不是整个交易全部回滚掉。 工业环境,undo表空间布局的原则是:以空间换时间!也就是undo表空间当尽量大。保持自动扩展,且要注意maxsize。 oracle数据块头部有个事务槽(ITL)。当多个事务槽同时修改数据块,而 阅读全文

posted @ 2013-01-31 10:08 天高地厚-GNU 阅读(238) 评论(0) 推荐(0)

摘要:备份与恢复的功力是“摔”出来的。其原理、这里简单来介绍: oracle通过log的形式记录了所有数据文件的变化,所以只要在某个时段备份了oracle的全部数据文件,并且拥有备份开始时间点以来的所有log,那么就可以用备份的数据文件通过log中变化信息去重演这个变化的过程而达到恢复数据的目的,如果没有某个时间点的数据文件作为应用变化的起点,那么log的变化就没有立足之地,所以备份的目标就是满足这个条件。 那么数据文件和日志文件是如何挂钩的呢? 数据文件的头上包含RBA,有了RBA,在恢复时就能准确地知道到底需要哪个logfile(archivelog or online redo),这便把日志和 阅读全文

posted @ 2013-01-31 09:53 天高地厚-GNU 阅读(179) 评论(0) 推荐(0)

摘要:注:1)pga_aggregate_target以下简称PAT2)我的环境:11:42:10 sys@ORCL (^ω^) select * from v$version where rownum=1;BANNER----------------------------------------------------------------------------------------------------Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProdMicrosoft Windows [版本 6.1.760 阅读全文

posted @ 2013-01-31 09:47 天高地厚-GNU 阅读(897) 评论(0) 推荐(0)

摘要:在前面的blog中,我们知道,redo entries写入log buffer大致的过程如下: 在PGA中生产Redo Entry -> 服务进程获取Redo Copy latch(存在多个---CPU_COUNT*2) -> 服务进程获取redo allocation latch(仅1个) -> 分配log buffer -> 释放redo allocation latch -> 将Redo Entry写入Log Buffer -> 释放Redo Copy latch 由于log buffer是一块“共享”内存,为了避免冲突,它是受到redo alloca 阅读全文

posted @ 2013-01-31 09:41 天高地厚-GNU 阅读(522) 评论(0) 推荐(0)

摘要:体系结构要想深入的理解,还需要配合后续的备份与恢复的实验和原理。但不管啦,先稍微了解一下。 控制文件是个相当小的二进制文件,最多能增长到64m左右。 参数文件告诉实例控制文件的位置。而控制文件告诉实例:数据库名,数据文件的名称及其位置,在线重做日志文件的名称及其位置,以及系统和各个数据文件的SCN信息。 我们的oracle内部的几个人,都比较喜欢往ctl上面写东东,比如: server process会把数据库结构的变化更新到control file LGWR会把当前日志序列号记录到control file CKPT会把检查点信息记录到control file ARCn会把归档日志信息记录.. 阅读全文

posted @ 2013-01-31 09:30 天高地厚-GNU 阅读(183) 评论(0) 推荐(0)

摘要:启动oracle并监听Root登陆Linux系统:执行su - oraclelsnrctl startsqlplus /nologsql>connect / as sysdbasql>startup启运就完成了.退出就可以了em控制台访问$ ./emctl start dbconsoleOracle Enterprise Manager 11g Database Control Release 11.1.0.6Copyright (c) 1996, 2009 Oracle Corporation. All rights reserved.https://192.168.11.11: 阅读全文

posted @ 2013-01-26 10:15 天高地厚-GNU 阅读(407) 评论(0) 推荐(0)

摘要:发出一个sql语句或sql命令,让数据库执行,那么sql语句在数据库内部就要被解析,建立它的execution plan(执行规划(计划)),然后按照执行计划去执行。每一个sql语句都要被解析,解析成原子操作去执行。解析好的sql语句都会存在共享池里面。Shared Pool used to store:--Most recently executed SQL statements--Most recently used data definitions It consists of two key performance-related memory structures:--Library 阅读全文

posted @ 2013-01-24 13:34 天高地厚-GNU 阅读(182) 评论(0) 推荐(0)

摘要:对oracle ITL(事务槽)的理解一、ITL描述:ITL(Interested Transaction List)是Oracle数据块内部的一个组成部分,位于数据块头(block header),itl由xid,uba,flag,lck和scn/fsc组成,用来记录该块所有发生的事务,一个itl可以看作是一条事务记录。当然,如果这个事务已经提交,那么这个itl的位置就可以被反复使用了,因为itl类似记录,所以,有的时候也叫itl槽位。如果一个事务一直没有提交,那么,这个事务将一直占用一个itl槽位,itl里面记录了事务信息,回滚段的入口,事务类型等等。如果这个事务已经提交,那么,itl槽位 阅读全文

posted @ 2013-01-23 17:18 天高地厚-GNU 阅读(489) 评论(0) 推荐(0)

摘要:Oracle的锁机制是一种轻量级的锁定机制,不是通过构建锁列表来进行数据的锁定管理,而是直接将锁作为数据块的属性,存储在数据块首部。这个是通过ITL来实现的,一个事务要修改块中的数据,必须获得该块中的一个itl(通过initrans预先分配的或者是通过free space构建的)。通过itl和undo segment header中的transaction table,可以知道事务处于活动阶段,还是已经完成。事务在修改块时(其实就是在修改行)会检查行中row header中的标志位,如果该标志位为0(该行没有被活动的事务锁住,这是可能要进行deferred block cleanout等工.. 阅读全文

posted @ 2013-01-23 17:09 天高地厚-GNU 阅读(183) 评论(1) 推荐(0)

摘要:①在数据库打开并运行之后,控制文件中的系统检查点scn、控制文件中的数据文件检查点scn和每个数据文件头中的启动scn都是相同的 ②控制文件中的每个数据文件的终止scn都为null ③NORMAL或IMMEDIATE 关闭数据库的过程中,系统会执行一个检查点动作,这时所有数据文件的终止scn 都会设置成数据文件头中的那个启动scn的值。 ④在数据库重新启动的时,Oracle将执行两次检查 ◆ 看数据文件头中的ckpt计数器是否与对应控制文件中的ckpt计数器一致。若相等,进行第二次检查 ◆ 比较文件头中的启动scn和对应控制文件中的终止scn进行比较,如果终止scn等于启动scn,则不... 阅读全文

posted @ 2013-01-23 14:40 天高地厚-GNU 阅读(235) 评论(0) 推荐(0)

摘要:DBWn(Database Writer):主要的工作是将数据库高速缓冲区中被改过的数据写回到数据文件(Data File)中。Oracle数据库为了执行效率,并不会直接存取硬盘,而会先到SGA中的数据库高速缓冲区中寻找,如果没有找到,才会去存取硬盘。而DBWn的工作就是负责保持Oracle内存和硬盘上的数据的一致性,它负责不定时地将内存中的脏缓冲区(Dirty Buffer)写到数据库里。一个Oracle实例最多可以有10个DBWn(DBW0~DBW9)。DBWn将Buffer取出并写到硬盘有两个主要的机制:先期写入协议(Write-ahead Protocol)机制与LRU(Least R 阅读全文

posted @ 2013-01-23 11:55 天高地厚-GNU 阅读(202) 评论(0) 推荐(0)

摘要:1. 直连式存储直连式存储(以下简称DAS)是最早的开放式存储系统。顾名思义,就是将存储设备直接通过服务器上的SCSI(Small Computer System Interface)卡或是HBA(Host Bus Adapter)卡等相互连接由于直连式存储是将存储设备直接与服务器相连,因此,这样的设计能够提供较高的独立使用性与安全性,但在某些方面却缺乏足够的效率与弹性。从性能方面来看,由于直连式存储是使用所在的服务器主机上的操作系统进行数据的I/O存取,例如,数据备份需要占用服务器主机相当的资源(包括CPU、系统I/O等),因此,当直连式存储的数据量越大时,所耗费的资源就越大,而对企业系统运 阅读全文

posted @ 2013-01-23 11:06 天高地厚-GNU 阅读(286) 评论(0) 推荐(0)

点击右上角即可分享
微信分享提示