Introdução sobre o DBAASCLI
O Exadata Cloud Service (ExaCS) e Exadata Cloud at Customer (ExaCC) possuem o utilitário de linha de comando DBAASCLI, desiginado para executar tarefas administrativas no Exadata de uma forma simples e amigável. O uso do DBAASCLI é opcional, mas muito recomendado caso seja necessário realizar alguma operação que não seja através da console OCI, isso porque certas alterações realizadas “por fora” das ferramentas da Cloud podem resultar em divergências entre os metadados da OCI e o que realmente está presente no ambiente.
Um exemplo simples disso seria a alteração de senha do SYS, a qual conseguimos fazer simplesmente alterando ou recriando o PWFILE manualmente, mas isso poderia causar erros de autenticação nas APIs da OCI, uma vez que ela ainda tentará conectar com a senha antiga. Se usarmos o DBAASCLI para essa atividade, além de atualizar o pwfile nos servidores, os metadados da OCI também são atualizados com a nova senha.
Comandos Básicos de Backup para DBAs
O DBAASCLI é um utilitário de função geral que visa cobrir a maioria das tarefas administrativas de um banco de dados (a nível de infra), mas neste post iremos focar em como usar os comandos relacionados a backup, o que pode ser útil para consultar informações detalhadas dos backups automáticos apresentados na console OCI, assim como criar novas rotinas de backup de longa duração.
O comando dbaascli precisa ser executado com o usuário root, ou com algum usuário que tenha o privilégio de sudo, que neste caso seria o usuário opc ou algum outro usuário que tenha recebido o privilégio após o provisionamento do Exadata.
Se você já tem alguma experiência com DBCLI nos DB Systems, deve se sentir um pouco mais familiarizado com os comandos do DBAASCLI.
Listando JOBs de Backup
Listando todos os backups Full (Level 0) e Incremental (Level 1):
# dbaascli database backup --dbName orcl --list
DBAAS CLI version 22.3.1.0.1 Executing command database backup --dbName orcl --list DBaaS Backup API V1.5 @2022 Multi-Oracle home -> Action : list -> logfile: /var/opt/oracle/log/orcl/bkup_api_log/bkup_api_8e91a6cb_20220829191040.662993.log -> Listing all backups Backup Tag Completion Date (UTC) Type ------------------------- ------------------------- ------------- TAG20220822T210101 08/23/2022 03:06:27 full TAG20220823T065859 08/23/2022 13:04:28 incremental TAG20220824T065957 08/24/2022 13:05:26 incremental TAG20220824T101403 08/24/2022 16:19:35 incremental TAG20220824T115054 08/24/2022 17:56:26 incremental TAG20220824T120253 08/24/2022 18:08:21 incremental TAG20220824T143753 08/24/2022 20:42:54 full TAG20220824T194422 08/25/2022 01:49:30 incremental TAG20220824T195914 08/25/2022 02:04:23 incremental TAG20220825T175625 08/26/2022 00:01:31 incremental TAG20220826T181008 08/27/2022 00:15:12 incremental TAG20220827T175821 08/28/2022 00:03:32 incremental TAG20220828T175552 08/29/2022 00:00:52 full TAG20220829T175741 08/30/2022 00:02:51 incremental dbaascli execution completed
DICA: Na console OCI, todos os backups são apresentados como “Incremental”, mesmo aqueles que são FULL. Isso ocorre porque tecnicamente o backup que chamamos de “FULL”, trata-se de um Incremental Level 0 no RMAN. O DBAASCLI trata o Level 0 como “full” na lista de backups executados, enquanto a console ainda não apresenta essa diferenciação.
Listando todos os backups, incluindo os de Archivelogs:
# dbaascli database backup --dbName orcl --showHistory --all
[root@exacs ~]# dbaascli database backup --dbName orcl --showHistory --all
DBAAS CLI version 22.3.1.0.1
Executing command database backup --dbName orcl --showHistory --all
DBaaS Backup API V1.5 @2022 Multi-Oracle home
-> Action : list_jobs
-> logfile: /var/opt/oracle/log/orcl/bkup_api_log/bkup_api_9ae79509_20220829191159.777805.log
UUID | DATE | STATUS | TAG | ACTION
c50f9a6a26e311ed964e020017006821 | 2022-08-28 15:12:09 | success | TAG20220828T121402 | archivelog-backup
dd75912026e511ed8762020017006821 | 2022-08-28 15:27:09 | success | TAG20220828T122859 | archivelog-backup
f652354826e711edaf01020017006821 | 2022-08-28 15:42:09 | success | TAG20220828T124402 | archivelog-backup
0e5dc97026ea11ed9e90020017006821 | 2022-08-28 15:57:09 | success | TAG20220828T125859 | archivelog-backup
26ee884c26ec11eda5ec020017006821 | 2022-08-28 16:12:10 | success | TAG20220828T131405 | archivelog-backup
3f43eb8826ee11eda34e020017006821 | 2022-08-28 16:27:10 | success | TAG20220828T132901 | archivelog-backup
5806a7c626f011edaf90020017006821 | 2022-08-28 16:42:09 | success | TAG20220828T134400 | archivelog-backup
705e5fba26f211edb09a020017006821 | 2022-08-28 16:57:09 | success | TAG20220828T135857 | archivelog-backup
88e4c1da26f411ed86a2020017006821 | 2022-08-28 17:12:10 | success | TAG20220828T141401 | archivelog-backup
a1478c1a26f611edb45e020017006821 | 2022-08-28 17:27:09 | success | TAG20220828T142906 | archivelog-backup
b996c99626f811ed8666020017006821 | 2022-08-28 17:42:10 | success | TAG20220828T144402 | archivelog-backup
d1f08dae26fa11eda443020017006821 | 2022-08-28 17:57:09 | success | TAG20220828T145859 | archivelog-backup
eac37ac426fc11edae8d020017006821 | 2022-08-28 18:12:10 | success | TAG20220828T151409 | archivelog-backup
030d100226ff11edb640020017006821 | 2022-08-28 18:27:09 | success | TAG20220828T152904 | archivelog-backup
1b68fde4270111edb27a020017006821 | 2022-08-28 18:42:09 | success | TAG20220828T154404 | archivelog-backup
33acfd9a270311edbc7e020017006821 | 2022-08-28 18:57:10 | success | TAG20220828T155855 | archivelog-backup
4c51a4c0270511edb160020017006821 | 2022-08-28 19:12:09 | success | TAG20220828T161400 | archivelog-backup
64920b4a270711ed90b4020017006821 | 2022-08-28 19:27:09 | success | TAG20220828T162906 | archivelog-backup
7cf22970270911edbd3e020017006821 | 2022-08-28 19:42:09 | success | TAG20220828T164357 | archivelog-backup
95c78c9a270b11ed8da5020017006821 | 2022-08-28 19:57:09 | success | TAG20220828T165859 | archivelog-backup
ae5f2590270d11edbda1020017006821 | 2022-08-28 20:12:10 | success | TAG20220828T171356 | archivelog-backup
c65831da270f11ed8832020017006821 | 2022-08-28 20:27:09 | success | TAG20220828T172902 | archivelog-backup
df04ac7a271111edad8c020017006821 | 2022-08-28 20:42:09 | success | TAG20220828T174355 | archivelog-backup
6dae43b8271311edbe3b020017006821 | 2022-08-28 20:53:14 | success | TAG20220828T175552 | create-backup-full
f735b850271311edb647020017006821 | 2022-08-28 20:57:10 | success | TAG20220828T175901 | archivelog-backup
0ff67774271611ed8192020017006821 | 2022-08-28 21:12:09 | success | TAG20220828T181405 | archivelog-backup
284e9eb2271811edb198020017006821 | 2022-08-28 21:27:09 | success | TAG20220828T182904 | archivelog-backup
40cb7f62271a11edb7c3020017006821 | 2022-08-28 21:42:09 | success | TAG20220828T184400 | archivelog-backup
59605d0c271c11ed920c020017006821 | 2022-08-28 21:57:11 | success | TAG20220828T185903 | archivelog-backup
719e9062271e11eda6f7020017006821 | 2022-08-28 22:12:09 | success | TAG20220828T191400 | archivelog-backup
89cf019c272011ed949d020017006821 | 2022-08-28 22:27:09 | success | TAG20220828T192902 | archivelog-backup
a23e5118272211eda156020017006821 | 2022-08-28 22:42:09 | success | TAG20220828T194359 | archivelog-backup
bb0b2246272411edaab9020017006821 | 2022-08-28 22:57:10 | success | TAG20220828T195859 | archivelog-backup
d37a175e272611edb179020017006821 | 2022-08-28 23:12:09 | success | TAG20220828T201407 | archivelog-backup
ebdb1dd2272811ed9b75020017006821 | 2022-08-28 23:27:09 | success | TAG20220828T202901 | archivelog-backup
0428f63c272b11ed9f2a020017006821 | 2022-08-28 23:42:09 | success | TAG20220828T204358 | archivelog-backup
1cc655ca272d11ed9128020017006821 | 2022-08-28 23:57:10 | success | TAG20220828T205857 | archivelog-backup
3539b0c8272f11ed9424020017006821 | 2022-08-29 00:12:09 | success | TAG20220828T211406 | archivelog-backup
4d9aa68e273111edab34020017006821 | 2022-08-29 00:27:09 | success | TAG20220828T212856 | archivelog-backup
65cd8cb0273311ed8034020017006821 | 2022-08-29 00:42:09 | success | TAG20220828T214356 | archivelog-backup
7e369f06273511edaeed020017006821 | 2022-08-29 00:57:10 | success | TAG20220828T215907 | archivelog-backup
96fc69f6273711edb20a020017006821 | 2022-08-29 01:12:10 | success | TAG20220828T221405 | archivelog-backup
af568732273911ed9e0b020017006821 | 2022-08-29 01:27:09 | success | TAG20220828T222905 | archivelog-backup
c7cbe8d2273b11ed830b020017006821 | 2022-08-29 01:42:09 | success | TAG20220828T224357 | archivelog-backup
e0215668273d11ed93f2020017006821 | 2022-08-29 01:57:09 | success | TAG20220828T225857 | archivelog-backup
f8776ad4273f11ed920a020017006821 | 2022-08-29 02:12:09 | success | TAG20220828T231403 | archivelog-backup
10defac2274211edab02020017006821 | 2022-08-29 02:27:10 | success | TAG20220828T232859 | archivelog-backup
29683d72274411ed98f9020017006821 | 2022-08-29 02:42:10 | success | TAG20220828T234404 | archivelog-backup
4219f9e4274611edba63020017006821 | 2022-08-29 02:57:09 | success | TAG20220828T235901 | archivelog-backup
5aacdfb0274811ed9430020017006821 | 2022-08-29 03:12:10 | success | TAG20220829T001404 | archivelog-backup
72fb8ad8274a11ed98f1020017006821 | 2022-08-29 03:27:09 | success | TAG20220829T002901 | archivelog-backup
8b7980cc274c11ed8261020017006821 | 2022-08-29 03:42:10 | success | TAG20220829T004403 | archivelog-backup
a3acdad4274e11ed9f5e020017006821 | 2022-08-29 03:57:09 | success | TAG20220829T005900 | archivelog-backup
bc551f0e275011ed92df020017006821 | 2022-08-29 04:12:11 | success | TAG20220829T011413 | archivelog-backup
d4b14ddc275211ed868d020017006821 | 2022-08-29 04:27:09 | success | TAG20220829T012856 | archivelog-backup
ed5fe8b4275411ed800c020017006821 | 2022-08-29 04:42:10 | success | TAG20220829T014356 | archivelog-backup
05d898c6275711edae0c020017006821 | 2022-08-29 04:57:10 | success | TAG20220829T015902 | archivelog-backup
1e1e05a4275911ed86fc020017006821 | 2022-08-29 05:12:10 | success | TAG20220829T021400 | archivelog-backup
362a7ca2275b11edb663020017006821 | 2022-08-29 05:27:10 | success | TAG20220829T022901 | archivelog-backup
4ee604e4275d11ed89e0020017006821 | 2022-08-29 05:42:09 | success | TAG20220829T024407 | archivelog-backup
676ecbd4275f11eda096020017006821 | 2022-08-29 05:57:10 | success | TAG20220829T025900 | archivelog-backup
7fef38cc276111edacea020017006821 | 2022-08-29 06:12:09 | success | TAG20220829T031406 | archivelog-backup
983afd2e276311eda0e5020017006821 | 2022-08-29 06:27:09 | success | TAG20220829T032906 | archivelog-backup
b0cd5e02276511edb4ae020017006821 | 2022-08-29 06:42:09 | success | TAG20220829T034356 | archivelog-backup
c8ee1984276711eda123020017006821 | 2022-08-29 06:57:09 | success | TAG20220829T035902 | archivelog-backup
e1885c6e276911ed9cd3020017006821 | 2022-08-29 07:12:09 | success | TAG20220829T041401 | archivelog-backup
f9f11afa276b11eda3c7020017006821 | 2022-08-29 07:27:09 | success | TAG20220829T042901 | archivelog-backup
123db4ae276e11edbf4c020017006821 | 2022-08-29 07:42:09 | success | TAG20220829T044355 | archivelog-backup
2b12efba277011ed832e020017006821 | 2022-08-29 07:57:09 | success | TAG20220829T045903 | archivelog-backup
436fc068277211eda9b2020017006821 | 2022-08-29 08:12:09 | success | TAG20220829T051403 | archivelog-backup
5be624fa277411ed9c83020017006821 | 2022-08-29 08:27:09 | success | TAG20220829T052856 | archivelog-backup
73f39684277611edb867020017006821 | 2022-08-29 08:42:09 | success | TAG20220829T054403 | archivelog-backup
8c7ab924277811ed9e0a020017006821 | 2022-08-29 08:57:09 | success | TAG20220829T055859 | archivelog-backup
a4dac8c2277a11edb26b020017006821 | 2022-08-29 09:12:09 | success | TAG20220829T061411 | archivelog-backup
bdaae290277c11ed9f1f020017006821 | 2022-08-29 09:27:10 | success | TAG20220829T062901 | archivelog-backup
d6382d7a277e11ed93ff020017006821 | 2022-08-29 09:42:10 | success | TAG20220829T064400 | archivelog-backup
ee54bd22278011ed9acb020017006821 | 2022-08-29 09:57:10 | success | TAG20220829T065857 | archivelog-backup
06e373c2278311ed97e3020017006821 | 2022-08-29 10:12:09 | success | TAG20220829T071406 | archivelog-backup
1f3b65b8278511ed9e67020017006821 | 2022-08-29 10:27:09 | success | TAG20220829T072859 | archivelog-backup
37f502e2278711ed9398020017006821 | 2022-08-29 10:42:10 | success | TAG20220829T074402 | archivelog-backup
500f0376278911ed8c30020017006821 | 2022-08-29 10:57:10 | success | TAG20220829T075901 | archivelog-backup
686ae0b4278b11ed96a3020017006821 | 2022-08-29 11:12:09 | success | TAG20220829T081407 | archivelog-backup
80e7cf7e278d11ed9fa4020017006821 | 2022-08-29 11:27:09 | success | TAG20220829T082901 | archivelog-backup
999d85b6278f11ed850f020017006821 | 2022-08-29 11:42:09 | success | TAG20220829T084357 | archivelog-backup
b1f081e8279111edbe5e020017006821 | 2022-08-29 11:57:09 | success | TAG20220829T085854 | archivelog-backup
ca80b8e8279311edb077020017006821 | 2022-08-29 12:12:10 | success | TAG20220829T091356 | archivelog-backup
e2fe039c279511edbd75020017006821 | 2022-08-29 12:27:11 | success | TAG20220829T092902 | archivelog-backup
fb3a076a279711ed9b5c020017006821 | 2022-08-29 12:42:10 | success | TAG20220829T094402 | archivelog-backup
13982e02279a11edbc12020017006821 | 2022-08-29 12:57:09 | success | TAG20220829T095855 | archivelog-backup
2c0c3274279c11ed8670020017006821 | 2022-08-29 13:12:10 | success | TAG20220829T101407 | archivelog-backup
44665942279e11edb2f3020017006821 | 2022-08-29 13:27:09 | success | TAG20220829T102901 | archivelog-backup
5d22e32227a011ed83d2020017006821 | 2022-08-29 13:42:09 | success | TAG20220829T104401 | archivelog-backup
756a8f1e27a211ed87e5020017006821 | 2022-08-29 13:57:09 | success | TAG20220829T105900 | archivelog-backup
8dfb42b027a411ed9aa4020017006821 | 2022-08-29 14:12:09 | success | TAG20220829T111403 | archivelog-backup
a65c5bc627a611eda884020017006821 | 2022-08-29 14:27:09 | success | TAG20220829T112859 | archivelog-backup
beb379c827a811ed8b09020017006821 | 2022-08-29 14:42:09 | success | TAG20220829T114405 | archivelog-backup
d770ec3c27aa11ed88d3020017006821 | 2022-08-29 14:57:11 | success | TAG20220829T115908 | archivelog-backup
efd4506427ac11ed8939020017006821 | 2022-08-29 15:12:10 | success | TAG20220829T121358 | archivelog-backup
08697db427af11ed8990020017006821 | 2022-08-29 15:27:10 | success | TAG20220829T122904 | archivelog-backup
20cbfd6c27b111eda38c020017006821 | 2022-08-29 15:42:10 | success | TAG20220829T124357 | archivelog-backup
38ee458827b311ed8a0e020017006821 | 2022-08-29 15:57:10 | success | TAG20220829T125900 | archivelog-backup
5144121427b511edbb5e020017006821 | 2022-08-29 16:12:10 | success | TAG20220829T131403 | archivelog-backup
69a02bb627b711ed993d020017006821 | 2022-08-29 16:27:09 | success | TAG20220829T132859 | archivelog-backup
821b4c8c27b911ed8677020017006821 | 2022-08-29 16:42:09 | success | TAG20220829T134356 | archivelog-backup
9a841ee627bb11ed95b8020017006821 | 2022-08-29 16:57:10 | success | TAG20220829T135905 | archivelog-backup
b34308c827bd11eda8b5020017006821 | 2022-08-29 17:12:10 | success | TAG20220829T141401 | archivelog-backup
cb9b40be27bf11eda907020017006821 | 2022-08-29 17:27:10 | success | TAG20220829T142901 | archivelog-backup
e3ebb0e827c111ed8cfa020017006821 | 2022-08-29 17:42:10 | success | TAG20220829T144404 | archivelog-backup
fcb2bc1e27c311ed9f9b020017006821 | 2022-08-29 17:57:10 | success | TAG20220829T145910 | archivelog-backup
1526273427c611edacb1020017006821 | 2022-08-29 18:12:11 | success | TAG20220829T151407 | archivelog-backup
2d57944e27c811ed83b3020017006821 | 2022-08-29 18:27:11 | success | TAG20220829T152912 | archivelog-backup
462758e027ca11ed90c8020017006821 | 2022-08-29 18:42:11 | success | TAG20220829T154406 | archivelog-backup
5e73e1aa27cc11eda0e8020017006821 | 2022-08-29 18:57:11 | success | TAG20220829T155912 | archivelog-backup
770ec05227ce11ed9e53020017006821 | 2022-08-29 19:12:11 | success | TAG20220829T161403 | archivelog-backup
8f71bb7a27d011ed8df4020017006821 | 2022-08-29 19:27:11 | success | TAG20220829T162903 | archivelog-backup
a770f73427d211edaa1f020017006821 | 2022-08-29 19:42:10 | success | TAG20220829T164400 | archivelog-backup
c035d5c627d411edb0c9020017006821 | 2022-08-29 19:57:09 | success | TAG20220829T165908 | archivelog-backup
d88f0bb827d611eda6e3020017006821 | 2022-08-29 20:12:10 | success | TAG20220829T171406 | archivelog-backup
f0ed8de027d811edae25020017006821 | 2022-08-29 20:27:09 | success | TAG20220829T172900 | archivelog-backup
093e8b1827db11eda14e020017006821 | 2022-08-29 20:42:10 | success | TAG20220829T174359 | archivelog-backup
ababf53827dc11ed8021020017006821 | 2022-08-29 20:53:47 | success | TAG20220829T175741 | create-backup-incremental
21dbf7a827dd11ed91a6020017006821 | 2022-08-29 20:57:09 | success | TAG20220829T175859 | archivelog-backup
3a7ffb9027df11ed9cf0020017006821 | 2022-08-29 21:12:11 | success | TAG20220829T181404 | archivelog-backup
52d409be27e111eda53e020017006821 | 2022-08-29 21:27:09 | success | TAG20220829T182907 | archivelog-backup
6b172b1c27e311edb5e5020017006821 | 2022-08-29 21:42:09 | success | TAG20220829T184403 | archivelog-backup
83ab97ba27e511ed8302020017006821 | 2022-08-29 21:57:11 | success | TAG20220829T185906 | archivelog-backup
dbaascli execution completed
Observe que todos os backups tem um UUID e uma TAG, essas informações podem ser usadas em outros comandos do DBAASCLI para obter o status da operação ou gerar um relatório de um backup que já foi concluído.
DICA: O UUID é o identificador único de um JOB de backup e pode ser usado para rastrear um JOB específcio em views do RMAN e em arquivos de log.
Gerando Relatório de Backup
Neste exemplo estou gerando um relatório para o último backup executado (opção –latest):
# dbaascli database backup --dbName orcl --getBackupReport --latest --json /tmp/orcl-latest-backup.txt
Para gerar um relatório usando uma TAG específica:
# dbaascli database backup --dbName orcl --getBackupReport --tag TAG20220829T175741 --json /tmp/TAG20220829T175741.txt
Exemplo do resultado (cat no arquivo /tmp/orcl-latest-backup.txt):
{
"OKVWallet": "",
"backupLocation": "https://swiftobjectstorage.xx-region-1.oraclecloud.com/v1/abc123/xpto999",
"backupType": "Archivelog",
"cfBackupHandle": "c-1641204439-20220829-4e",
"createTime": "2022-08-29T22:12:11",
"dbDataSize": "16396",
"dbId": "1641204439",
"dbInfo": {
"dbEdition": "EE_XP",
"dbType": "RAC"
},
"dbName": "orcl",
"dbRedoSize": "64182",
"dbUniqueName": "orcl_teste",
"encryptionType": "file",
"keepDays": "15",
"kmsKeyOcid": "",
"ohome_create": "",
"ohome_tag": "",
"oraHomeVersion": "19.14.0.0.0",
"signature": "dbaastools",
"sourceSystemTimeZone": "-03",
"spfBackupHandle": "c-1641204439-20220829-4e",
"tag": "TAG20220829T191410",
"tdeWalletLoc": "https://swiftobjectstorage.xx-region-1.oraclecloud.com/v1/abc123/xpto999/exacs-1641204439-DBTRegular-L11661806254220r2T-regular/ohcfgfiles_20220829_1757.tar.gz",
"updatedTime": "2022-08-29T22:15:12"
}
Forçando o Início do Próximo Backup Full ou Incremental
É possível forçar o início de um backup Level 0 ou Level 1. Esta opção pode ser interessante em cenários de testes de tempo de backup após modificar alguma parametrização, ou até mesmo se for necessário um backup da base antes de alguma change.
Por padrão, o comando –start sem informar o tipo de backup resulta em um Incremental Lv1:
# dbaascli database backup --dbName orcl --start
DBAAS CLI version 22.3.1.0.1 Executing command database backup --dbName orcl --start DBaaS Backup API V1.5 @2022 Multi-Oracle home -> Action : bkup_start -> logfile: /var/opt/oracle/log/orcl/bkup_api_log/bkup_api_22d2da75_20220829191810.134585.log UUID 77bed7d427e811ed9c3d020017006821 for this backup ** process started with PID: 366162 ** see log file for monitor progress ------------------------------------- dbaascli execution completed
Listando os backups novamente:
[root@exacs ~]# dbaascli database backup --dbName orcl --showHistory
DBAAS CLI version 22.3.1.0.1
Executing command database backup --dbName orcl --showHistory
DBaaS Backup API V1.5 @2022 Multi-Oracle home
-> Action : list_jobs
-> logfile: /var/opt/oracle/log/orcl/bkup_api_log/bkup_api_faf3d6d1_20220829192922.594740.log
UUID | DATE | STATUS | TAG | ACTION
6dae43b8271311edbe3b020017006821 | 2022-08-28 20:53:14 | success | TAG20220828T175552 | create-backup-full
ababf53827dc11ed8021020017006821 | 2022-08-29 20:53:47 | success | TAG20220829T175741 | create-backup-incremental
77bed7d427e811ed9c3d020017006821 | 2022-08-29 22:18:14 | success | TAG20220829T192150 | create-backup-incremental
dbaascli execution completed
Para iniciar um backup Full (incremental Level 0), especifique o tipo de backup:
# dbaascli database backup --dbName orcl --start --level0
DBAAS CLI version 22.3.1.0.1 Executing command database backup --dbName orcl --start --level0 DBaaS Backup API V1.5 @2022 Multi-Oracle home -> Action : bkup_start -> logfile: /var/opt/oracle/log/orcl/bkup_api_log/bkup_api_c2c3d392_20220830102731.624404.log UUID 80f49e40286711edad9d020017006821 for this backup ** process started with PID: 222717 ** see log file for monitor progress ------------------------------------- dbaascli execution completed
Status das Operações
Podemos consultar o status da execução de um backup através do UUID da operação (aplica-se às operações de validate e restore).
# dbaascli database backup --dbName orcl --status --uuid 416e6cb027ea11eda7a1020017006821
Exemplo:
DBAAS CLI version 22.3.1.0.1 Executing command database backup --dbName orcl --status --uuid 416e6cb027ea11eda7a1020017006821 DBaaS Backup API V1.5 @2022 Multi-Oracle home @ STARTING CHECK STATUS 416e6cb027ea11eda7a1020017006821 [ REQUEST TICKET ] [UUID -> 416e6cb027ea11eda7a1020017006821 [DBNAME -> orcl [STATE -> running [ACTION -> create-backup-keep-forever [STARTED -> 2022-08-29 22:31:03 UTC [ENDED -> UTC [PID -> 34081 [TAG -> [PCT -> 1 [ END TICKET ] dbaascli execution completed
Esse mesmo UUID pode ser usado para identificar as sessões de RMAN nas views do banco de dados.
A API de backup emite o seguinte comando em cada script RMAN:
run {
set command id to '<UUID>';
....
Essa informação é gravada na coluna COMMAND_ID das seguintes views:
- V$RMAN_STATUS
- V$RMAN_BACKUP_JOB_DETAILS
- V$RMAN_BACKUP_SUBJOB_DETAILS
Então se você já possui alguma query para consultar status de backup RMAN diretamene no banco de dados, poderia usar esta coluna na cluasula WHERE para filtrar um JOB específico.
Exemplo de query com esse filtro:
set pagesize 1000
set lines 300
col STATUS format a25
col hrs format 999.99
col INPUT_TYPE form a15
col start_time format a20
col end_time format a20
col output_gbytes for 9,999,999 heading "OUTPUT|GBYTES"
col input_gbytes for 9,999,999 heading "INPUT|GBYTES"
col COMPRESSION_RATIO heading "Compression|Ratio"
alter session set NLS_DATE_FORMAT='DD/MM/YYYY HH24:MI:SS';
select
SESSION_RECID,
SESSION_KEY,
INPUT_TYPE, STATUS,
to_char(START_TIME,'dd/mm/yyyy hh24:mi') start_time,
to_char(END_TIME,'dd/mm/yyyy hh24:mi') end_time,
elapsed_seconds/3600 as hrs,
(input_bytes/1024/1024/1024) input_gbytes,
(output_bytes/1024/1024/1024) output_gbytes,
round(COMPRESSION_RATIO,2) as COMPRESSION_RATIO
from V$RMAN_BACKUP_JOB_DETAILS
where INPUT_TYPE like 'DB%'
--and START_TIME >= sysdate-15
and COMMAND_ID='572f05042b0111edabbe020017006821'
order by session_key;
Criando um Backup de Longa Duração
Um backup de longa duração é um backup com retenção independente da política configurada na console OCI. Este tipo de backup pode ser interessante para gerar backups adiconais, como backups mensais e anuais.
Para criar este tipo de backup, use a opção –archival:
# dbaascli database backup --dbName orcl --start --archival --tag Mensal
DBAAS CLI version 22.3.1.0.1 Executing command database backup --dbName orcl --start --archival --tag Mensal DBaaS Backup API V1.5 @2022 Multi-Oracle home -> Action : bkup_start -> logfile: /var/opt/oracle/log/orcl/bkup_api_log/bkup_api_c2b10006_20220829193057.980159.log UUID 416e6cb027ea11eda7a1020017006821 for this backup ** process started with PID: 34081 ** see log file for monitor progress ------------------------------------- dbaascli execution completed
Obtendo status do backup:
# dbaascli database backup --dbName orcl --status --uuid 416e6cb027ea11eda7a1020017006821
Um tempo depois:
[root@exacs ~]# dbaascli database backup --dbName orcl --status --uuid 416e6cb027ea11eda7a1020017006821 DBAAS CLI version 22.3.1.0.1 Executing command database backup --dbName orcl --status --uuid 416e6cb027ea11eda7a1020017006821 DBaaS Backup API V1.5 @2022 Multi-Oracle home @ STARTING CHECK STATUS 416e6cb027ea11eda7a1020017006821 [ REQUEST TICKET ] [UUID -> 416e6cb027ea11eda7a1020017006821 [DBNAME -> orcl [STATE -> success [ACTION -> create-backup-keep-forever [STARTED -> 2022-08-29 22:31:03 UTC [ENDED -> 2022-08-29 22:35:02 UTC [PID -> 34081 [TAG -> Mensal [PCT -> 100 [LOG -> 2022-08-29 19:31:03.733375 - API:: invoked with args : -keep -tag=Mensal -dbname=orcl -uuid=416e6cb027ea11eda7a1020017006821 -format=Mensal [LOG -> 2022-08-29 19:31:06.288999 - API:: Oracle database state is up and running [LOG -> 2022-08-29 19:31:55.733551 - API:: LONG TERM BACKUP RETENTION ##### [LOG -> 2022-08-29 19:31:55.733693 - API:: STARTING LONG TERM BACKUP [LOG -> 2022-08-29 19:33:13.434365 - API:: RMAN STEPS FINISHED [LOG -> 2022-08-29 19:34:11.490916 - API:: VALIDATING DATABASE BACKUPS: [LOG -> 2022-08-29 19:34:11.898026 - API:: Determining the oracle database id [LOG -> 2022-08-29 19:34:11.924638 - API:: DBID: 1641204439 [LOG -> 2022-08-29 19:34:11.937135 - API:: Creating directories to store config files [LOG -> 2022-08-29 19:34:11.988866 - API:: Enabling RAC exclusions for config files. [LOG -> 2022-08-29 19:34:12.697781 - API:: Compressing config files into tar files [LOG -> 2022-08-29 19:34:12.742928 - API:: Skipping configuration files backup from legacy code. [LOG -> 2022-08-29 19:34:12.793105 - API:: Uploading config files to cloud storage [LOG -> 2022-08-29 19:34:17.325174 - API:: Removing temporary location /var/opt/oracle/log/orcl/obkup/416e6cb027ea11eda7a1020017006821. [LOG -> 2022-08-29 19:34:19.704381 - API:: : longterm, Config files backup ended successfully [ END TICKET ] dbaascli execution completed
Observe que esse backup é diferenciado dos demais com a identificação “create-backup-keep-forever”:
[root@exacs ~]# dbaascli database backup --dbName orcl --showHistory
DBAAS CLI version 22.3.1.0.1
Executing command database backup --dbName orcl --showHistory
DBaaS Backup API V1.5 @2022 Multi-Oracle home
-> Action : list_jobs
-> logfile: /var/opt/oracle/log/orcl/bkup_api_log/bkup_api_fe9f7d77_20220829195113.727314.log
UUID | DATE | STATUS | TAG | ACTION
6dae43b8271311edbe3b020017006821 | 2022-08-28 20:53:14 | success | TAG20220828T175552 | create-backup-full
ababf53827dc11ed8021020017006821 | 2022-08-29 20:53:47 | success | TAG20220829T175741 | create-backup-incremental
77bed7d427e811ed9c3d020017006821 | 2022-08-29 22:18:14 | success | TAG20220829T192150 | create-backup-incremental
416e6cb027ea11eda7a1020017006821 | 2022-08-29 22:31:03 | success | Mensal | create-backup-keep-forever
dbaascli execution completed
Se gerarmos um relatório deste backup, veremos que o atributo backupType é marcado como “Longterm” e keepDays é definido com valor 5.000:
# dbaascli database backup --dbName orcl --getBackupReport --tag Mensal --json /tmp/mensal.json
# cat /tmp/mensal.json
{
"OKVWallet": "",
"backupLocation": "https://swiftobjectstorage.xx-region-1.oraclecloud.com/v1/abc123/xpto999",
"backupType": "Longterm",
"cfBackupHandle": "4316dbjl_2179_1_1-ORCL-Mensal--XP-19-1641204439-20220829",
"createTime": "2022-08-29T22:31:03",
"dbDataSize": "16396",
"dbId": "1641204439",
"dbInfo": {
"dbEdition": "EE_XP",
"dbType": "RAC"
},
"dbName": "orcl",
"dbRedoSize": "64182",
"dbUniqueName": "orcl_teste",
"encryptionType": "file",
"keepDays": 5000,
"kmsKeyOcid": "",
"oraHomeVersion": "19.14.0.0.0",
"signature": "dbaastools",
"sourceSystemTimeZone": "-03",
"spfBackupHandle": "4216dbjk_2178_1_1-ORCL-Mensal--XP-19-1641204439-20220829",
"tag": "Mensal",
"tdeWalletLoc": "https://swiftobjectstorage.xx-region-1.oraclecloud.com/v1/abc123/xpto999/exacs-1641204439-Mensal-longterm/ohcfgfiles_20220829_1934.tar.gz",
"updatedTime": "2022-08-29T22:35:02"
}
É possível deletar um backup de longa duração:
# dbaascli database backup --dbName orcl --delete --backupTag Mensal
O resultado deve ser similar a este:
DBAAS CLI version 22.3.1.0.1
Executing command database backup --dbName orcl --delete --backupTag Mensal
DBaaS Backup API V1.5 @2022 Multi-Oracle home
-> Action : bkup_delete
-> logfile: /var/opt/oracle/log/orcl/bkup_api_log/bkup_api_ea95ca69_20220830095105.762330.log
UUID 6a136f6c286211ed9338020017006821 for delete backup
Notes:
*) Only keep forever backups can be deleted
*) Regular backups are part of the retention policy
*) Regular backups are hot and incremental and they share their backup pieces
Starting delete of backup
6a136f6c286211ed9338020017006821 command /var/opt/oracle/ocde/assistants/bkup/obkup -keep -delete=Mensal -dbname=orcl
Backup deletion is completed
*
* RETURN CODE:0
##################################################
dbaascli execution completed
OBS: Este comando não pode ser executado com backups Lv0 ou Lv1.
Validando a Integridade do Backup
O dbaascli permite validar a integridade de um backup. Esta opção baseia-se na função de Restore Validate do RMAN.
O comando abaixo valida o backup mais recente (considerando o último full + incrementais + archives):
# dbaascli database backup --dbName orcl --validate
DBAAS CLI version 22.3.1.0.1 Executing command database backup --dbName orcl --validate DBaaS Backup API V1.5 @2022 Multi-Oracle home -> Action : reval_start -> logfile: /var/opt/oracle/log/orcl/bkup_api_log/bkup_api_158782f3_20220830100457.001691.log UUID 59864cf8286411edb395020017006821 for restore validation ** process started with PID: 80852 ** see log file for monitor progress ------------------------------------- dbaascli execution completed
Consultando o status da operação pelo UUID:
# dbaascli database backup --dbName orcl --status --uuid 59864cf8286411edb395020017006821
DBAAS CLI version 22.3.1.0.1
Executing command database backup --dbName orcl --status --uuid 59864cf8286411edb395020017006821
DBaaS Backup API V1.5 @2022 Multi-Oracle home
@ STARTING CHECK STATUS 59864cf8286411edb395020017006821
[ REQUEST TICKET ]
[UUID -> 59864cf8286411edb395020017006821
[DBNAME -> orcl
[STATE -> success
[ACTION -> start-restore-validate
[STARTED -> 2022-08-30 13:04:59 UTC
[ENDED -> 2022-08-30 13:06:50 UTC
[PID -> 80852
[TAG ->
[PCT ->
[LOG -> 2022-08-30 10:04:59.892056 - API:: invoked with args : -dbname=orcl -reval=default
[LOG -> 2022-08-30 10:05:02.390541 - API:: Oracle database state is up and running
[LOG -> 2022-08-30 10:06:50.185534 - API:: ....... OK
[LOG -> 2022-08-30 10:06:50.185668 - API:: Restore Validation is Completed
[ END TICKET ]
dbaascli execution completed
Validate Point In Time Recovery (PITR)
Podemos informar uma data e horário para o Validate considerando um possível restore para aquele ponto no tempo. Na opção de ajuda do dbaascli, ele informa que o formato esperado é DD-MON-YYYY HH24:MI:SS, mas quando tentei usar esse formato, a operação falhou com o seguinte erro:
STARTING RESTORE VALIDATE REQUEST
registering request into the database
command /var/opt/oracle/ocde/assistants/bkup/obkup -dbname=orcl -reval=default -timestamp="02-SEP-2022 17:00:00"
The restore validation process failed
bkup_api.misc Line-898 [ERROR] : Error in request_spawn
bkup_api.misc Line-899 [ERROR] : Call of function reval_start failed
bkup_api.misc Line-900 [ERROR] : Traceback (most recent call last):
File "/var/opt/oracle/bkup_api/lib/misc.py", line 895, in request_spawn
function.__call__(request, args, tag)
File "/var/opt/oracle/bkup_api/lib/apiv1.py", line 1065, in reval_start
sys.exit(1)
SystemExit: 1
Nos logs do script obkup (shell script executado pelo dbaascli em background), identifiquei um erro mais amigável:
API:: Timestamp format is not valid. Received 02-SEP-2022 17:00:00 and format expected is: 'mm/dd/yyyy hh24:mi:ss'
Então executei o dbaascli com o formato ‘mm/dd/yyyy hh24:mi:ss’ :
# dbaascli database backup --dbName orcl --validate --untilTime '09/02/2022 17:00:00
Neste exemplo, usamos a opção –untilTime informando a data de 02/09/2022 às 17h.
DBAAS CLI version 22.3.1.0.1 Executing command database backup --dbName orcl --validate --untilTime 09/02/2022 17:00:00 DBaaS Backup API V1.5 @2022 Multi-Oracle home -> Action : reval_start -> logfile: /var/opt/oracle/log/orcl/bkup_api_log/bkup_api_f246509b_20220902183514.120380.log UUID 228b5fcc2b0711ed9484020017006821 for restore validation ** process started with PID: 329606 ** see log file for monitor progress ------------------------------------- dbaascli execution completed
Validate concluído com sucesso:
[root@exacs ~]# tail -100f /var/opt/oracle/log/orcl/bkup_api_log/bkup_api_f246509b_20220902183514.120380.log
02 Sep 2022 18:35:14 bkup_api.misc Line-358 [INFO] : DBaaS Backup API V1.5 @2022 Multi-Oracle home
02 Sep 2022 18:35:14 bkup_api.rac Line-161 [INFO] : running on node: exacs
02 Sep 2022 18:35:14 bkup_api.database.database_exa.dbcommons Line-204 [INFO] : Database Type: RAC
02 Sep 2022 18:35:16 bkup_api.misc Line-358 [INFO] : -> Action : reval_start
02 Sep 2022 18:35:16 bkup_api.misc Line-358 [INFO] : -> logfile: /var/opt/oracle/log/orcl/bkup_api_log/bkup_api_f246509b_20220902183514.120380.log
02 Sep 2022 18:35:16 bkup_api.misc Line-358 [INFO] : UUID 228b5fcc2b0711ed9484020017006821 for restore validation
02 Sep 2022 18:35:16 bkup_api.misc Line-1059 [INFO] : 228b5fcc2b0711ed9484020017006821 Checking if orcl resource is available
02 Sep 2022 18:35:17 bkup_api.misc Line-1081 [INFO] : 228b5fcc2b0711ed9484020017006821 The process is no longer running removing lock
02 Sep 2022 18:35:17 bkup_api.misc Line-863 [INFO] : ** process started with PID: 329606
02 Sep 2022 18:35:17 bkup_api.misc Line-865 [INFO] : ** see log file for monitor progress
02 Sep 2022 18:35:17 bkup_api.misc Line-867 [INFO] : -------------------------------------
02 Sep 2022 18:35:17 bkup_api.misc Line-868 [INFO] : UUID 228b5fcc2b0711ed9484020017006821 written with PID 329606
02 Sep 2022 18:35:17 bkup_api.misc Line-893 [INFO] : 228b5fcc2b0711ed9484020017006821 -> Starting execution of backup log in background
02 Sep 2022 18:35:17 bkup_api.misc.apiv1 Line-1007 [INFO] : 228b5fcc2b0711ed9484020017006821 STARTING RESTORE VALIDATE REQUEST
02 Sep 2022 18:35:20 bkup_api.misc.apiv1 Line-1025 [INFO] : 228b5fcc2b0711ed9484020017006821 registering request into the database
02 Sep 2022 18:35:20 bkup_api.misc.apiv1 Line-1046 [INFO] : 228b5fcc2b0711ed9484020017006821 command /var/opt/oracle/ocde/assistants/bkup/obkup -dbname=orcl -reval=default -timestamp="09/02/2022 17:00:00"
02 Sep 2022 18:37:49 bkup_api.misc.apiv1 Line-1070 [INFO] : 228b5fcc2b0711ed9484020017006821 The restore validation process is completed
02 Sep 2022 18:37:49 bkup_api.misc Line-911 [INFO] : Function call reval_start completed.
Acessando os Logs dos Backups
Os logs de todos os backups são gravados no diretório “/var/opt/oracle/log/<db_name>/obkup”. Exemplo com o DB NAME orcl:
cd /var/opt/oracle/log/orcl/obkup
Executando um “ls -lsrt”, temos vários arquivos atualizados recentemente. Geralmente o arquivo com formato “obkup-YYYY-MM-DD.log” contempla o log de todas as operações RMAN executadas no dia.

DICA: O log de vários JOBs são gravados no mesmo arquivo. Quando precisar analisar tais logs para fazer algum throubleshooting, use o UUID como ponto de partida para identificar o trecho do Log que representa o JOB que você está analisando!
Nos logs é possível ver os comandos RMAN utilizados em cada operação. Exemplo da operação de Validate:

Comandos úteis:
Visualizando todos os comandos RMAN presentes no arquivo de log incluindo a data e horário:
sed -n '/Executing rman instructions/,/-> }/p' obkup_2022-09-02.log
Exemplo:

Visualizando somente os comandos RMAN, ocultando data e horário:
sed -n '/Executing rman instructions/,/-> }/p' obkup_2022-09-02.log | awk -F "->" '{ print $2}'
Exemplo:

Consultar a saída dos comandos RMAN:
sed -n '/RMAN OUTPUT:/,/RMAN-03030/p' obkup_2022-09-02.log
Exemplo:

Conclusão
Este post apresentou uma introdução aos comandos do DBAASCLI específicos para backup RMAN, com foco em ajudar quem está começando a se familiarizar com esta ferramenta no ExaCS. O escopo não incluiu exemplos de restore, mas pretendo fazer um post específico para este tema posteriormente. Adicionalmente, recomendo a leitura do post Customizando a Configuração do Backup Automático no Exadata Cloud Service (ExaCS) apresentando como alterar algumas configurações do backup usando o dbaascli.