Oracle 基础管理
文章平均质量分 73
linwaterbin
当时明月在,曾照彩云归。
展开
-
对oracle日常管理的几点建议
oracle这碗饭不好吃,几多风险,几多建议。1 基于时间点的不完全恢复,需要对控制文件洗脑,撕掉账本(重做日志),重新印刷账本,这是条没有回头的路,需要保护现场,为自己留条后路。切记将整个数据库先进行备份,即便是几个T。过程如下: 1)shutdown immediate 2)startup mount 3)对整个数据库进行cp。 4原创 2012-06-11 00:34:30 · 1830 阅读 · 0 评论 -
DBA和老板签合同的参数:fast_start_mttr_target
当我们和boss签合同时,有个参数非常重要:fast_start_mttr_target1 fast_start_mttr_target:快速启动平均故障恢复的时间的目标,单位:s。缺省为0(禁用)。2 fast_start_mttr_target转化为内部参数,比如:log_checkpoint_interval(脏块达到域值) log_checkpoint_timeout(超时原创 2012-06-11 00:39:50 · 3368 阅读 · 0 评论 -
在sqlplus 起用autotrace,并略看执行计划。
1 如何启用sqlplus的autotrace功能?【pl/sql dev不支持这个功能】 要用sys用户登入并下列步骤: (1)@?\rdbms\admin\utlxplan --建立plan_table表 (2)10G之前plan_table是没有同义词的,所以要加上create public synonym plan_table for plan_table。【此步:optio原创 2012-06-11 08:44:41 · 1807 阅读 · 0 评论 -
oracle事务之oracle读一致性
1回滚与撤销 Refer:《深入解析oracle》by eygle(1) 为了多用户的读一致性和能回退事务,oracle提供了为修改的数据保存修改之前的旧值。(2) Redo:保证在故障时事务可以恢复Undo:保证事务可以被回滚或撤销(3) 9i之前,oracle提供回滚段(rollback)来撤销数据;之后,oracle使用undo表空间来管理。原创 2012-06-11 09:11:53 · 3294 阅读 · 1 评论 -
undo系列学习之读一致性(ORA-01555错误机制分析)
oracle在读的过程中,数据是静止的,没有脏读,也就是,未提交的永远都不会被读到。我们可以理解为,oracle在读的开始时,提前为他今后所要读的内容拍了一张”照片“,把所有内容全部定格在一个时间点上,作为接下来读的依据。oracle利用scn来实现这个理论,开始查询时,会确定一个select scn,这样就保证了事务槽里所有的scn都小于select scn。好比如,现在是12:21分,那么我之原创 2012-08-02 13:05:00 · 2081 阅读 · 0 评论 -
oracle的那些名字,那些事
对于初学者,oracle的很多名字令人迷茫。我也是哈。数据库名-全局名-服务名-实例名-别名之间的关系,剪不断,理还乱,理解了,别有一番滋味在心头。 SQL> show parameter name NAME TYPE VALUE--------------------原创 2012-07-16 16:21:10 · 1989 阅读 · 0 评论 -
oracle证明题:未提交的事务也可能被DBWn写进数据文件
学oracle时,很多人会认为,DBWn的写与commit有关。这是错误的。其实,DBWn的写与事务是否commit,一丁点的关系都没有。现在,证明:一个未提交的事务,也是有可能被写入数据文件的。 会话1:sys@ORCL> select xidusn,xidslot,xidsqn,ubafil,ubablk from v$transaction;no rows select原创 2012-08-02 17:23:00 · 3873 阅读 · 0 评论 -
undo系列学习之如何计算undo表空间的大小
undo空间的大小不足会引起ORA-30036或者ORA-01555。 我们创建一个小的undo表空间,然后执行一个比较大的事务,这时就可以模拟出ORA-30036.sys@ORCL> create undo tablespace thinktbs datafile '/u01/app/oracle/oradata/ORCL/datafile/think_undo.dbf'原创 2012-07-30 12:12:47 · 4015 阅读 · 1 评论 -
undo系列学习之undo段及区的状态和使用概述
undo表空间只做一件事:保存旧值。在AUM下,段是自动生成,区是自动分配与回收,且是不连续的。每个段至少有2个区。oracle自动使用undo段,在某种意义上,我们只要关注undo表空间的大小就可以了。 查询当前哪个undo表空间被激活:sys@ORCL> show parameter undo_tablespaceNAME原创 2012-07-31 11:32:18 · 5301 阅读 · 0 评论 -
undo系列学习之undo段和区的探究
1)回滚段是磁盘上的一段空间 2)当一个事务开始的时候: 首先,把变化前的数据和变化后的数据写入redo log file 其次,把变化前的数据和相关的事务信息写入回滚段 最后,才在data_buffer_cache中修改数据 3)commit做两件事: a)写日志 b)在回滚段中标记事务为inactive(小事务还会在buffer cac原创 2012-08-03 12:12:08 · 2809 阅读 · 0 评论 -
undo系列学习之oracle DBA常用的脚本
DBA在维护oracle的过程,和undo有关的常用脚本。在前面的一些文章也涉及了挺多的,在此简单总结一点。 1)怎样查询数据库当前某个session的事务所使用的回滚段大小?sys@ORCL> select b.sid,b.username,a.xidusn,a.used_ublk 2 from v$transaction a,v$session b 3原创 2012-08-03 12:08:02 · 1607 阅读 · 1 评论 -
oracle建完库后,我们必须先设好的三个参数
无论我们是用dbca建库,还是手工建。在完成了建库的任务后,有三个参数在以后的生产运用中非常重要,通常,我们是需要将其打开的。 第一个是log_checkpoints_to_alert。 SQL> show parameter checkpoint NAME TYPE VALUE -------原创 2012-07-11 09:52:13 · 4230 阅读 · 0 评论 -
undo系列学习之pub兄弟帖子的整理
提问者:xmas171688 提问时间:2005-1-13 14:45:18 问题:在下列2个表中V$ROLLNAME,V$ROLLSTAT 谁能帮我解释下 V$ROLLSTAT 的列 每列是干吗的。恳请帮忙!主要是想知道 哪列是 回滚段大小 ! 整理: 每列是干什么的,我想,官网给得很明了:http://docs.oracl原创 2012-08-06 21:23:26 · 1468 阅读 · 0 评论 -
undo系列学习之深入浅出事务槽
undo表空间有个脾气,就是新事务优先,长查询滞后! 情况有两:查询在前、查询在后 查询在后: if [查scn>提交scn] if [查sid = 提交 sid] 返回新值; else 返回旧值; end if; 查询在前: 第一个if条件就不满足,直接跑去构造CR原创 2012-08-01 21:21:23 · 2803 阅读 · 0 评论 -
oracle回滚机制的深入探究
undo机制是oracle的巧妙之处,也是学习oracle的难点之一。 下面我们从内部来具体了解它。 会话1:scott用户,发起一个事务hr@ORCL> conn scott/oracleConnected.scott@ORCL> UPDATE emp SET sal=4000 WHERE empno=7788;1 row updated.scot原创 2012-08-07 19:55:49 · 2457 阅读 · 0 评论 -
理解REDO LOG(1) 介质恢复和实例恢复的基本概念
oracle世界,有3种数据:undo、redo和data。而redo 应"提交事务不丢失"而生的一种机制,服务于两类场景:一是instance recovery、一是media recovery。 instance recovery目的:当数据库发生故障时,确保buffer cache中的数据不好丢失,保证数据库的一致性 media recovery 目的:当数据文件发原创 2012-08-09 20:50:50 · 3024 阅读 · 0 评论 -
理解redo(2)redo内容:change vector和redo entries
redo log file由redo records(又名redo entries)组成。一条redo record由一组change vectors构成。 redo record:是change vector的集合。每个redo record是由多个change vector组成的。oracle在恢复过程中,会保证一个transaction要么被全部恢复,要么全部不恢复。实际上就是通过原创 2012-08-10 16:02:33 · 4448 阅读 · 0 评论 -
alter system flush "oracle的缓存"
下面3条语句,旨在刷新oracle的缓存。这里总结一下。 1)alter system flush global context 下图说明: 对于多层架构的,如上图:应用服务器和数据块服务器通过连接池进行通信,对于连接池的这些信息被保留在SGA中,这条语句便是把这些连接信息清空。 2)alter system flush shared_poo原创 2012-08-10 23:18:00 · 11393 阅读 · 0 评论 -
理解redo(3)详解一个update的过程
理论解析: 1)server process 搜索buffer cache中是否有update要更新的block(内存中又名buffer),没有则从disk读入buffer cache 2)server process 构造一组change vector来记录对数据块的改动(此时放于PGA中),这组change vector组成 redo record原创 2012-08-12 14:44:33 · 2429 阅读 · 0 评论 -
oracle数据字典之x$kvit和x$kcvfh学习
x$表是数据库的核心部分,这些表用于追踪内部数据库信息,维持数据库正常运行。x$表是加密命名的,而且oracle不做文档说明。oracle通过这些x$表建立起其他大量视图提供用户查询管理数据库之用。************************************~(@^_^@)~******************************************************原创 2012-07-28 09:57:33 · 2863 阅读 · 0 评论 -
Difference between TRUNCATE, DELETE and DROP commands
The DELETE command is used to remove the Tables data either selective or all and put the data in an rollback segment as well where from a read consistent view or a flashback view can be seen even afte原创 2012-07-28 13:19:44 · 2139 阅读 · 1 评论 -
undo学习系列之澄清一个被误解的概念
在oracle中有三种数据,data、redo和undo。undo是oracle在undo段中记录的信息,用于取消或回滚事务。学习上要把重点放在undo的作用以及基本概念。 你对数据执行修改时,oracle会生成undo信息,以便回到更改前的状态。我们可以通过闪回事务历史读取undo。 undo在数据库内部存储在一组特殊的段中,称之为undo段。 rollback s原创 2012-07-28 17:35:00 · 2129 阅读 · 0 评论 -
undo系列学习之如何计算最优的undo_retention及undo_retention的初体验
undo_retention简单定义,就是最多数据的最少保留时间。AUM模式下,undo_retention参数用于事务commit后undo数据保留的时间。单位为秒。这是个no guarantee的限制。也就是,若空间足够,他只是个‘花瓶’;当可用空间不足而又有事务需要回滚空间,则这些数据依然会被覆盖。这个行为可能会导致ORA-01555错误,这些数据被记忆的时间可用v$undostat里面的字原创 2012-07-29 23:03:06 · 7461 阅读 · 0 评论 -
undo系列学习之undo入门基础知识介绍
图2: 图3: 图4: 图5: 图6: 图7: 图8: 图9: 图10: 图11: 图12: 图12: 图13: undo的相关统计信息:原创 2012-07-30 21:43:42 · 1920 阅读 · 0 评论 -
理解oracle ROWID
数据存放在数据文件中,其属性会随着存储而确定,这些属性包括:在哪个数据文件?属于哪个对象?所在的数据块?行号? 将这些属性合并起来就构成了oracle的ROWID。 所以,rowid详细的记录了数据在磁盘上的位置。简单讲,也叫行地址。 ROWID可分:物理和逻辑。除了IOT使用逻辑ROWID,其他类型的表使用物理ROWID。 ROWID也原创 2012-08-14 14:02:31 · 1959 阅读 · 0 评论 -
undo系列学习之Oracle IMU及Redo Private Strands技术
在传统的undo管理模式中,oracle对undo和data block是一视同仁。这样大致会有三种弊端: 1)事务开始时,存放事务表的段头不在内存,server process需要将此i/o上来 2)存放旧值的回滚块不在内存 3)rollback或者CR读的时候,所需的回滚块被DBWn写到磁盘,oracle也需将此i/o,可能会产生大量的consistent get原创 2012-08-02 02:05:46 · 3739 阅读 · 0 评论 -
undo系列学习之深入剖析一个事务的操作流程
开篇我们先用一个实验引出事务:sys@ORCL> select xid,xidusn,xidslot,xidsqn,ubablk,ubafil from v$transaction; no rows selected 没找到相应的事务信息,用hr发起一条事务:hr@ORCL> select * from p; ID TEST-------原创 2012-07-31 17:19:10 · 2781 阅读 · 0 评论 -
浅析oracle b-tree index搜索原理
索引与表一样,也属于段(segment)的一种。里面存放了用户的数据,跟表一样需要占用磁盘空间。只不过,在索引里的数据存放形式与表里的数据存放形式非常的不一样。在理解索引时,可以想象一本书,其中书的内容就相当于表里的数据,而书前面的目录就相当于该表的索引。同时,通常情况下,索引所占用的磁盘空间要比表要小的多,其主要作用是为了加快对数据的搜索速度。 但是,索引作为一种可选的数据结构,原创 2012-08-16 22:37:04 · 4338 阅读 · 0 评论 -
从4个方面实战oracle的密码操作
较好的实践是,oracle的密码操作通过profile来实现,而资源则是通过资源消费组来控制,profile其实是种限制。通过profile来控制密码的使用,大抵有四:1) 密码的历史 在这里,有两个参数:password_reuse_time和password_reuse_max,比较好的实践是,这两个参数当关联起来使用。 如:password_reuse_time=30,pa原创 2012-09-03 02:09:49 · 2513 阅读 · 0 评论 -
oracle 角色的两个特性和误区
角色的两个特性1)角色的延迟性 延迟生效 立即让角色生效的方法: set role 角色名; 例如: set role resource; 延迟回收 下面用实验证明延迟回收: 会话(1)scott: sys@ORCL> conn scott/oracle Connected. scott@O原创 2012-09-02 22:09:08 · 1835 阅读 · 0 评论 -
oracle NET学习(1):NET-8和监听器行为分析
环境:14:56:24 sys@ORCL (^ω^) select * from v$version where rownum=1;BANNER--------------------------------------------------------------------------------Oracle Database 10g Enterprise Edition原创 2012-09-11 15:09:22 · 2422 阅读 · 0 评论 -
从平衡树到oracle b-tree索引的原理探索
先话唠一下,oracle索引,有两类运用较广: 1)b-tree:OLTP(面向交易) 2)bitmap:OLAP(面向分析) 步入正题,先搭建测试环境:SQL> create table tt as select * from dba_objects;表已创建。SQL> select count(*) from tt; COUNT(*)原创 2012-08-07 03:09:23 · 3911 阅读 · 0 评论 -
对bootstrap$、数据字典结构信息和open相关性的研究
环境:00:24:16 sys@ORCL (^ω^) select * from v$version where rownum=1;BANNER--------------------------------------------------------------------------------Oracle Database 10g Enterprise Edition原创 2012-09-17 02:02:38 · 3559 阅读 · 0 评论 -
理解锁和闩(2)锁机制概述
锁(lock)是一种防止多个事务访问同一资源时产生破坏性的相互影响的机制。通常,高并发数据库需要利用锁机制解决数据并发访问、一致性及完整性问题。 前面提到的资源(resource)大致可以分为两类: ● 用户对象:例如表及数据行 ● 对用户透明的系统对象:例如内存中的共享数据结构、数据字典中的信息 任何 SQL原创 2012-10-10 14:37:23 · 1561 阅读 · 0 评论 -
理解锁和闩(1)与锁相关的数据结构
在oracle眼里,锁不是稀有资源,相反地,只要需要,你就应该长期地持有对数据所加的锁。行级锁根本没有相关开销,对1千万行锁定所需的资源数与对1行锁定所需的资源数完全相同,这是个常量。 在SGA中和锁相关的内存有两块:队列资源池和锁池。池:指的就是一块固定大小的内存。 队列资源池:存放所有的队列资源.锁就是队列资源。 例如:一个表上的TM锁就是一个队列资源,有多少个表就有多原创 2012-10-10 00:16:57 · 1785 阅读 · 0 评论 -
理解锁和闩(3)TX锁和TM锁
oracle没有锁管理器和锁列表,这样可以避免行级锁维护的开销和行级锁数量不足导致的争用问题。在Oracle的每行数据上,都有一个标志位来表示该行数据是否被锁定,要查看某一行是否被锁定,必须直接找到这一行,而不要指望能从哪个列表得到答案,事务只是找到数据。其locking过程如下: ㈠ 找到想锁定的那一行的地址 ㈡ 到达那一行原创 2012-10-12 11:51:47 · 2332 阅读 · 1 评论 -
模拟工业场景:数据库的用户被删除掉了,表空间,数据文件都在的 能否恢复?
环境: SQL> select * from v$version where rownum=1;BANNER----------------------------------------------------------------Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProdSQL> !una原创 2012-10-17 21:29:43 · 2205 阅读 · 0 评论 -
ORA-10997: another startup/shutdown operation of this instance in progress解决方法
今晚想学习一下oracle,开库: SQL> startup ORA-10997: another startup/shutdown operation of this instance inprogress ORA-09967: unable to create or open lock file Linux Error: 13: Perm原创 2012-10-17 19:33:58 · 10592 阅读 · 1 评论 -
select ... for update在mysql和oracle间锁行为的比较
环境:mysql> show variables like '%storage_engine%';+----------------+--------+| Variable_name | Value |+----------------+--------+| storage_engine | InnoDB |+----------------+--------+1 ro原创 2012-10-28 23:18:34 · 4965 阅读 · 0 评论 -
sqlplus上下键浏览历史命令行
1 挂载系统的Packages到mnt,并安装readline[root@Think mnt]# cd Packages/[root@Think Packages]# rpm -ivh --nodeps readline*Preparing... ########################################### [100%] pack原创 2012-10-23 12:23:13 · 2817 阅读 · 0 评论