Oracle Dataguard的3種建立方法
一) 總介:
1. 冷備法
優點:操作比較簡單。
缺點:操作過程需要停止主庫服務。
簡介:停止主庫後,直接copy主機的所有資料檔案,控制檔案,歸檔日誌檔案,引數檔案(spfile)到備機的相同路徑下,再啟動主、備庫,然後修改相關配置檔案完成主備自動同步。
2. 熱備法
優點:無需停止主庫服務。
缺點:操作比較複雜,操作過程對主庫效能影響比較大。
簡介:在主庫開啟狀態下把主庫的資料檔案一個一個熱備出來,然後連同控制檔案,歸檔日誌檔案,引數檔案(spfile)等一起復制到備機相同路徑下,再啟動備庫並執行recover,然後修改相關配置檔案完成主備自動同步。
3. RMAN複製法
優點:無需停止主庫服務,操作過程對主庫效能影響比較小。
缺點:操作比較複雜。
簡介:在主庫開啟狀態下執行rman,對主庫進行全庫備份,然後把備份集與引數檔案(spfile)一起復制到備機,再啟動備庫到nomount狀態後利用rman在備機上進行for standby的duplicate,然後修改相關配置檔案完成主備自動同步。
無論上述何種方法,在開始之前,都必須先確認主庫已正常執行,備機的作業系統,磁碟分割槽,oracle版本都必須與主機完全一致,備機上的oracle需要已安裝好但不用建庫。主、備機的網路都必須已聯通,並能夠在客戶端使用putty或其他遠端登陸工具通過ssh方式登陸(本文內所講的“登陸”都是指:使用putty通過ssh方式以oracle賬號登陸到主機或者備機的linux系統)。
本文假設主機ip地址是192.168.0.1,備機ip地址是192.168.0.2,oracle的資料檔案,控制檔案,聯機日誌檔案的存放路徑統一為:/opt/oracle/oradata/orcl/,歸檔日誌的存放路徑為:/opt/oracle/oradata/orcl/archive/,ORACLE_BASE目錄為:/opt/oracle ,ORACLE_HOME目錄為:/opt/oracle/product/9ir2,ORACLE_SID=orcl,分割槽/opt由於要存放oracle的所有檔案與備份集,所以其容量要足夠大。
確認主庫是否開啟了歸檔模式。
sqlplus‘/as sysdba’
SQL>archive log list
Database log mode Archive Mode
Automatic archival Enabled
若如上顯示,則說明已開啟了歸檔模式,那麼從現在開始到最後dataguard建立完畢的整個過程,對主庫都沒有任何影響,即不會影響主庫的正常執行。
如果與上面所示不同,則需要手工開啟歸檔模式。
開啟歸檔模式方法:
SQL>alter system set log_archive_start=true scope=spfile;
SQL>shutdown immediate;
SQL>startup mount;
SQL>alter database archivelog;
SQL>alter database open;
二)方法一詳細操作步驟:
(冷備法)
1. 為備庫建立控制檔案
登陸主庫後,執行:
sqlplus ‘/assysdba’
SQL>alter database create standby controlfile as '/opt/oracle/control01.ctl';
SQL> exit
cp control01.ctl control02.ctl
cp control01.ctl control03.ctl
2. 複製主庫檔案到備機
1)先登陸備庫,執行:
mkdir –p /opt/oracle/oradata/orcl
mkdir –p /opt/oracle/oradata/orcl/archive
mkdir –p /opt/oracle/admin/orcl/bdump
mkdir –p /opt/oracle/admin/orcl/cdump
mkdir –p /opt/oracle/admin/orcl/udump
2)然後登陸主庫,執行:
sqlplus ‘/as sysdba’
SQL> shutdown immediate;
SQL> exit
然後複製檔案到備機的相同目錄。
cd
scp control0*.ctl 192.168.0.2:/opt/oracle/oradata/orcl/
然後需要輸入oracle密碼,後面的每次scp都一樣需要輸入此密碼
cd /opt/oracle/oradata/orcl/
scp *.dbf 192.168.0.2: /opt/oracle/oradata/orcl/
cd /opt/oracle/oradata/orcl/archive/
scp *.dbf 192.168.0.2: /opt/oracle/oradata/orcl/archive/
3. 配置備庫
1)生成密碼檔案。
登陸備庫後,執行:
cd $ORACLE_HOME/dbs
orapwd file=orapworcl password=xxxxxx entries=5
2)配置備機資料庫的監聽器。
登陸備庫後,執行:
cd $ORACLE_HOME/network/admin
scp 192.168.0.1:/opt/oracle/product/9ir2/network/admin/listener.oralistener.ora
scp 192.168.0.1:/opt/oracle/product/9ir2/network/admin/tnsnames.oratnsnames.ora
修改listener.ora中的“HOST =”後面的內容為備機的IP地址,然後啟動監聽
lsnrctl start
4. 啟動備庫登陸備庫後,執行:
sqlplus ‘/as sysdba’
SQL> startupnomount
SQL> alter system set service_names = standby;
SQL> alter system set fal_client=standby;
SQL> alter system set fal_server=orcl;
SQL> alter system set standby_file_management=auto;
SQL> alter database mount standby database;
建立3組standby redo log:
SQL> alter database add standby logfile group 4
2 '/opt/oracle/oradata/orcl/redo_stb01.log' size 100m;
SQL> alter database add standby logfile group 5
2 '/opt/oracle/oradata/orcl/redo_stb02.log' size 100m;
SQL> alter database add standby logfile group 6
2 '/opt/oracle/oradata/orcl/redo_stb03.log' size 100m;
啟動自動應用歸檔日誌:
SQL> alter database recover managed standby database disconnect from session;
5. 啟動主庫登陸主庫後,執行:
sqlplus ‘/as sysdba’
SQL>startup
建立3組standby redo log:
SQL> alter database add standby logfile group 4
2 '/opt/oracle/oradata/orcl/redo_stb01.log' size 100m;
SQL> alter database add standby logfile group 5
2 '/opt/oracle/oradata/orcl/redo_stb02.log' size 100m;
SQL> alter database add standby logfile group 6
2 '/opt/oracle/oradata/orcl/redo_stb03.log' size 100m;
SQL> alter system set log_archive_dest_2 = 'service=standby lgwrreopen=60';
SQL> alter system set fal_server=standby;
SQL> alter system set fal_client=orcl;
三)方式二詳細操作步驟:
(熱備法)
由於方法二與方法一大部分相同,只有第2-2小點不同,這裡只列出不同點:
登陸主庫,熱備表空間:
sqlplus ‘/as sysdba’
SQL> alter tablespacesystem begin backup;
SQL> !cp /opt/oracle/oradata/orcl/system01.dbf/opt/oracle/system01.dbf
若system表空間有第2個數據檔案system02.dbf,那麼還需要:
SQL> !cp /opt/oracle/oradata/orcl/system02.dbf/opt/oracle/system02.dbf
SQL> alter tablespacesystem end backup;
………………其他的表空間都按上面方法進行熱備
………………SQL>alter database create standby controlfile as '/opt/oracle/control01.ctl';
SQL> exit
cp control01.ctl control02.ctl
cp control01.ctl control03.ctl
然後將備份出來的所有資料檔案(注意不是原始資料檔案)、控制檔案等複製到備機上去
cd
scp control0*.ctl 192.168.0.2:/opt/oracle/oradata/orcl/
scp *.dbf 192.168.0.2: /opt/oracle/oradata/orcl/
cd /opt/oracle/oradata/orcl/archive/
scp *.dbf 192.168.0.2: /opt/oracle/oradata/orcl/archive/
後面的步驟就與方法一都相同了。
四)方法三詳細操作步驟:
(RMAN複製法)
1. 利用RMAN備份主庫
先確定可以執行rman命令:
rman target / nocatalog
Recovery Manager: Release 9.2.0.6.0- Production
Copyright(c) 1995, 2002, Oracle Corporation. Allrights reserved.
connectedto target database: ORC1 (DBID=1236509999)
usingtarget database controlfile instead of recovery catalog
RMAN>
出現上面所示,說明可以正常執行rman命令,否則,請檢查環境變數,確保oracle安裝目錄被優先搜尋。
如:PATH=$ORACLE_HOME/bin:$PATH
若在環境變數定義檔案.bash_profile中的最後增加上面這一行,可以保證oracle的安裝目錄被優先搜尋。
假如存放資料庫備份集的路徑是:/opt/back
編輯(vi)一個空白的文字檔案,所在路徑及檔名為/opt/oracle/rmanstb,將下面紅色程式碼加入到rmanstb中去:
run{
allocatechannel dev1 type disk;
backup
incremental level 0
filesperset=1
format '/opt/back/dbbak_%s_%p_%t'
database;
backupformat '/opt/back/ctrlbak_%s_%p_%t' current controlfile for standby;
sql'alter system archive log current';
backupfilesperset=40
format '/opt/back/bakset/logbak_%s_%p_%t'
archivelog all delete input;
releasechannel dev1;
}
然後執行下面的命令開始對主庫進行rman備份:
rman target / nocatalog cmdfile /opt/oracle/rmanstbmsglog /opt/oracle/rmanstb.log
此時可以另外開啟一個登入視窗,執行tail –f /opt/oracle/rmanstb.log
檢查備份過程是否正常,確保備份正確完成。
2. 備機環境準備
1)登陸備機後,從主機拷貝spfile檔案到備機的相同路徑下。
cd $ORACLE_HOME/dbs
scp 192.168.0.1:/opt/oracle/product/9ir2/dbs/spfileorcl.oraspfileorcl.ora
2)建立資料庫密碼檔案。
cd $ORACLE_HOME/dbs
orapwd file=orapworcl password=xxxxxx entries=5
3)配置備機資料庫的監聽器。
cd $ORACLE_HOME/network/admin
scp 192.168.0.1:/opt/oracle/product/9ir2/network/admin/listener.oralistener.ora
scp 192.168.0.1:/opt/oracle/product/9ir2/network/admin/tnsnames.oratnsnames.ora
修改listener.ora中的“HOST =”後面的內容為備機的IP地址,然後啟動監聽
lsnrctl start
4)建立資料檔案,歸檔日誌,控制檔案以及各種系統日誌檔案的目錄
mkdir –p /opt/oracle/oradata/orcl
mkdir –p /opt/oracle/oradata/orcl/archive
mkdir –p /opt/oracle/admin/orcl/bdump
mkdir –p /opt/oracle/admin/orcl/cdump
mkdir –p /opt/oracle/admin/orcl/udump
5)啟動備庫到nomount狀態
sqlplus ‘/as sysdba’
SQL> startup nomount
SQL> alter system set service_names = standby;
SQL> alter system set fal_client=standby;
SQL> alter system set fal_server=orcl;
SQL> alter system set standby_file_management=auto;
6)將主機上的rman備份集拷貝到備機的相同路徑下。
cd /opt/back/
scp 192.168.0.1:/opt/back/*bak* .
3. 測試主機與備機之間通訊是否正常
1)編輯主機的tnsnames.ora,增加到備機資料庫的連線串,將下面這段紅色程式碼新增進去即可:
STANDBY =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS= (PROTOCOL = TCP)(HOST = 192.168.0.2)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER= DEDICATED)
(SERVICE_NAME = orcl)
)
)
然後測試與備機資料庫通訊是否通暢:
sqlplus /nolog
SQL> conn sys/[email protected] as sysdba
若能夠連線,證明與備機資料庫通訊正常。
2)登陸備機,測試與主機資料庫通訊是否通暢:
sqlplus /nolog
SQL> conn sys/[email protected] as sysdba
若能夠連線,證明與主庫通訊正常。
4. 在備機上生成dataguard
1)登陸備機,將主庫上的歸檔日誌拷貝過來,放置路徑要與主庫一致。
cd /opt/oracle/oradata/orcl/archive/
scp 192.168.0.1:/opt/oracle/oradata/orcl/archive/*.dbf.
2)在備機上使用rman從備份集duplicate出一個dataguard
rman target sys/[email protected] nocatalog auxiliary sys/[email protected]
RMAN>run
{
allocate auxiliary channel dup1 type disk;
allocate auxiliary channel dup2 type disk;
duplicate target database for standby nofilenamecheck dorecover;
}
此過程花費時間會比較長,請注意觀察是否有錯誤產生,若遇到錯誤請檢查是否將命令寫錯,直到成功完成為止。
5. 備機資料庫的自動同步
1)分別在主機與備機的資料庫中建立3組standby redo log。
SQL> alter database add standby logfile group 4
2 '/opt/oracle/oradata/orcl/redo_stb01.log' size 100m;
SQL> alter database add standby logfile group 5
2 '/opt/oracle/oradata/orcl/redo_stb02.log' size 100m;
SQL> alter database add standby logfile group 6
2 '/opt/oracle/oradata/orcl/redo_stb03.log' size 100m;
2)登陸備機,將資料庫置於自動同步狀態。
SQL> recover standby database;
檢查所需要的歸檔日誌是否是主庫還未產生的,若不是,請從主機拷貝所需要的archivelog到備機,然後輸入“auto”。
SQL> alter database recover managed standby database disconnectfrom session;
3)登陸主機,修改傳送歸檔日誌引數。
SQL> alter system set log_archive_dest_2 = 'service=standby lgwrreopen=60';
SQL> alter system set fal_server=standby;
SQL> alter system set fal_client=orcl;
附錄:
1)如何啟動備機資料庫(Dataguard)
登陸備機,執行:
SQL> startup nomount;
SQL> alter database mount standby database;
SQL> alter database recover managed standby database disconnectfrom session;
2)檢查主機與備機的資料庫是否同步。
分別登陸主機與備機,都執行下面這條SQL:
SQL> select max(sequence#) from v$log_history;
若得到的數字相等,說明主機與備機的資料庫已經同步。
3)測試主庫的歸檔日誌能否自動傳送到備機。
登陸主庫,進行手工歸檔:
SQL> alter system archive log current;
再次檢查主機與備機的資料庫是否同步,若依然保持同步,說明主庫的歸檔日誌能自動傳送到備機。到此,Dataguard就已建立成功!!
但是別忘了,要定時清理備機上的歸檔日誌,以免時間長了將磁碟撐爆,最好使用crontab來定時清理,可以參考如下的清理指令碼:
find /opt/oracle/oradata/orcl/archive/*.dbf –cmin+60 –exec rm {} \;
4)啟用備機資料庫
當主機硬體或者作業系統故障導致資料庫無法啟動時,可啟用Dataguard。
登陸備機,執行:
SQL> alter database recover managed standby database cancel;
SQL> alter database activate physical standby database skip standby logfile;
SQL> shutdown immediate;
SQL> startup
然後修改監聽(更改listener.ora中HOST=為原主庫的服務IP)並重啟之後,原來的備機現在就開始扮演主機的角色了。
相關推薦
Oracle Dataguard的3種建立方法
一) 總介: 1. 冷備法 優點:操作比較簡單。 缺點:操作過程需要停止主庫服務。 簡介:停止主庫後,直接copy主機的所有資料檔案,控制檔案,歸檔日誌檔案,引數檔案(spfile)到備機的相同路徑下,再啟動主、備庫,然後
pandas.Series()的幾種建立方法
前些日子的數學建模,最近的kaggle比賽,再到現在做的一個小專案,發現pandas真是一個好東西,可惜之前不太會用,需要用的時候就去上網搜,效率極其低下,現在把這一部分知識過一遍,以便日後使用。今天的主題:pandas.Series()的幾種建立方法。 import numpy a
day030程序的兩種建立方法,驗證程序的空間隔離,join等待子程序
本節內容: 1.作業系統的簡單介紹 2.程序的兩種建立方法 3.程序之間是空間隔離的, 參考文章: 一、作業系統的簡單介紹 1、作業系統簡單介紹 作業系統就是一個協調、管理和控制計算機硬體資源和軟體資源的控制程式。 作業系統位於計算機硬體與應用軟體之間,本質也是一個軟體。 作業系統由作業系統的核心(
多執行緒的4種建立方法和對比
Java多執行緒實現方式 Java 多執行緒實現方式主要有四種,繼承Thread,實現Runnable,實現Callable,Future實現返回結果的多執行緒。 1. 繼承Thread類建立 public class MyThread extends Thre
java -- 多執行緒的兩種建立方法
什麼是程序? 什麼是執行緒? 個人感覺比較好理解 怎麼建立多執行緒? 建立多執行緒有兩種方式: 1, 繼承 Thread 類。 2, 實現 Runnable 介面 先來看看第一種方法
Singleton單例模式的幾種建立方法
建立單例類有以下幾種方式: 餓漢式 懶漢式(加同步鎖的懶漢式、加雙重校驗鎖的懶漢式、防止指令重排優化的懶漢式) 登記式單例模式 靜態內部類單例模式 列舉型別的單例模式 備註: 其中“列舉型別的單例模式。”最牛逼,可以防止反射呼叫構造器 餓漢式; public clas
LINUX下Oracle資料庫使用者建立方法詳解
本文例項分析了LINUX下Oracle資料庫使用者建立方法。分享給大家供大家參考,具體如下: 1)登入linux,以oracle使用者登入(如果是root使用者登入的,登入後用 su - oracle命令切換成oracle使用者) 2)首先要開啟監聽器命令如下:lsn
NSTimer的5種建立方法異同
NSTimer在IOS開發中會經常用到,現在將基本用法總結如下: 一、建立timer:有5種初始化方法 1.+ (NSTimer *)timerWithTimeInterval:(NSTimeInterval)ti invocation:(NSInvocation *
gluster使用——9種建立方法
gluster學習:gluster把多個brick組成一個volume。根據所要組成的volume的儲存方式不同,可以分為幾種不同的組成方式:1.Distributed:分散式的,一個檔案隨機儲存在一個的brick上,檔案不能拆分。此時volume的容量是所有brick的和,
String類物件兩種建立方法的區別
java將記憶體分為四種:堆、棧、方法體、程式計數器。一般基本資料型別存放在棧中,物件型別存放在堆中。建立String字串的方法兩種。無論哪種方法建立的字串都是不可以改變的。先來看方法一:String a="hello";這種方法建立字串後會有一個字串池來儲存內容,而棧空
執行緒池的簡介及四種建立方法
適用場景 像Web伺服器、資料庫伺服器、檔案伺服器、郵件伺服器等伺服器應用程式都是處理來自某些遠端來源的大量短小的任務。伺服器經常出現的情況是:單個任務處理的時間很短而請求的數量巨大。 簡單的構建方式 每當一個請求到達就為其建立一個新執行緒,然後在新執行緒中為其服務。 優點
java幾種建立字串的方法
JAVA有幾種建立字串的方法1)通過引用字元陣列來建立字串 char a[]={'A','b','c','E'}; String str1=new String(a); System.out.println(str1); 2)先定義後賦值 String str2; str2="this is a b
SQL Server 2017安裝錯誤:Polybase要求安裝Oracle JRE 7更新51或更高版本的兩種解決方法
安裝SQL Server 2017遇到的問題: 第一種方法是安裝jdk7,但是現在官方已經不提供下載了,我手邊只有jdk-x86,與我的部分軟體不相容,所以果斷放棄。索性採取第二種方式,等到以後需要Polybase再裝也不遲。 先看問題情況: 第一種解決方法: 也就是大家都推薦的,下
oracle怎麼增加自增列(我的兩種常用方法)
第一種在oracle資料庫中建立Sequences 和 Triggers(觸發器)兩個必須配合使用才可以生效。 舉例:Sequences 的建立,可以使用plsql工具新建。 -- Create sequence create sequence CMU_SYSTEM_LOG_LOG_I
Java中5種建立物件的方法,你知道幾種?
作為一個Java開發者,一種面向物件的語言,我們每天都建立很多物件。但後續我們開發中,採用了spring的依賴管理系統,我們就很少自己去建立物件了,全部交給容器去託管,那麼本篇文章回源塑本,講述一下java中能夠建立一個物件的5中方法。 本文最大的特色是,我不僅給出案例,
Revit 二次開發建立房間的兩種常用方法
1,使用閉合路徑 Transaction ts = new Transaction(doc, "BIM"); ts.Start(); try { Level l
HBase 建立表已經存在,刪除表又不存在的問題的兩種解決方法
錯誤提示資訊: 用list 檢視student表 發現沒有student表的資訊 通過Web Console 查看錶的資訊 也沒有表的任何資訊 用scan 檢視student表,發現也沒有任何的資訊 通過以上的嘗試,現在只能檢視Zoo
linux幾種建立程序的方法
在Linux中主要提供了fork、vfork、clone三個程序建立方法。 在linux原始碼中這三個呼叫的執行過程是執行fork(),vfork(),clone()時,通過一個系統呼叫表對映到sys_fork(),sys_vfork(),sys_clone(),再在這三個
5種建立型模式之:簡單工廠和工廠方法模式
以下為簡單工廠模式 簡單工廠模式解釋: 簡單工廠模式(Simple Factory Pattern)屬於類的創新型模式,又叫靜態工廠方法模式(Static FactoryMethod Pattern),是通過專門定義一個類來負責建立其他類的例項,被建立的例項通常都具有共同的父類。 簡單工廠
幾種應用程式呼叫Oracle儲存過程的方法
一、Java中呼叫帶Cursor的儲存過程: 儲存過程定義: PROCEDURE GET_CURSOR_RESULT2(CR OUT CURSOR_RESULT) IS BEGIN OPEN CR FOR select t1.id, t