Récemment j’ai du remonter un backup d’une base de données afin d’y extraire des données perdues par un consultant. J’ai utilisé la fonctionnalité « create database from backup » mais toutes les pluggable database étaient dans un état non exploitable « RESTRICTED YES ».
Debug
Souvent cela vient d’erreur d’application de patch.
On peut le vérifier :
SQL> select name, cause, type, message, status, action from PDB_PLUG_IN_VIOLATIONS where type like 'ERROR%' and status like 'PENDING' ;
Et si vous voyez un message d’erreur du type :
PROD
SQL Patch ERROR
Interim patch 36414915/25700138 (OJVM RELEASE UPDATE: 19.24.0.0.240716 (36414915
)): Not installed in the CDB but installed in the PDB
PENDING
Alors c’est que lors de la création de la base des patch n’ont pas été appliqués (PENDING), et ici c’est le cas sur la PDB PROD
Solution
Dans le cas d’une « Oracle Base database » :
1. $ sqlplus / as sysdba
2. SQL> alter pluggable database <PDB_NAME> close immediate instances=all;
3. SQL> shutdown immediate;
4. SQL> startup upgrade
5. SQL> alter pluggable database all open upgrade;
6. SQL> quit
7. cd $ORACLE_HOME/OPatch
8. $ ./datapatch -verbose
9. $ sqlplus / as sysdba
10. SQL> shutdown immediate;
11. SQL> startup
12. SQL> Alter pluggable database <PDB_NAME> open read write;
Si vous avez une RAC database alors ça sera similaire, à la différence du startup et shutdown :
1. $ sqlplus / as sysdba
2. SQL> alter pluggable database <PDB_NAME> close immediate instances=all;
3. SQL> alter system set cluster_database=false scope=spfile;
4. SQL> quit
5. $ srvctl stop database -d <DB_unique_name>
6. $ sqlplus / as sysdba
7. SQL> startup upgrade
8. SQL> alter pluggable database all open upgrade;
9. SQL> quit
10 cd $ORACLE_HOME/OPatch
11. $ ./datapatch -verbose
12. $ sqlplus / as sysdba
13. SQL> alter system set cluster_database=true scope=spfile;
14. SQL> shutdown immediate;
15. SQL> quit
16. $ srvctl start database -d <DB_UNIQUE_NAME>
Laisser un commentaire