Stream推薦安裝---10gR2之一

zhouwf0726發表於2019-06-24

 

10gR2 streams推薦安裝配置

 

很多業務的實現都可以藉助Oracle Streams複製來實現,資料複製,資料倉儲,不同硬體平臺的資料庫移植等等。Streams複製可以實現從一個源庫到多個目標庫,多個源庫到一個目標庫的複製,源庫和目標可以處在不同的硬體平臺和版本,甚至可以工作在不同字符集下。Streams複製可以基於表級,可以基於使用者級也可以基於整個資料庫配置。

 

10gR2+stream推薦資料庫安裝版本為10204,推薦安裝的patch: Note 437838.1

 

一、推薦資料庫安裝引數:

 

Source DB:

global_names

_job_queue_interval

sga_target

streams_pool_size

 

global_names建議設定為true

 

1_job_queue_interval

     推薦設定為1default5job queuescan的頻率(單位為秒)。11g已經利用schedule控制job queue,此引數可以不做調整。

 

2COMPATIBLE = 10.2.0

     該引數設定為10.2.0Streams環境可以利用到10g Release 2的新特性。

 

3GLOBAL_NAMES =true   

     為了能夠使Streams複製能夠在各個資料庫共享資訊,建議把Streams環境中資料庫的這個引數都設定為true   

 

4JOB_QUEUE_PROCESSES=4

     指定每個例項job queue程式的Jn(J000 ... J999). 該引數在有傳播程式的例項上至少設定為2,我們應該把引數設定為例項上能夠最多同時執行的job數量+2

 

5SGA_TARGET  >0  Default: 0 (SGA autotuning is enabled)

     sga_target設定為非零值(動態管理記憶體)+streams_pool_size>=200(最小值)。如果streams_pool_size=0Streams將從shared_pool_size中佔用10%的空間。

    

6TIMED_STATISTICS(Default =Typical)

     STATISTICS_LEVEL設定為TYPICAL or ALL, TIMED_STATISTICS設定為true。檢視 :

V$STREAMS_CAPTURE,  V$STREAMS_APPLY_COORDINATOR, V$STREAMS_APPLY_READER,

V$STREAMS_APPLY_SERVER將可以得到elapse time相關的統計資料。

 

 

 

 

二、資料庫儲存:

=======================================

1. Tablespace for Streams Administrator queues

----------------------------------------------

1、建議為Streams單獨建立表空間,保留Streams相關的物件

 

