rac-修改日志组
联机重做日志
联机重做日志的概念一、联机重做日志1、重做线程每个数据库实例的联机重做日志组都是一个联机重做的实例线程。
不管有没有多路复用,一般每个Oracle都只有一个重做线程,当然RAC中每个实例都包含一个重做线程。
2、联机重做日志内容重做条目记录了可以对数据库重新构造的所有修改数据,包括回滚段。
重做记录在SGA重做日志缓存区中缓冲,并由LGWR进程写入某个联机重做日志文件。
事务被提交时,必定需要用LGWR将日志全部从SGA缓存中写入联机重做日志文件,然后才被告知提交完成。
LGWR还会为每个事务分配一个识别重做记录的系统修改号(SCN)。
当重做日志缓存填满时LGWR也会将重做条目写入到重做日志文件,这些是可以回滚的。
3、联机重做日志写入方式数据库的联机重做日志组务必要有两个或两个以上,这样可以保持其中一个一直用于写入,另一个用于归档。
LGWR采用循环写入的方式,即写满一个换下一个。
或归档模式则写满了之后归档,否则则直接覆盖。
4、活动与非活动当前正在写入的联机重做日志文件成为“当前的”联机重做日志文件。
实例恢复时所需的联机重做日志文件称为“活动的”联机重做日志文件。
实例恢复不用的联机重做日志文件称为“非活动的”联机重做日志文件。
已经进行存档的联机重做日志文件不能重新使用或重写,知道ARCn存储了这个文件内容。
5、日志切换 & 日志顺序号一般默认在一个文件写满时切换到写一个文件,但是也可以规定时间进行切换,这样就不用理会是否写满。
也可以手动进行强制切换。
每次日志切换都会分配一个新的日志顺序号,归档时也将顺序号进行保存。
每个联机或存档的重做日志文件都通过它的日志顺序号进行唯一标识。
二、规划联机重做日志1、多路复用(Group)多路复用是避免损坏联机重做日志文件。
多路复用时LGWR将同一重做日志信息同时写入多个同样的联机重做日志文件。
建议必须要使用多路复用(至少两个组)。
注:当某个成员不可用,则标记为INVALID,并向LGWR跟踪文件和数据报警文件中写入错误信息。
RAC(ASM)到单机OGG配置案例
RAC(ASM)到单机OGG配置案例环境说明:源端DB:操作系统:AIX 7100-02-07-1524数据库:oracle_11.2.0.1.0 RACgoldengate:for_11g_ppc目标端DB:操作系统:windows 7数据库:oracle_11.2.0.1.0goldengate:for_11g_x86注意:本实验是模拟在不同平台同版本上面安装和配置OGG,并实现简单的DML复制,至于复杂的其他方面希望大家能自己多多实验。
作者:姓名:ZhangQYQQ:5056357配置步骤:1、检查源端和目标端正确的IP解析:源端:# cat /etc/hosts# 10.2.0.2 x25sample # x.25 name/address# 2000:1:1:1:209:6bff:feee:2b7f ipv6sample # ipv6 name/address 127.0.0.1 loopback localhost # loopback (lo0) name/address ::1 loopback localhost # IPv6 loopback (lo0)name/address172.16.16.101 zqdb192.169.79.11 zqdb172.16.16.165 oradg192.169.79.12 oradg172.16.16.166 gc1-scan.zqdb172.16.16.168 zqdb-vip172.16.16.169 oradg-vip目标端:C:\Windows\System32\drivers\etc\hosts无特殊配置2、设置LIBPATH,为了安装OGG所用的动态链接库。
如果没有配置这个路径的话,在安装OGG的过程中会报找不到动态链接库的错误,用户可以自己尝试一下。
源端:# su - oraclezqdb:/home/oracle>$vi .profile".profile" 25 lines, 756 charactersPATH=/usr/bin:/etc:/usr/sbin:/usr/ucb:$HOME/bin:/usr/bin/X11:/sbin:.export PATHif [ -s "$MAIL" ] # This is at Shell startup. In normalthen echo "$MAILMSG" # operation, the Shell checksfi # periodically.OGG_HOME=/oracle/ogg/12.1.2ORACLE_BASE=/oracle/ora11gORACLE_HOME=/oracle/ora11g/product/11gORACLE_SID=ora11g1export ORACLE_BASE ORACLE_HOME ORACLE_SIDORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/dataNLS_LANG=AMERICAN_AMERICA.ZHS16GBKLD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib:/libexport ORA_NLS33 NLS_LANG LD_LIBRARY_PATHPATH=$PATH:$ORACLE_HOME/bin:$OGG_HOMEexport PATHLIBPATH=$ORACLE_HOME/lib32:$ORACLE_HOME/libexport LIBPATHexport DISPLAY=172.17.2.203:0.0export PS1="`hostname`":'$PWD>$'目标端:无特殊配置3、在源端创建专用的表空间、schema、并授权。
oracle rac日记
RAC的主要性能指标经常有人问老白,一套RAc系统,如何评价CACHE FUSION方面有没有问题呢?这个问题确实有点麻烦,任何一套系统的健康性分析都是很复杂的,因为每个系统都是不一样的,都有独立的特性。
不过作为技术分析手段,还是有很多指标可以反映出系统的状况。
本节将介绍主要的GCS/GES相关性能指标的情况。
这些性能指标可以从AWR报告或者STATSPACK报告中获取,也可以从VSGES STATISTICS中读取。
总体负载与命中率指标本节里的部分指标是Oracle l0g才有的,0racle 10g AwR报告在指标分析方面有了较大的改DBA遥过这些指标可以更容易地进行性能分析。
以下是0racle l09的一个例子:第一部分是LOAD PROFILE(负载情况),从负载情况我们可以判断这个系统中GES/GCS 的总体负载,由于每个系统都是个性化的,因此我们不能简单地通过这些指标来判断这个系统是否存在问题。
不过我们可以进行横向的比较,在系统中采集性能基线,通过性能基线的分析确定这些指标的正常范围和平均值,通过这些基线指标来判断当前的指标是否处于正常范围。
第二部分Global Cached Efficiency Percentages是一个我们了解RAC中CACHE共享情况的重要指标。
如上面数据,这个系统中99.54%的数据是从本地CACHE中获取,0.14%是从远程CACHE中获取,0.32%是从本地磁盘获取。
这是一个做了应用分区的系统,两个实例的应用之间互相共享的数据十分少。
而一个具有较为严重冲突的系统可能是这详的:其中有差不多6%是从远程CACHE中获取的,这种情况下,CACHE FUSION可能带来较为严重的冲突。
从以下指标也可以看出流控的比例十分高:在Oracle 9i中,可以从Statspack报告中看到类似的指标,彳i过没有109AWR报告那么清晰:其中的Global cache hit rati0是通过CACHE FUSION来访问的CACHE的百分比。
DELL RAC使用指南
cfgNicEnable=1
cfgNicIpAddress=10.40.95.2
cfgNicNetmask=255.255.255.0
按Esc键退出系统设置程序以便完成系统设置程序配置.
一些型号的Dell PowerEdge系统(800,1425SC,1800,1850,1855,2800,2850,6800,
6850)上RAC的功能是由BMC来实现的.Dell PowerEdge系统底板管理控制器(BMC)
通过与主机板上的不同传感器通信来监视系统是否有严重事件,并在某些参数超
DELL RAC使用指南
2006.04.11
Dell Remote Access Card III(DRAC III)、DRAC III/XT、DRAC 4、
Dell Embedded Remote Access Controller(ERA)和嵌入式远程访问选件
(ERA/O),以上控制器将被统称为"RAC".RAC用于为Dell PowerEdge系统提
出其预置阈值时发出警报和日志事件.BMC支持工业标准的Intelligent Platform
Management Interface(IPMI)规范,可以实现远程配置、监测和恢复系统.
RAC通过与系统的ESM通信,可报告有关电压、温度和风扇速率的警告或错误.
此外,RAC可以记录系统崩溃的可能原因,并保存最新的崩溃屏幕(仅限于运行
cfgNicGateway=10.40.95.254
oracle rac 安装部署文档
oracle rac 安装部署文档oracle oracle rac搭建][常见问题汇总oracle rac 安装部署文档物理硬件配置需求:oracle 虚拟机需求:oracle rac两节点脚本搭建方法操作系统安装数据库安装oracle rac 图形界面搭建方法(适用于两个节点和多个oracle节点)创建磁盘组安装oracle数据库dbca 创建数据库配置oracle性能测试相关的参数关闭iolog常见问题汇总问题一:oracle在运行过程中,异常中断存储进程(gluster,tgtd等)会导致oracle异常报错ORA-01078。
问题二:查看数据库实例状态的时候报错ORA-01034问题三:删除问题表失败问题四:通过系统镜像安装桌面。
问题五:执行完oracle_install_rac.sh 如果oracleasm 命令未别找到,要先解压rpm文件夹问题六:rac01 和rac02 sid配置成一样的了怎么修改问题七:请求spfile错误问题八:ora 12516报错监听程序找不到符合协议堆栈要求的可用处理程序问题九:问题启动数据库报错 ORA-01078物理硬件配置需求:oracle 虚拟机需求:oracle rac两节点脚本搭建方法操作系统安装1.页面选择部署oracle rac2.选择共享盘创建,单机下一步3.配置虚拟机基本信息,– cpu改成2*16核,– 内存改成96G,– 添加一个网卡,连接心跳交换机– 磁盘添加iso redhat镜像文件– 磁盘设置为80G 预先分配网络配置第一个网口作为虚拟机的公网,第二个网口作为虚拟机的私网网口(连接heartbeat交换机的网口)4.单击下一步,安装redhat操作系统 [以下简略提示4点]1.hostname可以先不改2.创建分区的时候,选择Create Custom Layout自己配置分区大小3.创建分区/boot 分区1024M,swap 分区20480M,剩余的空间分配给/分区4.安装的时候选择带桌面的5.red hat系统安装完成后,按页面提示,安装虚拟机性能优化工具(不安装性能优化工具,会导致测试性能的时候,性能大幅下降)6.安装完成后,将虚拟机关机。
Oracle 11g RAC维护参考
Oracle 11g RAC维护参考RAC集群,全称Real Application Clusters,译为“实时应用集群”,是Oracle提供的一种高可用、并行集群系统,RAC除了具有高可用能力还有负载均衡能力,整个RAC集群系统由Oracle Clusterware (集群软件)和Real Application Clusters(RAC)两大部分组成。
1硬件环境RAC集群的硬件环境包括主机、共享存储、网络设备。
1.1主机(节点)RAC集群环境中至少有两台主机,也就是两个节点,每个节点配置一样的硬件,至少配置两块物理网卡。
1.2网络设备网卡,每个RAC集群节点上至少配置两块物理网卡。
一块网卡用于集群内部的私有通信,集群节点间数据块的传输都是通过这块网卡,我们称之为私有网卡,IP别名Private IP;另一块网卡用于对外服务,比如数据库的查询等,我们称之为公有网卡,IP别名Public IP。
除此之外,每个节点还有第三个VIP(Virtual IP)的IP。
RAC集群正常运行时,每个节点的VIP会被分配到公有网卡上,当某个节点出现故障宕机时,这个节点的VIP会被移到其它正常运行节点的公有网卡上。
网络交换机,首先,用于连接所有节点的公有网卡以提供对外的数据库服务,其次,用于连接各个节点之间的私有网卡以传递集群节点之间的心跳数据和数据库数据块(Cache Fusion)。
1.3共享存储在RAC集群中,最重要的是共享存储,RAC是一个“多实例、单一数据库”的架构,所有的节点共享一个数据库。
数据文件、联机日志、参数文件、控制文件存放在共享存储上以保证每个节点的实例都能访问。
每个节点安装HBA卡,然后通过光纤线和存储设备连接。
2软件环境RAC集群的软件组成包含:操作系统、集群软件、数据库软件。
2.1操作系统每个节点上所安装的操作系统必须是相同版本的。
2.2集群软件Oracle Clusterware(统称为CRS/Cluster Ready Service)集群软件,负责管理整个集群环境中的硬件资源,并为上层的RAC集群提供基础服务。
最详细的oracle rac日常基本维护命令
最详细的oracle rac日常基本维护命令以下是一些使用Oracle RAC进行日常基本维护的常用命令:1. CRSCTL命令:- crsctl check crs:检查集群资源状态。
- crsctl start crs:启动整个集群资源服务。
- crsctl stop crs:停止整个集群资源服务。
- crsctl disable crs:禁用整个集群资源服务。
- crsctl enable crs:启用整个集群资源服务。
2. SRVCTL命令:- srvctl start instance -db <database_name> -instance<instance_name>:启动指定的实例。
- srvctl stop instance -db <database_name> -instance<instance_name>:停止指定的实例。
- srvctl status instance -db <database_name> -instance<instance_name>:检查指定实例的状态。
- srvctl start service -db <database_name> -service <service_name>:启动指定的服务。
- srvctl stop service -db <database_name> -service <service_name>:停止指定的服务。
- srvctl status service -db <database_name> -service<service_name>:检查指定服务的状态。
3. SQL*Plus命令:- sqlplus / as sysdba:以SYS用户身份登录数据库。
- startup:启动数据库实例。
Oracle Rac日常维护操作手册
Oracle Rac日常维护操作手册一、关闭服务器1.1关闭数据库实例在DBSERVER01和DBSERVER02服务器上分别运行以下命令:在cmd命令行中运行C:\Documents and Settings\Administrator>d:D:\>cd D:\oracle\product\10.2.0\crs\BIND:\oracle\product\10.2.0\crs\BIN>crs_stat –t (检查oracle数据库运行状态)名称类型目标状态主机------------------------------------------------------------ora....S1.inst application ONLINE ONLINE dbserver01ora....S2.inst application ONLINE ONLINE dbserver02ora.HBHIS.db application ONLINE ONLINE dbserver02ora....01.lsnr application ONLINE ONLINE dbserver01ora....r01.gsd application ONLINE ONLINE dbserver01ora....r01.ons application ONLINE ONLINE dbserver01ora....r01.vip application ONLINE ONLINE dbserver01ora....02.lsnr application ONLINE ONLINE dbserver02ora....r02.gsd application ONLINE ONLINE dbserver02ora....r02.ons application ONLINE ONLINE dbserver02ora....r02.vip application ONLINE ONLINE dbserver02D:\oracle\product\10.2.0\crs\BIN>sqlplus sys/sys as sysdbaSQL>shutdown immediateSQL>exitD:\oracle\product\10.2.0\crs\BIN>crs_stat –t (再次检查oracle数据库运行状态) 名称类型目标状态主机------------------------------------------------------------ora....S1.inst application OFFLINE OFFLINEora....S2.inst application OFFLINE OFFLINEora.HBHIS.db application OFFLINE OFFLINEora....01.lsnr application ONLINE ONLINE dbserver01ora....r01.gsd application ONLINE ONLINE dbserver01ora....r01.ons application ONLINE ONLINE dbserver01ora....r01.vip application ONLINE ONLINE dbserver01ora....02.lsnr application ONLINE ONLINE dbserver02ora....r02.gsd application ONLINE ONLINE dbserver02ora....r02.ons application ONLINE ONLINE dbserver02ora....r02.vip application ONLINE ONLINE dbserver021.2关闭CRS集群服务在DBSERVER01或DBSERVER02服务器上运行以下命令:C:\Documents and Settings\Administrator>srvctl stop nodeapps -n dbserver01C:\Documents and Settings\Administrator>srvctl stop nodeapps -n dbserver02D:\oracle\product\10.2.0\crs\BIN>crs_stat –t (再次检查oracle数据库运行状态) 名称类型目标状态主机------------------------------------------------------------ora....S1.inst application OFFLINE OFFLINEora....S2.inst application OFFLINE OFFLINEora.HBHIS.db application OFFLINE OFFLINEora....01.lsnr application OFFLINE OFFLINEora....r01.gsd application OFFLINE OFFLINEora....r01.ons application OFFLINE OFFLINEora....r01.vip application OFFLINE OFFLINEora....02.lsnr application OFFLINE OFFLINEora....r02.gsd application OFFLINE OFFLINEora....r02.ons application OFFLINE OFFLINEora....r02.vip application OFFLINE OFFLINE1.3关闭服务器操作系统先关DBSERVER01,在关闭DBSERVER02;二、开启服务器2.1DBSERVER02服务器开机DBSERVER02服务器操作系统启动后待网卡服务全部启动,执行以下命令验证oracle服务启动情况C:\Documents and Settings\Administrator>d:D:\>cd D:\oracle\product\10.2.0\crs\BIND:\oracle\product\10.2.0\crs\BIN>crs_stat –t (检查oracle数据库运行状态)名称类型目标状态主机------------------------------------------------------------ora....S1.inst application OFFLINE OFFLINEora....S2.inst application ONLINE ONLINE dbserver02ora.HBHIS.db application ONLINE ONLINE dbserver02ora....01.lsnr application OFFLINE OFFLINEora....r01.gsd application OFFLINE OFFLINEora....r01.ons application OFFLINE OFFLINEora....r01.vip application OFFLINE OFFLINEora....02.lsnr application ONLINE ONLINE dbserver02ora....r02.gsd application ONLINE ONLINE dbserver02ora....r02.ons application ONLINE ONLINE dbserver02ora....r02.vip application ONLINE ONLINE dbserver02待DBSERVER02上oracle服务全部启动后再开启DBSERVER01。
rac 常用命令
rac 常用命令在Linux系统中,`rac`(也可以称为RAC)是一个常用的命令。
`rac`命令是Red Hat Cluster Suite(RHEL集群套件)的一部分,是用于设置和管理高可用性集群的工具。
它提供了许多功能和选项,可以帮助系统管理员轻松管理集群环境。
本文将详细介绍`rac`命令的常用功能和用法。
1. 查看集群状态`rac status`命令可以显示当前集群的状态信息。
它将显示集群中每个节点的状态,包括节点的健康状况、状态、软件版本以及集群服务的运行状态等。
这对于诊断集群故障以及监控集群运行状态非常有用。
可以通过以下命令来查看集群状态:```rac status```2. 启动和停止集群服务使用`rac`命令可以方便地启动和停止集群中的服务。
例如,可以使用以下命令来启动集群服务:```rac service start```同样,可以使用以下命令来停止集群服务:```rac service stop```通过这些命令,可以在需要时方便地启动和停止集群服务,以满足系统管理员的要求。
3. 创建和删除资源组资源组是集群中的一个重要概念,它代表着一组相关的服务或应用程序。
使用`rac`命令可以创建和删除资源组。
以下是创建资源组的命令示例:```rac group create [group_name]```在上述命令中,`[group_name]`表示要创建的资源组的名称。
类似地,可以使用以下命令删除资源组:```rac group delete [group_name]```使用这些命令,系统管理员可以轻松地管理集群中的资源组。
4. 移动资源组通过`rac`命令,可以将资源组从一个节点移动到另一个节点。
这对于负载均衡和高可用性至关重要。
以下是将资源组从一个节点移动到另一个节点的命令示例:```rac group move [group_name] [destination_node]```在上述命令中,`[group_name]`表示要移动的资源组的名称,`[destination_node]`表示要移动到的目标节点。
如何在oracle rac环境下修改SID
如何在oracle rac环境下修改SID因为更改实例名即SID很少用到,所以这方面的文档非常少,我偶尔在国外一个论坛看到这片文档,所以用中文写出来,因为我也刚好碰到有客户需要更改原来的实例名,数据库版本为10.2.0.4的双节点RAC,在实施之前我在测试环境已经测试过(我的环境是用ASM存储方案),没任何问题;反观网上有些人写的相关文档,按照文档做的话根本就有问题而且不完整。
根据国外那位仁兄所言,这个步骤在11G RAC也可工作,但本人未做过测试。
1.先导出参数文件spfile至pfile:SQL> create pfile='/home/oracle/tem_pfile' from spfile;2.然后用vi编辑器编辑刚才导出的参数文件,找到里面所有旧的sid并将其变为新的sid(一定要修改正确)。
3.将刚才修改过的pfile复制到另外一个节点(目录随便):scp /home/oracle/tmp_pfile x.x.x.x:/home/oracle/4.停止数据库:srvctl stop database -d <dbname>在该节点做如下操作:1.设置环境变量ORACLE_SID为新的SIDExport ORACLE_SID=<new SID>2.重命名init.ora文件(在$ORACLE_HOME/dbs目录下)cp init<old sid>.ora init<new sid>.ora3.启动实例到nomount:startup nomount pfile=/home/oracle/tem_pfile4.用我们修改后的pfile重新创建参数文件spfile(注意我是用asm来管理数据存储的):create spfile=’<+DATADG01>/<dbname>/spfile<dbname>.or a’ frompfile=’/home/oracle/tem_pfile’;5.停止该实例:SQL>shutdown immediate6.正常启动该实例:SQL>Startup7.用“select instance_name from v$instance”核实新sid:SQL> select instance_name from v$instance8.停止实例:SQL>shutdown immediate然后:1.更改另外一个节点的init.ora(方法同上)2.用srvctl移除原实例在OCR中的注册(先停止实例),或者用DBCA移除也可以:srvctl remove instance -d <dbname> -i <old sid node 1>srvctl remove instance -d <dbname> -i <old sid node 2>3、用srvctl删除原实例的服务(先停止服务),或者用DBCA移除也可以:srvctl remove service -d <dbname> -s <servicename>3.注册新实例,或者用DBCA添加也可以srvctl add instance -d <dbname> -i <new sid node 1> -n <hostnamenode 1>srvctl add instance -d <dbname> -i <new sid node 2> -n <hostnamenode 2>4.用DBCA 或srvctl 命令添加新实例的服务即可:DBCA图形化添加方法我不说了,srvctl命令如下:srvctl add service -d <dbname> -s <servicename> -r <instance1> -r<instance2> -P BASIC注意:上述<>号内的内容更改成你实际环境的参数即可。
ORACLERAC日常管理概述
ORACLERAC日常管理概述一、Oracle RAC简介:Oracle RAC 支持Oracle 数据库在集群上运行真正的应用程序。
此处的真正应用是指RAC 能够支持所有类型的主流商业应用程序。
这包含流行的封装产品,如SAP、PeopleSoft 与Oracle E*Business Suite 等,与自主研发的应用程序,其中包含OLTP 与DSS,与Oracle 有效支持混合OLTP/DSS 环境的独有能力。
Oracle 是唯一提供具备这一功能的开放系统数据库的厂商。
Oracle RAC 运行于集群之上,为Oracle 数据库提供了最高级别的可用性、可伸缩性与低成本计算能力。
假如集群内的一个节点发生故障,Oracle 将能够继续在其余的节点上运行。
假如需要更高的处理能力,新的节点可轻松添加至集群。
为了保持低成本,即使最高端的系统也能够从使用标准化商用组件的小型低成本集群开始逐步构建而成。
Oracle 的要紧创新是一项称之高速缓存合并的技术,它最初是针对Oracle9i 真正应用集群开发的。
高速缓存合并使得集群中的节点能够通过高速集群互联高效地同步其内存高速缓存,从而最大限度地低降低磁盘I/O。
高速缓存最重要的优势在于它能够使集群中所有节点的磁盘共享对所有数据的访问。
数据无需在节点间进行分区。
Oracle 是唯一提供具备这一能力的开放系统数据库的厂商。
其它声称能够运行在集群上的数据库软件需要对数据库数据进行分区。
这关于拥有复杂的数据结构的真正应用程序而言,显得不切实际。
而且也不可能对集群系统进行统一变更。
假如您添加或者删除节点或者存储资源,数据则需要完全重新分区。
二、ORACLE RAC工作原理在一个应用环境当中,所有的服务器使用与管理同一个数据库,目的是为了分散每一台服务器的工作量,硬件上至少需要两台以上的服务器,而且还需要一个共享存储设备。
同时还需要两类软件,一个是集群软件,另外一个就是Oracle数据库中的RAC组件。
oracle rac 故障排查思路
oracle rac 故障排查思路Oracle RAC(Real Application Clusters)故障排查思路可以按照以下步骤进行:1.查看系统时间是否同步:首先检查所有节点的系统时间是否同步。
如果时间不同步,可能会导致一些奇怪的问题。
可以使用date命令来查看当前时间,如果需要同步时间,可以使用ntpdate -u命令进行同步。
2.查看防火墙状态:检查所有节点的防火墙状态,确保防火墙处于关闭状态。
如果防火墙开启,可能会阻止节点之间的通信,导致RAC无法正常工作。
3.检查网络通信:在两个节点之间进行ping操作,检查网络通信是否正常。
如果网络通信存在问题,可能是导致RAC故障的原因之一。
4.查看RAC日志:查看RAC的日志文件,查找是否有任何错误或警告信息。
RAC的日志文件通常位于$ORACLE_HOME/diag/rdbms/目录下。
5.查看数据库日志:查看数据库的日志文件,查找是否有任何与RAC相关的错误或警告信息。
6.检查资源:检查RAC使用的资源(如CPU、内存、磁盘等)是否正常。
如果资源存在问题,可能会导致RAC无法正常工作。
7.重启RAC服务:尝试重启RAC服务,看是否能够解决问题。
8.查看诊断信息:使用Oracle提供的诊断工具(如oradim、oradba等)来查看诊断信息,查找是否有任何与RAC相关的错误或警告信息。
以上是Oracle RAC故障排查的基本思路,具体排查步骤可能因实际情况而有所不同。
在进行故障排查时,建议按照上述步骤逐一排查,并记录排查过程中的信息,以便后续分析问题原因。
oracle 11g rac中归档文件的命名参数
在Oracle 11g RAC(Real Application Clusters)中,归档日志文件的命名通常依赖于几个参数来确保唯一性和便于管理。
以下是与归档文件命名相关的参数:1. `LOG_ARCHIVE_DEST_n`:这个参数定义了归档重做日志文件存放的位置,其中`n`是序号,可以设置多个归档目的地。
2. `DB_UNIQUE_NAME`:此参数用于设置数据库实例的唯一名称。
在某些情况下,该参数会影响归档文件的名称,以确保每个实例生成的归档日志具有唯一的名称。
3. `LOG_ARCHIVE_FORMAT`:通过这个参数,可以自定义归档日志文件的命名格式。
它支持一些特定的替换变量,如`%t`代表线程号,`%s`代表序列号,`%r`代表重置日志文件时生成的唯一值等。
4. `LOG_SEQUENCE`:指定每个日志文件的序列号。
在归档日志文件命名时,通常会包含这个序列号以维持顺序。
5. `MAXLOGFILES` 和`MAXLOGMEMBERS`:这些参数定义了在线重做日志组和成员的最大数量,它们间接影响了归档文件的命名,因为一旦达到最大日志组数,系统会开始循环使用日志文件,并在归档文件名中反映出来。
6. `FAL_SERVER` 和`FAL_CLIENT`:如果使用了Flash Recovery Area (FRA),则归档重做日志文件可能会被自动移动到FRA,并且其路径将会体现在归档文件名中。
7. `COMPATIBLE` 参数:虽然不直接涉及归档文件的命名,但设置兼容级别可能会影响到归档处理的行为。
默认情况下,如果不自定义`LOG_ARCHIVE_FORMAT`参数,Oracle 11g RAC的归档重做日志文件将使用类似以下格式的命名方式:`ARCn/%$x.%$g/%$s`其中:- `ARCn` 表示归档重做日志文件的缩写。
- `%$x` 是线程号(对于RAC环境)。
- `%$g` 是日志组号。
Oracle-RAC环境数据备份与恢复方案
Oracle RAC 环境数据备份与恢复方案【导读】某企业因项目需要在Oracle RAC集群环境下,根据实际情况对Oracle数据库进行备份;使用生产环境的rman全备数据,进行恢复数据搭建测试环境。
本文将详细介绍此案例中Oracle数据库rman全备份过程、Oracle RAC 环境下rman备份数据如何恢复至单机服务器。
考虑到非常的实用,将实施经验分享给更多同行进行交流学习。
一、背景环境生产环境使用两台DELL R840 服务器,安装了 linux centos 7.6操作系统,并配置多路径,使用 EMC untiy 作为共享存储,分配了2个1T LUN 存储数据库文件,1个500G LUN存放归档数据,3个30G LUN存放 OCR 、FALSH、GIMR 数据。
Oracle RAC 软件版本是19C 19.0.0.0.0。
二、数据备份1、备份策略为保障oracle rac 集群数据安全,因项目组要求设计数据库备份方案。
考虑到服务器RAC1与RAC2每台服务器自带2T本地可用容量,每次全备产生约400GB数据文件。
可将奇数天备份到RAC1,偶数天备份到RAC2,4*400GB=1.6TB,每台服务器可以备份4天的全量数据。
空间非常的富余,不计划使用rman的增量备份,直接全量备份近8天数据,恢复也较为方便。
2、备份过程在RAC1主机下执行,(RAC2同理)首先Oracle 数据库开启归档,归档模式下,才可以进行数据库的热备份、联机备份、手工备份等。
非归档模式下,只能进行冷备份。
当然我们rman备份是在线备份。
如下图:接着,创建rman脚本目录创建备份执行脚本,并加入定时任务创建备份数据清理脚本,并加入定时任务,只备份近4次数据,脚本会自动判断最近一次rman备份是否成功,不成功将不删除备份数据。
这里我调用了zabora.sh 脚本判断rman备份状态,sql语句也比较简单。
定时任务(RAC1)定时任务 (RAC2)记得重启定时任务创建rman执行脚本,用于被上述执行脚本调用3、测试验证第一次可手动执行备份任务,不等到凌晨自动执行查看日志log备份完成如下图:三、数据恢复因为本项目使用的是全备数据,无增量。
11g rac 修改redo日志的大小
11grac修改redo日志的大小1.查看当前redo日志的情况sys@RACDB>SELECT l.group#, l.thread#, f.member, l.archived, l.status, (bytes/1024/1024) size_mb FROM v$log l,v$logfile f WHERE f.group# = l.group# ORDER BY 1,2;2.执行以下语句,创建新的日志组,作为过渡日志组alter database add logfile thread 1 group 5 ('+DATA/racdb/onlinelog/group_5_1.log') size 100M;alter database add logfile thread 1 group 6 ('+DATA/racdb/onlinelog/group_6_1.log') size 100M;alter database add logfile thread 2 group 7 ('+DATA/racdb/onlinelog/group_7_1.log') size 100M;alter database add logfile thread 2 group 8 ('+DATA/racdb/onlinelog/group_8_1.log') size 100M;3.多次切换日志组,直到要替换的日志组变为INACTIVE状态(所有节点执行)sys@RACDB>alter system switch logfile;sys@RACDB>select group#,THREAD#,status,archived,bytes/1024/1024 MB from v$log; GROUP# THREAD# STATUS ARC MB------ ------- ---------- --- ----------1 1 INACTIVE YES 502 1 INACTIVE YES 503 2 INACTIVE NO 504 2 INACTIVE YES 505 1 ACTIVE YES 1006 1 CURRENT NO 1007 2 INACTIVE YES 1008 2 INACTIVE YES 1004.删除日志组1,2,3,4sys@RACDB>alter database drop logfile group 1;sys@RACDB>alter database drop logfile group 2;sys@RACDB>alter database drop logfile group 3;sys@RACDB>alter database drop logfile group 4;sys@RACDB>select group#,THREAD#,status,archived,bytes/1024/1024 MB from v$log;GROUP# THREAD# STATUS ARCHIVED MB------ ------- ---------- ---------- ----------5 1 ACTIVE YES 1006 1 CURRENT NO 1007 2 INACTIVE YES 1008 2 INACTIVE YES 1005.重新添加日志组1,2,3,4分配日志文件大小为100MBalter database add logfile thread 1 group 1 ('+DATA/racdb/onlinelog/group_1_1.log','+FRA/racdb/onlinelog/group_1_2.log') size 100M;alter database add logfile thread 1 group 2 ('+DATA/racdb/onlinelog/group_2_1.log','+FRA/racdb/onlinelog/group_2_2.log') size 100M;alter database add logfile thread 2 group 3 ('+DATA/racdb/onlinelog/group_3_1.log','+FRA/racdb/onlinelog/group_3_2.log') size 100M;alter database add logfile thread 2 group 4 ('+DATA/racdb/onlinelog/group_4_1.log','+FRA/racdb/onlinelog/group_4_2.log') size 100M;添加玩后,查看日志组sys@RACDB>select group#,THREAD#,status,archived,bytes/1024/1024 MB from v$log;GROUP# THREAD# STATUS ARCHIVED MB------ ------- ---------- ---------- ----------1 1 CURRENT NO 1002 1 INACTIVE YES 1003 2 UNUSED YES 1004 2 UNUSED YES 1005 1 INACTIVE YES 1006 1 INACTIVE YES 1007 2 CURRENT NO 1008 2 INACTIVE YES 1006.切换日志组,使日志组5,6,7,8变为INACTIVEsys@RACDB>alter system switch logfile;sys@RACDB>select group#,THREAD#,status,archived,bytes/1024/1024 MB from v$log;GROUP# THREAD# STATUS ARCHIVED MB------ ------- ---------- ---------- ----------1 1 CURRENT NO 1002 1 INACTIVE YES 1003 2 INACTIVE YES 1004 2 CURRENT NO 1005 1 INACTIVE YES 1006 1 INACTIVE YES 1007 2 INACTIVE YES 1008 2 INACTIVE YES 1007.删除过渡日志组5,6,7,8sys@RACDB>alter database drop logfile group 5;sys@RACDB>alter database drop logfile group 6;sys@RACDB>alter database drop logfile group 7;sys@RACDB>alter database drop logfile group 8;8.最后查看修改后的日志情况。
ORACLERAC更改实例名
ORACLERAC更改实例名规划后的实例名 fqzdbipfqzdb01 192.168.2.33fqzdb02 192.168.2.342.1.1 扫描磁盘(下⾯的操作没有特别提⽰,默认为两个节点都操作)在两个节点上使⽤root⽤户执⾏cfgmg命令识别同步过来的存储磁盘Method error (/usr/lib/methods/cfgpkcs11 -l pkcs11 ):0514-040 Error initializing a device into the kernel.---------报错可忽略扫描完成后,系统/dev⽬录下会⽣成hdisk2......hdisk33磁盘2.1.2 磁盘修改权限修改磁盘的权限⾄660,属组修改为Oracle⽤户组,打开no_reserve属性root⽤户在/dev⽬录下执⾏:chdev -l hdisk2 -a reserve_policy=no_reservechdev -l hdisk3 -a reserve_policy=no_reservechdev -l hdisk4 -a reserve_policy=no_reservechdev -l hdisk5 -a reserve_policy=no_reservechmod 660 rhdisk2chmod 660 rhdisk3chmod 660 rhdisk4chmod 660 rhdisk5chown grid:oinstall rhdisk2chown grid:oinstall rhdisk3chown grid:oinstall rhdisk4chown grid:oinstall rhdisk52.1.3 Mount Disk Group使⽤grid⽤户在两个节点上执⾏[root@prodb01a /]# su - grid[grid@prodb01a /home/grid]> sqlplus / as sysasmSQL*Plus: Release 12.1.0.2.0 Production on Thu Feb 14 11:54:51 2019Copyright (c) 1982, 2014, Oracle. All rights reserved.Connected to:Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit ProductionWith the Real Application Clusters and Automatic Storage Management optionsSQL> select name,state from v$asm_diskgroup;NAME STATE------------------------------ -----------DG_fqz_CRS MOUNTEDFQZDATADG DISMOUNTEDSQL> alter diskgroup FQZDATADG mount force;Diskgroup altered.2.1.4 启动数据库Oracle⽤户执⾏export ORACLE_SID=prodbsqlplus / as sysdbaSQL> startup pfile='/home/oracle/pfile.ora'2.2 修改相关名称实施步骤(本套数据库修改名称定为 prodb )2.2.1 数据库启动⾄mount状态RAC需要⾸先将cluster_database置为false后重启数据库⾄mount状态[oracle@prodb01a /home/oracle]> sqlplus / as sysdbaSQL*Plus: Release 12.1.0.2.0 Production on Thu Feb 14 11:05:48 2019Copyright (c) 1982, 2014, Oracle. All rights reserved.Connected to:Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit ProductionWith the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP, Advanced Analytics and Real Application Testing options[oracle@prodb01a /home/oracle]> sqlplus / as sysdbaSQL> startup mountORACLE instance started.Total System Global Area 4.2950E+10 bytesFixed Size 7727872 bytesVariable Size 1.3959E+10 bytesDatabase Buffers 2.8857E+10 bytesRedo Buffers 126488576 bytesDatabase mounted.SQL> quit2.2.2 修改Dbname、DbidOracle⽤户在1节点上使⽤nid命令执⾏[oracle@prodb01a /home/oracle]> nid target=/ dbname=prodbDBNEWID: Release 12.1.0.2.0 - Production on Thu Feb 14 11:11:00 2019Copyright (c) 1982, 2014, Oracle and/or its affiliates. All rights reserved.Connected to database PRODB (DBID=3182511783)Connected to server version 12.1.0Control Files in database:Change database ID and database name PRODB to prodb? (Y/[N]) => y ...........................Database name changed to prodbModify parameter file and generate a new password file before restarting.Database ID for database prodb changed to 3926312005.All previous backups and archived redo logs for this database are unusable.Database has been shutdown, open database with RESETLOGS option.Succesfully changed database name and ID.DBNEWID - Completed succesfully.2.2.3 重启数据库[oracle@prodb01a /home/oracle]> sqlplus / as sysdbaSQL*Plus: Release 12.1.0.2.0 Production on Thu Feb 14 11:12:20 2019Copyright (c) 1982, 2014, Oracle. All rights reserved.Connected to an idle instance.SQL> create pfile=’/home/oracle/pfile.ora’ from spfile=’+PRODBDATA2/PRODBST/spfilePRODB.ora’; SQL>exit[oracle@prodb01a /home/oracle]> vi pfile.ora修改db_name='prodb'去掉db_unique_name参数SQL> startup mount pfile=’/home/oracle/pfile.ora’ORACLE instance started.Total System Global Area 4.2950E+10 bytesFixed Size 7727872 bytesVariable Size 1.3959E+10 bytesDatabase Buffers 2.8857E+10 bytesRedo Buffers 126488576 bytesDatabase mounted.SQL> alter database open resetlogs;Database altered.SQL> show parameter db_nameNAME TYPE VALUE------------------------------------ ----------- ------------------------------db_name string prodb2.2.4 修改pfile中的实例名1节点实例名prodb12节点实例名PRODB修改参数⽂件(直接使⽤1节点已修改好的参数⽂件/home/oracle/pfile.ora,因此⽆需执⾏此步骤)[oracle@prodb01a /home/oracle]> sqlplus / as sysdbaSQL*Plus: Release 12.1.0.2.0 Production on Thu Feb 14 11:12:20 2019Copyright (c) 1982, 2014, Oracle. All rights reserved.Connected to an idle instance.SQL> shut immediateSQL>exit[oracle@prodb01a /home/oracle]> vi pfile.ora修改如下选项*.db_name='prodb'*.db_recovery_file_dest=''prodb1.instance_number=1PRODB.instance_number=2prodb1.undo_tablespace='UNDOTBS1'PRODB.undo_tablespace='UNDOTBS2'File created.2.2.5 修改Disk Droup Name将diskgroup name:BKSERVERDATA 修改为FQZDATADGGrid两个节点执⾏:[grid@prodb02a /home/grid]> sqlplus / as sysasmSQL*Plus: Release 12.1.0.2.0 Production on Thu Feb 14 14:47:50 2019Copyright (c) 1982, 2014, Oracle. All rights reserved.Connected to:Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit ProductionWith the Real Application Clusters and Automatic Storage Management optionsSQL> alter diskgroup PRODBDATA2 dismount;Diskgroup altered.Grid⽤户在1节点执⾏:[grid@prodb01a/home/oracle] renamedg phase=both dgname=PRODBDATA2 newdgname=FQZDATADG verbose=true 移除原Disk Group[grid@prodb01a/home/oracle] srvctl remove diskgroup -g PRODBDATA2 -f重建控制⽂件并修改其中数据⽂件、⽇志⽂件路径[oracle@prodb01a/home/oracle] vi pfile.ora修改cluster_database=falseSQL> startup mount pfile=‘/home/oracle/pfile.ora’;SQL> alter database backup controlfile to trace as ‘/home/oracle/con.trl’SQL>shut immediateSQL>startup nomount pfile=’/home/oracle/pfile.ora’;粘贴con.trl⽂件中内容并编辑新的磁盘组名,在sqlplus中运⾏SQL>CREATE CONTROLFILE REUSE DATABASE "prodb" RESETLOGS FORCE LOGGING NOARCHIVELOG MAXLOGFILES 320MAXLOGMEMBERS 5MAXDATAFILES 2000MAXINSTANCES 32MAXLOGHISTORY 2337LOGFILEGROUP 1 '+FQZDATADG/prodb/ONLINELOG/group_1.508.1000913293' SIZE 500M BLOCKSIZE 512, GROUP 2 '+FQZDATADG/prodb/ONLINELOG/group_2.509.1000913293' SIZE 500M BLOCKSIZE 512, GROUP 5 '+FQZDATADG/prodb/ONLINELOG/group_5.512.1000913295' SIZE 500M BLOCKSIZE 512, GROUP 6 '+FQZDATADG/prodb/ONLINELOG/group_6.513.1000913295' SIZE 500M BLOCKSIZE 512, GROUP 7 '+FQZDATADG/prodb/ONLINELOG/group_7.514.1000913295' SIZE 500M BLOCKSIZE 512, GROUP 8 '+FQZDATADG/prodb/ONLINELOG/group_8.515.1000913295' SIZE 500M BLOCKSIZE 512-- STANDBY LOGFILEDATAFILE'+FQZDATADG/PRODBst/datafile/system.350.998332449','+FQZDATADG/PRODBst/datafile/sysaux.358.998332809','+FQZDATADG/PRODBst/datafile/undotbs1.303.998331203','+FQZDATADG/PRODBst/datafile/undotbs2.370.998333315','+FQZDATADG/PRODBst/datafile/users.258.998330009','+FQZDATADG/PRODBst/datafile/tbs_acctchk.477.998335675',CHARACTER SET ZHS16GBK;SQL>alter database open resetlogs;[oracle@prodb01a/home/oracle] vi pfile.ora修改cluster_database=trueSQL>create spfile=’+FQZDATADG/prodb/spfileprodb.ora’ from pfile='/home/oracle/pfile.ora';SQL> shut immediateORA-01507: database not mountedORACLE instance shut down.2.2.6 重新注册数据库信息Oracle⽤户在⼀个节点上执⾏srvctl add database -d prodb -o /oracle/app/oracle/12.1.0 -p ’+FQZDATADG/prodb/spfileprodb.ora’srvctl add instance -d prodb -i prodb1 -n srvctl add instance -d prodb -i PRODB -n 启动数据库[Oracle@prodbdb01a/home/oracle] srvctl start database -d prodb⾄此完成prodb数据库迁移切换⼯作。
RAC原理
2、更新丢失 会话A修改A数据,并未提交
会话B修改了数据A,进行了提交
会话A提交的时候,更新已经丢失了
3、不可重复性(Non Repeatable Read) 1.在事务1中,Mary 读取了自己的工资为1000,操作并没有完成 2.在事务2中,这时财务人员修改了Mary的工资为2000,并提交了事务. 3.在事务1中,Mary 再次读取自己的工资时,工资变为了2000
对于锁来说
1、资源 2、申请到锁 3、锁会排队进行等待,这样避免了阻塞就报错,队列除了中的对象分类 简单对象,例如数据表中的每条记录 Null、Share、Exclusive 复合对象,例如数据表 Sub-Shared:当需要以Share模式访问复合对象中的成员时, 需要对复合对象加这种模式的锁,而对成员加Shared模式的锁。简写模式:SS、 RS、CR Sub-Exclusive:当需要以Exclusive模式访问复合对象的成员 时,需要对复合对象加这种模式的锁,而对成员加Exclusive模式的锁。这种模 式有不同的缩写(SX、RX、CR) Shared-sub-exclusive:当需要对复合对象的成员进行 Exclusive模式访问,同时对复合对象本身进行Shared模式的访问时,需要对复 合对象加这种模式的锁。这种模式有不同的缩写(SSX、SRX、PW)。
在遍历链表的过程中,链表这个数据结构本身也可能被其它进程并发修改,因此 对链表数据结构也需要进行并发控制,这种控制就是使用的Latch。
4、当其他用户并发修改这条记录时,会根据记录头部的ITL索引读取ITL表项内容, 查看这个事务是否已经提交。
5、如果没有提交,则这个用户的TX锁会等待前一个用户的TX锁的释放。
注意:当用户被阻塞时,不是被某条记录阻塞,而是被TX锁阻塞。 一个事务一个TX锁,不管这个事务修改了多少表,每一个表一个TM锁。因此 消耗的资源非常的少。 为什么说是TX阻塞,而不是行阻塞呢? 1、事务1申请了一个TX锁,同时修改了一行数据 2、事务2申请了一个TX锁,也要去修改这行数据 根据记录行的ITL索引找到ITL表项,确认事务还没有提交,也就是说这个事务 要修改这行数据,必须等到ITL中的事务提交或者回滚以后才能继续,因此也就 是前一个事务的TX锁阻塞了后一个事务的TX锁。 前一个事务必须提交(或回滚),ITL槽中的记录才能显示已提交,然后后一个 事务才能够继续执行。
一起大话OracleRAC
一起大话OracleRAC在集群环境中,关键数据通常是共享存放的,比如放在共享磁盘上。
而各个节点的对数据有相同的访问权限,这时就务必有某种机制能够操纵节点对数据的访问。
Oracle RAC 是利用DLM(Distribute Lock Management) 机制来进行多个实例间的并发操纵。
1.2 健忘症(Amnesia)集群环境配置文件不是集中存放的,而是每个节点都有一个本地副本,在集群正常运行时,用户能够在任何节点更换集群的配置,同时这种更换会自动同步到其他节点。
有一种特殊情况:节点A 正常关闭,在节点B上修改配置,关闭结点A,启动结点B。
这种情况下,修改的配置文件是丢失的,就是所谓的健忘症。
1.3 脑裂(Split Brain)在集群中,节点间通过某种机制(心跳)熟悉彼此的健康状态,以确保各节点协调工作。
假设只有"心跳"出现问题,各个节点还在正常运行,这时,每个节点都认为其他的节点宕机了,自己是整个集群环境中的"唯一建在者",自己应该获得整个集群的"操纵权"。
在集群环境中,存储设备都是共享的,这就意味着数据灾难,这种情况就是"脑裂"解决这个问题的通常办法是使用投票算法(Quorum Algorithm). 它的算法机理如下:集群中各个节点需要心跳机制来通报彼此的"健康状态",假设每收到一个节点的"通报"代表一票。
关于三个节点的集群,正常运行时,每个节点都会有3票。
当结点A心跳出现故障但节点A还在运行,这时整个集群就会分裂成2个小的partition。
节点A是一个,剩下的2个是一个。
这是务必剔除一个partition才能保障集群的健康运行。
关于有3个节点的集群,A 心跳出现问题后, B 与 C 是一个partion,有2票,A 只有1票。
按照投票算法, B 与C 构成的集群获得操纵权,A 被剔除。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
alter database drop logfile group 2;
alter database drop logfile group 3;
alter database drop logfile group 4;
4:添加1,2,3,4日志组
ALTER DATABASE ADD LOGFILE THREAD 1 GROUP 6 ('+DATA/pracdb1/onlinelog/redo06_1.log', '+FLASH/pracdb1/onlinelog/flash06_1.ora') SIZE 500M;
ALTER DATABASE ADD LOGFILE THREAD 2 GROUP 7 ('+DATA/pracdb1/onlinelog/redo07_1.log', '+FLASH/pracdb1/onlinelog/flash07_1.ora') SIZE 500M;
Current log# 2 seq# 8740 mem# 1: +FLASH/pracdb1/onlinelog/group_2.258.648662195
并行相关参数:
parallel_adaptive_multi_user
parallel_max_servers
parallel_min_percent
解决问题为
数据库中alert.log中的归档日志不完全,降低归档次数。
Wed Oct 08 16:07:22 2008
Thread 1 cannot allocate new log, sequence 8740
Checkpoint not complete
Current log# 1 seq# 8739 mem# 0: +DATA/pracdb1/onlinelog/group_1.257.648662189
gc [current/cr] grant 2-way:请求当前块或 cr 块并收到授权消息。进行授权时没有任何明显的延迟。如果块没有位于其本地高速ቤተ መጻሕፍቲ ባይዱ存中,则在对请求的实例进行磁盘读取前执行当前块或 cr 块授权。
gc current grant busy:请求当前块并收到授权消息。系统正忙提示表明:该请求因其前面存在其他请求或无法立即处理而受到阻止。
索引中单向递增的有序键值(向右侧增长的树)
频繁的叶块拆分
较低的树深度:所有叶块访问都通过根块
如果同时访问树的特定叶块或分支,则该叶或分支块拆分可能会成为一个重要的串行化点。
本幻灯片中的表总结了与拆分索引块有关的最常见症状,并列出了索引块拆分占主导地位时最常见的等待事件和统计数据。作为一个减少全局热索引块和叶块拆分对性能影响的一般建议,主要目标应该是在索引树中实现一个较为一致且较对称的并行分布。这可通过以下操作实现:
ALTER DATABASE ADD LOGFILE THREAD 2 GROUP 8 ('+DATA/pracdb1/onlinelog/redo08_1.log', '+FLASH/pracdb1/onlinelog/flash08_1.ora') SIZE 500M;
2:切换日志组,确保下列1,2,3,4日志组不是active和current状态
gc buffer busy:如果两次访问缓冲区之间的时间小于在内存中定位缓冲区的时间,则包含块的缓冲区将提示系统正忙,因此相关用户必须等待解除定位该缓冲区。
索引块争用:注意事项
在以数据加载或批处理为主要业务功能的应用程序系统中,可能存在因向索引插入大量数据而影响到了响应时间的性能问题。根据访问频率和并行插入数据的进程数量,索引可变成热点,以下因素可能会加重争用问题:
ALTER DATABASE ADD LOGFILE THREAD 2 GROUP 3 ('+DATA/pracdb1/onlinelog/redo3_1.log', '+FLASH/pracdb1/onlinelog/flash3_1.ora') SIZE 500M;
ALTER DATABASE ADD LOGFILE THREAD 2 GROUP 4 ('+DATA/pracdb1/onlinelog/redo04_1.log', '+FLASH/pracdb1/onlinelog/flash04_1.ora') SIZE 500M;
全局索引散列分区
增加序列高速缓存(如果键值是从序列中导出的)
使用自然关键字而不是代理关键字
使用反向关键字索引
alter system switch logfile;
alter system switch logfile;
alter system switch logfile;
alter system switch logfile;
3:在日志组不是active和current状态时删除掉日志组,取决于磁盘的速度,速度慢的可能切换后很长时间状态才改变,野葛一定要确认好的。
作业1:
如何resize rac环境下,redo log的大小?
1:在rac数据库上添加四组redolog日志组
ALTER DATABASE ADD LOGFILE THREAD 1 GROUP 5 ('+DATA/pracdb1/onlinelog/redo05_1.log', '+FLASH/pracdb1/onlinelog/flash05_1.ora') SIZE 500M;
gc [current/cr] [block/grant] congested:请求当前块或 cr 块并收到块或授权消息。堵塞提示表明:该请求在内部队列中所花的时间超过了 1 毫秒。
gc [current/cr] [failure/retry]:请求某个块,但收到失败状态或发生了某个其他例外事件。
Current log# 1 seq# 8739 mem# 1: +FLASH/pracdb1/onlinelog/group_1.257.648662191
Thread 1 advanced to log sequence 8740
Current log# 2 seq# 8740 mem# 0: +DATA/pracdb1/onlinelog/group_2.258.648662193
gc [current/cr] [2/3]-way:请求当前块或 cr 块,然后在经过两三个网络中继段后收到这些块。当块不忙或未堵塞时,会立即处理请求。
gc [current/cr] block busy:请求并收到当前块或 cr 块,但 LMS 不会立即发送该块,因为发现了延迟发送的某个特殊条件。
ALTER DATABASE ADD LOGFILE THREAD 1 GROUP 1 ('+DATA/pracdb1/onlinelog/redo01_1.log', '+FLASH/pracdb1/onlinelog/flash01_1.ora') SIZE 500M;
ALTER DATABASE ADD LOGFILE THREAD 1 GROUP 2 ('+DATA/pracdb1/onlinelog/redo02_1.log', '+FLASH/pracdb1/onlinelog/flash02_1.ora') SIZE 500M;
parallel_min_servers
cache fusion
全局高速缓存等待事件:概览
本幻灯片简要描述了 Oracle Database 11g 的主要全局高速缓存等待事件:
gc current/cr request:这些等待事件仅在 cr 或当前缓冲区的 gc 请求正在进行时才相关。在该请求完成之前,这些事件充当占位符。
5:2:切换日志组
alter system switch logfile;
alter system switch logfile;
alter system switch logfile;
alter system switch logfile;
操作完成后,生产数据库每个实例有4个redolog日志组,每个日志组大小为500m(原来为默认值50m)