ITPub博客

首页 > Linux操作系统 > Linux操作系统 > RAC student guide 的中文笔记

RAC student guide 的中文笔记

原创 Linux操作系统 作者:season0891 时间:2009-04-18 21:47:46 0 删除 编辑

RAC student guide 的中文笔记

[size=12px]Rac student guide

一.体系结构

Cluser 的硬件结构
Nodes, interconnect,共享文件系统

Nodes
一个节点是一个服务器可以是smp也可以是numa的
在一个cluser中,需要两个或更多的节点.

每个节点支持rac数据库的一个实例.

Interconnect
通过标准网络协议例如 tcp/IP
如果使用gbit仪态网,vender-specific 提高是系统会有最好的效果.

共享文件系统

通常情况下, 裸设备在unix,逻辑驱动器在windows上
各个节点同时对共享文件系统进行访问

Cluser software
为了各个节点之间的通讯的软件.不同的操作系统不同的软件,unix 由产商提高这个软件,
如果是windows,由oracle提供

Cluser manager
包括gv视图,管理cluster的信息,控制cluser的成员.
节点monitor组建监控node的状态
OSD cluserware: 控制interconnect的信息;为rac传输信息和数据库

Rac 的组件:
一个rac数据库包括 数据库文件和一个到多个实例

磁盘访问
控制文件,数据文件,online redo log,quorum disk on some os,配置数据,spfile,配置信息,服务器参数文件

gsd进程
这个用来coordinate 其它的工具来管理rac 数据库和实例
一个gsd进程支持一个节点上的所有的数据库
gsd不需要配置

lmno: global enqueue service monitor
监控cluser的global enqueues 和资源
执行恢复操作
lmd: global enqueue service daemon
管理对global enqueues和资源的访问
处理对其它实例的资源请求
LMS: global cache service processes
管理在cluster中对data block的访问
传输block的images在不同的实例的buffercache中 (cache fusion)

LCK进程
辅助lms,管理实例的资源和cross-instance的call,这个call与协调访问字典和row cache对象有关系

诊断进程:

二.安装和转换

安装

1.        使用interconnect连接好cluser
2.        安装和配置osd cluserware
3.        确保所有的节点都可以访问shared disk
4.        创建需要的文件系统或分区

gsd

gsd配置文件必须identified为了完成一个rac的安装
当用dbca创建数据库的时候,gsd必须在运行
如果是手工建库或者是从8i升级,那么必须在每个节点手工的启动gsd.

Gsd配置文件

Srvconfig –init 初试化gsd配置文件


把一个single 实例转变成rac
1.        配置硬件
2.        评估表空间和log文件
3.        创建共享文件系统或裸设备
4.        从旧的数据库中取数据出来
5.        安装基于os的cluster 软件
6.        安装rac选项
7.        创建数据库
8.        把数据从旧数据库装入到新数据库
9.        调整数据库
10.        启动数据库


配置硬件:
1.        安装和测试cluster的interconnect
2.        确保每个节点都可以访问共享磁盘

评估表空间和log文件的需求

创建共享文件系统和裸设备
1.        控制文件的copy,数据文件,log member的一个成员
2.        spfile

从旧的数据库中取data
1.        rman
2.        exp

安装osd和rac

创建db

把数据装入到新的db中

调整参数

启动数据库


三.管理和配置工具


GSD管理
启动gsd

server control 工具
srvctl
管理rac环境
管理cluser的数据库配置信息
提供cluser的数据库管理命令
需要gsd在运行

srvctl命令的用法
可以添加和删除cluster db,
可以添加和删除一个rac中的实例
可以rename一个实例
可以移动一个实例
可以为一个rac set和unset 环境
可以为一个实例 set和unset环境


rac的参数文件

可以继续使用client-side的初始化参数文件
可以使用一个spfile为所有的实例
        这个spfile在共享文件系统上.
        可以使用alter system命令改变所有的实例的参数.

Sid=’*’
* 表示所有的实例

四.可扩展性和cache fusion

