terça-feira, 30 de outubro de 2018

Habilitando BI Publisher no EM13c

O Oracle BI Publisher (Business Intelligence Publisher) é uma ferramenta atualmente instalada por padrão junto ao Oracle Enterprise Manager Cloud Control 13c que permite a criação, gerenciamento e entrega de documentos altamente formatados em PDF, Excel, PowerPoint, Word e HTML.

O BI Publisher por ser agora um componente básico do Enterprise Manager a partir da versão 13cR1 (13.1.0.0.0), não é mais possível desinstala-lo ou desconfigurá-lo, é possível apenas ativa-lo ou desativa-lo.

Para verificar se o BI Publisher está habilitado ou desabilitado e o status do BI Publisher Server (responsável pelo funcionamento do serviço), basta requisitarmos o status dos componentes do OMS (Oracle Management Server)

[oracle@localhost ~]$ $OMS_HOME/bin/emctl status oms

Oracle Enterprise Manager Cloud Control 13c Release 2

Copyright (c) 1996, 2016 Oracle Corporation.  All rights reserved.

WebTier is Up

Oracle Management Server is Up

JVMD Engine is Up

BI Publisher Server is Down

BI Publisher is disabled, to enable BI Publisher on this host, use the 'emctl config oms -enable_bip' command

Quando o BI Publisher não está habilitado será exibido a mensagem, conforme acima, informando que o componente esta desabilitado e de como é possivel habilita-lo. Caso o componente esteja habilitado, apenas o status do BI Publisher Server será exibido.

Habilitando o BI Publisher:

[oracle@localhost ~]$ $OMS_HOME/bin/emctl config oms -enable_bip

Oracle Enterprise Manager Cloud Control 13c Release 2

Copyright (c) 1996, 2016 Oracle Corporation.  All rights reserved.

Enter Enterprise Manager Root (SYSMAN) Password :

BI Publisher is enabled for startup on this host with the 'emctl start oms'  and 'emctl start oms -bip_only' commands.

Overall result of operations: SUCCESS

[oracle@localhost ~]$ $OMS_HOME/bin/emctl start oms

Oracle Enterprise Manager Cloud Control 13c Release 2

Copyright (c) 1996, 2016 Oracle Corporation.  All rights reserved.

Starting Oracle Management Server...

WebTier Successfully Started

Oracle Management Server Successfully Started

Oracle Management Server is Up

JVMD Engine is Up

Starting BI Publisher Server ...

BI Publisher Server Successfully Started

BI Publisher Server is Up


Verificando novamente o status, temos o BI Publisher Server iniciado.

[oracle@localhost ~]$ $OMS_HOME/bin/emctl status oms

Oracle Enterprise Manager Cloud Control 13c Release 2

Copyright (c) 1996, 2016 Oracle Corporation.  All rights reserved.

WebTier is Up

Oracle Management Server is Up

JVMD Engine is Up

BI Publisher Server is Up

Para desabilitar o BI Publisher:

$OMS_HOME/bin/emctl config oms -disable_bip

Como o BI Publisher opera "separadamente" do OMS (O managed server é o mesmo weblogic domain que contem o OMS e o AdminServer), após ser configurado ele pode ser parado ou iniciado pelo emctl de forma independente do OMS.

emctl start oms -bip_only

emctl status oms -bip_only

emctl stop oms -bip_only [-force]


Referência:

https://docs.oracle.com/cd/E63000_01/EMADV/install_em_bip.htm#EMADV14485
Mais informações →

sexta-feira, 10 de agosto de 2018

ODA X7-2 HA BM (Bare Metal) reimage


O Bare Metal (BM) é uma configuração não virtualizada do Oracle Database Appliance. O Oracle Database Appliance já é enviado de fábrica com uma configuração bare metal, contudo pode ser necessário realizar seu reimage em algum momento para se restaurar as configurações do sistema operacional ao modo "enviado de fabrica" em função de alguma configuração incorreta no deploy ou mesmo quando se quer sair de um ambiente virtualizado (Virtualized Platform - VP) para o ferro da máquina (Bare Metal - BM).

Para realizar o reimage do ODA para BM é necessário primeiramente baixar a imagem ISO para Bare Metal Restore a partir do MOS (My Oracle Support).

Oracle Database Appliance - 18.1, 12.X, and 2.X Supported ODA Versions & Known Issues (Doc ID 888888.1)


Selecione a versão desejada do Oracle Appliance Kit e clique em download.




Abra o browser e acesse a ILOM do node0 utilizando o usuário root, clique na aba Remote Control no menu esquerdo seguido por Redirection e posteriormente Launch remote console.


Na tela que se abrirá, clique em OK para prosseguir.


Um arquivo java será baixado e possivelmente ao final do download será exibido uma mensagem semelhante a imagem abaixo:


Clique em manter e na sequencia abra o arquivo clicando sobre o mesmo.


Continue


por fim, Run


Abrindo a console remota, pressione ALT + F2 para ser exibido a tela de login, caso queira realizar alguma interação com a maquina.



