Oracle 11g DataGuard配置详细说明.docx
《Oracle 11g DataGuard配置详细说明.docx》由会员分享,可在线阅读,更多相关《Oracle 11g DataGuard配置详细说明.docx(15页珍藏版)》请在冰豆网上搜索。
![Oracle 11g DataGuard配置详细说明.docx](https://file1.bdocx.com/fileroot1/2023-1/1/37d7842b-0ade-46d3-b076-9d2d7a0ba44c/37d7842b-0ade-46d3-b076-9d2d7a0ba44c1.gif)
Oracle11gDataGuard配置详细说明
Oracle11gDataGuard配置详细说明
1.判断DataGuard是否安装
select*fromv$optionwhereparameter='OracleDataGuard';
2.数据库环境说明
主库配置:
IP:
192.168.228.133(Oracle11g1),数据库名:
db1,监听服务名:
pri
从库配置:
IP:
192.168.229.134(Oracle11g2),数据库名:
db1,监听服务名:
dg
数据库程序安装路径:
/oracleapp/oinstall/oracle/product/11.2.0/dbhome_1/dbs
数据库存放路径:
/oracledata/db1
3.监听配置
在做oracledataguard主从库配置时候,一定要配置静态监听,否则可能出现监听服务解析错误,不能连接的问题,监听配置如下:
主库配置如下:
[oracle@Oracle11g1admin]$pwd
/oracleapp/oinstall/oracle/product/11.2.0/dbhome_1/network/admin
[oracle@Oracle11g1admin]$catlistener.ora
#listener.oraNetworkConfigurationFile:
/oracleapp/oinstall/oracle/product/1.2.0/dbhome_1/network/admin/listener.ora
#GeneratedbyOracleconfigurationtools.
WU=
(DESCRIPTION_LIST=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=Oracle11g2)(PORT=1521))
)
)
SID_LIST_WU=
(SID_LIST=
(SID_DESC=
(GLOBAL_DBNAME=pri)
(ORACLE_HOME=/oracleapp/oinstall/oracle/product/11.2.0/dbhome_1)
(SID_NAME=db1)
)
)
ADR_BASE_WU=/oracleapp/oinstall/oracle
#注意这里的global_dbname=pri,SID_NAME=db1,这个SID_NAME应与你对外提供服务的$ORACLE_SID一致,即数据库:
db1
[oracle@Oracle11g1admin]$cattnsnames.ora
#tnsnames.oraNetworkConfigurationFile:
/oracleapp/oinstall/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora
#GeneratedbyOracleconfigurationtools.
pri=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=Oracle11g1)(PORT=1521))
(CONNECT_DATA=
(SERVER=DEDICATED)
(SERVICE_NAME=pri)
)
)
dg=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=Oracle11g2)(PORT=1521))
(CONNECT_DATA=
(SERVER=DEDICATED)
(SERVICE_NAME=dg)
)
)
#tnsnamepri中的SERVICE_NAME=pri,这里的服务名为pri而不是通常的db1,因为在listener.ora中已经注册了pri,lsnrctl启动时会监听pri,并对应到SID_NAME=db1上。
从库配置如下:
[oracle@Oracle11g2admin]$catlistener.ora
#listener.oraNetworkConfigurationFile:
/oracleapp/oinstall/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
#GeneratedbyOracleconfigurationtools.
WU=
(DESCRIPTION_LIST=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=Oracle11g2)(PORT=1521))
)
)
SID_LIST_WU=
(SID_LIST=
(SID_DESC=
(GLOBAL_DBNAME=dg)
(ORACLE_HOME=/oracleapp/oinstall/oracle/product/11.2.0/dbhome_1)
(SID_NAME=db1)
)
)
ADR_BASE_WU=/oracleapp/oinstall/oracle
[oracle@Oracle11g2admin]$cattnsnames.ora
#tnsnames.oraNetworkConfigurationFile:
/oracleapp/oinstall/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora
#GeneratedbyOracleconfigurationtools.
pri=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=Oracle11g1)(PORT=1521))
(CONNECT_DATA=
(SERVER=DEDICATED)
(SERVICE_NAME=pri)
)
)
dg=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=Oracle11g2)(PORT=1521))
(CONNECT_DATA=
(SERVER=DEDICATED)
(SERVICE_NAME=dg)
)
)
分别用tnsping命令测试监听服务是否可用,正常显示信息如下:
(tnsping对方的时候,有可能linux防火墙限制了,会提示TNS-12560:
TNS:
协议适配器错误)
[oracle@Oracle11g2dbs]$tnspingdg
TNSPingUtilityforLinux:
Version11.2.0.1.0-Productionon27-MAY-201415:
39:
34
Copyright(c)1997,2009,Oracle.Allrightsreserved.
Usedparameterfiles:
UsedTNSNAMESadaptertoresolvethealias
Attemptingtocontact(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=Oracle11g2)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=dg)))
OK(10msec)
[oracle@Oracle11g2dbs]$tnspingpri
TNSPingUtilityforLinux:
Version11.2.0.1.0-Productionon27-MAY-201415:
40:
16
Copyright(c)1997,2009,Oracle.Allrightsreserved.
Usedparameterfiles:
UsedTNSNAMESadaptertoresolvethealias
Attemptingtocontact(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=Oracle11g1)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=pri)))
OK(10msec)
[oracle@Oracle11g2dbs]$
4.主库前期准备
设置强制写日志
[oracle@Oracle11g2admin]$sqlplus/assysdba
SQL>selectFORCE_LOGGINGfromv$database;
NO
SQL>alterdatabaseforcelogging;
SQL>selectFORCE_LOGGINGfromv$database;
YES
5.创建口令文件
通过dbca命令创建的数据库会自动在/oracleapp/oinstall/oracle/product/11.2.0/dbhome_1/dbs目录下创建orapwdb1密码文件,也可以通过如下命令创建
[oracle@Oracle11g1admin]$orapwdfile=/oracleapp/oinstall/oracle/product/11.2.0/dbhome_1/dbs/orapwdb1password=oracleentries=5
密码文件为orapw(数据库ID),这里为orapwdb1.
6.修改主库初始化参数
在initdb1.ora文件下增加如下参数:
[oracle@Oracle11g2dbs]$viminitdb1.ora
*.DB_UNIQUE_NAME=pri
*.LOG_ARCHIVE_CONFIG='DG_CONFIG=(pri,dg)'#(启动db接受或发送redodata,包括所有库的db_unique_name)
*.LOG_ARCHIVE_DEST_1='LOCATION=/oracleapp/oinstall/oracle/archiveVALID_FOR=(ALL_LOGFILES,ALL_ROLES)DB_UNIQUE_NAME=pri'#(主库归档目的地)
*.LOG_ARCHIVE_DEST_2='SERVICE=dgLGWRASYNCVALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)DB_UNIQUE_NAME=dg'#(当该库充当主库角色时,设置物理备库redodata的传输目的地)
*.LOG_ARCHIVE_MAX_PROCESSES=5(最大ARCn进程数)
*.LOG_ARCHIVE_DEST_STATE_1=ENABLE#允许redo传输服务传输数据到目的地
*.LOG_ARCHIVE_DEST_STATE_2=ENABLE#允许redo传输服务传输数据到目的地
*.LOG_ARCHIVE_FORMAT=%t_%s_%r.arc#配置日志格式
*.FAL_SERVER=dg#(配置网络服务名,假如转换为备库角色时,从这里获取丢失的归档文件)
*.FAL_CLIENT=pri#(配置网络服务名,fal_server拷贝丢失的归档文件到这里)
#*.DB_FILE_NAME_CONVERT='/路径','路径'(前为切换后的主库路径,后为切换后的备库路径,这里主备库目录结构完全一样,则无需设定)
#*.LOG_FILE_NAME_CONVERT='/路径','/路径'(同上,这两个名字转换参数是主备库的路径映射关系,可能会是路径全名,看情况而定)
*.STANDBY_FILE_MANAGEMENT=AUTO(auto后当主库的datafiles增删时备库也同样自动操作,且会把日志传送到备库standby_archive_dest参数指定的目录下,确保该目录存在,如果你的存储采用文件系统没有问题,但是如果采用了裸设备,你就必须将该参数设置为manual)
*.remote_login_passwordfile='EXCLUSIVE'#(exclusiveorshared,所有库sys密码要一致,默认是exclusive)
[oracle@Oracle11g1dbs]$sqlplus/assysdba
创建主库spfile
sql>startuppfile='/oracleapp/oinstall/oracle/product/11.2.0/dbhome_1/dbs/initdb1.ora';
sql>createspfilefrompfile;
7.修改数据库运行在归档模式下
sql>SHUTDOWNIMMEDIATE;
sql>STARTUPMOUNT;
sql>ALTERDATABASEARCHIVELOG;
sql>ALTERDATABASEOPEN;
8.创建备份库需要的控制文件
创建控制文件
sql>Shutdownimmediate
sql>STARTUPMOUNT;
sql>ALTERDATABASECREATESTANDBYCONTROLFILEAS'/tmp/standby.ctl';sql>ALTERDATABASEOPEN;
sql>shutdownimmediate;
sql>startup
9.备份生产数据库
将主库数据库文件拷贝到备份机器上Oracle11g2
[oracle@Oracle11g1dbs]scp-rp/oracledata/db1Oracle11g2:
/oracledata/
[oracle@Oracle11g1dbs]scp–rp/oracleapp/oinstall/oracle/admin/db1Oracle11g2:
/oracleapp/oinstall/oracle/admin(记得在备库创建admin)
在Oracle11g2上删掉数据库的控制文件control01.ctl
[oracle@Oracle11g2~]rm-rf/oracledata/db1/control01.ctl
将备份的控制文件拷贝到备份机器上,并复制两个备份control02.ctl,control03.ctl
[oracle@Oracle11g1dbs]scp-rp/tmp/standby.ctlOracle11g2:
/oracledata/db1/control01.ctl
在Oracle11g2上操作
[oracle@Oracle11g2db1]$cd/oracledata/db1/
[oracle@Oracle11g2db1]cpcontrol01.ctlcontrol02.ctl
[oracle@Oracle11g2db1]cpcontrol01.ctlcontrol03.ctl
将control02.ctl复制到/oracleapp/oinstall/oracle/flash_recovery_area/db1下
先建立db1文件夹
[oracle@Oracle11g2db1]mkdir/oracleapp/oinstall/oracle/flash_recovery_area/db1
[oracle@Oracle11g2dbs]cpcontrol02.ctl/oracleapp/oinstall/oracle/flash_recovery_area/db1/control02.ctl
10.修改备库pfile
将主库的orapwdb1,initdb1.ora文件拷贝到从库/oracleapp/oinstall/oracle/product/11.2.0/dbhome_1/dbs下面
[oracle@Oracle11g1dbs]scp-rporapwdb1Oracle11g2:
/oracleapp/oinstall/oracle/product/11.2.0/dbhome_1/dbs/orapwdb1
[oracle@Oracle11g1dbs]scp-rpinitdb1.oraOracle11g2:
/oracleapp/oinstall/oracle/product/11.2.0/dbhome_1/dbs/initdb1.ora
在从库机器上修改initdb1.ora文件参数
[oracle@Oracle11g2dbs]viminitdb1.ora
*.DB_UNIQUE_NAME=dg
*.LOG_ARCHIVE_CONFIG='DG_CONFIG=(pri,dg)'#(启动db接受或发送redodata,包括所有库的db_unique_name)
*.LOG_ARCHIVE_DEST_1='LOCATION=/oracleapp/oinstall/oracle/archiveVALID_FOR=(ALL_LOGFILES,ALL_ROLES)DB_UNIQUE_NAME=dg'#(主库归档目的地)
*.LOG_ARCHIVE_DEST_2='SERVICE=priLGWRASYNCVALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)DB_UNIQUE_NAME=pri'#(当该库充当主库角色时,设置物理备库redodata的传输目的地)
*.LOG_ARCHIVE_MAX_PROCESSES=5(最大ARCn进程数)
*.LOG_ARCHIVE_DEST_STATE_1=ENABLE#允许redo传输服务传输数据到目的地
*.LOG_ARCHIVE_DEST_STATE_2=ENABLE#允许redo传输服务传输数据到目的地
*.LOG_ARCHIVE_FORMAT=%t_%s_%r.arc#配置日志格式
*.FAL_SERVER=pri#(配置网络服务名,假如转换为备库角色时,从这里获取丢失的归档文件)
*.FAL_CLIENT=dg#(配置网络服务名,fal_server拷贝丢失的归档文件到这里)
#*.DB_FILE_NAME_CONVERT='/路径','路径'(前为切换后的主库路径,后为切换后的备库路径,这里主备库目录结构完全一样,则无需设定)
#*.LOG_FILE_NAME_CONVERT='/路径','/路径'(同上,这两个名字转换参数是主备库的路径映射关系,可能会是路径全名,看情况而定)
*.STANDBY_FILE_MANAGEMENT=AUTO(auto后当主库的datafiles增删时备库也同样自动操作,且会把日志传送到备库standby_archive_dest参数指定的目录下,确保该目录存在,如果你的存储采用文件系统没有问题,但是如果采用了裸设备,你就必须将该参数设置为manual)
*.remote_login_passwordfile='EXCLUSIVE'#(exclusiveorshared,所有库sys密码要一致,默认是exclusive)
11.在备库上创建spfile
[oracle@Oracle11g2dbs]$sqlplus/assysdba
创建备库spfile
sql>Shutdownimmediate
sql>startuppfile='/oracleapp/oinstall/oracle/product/11.2.0/dbhome_1/dbs/initdb1.ora';
sql>createspfilefrompfile;
12.启动物理备用数据库
sql>Shutdownimmediate
sql>STARTUPMOUNT;
13.配置standbyredolog
(最佳性能模式可以忽略,如果要转为其它两种模式则要建立)
分部在Oracle11g1和Oracle11g2上建立standby文件夹,用于standbyRedolog
[oracle@Oracle11g2dbs]mkdir/oracledata/db1/standby
[oracle@Oracle11g1dbs]mkdir/oracledata/db1/standby
在主库、从库上都配置standbyredolog
在主库查看日志组的数量和每个日志文件的大小
SQL>SELECTGROUP#,BYTESFROMV$LOG;
在备库库查看日志组的数量和每个日志文件的大小
SQL>SELECTGROUP#,BYTESFROMV$STANDBY_LOG;
创建日志组和redolog文件
SQL>ALTERDATABASEADDSTANDBYLOGFILEgroup4('//oracledata/db1/standby/slog1.rdo')SIZE50M;
SQL>ALTERDATABASEADDSTANDBYLOGFILEgroup5('/oracledata/db1/standby/slog2.rdo')SIZE50M;
SQL>ALTERDATABASEADDSTANDBYLOGFILEgroup6('/oracledata/db1/standby/slog3.rdo')SIZE50M;
SQL>ALTERDATABASEADDSTANDBYLOGFILEgroup7('/oracledata/db1/standby/slog4.rdo')SIZE50M;
standbyredolog的组数参考公式:
(onlineredolog组数+1)*数据库线程数;单机线程数为1,RAC一般为2。
standbyredolog的组成员数和大小也尽量和onlineredolog一样。
14.StartRedoApply
sql>ALTERDATABASERECOVERMANAGEDSTANDBYDATABASEUSINGCURRENTLOGFILEDISCONNECTFROMSESSION;
查看哪些归档日志被APPLY了在备库
sql>SELECTSEQUENCE#,APPLIEDFROMV$ARCHIVED_LOGORDERBYSEQUENCE#;
在主库强制日志切换到当前的onlineredologfile.
sql>ALTERSYSTEMARCHIVELOGCURRENT;
在备库查看新的被归档的redodata
sql>SELECTSEQUENCE#,FIRST_TIME,