Oracle資料庫(DataGuard)遷移方案(中)
第一部分 部署主備庫DG
第1部分
1.1 DG搭建步驟
步驟 |
實施內容 |
Step 1 |
主庫引數配置 |
Step 2 |
備庫引數配置 |
Step 3 |
資料第一次同步 |
Step 4 |
備機新增oracle服務 |
Step 5 |
主備切換 |
1.2 主庫引數配置
主庫引數配置包括確認歸檔是否開啟,force_logging是否開啟,修改主庫引數檔案,新增網路連線串等等一系列的主庫配置資訊。
3.2.1 開啟資料庫force_logging
檢查是否開啟了force_logging:
SQL> SELECT FORCE_LOGGING FROM V$DATABASE; FOR --- YES
//如果狀態為YES,則已經開啟,如果狀態為NO,則參考下面步驟:
SQL> ALTER DATABASE FORCE LOGGING;
3.2.3 新增網路連線串
網路連線串用於連線主備兩端資料庫,傳輸歸檔等作用,在RAC環境下,具體需要配置如下幾個:一號節點連線串,二號節點連線串,備端連線串,詳細配置資訊如下:
Shell> su – oracle Shell> cd $ORACLE_HOME/network/admin Shell> vi tnsnames.ora //新增如下資訊:(如果已存在以下連線串,酌情考慮新增刪除) # tnsnames.ora Network Configuration File: /u01/app/oracle/product/12.2.0/db_1/network/admin/tnsnames.ora # Generated by Oracle configuration tools. ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.17.11)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.17.13)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) ) ) ORCL_DG = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.15.101)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.15.103)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) ) )
3.2.4 修改主庫引數檔案
備份引數檔案(方便修改引數出現問題後及時回退)。
Shell> su - oracle Shell> sqlplus "/ as sysdba" SQL> create pfile='/tmp/initORCL.ora' from spfile; SQL> alter system set log_archive_config='dg_config=(ORCL,ORCL_DG)' sid='*'; SQL> alter system set log_archive_dest_3='service=ORCL_DG valid_for=(online_logfiles,primary_role) db_unique_name=ORCL_DG' sid='*'; SQL> alter system set LOG_ARCHIVE_DEST_STATE_3=enable sid='*';
3.2.5 建立standby redo log檔案
standby redo log 作用在備庫,用於接收從主庫傳過來的日誌資訊,在主庫部署主要是為了方便日後的主備切換。
建立適當數量的Standby Redo Log組數,公式如下:
1. 如果主庫是單例項資料庫:Standby Redo Log組數=主庫日誌組總數+1
2. 如果主庫是RAC資料庫:Standby Redo Log組數=(所有節點中日誌組數最大值 + 1) * RAC節點數
3. 大小和生產庫redo日誌組大小一致
alter database add standby logfile thread 1 group 31 '+DATADG' size 500M; alter database add standby logfile thread 1 group 32 '+DATADG' size 500M; alter database add standby logfile thread 1 group 33 '+DATADG' size 500M; alter database add standby logfile thread 1 group 34 '+DATADG' size 500M; alter database add standby logfile thread 2 group 35 '+DATADG' size 500M; alter database add standby logfile thread 2 group 36 '+DATADG' size 500M; alter database add standby logfile thread 2 group 37 '+DATADG' size 500M; alter database add standby logfile thread 2 group 38 '+DATADG' size 500M;
3.2.6 複製備庫所需檔案
建立standby端所需要的引數檔案:
Shell> su - oracle Shell> sqlplus "/ as sysdba" SQL> create pfile='/home/oracle/initorcl.ora' from spfile;
複製靜態引數檔案:
Shell> su – oracle Shell> cd $ORACLE_HOME/dbs Shell> scp initorcl.ora oracle@XXX.XXX.XXX.XXX:`$ORACLE_HOME/dbs`
複製密碼檔案:
Shell> su – oracle Shell> cd $ORACLE_HOME/dbs Shell> scp orapw<sid> oracle@XXX.XXX.XXX.XXX:`pwd`
複製網路連線串檔案:
Shell> su – oracle Shell> cd $ORACLE_HOME/network/admin Shell> scp tnsnames.ora oracle@XXX.XXX.XXX.XXX:`pwd`
1.3 備庫引數配置
3.3.1 目標端環境資訊檢查
備庫需要確認如下資訊:
1. 資料庫軟體已經正常安裝,版本和生產保持一致
2. 監聽程式已經正常安裝,並且服務已啟動
3. 備庫所需檔案,均已經正常複製到指定位置
3.3.2 修改備庫引數檔案
將從生產庫複製過來的引數檔案進行編輯,並修改下列引數檔案(靜態引數檔案命名格式init<SID>.ora):
Shell> su – oracle Shell> cd $ORACLE_HOME/dbs Shell> vi initORCL.ora *.audit_file_dest='/u01/app/oracle/admin/ORCL/adump' *.audit_trail='db' *.cluster_database=true *.compatible='12.2.0' *.control_files='+DATA/ORCL/CONTROLFILE/current.279.1128270387','+LOG/ORCL/CONTROLFILE/current.274.1128270387'#Restore Controlfile *.db_block_size=8192 *.db_create_file_dest='+DATA' *.db_name='ORCL' *.diagnostic_dest='/u01/app/oracle' *.dispatchers='(PROTOCOL=TCP) (SERVICE=ORCLXDB)' ORCL1.instance_number=1 ORCL2.instance_number=2 *.local_listener='-oraagent-dummy-' *.log_archive_config='dg_config=(ORCL,ORCL_DG)' *.log_archive_dest_1='location=+LOG' *.log_archive_dest_3='service=ORCL valid_for=(online_logfiles,primary_role) db_unique_name=ORCL' *.log_archive_dest_state_3='DEFER' *.nls_language='AMERICAN' *.nls_territory='AMERICA' *.open_cursors=300 *.pga_aggregate_target=4250m *.processes=2000 *.remote_login_passwordfile='exclusive' *.sga_target=18750m *.standby_file_management=auto *.db_unique_name='ORCL_dg' *.fal_server=ORCL *.fal_client=ORCL_dg ORCL2.thread=2 ORCL1.thread=1 ORCL1.undo_tablespace='UNDOTBS1' ORCL2.undo_tablespace='UNDOTBS2'
注:備庫引數檔案中,必須要建立對應的adump審計日誌目錄:
*.audit_file_dest= /u01/app/oracle/admin/ORCL/adump
3.3.3 監聽新增靜態註冊
su – oracle vi $ORACLE_HOME/network/admin/listener.ora SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = ORCL_DG) (ORACLE_HOME = /u01/app/oracle/product/12.2/db_1) (SID_NAME = ORCL_DG) ) ) LISTENER = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.15.101)(PORT = 1521)) )
啟動靜態監聽
Lsnrctl start listener
1.4 資料全量同步
使用duplicate線上複製技術,將源端生產庫同步至目標環境,如下:
Shell> rman target sys/xxx@ORCL_DG auxiliary sys/xxx@ORCL RMAN> duplicate target database for standby from active database nofilenamecheck;
1.5 啟動DG同步
開啟MRP程式,備庫資料前滾,開始同步:
SQL> alter database recover managed standby database disconnect from session; 或者 SQL> alter database recover managed standby database using current logfile disconnect from session;
檢查DG同步程式狀態:
SQL> select process, status,sequence#,block#,blocks, delay_mins from v$managed_standby;
檢查DG日誌同步延時情況:
SQL> select thread#,max(sequence#) from gv$archived_log group by thread#; SQL> select thread#,max(sequence#) from gv$archived_log where applied='YES' group by thread#;
第二部分 註冊資料庫資訊
將spfile建立至ASM共享磁碟中,再使用ASM中的spfile啟動資料庫例項。
SQL> create spfile='+DATA/ORCL_DG/spfileorcl.ora' from pfile;
修改RAC兩節點預設位置的pfile檔案:
1節點:
Shell> cd $ORACLE_HOME/dbs Shell> vi initorcl1.ora spfile='+DATA/ORCL_DG/spfileorcl.ora'
2節點:
Shell> cd $ORACLE_HOME/dbs Shell> vi initorcl2.ora spfile='+DATA/ORCL_DG/spfileorcl.ora'
重啟兩節點資料庫例項:
1節點啟動MRP程式恢復同步
SQL> shutdown immediate; SQL> startup SQL> alter database recover managed standby database using current logfile disconnect from session;
2節點只需啟動
SQL> shutdown immediate; SQL> startup
將資料庫資訊註冊至叢集:
Shell> srvctl add database -d ORCL_DG -o /u01/app/oracle/product/12.2/db_1 -p +DATA/ORCL_DG/spfileorcl.ora Shell> srvctl add instance -d ORCL_DG -i ORCL1 -n racdb1 Shell> srvctl add instance -d ORCL_DG -i ORCL2 -n racdb2 Shell> srvctl start database -d ORCL_DG
第三部分 備庫讀寫模式開啟
將備庫切換snapshot standby模式,此時備庫為讀寫模式,業務人員可以對應用程式進行通測,檢查不相容等問題並處理。由於這類操作均在備庫進行,並不會對主庫和生產業務造成任何影響。
第2部分
第3部分
3.1 備庫停止MRP程式
SQL> alter database recover managed standby database cancel; SQL> shutdown immediate; SQL> startup mount;
3.2 切換為snapshot standby
SQL> alter database convert to snapshot standby; SQL> alter database open; SQL> select open_mode from v$database; OPEN_MODE -------------------- READ WRITE
3.3 切換為physical standby
如果是RAC環境,只保留一個節點,其他節點關閉。確保是當前節點為mount狀態。執行下列命令進行切換:
SQL> alter database convert to physical standby;
切換完成後資料庫會自動dismount,因此需要重啟資料,然後啟動redo apply。具體操作如下:
SQL> shutdown immediate SQL> startup mount; SQL> alter database open; SQL> alter database recover managed standby database using current logfile disconnect from session;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30310891/viewspace-2946956/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle資料庫(DataGuard)遷移方案(上)Oracle資料庫
- Oracle資料庫(DataGuard)遷移方案(下)Oracle資料庫
- Oracle資料庫(資料泵)遷移方案(上)Oracle資料庫
- Oracle資料庫(資料泵)遷移方案(下)Oracle資料庫
- OGG資料庫遷移方案(一)資料庫
- OGG資料庫遷移方案(二)資料庫
- OGG資料庫遷移方案(三)資料庫
- OGG資料庫遷移方案(四)資料庫
- 資料庫邏輯遷移方案資料庫
- Oracle資料庫中資料行遷移與行連結Oracle資料庫
- 無外網Oracle資料庫遷移Oracle資料庫
- Oracle 19c adg全庫遷移資料Oracle
- 資料庫遷移資料庫
- Fastdfs資料遷移方案AST
- 資料庫平滑遷移方案與實踐分享資料庫
- EF 中多個資料庫遷移資料庫
- AWS RDS Oracle資料遷移Oracle
- Oracle資料庫升級或資料遷移的方法探討Oracle資料庫
- redis資料庫遷移Redis資料庫
- 資料庫遷移 :理解資料庫
- laravel資料庫遷移Laravel資料庫
- 異構資料庫資料遷移 oracle to mysql之oracle sqlloader和mysql load data資料庫OracleMySql
- 資料遷移方案選擇
- SQL Server 資料庫最小當機遷移方案GESQLServer資料庫
- Laravel5.4框架中資料庫遷移Laravel框架資料庫
- linux mysql資料庫遷移LinuxMySql資料庫
- django資料庫遷移-15Django資料庫
- 用rman遷移資料庫資料庫
- 資料庫遷移手記資料庫
- 遷移MySQL 5.7資料庫MySql資料庫
- 資料庫遷移神器——Flyway資料庫
- dm資料庫遷移命令資料庫
- SQL Server資料庫遷移SQLServer資料庫
- redis叢集 資料遷移方案Redis
- ThinkPHP5.1 中的資料庫遷移和資料填充PHP資料庫
- Oracle資料庫遷移至PolarDb(阿里雲資料庫)Oracle資料庫阿里
- 雲資料庫管理與資料遷移資料庫
- Oracle資料庫由dataguard備庫引起的log file sync等待Oracle資料庫