快速,持续,稳定,傻瓜式
支持Mysql,Sqlserver数据同步

[dg数据库每天都要手动同步]oracle DataGuard 不能实时自动同步

请联系QQ:1793040 索取软件

本帖最后由 mssql_wangwang 于 2017-9-23 15:26 编辑

最近在学习Oracle的DG ,已经配置成功DG,可是每次都需要在主库运行 alter system switch logfile;数据才能完成同步,
看网上有说在备库执行 alter databaserecover managed standby database disconnect from session;
可仍然是每次只能手动的去运行数据才能同步,
想问下怎么才能实现数据库主Parimary 和standby 能自动实时的同步数据呢,
比如我在主库插入或修改一条数据并且commit; 能在备库立即查询出来。就好像SQL SERVER 的Always on功能一样,能自动同步。

Oracle 版本为12C
备库模式:
SQL> select open_mode from v$database;

OPEN_MODE
——————–
READ ONLY WITH APPLY

配错了呗。贴出你的完整步骤吧。

jieyancai 发表于 2017-9-23 21:00
配错了呗。贴出你的完整步骤吧。

一、主库配置

–将主库设置为FORCE LOGGING模式
SQL> alter database force logging;
SQL> select force_logging from v$database;

–修改主库参数文件
alter system set db_unique_name=’ORCLMAIN’ scope=spfile;
alter system set log_archive_config=’DG_CONFIG=(ORCLMAIN,ORCLSTANDBY)’;
alter system set log_archive_dest_1=’LOCATION=/data/archlog valid_for=(all_logfiles,all_roles) db_unique_name=ORCLmain’ scope=spfile;
alter system set log_archive_dest_2=’SERVICE=ORCLSTANDBY lgwr async valid_for=(online_logfile,primary_role) db_unique_name=ORCLSTANDBY’ scope=spfile;

alter system set log_archive_dest_state_1=ENABLE;
alter system set log_archive_dest_state_2=ENABLE;
alter system set fal_client=’ORCLMAIN’ scope=spfile;
alter system set fal_server=’ORCLSTANDBY’ scope=spfile;
alter system set standby_file_management=auto scope=spfile;
alter database add standby logfile group 6 (‘/oracle/app/redolog/redo06_1.log’,’/data/redolog/redo06_2.log’) size 500M;
alter database add standby logfile group 7 (‘/oracle/app/redolog/redo07_1.log’,’/data/redolog/redo07_1.log’) size 500M;
alter database add standby logfile group 8 (‘/oracle/app/redolog/redo08_1.log’,’/data/redolog/redo08_1.log’) size 500M;

–重启数据库
SQL> shutdown immediate;
SQL> startup
SQL> create pfile from spfile;

–将主库pfile文件拷贝到备库
scp-P 2237 $ORACLE_HOME/dbs/initORCLmain.ora ORCLstandby:$ORACLE_HOME/dbs –拷贝pfile文件到备库
scp-P 2237 $ORACLE_HOME/dbs/orapwORCLmain.ora ORCLstandby:$ORACLE_HOME/dbs –拷贝密码文件到备库

二、备库配置

–配置监听(配置静态注册)
vim $ORACLE_HOME/network/admin/listener.ora

SID_LIST_LISTENER=
(SID_LIST=
(GLOBAL_DBNAME=ORCLma)
(ORACLE_HOME=/oracle/app/oracle/product/11.2.0/db_1)
(SID_NAME=ORCLmain)
)

LISTENER=
(DESCRIPTION_LIST=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.6)(PORT=5015))
(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC5015))
)
)

–修改tnsnames文件
ORCLSTANDBY=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.6)(PORT=5015))
)
(CONNECT_DATA=
(SERVICE_NAME=ORCLma)
)
)

ORCLMAIN=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.7)(PORT=1521))
)
(CONNECT_DATA=
(SERVICE_NAME=ORCLmain)
)
)

–创建11g数据库基本目录
# su-oracle
mkdir-p/oracle/app/oracle/admin/ORCLmain/{adump,dpdump,pfile}
mkdir-p/oracle/app/oracle/fast_recovery_area/{ORCLmain,ORCLMAIN}
mkdir-p/data/oradata/ORCLmain
mkdir-p/data/archlog

