CentOS6u9 Oracle11g RAC 搭建部署(八)OGG测试
生活随笔
收集整理的這篇文章主要介紹了
CentOS6u9 Oracle11g RAC 搭建部署(八)OGG测试
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
簡單說明:
依據《CentOS6u9 Oracle 11g 靜默安裝手工建庫統一配置方案》 和《CentOS6u9 Oracle11g 內存策略選擇和大頁內存優化》 以及《CentOS6u9 Oracle11g 單機OGG災備部署測試》 搭建11g單機OGG災備環境,只做OGG的預部署部分相應統計信息如下:A端:11g單機,IP 192.168.77.100,SID orcl,字符集 utf8,測試賬號 test1B端:11g RAC,IP 192.168.77.11 ,SID orcl,字符集 utf8,測試賬號 test2實驗設計:實驗1:配置11g單機到11g RAC的測試賬號test1的災備同步實驗2:配置11g RAC到11g單機的測試賬號test2的災備同步實驗1:
1° A端創建測試賬號test1,模擬生產
su - oracle # 創建測試用業務賬號,賦權,創建測試sequence和測試table sqlplus / as sysdba create user test1 identified by test1 default tablespace users; grant connect,resource to test1; grant select on v_$session to test1; grant select on v_$sesstat to test1; grant select on v_$statname to test1; grant execute on sys.dbms_lock TO test1; conn test1/test1 create table test1(id number); create sequence seq_test1 minvalue 1 maxvalue 999999999999999999999999999 start with 1 increment by 1 cache 20; exit # 創建腳本,并行執行,模擬生產 cat >/tmp/test1.sh<<EOFALL sqlplus -s test1/test1<<EOF beginfor i in 1..100000 loopinsert into test1 values(seq_test1.nextval);commit;dbms_lock.sleep(1);end loop; end; / EOF EOFALL for i in $(seq 10);do bash /tmp/test1.sh & done2° A端配置,創建配置抽取進程:
su - oracle # 創建目錄,將抽取同步數據放在自己專有的目錄內 mkdir /ggs/dirdat_test1 # 創建抽取進程配置文件 cd /ggs/dirprm cat >exttest1.prm<<EOF EXTRACT exttest1 setenv (ORACLE_SID=orcl) setenv (NLS_LANG=AMERICAN_AMERICA.UTF8) SETENV (ORACLE_HOME = "/u01/app/oracle/product/11.2.0/db_1") USERID ggs, PASSWORD ggs THREADOPTIONS MAXCOMMITPROPAGATIONDELAY 20000 REPORT AT 01:59 DYNAMICRESOLUTION DDL INCLUDE ALL ddloptions addtrandata,report -- 動態添加trandata reportrollover at 02:00 discardfile ./dirrpt/exttest1.dsc,append,megabytes 10 gettruncates numfiles 3000 EXTTRAIL ./dirdat_test1/et dynamicresolution BR BROFF --- table table test1.*; --- sequence sequence test1.*; EOF # 配置啟動抽取進程 cd /ggs ./ggsci dblogin userid ggs,password ggs add trandata test1.* info trandata test1.* add extract exttest1,tranlog,begin now add exttrail ./dirdat_test1/et, extract exttest1 start exttest1 info exttest1 exit3° A端配置,創建配置發送進程:
su - oracle # 在B端創建對應的目錄,配置發送進程時會將文件放入該目錄中 ssh oracle@192.168.77.11 'mkdir /ggs/dirdat_test1' cd /ggs/dirprm cat >puptest1.prm<<EOF EXTRACT puptest1 setenv (ORACLE_SID="orcl1") setenv ( NLS_LANG = AMERICAN_AMERICA.UTF8 ) passthru REPORT AT 01:59 reportrollover at 02:00 RMTHOST 192.168.77.11, MGRPORT 8000, compress RMTTRAIL ./dirdat_test1/rt dynamicresolution numfiles 3000 ---table table test1.*; ---sequence sequence test1.*; EOF # 配置啟動發送進程 # 確認目標端mgr進程已啟動 ssh oracle@192.168.77.11 'netstat -tupln|grep 8000' cd /ggs ./ggsci add extract puptest1,exttrailsource ./dirdat_test1/et add rmttrail ./dirdat_test1/rt,extract puptest1 start puptest1 info puptest1 exit # 確認目標端接收到了文件 ssh oracle@192.168.77.11 'ls -l /ggs/dirdat_test1/rt*'4° A端配置,配置directory,數據泵導出測試賬號test1,發送到B端:
su - oracle mkdir /home/oracle/dmp sqlplus / as sysdba create directory dmp as '/home/oracle/dmp'; exit # 查詢出當前的SCN,建議在業務低峰時期進行數據同步操作 CUR_SCN=$(echo 'select to_char(current_scn) from v$database;'|sqlplus -s / as sysdba|grep '[0-9]') # 數據泵導出,根據SCN導出 expdp \'/ as sysdba\' directory=dmp dumpfile=test1.dmp schemas=test1 FLASHBACK_SCN=${CUR_SCN} scp /home/oracle/dmp/test1.dmp oracle@192.168.77.11:/tmp/5° B端配置,配置directory,數據泵導入測試業務賬號,禁用外鍵等:
su - oracle mkdir /home/oracle/dmp sqlplus / as sysdba create directory dmp as '/home/oracle/dmp'; exit cp /tmp/test1.dmp /home/oracle/dmp impdp \'/ as sysdba\' directory=dmp dumpfile=test1.dmp# 跑腳本,禁用外鍵、觸發器等對象 # 參見《CentOS6u9 Oracle11g 單機OGG災備部署測試》6° B端配置,創建配置應用進程:
su - oracle # 創建應用進程配置文件 cd /ggs/dirprm cat >reptest1.prm<<EOF REPLICAT reptest1 SETENV (ORACLE_SID = orcl1) SETENV (NLS_LANG = "American_America.UTF8") USERID ggs,PASSWORD ggs sqlexec "Alter session set constraints=deferred" REPORT AT 01:59 reportrollover at 02:00 --handlecollisions DBOPTIONS SUPPRESSTRIGGERS DBOPTIONS DEFERREFCONST DDL include objname "test1.*" --ddlerror 1403 ignore DDLERROR DEFAULT abend DDLSUBST 'enable' WITH 'disable' INCLUDE OBJTYPE 'trigger', OPTYPE alter DDLSUBST 'enable' WITH 'disable' INCLUDE INSTR 'ZGLT_CASCADE', OPTYPE alter, OBJTYPE 'CONSTRAINT' reperror default,abend --reperror default,discard discardfile ./dirrpt/reptest1.dsc,append, megabytes 100 assumetargetdefs checksequencevalue allownoopupdates dynamicresolution numfiles 3000 --HANDLECOLLISIONS mapexclude test1.SYS_JOURNAL_*; map test1.*, target test1.*; EOF # 配置啟動抽取進程 cd /ggs ./ggsci dblogin userid ggs,password ggs add checkpointtable ggs.rep_test1_ckpt -- 此處的檢查點表的命名也要符合一定規則 add replicat reptest1,exttrail ./dirdat_test1/rt,checkpointtable ggs.rep_test1_ckpt start reptest1, aftercsn 258236 info reptest1 exit7° B端監控測試表,測試:
for i in $(seq 10) doecho 'select max(id) from test1.TEST1;'|sqlplus -s / as sysdbasleep 1 done實驗2:
1° B端創建測試賬號test2,模擬生產
su - oracle # 創建測試用業務賬號,賦權,創建測試sequence和測試table sqlplus / as sysdba create user test2 identified by test2 default tablespace users; grant connect,resource to test2; grant select on v_$session to test2; grant select on v_$sesstat to test2; grant select on v_$statname to test2; grant execute on sys.dbms_lock TO test2; conn test2/test2 create table test2(id number); create sequence seq_test2 minvalue 1 maxvalue 999999999999999999999999999 start with 1 increment by 1 cache 20; exit # 創建腳本,并行執行,模擬生產 cat >/tmp/test2.sh<<EOFALL sqlplus -s test2/test2<<EOF beginfor i in 1..100000 loopinsert into test2 values(seq_test2.nextval);commit;dbms_lock.sleep(1);end loop; end; / EOF EOFALL for i in $(seq 10);do bash /tmp/test2.sh & done2° B端配置,創建配置抽取進程:
su - oracle # 創建目錄,將抽取同步數據放在自己專有的目錄內 mkdir /ggs/dirdat_test2 # 創建抽取進程配置文件 cd /ggs/dirprm cat >exttest2.prm<<EOF EXTRACT exttest2 setenv (ORACLE_SID=orcl1) setenv (NLS_LANG=AMERICAN_AMERICA.UTF8) SETENV (ORACLE_HOME = "/u01/app/oracle/product/11.2.0/db_1") USERID ggs, PASSWORD ggs TRANLOGOPTIONS ASMUSER sys@ASM,ASMPASSWORD oracle THREADOPTIONS MAXCOMMITPROPAGATIONDELAY 20000 REPORT AT 01:59 DYNAMICRESOLUTION DDL INCLUDE ALL ddloptions addtrandata,report -- 動態添加trandata reportrollover at 02:00 discardfile ./dirrpt/exttest2.dsc,append,megabytes 10 gettruncates numfiles 3000 EXTTRAIL ./dirdat_test2/et dynamicresolution BR BROFF --- table table test2.*; --- sequence sequence test2.*; EOF # 配置啟動抽取進程 cd /ggs ./ggsci dblogin userid ggs,password ggs add trandata test2.* info trandata test2.* add extract exttest2,tranlog,begin now,threads 2 add exttrail ./dirdat_test2/et, extract exttest2 start exttest2 info exttest2 exit3° B端配置,創建配置發送進程:
su - oracle # 在B端創建對應的目錄,配置發送進程時會將文件放入該目錄中 ssh oracle@192.168.77.100 'mkdir /ggs/dirdat_test2' cd /ggs/dirprm cat >puptest2.prm<<EOF EXTRACT puptest2 setenv (ORACLE_SID="orcl") setenv ( NLS_LANG = AMERICAN_AMERICA.UTF8) passthru REPORT AT 01:59 reportrollover at 02:00 RMTHOST 192.168.77.100, MGRPORT 8000, compress RMTTRAIL ./dirdat_test2/rt dynamicresolution numfiles 3000 ---table table test2.*; ---sequence sequence test2.*; EOF # 配置啟動發送進程 # 確認目標端mgr進程已啟動 ssh oracle@192.168.77.100 'netstat -tupln|grep 8000' cd /ggs ./ggsci add extract puptest2,exttrailsource ./dirdat_test2/et add rmttrail ./dirdat_test2/rt,extract puptest2 start puptest2 info puptest2 exit # 確認目標端接收到了文件 ssh oracle@192.168.77.100 'ls -l /ggs/dirdat_test2/rt*'4° B端配置,數據泵導出測試賬號test2,發送到A端:
# 查詢出當前的SCN,建議在業務低峰時期進行數據同步操作 su - oracle CUR_SCN=$(echo 'select to_char(current_scn) from v$database;'|sqlplus -s / as sysdba|grep '[0-9]') # 數據泵導出,根據SCN導出 expdp \'/ as sysdba\' directory=dmp dumpfile=test2.dmp schemas=test2 FLASHBACK_SCN=${CUR_SCN} scp /home/oracle/dmp/test2.dmp oracle@192.168.77.100:/tmp/5° A端配置,數據泵導入測試業務賬號,禁用外鍵等:
su - oracle cp /tmp/test2.dmp /home/oracle/dmp impdp \'/ as sysdba\' directory=dmp dumpfile=test2.dmp # 跑腳本,禁用外鍵、觸發器等對象 # 參見《CentOS6u9 Oracle11g 單機OGG災備部署測試》6° A端配置,創建配置應用進程:
su - oracle # 創建應用進程配置文件 cd /ggs/dirprm cat >reptest2.prm<<EOF REPLICAT reptest2 SETENV (ORACLE_SID = orcl) SETENV (NLS_LANG = "American_America.UTF8") USERID ggs,PASSWORD ggs sqlexec "Alter session set constraints=deferred" REPORT AT 01:59 reportrollover at 02:00 --handlecollisions DBOPTIONS SUPPRESSTRIGGERS DBOPTIONS DEFERREFCONST DDL include objname "test2.*" --ddlerror 1403 ignore DDLERROR DEFAULT abend DDLSUBST 'enable' WITH 'disable' INCLUDE OBJTYPE 'trigger', OPTYPE alter DDLSUBST 'enable' WITH 'disable' INCLUDE INSTR 'ZGLT_CASCADE', OPTYPE alter, OBJTYPE 'CONSTRAINT' reperror default,abend --reperror default,discard discardfile ./dirrpt/reptest2.dsc,append, megabytes 100 assumetargetdefs checksequencevalue allownoopupdates dynamicresolution numfiles 3000 --HANDLECOLLISIONS mapexclude test2.SYS_JOURNAL_*; map test2.*, target test2.*; EOF # 配置啟動抽取進程 cd /ggs ./ggsci dblogin userid ggs,password ggs add checkpointtable ggs.rep_test2_ckpt add replicat reptest2,exttrail ./dirdat_test2/rt,checkpointtable ggs.rep_test2_ckpt start reptest2, aftercsn 428545 info reptest2 exit7° A端監控測試表,測試:
for i in $(seq 10) doecho 'select max(id) from test2.TEST2;'|sqlplus -s / as sysdbasleep 1 done回滾:
1° A端操作:
su - oracle # 關閉抽取和發送進程 cd /ggs ./ggsci dblogin userid ggs,password ggs stop * delete EXTRACT EXTTEST1 delete EXTRACT PUPTEST1 delete REPLICAT REPTEST2 delete checkpointtable ggs.rep_test2_ckpt! exit# 刪除進程配置文件,刪除數據文件目錄 rm -rf /ggs/dirprm/exttest1.prm rm -rf /ggs/dirprm/puptest1.prm rm -rf /ggs/dirprm/reptest2.prm rm -rf /ggs/dirdat_test1/ /ggs/dirdat_test2/ rm -rf /ggs/dirrpt/*# 刪除測試賬號 ps -ef|grep test1.sh|grep -v grep|awk '{print $2}'|xargs kill -9 sqlplus -s / as sysdba set heading off feedback off spool /tmp/kill_session.sql select 'alter system kill session '''||SID||','||SERIAL#||''';'from v$session where SCHEMANAME='TEST1'; spool off @/tmp/kill_session.sql drop user test1 cascade; exit;# 刪除導出文件和腳本 rm -rf /home/oracle/dmp/* /tmp/test1.sh /tmp/test2.dmp2° B端操作:
su - oracle # 關閉抽取和發送進程 cd /ggs ./ggsci dblogin userid ggs,password ggs stop * delete EXTRACT EXTTEST2 delete EXTRACT PUPTEST2 delete REPLICAT REPTEST1 delete checkpointtable ggs.rep_test1_ckpt ! exit# 刪除進程配置文件,刪除數據文件目錄 rm -rf /ggs/dirprm/exttest2.prm rm -rf /ggs/dirprm/puptest2.prm rm -rf /ggs/dirprm/reptest1.prm rm -rf /ggs/dirdat_test1/ /ggs/dirdat_test2/ rm -rf /ggs/dirrpt/*# 刪除測試賬號 ps -ef|grep test2.sh|grep -v grep|awk '{print $2}'|xargs kill -9 sqlplus -s / as sysdba set heading off feedback off spool /tmp/kill_session.sql select 'alter system kill session '''||SID||','||SERIAL#||''';'from v$session where SCHEMANAME='TEST2'; spool off @/tmp/kill_session.sql drop user test2 cascade; exit;# 刪除導出文件和腳本 rm -rf /home/oracle/dmp/* /tmp/test2.sh /tmp/test1.dmp[TOC]
總結
以上是生活随笔為你收集整理的CentOS6u9 Oracle11g RAC 搭建部署(八)OGG测试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 唤醒词检测引擎Snowboy
- 下一篇: centos安装jq