/*---------------
Author : lonion
Reference : Here.
Date : 2011-10-30
Data Guard的物理备库的配置将以此文档为参考文档
-----------------------------------------------*/
Oracle 10g - Manually Create a Physical Standby Database Using Data Guard
操作系统:Red Hat Enterprise Linux 5
Data Guard数据保护模式:最高性能(默认)
配置Data Guard环境:
主库
● IP:192.168.1.100
● 数据库SID:lonion
● DB_NAME:lonion
● DB_UNIQUE_NAME:PRIM
● 数据库软件安装路径:/u01/app/oracle/product/10.2.0/db_1/
备库
● IP:192.168.1.105
● 数据库SID:STAN
● DB_NAME:lonion
● DB_UNIQUE_NAME:STAN
● 数据库软件安装路径:/u01/app/oracle/product/10.2.0/db_1/
● 数据文件路径:/u01/app/oracle/oradata/STAN/DATAFILE
● 本地归档路径:/u01/app/oracle/oradata/STAN/ARCHIVELOG
● Debug日志输出路径:/u01/app/oracle/oradata/STAN
PS:将主库上冷备份的数据文件、创建的备库控制文件和初始化参数文件复制到备库
(一)、主库上的环境配置
1、启用归档模式
SQL>startup mount;
SQL>alter database archivelog;
SQL>alter database open;
SQL>archive log list;
2、在主库上启用FORCE LOGGING
SQL> ALTER DATABASE FORCE LOGGING;
3、创建密码文件,使用orapwd命令创建。
[oracle@lonion ~]$ orapwd
file='/u01/app/oracle/product/10.2.0/db_1/orapwlonion.ora' password=oracle entries=15 force=yes
4、配置Standby Redo log
1)Standby Redo log文件的大小应与当前主库的联机日志文件一样。查询当前主库的联机日志文件的大小:
SQL> SELECT BYTES FROM V$LOG;
BYTES
----------
52428800
52428800
52428800
2)使用下面的命令确定当前主库的日志文件组:
SQL> SELECT GROUP#,MEMBER FROM V$LOGFILE ;
3)创建Standby Redo log组
假设当前主库上最初有3个日志文件组,使用下面的命令创建3个Standby Redo log组:
SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 4
('/u01/app/oracle/oradata/lonion/standby01.log') SIZE 50M;
SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 5
('/u01/app/oracle/oradata/lonion/standby02.log') SIZE 50M;
SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 6
('/u01/app/oracle/oradata/lonion/standby03.log') SIZE 50M;
4)验证创建的Standby Redo log组:
SQL> SELECT * FROM V$STANDBY_LOG;
5、设置主库的初始化参数
1)先从spfile文件生成pfile文件
SQL>CREATE PFILE='$ORACLE_HOME/dbs/pfilePRIM.ora' from spfile ;
2)编辑pfilePRIM.ora文件
*.DB_NAME='lonion'
*.DB_UNIQUE_NAME=PRIM
*.LOG_ARCHIVE_CONFIG='DG_CONFIG=(PRIM,STAN)'
*.LOG_ARCHIVE_DEST_2='SERVICE=STAN LGWR ASYNC
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=STAN'
*.LOG_ARCHIVE_DEST_STATE_2=DEFER
*.REMOTE_LOGIN_PASSWORDFILE='EXCLUSIVE'
#下面增加的参数是为适应角色切换后的新角色而进行的配置(即当主库切换为备库时)
*.FAL_SERVER=STAN
*.FAL_CLIENT=PRIM
*.DB_FILE_NAME_CONVERT='/u01/app/oracle/oradata/STAN/DATAFILE','/u01/app/oracle/oradata/lonion'
*.LOG_FILE_NAME_CONVERT='/u01/app/oracle/oradata/STAN/ONLINELOG','/u01/app/oracle/oradata/lonion'
*.STANDBY_FILE_MANAGEMENT=AUTO
6、从pfile创建spfile文件,并且使用新的spfile重新启动主库
Data Guard必须使用SPFILE
1)创建SPFILE并重启数据库。
SQL> startup nomount pfile='$ORACLE_HOME/dbs/pfilePRIM.ora';
SQL>create spfile from pfile='$ORACLE_HOME/dbs/pfilePRIM.ora';
SQL>shutdown immediate;
SQL>startup;
2)查看spfile参数值,看是否是以新创建的spfilePRIM.ora文件启动数据库
SQL> show parameter spfile ;
7、备份数据文件和临时文件,此处采用冷备份。
8、启动mount状态,创建备库的控制文件。
SQL>startup mount;
SQL>alter database create standby controlfile as 'STAN.ctl';
(二)、备库上的环境配置
1、oracle用户创建控制文件、数据文件、联机日志文件、归档日志文件和转储(dump)文件的存放目录
[oracle@lonion ~]$ mkdir /u01/app/oracle/oradata/STAN/CONTROLFILES
[oracle@lonion ~]$ mkdir /u01/app/oracle/oradata/STAN/DATAFILE
[oracle@lonion ~]$ mkdir /u01/app/oracle/oradata/STAN/ONLINELOG
[oracle@lonion ~]$ mkdir /u01/app/oracle/oradata/STAN/ARCHIVELOG
[oracle@lonion ~]$ mkdir /u01/app/oracle/oradata/STAN/adump
[oracle@lonion ~]$ mkdir /u01/app/oracle/oradata/STAN/bdump
[oracle@lonion ~]$ mkdir /u01/app/oracle/oradata/STAN/cdump
[oracle@lonion ~]$ mkdir /u01/app/oracle/oradata/STAN/udump
2、将主库上数据文件的备份复制到备库服务器上
1)用oracle用户创建数据文件的存放目录
[oracle@lonion ~]$ mkdir /u01/app/oracle/oradata/STAN/DATAFILE
2)将主库上备份的数据文件和临时文件复制到/u01/app/oracle/oradata/STAN/DATAFILE目录下
3)检查oracle用户用户对复制过来的数据文件和临时文件是否有读写权限,如下红色字体:
[root@lonion DATAFILE]# ll
-rw-r--r-- 1 oracle oinstall 251666432 10-29 09:12 sysaux01.dbf
-rw-r--r-- 1 oracle oinstall 503324672 10-29 09:12 system01.dbf
-rw-r--r-- 1 oracle oinstall 20979712 10-27 22:05 temp01.dbf
-rw-r--r-- 1 oracle oinstall 26222592 10-29 09:12 undotbs01.dbf
-rw-r--r-- 1 oracle oinstall 5251072 10-29 09:12 users01.dbf
如果不是跟上述红色字体一样的则要进行修改,用root用户如下修改:
[root@lonion DATAFILE]# chown -R oracle:oinstall
/u01/app/oracle/oradata/STAN/DATAFILE
注:由此引述出,所有从主库上复制过来的文件都要对oracle用户的读写权限进行检查,避免不必要的错误的发生。
3、复制主库联机日志文件到备库的/u01/app/oracle/oradata/STAN/ONLINELOG目录
提示:也可以不复制由备库自行生成
4、将主库上创建的备库的控制文件STAN.ctl文件复制到到备库的/u01/app/oracle/oradata/STAN/CONTROLFILES
1)重命名控制文件为controlSTAN01.ctl
[oracle@lonion ~] mv /u01/app/oracle/oradata/STAN/CONTROLFILES/STAN.ctl /u01/app/oracle/oradata/STAN/CONTROLFILES/controlSTAN01.ctl
2)再创建2份控制文件,防止控制文件损坏的情况
[oracle@lonion~]cp 01/app/oracle/oradata/STAN/CONTROLFILES/controlSTAN01.ctl
/u01/app/oracle/oradata/STAN/CONTROLFILES/controlSTAN02.ctl
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/24389441/viewspace-1056427/ ,如需转载,请注明出处,否则将追究法律责任。