Oracle Restart是数据库组件监控方法向单实例数据库中的延展,之前srvctl命令可以用来管理RAC数据库中的各个组件,安装了Oracle Restart之后,对于单实例数据库组件(包括数据库实例,监听,ASM实例,ASM磁盘组,自建Service等)也可以使用srvctl命令来管理,同时Oracle会在这些组件发生意外关闭的时候自动重新启动。对于在Linux单机上安装的Oracle Instance,以前需要配置dbstart或者dbstop脚本来实现在操作系统起停时自动起停数据库实例的操作,现在通过Oracle Restart则无需这两个脚本了。
详细文档请参看 About Oracle Restart。
安装其实很简单,实际上没有单独安装Oracle Restart的过程,只需要安装Oracle Grid Infrastructure就可以,在安装的时候选择“仅安装网格基础结构软件”,我们的测试环境没有使用ASM,因此选择只安装软件可以跳过配置ASM的步骤。
如何在Windows单机上测试ASM,感兴趣的朋友可以参看 – How to use Files in place of Real Disk Devices for ASM。
我们是在创建完数据库之后再安装Grid Infrastructure的,因此还需要手工将数据库实例和监听加入Oracle Restart配置中,根据文档如果是在装完Grid Infrastructure之后再用netca创建监听,dbca创建数据库的话,将会自动加入Oracle Restart中,我个人没有测试。
添加数据库实例:
srvctl add database -d orcl -o D:\oracle\product\11.2.0\dbhome_1
检查配置情况:
D:\Temp>srvctl config database -d orcl 数据库唯一名称: orcl 数据库名: Oracle 主目录: D:\oracle\product\11.2.0\dbhome_1 Oracle 用户: system Spfile: 域: 启动选项: open 停止选项: immediate 数据库角色: PRIMARY 管理策略: AUTOMATIC 磁盘组: 服务:
检查数据库实例状态:
D:\Temp>srvctl status database -d orcl 数据库正在运行。
注意:如果在添加数据库实例之前数据库实例已经启动了,那么需要重新启动一次数据库,Oracle Restart才能正确监视到数据库实例状态。
添加监听:
srvctl add listener -o D:\oracle\product\11.2.0\dbhome_1
如果在添加监听的时候,监听已经启动,那么会遇到PRCN-2065错误,停止监听以后再次添加即可。
D:\Temp>srvctl add listener -o D:\oracle\product\11.2.0\dbhome_1 PRCN-2061 : 无法添加监听程序 ora.LISTENER.lsnr PRCN-2065 : 端口 1521 在指定的节点上不可用 PRCN-2035 : 端口 1521 在节点或虚拟主机上不可用: Kamus-PC
配置完毕以后,就可以通过srvctl命令起停数据库实例和监听了。
srvctl start|stop database -d <db_unique_name> srvctl start|stop listener [-l <lsnr_name>]
可以通过crs_stat命令查看Oracle Restart管理的各个资源情况,这以前是我们查看Oracle Clusterware的方式。
D:\Temp>crs_stat -t Name Type Target State Host ------------------------------------------------------------ ora....ER.lsnr ora....er.type ONLINE ONLINE kamus-pc ora.cssd ora.cssd.type ONLINE ONLINE kamus-pc ora.orcl.db ora....se.type ONLINE ONLINE kamus-pc
测试Oracle Restart的功能,我们可以在后台进程中直接杀死oracle.exe,可以观察到数据库实例立刻会重新启动。
注意:所有在SQL*PLUS中发出的关闭数据库命令均不会导致Oracle Restart重启实例,包括shutdown abort。
如果暂时不想用Oracle Restart管理某个资源,可以通过srvctl disable命令暂时禁用,需要的时候再enable即可。
srvctl disable database -d orcl
如果机器名称发生了改变,需要重新配置Oracle Restart,请参考Metalink Note [ID 986740.1]。
这个功能很实用。学习。
要是能学会Oracle就美了
[...] 这里你还可以参考kamus大师的文章。 [...]
restart只在本机上restart吗?
oracle restart 能不能提供想hacmp等ha软件提供的功能,一个节点失败,会把数据库启动到另一台机器上?
@leeecho
Oracle Restart只为Standalone Server服务,如果说想实现HACMP的类似功能,那么需要在CRS中配置相应的resource,实际上也就是通过Orcle Clusterware来实现。
关于用Oracle Clusterware实现single instance的HA,可以参看小荷的文章:http://www.oracleblog.cn/working-case/protecting-single-instance-using-oracle-crs/
restart只在本机上restart吗?
oracle restart 能不能提供想hacmp等ha软件提供的功能,一个节点失败,会把数据库启动到另一台机器上?