Neste artigo, vamos simular uma situação de recuperação de perda de datafile (non-system) na arquitetura Multitenant, especificamente no CDB$ROOT. Veremos que os comandos envolvidos e o mecanismo é basicamente o mesmo para bancos non-cdb, o que é muito bom pois preserva o conhecimento adquirado na arquitetura mais antiga.
Conectando em nosso CDB$ROOT e coletando o datafile da tablespace SYSAUX:
[oracle@quiasma ~]$ sqlplus / as sysdba
SQL*Plus: Release 18.0.0.0.0 - Production on Fri May 14 05:08:49 2021
Version 18.13.0.0.0
Copyright (c) 1982, 2018, Oracle. All rights reserved.
Connected to:
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
Version 18.13.0.0.0
SQL> SELECT NAME,OPEN_MODE,CDB FROM V$DATABASE;
NAME OPEN_MODE CDB
--------- -------------------- ---
ASWAN READ WRITE YES
SQL> SELECT FILE_NAME FROM DBA_DATA_FILES WHERE TABLESPACE_NAME='SYSAUX';
FILE_NAME
--------------------------------------------------------------------------------
/oracle/dados/ASWAN/datafile/o1_mf_sysaux_j9wc0kfz_.dbf
Realizando um backup do banco de dados e seus archives:
[oracle@quiasma ~]$ rman target /
Recovery Manager: Release 18.0.0.0.0 - Production on Fri May 14 05:09:17 2021
Version 18.13.0.0.0
Copyright (c) 1982, 2018, Oracle and/or its affiliates. All rights reserved.
connected to target database: ASWAN (DBID=1340416544)
RMAN> BACKUP DATABASE PLUS ARCHIVELOG;
Starting backup at 14-MAY-21
current log archived
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=67 device type=DISK
channel ORA_DISK_1: starting archived log backup set
channel ORA_DISK_1: specifying archived log(s) in backup set
input archived log thread=1 sequence=6 RECID=1 STAMP=1072501770
channel ORA_DISK_1: starting piece 1 at 14-MAY-21
channel ORA_DISK_1: finished piece 1 at 14-MAY-21
piece handle=/oracle/fra/ASWAN/backupset/2021_05_14/o1_mf_annnn_TAG20210514T050931_j9wd1vh1_.bkp tag=TAG20210514T050931 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 14-MAY-21
Starting backup at 14-MAY-21
using channel ORA_DISK_1
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00001 name=/oracle/dados/ASWAN/datafile/o1_mf_system_j9wbzgc1_.dbf
input datafile file number=00003 name=/oracle/dados/ASWAN/datafile/o1_mf_sysaux_j9wc0kfz_.dbf
input datafile file number=00004 name=/oracle/dados/ASWAN/datafile/o1_mf_undotbs1_j9wc1bk9_.dbf
input datafile file number=00007 name=/oracle/dados/ASWAN/datafile/o1_mf_users_j9wc1clt_.dbf
channel ORA_DISK_1: starting piece 1 at 14-MAY-21
channel ORA_DISK_1: finished piece 1 at 14-MAY-21
piece handle=/oracle/fra/ASWAN/backupset/2021_05_14/o1_mf_nnndf_TAG20210514T050932_j9wd1wpo_.bkp tag=TAG20210514T050932 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:15
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00005 name=/oracle/dados/ASWAN/datafile/o1_mf_system_j9wc9px6_.dbf
input datafile file number=00006 name=/oracle/dados/ASWAN/datafile/o1_mf_sysaux_j9wc9px1_.dbf
input datafile file number=00008 name=/oracle/dados/ASWAN/datafile/o1_mf_undotbs1_j9wc9px7_.dbf
channel ORA_DISK_1: starting piece 1 at 14-MAY-21
channel ORA_DISK_1: finished piece 1 at 14-MAY-21
piece handle=/oracle/fra/ASWAN/C2469670772D160AE0536A00A8C00FFA/backupset/2021_05_14/o1_mf_nnndf_TAG20210514T050932_j9wd2cs7_.bkp tag=TAG20210514T050932 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:07
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00009 name=/oracle/dados/ASWAN/C246BD61C42A1E80E0536A00A8C076F1/datafile/o1_mf_system_j9wcyoh3_.dbf
input datafile file number=00010 name=/oracle/dados/ASWAN/C246BD61C42A1E80E0536A00A8C076F1/datafile/o1_mf_sysaux_j9wcyoh7_.dbf
input datafile file number=00011 name=/oracle/dados/ASWAN/C246BD61C42A1E80E0536A00A8C076F1/datafile/o1_mf_undotbs1_j9wcyoh8_.dbf
channel ORA_DISK_1: starting piece 1 at 14-MAY-21
channel ORA_DISK_1: finished piece 1 at 14-MAY-21
piece handle=/oracle/fra/ASWAN/C246BD61C42A1E80E0536A00A8C076F1/backupset/2021_05_14/o1_mf_nnndf_TAG20210514T050932_j9wd2lxq_.bkp tag=TAG20210514T050932 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:15
Finished backup at 14-MAY-21
Starting backup at 14-MAY-21
current log archived
using channel ORA_DISK_1
channel ORA_DISK_1: starting archived log backup set
channel ORA_DISK_1: specifying archived log(s) in backup set
input archived log thread=1 sequence=7 RECID=2 STAMP=1072501809
channel ORA_DISK_1: starting piece 1 at 14-MAY-21
channel ORA_DISK_1: finished piece 1 at 14-MAY-21
piece handle=/oracle/fra/ASWAN/backupset/2021_05_14/o1_mf_annnn_TAG20210514T051010_j9wd323h_.bkp tag=TAG20210514T051010 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 14-MAY-21
Starting Control File and SPFILE Autobackup at 14-MAY-21
piece handle=/oracle/fra/ASWAN/autobackup/2021_05_14/o1_mf_s_1072501811_j9wd33nj_.bkp comment=NONE
Finished Control File and SPFILE Autobackup at 14-MAY-21
Deletando o datafile no Sistema Operacional:
SQL> ! rm /oracle/dados/ASWAN/datafile/o1_mf_sysaux_j9wc0kfz_.dbf
SQL>
Utilizando o RMAN, vamos tentar visualizar a falha. De início, o RMAN não a identifica, mas utilizando o comando validate datafile, prontamente a falha é identificada:
[oracle@quiasma ~]$ rman target /
Recovery Manager: Release 18.0.0.0.0 - Production on Fri May 14 05:11:31 2021
Version 18.13.0.0.0
Copyright (c) 1982, 2018, Oracle and/or its affiliates. All rights reserved.
connected to target database: ASWAN (DBID=1340416544)
RMAN> LIST FAILURE;
using target database control file instead of recovery catalog
Database Role: PRIMARY
no failures found that match specification
RMAN> VALIDATE DATAFILE '/oracle/dados/ASWAN/datafile/o1_mf_sysaux_j9wc0kfz_.dbf';
Starting validate at 14-MAY-21
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=7 device type=DISK
RMAN-06169: could not read file header for datafile 3 error reason 5
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of validate command at 05/14/2021 05:12:07
RMAN-06056: could not access datafile 3
RMAN> LIST FAILURE;
Database Role: PRIMARY
List of Database Failures
=========================
Failure ID Priority Status Time Detected Summary
---------- -------- --------- ------------- -------
122 HIGH OPEN 14-MAY-21 One or more non-system datafiles are missing
RMAN> LIST FAILURE DETAIL;
Database Role: PRIMARY
List of Database Failures
=========================
Failure ID Priority Status Time Detected Summary
---------- -------- --------- ------------- -------
122 HIGH OPEN 14-MAY-21 One or more non-system datafiles are missing
Impact: See impact for individual child failures
List of child failures for parent failure ID 122
Failure ID Priority Status Time Detected Summary
---------- -------- --------- ------------- -------
125 HIGH OPEN 14-MAY-21 Datafile 3: '/oracle/dados/ASWAN/datafile/o1_mf_sysaux_j9wc0kfz_.dbf' is missing
Impact: Some objects in tablespace SYSAUX might be unavailable
Ao tentar visualizar a sugestão dada pelo Data Recovery Advisor, um erro interno é reportado. Como estou com o último PSU já aplicado (18.13), não consegui identificar algum Oracle Note com workaround ou patch específico para o caso. Assim, continuarei a recuperação do ambiente na forma tradicional: manualmente.
RMAN> ADVISE FAILURE;
Database Role: PRIMARY
List of Database Failures
=========================
Failure ID Priority Status Time Detected Summary
---------- -------- --------- ------------- -------
122 HIGH OPEN 14-MAY-21 One or more non-system datafiles are missing
Impact: See impact for individual child failures
List of child failures for parent failure ID 122
Failure ID Priority Status Time Detected Summary
---------- -------- --------- ------------- -------
125 HIGH OPEN 14-MAY-21 Datafile 3: '/oracle/dados/ASWAN/datafile/o1_mf_sysaux_j9wc0kfz_.dbf' is missing
Impact: Some objects in tablespace SYSAUX might be unavailable
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-00601: fatal error in recovery manager
RMAN-03012: fatal error during compilation of command
RMAN-03028: fatal error code for command advise : 600
RMAN-00600: internal error, arguments [15077] [TEXTNOD] [588] [] []
Deixando o datafile offline:
RMAN> ALTER DATABASE DATAFILE '/oracle/dados/ASWAN/datafile/o1_mf_sysaux_j9wc0kfz_.dbf' OFFLINE;
using target database control file instead of recovery catalog
Statement processed
Realizando o seu restore e recover:
RMAN> RESTORE DATAFILE '/oracle/dados/ASWAN/datafile/o1_mf_sysaux_j9wc0kfz_.dbf';
Starting restore at 14-MAY-21
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=82 device type=DISK
channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00003 to /oracle/dados/ASWAN/datafile/o1_mf_sysaux_j9wc0kfz_.dbf
channel ORA_DISK_1: reading from backup piece /oracle/fra/ASWAN/backupset/2021_05_14/o1_mf_nnndf_TAG20210514T050932_j9wd1wpo_.bkp
channel ORA_DISK_1: piece handle=/oracle/fra/ASWAN/backupset/2021_05_14/o1_mf_nnndf_TAG20210514T050932_j9wd1wpo_.bkp tag=TAG20210514T050932
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:07
Finished restore at 14-MAY-21
RMAN> RECOVER DATAFILE 3;
Starting recover at 14-MAY-21
using channel ORA_DISK_1
starting media recovery
media recovery complete, elapsed time: 00:00:00
Finished recover at 14-MAY-21
Deixando o datafile online novamente:
RMAN> ALTER DATABASE DATAFILE 3 ONLINE;
using target database control file instead of recovery catalog
Statement processed
Validando o banco de dados todo:
RMAN> VALIDATE DATABASE;
Starting validate at 14-MAY-21
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=68 device type=DISK
channel ORA_DISK_1: starting validation of datafile
channel ORA_DISK_1: specifying datafile(s) for validation
input datafile file number=00001 name=/oracle/dados/ASWAN/datafile/o1_mf_system_j9wbzgc1_.dbf
input datafile file number=00003 name=/oracle/dados/ASWAN/datafile/o1_mf_sysaux_j9wdsb2f_.dbf
input datafile file number=00004 name=/oracle/dados/ASWAN/datafile/o1_mf_undotbs1_j9wc1bk9_.dbf
input datafile file number=00007 name=/oracle/dados/ASWAN/datafile/o1_mf_users_j9wc1clt_.dbf
channel ORA_DISK_1: validation complete, elapsed time: 00:00:03
List of Datafiles
=================
File Status Marked Corrupt Empty Blocks Blocks Examined High SCN
---- ------ -------------- ------------ --------------- ----------
1 OK 0 17473 124160 1694613
File Name: /oracle/dados/ASWAN/datafile/o1_mf_system_j9wbzgc1_.dbf
Block Type Blocks Failing Blocks Processed
---------- -------------- ----------------
Data 0 71640
Index 0 12906
Other 0 22141
File Status Marked Corrupt Empty Blocks Blocks Examined High SCN
---- ------ -------------- ------------ --------------- ----------
3 OK 0 18739 69130 1695121
File Name: /oracle/dados/ASWAN/datafile/o1_mf_sysaux_j9wdsb2f_.dbf
Block Type Blocks Failing Blocks Processed
---------- -------------- ----------------
Data 0 5724
Index 0 2927
Other 0 41730
File Status Marked Corrupt Empty Blocks Blocks Examined High SCN
---- ------ -------------- ------------ --------------- ----------
4 OK 0 532 51840 1695121
File Name: /oracle/dados/ASWAN/datafile/o1_mf_undotbs1_j9wc1bk9_.dbf
Block Type Blocks Failing Blocks Processed
---------- -------------- ----------------
Data 0 0
Index 0 0
Other 0 51308
File Status Marked Corrupt Empty Blocks Blocks Examined High SCN
---- ------ -------------- ------------ --------------- ----------
7 OK 0 1 641 29088
File Name: /oracle/dados/ASWAN/datafile/o1_mf_users_j9wc1clt_.dbf
Block Type Blocks Failing Blocks Processed
---------- -------------- ----------------
Data 0 0
Index 0 0
Other 0 639
channel ORA_DISK_1: starting validation of datafile
channel ORA_DISK_1: specifying datafile(s) for validation
input datafile file number=00005 name=/oracle/dados/ASWAN/datafile/o1_mf_system_j9wc9px6_.dbf
input datafile file number=00006 name=/oracle/dados/ASWAN/datafile/o1_mf_sysaux_j9wc9px1_.dbf
input datafile file number=00008 name=/oracle/dados/ASWAN/datafile/o1_mf_undotbs1_j9wc9px7_.dbf
channel ORA_DISK_1: validation complete, elapsed time: 00:00:01
List of Datafiles
=================
File Status Marked Corrupt Empty Blocks Blocks Examined High SCN
---- ------ -------------- ------------ --------------- ----------
5 OK 0 6337 49920 1692303
File Name: /oracle/dados/ASWAN/datafile/o1_mf_system_j9wc9px6_.dbf
Block Type Blocks Failing Blocks Processed
---------- -------------- ----------------
Data 0 16430
Index 0 8508
Other 0 18645
File Status Marked Corrupt Empty Blocks Blocks Examined High SCN
---- ------ -------------- ------------ --------------- ----------
6 OK 0 10021 46080 1691710
File Name: /oracle/dados/ASWAN/datafile/o1_mf_sysaux_j9wc9px1_.dbf
Block Type Blocks Failing Blocks Processed
---------- -------------- ----------------
Data 0 3799
Index 0 2091
Other 0 30169
File Status Marked Corrupt Empty Blocks Blocks Examined High SCN
---- ------ -------------- ------------ --------------- ----------
8 OK 0 1879 12800 1692301
File Name: /oracle/dados/ASWAN/datafile/o1_mf_undotbs1_j9wc9px7_.dbf
Block Type Blocks Failing Blocks Processed
---------- -------------- ----------------
Data 0 0
Index 0 0
Other 0 10921
channel ORA_DISK_1: starting validation of datafile
channel ORA_DISK_1: specifying datafile(s) for validation
input datafile file number=00009 name=/oracle/dados/ASWAN/C246BD61C42A1E80E0536A00A8C076F1/datafile/o1_mf_system_j9wcyoh3_.dbf
input datafile file number=00010 name=/oracle/dados/ASWAN/C246BD61C42A1E80E0536A00A8C076F1/datafile/o1_mf_sysaux_j9wcyoh7_.dbf
input datafile file number=00011 name=/oracle/dados/ASWAN/C246BD61C42A1E80E0536A00A8C076F1/datafile/o1_mf_undotbs1_j9wcyoh8_.dbf
channel ORA_DISK_1: validation complete, elapsed time: 00:00:01
List of Datafiles
=================
File Status Marked Corrupt Empty Blocks Blocks Examined High SCN
---- ------ -------------- ------------ --------------- ----------
9 OK 0 6337 49920 1693687
File Name: /oracle/dados/ASWAN/C246BD61C42A1E80E0536A00A8C076F1/datafile/o1_mf_system_j9wcyoh3_.dbf
Block Type Blocks Failing Blocks Processed
---------- -------------- ----------------
Data 0 16430
Index 0 8508
Other 0 18645
File Status Marked Corrupt Empty Blocks Blocks Examined High SCN
---- ------ -------------- ------------ --------------- ----------
10 OK 0 10021 46080 1691710
File Name: /oracle/dados/ASWAN/C246BD61C42A1E80E0536A00A8C076F1/datafile/o1_mf_sysaux_j9wcyoh7_.dbf
Block Type Blocks Failing Blocks Processed
---------- -------------- ----------------
Data 0 3799
Index 0 2091
Other 0 30169
File Status Marked Corrupt Empty Blocks Blocks Examined High SCN
---- ------ -------------- ------------ --------------- ----------
11 OK 0 1879 12800 1692301
File Name: /oracle/dados/ASWAN/C246BD61C42A1E80E0536A00A8C076F1/datafile/o1_mf_undotbs1_j9wcyoh8_.dbf
Block Type Blocks Failing Blocks Processed
---------- -------------- ----------------
Data 0 0
Index 0 0
Other 0 10921
channel ORA_DISK_1: starting validation of datafile
channel ORA_DISK_1: specifying datafile(s) for validation
including current control file for validation
including current SPFILE in backup set
channel ORA_DISK_1: validation complete, elapsed time: 00:00:01
List of Control File and SPFILE
===============================
File Type Status Blocks Failing Blocks Examined
------------ ------ -------------- ---------------
SPFILE OK 0 2
Control File OK 0 1142
Finished validate at 14-MAY-21
Nenhuma falha é reportada no RMAN, e já podemos realizar um backup full do banco (esse é o procedimento indicado para ambientes corporativos que tenham sofrido restore/recover):
RMAN> LIST FAILURE;
Database Role: PRIMARY
no failures found that match specification
RMAN> BACKUP DATABASE PLUS ARCHIVELOG;
Starting backup at 14-MAY-21
current log archived
using channel ORA_DISK_1
channel ORA_DISK_1: starting archived log backup set
channel ORA_DISK_1: specifying archived log(s) in backup set
input archived log thread=1 sequence=6 RECID=1 STAMP=1072501770
input archived log thread=1 sequence=7 RECID=2 STAMP=1072501809
input archived log thread=1 sequence=8 RECID=3 STAMP=1072503370
channel ORA_DISK_1: starting piece 1 at 14-MAY-21
channel ORA_DISK_1: finished piece 1 at 14-MAY-21
piece handle=/oracle/fra/ASWAN/backupset/2021_05_14/o1_mf_annnn_TAG20210514T053610_j9wfmtq8_.bkp tag=TAG20210514T053610 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:03
Finished backup at 14-MAY-21
Starting backup at 14-MAY-21
using channel ORA_DISK_1
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00001 name=/oracle/dados/ASWAN/datafile/o1_mf_system_j9wbzgc1_.dbf
input datafile file number=00003 name=/oracle/dados/ASWAN/datafile/o1_mf_sysaux_j9wdsb2f_.dbf
input datafile file number=00004 name=/oracle/dados/ASWAN/datafile/o1_mf_undotbs1_j9wc1bk9_.dbf
input datafile file number=00007 name=/oracle/dados/ASWAN/datafile/o1_mf_users_j9wc1clt_.dbf
channel ORA_DISK_1: starting piece 1 at 14-MAY-21
channel ORA_DISK_1: finished piece 1 at 14-MAY-21
piece handle=/oracle/fra/ASWAN/backupset/2021_05_14/o1_mf_nnndf_TAG20210514T053613_j9wfmxxo_.bkp tag=TAG20210514T053613 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:07
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00005 name=/oracle/dados/ASWAN/datafile/o1_mf_system_j9wc9px6_.dbf
input datafile file number=00006 name=/oracle/dados/ASWAN/datafile/o1_mf_sysaux_j9wc9px1_.dbf
input datafile file number=00008 name=/oracle/dados/ASWAN/datafile/o1_mf_undotbs1_j9wc9px7_.dbf
channel ORA_DISK_1: starting piece 1 at 14-MAY-21
channel ORA_DISK_1: finished piece 1 at 14-MAY-21
piece handle=/oracle/fra/ASWAN/C2469670772D160AE0536A00A8C00FFA/backupset/2021_05_14/o1_mf_nnndf_TAG20210514T053613_j9wfn525_.bkp tag=TAG20210514T053613 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:07
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00009 name=/oracle/dados/ASWAN/C246BD61C42A1E80E0536A00A8C076F1/datafile/o1_mf_system_j9wcyoh3_.dbf
input datafile file number=00010 name=/oracle/dados/ASWAN/C246BD61C42A1E80E0536A00A8C076F1/datafile/o1_mf_sysaux_j9wcyoh7_.dbf
input datafile file number=00011 name=/oracle/dados/ASWAN/C246BD61C42A1E80E0536A00A8C076F1/datafile/o1_mf_undotbs1_j9wcyoh8_.dbf
channel ORA_DISK_1: starting piece 1 at 14-MAY-21
channel ORA_DISK_1: finished piece 1 at 14-MAY-21
piece handle=/oracle/fra/ASWAN/C246BD61C42A1E80E0536A00A8C076F1/backupset/2021_05_14/o1_mf_nnndf_TAG20210514T053613_j9wfnd60_.bkp tag=TAG20210514T053613 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:15
Finished backup at 14-MAY-21
Starting backup at 14-MAY-21
current log archived
using channel ORA_DISK_1
channel ORA_DISK_1: starting archived log backup set
channel ORA_DISK_1: specifying archived log(s) in backup set
input archived log thread=1 sequence=9 RECID=4 STAMP=1072503403
channel ORA_DISK_1: starting piece 1 at 14-MAY-21
channel ORA_DISK_1: finished piece 1 at 14-MAY-21
piece handle=/oracle/fra/ASWAN/backupset/2021_05_14/o1_mf_annnn_TAG20210514T053643_j9wfnvd0_.bkp tag=TAG20210514T053643 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 14-MAY-21
Starting Control File and SPFILE Autobackup at 14-MAY-21
piece handle=/oracle/fra/ASWAN/autobackup/2021_05_14/o1_mf_s_1072503404_j9wfnwmn_.bkp comment=NONE
Finished Control File and SPFILE Autobackup at 14-MAY-21
Obs: Este procedimento foi criado pelo senhor Ahmed Baraka (www.ahmedbaraka.com) e foi apenas reproduzido por mim em um laboratório pessoal para fins de aprendizado.