Canalblog
Editer l'article Suivre ce blog Administration + Créer mon blog
Publicité
Blog d'un DBA sur le SGBD Oracle et SQL
29 avril 2018

Les plus vieux fichiers d'Oracle pour créer une base datent de 1987 - The oldest Oracle files to create database date from 1987


Introduction
La base de données Oracle est un logiciel existant depuis 1979, soit presque 40 ans!

Celle-ci a incroyablement évolué depuis ses débuts, songez que sa première version ne supportait pas les transactions mais seulement les fonctionnalités SQL basiques de requête et jointure... pour info le COMMIT/ROLLBACK ne fut introduit que sur la V3.

Depuis ces temps quasi-préhistoriques, de très (trop?) nombreuses fonctionnalités ont disparu, sont devenues Deprecated, Unsuported puis Obsoletes... Et donc, ma question est, existe t-il encore aujourd'hui dans Oracle de vieux reliquats de ces temps mythiques?  Par exemple, SQL*Plus est apparu en V4 (1984 quand même) sous le nom de UFI pour "User Friendly Interface".

Ma recherche va porter sur les fichiers, et plus précisément sur ceux de création de la base, comme ça, par choix et intérêt personnel :-)



 
Points d'attention
Aucun...



Base de tests
N'importe quelle base Oracle.



Exemples
============================================================================================
Identifier les plus vieux fichiers encore actifs d'Oracle
============================================================================================

Le point de départ est le répertoire contenant les scripts de création d'une base, $ORACLE_HOME/rdbms/admin.
     [oracle@vbgeneric admin]$ cd $ORACLE_HOME/
     [oracle@vbgeneric db_1]$ cd rdbms/admin/
     
     [oracle@vbgeneric admin]$ pwd
     /u01/app/oracle/product/12.2/db_1/rdbms/admin

Pour identifier ces plus vieux fichiers, je fais une recherche sur la chaîne de caractère slash et l'année sur deux chiffres puis je filtre sur la chaîne rem qui indique les remarques; exemple : /79 puis rem pour l'année 1979.

Cette recherche est possible car dans l'en-tête des fichiers Oracle, l'historique des modifications est listé, année par année, mois par mois, parfois sur une centaine de lignes.

La société Oracle a été fondée en 1977 mais la première version du SGBD a été mis sur le marché en 1979, je commence donc ma recherche sur cette année. Le premier résultat est 1987; certains résultats ne sont pas pertinents comme on va le voir.    

Résultat non pertinent.
     [oracle@vbgeneric admin]$ grep /79 *.* | grep -i rem
     prvtlmd.plb:u2OzQCd2UWqfQh04REM0nHT2rB0hyEhSjBHrgzswy6+rK4u8h1LqWOUzs7j1Wq+sjJ/79SmU

     [oracle@vbgeneric admin]$ grep /80 *.* | grep -i rem

     [oracle@vbgeneric admin]$ grep /81 *.* | grep -i rem


Résultat non pertinent.
     [oracle@vbgeneric admin]$ grep /82 *.* | grep -i rem

     catawrtb.sql:Rem    arbalakr    02/23/09 - bug 7350685/8283758 add top_level_call#,

     [oracle@vbgeneric admin]$ grep /83 *.* | grep -i rem


     [oracle@vbgeneric admin]$ grep /84 *.* | grep -i rem


Résultats non pertinent.
     [oracle@vbgeneric admin]$ grep /85 *.* | grep -i rem

     dbmsaqad.sql:Rem $Header: rdbms/admin/dbmsaqad.sql /main/85 2016/05/15 08:54:25 sjanardh Exp $
     dbmssqlt.sql:Rem $Header: rdbms/admin/dbmssqlt.sql /main/85 2016/05/16 09:49:55 aarvanit Exp $

     [oracle@vbgeneric admin]$ grep /86 *.* | grep -i rem


Ca y est, nous y sommes! Le plus vieux fichier est catexp.sql, créé en Juillet 1987, par un développeur de nom HONG. Un seul pour 1987.
     [oracle@vbgeneric admin]$ grep /87 *.* | grep -i rem

     catexp.sql:Rem     Hong       12/12/87  - fix exutbs
     catexp.sql:Rem     Hong       12/07/87  - handle min extents

