srvctl常用维护命令:数据库管理员必备技能!

吉云

得,今天就来唠唠 `srvctl` 这玩意儿。搞 Oracle RAC 的兄弟们估计都跟我一样,没少跟它打交道。刚开始接触 RAC 的时候,一堆新概念,这个 `srvctl` 就是其中一个让我有点懵的。

说白,这命令就是咱在 RAC 环境里指挥那些数据库实例、服务、有时候还有 ASM 啥的,让它们启动、停下、或者看看它们状态咋样的总开关。以前可能得写一堆脚本,现在 Oracle 给咱们整这个统一的工具,确实方便不少。

我的实践捣鼓过程

srvctl常用维护命令:数据库管理员必备技能!

最早开始用它,肯定是从最基本的查状态开始。毕竟你得先知道现在是个啥情况,才能动手去改嘛那时候最常用的就是:

  • srvctl config database -d 数据库名: 这个命令能帮我瞅瞅数据库的配置信息,比如它在哪几个节点上跑,用的啥参数文件之类的。
  • srvctl status database -d 数据库名: 这个用得最多,看看整个数据库,包括它下面的各个实例现在是开着还是关着,跑得欢不欢。
  • srvctl status instance -d 数据库名 -i 实例名: 有时候数据库整体看着没问题,但某个节点上的实例可能挂,就用这个单独查指定实例的状态。

srvctl常用维护命令:数据库管理员必备技能!

熟悉怎么看,就得学怎么动手。 那就是启动和停止操作。这也是最容易出岔子的地方,特别是刚开始不熟练的时候。

我记得有一次,那还是个周末,要做个小变更,计划是停掉其中一个节点的实例,做点操作,然后再启起来。当时想着简单,直接就敲 srvctl stop instance -d 我的库名 -i 实例名1。操作完,准备启动,又敲 srvctl start instance -d 我的库名 -i 实例名1

结果?业务那边马上打电话过来,说访问有问题。我当时就有点慌,赶紧回去查状态,发现服务(Service)没跟着实例起来!原来我只启动实例,但是依赖这个实例的服务没自动启动。那时候才明白,srvctl 不光能管实例,还能管服务,而且它们之间还有依赖关系。

后来就学乖,知道操作服务得用类似这样的命令:

  • srvctl stop service -d 数据库名 -s 服务名
  • srvctl常用维护命令:数据库管理员必备技能!

  • srvctl start service -d 数据库名 -s 服务名
  • srvctl status service -d 数据库名

还有更猛的,直接操作整个数据库:

  • srvctl stop database -d 数据库名: 这个就牛,会把所有节点上的实例都停掉。用这个得特别小心,一般是计划内停机维护才用。
  • srvctl常用维护命令:数据库管理员必备技能!

  • srvctl start database -d 数据库名: 把整个数据库的所有实例都拉起来。

还有个重要的就是 ASM。 现在 RAC 大部分都用 ASM 存储。`srvctl` 也能管它。

  • srvctl status asm: 看看 ASM 实例的状态。
  • srvctl start asm / srvctl stop asm: 启停 ASM 实例。这个也得谨慎,ASM 停,数据库也就访问不存储。
  • srvctl常用维护命令:数据库管理员必备技能!

踩坑与体会

这命令,选项是真不少,特别是涉及到修改配置(modify)或者添加(add)、删除(remove)资源的时候,比如添加一个新服务,或者把实例从某个节点移走,参数就更复杂。刚开始真有点头大,文档翻来覆去地看。

我实践下来最大的体会就是,用 `srvctl` 一定要细心。参数 `-d`(数据库名)、`-i`(实例名)、`-s`(服务名)、`-n`(节点名)这些,一定要指定对,不然命令可能就跑到你不想操作的对象上去,或者直接报错。

还有就是,多用 status 确认状态。每次做变更操作,不管是启动、停止还是修改,都随手用 srvctl status ... 检查一下,看看是不是达到你预期的效果。这能避免很多后续的问题。

解清楚不同操作的影响范围也很重要。比如 `stop instance` 只停单个实例,而 `stop database` 会停掉所有实例。这个搞混,影响就大去。

srvctl常用维护命令:数据库管理员必备技能!

`srvctl` 就是 RAC 管理员手里的一把瑞士军刀,功能强大,但也得耍熟练才行。从一开始的懵懵懂懂,到现在日常维护基本都靠它,也是一个不断踩坑、不断学习、不断实践的过程。现在感觉,虽然它有时候看着复杂,但真离不开。

免责声明:由于无法甄别是否为投稿用户创作以及文章的准确性,本站尊重并保护知识产权,根据《信息网络传播权保护条例》,如我们转载的作品侵犯了您的权利,请您通知我们,请将本侵权页面网址发送邮件到qingge@88.com,深感抱歉,我们会做删除处理。

目录[+]