Standalone Server com GI12c, passos iniciais

Olá pessoal, depois de termos instalado o Grid Infrastructure 12c para nosso Standalone Server e o Oracle Database 12c, criamos o banco de dados, agora precisamos saber como administrar este ambiente.

Vamos ver alguns comandos para realizar tarefas administrativas no nosso Standalone Server.

Standalone Server

Standalone Server

Para administrar o Oracle High Availability Services num Standalone Server você deve estar conectado como root. O HAS é um grupo de serviços responsável por identificar falhas, iniciar, parar e reportar erros do ambiente. Iniciando ou parando o HAS todos os demais serviços dependentes dele são consequentemente afetados. Se você efetuar um shutdown do servidor Linux todo o processo de parada do HAS irá ocorrer automaticamente e iniciará da mesma forma no boot.

[root@loredata-srv ~]# . oraenv
ORACLE_SID = [root] ? +ASM
The Oracle base has been set to /u01/app/oracle

CRSCTL

[root@loredata-srv ~]# crsctl check has
CRS-4638: Oracle High Availability Services is online

[root@loredata-srv ~]# crsctl stop has
CRS-2791: Starting shutdown of Oracle High Availability Services-managed resources on 'loredata-srv'
CRS-2673: Attempting to stop 'ora.CRS.dg' on 'loredata-srv'
CRS-2673: Attempting to stop 'ora.loredb.db' on 'loredata-srv'
CRS-2673: Attempting to stop 'ora.LISTENER.lsnr' on 'loredata-srv'
CRS-2673: Attempting to stop 'ora.DBLISTENER.lsnr' on 'loredata-srv'
CRS-2677: Stop of 'ora.CRS.dg' on 'loredata-srv' succeeded
CRS-2677: Stop of 'ora.loredb.db' on 'loredata-srv' succeeded
CRS-2673: Attempting to stop 'ora.DATA.dg' on 'loredata-srv'
CRS-2677: Stop of 'ora.DATA.dg' on 'loredata-srv' succeeded
CRS-2673: Attempting to stop 'ora.asm' on 'loredata-srv'
CRS-2677: Stop of 'ora.DBLISTENER.lsnr' on 'loredata-srv' succeeded
CRS-2677: Stop of 'ora.LISTENER.lsnr' on 'loredata-srv' succeeded
CRS-2677: Stop of 'ora.asm' on 'loredata-srv' succeeded
CRS-2673: Attempting to stop 'ora.evmd' on 'loredata-srv'
CRS-2677: Stop of 'ora.evmd' on 'loredata-srv' succeeded
CRS-2673: Attempting to stop 'ora.cssd' on 'loredata-srv'
CRS-2677: Stop of 'ora.cssd' on 'loredata-srv' succeeded
CRS-2793: Shutdown of Oracle High Availability Services-managed resources on 'loredata-srv' has completed
CRS-4133: Oracle High Availability Services has been stopped.

[root@loredata-srv ~]# crsctl start has
CRS-4123: Oracle High Availability Services has been started.

Caso queira desabilitar o HAS para não iniciar automaticamente no boot do Standalone Server:

[root@loredata-srv ~]# crsctl disable has
CRS-4621: Oracle High Availability Services autostart is disabled.

Para habilitar novamente:

[root@loredata-srv ~]# crsctl enable has
CRS-4622: Oracle High Availability Services autostart is enabled.

Desabilitar não para os serviços, da mesma forma que habilitar também não inicia.

Para verificar os recursos que estão rodando no servidor e também saber o status deles:

[root@loredata-srv ~]# crsctl status resource -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.CRS.dg
ONLINE ONLINE loredata-srv STABLE
ora.DATA.dg
ONLINE ONLINE loredata-srv STABLE
ora.DBLISTENER.lsnr
ONLINE OFFLINE loredata-srv STABLE
ora.LISTENER.lsnr
ONLINE OFFLINE loredata-srv STABLE
ora.asm
ONLINE ONLINE loredata-srv Started,STABLE
ora.ons
OFFLINE OFFLINE loredata-srv STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.cssd
1 ONLINE ONLINE loredata-srv STABLE
ora.diskmon
1 OFFLINE OFFLINE STABLE
ora.evmd
1 ONLINE ONLINE loredata-srv STABLE
ora.loredb.db
1 ONLINE ONLINE loredata-srv Open,STABLE
--------------------------------------------------------------------------------

