oracle dg 搭建方式,Linux平台 Oracle 11g DG测试环境快速搭建参考
環境現狀:
兩臺虛擬主機A和B:
1. A機器已安裝ASM存儲的Oracle 11g 實例
2. B機器已安裝系統,配置以及目錄結構均和A機器保持一致
/u01 + 3塊ASM盤
DG部署規劃:
primary
standby
主機
JY-DB
JY-DBS
db_name
jyzhao
jyzhao
db_unique_name
jyzhao
jyzhao_s
instance_name
jyzhao
jyzhao_s
存儲
+DATA1
+DATA1
歸檔
/u01/app/oracle/product/11.2.0/db_1/dbs/arch
/u01/app/oracle/product/11.2.0/db_1/dbs/arch
DGMGRL
jyzhao_dgmgrl
jyzhao_s_dgmgrl
GRID_HOME
/u01/app/11.2.0/grid
/u01/app/11.2.0/grid
ORACLE_HOME
/u01/app/oracle/product/11.2.0/db_1
/u01/app/oracle/product/11.2.0/db_1
一、前期準備
1.1. A機器打包拷貝/u01/app到B機器(包含了grid和oracle軟件安裝目錄)
# tar -zcvf app.tar.gz app
# scp app.tar.gz 192.168.99.160:/u01/
root@192.168.99.160's password:
app.tar.gz? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 100% 3564MB? 54.8MB/s? 01:05
B機器解壓,解壓前確保第二步操作已完成。
# pwd
/u01
[root@JY-DBS u01]# ls
app.tar.gz? lost+found
[root@JY-DBS u01]# tar -zxvf app.tar.gz
解壓完成后,檢查權限是正確的
# ls -lh
total 3.5G
drwxrwxr-x. 7 oracle oinstall 4.0K Mar 13 14:47 app
-rw-r--r--. 1 root? root? ? 3.5G Mar 15 22:28 app.tar.gz
1.2. B機器配置用戶,系統參數,安裝依賴包,用戶環境變量,ASM磁盤
配置用戶,系統參數,安裝依賴包,用戶環境變量
注:在第一步解壓前做完,會發現權限都是正確的不用費心再改
root用戶執行腳本
# /u01/app/oraInventory/orainstRoot.sh
# /u01/app/11.2.0/grid/root.sh
# /u01/app/11.2.0/grid/perl/bin/perl -I/u01/app/11.2.0/grid/perl/lib -I/u01/app/11.2.0/grid/crs/install /u01/app/11.2.0/grid/crs/install/roothas.pl
配置has
需要建立asm磁盤組
環境變量:
vi $ORACLE_HOME/dbs/init+ASM.ora
*.asm_diskstring='/dev/mapper/ora*'
*.asm_power_limit=1
*.diagnostic_dest='/u01/app/grid'
*.instance_type='asm'
*.large_pool_size=12M
*.remote_login_passwordfile='EXCLUSIVE'
$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Mon Mar 16 10:51:02 2015
Copyright (c) 1982, 2013, Oracle.? All rights reserved.
Connected to an idle instance.
SQL> startup
ORA-01078: failure in processing system parameters
ORA-29701: unable to connect to Cluster Synchronization Service
$? crsctl stat res -t
--------------------------------------------------------------------------------
NAME? ? ? ? ? TARGET? STATE? ? ? ? SERVER? ? ? ? ? ? ? ? ? STATE_DETAILS
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.ons
OFFLINE OFFLINE? ? ? jy-dbs
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.cssd
1? ? ? ? OFFLINE OFFLINE
ora.diskmon
1? ? ? ? OFFLINE OFFLINE
ora.evmd
1? ? ? ? ONLINE? ONLINE? ? ? jy-dbs
$? crsctl start resource ora.cssd
CRS-2672: Attempting to start 'ora.cssd' on 'jy-dbs'
CRS-2672: Attempting to start 'ora.diskmon' on 'jy-dbs'
CRS-2676: Start of 'ora.diskmon' on 'jy-dbs' succeeded
CRS-2676: Start of 'ora.cssd' on 'jy-dbs' succeeded
$ crsctl status res -t
--------------------------------------------------------------------------------
NAME? ? ? ? ? TARGET? STATE? ? ? ? SERVER? ? ? ? ? ? ? ? ? STATE_DETAILS
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.ons
OFFLINE OFFLINE? ? ? jy-dbs
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.cssd
1? ? ? ? ONLINE? ONLINE? ? ? jy-dbs
ora.diskmon
1? ? ? ? OFFLINE OFFLINE
ora.evmd
1? ? ? ? ONLINE? ONLINE? ? ? jy-dbs
$ sqlplus / as sysasm
SQL*Plus: Release 11.2.0.4.0 Production on Mon Mar 16 10:55:39 2015
Copyright (c) 1982, 2013, Oracle.? All rights reserved.
Connected to an idle instance.
SQL> startup
ASM instance started
Total System Global Area 1135747072 bytes
Fixed Size? ? ? ? ? ? ? ? ? 2260728 bytes
Variable Size? ? ? ? ? ? 1108320520 bytes
ASM Cache? ? ? ? ? ? ? ? ? 25165824 bytes
ORA-15110: no diskgroups mounted
SQL> select status from v$instance;
STATUS
------------------------
STARTED
col description for a35
col process for a35
set linesize 120
select sid, serial#, process, name, description from v$session join v$bgprocess using(paddr);
col path for a45
col name for a30
select group_number, disk_number, mount_status, name, path from v$asm_disk order by group_number, disk_number;
GROUP_NUMBER DISK_NUMBER MOUNT_STATUS? NAME? ? ? ? ? ? ? ? ? ? ? ? ? PATH
------------ ----------- -------------- ------------------------------ ---------------------------------------------
0? ? ? ? ? 0 CLOSED? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /dev/mapper/ora_vg-lv_asm3
0? ? ? ? ? 1 CLOSED? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /dev/mapper/ora_vg-lv_asm2
0? ? ? ? ? 2 CLOSED? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /dev/mapper/ora_vg-lv_asm1
查看A機器的磁盤組信息:
select group_number, name, type, total_mb, free_mb from v$asm_diskgroup
GROUP_NUMBER NAME? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? TYPE? ? ? ? ? TOTAL_MB? ? FREE_MB
------------ ------------------------------------------------------------ ------------ ---------- ----------
1 DATA1? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? EXTERN? ? ? ? ? ? 30708? ? ? 29017
B機器創建ASM磁盤組DATA1:
select group_number, name, type, total_mb, free_mb from v$asm_diskgroup;
no rows selected
CREATE DISKGROUP data1 EXTERNAL REDUNDANCY DISK '/dev/mapper/ora*';
Diskgroup created.
select group_number, name, type, total_mb, free_mb from v$asm_diskgroup;
GROUP_NUMBER NAME? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? TYPE? ? ? ? ? TOTAL_MB? ? FREE_MB
------------ ------------------------------------------------------------ ------------ ---------- ----------
1 DATA1? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? EXTERN? ? ? ? ? ? 30708? ? ? 30654
至此,準備工作結束。
二、DG部署配置
1. primary database 配置
確保將數據庫的force_logging打開,設置為歸檔模式,數據庫閃回打開
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
+DATA1/jyzhao/datafile/system.256.874084601
+DATA1/jyzhao/datafile/sysaux.257.874084601
+DATA1/jyzhao/datafile/undotbs1.258.874084601
+DATA1/jyzhao/datafile/users.259.874084601
SQL> select force_logging from v$database;
FOR
---
NO
SQL> alter database force logging;
Database altered.
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.
Total System Global Area 1620115456 bytes
Fixed Size? ? ? ? ? ? ? ? ? 2253704 bytes
Variable Size? ? ? ? ? ? 1006636152 bytes
Database Buffers? ? ? ? ? 603979776 bytes
Redo Buffers? ? ? ? ? ? ? ? 7245824 bytes
Database mounted.
SQL> alter database archivelog;
Database altered.
SQL> alter database flashback on;
alter database flashback on
*
ERROR at line 1:
ORA-38706: Cannot turn on FLASHBACK DATABASE logging.
ORA-38709: Recovery Area is not enabled.
SQL> archive log list
Database log mode? ? ? ? ? ? ? Archive Mode
Automatic archival? ? ? ? ? ? Enabled
Archive destination? ? ? ? ? ? /u01/app/oracle/product/11.2.0/db_1/dbs/arch
Oldest online log sequence? ? 12
Next log sequence to archive? 14
Current log sequence? ? ? ? ? 14
$ mkdir -p /u01/app/oracle/product/11.2.0/db_1/dbs/arch
SQL> alter database flashback on;
alter database flashback on
*
ERROR at line 1:
ORA-38706: Cannot turn on FLASHBACK DATABASE logging.
ORA-38709: Recovery Area is not enabled.
SQL> show parameter db_recover
NAME? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? TYPE? ? ? ? VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest? ? ? ? ? ? ? ? string
db_recovery_file_dest_size? ? ? ? ? big integer 0
SQL> alter system set db_recovery_file_dest_size=5G;
System altered.
SQL> alter system set db_recovery_file_dest='/u01/app/oracle/product/11.2.0/db_1/dbs/arch';
System altered.
SQL> select status from v$instance;
STATUS
------------
MOUNTED
SQL> alter database flashback on;
Database altered.
按之前的規劃設置數據庫的參數
主要是db_unique_name, log_archive_config, log_archive_dest_1,? log_archive_dest_2, log_archive_format, fal_server, fal_client, standby_file_management的設置,standby logfile的添加,密碼文件的創建。
alter system set db_unique_name='jyzhao' scope=spfile;
alter system set log_archive_config='DG_CONFIG=(jyzhao,jyzhao_s)'? scope=spfile;
alter system set log_archive_dest_1='LOCATION=/u01/app/oracle/product/11.2.0/db_1/dbs/arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=jyzhao' scope=spfile;
alter system set log_archive_dest_2='SERVICE=jyzhao_s ASYNC LGWR VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=jyzhao_s' scope=spfile;
alter system set log_archive_format='arch_%r_%t_%s.arc' scope=spfile;
alter system set fal_server=jyzhao_s scope=spfile;
alter system set fal_client=jyzhao scope=spfile;
alter system set standby_file_management=AUTO;
alter database add standby logfile group 4 size 50M;
alter database add standby logfile group 5 size 50M;
alter database add standby logfile group 6 size 50M;
alter database add standby logfile group 7 size 50M;
rm /u01/app/oracle/product/11.2.0/db_1/dbs/orapwjyzhao
orapwd file=$ORACLE_HOME/dbs/orapwjyzhao password=oracle entries=10 ignorecase=Y
grid用戶配置監聽
--listener.ora
DGL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = JY-DB)(PORT = 1521))
)
SID_LIST_DGL =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = jyzhao)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
(SID_NAME = jyzhao)
)
(SID_DESC =
(GLOBAL_DBNAME = jyzhao_dgmgrl)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
(SID_NAME = jyzhao)
)
)
ADR_BASE_DGL = /u01/app/grid
oracle用戶配置tnsnames.ora
--tnsnames.ora
LINUXIDC =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = JY-DB)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = jyzhao )
)
)
LINUXIDC_S =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = JY-DBS)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = jyzhao_s)
)
)
grid用戶重啟監聽:
lsnrctl stop dgl
lsnrctl start dgl
oracle用戶測試連接:
SQL> show parameter audi
NAME? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? TYPE? ? ? ? VALUE
------------------------------------ ----------- ------------------------------
audit_file_dest? ? ? ? ? ? ? ? ? ? ? string? ? ? /u01/app/oracle/admin/jyzhao/a
dump
重啟primary
shutdown immediate
startup
2.機器B:standby數據庫配置:
grid用戶配置監聽
--listener.ora
DGL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = JY-DBS)(PORT = 1521))
)
SID_LIST_DGL =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = jyzhao_s)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
(SID_NAME = jyzhao_s)
)
(SID_DESC =
(GLOBAL_DBNAME = jyzhao_s_dgmgrl)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
(SID_NAME = jyzhao_s)
? ? ? ? )
)
ADR_BASE_DGL = /u01/app/grid
grid用戶啟動監聽
$ lsnrctl start dgl
oracle用戶配置tnsnames.ora
--tnsnames.ora
LINUXIDC =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = JY-DB)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = jyzhao )
)
)
LINUXIDC_S =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = JY-DBS)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = jyzhao_s)
)
)
echo "db_name=jyzhao" >> $ORACLE_HOME/dbs/initjyzhao_s.ora
echo $ORACLE_SID
sqlplus / as sysdba
startup nomount
oracle用戶測試連接? :
3.機器A操作 duplicate數據庫到機器B
驗證到機器B可以登錄
$ sqlplus sys/oracle@jyzhao_s as sysdba
vi duplicate_dg.sql
duplicate target database
for standby
from active database
DORECOVER
spfile
set db_unique_name='jyzhao_s'
set log_archive_dest_1='location=/u01/app/oracle/product/11.2.0/db_1/dbs/arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES)
DB_UNIQUE_NAME=jyzhao_s'
set log_archive_dest_2='SERVICE=jyzhao ASYNC LGWR
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=jyzhao'
set standby_file_management='AUTO'
set fal_server='jyzhao'
set fal_client='jyzhao_s'
set control_files='+DATA1'
set memory_target='0'
set sga_target='600M';
[oracle@JY-DB ~]$? rman target / auxiliary sys/oracle@jyzhaos cmdfile=duplicate_standby.sql
Recovery Manager: Release 11.2.0.4.0 - Production on Mon Mar 16 23:21:37 2015
Copyright (c) 1982, 2011, Oracle and/or its affiliates.? All rights reserved.
connected to target database: LINUXIDC (DBID=2463175424)
connected to auxiliary database: LINUXIDC (not mounted)
RMAN> duplicate target database
2> for standby
3> from active database
4> DORECOVER
5> spfile
6> set db_unique_name='jyzhao_s'
7> set log_archive_dest_1='location=/u01/app/oracle/product/11.2.0/db_1/dbs/arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES)
8> DB_UNIQUE_NAME=jyzhao_s'
9> set log_archive_dest_2='SERVICE=MACDBN ASYNC LGWR
10> VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=jyzhao'
11> set standby_file_management='AUTO'
12> set fal_server='jyzhao'
13> set fal_client='jyzhao_s'
14> set control_files='+DATA1'
15> set memory_target='0'
16> set sga_target='600M';
17>
Starting Duplicate Db at 16-MAR-15
using target database control file instead of recovery catalog
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: SID=111 device type=DISK
……
Recovery Manager complete.
[oracle@JY-DB ~]$
4. B機器 srvctl add數據庫jyzhao_s
注:開始_s有問題,是因為添加指定的參數不足:
srvctl add database -d jyzhao_s -o /u01/app/oracle/product/11.2.0/db_1 -p? +DATA1/LINUXIDC_S/spfilejyzhao_s.ora -n jyzhao -i jyzhao_s
srvctl modify database -d jyzhao_s -r PHYSICAL_STANDBY
三、DG切換測試
3.1 手動switchover
1主庫切換成standby,啟動到mount
select OPEN_MODE, DATABASE_ROLE, SWITCHOVER_STATUS, FORCE_LOGGING, DATAGUARD_BROKER, GUARD_STATUS from v$database;
alter database commit to switchover to physical standby;
2.備份切換成primary,啟動到open
select OPEN_MODE, DATABASE_ROLE, SWITCHOVER_STATUS, FORCE_LOGGING, DATAGUARD_BROKER, GUARD_STATUS from v$database;
alter database commit to switchover to primary;
3.新的備份執行日志應用
alter database recover managed standby database using current logfile disconnect from session;
3.2 Data Guard Broker 快速switchover
SQL> show parameter dg_broker_start
NAME? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? TYPE? ? ? ? VALUE
------------------------------------ ----------- ------------------------------
dg_broker_start? ? ? ? ? ? ? ? ? ? ? boolean? ? FALSE
SQL> alter system set dg_broker_start = true;
System altered.
SQL> show parameter dg_broker_start
NAME? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? TYPE? ? ? ? VALUE
------------------------------------ ----------- ------------------------------
dg_broker_start? ? ? ? ? ? ? ? ? ? ? boolean? ? TRUE
配置dgmgrl
create CONFIGURATION jydb as primary database is jyzhao CONNECT IDENTIFIER IS jyzhao;
add database? jyzhao_s as CONNECT IDENTIFIER IS jyzhao_s MAINTAINED AS? PHYSICAL;
enable configuration;
show configuration;
switchover to jyzhao_s;
switchover to jyzhao;
show database verbose jydb
總結
以上是生活随笔為你收集整理的oracle dg 搭建方式,Linux平台 Oracle 11g DG测试环境快速搭建参考的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DNF中那些职业是百分比职业?要说出全部
- 下一篇: 乐播投屏能把腾讯视频的内容投屏到电视机上