随笔分类 -  Oracle

摘要:1、执行:alter database recover managed standby database disconnect from session;后台alert文件报错如下:Errors in file /u01/oracle/admin/primary/bdump/primary_mrp0_2967.trc:ORA-19527: physical standby redo log must be renamedORA-00312: online log 1 thread 1: '/u01/oracle/oradata/primary/redo01.log'出现这个错误 阅读全文
posted @ 2010-10-14 12:26 无双的小宝 阅读(577) 评论(0) 推荐(0) 编辑
摘要:之前,原本已经尝试过配置oracle实例的逻辑和物理standby结构,并且做个一些role交换操作,可是由于昨天学习rman的部分命令时没留意,误删掉了primary DB上的所有归档日志,因为原来是在maximum protection模式下,standby DB上还存在archivel gap,结果之前搭建的standby实验环境彻底挂了,primary DB也自动停了。我只好把primary DB在nomount模式下改为maximum performance模式,并将控制standby redo log传输的log_archive_dest_state_n设置为defer,才把pri 阅读全文
posted @ 2010-10-14 12:26 无双的小宝 阅读(701) 评论(0) 推荐(0) 编辑
摘要:在SQL语句优化过程中,我们经常会用到hint,现总结一下在SQL优化过程中常见Oracle HINT的用法: 1. /*+ALL_ROWS*/ 表明对语句块选择基于开销的优化方法,并获得最佳吞吐量,使资源消耗最小化. 例如: SELECT /*+ALL+_ROWS*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO=’SCOTT’; 2. /*+FIRST_ROWS*/ 表明对语句块选择基于开销的优化方法,并获得最佳响应时间,使资源消耗最小化. 例如: SELECT /*+FIRST_ROWS*/ EMP_NO,EMP_NAM,... 阅读全文
posted @ 2010-10-11 09:00 无双的小宝 阅读(21621) 评论(0) 推荐(2) 编辑
摘要:相关重做的等待事件一,下面共描述了12个直接相关日志的等待事件,但只有前面几个是值得注意的.1、log file parallel write 当日志缓存到日志文件时,这是一个主要的等待事件.虽然这个时间的名字中有"并行"(parallel)字样,但即使日志缓存并没有使用并行写,因日志缓存的写出而造成的等待仍然是此等待事件. 我们可以通过v$system_event来了解下某一个阶段内,此等待事件的平均等待时间.通过此时间值,来评估我们的日志I/O是否正常.有资料介绍当log file parallel write的平均等待时间大于10毫秒时.有可能就表明着日志的吞吐量缓慢 阅读全文
posted @ 2010-10-08 23:44 无双的小宝 阅读(306) 评论(0) 推荐(0) 编辑
摘要:我们知道,在Oracle数据库中,可以通过kill session的方式来终止一个进程,其基本语法结构为:alter system kill session 'sid,serial#' ;被kill掉的session,状态会被标记为killed,Oracle会在该用户下一次touch时清除该进程.我们发现当一个session被kill掉以后,该session的paddr被修改,如果有多个session被kill,那么多个session的paddr都被更改为相同的进程地址SQL> select saddr,sid,serial#,paddr,username,status 阅读全文
posted @ 2010-09-30 22:38 无双的小宝 阅读(33560) 评论(0) 推荐(1) 编辑
摘要:本文是关于Oracle数据库调试与优化方面的文章,主要介绍Oracle数据库中命中率相关的问题,包括不同的算法之间性能的比对。 关于Oracle中各个命中率的计算以及相关的调优 1)Library Cache的命中率: .计算公式:Library Cache Hit Ratio = sum(pinhits) / sum(pins) SQL>SELECT SUM(pinhits)/sum(pins) FROM V$LIBRARYCACHE; 通常在98%以上,否则,需要要考虑加大共享池,绑定变量,修改cursor_sharing等参数。 2)计算共享池内存使用率: SQL>SELE. 阅读全文
posted @ 2010-09-30 09:30 无双的小宝 阅读(690) 评论(0) 推荐(0) 编辑
摘要:1)Library Cache的命中率:.计算公式:Library Cache Hit Ratio = sum(pinhits) / sum(pins)SQL>SELECT SUM(pinhits)/sum(pins) FROM V$LIBRARYCACHE;通常在98%以上,否则,需要要考虑加大共享池,绑定变量,修改cursor_sharing等参数。2)计算共享池内存使用率:SQL>SELECT (1 - ROUND(BYTES / (&TSP_IN_M * 1024 * 1024), 2)) * 100 || '%' FROM V$SGASTAT WH 阅读全文
posted @ 2010-09-30 09:06 无双的小宝 阅读(417) 评论(0) 推荐(0) 编辑
摘要:Move表、索引、LOB/Long [zt]move一个表到另外一个表空间时,索引不会跟着一起move,而且会失效。(LOB类型例外)表move,我们分为:*普通表move*分区表move*LONG,LOB大字段类型move来进行测试和说明。索引的move,我们通过rebuild来实现SQL> select * from v$version;Oracle9i Enterprise Edition Release 9.2.0.6.0 - 64bit ProductionPL/SQL Release 9.2.0.6.0 - ProductionCORE 9.2.0.6.0 Productio 阅读全文
posted @ 2010-09-28 23:16 无双的小宝 阅读(711) 评论(0) 推荐(0) 编辑
摘要:oracle 9i/10gR2所有版本下载地址(请用迅雷等下载工具下载):---------------------------------------------------------------------------------------------------Oracle 9iOracle9i Database Release 2 Enterprise/Standard/Personal Edition for Windows NT/2000/XPhttp://download.oracle.com/otn/nt/oracle9i/9201/92010NT_Disk1.ziphtt 阅读全文
posted @ 2010-09-16 15:55 无双的小宝 阅读(691) 评论(0) 推荐(0) 编辑
摘要:drop table test;select count(*) from test;--创建测试表create table test(id number(9),nick varchar2(30));--插入测试数据begin for i in 1..100000 loop insert into test(id) values(i); end loop; commit;end;select * from test;--更新nick字段,使数据发生严重倾斜update test set nick='abc' where rownum<99999;--创建索引create i 阅读全文
posted @ 2010-09-16 15:03 无双的小宝 阅读(11858) 评论(0) 推荐(0) 编辑
摘要:前段时间碰到一个数据库的数据文件数(200)达到了数据库定义的参数db_files的值,而原本需要使用alter system可以修改这个参数,但是因为限制该参数的maxdatafiles值(由控制文件定义)仪200,故要想改大db_files参数值,需要重建控制文件,下面是我个人根据实验总结的操作过程。一、参数察看$sqlplus /nologconn / as sysdbaSQL> show parameter db_files;NAME TYPE VALUE------------------------------------ ----------- -------------- 阅读全文
posted @ 2010-09-13 00:37 无双的小宝 阅读(6559) 评论(0) 推荐(0) 编辑
摘要:Dataguard-备机产生gap的解决方法 有时候因为网络或备份故障等原因,主机所产生的归档日志无法传到备机上,这个时候备机就产生了gap。对于这种情况,应该如何解决?需要注意的是,一旦产生gap,即使gap之后的archive log能正常传到standby库中,standby库并不会对后继传来的日志文件做apply。只有通过对standby做recover把从产生gap的第一个文件到最新的archive log文件都apply了才能做到2个库一致。1.在primary库中重新创建standby controlfile。并将它拷贝到standby库中。位置与以前同。ALTER DATABA 阅读全文
posted @ 2010-09-11 01:59 无双的小宝 阅读(3075) 评论(0) 推荐(0) 编辑
摘要:目录第1章 性能调整综述第2章 有效的应用设计第3章SQL语句处理的过程第4章 ORACLE的优化器第5章 ORACLE的执行计划 访问路径(方法) -- access path 表之间的连接 如何产生执行计划 如何分析执行计划 如何干预执行计划 - - 使用hints提示 具体案例分析第6章 其它注意事项附录第1章 性能调整综述 Oracle数据库是高度可调的数据库产品。本章描述调整的过程和那些人员应与Oracle服务器的调整有关,以及与调整相关联的操作系统硬件和软件。本章包括以下方面:l 谁来调整系统?l 什么时候调整?l 建立有... 阅读全文
posted @ 2010-09-08 17:38 无双的小宝 阅读(2233) 评论(2) 推荐(2) 编辑
摘要:1、 某项目,在pl/sql中运行top sql脚本: --使用频率select sql_text, executions,sysdate from (select sql_text, executions, rank() over(order by executions desc) exec_rank from v$sql)where exec_rank <= 10; 建crontab定时运行上面脚本,求出其当前时间段使用频率较高的sql,找到其第一条(就是执行最频繁的语句),拷贝出来,粘贴到一个新窗口,代码为:SELECT grp_addr FROM Table_1WHERE ID 阅读全文
posted @ 2010-09-08 16:29 无双的小宝 阅读(4109) 评论(1) 推荐(0) 编辑
摘要:前两天看到现场alert日志中有一些00060(Deadlock)的告警。查了一下日志文件,发现一些奇怪的现象,比如有些锁在Insert时产生的,有些死锁是对同一个对象产生的。于是在解决这些问题的同时,仔细研究了一下TX锁,总结了产生TX锁的各种情况。数据记录被锁 我们知道,Oracle中事务产生的索都是行级锁。也就说,事务在对表做更新操作(Update、Delete)时,只在针对数据块中需要更新的数据记录加锁。这种类型的锁就是我们最常见的锁。看下面的例子:SQL> create table t_lock(a number, b varchar2(20), c char(10)) ini 阅读全文
posted @ 2010-09-08 16:25 无双的小宝 阅读(4107) 评论(0) 推荐(0) 编辑
摘要:在压力测试的中,发现数据库很慢,通过如下语句发现是log_syncselect * from v$session_wait在结合如下语句,发现日志切换的频率非常之快select * from v$log针对这个情况我就增加redo文件的大小的个数在线修改redo.log文件的大小1.查找日志文件的路径名和group#号SQL> select * from v$log; GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARCHIV---------- ---------- ---------- ---------- ---------- ------STATU 阅读全文
posted @ 2010-09-07 11:44 无双的小宝 阅读(2743) 评论(0) 推荐(0) 编辑
摘要:今天做一个7W条记录/s插入oracle数据库的实验。两台服务器都在本地复制一个1280W条记录的表到另外一个相同结构的表里面,一台服务器花了12s另一台却花了近2min。在em中生成插入时的awr报告,在eygle的帮助下,发现是redo日志大小引起的数据库性能下降。#通过如下语句可以发现数据库很慢的原因是log_syncSQL> select * from v$session_wait;#查看日志状态SQL> select * from v$log;SQL> select member from v$logfile;#建立新的日志组SQL> alter databa 阅读全文
posted @ 2010-09-07 11:43 无双的小宝 阅读(2440) 评论(0) 推荐(0) 编辑
摘要:author:skate当系统出现性能瓶颈时,尽量较少不必要的资源消耗,最后就是平衡cpu,内存,io,network等资源,使数据库可以稳定的运行。oracle数据库优化的根本是1.尽量减少资源消耗,例如优化sql,减少sql本身的资源消耗2.如果无法进一步减少资源的消耗,那就让数据尽量靠近cpu,也就是把数据从硬盘转移到内存(内存的读写速度快) 或者换更快的磁盘本文就简单总结下如何缓存数据和数据库对象(也就是把数据移向内存,提高内存的命中率,以提高整体io速度)1.缓存数据 2.缓存数据对象的定义,例如package,procedure,pl/sql和sql(也就是cursor)等上面说的 阅读全文
posted @ 2010-08-29 16:23 无双的小宝 阅读(787) 评论(0) 推荐(0) 编辑
摘要:oracle优化-----监控指标author:skate在想优化数据库前,首先要确认数据库是否需要优化,这就需要一些监控指标了,如,事务响应时间,数据库的逻辑读,数据库的物理读/物理写等。日常监控这些指标,从这些数值的波动可以观察数据库的负载,再配合os的统计信息如下sql运行两次,取其差值,就是系统的总的逻辑读select * from v$sysstat s where s.NAME like 'consistent gets'如下sql运行两次,取其差值,就是系统的总的物理读(应用的,不是实例本身的)select * from v$sysstat s where s.N 阅读全文
posted @ 2010-08-29 16:21 无双的小宝 阅读(1805) 评论(0) 推荐(0) 编辑
摘要:DBA 职责及日常工作职责:1.安装和升级数据库服务器,以及应用程序工具构建和配置网络环境.2.熟悉数据库系统的存储结构预测未来的存储需求,制订数据库的存储方案.3.根据开发人员设计的应用系统需求创建数据库存储结构.4.根据开发人员设计的应用系统需求创建数据库对象5.根据开发人员的反馈信息,在必要的时候修改数据库的结构6.管理数据库的用户维护数据库的安全性7.控制和监控用户对数据库的存取访问8.监控和优化数据库的性能9.制定数据库备份计划,灾难出现时对数据库信息进行恢复10.备份和恢复数据库11.联系数据库系统生产厂商,跟踪技术信息12.解决客户端中间层和服务器的链接问题13.保证安全连接每日 阅读全文
posted @ 2010-08-29 00:29 无双的小宝 阅读(610) 评论(0) 推荐(0) 编辑