为了方便大家windows使用习惯,本文环境为windows,11G,操作环境cygwin主要是让大家脱离dos这个古董,慢慢熟悉linux的操作环境。
datagurd的基本原理这里就不详细说了,实现本次单机dataguard配置,主要要实现以下几个步骤:
一、数据库基本信息
1.主数据库基本信息:数据库名 (db_name): ORCL
数据库唯一名 (db_unique_name): orcl1
数据库tns服务名(service_name):primary
TNS Name连接串: standby (主要是向standby数据库传送日志文件)2.从数据库基本信息:
数据库名 (db_name): ORCL
数据库唯一名 (db_unique_name): orcl2
数据库tns服务名(service_name):standby
TNS Name: primary (指向向主数据库接受间断的日志文件)二、数据库配置步骤:
1、TNSname配置
在主数据库上配置standby 指向从数据库orcl2,primary指向主数据(orcl1),在从数据库上同样配置,单机上只需要配置一次即可,因为tns监听服务可以服务多个实例。
STANDBY =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = orcl2IP)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = standby)
)
)
primary =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = orcl1IP)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = primary)
)
)
2、主数据库orcl1配置
SQL> show parameter instance_name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
instance_name string orcl
SQL> show parameter spfileNAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string E:\ORACLE\PRODUCT\11.2.0\DBHOME_1\DATABASE\SPFILEORCL.ORA配置参数文件
SQL> create pfile='E:\ORACLE\PRODUCT\11.2.0\DBHOME_1\DATABASE\initprimary.ora' from spfile;
编辑参数文件修改以下参数
db_unique_name=’orcl1’
FAL_Client=’primary’
FAL_Server=’standby’
Log_archive_config=’DG_CONFIG=(primary,standby)’
Log_archive_dest_1=’Location=e:\oracle\arch\orcl1 VALID_FOR(ALL_LOGFILES,ALL_ROLES)
db_unique_name=orcl1’
Log_archive_dest_2=’Service=standby lgwr async VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
db_unique_name=orcl2'
Log_archive_dest_state_1=ENABLE
Log_archive_dest_state_2=ENABLE
Service_names=’primary,orcl’
Standby_File_Management=’AUTO’数据库数据文件位置
SQL> col name format a40
SQL> select file#,name from v$datafile;
FILE# NAME
---------- ----------------------------------------
1 E:\ORACLE\ORADATA\ORCL\SYSTEM01.DBF
2 E:\ORACLE\ORADATA\ORCL\SYSAUX01.DBF
3 E:\ORACLE\ORADATA\ORCL\UNDOTBS01.DBF
4 E:\ORACLE\TEST.ORA把参数文件转换为服务器参数文件
SQL> shutdown immediate;
SQL> create spfile from pfile='E:\ORACLE\PRODUCT\11.2.0\DBHOME_1\DATABASE\initprimary.ora';修改主数据库为强制归档
SQL> startup mount;
SQL> alter database force loging;
SQL> alter database open;由于是在本机上建立dataguard,需要建立实例standby
oradmin -NEW -sid standby -startmode manual
3备用数据库配置
建立备用库参数文件
SQL> create pfile='e:\oracle\product\11.2.0\dbhome_1\database\initstandby.ora' from spfile;
修改备用库参数文件如下参数:
db_unique_name=’orcl2’
FAL_Client=’standby’
FAL_Server=’primary’
Log_archive_config=’DG_CONFIG=(orcl1,orcl2)’
Log_archive_dest_1=’Location=e:\oracle\arch\orcl2 VALID_FOR(ALL_LOGFILES,ALL_ROLES)
db_unique_name=orcl2’
Log_archive_dest_2=’Service=primary lgwr async VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
db_unique_name=orcl1'
Log_archive_dest_state_1=ENABLE
Log_archive_dest_state_2=ENABLE
Service_names=’standby’
Standby_File_Management=’AUTO’
log_file_name_convert='E:\oracle\oradata\orcl','E:\oracle\oradata\standby'
db_file_name_convert='E:\oracle\oradata\orcl','E:\oracle\oradata\standby','E:\oracle','E:\oracle\oradata\standby'
control_files='E:\oracle\oradata\orcl2\control01.ctl'
$ export ORACLE_SID=standby
$ net start oracleservicestandby
$ sqlplus "/as sysdba"
SQL> create spfile from pfile;
SQL> startup nomount;
设置主库和备库参数后,用rman进行数据库复制,测试连接串primary和standby都能联通。
登陆主库:
用rman做一个全库备份
rman>backup database;
RMAN> connect auxiliary sys/wangli@standby
已连接到辅助数据库: ORCL (未装载)
RMAN> duplicate target database for standby
2> ;
启动 Duplicate Db 于 20-3月 -13
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: SID=10 设备类型=DISK
内存脚本的内容:
{
restore clone standby controlfile;
}
正在执行内存脚本
启动 restore 于 20-3月 -13
使用通道 ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: 正在开始还原数据文件备份集
通道 ORA_AUX_DISK_1: 正在还原控制文件
通道 ORA_AUX_DISK_1: 正在读取备份片段 E:\ORACLE\PRODUCT\11.2.0\DBHOME_1\DATABASE\FLASH\ORCL1\BACKUPSET\2013_03_20\O1_MF_NCSNF_TAG20130320T104725_8NL8X0FO_.BKP
通道 ORA_AUX_DISK_1: 段句柄 = E:\ORACLE\PRODUCT\11.2.0\DBHOME_1\DATABASE\FLASH\ORCL1\BACKUPSET\2013_03_20\O1_MF_NCSNF_TAG20130320T104725_8NL8X0FO_.BKP 标记 = TAG20130320T104725
通道 ORA_AUX_DISK_1: 已还原备份片段 1
通道 ORA_AUX_DISK_1: 还原完成, 用时: 00:00:01
输出文件名=E:\ORACLE\ORADATA\ORCL2\CONTROL0201.CTL
完成 restore 于 20-3月 -13
内存脚本的内容:
{
sql clone 'alter database mount standby database';
}
正在执行内存脚本
sql 语句: alter database mount standby database
内存脚本的内容:
{
set newname for tempfile 2 to
"E:\ORACLE\ORADATA\ORCL2\TEMP02.DBF";
switch clone tempfile all;
set newname for datafile 1 to
"E:\ORACLE\ORADATA\ORCL2\SYSTEM.DBF";
set newname for datafile 2 to
"E:\ORACLE\ORADATA\ORCL2\SYSAUX01.DBF";
set newname for datafile 3 to
"E:\ORACLE\ORADATA\ORCL2\UNDOTBS01.DBF";
set newname for datafile 4 to
"E:\ORACLE\ORADATA\ORCL2\TEST.DBF";
restore
clone database
;
}
正在执行内存脚本
正在执行命令: SET NEWNAME
临时文件 2 在控制文件中已重命名为 E:\ORACLE\ORADATA\ORCL2\TEMP02.DBF
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
正在执行命令: SET NEWNAME
启动 restore 于 20-3月 -13
使用通道 ORA_AUX_DISK_1
正在略过数据文件 1; 已还原到文件 E:\ORACLE\ORADATA\ORCL2\SYSTEM.DBF
正在略过数据文件 2; 已还原到文件 E:\ORACLE\ORADATA\ORCL2\SYSAUX01.DBF
正在略过数据文件 3; 已还原到文件 E:\ORACLE\ORADATA\ORCL2\UNDOTBS01.DBF
正在略过数据文件 4; 已还原到文件 E:\ORACLE\ORADATA\ORCL2\TEST.DBF
没有完成还原; 所有文件均为只读或脱机文件或者已经还原
完成 restore 于 20-3月 -13
内存脚本的内容:
{
switch clone datafile all;
}
正在执行内存脚本
数据文件 1 已转换成数据文件副本
输入数据文件副本 RECID=33 STAMP=810560127 文件名=E:\ORACLE\ORADATA\ORCL2\SYSTEM.DBF
数据文件 2 已转换成数据文件副本
输入数据文件副本 RECID=34 STAMP=810560127 文件名=E:\ORACLE\ORADATA\ORCL2\SYSAUX01.DBF
数据文件 3 已转换成数据文件副本
输入数据文件副本 RECID=35 STAMP=810560127 文件名=E:\ORACLE\ORADATA\ORCL2\UNDOTBS01.DBF
数据文件 4 已转换成数据文件副本
输入数据文件副本 RECID=36 STAMP=810560127 文件名=E:\ORACLE\ORADATA\ORCL2\TEST.DBF
完成 Duplicate Db 于 20-3月 -13
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/133126/viewspace-756552/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/133126/viewspace-756552/