共计 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 行业资讯频道,感谢各位的阅读!