首页 > 数据库 >Oracle数据库主从切换

Oracle数据库主从切换

时间:2022-10-28 16:00:57浏览次数:46  
标签:主库 备库 DATABASE 数据库 database ALTER SQL Oracle 主从


Oracle主从切换​

  1. 主从查看打开状态:[root@odb1 ~]# su - oracle
    export NLS_LANG="AMERICAN_AMERICA.ZHS16GBK"
    [oracle@odb1 ~]$ source .bash_profile
    [oracle@odb1 ~]$ sqlplus / as sysdba
    SQL> select open_mode from v$database;
  2. 校验主数据库执行切换的前提条件:主库执行:
    ALTER SYSTEM ARCHIVE LOG CURRENT;
    ALTER SYSTEM ARCHIVE LOG CURRENT;
    主备库查看日志状态:
    SQL> select THREAD#,sequence#,FIRST_TIME, NEXT_TIME from v$archived_log where DEST_ID=1 order by FIRST_TIME;

    备库查看日志状态:
    SQL> Set linesize 200
    SQL> select THREAD#,sequence#,FIRST_TIME, NEXT_TIME from v$archived_log where DEST_ID=1 order by FIRST_TIME;

核对主备输出结果,关闭主库的一个RAC实例​

  1. 在主库上执行:(在此之前关闭所以数据库连接)SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;
    期望输出结果为:TO STANDBY 或 SESSIONS ACTIVE

说明:如果该列值为"TO STANDBY"则表示primary 数据库支持转换为standby 角色,否则的话你就需要重新检查一下Data Guard 配置,比如看看LOG_ARCHIVE_DEST_n 之类参数值是否正确有效等等​

  1. 在备库执行:SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;
    期望输出结果:NOT ALLOWED
  2. 在主库上发起切换:首先将PRIMARY转换为standby 的角色SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY WITH SESSION SHUTDOWN;

说明:PRIMARY进行转换完毕后,查看状态会变成RECOVERY NEEDED;​

  1. 关闭主库实例并重启到SQL> shutdown abort;
    SQL> startup nomount;
    SQL> alter database mount standby database;

  2. 主备库查看状态信息SQL> select database_role,switchover_status from v$database;

  3. 备库查看切换状态:期望结果为:TO PRIMARYSQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;

  4. 备库切换数据库角色到主角色,将standby 切换到 primary 角色​SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN;​
  5. 备库查看日志​[oracle@odb2 trace]$ cd /u01/app/oracle/diag/rdbms/odb2/orcl/trace​
    [oracle@odb2 trace]$ tail -f alert_orcl.log -n 100​
  6. 主备查看日志情况SQL> show parameter log_archive_dest_1;

SQL> show parameter log_archive_dest_2;​

Oracle数据库主从切换_hive


  1. 主备库查看连接的名称:SQL> show parameter fal;

    alter system set fal_server=’odb1’

alter system set fal_client=’odb2’​

  1. 备库打开,确认备库接收日志SQL> alter database open;
    SQL> ALTER SYSTEM SET log_archive_dest_2='SERVICE=odb1 LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=odb1';

    SQL> alter system switch logfile;
  2. 原主库启动恢复模式,并启动追加数据:SQL> alter database open;
    SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;

附:取消日志应用SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL; ​

在open状态下执行日志即使运用SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;​

  1. 现在的主数据库启动​SQL> ALTER SYSTEM ARCHIVE LOG CURRENT;​



  2. 确认数据库日志应用到备数据库​

现主库​

SQL> select database_role,switchover_status from v$database;​


Oracle数据库主从切换_hive_02


现备库​

SQL> select database_role,switchover_status from v$database;​


Oracle数据库主从切换_oracle_03





附加主从切换验证:​


主从库状态查看:现主库为:READ WRITE/ 现从库为:READ ONLY WITH APPLY​

SQL> select open_mode from v$database;​


Oracle数据库主从切换_oracle_04



创建测试用户测试:​

SQL> create user aa22 identified by 123456;​

原主库因为改为备库而无法写入数据​

Oracle数据库主从切换_hive_05




SQL> select * from all_users;​

Oracle数据库主从切换_oracle_06



主备同步状态查看:新主库略大于备库,并处于实时更新状态​

SQL> col current_scn for 9999999999999999​

SQL> select scn_to_timestamp(current_scn),current_scn from v$database;​


Oracle数据库主从切换_oracle_07




第3台切换主库​

cd $ORACLE_BASE​

cd diag/rdbms/orcl/trace​

less alert_oracle.log​

lqlplus / as sysdba​

show parameter fal;​

show parameter db_uni​







标签:主库,备库,DATABASE,数据库,database,ALTER,SQL,Oracle,主从
From: https://blog.51cto.com/u_14355475/5804931

相关文章

  • Oracle数据库备份恢复
    ORACLE数据库备份恢复​一.​1.备份生产数据库​在线备份:​采用ARCHIVELOGmode方式备份,可以脱机或联机备份。需要备份数据库和归档日志​$.oraenvORACLE_SID=[prim]?......
  • Oracle安装示例数据库(Linux)
    前言数据库示例(OracleDatabaseExamples)包含了一系列的示例脚本和产品功能演示的Schema信息,在学习Oracle数据库的过程中可以通过这些示例更好的掌握数据库相关的选项和......
  • 10月28日Mybatis结果与数据库结果不一致
    Mybatis结果与数据库结果不一致1数据库有结果,而mybatis无结果2数据库1条结果,而mtbatis三条结果报错情况:点击查看代码CreatinganewSqlSessionSqlSession[org.apa......
  • sqllite (2) - c# .net 使用 sqllite 增删改查操作数据库
    sqllite(2)-c#.net使用sqllite增删改查操作数据库环境配置:开发环境:vs2013运行时版本:framework4.0 sqllite版本:非混合模式的静态链......
  • mysql的主从复制原理
    MySQL主从复制面试和原理1.什么事是主从赋值主从复制是用来建立一个主数据库master和一个一样的从数据库,主数据库一般是准实时update,inster,delete从数据库一般都是进行......
  • 经典数据库面试题
      题目和答案来源:https://www.cnblogs.com/pythonxiaohu/p/5749864.html3、查询平均成绩大于60分的同学的学号和平均成绩;思路:根据学生分组,使用avg获取平均值,通过havin......
  • Linux环境下mysql数据库备份操作说明
    如下:一、 编写数据库备份shell脚本1、登录服务器,进入mysql安装目录。例:cd/usr/local/mysql2、创建目录dbBakShell和dbbak,用于放置数据备份脚本及备份文件mkdir d......
  • 关系数据库标准语言sql(练习题)
    学生选课数据库中表结构如下:学生(学号,姓名,年龄,性别,所在系);课程(课程号,课程名,学分,先行课);选课(学号,课程号,成绩);在学生选课数据库中运用SQL语言实现下面的数据查询操作。求选修......
  • Oracle RAC调整网卡MTU值
    ---原文https://cloud.tencent.com/developer/article/1658019在OracleRAC的环境中,如果我们发现OSW监控数据显示包重组失败率过高,就需要引起足够的重视,因为这很可能会引......
  • Oracle 数据库 日常操作函数
    --获取当天数据select*fromPOS_TRANMAINwheretrunc(SLDATE)=trunc(sysdate);--decode等同于casewhenthendecode(条件,值1,返回值1,值2,返回值2....)--to_char......