數據庫版本: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