由 DB_FILES 参数导致的 dg 服务器无法同步问题
用户反映,dg 服务器数据从昨晚(7月8日)开始停止同步。
连接服务器发现没有 mrp 进程,并且 OPEN_MODE 参数也不正确。具体情况如下所示:
sql
SQL> select process, status, sequence# from v$managed_standby;
PROCESS STATUS SEQUENCE#
--------- ------------ ----------
ARCH CLOSING 1356467
ARCH CONNECTED 0
ARCH CONNECTED 0
ARCH CLOSING 2317672
RFS IDLE 0
RFS IDLE 0
RFS IDLE 2317673
RFS IDLE 1356468
RFS IDLE 0
RFS IDLE 0
10 rows selected.
SQL> select open_mode,log_mode, database_role from v$database;
OPEN_MODE LOG_MODE DATABASE_ROLE
-------------------- ------------ -------------------- ----------------
READ ONLY ARCHIVELOG PHYSICAL STANDBY
执行如下命令出现异常(ORA-00059):
sql
SQL> alter database recover managed standby database;
alter database recover managed standby database
*
ERROR at line 1:
ORA-00283: recovery session canceled due to errors
ORA-00059: maximum number of DB_FILES exceeded
提示是 DB_FILES 参数的问题。并且昨晚对服务器进行扩容,为多个表空间增加了数据文件。dg 数据库停止同步也是昨天晚上。确认是该参数的问题。
以前已经修改过主库的 DB_FILES 参数为 2000,备库的 DB_FILES 参数为默认值 200。
确定问题的解决方案为,修改 DB_FILES 参数的值为 2000,步骤如下:
步骤一:执行如下命令修改 DB_FILES 参数的值。
sql
alter system set db_files=2000 scope=spfile;
步骤二:重启数据库。
sql
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area 3.4206E+10 bytes
Fixed Size 2270360 bytes
Variable Size 5301603176 bytes
Database Buffers 2.8857E+10 bytes
Redo Buffers 45649920 bytes
Database mounted.
Database opened.
步骤三:执行如下命令开启同步。
sql
SQL> alter database recover managed standby database using current logfile disconnect;
Database altered.
步骤四:查看 dg 备库的进程及数据库状态。
sql
SQL> select process, status, sequence# from v$managed_standby;
PROCESS STATUS SEQUENCE#
--------- ------------ ----------
ARCH CLOSING 1356468
ARCH CONNECTED 0
ARCH CONNECTED 0
ARCH CLOSING 2317673
RFS IDLE 0
RFS IDLE 0
RFS IDLE 2317674
RFS IDLE 1356469
RFS IDLE 0
RFS IDLE 0
MRP0 APPLYING_LOG 1356458
11 rows selected.
SQL> select open_mode,log_mode,database_role from v$database;
OPEN_MODE LOG_MODE DATABASE_ROLE
-------------------- ------------ -------------------- ----------------
READ ONLY WITH APPLY ARCHIVELOG PHYSICAL STANDBY
发现备库的进程以及状态已经恢复正常。
测试数据的同步情况,发现已经恢复。