利用RMAN搭建DATAGARD进行主备切换

使用rman的duplicate来创建备库,过程简洁了不少,无需在手动创建备库控制文件。


主库SPFILE  

*.log_archive_format='%T%S%r.ARC'
*.DB_UNIQUE_NAME='primary'
*.log_archive_config='DG_CONFIG=(primary,standby)'
*.log_archive_dest_1='location=C:/oracle/product/10.2.0/oradata/arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=primary'
*.log_archive_dest_2='SERVICE=standby arch ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=standby'
*.STANDBY_FILE_MANAGEMENT=AUTO
*.LOG_ARCHIVE_DEST_STATE_1=ENABLE
*.LOG_ARCHIVE_DEST_STATE_2=ENABLE

*.FAL_SERVER='standby'

*.FAL_CLIENT='primary'


备库SPFILE  在主库创建SPFILE给备库 并修改

*.log_archive_format='%T%S%r.ARC'
*.DB_UNIQUE_NAME='standby'
*.log_archive_config='DG_CONFIG=(primary,standby)'
*.log_archive_dest_1='location=C:/oracle/product/10.2.0/oradata/arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=standby'
*.log_archive_dest_2='SERVICE=primary arch ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=primary'
*.STANDBY_FILE_MANAGEMENT=AUTO
*.LOG_ARCHIVE_DEST_STATE_1=ENABLE
*.LOG_ARCHIVE_DEST_STATE_2=ENABLE
*.FAL_SERVER='primary'
*.FAL_CLIENT='standby'


配置好TNS 监听能互相TNSPING通

主库操作

修改LOGFILE大小为100M,添加4组备用联机日志

SQL> alter database add logfile group 4 'c:\oracle\product\10.2.0\oradata\orcl\r
edolog04.log' size 50M;

SQL> alter database add logfile group 5 'c:\oracle\product\10.2.0\oradata\orcl\r
edolog05.log' size 50M;

SQL> alter system switch logfile;

SQL> alter database drop logfile group 1;

SQL> alter database drop logfile group 2;

SQL> alter database drop logfile group 3;

SQL> alter database add logfile group 2 'c:\oracle\product\10.2.0\oradata\orcl\r
edolog02.log' size 100M;

SQL> alter database add logfile group 3 'c:\oracle\product\10.2.0\oradata\orcl\r
edolog03.log' size 100M;

SQL> alter database drop logfile group 4;

SQL> select group#,sequence#,status from v$log;


    GROUP#  SEQUENCE# STATUS
---------- ---------- --------------------------------
         1         15 CURRENT
         2          0 UNUSED
         3          0 UNUSED
         5         14 ACTIVE


SQL> alter system switch logfile;

SQL> select group#,sequence#,status from v$log;


    GROUP#  SEQUENCE# STATUS
---------- ---------- --------------------------------
         1         19 INACTIVE
         2         20 ACTIVE
         3         21 CURRENT
         5         18 INACTIVE

SQL> alter database drop logfile group 5;

数据库已更改。

SQL> select group#,sequence#,status from v$log;


    GROUP#  SEQUENCE# STATUS
---------- ---------- --------------------------------
         1         19 INACTIVE
         2         20 ACTIVE
         3         21 CURRENT

SQL> alter database add standby logfile group 4 'c:\oracle\product\10.2.0\oradat
a\orcl\standbylog04.log' size 50M;

数据库已更改。

SQL> alter database add standby logfile group 5 'c:\oracle\product\10.2.0\oradat
a\orcl\standbylog05.log' size 50M;

数据库已更改。

SQL> alter database add standby logfile group 6 'c:\oracle\product\10.2.0\oradat
a\orcl\standbylog06.log' size 50M;

数据库已更改。

SQL> alter database add standby logfile group 7 'c:\oracle\product\10.2.0\oradat
a\orcl\standbylog07.log' size 50M;

数据库已更改。

-- 添加日志组成员方法
SQL> alter database add logfile member 'c:\oracle\product\10.2.0\oradata\orcl\re
dolog012.log' to group 1;

数据库已更改。

--删除日志组成员方法

SQL> alter database drop logfile member  'c:\oracle\product\10.2.0\oradata\orcl\
redolog012.log';

数据库已更改。

RMAN全备数据库 控制文件 归档日志

