數據遷移:DataGuard配置

本次快速搭建單實例物理DataGuard,爲解決某些同事擔心“那如果我在primary裏面使用提交的事務操作時按照rowid去檢索數據,到備庫執行的和主庫操作不一致”

數據庫軟件安裝過程不再贅述。


1: 檢查主庫否爲 force logging .

select inst_id , force_logging from gv$database;
alter database force logging;

2:備庫創建數據庫實例 

oradim -new -sid tjcshow -startmode a


3:配置主/備庫tnsnames,listener

增加主庫TNSNAMES節點:

TJCSHOW1 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.100.111.130)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = tjcshow)
    )
  )


TJCSHOW2 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.100.111.131)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = tjcshow)
    )
  )



將主庫listener/SQLNET/TNSNAMES拷貝到備庫待用

修改監聽:

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = C:\oracle\product\10.2.0\db_1)
      (PROGRAM = extproc)
    )
    (SID_DESC =
    (GLOBAL_DBNAME = tjcshow)
    (ORACLE_HOME = C:\oracle\product\10.2.0\db_1)
    (SID_NAME = tjcshow)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
      (ADDRESS = (PROTOCOL = TCP)(HOST = DKD-O13022802)(PORT = 1521))
    )
  )



4:主庫生成pfile,拷貝到備庫作爲基礎參數文件,修改主/備庫pfile

---PRIMAY
*.log_archive_config=''
*.log_archive_dest_1='LOCATION=C:\oracle\product\10.2.0\archivelog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=tjcshow'
*.log_archive_dest_2='service=tjcshow2 lgwr async  VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=tjcshow'
*.log_archive_dest_state_1=enable
*.log_archive_dest_state_2=enable
*.LOG_ARCHIVE_FORMAT='%t_%s_%r.arc'
*.log_archive_max_processes=1
*.fal_client='tjcshow1'
*.fal_server='tjcshow2'
*.DB_FILE_NAME_CONVERT='C:\oracle\product\10.2.0\oradata\tjcshow','C:\oracle\product\10.2.0\oradata\tjcshow' 
*.LOG_FILE_NAME_CONVERT='C:\oracle\product\10.2.0\oradata\tjcshow','C:\oracle\product\10.2.0\oradata\tjcshow'
*.standby_file_management=auto

---STSNDBY

*.log_archive_config=''
*.log_archive_dest_1='LOCATION=C:\oracle\product\10.2.0\archivelog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=tjcshow'
*.log_archive_dest_2='service=tjcshow1 lgwr async  VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=tjcshow'
*.log_archive_dest_state_1=enable
*.log_archive_dest_state_2=enable
*.LOG_ARCHIVE_FORMAT='%t_%s_%r.arc'
*.log_archive_max_processes=1
*.fal_client='tjcshow2'
*.fal_server='tjcshow1'
*.DB_FILE_NAME_CONVERT='C:\oracle\product\10.2.0\oradata\tjcshow','C:\oracle\product\10.2.0\oradata\tjcshow' 
*.LOG_FILE_NAME_CONVERT='C:\oracle\product\10.2.0\oradata\tjcshow','C:\oracle\product\10.2.0\oradata\tjcshow'
*.standby_file_management=auto




5:節點聯通性測試,節點1 tnsping tjcshow1 tnsping tjcshow2 節點2 tnsping tjcshow1 tnsping tjcshow2

startup nomount pfile=c:\standby.ora;

c:\oracle\product\10.2.0\db_1\BIN>TNSPING.EXE tjcshow1

TNS Ping Utility for 64-bit Windows: Version 10.2.0.4.0 - Production on 13-MAR-2
013 09:23:20

Copyright (c) 1997,  2007, Oracle.  All rights reserved.

Used parameter files:
C:\oracle\product\10.2.0\db_1\network\admin\sqlnet.ora


Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.100.1
11.130)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = tjcsh
ow)))
OK (0 msec)

c:\oracle\product\10.2.0\db_1\BIN>TNSPING.EXE tjcshow2

TNS Ping Utility for 64-bit Windows: Version 10.2.0.4.0 - Production on 13-MAR-2
013 09:23:21