可扩展性的级别
        硬件
        os
        db
        app

oracle net srvice的负债均衡

客户端的负责均衡

connection的负债均衡

自适应的并行查询

Cache Fusion
        提供传输的扩展性
        在实例间传输block 的image
        跟踪资源的当前位置和状态
        每个实例的sga的目录结构中保存有资源信息

cache fusion 的模型
Global resoure directory
由global cache service 来管理
          记录
                资源的模式
                资源的角色
                block在实例中的状态
        在各个活动的节点发布资源的master
        重新发布master在有必要的时候,例如实例的启动和关闭


global cache service 的资源模式
三种
        null (默认的)
        share(s)  (查询)
        exclusive(x) (可以改变block的内容,其它的实例就是null mode)


资源的角色

local 第一次请求资源的初试模式;只有一个实例可以有这个block 的dirty copy

global
        在一个block在多于一个实例中变dirty了. Local 就变成了global
        block只能由slobal cache service写到磁盘中






Cache fusion block 的transfer

例如有 abcd四个节点.

global cache service : gcs

1.
Read with no transfer

如果c节点需要向共享磁盘文件上读一个block,
那么它向global cache service 发送请求,
这个时候请求被定向到节点d,d是这个block的master (每个资源都有master)


gcs 把资源授权为 share mode 和local role,在目录中记录下了他的状态(目录在节点d),
然后通知c,c 把这个资源从null  share

c开始i/o,现在c有了这个block 以s模式  (从磁盘文件读)

2.
read to write transfer

b也要这个block,并且不仅是读,而且还要改变它的内容.
B向d (这个block的mater)gcs发出请求,
Gcs向c发出请求,要求c把这个block 给b
C 把block 给b,
B收到了,告诉gcs,,现在b可以修改这个block了


3.
Write to write transfer

A向d节点的gcs发出请求,
Gcs告诉b节点放心他的x 锁,并且把当前的image传到a,
如果这个请求没有完成,就会方到gcs的队列里面了

b把这个block传到a,这个时候,要写log,强制log flush,把模式变成n
发送到a,并且告诉它这这个exclusive的资源可以用了
a收到了这个block的image,会通知gcs 并且告诉它block的status是x

这个时候,b不能对这个block做操作,虽然在它的buffer cache中.它还有这个block的copy.

4.
Write to read transfer

C要读 这个block,先向d (master)发出请求
Gcs要求a把它传输到c,
A接受到请求,完成它的工作,这可能会在a 写log 和log flush在发送这个block之前.
A会把它的x 锁降低到s (share)模式,
C把从a收到的block 的scn取出来,建设成一个资源assumption 信息为gcs,更新global resource directory


可以关闭Cache fusion,设置参数gc_files_to_locks
这样就向8i 的ops一样,别的节点要访问数据快,必须等待别的节点提交,写回数据文件中.
Cache fusion,就是从别的实例中读buffer[/size]

花香公子 发表于 2006-12-6 23:29

五.high availablility considerations

高可用性的特征

rac是oracle首要的高可用性解决方案.它有下面的能力:
        不需要干预就可以发现和防止网络问题
        以最小的破坏从failure中新配置和恢复
        把work从一个failed的节点发布到另外一个节点


cache resoure 的rematering
        cache resoure 在一个节点上不需要继续master
        dynamic remastering能把它移动到不同的节点
        gcs和ges使用动态的remastering :
                        在一个新实例加入到这个active set之后重新分发资源
                        在一个实例离开这个active set之后重新分发资源



LMON和cluster 的重新组织

Lmon 做以下事情:
                和cluster manger 联系为实例提供当前的cluster  的成员
                使用基于磁盘的心跳和投票进程来验证rac实例配置的健康
                                每个成员的lmon进程给出它对其它member 可用信的 impression
                                当年的status被maintain在disk上

                初试化恢复如果一个节点或实例不能发送或确定 心跳message

范例
每个实例有个表
有id,以及相应的id 资源的属性.
如果某个节点fails,相应的重新remaster.