Ah, en 1988 nous trouvons trois nouveaux fichiers, catdbsyn.sql, utlxplan.sql et le fameux fichier catalog.sql, créé par un développeur de nom GRAYSON. Et en plus, à cette époque, ils ont commencé à dire de quand date la création des fichiers :-) 
     [oracle@vbgeneric admin]$ grep /88 *.* | grep -i rem

     catalog.sql:Rem   Grayson    03/21/88 - Creation
     catdbsyn.sql:rem    Grayson       03/20/88 - Creation
     catexp.sql:Rem     Hong       10/31/88  - don't export quotas of 0
     catexp.sql:Rem     Hong       09/21/88  - allow null precision/scale
     catexp.sql:Rem     Hong       09/10/88  - fix outer joins
     catexp.sql:Rem     Hong       08/10/88  - get default/temp tablespace in exuusr
     catexp.sql:Rem     Hong       07/01/88  - get obj id in some views
     catexp.sql:Rem     Hong       06/10/88  - remove userid != 0 from views
     catexp.sql:Rem     Hong       04/28/88  - comment$ moved to com$
     catexp.sql:Rem     Hong       03/24/88  - add audit field to exu7seq
     catexp.sql:Rem     Hong       03/07/88  - deal with initrans, maxtrans
     catexp.sql:Rem     Hong       02/01/88  - add exuico and exuicou
     catexp.sql:Rem     Hong       02/01/88  - fix exufil to use v$dbfile directly
     utlxplan.sql:Rem     Peeler     10/19/88 - Creation
     [oracle@vbgeneric admin]$

Les plus vieux fichiers encore utilisés par Oracle pour créer sa base datent donc de 1987. Pour rappel, Oracle 5 est sorti en 1986 et Oracle 6 en 1988; nous parlons d'une époque où les contraintes d'intégrité n'étaient pas encore implémentées dans Oracle (elles sont arrivées en 1992 avec Oracle 7).
     

============================================================================================
Le contenu des fichiers
============================================================================================
    
Regardons maintenant le contenu de ces fichiers qui ont résisté au temps et aux multiples versions d'Oracle.

catexp.sql
Le fichier catexp.sql est celui servant à créer les vues internes de la fonctionnalité Export/Import.
     [oracle@vbgeneric admin]$ more catexp.sql
     Rem
     Rem $Header: rdbms/admin/catexp.sql /main/410 2016/02/04 03:33:39 mjangir Exp $ expvew.sql
     Rem
     Rem Copyright (c) 1987, 2016, Oracle and/or its affiliates.
     Rem All rights reserved.
     Rem NAME
     Rem    CATEXP81.SQL - CATalog EXPort/import sql script
     Rem  FUNCTION
     Rem    Creates internal views for Export/Import utility
     Rem  NOTES
     Rem    Must be run when connected to SYS or INTERNAL.
     Rem
     

Voici un extract de l'en-tête du fichier. En vrai il fait des dizaines et des dizaines de lignes mais, si cela vous intéresse, je vous laisse le parcourir chez vous. Vous noterez les commentaires qui, pour certains, rappellent de vieux souvenirs : qui connaît encore les utilitaires exuico and exuicour d'Oracle? A priori personne car Google ne renvoit que deux liens (d'ailleurs est-ce qu'il s'agit bien d'utilitaires? impossible de le savoir puisque Google ne dit rien)... Quel plaisir pour l'archéologue d'Oracle de pouvoir parcourir ces anciennes traces, ces témoignages d'une autre époque.

