一步一步學Streams(10) 第二部分 實踐之準備工作(2)初始化環境
二、初始化環境
在準備建立streams複製環境之前,還有一些準備工作需要我們進行,如下:
1、配置管理員帳戶
為了便於管理,不建議使用sys/system使用者,也不建議使用system表空間,推薦一切都新建。使用者需要在source/target端分別建立,並必須具有相關的管理許可權,本例中以strmadmin為例。
a>. 首先建立新的表空間JSSWEB> create tablespace stream_tbs datafile ¨ /data/oradata/jssweb/ stream01.dbf¨ size 200m;
表空間已建立。JSSWEB> create user strmadmin identified by strmadmin default tablespace stream_tbs quota unlimited on stream_tbs;
使用者已建立。
-- 授予dba許可權
JSSWEB> grant dba to strmadmin;
授權成功。當然,某些情況下不能通過直接授予dba許可權來解決問題,如果說你聽說過顯式授權與隱式授權,並且strmadmin使用者需要在過程中執行某些操作的話,你就會明白我的意思。那麼問題出現了,如何精確賦予使用者許可權呢?oracle提供了一個包:dbms_streams_auth,具體使用者可參考官方文件,這裡就不引申了,一般情況下,dba角色許可權足夠。
c>. 迴圈在所有複製環境涉及的資料庫,執行上述操作即可。2、建立一個或多個資料庫鏈
注意,為什麼要說一個或多個呢?因為情況不同,處理方式也不同的嘛!不過,無論如何,source端到target端必須建立一個資料庫鏈,這個是毋庸置疑的,其中,如果存在下列情況,則target端到source端也需要建立資料庫鏈:
- 雙向複製環境
- Data Pump 通過網路方式匯入
- Target 端做為downstream捕獲資料庫
- RMAN duplicate 或convert database
上述4種情況下需要建立資料庫鏈是因為POST_INSTANTIATION_SETUP過程的instantiation_scn引數不能為空,該值由dbms_apply_adm.set_global_instantiation_scn過程獲得,而SET_GLOBAL_INSTANTIATION_SCN過程執行需要資料庫鏈。該資料庫鏈必須建立於RMAN例項化之後,執行POST_INSTANTIATION_SETUP過程之前。
如果捕獲資料庫是第三方資料庫,則還需要下列兩個資料庫鏈:第三方資料庫到source資料庫和第三方資料庫到target資料庫。
上述提到的資料庫鏈均是建立於strmadmin下。
3、建立Directory物件(如果需要的話)
本步非必須,一般下列情況的話,需要建立相應的Directory物件:
- 執行過程時沒有直接建立,而是選擇生成建立指令碼,需要在源端建立一個Directory以儲存生成的指令碼。
- 決定通過Data Pump初始化資料的話,需要在源端和目標端分別建立一個Directory以儲存和讀取生成的dmp檔案。
啥?你不知道什麼是Directory?簡單來講,也是oracle10g新特性之一,作業系統目錄在oracle中一個別名,藉此可以通過oracle讀寫作業系統目錄中檔案。Directory物件有READ/WRITE兩種許可權,可以通過grant命令授予需要訪問的使用者。
4、將源端資料庫置於歸檔模式
確認source資料庫處於archivelog 模式,可用如下命令:
JSSWEB> archive log list;
Database log mode No Archive Mode
Automatic archival Disabled
Archive destination /opt/ora10g/product/10.2.0/db_1/dbs/arch
Oldest online log sequence 9
Current log sequence 11如果不是,可按下列方式操作修改資料庫為歸檔模式。
JSSWEB> startup mount
ORACLE instance started.
Total System Global Area 524288000 bytes
Fixed Size 2073984 bytes
Variable Size 163580544 bytes
Database Buffers 352321536 bytes
Redo Buffers 6311936 bytes
Database mounted.
JSSWEB> alter database archivelog ;
Database altered.
JSSWEB> alter system set log_archive_dest_1=¨location=/data/oradata/jssweb/archive/¨;
System altered.
JSSWEB> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /data/oradata/jssweb/archive/
Oldest online log sequence 9
Next log sequence to archive 11
Current log sequence 11
JSSWEB> alter database open;
Database altered.另外注意,如果複製是雙向,那麼目標資料庫必須也是處於歸檔模式的喲。
5、配置日誌檔案傳輸(下游捕獲專用)
本地捕獲可以直接讀取日誌檔案,因此不需要這一步驟,如果是下游捕獲的話,你就需要一些方式將redologs傳送至捕獲資料庫。
事實上,傳送方式還是老一套,如果你看過三思的“ 一步一步學Dataguard ” 系列,那麼對於配置日誌傳輸必然已經相當熟練了。這裡只當是重溫吧~~
a>. 設定log_archive_dest_n引數除了本地歸檔的log_archive_dest_n外,另外設定一個遠端的歸檔路徑。log_archive_dest_n也有幾個引數,通常情況下,你最少需要指定service(即tnsnames中配置的遠端服務連線名),其它諸如ARCH/LGWR ASYNC/LGWR SYNC、VALID_FOR、DB_UNIQUE_NAME之類
b>. 設定log_archive_dest_state_n引數該引數與log_archive_dest_n引數一一對應,共有4個可選值:
- ENABLE :預設值,表示允許傳輸服務。
- DEFER :該屬性指定對應的log_archive_dest_n引數有效,但暫不使用。
- ALTERNATE :禁止傳輸,但是如果其它相關的目的地的連線通通失敗,則它將變成enable。
- RESET :功能與DEFER屬性類似,不過如果傳輸目的地之前有過錯誤,它會清除其所有錯誤資訊。
將log_archive_dest_n對應的log_archive_dest_state_n引數設定為enable.
c>. 設定log_archive_config引數設定接收和傳送redologs的資料庫。如果計劃啟用downstream捕獲的話,需要設定該引數。
6、配置資料庫初始化引數
主要包括以下幾項(源和目標端都需要設定的喲):
- COMPATIBLE :資料庫的相容版本,不能低於10.2.0.1
- GLOBAL_NAMES :必須設定為true
- JOB_QUEUE_PROCESSES :設定例項最大同時啟用的job程式數,不能小於2
- STREAMS_POOL_SIZE :為streams分配適當的快取區。注意引數值不能為0(或者sga_target引數值不為0)。至於說設定多大才合適,可以參考V$STREAMS_POOL_ADVICE檢視。
除此之外,LOG_ARCHIVE_CONFIG/LOG_ARCHIVE_DEST_N/LOG_ARCHIVE_DEST_STATE_N這三個引數前面已經介紹過,這裡就不多說了。
下列各項為非強制引數,可根據實際情況進行設定:
- SGA_TARGET :做為10g新特性之一,Oracle建議設定sga_target引數以達到自動分配sga中各記憶體區大小的目的。streams_pool_size當然也在其中,詳細可參考:第一部分-傳播程式。
- UNDO_RETENTION :設定undo資訊在undo表空間的儲存時間,預設值是900秒。關於undo相關資料可以參考三思系列筆記:全面學習Oracle flashback特性
======================================
一步一步學Streams(9) 第二部分 實踐之準備工作(1)明確需求
一步一步學Streams(8) 第一部分 基礎之應用程式(下)
一步一步學Streams(7) 第一部分 基礎之應用程式(中)
一步一步學Streams(6) 第一部分 基礎之應用程式(上)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7607759/viewspace-557408/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 一步一步學Streams(14) 第二部分 實踐之移除Streams複製環境
- 一步一步學Streams(11) 第二部分 實踐之建立全庫複製(1)準備工作
- 一步一步學Streams(12) 第二部分 實踐之建立全庫複製(2)執行建立
- 一步一步學Streams(13) 第二部分 實踐之建立全庫複製(3)測試
- 一步一步搭建oracle 11gR2 rac+dg之環境準備(二)Oracle
- 一步一步學DataGuard(26)RMAN備份來建立之實踐2
- 一步一步學DataGuard(25)RMAN備份來建立之實踐
- 一步一步學Streams(1) 第一部分 基礎之概述篇
- 一步一步學Streams(3) 第一部分 基礎之捕獲程式
- 一步一步學Streams(5) 第一部分 基礎之傳播程式(下)
- 一步一步學Streams(6) 第一部分 基礎之應用程式(上)
- 一步一步學Streams(7) 第一部分 基礎之應用程式(中)
- Newbe.Claptrap 框架入門,第一步 —— 開發環境準備APT框架開發環境
- 一步一步搭建 PHP 伺服器環境PHP伺服器
- Flutter學習系列之Flutter上手環境準備Flutter
- 一步一步學RMAN第六篇 實戰RMAN備份
- Oracle Stream實戰(2)—測試環境準備(一)Oracle
- 一步一步學RMAN第二篇 RMAN命令知多少
- (1)環境準備
- 一步一步學DataGuard(2)基礎之術語再瞭解大概
- 學習Java的第一步,配置電腦環境Java
- Flutter(一) 環境準備Flutter
- 0. 準備環境
- 一步一步學DataGuard(5)物理standby之建立示例
- 一步一步學DataGuard(14)邏輯standby之switchover
- .NET Core On Mac 第一步,配置環境Mac
- 跟我一步一步用Docker搭建Beimi遊戲服務端開發環境Docker遊戲服務端開發環境
- SQL菜鳥筆記之第一篇 實驗環境的搭建及準備工作SQL筆記
- 生產環境oracle10g升級至11g準備工作Oracle
- 一步一步學Silverlight 2系列(14):資料與通訊之WCF
- OCS 2007 R2環境搭建DC上的準備工作
- 一步一步學ROP之Android ARM 32位篇Android
- 一步一步學ROP之linux_x64篇Linux
- 一步一步學ROP之linux_x86篇Linux
- 一步一步學DataGuard(13)邏輯standby之建立示例
- 一步一步學DataGuard(15)邏輯standby之failoverAI
- 準備Python環境學習OpenCV的使用PythonOpenCV
- 學前準備工作