oracle11g高可用,oracle11g 搭建DG环境总结
本帖最后由 zhofly 于 2016-6-24 23:19 編輯
測(cè)試環(huán)境為:兩臺(tái)服務(wù)器配置一樣:Oracle Linux Server release 6.5??X86_64, DB??11.2.0.4.0
前提環(huán)境:一臺(tái)已經(jīng)安裝好數(shù)據(jù)庫(kù)軟件并創(chuàng)建數(shù)據(jù)庫(kù)實(shí)例的服務(wù)器
另一臺(tái)也就是備庫(kù),只安裝了數(shù)據(jù)庫(kù)軟件,空實(shí)例。
安裝環(huán)境與創(chuàng)建數(shù)據(jù)庫(kù)這里就不用說(shuō)了,很簡(jiǎn)單的。
整個(gè)環(huán)境為成4個(gè)步驟:
1,主備(gydg)修改
2,備庫(kù)(yzdg)修改
3,主備duplicate數(shù)據(jù)庫(kù)
4,測(cè)試DG是否成功
---------------------------
1.1 查看數(shù)據(jù)庫(kù)是否在歸檔與是否強(qiáng)制LOGGING模式。
SQL> select log_mode,force_logging from v$database;
LOG_MODE? ???FOR
------------ ---
ARCHIVELOG? ?NO
SQL> ALTER DATABASE FORCE LOGGING;
Database altered.
1.2 查看數(shù)據(jù)庫(kù)的日志組個(gè)數(shù)與大小,因?yàn)槲覀儎?chuàng)建standby日志組的個(gè)數(shù)是原日志組個(gè)數(shù)+1再與thread的積,size不能小于原日志文件的大小。
SQL> select group#,bytes/1024/1024 from v$log;
GROUP# BYTES/1024/1024
---------- ---------------
1? ?? ?? ?? ???50
2? ?? ?? ?? ???50
3? ?? ?? ?? ???50
SQL> select member from v$logfile;
MEMBER
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/gydg/redo03.log
/u01/app/oracle/oradata/gydg/redo02.log
/u01/app/oracle/oradata/gydg/redo01.log
1.3 創(chuàng)建standby日志組,位置與原日志組相同的路徑。創(chuàng)建完成后查詢(xún)是否成功
SQL> alter database add standby logfile '/u01/app/oracle/oradata/gydg/standby01.log' size 50m;
Database altered.
SQL> alter database add standby logfile '/u01/app/oracle/oradata/gydg/standby02.log' size 50m;
Database altered.
SQL> alter database add standby logfile '/u01/app/oracle/oradata/gydg/standby03.log' size 50m;
Database altered.
SQL> alter database add standby logfile '/u01/app/oracle/oradata/gydg/standby04.log' size 50m;
Database altered.
SQL> select group#,status,type,member from v$logfile;
GROUP# STATUS??TYPE? ? MEMBER
---------- ------- ------- --------------------------------------------------
3? ?? ?? ?ONLINE??/u01/app/oracle/oradata/gydg/redo03.log
2? ?? ?? ?ONLINE??/u01/app/oracle/oradata/gydg/redo02.log
1? ?? ?? ?ONLINE??/u01/app/oracle/oradata/gydg/redo01.log
4? ?? ?? ?STANDBY /u01/app/oracle/oradata/gydg/standby01.log
5? ?? ?? ?STANDBY /u01/app/oracle/oradata/gydg/standby02.log
6? ?? ?? ?STANDBY /u01/app/oracle/oradata/gydg/standby03.log
7? ?? ?? ?STANDBY /u01/app/oracle/oradata/gydg/standby04.log
1.4 修改相關(guān)的參數(shù),與DG的參數(shù)就只與幾個(gè)參數(shù)相關(guān),大概就是日志,文件的位置的轉(zhuǎn)換,GAP的處理,其實(shí)GAP已經(jīng)會(huì)自動(dòng)的處理,不過(guò)這里我們還是介紹配置FAL_SERVER,FAL_CLIENT參數(shù)。
SQL> alter system set LOG_ARCHIVE_CONFIG='DG_CONFIG=(gydg,yzdg)';
SQL> alter system set LOG_ARCHIVE_DEST_1='LOCATION=/u01/app/oracle/arch/gydg/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=gydg';
SQL> alter system set LOG_ARCHIVE_DEST_2='SERVICE=gydg LGWR SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=gydg';
SQL> alter system set LOG_ARCHIVE_DEST_STATE_1=ENABLE;
SQL> alter system set FAL_SERVER=yzdg;
SQL> alter system set FAL_CLIENT=gydg;
SQL>alter system set db_file_name_convert='/u01/app/oracle/oradata/gydg/','/u01/app/oracle/oradata/yzdg/' scope=spfile;
SQL>alter system set log_file_name_convert='/u01/app/oracle/oradata/logfile/','/u01/app/oracle/oradata/logfile/' scope=spfile;
SQL> create pfile from spfile;
1.5 把dbs下的內(nèi)容同步到standby主機(jī)上面,主要是密碼文件與init文件。(如果SID不一樣,創(chuàng)建密碼文件要保證entries值一致;)
orapwd file=orapwupsh password=123456 entries=5;( 在主庫(kù)創(chuàng)建密碼文件)
$scp initSID.ora orapwSID oracle@192.168.137.99:$ORACLE_HOME/dbs
1.6 配置靜態(tài)監(jiān)聽(tīng)
主庫(kù):
1、修改/u01/app/oracle/product/11.2.0.4.0/network/admin/listener.ora
[oracle@gydg admin]$ vi listener.ora
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = gydg)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0.4.0)
(SID_NAME = gydg)
)
)
LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.137.98)(PORT = 1521))
)
ADR_BASE_LISTENER = /u01/app/oracle
2、修改 /u01/app/oracle/product/11.2.0.4.0/network/admin/tnsnames.ora
[oracle@gydg admin]$ vi tnsnames.ora
yzdg =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.137.99)(PORT = 1521))
)
(CONNECT_DATA =
(service_name = yzdg)(UR=A)
)
)
gydg =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.137.98)(PORT = 1521))
)
(CONNECT_DATA =
(service_name = gydg)(UR=A)
)
)
備庫(kù)
1、修改/u01/app/oracle/product/11.2.0.4.0/network/admin/listener.ora
[oracle@yzdg admin]$ vi listener.ora
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = yzdg)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0.4.0)
(SID_NAME = yzdg)
)
)
LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.137.99)(PORT = 1521))
)
ADR_BASE_LISTENER = /u01/app/oracle
2、修改 /u01/app/oracle/product/11.2.0.4.0/network/admin/tnsnames.ora
[oracle@yzdg admin]$ vi??tnsnames.ora
yzdg =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.137.99)(PORT = 1521))
)
(CONNECT_DATA =
(service_name = yzdg)(UR=A)
)
)
gydg =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.137.98)(PORT = 1521))
)
(CONNECT_DATA =
(service_name = gydg)(UR=A)
)
)
啟動(dòng)主備庫(kù)的監(jiān)聽(tīng)
[oracle@yzdg admin]$lsnrctl
LSNRCTL> start
測(cè)試監(jiān)聽(tīng)是否正常
sqlplus sys/oracle@gydg as sysdba
sqlplus sys/oracle@yzdg as sysdba
備庫(kù)上創(chuàng)建相關(guān)文件與修改參數(shù)文件
[oracle@yzdg dbs]$ more inityzdg.ora
*.audit_trail='db'
*.compatible='11.2.0.4.0'
*.control_files='/u01/app/oracle/oradata/yzdg/control01.ctl','/u01/app/oracle/fast_recovery_area/yzdg/control02.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='gydg'
*.db_recovery_file_dest='/u01/app/oracle/fast_recovery_area'
*.db_recovery_file_dest_size=4385144832
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=gydgXDB)'
*.fal_client='YZDG'
*.fal_server='GYDG'
*.log_archive_config='DG_CONFIG=(yzdg,gydg)'
*.log_archive_dest_1='LOCATION=/u01/app/oracle/arch/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=yzdg'
*.log_archive_dest_2='SERVICE=gydg LGWR SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=gydg'
*.log_archive_dest_state_1='ENABLE'
*.log_archive_dest_state_2='ENABLE'
*.log_file_name_convert='/u01/app/oracle/oradata/logfile/','/u01/app/oracle/oradata/logfile/'
*.memory_target=1270874112
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.undo_tablespace='UNDOTBS1'
*.DB_UNIQUE_NAME='yzdg'
*.db_file_name_convert='/u01/app/oracle/oradata/gydg/','/u01/app/oracle/oradata/yzdg/'
[oracle@gydg admin]$ mkdir -p? ?/u01/app/oracle/oradata/logfile/? ?? ?? ?? ???(主備都創(chuàng)建)
[oracle@gydg admin]$ mkdir -p??/u01/app/oracle/fast_recovery_area/yzdg
[oracle@gydg admin]$ mkdir -p /u01/app/oracle/oradata/yzdg/
[oracle@gydg admin]$ mkdir -p /u01/app/oracle/oradata/gydg/
在備庫(kù)創(chuàng)建spfile,并啟動(dòng)數(shù)據(jù)庫(kù)到NOMOUNT
[oracle@yzdg yzdg]$ echo $ORACLE_SID
yzdg
SQL> startup nomount;
SQL> create spfile from pfile;
----------------------------------------
重啟主庫(kù)
SQL> shutdown immediate;
SQL> startup
duplicate開(kāi)始
在主庫(kù)上通過(guò)rman進(jìn)行復(fù)制備庫(kù)(注意在這一步之前必須退出備庫(kù)的所有連接,否則會(huì)報(bào)錯(cuò))
rman target sys/123456 auxiliary sys/123456@yzdg
rman>duplicate target database for standby nofilenamecheck from active database ;
把備庫(kù)啟動(dòng)到open only下面。并recover
SQL> alter database open read only;
SQL> alter database recover managed standby database using current logfile disconnect from session;
查看兩邊狀態(tài):主庫(kù)
SQL> select database_role,switchover_status from v$database;
DATABASE_ROLE? ? SWITCHOVER_STATUS
---------------- --------------------
PRIMARY? ?? ?? ? TO STANDBY
備庫(kù)
SQL> select database_role,switchover_status from v$database;
DATABASE_ROLE? ? SWITCHOVER_STATUS
---------------- --------------------
PHYSICAL STANDBY NOT ALLOWED
注: 備庫(kù)的SWITCHOVER_STATUS狀態(tài)為 NOT ALLOWED??是正常的,只有當(dāng)主庫(kù)切換為備庫(kù)時(shí),原備庫(kù)的狀態(tài)才會(huì)變。
查看兩邊的sequence# 是否一致
SQL> select max(sequence#) from v$archived_log;
--------------------------------------------------------------------------------------------------------
下面就是開(kāi)始測(cè)試了。這里我們是用的SCOTT這個(gè)用戶來(lái)做測(cè)試,在SCOTT用戶下面創(chuàng)建一個(gè)表,在備庫(kù)去查詢(xún)看是否創(chuàng)建成功,與在主庫(kù)上面SWIRCH一次日志,看alert中的日志輸出內(nèi)容。
在主庫(kù)上面做測(cè)試
[oracle@11g admin]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.2.0 Production on Fri Sep 7 05:57:41 2012
Copyright (c) 1982, 2010, Oracle.??All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> alter database set standby to maximize??availability;
Database altered.
SQL> alter user scott identified by oracle;
User altered.
SQL> alter user scott account unlock;
User altered.
SQL> create table scott.test1 as select * from dba_objects;
Table created.
備庫(kù)上面
SQL> select count(*) from scott.test1;
COUNT(*)
----------
72391
說(shuō)明已經(jīng)同步
主庫(kù)上面刷新日志。
SQL> conn / as sysdba
Connected.
SQL> alter system archive log current;
System altered.
日志
ALTER SYSTEM ARCHIVE LOG
Fri Sep 07 06:04:45 2012
LGWR: Standby redo logfile selected to archive thread 1 sequence 11
LGWR: Standby redo logfile selected for thread 1 sequence 11 for destination LOG_ARCHIVE_DEST_2
Thread 1 advanced to log sequence 11 (LGWR switch)
Current log# 2 seq# 11 mem# 0: /u01/app/oracle/oradata/htz/redo02.log
Fri Sep 07 06:04:48 2012
Archived Log entry 12 added for thread 1 sequence 10 ID 0x6e285e98 dest 1:
備庫(kù)日志
Standby controlfile consistent with primary
RFS[5]: Selected log 5 for thread 1 sequence 11 dbid 1848107928 branch 793343515
Thu Sep 06 18:40:13 2012
Media Recovery Waiting for thread 1 sequence 11 (in transit)
Recovery of Online Redo Log: Thread 1 Group 5 Seq 11 Reading mem 0
Mem# 0: /u01/app/oracle/oradata/htz/standby02.log
Thu Sep 06 18:40:16 2012
Archived Log entry 5 added for thread 1 sequence 10 ID 0x6e285e98 dest 1:
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的oracle11g高可用,oracle11g 搭建DG环境总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: dos命令查看oracle_home,O
- 下一篇: PHP 织梦 帝国那个好,帝国、PHPC