忘记密码   免费注册 查看新帖 | 论坛精华区

ChinaUnix.net

  平台 论坛 博客 认证专区 大话IT 视频 徽章 文库 沙龙 自测 下载 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
1234下一页
最近访问板块 发新帖
查看: 29661 | 回复: 37

基于LINUX的Oracle 10G RAC管理维护学习手记(PDF文档 供下载) [复制链接]

论坛徽章:
0
发表于 2009-03-03 22:35 |显示全部楼层
本帖最后由 gunguymadman 于 2010-07-14 17:08 编辑

之一--RAC相关以及基础知识
基于LINUX的Oracle 10G RAC管理维护学习手记.pdf (480.64 KB, 下载次数: 3367)

论坛徽章:
0
发表于 2009-03-03 22:36 |显示全部楼层

基于LINUX的Oracle 10G RAC管理维护学习手记之二―――RAC规划安装

二 RAC安装
不用把安装RAC看成是多么困难的一件事情.足够细心和耐性,充分的准备工作,然后加上一丁点运气,相信你能很快部署好一个RAC测试环境.当然,虚拟环境和实际环境的安装不尽相同,而且,生产系统环境的搭建需要经过缜密的规划和系统的测试.但大同小异,安装过程不该称为我们的绊脚石.


1.安装规划部署
安装之前需重点规划RAC系统各文件的存储类型.可以参见表1.3.1。一个好的存储规划方案,可以省去很多后续的维护成本。
2. 安装过程
安装过程可以参考oracle联机文档install guid。(Vmware安装可以参考VincentChan发表在oracle网站上的一文<使用 VMware Server 在 Oracle Enterprise Linux 上安装Oracle RAC 10g>.文中讲的很详细,在此简单带过.)。简单列一下安装RAC的几个重要步骤
配置系统内核参数以及环境
配置共享存储
安装CRS软件
安装RDBMS软件
创建数据库以及配置其他
3.几点注意问题.
特别提一下vmware下的时间同步问题,在我的环境下,两节点上时间差别很大.一开始采用vmware-toolbox工具同步宿主时间,效果不理想.可以在每个节点上放置一个小脚本,让他每隔一段时间以另一个节点为基准同步时间.这样,时间同步问题迎刃而解.在我的环境下,我设置每20秒同步一次时间.
rac1>cat date.sh
#!/bin/sh
while true
do
rdate -s rac2>dev/null 2>&1
sleep 10
done

论坛徽章:
0
发表于 2009-03-03 22:37 |显示全部楼层

基于LINUX的Oracle 10G RAC管理维护学习手记之三(上)--CRS日常管理维护

三 RAC管理维护
同Single instance相比,RAC的管理维护要复杂一些。10g给我们提供了一个强大的EM管理工具,将很多管理维护工作简单和界面化。我们也应当习惯使用EM来高效的完成更多的工作。本文以下部分,将暂不讨论EM方面的管理,着重于命令行方式。
1.CRS管理维护
(1).CRS相关的接口命令
CRS在10G RAC体系下有着举足轻重的作用。Oracle也提供了一些命令接口让我们诊断维护它。
<1>CRS_*
10G RAC下,有这么几组crs_命令维护CRS资源。


[root@rac2 bin]# ls $ORA_CRS_HOME/bin|grep "crs_"|grep -v bin
crs_getperm  crs_profile  crs_register  crs_relocate  crs_setperm  crs_start  crs_stat  crs_stop  crs_unregister

下面分别讲述一下它们。
集群资源查询:CRS_STAT
可以用来查看RAC中各节点上resources的运行状况,Resources的属性等。
例如使用-t选项,检查资源状态:
[root@rac1 ~]# crs_stat –t

