oracle+srvctl+crsctl,【分享√】从例子来分析,srvctl与crsctl有什么区别?
本帖最后由 gbnj2004 于 2018-5-23 10:23 编辑
本人的学习历程是,单实例+lvm-->单实例+ASM-->rac,我觉得这样的学习能由浅入深了解oracle。
当引入ASM后,除了安装过程多了一步GI安装外,在管理模式上也出现了区别,尤其是引入了2个新命令srvctl与crsctl【crs_stat将被淘汰就不说了】:
srvctl:是从操作系统角度管理数据库节点。它将数据库节点当做一个整体上来管理。
crsctl:是从资源角度管理数据库节点。它将一切程序都当做资源来对待。
比如,这里有个单实例+ASM的环境,输入crsctl status res -t后查看各个资源的情况如下:
--------------------------------------------------------------------------------
NAME TARGET STATE SERVER STATE_DETAILS
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.CRSDG.dg
ONLINE ONLINE xxx
ora.DATADG.dg
ONLINE ONLINE xxx
ora.LISTENER.lsnr
ONLINE ONLINE xxx
ora.LISTENER_BJWMS.lsnr
ONLINE ONLINE xxx
ora.LISTENER_CGZX.lsnr
ONLINE ONLINE xxx
ora.LISTENER_DJWMS.lsnr
ONLINE ONLINE xxx
ora.REDODG.dg
ONLINE ONLINE xxx
ora.TEMPDG.dg
ONLINE ONLINE xxx
ora.asm
ONLINE ONLINE xxx Started
ora.ons
OFFLINE OFFLINE xxx
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.cssd
1 ONLINE ONLINE xxx
ora.diskmon
1 OFFLINE OFFLINE
ora.evmd
1 ONLINE ONLINE xxx
ora.xxx.db
1 ONLINE ONLINE xxx Open
前面说了crsctl是从资源的角度来管理,所以这里只能用crsctl [start|status|stop] res(也可以写全称resource) 资源名(比如上面的ora.REDODG.dg) 来启停资源。可资源这么多,如果要关闭这个节点的操作系统如何快捷的关闭所有资源呢?oracle提供了 crsctl stop res -all或者crsctl stop has。这两个命令都会关闭所有资源,所不同的是前者不会关闭has守护进程,后者会把has进程也关掉。对于单节点来说没啥区别,但是如果是rac环境,has的关闭会导致类似crsctl stop cluster -all这样从集群角度管理所有节点资源的命令失败报错,这种命令依赖每个节点上的has进程来保各个节点间的通讯。
那么既然crsctl stop res ora.xxx.db就可以把数据库关闭了,为什么还要引入srvctl呢?因为数据库除了open还有nomount与mount状态,crsctl只是管理资源,可以启停数据库资源但无法nomount与mount它。srvctl [stop|start|status] database -d databasename [-o immediate|-o open|-o mount]。
可能又有人问了,数据库的状态我也可以通过oracle安装用户下的sqlplus 进入启停数据库,也可以做到nomount与mount状态,为什么非要用srvctl呢?据我了解到的情况是,因为oracle用户下的sqlplus与GI安装用户grid下的crsctl与srvctl所使用的spfile文件很可能不一样。grid用户通过crsctl和srvctl管理数据库,所使用的spfile是存放在ASM上的,而oracle用户下的sqlplus管理数据库所用的spfile是存放在本机节点的$ORACLE_HOME/dbs下,单节点+ASM可能没什么问题,rac下就会有意外----sqlplus下管理可能导致多个节点间的spfile不一致,各自使用本节点上的spfile。这就是为什么总有文章强调rac要用crsctl与srvctl来管理数据库,所以从使用ASM时我们就应该规范自己这么做。
监听一样也有这方面的原因,当安装GI软件后,通过GI软件内的netca创建的监听与oracle软件内netca创建的监听有所区别,前者创建的listener.ora内,最后一行会有类似ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER=ON # line added by Agent这样的字样,这是GI软件创建的监听启用了特性endpoints,而后者是没这个特性的,通俗来说启用这个特性的话可能会将listener.ora内除了IPC以外其他的内容存放在同目录下的endpoints_监听名.ora这样的文件内分别存放,这是为rac的scan ip等做准备的。若是监听信息分开存放,那么oracle用户下启动监听就会报错找不到TCP信息等。本人的单节点+ASM环境虽然启用了这个特性但并没有endpoints_监听名.ora这样的文件,所以信息还是都存放在listener.ora内,不知道rac下是需要手动创建还是GI自动生成endpoints文件。还有,oracle软件创建的监听listener.ora是在$ORACLE_BASE的network/admin下,需要手动注册资源到CRS;GI软件创建的监听listener.ora是在$GRID_BASE的network/admin下,创建完毕会自动注册资源到CRS。
最后crsctl还有个很有用的特点,就是它可以注册用户自己的外部资源来管理。比如你做了个say hello的打印小程序,想每次开机启动后不停打印至日志,如果被kill掉就重启整个节点,可以把这个小程序注册到crs内来管理实现
。比如数据库节点上装了apache,也可以注册到crs来管理。还有,crs内asm与db之间有明显的先后关系,所以猜测crs注册管理的资源是可以指定先后顺序,等前一个资源启动成功后再启动下一个资源。
oracle+srvctl+crsctl,【分享√】从例子来分析,srvctl与crsctl有什么区别?相关推荐
- 本周三、四两场直播丨达梦 vs. Oracle,从快速入门到性能分析优化
1. 触类旁通-DM8快速入门-5月12日20:00 在中国市场,随着国产化的兴起,我们 DBA 必须把关注点转移到国产数据库上来.我们可以依托过去熟悉的技能域,进行兼容性扩展,掌握开源和国产技术,例 ...
- 集群起不来oracle,Oracle11g rac 集群无法启动分析及处理
n this Document Applies to: Oracle Database - Enterprise Edition - Version 11.2.0.1 and later Inform ...
- Oracle Gateway使用分享
Oracle Gateway使用分享 1.背景说明 公司一直会碰到异构数据库的连接问题,比如Oracle需要dblink as400,dblink DB2,如果此些数据库版本比较老的话,在linux ...
- ORACLE建视图 授权的 例子
ORACLE建视图 授权的 例子: A用戶 下有table TabA A1 用戶建立view (V_TabA) , view中是引用A 用戶下的TabA . A2 用戶要 select A1 用 ...
- 浅析epoll – epoll例子以及分析 - C++爱好者博客
浅析epoll – epoll例子以及分析 - C++爱好者博客 浅析epoll – epoll例子以及分析
- 【oracle】补充 cursor 基本例子
[oracle]补充 cursor 基本例子 1118-02补充 cursor 基本例子 查看 共享的命令: cmd fsmgmt.msc /* cursor 1.参数列表,is <select ...
- 浅析epoll – epoll例子以及分析
上篇我们讲到epoll的函数和性能.这一篇用用这些个函数,给出一个最简单的epoll的例子. // // a simple echo server using epoll in linux // // ...
- oracle订阅推送,ERP一部推送 | Oracle优化技术分享
原标题:ERP一部推送 | Oracle优化技术分享 看到图片中酷酷的小哥哥们了吗?他们是来自中ERP一部的许斌哲,有颜有才的他今天为我们带来的技术分享是关于 Oracle优化方面的,欢迎感兴趣的小伙 ...
- springboot-Initializer例子及分析
[README] 1,本文主要编写了 初始化器例子并分析了其调用路径: 2,初始化器的执行顺序 先于 后置处理器: 后置处理器,refer2 springboot:BeanPostProcessor ...
- oracle修改filesystem,oracle数据库 boost::filesystem使用例子
oracle数据库 boost::filesystem 使用例子 #include #include #include #include using namespace boost::filesyst ...
最新文章
- GopherChina 2018 区块链+容器+Go底层实现
- VS2010中获取并调用CRM2011中的工作流
- 第三章--堆栈段的工作方式
- windows+sublime text3+MINGW编译运行c
- Mysql在字符串类型的日期上加上10分钟并和如今的日期做比較
- python的for语句有几种写法_Python if 和 for 的多种写法
- 计算机组装方案及分析,《计算机组装与维护》课程整体教学方案
- I/O流(三)—对象的序列化和反序列化
- Scala入门到精通——第十八节 隐式转换与隐式参数(一)
- java proguard 使用_一步步教你使用Proguard混淆Java源代码
- 表单提交数据大小的限制
- SQL基础实例(学生课程系统)
- SplObserver观察者模式
- 使用C#向ACCESS中插入数据
- android ViewFlipper的使用
- Python3.7+RF3.1实现接口自动化
- android去掉锁屏界面,android怎么去掉锁屏界面
- OriginPro 2021 设置成中文(软件自带)
- 【转载】CPU的内部架构和工作原理
- 记一次云主机如何挂载对象存储