博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
day16——oracle灾备1
阅读量:4582 次
发布时间:2019-06-09

本文共 5720 字,大约阅读时间需要 19 分钟。

RAC (oracle应用集群) 互相备份
DATAGARD (灾备)      数据冗余
-----------------
Data Guard三种保护模式
Oracle Data Guard为我们提供了非常人性化的三种保护模式,其目的应用于不同的保护级别和场合,存在的目的就是让我们的数据库,健健康康活着,创造出自己的价值
1)保护最大化:主库与备库实时同步数据,如果主库挂了,备库也不能前进,等主库好了,备库才能前进(在写入主库的redo日志时同时写入备库redo日志,并且保证至少有一个备库redo日志可用【当你有多个备库时】),最大限度的保证数据的完整性,不允许丢数据。实际生产很少用
2)可用最大化:主库与备库实时同步数据,当网络或备库出现问题时,不影响主库的工作
而是转换为“性能最大化”模式,等备库恢复正常后,再转换为可用最大化模式。实际生产很少用
3)性能最大化:主库与备库是异步传输数据(定期传日志),保证主库的性能最好,如果主库挂了,尽最大努力恢复备库。实际生产很多用
总结:最大保护和最大可用都需要至少一个备库的redo日志可用。最大性能有可能丢数据,只能尽最大努力去恢复备库
1.卸载8.2 上的oracle
[oracle@sq18 ~]$ /oracle/app/oracle/product/10.2.0/db_1/bin/localconfig delete
(获取卸载信息)
[oracle@sq18 ~]$ cd $ORACLE_HOME/bin
[oracle@sq18 bin]$ su root
[root@sq18 bin]# /oracle/app/oracle/product/10.2.0/db_1/bin/localconfig delete
(删除本地配置,第二行报错不影响)
[root@sq18 bin]# rm -rf /etc/oraInst.loc /etc/oratab
[root@sq18 bin]# rm -rf /etc/oracle/
[root@sq18 bin]# rm -rf /usr/local/bin/coraenv /usr/local/bin/dbhome /usr/local/bin/oraenv
[oracle@sq ~]$ rm -rf $ORACLE_BASE/*
2.主机8.2重新安装
[oracle@sq ~]$ vi .bash_profile
ORACLE_SID=TEST
(把之前配置好的sid改为8.5一样的TEST)
oracle 登陆重新安装
./runInstaller 
3.重装完后
$ cd $ORACLE_HOME/dbs
没有spfile
--------------------------------------
主库8.2
1.确认为归档模式
2.确认主库强制写日志
SQL> select force_logging from v$database;
(所有sql语句nologging操作时 也会强制写日志)
SQL> alter database force logging;
3.修改主备数据库的参数文件
[oracle@sq123 ~]$ cd /oracle/app/oracle/product/10.2.0/db_1/dbs/
[oracle@sq123 dbs]$ more spfileTEST.ora (复制到记事本添加下面内容)
DB_UNIQUE_NAME=TEST   --show parameter DB_UNIQUE_NAME确认主库名称
LOG_ARCHIVE_CONFIG='DG_CONFIG=(db82,db85)'    --此处为主库网络连接串(tnsnames.ora)
LOG_ARCHIVE_DEST_1='LOCATION=/home/oracle/archive  VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=TEST'               --主库的归档日志路径
LOG_ARCHIVE_DEST_2='SERVICE=db82 LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=TEST'
FAL_SERVER=db82                 --网络异常恢复后自动将延迟的归档日志传输到备库,此处为主库网络连接串(tnsnames.ora)
FAL_CLIENT=db85 
STANDBY_FILE_MANAGEMENT=AUTO    (默认只传递数据,此作用主库把新创建的数据文件也传到备库)
[oracle@sq123 admin]$ vi tnsnames.ora 
db85 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.8.5)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = TEST)
    )
  )
db82 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.8.2)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = TEST)
    )
  )
[oracle@sq123 ~]$ mkdir /home/oracle/archive
[oracle@sq123 ~]$ vi initnew.ora
(把记事本中内容粘贴到新建文档)
SQL> startup pfile='/home/oracle/initnew.ora' force
SQL> show parameter ARCHIVE(查看到刚才配置的值生效了)
SQL> show parameter fal
---------
修改备库的参数文件
把主库的参数文件拷贝到备库
备库8.2上
[oracle@sq18 dbs]$ mkdir /home/oracle/archive
[oracle@sq18 dbs]$ cd $ORACLE_HOME/dbs
修改3行
LOG_ARCHIVE_DEST_2='SERVICE=db85 LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=TEST'
FAL_SERVER=db85
FAL_CLIENT=db82
[oracle@sq18 admin]$ sqlplus sys/123456 as sysdba
(报错没有相应目录)
[oracle@sq18 admin]$ mkdir -p /oracle/app/admin/TEST/adump
[oracle@sq18 admin]$ mkdir -p /oracle/app/admin/TEST/bdump
[oracle@sq18 admin]$ mkdir -p /oracle/app/admin/TEST/cdump
[oracle@sq18 admin]$ mkdir -p /oracle/app/flash_recovery_area
[oracle@sq18 admin]$ mkdir -p /oracle/app/admin/TEST/udump
[oracle@sq18 admin]$ sqlplus sys/123456 as sysdba
(连接成功)
SQL> startup nomount force;
4、保证数据库两边的密码文件中的密码一致(主备数据库sys用户密码必须相同)
5、保证主备数据库之间通过tns网络连接串能够互相连通对方
85上本地测试
[oracle@sq123 ~]$ sqlplus sys/123456@db85 as sysdba(成功)
[oracle@sq123 ~]$ sqlplus sys/123456@db82 as sysdba (不成功)
把85上的listener.ora  ,tnsnames.ora复制过去
[oracle@sq18 ~]$ lsnrctl start
85上
[oracle@sq123 ~]$ sqlplus sys/123456@db82 as sysdba
(还是不成功,报权限错误,但sys登陆不可能出现权限问题,因为82上没有口令文件)
82上
[oracle@sq18 ~]$ cd $ORACLE_HOME/dbs(没有口令文件)
85上(拷贝口令文件过去)
[oracle@sq123 dbs]$ scp orapwTEST oracle@192.168.8.2:$ORACLE_HOME/dbs
[oracle@sq123 dbs]$  sqlplus sys/123456@db82 as sysdba(连接成功)
82上
[oracle@sq18 dbs]$ sqlplus sys/123456@db85 as sysdba(成功)
6.迁移主库数据库文件到备库,以下RMAN操作全部在主库执行
主库上85
[oracle@sq123 ~]$ mkdir db_bak
RMAN> backup full database format='/home/oracle/db_bak/%U' include current controlfile for standby;
82上(传输备份片文件到备库的相同备份目录下)
[oracle@sq18 ~]$ mkdir /home/oracle/db_bak
[oracle@sq18 app]$ mkdir -p oradata/TEST/
85上
[oracle@sq123 db_bak]$ scp * oracle@192.168.8.2:/home/oracle/db_bak/
RMAN> connect auxiliary sys/123456@db82(85上,一定不要退出上次的RMAN连接)
RMAN> duplicate target database for standby nofilenamecheck;
7.查看进程
85上
SQL> select process from v$managed_standby;
(没有灾备的进程)
查看归档错误信息
SQL> select error from v$archive_dest;
82上
SQL> alter database mount;
85上
SQL> alter system switch logfile;
SQL> select process from v$managed_standby;
PROCESS
---------
ARCH
ARCH
LNS
(已经有了进程,lns传输进程)
82上
SQL> select process from v$managed_standby;
PROCESS
---------
ARCH
ARCH
RFS
RFS
(已经有了进程,rfs接收进程)
备库具有恢复日志进程,需要手动激活此进程
82上
SQL> alter database recover managed standby database disconnect from session;
SQL>  select process from v$managed_standby;
PROCESS
---------
ARCH
ARCH
RFS
RFS
MRP0
SQL> create spfile from pfile='/home/oracle/initnew.ora';
8.验证
85 主库上
SQL> create table t01 as select * from dba_objects;
SQL> commit;
(主库只有切换日志时,备库会同步,但主库日志变化 备库会记录到归档日志中)
SQL> alter system switch logfile;
82上
SQL> alter database recover managed standby database cancel;
(备库上,只有把恢复日志进程取消,才可以打开数据库)
SQL> alter database open;
SQL> select count(*) from t01;(已经有了)
=================================================
注意:
(1)备用数据库在日志恢复过程中(MRP进程存在期间)数据库处于MOUNTED状态,此时备用数据库无法打开供读取使用
(2)打开备用数据库
     停止备用库的日志恢复进程MRP
     alter database recover managed standby database cancel;
     open备用数据库,备用数据库默认打开为只读方式
     alter database open;
(3)重新启动备用数据库的MRP进程,数据库自动从OPEN状态转换到MOUNT 状态
     alter database recover managed standby database disconnect from session;
(4)mrp进程停止期间,只要RFS进程存在,那么不影响日志的接收
====================================================

转载于:https://www.cnblogs.com/xiaoxiao5ya/p/0a584a0f0f402f44aad3036a269ea764.html

你可能感兴趣的文章
北航软院2013级C#期末考试部分考题解答
查看>>
CentOS 系统中安装 ArcGIS Server10.1 一些问题及解决
查看>>
Sharepoint学习笔记—习题系列--70-573习题解析 -(Q142-Q143)
查看>>
asp.net里登陆记住密码
查看>>
【BZOJ】2190 [SDOI2008]仪仗队(欧拉函数)
查看>>
线性规划中的单纯形法与内点法(原理、步骤以及matlab实现)(一)
查看>>
简单DP【p2758】编辑距离
查看>>
Spring Data JPA:关联映射操作
查看>>
JWT入门简介
查看>>
GDAL 网址
查看>>
结对编程——吐槽必应词典
查看>>
katalon系列八:Katalon Studio图片识别
查看>>
Spring操作指南-针对JDBC配置声明式事务管理(基于XML)
查看>>
sql server 调优----索引缺失
查看>>
spring + junit 测试
查看>>
.net core 无法获取本地变量或参数的值,因为它在此指令指针中不可用,可能是因为它已经被优化掉了...
查看>>
Poj2186Popular Cows
查看>>
TCP之listen&backlog
查看>>
实验室的毕业照
查看>>
核心编程答案(第六章)
查看>>