• 博客访问: 9549744
  • 博文数量: 2744
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-29 09:23
个人简介

暂无介绍

ITPUB论坛APP

ITPUB论坛APP



APP发帖 享双倍积分

文章分类

全部博文(2744)

文章存档

2013年(30)

2012年(326)

2011年(365)

2010年(349)

2009年(370)

2008年(358)

2007年(352)

2006年(366)

2005年(178)

2004年(50)

微信关注

IT168企业级官微



微信号:IT168qiye



系统架构师大会



微信号:SACC2013

订阅
热词专题

分类: Linux

利用虚拟机的功能,建立DATA GUARD是很简单的,基本上和利用冷备份没有太大的区别。

这篇文章简单介绍一下,如何利用VMWare建立11gr1DATA GUARD


在执行上面的操作之前,确保已经安装了VMWare,并且建立好了数据库。

开始建立DATA GUARD。首先设置主数据库:

检查数据库的归档情况:

SQL> SELECT LOG_MODE, FORCE_LOGGING FROM V$DATABASE;

LOG_MODE FOR
------------ ---
ARCHIVELOG NO

SQL> ALTER DATABASE FORCE LOGGING;

数据库已更改。

由于数据库已经是归档模式,不需要再进行设置。

设置主库的初始化参数:

SQL> ALTER SYSTEM SET DB_UNIQUE_NAME = ‘ora11g_p’ SCOPE = SPFILE;

系统已更改。

SQL> ALTER SYSTEM SET LOG_ARCHIVE_CONFIG = 'DG_CONFIG=(ora11g_p,ora11g_s)';

系统已更改。

SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_1 = 'LOCATION=/data/oracle/oradata/ora11g/archivelog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=ora11g_p' SCOPE = SPFILE;

系统已更改。

SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_2 = 'SERVICE=ora11g_s ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=ora11g_s';

系统已更改。

SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_1 = ENABLE;

系统已更改。

SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2 = ENABLE;

系统已更改。

SQL> ALTER SYSTEM SET FAL_SERVER = ‘ora11g_s’;

系统已更改。

SQL> ALTER SYSTEM SET FAL_CLIENT = ‘ora11g_p’;

系统已更改。

SQL> ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT = AUTO;

系统已更改。

检查初始化参数REMOTE_LOGIN_PASSWORDFILE是否为EXCLUSIVE,如果不是需要将其修改为EXCLUSIVE

SQL> SHOW PARAMETER REMOTE_LOGIN_PASSWORDFILE

NAME TYPE VALUE
------------------------------------ ----------- ----------------
remote_login_passwordfile string EXCLUSIVE

由于DB_UNIQUE_NAME不能直接修改,且DB_UNIQUE_NAME没有生效导致本地归档路径设置LOG_ARCHIVE_DEST_1无法生效,这两个参数的修改只修改到了SPFILE中。

由于使用VMWare进行数据库备份时,是需要关闭数据库的,因此重启数据库是可以接受的。

对于其他环境无法重启数据库,可以考虑不修改DB_UNIQUE_NAME的值,只要在STANDBY数据库中修改DB_UNIQUE_NAME使之与主库不相等即可。

为了STANDBY的建立更加方便,先将PFILESTANDBY CONTROLFILE建立好,再关闭数据库。

SQL> ALTER DATABASE CREATE STANDBY CONTROLFILE AS '/home/oracle/standbycontrol01.ctl';

数据库已更改。

SQL> CREATE PFILE = '/home/oracle/initora11g_s.ora' FROM SPFILE;

文件已创建。

下面可以关闭数据库和虚拟机,然后将整个虚拟机的.vmdk文件拷贝到另一个目录中。

注意,关闭数据库的时候不要使用SHUTDOWN ABORT,否则容易导致STANDBY数据库建立出现问题。

SQL> SHUTDOWN IMMEDIATE数据库已经关闭。已经卸载数据库。
ORACLE
例程已经关闭。

等到拷贝结束,先将刚才关闭的虚拟机重启,并启动数据库和监听。

然后新建一个虚拟机:选择CUSTOM——NEW WORKSTATION 5——LINUX,在LINUX类型中选择OTHER LINUX

设置合适位置,输入虚拟机的名称,这里选择名称为Oracle Enterprise linux 5 x86(2)

