??? 假設(shè)當(dāng)前架構(gòu)為一個(gè)primary+二個(gè)物理standby,我們轉(zhuǎn)換其中一個(gè)物理standby 成為邏輯standby,專用于查詢服務(wù),另一個(gè)物理standby 用于執(zhí)行備份操作及提供災(zāi)備。這里我們直接借用之前創(chuàng)建的物理standby,只演示創(chuàng)建過(guò)程,我們假設(shè)當(dāng)前primary 數(shù)據(jù)庫(kù)狀態(tài)良好,沒(méi)有任何不被邏輯standby 支持的對(duì)象或類型。
??? SQL> set sqlprompt JSSWEB> --表示primary 數(shù)據(jù)庫(kù)
??? SQL> set sqlprompt JSSPDG> --表示物理standby
??? SQL> set sqlprompt JSSLDG> --表示邏輯standby
??? 此步跳過(guò),如有不明,具體可參考第二部分。
???
JSSLDG>alter database recover managed standby database cancel;
??? 數(shù)據(jù)庫(kù)已更改。
二、設(shè)置primary數(shù)據(jù)庫(kù)
??? JSSWEB>execute dbms_logstdby.build;
??? PL/SQL 過(guò)程已成功完成。
三、轉(zhuǎn)換物理standby為邏輯standby
??? 執(zhí)行下列語(yǔ)句,轉(zhuǎn)換物理standby 為邏輯standby:
??? JSSLDG>show parameter db_name;
??? NAME???????????????? TYPE??????? VALUE
??? -------------------- ----------- --------------------
??? db_name????????????? string????? jssweb
?
??? JSSLDG>alter database recover to logical standby jssldg;
???
數(shù)據(jù)庫(kù)已更改。
?
??? JSSLDG>shutdown immediate
??? ORA-01507:
未裝載數(shù)據(jù)庫(kù)
??? ORACLE
例程已經(jīng)關(guān)閉。
?
??? JSSLDG>startup mount;
??? ORACLE
例程已經(jīng)啟動(dòng)。
??? Total System Global Area 167772160 bytes
??? Fixed Size 1289484 bytes
??? Variable Size 79692532 bytes
??? Database Buffers 79691776 bytes
??? Redo Buffers 7098368 bytes
???
數(shù)據(jù)庫(kù)裝載完畢。
?
??? 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 數(shù)據(jù)庫(kù)一致。五、調(diào)整邏輯standby初始化參數(shù)
??? JSSLDG>alter system set log_archive_dest_1='location=E:\ora
???
系統(tǒng)已更改。
?
??? JSSLDG>alter system set log_archive_dest_2='location=E:\ora
???
系統(tǒng)已更改。
??? JSSLDG>alter database add standby logfile group 4 ('E:\ora
???
數(shù)據(jù)庫(kù)已更改。
?
??? JSSLDG>alter database add standby logfile group 5 ('E:\ora
???
數(shù)據(jù)庫(kù)已更改。
?
??? JSSLDG>alter database add standby logfile group 6 ('E:\ora
???
數(shù)據(jù)庫(kù)已更改。
?
??? JSSLDG>select member from v$logfile;
??? MEMBER
??? ----------------------------------------------------------
??? E:\ORA
??? E:\ORA
??? E:\ORA
??? E:\ORA
??? E:\ORA
??? E:\ORA
???
已選擇
6
行。
六、打開(kāi)邏輯standby
??? 由于邏輯standby 與primary 數(shù)據(jù)庫(kù)事務(wù)并不一致,因此第一次打開(kāi)時(shí)必須指定resetlogs 選擇,如下:
???
SQL> alter database open resetlogs;
??? 數(shù)據(jù)庫(kù)已更改。
??? SQL> alter database start logical standby apply immediate;
??? 數(shù)據(jù)庫(kù)已更改。
??? JSSWEB> select * from jss.b;
??? ID
??? ----------
??? 1
??? 2
??? 3
???
已選擇
3
行。
?
??? JSSWEB> insert into jss.b values (4);
???
已創(chuàng)建
1
行。
??? JSSWEB> insert into b values (5);
???
已創(chuàng)建
1
行。
??? JSSWEB> insert into b values (6);
???
已創(chuàng)建
1
行。
??? JSSWEB> commit;
???
提交完成。
?
??? JSSWEB> alter system switch logfile;
???
系統(tǒng)已更改。
??? JSSPDG>alter database recover managed standby database cancel;
???
數(shù)據(jù)庫(kù)已更改。
?
??? JSSPDG>alter database open read only;
???
數(shù)據(jù)庫(kù)已更改。
?
??? JSSPDG>select * from jss.b;
??? ID
??? ----------
??? 1
??? 2
??? 3
??? 4
??? 5
??? 6
???
已選擇
6
行。
??? JSSLDG>select * from jss.b;
??? ID
??? ----------
??? 1
??? 2
??? 3
??? 4
??? 5
??? 6
??? 已選擇6 行。
??? 提示:細(xì)心觀察,發(fā)現(xiàn)邏輯standby 有一點(diǎn)很好,從primary 接收到的redo 文件,應(yīng)用過(guò)之后會(huì)自動(dòng)刪除,節(jié)省磁盤空間。
??? 對(duì)于相機(jī)拍照而言,有種傻瓜相機(jī)功能強(qiáng)大而操作簡(jiǎn)便,而對(duì)于素描,即使是最簡(jiǎn)單的畫法,也需要相當(dāng)?多的練習(xí)才能掌握。這個(gè)細(xì)節(jié)是不是也說(shuō)明邏輯standby 相比物理standby 需要操作者擁有更多的操作技能呢?