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

oracle 11g 主从配置过程

请联系QQ:1793040 索取软件

物理环境:

主数据库 10.1.1.247
主机名:primary.cluster.com
DB_UNIQUE_NAME=primary

备数据库
10.1.1.242
主机名:standby.cluster.com
DB_UNIQUE_NAME=standby

Oracle数据库版本为11.2.0.1.0

以主数据库为例,备数据库操作一样。

1.
修改主机名/etc/sysconfig/network,修改如下:(重启才生效)

HOSTNAME=primary.atet.com

2.
修改临时主机名:(重启失效)

#hostname primary.atet.com

**上述两步都做,保证从修改后到重启主机名都不变

3.修改/etc/hosts,添加如下:

10.1.1.247 primary.atet.com
primary

原理参考博客:http://blog.sina.com.cn/s/blog_7c5a82970101prcx.html

配置参考博客:http://www.cnblogs.com/Elliot-wang/p/3790852.html

一.
Primary端的配置

主数据库需要做的工作:FORCE LOGGING(强制产生日志),ENABLE
ARCHIVING(支持归档),修改参数文件,修改监听文件。

(1)
检查数据是否支持DataGuard(企业版才支持),是否为归档模式

SQL> archive log
list (先检查是否归档模式,不是则修改)

SQL>startup mount

SQL>alter database archivelog;

SQL>alter database open;

(2)
primary数据库设置为FORCE
LOGGING
模式

SQL>alter database force logging;(强制产生日志)

SQL> select FORCE_LOGGING
from v$database;

生成密码文件

$ orapwd file=$ORACLE_HOME/dbs/orapworcl password=oracle
entries=5 (passwdord 必须为sys 的密码)

(3)
为主数据库添加备用联机日志文件

SQL> alter database add standby logfile group 4
(‘/home/oracle_11/app/oradata/orcl/standby_redo04.log’) size
50m;

SQL> alter database add standby logfile group 5
(‘/home/oracle_11/app/oradata/orcl/standby_redo05.log’) size
50m;

SQL> alter database add standby logfile group 6
(‘/home/oracle_11/app/oradata/orcl/standby_redo06.log’) size
50m;

SQL> alter database add standby logfile group 7
(‘/home/oracle_11/app/oradata/orcl/standby_redo07.log’) size
50m;

(4)
修改主库参数文件

SQL> create pfile from
spfile;
—默认路径在$ORACLE_HOME/dbs/initorcl.ora

orcl.__db_cache_size=197132288

orcl.__java_pool_size=4194304

orcl.__large_pool_size=4194304

orcl.__oracle_base=’/home/oracle_11/app’#ORACLE_BASE set from
environment

orcl.__pga_aggregate_target=281018368

orcl.__sga_target=524288000

orcl.__shared_io_pool_size=0

orcl.__shared_pool_size=310378496

orcl.__streams_pool_size=0

*.audit_file_dest=’/home/oracle_11/app/admin/orcl/adump’

*.audit_trail=’db’

*.compatible=’11.2.0.1.0′

*.control_files=’/home/oracle_11/app/oradata/orcl/control01.ctl’,’/home/oracle_11/app/flash_recovery_area/orcl/control02.ctl’

*.db_block_size=8192

*.db_domain=”

*.db_name=’orcl’
——-
数据库SID

*.db_recovery_file_dest=’/home/oracle_11/app/flash_recovery_area’

*.db_recovery_file_dest_size=4039114752

*.diagnostic_dest=’/home/oracle_11/app’

*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)’

*.memory_target=804257792

*.open_cursors=300

*.processes=150

*.remote_login_passwordfile=’EXCLUSIVE’

*.undo_tablespace=’UNDOTBS1′

添加以下部分:

*.DB_UNIQUE_NAME=’primary’

*.LOG_ARCHIVE_CONFIG=’DG_CONFIG=(primary ,standby)’

*.LOG_ARCHIVE_DEST_1=’LOCATION=/home/oracle_11/app/oradata/orcl/archive/
VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=primary’