Para adicionar a imagem ISO, clique sobre KVMS > Storage
   

Clique em Add:



Selecione o arquivo ISO descompactado e clique em selecionar. 
Selecione a ISO carregada (conforme imagem abaixo) e clique em Connect (clicando em Connect irá aparecer a mensagem de Disconnect no botão). Pressione OK.


No canto superior direito o ícone CDROM também se tornará mais evidente indicando que a imagem/unidade foi montada.



Agora é preciso configurar o CD-ROM como primeiro dispositivo de boot, pra isto volte no browser conectado na ILOM, clique em Host Management > Host Control, selecione CDROM na caixa de "Next boot device" e clique em Save


Reinicie o servidor. Host Management > Power Control > Power Cycle > Save



Confirme o reboot, OK.



Quando o nó retornar após o ciclo de energia (reboot), o reimage a partir da ISO deverá iniciar automaticamente.

Contudo, entretanto, todavia... e no meu caso, o boot não ocorreu. 

Temos algumas notas relacionadas e este problema no boot da ISO no ODA:

ODA : ILOM is not booting from ISO virtual CDROM (Doc ID 2286667.1)

CD-ROM Image Redirection in ILOM does not work with 64-bit Java (Doc ID 1946441.1)

Segui o procedimento de ambas e não obtive exito em função de alguns bugs relacionados ao java que perdia o attachment durante o restart.

Para conseguir realizar o boot pela ISO / CDROM, quando a maquina estiver iniciando novamente e a tela de boot for exibida (imagem abaixo), realize um novo attach da ISO e monte-a novamente (connect).



KVMS > Storage > Add, Selecionar a ISO, desabilitar a SSL, Connect e OK.


Habilite o Virtual Keyboard em KVMS > Virtual Keyboard...




Na tela seguinte de boot será exibido algumas opções, clique em F8 no telado virtual para entrar no menu de seleção de boot:


A mensagem (Boot Pop Up Menu Selected) será exibida e na próxima tela aparecerá a listagem de itens para boot onde teremos opções como "USB:SUN" ou CD-ROM


Selecionada a opção ("USB:SUN" ou CD-ROM) e pressione ENTER que o boot pela ISO ira ocorrer iniciando o processo de limpeza e reimage da maquina. ( >> tudo que havia nela será perdido e ela voltará ao estado vinda de fabrica << )



A tela "Running post-installation scripts" ficará parada por vários minutos (normal), pois está ocorrendo a execução de scripts na maquina.

Todo o processo de reimage varia entre 45 minutos à 2 horas e ao final a maquina começará a ser iniciada normalmente estando novamente disponível (disponível, não pronta, ainda é necessário redeploy do ambiente até tudo ficar ok com o banco disponível, etc. Isto será abordado em outra postagem).



Execute o mesmo procedimento para o node1. Pode ser executado em paralelo com o reimage do node0.



Referências:

https://docs.oracle.com/cd/E89155_01/doc.122/e93447/updating-oracle-database-appliance-software.htm#CMTXL-GUID-5D52DFE8-DAD2-4A81-AE97-A57925206500

https://docs.oracle.com/cd/E88132_01/doc.122/e88393/managing-oracle-databases.htm#CMTXL-GUID-240FFCCF-0BD2-4F5D-80B6-3C684D7E88C0

ODA Oracle Database Appliance Bare Metal Restore Procedure X5-2 and X6-2 (Doc ID 1373599.1)
Mais informações →

terça-feira, 24 de julho de 2018

quinta-feira, 19 de abril de 2018

Cancelando a execução de uma instrução SQL - 18c

Uma das novas features introduzidas na versão 18c do Oracle database é o ALTER SYSTEM CANCEL SQL que permite que uma instrução SQL em execução em determinada sessão seja manualmente cancelada sem que a sessão seja desconectada, o que ocorre na utilização das instruções ALTER SYSTEM KILL SESSION / DISCONNECT SESSION. 

A utilização do “CANCEL SQL” é útil quando determinada sessão está executando alguma instrução ofensora e é necessário liberação de recursos ou mesmo quando instruções SQL são executadas incorretamente. 

Sempre que uma instrução SQL é cancelada, ocorre o rollback dos dados alterados pela mesma. 

Sintaxe do comando:

ALTER SYSTEM CANCEL SQL 'SID, SERIAL#, [@INST_ID, SQL_ID]';

Caso a @INST_ID não seja especificada (opcional), a instance id da sessão conectada será utilizada;

Caso o SQL_ID não seja especificado (opcional), a instrução SQL atualmente em execução na sessão especificada será cancelada.


-- Cancelar SQL em execução em determinada sessão da instance conectada.
SQL> ALTER SYSTEM CANCEL SQL '38, 41388';

-- Cancelar SQL em execução na sessão com INST_ID = 1.
SQL> ALTER SYSTEM CANCEL SQL '38, 41388, @1';

-- Cancelar SQL específico em determinada sessão da instance conectada.
SQL> ALTER SYSTEM CANCEL SQL '38, 41388, 3tfmdd4xagv3y';

