jeudi 7 octobre 2021

Oracle Refuse de Se Servir d'un Fichier SPFILE

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.

jeudi 11 mars 2021

La Compression Avancée en Oracle (Exemple 3)

J'ai testé cet exemple en Oracle 19.3.

J'ai lu ailleurs sur Internet que l'on pouvait employer le paramètre caché _oltp_compression pour empêcher les utilisateurs de se servir de l'option de compression avancée. Je l'ai changé à FALSE:

... mais cela ne m'a pas empêché de me servir de l'option:

vendredi 5 mars 2021

La Compression Avancée en Oracle (Exemple 2)

J'ai testé cet exemple en Oracle 19.3.

J'ai créé une table avec une partition:

D'habitude quand on crée une table partitionnée, il y a plus qu'une partition dedans. Mais ceci n'est qu'une table de test dans une base de données de test que j'ai installée sur une machine que j'ai construite moi-même.

J'ai mis des données dans la table car cet exemple ne marche pas si la table est vide:

J'ai fait une alter table ... move partition ... compress online sur la partition:

J'ai vu que la partition avait un niveau de compression de BASIC:

On dirait donc que je n'aie pas employé la compression avancée.

Mais Oracle sait que j'aie fait cette compression (cliquez sur l'image pour changer la taille):

Il y a une valeur de 11 dans la colonne DETECTED_USAGES parce que j'ai répété l'exemple plusieurs fois avant de vous le montrer. Le numéro de l'objet (73146) est le même dans les deux requêtes ce qui prouve que les détails qu'on voit viennent de l'objet que j'ai créé.

Alors, où se trouve le problème? Regardez ce document. Au fond de la page 14 vous trouverez le texte suivant (cliquez sur l'image pour changer la taile):

Selon ce document alter table...move partition...compress online fait partie de l'option de compression avancée et vous devrez payer le prix d'une licence si vous vous en servez.

La Compression Avancée en Oracle (Exemple 1)

J'ai testé cet exemple en Oracle 19.3.

D'abord j'ai créé une table sans compression:

Ensuite j'ai créé une table avec compression mais le niveau de cette compression était BASIC:

Finalement j'ai créé une table avec compression et le niveau de cette compression était ADVANCED:

Si je fais cela, je devrai payer à Oracle le prix d'une licence pour l'option de compression avancée. Si je travaille chez une compagnie qui ne veut pas payer ce prix, que puis-je faire pour empêcher les développeurs de se servir de cette option? Dès que je connais la réponse je la mettrai ici.