实例的过渡和恢复
        如果一个实例crash:
                资源信息(这个实例所master的)就会丢失
                在重新配置的时候丢失的资源信息必须重新建立
                需要对这个failed实例恢复
        如果实例正常关闭,不需要恢复


高可用性设计上的考虑
        为change mangerment创建和测试policy
        配置冗余硬件
        提供primary/secondary 或空闲节点
        设置相应的实例初始化参数
        使用其它特性和选项例如
                        oracle 9i data guard
                        real application cluster gurad
                        transparent application failover

Change management

        计划一些changes来减小down的时间和服务的中断
                也许是夜间或周末工作
                避免关键的业务期间(例如月末年末)
        考虑有计划的changes
                每次一个功能
                每次一个节点
        include time and resource to back out changes if necessary.


配置冗余硬件
        节点的冗余的cluster的内部特性
        interconnect的冗余是推荐的选项
        disk的镜像防止一个disk的单点failure
                        推荐为所有的数据库文件做mirror
                        当时候cluster文件的时候推荐对软件做mirror

primary/secondary 实例

primary 实例: first one to start
secondary 实例:second one to start,if other instance fails can become primary


空闲节点

高可用性的参数
active_instance_count =1 :enable or disable a primary and secondary intance configuration
dml_locks =0        阻止ddl操作

fast_start_mttr_targer
gc_files_to_locks

recovery_parallelism
service_names

oracle 9i data guard


Log Transport Services: Standby db 的setup

创建standby redo log
定义归档目标在恢复实例的本地
在接受实例上,定义归档目标
在所有的standby db的实例上启动arcn进程
在恢复实例上启动mrp(managed recovery process)

Primary db 的setup


指示lgwr进程进行归档操作在所有的实例上
指定standby db作为接受节点

RAC guard
Oracle提供的产品.

花香公子 发表于 2006-12-6 23:29

六.TRANSPARENT APPLICATION FAILOVER


监听器

多个监听器可以:
        client 的负载均衡
        连接的时候的failover
        连接的负载均衡
        transparent application failover (TAF)

网络命名方法
        names解析服务(必须是tcp/ip 1521端口)
        本来命名(使用tnsnames.ora)
        目录命名使用中央化的ldap兼容的目录服务器
        JDBC driver
                Oci 驱动(为客户端和应用web服务使用)
                没有安装oracle使用thin driver为客户端使用

ORACLE CALL INTERFACE

TAF 为下面提供failover
        OCI 程序
        Jdbc thick 驱动(oci驱动)
        Odbc连接
        Sqlplus
        Select 语句

基于主机的failover
        
1.        通过监控心跳来发现failure
2.        在cluster manager里面重新组织cluster成员
3.        从primary节点到secondary节点传输disk的ownership
4.        重新启动应用程序和db的binaries
5.        执行应用程序和数据库的恢复
6.        重新建立到failover节点的客户连接


RAC的failover
        通过监控心跳来发现failure
        重新组织实例的membership
        执行实例恢复
        重新建立failed 客户连接

RAC中的TAF
        
        能够在空闲节点或者有primary/second配置中使用
        为这个环境使用但是呢概念用于:
                rac guard
                复制系统
                data guard
failover 模式选项

        你必须手工的在tns配置文件中添加failover选项
        这个选项在连接描述符里面是作为connect_date的一部分
        failover选项包括:
                type
                methon
                backup
                retries
                delay

Failover的类型
        Failover 类型identify the nature of TAF(if any)
        选项有
                session: 仅failover 到一个可选的恢复
                select:        failover and continue with any ongoing query

failover的方法
                决定当发生failover的时候,多快能连接上
                basic,在发生fail的时候跟failover的实例没有联系
                preconnect: 为primary实例的连接在standby实例上建立连接的影像

failover backup service
        确定失败的时候连接要指向的网络服务名
        容许你为每个primary 实例指定一个备份的实例连接字符
        使用preconnect方法来初试化failover的preconnect