Copyright (c) 1997,  2007, Oracle.  All rights reserved.

Used parameter files:
C:\oracle\product\10.2.0\db_1\network\admin\sqlnet.ora


Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.100.1
11.131)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = tjcsh
ow)))
OK (0 msec)


6:RMAN 備份主庫

sql 'alter system archive log current' ;
backup as compressed backupset full format='c:\backupset-%d_%s.bak' database include current controlfile for standby plus archivelog ;


7:拷貝文件,還原備庫
Set oracle_sid=tjcshow
Startup pfile=’c:\standby.ora’ nomount;
rman target  sys/oracle@tjcshow1  auxiliary sys/oracle@tjcshow2 
duplicate target database for standby dorecover nofilenamecheck;


8:添加Standby redo log 重做日誌組配置

( 01) 主庫添加Standby Redo Log
ALTER DATABASE ADD STANDBY LOGFILE GROUP 4 ('C:\oracle\product\10.2.0\oradata\tjcsho\redo004') SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE GROUP 5 ('C:\oracle\product\10.2.0\oradata\tjcsho\redo005') SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE GROUP 6 ('C:\oracle\product\10.2.0\oradata\tjcsho\redo006') SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE GROUP 7 ('C:\oracle\product\10.2.0\oradata\tjcsho\redo007') SIZE 50M;

( 02) 備庫添加Standby Redo Log
ALTER DATABASE ADD STANDBY LOGFILE GROUP 4 ('C:\oracle\product\10.2.0\oradata\tjcsho\redo004') SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE GROUP 5 ('C:\oracle\product\10.2.0\oradata\tjcsho\redo005') SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE GROUP 6 ('C:\oracle\product\10.2.0\oradata\tjcsho\redo006') SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE GROUP 7 ('C:\oracle\product\10.2.0\oradata\tjcsho\redo007') SIZE 50M;


9:啓動到管理模式

shutdown immediate
startup nomount
alter database mount standby database
alter database recover managed standby database disconnect from session;

10:測試

@primary

--查看DG配置是否正確,主/備庫查詢:

select status,destination, error from v$archive_dest; 
VALID	C:\oracle\product\10.2.0\archivelog	
VALID	tjcshow2	
INACTIVE		
INACTIVE		
INACTIVE		
INACTIVE		
INACTIVE		
INACTIVE		
INACTIVE		
INACTIVE	

--創建表空間,測試表進行測試

create tablespace rowidtbs datafile 'C:\oracle\product\10.2.0\oradata\tjcshow\rowidtbs01.dbf' size 100M;
create table rowidt (id int,name varchar(20)) tablespace rowidtbs;


--插入1000條數據

begin
for x  in 1..1000 loop
insert into rowidt values(x,'oracledg');
end loop;
end;
/
--強制數據庫日誌切換
alter system switch logfile;


--將備庫從恢復模式置於只讀模式:

alter database recover managed standby database cancel;
alter database open ;

--查詢備庫數據

select rowid,id,name from test
AAAMpBAABAAAOvaAAA	1	oracle    
AAAMpBAABAAAOvaAAB	2	oracle    
AAAMpBAABAAAOvaAAC	3	oracle    
AAAMpBAABAAAOvaAAD	4	oracle    
AAAMpBAABAAAOvaAAE	5	oracle    
aaampbaabaaaovaaaf	6	oracle    
aaampbaabaaaovaaag	7	oracle    
............................

1000條測試數據全部同步到備庫,且ROWID沒有發生變化。


PS:摘錄 Data Guard Concepts and Administration

Physical standby database  Provides a physically identical copy of the primary database, with on disk database structures that are identical to the primary database on a block-for-block basis. The database schema, including indexes, are the same. A physical standby database is kept synchronized with the primary database, through Redo Apply, which recovers the redo data received from the primary database and applies the redo to the physical standby database.

所以主庫到備庫的後的ROWID不會發生變化,所以同事的擔心沒有必要。做這件事情的同時想起exp/imp,expdp/impdp做備份還原的時候會修改rowid的值,所以如果所做的備份庫的應用中使用了ROWID,千萬不要使用exp/imp,expdp/impd做數據遷移。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章