-- Cancelar SQL específico na sessão com INST_ID = 1.
SQL> ALTER SYSTEM CANCEL SQL '38, 41388, @1, 3tfmdd4xagv3y';

Exemplo:

Connected to:
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
Version 18.1.0.0.0

SQL> select distinct sid from v$mystat;

       SID
----------
        38

SQL> begin
  2  loop null;
  3  end loop;
  4  end;
  5  /

Em uma nova sessão, capture as informações necessárias e execute o ALTER SYSTEM CANCEL SQL:

SQL> set lines 200
SQL> select inst_id, serial#, sql_id, status, (select sql_fulltext from v$sql sq where sq.sql_id=se.sql_id) sql_fulltext from gv$session se where sid=38;

   INST_ID    SERIAL# SQL_ID        STATUS   SQL_FULLTEXT
---------- ---------- ------------- -------- ------------------------------
         1      41388 3tfmdd4xagv3y ACTIVE   begin
                                             loop null;
                                             end loop;
                                             end;

SQL> ALTER SYSTEM CANCEL SQL '38, 41388, @1, 3tfmdd4xagv3y';

System altered.

Voltando a sessão anterior:

SQL> begin
  2  loop null;
  3  end loop;
  4  end;
  5  /
begin
*
ERROR at line 1:
ORA-01013: user requested cancel of current operation

E a sessão continua conectada, basta executar qualquer instrução SQL.

SQL> select distinct sid from v$mystat;

       SID
----------
        38



Referência:

https://docs.oracle.com/en/database/oracle/oracle-database/18/newft/new-features.html#GUID-EFC832BE-DC2C-4997-8C38-8A9E27A4FFC4
Mais informações →

quarta-feira, 21 de março de 2018

Novos recursos na versão 18c do SQL*Plus

A versão 18c do Oracle database trouxe mais algumas novidades relacionadas a utilização do SQL*PLUS, que são:





  • Alterar dinamicamente a exibição de saída para ajustar o tamanho da tela;


Agora o comando SET LINESIZE possui a opção WINDOW que ajusta automaticamente o tamanho da linha para o tamanho atual da janela para termos uma saída formatada de acordo com a largura tela.

[oracle@localhost ~]$ sqlplus anderson/graf@pdb1

SQL*Plus: Release 18.0.0.0.0 Production on Wed Mar 21 13:46:06 2018
Version 18.1.0.0.0

Copyright (c) 1982, 2017, Oracle.  All rights reserved.

Last Successful login time: Wed Mar 21 2018 13:44:32 -03:00

Connected to:
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
Version 18.1.0.0.0

SQL> select * from exemplo;

       COD
----------
DESCRICAO
----------------------------------------------------------------------
         1
row 1

         2
row 2

         3
row 3


       COD
----------
DESCRICAO
----------------------------------------------------------------------
         4
row 4

         5
row 5

         6
row 6


       COD
----------
DESCRICAO
----------------------------------------------------------------------
         7
row 7

         8
row 8

         9
row 9


       COD
----------
DESCRICAO
----------------------------------------------------------------------
        10
row 10


10 rows selected.

SQL> SET LINESIZE WINDOW
SQL> select * from exemplo;

       COD DESCRICAO
---------- ----------------------------------------------------------------------
         1 row 1
         2 row 2
         3 row 3
         4 row 4
         5 row 5
         6 row 6
         7 row 7
         8 row 8
         9 row 9
        10 row 10

10 rows selected.


  • Exibe o sql_id da consulta executada;


O comando SET FEEDBACK também foi melhorado e agora permite exibir o sql_id da query. A nova opção SQL_ID do comando SET FEEDBACK exibe o sql_id para as instruções SQL e PL/SQL atualmente executadas. 

SQL> select count(1) from exemplo;

  COUNT(1)
----------
        10

SQL> SET FEEDBACK ON SQL_ID
SQL> select count(1) from exemplo;

  COUNT(1)
----------
        10

1 row selected.

SQL_ID: 18un1uja2917c


  • Define o número de linhas exibidas (retornadas) para uma consulta.


O comando SET ROWLIMIT permite que seja definido um limite para o número de linhas retornadas na consulta.

SQL> select * from exemplo;

       COD DESCRICAO
---------- ----------------------------------------------------------------------
         1 row 1
         2 row 2
         3 row 3
         4 row 4
         5 row 5
         6 row 6
         7 row 7
         8 row 8
         9 row 9
        10 row 10

10 rows selected.

SQL_ID: 6vcxssbgaaumu
SQL> SET ROWLIMIT 5
SQL> select * from exemplo;

       COD DESCRICAO
---------- ----------------------------------------------------------------------
         1 row 1
         2 row 2
         3 row 3
         4 row 4
         5 row 5

5 rows selected. (rowlimit reached)

SQL_ID: 6vcxssbgaaumu


Referência:

https://docs.oracle.com/en/database/oracle/oracle-database/18/sqprn/index.html#SQPRN104
Mais informações →

