作者归档:Lunar

单实例数据库转换为RAC数据库–手工转换

测试目的: 单实例数据库转换为RAC数据库 测试环境:Oracle 11.2.0.4 测试方法:手工转换 . 首先,安装一套RAC环境,并把单实例数据库通过通过rman还原到这个环境(通常如果是生产环境,我们会搭建从RAC到单实例数据库的ADG,以减少停机时间)。 然后生成一个源库(单实例数据库)spfile: 注意检查tnsnames.ora中用于local_listener参数的两个配置条目是否正确: 修改刚才备份的pfile文件(/home/oracle/lunar/spfile.lunardb.tmp),添加RAC相关配置: 使用这个pfile启动数据库: 添加thread2: 添加实例2的undo表空间: 启用实例2(thread2): [oracle@dm01db01 dbs]$ orapwd file=orapwlunardb1 entries=10 password=oracle [oracle@dm01db01 dbs]$ pwd /u01/app/oracle/product/11.2.0.4/dbhome_1/dbs [oracle@dm01db01 dbs]$ scp orapwlunardb1 dm01db02:/u01/app/oracle/product/11.2.0.4/dbhome_1/dbs/orapwlunardb2 orapwlunardb1 100% 2560 2.5KB/s 00:00 [oracle@dm01db01 dbs]$ [/shell] 创建spfile: 使用grid用户查看: 修改initlunardb1.ora … 继续阅读

发表在 Database, RAC | 标签为 | 留下评论

使用ass.awk脚本分析systemstate生成的trace文件(LTOM431版本自带了ass109.awk脚本)

在以前,很多客户和朋友曾经各种寻找ass109.awk脚本,用意分析systemstate生成的trace文件。 因为最初ass109.awk文件是Oracle内部一个老外大牛个人写脚本,还不算是Oracle公司产品化的东西,以为不能提供支持。 在LTOM431版本中,已经自带了ass109.awk脚本: ass.awk的使用方法: 从上面的分析可以看出: 表示当前数据库的blocker是数据库的16号进程(systemstate中的pid 16),他持有了对象4f4e57138的Row Cache锁,而pid 16正在等待:Wait for shrink lock。 而这里清晰的指出,29号进程最后的等待是在4f4e57138对象,目前处于挂起状态,无法执行INSERT操作,阻塞他的正式pid 16 不过LTOM目前已经不再开发了,他的很多功能集成到ASH里面了:

发表在 troubleshoooting | 标签为 , , | 留下评论

11.2和12c RAC的ohasd守护进程在不同Linux版本的演变

前面我们已经讲解过11.2 RAC的启动过程,可以注意到,RAC的根守护进程是/etc/init.d/init.ohasd,那么不同版本的Linux中/etc/init.d/init.ohasd是如何启动的呢? 注意:12.1的非Flex Cluster启动过程跟11.2 RAC一致。但是从12.2beta版 RAC的测试结果来看,从12.2开始OUI安装很可能只有Flex Cluster了,没有了11.2的那种普通RAC了。 . Linux4和Linux5中,在完成核内引导(内核被载入内存并运行,初始化所有的设备驱动程序和数据结构等)之后,就通过启动一个用户级程序/sbin/init的方式来启动其他用户级的进程或服务。 所以,init始终是第一个进程,其PID始终为1(ps -aux | less),它是系统所有进程的父进程. 我们看一下这三个文件哪里不同: 可以看出,/etc/inittab.no_crs的内容就是在没安装GI以前的/etc/inittab备份文件,而/etc/inittab.crs的内容就是安装GI以后/etc/inittab 备份文件 也就是说,在Linux 5中,安装完RAC(10.2或者11.2)后,该脚本就会增加上面一行启动ohasd守护进程的脚本,如果要在系统启动时启动crs,那么就需要让/etc/inittab中包含下面的一行启动命令: h1:35:respawn:/etc/init.d/init.ohasd run >/dev/null 2>&1 /dev/null 2>&1

发表在 Database, Linux, RAC | 标签为 , , | 留下评论

etc目录下的init.ohasd和ohasd文件丢失后如何启动GI

