oracle RECOVERY_PARALLELISM與instance recovery和medium recovery的關係小記

wisdomone1發表於2013-04-10

/*********oracle並行恢復的概念*************/      
1,透過io並行化減少恢復時間
2,對於資料檔案儲存在多個磁碟作用顯著
3,用於例項和介質恢復

/**********oracle並行恢復相關的引數************/
RECOVERY_PARALLELISM
1,指定啟用幾個並行恢復的程式
2,受限於parallel_max_servers
4,僅適用於多cpu環境

 

parallel_max_servers
1,指定一個例項最大可用的並行程式和並行恢復程式的個數
2,其預設值為:parallel_threads_per_cpu * cpu_count * curcurrent_parallel_users* 5
3,取值範圍為:0-3600
4,在rac環境下,各例項可取不同值
5,上述的引數curcurrent_parallel_users取值和例項的記憶體管理方式有關
     1,禁用了automatic memory management,其值為1
     2,啟了pga_aggrregate_target,其值為2
     3,啟用了sga自動管理及pga自動管理,其值為4
6,此引數取值太低,某些查詢在並行處理操作期間會出現缺少可用的並行執行程式
  此引數取值太高,在業務高峰,導致資源欠缺,反而降低整體效能


 
parallel_threads_per_cpu
1,與作業系統有關,一般預設為2
2,指定例項的預設並行度
3,確定並行的動態負載均衡演算法
4,確認並行執行操作期間每個cpu可以處理的並行執行程式數或者每個cpu可以處理的執行緒數threads  


/*****介質恢復*****/
SQL> show parameter recovery_parallel       
                                            
NAME                                 TYPE   
------------------------------------ --------
VALUE                                       
------------------------------              
recovery_parallelism                 integer
0                                           

 

SQL> alter database open;              
alter database open                    
*                                      
ERROR at line 1:                       
ORA-01113: file 6 needs media recovery 
ORA-01110: data file 6: 'D:\NEW_TBS.DBF'
                                       
/****並行恢復*****/                                       
SQL> recover datafile 6 parallel 2;    
Media recovery complete.           

/*****對於recovery_parallelism未深入理解********/

/***檢視相關官方手冊*****/
---源於sqlplus user manual,關於sqlplus recover的用法及簡介


PARALLEL [integer]
1,此引數根據例項可用cpu個數及parallel_threads_per_cpu選用合理的並行度
2,此引數優先於recovery_parallelism,會覆蓋後者
3,此引數指定並行度,即並行操作期間啟用的並行執行緒個數
4,上述每個並行執行緒可能會使用1或2個並行執行程式,即執行緒與程式是1:m關係

/*******如果我配置parallel_threads_per_cpu為1****是否recovery就不能啟用並行了?*********/

/****修改上述引數1*******/
SQL> show parameter parallel_threads

NAME                                 TYPE
------------------------------------ ----------
VALUE
------------------------------
parallel_threads_per_cpu             integer
2
SQL> alter system set parallel_threads_per_cpu=

System altered.

SQL> show parameter parallel_threads

NAME                                 TYPE
------------------------------------ ----------
VALUE
------------------------------
parallel_threads_per_cpu             integer
1   

/*******修改cpu為1*********/
SQL> show parameter cpu_count

NAME                                 TYPE
------------------------------------ ---------
VALUE
------------------------------
cpu_count                            integer
4
SQL> alter system set cpu_count=1;

System altered.

SQL> show parameter cpu_count

NAME                                 TYPE
------------------------------------ ---------
VALUE
------------------------------
cpu_count                            integer
1

/***上述2引數為1可以啟用並行恢復****/
SQL> recover datafile 6 parallel 2;
Media recovery complete.
SQL> alter database open;


小結:
1,上述的thead可對應1或2個並行執行程式,所以上述2引數配置為1也可以啟用並行恢復

/****啟用>2的並行恢復可以嗎?***********/
--&gt2也可以並行恢復****
SQL> recover datafile 6 parallel 3;
Media recovery complete.
SQL> recover datafile 6 parallel 4;
ORA-00283: recovery session canceled due to errors
ORA-00264: no recovery required


/******recovery_parallelism測試*******/
---此引數靜態須重啟
SQL> show parameter recovery_para

