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é :-)