Oracle 18c - ORA-12754: Feature 'startup' is disabled due to missing capability 'Runtime Environment'

Lançado recentemente, o Oracle database 18c atualmente está disponível apenas para a Oracle Cloud e Oracle Exadata, ou seja, nada de binários para on-premises por enquanto, porém assim como muitos outros baixei o binário do 18c para Exadata (V974953-01.zip) do oracle edelivery e fiz o deploy na minha VM (Virtual Machine) com Oracle Linux 7.3 x86_64.


O deploy do binário ocorre sem problemas, porém ao tentar subir uma instancia, tanto pelo DBCA (Database Configuration Assistant) quanto por linha de comando (sqlplus) ocorre o erro ORA-12754: Feature 'startup' is disabled due to missing capability 'Runtime Environment'.


Olhando no arquivo de log do banco de dados (alertlog) é visível que ele realiza algumas checagens ao subir a instancia e como elas não são atendidas (detected : 0) o startup é abortado.

[oracle@localhost ~]$ tail -n 10 /orabin/app/oracle/diag/rdbms/cdb/cdb/trace/alert_cdb.log
Number of processor sockets in the system is 1
Shared memory segment for instance monitoring created
Capability Type : Network
capabilities requested : 1 detected : 0 Simulated : 0
Capability Type : Runtime Environment
capabilities requested : 400000FF detected : 40000000 Simulated : 0
Capability Type : Engineered Systems
capabilities requested : 7 detected : 0 Simulated : 0
Capability Type : Database Test
capabilities requested : 3 detected : 0 Simulated : 0

Para realizar o startup da instance e posterior criação da base de dados, temos alguns métodos como substituir a biblioteca libserver18.a ($ORACLE_HOME/lib/libserver18.a) com uma versão trazida da Oracle Cloud que permitirá que o DBCA suba a instance e crie o database ou podemos utilizar o parâmetro _exadata_feature_on=true nos scripts gerados pelo DBCA, método este que estarei utilizando aqui.


Com os scripts gerados pelo DBCA, vá no diretório scripts e altere todos os inits.ora encontrados, aqui foi gerado apenas um devido as escolhas realizadas na interface do DBCA porém em algumas opções podemos ter até 3 arquivos de init, logo, adicione em todos o parâmetro _exadata_feature_on=true

[oracle@localhost ~]$ cd /orabin/app/oracle/admin/cdb/scripts/
[oracle@localhost scripts]$ ls -lrt
total 56
-rw-r----- 1 oracle oinstall 1975 Mar 21 10:30 init.ora
-rwxr-xr-x 1 oracle oinstall  849 Mar 21 10:30 cdb.sh
-rw-r----- 1 oracle oinstall 1695 Mar 21 10:30 CreateDB.sql
-rw-r----- 1 oracle oinstall  404 Mar 21 10:30 CreateDBFiles.sql
-rw-r----- 1 oracle oinstall 2108 Mar 21 10:30 CreateDBCatalog.sql
-rw-r----- 1 oracle oinstall 1454 Mar 21 10:30 JServer.sql
-rw-r----- 1 oracle oinstall 1167 Mar 21 10:30 context.sql
-rw-r----- 1 oracle oinstall 1008 Mar 21 10:30 CreateClustDBViews.sql
-rw-r----- 1 oracle oinstall 1721 Mar 21 10:30 lockAccount.sql
-rw-r----- 1 oracle oinstall  758 Mar 21 10:30 postDBCreation.sql
-rw-r----- 1 oracle oinstall   93 Mar 21 10:30 PDBCreation.sql
-rw-r----- 1 oracle oinstall  798 Mar 21 10:30 plug_pdb1.sql
-rwxr-xr-x 1 oracle oinstall  901 Mar 21 10:30 cdb.sql
-rw-r----- 1 oracle oinstall 1269 Mar 21 10:30 postPDBCreation_pdb1.sql

Adicionar em todos os inits o parâmetro _exadata_feature_on=true

[oracle@localhost scripts]$ cat init.ora | grep exadata
_exadata_feature_on=true

Agora basta exportarmos as variáveis conforme abaixo e rodarmos o script .sh (neste caso cdb.sh) que tudo será criado. (para acessar o log completo, clique aqui)

[oracle@localhost scripts]$ export ORACLE_HOME=/orabin/app/oracle/product/18.0.0.0/dbhome1
[oracle@localhost scripts]$ export ORACLE_BASE=/orabin/app/oracle
[oracle@localhost scripts]$ export ORACLE_SID=cdb
[oracle@localhost scripts]$ export PATH=$ORACLE_HOME/bin:$PATH
[oracle@localhost scripts]$ sh cdb.sh
You should Add this entry in the /etc/oratab: cdb:/orabin/app/oracle/product/18.0.0.0/dbhome1:Y

SQL*Plus: Release 18.0.0.0.0 Production on Wed Mar 21 10:42:01 2018
Version 18.1.0.0.0

Copyright (c) 1982, 2017, Oracle.  All rights reserved.

Enter new password for SYS:
Enter new password for SYSTEM:

