自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

落落的专栏 专注SQL调优 性能调优

Focus on SQL Tuning, Oracle MySQL Performance tuning 想精通SQL以及SQL优化?联系微信692162374

  • 博客(236)
  • 收藏
  • 关注

原创 V$LATCH

 SQL> desc v$latch 名称                                                                                          是否为空? 类型 ------------------------------------------------------------------------------

2009-11-18 13:49:00 2349

原创 Redhat as 4 中创建 LVM 逻辑卷

一. 用fdisk -l 命令查看有物理磁盘信息 一般显示如下Disk /dev/hda: 8589 MB, 8589934592 bytes    255 heads, 63 sectors/track, 1044 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytes   Device Boot      Start     

2009-11-16 22:11:00 2149

原创 CURSOR_SHARING,VERSION_COUNT

 CURSOR_SHARING:determines what kind of SQL statements can share the same cursors.cursor_sharing有三个值,默认的是exact,表示每条SQL精确匹配。force表示强制绑定类似的SQL。similar,当收集了柱状图的统计信息之后,对于不同的变量会从新解析,如果没有收集柱状图,similar就和

2009-11-12 15:57:00 5790 3

原创 ORACLE SQL执行步骤

 以前理解的 ORACLE sql 的处理过程大致如下: 1.运用HASH算法,得到一个HASH值,这个值可以通过V$SQLAREA.HASH_VALUE 查看 2.到shared pool 中的 library cache 中查找是否有相同的HASH值,如果存在,则无需硬解析,进行软解析 3.如果shared pool不存在此HASH值,则进行语法检查,查看是否有语法错误 4

2009-11-11 13:52:00 6205

原创 如何查看,更改隐含参数

 可以使用如下脚本查看隐含参数SELECT x.ksppinm NAME, y.ksppstvl VALUE, x.ksppdesc describFROM SYS.x$ksppi x, SYS.x$ksppcv yWHERE x.inst_id = USERENV (Instance)AND y.inst_id = USERENV (Instance)AND x.indx = y.ind

2009-11-10 16:11:00 4634 2

原创 如何找出应用程序未使用绑定变量

   SQL开发的过程中,如果不使用绑定变量,会对数据库性能造成非常严重的影响请看如下示例代码:  begin  for i in 1..1000 loop  execute immediate insert into test values(||i||);  end loop;  commit;   end;  /该过程执行1000次,会解析1000次,我们知道每次SQL解析大概

2009-11-10 14:37:00 4055

原创 X$KSMSP

  X$KSMSP:kernal Storage Memory Sga HeaP SQL> desc x$ksmsp; Name                                      Null?    Type ----------------------------------------- -------- ---------------------------- 

2009-11-10 13:50:00 3636

原创 Using Logminer analyze redo log

         有时候,某个用户无意间drop了一张表,或者是truncate一张表,delete 忘加where,update 忘加 where, 这个时候们就可能执行不完全恢复,或者进行数据库的flashback.但是我们怎么能知道他干坏事的具体时间呢?只要redo log 存在,我们就能通过logminer这个工具找到干坏事的具体时间,然后执行不完全恢复,恢复数据库到干坏事之前的那一时

2009-11-05 17:56:00 2783 2

原创 RESTORE DATAFILE TO A NEW LOCATION

    如果存储datafile的磁盘坏了,这个时候就可能将数据文件还原到别的磁盘,然后进行恢复。恢复之前,首先检查是否设置了db_create_file_dest,如果设置了这个参数,那么rman默认的会将datafile恢复到db_create_file_dest指定的目录中,而这个时候由于db_create_file_dest指定的目录所在的磁盘损坏,可能导致恢复不成功。    这个

2009-11-04 14:10:00 6054

原创 丢失spfile,pfile,不知道DBID的情况下还原spfile

 当出现了这种情况,我们使用restore spfile from autobackup,是不行的,因为没有设置DBID,这个时候不要慌,只要知道备份存放的地点就可以还原SPFILE。一.首先设置ORACLE_SIDC:/Users/luobi>set oracle_sid=robinson二.强行启动RMAN> startup已连接到目标数据库 (未启动)启动失败:

2009-11-03 10:55:00 4630

原创 INCREMENTAL BACKUP

    增量备份:ORACLE允许我们使用RMAN只备份上次增量备份以来被更改的数据库。增量备份只能是在RMAN中执行,既可以联机,也可以脱机,既可以ARCHIVELOG,也可以NOARCHIVELOG。对于增量备份,他只能作用于数据文件,不能作用于归档日志。    增量备份的类型:差异备份,累积备份。    差异备份:差异备份是增量备份的默认类型,对于差异备份,RMAN会备份自上次同级或

2009-11-02 15:58:00 2866 1

