本帖最后由 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有什么区别?相关推荐

  1. 本周三、四两场直播丨达梦 vs. Oracle,从快速入门到性能分析优化

    1. 触类旁通-DM8快速入门-5月12日20:00 在中国市场,随着国产化的兴起,我们 DBA 必须把关注点转移到国产数据库上来.我们可以依托过去熟悉的技能域,进行兼容性扩展,掌握开源和国产技术,例 ...

  2. 集群起不来oracle,Oracle11g rac 集群无法启动分析及处理

    n this Document Applies to: Oracle Database - Enterprise Edition - Version 11.2.0.1 and later Inform ...

  3. Oracle Gateway使用分享

    Oracle Gateway使用分享 1.背景说明 公司一直会碰到异构数据库的连接问题,比如Oracle需要dblink as400,dblink DB2,如果此些数据库版本比较老的话,在linux ...

  4. ORACLE建视图 授权的 例子

    ORACLE建视图 授权的 例子: A用戶 下有table   TabA A1 用戶建立view (V_TabA) , view中是引用A 用戶下的TabA . A2 用戶要 select  A1 用 ...

  5. 浅析epoll – epoll例子以及分析 - C++爱好者博客

    浅析epoll – epoll例子以及分析 - C++爱好者博客 浅析epoll – epoll例子以及分析

  6. 【oracle】补充 cursor 基本例子

    [oracle]补充 cursor 基本例子 1118-02补充 cursor 基本例子 查看 共享的命令: cmd fsmgmt.msc /* cursor 1.参数列表,is <select ...

  7. 浅析epoll – epoll例子以及分析

    上篇我们讲到epoll的函数和性能.这一篇用用这些个函数,给出一个最简单的epoll的例子. // // a simple echo server using epoll in linux // // ...

  8. oracle订阅推送,ERP一部推送 | Oracle优化技术分享

    原标题:ERP一部推送 | Oracle优化技术分享 看到图片中酷酷的小哥哥们了吗?他们是来自中ERP一部的许斌哲,有颜有才的他今天为我们带来的技术分享是关于 Oracle优化方面的,欢迎感兴趣的小伙 ...

  9. springboot-Initializer例子及分析

    [README] 1,本文主要编写了 初始化器例子并分析了其调用路径: 2,初始化器的执行顺序 先于 后置处理器: 后置处理器,refer2  springboot:BeanPostProcessor ...

  10. oracle修改filesystem,oracle数据库 boost::filesystem使用例子

    oracle数据库 boost::filesystem 使用例子 #include #include #include #include using namespace boost::filesyst ...

最新文章

  1. GopherChina 2018 区块链+容器+Go底层实现
  2. VS2010中获取并调用CRM2011中的工作流
  3. 第三章--堆栈段的工作方式
  4. windows+sublime text3+MINGW编译运行c
  5. Mysql在字符串类型的日期上加上10分钟并和如今的日期做比較
  6. python的for语句有几种写法_Python if 和 for 的多种写法
  7. 计算机组装方案及分析,《计算机组装与维护》课程整体教学方案
  8. I/O流(三)—对象的序列化和反序列化
  9. Scala入门到精通——第十八节 隐式转换与隐式参数(一)
  10. java proguard 使用_一步步教你使用Proguard混淆Java源代码
  11. 表单提交数据大小的限制
  12. SQL基础实例(学生课程系统)
  13. SplObserver观察者模式
  14. 使用C#向ACCESS中插入数据
  15. android ViewFlipper的使用
  16. Python3.7+RF3.1实现接口自动化
  17. android去掉锁屏界面,android怎么去掉锁屏界面
  18. OriginPro 2021 设置成中文(软件自带)
  19. 【转载】CPU的内部架构和工作原理
  20. 记一次云主机如何挂载对象存储

热门文章

  1. 云资源是什么意思?有什么特点?
  2. 数据科学家,究竟能挣多少钱?
  3. python使用Cookie登录网页爬取信息(超简单)
  4. UVA11491 奖品的价值 Erasing and Winning
  5. 【Cocos开发者大会】触控CEO陈昊芝:收入最高的80%游戏均由Cocos开发
  6. 关于矩阵乘法运算顺序上的技巧
  7. 百度和360,你想去哪儿?
  8. MD5加密Java工具类
  9. Buu re easyre
  10. 汽车安全测试工具集 Vehicle-Security-Toolkit