- 博客(25)
- 收藏
- 关注
原创 ORACLE备份中的压缩
默认的情况下,如果没有配置压缩备份,或者备份的时候没有发出compressed 命令,那么ORACLE会采用NULL数据块的压缩方法来备份数据库,采用这种方法备份,ORACLE就不会备份从未使用过的数据块。另外一种备份就是采用compressed命令压缩备份,采用这种方法,ORACLE会使用压缩算法来备份数据,通常会压缩大约70%。11g的备份又有了提高,特别是对于UNDO表空间的备份,
2009-10-30 13:54:00 5946
原创 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 6463
原创 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 8999 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 4707
原创 Introduction to Oracle Wait Interface notes
文章提到,用Cache hit ratio的方法来检查ORACLE性能问题过时了,里面有句非常形象的话:这无异于一个医生只知道根据血压的来治疗病人,而病人由于疼痛,神经兴奋,血压在一个合理的范围内,医生却告诉患者,你没病,等你血压低的时候再来。同样的,我们不能仅仅根据Cache hit ratio来判断ORACLE数据库是否出了问题,需要综合考虑,我们DBA能当那个医生吗?
2009-10-27 23:32:00 2300
原创 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 11987 1
原创 row migeration and row chain
row migeration:当发出update导致记录行长增加,block的剩余空间不足以存放这条记录,就会产生行迁移,发生行迁移时rowid不会改变,原来的block中会用一个指针存放这条记录在新的block中的地址,发生行迁移会对性能产生影响,因为读这条记录会读两个BLOCK。row chain:当一个BLOCK不足以存放下一条记录的时候,就会发生行连接,这个时候oracle会把这条记录
2009-10-26 12:36:00 4062
原创 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 3497
原创 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 3993
原创 查看 library cache 命中率
SQL> desc v$librarycache Name Null? Type ----------------------------------------- -------- ---------------------------- NAMESPACE
2009-10-23 10:36:00 9315 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 2404 1
原创 recycle pool
Document上说,对于访问频率不高的大表,可以将其放入 recycle pool ,以防止将 热点表挤出 default pool ,带来的性能损失。不过 我 对此 有疑问,既然有了 keep pool 可以将 热点表 cache 到 keep pool 中,另外由于大表的访问频率不高,我们 为某个大表设置了 recycle pool ,那么岂不是 浪费了 很大的 内存空间在S
2009-10-22 14:42:00 5095
原创 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 3725
原创 查看 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 6126
原创 向一个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 2254 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 2372
原创 专有模式&共享模式
专有模式:当一个用户请求连接到ORACLE的时候,ORACLE会专门的为这个user process 分配一个server process。共享模式:一个server process 可以服务多个user process.如果要使用这个功能,必须使用net services.也就是说必须配置tns。它适合用于高并发,事物量小,如果这个时候采用了共享模式,可以大大减少由于高度并发对于ORACLE
2009-10-16 16:04:00 3587 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 3189
原创 模拟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 3453
原创 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 11840 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 2473
原创 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 13271
原创 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 2775
原创 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 3721
原创 还原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 3737
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人