Enter password for SYS:

Connected to an idle instance.
SQL> spool /orabin/app/oracle/admin/cdb/scripts/CreateDB.log append
SQL> startup nomount pfile="/orabin/app/oracle/admin/cdb/scripts/init.ora";
ORACLE instance started.

Total System Global Area  654310184 bytes
Fixed Size                  8899368 bytes
Variable Size             515899392 bytes
Database Buffers          121634816 bytes
Redo Buffers                7876608 bytes
SQL> CREATE DATABASE "cdb"
  2  MAXINSTANCES 8
  3  MAXLOGHISTORY 1
  4  MAXLOGFILES 16
  5  MAXLOGMEMBERS 3
  6  MAXDATAFILES 1024
  7  DATAFILE '/orabin/app/oracle/oradata/CDB/system01.dbf' SIZE 700M REUSE AUTOEXTEND ON NEXT  10240K MAXSIZE UNLIMITED
  8  EXTENT MANAGEMENT LOCAL
  9  SYSAUX DATAFILE '/orabin/app/oracle/oradata/CDB/sysaux01.dbf' SIZE 550M REUSE AUTOEXTEND ON NEXT  10240K MAXSIZE UNLIMITED
 10  SMALLFILE DEFAULT TEMPORARY TABLESPACE TEMP TEMPFILE '/orabin/app/oracle/oradata/CDB/temp01.dbf' SIZE 20M REUSE AUTOEXTEND ON NEXT  640K MAXSIZE UNLIMITED
 11  SMALLFILE UNDO TABLESPACE "UNDOTBS1" DATAFILE  '/orabin/app/oracle/oradata/CDB/undotbs01.dbf' SIZE 200M REUSE AUTOEXTEND ON NEXT  5120K MAXSIZE UNLIMITED
 12  CHARACTER SET WE8MSWIN1252
 13  NATIONAL CHARACTER SET AL16UTF16
 14  LOGFILE GROUP 1 ('/orabin/app/oracle/oradata/CDB/redo01.log') SIZE 200M,
 15  GROUP 2 ('/orabin/app/oracle/oradata/CDB/redo02.log') SIZE 200M,
 16  GROUP 3 ('/orabin/app/oracle/oradata/CDB/redo03.log') SIZE 200M
 17  USER SYS IDENTIFIED BY "&&sysPassword" USER SYSTEM IDENTIFIED BY "&&systemPassword"
 18  enable pluggable database
 19  seed file_name_convert=('/orabin/app/oracle/oradata/CDB/system01.dbf','/orabin/app/oracle/oradata/CDB/pdbseed/system01.dbf','/orabin/app/oracle/oradata/CDB/sysaux01.dbf','/orabin/app/oracle/oradata/CDB/pdbseed/sysaux01.dbf','/orabin/app/oracle/oradata/CDB/temp01.dbf','/orabin/app/oracle/oradata/CDB/pdbseed/temp01.dbf','/orabin/app/oracle/oradata/CDB/undotbs01.dbf','/orabin/app/oracle/oradata/CDB/pdbseed/undotbs01.dbf') LOCAL UNDO ON;

Database created.

SQL> spool off
SQL> @/orabin/app/oracle/admin/cdb/scripts/CreateDBFiles.sql
SQL> SET VERIFY OFF
SQL> connect "SYS"/"&&sysPassword" as SYSDBA
Connected.
SQL> set echo on
SQL> spool /orabin/app/oracle/admin/cdb/scripts/CreateDBFiles.log append
SQL> CREATE SMALLFILE TABLESPACE "USERS" LOGGING  DATAFILE  '/orabin/app/oracle/oradata/CDB/users01.dbf' SIZE 5M REUSE AUTOEXTEND ON NEXT  1280K MAXSIZE UNLIMITED  EXTENT MANAGEMENT LOCAL     SEGMENT SPACE MANAGEMENT  AUTO;

Tablespace created.

SQL> ALTER DATABASE DEFAULT TABLESPACE "USERS";

Database altered.

SQL> spool off
SQL> @/orabin/app/oracle/admin/cdb/scripts/CreateDBCatalog.sql
SQL> SET VERIFY OFF
SQL> connect "SYS"/"&&sysPassword" as SYSDBA
Connected.
SQL> set echo on
SQL> spool /orabin/app/oracle/admin/cdb/scripts/CreateDBCatalog.log append
SQL> alter session set "_oracle_script"=true;

Session altered.

SQL> alter pluggable database pdb$seed close;

Pluggable database altered.

SQL> alter pluggable database pdb$seed open;

Pluggable database altered.

SQL> host perl /orabin/app/oracle/product/18.0.0.0/dbhome1/rdbms/admin/catcon.pl -n 1 -l /orabin/app/oracle/admin/cdb/scripts -v  -b catalog  -U "SYS"/"&&sysPassword" /orabin/app/oracle/product/18.0.0.0/dbhome1/rdbms/admin/catalog.sql;
catcon::set_log_file_base_path: ALL catcon-related output will be written to [/orabin/app/oracle/admin/cdb/scripts/catalog_catcon_28581.lst]
...
...
...
SQL> set echo on
SQL> spool /orabin/app/oracle/admin/cdb/scripts/postPDBCreation.log append
SQL> connect "SYS"/"&&sysPassword" as SYSDBA
Connected.
SQL> alter session set container=pdb1;

