2014年8月3日 星期日

[ORACLE] Data Guard 10g(11g也適用) Step by Step on Windows Server 2008 R2 x64 (三)

--第三篇 異地Data Guard建置

--建立備援機上所需目錄
mkdir D:\oracledb\admin\myorcl
mkdir D:\oracledb\admin\myorcl\adump
mkdir D:\oracledb\admin\myorcl\bdump
mkdir D:\oracledb\admin\myorcl\cdump
mkdir D:\oracledb\admin\myorcl\ddump
mkdir D:\oracledb\admin\myorcl\udump
mkdir D:\oracledb\admin\myorcl\pfile
mkdir D:\oracledb\oradata\myorcl
mkdir D:\oracledb\oradata\myorcl\archivelog
--將controlfile複製到備援主機
copy \\192.168.1.122\c$\DG_TEMP\CONTROLxx.CTL D:\oracledb\oradata\myorcl\CONTROL01.CTL
copy \\192.168.1.122\c$\DG_TEMP\CONTROLxx.CTL D:\oracledb\oradata\myorcl\CONTROL02.CTL
copy \\192.168.1.122\c$\DG_TEMP\CONTROLxx.CTL D:\oracledb\oradata\myorcl\CONTROL03.CTL
--將Parameter file複製到備援主機
copy \\192.168.1.122\c$\DG_TEMP\PFILEmyorcl.ORA C:\oracle\ora10g\database\
--修改上一步產生的PFILE,以符合備援機的環境,以下為修改的內容
--for 異地Data Guard:IP 192.168.1.124,電腦名稱 DGDR
*.db_unique_name='DR_myorcl_STBY'
*.log_archive_dest_3='SERVICE=myorcl ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=myorcl'
*.fal_client='DR_myorcl_STBY'
*.fal_server='myorcl,myorcl_STBY'
--將password file複製到備援主機
--密碼檔存放位置Windows:$ORACLE_HOME/database/PWD%ORACLE_SID%.ora
copy \\192.168.1.122\c$\oracle\ora10g\database\PWDmyorcl.ora c:\oracle\ora10g\database\
--將tnsnames.ora複製到備援主機
copy \\192.168.1.122\c$\oracle\ora10g\NETWORK\ADMIN\tnsnames.ora C:\oracle\ora10g\NETWORK\ADMIN
--在註冊機碼中新增一筆
在"登陸編輯程式(REGEDIT)"中展開至"電腦\HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_ora10g"新增一筆"字串值"
 數值名稱:ORACLE_SID
 數值資料:myorcl
--將listener.ora複製到備援主機
copy \\192.168.1.122\c$\oracle\ora10g\NETWORK\ADMIN\listener.ora C:\oracle\ora10g\NETWORK\ADMIN
--修改listener.ora參數
# listener.ora Network Configuration File: C:\oracle\ora10g\network\admin\listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = C:\oracle\ora10g)
      (PROGRAM = extproc)
    )
    (SID_DESC =
      (GLOBAL_DBNAME = myorcl)
      (ORACLE_HOME = C:\oracle\ora10g)
      (SID_NAME = myorcl)
    )
  )
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.124)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
    )
  )
 
--啟動備援機的LISTENER
C:\Windows\system32>lsnrctl start
--在服務中產生一個新的Instance Service,啟動方式為手動
C:\Windows\system32>oradim -NEW -SID myorcl -STARTMODE manual
 Instance created.

--使用pfile啟動資料庫到nomount
C:\Windows\system32>sqlplus / as sysdba
SQL> startup nomount pfile='C:\oracle\ora10g\database\PFILEORCL.ORA'
ORACLE instance started.
--改成SPFILE啟動
SQL> create spfile from pfile='C:\oracle\ora10g\database\PFILEmyorcl.ORA';
SQL> SHUTDOWN immediate;
SQL> startup mount;
--查看啟動是用PFILE或SPFILE
SQL> show parameter spfile;
 NAME         TYPE    VALUE
 -------    --------  ----------------------------------------------
 spfile        string   C:\ORACLE\ORA10G\DATABASE\SPFILEmyorcl.ORA

--將資料庫Startup到Mount
SQL> alter database mount;
--檢查資料庫啟動模式
SQL> select open_mode from v$database;
 OPEN_MODE
 ----------
 MOUNTED
--將備份檔案複製到備援機
C:\Windows\system32>copy \\192.168.1.122\c$\DG_TEMP\*.bak D:\BAK_File\
--還原資料庫到備援機
C:\Windows\system32>rman target /
--指定備份文件所在目錄
RMAN> catalog start with 'D:\BAK_File';
--還原資料庫
RMAN> restore database;
--將資料庫啟動為Standby模式
C:\Windows\system32>sqlplus / as sysdba
--10G
SQL> ALTER DATABASE recover managed standby database disconnect from session;
--11G
--SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;
--設定語系
--NLS_LANG
--american_america.utf8

第一篇 本地資料庫建置
第二篇 本地Data Guard建置
第四篇 驗證DATA GUARD
第五篇 本地資料庫切換到異地DATA GUARD

1 則留言: