Introdução
O Oracle Fleet Patching & Provisioning (FPP) é um produto desenvolvido pela Oracle para provisionamento e atualização de softwares Oracle de forma automatizada e centralizada, tais como Oracle Grid Infrastructure, Oracle Database e Oracle Exadata Software. A ferramenta é ideal para padronização de deploy e patching em grandes ambientes (muitos servidores, databases e etc) e é uma das soluções recomendadas na arquitetura Maximum Availability Architecture (MAA). O FPP vem embarcado como um recurso do Oracle Grid Infrastructure e foi lançado na versão do 12cR2 do Grid Infrastructure.

O Fleet Patching & Provisioning mantém um repositório de binários Oracle em que cada binário é chamado de Gold Image, uma Gold Image é criada a partir de um Oracle Home existente e esta Gold Image pode ser utilizada para provisionar novos Oracle Homes nos servidores de banco de dados de forma automatizada. Isso permite aplicarmos os Release Updates trimestrais em um único Oracle Home e usar o FPP para propagar a versão atualizada do software para os demais servidores na infraestrutura.
Os servidores que são acessados e gerenciados pelo FPP Server são chamados de FPP Target, um FPP Target pode ou não ter um FPP Client configurado. Na ausência de um FPP Client, o FPP Server pode executar as tarefas via conexão SSH, isso permite usar o Fleet Patching & Provisioning para instalar o Oracle Grid Infrastructure de forma automatizada em um novo servidor sem a necessidade de configurar um agente previamente.