原创 ORACLE备份中的压缩

     默认的情况下,如果没有配置压缩备份,或者备份的时候没有发出compressed 命令,那么ORACLE会采用NULL数据块的压缩方法来备份数据库,采用这种方法备份,ORACLE就不会备份从未使用过的数据块。另外一种备份就是采用compressed命令压缩备份,采用这种方法,ORACLE会使用压缩算法来备份数据,通常会压缩大约70%。11g的备份又有了提高,特别是对于UNDO表空间的备份,

2009-10-30 13:54:00 5864

原创 RMAN RUN

       如果我们不想使用RMAN中的默认配置来备份数据库,就可以使用RUN代码块,RUN代码块以{开头,}结尾。{}中的语句可以做为一个代码块一起执行。例如有如下代码块:run{allocate channel c1 device type disk maxpiecesize 50m format=C:/BACKUP1/ROBINSON_%U;allocate channel c2

2009-10-30 13:10:00 6273

原创 RMAN CONFIGURE

可以通过SHALL ALL命令查看 RMAN的配置信息RMAN> show all;RMAN 配置参数为:CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default CONFIGURE BACKUP OPTIMIZATION OFF; # defaultCONFIGURE DEFAULT DEVICE TYPE TO DISK;CONFIGURE C

2009-10-29 14:09:00 8943 1

原创 log_archive_dest&log_archive_dest_n&db_recovery_file_dest

log_archive_dest:指定归档文件存放的路径,该路径只能是本地磁盘,默认为。如果设置了log_archive_dest_n,就不能设置log_archive_dest,同样的,如果设置了db_recovery_file_dest,也不能设置log_archive_dest;也就是说,设置了log_archive_dest,就不能设置log_archive_dest_n,也不能设置d

2009-10-28 15:10:00 4675

原创 Introduction to Oracle Wait Interface notes

     文章提到,用Cache hit ratio的方法来检查ORACLE性能问题过时了,里面有句非常形象的话:这无异于一个医生只知道根据血压的来治疗病人,而病人由于疼痛,神经兴奋,血压在一个合理的范围内,医生却告诉患者,你没病,等你血压低的时候再来。同样的,我们不能仅仅根据Cache hit ratio来判断ORACLE数据库是否出了问题,需要综合考虑,我们DBA能当那个医生吗?     

2009-10-27 23:32:00 2285

原创 log buffer

      log buffer 是SGA中一块循环使用的内存区域,它一般很小,因为有4个条件能够触发log buffer 中的redo 写入到log file中,缺省的设置为512kb,或者128kb*cpu_count (cpu_count由ORACLE自动设置,一般不需要更改)的最大值。在10g中ORACLE会自动调整它的值,他遵循这样一个原则,log_buffer+fixed size

2009-10-26 16:37:00 11920 1

原创 row migeration and row chain

row migeration:当发出update导致记录行长增加,block的剩余空间不足以存放这条记录,就会产生行迁移,发生行迁移时rowid不会改变,原来的block中会用一个指针存放这条记录在新的block中的地址,发生行迁移会对性能产生影响,因为读这条记录会读两个BLOCK。row chain:当一个BLOCK不足以存放下一条记录的时候,就会发生行连接,这个时候oracle会把这条记录

2009-10-26 12:36:00 4025

原创 PCTFREE&ITL&CONSISTANT READ

ITL:Interested Transaction List,很多人都把它叫做事务槽。它位于BLOCK Header,下面来看看DUMP出来的一个BLOCK Itl           Xid                  Uba         Flag  Lck        Scn/Fsc0x01   0x0006.02d.000027cc  0x00809de3.0266.02 

2009-10-24 00:50:00 3443

原创 data dictionary cache 命中率

如果 shared pool 设置过小,那么 data dictionary cache 也会相应的过小,没有足够的空间存储ORACLE的系统数据字典信息,从而导致ORACLE需要从硬盘读取数据字典信息,我们查看执行计划的时候看到的recursive calls就是代表的是从磁盘读取数据字典的次数。SQL> select count(*) from dba_source;  COUNT(*

2009-10-23 14:04:00 3946

原创 查看 library cache 命中率

SQL> desc v$librarycache Name                                      Null?    Type ----------------------------------------- -------- ---------------------------- NAMESPACE                            

2009-10-23 10:36:00 9273 1

原创 测量sql 解析耗费的时间比例

清空共享池,关闭,重启数据库SQL> shutdown immediate;SQL> startup;开启 时间统计SQL> set timi onSQL> select count(*) from dba_objects;  COUNT(*)----------     11308Elapsed: 00:00:00.19SQL> /  COUNT(*)------

2009-10-22 15:28:00 2353 1

原创 recycle pool

     Document上说,对于访问频率不高的大表,可以将其放入 recycle pool ,以防止将 热点表挤出 default pool ,带来的性能损失。不过 我 对此 有疑问,既然有了 keep pool 可以将 热点表 cache 到 keep  pool 中,另外由于大表的访问频率不高,我们 为某个大表设置了 recycle pool ,那么岂不是 浪费了 很大的 内存空间在S

2009-10-22 14:42:00 4981

原创 keep buffer cache

    如果某个表是热点表,经常被访问,就应该考虑将其放入 keep buffer cache.防止其被挤出default pool 。从而减少physical read所带来的I/O开销。默认的情况下 db_keep_cache_size=0,未启用,如果想要启用,需要手工设置db_keep_cache_size的值,设置了这个值之后db_cache_size 会减少。    并不是

2009-10-22 11:24:00 3678

原创 查看 buffer cache 命中率

SQL> select name,value from v$sysstat where name in(db block gets,consistent gets,physical reads);NAME                                                                  VALUE-------------------

2009-10-21 17:41:00 6073

原创 向一个table 插入数据的时候,为什么会从该table所分配的第四个block开始,预留的3个block是干什么用的?

SQL> create table ttt(x number);表已创建。SQL> insert into ttt values(1);已创建 1 行。SQL> commit;提交完成。SQL> select file_id,block_id,bytes,blocks from dba_extents where segment_name=TTT;   FILE_ID   BLOCK_ID

2009-10-16 16:44:00 2238 4

原创 SCN&CHECKPOINT

        SCN:System Change Number ,用来标示数据库在某个时刻的确切版本,他只能前进,不能后退. SCN是数字,它是由timestamp转换过来的,可以select timestamp_to_scn(systimestamp) from dual;获得一个SCN,也可以用scn_to_timestamp转换为timestamp.         SCN存在于控制文

2009-10-16 16:08:00 2359

原创 专有模式&共享模式

专有模式:当一个用户请求连接到ORACLE的时候,ORACLE会专门的为这个user process 分配一个server process。共享模式:一个server process 可以服务多个user process.如果要使用这个功能,必须使用net services.也就是说必须配置tns。它适合用于高并发,事物量小,如果这个时候采用了共享模式,可以大大减少由于高度并发对于ORACLE

2009-10-16 16:04:00 3562 1

原创 通过命令方式得到awr报表,ADDM报表

执行exec dbms_workload_repository.create_snapshot();执行以下命令:drop table t purge;drop sequence s;create table t(c number,d varchar2(20));create index it on t(c);create sequence s start with 1in

2009-10-16 16:01:00 3174

原创 模拟ORA-01555快照过旧 错误

SQL> create undo tablespace undo2 datafile C:/ORACLE/PRODUCT/10.2.0/ORADATA/ROBINSON/DATAFILE/UNDO2.DBF SIZE 2M autoextend off;表空间已创建。SQL> alter system set undo_tablespace=undo2;SQL> alter sys

2009-10-16 15:52:00 3436

原创 undo_retention&guarantee

undo_retention:指定事物commit后undo 将要保存的时间(秒),在ORACLE10g中默认的是900秒。GUARANTEE : 保证undo_retention参数所设定的时间有效,这个是10g的新功能。SQL> ALTER TABLESPACE undotbs1 RETENTION GUARANTEE;SQL> ALTER TABLESPACE undotbs1

2009-10-16 15:48:00 11786 1

原创 Dead lock

死锁是由于两个或多个session互相等待而造成的,死锁不需要DBA干预,ORACLE会舍弃第一个SESSION中等待的SQL。当用户接收到ORA-00060 死锁警告的时候,用户要么选择rollback,要么选择commit。如果选择rollback,会回滚所有的事物,如果选择commit,这个时候不会commit整个事物,而只会commit被ORACLE舍弃的SQL语句之前的SQL.测试表

2009-10-15 15:51:00 2457

原创 ORACLE 中的lock 机制

为了进行LOCK的探究,我建立了一个测试表 test ,结构和测试数据如下:SQL> select * from test;        ID NAME---------- ----------         6 yoxi         2 robinson         2 tttt         3 david         4 jason         5 lucy    

2009-10-15 14:00:00 13154

原创 merge

从ORACLE 9i开始,ORACLE提供了可以同时执行 insert ,update的命令merge 。创建测试表 infoSQL> create table info(name varchar2(10),age number, address varchar2(10));Table created.插入3条测试数据insert into info values(robinso

2009-10-14 16:45:00 2764

原创 O7_DICTIONARY_ACCESSIBILITY&REMOTE_OS_AUTHENT

O7_DICTIONARY_ACCESSIBILITY 控制具有ANY OBJECT权限的用户 对SYS模式下的OBJECT是否具有访问,修改权限。这个参数默认为FALSE,如果这个参数为TRUE,那么SYS也不需要 写 as sysdba 就可以登录 数据库  SQL> alter system set O7_DICTIONARY_ACCESSIBILITY=true scope

2009-10-14 09:54:00 3703

原创 还原ORACLE DUMP 的值

还原DUMP出来的数字SQL> select dump(2000,16) from dual;DUMP(2000,16)------------------Typ=2 Len=2: c2,15SQL> declare n number;  2  begin  3   dbms_stats.convert_raw_value(c215,n);  4  dbms_output.put_li

2009-10-13 17:53:00 3728

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除