Oracle 11g R2之Dataguard搭建物理standby

Oracle 11g R2之Dataguard搭建物理standby

 

數據庫版本:11.2.0.4
服務器版本:RedHat6.4
主庫Primary:安裝數據庫軟件及實例
備庫Standby: 僅安裝數據庫軟件javascript

Database              DB_UNIQUE_NAME    Oracle Net Service Name
Primary               orcl              orcl
Physical standby      dg                dg

1、搭設前主備庫環境:
主庫Primary:java

[oracle@oracle dbs]$ cat /home/oracle/.bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH

export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_HOSTNAME=orcl
export ORACLE_UNQNAME=orcl
export ORACLE_BASE=/u01/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORACLE_SID=orcl
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib:$CLASSPATH

備庫Standby:linux

[oracle@dg ~]$ cat /home/oracle/.bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH


export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_HOSTNAME=dg
export ORACLE_UNQNAME=dg
export ORACLE_BASE=/u01/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORACLE_SID=dg
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib:$CLASSPATH

2、搭設Dataguard
主庫Primary操做:sql

--檢查數據庫是否支持Dataguard
[oracle@oracle dbs]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Thu Jul 23 10:02:01 2015

Copyright (c) 1982, 2013, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> select * from v$option where parameter = 'Managed Standby';

PARAMETER
----------------------------------------------------------------
VALUE
----------------------------------------------------------------
Managed Standby
TRUE
--檢查主庫是否開啓歸檔模式
SQL> archive log list
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            /u01/archive/orcl
Oldest online log sequence     23
Next log sequence to archive   25
Current log sequence           25

--如未開啓執行下列操做
SQL> shutdown immediate
SQL> startup mount
SQL> alter database archivelog;
SQL> alter database open;

--將數據庫設爲強制日誌模式
SQL> alter database force logging;

--建立數據庫密碼文件(若是沒有)
[oracle@oracle /]$ orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=oracle force=y entries=5

--建立主庫歸檔目錄
[oracle@oracle /]$ cd /u01
[oracle@oracle u01]$ mkdir archive
[oracle@oracle u01]$ cd archive
[oracle@oracle archive]$ mkdir orcl

--備份數據庫初始化參數文件
SQL> create pfile='/home/oracle/pfile.ora' from spfile;

--建立pfile文件,該文件方便修改初始化參數
SQL> create pfile from spfile;

--打開pfile文件,添加以下內容
DB_UNIQUE_NAME=orcl
LOG_ARCHIVE_CONFIG='DG_CONFIG=(orcl,dg)'
LOG_ARCHIVE_DEST_1='LOCATION=/u01/archive/orcl VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orcl'
LOG_ARCHIVE_DEST_2='SERVICE=dg ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=dg'
LOG_ARCHIVE_DEST_STATE_1=ENABLE
LOG_ARCHIVE_DEST_STATE_2=ENABLE
REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
LOG_ARCHIVE_FORMAT=%t_%s_%r.arc

FAL_SERVER=dg
DB_FILE_NAME_CONVERT='/u01/oracle/oradata/dg/','/u01/oracle/oradata/orcl/'
LOG_FILE_NAME_CONVERT='/u01/archive/dg','/u01/archive/orcl'
STANDBY_FILE_MANAGEMENT=AUTO

--關閉數據庫
SQL> shutdown immediate

--經過pfile建立spfile
SQL> create spfile from pfile;

--打開數據庫
SQL> startup

--備份主庫Primary數據庫文件
--關閉數據庫
SQL> shutdown immediate  

--中止監聽
[oracle@oracle /]$ lsnrctl stop

--啓動數據庫到mount狀態
SQL> startup mount

--建立備份目錄
[oracle@oracle /]$ cd /u01
[oracle@oracle u01]$ mkdir backup

--rman備份
[oracle@oracle /]$ rman target /
RMAN> backup full database format '/u01/backup/backup_%t_%s_%p.bak';

--在主庫上創建備庫的控制文件(2份)
SQL> alter database create standby controlfile as '/u01/backup/stdby_control01.ctl';
[oracle@oracle /]$ cd /u01/backup/
[oracle@oracle backup]$ cp stdby_control01.ctl stdby_control02.ctl

備庫Standby操做:數據庫

--建立必要的目錄
cd /u01
mkdir archive
cd archive
mkdir dg
cd /u01/oracle
mkdir admin
cd admin
mkdir dg
cd dg
mkdir adump
cd /u01/oracle/oradata
mkdir dg
cd /u01/oracle
mkdir fast_recovery_area
cd fast_recovery_area
mkdir dg
cd /u01
mkdir backup

