1、环境介绍

ip hostname sid db_name db_unique_name net service name
192.168.56.118 oraclep yunhaip yunhaip yunhaip yunhaip
192.168.56.117 oracles yunhaip yunhaip yunhais yunhais

2、修改hostname

hostnamectl set-hostname oraclep

3、db部署

主:创建库,从:不创建数据库 就是没有dbca那一步,网络和基础环境还是需要的

4、主库开启归档并设置强制日志 force logging

SQL> shutdown immediate

停止数据库操作

startup mount

启动到mount状态

alter database archivelog;

开启归档

alter database force logging;

强制记录日志,即对数据库中的所有操作都产生日志信息,并将该信息写入到联机重做日志文件。

alter database open;

打开数据库

archive log list;

想查看数据的归档模式

select force_logging from v$database;

确认是否为强制日志

5、主库添加standby redo log

select member from v$logfile;

查看redo和standby redo

select * from v$log;

查看redo情况

alter database add standby logfile group 21 '/u01/app/oradata/yunhaip/standby21.log' size 50M; alter database add standby logfile group 22 '/u01/app/oradata/yunhaip/standby22.log' size 50M; alter database add standby logfile group 23 '/u01/app/oradata/yunhaip/standby23.log' size 50M; alter database add standby logfile group 24 '/u01/app/oradata/yunhaip/standby24.log' size 50M;

增一组大小为50M的standby redo,这里的group号不得与online redo重复,正式环境文件大小需要调整

6、配置文件修改 6.1、主库pfile创建,以便做出修改

SQL>create pfile from spfile; SQL> host [oracle@oraclep ~]$ cd $ORACLE_HOME/dbs [oracle@oraclep dbs]$ pwd /u01/app/oracle/product/11.2.0/db_1/dbs cat >> /u01/app/oracle/product/11.2.0/db_1/dbs/inityunhaip.ora << "EOF" *.db_unique_name='yunhaip' *.fal_server='yunhais' *.log_archive_config='dg_config=(yunhaip,yunhais)' *.log_archive_dest_1='location=use_db_recovery_file_dest valid_for=(all_logfiles, all_roles) db_unique_name=yunhaip' *.log_archive_dest_2='service=yunhais lgwr async valid_for=(online_logfile,primary_role) db_unique_name=yunhais' *.log_archive_dest_state_1=ENABLE *.log_archive_dest_state_2=ENABLE *.standby_file_management='AUTO' *.db_file_name_convert='/u01/app/oradata/yunhaip','/u01/app/oradata/yunhaip' *.log_file_name_convert='/u01/app/oradata/yunhaip','/u01/app/oradata/yunhaip' EOF

6.2、拷贝主库的pfile到从库,并修改如下内容:

[oracle@oraclep dbs]$ pwd /u01/app/oracle/product/11.2.0/db_1/dbs [oracle@oraclep dbs]$ scp inityunhaip.ora 192.168.56.117:/u01/app/oracle/product/11.2.0/db_1/dbs/

cat >> /u01/app/oracle/product/11.2.0/db_1/dbs/inityunhaip.ora << "EOF" *.db_unique_name='yunhais' *.fal_server='yunhaip' *.log_archive_config='dg_config=(yunhaip,yunhais)' *.log_archive_dest_1='location=use_db_recovery_file_dest valid_for=(all_logfiles, all_roles) db_unique_name=yunhais' *.log_archive_dest_2='service=yunhaip lgwr async valid_for=(online_logfile,primary_role) db_unique_name=yunhaip' *.log_archive_dest_state_1=ENABLE *.log_archive_dest_state_2=ENABLE *.standby_file_management='AUTO' *.db_file_name_convert='/u01/app/oradata/yunhaip','/u01/app/oradata/yunhaip' *.log_file_name_convert='/u01/app/oradata/yunhaip','/u01/app/oradata/yunhaip' EOF

6.3、说明:

dg_config=(yunhaip,yunhais) 以外,其他情况主从的相关信息对调即可

6.4、创建新的主库spfile文件,并重新启动主库

SQL> shutdown immediate SQL> create spfile from pfile; SQL> startup SQL> ALTER USER SYS IDENTIFIED BY sys;

修改sys密码为以后rman连接使用

6.5、 复制主库的密码文件到备库

scp orapwyunhaip 192.168.56.117:/u01/app/oracle/product/11.2.0/db_1/dbs/

7、从库创建相关目录

strings spfileyunhaip.ora

获得目录,我观察的是主库的

mkdir -p /u01/app/oracle mkdir -p /u01/app/admin/yunhaip/{a,b,c,d,u}dump mkdir -p /u01/app/oradata/yunhaip/ mkdir -p /u01/app/fast_recovery_area/yunhaip/

8、创建tnsnames.ora ,主从一致即可

