一步一步學DataGuard(13)邏輯standby之建立示例
假設當前架構為一個primary+二個物理standby,我們轉換其中一個物理standby成為邏輯standby,專用於查詢服務,另一個物理standby用於執行備份操作及提供災備。這裡我們直接借用之前建立的物理standby,只演示建立過程,我們假設當前primary資料庫狀態良好,沒有任何不被邏輯standby支援的物件或型別。
為了方便區分當前操作的資料庫,我們設定一下操作符:
SQL> set sqlprompt JSSWEB> --表示primary資料庫
SQL> set sqlprompt JSSPDG> --表示物理standby
SQL> set sqlprompt JSSLDG> --表示邏輯standby
一、 建立物理standby
此步跳過,如有不明,具體可參考第二部分。
提示:表忘記暫停該standby的redo應用
JSSLDG>alter database recover managed standby database cancel;
資料庫已更改。
二、 設定primary資料庫
由於有前期建立物理standby時的基礎,此處primary資料庫的初始化引數可以不做修改,最重要的是不要忘記生成LogMiner字典資訊。
JSSWEB>execute dbms_logstdby.build;
PL/SQL 過程已成功完成。
三、 轉換物理standby為邏輯standby
執行下列語句,轉換物理standby為邏輯standby:
JSSLDG>show parameter db_name;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_name string jssweb
JSSLDG> alter database recover to logical standby jssldg;
資料庫已更改。
JSSLDG>shutdown immediate
ORA-01507: 未裝載資料庫
ORACLE 例程已經關閉。
JSSLDG>startup mount;
ORACLE 例程已經啟動。
Total System Global Area 167772160 bytes
Fixed Size 1289484 bytes
Variable Size 79692532 bytes
Database Buffers 79691776 bytes
Redo Buffers 7098368 bytes
資料庫裝載完畢。
JSSLDG>show parameter db_name;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_name string JSSLDG
JSSLDG>select database_role from v$database;
DATABASE_ROLE
----------------
LOGICAL STANDBY
四、 重建邏輯standby的密碼檔案
E:\ora10g>orapwd file=e:\ora10g\product\10.2.0\db_1\database\PWDjssldg.ora password=verysafe entries=30
注意保持sys密碼與primary資料庫一致。
五、 調整邏輯standby初始化引數
注意歸檔檔案路徑不要衝突:
JSSLDG>alter system set log_archive_dest_1='location=E:\ora10g\oradata\JSSLDG\arc\ valid_for=(online_logfiles,all_roles) db_unique_name=JSSLDG';
系統已更改。
JSSLDG>alter system set log_archive_dest_2='location=E:\ora10g\oradata\JSSLDG\std\ valid_for=(standby_logfiles,standby_role) db_unique_name=JSSLDG';
系統已更改。
另外,由於之前我們建立JSSLDG時並未建立standby redologs,但對於邏輯standby的sql應用,standby redologs是必須的,因此我們在此處也要為該standby建立幾組standby redologs:
JSSLDG>alter database add standby logfile group 4 ('E:\ora10g\oradata\JSSLDG\standbyrd01.log') size 20m;
資料庫已更改。
JSSLDG>alter database add standby logfile group 5 ('E:\ora10g\oradata\JSSLDG\standbyrd02.log') size 20m;
資料庫已更改。
JSSLDG>alter database add standby logfile group 6 ('E:\ora10g\oradata\JSSLDG\standbyrd03.log') size 20m;
資料庫已更改。
JSSLDG>select member from v$logfile;
MEMBER
----------------------------------------------------------
E:\ORA10G\ORADATA\JSSLDG\REDO01.LOG
E:\ORA10G\ORADATA\JSSLDG\REDO02.LOG
E:\ORA10G\ORADATA\JSSLDG\REDO03.LOG
E:\ORA10G\ORADATA\JSSLDG\STANDBYRD01.LOG
E:\ORA10G\ORADATA\JSSLDG\STANDBYRD02.LOG
E:\ORA10G\ORADATA\JSSLDG\STANDBYRD03.LOG
已選擇6行。
六、 開啟邏輯standby
由於邏輯standby與primary資料庫事務並不一致,因此第一次開啟時必須指定resetlogs選擇,如下:
SQL> alter database open resetlogs;
資料庫已更改。
然後執行下列sql命令應用redo資料:
SQL> alter database start logical standby apply immediate;
資料庫已更改。
七、 檢查一下
首先在primary資料庫執行:
JSSWEB> select *from jss.b;
ID
----------
1
2
3
已選擇3行。
JSSWEB> insert into jss.b values (4);
已建立 1 行。
JSSWEB> insert into b values (5);
已建立 1 行。
JSSWEB> insert into b values (6);
已建立 1 行。
JSSWEB> commit;
提交完成。
JSSWEB> alter system switch logfile;
系統已更改。
查詢物理standby的同步情況,由於物理standby處於mount狀態,無法直接查詢,因此我們需要先暫停redo應用,然後以read only模式開啟資料庫再執行查詢:
JSSPDG>alter database recover managed standby database cancel;
資料庫已更改。
JSSPDG>alter database open read only;
資料庫已更改。
JSSPDG>select * from jss.b;
ID
----------
1
2
3
4
5
6
已選擇6行。
查詢邏輯standby的同步情況:
JSSLDG>select * from jss.b;
ID
----------
1
2
3
4
5
6
已選擇6行。
提示:細心觀察,發現邏輯standby有一點很好,從primary接收到的redo檔案,應用過之後會自動刪除,節省磁碟空間。
Ok,邏輯standby也建立完成了,我們再回過頭來回憶回憶我們最開始的假設:
對於相機拍照而言,有種傻瓜相機功能強大而操作簡便,而對於素描,即使是最簡單的畫法,也需要相當多的練習才能掌握。這個細節是不是也說明邏輯standby相比物理standby需要操作者擁有更多的操作技能呢?
現在看起來,操作呢相比物理standby是稍稍複雜了一點點,但機理呢與物理standby大同小異,功能呢也不見的就比物理standby強到哪裡,主要是前期準備工作略嫌繁瑣(尤其你的資料庫系統比較巨集大時,畢竟有那麼多支援和不支援的資料型別/操作/語句需要dba手工處理),這麼看來,畫畫的彷彿是要比搞攝影的更講究基本功啊,不過事物要辯證著看,愛好攝影的朋友千萬莫因此而感\到沮喪,從實用角度看,搞攝影不知要比畫畫強多少倍啊,效率在那擺著呢,要出片子按下快門就成啦!對於standby也是如此,你究竟是想要物理的,還是想要邏輯的呢,這是個問題~~~~~
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7607759/viewspace-217027/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 一步一步學DataGuard(14)邏輯standby之switchover
- 一步一步學DataGuard(5)物理standby之建立示例
- 一步一步學DataGuard(15)邏輯standby之failoverAI
- 一步一步學DataGuard(22)Standby之選擇資料保護模式模式
- DataGuard搭建邏輯StandBy
- 一步一步學DataGuard(25)RMAN備份來建立之實踐
- 一步一步學DataGuard(26)RMAN備份來建立之實踐2
- 一步一步學DataGuard(2)基礎之術語再瞭解大概
- dataguard回顧之安裝——建立邏輯備庫
- 【DG】[三思筆記]一步一步學DataGuard筆記
- [三思筆記]一步一步學DataGuard.zip筆記
- 邏輯Standby建立及日常管理,優化優化
- 一步一步學Streams(13) 第二部分 實踐之建立全庫複製(3)測試
- 配置 Oracle 10g 單例項物理dataguard和邏輯standbyOracle 10g單例
- Oracle 10g 邏輯Standby 建立及注意點Oracle 10g
- dataguard之邏輯備庫表空間不足
- 建立邏輯STANDBY資料庫——DATA GUARD概念和管理資料庫
- 物理standby和邏輯standby的區別
- 【DATAGUARD 學習】使用duplicate 建立物理standby 資料庫資料庫
- 一步一步學ROP之Android ARM 32位篇Android
- 一步一步學ROP之linux_x64篇Linux
- 一步一步學ROP之linux_x86篇Linux
- 4 Creating a Logical Standby Database 建立邏輯備庫Database
- 一步一步學Streams(12) 第二部分 實踐之建立全庫複製(2)執行建立
- 一步一步分析vue之observeVue
- 一步一步學spring bootSpring Boot
- 【AIX 命令學習】建立邏輯卷!AI
- 一步一步分析vue之$mount(1)Vue
- 一步一步學RMAN第11篇 rman筆記之綜述筆記
- 一步一步HTML5粒子編輯器HTML
- dataguard之邏輯備庫移動資料檔案
- oracle 之dataguard standby 切換Oracle
- ORACLE10G 物理standby轉為邏輯standbyOracle
- 一步一步分析vue之_data屬性Vue
- 【DATAGUARD】DG系列之11g邏輯備庫的搭建
- [轉帖]Oracle9i Standby (Dataguard) 建立Oracle
- 關於建立DataGuard Physical Standby資料庫資料庫
- 第13章 邏輯日誌