NAME                                 TYPE
------------------------------------ ---------------------
VALUE
------------------------------
recovery_parallelism                 integer
0
SQL> alter system set recovery_parallelism=2;
alter system set recovery_parallelism=2
                 *
ERROR at line 1:
ORA-02095: specified initialization parameter cannot be mo


SQL> alter system set recovery_parallelism=2 scope=spfile;

System altered.


---在sqlplus執行recover datafile 7,如下日誌表明為序列式恢復,非並行恢復
ALTER DATABASE RECOVER  datafile 7 
Media Recovery Start
Serial Media Recovery started

--啟用parallel還是序列化恢復
SQL> recover datafile 7 parallel 2;
Media recovery complete.   

Media Recovery Start                
Serial Media Recovery started   

/*********************如下recovery_parallelism=2*************/
/*******會話一恢復一個檔案7******/
SQL> recover datafile 7;
Media recovery complete.
SQL> alter database open;
                        
Database altered.  

/*******另啟會話一恢復一個檔案8******/
SQL> recover datafile 8;    
Media recovery complete.
SQL>            

/*******測試開啟3個會話也可以恢復3個檔案***********/      

小結:1,recovery_parallelism不是指的是開啟恢復會話的個數,而是指定並行恢復的程式

/*******如下為例項恢復後的並行程式資訊,記錄剛好和recovery_parallelism引數相等********/
SQL> select * from v$px_process;                                     
                                                                     
SERVER_N STATUS                    PID                               
-------- ------------------ ----------                               
SPID                                                    SID    SERIAL#
------------------------------------------------ ---------- ----------
P000     AVAILABLE                  24                               
10012                                                                
                                                                     
P001     AVAILABLE                  25                               
5996           

/******重啟庫後上述檢視消失為空******/
SQL> shutdown immediate                                                                                  
Database closed.                                   
Database dismounted.                               
ORACLE instance shut down.                         
SQL> startup                                       
ORA-32004: obsolete or deprecated parameter(s) speci
ORACLE instance started.                           
                                                   
Total System Global Area 1670221824 bytes          
Fixed Size                  2176328 bytes          
Variable Size            1056967352 bytes          
Database Buffers          603979776 bytes          
Redo Buffers                7098368 bytes          
Database mounted.                                  
Database opened.                                   
SQL> select * from v$px_process;                   
                                                   
no rows selected          

/****驗證下recovery_parallelism與v$px_process的關係********/
SQL> alter system set recovery_parallelism=3 scope=spfile;                        
                                                         
System altered.                                          
                                                         
SQL> startup force                                       
ORA-32004: obsolete or deprecated parameter(s) specified f
ORACLE instance started.                                 
                                                         
Total System Global Area 1670221824 bytes                
Fixed Size                  2176328 bytes                
Variable Size            1056967352 bytes                
Database Buffers          603979776 bytes                
Redo Buffers                7098368 bytes                
Database mounted.                                        
Database opened.                                         
SQL>   

/****shutdown abort例項恢復日誌如下*******/
alter database open                                                                                    
Beginning crash recovery of 1 threads                
 parallel recovery started with 3 processes  --明確指示使用3個並行恢復程式,與recovery_parallelism相等        
Started redo scan                                    
Completed redo scan                                  
 read 102160 KB redo, 4834 data blocks need recovery 
Started redo application at         

/*******v$px_process也驗證上述日誌**************/
SQL> select * from v$px_process;                                                      
                                                                     
SERVER_N STATUS                    PID                               
-------- ------------------ ----------                               
SPID                                                    SID    SERIAL#
------------------------------------------------ ---------- ----------
P000     AVAILABLE                  20                               
3244                                                                 
                                                                     
P001     AVAILABLE                  21                               
6404                                                                 
                                                                     
P002     AVAILABLE                  22                               
9336         


小結:
      1,recovery_parallelism指定例項或介質恢復啟用的並行恢復程式
      2,並行恢復程式用v$px_process進行查詢
      3,recovery_parallelism與max_parallel_servers有關聯
      4,max_parallel_servers與這幾個引數parallel_threads_per_cpu ,cpu_count,curcurrent_parallel_users有關
      5,parallel_threads_per_cpu指定每個cpu並行的執行緒數,而每個執行緒可對應1或多個並行執行程式                                                     

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-758200/,如需轉載,請註明出處,否則將追究法律責任。

相關文章