RMAN> backup full format 'c:\backup\fullbackup_%d_%T_%s.bak' database include cu

rrent controlfile for standby;


RMAN> sql 'alter system archive log current';

sql 语句: alter system archive log current
RMAN> backup archivelog all format 'c:\backup\archive_%d_%T_%s';

拷贝备份到备库相同目录c:\backup下

备库操作

C:\Documents and Settings\Administrator>rman target sys/oracle@primary auxiliary
 /

恢复管理器: Release 10.2.0.1.0 - Production on 星期三 11月 6 16:04:22 2013

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

连接到目标数据库: ORCL (DBID=1351749857)
已连接到辅助数据库: ORCL (未装载)

RMAN> duplicate target database for standby dorecover nofilenamecheck;
介质恢复完成, 用时: 00:00:03
完成 recover 于 06-11月-13
完成 Duplicate Db 于 06-11月-13

SQL> select status from v$instance;

STATUS
------------
MOUNTED

SQL> alter database recover managed standby database disconnect from session;

数据库已更改。

主库操作

SQL> archive log list
数据库日志模式            存档模式
自动存档             启用
存档终点            C:/oracle/product/10.2.0/oradata/arch
最早的联机日志序列     22
下一个存档日志序列   24
当前日志序列           24

插入一条数据测试

SQL> insert into wang2 values(1);


已创建 1 行。

SQL> commit;

提交完成。

SQL> alter system switch logfile;

系统已更改。

SQL> archive log list;
数据库日志模式            存档模式
自动存档             启用
存档终点            C:/oracle/product/10.2.0/oradata/arch
最早的联机日志序列     23
下一个存档日志序列   25
当前日志序列           25

备库操作

SQL> archive log list;
数据库日志模式            存档模式
自动存档             启用
存档终点            C:/oracle/product/10.2.0/oradata/arch
最早的联机日志序列     24
下一个存档日志序列   0
当前日志序列           25

SQL> shutdown immediate;
ORA-01109: 数据库未打开

已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。

Total System Global Area  167772160 bytes
Fixed Size                  1247900 bytes
Variable Size              88081764 bytes
Database Buffers           75497472 bytes
Redo Buffers                2945024 bytes
数据库装载完毕。
数据库已经打开。


验证 数据已插入过来
SQL> select * from wang2;


        ID
----------
         1


主备切换

主库操作
SQL> select switchover_status from v$database;


SWITCHOVER_STATUS
----------------------------------------
SESSIONS ACTIVE

SQL> alter database commit to switchover to physical standby with session shutdo
wn;

数据库已更改。

SQL> select status from v$instance;

STATUS
------------------------
STARTED

SQL> shutdown immediate;
ORA-01507: ??????

ORACLE 例程已经关闭。
SQL> startup mount;
ORACLE 例程已经启动。

Total System Global Area  167772160 bytes
Fixed Size                  1247900 bytes
Variable Size              83887460 bytes
Database Buffers           79691776 bytes
Redo Buffers                2945024 bytes
数据库装载完毕。
SQL> alter database recover managed standby database disconnect from session;

数据库已更改。

SQL> select database_role from v$database;

DATABASE_ROLE
----------------
PHYSICAL STANDBY

SQL> select switchover_status from v$database;

SWITCHOVER_STATUS
-------------------
TO PRIMARY

SQL>alter database commit to switchover to primary;

数据库已更改。

主库切换备库操作

SQL> select database_role from v$database;

DATABASE_ROLE
----------------
PHYSICAL STANDBY

SQL> select switchover_status from v$database;

SWITCHOVER_STATUS
--------------------
TO PRIMARY

SQL> alter database commit to switchover to primary;

数据库已更改。

SQL> shutdown immediate;
ORA-01109: 数据库未打开

已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。

Total System Global Area  167772160 bytes
Fixed Size                  1247900 bytes
Variable Size              88081764 bytes
Database Buffers           75497472 bytes
Redo Buffers                2945024 bytes
数据库装载完毕。
ORA-01092: ORACLE 实例终止。强制断开连接

SQL>
SQL> exit
从 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options 断开

C:\Documents and Settings\Administrator>sqlplus "/as sysdba"

SQL*Plus: Release 10.2.0.1.0 - Production on 星期三 11月 6 16:42:21 2013

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

