oracle11g搭建主从集群

安装oracle11g参考:centos安装oracle11g数据库-优快云博客

一、主库操作

sqlplus / as sysdba

1、开启归档模式和强制日志模式

shutdown immediate
startup mount
#开启归档模式和强制日志模式
alter database archivelog;
alter database force logging;
#开启补充日志
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
#备库创建redo文件(比主库多一组,所以创建4个)
ALTER DATABASE ADD STANDBY LOGFILE GROUP 4 ('/u01/app/oracle/oradata/orcl/redo04.log') size 50M;
ALTER DATABASE ADD STANDBY LOGFILE GROUP 5 ('/u01/app/oracle/oradata/orcl/redo05.log') size 50M;
ALTER DATABASE ADD STANDBY LOGFILE GROUP 6 ('/u01/app/oracle/oradata/orcl/redo06.log') size 50M;
ALTER DATABASE ADD STANDBY LOGFILE GROUP 7 ('/u01/app/oracle/oradata/orcl/redo07.log') size 50M;
#创建pfile文件
create pfile from spfile;
shutdown immediate
exit

2、创建文件夹

mkdir /u01/app/oracle/oradata/orcl/archivelog
mkdir /u01/app/oracle/oradata/orcl/backup

3、配置监听器

vim /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora

增加内容 

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = orcl.com)
      (ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1)
      (SID_NAME = orcl) 
    )
  )
解释:#SID_NAME = orcl 就是在安装oracle软件的配置文件db_install.rsp 和创建数据库的配置文件dbca.rsp 中配置的SID

4、配置tns

vim /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora

增加

ORCL_SLAVE = 
  (DESCRIPTION = 
    (ADDRESS_LIST = 
      (ADDRESS = (PROTOCOL = TCP)(HOST = 172.21.16.4)(PORT = 1521)) 
    ) 
    (CONNECT_DATA = 
      (SERVICE_NAME =orcl) 
      (UR=A)
    ) 
  ) 
#该链接配置主库链接,和上面一样的
ORCL_MASTER =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 172.21.16.13)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME =orcl)
      (UR=A)
    )
  )

5、重启监听器并ping测试

lsnrctl stop
lsnrctl start

tnsping测试
tnsping ORCL_MASTER
tnsping ORCL_SLAVE

6、修改pfile配置文件

vim /u01/app/oracle/product/11.2.0/dbhome_1/dbs/initorcl.ora

文件尾添加:

DB_UNIQUE_NAME=orcl_master 
LOG_ARCHIVE_CONFIG='DG_CONFIG=(orcl_master,orcl_slave)' 
LOG_ARCHIVE_DEST_1= 
 'LOCATION=/u01/app/oracle/oradata/orcl/archivelog
  VALID_FOR=(ALL_LOGFILES,ALL_ROLES)
  DB_UNIQUE_NAME=orcl_master' 
LOG_ARCHIVE_DEST_2= 
 'SERVICE=orcl_slave ASYNC 
  VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
  DB_UNIQUE_NAME=orcl_slave' 
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=orcl_slave 
STANDBY_FILE_MANAGEMENT=AUTO

7、创建spfile

sqlplus / as sysdba

startup nomount pfile='/u01/app/oracle/product/11.2.0/dbhome_1/dbs/initorcl.ora'
create spfile from pfile;
alter database mount;
alter database open;

8、传输口令验证文件和pfile文件到备库

scp /u01/app/oracle/product/11.2.0/dbhome_1/dbs/initorcl.ora oracle@172.21.16.4:/u01/app/oracle/product/11.2.0/dbhome_1/dbs/
scp /u01/app/oracle/product/11.2.0/dbhome_1/dbs/orapworcl oracle@172.21.16.4:/u01/app/oracle/product/11.2.0/dbhome_1/dbs/

 二、备库操作

1、创建目录

mkdir /u01/app/oracle/oradata/orcl/backup

2、修改监听配置和tns配置(同主库)

vim /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
vim /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora

3、手动注册数据库实例到监听器

sqlplus / as sysdba

alter system register;

4、修改pfile文件

vim /u01/app/oracle/product/11.2.0/dbhome_1/dbs/initorcl.ora 

文件尾修改:

*.log_file_name_convert='/u01/app/oracle/oradata/orcl','/u01/app/oracle/oradata/orcl'
*.db_file_name_convert='/u01/app/oracle/oradata/orcl','/u01/app/oracle/oradata/orcl'
DB_UNIQUE_NAME=orcl_slave
LOG_ARCHIVE_CONFIG='DG_CONFIG=(orcl_master,orcl_slave)'
LOG_ARCHIVE_DEST_1= 
 'LOCATION=/u01/app/oracle/oradata/orcl/archivelog
  VALID_FOR=(ALL_LOGFILES,ALL_ROLES) 
  DB_UNIQUE_NAME=orcl_slave' 
LOG_ARCHIVE_DEST_2= 
 'SERVICE=orcl_slave ASYNC 
  VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) 
  DB_UNIQUE_NAME=orcl_master' 
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=orcl_master
STANDBY_FILE_MANAGEMENT=AUTO

5、启动备库到nomount状态

sqlplus / as sysdba

shutdown immediate
startup nomount pfile='/u01/app/oracle/product/11.2.0/dbhome_1/dbs/initorcl.ora'
quit

6、rman同步主库数据

rman target sys/123@orcl_master auxiliary sys/123@orcl_slave
开始同步
duplicate target database for standby from active database nofilenamecheck;
exit;

7、备库开启apply service

sqlplus / as sysdba

alter database open;
select open_mode from v$database;
alter database recover managed standby database disconnect from session;

8、修改成最大可用性模式(实时同步)

ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=orcl_slave ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcl_slave';
ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE;

停止同步

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

恢复同步

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE disconnect from session USING CURRENT LOGFILE;

三、测试

RAC是一个完整的集群应用环境,它不仅实现了集群的功能,而且提供了运行在集群之上的应用程序,即Oracle数据库。无论与普通的集群相比,还是与普通的oracle数据库相比,RAC都有一些独特之处。 RAC由至少两个节点组成,节点之间通过公共网络和私有网络连接,其中私有网络的功能是实现节点之间的通信,而公共网络的功能是提供用户的访问。在每个节点上分别运行一个Oracle数据库实例和一个监听器,分别监听一个IP地址上的用户请求,这个地址称为VIP(Virtual IP)。用户可以向任何一个VIP所在的数据库服务器发出请求,通过任何一个数据库实例访问数据库。Clusterware负责监视每个节点的状态,如果发现某个节点出现故障,便把这个节点上的数据库实例和它所对应的VIP以及其他资源切换到另外一个节点上,这样可以保证用户仍然可通过这个VIP访问数据库。 在普通的Oracle数据库中,一个数据库实例只能访问一个数据库,而一个数据库只能被一个数据库实例打开。在RAC环境中,多个数据库实例同时访问同一个数据库,每个数据库实例分别在不同的节点上运行,而数据库存放在共享的存储设备上。 通过RAC,不仅可以实现数据库的并发访问,而且可以实现用户访问的负载均衡。用户可以通过任何一个数据库实例访问数据库,实例之间通过内部通信来保证事务的一致性。例如,当用户在一个实例修改数据时,需要对数据加锁。当另一个用户在其他实例中修改同样的数据时,便需要等待锁的释放。当前一个用户提交事务时,后一个用户立即可以得到修改之后的数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值