DataGuard搭建及踩坑记录

admin 2025-01-17 287人围观 ,发现5个评论
一、Dataguard搭建

Dataguard的主要信息

(一)DataGuard准备工作:1.主库数据库安装:

2.备库数据库安装:

只安装数据库软件,不创建数据库

(二)主库配置1.主库启用归档1)查看及修改数据库归档模式

使用sys以sysdba方式登录数据库(以下均是以这种方式登录数据库)

2)设置数据库归档模式

如果不是归档模式,需要将数据库设置为归档模式,如下:

A.关闭数据库

B.启动数据库到mount状态

C.设置归档模式

alterdatabasearchivelog;

从主库拷贝相关文件到备库2.强制产生日志3.创建密码文件,供备库使用

查看xxx:\oracle\product\11.2.0\dbhome_1\database\文件是否存在,如果存在,不需要再次创建,如果没有,以系统管理员方式运行cmd,其中输入:

orapwdfile=xxx:\oracle\product\11.2.0\dbhome_1\database\=sysentries=10

目录根据oracle安装的实际情况修改

数据库SID为orcl所以,文件名为,根据实际情况修改。

4.主库添加备用联机日志
alterdatabaseaddstandbylogfile'xxx:\oracle\oradata\orcl\redo01_'size50m;alterdatabaseaddstandbylogfile'xxx:\oracle\oradata\orcl\redo02_'size50m;alterdatabaseaddstandbylogfile'xxx:\oracle\oradata\orcl\redo03_'size50m;

文件大小跟原日志大小一致

添加数量跟原文件数量一样,默认是3个,这里也添加三个

5.修改pfile参数,添加dataguard相关参数

导出pfile

在xxx:\oracle目录下会生成文件,用文本编辑器打开,并添加相关参数,红色部分为添加的内容。

orcl.__db_cache_size=339738624orcl.__java_pool_size=4194304orcl.__large_pool_size=4194304orcl.__oracle_base='xxx:\oracle'数据库的unique_name为dbwrite

*.fal_client='dbwrite'当需要主从切换时,dbwrite设为备库,这个值对应ora的设置

*.fal_server='dbread'当需要主从切换时,dbread设为主库,这个值对应ora的设置

*.log_archive_config='DG_CONFIG=(dbwrite,dbread)'定义DG中所有有效的DB_UNIQUE_NAME名字的列表,主从的设置相同

*.log_archive_dest_1='LOCATION=xx:\oracle\flash_recovery_area\orcl\ARCHIVELOGVALID_FOR=(ALL_LOGFILES,ALL_ROLES)DB_UNIQUE_NAME=dbwrite'归档日志的存放位置,LOCATION为存放在本地,LGWR意为之传输redo日志,VALID_FOR=(ALL_LOGFILES,ALL_ROLES)定义所有类型的日志文件和不论主库备库角色一律传递归档到此目录

*.log_archive_dest_2='SERVICE=dbreadLGWRASYNCVALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)DB_UNIQUE_NAME=dbread'第2个归档日志存放的位置,SERIVCE是用于指定备用数据库的TNSNAMES描述符

*.log_archive_dest_state_1='ENABLE'

*.log_archive_dest_state_2='ENABLE'

*.standby_file_management='AUTO'该参数只在当前库为备库时生效,提前设置以便需要进行主备角色切换时使用。建议将其值设置为AUTO

6.以修改完的pfile重新启动数据库

关闭数据库

使用修改完的pfile启动数据库到nomount状态

创建spfile

创建pfile

createpfilefromspfile;
7.建立备库用的控制文件

启动数据到到mount状态

简历备库用的控制文件

8.关闭主库

为拷贝文件做准备

9.修改和

修改,添加

红色部分为新增加的内容

SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(SID_NAME=CLRExtProc)(ORACLE_HOME=xxx:\oracle\product\11.2.0\dbhome_1)(PROGRAM=extproc)(ENVS="EXTPROC_DLLS=ONLY:xxx:\oracle\product\11.2.0\dbhome_1\bin\"))(SID_DESC=(SID_NAME=orcl)(ORACLE_HOME=xxx:\oracle\product\11.2.0\dbhome_1)(PROGRAM=extproc))(SID_DESC=(GLOBAL_DBNAME=orcl)(ORACLE_HOME=xxx:\oracle\product\11.2.0\dbhome_1)(SID_NAME=orcl)))LISTENER=(DESCRIPTION_LIST=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.116)(PORT=1521))(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521))))ADR_BASE_LISTENER=xxx:\oracle

修改,如下:

_CONNECTION_DATA=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))(CONNECT_DATA=(SID=CLRExtProc)(PRESENTATION=RO)))DBREAD=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.108)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=orcl)))DBWRITE=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.116)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=orcl)))ORCL=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.116)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=orcl)))