已连接到空闲例程。

SQL> startup
ORACLE 例程已经启动。

Total System Global Area  167772160 bytes
Fixed Size                  1247900 bytes
Variable Size              88081764 bytes
Database Buffers           75497472 bytes
Redo Buffers                2945024 bytes
数据库装载完毕。
ORA-01092: ORACLE 实例终止。强制断开连接

SQL> exit

从 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options 断开

--通过查看ALER错误 是SPFILE中UNDO表空间设置错误导致的


Wed Nov 06 16:42:32 2013
Errors in file c:\oracle\product\10.2.0\admin\orcl\bdump\orcl_mman_476.trc:
ORA-30012: undo tablespace '' does not exist or of wrong type

Wed Nov 06 16:42:32 2013
Errors in file c:\oracle\product\10.2.0\admin\orcl\bdump\orcl_psp0_1632.trc:
ORA-30012: undo tablespace '' does not exist or of wrong type

Wed Nov 06 16:42:32 2013
Instance terminated by USER, pid = 3408
ORA-1092 signalled during: ALTER DATABASE OPEN...

C:\Documents and Settings\Administrator>sqlplus "/as sysdba"

SQL*Plus: Release 10.2.0.1.0 - Production on 星期三 11月 6 16:44:06 2013

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

已连接到空闲例程。

SQL> startup mount;
ORACLE 例程已经启动。

Total System Global Area  167772160 bytes
Fixed Size                  1247900 bytes
Variable Size              88081764 bytes
Database Buffers           75497472 bytes
Redo Buffers                2945024 bytes
数据库装载完毕。
SQL> show parameter undo;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
undo_management                      string      AUTO
undo_retention                       integer     900
undo_tablespace                      string      UNDOTBS01
SQL> exit
从 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options 断开

C:\Documents and Settings\Administrator>sqlplus "/as sysdba"

SQL*Plus: Release 10.2.0.1.0 - Production on 星期三 11月 6 16:44:52 2013

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

连接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

SQL> create pfile='c:\pfile.ora' from spfile;

文件已创建。

SQL> show parameter spfile;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                               string      C:\ORACLE\PRODUCT\10.2.0\DB_1\
                                                 DATABASE\SPFILEORCL.ORA
SQL> alter system set undo_tablespace='undotbs1' scope=both;
alter system set undo_tablespace='undotbs1' scope=both
*
第 1 行出现错误:
ORA-02097: 无法修改参数, 因为指定的值无效
ORA-30012: 还原表空间 'undotbs1' 不存在或类型不正确

SQL> alter system set undo_tablespace='undotbs1' scope=spfile;

系统已更改。

SQL> shutdown immediate;
ORA-01109: 数据库未打开

已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。

Total System Global Area  167772160 bytes
Fixed Size                  1247900 bytes
Variable Size              88081764 bytes
Database Buffers           75497472 bytes
Redo Buffers                2945024 bytes
数据库装载完毕。
数据库已经打开。
SQL> show parameter undo;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
undo_management                      string      AUTO
undo_retention                       integer     900
undo_tablespace                      string      undotbs1


完毕


