共計 11843 個字符,預計需要花費 30 分鐘才能閱讀完成。
如何進行 11.2.0.4 DG for linux 部署,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
1、oracle 數據庫 DB 的工作示意圖
2、oracle dg 的三大工作模式及對數據庫的需求依賴
3、本次實驗的環境
4、oracle DG 部署前的工作
在 centdgpri 機器上部署 Oracle 11.2.0.4 數據庫軟件并部署實例,在 centdgstd 機器上只安裝 Oracle 數據庫軟件,要求 centdgpri 和 centdgstd 機器上的 oracle 環境即數據庫相關的軟件部署路徑最好保持一致。
5、oracle DG 的部署
主庫調整,開啟歸檔
archive log list;
shutdown immediate;
startup mount;
alter system set log_archive_dest_1= location=/opt/oracle/arch
alter database archivelog;
archive log list;
alter database open;
alter system archive log current
主庫調整,開啟閃回
select force_logging, FLASHBACK_ON from v$database;
alter database force logging;
alter system set DB_RECOVERY_FILE_DEST_SIZE=10g;
alter system set db_recovery_file_dest= /opt/oracle/flash_recovery_area
alter database FLASHBACK ON;
select force_logging, FLASHBACK_ON from v$database;
主庫調整,添加 standby logfile 日志
set linesize 1000
col member for a50
select * from v$logfile order by 1;
select GROUP# ,BYTES/1024/1024 size_M,STATUS,ARCHIVED from v$log;
alter database add standby logfile group 6 (/opt/oracle/oradata/redo06.log) size 50m;
alter database add standby logfile group 7 (/opt/oracle/oradata/redo07.log) size 50m;
alter database add standby logfile group 8 (/opt/oracle/oradata/redo08.log) size 50m;
alter database add standby logfile group 9 (/opt/oracle/oradata/redo09.log) size 50m;
alter database add standby logfile group 10 (/opt/oracle/oradata/redo10.log) size 50m;
主庫調整,修改數據庫啟動 pfile 文件
orcl.__db_cache_size=327155712
orcl.__java_pool_size=4194304
orcl.__large_pool_size=8388608
orcl.__oracle_base= /opt/oracle #ORACLE_BASE
set from environment
orcl.__pga_aggregate_target=314572800
orcl.__sga_target=469762048
orcl.__shared_io_pool_size=0
orcl.__shared_pool_size=117440512
orcl.__streams_pool_size=0
*.audit_file_dest= /opt/oracle/admin/orcl/adump
*.audit_trail= db
*.compatible= 11.2.0.4.0
*.control_files= /opt/oracle/oradata/orcl/control01.ctl , /opt/oracle/oradata/orcl/control02.ctl
*.db_block_size=8192
*.db_domain=
*.db_name= orcl
*.diagnostic_dest= /opt/oracle
*.dispatchers= (PROTOCOL=TCP)
(SERVICE=orclXDB)
*.log_archive_dest_1= location=/opt/arch
*.memory_target=783286272
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile= EXCLUSIVE
*.undo_tablespace= UNDOTBS1
DB_UNIQUE_NAME= orcl
log_archive_config= DG_CONFIG=(orcl,orcls)
log_archive_dest_1= LOCATION=/opt/oracle/arch
VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orcl
LOG_ARCHIVE_DEST_2= SERVICE=dbstandby
LGWR ASYNC VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orcls
LOG_ARCHIVE_DEST_STATE_1=ENABLE
LOG_ARCHIVE_DEST_STATE_2=ENABLE
FAL_SERVER=dbstandby
FAL_CLIENT=dbprimary
STANDBY_FILE_MANAGEMENT=AUTO
*.log_file_name_convert= /opt/oracle/oradata , /opt/oracle/oradata
*.db_file_name_convert= /opt/oracle/oradata , /opt/oracle/oradata
主庫調整,重新生成 spfile
startup pfile= $ORACLE_HOME/dbs/initorcl.ora
create spfile from memory;
shutdown immediate;
startup;
show parameter spfile;
主庫調整,修改監聽配置文件 listener.ora
LISTENER =
(DESCRIPTION_LIST=
(DESCRIPTION
=
(ADDRESS=(PROTOCOL=tcp)(HOST=centdgpri)(PORT=1521))
(ADDRESS=(PROTOCOL=ipc)(KEY=
EXTPROC1521)))
)
SID_LIST_LISTENER =
(SID_LIST=
(SID_DESC=
(GLOBAL_DBNAME=orcl)
(SID_NAME=orcl)
(ORACLE_HOME=/opt/oracle/product/11.2.0.4/db)
)
(SID_DESC =
(GLOBAL_DBNAME = orcl_DGMGRL)
(ORACLE_HOME = /opt/oracle/product/11.2.0.4/db)
(SID_NAME= orcl)
)
)
ADR_BASE_LISTENER = /opt/oracle
主庫調整,修改 TNS 服務配置文件 tnsnames.ora
DBPRIMARY=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL
=TCP)(HOST=centdgpri)(PORT=1521))
)
(CONNECT_DATA=(SID=orcl)(SERVER=DEDICATED))
)
ORCL=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL
=TCP)(HOST=centdgpri)(PORT=1521))
)
(CONNECT_DATA=(SID=orcl)(SERVER=DEDICATED))
)
DBSTANDBY=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL
=TCP)(HOST=centdgstd)(PORT=1521))
)
(CONNECT_DATA=(SID=orcl)(SERVER=DEDICATED))
)
備庫調整,編輯數據庫啟動 pfile
*.audit_file_dest= /opt/oracle/diag/rdbms/orcl/orcl/adump
*.compatible= 11.2.0.4.0
*.control_files= /opt/oracle/oradata/control01.ctl , /opt/oracle/oradata/control02.ctl
*.core_dump_dest= /opt/oracle/diag/rdbms/orcl/orcl/cdump
*.db_block_size=8192
*.db_create_file_dest= /opt/oracle/oradata
*.db_file_multiblock_read_count=16
*.db_name= orcl
*.db_recovery_file_dest= /opt/oracle/flash_recovery_area
*.db_recovery_file_dest_size=10G
*.diagnostic_dest= /opt/oracle/diag/rdbms/orcl/orcl/trace
*.dispatchers= (PROTOCOL=TCP)
(SERVICE=orcl)
*.job_queue_processes=10
*.log_archive_dest_1= LOCATION=/opt/oracle/arch
*.log_buffer=7356416
# log buffer update
*.open_cursors=300
*.optimizer_dynamic_sampling=2
*.optimizer_mode= ALL_ROWS
*.pga_aggregate_target=186M
*.plsql_warnings= DISABLE:ALL
# PL/SQL warnings at init.ora
*.processes=150
*.query_rewrite_enabled= TRUE
*.remote_login_passwordfile= EXCLUSIVE
*.result_cache_max_size=2880K
*.sga_target=560M
*.skip_unusable_indexes=TRUE
*.undo_management= AUTO
*.undo_tablespace= UNDOTBS1
DB_UNIQUE_NAME= orcls
log_archive_config= DG_CONFIG=(orcls,orcl)
log_archive_dest_1= LOCATION=/opt/oracle/arch
VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orcls
LOG_ARCHIVE_DEST_2= SERVICE=dbprimary LGWR
ASYNC VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orcl
LOG_ARCHIVE_DEST_STATE_1=ENABLE
LOG_ARCHIVE_DEST_STATE_2=ENABLE
FAL_SERVER=dbprimary
FAL_CLIENT=dbstandby
STANDBY_FILE_MANAGEMENT=AUTO
*.log_file_name_convert= /opt/oracle/oradata , /opt/oracle/oradata
*.db_file_name_convert= /opt/oracle/oradata , /opt/oracle/oradata
備庫調整,編輯監聽配置文件 listener.ora
LISTENER =
(DESCRIPTION_LIST=
(DESCRIPTION
=
(ADDRESS=(PROTOCOL=tcp)(HOST=centdgstd)(PORT=1521))
(ADDRESS=(PROTOCOL=ipc)(KEY=
EXTPROC1521)))
)
SID_LIST_LISTENER =
(SID_LIST=
(SID_DESC=
(GLOBAL_DBNAME=orcl)
(SID_NAME=orcl)
(ORACLE_HOME=/opt/oracle/product/11.2.0.4/db)
)
(SID_DESC =
(GLOBAL_DBNAME = orcls_DGMGRL)
(ORACLE_HOME = /opt/oracle/product/11.2.0.4/db)
(SID_NAME= orcl)
)
)
ADR_BASE_LISTENER = /opt/oracle
備庫調整,修改備庫 TNS 服務配置文件 tnsnames.ora
DBPRIMARY=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL
=TCP)(HOST=centdgpri)(PORT=1521))
)
(CONNECT_DATA=(SID=orcl)(SERVER=DEDICATED))
)
ORCLS=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL
=TCP)(HOST=centdgstd)(PORT=1521))
)
(CONNECT_DATA=(SID=orcl)(SERVER=DEDICATED))
)
DBSTANDBY=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL =TCP)(HOST=centdgstd)(PORT=1521))
)
(CONNECT_DATA=(SID=orcl)(SERVER=DEDICATED))
)
6、主庫克隆島備庫
主庫創建 sys 密碼文件并傳送到備庫 dbs 目錄
orapwd
file=$ORACLE_HOME/dbs/PWDorcl.ora password=WaterH2o entries=40 force=y
備庫創建和主庫一致的審計目錄
主庫:
cd
$ORACLE_BASE
tar
-cvf diag.tar diag/
scp
diag.tar centdgstd:/opt/oracle
備庫:
mv
diag $ORACLE_BASE/
cd
$ORACLE_BASE
tar
-xvf diag.tar
mkdir -p
$ORACLE_BASE/flash_recovery_area
mkdir
-p $ORACLE_BASE/oradata
克隆主庫前的 TNS 服務測試,一定要在主備庫均進行測試
tnsping dbprimary
tnsping dbstandby
sqlplus sys/WaterH2o@dbprimary as sysdba
sqlplus sys/WaterH2o@dbstndby as sysdba
主庫克隆到備機
rman target sys/WaterH2o@dbprimary
auxiliary sys/WaterH2o@dbstandby
duplicate
target database for standby from active database nofilenamecheck;
7、開啟備庫的日志同步進程
alter database recover managed standby database
disconnect from session;
8、查看主備庫的角色
select db_unique_name,database_role,switchover_status,open_mode from v$database;
9、驗證物理 DG 的數據同步
select switchover_status from v$database; – 查看有沒有 gap 的歸檔日志
主庫:
select STATUS,
GAP_STATUS from V$ARCHIVE_DEST_STATUS where DEST_ID = 2;
主庫:
SQL select STATUS, GAP_STATUS from
V$ARCHIVE_DEST_STATUS where DEST_ID = 2;
STATUS
GAP_STATUS
———
————————
VALID
RESOLVABLE GAP
備庫:
SQL
select STATUS, GAP_STATUS from V$ARCHIVE_DEST_STATUS where DEST_ID = 2;
STATUS
GAP_STATUS
———
————————
VALID NO
GAP
查看主備庫角色及狀態
select
open_mode,database_role,db_unique_name from v$database;-
主庫:
SQL select open_mode,database_role,db_unique_name
from v$database;
OPEN_MODE DATABASE_ROLE DB_UNIQUE_NAME
——————– —————-
——————————
READ WRITE PRIMARY orcl
SQL
備庫:
SQL select
open_mode,database_role,db_unique_name from v$database;
OPEN_MODE DATABASE_ROLE DB_UNIQUE_NAME
——————– —————-
——————————
READ ONLY WITH APPLY PHYSICAL STANDBY orcl
SQL
查看主備庫的序列號
select max(sequence#) from
v$archived_log;
archive log list;
主庫:
SQL select
max(sequence#) from v$archived_log;
MAX(SEQUENCE#)
————–
25
SQL archive
log list
Database log mode
Archive Mode
Automatic
archival Enabled
Archive
destination /opt/arch
Oldest online log
sequence 24
Next log sequence
to archive 26
Current log
sequence 26
SQL
備庫:
SQL select
max(sequence#) from v$archived_log;
MAX(SEQUENCE#)
————–
25
SQL archive
log list
Database log mode
Archive Mode
Automatic
archival Enabled
Archive
destination /opt/arch
Oldest online log
sequence 17
Next log sequence
to archive 0
Current log
sequence 25
SQL
10、DG Broker 手工管理配置
DG 部署前的主庫確認開啟閃回
select
flashback_on from v$database;
主備庫開啟 dg_broker_start
show parameter
dg_broker_start
alter system set
dg_broker_start=true;
show parameter
dg_broker_start
主庫登錄 dgmrl 客戶端
dgmgrl
sys/WaterH2o@dbprimary
創建 dgb 控制文件(注意一定要進行 tnsping TNS 服務名測試)
create
configuration my_dgb as primary database is orcl connect identifier is dgb_p;
DGMGRL create
configuration my_dgb as primary database is orcl connect identifier is
dbprimary;
Configuration
my_dgb created with primary database orcl
添加備庫
DGMGRL add
database orcls as connect identifier is dbstandby maintained as physical;
Database
orcls added
啟用配置文件
DGMGRL enable configuration;
Enabled.
DGMGRL
驗證配置啟動狀態
DGMGRL show configuration
Configuration – my_dgb
Protection
Mode: MaxPerformance
Databases:
orcl – Primary database
orcls –
Physical standby database
Fast-Start Failover: DISABLED
Configuration Status:
SUCCESS
DGMGRL
開啟主備庫 StandbyFileManagement 并同步到 DGB
SQL alter system
set STANDBY_FILE_MANAGEMENT=AUTO scope=both;
DGMGRL edit
database orcl set property StandbyFileManagement= AUTO
DGMGRL edit database orcls set property StandbyFileManagement= AUTO
DGMGRL EDIT
DATABASE orcl SET PROPERTY LogXptMode= async
DGMGRL EDIT
DATABASE orcls SET PROPERTY LogXptMode= async
取消物理 DG 的兩個參數
alter system
set fal_server= scope=both sid= *
alter system
set fal_client= scope=both sid= *
11、物理 DG 通過 Broker 手工切換主備庫的角色
主備庫切換前的角色檢查
主庫:
SQL select
database_role,switchover_status,open_mode from v$database;
DATABASE_ROLE SWITCHOVER_STATUS OPEN_MODE
—————-
——————– ——————–
PRIMARY TO STANDBY READ WRITE
備庫:
SQL select
database_role,switchover_status,open_mode from v$database;
DATABASE_ROLE SWITCHOVER_STATUS OPEN_MODE
—————-
——————– ——————–
PHYSICAL STANDBY
NOT ALLOWED MOUNTED
DGMGRIL 控制臺切換主備庫
DGMGRL show
configuration
Configuration –
my_dgb
Protection Mode: MaxPerformance
Databases:
orcl – Primary database
orcls – Physical standby database
Fast-Start
Failover: DISABLED
Configuration
Status:
SUCCESS
DGMGRL
switchover to orcls
Performing
switchover NOW, please wait…
Operation
requires a connection to instance orcl on database
orcls
Connecting to
instance orcl …
Connected.
New primary
database orcls is opening…
Operation
requires startup of instance orcl on database orcl
Starting instance
orcl …
ORACLE instance
started.
Database mounted.
Database opened.
Switchover succeeded,
new primary is orcls
DGMGRL
DGMGRL show
configuration
Configuration –
my_dgb
Protection Mode: MaxPerformance
Databases:
orcls – Primary database
orcl – Physical standby database
Fast-Start
Failover: DISABLED
Configuration
Status:
SUCCESS
DGMGRL
DGMGRIL 控制臺手工切換主備庫的結果檢查
新主庫:
SQL select
db_unique_name,database_role,switchover_status,open_mode from v$database;
DB_UNIQUE_NAME DATABASE_ROLE SWITCHOVER_STATUS OPEN_MODE
——————————
—————- ——————– ——————–
orcls PRIMARY TO STANDBY READ WRITE
新備庫:
SQL select
db_unique_name,database_role,switchover_status,open_mode from v$database;
DB_UNIQUE_NAME DATABASE_ROLE SWITCHOVER_STATUS OPEN_MODE
——————————
—————- ——————– ——————–
orcl PHYSICAL STANDBY NOT ALLOWED MOUNTED
12、啟動 DG FFS 即啟動 Failvoer Fast Start
啟用 FFS 必須滿足的條件
主備庫日志同步模式是自動同步
LogXptMode= async
EDIT DATABASE orcl SET PROPERTY LogXptMode= async
EDIT DATABASE orcls SET PROPERTY
LogXptMode= async
主備庫均開啟閃回,目的是啟動快速自動恢復數據庫
select name,db_unique_name,flashback_on
from v$database;
處理 standby 的備庫打開閃回
alter database open read only;
alter database flashback on;
12. 啟用 DG 的 FFS
啟用主備庫的 FFS
edit database orcl set property
FastStartFailoverTarget=orcls;
edit database orcls set property FastStartFailoverTarget=orcl;
enable fast_start failover
啟用結果
13、DG Broker FFS 功能測試
主庫 shutdown abort 故障模擬
登錄主庫發起 shutdown abort
備庫告警日志提示備庫成功接管主庫
observer 提示角色自動切換
確認角色自動切換結果
主庫恢復后啟動
observer 日志提示主備角色分配
原主庫恢復后的主備庫角色查看

看完上述內容,你們掌握如何進行 11.2.0.4 DG for linux 部署的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注丸趣 TV 行業資訊頻道,感謝各位的閱讀!