failover连接重试选项

        retries: 在failover之后重新连接的次数
        delay: 连接一次失败后等多少秒在去连接
        
TAF的应用
        Taf的推荐配置包括:
                Connect-time failover with client load balancing
                Retrying connections
                Preestablishing connections

Load_balance =on
Failover=on
…….
        Failover_mode =
                (type=select)(method=basic)

retrying failover connections

        backup=rac2


        retries=20

        delay=15



taf的预连接
(
failover_over=
(backup=rac2)
(type=select)
(method=preconnect)
)



taf verfication
        
select machine,failover_type,
        failover_method,failed_over,count(*)
from v$session
group by machine,failover_type,
failover_method,failed_over;


简单的PRIMARY/SECONDARY 配置

primary/secondary配置支持两个节点的cluster(是不是多个节点就不支持这个配置了呢?)
        只有primary接受客户连接
        second用于本地连接来作dba 的job和产生报表等
        参数:
        active_intance_count = 1
        cluster_database_instance = 2

花香公子 发表于 2006-12-6 23:30

七. 备份和恢复

Log history records

创建数据库的时候有个参数 maxloghistroy
它表示在控制文件中保留有关归档log的历史记录的最大的个数.
如果超过了这个个数,在恢复的时候,需要手工指定log.

初试化归档
1.        关闭所有的实例
2.        启动一个专有的实例,并且把log_archive_*参数设置好
3.        ALTER DATABASE ARCHIVELOG
4.        修改LOG_ARCHIVE_*为其它所有的实例
5.        关闭专有的实例
6.        使用新的参数启动所有的实例
RMAN
        Rman对rac有下面优点
                不需要配置改变可以读cluster文件和裸分区
                能访问多个归档log目标


配置rman
        configure the snapshot control file location in rman
        configure the control file automatic backup feature

rman的默认autolocation

rman 自动定位下面的文件
        bakcup pieces
        备份期间的归档
        数据文件或控制文件的copy

用户管理的备份方法
        对于脱机备份,必须关闭所有的实例
        可以使用多个节点来作并行备份
        可以在任何节点convert tablespace
        你提供对归档redo的所有的线程的访问


脱机备份
        查询下面的视图看哪些文件需要备份
                v$datafile or dba_data_files
                v$logfile
                v$controlfile
                v$parameter
        关闭所有的实例
        把需要的文件copy到bakcup的目标
这个备份跟非rac数据库一样的



联机备份
        按照下面的步骤,注意,必须是归档模式

1.        alter tablespace …..begin backup
2.        使用os 工具来进行文件backup
3.        alter tablespace …end backup;
4.        alter database backup controlfile to file name / to trace
5.        alter system archive log current;

恢复redo log文件
        媒介恢复需要一个或者多个归档log文件为每个线程
        rman的recover命令自动的恢复和应用需要的归档log
        归档log可以存放在任何node上在恢复的时候
        log必须可以被指向恢复的节点读取
        
rac的并行恢复
并行恢复使用一个进程读log,多个进程apply redo
oracle自动调用恢复进程
这个进程可以在一个节点也可以在多个节点

花香公子 发表于 2006-12-6 23:30

八.oltp的considerations
        

        Extent Management Options
               
                Local management 是由数据库文件里面的位图来控制的.
                字典管理是由uet$ 和fet$ table来控制的.


        本地管理的表空间
        
                oracle公司推荐
                在extent管理的时候,避免了实例间对少量的blocks的竞争
                去掉了潜在在碎片,当不同大小的extent在一个表空间的时候.
                实现了对free空间的自动segment管理

        字典管理的表空间
               
                在早期的oracle 版本中支持应用的分区.

        自动段空间管理
                位图块存在自动空间管理的段中
                每个位图的block包括空间可用性信息
                只有临界条件改变的时候就会记录
                        只有一位需要改变
                        变化很快,几乎没有什么竞争.
                位图块会分配给一个会话当下列情况需要free空间的时候
                按照:
                        实例的标号来避免实例之间的竞争
                        会话的id避免会话的竞争.