乐播投屏是一款简单好用、功能强大的专业投屏软件,支持手机投屏电视、手机投电脑、电脑投电视等多种投屏方式。 多端兼容与跨网投屏:支持手机、平板、电脑等多种设之间的自由组合投屏,且无需连接 WiFi,通过跨屏技术打破网络限制,扫一扫即可投屏。 广泛的应用支持:支持 10000+APP 投屏,包括综合视频、网盘与浏览器、美韩剧、斗鱼、虎牙等直播平台,还能将央视、湖南卫视等各大卫视的直播内容一键投屏。 高清流畅投屏体验:腾讯独家智能音画调校技术,支持 4K 高清画质、240Hz 超高帧率,低延迟不卡顿,能为用户提供更高清、流畅的视觉享受。 会议办公功能强大:拥有全球唯一的 “超级投屏空间”,扫码即投,无需安装。支持多人共享投屏、远程协作批注,PPT、Excel、视频等文件都能流畅展示,还具企业级安全加密,保障会议资料不泄露。 多人互动功能:支持多人投屏,邀请好友加入投屏互动,远程也可加入。同时具一屏多显、语音互动功能,支持多人连麦,实时语音交流。 文件支持全面:支持 PPT、PDF、Word、Excel 等办公文件,以及视频、图片等多种类型文件的投屏,还支持网盘直投,无需下载和转格式。 特色功能丰富:投屏时可同步录制投屏画面,部分版本还支持通过触控屏或电视端外接鼠标反控电脑,以及在投屏过程中用画笔实时标注等功能。
### 配置 ADG 切换 ADG(Active Data Guard)切换是 Oracle Data Guard 架构中的一项关键功能,用于在库发生故障时将用数据库提升为新的库。以下是配置和执行切换的详细步骤: #### 1. 使用 DGMGRL 工具进行切换 DGMGRL 是 Oracle 提供的一个命令行工具,专门用于管理 Data Guard 配置。通过该工具可以轻松实现切换。 示例操作如下: ```bash DGMGRL> CONNECT SYS/password@primary_db AS SYSDBA; DGMGRL> SWITCHOVER TO standby_db; ``` 此命令将库 `primary_db` 切换用库 `standby_db`,并将其提升为库[^3]。 #### 2. 使用 SQL*Plus 命令进行手动切换 如果未使用 DGMGRL,也可以通过 SQL*Plus 执行切换操作。以下是一个典型的切换流程: - **步骤 1:检查库和库的状态** ```sql SELECT DATABASE_ROLE, OPEN_MODE FROM V$DATABASE; ``` 确保库处于 `PRIMARY` 角色且为 `READ WRITE` 模式,而库处于 `PHYSICAL STANDBY` 角色且为 `READ ONLY` 模式。 - **步骤 2:在库上停止日志传输** ```sql ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=DEFER; ``` - **步骤 3:在库上应用所有未完成的日志** ```sql ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT; ``` - **步骤 4:将库提升为库** ```sql ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN; ``` - **步骤 5:重新启动原库作为库** 如果原库仍然可用,则需要将其转换为库以继续参与 Data Guard 配置: ```sql ALTER DATABASE CONVERT TO PHYSICAL STANDBY; ``` #### 3. 自动故障切换配置 为了实现自动故障切换,需启用 Fast-Start Failover(FSFO)。FSFO 允许在库不可用时自动将用数据库提升为库,而无需人工干预。 - **启用 FSFO 的基本步骤:** ```bash DGMGRL> EDIT CONFIGURATION SET PROTECTION MODE AS MAXIMUM AVAILABILITY; DGMGRL> ENABLE FAST_START FAILOVER; DGMGRL> START OBSERVER; ``` 这些命令将启用快速启动故障切换,并由观察器监控库状态,一旦检测到库不可用,将自动触发切换操作[^2]。 --- ### 故障解决 #### 1. 日志传输中断 **问题描述:** 库无法接收来自库的归档日志。 - **解决方案:** - 检查网络连接是否正常。 - 确认库的 `LOG_ARCHIVE_DEST_n` 参数是否正确配置。 - 在库上查询 `V$ARCHIVED_LOG` 视图,查看是否有缺失的日志文件。 - 如果发现日志缺失,可以通过 RMAN 手动恢复并同步日志: ```bash RMAN> RECOVER DATABASE NOREDO; ``` #### 2. 数据库角色切换失败 **问题描述:** 在执行切换时提示角色转换失败。 - **解决方案:** - 检查当前数据库角色是否匹配预期目标。 - 确保在切换前关闭所有活动会话。 - 如果切换失败,尝试重新执行切换命令或重启数据库实例。 #### 3. 同步延迟过大 **问题描述:** 库与库之间的数据同步存在较大延迟。 - **解决方案:** - 增加 `MRP` 进程的数量以加速日志应用: ```sql ALTER DATABASE RECOVER MANAGED STANDBY DATABASE PARALLEL 4; ``` - 调整 `LOG_ARCHIVE_CONFIG` 和 `FAL_SERVER` 参数,优化日志传输效率。 #### 4. 自动故障切换未触发 **问题描述:** 即使库不可用,系统仍未触发自动故障切换。 - **解决方案:** - 确认 FSFO 已正确启用。 - 检查观察器是否正在运行。 - 查看 `DGMGRL` 中的配置是否包含正确的故障切换目标。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值