Vous noterez qu'il est toujours maintenu : la dernière modification date de juin 2016!
     Rem  MODIFIED
     Rem     mjangir    01/06/16 - bug 22380919
     Rem     jjanosik   11/23/15 - rti 18756088 - undo fix for bug 13611733
     Rem     jjanosik   09/23/15 - bug 13611733: Fix grants per bug requirements
     Rem     mjangir    09/17/15 - bug 21863092: do not export apex_050000
     Rem     mjangir    07/02/15 - bug 21360920: repalce v$ with x$ in view imprbs
     Rem     jorgrive   03/25/15 - Do not export GGSYS user
     Rem     mjangir    02/18/15 - bug 20064901: add view imprbs
     Rem     mjangir    01/21/15 - bug 20391825: support long identifiers
     Rem     skayoor    11/30/14 - Proj 58196: Change Select priv to Read Priv
     Rem     sudurai    11/25/14 - proj 49581 - optimizer stats encryption
     Rem     sanbhara   04/23/14 - Project 46816 - adding support for SYSRAC.
     Rem     surman     12/29/13 - 13922626: Update SQL metadata
     Rem     sasounda   11/19/13 - 17746252: handle KZSRAT when creating all_* views
     Rem     mjungerm   07/08/13 - revert addition of CREATE JAVA priv
     Rem     jstenois   06/07/13 - 16755045: need to mask SPARE1 from SEG$ sunce exp
     Rem                           clients expect ub4 value
     ...
     ...
     Rem     Gupta      02/26/90  - Lots of modifications for V7
     Rem     Hong       10/31/88  - don't export quotas of 0
     Rem     Hong       09/21/88  - allow null precision/scale
     Rem     Hong       09/10/88  - fix outer joins
     Rem     Hong       08/10/88  - get default/temp tablespace in exuusr
     Rem     Hong       07/01/88  - get obj id in some views
     Rem     Hong       06/10/88  - remove userid != 0 from views
     Rem     Hong       04/28/88  - comment$ moved to com$
     Rem     Hong       03/24/88  - add audit field to exu7seq
     Rem     Hong       03/07/88  - deal with initrans, maxtrans
     Rem                            add views for constraints, sequence #
     Rem     Hong       02/01/88  - add exuico and exuicou
     Rem                            temporary commented out col$.default$
     Rem     Hong       02/01/88  - fix exufil to use v$dbfile directly
     Rem     Hong       12/12/87  - fix exutbs
     Rem     Hong       12/07/87  - handle min extents
     

catalog.sql
Attention, énorme fichier, très important : catalog.sql, celui qui créé les vues du dictionnaire de données; et oui, rien que cela :-)  
Cela fait 30 années que ce fichier fondamental existe, respect!  
     [oracle@vbgeneric admin]$ more catalog.sql
     Rem
     Rem $Header: rdbms/admin/catalog.sql /main/714 2015/11/16 09:21:27 jstenois Exp $ catalog.sql
     Rem
     Rem Copyright (c) 1988, 2015, Oracle and/or its affiliates.
     Rem All rights reserved.
     Rem
     Rem NAME
     Rem   CATALOG.SQL
     Rem FUNCTION
     Rem   Creates data dictionary views.
     Rem NOTES
     Rem   Must be run when connected AS SYSDBA
     
     Rem MODIFIED
     Rem     jstenois   11/11/15  - rti 18741337: move catldr to avoid conflicts
     Rem                            with cdobj
     Rem     svaziran   08/25/15  - bug 21548817: add cdadr.sql
     Rem     jerrede    07/27/15  - Add -D Description
     Rem     mstasiew   11/26/14  - Proj 47091: add cdhcs.sql for new HCS objects
     Rem     talliu     10/02/13  - call catblock.sql
     Rem     talliu     07/08/13  - invoke catcdbviews before cdcore
     Rem     surman     03/08/13  - 16462837: Common start and end scripts
     Rem     jerrede    05/08/12  - Fix lrg 6730954 Definition problem in Windows
     Rem                            with moving from phase to phase need to restart
     Rem                            between all phases
     ...
     ...
     Rem   mmoore     07/08/91 - change trigger view column names
     Rem   amendels   07/02/91 - remove change to *_constraints.constraint_type
     Rem   mmoore     06/28/91 - move table_privileges back in
     Rem   ltan       06/24/91 - bug 65188,add comment on DBA_ROLLBACK_SEGS.BLOCK_ID
     Rem   mmoore     06/24/91 - move table and column_privileges to catalog6
     Rem   ghallmar   06/11/91 -         new improved 2PC views
     Rem   amendels   06/10/91 - move obsolete sql2 views to catalog6.sql;
     Rem                       - remove decodes for type 97;
     Rem                       - union -> union all;
     Rem                       - improve *_constraints.constraint_type (66063)
     Rem   mmoore     06/10/91 - add grantable column to privilege views
     Rem   smcadams   06/09/91 - add actions to audit_actions
     Rem   mmoore     06/03/91 - change user$ column names
     Rem   agupta     06/07/91 - syntax error in exp_objects view
     Rem   rkooi      10/22/91 - deleted lots of comments (co truncate bug)
     Rem   Grayson    03/21/88 - Creation
     