Session altered.

SQL> set echo on
SQL> spool /orabin/app/oracle/admin/cdb/scripts/postPDBCreation.log append
SQL> select TABLESPACE_NAME from cdb_tablespaces a,dba_pdbs b where a.con_id=b.con_id and UPPER(b.pdb_name)=UPPER('pdb1');

TABLESPACE_NAME
------------------------------
SYSTEM
SYSAUX
UNDOTBS1
TEMP
USERS

SQL> connect "SYS"/"&&sysPassword" as SYSDBA
Connected.
SQL> alter session set container=pdb1;

Session altered.

SQL> set echo on
SQL> spool /orabin/app/oracle/admin/cdb/scripts/postPDBCreation.log append
SQL> Select count(*) from dba_registry where comp_id = 'DV' and status='VALID';

  COUNT(*)
----------
         0

SQL> alter session set container=CDB$ROOT;

Session altered.

SQL> exit;
Disconnected from Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
Version 18.1.0.0.0
[oracle@localhost scripts]$

Base 18c criada!

[oracle@localhost scripts]$ sqlplus / as sysdba

SQL*Plus: Release 18.0.0.0.0 Production on Wed Mar 21 12:00:16 2018
Version 18.1.0.0.0

Copyright (c) 1982, 2017, Oracle.  All rights reserved.


Connected to:
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
Version 18.1.0.0.0

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 PDB1                           READ WRITE NO
SQL>

Lembrando que ainda não temos uma versão oficial do 18c para ambientes on-premises, então não utilize isto em ambientes produtivos.

Caso prefira, você também pode utilizar o Oracle Live SQL para  testar novas funcionalidades do Oracle database 18c:


Mais informações →

segunda-feira, 19 de março de 2018

OCR e OLR restore

O Oracle Clusterware possui vários componentes essenciais para seu funcionamento, dentre eles o OCR e OLR.

O Oracle Cluster Registry (OCR) é responsável por gerenciar as configurações e recursos do Oracle Clusterware e do Oracle RAC, como lista de nós do cluster, instancias de bancode dados, serviços entre outros.

O Oracle Local Registry (OLR) foi introduzido na versão 11gR2 do Grid Infrastructure e diferentemente do OCR ele não é compartilhado entre os nodes, cada node possui seu OLR contendo especificações locais requeridas pelo OHASD (Oracle High Availability Services).

No intervalo de 1 semana, devido instabilidades no storage, precisei restaurar ambos para disponibilizar novamente o ambiente, desta forma compartilho abaixo procedimentos realizados:

Ao executar o ocrcheck, que exibe informações relacionadas ao OCR como tamanho, versão, localização e status, percebe-se que ao final ocorre o erro PROT-602 informando falha na recuperação dos dados do cluster registry (OCR).


[root@srvprd01 oraagent_oracle]# ocrcheck
Status of Oracle Cluster Registry is as follows :
         Version                  :          3
         Total space (kbytes)     :     262120
         Used space (kbytes)      :       5860
         Available space (kbytes) :     256260
         ID                       :   84391272
         Device/File Name         :       +OCR
                                    Device/File integrity check succeeded

                                    Device/File not configured

                                    Device/File not configured

                                    Device/File not configured

                                    Device/File not configured

         Cluster registry integrity check succeeded

PROT-602: Failed to retrieve data from the cluster registry

O backup do OCR, além de poder ser feito manualmente (ocrconfig -manualbackup e ocrconfig -export) ainda é gerado de forma automática a cada 4 horas pelo CRSD (Cluster Ready Services Daemon) cuja retenção segue as seguintes políticas:

  • Retém os últimos 3 backups do OCR;
  • Retém 1 backup diário;
  • Retém 1 backup semanal.

[root@srvprd01 oracle]# ocrconfig -showbackup

srvprd01     2018/02/26 14:20:00     /oracle/GRID/11204/cdata/clusterprd/backup00.ocr

srvprd01     2018/02/26 10:19:59     /oracle/GRID/11204/cdata/clusterprd/backup01.ocr

srvprd01     2018/02/26 06:19:58     /oracle/GRID/11204/cdata/clusterprd/backup02.ocr

srvprd01     2018/02/25 10:19:55     /oracle/GRID/11204/cdata/clusterprd/day.ocr

srvprd01     2018/02/07 23:25:56     /oracle/GRID/11204/cdata/clusterprd/week.ocr
PROT-25: Manual backups for the Oracle Cluster Registry are not available

Para realizar o restore do OCR primeiramente é preciso parar o Clusterware em execução e subi-lo em modo exclusivo em um dos nodes:

[root@srvprd01 oracle]# crsctl stop crs
....
....
[root@srvprd01 oracle]# crsctl start crs -excl -nocrs
CRS-4123: Oracle High Availability Services has been started.
CRS-2673: Attempting to stop 'ora.drivers.acfs' on 'srvprd01'
CRS-2677: Stop of 'ora.drivers.acfs' on 'srvprd01' succeeded
CRS-2672: Attempting to start 'ora.mdnsd' on 'srvprd01'
CRS-2676: Start of 'ora.mdnsd' on 'srvprd01' succeeded
CRS-2672: Attempting to start 'ora.gpnpd' on 'srvprd01'
CRS-2676: Start of 'ora.gpnpd' on 'srvprd01' succeeded
CRS-2672: Attempting to start 'ora.cssdmonitor' on 'srvprd01'
CRS-2672: Attempting to start 'ora.gipcd' on 'srvprd01'
CRS-2676: Start of 'ora.cssdmonitor' on 'srvprd01' succeeded
CRS-2676: Start of 'ora.gipcd' on 'srvprd01' succeeded
CRS-2672: Attempting to start 'ora.cssd' on 'srvprd01'
CRS-2672: Attempting to start 'ora.diskmon' on 'srvprd01'
CRS-2676: Start of 'ora.diskmon' on 'srvprd01' succeeded
CRS-2676: Start of 'ora.cssd' on 'srvprd01' succeeded
CRS-2672: Attempting to start 'ora.drivers.acfs' on 'srvprd01'
CRS-2679: Attempting to clean 'ora.cluster_interconnect.haip' on 'srvprd01'
CRS-2672: Attempting to start 'ora.ctssd' on 'srvprd01'
CRS-2681: Clean of 'ora.cluster_interconnect.haip' on 'srvprd01' succeeded
CRS-2672: Attempting to start 'ora.cluster_interconnect.haip' on 'srvprd01'
CRS-2676: Start of 'ora.drivers.acfs' on 'srvprd01' succeeded
CRS-2676: Start of 'ora.ctssd' on 'srvprd01' succeeded
CRS-2676: Start of 'ora.cluster_interconnect.haip' on 'srvprd01' succeeded
CRS-2679: Attempting to clean 'ora.asm' on 'srvprd01'
CRS-2681: Clean of 'ora.asm' on 'srvprd01' succeeded
CRS-2672: Attempting to start 'ora.asm' on 'srvprd01'
CRS-2676: Start of 'ora.asm' on 'srvprd01' succeeded

A opção -nocrs faz com que o processo CRSD e OCR não iniciem junto com os demais processos do Oracle Clusteware.

Executando o restore físico do OCR utilizando o último backup automático gerado:

[root@srvprd01 oracle]# ocrconfig -restore /oracle/GRID/11204/cdata/clusterprd/backup00.ocr
[root@srvprd01 oracle]# ocrcheck
Status of Oracle Cluster Registry is as follows :
         Version                  :          3
         Total space (kbytes)     :     262120
         Used space (kbytes)      :       5860
         Available space (kbytes) :     256260
         ID                       :   84391272
         Device/File Name         :       +OCR
                                    Device/File integrity check succeeded

                                    Device/File not configured

                                    Device/File not configured

                                    Device/File not configured

                                    Device/File not configured

         Cluster registry integrity check succeeded

         Logical corruption check succeeded

Conforme retorno do ocrcheck acima já é visível que não temos mais problemas com o OCR, basta parar agora o CRS que estava em modo exclusivo e iniciá-lo normalmente. 

[root@srvprd01 oracle]# crsctl stop crs
CRS-2791: Starting shutdown of Oracle High Availability Services-managed resources on 'srvprd01'
CRS-2673: Attempting to stop 'ora.mdnsd' on 'srvprd01'
CRS-2673: Attempting to stop 'ora.drivers.acfs' on 'srvprd01'
CRS-2673: Attempting to stop 'ora.ctssd' on 'srvprd01'
CRS-2673: Attempting to stop 'ora.asm' on 'srvprd01'
CRS-2677: Stop of 'ora.mdnsd' on 'srvprd01' succeeded
CRS-2677: Stop of 'ora.ctssd' on 'srvprd01' succeeded
CRS-2677: Stop of 'ora.drivers.acfs' on 'srvprd01' succeeded
CRS-2677: Stop of 'ora.asm' on 'srvprd01' succeeded
CRS-2673: Attempting to stop 'ora.cluster_interconnect.haip' on 'srvprd01'
CRS-2677: Stop of 'ora.cluster_interconnect.haip' on 'srvprd01' succeeded
CRS-2673: Attempting to stop 'ora.cssd' on 'srvprd01'
CRS-2677: Stop of 'ora.cssd' on 'srvprd01' succeeded
CRS-2673: Attempting to stop 'ora.gipcd' on 'srvprd01'
CRS-2677: Stop of 'ora.gipcd' on 'srvprd01' succeeded
CRS-2673: Attempting to stop 'ora.gpnpd' on 'srvprd01'
CRS-2677: Stop of 'ora.gpnpd' on 'srvprd01' succeeded
CRS-2793: Shutdown of Oracle High Availability Services-managed resources on 'srvprd01' has completed
CRS-4133: Oracle High Availability Services has been stopped.
[root@srvprd01 oracle]#
[root@srvprd01 oracle]#
[root@srvprd01 oracle]#
[root@srvprd01 oracle]#
[root@srvprd01 oracle]# crsctl start crs
CRS-4123: Oracle High Availability Services has been started.

