linux下怎么将oracle配置成双机热备

2022-03-27 社会 131阅读


【DataGuard高可用性】

DataGuard确保企业数据的高可用性,数据保护以及灾难恢复。在主数据库故障无法修复时启动DataGuard的备份库,可以像主库一样继续对外提供服务而不影响业务的持续运行。


主备数据库之间通过日志传输实现数据库数据同步。


日志传输过程

1、在主系统中利用LNS进程(日志传输进程)将日志传输到备用系统

2、备用系统利用RFS(日志接收进程)接收主库传输过来的日志并利用MRP(日志恢复进程)同步数据

3、DataGuard环境中必须保证3个进程正常工作,否则此DataGuard环境将不能满足灾备需要。


【DG可以解决的问题】

1、在主库停机维护时,备份库顶上,使业务应用影响最小

  (1)主库安装OS补丁或Oracle补丁

  (2)主库进行数据整理

2、一个新的数据迁移项目,将数据迁移同型号更高端IBM服务器与存储中,主库数据2T,并且此迁移操作必须停机时间控制在30分钟以内(此次时间远远适于迁移数据库文件所需时间),怎么办?

  (1)把备份库顶上去


3、由于主库(仓库)数据量非常巨大(50T),所以没有常规备份,但此系统存在DataGuard灾备系统,如果主库某数据文件由于某种原因导致介质故障,你将如何对其进行恢复。


4、异地归档日志

------------------------------------------------------------------------------

主库:18.150 备库:18.160


1、主库和备库:开启归档模式

archiveloglist;-----------查看归档启动否


shutdownimmediate;---------开启归档前要正常关库


startupmount;-------------启动Mount状态


alterdatabasearchivelog;-------开启归档模式


alterdatabaseopen;--------开启数据库



2、确认主库强制写日志

selectforce_loggingfromv$database;

(所有sql语句nologging操作时也会强制写日志)


SQL>alterdatabaseforcelogging;


3、修改主备数据库的参数文件

【主】

SQL>createpfilefromspfile;


cd/oracle/app/oracle/product/10.2.0/db_1/dbs/


viinitTEST.ora

 DB_UNIQUE_NAME=TEST

 LOG_ARCHIVE_CONFIG='DG_CONFIG=(DB150,DB160)'

 LOG_ARCHIVE_DEST_1='LOCATION=/home/oracle/archive VALID_FOR=(ALL_LOGFILES,ALL_ROLES)DB_UNIQUE_NAME=TEST' 

 LOG_ARCHIVE_DEST_2='SERVICE=DB160LGWRASYNCVALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)DB_UNIQUE_NAME=TEST'

 FAL_SERVER=DB150      

 FAL_CLIENT=DB160

 STANDBY_FILE_MANAGEMENT=AUTO

【备】

SQL>createpfilefromspfile;


cd/oracle/app/oracle/product/10.2.0/db_1/dbs/


viinitTEST.ora

 DB_UNIQUE_NAME=TEST

 LOG_ARCHIVE_CONFIG='DG_CONFIG=(DB150,DB160)'

 LOG_ARCHIVE_DEST_1='LOCATION=/home/oracle/archive VALID_FOR=(ALL_LOGFILES,ALL_ROLES)DB_UNIQUE_NAME=TEST' 

 LOG_ARCHIVE_DEST_2='SERVICE=DB150LGWRASYNCVALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)DB_UNIQUE_NAME=TEST'

 FAL_SERVER=DB160      

 FAL_CLIENT=DB150

 STANDBY_FILE_MANAGEMENT=AUTO


4、主库和备库

都配置“监听”、“传输文件”,并开启监听


5、主库和备库

都创建“归档日志”目录:mkdir/home/oracle/archive


6、主库和备库

cd/oracle/app/oracle/product/10.2.0/db_1/dbs/

rm-rfspfileTEST.ora

sqlplus/assysdba

SQL>startupforce;

SQL>createspfilefrompfile;


7、备库

SQL>shutdownimmediate

[oracle@sq18admin]$sqlplussys/lipengfeiassysdba

(连接成功)

SQL>startupnomountforce;


8、主库

SQL>showparameterARCHIVE(查看到刚才配置的值生效了)


9、备库

(报错没有相应目录)

[oracle@sq18admin]$mkdir-p/oracle/app/admin/TEST/adump

[oracle@sq18admin]$mkdir-p/oracle/app/admin/TEST/bdump

[oracle@sq18admin]$mkdir-p/oracle/app/admin/TEST/cdump

[oracle@sq18admin]$mkdir-p/oracle/app/flash_recovery_area

[oracle@sq18admin]$mkdir-p/oracle/app/admin/TEST/udum


保证数据库两边的密码文件中的密码一致(主备数据库sys用户密码必须相同,如果备库中没有orapwTEST,从主库中拷贝到来)


10、主库

mkdir/home/oracle/db_bak/

rmantarget/

RMAN>backupfulldatabaseformat='/home/oracle/db_bak/%U'includecurrentcontrolfileforstandby;

(别退出RMAN,第12步用)

11、备库

mkdir/home/oracle/db_bak/


12、主库(把全库备份的文件拷贝到备库)

cd/home/oracle/db_bak/

scp备份文件oracle@192.168.18.160:/home/oracle/db_bak/

RMAN>connectauxiliarysys/lipengfei@DB160

RMAN>duplicatetargetdatabaseforstandbynofilenamecheck;----异机(备库)恢复,保证主备库的数据和状态一样


13、备库

cd/oracle/app/oradata/TEST

ls-------->查看有没有文件

sqlplus/assysdba

SQL>selectopen_modefromv$database;----------mount状态


14、主库

SQL>selectprocessfromv$managed_standby;

(没有灾备的进程)

SQL>altersystemswitchlogfile;

SQL>selectprocessfromv$managed_standby;


PROCESS

---------

ARCH

ARCH

LNS

已经有了进程,lns传输进程)


15、备库

SQL>selectprocessfromv$managed_standby;


PROCESS

---------

ARCH

ARCH

RFS

RFS

(已经有了进程,rfs接收进程)


SQL>alterdatabaserecovermanagedstandbydatabasedisconnectfromsession;


SQL> selectprocessfromv$managed_standby;


PROCESS

---------

ARCH

ARCH

RFS

RFS

MRP0


16、主库

SQL>createtablehahaasselect*fromdba_objects;

SQL>insertintohahaselect*fromhaha;

SQL>altersystemswitchlogfile;


17、备库

SQL>alterdatabaserecovermanagedstandbydatabasecancel;

(备库上,只有把恢复日志进程MRP0取消,才可以打开数据库)

SQL>alterdatabaseopen;

SQL>selectcount(*)fromhaha



【注意】

(1)备用数据库在日志恢复过程中(MRP进程存在期间)数据库处于MOUNTED状态,此时备用数据库无法打开供读取使用

(2)打开备用数据库

   停止备用库的日志恢复进程MRP

   alterdatabaserecovermanagedstandbydatabasecancel;

   open备用数据库,备用数据库默认打开为只读方式

   alterdatabaseopen;

(3)重新启动备用数据库的MRP进程,数据库自动从OPEN状态转换到MOUNT状态

   alterdatabaserecovermanagedstandbydatabasedisconnectfromsession;

(4)mrp进程停止期间,只要RFS进程存在,那么不影响日志的接收


兄弟,以上就是关于oracleDG构架的实验材料,希望可以帮到你!

声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com