首页 > 数据库 > 数据库开发技术 > 023.笔记:10G DG-创建物理备用数据库
1.创建物理备用数据库
相关命名
host databaseType DB_UNIQUE_NAME TNS_Alias
db1 Primary ora10g1 ora10g1_db1
dg1 Physical Standby orastdb standby_dg1
--注意:DB_UNIQUE_NAME不能太长。
DB_NAME不能超过8位,在DG环境中,主备库的DB_NAME相同,DB_UNIQUE_NAME不同。
第一步:启用归档模式
alter system set log_archive_dest_1='location=/u01/ora10g/archivelog' scope=spfile;
shutdown immediate
startup mount
alter database archivelog;--alter database flashback on;
alter database open;
第二步:创建密码文件
由于新日志的传输安全和认证特征,要求Data Guard配置中的每个数据库都必须强制地使用密码文件。另外,系统用户的密码在每个系统中都必须相同,
以使日志传输服务能够正常地运行。如果主数据库当前还没有密码文件,可以通过下面的命令来创建:
cd $ORACLE_HOME/dbs
orapwd file=... password=...
如果存在密码文件,就可以修改系统参数:
alter system set remote_login_passwordfile=exclusive scope=spfile;
第三步:启用强制日志记录(可选)
在这种模式下,允许执行不进行日志记录的操作,但是改变仍会放到重做日志流中去。这就保证了进行的是可靠的灾难恢复。
alter database force logging;
第四步:创建备用数据库的重做日志(可选)(standby logfile)
最好是在主数据库和备用数据库都创建备用数据库重做日志,这样做将使角色转换更加自然。
在这个阶段创建备用数据库重做日志,就可以确保主数据库和新建的备用数据库中都有备用数据库重做日志。
alter database add standby logfile thread 1 ('/u01/ora10g/oradata/ora10g1/standbylog.dbf') size 50M;
alter database add standby logfile thread 1 ('/u01/ora10g/oradata/ora10g1/standbylog2.dbf') size 50M;
alter database add standby logfile thread 1 ('/u01/ora10g/oradata/ora10g1/standbylog3.dbf') size 50M;
alter database add standby logfile thread 1 ('/u01/ora10g/oradata/ora10g1/standbylog4.dbf') size 50M;
select * from v$logfile;
select * from v$standby_log;
第五步:配置主数据库的初始化参数
在配置主数据库的初始化参数时,考虑未来可能发生的角色转换这一问题是非常重要的。我们必须通过配置参数来控制日志传输服务和日志应用服务,从而
使得数据库在任何情况下不修改参数就可以正常地工作。
将参数配置到SPFILE中
## Primary Role Parameters ##
DB_UNIQUE_NAME=ora10g1
SERVICE_NAMES=ora10g1
LOG_ARCHIVE_CONFIG='DG_CONFIG=(ora10g1,orastdb)'
LOG_ARCHIVE_DEST_1='LOCATION=/u01/ora10g/archivelog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=ora10g1'
LOG_ARCHIVE_DEST_2='SERVICE=standby_dg1 VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orastdb'
LOG_ARCHIVE_DEST_STATE_1=ENABLE
LOG_ARCHIVE_DEST_STATE_2=DEFER
## Standby Role Parameters ##
DB_FILE_NAME_CONVERT=('/u01/ora10g/oradata/ora10g1/','/u01/ora10g/oradata/orastdb/')
LOG_FILE_NAME_CONVERT=('/u01/ora10g/oradata/ora10g1/','/u01/ora10g/oradata/orastdb/')
STANDBY_FILE_MANAGEMENT=AUTO
FAL_SERVER=standby_dg1
FAL_CLIENT=ora10g1_db1
注意:我们将LOG_ARCHIVE_DEST_2的初始化推迟到备用数据库创建并进入安装状态之后。另外值得注意的是,参数DB_FILE_NAME_CONVERT和LOG_FILE_NAME_CONVERT只有在备用
数据库和主数据库的路径不一样时才需要。
--参数配置到SPFILE中
alter system set LOG_ARCHIVE_CONFIG='DG_CONFIG=(ora10g1,orastdb)';
alter system set LOG_ARCHIVE_DEST_1='LOCATION=/u01/ora10g/archivelog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=ora10g1';
alter system set LOG_ARCHIVE_DEST_2='SERVICE=standby_dg1 VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orastdb';
--alter system set LOG_ARCHIVE_DEST_2='SERVICE=standby_dg1 LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orastdb';
--??LOG_ARCHIVE_DEST_2 = 'SERVICE=dbstb LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=dbstb'
--LOG_ARCHIVE_DEST_STATE_2 = ENABLE
alter system set LOG_ARCHIVE_DEST_STATE_1=ENABLE
alter system set LOG_ARCHIVE_DEST_STATE_2=DEFER
## Standby Role Parameters ##
alter system set DB_FILE_NAME_CONVERT='ora10g1','orastdb' scope=spfile;
alter system set LOG_FILE_NAME_CONVERT='ora10g1','orastdb' scope=spfile;
alter system set STANDBY_FILE_MANAGEMENT=AUTO scope=spfile;
alter system set FAL_SERVER=standby_dg1 scope=spfile;
alter system set FAL_CLIENT=ora10g1_db1 scope=spfile;
第六步:创建主数据库的备份
创建目录/u01/tostandby,整理传给standby的文件。
物理备用数据库可以通过热备份或都冷备份来创建,只要所有必需的归档日志都可用于维护数据库的一致状态。
shutdown immediate
tar -cvf db.tar *.*
gzip db.tar
mv db.tar.gz to /u01/tostandby/
第七步:创建备用数据库的控制文件
--在mount模式操作,保证控制文件与数据文件的一致性
alter database create standby controlfile as '/u01/tostandby/control_standby.ctl';
或
rman>backup current controlfile for standby;
--注意:控制文件中的文件路径没有改变
第八步:为备用数据为创建初始化参数文件
create pfile='/u01/tostandby/pfile.txt' from spfile;
--注:主备库的db_name是一样的
db_name=ora10g1
需要修改下列配置
## Primary Role Parameters ##
control_files='/u01/ora10g/oradata/orastdb/control_standby.ctl'
DB_UNIQUE_NAME=orastdb
SERVICE_NAMES=orastdb
LOG_ARCHIVE_CONFIG='DG_CONFIG=(ora10g1,orastdb)'
LOG_ARCHIVE_DEST_1='LOCATION=/u01/ora10g/archivelog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orastdb'
LOG_ARCHIVE_DEST_2='SERVICE=ora10g1_db1 VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=ora10g1'
LOG_ARCHIVE_DEST_STATE_1=ENABLE
LOG_ARCHIVE_DEST_STATE_2=ENABLE
## Standby Role Parameters ##
DB_FILE_NAME_CONVERT='orastdb','ora10g1'
LOG_FILE_NAME_CONVERT='orastdb','ora10g1'
STANDBY_FILE_MANAGEMENT=AUTO
FAL_SERVER=ora10g1_db1
FAL_CLIENT=standby_dg1
--修改pfile中与dump相关的路径
第九步:将文件传输到备用主机
--备机
mkdir /u01/ora10g/standbyfile
--主机
scp db.tar.gz dg1:/u01/ora10g/standbyfile/
或
scp *.* dg1:/u01/ora10g/standbyfile/
第十步:配置备用数据库主机
tar zxvf db.tar.gz --打开包+解压
vi ~/.bash_profile
第十一步:创建备用数据库的密码文件
cd $ORACLE_HOME/dbs
orapwd file=orapworastdb password=oracle
创建DUMP相关的文件夹:
mkdir /u01/ora10g/admin
mkdir /u01/ora10g/admin/adump
mkdir /u01/ora10g/admin/bdump
mkdir /u01/ora10g/admin/cdump
mkdir /u01/ora10g/admin/dpdump
mkdir /u01/ora10g/admin/pfile
mkdir /u01/ora10g/admin/scripts
mkdir /u01/ora10g/admin/udump
mkdir /u01/ora10g/flash_recovery_area
第十二步:配置Oracle Net组件
主数据库所在的主机上运行的侦听器
备用数据库所在的主机上运行的侦听器
主数据库指向备用数据库侦听器的Oracle Net别名
备用数据库指向主数据库侦听器的Oracle Net别名
第十三步:为备用数据库实例创建系统参数文件
startup pfile=/u01/ora10g/standbyfile/pfile.txt mount;
create spfile from pfile='/u01/ora10g/standbyfile/pfile.txt';
shutdown immediate
第十四步:启动备用数据库
startup mount
在Oracle Database 10g中启动数据库,当我们MOUNT数据库时将会运行一个检查程序来判定控制文件是主数据库的控制文件还是备用数据库
的控制文件。如果发现控制文件是备用数据库的控制文件,数据库就自动地以备用数据库的方式MOUNT。
第十五步:将主数据库的重做日志传输给备用数据库
--主数据库
alter system set log_archive_dest_state_2=enable scope=both;
alter system swith logfile;
select status,error from v$archive_dest where dest_id=2;--结果为VALID代表传输成功。
第十六步:管理恢复
下面的语句可以简单地指导备用数据库应用归档重做日志的更改:
alter database recover managed standby database disconnect;
小结:主备机的目录最好一致
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/7901922/viewspace-1059968/ ,如需转载,请注明出处,否则将追究法律责任。