cat >> /u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora << "EOF" yunhaip = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.118)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = yunhaip) ) )

yunhais = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.117)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = yunhais) ) ) EOF

9、修改备份库的listener.ora

cat >> /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora << "EOF" SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = yunhais) (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1) (SID_NAME = yunhaip) ) )

EOF

原因如下: [oracle@oracles ~]$ rman target sys/sys@yunhaip auxiliary sys/sys@yunhais Recovery Manager: Release 11.2.0.3.0 - Production on Wed Jul 3 15:43:07 2019 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. connected to target database: YUNHAIP (DBID=665781658) RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-00554: initialization of internal recovery manager package failed RMAN-04006: error from auxiliary database: ORA-12528: TNS:listener: all appropriate instances are blocking new connections

10、尝试启动从库到nomount

SQL> create spfile from pfile; SQL> startup nomount

11、RMAN复制主库到备库 11.1、首先RMAN连接到主数据库和备数据库

rman target sys/sys@yunhaip auxiliary sys/sys@yunhais

如果有相关报错,请注意9,6.4步骤

11.2、使用RMAN的duplicate命令进行复制,两边目录结构相同,需要添加nofilenamecheck参数

duplicate target database for standby from active database nofilenamecheck;

12、复制完毕,对从库进行相关处理

select status from v$instance;

查询从库是否处于MOUNTED状态

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

在备库开启实时日志应用

13、观察主从正确状态 13.1、观察主库alert日志

vim alert_yunhaip.log

Error 12154 received logging on to the standby发现这个错误

13.2、重启主库

SQL> shutdown immediate; SQL> startup;

13.3观察主库状态:

SQL> select switchover_status,database_role from v$database;

SWITCHOVER_STATUS DATABASE_ROLE


TO STANDBY PRIMARY

13.4、观察从库状态

SQL> select switchover_status,database_role from v$database;

SWITCHOVER_STATUS DATABASE_ROLE


NOT ALLOWED PHYSICAL STANDBY

14、通过切换日志观察同步情况 14.1、主库切换

SQL> archive log list; SQL> alter system switch logfile; SQL> archive log list;

14.2、从库观察

SQL> archive log list;

15、从库open,以便用户能够读取

alter database recover managed standby database cancel; alter database open; alter database recover managed standby database using current logfile disconnect ;

[oracle@oracles ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.3.0 Production on Wed Jul 3 15:59:46 2019 Copyright (c) 1982, 2011, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> alter database recover managed standby database cancel; Database altered. SQL> alter database open; Database altered. SQL> alter database recover managed standby database using current logfile disconnect ; Database altered. SQL> exit Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options

16、实验过程 16.1、观察从库现有数据

[oracle@oracles ~]$ sqlplus test/test SQL*Plus: Release 11.2.0.3.0 Production on Wed Jul 3 16:01:59 2019 Copyright (c) 1982, 2011, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> select * from test; ID NUMS


     1          2

SQL> exit Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options [oracle@oracles ~]$ exit 登出 Connection to 192.168.56.117 closed.

16.2、主库添加新数据

[oracle@oraclep trace]$ sqlplus test/test SQL*Plus: Release 11.2.0.3.0 Production on Wed Jul 3 16:02:19 2019 Copyright (c) 1982, 2011, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> insert into test values(2,2); 1 row created. SQL> commit; Commit complete. SQL> exit Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options

16.3、从库观察新数据

[oracle@oraclep trace]$ ssh 192.168.56.117 oracle@192.168.56.117's password: Last login: Wed Jul 3 16:01:52 2019 from 192.168.56.118 [oracle@oracles ~]$ sqlplus test/test SQL*Plus: Release 11.2.0.3.0 Production on Wed Jul 3 16:02:36 2019 Copyright (c) 1982, 2011, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> select * from test; ID NUMS


     1          2
     2          2

补充: 补充一、 只读方式开始从库 >SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down. SQL> startup nomount ORACLE instance started.

Total System Global Area  768294912 bytes
Fixed Size                  2232312 bytes
Variable Size             452984840 bytes
Database Buffers          310378496 bytes
Redo Buffers                2699264 bytes
SQL> alter database mount standby database;

Database altered.

SQL> alter database recover managed standby database using current logfile disconnect from session;

Database altered.

SQL> alter database recover managed standby database cancel;

Database altered.

SQL> alter database open read only;

Database altered.

SQL> alter database recover managed standby database using current logfile disconnect from session;

Database altered.

SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
[oracle@oracles ~]$ sqlplus test/test   

SQL*Plus: Release 11.2.0.3.0 Production on Thu Jul 4 09:32:48 2019

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


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> select *from test;

    ID       NUMS
---------- ----------
     1          2
     2          2
     2          3
     2          4

SQL> select *from test;

    ID       NUMS
---------- ----------
     1          2
     2          2
     2          3
     2          4
     2          5

SQL>