oracle commit的时候究竟发生了什么
commit究竟发生了什么,其实很少的事情需要做把SCN号写入日志文件LGWN把剩余的redo写入日志文件所有locks被释放掉进行块清理。块清理是指将,将保存在这个block中的事务信息清理掉[@more@]1.从理解LOGW什么时候将redo log buffer中把redo写入redo log file理解commit; 当redo log buffer 三分之一满的时候写当commit的时候写当发生日志切换的时候写当产生的redo满1M的时候写当DBWN要写的时候,先写redo每3秒写 也就是说,redo是以一种相对连续的方式写入日志文件的。所以不管一个事务产生了多少redo,其实commit的时候做的工作都差不多
Oracle checkpoint详解
这里有关checkpoint的详细解释,很不错![@more@]checkpoint扫盲什么是checkpointcheckpoint的作用检查点分类checkpoint相关概念术语RBA(Redo Byte Address), Low RBA(LRBA), High RBA(HRBA)Buffer checkpoint Queues (BCQ)Active checkpoint Queue (ACQ)完全检查点 (normal checkpoint)完全检查点工作过程什么时候发生normal checkpointcheckpoint和SCN有什么关系?增量checkpoint增量checkpoint工作过程发生增量checkpoint的先决条件增量checkpoint的特点增量checkpoint相关参数设置与完全checkpoint的区别查看系统的checkp
em 出现乱码的处理
ref: http://blog.sina.com.cn/s/blog_3f2ef1180100buwm.html这篇是em出现乱码的终极处理方法1、改变$ORACLE_HOME/jdk目录下的jre的默认字体# su - oracle$ cd $ORACLE_HOME/jdk/jre/lib/$ ls font*zh_CN*其中,font.properties是默认使用的字体。还可以看到font.properties.zh_CN.Redhat和其它的字体。$ cp font.properties font.properties.bak$ cp font.properties.zh_CN.Redhat font.properties2、改变$ORACLE_HOME/jre下的默认字体使用上面同样的方法来操作。$ cd $ORACLE_HOME/jre/1.4.2/lib/$ ls font*zh_CN*$ cp font.properties
oui-25031的解决
总是在安装rac的crs的时候出现oui-25031(安装很多次都卡在这里了),导致后面的操作也不能进行!后来我同步了一下时间,结果没有出现这个问题!还有在公网ip的 ifcfg_eth0里需要指定网关,因为在rac启动时会查看网关!GATEWAY=192.168.0.3ref: http://hi.baidu.com/gy_braveheart/blog/item/1759b5839e2cd497f603a6e0.htmlrm -f /etc/init.d/init.cssdrm -f /etc/init.d/init.crsrm -f /etc/init.d/init.crsdrm -f /etc/init.d/init.evmdrm -f /etc/rc2.d/K96init.crsrm -f /etc/rc2.d/S96init.crsrm -f /etc/rc3.d/K96init.crsrm -f /et
Analyze分析表或者索引
Analyze分析表或者索引demo:--62254 SELECT dt.table_name, dt.num_rows, dt.blocks, dt.empty_blocks AS empty, dt.avg_space, dt.chain_cnt, dt.avg_row_len, TO_CHAR( dt.LAST_ANALYZED, 'MM/DD/YYYY HH24:MI:SS' ) FROM dba_tables dt WHERE dt.owner = 'INV' AND dt.table_name = 'MTL_MATERIAL_TRANSACTIONS'; DECLARE v_num_rows NUMBER; v_num_blocks NUMBER; v_avg_row_len NUMBER; BEGIN -- retrieve the values of table statistics on INV.MTL_MATERIAL_TRANSACTIONS -- statis
执行计划出现BITMAP CONVERSION TO ROWIDS的解释!
我在查看执行计划的时候发现BITMAP CONVERSION TO ROWIDS,好像sql反应比较慢,baidu了一下,有下面的解释!我的解决办法是: 把索引删除,建立了联合索引,就没出现这个问题了,一致性获取也下降了很多,速度也快了不少!不知道oracle用这个来究竟是有什么用!http://www.itpub.net/showthread.php?s=&threadid=602866&perpage=10&pagenumber=1都是cbo的context和算法决定的,可以试试false _b_tree_bitmap_plans,我说错了这个不应该是join是combine 给一段Jonathan Lewis的解释:B-tree to Bitmap ConversionsOne of the optimizer’s
Oracle穿越防火墙设置
方法一:在windows2000的注册表中,hkey_local_machinesoftwareoraclehome0下加入字符串值:USE_SHARED_SOCKET=TRUE,即可方法二:1、首先将数据库实例改为SHARED SERVER模式2、以SYSDBA登录SQLPLUS,通过SQLPLUS生成系统当前的参数设置文件pfile:create pfile='d:init.ora' from spfile;3、修改d:init.ora文件,在其中增加(用editplus编辑):*.service_names='your service name'和*.dispatchers='(address=(protocol=tcp)(host=localhost)(port=1521) (dispatchers=1)'4、生成新的SPFILE:create spfile from pfile='d:init.ora';5、
oracle10g在solaris的自启动
cat /etc/init.d/oracle10g#!/bin/shcase "$1" instart)# start tsnlisnterecho "start tsnlisnter"su - oracle -c "lsnrctl start"# start databaseecho "Start Oracle database instance"su - oracle -c "sqlplus /nolog @/oracle/product/10.2.0/rdbms/admin/dbstart"#CONN / AS SYSDBA#startup#exit "|sqlplus /NOLOG"# start enterprise managerecho " Start Emterprise Manager"su - oracle -c "emctl start dbconsole"# start isqlplusecho &quo
动态条件的绑定变量的解决
cStr = 'select * from tbl_name where a=:a1';if aa=bb thencStr = cStr || ' and b=:a2'end if;if cc<>dd thencStr = cStr || ' and b=:a3'end if;dbms_sql.parse(nNum,cStr,DBMS_SQL.native);dbms_sql.bind_variable(nNum,':a1',a1);if aa=bb thendbms_sql.bind_variable(nNum,':a2',a2);end if; if cc<>dd thendbms_sql.bind_variable(nNum,':a3',a3);end if;http://www.itpub.net/showthread.php?s=&postid=8235339#post8235339[@more@]
用分析函数分析每行里面列值重复的列的最大个数
http://www.itpub.net/showthread.php?s=&threadid=792926&perpage=10&pagenumber=1上面有道题,我想可以这样利用分析函数来处理测试用表;create table uss (a1 varchar2(10),a2 varchar2(10),a3 varchar2(10),a4 varchar2(10),a5 varchar2(10),a6 varchar2(10),a7 varchar2(10),a8 varchar2(10))nologging;一:对于1A:插入测试数据:insert into uss values('1','1','1','1','2','2','3','4');insert into uss values('1','1','3','3','2','2','3','4');insert into uss values('1','1','3','3','2','2','3','4');insert in
Oracle的在线重定义表功能
在一个高可用系统中,如果需要改变一个表的定义是一件比较棘手的问题,尤其是对于7×24系统。Oracle提供的基本语法基本可以满足一般性修改,但是对于把普通堆表改为分区表,把索引组织表修改为堆表等操作就无法完成了。而且,对于被大量DML语句访问的表,幸运的是,Oracle从9i版本开始提供了在线重定义表功能,通过调用DBMS_REDEFINITION包,可以在修改表结构的同时允许DML操作。 在线重定义表具有以下功能: 修改表的存储参数; 可以将表转移到其他表空间; 增加并行查询选项; 增加或删除分区; 重建表以减少碎片; 将堆表改为索引组织表
db link泄露密码的处理
不过我上次提到的在10g的db link泄露密码的事情,大家可以参考。在Oracle 10g前,我们可以通过查看user_db_links视图,来查看到本用户下建立的db link的username和password.原因比较简单,可以认为是Oracle的一个安全漏洞。我们看看user_db_links的创建过程就明白了:create or replace view user_db_links(db_link, username, password, host, created)asselect l.name, l.userid, l.password, l.host, l.ctimefrom sys.link$ lwhere l.owner# = userenv('SCHEMAID')select * from link$user_db_links视图来源于sys.link$字典表,而在10g
转载经典文章 buffer busy wait 等待事件说明
转载经典文章 buffer busy wait 等待事件说明 buffer busy wait 等待事件说明当会话想要访问缓冲存储器中的数据块,而该数据块正在被其它会话使用时产生buffer busywaits事件。其它会话可能正在从数据文件向缓冲区存储器度曲同样的数据块,或正在缓冲存储器中对其进行修改。 为了确保读取器会话拥有与获得所有更改或无更改的数据块一致的映像,正在修改该数据块的会话在其标题中标记一个标志,让其他会话知道有一个更改正在进行而等候更改的的完成。 视图v$waitstat不是OWI的组件,但其为没一类缓冲区提供了有用的等待统计。遭遇buf
java存储过程
ref: http://carllgc.blog.ccidnet.com/blog/ccid/do_showone/tid_20905.html[@more@]
logmnr挖掘
execute dbms_logmnr_d.build(dictionary_filename => 'dict.ora',dictionary_location => '/rman/utlfile');execute dbms_logmnr.add_logfile(LogFileName => '/oraarchive/1_659_596981628.arc',Options => dbms_logmnr.new);execute dbms_logmnr.start_logmnr(DictFileName => '/rman/utlfile/dict.ora');create table logmnr3 as select * from GV$LOGMNR_CONTENTS;execute dbms_logmnr.end_logmnr;exec dbms_logmnr.add_logfile('/oraarchive/1_659_596981628.arc',dbms_logmnr.removefile);ref: http://bbs.chinaun
ORACLE 锁简单介绍
ORACLE 锁简单介绍 (zt)ORACLE 锁 (zt) ORACLE数据库是现今数据库领域应用最广泛的,同时它也是一个庞大的系统,全面了解它、玩转它不但需要一定的理论知识,更需要开发经验与工程经验。本人是ORACLE一爱好者,以下是本人对ORACLE锁的一些经验,希望能与大家共同分享。 预备知识: DDL(DATABASE DEFINITION LANGUAGE):数据库定义语言,如create table、drop table..... DML(DATABASE MODIFICATION LANGUAGE):数据库修改语言,如insert、delete、update...... 参考资料:Oracle8 Administrator"s Guide, Release
关于执行计划里recursive calls,db block gets和consistent gets参数的解释
我们在实际工作中经常要看某个sql语句的执行计划,例如:在sqlplus使用命令SET AUTOTRACE ON后,执行计划显示如下:SELECT STATEMENT Optimizer=ALL_ROWS (Cost=985 Card=1 Bytes=26)Statistics----------------------------------------------------------35 recursive calls0 db block gets1052 consistent gets7168 physical reads0 redo size395 bytes sent via SQL*Net to client512 bytes received via SQL*Net from client2 SQL*Net roundtrips to/from client0 sorts (memory)0 sorts (disk)1 rows processed其中recursive calls,
ITL的含义
是Interesting Transaction List的缩写 是block 中关于事务信息的记录(包括list编号、回滚段地址、事务状态、事务在该block影响的记录条数等)ITL 是 consistents reads 的基础,根据ITL 才能去回滚段中找变化前的数据大事务才某些少量特定条件下可能ITL没有被及时更新为提交状态,需要 延迟块清除,这样才能让 让进程识别到底是否需要去回滚段中获取变化前数据。所以说ITL 的不同步更新 导致 delay block cleanout单就写日志,是不会产生scn的[@more@]
一致读( consistent read )的步骤
一致读( consistent read )的步骤 =========================================================== 作者: grassbell(http://grassbell.itpub.net)发表于: 2004.09.27 15:12分类: Oracle 出处: http://grassbell.itpub.net/post/26/2507--------------------------------------------------------------- 摘自http://www.itpub.net/131231.html 。不知道具体出处,拿来参考。1. Read the Data Block. 2. Read the Row Header. 3. Check the Lock Byte to determine whether there's an ITL entry. 4. Read the ITL entry to determine the T
使用SQL*PLUS,构建完美excel或html输出
今天看了eygle的一个"使用SQL*PLUS,构建完美excel或html输出",用来把表结构输出到excel或者html里,发现很有用:set linesize 200 set term off verify off feedback off pagesize 999 set markup html on entmap ON spool on preformat offspool table.xlsselect A.Table_Name,A.column_name 字段名,A.data_type||'('||A.data_length||')' 数据类型和长度,A.data_precision 整数位,A.Data_Scale 小数位,A.nullable 允许空值,A.Data_default 缺省值,B.comments 备注 from user_tab_columns A,user_col_comments Bwhere A.Table_Na