让你快速搭建Oracle ADG环境(oracle adg配置)
让你快速搭建Oracle ADG环境
Oracle Active Data Guard (ADG) 是一款可靠的数据保护和灾备解决方案,可在传统基于磁盘的备份和灾难恢复解决方案(如备份集、归档日志备份、异地数据中心等)的基础上,大幅增强数据保护功能。本文将介绍如何快速搭建Oracle ADG环境,让您轻松创建一个高效可靠的备份和灾备系统。
1. 准备工作
在开始搭建ADG环境前,你需要准备以下条件:
1) 一台运行Oracle数据库的主机;
2) 一台Linux服务器作为备用实例(可以使用Oracle Cloud提供的虚拟机);
3) Oracle 12c及以上的版本;
4) 主库在归档模式下运行。
2. 配置主库
在主机上执行以下步骤来配置主库:
1) 确保数据库处于归档模式下,使用以下SQL检查:
SQL> archive log list
如果Output显示参数为“Database log mode Archive Mode”,则你的数据库处于归档模式下。
2) 启用归档日志:
SQL> shutdown immediate;
SQL> startup mount;
SQL> alter database archivelog;
SQL> alter database open;
3) 创建监听器:
[oracle@dbserver ~]$ netca
4) 在主机中创建一个备用实例的tnsnames.ora文件:
[oracle@dbserver ~]$ vi $ORACLE_HOME/network/admin/tnsnames.ora
ADG =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = backupserver)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = PDB1)
(DB_UNIQUE_NAME = adg_pdb1)
)
)
其中backupserver是备用实例服务器的主机名,1521是实例所使用的端口,PDB1是主库中的嵌入式容器数据库(CDB)的插件数据库(PDB)的服务名称。要区分主库和备用实例,我们将备用实例的DB_UNIQUE_NAME设置为adg_pdb1。
5) 创建一个主库的密码文件:
$ orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password= entries=10
其中,是你希望设置的密码。
3. 配置备用实例
在备用实例上执行以下步骤以配置备用实例:
1) 确定主库的DB_UNIQUE_NAME:
SQL> select name, db_unique_name from v$database;
2) 在备用实例中创建服务:
SQL> alter system set service_names = ‘PDB1’ scope=both;
SQL> alter system set db_unique_name = ‘adg_pdb1’ scope=both;
3) 在备用实例中创建控制文件副本:
SQL> ALTER DATABASE CREATE STANDBY CONTROLFILE AS ‘/u01/app/oracle/oradata/adg/control01.ctl’;
4) 在备用实例中创建一个密码文件,并保证和主库中的文件相同:
[oracle@backupserver dbs]$ orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password= entries=10
5) 编辑备用实例的tnsnames.ora文件,添加主库的信息:
[oracle@backupserver ~]$ vi $ORACLE_HOME/network/admin/tnsnames.ora
PDB1 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = dbserver)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = PDB1)
)
)
6) 配置DG_BROKER_START参数:
SQL> ALTER SYSTEM SET DG_BROKER_START=TRUE;
4. 配置主库和备用实例之间的连接
在主库上执行以下操作来配置主库和备用实例之间的连接:
1) 创建DDL脚本:
[oracle@dbserver ~]$ vidg_create.sql
CREATE USER sys_adg IDENTIFIED BY DEFAULT TABLESPACE system temporary tablespace temp;
GRANT CONNECT, RESOURCE, RECOVERY_CATALOG_OWNER, CREATE SESSION, CREATE TABLE, CREATE SEQUENCE, CREATE PROCEDURE, CREATE TRIGGER, CREATE TYPE TO sys_adg;
其中,是你希望设置的密码。
2) 将脚本复制到备用实例上:
[oracle@dbserver ~]$ scp dg_create.sql oracle@backupserver:/home/oracle/
3) 在备用实例上执行脚本:
[oracle@backupserver ~]$ sqlplus sys/@PDB1 AS SYSDBA @/home/oracle/dg_create.sql
4) 创建一个DG_BROKER_CONFIG_FILE1参数文件,指定主库和备用实例的配置文件路径:
[oracle@dbserver ~]$ vi$ORACLE_HOME/dbs/initadg1.ora
DG_BROKER_CONFIG_FILE1=’/u01/app/oracle/oracle/product/12.1.0.2/dbhome_1/dbs/adg1.ora’
其中,/u01/app/oracle/oracle/product/12.1.0.2/dbhome_1/dbs/adg1.ora是主库和备用实例配置文件的路径。如果需要在其他节点上配置其他备用实例,则需要添加一个DG_BROKER_CONFIG_FILE2参数文件。
5) 在主库中创建一个ADG配置:
DGMGRL> create configuration adg as primary database is PDB1 connect identifier is ADG;
DGMGRL> add database ‘adg_pdb1’ as connect identifier is PDB1 mntned as physical;
DGMGRL> enable configuration;
6) 在备用实例中,更改DB_FILE_NAME_CONVERT和LOG_FILE_NAME_CONVERT参数:
SQL> alter system set db_file_name_convert = ‘+DATA’,’+FRA’ scope=spfile;
SQL> alter system set log_file_name_convert = ‘+DATA’,’+FRA’ scope=spfile;
7) 在备用实例上启动应用的管理代理程序:
[oracle@backupserver ~]$ dgmgrl sys/@PDB1
DGMGRL> start observer;
此时,主库的配置应该已经完成。
5. 测试配置
在主库和备用实例之间进行切换之前,需要测试配置的有效性。
1) 禁用网络:
命令:iptables -F
2) 在主库上创建一个表和一条数据:
SQL> create table test (c1 int);
SQL> insert into test values(0);
3) 在备用实例上查询这条数据:
SQL> select count(*) from sys_adg.test;
结果应该返回“0”,因为test表从主库还没有同步到备用实例。
4) 在主库上查询归档日志路径:
SQL> show parameter log_archive_dest_1;
5) 复制归档日志到备用实例:
[oracle@dbserver admin]$ scp -r dbserver:/u01/app/oracle/oracle/product/12.1.0.2/dbhome_1/dbs/arch backupserver:/u01/app/oracle/oracle/product/12.1.0.2/dbhome_1/dbs/
将dbserver和backupserver替换为主库和备用实例的主机名。
6) 在备用实例上查询数据:
SQL> select count(*) from sys_adg.test;
结果应该返回“1”,因为备用实例已经同步了来自主库的归档日志和test表中的数据。
7) 切换到备用实例:
SQL> alter system switch logfile;
SQL> alter system archive log current;
SQL> shutdown immediate;
SQL> startup mount;
现在,备用实例应该已变成主库,并且你可以在新的主库上运行SQL命令了。
通过以上步骤,你已经成功地搭建了一个Oracle ADG环境。这个环境将确保你的数据库在灾难发生时能够继续运行并保护你的数据。在实际应用中,你还需定期测试和维护ADG配置,以确保其可靠性和有效性。