*.LOG_ARCHIVE_DEST_2=’SERVICE=standby LGWR ASYNC
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
DB_UNIQUE_NAME=standby’

*.LOG_ARCHIVE_DEST_STATE_1=ENABLE

*.LOG_ARCHIVE_DEST_STATE_2=ENABLE

*.REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE

*.LOG_ARCHIVE_FORMAT=%t_%s_%r.arc

*.FAL_SERVER=standby

*.FAL_CLIENT=primary

*.STANDBY_FILE_MANAGEMENT=AUTO



之后要在/home/oracle_11/app/oradata/orcl/
建立archive目录,做为归档目录


(5)
建立备用库的控制文件

SQL>shutdown immediate

SQL>startup mount

SQL> alter database create standby controlfile as
‘/home/oracle_11/standby_ctl01.ctl’;

(6)
配置listener.oratnsnames.ora

配置文件目录:$ORACLE_HOME/network/admin

listener.ora文件:

SID_LIST_LISTENER=

(SID_LIST=

(SID_DESC=

(GLOBAL_DBNAME=orcl)

(SID_NAME=orcl)

(ORACLE_HOME=/home/oracle_11/app/product/11.2.0/dbhome_1)

)

)

LISTENER=

(DESCRIPTION_LIST=

(DESCRIPTION=

(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521))

(ADDRESS=(PROTOCOL=TCP)(HOST=primary.atet.com)(PORT=1521))

)

)

ADR_BASE_LISTENER=/home/oracle_11/app

tnsnames.ora文件:

PRIMARY=

(DESCRIPTION=

(ADDRESS=(PROTOCOL=TCP)(HOST=10.1.1.247)(PORT=1521))

(CONNECT_DATA=

(SERVER=DEDICATED)

(SERVICE_NAME=orcl)

)

)

STANDBY=

(DESCRIPTION=

(ADDRESS=(PROTOCOL=TCP)(HOST=10.1.1.242)(PORT=1521))

(CONNECT_DATA=

(SERVER=DEDICATED)

(SERVICE_NAME=orcl)

)

)

(7)
主库用修改过的pfile产生spfile

关闭主数据库

SQL>shutdown immediate

生成spfile

SQL> create spfile from pfile;

二.standby端的配置

(1).创建备库存放数据文件和后台跟踪目录

mkdir
-p $ORACLE_BASE/oradata/orcl

mkdir
-p $ORACLE_BASE/admin/orcl

mkdir
-p $ORACLE_BASE/admin/orcl/adump

mkdir
-p $ORACLE_BASE/admin/orcl/bdump

mkdir
-p $ORACLE_BASE/admin/orcl/cdump

mkdir
-p $ORACLE_BASE/admin/orcl/dpdump

mkdir
-p $ORACLE_BASE/admin/orcl/pfile

mkdir
-p $ORACLE_BASE/admin/orcl/udump

mkdir
-p $ORACLE_BASE/diag/rdbms

mkdir
-p $ORACLE_BASE/diag/tnslsnr

mkdir-p $ORACLE_BASE/flash_recovery_area/orcl

mkdir
-p $ORACLE_BASE/flash_recovery_area/ORCL

mkdir
-p $ORACLE_BASE/oradata/orcl/archive

(2).把文件传输到备库下

关闭主库复制文件 (注意复制文件属人和属组)

