orace block与table记录 dump及buffer cache小纪

orace block与table记录 dump及buffer cache小纪

上一篇 / 下一篇  2013-01-31 20:50:35 / 个人分类:block

--测试 oracle dump函数与 block表存储  
--插入一条记录,仅一个列
SQL> create table t_dump(a int); 
                                 
Table created                    
                                 
SQL> insert into t_dump values(9);
                                 
1 row inserted                   
                                 
SQL> commit;                     
                                 
Commit complete 
---用dump查看记录存储在块中的内容
SQL> select dump(9,10) from dual;--10进制显示
                                
DUMP(9,10)                      
-------------------             
Typ=2 Len=2: 193,10             
                                
SQL> select dump(9,16) from dual; --16进制显示
                                
DUMP(9,16)                      
-----------------               
Typ=2 Len=2: c1,a               
-------获取表记录所在的文件号及块号
SQL> select dbms_rowid.rowid_to_absolute_fno(rowid,'SCOTT','T_DUMP'),dbms_rowid.rowid_block_number(rowid) from t_dump where rownum=1;
                                                                                                                                    
DBMS_ROWID.ROWID_TO_ABSOLUTE_F DBMS_ROWID.ROWID_BLOCK_NUMBER(                                                                       
------------------------------ ------------------------------                                                                       
                            10                         231251                                                                       
---转储块号内容(为表添加新列b,类型为varchar2,且其列为10)                                                                                                                                    
SQL> alter system dump datafile 10 block 231251;                                                                                    
                                                                                                                                    
System altered    

SQL> select dump('10',16) from dual;--查看16进制内容
                                   
DUMP('10',16)                      
-------------------                
Typ=96 Len=2: 31,30                
---多次dump文件,未发现新添加的b列
block_row_dump:                  
tab 0, row 0, @0x1f92            
tl: 6 fb: --H-FL-- lb: 0x1  cc: 1
col  0: [ 2]  c1 0a              
end_of_block_dump                
---添加一列但此列未插入数据                                             
SQL> alter table t_dump add b varchar2(10);                             
                                                                        
Table altered                                                           
                                                                        
SQL> alter system dump datafile 10 block 231251;                        
                                                                        
System altered                                                          
                                                                        
---如下可知新添加的列未显示在block,说明oracle仅会在block记录有数据的列  
block_row_dump:                                                         
tab 0, row 0, @0x1f92                                                   
tl: 6 fb: --H-FL-- lb: 0x1  cc: 1                                       
col  0: [ 2]  c1 0a                                                     
end_of_block_dump                                                       
 
 
 
--后分析,此时添加的b列内容未写到block中,仍在buffer cache中,强制检查,即写到数据文件中
--  alter system flush buffer_cache也可起到同样作用
SQL> alter system checkpoint;
                            
System altered.             
----查看dump新添加的内容已体现出来
block_row_dump:                                                                                                                                     
tab 0, row 0, @0x1f89             
tl: 9 fb: --H-FL-- lb: 0x2  cc: 2 
col  0: [ 2]  c1 0a               
col  1: [ 2]  31 30               
tab 0, row 1, @0x1f7c             
tl: 13 fb: --H-FL-- lb: 0x1  cc: 2
col  0: [ 5]  c4 0a 64 64 64      
col  1: [ 3]  7a 78 79            
end_of_block_dump                  ---查看块号内容,如下在dump文件存储的内容c1 0a即是上述dump查询的结果,二者一致              
block_row_dump:                  
tab 0, row 0, @0x1f92            
tl: 6 fb: --H-FL-- lb: 0x1  cc: 1
col  0: [ 2]  c1 0a    
   
   
   
   
   
   
   
   
   
                            
   
   
   
   
   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值