Je lisais un vieux livre au sujet d'Oracle et j'ai lu qu'on ne doit pas essayer de modifier un fichier SPFILE avec un éditeur par exemple vi ou notepad etc. En fait je le savais déjà depuis longtemps. Je me suis posé la question suivante:
<<Qu'est-ce qui se passe si quelqu'un le fait? Quelqu'un qui n'as pas eu la formation correcte par exemple>>.
Avertissement:
J'ai fait ce test sur la version 19.3 dans une base de données sur mon propre PC. Il ne faut pas le faire dans une base de données qui appartient à votre employeur, surtout si vous voulez garder votre métier. J'ai vu que la base de données se servait d'un fichier SPFILE:
SQL> select value from v$parameter
2 where name = 'spfile'
3 /
VALUE
------------------------------------------------------------
C:\ANDREW\WINDOWS.X64_193000_DB_HOME\DATABASE\SPFILEORCL.ORA
SQL>
J'ai fermé la base de données:
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL>
J'ai créé une sauvegarde du fichier SPFILE:
SQL> create pfile from spfile
2 /
File created.
SQL>
J'ai enlevé le texte suivant du fichier SPFILE avec notepad et j'ai sauvé la modif:
.db_block_size=8192*
J'ai relancé la base de données sans problème:
SQL> startup
ORACLE instance started.
Total System Global Area 2566910648 bytes
Fixed Size 9269944 bytes
Variable Size 553648128 bytes
Database Buffers 1996488704 bytes
Redo Buffers 7503872 bytes
Database mounted.
Database opened.
SQL>
Il n'y avait aucune erreur dans le fichier alert_orcl.log non plus. Oracle a decidé d'employer le fichier PFILE sans rien dire:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0.
Windows NT Version V6.2
ORACLE_HOME = C:\Andrew\WINDOWS.X64_193000_db_home
Node name : CHRISTINA
CPU : 4 - type 86642 physical cores
Process Affinity : 0x0000000000000000
Memory (Avail/Total): Ph:4248M/8114M, Ph+PgF:3441M/9394M
Using parameter settings in server-side pfile C:\ANDREW\WINDOWS.X64_193000_DB_HOME\DATABASE\INITORCL.ORA
System parameters with non-default values:
processes = 320
nls_language = "ENGLISH"
nls_territory = "UNITED KINGDOM"
sga_target = 2448M
control_files = "C:\ANDREW\ORADATA\ORCL\CONTROL01.CTL"
control_files = "C:\ANDREW\ORADATA\ORCL\CONTROL02.CTL"
db_block_size = 8192
compatible = "19.0.0"
undo_tablespace = "UNDOTBS1"
remote_login_passwordfile= "EXCLUSIVE"
db_domain = "fritz.box"
dispatchers = "(PROTOCOL=TCP) (SERVICE=orclXDB)"
local_listener = "LISTENER_ORCL"
audit_file_dest = "C:\ANDREW\ADMIN\ORCL\ADUMP"
audit_trail = "DB"
db_name = "orcl"
open_cursors = 300
pga_aggregate_target = 812M
diagnostic_dest = "C:\ANDREW"
enable_pluggable_database= TRUE
On ne voyait plus le fichier SPFILE dans la base de données:
SQL> select value from v$parameter
2 where name = 'spfile'
3 /
VALUE
------------------------------------------------------------
SQL>
Pour réparer la faute j'ai dû recréer le fichier SPFILE et relancer la base de données:
SQL> create spfile from pfile
2 /
File created.
SQL> startup force
ORACLE instance started.
Total System Global Area 2566910648 bytes
Fixed Size 9269944 bytes
Variable Size 553648128 bytes
Database Buffers 1996488704 bytes
Redo Buffers 7503872 bytes
Database mounted.
Database opened.
SQL> select value from v$parameter
2 where name = 'spfile'
3 /
VALUE
------------------------------------------------------------
C:\ANDREW\WINDOWS.X64_193000_DB_HOME\DATABASE\SPFILEORCL.ORA
SQL>
Alors, s'il y a un fichier SPFILE dans le répertoire correct mais Oracle ne s'en sert pas ceci pourrait être parce que quelqu'un ait changé le fichier SPFILE avec un éditeur.