Name Type Target State Host
------------------------------------------------------------
ora.demo.db application ONLINE ONLINE rac2
ora....o1.inst application ONLINE ONLINE rac1
ora....o2.inst application ONLINE ONLINE rac2
ora....SM1.asm application ONLINE ONLINE rac1
ora....C1.lsnr application ONLINE ONLINE rac1
ora.rac1.gsd application ONLINE ONLINE rac1
ora.rac1.ons application ONLINE ONLINE rac1
ora.rac1.vip application ONLINE ONLINE rac1
ora....SM2.asm application ONLINE ONLINE rac2
ora....C2.lsnr application ONLINE ONLINE rac2
ora.rac2.gsd application ONLINE ONLINE rac2
ora.rac2.ons application ONLINE ONLINE rac2
ora.rac2.vip application ONLINE ONLINE rac2

利于-p选项,获得资源配置属性。
[root@rac2 bin]# crs_stat -p ora.rac2.vip
NAME=ora.rac2.vip
TYPE=application
ACTION_SCRIPT=/opt/oracle/product/10.2.0/crs_1/bin/racgwrap
ACTIVE_PLACEMENT=1
AUTO_START=1
CHECK_INTERVAL=60
DESCRIPTION=CRS application for VIP on a node
…………………………………………
USR_ORA_STOP_MODE=immediate
USR_ORA_STOP_TIMEOUT=0
USR_ORA_VIP=192.168.18.112

利用-p参数,获得资源权限。
[root@rac2 bin]# crs_stat -ls|grep vip
ora.rac1.vip root oinstall rwxr-xr--
ora.rac2.vip root oinstall rwxr-xr--

主要参数有-t/-v/-p/-ls/-f等。具体可以参见crs_stat –h
集群资源启动/停止CRS_START/CRS_STOP
这组命令主要负责各个节点上resources的启动/停止。可以针对全局资源(例如:crs_stop–all,表示停止所有节点上的resources),也可以针对节点上的某个特定的资源(例如:crs_startora.rac2.ons,表示启动节点rac2上的ONS)。
集群资源配置CRS_REGISTER/CRS_UNREGISTER/CRS_PROFILE/CRS_SETPERM
这组命令主要负责集群资源的添加删除以及配置。
CRS_PROFILE:用来生成resource的profile文件(当然我们也可以手动编辑或者通过现有生成),默认存放路径$ORA_CRS_HOME/crs/profile目录下,加参数-dir 手动指定目录。默认名称为resource_name.cap.
crs_profile -create resource_name -t application –a .. –r .. –o..
表3.1为 crs_profile中参数配置说明(比较多,挑一些说吧):


参数名称

说明

参数指令(以create为例)

NAME


资源名称
crs_profile –create resource_name

TYPE


资源类型(application, generic)
crs_profile – create resource_name t
ACTION_SCRIPT

用来管理HA方案脚本
crs_profile – create
resource_name –a …
ACTIVE_PLACEMENT
资源贮存的位置/节点
crs_profile –create
resource_name –o –ap …
AUTO_START

资源自启动
crs_profile –create
resource_name –o –as …
CHECK_INTERVAL

资源监控间隔
crs_profile –create
resource_name –o –ci …
FAILOVER_DELAY

资源failover的等待时间
crs_profile –create
resource_name –o –fd …
FAILURE_INTERVAL

