Oracle 10g可以通过基于备份的rman DUPLICATE实现
dataguard,通过步骤需要对数据库进行备份,并在standby侧进行数据库的恢复。而到了11g,oracle推出了Duplicate From Active Database技术,不需要再对数据库进行rman备份恢复,一切动作都通过网络自动完成。 1.对主数据库进行必要的更改。 a. 启用 force logging。 b. 拷贝密码文件到从节点。 c. 创建备用 redo 日志。
d. 修改参数文件,使其适用于 Dataguard。 2. 确保 sql*net 连接正常。
3. 使用主数据库活动文件,通过网络创建备用数据库。 a. 创建密码文件
b. 为备用数据库(辅助数据库)创建初始化参数文件 c. 为数据库文件创建需要的装载点或文件夹
d. 连接至主数据库作为其目标数据库,以运行创建备用STANDBY。
ON 第一步:主库(primary)的环境配置 1、确认数据库处于归档模式:
SQL> select log_mode from v$database;
2、允许数据库强制日志
SQL> ALTER DATABASE FORCE LOGGING;
SQL>select force_logging from v$database;
3、添加standby日志文件
SQL> alter database add standby logfile '/opt/app/oracle/oradata/study/standby01.log' size 100M;
SQL> alter database add standby logfile '/opt/app/oracle/oradata/study/standby02.log' size 100M;
SQL> alter database add standby logfile '/opt/app/oracle/oradata/study/standby03.log' size 100M;
SQL> alter database add standby logfile '/opt/app/oracle/oradata/study/standby04.log' size 100M;
4,修改primary参数文件spfile,需要设置以下8个参数
SQL>alter system set LOG_ARCHIVE_CONFIG='DG_CONFIG=(pridb,stadb)'; SQL> alter system set db_unique_name='pridb' scope=spfile; SQL>
alter
system
set
LOG_ARCHIVE_DEST_1='LOCATION=/opt/app/oracle/pridb
VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=pridb'; SQL>alter
system
set
LOG_ARCHIVE_DEST_2='SERVICE=stadb
LGWR
ASYNC
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=stadb'; SQL> alter system set LOG_ARCHIVE_DEST_STATE_1=ENABLE; SQL> alter system set FAL_SERVER=stadb; SQL> alter system set FAL_CLIENT=pridb;
SQL> alter system set DB_FILE_NAME_CONVERT='/opt/app/oracle/oradata/study','/opt/app/oracle/oradata/aux' scope=spfile; SQL>
alter
system
set
LOG_FILE_NAME_CONVERT='/opt/app/oracle/oradata/study
','/opt/app/oracle/oradata/aux' scope=spfile;
第二步、网络相关配置(确保 sql*net 连接正常) 1、在备库stadb中的listener.ora中加入stadb的条目:
SID_LIST_LISTENER = (SID_LIST = (SID_DESC =
(GLOBAL_DBNAME = stadb)
(ORACLE_HOME = /opt/app/oracle/product/10.2.0/db_1) (SID_NAME = stadb) ) )
LISTENER = (DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.9)(PORT = 1521)) )
2、在主库上修改service_names参数:
SQL>alter system set service_names='studby,pridb';
3、主库和备库的 TNSNAMES.ORA 应该有两个条目:
STADB =
(DESCRIPTION = (ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.9)(PORT = 1521)) )
(CONNECT_DATA = (SERVICE_NAME = stadb) ) ) PRIDB =
(DESCRIPTION = (ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.7.239)(PORT = 1521)) )
(CONNECT_DATA = (SERVICE_NAME = pridb) ) )
4、在主数据库和备用数据库中使用以下命令,检查 SQL*Net 配置:
$tnsping pridb $tnsping stadb