--經過scp將主庫中的備份文件傳到備庫上
[oracle@oracle backup]$ cd /u01/backup
[oracle@oracle backup]$ scp backup*.bak 192.168.8.223:/u01/backup
[oracle@oracle backup]$ scp stdby_control*.ctl 192.168.8.223:/u01/oracle/oradata/
[oracle@oracle backup]$ cd $ORACLE_HOME/dbs
[oracle@oracle dbs]$ scp initorcl.ora 192.168.8.223:$ORACLE_HOME/dbs/
傳輸好後,將控制文件放到初始化參數中設置的目錄便可

--爲備庫standby建立密碼文件:
[oracle@dg ~]$ orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=oracle force=y entries

--修改備庫初始化參數文件(主庫初始化參數文件爲initorcl.ora需修改爲initdg.ora),
將初始化文件中添加以下內容(主庫中相似的內容刪除或進行修改):
DB_UNIQUE_NAME=dg
LOG_ARCHIVE_CONFIG='DG_CONFIG=(orcl,dg)'
LOG_ARCHIVE_DEST_1='LOCATION=/u01/archive/dg VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=dg'
LOG_ARCHIVE_DEST_2='SERVICE=orcl ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcl'
LOG_ARCHIVE_DEST_STATE_1=ENABLE
LOG_ARCHIVE_DEST_STATE_2=ENABLE
REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
LOG_ARCHIVE_FORMAT=%t_%s_%r.arc

FAL_SERVER=orcl
DB_FILE_NAME_CONVERT='/u01/oracle/oradata/orcl/','/u01/oracle/oradata/dg/'
LOG_FILE_NAME_CONVERT='/u01/archive/orcl','/u01/archive/dg'
STANDBY_FILE_MANAGEMENT=AUTO

--經過pfile建立spfile文件
[oracle@dg ~]$ sqlplus / as sysdba
SQL> create spfile from pfile;

--啓動物理備庫standby
SQL> startup nomount
SQL> alter database mount standby database;

--備庫standby作rman恢復
[oracle@dg ~]$ rman target /
RMAN> restore database;

配置主備庫文件(備庫沒有能夠從主庫scp過來進行修改),下面僅貼出主備庫相關文件內容bash

--主庫Primary的listener.ora
# listener.ora Network Configuration File: /u01/oracle/product/11.2.0/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = oracle)(PORT = 1521))
    )
  )

ADR_BASE_LISTENER = /u01/oracle

--備庫standby的listener.ora
# listener.ora Network Configuration File: /u01/oracle/product/11.2.0/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = dg)(PORT = 1521))
    )
  )

ADR_BASE_LISTENER = /u01/oracle

--主庫Primary的tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = oracle)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

DG =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.8.223)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = dg)
    )
  )

--備庫standby的tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

DG =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = dg)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = dg)
    )
  )

ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.8.205)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

--完成後重啓listener
lsnrctl stop
lsnrctl start

--tnsping主備庫
tnsping orcl
tnsping dg

--tnsping時可能會有linux防火牆限制,禁用防火牆命令
service iptables stop

配置standby redolog(若是數據庫是最佳性能模式能夠忽略,若是之後變成備庫且要轉爲其它兩種模式則要創建)服務器

--主庫Primary上創建:
SQL> alter database add standby logfile 
     group 4 ('/u01/oracle/oradata/orcl/stdby_redo04.log') size 50m,
     group 5 ('/u01/oracle/oradata/orcl/stdby_redo05.log') size 50m,
     group 6 ('/u01/oracle/oradata/orcl/stdby_redo06.log') size 50m,
     group 7 ('/u01/oracle/oradata/orcl/stdby_redo07.log') size 50m;

--備庫standby上創建
SQL> alter database add standby logfile 
     group 4 ('/u01/oracle/oradata/dg/stdby_redo04.log') size 50m,
     group 5 ('/u01/oracle/oradata/dg/stdby_redo05.log') size 50m,
     group 6 ('/u01/oracle/oradata/dg/stdby_redo06.log') size 50m,
     group 7 ('/u01/oracle/oradata/dg/stdby_redo07.log') size 50m;
--在備庫standby上啓動redo apply
SQL> alter database recover managed standby database disconnect from session;

到此物理standby建立完畢!session

一些經常使用命令(整理中)oracle

--查詢角色切換狀態
select switchover_status from v$database;

--備庫啓動順序
startup nomount
alter database mount standby database;
alter database recover managed standby database disconnect from session;

--從正在恢復狀態只讀打開
alter database recover managed standby database cancel;
alter database open read only;

--主備庫實時同步
alter database recover managed standby database using current logfile disconnect from session;

<script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); }); </script>app

相關文章
相關標籤/搜索