Após provisionar um Oracle Home no servidor, podemos usar um único comando para mover os serviços do Grid Infrastructure ou as instâncias do Oracle Database para o novo Oracle Home de forma automatizada. O FPP se encarrega de copiar os arquivos de configuração do Oracle Home atual para o novo, isso inclui itens como spfile, password file, tnsnames.ora, etc. Ao final da transição, o FPP executa os procedimentos de pós patch, como datapatch para Oracle 12c ou superior, ou catbundle.sql para Oracle 11gR2.
Em resumo, o Fleet Patching & Provisioning executa uma aplicação de patch usando a estratégia Out-Of-Place (OOP) de forma automatizada e com um único comando, cuidando de cada etapa do processo e simplificando de tal forma que podemos fazer atualizações em grande escala no ambiente.
Local Fleet Patching and Provisioning
A partir da versão 18c, o FPP pode operar em modo local, permitindo simplificar a aplicação de patch no Grid Infrastructure e no Database usando a estratégia Out-Of-Place sem a necessidade de ter um FPP Server configurado, essa solução é ideal para pequenos ambientes onde podemos instalar os novos Oracle Home manualmente em cada servidor e usar o FPP localmente apenas para fazer o “switch home”.
Configurando FPP Server
A configuração do FPP Server e do FPP Client só é suportada em instalações Full Stack do Grid Infrastructure, isto é, instalações do Grid em modo Cluster e não Standalone. Para o caso de FPP Targets com Oracle Grid Infrastructure Standalone Server (Oracle Restart) ou até mesmo sem o Grid, devemos utilizar o FPP com conexão via SSH.
Neste post demonstrarei como configurar o FPP Server e o FPP Client, posteriormente postarei exemplos de como utilizar o FPP para criar imagens de software e provisioná-las usando através do FPP Client e também via SSH.
Requisitos para o FPP Server
Nesta etapa é necessário ter conhecimento prévio em instalação e configuração de Oracle RAC e ASM, assim como já ter um ambiente pronto com os seguintes requisitos:
- Oracle Grid Infrastructure 19c Full Stack (Clusterware)
- Oracle Grid Infrastructure Management Repository (GIMR)
- Diskgroup com COMPATIBLE.ASM e COMPATIBLE.ADVM 12.1 ou superior
- Módulos ACFS instalados
NOTA 1: Para o GI Full Stack, precisamos de uma instalação em modo cluster, mas não é necessário ter mais de 1 node, pode ser realizada a instalação em modo cluster com um único servidor (como se fosse Oracle Restart, só que vai ser Clusterware). Esse é um padrão utilizado nos DB System da OCI.
NOTA 2: O Fleet Patching & Provisioning (FPP) foi originalmente lançado como Rapid Home Provisioning (RHP) no 12cR2, a Oracle mudou o nome para Fleet Patching & Provisioning no 18c após as evoluções nos produtos que não se limitavam somente a provisionamento de Oracle Home. Por esse motivo, a maioria dos comandos e texto de ajuda farão referência a “RHP” ao invés de “FPP” (por exemplo, o comando rhpctl).
Verificando o status do MGMTDB
[grid@fppserver01 ~]$ srvctl status mgmtdb Database is enabled Instance -MGMTDB is running on node fppserver01
Criando Diskgroup no ASM para servir como repositório de Gold Images do FPP_SERVER
[grid@fppserver01 ~]$ . oraenv <<< +ASM1 ORACLE_SID = [-MGMTDB] ? The Oracle base remains unchanged with value /u01/app/grid [grid@fppserver01 ~]$ [grid@fppserver01 ~]$ sqlplus / as sysasm SQL*Plus: Release 19.0.0.0.0 - Production on Mon Jul 5 21:56:14 2021 Version 19.11.0.0.0 Copyright (c) 1982, 2020, Oracle. All rights reserved. Connected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.11.0.0.0 SQL> CREATE DISKGROUP FPP_REPO EXTERNAL REDUNDANCY DISK '/dev/oracleasm/disks/FPP1' ATTRIBUTE 'AU_SIZE'='4M', 'COMPATIBLE.ASM'='12.1', 'COMPATIBLE.ADVM'='12.1'; Diskgroup created. SQL>
Adicionando um Grid Name Service (GNS) Virtual IP no Grid Infrastructure
Esse IP será usado pelos FPP Clients para comunicar com FPP Server. Note que o IP não deve estar sendo utilizado atualmente e ele será iniciado como um IP Virtual no servidor.
su - root . oraenv <<< +ASM1 srvctl add gns -vip 192.168.1.18 srvctl start gns srvctl status gns
Parando e Removendo o FPP Local
A partir da versão 18c o FPP vem habilitado em modo local, essa feature permite realizar o move de Grid Home e Oracle Home localmente, precisamos desabilitar essa configuração para começar usar o FPP Server.
srvctl stop rhpserver srvctl remove rhpserver
Configurando e Iniciando o FPP Server
Adicionando o FPP Server novamente, informando o nome do ponto de montagem utilizado como base pelas partições ACFS (-storage) e o nome do diskgroup no ASM no qual os volumes serão criados (-diskgroup):
srvctl add rhpserver -storage /fpp_images -diskgroup FPP_REPO srvctl start rhpserver srvctl status rhpserver
Verificando todas as informações da configuração do FPP Server:
[root@fppserver01 ~]# srvctl config rhpserver Storage base path: /fpp_images Disk Groups: FPP_REPO Port number: 8896 Temporary Location: Transfer port range: Rapid Home Provisioning Server is enabled Rapid Home Provisioning Server is individually enabled on nodes: Rapid Home Provisioning Server is individually disabled on nodes: Email address: Mail server address: Mail server port: Transport Level Security disabled HTTP Secure is enabled
Neste momento deve existir uma nova partição ACFS no servidor:
[root@fppserver01 ~]# df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 2.8G 0 2.8G 0% /dev tmpfs 2.8G 845M 2.0G 30% /dev/shm tmpfs 2.8G 9.1M 2.8G 1% /run tmpfs 2.8G 0 2.8G 0% /sys/fs/cgroup /dev/sda1 10G 5.6G 4.5G 56% / tmpfs 566M 0 566M 0% /run/user/54322 /dev/sdb1 30G 21G 9.6G 69% /u01 /dev/asm/ghchkpt-365 5.2G 583M 4.7G 11% /fpp_images/chkbase
Vamos validar a configuração do FPP Server criando uma primeira Gold Image de teste, utilizando o Grid Home do próprio servidor no qual o FPP Server está executando:
[grid@fppserver01 ~]$ rhpctl import image -image gi19cR11 -imagetype ORACLEGISOFTWARE -path /u01/app/product/19.0.0.0/grid/ fppserver01.dibiei.com: Audit ID: 2 fppserver01.dibiei.com: Creating a new ACFS file system for image "gi19cR11" ... fppserver01.dibiei.com: Copying files... fppserver01.dibiei.com: Copying home contents... fppserver01.dibiei.com: Changing the home ownership to user grid... fppserver01.dibiei.com: Changing the home ownership to user grid...
Pesquisando a Gold Image no repositório:
[grid@fppserver01 ~]$ rhpctl query image -image gi19cR11 fppserver01.dibiei.com: Audit ID: 4 Image name: gi19cR11 Owner: grid@fppserver Site: fppserver Access control: USER:grid@fppserver Access control: ROLE:OTHER Access control: ROLE:GH_IMG_PUBLISH Access control: ROLE:GH_IMG_ADMIN Access control: ROLE:GH_IMG_VISIBILITY Parent Image: Software home path: /fpp_images/images/igi19cR11724334/.ACFS/snaps/igi19cR11/swhome Image state: PUBLISHED Image size: 10403 Megabytes Image Type: ORACLEGISOFTWARE Image Version: 19.0.0.0.0:19.11.0.0.0 Groups configured in the image: OSDBA=asmdba,OSASM=asmadmin,OSBACKUP=asmadmin,OSDG=asmadmin,OSKM=asmadmin,OSRAC=asmadmin Image platform: Linux_AMD64 Interim patches installed: 32585572,32584670,32579761,32576499,32545013 Contains a non-rolling patch: FALSE Complete: TRUE [grid@fppserver01 ~]$
Um novo filesystem é criado para cada Gold Image:
[grid@fppserver01 ~]$ df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 2.8G 0 2.8G 0% /dev tmpfs 2.8G 845M 2.0G 30% /dev/shm tmpfs 2.8G 9.1M 2.8G 1% /run tmpfs 2.8G 0 2.8G 0% /sys/fs/cgroup /dev/sda1 10G 5.6G 4.5G 56% / tmpfs 566M 0 566M 0% /run/user/54322 /dev/sdb1 30G 21G 9.6G 69% /u01 /dev/asm/ghchkpt-365 5.2G 582M 4.7G 11% /fpp_images/chkbase /dev/asm/ghvol445644-365 24G 11G 14G 46% /fpp_images/images/igi19cR11724334
Configurando um FPP Client (Opcional)
Podemos configurar o FPP Client em um servidor e facilitar ainda mais as operações com Fleet Patching & Provisioning, o FPP Client é na verdade um outro Cluster Oracle que é gerenciado pelo Cluster do FPP Server. Dessa forma, para esta etapa, é necessário ter um outro ambiente com Oracle Grid Infrastructure com instalação Full Stack.
No cluster que será configurado como FPP Client, obtenha o nome do cluster:
[grid@lab03 ~]$ . oraenv <<< +ASM1 [grid@lab03 ~]$ olsnodes -c lab03-cluster
No cluster do FPP Server, gere um arquivo de configuração com o metadados a ser importado no FPP Client (no parâmetro -client, devemos informar o nome do cluster correto retornado no comando anterior):
[grid@fppserver01 ~]$ . oraenv <<< +ASM1 [grid@fppserver01 ~]$ rhpctl add client -client lab03-cluster -toclientdata /tmp/ fppserver01.dibiei.com: Audit ID: 5 fppserver01.dibiei.com: Creating client data ... fppserver01.dibiei.com: Client data created for client "lab03-cluster".
O parâmetro -toclientdata indica o caminho no qual o arquivo xml será gerado. O nome do arquivo será cluster_name.xml:
[grid@fppserver01 ~]$ ls -lrt /tmp/lab03-cluster.xml -rw-r--r-- 1 grid oinstall 4815 Jul 7 22:28 /tmp/lab03-cluster.xml
Copie o arquivo xml para o cluster que será adicionado como FPP Client:
[grid@fppserver01 ~]$ scp /tmp/lab03-cluster.xml grid@lab03.dibiei.com:/tmp/ grid@lab03.dibiei.com's password: lab03-cluster.xml 100% 4815 9.7MB/s 00:00
No Cluster que será adicionado como FPP Client, adicione crie o FPP Client usando o arquivo xml copiado do FPP Server:
[root@lab03 grid]# srvctl add rhpclient -clientdata /tmp/lab03-cluster.xml
Inicie o FPP Client
[root@lab03 grid]# srvctl start rhpclient
Consultando a Gold Image criada no FPP Server a partir do FPP Client:
[grid@lab03 ~]$ rhpctl query image fppserver01.dibiei.com: Audit ID: 7 Image name: gi19cR11 [grid@lab03 ~]$ [grid@lab03 ~]$ rhpctl query image -image gi19cR11 fppserver01.dibiei.com: Audit ID: 8 Image name: gi19cR11 Owner: grid@fppserver Site: fppserver Access control: USER:grid@fppserver Access control: ROLE:OTHER Access control: ROLE:GH_IMG_PUBLISH Access control: ROLE:GH_IMG_ADMIN Access control: ROLE:GH_IMG_VISIBILITY Parent Image: Software home path: /fpp_images/images/igi19cR11724334/.ACFS/snaps/igi19cR11/swhome Image state: PUBLISHED Image size: 10403 Megabytes Image Type: ORACLEGISOFTWARE Image Version: 19.0.0.0.0:19.11.0.0.0 Groups configured in the image: OSDBA=asmdba,OSASM=asmadmin,OSBACKUP=asmadmin,OSDG=asmadmin,OSKM=asmadmin,OSRAC=asmadmin Image platform: Linux_AMD64 Interim patches installed: 32585572,32584670,32579761,32576499,32545013 Contains a non-rolling patch: FALSE Complete: TRUE
Conclusão
Este post fez uma introdução ao funcionamento e capacidades básicas do Oracle Fleet Patching & Provisioning, assim como os procedimentos para configurar um FPP Server e FPP Client. Atualmente a ferramenta ainda não é recomenda pela Oracle em ambientes com ODA e Database Cloud Service, pois ainda não há integração com os repositórios dessas tecnologias, assim você poderia atualizar para uma versão com FPP e os agentes do ODA ou DBCS enxergarem outra.
Nos próximos posts pretendo demonstrar as operações que já tive a oportunidade de testar, tais como o provisionamento de Grid Infrastructure e Database para Targets com e sem FPP Client, operações de atualização de versão do Grid e do Database.