数据库版本:Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 主库ip:192.168.133.133 instance_name:orcl service_name:pdb 主机名:dg1 备库ip:192.168.133.134 instance_name:orcl service_name:sdb 主机名:dg2 (注意,在
虚拟机上进行操作,网络连接方式最好选择host only,这样内部网络才会稳定,主库备库间的通信才更加正常)
--修改主备库hosts文件: 主库: [root@dg1 ~]# cat /etc/hosts 127.0.0.1 dg1 localhost : :1 localhost6.localdomain6 localhost6 192.168.133.133 dg1 192.168.133.134 dg2
备库: [root@dg2 ~]# cat /etc/hosts 127.0.0.1 dg2 localhost : :1 localhost6.localdomain6 localhost6 192.168.133.133 dg1 192.168.133.134 dg2
--看看防火墙是否关闭: [root@dg1 ~]# /etc/init.d/iptables status
Firewall is stopped.
--搭建DG前的准备工作: 开启
数据库logging和archivelog mode SQL>alter database force logging; 检查: SQL>select force_logging from v$database;(应为YES) 检查数据库是否处于归档模式: SQL>select log_mode from v$database; 如果数据库没有处于归档模式,那么将数据库shutdow immediate;重启到mount,执行 SQL>alter database archivelog; SQL>alter database open; SQL>archive log list;
--配置主备库的监听和网络服务名: 主库: listener.ora: SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = pdb) (ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1) (SID_NAME = orcl) ) )
LISTENER = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = dg1)(PORT = 1521)) )
ADR_BASE_LISTENER = /u01/app/oracle
tnsnames.ora: PDB = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.133.133)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = pdb) ) )
SDB = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.133.134)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = sdb) ) )
ORCL = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = dg1)(PORT = 1521)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) ) )
备库: listener.ora: SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = sdb) (ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1) (SID_NAME = orcl) ) )
LISTENER = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = dg2)(PORT = 1521)) )
ADR_BASE_LISTENER = /u01/app/oracle
tnsnames.ora: PDB = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.133.133)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = pdb) ) )
SDB = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.133.134)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = sdb) ) )
--启动主备库的监听: lsnrctl start
--创建备库的口令文件: 如果主库中有就直接使用scp命令拷贝到备库所在服务器相应目录中,如果没有就使用orapwd命令创建:
orapwd file=xxx password=xxx entries=xx
--创建主备库的pfile,添加相应的参数: 主库: SQL>create pfile from spfile; [oracle@dg1 dbs]$ vi initorcl.ora 添加如下内容: *.instance_name=orcl *.db_unique_name=pdb *.log_archive_config='dg_config=(pdb,sdb)' *.fal_server=sdb *.fal_client=pdb *.log_archive_dest_2='service=sdb lgwr sync affirm valid_for=(online_logfiles,primary_role) db_unique_name=sdb' *.LOG_ARCHIVE_DEST_STATE_1=ENABLE *.LOG_ARCHIVE_DEST_STATE_2=ENABLE *.STANDBY_FILE_MANAGEMENT=AUTO
如果主备库的数据文件及日志文件不在同一个目录,则需要添加如下两个参数文件,路径为先远程后本地:
*.DB_FILE_NAME_CONVERT='/u01/oradata/sdb/','/u01/oradata/pdb/'
*.LOG_FILE_NAME_CONVERT='/u01/oradata/sdb/','/u01/oradata/pdb/'
备库: 使用scp命令将主库的pfile拷贝到备库所在服务器相同目录下,并修改如下参数: [oracle@dg2 dbs]$ vi initorcl.ora *.instance_name=orcl *.db_unique_name=sdb *.log_archive_config='dg_config=(pdb,sdb)' *.fal_server=pdb *.fal_client=sdb *.log_archive_dest_2='service=pdb lgwr sync affirm valid_for=(online_logfiles,primary_ro |