资源重启尝试间隔
crs_profile –create
resource_name –o –fi …
FAILURE_THRESHOLD
资源重启尝试次数(最大20)
crs_profile –create
resource_name –o –ft …
HOSTING_MEMBERS
资源启动或者failover的首要节点选择
crs_profile –create
resource_name –h …
PLACEMENT
资源启动或者failover的节点选择模式(balancedbalancedbalanced
crs_profile – create
resource_name -p
REQUIRED_RESOURCES
当前资源所依赖的资源
crs_profile – create
resource_name -r
RESTART_ATTEMPTS
资源重配置之前的尝试启动次数
crs_profile –create
resource_name –o –ra …
SCRIPT_TIMEOUT
等待ACTION_SCRIPT的结果返回时间
crs_profile –create
resource_name –o –st …
USR_ORA_VIP
Vip地址
crs_profile –create vip_name -t application –a $ORA_CRS_HOME/bin/uservip –o oi=…,ov=…,on=…


crs_profile -update resource_name … 用来更新现有profile(更新的只是profile,而并不是对已经注册到crs里面的资源属性的更改)
crs_register负责将resource的注册到OCR。注册的方法是先生成profile,然后运行
crs_register resource [-dir …]命令,同时,crs_register也具有updateresource功能,具体办法可以更新resource对应的profile文件,然后运行crs_register -uresource_name [-dir …] 或者直接发布crs_register –update resource_name …
比如,我将rac节点上的vip改为手动启动。
[root@rac1 crs]# crs_register -update ora.rac1.vip -o as=0
[root@rac1 crs]# crs_stat -p ora.rac1.vip|grep AUTO_START
AUTO_START=0

crs_unregister负责将resource从ocr中移除。必要时候需要加-f参数。
crs_setperm用来设置resource的权限(诸如设置owner,用户的读写权限等),更改owner用-o参数,更改group用-g,更改用户权限用-u,在此不多举例了。
<2>.CRSCTL
用crsctl check crs,检查crs的健康情况。
[root@rac1 ~]# crsctl check crs
CSS appears healthy
CRS appears healthy
EVM appears healthy

用crsctl控制CRS服务
crsctl start|stop|enable|disable crs
用crsctl启动/停止resource
[root@rac1 ~]# crsctl stop resources
Stopping resources.
Successfully stopped CRS resources

[root@rac1 ~]# crsctl start resources
Starting resources.
Successfully started CRS resources

用crsctl检查以及添加、删除voting disk
下面讲述。
更多参见crsctl help。
<3>SRVCTL
SRVCTL是一个强大的CRS和RDBMS的管理配置工具。相关用法参照srvctl -h
(1) srvctl add/delete .. 添加删除资源。譬如我们在进行数据库单实例迁移到rac的时候,可以用这个工具手工注册database或者asm实例到OCR。
(2) srvctl status … 资源的状态监测
(3) srvctl start/stop … 资源的启动/停止,这个可以和crs_start/crs_stop互交使用。
(4) srvctl modify .. 重新定义资源的属性
………………………………………………………..
(2).OCR的管理维护
<1> OCR的状态验证:
可以使用ocrcheck工具来验证OCR的状态以及空间使用情况。在Lunix下,/etc/oracle/ocr.loc文件记录了OCR使用的设备情况。
[root@rac1]# ocrcheck
Status of Oracle Cluster Registry is as follows :
Version : 2
Total space (kbytes) : 497896
Used space (kbytes) : 3996
Available space (kbytes) : 493900
ID : 958197763
Device/File Name : /dev/raw/raw5
Device/File integrity check succeeded
Device/File not configured
Cluster registry integrity check succeeded

<2> 在线添加/删除ocrmirror
OCR支持一个镜像,添加/删除镜像可以在线完成,主要在某个online的节点上执行命令即可。
[root@rac1]#ocrconfig -replace ocrmirror /dev/raw/raw5
[root@rac1 oracle]# cat /etc/oracle/ocr.loc
#Device/file getting replaced by device /dev/raw/raw5
ocrconfig_loc=/dev/raw/raw1
ocrmirrorconfig_loc=/dev/raw/raw5

可见,ocr.loc被自动更新。
移除ocr或者镜像的时候,只要不带路径,即可。
当一个crs中存在ocr和镜像的时候,如果移除ocr,镜像会自动转变成ocr的角色。
[root@rac1]# ocrconfig -replace ocr
[root@rac1]# cat /etc/oracle/ocr.loc
#Device/file /dev/raw/raw1 being deleted
ocrconfig_loc=/dev/raw/raw5

可以看到现在的ocrconfig_loc自动变为先前的ocrmirrorconfig_loc设备。
<3> 逻辑备份/恢复
备份命令:
ocrconfig –export [ path ]
还原命令
ocrconfig –import [ path ]
还原OCR的时候,需要停掉各节点crs服务。还原完成后,重新启动CRS。(如果有必要,注意在每个节点分别修改ocr.loc的对应使用设备)
<4> 物理备份/恢复
CRSD负责每4个小时进行一次OCR的备份,默认备份路径在$ORA_CRS_HOME/cdate/crs下,
可以使用ocrConfig –showbackup查看备份情况,如果想更改物理备份路径,可以使用ocrconfig –backuploc [ path ] 来完成
物理恢复命令:
ocrconfig –restore [ path ]
同样,还原OCR的时候,需要停掉各节点crs服务。还原完成后,重新启动CRS。(如果有必要,注意在每个节点分别修改ocr.loc的对应使用设备)
<5> ocrdump
ocrdump可以将ocr信息导出成ascii文本,用于给Oracle Supoort提供检修。
命令如下:
ocrdump
(3).Voting disk管理维护
Voting disk的维护相对简单些。
<1> Votingdisk 状态查询
[root@rac1]# crsctl query css votedisk
0. 0 /dev/raw/raw2
located 1 votedisk(s).

<2>在线添加、删除votingdisk
Oracle建议配置奇数个votingdisk,添加/删除可以在线完成,在某个online的节点上执行命令即可。
添加votingdisk命令:
crsctl add css votedisk [path] -force

删除votingdisk命令:
crsctl add css votedisk [path] -force

<3>votingdisk备份恢复
备份、恢复采用dd命令。恢复的时候,注意停掉各节点上的CRS服务。

论坛徽章:
0
发表于 2009-03-03 22:38 |显示全部楼层

基于LINUX的Oracle 10G RAC管理维护学习手记之三(下)--RDBMS日常管理维护

2.RDBMS管理维护
(1).spfile以及相关参数说明
   最普遍情况,节点共用同一个spfile文件,放置在共享存储上,而每个节点上,相应目录下有一个pfile文件,而这个pfile文件指向共享存储上的spfile。


当我们需要修改某一节点上的paremeter的时候,需要显示的指定sid,例如:
SQL>alter system set sga_target=1024M scope=spfile sid=’rac1’;
System Altered.

   这样,节点rac1上的sga_target参数被修改,不会影响其余节点上的参数设置。如果不加sid,默认为sid=’*’,也就是对所有节点生效。
   RAC下,有一些不同与单实例的参数,列举如下:
①        cluster_database
一般情况下,该参数在rac各实例下应该设置为true。在一些特别情况下,比如upgrade等,需要将该参数设置成false。
②        db_name/db_unique_name/instance_name
    各节点db_name需要一致,db_unique_name也需要一致(这与standby是不同的)。而instance_name配置成各个节点的实例名称。
③        instance_number
    该参数表示节点上实例的实例号。
④        thread
该参数用来标示实例使用的redo线程。线程号与节点号/实例号没有直接关联。
⑤        local_listener
     该参数用来手工注册监听。为解决ORA-12514错误,可以设置该参数。
⑥        remote_listener
该参数用来进行服务器端负载均衡配置。
⑦        cluster_interconnects
该参数用来指定集群中IPC通信的网络。如果集群中有多种网络用于高速互联,需要配置该参数。对于多个IP地址,用冒号将其隔开。对于集群中当前使用的互联地址,可以查询视图gv$cluster_interconnects或着oradebug ipc来查看。
⑧        max_commit_propagation_delay
该参数用于配置SCN的产生机制。在rac下,SCN的同步有2种模式:(1) LamportScheme.该模式下,由GES管理SCN的传播同步,max_commit_propagation_delay表示SCN同步所允许的最大时间。在该模式下,全局SCN并非完全同步,这在高并发的OLTP系统中,可能会对应用造成一定的影响。(2) Broadcast on Commitscheme. 该模式下,一旦任何一个实例上事务发布commit,都立即同步SCN到全局。
在10g R1下,该参数默认数值为700,即采用Lamport Scheme模式。而在10gR2下,该参数默认数值为0,采用Broadcast on Commit scheme模式 (设置小于700的某一值,都将采用该模式)。采用何种方式,可以从alert.log中获知。该参数值需要每个节点保持一致。
(2). Redo/Undo管理
?RAC下的Redo管理
      同单实例的系统一样,每个节点实例都需要至少2组logfile。各节点实例有自己独立的重做日志线程(由初始化参数thread定义),例如:
SQL> selectb.THREAD#,a.GROUP#,a.STATUS,a.MEMBER,b.BYTES,b.ARCHIVED,b.STATUS fromv$logfile a,v$log b where a.GROUP#=b.GROUP#;
THREAD# GROUP# STATUS  MEMBER                               BYTES  ARCHIVED  STATUS
------------------- ------- --------------------------------------------------
1  1   STALE +DATA/demo/onlinelog/group_1.257.660614753  52428800 YES  INACTIVE
1  2          +DATA/demo/onlinelog/group_2.258.660614755  52428800  NO   CURRENT
2  3          +DATA/demo/onlinelog/group_3.265.660615545  52428800  NO   CURRENT
2  4  STALE  +DATA/demo/onlinelog/group_4.266.660615543  52428800 YES  INACTIVE

    重做日志需要部署到共享存储中,必须保证可被所有的集群内的节点实例访问。当某个节点实例进行实例/介质恢复的时候,该节点上的实例将可以应用集群下所有节点实例上的重做日志文件(如果需要),从而保证恢复可以在任意可用节点进行。
?RAC下alter system switch logfile 与alter system archive log current 区别
alter system switch logfile仅对当前发布节点上的对应redo thread进行日志切换并归档。
alter system archive log current对集群内所有节点实例上的redo thread进行切换并归档(在节点实例可用情况下,分别归档到各节点主机的归档目的地,当节点不可用时候,该线程日志归档到命令发布节点的归档目的地)
?RAC下的Undo管理
RAC下的每个节点实例,也需要有自己单独的撤销表空间。由初始化参数*.Undo_tablespace指定。同REDO一样,UNDO表空间也需要部署到共享存储,虽然每个节点上UNDO的使用是独立的,但需要保证集群内其他节点实例对其访问,以完成构造读一致性等要求。
SQL>alter system set undo_tablespace=undo1 sid=’demo1’;
SQL>alter system set undo_tablespace=undo2 sid=’demo2’;

(3).Archivelog/flashback配置管理
    在RAC下,Archivelog可以放置到本地磁盘,也可以放置到共享存储。需要对Archivelog的放置有合理的部署,如果放置到本地磁盘,会增加备份恢复的复杂程度。
闪回区必须部署到共享存储上,开启前,需要配置db_recovery_file_dest、db_recovery_file_dest_size、db_flashback_retention_target等参数。
下面在一个非归档非闪回的database上,开始归档与闪回。
?更改相关参数
SQL>alter system set log_archive_dest_1='location=/archive/demo1' sid='demo1';
System altered
SQL> alter system set log_archive_dest_1='location=/archive/demo2' sid='demo2';
System altered
SQL> alter system set db_recovery_file_dest_size=512M;
System altered
SQL> alter system set db_recovery_file_dest='+DG1';
System altered

?停掉所有节点实例.开启过程在一个实例上完成。
rac1-> srvctl stop instance -d demo -i demo1
rac1-> srvctl stop instance -d demo -i demo2   
rac1-> sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on Sun Aug 3 22:06:50 2008
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
SQL> conn /as sysdba
Connected to an idle instance.
SQL> startup mount;
ORACLE instance started.
Total System Global Area  167772160 bytes
Fixed Size                  1218316  bytes
Variable Size             100665588 bytes
Database Buffers           62914560 bytes
Redo Buffers                2973696 bytes
Database mounted.
SQL> alter database archivelog;
Database altered.
SQL> alter database flashback on;
Database altered.
SQL> alter database open;
Database altered.
SQL> select NAME,LOG_MODE,FLASHBACK_ON from v$database;
NAME      LOG_MODE     FLASHBACK_ON
--------- ------------ ------------------
DEMO      ARCHIVELOG   YES

   10G下,开启归档和闪回并不需要像9i那样,设置初始化参数cluster_database=false.这无疑简化了操作。
(4).ASM下的RAC管理
?ASM下的参数文件
   RAC下,每个节点上有运行有一个ASM实例,而rdbms instance就运行在这个asm实例上。Asm实例是本地的。同rdbms实例一样,他需要有参数文件,参数文件在每个节点的相应目录下。
下面是我的ASM实例下的pfile文件:
cluster_database=true
background_dump_dest=/opt/oracle/admin/+ASM/bdump
core_dump_dest=/opt/oracle/admin/+ASM/cdump
user_dump_dest=/opt/oracle/admin/+ASM/udump
instance_type=asm
large_pool_size=12M
remote_login_passwordfile=exclusive
asm_diskgroups='DG1'
+ASM2.instance_number=2
+ASM1.instance_number=1

简单介绍几个asm实例中比较重要的参数:
instance_type:用来说明实例是ASM 还是RDBMS 类型
asm_diskgroups:ASM磁盘组,asm实例启动的时候会自动mount
asm_diskstring:该参数用来说明能够创建diskgroup的磁盘设备,默认值是NULL
asm_power_limit:该参数用来设置进程 ARBx 的数量,负责控制负载平衡操作的速度。取值 从 0 到 11。默认值为1。
?用于记录ASM实例信息的数据字典。
V$ASM_DISK/ V$ASM_DISK_STAT:记录可以被ASM实例识别的磁盘信息,但这些磁盘并不一定是正在被实例使用的。
V$ASM_DISKGROUP/ V$ASM_DISKGROUP_STAT:记录asm下的diskgroup信息。
V$ASM_ALIAS:记录diskgroup文件的别名信息。
V$ASM_FILE:记录diskgroup中的文件信息。
V$ASM_OPERATION:记录ASM实例中当前运行的一个长时间操作信息。
V$ASM_TEMPLATE:记录diskgroup模板。
V$ASM_CLIENT:记录使用该asm实例下的diskgroup的rdbms实例信息。
?RAC下ASM磁盘组/文件管理操作
<1>.RAC下在线添加、删除磁盘组
    在一个节点上添加diskgroup,集群上另外的节点并不会自动mount新添加的diskgroup,需要手动执行。
    节点1:
SQL> show parameter asm_diskgroups
NAME                                 TYPE        VALUE
------------------------------------ -----------
asm_diskgroups                       string      DATA, DG1
SQL>CREATE DISKGROUP DATA2  NORMAL REDUNDANCY                        
FAILGROUP DATA2_gp1 DISK '/dev/raw/raw6'
FAILGROUP DATA2_gp2 DISK '/dev/raw/raw7';                             
Diskgroup created.
SQL> show parameter asm_diskgroups
NAME                                 TYPE        VALUE
------------------------------------ -----------
asm_diskgroups                       string      DATA, DG1, DATA2

此时观察节点2,新加的磁盘组没有被mount。
SQL> show parameter asm_diskgroups
NAME                                 TYPE        VALUE
-----------------------------------------------
asm_diskgroups                          string        DATA, DG1
SQL>select group_number,type,state,type,total_mb,free_mb from v$asm_diskgroup_stat;
GROUP_NUMBER   STATE       TYPE     TOTAL_MB    FREE_MB
--------------- --------------- ------------------------
           1     CONNECTED   EXTERN       5726       4217
           2     CONNECTED   EXTERN        415        297
           0    DISMOUNTED                     0         0
SQL>alter diskgroup DATA2 mount;

   删除diskgroup时,保留一个节点diskgroup为mount状态,将其余节点上的diskgroup dismount,然后执行删除命令。
<2>.在线添加、删除磁盘
   RAC下在线添加磁盘与删除磁盘与单实例并不差别。需要注意该操作会引起磁盘组的重新平衡,并确保删除磁盘的时候该磁盘组有足够的剩余空间。
节点1:
SQL> alter diskgroup dg6 add disk '/dev/raw/raw7' name dg6_disk7;
Diskgroup altered.

节点2上查询:
SQL>select GROUP_NUMBER,path,NAME,MOUNT_STATUS,HEADER_STATUS,MODE_STATUS,
STATE from v$asm_disk_stat where NAME is not null;
GROUP_NUMBER PATH     NAME       MOUNT_S HEADER_STATU MODE_ST STATE
------------ ---------------- ---------- ------- ------------ -------
           1 /dev/raw/raw3    DATA_0000  CACHED  MEMBER       ONLINE  NORMAL
           2 /dev/raw/raw4    DG1_0000   CACHED  MEMBER       ONLINE  NORMAL
           3 /dev/raw/raw6    DG6_0001   CACHED  MEMBER       ONLINE  NORMAL
           3 /dev/raw/raw7    DG6_DISK7  CACHED  MEMBER       ONLINE  NORMAL

删除磁盘在某一节点操作即可,不做举例验证。
关于ASM的更多管理命令,就不多列举了。
3.Database备份/恢复
RAC下的备份恢复跟单实例的备份恢复实质上没有太大的差别,需要注意的是备份/恢复的时候当前节点对所有数据文件/归档日志的可见。在一个数据文件和归档日志全部放在共享存储上的RAC系统,备份与恢复过程与单实例下的几乎一样。而归档日志如果采用的是本地磁盘,就需要另加注意。下面分别来模拟这个备份恢复过程。
(1).Archivelog对各节点可见的备份/恢复
     在这种模式下,备份恢复可以在任意一个可用节点执行即可,跟单实例并不太大区别。
?对database进行备份
RMAN>run
{allocate channel orademo type disk;
backup database format '/backup/database/db_%s_%p_%t' plus archivelog format  '/backup/database/arch_%s_%p_%t' delete input;
backup current controlfile format '/backup/database/contr_%s_%p_%t';}

allocated channel: orademo
channel orademo: sid=130 instance=demo2 devtype=DISK
Starting backup at 03-MAY-08
current log archived
channel orademo: starting archive log backupset
channel orademo: specifying archive log(s) in backup set
input archive log thread=1 sequence=5 recid=70 stamp=661823848
input archive log thread=1 sequence=6 recid=72 stamp=661823865
……………………………………..
Finished backup at 03-MAY-08
released channel: orademo

?添加数据,用于测试恢复效果
SQL> create table kevinyuan.test_b as select * from dba_data_files;
Table created
SQL> alter system switch logfile;
System altered
SQL> insert into kevinyuan.test_b select * from dba_data_files;
6 rows inserted
SQL> commit;
Commit complete
SQL> select count(*) from kevinyuan.test_b;
  COUNT(*)
----------
        12

?模拟故障/恢复
RMAN> run                                          
{restore controlfile from '/backup/database/contr_16_1_661823935';
sql 'alter database mount';
restore database;
recover database;
sql 'alter database open resetlogs'; }

Starting restore at 04-MAY-08
allocated channel: ORA_DISK_1
…………………………………………………………………………..
archive log filename=+DATA/demo/onlinelog/group_4.266.660615543 thread=2 sequence=11
archive log filename=+DATA/demo/onlinelog/group_3.265.660615545 thread=2 sequence=12
media recovery complete, elapsed time: 00:00:00
Finished recover at 04-MAY-08
sql statement: alter database open resetlogs

?恢复完毕,来看一下验证数据:
SQL> select count(*) from kevinyuan.test_b;
  COUNT(*)
----------
        12

(2). Archivelog对各节点不可见的备份/恢复
如果arhivelog采用本地磁盘,归档日志并不是对任意节点可见。备份archivelog的时候,如果采用和上述类似的备份方案,必然会导致一些归档日志由于无法access而抛出异常。可以采取如下的备份方式,目的就是使得备份通道能够access所有的数据字典中记录的归档日志信息。
恢复的时候,copy所有节点产生的相关备份片/集和归档日志文件到待恢复节点,在一个节点上执行restore/recover操作即可。
模拟一下这个操作。
SQL> alter system set log_archive_dest_1='location=/archive/demo1/' sid='demo1';
System
altered
SQL> alter system set log_archive_dest_1='location=/archive/demo2/' sid='demo2';
System altered

(1)备份数据库
RMAN>run
{allocate channel orademo1 type disk connect
sys/kevinyuan@demo1;
allocate channel orademo2 type disk connect
sys/kevinyuan@demo2;
backup database format '/backup/database/db_%s_%p_%t'
plus archivelog format '/backup/database/arch_%s_%p_%t' delete
input;
backup current controlfile format
'/backup/database/contr_%s_%p_%t;}

allocated channel:
orademo1
channel orademo1: sid=133 instance=demo1 devtype=DISK
allocated
channel: orademo2
channel orademo2: sid=151 instance=demo2
devtype=DISK
Starting backup at 04-MAY-08
current log archived
channel
orademo2: starting archive log backupset
channel orademo2: specifying archive
log(s) in backup set
input archive log thread=2 sequence=4 recid=89
stamp=661826286
………………………………………………………………….
channel orademo1: finished
piece 1 at 04-MAY-08
piece handle=/backup/database/contr_28_1_661826504
tag=TAG20080504T004130 comment=NONE
channel orademo1: backup set complete,
elapsed time: 00:00:09
Finished backup at 04-MAY-08
released channel:
orademo1
released channel:
orademo2

(2)COPY节点2上的备份文件/归档日志文件到节点1相应目录下。
rac2-> scp /backup/database/*  rac1:/backup/database/
rac2-> scp /archive/demo2/* rac1:/archive/demo1

(3)恢复database
RMAN>run
{restore controlfile from '/backup/database/contr_28_1_661826504';
sql 'alter database mount';
restore database;
recover database;
sql 'alter database open resetlogs';}

starting restore at 04-MAY-08
using target database
control file instead of recovery catalog
allocated channel:
ORA_DISK_1
channel ORA_DISK_1: sid=147 instance=demo1 devtype=DISK
channel
ORA_DISK_1: restoring control file
channel ORA_DISK_1: restore complete,
elapsed time: 00:00:20
…………………………………………………………………………………
archive log
filename=+DATA/demo/onlinelog/group_3.265.660615545 thread=2
sequence=7
archive log filename=+DATA/demo/onlinelog/group_4.266.660615543
thread=2 sequence=8
media recovery complete, elapsed time:
00:00:06
Finished recover at 04-MAY-08
sql statement: alter database open
resetlogs

至此,恢复完成。
生产库的备份需要缜密部署与模拟测试,不同的数据库类型也需要制定不同的方案实现。对DATABASE来说,备份重于泰山,不能抱有任何侥幸心理。

论坛徽章:
0
发表于 2009-03-04 01:51 |显示全部楼层
这个是好东西。。收了。。。

论坛徽章:
0
发表于 2009-03-04 11:10 |显示全部楼层
恩,不错,谢谢共享

论坛徽章:
0
发表于 2009-03-04 11:19 |显示全部楼层
这个不错, 感谢楼主

论坛徽章:
0
发表于 2009-03-05 17:35 |显示全部楼层
极好的帖子,一定要收藏!很实用,谢谢搂住分享!

论坛徽章:
2
丑牛
日期:2014-06-11 13:55:04ChinaUnix元老
日期:2015-02-06 15:16:14
发表于 2009-03-07 17:36 |显示全部楼层
谢谢LZ分享

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:54:45
发表于 2009-03-07 21:05 |显示全部楼层

回复 #1 gunguymadman 的帖子

文章很好
您需要登录后才可以回帖 登录 | 注册

本版积分规则

  

北京皓辰网域网络信息技术有限公司. 版权所有 京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:1101082001
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP