Archive

Archive for the ‘Oracle’ Category

awr report for every hour

July 7th, 2009

awr报告是获取数据库性能的重要入口。常规的使用方法是直接sqlplus调用awrrpt.sql来生成指定snapID的awr报告。但当需要生成每小时的awr报告时,使用这个方法就不是很方便了。即使是用bash脚本来写也相对来说麻烦一些。

这时候,我们可以使用dbms_workload_repository.awr_report_text(awr_report_html是用来生成html格式的)来生成awr报告.

SELECT output FROM TABLE(dbms_workload_repository.awr_report_text(1219033930,1,3,45))

其中4个参数分别为:DBID,instance_id,start_snap_id,end_snap_id.

通过脚本来控制输入输出,完成生成每小时的awr报告还是很容易的。

#!/bin/bash
#env vars
ORACLE_HOME=/u01/app/oracle/db_1
ORACLE_SID=orcl1
PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_HOME
export ORACLE_SID
export PATH
 
#vars
typeset -i start_snap=$1
typeset -i end_snap=$2
typeset -i start_id=$1
typeset -i end_id=`expr $1 + 1`
 
DBID=1219033930
instance_num=1
hostn=`hostname`
connect_str="system/welcome1"
plsql_set="set heading off feedback off pagesize 9999 linesize 500"
sql_awr="SELECT output FROM TABLE(dbms_workload_repository.awr_report_text(${DBID},${instance_num},${start_id},${end_id}));"
spool_loc="${hostn}_awr.rpt"
 
SQL()
{
  echo $connect_str
  echo $plsql_set
  while [ $start_snap -lt $end_snap ]
  do
     echo $sql_awr
     sleep 10
     start_snap=`expr $start_snap + 1`
	 start_id=`expr $start_id + 1`
	 end_id=`expr $end_id + 1`
  done
}
 
#begin sql
SQL|sqlplus -s$spool_loc

-END-

Oracle ,

CSS in RAC

June 21st, 2009

从整体架构上来说,Oracle RAC分为几大部分

  • OCR&Voting disk
  • CRS stack
  • CRS resources

而CSS是CRS stack中的一部分,极重要的一部分,是整个RAC所有节点维系一致性的纽带。

CSS Daemon主要由Group Management(GM)和Node Monitor(NM)组成。

  • GM:管理instance and communicate with LMON
  • NM:时刻监控集群中各个节点的生存状态。通过network heartbeat 和disk heartbeat来确保各节点alive.  例如,解决split-brain,network/process failure.

NM和GM都有一个Master node。而且选择方法也不尽相同,就现有资料及log来说,

  • NM:master被称为RM(reconfig manager),the lowest node number.
  • GM:1. oldest node 2. the node not the RM(也许出于平衡的考虑)

总之,就master node来说,是不一定一样的。这在多节点cluster里体现的可能更为明显些。

当有节点离开/加入cluster,CSS Daemon会进行reconfig。整体的一个流程如下:

  1. NM初始化,RM会给各节点发送同步信息,其他节点response with ACK.
  2. vote阶段,RM会发给各节点一个写vote的信息。其他节点反馈一个带有vote信息的ACK(包括node标识,状态及GM lister endpoint)
  3. split检查,RM会利用vote信息来判断cluster中是否发生了脑裂的症状。
  4. evict阶段,RM会根据split检查结果发送给失败节点evict信息,失败节点会返回ACK(等待MISSCOUNT),并reboot自己。
  5. NM 更新阶段,RM会发送一个带有cluster成员和节点信息的信息给所有节点,所有节点返回ACK确认,然后都发送一个reconfig event事件(NMEVENT_RECONFIG)给各自GM
  6. 确定GM master
  7. GM master广播成员变化信息,update新group的各节点新的通讯方式(endpoint),并完成锁同步。

11.2的RAC在集群方面变化很大,至于CSS internal的改变,还需要再仔细研究,也欢迎大家讨论。

-END-

Oracle ,

Change OUI Language on Windows

June 2nd, 2009

Oracle DB是一个多语言产品,因此OUI会根据系统语言来设定界面语言。这是个必备的功能。但当出现安装错误时,由于local的语言不是英语而造成信息的不明 确,确会给解决问题带来困扰。而且对windows这种不具有*uix那样方便的LANG设置来说,修改OUI界面语言为英语也是必要的一招。

方法很简单,修改安装文件中的oraparam.ini,改NLS_ENABLED=FALSE。这样OUI就成了单语言的了。

metalink里有相关解释, 563647.1

Oracle Universal Installer displays the translated GUI only if the variable NLS_ENABLED has been set to TRUE in the oraparam.ini file.
If the NLS_ENABLED variable is set to FALSE, all text is shown in English.

 

-END-

Oracle ,

OCR Master

May 25th, 2009

最近在做RAC 11.2 ocr&voting on ASM的测试. 由于OCR Master会影响到crsd.bin的运行状态,所以做了些深入的研究。

OCR(Oracle Cluster Registry), 记录了cluster的配置信息,譬如资源信息及依赖关系,节点、instance、service信息等。OCR利用了一个分布式的共享cache结构来优化cluster对cluster repository的查询。每个节点都有一个local cache,并与master node的cache保持一致。OCR信息的读写以及同步由OCR Process来控制。读cluster repository则直接从local cache获取,写则需要由local OCR process告知master OCR process来完成。

ocr_master

OCR Architecture

OCR Master(OCR Writer)特性:

  • 每一时刻cluster只有一个master,只有它具有写入共享存储OCR的权限。其他节点都只能读,或者告知master去同步写。
  • OCR master节点down掉后会有新的节点成为master,来接替写OCR的权限。
  • OCR automatic backup由master节点完成。

判断OCR master的方法(首先需要明白,没有一个command或者utility可以帮助你来获取master信息)

  • cluster中crs最快启动的节点
  • cluster中node number最小的(当进行master切换时,这条就起作用了)
  • 通过最新的auto backup(ocrconfig -showbackup auto)
  • crsd.log and ocssd.log(最好的方法) the ocr master and cssd reconfig master is different(modified on 2009-6-18).
    Log in ocssd.log in 11gR2
    ------------
    2009-05-18 20:38:19.264: [CSSD][2851584912]clssgmCMReconfig: reconfiguration successful, 
    incarnation 138141189 with 2 nodes, local node number 2, master node number 1
    ------------
     
    Log in crsd.log in 11gR2
    ------------
    [  OCRMAS][2879687568]th_calc_av:5': Rturn persisted AV [186646784] [11.2.0.1.0]
    2009-05-18 20:38:22.652: [  OCRMAS][2879687568]th_master: NEW OCR MASTER IS 1
    ------------

OCR Process:从10g到11.2,都没有这样的一个后台进程,我认为是crsd.bin进程的一个thread(批评指正).

Client Process(or OCR client application)有很多种,例如OUI, SRVCTL, EM, DBCA, DBUA, NETCA, VIPCA.

-END-

Oracle ,