上一遍我们已经知道11.2和12c RAC中的/etc/init.d/init.ohasd是启动RAC所有其他进程的守护进程。 那么如果有人误删除了这个文件或者错误修改了,怎么办呢? 这个解决不难,因为在Standalone环境中,/etc/init.d/init.ohasd来自于$GRID_HOME/crs/init/init.ohasd,而/etc/init.d/ohasd来自于$GRID_HOME/crs/init/ohasd。 我们对比一下$GRID_HOME/crs/init/和/etc/init.d/下的ohasd和init.ohasd,看看文件内容是否一致: [/shell] 可以看到,$GRID_HOME/crs/init/和/etc/init.d/目录下的文件内容是一致的,只是权限不同。/etc/init.d/目录下的文件权限是750,$GRID_HOME/crs/init下的权限是644。 好了,解决方法有了,如果/etc/init.d/init.ohasd或者/etc/init.d/ohasd丢失了,手工创建/etc/init.d/init.ohasd 就可以了: 如果再细心一点,我们会发现$GRID_HOME/crs/init目录下除了这两个文件外,还有一个名称为ohasd.sles的文件。 熟悉SLES Linux的朋友可能猜到了,是的,这个是在SLES Linux上使用的ohasd版本。 检查当前版本是否为SLES: 现在,我们删除/etc/init.d/init.ohasd文件来模拟init.ohasd文件丢失或者损坏: 然后我们使用$GRID_HOME/crs/init/下面的文件复制过来,手工启动试试看: 下面的显示删除/etc/init.d/init.ohasd后reboot系统的结果(也可以使用kill进程的方式,不重启主机): 可以看到,当前没有任何RAC的进程被启动。 我们尝试恢复这个丢失的ohasd守护进程配置文件: 然后reboot系统后,该进程已经启动了:

发表在 Database, Linux, RAC | 标签为 , , | 留下评论

11.2中,如何手工kill所有的CRS进程而不导致主机重启?

我们都知道,在RAC环境中,如果kill ocssd.bin进程,会引起主机重启。 但是有时候系统已经异常了了,且CRS不能正常关闭,而主机可能是几年没重启的老系统,没人敢重启,现在怎么办? 我们只能尝试手工kill进程的方式,然后手工修复CRS(注意,在10.2 RAC中,只有3个d.bin进程)。 测试环境:操作系统是OEL 6.6 这套RAC的CRS版本是11.2.0.4: 注意,由于12.1普通RAC(非Flex Cluster)的情况根本文一样,处理思路和过程也一样。 查看当前CRS的状态: 查看当前所有的CRS进程: 这么多进程,他们的关系参见:11.2 RAC 的启动过程 好吧,我们开始模拟kill进程。首先kill 掉/u01/app/11.2.0.4/grid/bin/ohasd.bin(会自动重启,参见11.2 RAC 的启动过程) 然后,我们kill cssdmonitor: 这里没有这个集成,表示cssdmonitor进程被重启过了: (参见11.2 RAC 的启动过程) 上面进程启动时间在20:04~20:07之间的,都是被/u01/app/11.2.0.4/grid/bin/ohasd.bin进程重启后,自动后台重启的。 现在,我们kill mdnsd gpnpd gipcd osysmond。 这4个进程中,前面3个是CRS启动除了ohasd以外,最早启动的几个进程。 如果kill这些进程,ohasd都会重启的: 这里我们看到,刚才kill 的4 进程都没起来,怎么回事? 别急,还没到时间,ohasd需要check后才启动,O(∩_∩)O哈哈~ 然后,我们kill 监听: 好吧,看看,刚才kill的进程都被重启了,11.2的RAC真强悍啊。 … 继续阅读

发表在 RAC | 标签为 , , , | 留下评论

11.2 RAC 的启动过程