–修改备库pfile文件
*.db_name=’ORCLma’
*.db_unique_name=’ORCLstandby’
*.fal_client=’ORCLSTANDBY’
*.fal_server=’ORCLMAIN’
*.log_archive_dest_2=’SERVICE=ORCLMAIN lgwr async valid_for=(online_logfile,primary_role) db_unique_name=ORCLMAIN’

–备库创建-SID
–oradim-new-sid ORCLSTANDBY
–将备库启动nomount状态
SQL> create spfile from pfile=’$ORACLE_HOME/dbs/initORCLmain.ora’
SQL> startup nomount;

三、在备库中使用RMAN开始dumplicate(复制)数据库
[oracle@ORCLstandby ~]$ rman target ‘sys/"SysTest!"’@ORCLmain auxiliary ‘sys/"SysTest"’@ORCLstandby

RMAN> duplicate target database for standby nofilenamecheck from active database;
注:无报错,复制成功,继续以下步骤

1.查看备库状态
SQL> select open_mode,database_role,db_unique_name from v$database;

alter databaserecover managed standby database disconnect from session;

以上为配置步骤,请指教。谢谢

mssql_wangwang 发表于 2017-9-24 10:44
一、主库配置

–将主库设置为FORCE LOGGING模式

你试试以下命令,看看结果如何:

在备库机器上:

sqlplus/as sysdba

SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

select open_mode from v$database;

本帖最后由 mssql_wangwang 于 2017-9-24 13:40 编辑

onca416 发表于 2017-9-24 11:54
你试试以下命令,看看结果如何:

在备库机器上:

SQL> select open_mode from v$database;

OPEN_MODE
——————–
READ ONLY WITH APPLY

试过以上方法,但是就是不能自动同步数据过来。仍然需要在主库手动执行 alter system switch logfile;
每次都要手动强制归档备库才能查询出同步的数据。我也试过DG的三种模式,都不行,最大保护,最大可用,最大性能都是一样的问题。

到底是哪里问题呢,
SQLSERVER 的always on 无论同步还是异步数据基本上 不会相差5秒就会到备库上面。

我这个也是这样,你看看日志组状态,是不是都是UNASSIGNED ?
select group#,sequence#,first_change#,next_change#,status,used,con_id from v$standby_log;

可能是备库strandby日志组大小比主库online redo log要小,造成的这个问题。
我改了备库standby日志组大小,就解决了。

yueli34 发表于 2017-9-24 20:47
可能是备库strandby日志组大小比主库online redo log要小,造成的这个问题。
我改了备库standby日志组大小…

STANDBY:
SQL>SELECT group#, members, bytes/1024/1024 byte_mb, status FROM v$log;

GROUP# MEMBERS BYTE_MB STATUS
———————————————-
1 2 50 CURRENT
2 2 50 CLEARING
3 2 50 CLEARING

MAIN:
SQL>SELECT group#, members, bytes/1024/1024 byte_mb, status FROM v$log;

GROUP# MEMBERS BYTE_MB STATUS
———————————————-
1 2 50 CURRENT
2 2 50 INACTIVE
3 2 50 INACTIVE

两边都是一样大的。

STANDBY:
SQL> select group#,sequence#,first_change#,next_change#,status,used,con_id from
v$standby_log;

GROUP#SEQUENCE# FIRST_CHANGE# NEXT_CHANGE# STATUS USED
—————————————————————–
CON_ID
———-
6 14 2386543 2387891 ACTIVE 484352
0

7 13 2384616 2386543 ACTIVE 761344
0

8 15 2387891 2426347 ACTIVE 26267136
0.

MAIN:
SQL> select group#,sequence#,first_change#,next_change#,status,used,con_id from
v$standby_log;

GROUP#SEQUENCE# FIRST_CHANGE# NEXT_CHANGE# STATUS USED
—————————————————————–
CON_ID
———-
6 0 UNASSIGNED 0
0

7 0 UNASSIGNED 0
0

8 0 UNASSIGNED 0
0

主库为UNASSIGNED

mssql_wangwang 发表于 2017-9-25 10:51
STANDBY:
SQL>SELECT group#, members, bytes/1024/1024 byte_mb, status FROM v$log;

备库看standby日志组是v$standby_log视图。不是v$log视图。

alter database recover managed standby database using current logfile disconnect from session;
代替
alter database recover managed standby database disconnect from session;

相关推荐

咨询软件
 
QQ在线咨询
售前咨询热线
QQ1793040