Para verificar um recurso específico:

[root@loredata-srv ~]# crsctl status resource ora.loredb.db
NAME=ora.loredb.db
TYPE=ora.database.type
TARGET=ONLINE
STATE=ONLINE on loredata-srv

A opção -t mostra a saída em formato tabelado:

[root@loredata-srv ~]# crsctl status resource ora.loredb.db -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.loredb.db
1 ONLINE ONLINE loredata-srv Open,STABLE
--------------------------------------------------------------------------------

Não é possível parar os recursos com o comando crsctl:

[root@loredata-srv ~]# crsctl stop resource ora.loredb.db
CRS-4995: The command 'Stop resource' is invalid in crsctl. Use srvctl for this command.
[root@loredata-srv ~]# crsctl stop resource ora.DBLISTENER.lsnr
CRS-4995: The command 'Stop resource' is invalid in crsctl. Use srvctl for this command.
[root@loredata-srv ~]# crsctl stop resource ora.asm
CRS-4995: The command 'Stop resource' is invalid in crsctl. Use srvctl for this comando.

SRVCTL

O tipo e o nome do recurso devem ser passados para que o comando funcione:

[root@loredata-srv ~]# srvctl stop database -db ora.loredb.db
PRCD-1120 : The resource for database ora.loredb.db could not be found.
PRCR-1001 : Resource ora.ora.loredb.db.db does not exist

Somente o nome do banco de dados e não do recurso:

[root@loredata-srv ~]# srvctl stop database -db loredb
[root@loredata-srv ~]#

O comando acima faz um “shutdown immediate” conforme é possível comprovar no alert_loredb.log:

Wed Jan 27 20:28:50 2016
Shutting down instance (immediate)
Stopping background process SMCO
Shutting down instance: further logons disabled

Da mesma forma que o “start” faz um “startup”, passando por todos as etapas de inicialização do banco de dados, até sua suposta abertura:

[root@loredata-srv ~]# srvctl start database -db loredb

Novamente constatamos o que foi feito olhando no alert_loredb.log:

Wed Jan 27 20:30:33 2016
Starting ORACLE instance (normal) (OS id: 4938)

Para verificar se o banco de dados está rodando:

[root@loredata-srv ~]# srvctl status database -db loredb
Database is running.

Todos os comandos srvctl podem ser executados com o usuário oracle, pois configuramos nosso Standalone Server, sem um usuário exclusivo para o Grid Infrastructure. Vamos testar agora operações na instância do ASM.

[root@loredata-srv ~]# su - oracle
[oracle@loredata-srv ~]$ ps -ef|grep pmon
oracle 3912 1 0 20:07 ? 00:00:00 asm_pmon_+ASM
oracle 5385 1 0 20:33 ? 00:00:00 ora_pmon_loredb
oracle 5832 5801 0 20:35 pts/1 00:00:00 grep pmon
[oracle@loredata-srv ~]$ . oraenv
ORACLE_SID = [loredb] ? +ASM
The Oracle base remains unchanged with value /u01/app/oracle

[oracle@loredata-srv ~]$ srvctl status asm
ASM is running on loredata-srv

Não é possível parar o ASM sem antes parar os diskgroups a não ser com a opção “force”:

[oracle@loredata-srv ~]$ srvctl stop asm
PRCR-1065 : Failed to stop resource ora.asm
CRS-2529: Unable to act on 'ora.asm' because that would require stopping or relocating 'ora.CRS.dg', but the force option was not specified

A opção “force” (-f) faz com que as instâncias de banco de dados sejam desligadas imediatamente (como um “abort”) e os diskgroups sejam desmontados:
[oracle@loredata-srv ~]$ srvctl stop asm -f

No alert_+ASM.log é possível ver que o ASM desmonta os diskgroups.