从11.2 GI(Grid Infrastructure)开始,RAC的结构跟10.2有翻天覆地的变化,在MOS的经典文档“11gR2 Clusterware and Grid Home – What You Need to Know (Doc ID 1053147.1)”中有详细的解释。 其中有一副经典大图可以一目了然的告诉我们这些d.bin进程之间的依赖关系(也就是启动和关闭,谁启动重启谁等等): 从CRS的启动过程,我们也可以清晰的看到进程的启动顺序。 下面是一个11.2.0.3环境的CRS启动过程: 最先启动的是/u01/app/11.2.0.3/grid/bin/ohasd.bin ,他后面呆着reboot,表示它被kill后会被自动reboot。 /etc/init.d/init.ohasd进程就是重启/u01/app/11.2.0.3/grid/bin/ohasd.bin进程的守护进程。 他们的内容都来源于$GRID_HOME/crs/init/init.ohasd,后续blog会模拟丢失这个文件到处理,这里不赘述了。 会自动启动这个进程,并在/var/log/message中记录下这个启动过程。 /u01/app/11.2.0.3/grid/bin/ohasd.bin被kill 后,,系统会有几分钟的重启服务的时间,/var/log/message中记录下这个启动过程: 这个重启的过程在空闲系统大概需要不到2分钟,$GRID_HOME/`hostname -s`/alert`hostname -s`.log中会ohasd.bin被kill和重启后执行检查(check)和恢复(recovery)各种资源的日志如下: 好了,继续回到我们刚才的启动过程的讨论。接下来,我们看到orarootagent.bin cssdagent cssdmonitor不见了,增加 mdnsd.bin 然后是增加了 ocssd.bin gpnpd.bin orarootagent.bin gipcd.bin osysmond.bin cssdmonitor … 继续阅读

发表在 RAC | 标签为 , | 留下评论

RAC环境下删除了/var/tmp/.oracle/的临时文件,有什么后果,以及如何处理