No caso do OLR, ao tentar subir o HAS obtive retorno de falha.

[root@srvprd01 ~]# crsctl start has
CRS-4124: Oracle High Availability Services startup failed.
CRS-4000: Command Start failed, or completed with errors.

Olhando para o arquivo de log abaixo é visível várias tentativas de startup do OLR no servidor, porém falhas (erro no final das tentativas).

[root@srvprd01 srvprd01]# pwd
/oracle/GRID/11204/log/srvprd01
[root@srvprd01 srvprd01]# tail -f alertsrvprd01.log
....
2018-03-05 20:17:59.768:
[ohasd(34126)]CRS-2112:The OLR service started on node srvprd01.
2018-03-05 20:18:00.014:
[ohasd(34149)]CRS-2112:The OLR service started on node srvprd01.
2018-03-05 20:18:00.261:
[ohasd(34171)]CRS-2112:The OLR service started on node srvprd01.
2018-03-05 20:18:00.507:
[ohasd(34208)]CRS-2112:The OLR service started on node srvprd01.
2018-03-05 20:18:00.754:
[ohasd(34230)]CRS-2112:The OLR service started on node srvprd01.
2018-03-05 20:18:01.003:
[ohasd(34263)]CRS-2112:The OLR service started on node srvprd01.
[client(34291)]CRS-10001:CRS-10132: No msg for has:crs-10132 [10][60]

O OLR, diferente do OCR, não possuí backups automáticos depois que o GI (Grid Infrastructure) é configurado, apenas backups manuais podem ser feitos (ocrconfig -local -manualbackup). Os únicos backups do OLR realizados "automaticamente" são durante a configuração (instalação) do GI e durante seu upgrade (se ocorrer algum).

Para visualizar os backups do OLR basta utilizar a mesma sintaxe do showbackup do OCR acrescentando o parâmetro -local (pelo fato do OLR ser local de cada servidor). 

[root@srvprd01 ~]# $GI_HOME/bin/ocrconfig -local -showbackup
PROTL-25: Manual backups for the Oracle Local Registry are not available

Pelo retorno nenhum backup manual do OLR está sendo localizado, olhando no node2 podemos ver que retorna um arquivo de backup (realizado durante a instalação do GI), porém este backup é do OLR do node2 e não do node1, logo não devemos utilizá-lo.

[root@srvprd02 ~]# ocrconfig -local -showbackup

srvprd02     2015/02/18 10:49:06     /oracle/GRID/11204/cdata/srvprd02/backup_20150218_104906.olr

A localização dos backups do OLR em cluster ficam em:

GI Cluster: <GI_HOME>/cdata/<hostname>/backup*.olr

Desta forma, voltando ao node1, podemos ver que existe um arquivo de backup dentro deste diretório:

[root@srvprd01 srvprd01]# ls -lrt
total 6660
-rw------- 1 root root 6807552 Feb 18  2015 backup_20150218_104154.olr

A localização do OLR em cluster, fica um diretório antes do seu backup e pode ser identificado através do arquivos '/etc/oracle/olr.loc' ou '/var/opt/oracle/olr.loc', dependendo da plataforma.

[root@srvprd01 cdata]# cat /etc/oracle/olr.loc
olrconfig_loc=/oracle/GRID/11204/cdata/srvprd01.olr
crs_home=/oracle/GRID/11204

Para realizar o restore do OLR é preciso verificar se não existe qualquer serviço do grid iniciado, para isto basta utilizar o comando abaixo:

[root@srvprd01 srvprd01]# ps -ef| grep ohasd.bin
root     44843 31674  0 20:33 pts/1    00:00:00 grep ohasd.bin

Caso algum processo seja retornado indicando que o serviço está ativo basta para-lo

# <GI_HOME>/bin/crsctl stop crs -f 

Uma vez parado, pode-se proceder com o restore do OLR e startup:


[root@srvprd01 cdata]# $GI_HOME/bin/ocrconfig -local -restore /oracle/GRID/11204/cdata/srvprd01/backup_20150218_104154.olr

[root@srvprd01 oracle]# crsctl start crs
CRS-4123: Oracle High Availability Services has been started

Referências:

https://docs.oracle.com/cd/E11882_01/rac.112/e41959/votocr.htm#CWADD91099
How to backup or restore OLR in 11.2/12c Grid Infrastructure (Doc ID 1193643.1)
Mais informações →
Postagens mais antigas Página inicial

Translate

# ACE Program

#Oracle

#Oracle
Disclaimer: The views expressed on this blog are my own and do not necessarily reflect the views of Oracle.

#Blog reconhecido

#ARTICULISTA

Marcadores

Postagens populares