确定后,选择虚机可以使用的CPU进程和内存。设置网络为桥连方式。SCSI适配器选择LSI Logic

磁盘选择已经存在的文件,并选择刚刚拷贝的文件名,点击完成。

下面就可以启动第二个虚拟环境了。

首先将创建好的STANDBY控制文件,放到初始化文件中制定的位置上,覆盖原有的控制文件:

$ cp /home/oracle/standbycontrol01.ctl /data/oracle/oradata/ora11g/ORA11G/controlfile/o1_mf_3d378sn2_.ctl
$ cp /home/oracle/standbycontrol01.ctl /data/oracle/flash_recovery_area/ORA11G/controlfile/o1_mf_3d378t47_.ctl

配置PRIMARYSTANDBY数据库的TNSNAMES.ORA添加下列内容:

ORA11G_P =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.25.4.127)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ora11g_p.ytk-thinkpad)
)
)

ORA11G_S =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.25.4.70)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ora11g_s.ytk-thinkpad)
)
)

启动监听。然后修改STANDBY的初始化参数,对下面的初始化参数进行修改:

*.db_unique_name='ora11g_s'
*.fal_client='ora11g_s'
*.fal_server='ora11g_p'
*.log_archive_dest_1='LOCATION=/data/oracle/oradata/ora11g/archivelog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=ora11g_s'
*.log_archive_dest_2='SERVICE=ora11g_p ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=ora11g_p'
*.log_archive_dest_state_1='ENABLE'
*.log_archive_dest_state_2='ENABLE'

利用修改好的PFILE创建SPFILE,然后就可以启动STANDBY数据库了。

$ sqlplus "/ as sysdba"

SQL*Plus: Release 11.1.0.6.0 - Production on Mon Aug 27 19:16:42 2007

Copyright (c) 1982, 2007, Oracle. All rights reserved.

Connected to an idle instance.

SQL> create spfile from pfile='/home/oracle/initora11g_s.ora';

File created.

SQL> startup nomount
ORACLE instance started.

Total System Global Area 267825152 bytes
Fixed Size 1299316 bytes
Variable Size 150998156 bytes
Database Buffers 113246208 bytes
Redo Buffers 2281472 bytes
SQL> alter database mount;

Database altered.

SQL> alter database recover managed standby database disconnect from session;

Database altered.

最后验证一下STANDBY配置已经生效:

SQL> alter session set nls_date_format = 'yyyy-mm-dd hh24:mi:ss';

Session altered.

SQL> select sequence#, first_time, next_time
2 from v$archived_log
3 order by 1;

SEQUENCE# FIRST_TIME NEXT_TIME
---------- ------------------- -------------------
64 2007-08-24 05:06:45 2007-08-24 22:53:36
65 2007-08-24 22:53:36 2007-08-24 23:20:42
66 2007-08-24 23:20:42 2007-08-27 16:22:08
67 2007-08-27 16:22:08 2007-08-27 16:36:08

SQL> conn yangtk/yangtk@ora11g_p
Connected.
SQL> alter system switch logfile;

System altered.

SQL> conn / as sysdba
Connected.
SQL> alter session set nls_date_format = 'yyyy-mm-dd hh24:mi:ss';

Session altered.

SQL> select sequence#, first_time, next_time
2 from v$archived_log
3 order by 1;

SEQUENCE# FIRST_TIME NEXT_TIME
---------- ------------------- -------------------
64 2007-08-24 05:06:45 2007-08-24 22:53:36
65 2007-08-24 22:53:36 2007-08-24 23:20:42
66 2007-08-24 23:20:42 2007-08-27 16:22:08
67 2007-08-27 16:22:08 2007-08-27 16:36:08
68 2007-08-27 16:36:08 2007-08-27 17:09:39

由于使用了VMWare,备份虚机相当于Oracle数据库的一个冷备份。因此STANDBY的建立过程和9i下的差别不大。一个是从10g开始增加的初始化参数DB_UNIQUE_NAME参数,还有就是STANDBY数据库启动的时候不需要MOUNT STANDBY数据库了,直接可以启动到MOUNT阶段,然后应用主库的日志。

阅读(1602) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
请登录后评论。

登录 注册