测试目的: 模拟RAC环境下有人误操作,删除了/var/tmp/.oracle/*下的oracle临时文件(删除Network Socket File) 测试过程:观察会有什么后果,以及如何处理。 . 测试环境:OEL 6.6 ,Oracle 11.2.0.4 Standalone(单实例使用ASM的环境) 如果是RAC,测试结论应该大体一致(机制类似)。 在Linux平台上,RAC或者HAS(单实例使用ASM的环境,比如standalone或者我们说的Oracle Restart)使用的Network Socket File在/var/tmp/.oracle/*文件: (在其他平台(比如, AIX HPUX等等)Network Socket File可能在:ls -lrt /tmp/.oracle/* /tmp/.oracle 或者 /usr/tmp/.oracle) 使用crsctl stop has -f停止has,然后就可以直接删除/var/tmp/.oracle/* 下面的Network Socket File: 如果/var/tmp/.oracle目录不存在,可以手工重建: 如果在has正常运行的状态下删除上述oracle临时文件,那么数据库可以使用,但是不能正常关闭: 可以看到,这时,crs通信异常了。 我们看下数据库: 这里看到数据库可以正常使用,但是不能关闭,关闭是报错:不能跟CSS进程通信。 数据库的alert显示为: 检查一下oarcle的进程: … 继续阅读

发表在 ASM, Oracle 11.1 & Oracle11.2, RAC | 标签为 , | 留下评论

Linux7(CentOS,RHEL,OEL)和Oracle RAC环境系列-11-配置VNC和常见问题处理

在Linux7上配置VNC和以往方法不同(也是由于Linux7上的服务管理方式的变化造成的)。 安装vnc的时候,需要配置yum源,我一般选择配置本地yum源,本地yum源有两种主要方式: 1,使用vbox的共享目录 2,使用虚拟出来的光驱 配制方法跟Linux7以前的版本(Linux6和Linux5)一样,这里不赘述。 . 查看本地yum源里面可以安装的vnc包: 我一般选择tigervnc。 Linux7之前的系统,如果安装vnc一般都需要使用vncserver命令来设置口令,然后配置/etc/sysconfig/vncservers文件。 在Linux7中,仍然还存在这个文件,不过其内容只有一行: 请注意,上面文件中的重要提示,这段提示清晰的告诉我们该如何配置vnc: 好吧,按照提示,我们首先配置root用户的vnc服务启动配置文件: 然后,按照上面文件中(/lib/systemd/system/vncserver@.service)的配置方式 修改前: 修改后: 然后,重新加载systemd的配置: [root@lunar1 ~]# systemctl daemon-reload [root@lunar1 ~]# 然后,我们设置为自动启动: 启动vnc服务: 在Linux7中,VNC使用590x开始的端口号: 只配置IPv4的情况: 配置了IPv4和IPv6的情况: 设置vncserver的密码:vncpasswd root 最终root用户的vnc的配置文件: 然后使用同样的方法配置grid用户和oracle用户即可。 . 有时候vnc启动会报错,例如: 处理思路: 1,查看日志(/var/log/messages)或者使用Linux7中新引入的journalctl查看(参见前面的blog) 2,通常的问题有几类: (1)配置文件有问题。 (2)/tmp/下的临时文件因为某种原因,系统没有自动清理 (3)ghome造成的一些问题,比如修改中文语言或者英文语言后,容易出现问题 . … 继续阅读

发表在 Installation and Deinstall, Linux | 标签为 , , , , | 留下评论

Linux7(CentOS,RHEL,OEL)和Oracle RAC环境系列-10-ABRT-系统启动后自动检查和报告错误

启动vm时,Linux7会自动检查和报告错误: Abrt从Linux 6中引入的一个自动缺陷报告工具。 我们知道,Linux6中开始对新硬件热插拔特性的支持进一步增强(估计也是移动互联网和新硬件层出不穷催生的需求)。 比如,Linux6包括高级数据完整性特性(DIF/DIX),可以通过AER的PCIe设备的增强错误检查,因此就引入了ABRT(自动缺陷报告工具)。 ABRT全程是 Automatic Bug Reporting Tool,它提供了确定和报告系统异常情况,包括内核故障和用户空间应用崩溃等。 . abrt-cli就是这个工具的命令行接口,也可以使用图形界面的ABRT工具例如:gnome-abrt &。 详细信息,请参见Redhat的官方手册: https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/sect-abrt-handling-problems.html . abrt-cli命令的help内容: 现在,我们根据提示查看一下错误列表: 已禁用自动报告功能。请考虑启用该功能,方法是 作为有 root 特权的用户使用命令 ‘abrt-auto-reporting enabled’ [root@lunar1 ~]# 可见,主要是由于gnome引起的,因此推荐Linux使用图形界面的时候还是KDE吧,这个感觉还是比较稳定和靠谱的。 Linux7(CentOS,RHEL,OEL)和Oracle RAC环境系列–1-简介 Linux7(CentOS,RHEL,OEL)和Oracle RAC环境系列-2-修改主机名和hostnamectl工具的使用 Linux7(CentOS,RHEL,OEL)和Oracle RAC环境系列–3-systemd(d.bin和ohasd守护进程) Linux7(CentOS,RHEL,OEL)和Oracle RAC环境系列–4-target(图形界面和字符界面) Linux7(CentOS,RHEL,OEL)和Oracle RAC环境系列–5-防火墙 Linux7(CentOS,RHEL,OEL)和Oracle RAC环境系列–6-开机自动启动或者禁用服务 Linux7(CentOS,RHEL,OEL)和Oracle … 继续阅读

发表在 Installation and Deinstall, Linux | 标签为 , , , , , | 留下评论

Linux7(CentOS,RHEL,OEL)和Oracle RAC环境系列-9-Linux 7.2上的virbr0设备

当我们安装了Linux 7.2(CentOS 7.2和 OEL 7.2都有下面的现象),缺省会安装一个虚拟网卡virbr0。 查看当前的IP信息: 这里我们看到Linux7开始使用enp0s3作为第一个缺省的网络接口名,类似于以前的eth0,当然,你后面可以修改这个缺省的网络接口名。 enp0s8是第二个网络接口名,而enp0s9就是我们新添加的第三个网络接口名。 enp0s3和enp0s8我们在安装时已经配置了网络连接和IP地址,设置了启动自动连接,因此没有问题。 enp0s9需要我们手工配置。 . 可以看出来,Linux7中缺省还有一个virbr0网络接口。 . 从网上摘录了virbr0的部分相关解释: virbr0 是一种虚拟网络接口,这是由于安装和启用了 libvirt 服务后生成的 libvirt 在服务器(host)上生成一个 virtual network switch (virbr0),host 上所有的虚拟机(guests)通过这个 virbr0 连起来。 默认情况下 virbr0 使用的是 NAT 模式(采用 IP Masquerade),所以这种情况下 guest 通过 host 才能访问外部。 . 可以看出来,virbr0是一个虚拟网卡,并且由于在Linux7.2中(CentOS … 继续阅读

发表在 Installation and Deinstall, Linux, ORACLE 12C, RAC | 标签为 , , , , , , | Comments Off on Linux7(CentOS,RHEL,OEL)和Oracle RAC环境系列-9-Linux 7.2上的virbr0设备