$scp $ORACLE_BASE/oradata/orcl/*.dbf
10.1.1.242:/$ORACLE_BASE/oradata/orcl

$scp $ORACLE_BASE/oradata/orcl/*.log
10.1.1.242:/$ORACLE_BASE/oradata/orcl

$scp
/u01/standby_ctl01.ctl 10.1.1.242:/$ORACLE_BASE/oradata/orcl

$scp
$ORACLE_HOME/dbs/initora11g.ora 10.1.1.242:/$ORACLE_HOME/dbs/

$ cd $ORACLE_BASE/oradata/orcl

$ mv standby_ctl01.ctl
control01.ctl

$
cp control01.ctl/home/oracle_11/app/flash_recovery_area/orcl/

$cd/home/oracle_11/app/flash_recovery_area/orcl/

$ mv control01.ctl
control02.ctl

(3)修改备库参数文件

SQL> create pfile from
spfile;
—默认路径在$ORACLE_HOME/dbs/initSID.ora

*.DB_UNIQUE_NAME=’standby’

*.LOG_ARCHIVE_CONFIG=’DG_CONFIG=(primary ,standby)’

*.LOG_ARCHIVE_DEST_1=’LOCATION=/home/oracle_11/app/oradata/orcl/archive/
VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=standby’

*.LOG_ARCHIVE_DEST_2=’SERVICE=primary LGWR ASYNC
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
DB_UNIQUE_NAME=primary’

*.LOG_ARCHIVE_DEST_STATE_1=ENABLE

*.LOG_ARCHIVE_DEST_STATE_2=ENABLE

*.REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE

*.LOG_ARCHIVE_FORMAT=%t_%s_%r.arc

*.FAL_SERVER=primary

*.FAL_CLIENT=standby

*.STANDBY_FILE_MANAGEMENT=AUTO

(4) 修改备库的listener.ora和tnsnames.ora文件

Listener.ora文件修改如下:

Tnsnames.ora文件修改如下:

(6) 复制主库的密码文件到备库的相应位置

先查看备份库是否有密码文件,有就先删除,然后再复制。

scp $ORACLE_HOME/dbs/orapworcl 10.1.1.242:/$ORACLE_HOME/dbs/

三.DataGuard启动

启动standby database

SQL>startup nomount
SQL>alter database mount standby database;
#执行此命令后备库会处于手动恢复状态。

启动primary database
SQL>startup mount

SQL>alter database set standby database to maximize
availability;
(设置为最大性能模式也是默认模式)

SQL>alter database open;

启动standby database到recover manage模式

SQL>alter database recover managed standby database
disconnect from session;
#执行此命令后,备库会切换到自动恢复模式。

启动顺序

(1).启从、主库的监听Listener
从库DG-Standby:

$lsnrctl start

主库DG-Primary:

$lsnrctl start

(2)启动备库数据库,执行如下:
$sqlplus/as sysdba

SQL> startup nomount
SQL> alter database mount standby
database;
#让备库处于standby
SQL> alter database recover managed standby
database using current logfile disconnect from
session;
#开始实时同步

(3).启动主库

$sqlplus/as sysdba
SQL> startup

.切换standby
database
read only模式

SQL> alter database recover managed standby database cancel;
#首先取消备库的自动恢复模式
SQL>alter database open read only;
如果要切换回recover manage模式(启动日志应用或者启动日志实时应用)
SQL> alter database recover managed standby
database disconnect from session; 启动日志应用

SQL>alter database recover managed standby database using
current logfile disconnect from
session; 启动日志实时应用

(3).启动主库数据库(上述第二步执行完毕后,方可执行如下命令):

SQL>startup

关闭顺序


关闭的时候正好相反,先关闭主库,然后关闭从库。
(1). 关闭主库
$su – oracle
$sqlplus/as sysdba
SQL>shutdown immediate;
(2). 关闭从库
su – oracle

SQL>sqlplus/as sysdba

SQL>alter database recover managed standby database
cancel;
#停止同步
SQL>shutdown immediate

验证:

1. 查看pfile文件

SQL> show parameter pfile

2.
查看归档文件路径

SQL>
show parameter log_archive_dest_1

3.
日志文件路径

$ORACLE_BASE/diag/rdbms/standby/orcl/trace

4. 查看数据库状态,数据库角色,DB名字

SQL> select open_mode,database_role,db_unique_name from
v$database;

5. 查看数据是否同步

SQL> select max(SEQUENCE#) from v$archived_log;

SQL>
select sequence#, applied from v$archived_log where applied=’YES’
order by sequence#;

在主库上执行

SQL>create table t(i int);

SQL>Insert into t value(1);

SQL>commit

在standby库上执行

SQL> alter database recover managed standby database cancel;

SQL> alter database open;

SQL>select * from t;

相关推荐

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