catdbsyn.sql     
Le fichier catdbsyn.sql n'a pas évolué depuis 2001... A noter, une petite confusion dans les deux dernières lignes?
     [oracle@vbgeneric admin]$ more catdbsyn.sql
     rem
     rem $Header: catdbsyn.sql 24-may-2001.11:33:53 gviswana Exp $
     rem
     Rem  Copyright (c) 1991 by Oracle Corporation
     Rem    NAME
     Rem      catdbsyn.sql - catalog dba synonyms
     Rem    DESCRIPTION
     Rem      Creates private synonyms for DBA-only dictionary views.
     Rem    RETURNS
     Rem
     Rem    NOTES
     Rem      This file is made obsolete as DBA is now a role.  All DBA_% catalog
     Rem      views have a corresponding public synonym, and are accessible to
     Rem      any user with SELECT ANY TABLE privilege.
     Rem    MODIFIED   (MM/DD/YY)
     Rem     gviswana   05/24/01  - CREATE OR REPLACE SYNONYM
     Rem     wmaimone   05/26/94 -  #186155 add public synoyms for dba_
     Rem     glumpkin   10/20/92 -  Renamed from DBA_SYN.SQL
     Rem     mmoore     07/13/92 - #(118440) add dba_priv_audit_opts synonym
     Rem     mmoore     07/06/92 -  change 'grants' to 'privs' in privilege views
     Rem     rjenkins   04/24/92 -  adding snapshot views
     Rem     mmoore     09/18/91 -  add dba_roles
     Rem     rlim       08/22/91 - Creation - rename dba_synonyms.sql to dba_syn.sql
     Rem     rlim       07/30/91 -         added dba synonyms from catalog.sql & aud
     Rem     Kooi       03/11/91 - new stuff for procedures/triggers
     Rem     Moore      10/04/90 - add dba_col_grants
     rem    Grayson       03/20/88 - Creation
     rem     Mendels    05/11/89 - rename dba_exp_tables -> dba_exp_objects
     rem
     

utlxplan.sql
Dernier fichier, utlxplan.sql. C'est le fichier
qui crée la table utilisée par l'utilitaire EXPLAIN PLAN.
     [oracle@vbgeneric admin]$ more utlxplan.sql
     rem
     rem $Header: rdbms/admin/utlxplan.sql /main/17 2011/09/06 18:42:50 pyam Exp $ xplainpl.sql
     rem
     Rem Copyright (c) 1988, 2011, Oracle and/or its affiliates.
     Rem All rights reserved.
     Rem NAME
     REM    UTLXPLAN.SQL
     Rem  FUNCTION
     Rem  NOTES
     Rem  MODIFIED
     ...
     ...
     Rem     jcohen     09/24/93 -  #163783 add optimizer column
     Rem     glumpkin   10/25/92 -  Renamed from XPLAINPL.SQL
     Rem     jcohen     05/22/92 -  #79645 - set node width to 128 (M_XDBI in gendef)
     Rem     rlim       04/29/91 -  change char to varchar2
     Rem     Peeler     10/19/88 - Creation
     Rem
     Rem This is the format for the table that is used by the EXPLAIN PLAN
     Rem statement.  The explain statement requires the presence of this
     Rem table in order to store the descriptions of the row sources.
     
     create table PLAN_TABLE sharing=none (...


Voilà, ce petit tour de culture générale Oracle est terminé :-)


Publicité
Publicité
Commentaires
Blog d'un DBA sur le SGBD Oracle et SQL
Publicité
Archives
Blog d'un DBA sur le SGBD Oracle et SQL
  • Blog d'un administrateur de bases de données Oracle sur le SGBD Oracle et sur les langages SQL et PL/SQL. Mon objectif est de vous faire découvrir des subtilités de ce logiciel, des astuces, voir même des surprises :-)
  • Accueil du blog
  • Créer un blog avec CanalBlog
Visiteurs
Depuis la création 340 689
Publicité