一、基本环境配置
1.1 环境变量设置(由于主备库目录结构一致,SID要求相同,所以主备库的env一致)
1.2 实验环境没有DNS,需要添加host记录(主备库一致)
二、网络配置
2.1 listener.ora配置
Listener.ora的作用:启动lsnrctl后,监听1521端口是否有tns等客户端接入。
主备配置的差别只有host 信息不一样。
2.2 tnsnames 配置
Dataguard 通过ssl或者password file 验证后通过tnsname方式互相通讯,传送logfile等信息。
所以需互相配置对于得tnsname信息,主备的tns信息相同。
实验过程中发现service_name需要加上domain信息
2.3 验证net配置
2.3.1 [oracle@oraclelab2 admin]$ sqlplus /nolog
2.3.2 备库只安装了软件,没有instance,所以只能在备库上验证主库的tns配置
三、主库相关参数配置
3.1 enable forced loggin
使用physical standby database为保证所有事务都产生日志信息传递到备库,需要将主库数据库设置为force logging模式,将所有的操作传递到备库。
(由于需要等待unlogged direct write I/O 完成,该命令需要一些时间完成)
3.2 决策redo transport authentication
如果不满足以下三个条件,自动识别使用passwordfile模式
(passwordfile模式需要拷贝密码文件至备库,并且如果sysdba 或 sysoper权限用户修改了密码需要重新生成拷贝密码文件)
使用SSL的三个前提条件: |
|
|
|
|
|
3.3 primary database initialization parameters
Parameter |
主库 primary |
备库 standby |
|
Db_name |
Orcl |
|
|
Db_unique _name |
Orcl |
orcl2 |
即使角色转换DB_UNIQUE_NAME不变,与TNS信息对应 |
Log_archive _config |
LOG_ARCHIVE_CONFIG= ‘DG_CONFIG=(orcl,orcl2)’ |
|
DG_CONFIG 两个属性分别为 Db_unique_name的两个值 |
Control_files |
*.control_files= ‘/u01/app/oracle/ oradata/orcl/control01.ctl’ ,’/u01/app/fast_ recovery_area/ orcl/control02.ctl’ |
目录结构相同 |
此项可根据spfile到pfile自动填写,备库与主库目录不一样则需要修改相关路径 |
Log_archive _dest_n |
LOG_ARCHIVE_DEST_1= ‘location=/u01/app/ oracle/oradata/arch VALID_FOR= (ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orcl’ LOG_ARCHIVE_DEST_2= ‘SERVICE=orcl2 ASYNC VALID_FOR= (ONLINE_LOGFILES, PRIMARY_ROLE) DB_UNIQUE_NAME=orcl2′ |
LOG_ARCHIVE_DEST_1= ‘location=/u01/app/ oracle/oradata/arch VALID_FOR= (ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orcl2′ LOG_ARCHIVE_DEST_2= ‘SERVICE=orcl2 ASYNC VALID_FOR= (ONLINE_LOGFILES, PRIMARY_ROLE) DB_UNIQUE_NAME=orcl’ |
Location/service Valid_for Db_unique_name async |
Log_archive _dest_state_n |
LOG_ARCHIVE_ DEST_STATE_1=ENABLE LOG_ARCHIVE_ DEST_STATE_2=ENABLE |
|
|
Remote_login _passwordfile |
*.remote_login_ passwordfile=’EXCLUSIVE’ |
|
|
Log_archive _format |
*.log_archive_format= ‘arc_%t_%s_%r.arc’ |
|
|
Log_archive _max_ processes |
*.log_archive_ max_processes=30 |
|
|
Fal_server |
– |
FAL_SERVER=orcl |
|
Db_file_ name_convert |
|
DB_FILE_NAME _CONVERT=‘orcl’,’orcl2′ |
|
Log_file_ name_convert |
|
LOG_FILE_NAME_CONVERT= ‘/arch2/orcl/’,’/arch2/orcl2/’ |
|
Standby_file _management |
STANDBY_FILE_ MANAGEMENT=AUTO |
|
|
3.4 enable archiving
验证:
SQL> select log_mode from v$database;
LOG_MODE
————
ARCHIVELOG
四、文件创建和复制
4.1 datafiles
确认datafile的位置,以下结果
orcl下包含以下日志文件、控制文件、以及datafile文件,所以该目录需要全备份到备库,另外可能存在datafile没有保存到实例目录下,需要特别注意对应备份。
复制拷贝(注意test001*的拷贝)
4.2 controlfiles
4.2.1确认控制文件位置(建议备库的参数文件关于controlfile保持一致)
4.2.2 create control file
SQL> STARTUP MOUNT;
SQL> ALTER DATABASE CREATE STANDBY CONTROLFILE AS ‘/tmp/standby.ctl’;
SQL> ALTER DATABASE OPEN;
4.2.3 拷贝scp创建的ctl文件到备库对应的目录下,并修改成与主库对应的文件名(如果上一步骤已经拷贝了旧控制文件先删除)
4.3 parameter file
4.3.1在主库上创建pfile文件
SQL> CREATE PFILE=’/tmp/initorcl.ora’ FROM SPFILE;
4.3.2 scp pfile到备库的dbs目录
修改pfile内容(具体参数参考3.3)
4.3.3 备库创建spfile(也可指定pfile启动后创建)
SQL> CREATE SPFILE FROM PFILE=’initorcl.ora’;
4.4 password file
在主库上创建密码文件
[oracle@oraclelab dbs]$ orapwd file=orapworcl password=oracle entries=5
拷贝密码文件到备库的dbs目录下
4.5 相关文件目录总结
项目 |
位置 |
Datafile |
$ORACLE_BASE/oradata/ORACLE_SID(可能还有其他自定义路径) |
Control file |
v$controlfile 确认 |
Parameter file |
$ORACLE_HOME/dbs |
Password file |
$ORACLE_HOME/dbs |
Net |
$ORACLE_HOME/network/admin (listener.ora,tnsnames.ora) |
Admin 目录 |
$ORACLE_BASE/admin/ (整个目录需要拷贝,里面包含了日志等相关信息) |
五、备库启动
5.1备库启动listeners服务
[oracle@oraclelab2 ~]$ lsnrctl start
5.2 启动物理备库
[oracle@oraclelab2 ~]$ sqlplus / as sysdba
SQL> STARTUP MOUNT;
5.3 create online redo log
5.3.1在主库上确认日志数量和大小
5.3.2 备库创建online redo log
SQL> ALTER DATABASE ADD STANDBY LOGFILE group 4(‘$oracle_base/oradata/slog1.rdo‘) SIZE 50M;
SQL> ALTER DATABASE ADD STANDBY LOGFILE group 5 (‘$oracle_base/oradata/slog2.rdo‘) SIZE 50M;
SQL>ALTER DATABASE ADD STANDBY LOGFILE group 6 (‘$oracle_base/oradata/slog3.rdo‘) SIZE 50M;
5.3.3 start redo apply
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;
六、测试验证
6.1在备库上查询归档日志传递
6.2 在主库上强制切换日志,触发日志传输,并在备库上验证日志是否传送
主
备
6.3 在主库上创建表格并在备库上查看redo是否应用以及语句是否 有效
主
SQL> create table datatest ( id varchar2(12),name varchar2(12));
Table created.
SQL> insert into datatest values(1,’tangkai’);
1 row created.
SQL> insert into datatest values(2,’pallas’);
1 row created.
SQL> commit;
Commit complete.
SQL> alter system switch logfile;
System altered.
SQL> /
备
七、相关概念
相关服务
Redo transport services
Apply services
Redo apply
Sql apply
Role management service
Switchover
failover
模式
物理备库
逻辑备库
未经允许不得转载:SRE空间 » Data Guard实验-Physical Standby Database
评论前必须登录!
注册