- 論壇徽章:
- 0
|
盡管網(wǎng)上有很多Oracle Dataguard的配置教程,但不難發(fā)現(xiàn),很多采用的是rman duplicate這種方法,盡管此種方法較為簡(jiǎn)便。但在某種程度上,卻也誤導(dǎo)了初學(xué)者,雖說(shuō)也能配置成功,但只知其
盡管網(wǎng)上有很多Oracle Dataguard的配置教程,但不難發(fā)現(xiàn),很多采用的是rman duplicate這種方法,盡管此種方法較為簡(jiǎn)便。但在某種程度上,卻也誤導(dǎo)了初學(xué)者,雖說(shuō)也能配置成功,但只知其然不知其所以然,Dataguard的本質(zhì)沒(méi)有吃透,也不利于其維護(hù)和調(diào)優(yōu)。
本配置文檔基于Oracle官方文檔,目的在于加深大家對(duì)于Dataguard的了解。
本配置的結(jié)果是最大性能模式下的異步傳輸 ,因此在參數(shù)文件中,只涉及基本的主備參數(shù),沒(méi)有考慮switchover和最大性能模式下的real time apply。在監(jiān)聽(tīng)的配置中,也沒(méi)有考慮Data Guard Broker的應(yīng)用情況
配置環(huán)境:
主庫(kù): 備庫(kù):
操作系統(tǒng)版本: Oracle Linux 6.3 Oracle Linux 6.3
數(shù)據(jù)庫(kù)版本: Oracle 11.2.0.1.0 Oracle 11.2.0.1.0
主機(jī)名: node1.being.com node2.being.com
IP: 192.168.1.11 192.168.1.12
db_name orcl victor
db_unique_name orcl orcl
instance_name orcl victor
service_names orcl victor
注意:1. Dataguard中只需要db_unique_name保持一致即可
2. 主庫(kù)中除了安裝Oracle軟件以外,還需要dbca建庫(kù)。而備庫(kù)中,只需要安裝Oracle軟件即可,即在./runInstaller安裝過(guò)程中,第三步選擇install software only
即可
3. 主備庫(kù)的ORACLE_BASE=/u01/app/oracle,ORACLE_HOME=$ORACLE_BASE/product/11.2.0.1/db_1
一、配置監(jiān)聽(tīng)
1> 主庫(kù)上
[oracle@node1 ~]$ cd $ORACLE_HOME/network/admin/
[oracle@node1 admin]$ cat tnsnames.ora
TO_VICTOR =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.12)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = victor)
)
)
其中to_victor為網(wǎng)絡(luò)服務(wù)名,在后面配置log_archive_dest_2和fal_server中會(huì)用到
2> 備庫(kù)上
[oracle@node2 ~]$ cd $ORACLE_HOME/network/admin/
[oracle@node2 admin]$ cat tnsnames.ora
TO_ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.11)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
注意:該配置只是基于基本的Dataguard配置,沒(méi)有考慮Dataguard broker的配置
二、主庫(kù)環(huán)境準(zhǔn)備 -->> 在node1上操作
1> 將數(shù)據(jù)庫(kù)設(shè)置為歸檔模式
SQL> archive log list -->>若Database log mode為No Archive Mode,則表示該數(shù)據(jù)庫(kù)運(yùn)行在非歸檔模式下。進(jìn)行以下操作
SQL> shutdown immediate
SQL> startup mount
SQL> alter database archivelog;
SQL> alter database open;
2> 將數(shù)據(jù)庫(kù)設(shè)置為Force Logging模式
SQL> select force_logging from v$database; -->>若為NO,則進(jìn)行以下操作
SQL> alter database force logging;
3> 修改主庫(kù)參數(shù)文件
SQL> alter system set log_archive_config='dg_config=(orcl,victor)';
-->> 代表該Dataguard是兩個(gè)節(jié)點(diǎn),一主一從,若要配置多個(gè)節(jié)點(diǎn),則需要在此處添加。
SQL> alter system set log_archive_dest_1='location=USE_DB_RECOVERY_FILE_DEST valid_for=(online_logfiles,primary_role) db_unique_name=orcl';
-->> location代表本地歸檔。在這里我們使用閃回區(qū)作為在線日志文件的歸檔目錄,在實(shí)際生產(chǎn)環(huán)境中,如果歸檔日志是歸檔在本地文件系統(tǒng)上,不建議使用閃回區(qū),因?yàn)殚W回區(qū)和數(shù)據(jù)庫(kù)軟件是在同一個(gè)目錄下,如果歸檔日志過(guò)多,閃回區(qū)空間增長(zhǎng)過(guò)快,容易造成磁盤(pán)空間不足,這樣容易使數(shù)據(jù)庫(kù)掛掉。valid_for代表該歸檔目錄只有在該庫(kù)為主庫(kù),歸檔在線日志文件時(shí)才有效。
SQL> alter system set log_archive_dest_2='service=to_victor async valid_for=(online_logfiles,primary_role) db_unique_name=victor';
-->> service后面接的是網(wǎng)絡(luò)服務(wù)名
SQL> alter system set log_archive_dest_state_1='enable';
SQL> alter system set log_archive_dest_state_2='enable';
SQL> alter system set remote_login_passwordfile=exclusive scope=spfile; -->> 設(shè)置密碼文件的權(quán)限,該設(shè)置需重啟數(shù)據(jù)庫(kù)才能生效
SQL> alter system set log_archive_format='%t_%s_%r.arc' scope=spfile; -->> 設(shè)置歸檔日志的格式,該設(shè)置需重啟數(shù)據(jù)庫(kù)才能生效
-->> 最后兩項(xiàng)可不用顯性設(shè)定
三、 為備庫(kù)創(chuàng)建各種文件 -->> 在node1上操作
1> 密碼文件
[oracle@node1 ~]$ cd $ORACLE_HOME/dbs/
[oracle@node1 dbs]$ orapwd file=orapworcl entries=5 force=y password=oracle
2> 參數(shù)文件
SQL> create pfile='/home/oracle/orcl.ora' from spfile;
3> 備份數(shù)據(jù)庫(kù)
對(duì)數(shù)據(jù)庫(kù)做備份有多種辦法,包括冷備、在線熱備、RMAN備份,在這里我們使用RMAN備份
[oracle@node1 ~]$ mkdir /home/oracle/rman
[oracle@node1 ~]$ rman target /
RMAN> backup database format '/home/oracle/rman/full_%U';
4> 備份控制文件
SQL> alter system switch logfile;
SQL> alter database create standby controlfile as '/home/oracle/victor.ctl';
四、將上述四類文件copy到備庫(kù)
[oracle@node1 ~]$ scp $ORACLE_HOME/dbs/orapworcl oracle@192.168.1.12:/u01/app/oracle/product/11.2.0.1/db_1/dbs/orapwvictor
[oracle@node1 ~]$ scp /home/oracle/orcl.ora oracle@192.168.1.12:/home/oracle/victor.ora
[oracle@node1 ~]$ scp -r /home/oracle/rman/ oracle@192.168.1.12:/home/oracle/rman
[oracle@node1 ~]$ scp /home/oracle/victor.ctl oracle@192.168.1.12:/home/oracle
五、 創(chuàng)建備庫(kù)
1> 修改參數(shù)文件
[oracle@node2 ~]$ vim victor.ora
*.audit_file_dest='/u01/app/oracle/admin/victor/adump'
*.audit_trail='db'
*.compatible='11.2.0.0.0'
*.control_files='/u01/app/oracle/oradata/victor/control01.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='orcl'
db_unique_name=victor
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(protocol=TCP)'
*.log_archive_config='dg_config=(orcl,victor)'
*.log_archive_dest_1='location=/u01/archivelog valid_for=(standby_logfiles,standby_role) db_unique_name=victor'
*.log_archive_dest_state_1='enable'
*.memory_target=471859200
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.shared_servers=1
*.undo_tablespace='UNDOTBS1'
fal_server=to_orcl
db_file_name_convert='/u01/app/oracle/oradata/orcl/','/u01/app/oracle/oradata/victor/'
log_file_name_convert='/u01/app/oracle/oradata/orcl/','/u01/app/oracle/oradata/victor/’
2> 創(chuàng)建參數(shù)文件中相應(yīng)的目錄
[oracle@node2 ~]$ mkdir -p /u01/app/oracle/admin/victor/adump
[oracle@node2 ~]$ mkdir /u01/archilog
[oracle@node2 ~]$ mkdir -p /u01/app/oracle/oradata/victor
[oracle@node2 ~]$ cp /home/oracle/victor.ctl /u01/app/oracle/oradata/victor/control01.ctl
3> 創(chuàng)建備庫(kù)
[oracle@node2 ~]$ sqlplus / as sysdba
SQL> create spfile from pfile='/home/oracle/victor.ora';
SQL> startup mount
[oracle@node2 ~]$ rman target /
RMAN> restore database;
RMAN> alter database open;
SQL> alter database recover managed standby database disconnect from session;
六、測(cè)試
1> 在備庫(kù)上查詢歸檔日志的序列號(hào)
SQL> select sequence# from v$archived_log;
2> 在主庫(kù)上切換一次日志
SQL> alter system switch logfile;
3> 在備庫(kù)上查詢歸檔日志的序列號(hào),看是否有增加
SQL> select sequence# from v$archived_log;
4> 在備庫(kù)上查詢歸檔日志是否被應(yīng)用
SQL> select sequence#,applied from v$archived_log;
當(dāng)然,也可以用具體案例進(jìn)行測(cè)試,譬如在主庫(kù)中新建一張表,對(duì)表進(jìn)行增、刪、改,然后切換日志,看備庫(kù)能否應(yīng)用。
更多教程請(qǐng)百度搜索下載聯(lián)盟
|
|