红色部分为新增加的内容

(三)备库配置

因为备库只安装了软件,所以数据库所需要的相关文件没有,需要手工创建

1.创建备库需要的文件夹
mkdirxxx:\oracle\admin\orclmkdirxxx:\oracle\admin\orcl\adumpmkdirxxx:\oracle\admin\orcl\bdumpmkdirxxx:\oracle\admin\orcl\cdumpmkdirxxx:\oracle\admin\orcl\dpdumpmkdirxxx:\oracle\admin\orcl\pfilemkdirxxx:\oracle\admin\orcl\udumpmkdirxxx:\oracle\diag\rdbmsmkdirxxx:\oracle\diag\tnslsnrmkdirxxx:\oracle\flash_recovery_area\orclmkdirxxx:\oracle\flash_recovery_area\ARCHIVELOG\mkdirxxx:\oracle\oradata\orcl
2.从主库拷贝相关文件到备库

拷贝xxx:\oracle\oradata\orcl目录下除了控制文件外,其他所有文件到备库相同目录中

拷贝备份的控制文件到xxx:\oracle\oradata\orcl下,重命名为

拷贝到xxx:\oracle\flash_recovery_area\orcl目录下,重命名为

拷贝密码文件,到备库的xxx:\oracle\product\11.2.0\dbhome_1\database\目录下。

拷贝pfile文件到备库的xxx:\oracle目录下

3.修改pfile文件
orcl.__db_cache_size=339738624orcl.__java_pool_size=4194304orcl.__large_pool_size=4194304orcl.__oracle_base='xxx:\oracle'#ORACLE_BASEsetfromenvironmentorcl.__pga_aggregate_target=335544320orcl.__sga_target=503316480orcl.__shared_io_pool_size=0orcl.__shared_pool_size=146800640orcl.__streams_pool_size=0*.audit_file_dest='xxx:\oracle\admin\orcl\adump'*.audit_trail='db'*.compatible='11.2.0.0.0'*.control_files='xxx:\oracle\oradata\orcl\','xxx:\oracle\flash_recovery_area\orcl\'*.db_block_size=8192*.db_domain=''*.db_name='orcl'*.db_recovery_file_dest='xxx:\oracle\flash_recovery_area'*.db_recovery_file_dest_size=4039114752*.diagnostic_dest='xxx:\oracle'*.dispatchers='(PROTOCOL=TCP)(SERVICE=orclXDB)'*.memory_target=838860800*.open_cursors=300*.processes=150*.remote_login_passwordfile='EXCLUSIVE'*.undo_tablespace='UNDOTBS1'*.db_unique_name='dbread'*.fal_client='dbread'*.fal_server='dbwrite'*.log_archive_config='DG_CONFIG=(dbwrite,dbread)'*.log_archive_dest_1='LOCATION=xxx:\oracle\flash_recovery_areaLGWRVALID_FOR=(ALL_LOGFILES,ALL_ROLES)DB_UNIQUE_NAME=dbread'*.log_archive_dest_2='SERVICE=dbwriteLGWRASYNCVALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)DB_UNIQUE_NAME=dbwrite'*.log_archive_dest_state_1='ENABLE'*.log_archive_dest_state_2='ENABLE'*.standby_file_management='AUTO'

内容与主库类似

红色部分与主库有区别

4.修改和

同主库,略,如果没有这两个文件,可以从主库拷贝。

5.修改6.设置ORACLE_SID和ORACLE_UNQNAME环境变量

ORACLE_SID为orcl

ORACLE_UNQNAME为dbread

7.创建实例

以系统管理员身份运行cmd

8.以pfile启动数据库

以sys用户sysdba身份连接到数据库

创建spfile

创建pfile

(四)启动DataGuard1.备库启动

关闭备库

启动到nomount

手动恢复状态

备库调整为“READONLY”状态

在“READONLY”状态下进一步启动备库的恢复

确认下备库的状态

确认是READONLYWITHAPPLY

2.主库启动

正常启动即可

(五)DATAGUARD的关闭1.关闭主库

Sys用户sysdba身份登录后,正常关闭主库

2.关闭备库(如果需要)

Sys用户sysdba身份登录后,

停止同步

关闭数据库

猜你喜欢
    不容错过