Free List Space管理
        Free list包含有free空间的块(有指针逻辑连接)
        第一个记录指针链存在段头.
        Free list的改变需要更新header block的指针.
        多个实例需要free space在一个段中必须包含header block的copy
                会话需要这个内容来寻找free的blocks
                会话需要专门访问如果他们不得不更新free list的第一个指针

Sequence
        Create sequence sql创建
        Rac容许多个实例从同一个序列产生器中获得唯一的整数
        GCS协调实例之间的序列
        Rac中的序列产生器:
                跟单实例db相同的选项
                工作不尽相同

sequence产生器的选项
        
        Cache
                把sequence号缓冲在内存中
                提高性能
                关闭数据库的时候会丢numbers
        order
                保证请求的顺序
                增加负荷
        
        联合
                cache with no order 效率最好
                cache with order
                nocache with no order
                nocache with order  效率最差

索引的叶块的竞争
减少竞争
        对一个单一的实例,限制变化
        分区表和underly 索引
        使用实例专有的序列产生器
        使用multiplier来创建distince ranges
        考虑反向索引(在能在’=’条件中检索)

高级队列
        队列表实例affinity
gcs资源的获得
高级队列和队列表的cache transfer

花香公子 发表于 2006-12-6 23:30

九.olap,dss和数据仓库的considerations

        加强查询的数据库
                query-intensive的数据库包括
                        olap        
                        dss        
                        数据库仓库
                这样的数据库的特性:
                        大量数据
                        广阔的查询访问
                        有日程的批导入刷新和替换数据
                大量的并行处理

        Populating数据仓库
                把数据移动到数据仓库服务器使用:
                        外表
                        unix管道
                        mainframe. or legacy链接(escon)
                        第三方的包
                        透明网关
                        oracle9i 网络服务
        高效的应用cluster节点
                使用多实例来避免竞争
                如果工作不能高效的share,使用单一的实例来load数据

        在data loading之前需要进行批处理

………….

物化视图
        存非犯式的数据库
        从fact和多维表中pre-join了记录
        应该使用并行查询来扫描

summary 表
        是包括summary数据的物化视图
        基于rolling的summarizations(例如,周,月,季度)
        can be make at the levels that are most frequently need by clents.


        应该是数据仓库中最经常访问的内容

索引的创建
        使用parallel 来加快索引的创建
        使用nosort选项来预先装数据
        当规划索引的时候考虑位图和位图join索引.

分区选项
        提供自动分区的能力
        使索引跟着表一起分区或者独立
        使并行dml
        避免装数据的时候,实例之间和block的传送之间的竞争

并行处理的自动控制
        参数:
                parallel_automatic_tuning
                parallel_adaptive_multi_user
        在下面情况下使用默认的并行程度
                段的定义
                sql语句的hint
                dbms_stats参数

手工控制并行处理
        设置parallel_automatic_tuning 为false
        在create和alter语句中,hint和类似的操作中为并行的线程定义个值


其它的并行处理参数
        parallel_min_servers
        parallel_max_servers
        parallel_instance_group
        instance_groups
        parallel_broadcast_enables

临时表空间
        为了性能的优化
                使用本地管理的临时文件
                把不同的文件分散在不同的磁盘上
        为了提供最佳的空间可用性,建立一个表空间有多个临时文件
        人工需要一个分区的用户社区可以建立多个临时表空间

花香公子 发表于 2006-12-6 23:30