2、把captureapply放在各自單獨的queue

 

     對於捕獲和應用在同一個資料庫中的情況,建議把captureapply放在各自單獨的queue,queue names的命名不要超過24個字元,queue table name不要超過18個字元。

   dbms_streams_adm.set_up_queue(queue_table_name='Q_CAP_A,queue_name=>'CAP_A', )

     dbms_streams_adm.set_up_queue(queue_table_name='Q_APP_FROM_B',queue_name=>'APP_FROM_B');

 

3、給Stream管理使用者授權

 

     DBMS_STREAMS_AUTH.GRANT_ADMIN_PRIVILEGE('STRMADMIN');

 

 

三、源庫捕獲相關配置:

 

1、源庫一定要處於歸檔方式

     追加日誌(supplemental log)

     確認源庫已經開啟了追加日誌,在10gR2如果建立複製環境,追加日誌模式自動開啟。

     DBMS_STREAMS_ADM 自動為本地捕獲相關物件新增追加日誌

 

     確認源庫的追加日誌模式:

 

     資料庫級別:

     SELECT supplemental_log_data_pk, supplemental_log_data_ui FROM V$DATABASE;

 

     表級:

SELECT supplemental_log_data_pk, supplemental_log_data_ui, supplemental_log_data_fk FROM dba_capture_prepared_tables UNION

     SELECT supplemental_log_data_pk, supplemental_log_data_ui, supplemental_log_data_fk FROM dba_capture_prepared_schemas UNION

     SELECT supplemental-log_data_pk, supplemental_log_data_ui, supplemental_log_data_fk FROM dba_capture_prepared_database;

 

     檢查追加日誌組:

     Select log_group_name, table_name, decode(always, 'ALWAYS', 'Unconditional',NULL, 'Conditional') ALWAYS from DBA_LOG_GROUPS

 

     檢查追加日誌組的列:

     Select log_group_name, column_name, position from dba_log_group_columns where table_name = 'DEPARTMENTS' and wner='HR';  

 

2. Implement a Heartbeat Table

 

     Stream程式在redo日誌滿10M後進行一次檢查點操作,檢視試圖DBA_CAPTUREapplied_scn是否在不斷變化可以判斷捕獲程式是否正常工作,我們可以把這個檢視的applied_scn資訊和對應的目標庫定期的輸出到監控表來監控捕獲程式。

 

3. Perform. periodic maintenance

   A. checkpoints資訊預設在SYSAUX tablespace進行維護.  捕獲引數checkpoint_retention_time(default = 60 days)決定了checkpoint資訊的儲存量的大小,每次清理checkpoint記錄的同時修改捕獲程式檢視中FIRST_SCNFIRST_SCN記錄的是最早的捕獲程式記錄。我們可以用dbms_capture_adm.alter_capture修改checkpoint_retention_time引數來減少checkpoint資訊保留週期。在安裝stream環境初期可以把checkpoints資訊預設表空間移動到使用者定義的標空間。

 

   B. 在建立或者REBUILD STREAM程式的時候,執行DBMS_CAPTURE.BUILD命令可以把資料字典當前資訊DUMPREDO,減少建立或者REBUILD STREAM過程產生的日誌,該過程和DBMS_CAPTURE_ADM.PREPARE_(TABLE, SCHEMA, GLOBAL)_INSTANTIATION結合使用。

 

4. Capture Process Configuration

   A.  Configuring Capture

我們可以用DBMS_STREAMS_ADM.MAINTAIN_(TABLES,SCHEMA,GLOBAL,TTS) procedures 自動建立stream複製環境,MAINTAIN_TABLES中的TABLE_NAME引數可以為一個或者一個陣列,該方法對於不同引數進行了重寫;如果maintain_*過程不能滿足需求可以利用ADD_*_RULES  來建立複製環境。為了提高效能,捕獲規則要儘量簡單,如果捕獲規則包含類似LIKE等低效語句或者非常複雜將會降低stream複製的效能。

 

為了減少捕獲日誌,可以對於一些不必要的物件進行過濾,include_tagged_lcr inclusion_rule 2個引數可以結合把不必要的物件放在負的rule set

 

    B.  Parameters

        Set the following parameters after a capture process is created:

 

        PARALLELISM  Default: 1 

        Ensure that the appropriate supplemental logging has been configured

        at the source database before setting this parallelism parameter.

 

        _CHECKPOINT_FREQUENCY=1000  Default: 10 

        預設為挖掘10M日誌,進行一次checkpoint.如果源庫有非常頻繁的lob或者ddl操作,或者日誌產生量非常大,建議加大這個引數,減少checkpoint的頻率

 

        _SGA_SIZE  Default: 10

        streams pool分配給logminer程式的記憶體,預設值10M,建議增大此引數,尤其是源庫要處理大量lob欄位的情況。如果源庫出現ORA-1341錯誤則不要增加此引數了。

       

        修改引數示例指令碼:

        dbms_capture_adm.set_parameter('capture_ex','_checkpoint_frequency','100');

 

5. Propagation Configuration

   A.  Configuring Propagation

       和捕獲程式的建立一樣可以利用maintain_*過程或者ADD_*__PROPAGATION_RULES過程進行傳播程式的安裝。ADD_*_PROPAGATION_RULES傳播DML DDL, 如果只想傳播DML語句可以利用 ADD_SUBSET_PROPAGATION_RULES進行配置。 傳播程式新增物件的時候不進行語義檢查,所以在新增傳播物件的時候一定要注意要確保拼寫正確。ADD_GLOBAL_PROPAGATION_RULES過程和ADD_TABLE_RULES might過程可以填加相同的物件,避免重複傳播。

 

B.  Propagation mode

10.2以上版本可以設定queue_to_queue propagation傳播.  如果源庫為RAC 資料庫,安裝了捕獲程式後,一個新的UQEUE服務將被建立,我們可以在DBA_SERVICES 檢視找到類似如下一條資料format:sys$schema.queue_name.global_nameNAME列儲存QUEUE的服務名, network列儲存了當前QUEUE的網路名。DBA_QUEUE_TABLES儲存了QUEUE TABLESOWNER INSTANCE相關資訊。切換OWNER INSTANCE

exec DBMS_AQADM.ALTER_QUEUE_TABLE(queue_table=>'QUEUE_TABLE',

primary_instance=>1, secondary_instance=>2);

如果用maintain_(TABLE,SCHEMA,GLOBAL)過程配置STREAMqueue_to_queue引數資東北設定為TRUE,The database link for this queue_to_queue propagation must use a TNS

servicename (or connect name) that specifies the GLOBAL_NAME in the CONNECT_DATA clause of the descriptor. specify (CONNECT_DATA=(SERVICE_NAME='global_name of target database')). Do NOT include a specific INSTANCE in the CONNECT_DATA clause.

 

db.mycompany.com=

 (description=

  (load_balance=on)

   (address=(protocol=tcp)(host=node1-vip)(port=1521))

   (address=(protocol=tcp)(host=node2-vip)(port=1521))

  (connect_data=

     (service_name=db.mycompany.com)))

 

db1.mycompany.com=

 (description=

  (address=(protocol=tcp)(host=node1-vip)(port=1521))

  (connect_data=

    (service_name=db.mycompany.com)

    (instance_name=db1)))

 

db2.mycompany.com=

 (description=

  (address=(protocol=tcp)(host=node2-vip)(port=1521))

  (connect_data=

    (service_name=db.mycompany.com)

(instance_name=db2)))

 

    10.2以前版本建立的用queue_to_dblink方式的傳播程式,如果資料庫鏈路不能連線到owning instance of the queue, propagation will not succeed.  我們可以繼續使用 10.1. best practices for this propagation, 或者重新建立傳播程式並且設定queue_to_queueTRUE.  重建的時候要確認queue is empty沒有unapplied spilled messages before you drop the propagation.

   Queues created prior to 10.2 on RAC instances should be dropped and recreated

in order to take advantage of the automatic service generation and queue_to_queue propagation.  Be sure to perform. this activity when the queue is empty and no new LCRs are being enqueued into the queue.

 

C.  Parameters

    LATENCY=5  Default: 60

     傳播程式等待的時間,預設為60秒,為了提高傳播效能,需要減小這個引數值。

 

  dbms_aqadm.alter_propagation_schedule('strmadmin.streams_queue','DEST_DB',

                                          destination_queue=>'Q1',latency=>5);

 

D.  Network Connectivity

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

相關文章