Oracle安装(3)快速搭建Data Gurad之物理standby
来源:互联网 发布:php性能测试代码 编辑:程序博客网 时间:2024/06/05 00:46
Data Gurad的作用就不多说了,主在这说下物理standby的搭建步骤。
大致有这三种方式创建standby库
方式一:用rman的方式生成standby. (用rman的duplice方式直接创建,无须先备份)
方式二:用rman的restore方式生成。(先用rman全备份主库后,再用rman通过restore的方式创建)
方式三:用cp的方式生成 (关闭主库后,复制控件文件,密码文件,数据文件到备库所在位置)
我主要在这用duplice方式,优点无须多说,假设你的数据库上T,你会选哪种方法?
Oracle测试版本为11g;
1. 设置好主备库的环境变量,及创建好相关目录
主库:
ORACLE_SID=xcldb
ORACLE_UNQNAME=xcldb
备库:
ORACLE_SID=xcldbdg
ORACLE_UNQNAME=xcldbdg
2. 设置数据库为归档模式
3.设置force logging 强制日志模式
4.创建Standby redo log
创建个数建议公式:
Standby redo log 组数公式>=(每个instance日志组个数+1)*instance个数
(maximum number of logfiles for each thread + 1) * maximum number of threads
注意:
在add standby logfile 时,如果是单实例数据库thread 1可以不加,但如果是RAC数据库,
则要分别为每个实例各增加相关的Standby log;
另外如果是用OMF管理的可用下面的命令创建:
alter database add standby logfile thread 1 group 11 size 500m;
验证下成果:
col member format a50
select group#, type, member from v$logfile where type = 'STANDBY';
5.在主库创建standby的控制文件,并复制过到备库所在服务器
startup mount;
alter database create standby controlfile as '/home/oracle/xcldbdg.ctl';
alter database open;
scp /home/oracle/xcldbdg.ctl 172.18.2.34:/home/oracle/
6.批量更改主库的参数,设置成dg方式。
a. vi /home/oracle/dgsetprimary.sql
--alter system set fal_client='xcldb';
b.运行参数更改sql
@/home/oracle/dgsetprimary.sql
c.重新启动数据库,使参数生效。以防止一些不能动态更改的参数不起作用。
shutdown immediate;
startup
7.主备库配置Oracle Net
listener.ora 设置要特别注意,一定要设置静态监听。
且Global_dbname和sid_name在主备库各自指向各自的的数据库。
主库listener.ora:
tnsnames.ora两边一样就行了
详细说明:
静态监听,就是要设global_dbname和sid_name。
原因:
如果配置的动态监听,只要有实例没有启动到open状态,就无法通过
网络将服务注册到数据库,而只有静态监听可以.
可以通过lsnrctl start时可以看到.在静态监听开启的情况下,实例状态
显示为"UNKNOWN",而动态监听为"READY"
如数据库启动到mount状态下,不能通过网络方式注册到数据库sqlplus sys@xcldb as sysdba
出现 ORA-01031:insufficient privileges
是密码文件的问题,可用select * from v$pwfile_users;查看
用orapwd 建一个就可以了.密码文件名要注意命名规则orapw<sid>
8. 在主备库重启监听
lsnrctl stop
lsnrctl start
9. 如果是Windows的,创建好数据库服务,如不是则略过这步。
oradim -NEW -SID xcldb -STARTMODE manual
10。在主库服务器创建standby备库的密码文件,注意,sys密码要一样.并复制到备库服务器。
orapwd file=$ORACLE_HOME/dbs/orapwxcldbdg password=111111 force=y;
scp /home/oracle/initxcldb_bak.ora 172.18.2.34:/home/oracle/
11.在备库服务器创建standby的初始化参数文件
cd $ORACLE_HOME/dbs
echo DB_NAME=xcldbdg>initxcldbdg.ora
cat initxcldbdg.ora
--DB_NAME=xcldbdg --就只有这一条记录
--之所以要建这个文件是因为startup nomout要,用duplicate后会
--创建spfile,这个就没用了.
12.启动standby数据库,记得要带设好的standby的init<sid>.ora文件启动
export ORACLE_SID=xcldbdg
echo $ORACLE_SID
sqlplus / as sysdba
startup nomount pfile=$ORACLE_HOME/dbs/initxcldbdg.ora
13.创建standby库
a.创建duplicate备库的脚本文件 。
vi /home/oracle/dgdup2standby.rman
b.使用rman以auxiliary方式连接standby数据库,我用tee记录下日志
rman target sys/111111@xcldb auxiliary sys/111111@xcldbdg | tee /home/oracle/createxcldb_standby.log
c.运行脚本,复制数据库的同时,配置好了DG所需的参数。
RMAN> @/home/oracle/dgdup2standby.rman
14. 备库设为standby模式。
startup mount;
alter database recover managed standby database disconnect from session
15.检查
大致有这三种方式创建standby库
方式一:用rman的方式生成standby. (用rman的duplice方式直接创建,无须先备份)
方式二:用rman的restore方式生成。(先用rman全备份主库后,再用rman通过restore的方式创建)
方式三:用cp的方式生成 (关闭主库后,复制控件文件,密码文件,数据文件到备库所在位置)
我主要在这用duplice方式,优点无须多说,假设你的数据库上T,你会选哪种方法?
Oracle测试版本为11g;
1. 设置好主备库的环境变量,及创建好相关目录
主库:
su - oracle --归档日志存放目录 --例子放在/u01/app/oracle/archivelog/xcldb 下 mkdir -p $ORACLE_BASE/archivelog/$ORACLE_SID环境变量注意下面两个参数:
ORACLE_SID=xcldb
ORACLE_UNQNAME=xcldb
备库:
su - oracle --生成相关的目录,还要注意下权限, 另11g就这几个,10G还有几个目录 mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/{adump,bdump,cdump,dpdump,udump,pfile} --数据库所在目录 mkdir -p $ORACLE_BASE/oradata/$ORACLE_SID --闪回 mkdir -p $ORACLE_BASE/flash_recovery_area/$ORACLE_SID --归档日志存放目录 mkdir -p $ORACLE_BASE/archivelog/$ORACLE_SID环境变量注意下面两个参数:
ORACLE_SID=xcldbdg
ORACLE_UNQNAME=xcldbdg
2. 设置数据库为归档模式
--查看当前模式 archive log list --设定归档日志的路径,可以生成多份一样的日志,保存多个位置,以防丢失 --如果没设置,默认会设到$ORACLE_HOME/dbs下。 alter system set log_archive_dest_1='location=/u01/app/oracle/archivelog/xcldb'; shutdown immediate startup mount alter database archivelog; archive log list;
3.设置force logging 强制日志模式
alter database force logging select force_logging from v$database; --取消此模式:alter database no force logging; --手工切换日志,好生成归档日志 alter system switch logfile --执行个三次 select name from v$archived_log; --查看已有的日志文件 select * from v$logfile;
4.创建Standby redo log
创建个数建议公式:
Standby redo log 组数公式>=(每个instance日志组个数+1)*instance个数
(maximum number of logfiles for each thread + 1) * maximum number of threads
--找到最大的group#,因为group#不能重复 select max(group#) from v$log; --可用这两条查询看到组号及文件大小, 11g默认是52428800 SELECT GROUP#, BYTES FROM V$LOG; SELECT GROUP#, BYTES FROM V$STANDBY_LOG; --注意下大小一致,我是测试,没管size alter database add standby logfile thread 1 group 11 '/u01/app/oracle/oradata/xcldb/redo11.log' size 50m; alter database add standby logfile thread 1 group 12 '/u01/app/oracle/oradata/xcldb/redo12.log' size 50m; alter database add standby logfile thread 1 group 13 '/u01/app/oracle/oradata/xcldb/redo13.log' size 50m; alter database add standby logfile thread 1 group 14 '/u01/app/oracle/oradata/xcldb/redo14.log' size 50m;
注意:
在add standby logfile 时,如果是单实例数据库thread 1可以不加,但如果是RAC数据库,
则要分别为每个实例各增加相关的Standby log;
另外如果是用OMF管理的可用下面的命令创建:
alter database add standby logfile thread 1 group 11 size 500m;
验证下成果:
col member format a50
select group#, type, member from v$logfile where type = 'STANDBY';
5.在主库创建standby的控制文件,并复制过到备库所在服务器
startup mount;
alter database create standby controlfile as '/home/oracle/xcldbdg.ctl';
alter database open;
scp /home/oracle/xcldbdg.ctl 172.18.2.34:/home/oracle/
6.批量更改主库的参数,设置成dg方式。
a. vi /home/oracle/dgsetprimary.sql
---------------------------------------------------set serveroutput on;--alter system set db_unique_name='xcldb' scope=spfile;alter system set log_archive_config='dg_config=(xcldb,xcldbdg)';alter system set log_archive_dest_1='LOCATION=/u01/app/oracle/archivelog/xcldb VALID_FOR=(all_logfiles,all_roles) db_unique_name=xcldb';alter system set log_archive_dest_2='service=xcldbdg LGWR ASYNC NOAFFIRM valid_for=(ONLINE_LOGFILE,PRIMARY_ROLE) db_unique_name=xcldbdg';alter system set log_archive_dest_state_1='enable';alter system set log_archive_dest_state_2='enable';alter system set standby_file_management='AUTO';alter system set fal_server='xcldbdg';alter system set db_file_name_convert='/xcldb/','/xcldbdg/' scope=spfile;alter system set log_file_name_convert='/xcldb/','/xcldbdg/' scope=spfile;----------------------------show parameter log_archive_config;show parameter db_file_name_convert;show parameter log_file_name_convert;---------------------------要注意fal_client参数,11g已经废了它,11g之前的版本还是需要这个参数
--alter system set fal_client='xcldb';
b.运行参数更改sql
@/home/oracle/dgsetprimary.sql
c.重新启动数据库,使参数生效。以防止一些不能动态更改的参数不起作用。
shutdown immediate;
startup
7.主备库配置Oracle Net
listener.ora 设置要特别注意,一定要设置静态监听。
且Global_dbname和sid_name在主备库各自指向各自的的数据库。
主库listener.ora:
SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = xcldb) (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1) (SID_NAME = xcldb) ) )LISTENER = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 172.18.2.32)(PORT = 1521)) )ADR_BASE_LISTENER = /u01/app/oracle
tnsnames.ora两边一样就行了
[oracle@xcldg1] :cat tnsnames.ora# tnsnames.ora Network Configuration File: /u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora# Generated by Oracle configuration tools.XCLDB = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 172.18.2.32)(PORT = 1521)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = xcldb) ) )XCLDBDG = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 172.18.2.34)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = xcldbdg) ) )
详细说明:
静态监听,就是要设global_dbname和sid_name。
原因:
如果配置的动态监听,只要有实例没有启动到open状态,就无法通过
网络将服务注册到数据库,而只有静态监听可以.
可以通过lsnrctl start时可以看到.在静态监听开启的情况下,实例状态
显示为"UNKNOWN",而动态监听为"READY"
如数据库启动到mount状态下,不能通过网络方式注册到数据库sqlplus sys@xcldb as sysdba
出现 ORA-01031:insufficient privileges
是密码文件的问题,可用select * from v$pwfile_users;查看
用orapwd 建一个就可以了.密码文件名要注意命名规则orapw<sid>
8. 在主备库重启监听
lsnrctl stop
lsnrctl start
9. 如果是Windows的,创建好数据库服务,如不是则略过这步。
oradim -NEW -SID xcldb -STARTMODE manual
10。在主库服务器创建standby备库的密码文件,注意,sys密码要一样.并复制到备库服务器。
orapwd file=$ORACLE_HOME/dbs/orapwxcldbdg password=111111 force=y;
scp /home/oracle/initxcldb_bak.ora 172.18.2.34:/home/oracle/
11.在备库服务器创建standby的初始化参数文件
cd $ORACLE_HOME/dbs
echo DB_NAME=xcldbdg>initxcldbdg.ora
cat initxcldbdg.ora
--DB_NAME=xcldbdg --就只有这一条记录
--之所以要建这个文件是因为startup nomout要,用duplicate后会
--创建spfile,这个就没用了.
12.启动standby数据库,记得要带设好的standby的init<sid>.ora文件启动
export ORACLE_SID=xcldbdg
echo $ORACLE_SID
sqlplus / as sysdba
startup nomount pfile=$ORACLE_HOME/dbs/initxcldbdg.ora
13.创建standby库
a.创建duplicate备库的脚本文件 。
vi /home/oracle/dgdup2standby.rman
run{ allocate channel prmy1 type disk; allocate channel prmy2 type disk; allocate auxiliary channel stby type disk; duplicate target database for standby from active database nofilenamecheck spfile parameter_value_convert 'xcldb','xcldbdg' set db_unique_name='xcldbdg' set log_archive_config='dg_config=(xcldb,xcldbdg)' set log_archive_dest_1='LOCATION=/u01/app/oracle/archivelog/xcldbdg VALID_FOR=(all_logfiles,all_roles) db_unique_name=xcldbdg' set log_archive_dest_2='service=xcldbdg LGWR ASYNC NOAFFIRM valid_for=(ONLINE_LOGFILES,PRIMARY_ROLE) db_unique_name=xcldbdg' set log_archive_dest_state_1='enable' set log_archive_dest_state_2='enable' set standby_file_management='AUTO' set fal_server='xcldb' set db_file_name_convert='/xcldb/','/xcldbdg/' set log_file_name_convert='/xcldb/','/xcldbdg/' set control_files='/u01/app/oracle/oradata/xcldbdg/xcldbdg.ctl' set log_archive_max_processes=30 ;} --set fal_client='xcldbdg'
b.使用rman以auxiliary方式连接standby数据库,我用tee记录下日志
rman target sys/111111@xcldb auxiliary sys/111111@xcldbdg | tee /home/oracle/createxcldb_standby.log
c.运行脚本,复制数据库的同时,配置好了DG所需的参数。
RMAN> @/home/oracle/dgdup2standby.rman
14. 备库设为standby模式。
startup mount;
alter database recover managed standby database disconnect from session
15.检查
--查看两边的数据库状态 select name,open_mode,database_role,dataguard_broker,guard_status,force_logging,db_unique_name from v$database; --在主库执行日志切换 alter system switch logfile; --对比两边的日志情况,检查是否有同步过来。 SELECT sequence#,first_time,next_time,name FROM v$archived_log ORDER BY sequence#;
至此,物理的Standby就顺利搭建好了。
MAIL: xcl_168@aliyun.com
BLOG: http://blog.csdn.net/xcl168
0 0
- Oracle安装(3)快速搭建Data Gurad之物理standby
- Oracle Data Gurad Physical Standby 相关说明
- Oracle Data Gurad -- Logical Standby 相关说明
- Oracle Data Gurad Physical Standby 相关
- Oracle Data Gurad -- Logical Standby 相关说明
- Oracle Data Gurad Physical Standby 相关说明
- Oracle Data Gurad -- Logical Standby 相关说明
- Oracle Data Gurad Physical Standby 相关说明
- Oracle Data Gurad Physical Standby 相关说明
- Oracle Data Gurad -- Logical Standby 相关说明
- Oracle Data Gurad Physical Standby 相关说明
- Oracle Data Gurad Physical Standby 相关说明
- Oracle Data Gurad -- Logical Standby 相关说明
- Oracle Data Gurad Physical Standby 相关说明
- Oracle Data Gurad -- Logical Standby 相关说明
- Oracle Data Gurad Physical Standby 相关说明
- Oracle 10G R2的Data Guard物理standby搭建
- oracle之data guard——物理standby建立
- visualnet机房综合资源管理系统的模板创建与属性定制
- 编程之美_2.10_寻找数组中的最大值和最小值
- URL重写
- 做leetcode的几点体会分享
- Hibernate -- 二级缓存
- Oracle安装(3)快速搭建Data Gurad之物理standby
- Android 代码风格指南
- jquery 实用收藏
- /usr/bin/ld: cannot find -lX11解决方法
- 编程入门:学习编程,从何入手
- English Introduce
- 修正IE6 IE7的window.resize bug
- Eclipse下Android开发,如何查看 API源代码、私有库源代码 文件 (android source & private libs source)
- boost::intrusive_ptr用法