NOTE: halting all I/Os to diskgroup 2 (DATA)
Wed Jan 27 20:38:18 2016
NOTE: LGWR doing non-clean dismount of group 2 (DATA) thread 1
NOTE: LGWR sync ABA=5.603 last written ABA 5.603
Wed Jan 27 20:38:18 2016
NOTE: cache dismounted group 2/0x2D692230 (DATA)
Wed Jan 27 20:38:18 2016
GMON dismounting group 2 at 9 for pid 20, osid 3965
Wed Jan 27 20:38:18 2016
NOTE: Disk DATA in mode 0x7f marked for de-assignment
Wed Jan 27 20:38:18 2016
SUCCESS: diskgroup DATA was dismounted
NOTE: cache deleting context for group DATA 2/0x2d692230
Wed Jan 27 20:38:18 2016
SUCCESS: ALTER DISKGROUP DATA DISMOUNT FORCE /* asm agent *//* {0:0:938} */
Shutting down instance (abort)
License high water mark = 8
USER (ospid: 3965): terminating the instance
Wed Jan 27 20:38:19 2016
Instance terminated by USER, pid = 3965
Wed Jan 27 20:38:19 2016
Instance shutdown complete

Para iniciar somente a instância do ASM:

[oracle@loredata-srv ~]$ srvctl start asm

O comando abaixo iniciará o ASM se a instância dele estiver desligada e em seguida iniciará o banco de dados:

[oracle@loredata-srv ~]$ srvctl start database -d loredb

Para verificar se os Listeners estão executando:

[oracle@loredata-srv ~]$ srvctl status listener
Listener DBLISTENER is enabled
Listener DBLISTENER is running on node(s): loredata-srv
Listener LISTENER is enabled
Listener LISTENER is running on node(s): loredata-srv

Para parar todos os Listeners:

[oracle@loredata-srv ~]$ srvctl stop listener
[oracle@loredata-srv ~]$ srvctl status listener
Listener DBLISTENER is enabled
Listener DBLISTENER is not running
Listener LISTENER is enabled
Listener LISTENER is not running

Para iniciar um Listener específico:

[oracle@loredata-srv ~]$ srvctl start listener -listener dblistener
[oracle@loredata-srv ~]$ srvctl status listener
Listener DBLISTENER is enabled
Listener DBLISTENER is running on node(s): loredata-srv
Listener LISTENER is enabled
Listener LISTENER is not running

Quando um serviço está enabled significa que ele irá iniciar e parar automaticamente no boot e shutdown, respectivamente. Quando está disabled significa que ele não realizará essas operações automaticamente. Depois que o Standalone Server for reiniciado você terá que habilitá-los primeiro para depois iniciá-los.

Todos esses comandos tem muitas variações no Standalone Server, mas por enquanto já vimos o suficiente para iniciar e parar o ambiente.

Espero que gostem e se tiverem dúvidas por favor deixem um comentário.

  • Rodrigo Pereira

    Por isso q questionei, mas blz, obrigado pela atenção!!!

  • Boa noite Rodrigo. Tudo certinho?
    O database é um recurso do clusterware (que num GI standalone ele é não é em cluster), só que nós operamos alguns destes recursos com o comando srvctl e outros com o comando crsctl. No srvctl o database é um objeto, então devemos passar o nome do objeto e não do recurso. No crsctl passamos o nome do recurso para operá-lo.
    Veja estes dois links, eles explicam sobre o uso dos dois comandos:
    https://docs.oracle.com/database/121/CWADD/crsref.htm#CWADD91142
    https://docs.oracle.com/database/121/RACAD/srvctladmin.htm#RACAD005

    No caso do srvctl stop database -db loredb ele para o banco de dados, então isso inclui o desligamento da instância. Se fosse em um ambiente em cluster este comando desligaria todas as instâncias desse banco de dados em todos os nós do cluster. Caso em um cluster você queira parar uma instância específica você pode executar srvctl stop instance -i loredb1 -db loredb, este comando vai parar a instância com o identificador 1. Caso queira parar a instância do nó 14, por exemplo, você poderia passar o nome do nó através do comando srvctl stop instance -db loredb -n srv14

    Esclareci suas dúvidas?

    Abraços.

  • Rodrigo Pereira

    boa noite Franky, quando vc fala somente o nome do banco de dados e não do recurso, como é isso?
    srvctl stop database -db loredb
    O q seria esse recurso?
    A instância continua ativa, seria isso?
    Desde já agradeço!!

  • Bruno Carvalho

    Muito bom! Exemplos claros e bem objetivos! Parabéns Franky