十. 监控和调整

        创建rac的视图
                $oracle_home/rdbms/admin/catclust.sql

        ORACLE PERFORMANCE MANAGER
                诊断包的一部分
                与企业管理器的选项
                图形显示实例(v$),cluster数据库(gv$)的统计
        
        Statspack        
                Spcreate.sql
                Connect perfstat/perfstat
                @spreport.sql

        statspack cluster的统计
                这个报告里面有关于cluster的部分
                        gcs的工作负荷的特性
                        ges的统计信息
                        gcs和ges的信息统计
                        ges的详细统计
        
        select name,value,from v$sysstat
                where name like ‘%global cache%’;

        Global cache service request latency
                在一个完整block请教中计算平台延时的公式
                        global cache cr block receive time
                 glocal cache cr bloacks received
        
                这个结果是百分之一秒

        Global cache service 请求的延时
        
                构成一个完整读快的平均时间
                                a=(global cache cr block build time) /(global cache cr blocks served)
                等待log flush的平均时间
                                b=(global cache cr block flush time)/(global cache cr blocks served)
                发送完整快的平均时间
                                c=(global cache cr block send time)/(global cache cr blocks served)
                平均的lms服务时间
                        平均的延时-a – b – c

        监控当前的块的处理
        当前的快的平均延时        
                (global cache current block receive time / global cache current blocks received ) –
( global cache current block pin time + global cache current block flush time + global cache current block send time ) / (global cache current blocks served)

        这个值比较高,数码有可能在buffers,cpu cycles或interconnect 访问有可能竞争.

        监控block 模式的转换
                平均转换时间(毫秒)
                        10*(global cache convert time)/ (global cache converts)
                平均get时间(毫秒)
                        10*(global cache get time)/(global cache gets)
                下面的统计计算了超时
                        global cache convert timeouts;

        分析global enqueue统计
1.        收集global统计数据
a)        监控statspack ges统计部分
b)        查v$sysstat
2.        计算平均global enqueue时间
3.        计算平均global锁转换时间
4.        确定可能导致文件的资源类型
5.        使用v$librarycache 和v$rowcache视图来进行进一步的分析

select name, value
from v$sysstat
where name like ‘%global lock%’;


计算平均global enqueue时间
        毫秒
10*(global lock get time) / (global lock sync gets + global lock async gets)

计算平均global lock convert时间 (毫秒)

10*(global lock convert time) / (global lock sync converts + global lock async converts)

select event,time_waited,average_wait
from v$system_event
order by time_waited desc;

进一步的分析通过视图
        

select namespace ,dlm_lock_request,
        dlm_pin,requests,
        dlm_pin_releasees,
        dlm_invalidation_requests,
        dlm_invalidations
from v$librarycache;
        

        select parameter, dlm_requests,
                dlm_conflicts,dlm_releasees
        from v$rowcache;

        监控global enqueue 服务资源统计
                加入统计
                        EVENT =” 29700 TRACE NAME CONTEXT FOREVER”
                查统计结果
                        v$ges_convert_local
                        v$ges_convert_remote

        分析global enqueue服务资源统计
                select r.convert_type,
                         r.average_convert_time,
                         l.average_convert_time,
                         r.convert_count,
                         l.convert_count
                from v$ges_convert_local l.
                         v$ges_convert_remote r
                where r.convert_count <> 0
                or    l.convert_count <>0
                group by r.convert_type;

        其它的视图来查询资源活动

                v$lock_activity
                v$class_cache_transfer
                v$cache_transfer
                v$file_cache_transfer

        V$system_evnet 视图
                事务的响应时间
                        response time/number of transaction =
                        cpu time /number of transactions +
                        wait time /number of transactions

        RAC在v$system_evnet中的事件
                Global cache cr request
                Library cache pin
                Buffer busy due to global cache
                Global cache busy
                Global cache open x
                Global cache open s
                Global cache null to x
                Global cache s to x
                Global cache null to s

        调整实例之间性能的观察
                select paramater ,count
                        dlm_requests,
                        dlm_conflicts,
                        dlm_releasees
                from v$rowcache;
               
                select namespace,dlm_lock_requests,
                                dlm_pin_requests,
                                dlm_pin_releases,
                                dlm_invalidation_requests,
                                dlm_invalidations
                from v$librarycache;
        
        调优战略
               
                收集基线数据
                监控统计跟基线数据进行比较
                只有在性能降低到不可以接受的水平才去调优
                要监控跟cluster db无关的因素
                address causes为更高水平的竞争.

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/90618/viewspace-590907/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-06-10

  • 博文量
    791
  • 访问量
    1930566