开始之前先把主库和备库的tnsnames.ora文件创建好(如下),并且启动数据库服务和监听服务

然后测试联通性,测试方法为:

 

sqlplus /nolog

conn system/oracle@primary

conn system/oracle@standby

1.设置主库为 force logging,并建立pfile文件

SQL> alter database force logging;

SQL> create pfile from spfile;

2.设置主库为归档模式:

SQL> archive log list

SQL> shutdown immediate

SQL> startup mount

SQL> alter database archivelog;

SQL> archive log list

SQL> shutdown immediate

3.创建口令文件(删除原来口令文件)

/oracle/product/10g/dbs目录中执行以下操作

orapwd file=orawdorcl.ora password=oracle entries=5

4.修改主参数文件

文件末尾处添加  

log_archive_dest_1='LOCATION=/oracle/oradata/archive/'  此目录需要创建

log_archive_dest_state_1=enable 

log_archive_dest_2='SERVICE=standby' 

log_archive_dest_state_2=enable 

log_archive_format='%t_%s_%r.arc' 

log_archive_max_processes=2 

fal_server=standby 

fal_client=primary 

db_unique_name=orcl

5.主库创建控制文件

 SQL>startup mount

SQL>alter database create standby controlfile as 

    2 ‘/oracle/oradata/orcl/standby.ctl’;

SQL>alter database open;

SQL>shutdown immedaite

6.删除备库上相关目录

删除/oracle/oradata目录下的orcl目录和/oracle/admin/orcl目录

7.拷贝主库上的相关目录和文件到备库

scp -r /oracle/oradata/orcl 192.168.10.3:/oracle/oradata

scp -r /oracle/admin/orcl  192.168.10.3:/oracle/admin

scp initorcl.ora 192.168.10.3:/oracle/product/10g/dbs/

  scp orawdorcl.ora 192.168.10.3:/oracle/product/10g/dbs/

8.删除备库上control1,2,3.ctl文件(/oracle/oradata/orcl/)

 rm -f control0*

 mv standby.ctl control01.ctl

 cp control01.ctl control02.ctl

 cp control01.ctl control03.ctl

9.更改备库initorcl.ora文件

log_archive_dest_1='LOCATION=/oracle/oradata/archive/'  此目录需要创建

log_archive_dest_state_1=enable 

log_archive_dest_2='SERVICE=primay' 

log_archive_dest_state_2=enable 

log_archive_format='%t_%s_%r.arc' 

log_archive_max_processes=2 

fal_server=primary 

fal_client=standby 

db_unique_name=orcl

10.移除主库上的spfile文件

rm -f spfileorcl.ora(/oracle/product/10g/dbs)

11.主库备库都应用pfile文件

SQL> create spfile from pfile

12.测试主库和备库的监听是否都开启

Ps -ef | grep tns

Sqlplus system/oracle@primary

Sqlplus system/oracle@standby

13.备库执行DG命令

SQL> startup nomount;

SQL> alter database mount standby database;

SQL> select name,database_role from v$database;

SQL>alter database recover managed standby database disconnect from session;     接收来自主库的数据

SQL> alter system switch logfile; 主库加速日志传输到备库(主库执行)

SQL> /

SQL> /

14.主库创建表,测试备库是否同步

SQL> Create table dgtest (id int, name char(10));

SQL> insert into dgtest values (0, ‘test’);

SQL> insert into dgtest values (1, ‘test’);

SQL> commit

SQL> Select * from dgtest; 

然后执行上边的命令加速传输,执行三次。

15.备库查询数据是否同步过来

SQL> select sequence#,first_time,next_time from v$archived_log order by sequence#;

SQL> select sequence#,applied from v$archived_log order by sequence#; 

SQL> alter database recover managed standby database cancel;

SQL> alter database open read only;

SQL> select * from dgtest;

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

DG物理备库常用命令

Startup nomount;

Alter database mount standby database;

Select name,database_role from v$database;

Alter database recover managed standby database disconnect from session;

Alter system archvie log current;

Alter database recover managed standby database cancel;

Alter database open read only;

Select sequence#,first_time,next_time from v$archived_log order by sequence#;

Select sequence#,applied from v$archived_log order by sequence#;

注:两种模式只能运行一种,第一种是接受数据模式。第二种是查询数据模式,查询中,并没有接受来自主库的数据。