Vous êtes sur la page 1sur 25

MODULE 1 : Architecture du serveur base de données Oracle

MODULE 2 : La gestion d’une instance

1. Connecter à la base de données « orcl » avec l’utilisateur SYS, le mot de


passe de l’utilisateur SYS et SYSTEM est « oracle_4U »
Sqlplus sys/oracle_4U as sysdba

2. Essayer de créer un fichier de paramètre au format texte.


CREATE PFILE FROM SPFILE ;
Remarque : le fichier sera créer sous le répertoire $ORACLE_HOME/dbs
cd $ORACLE_HOME/dbs
vi initorcl.ora

3. Connecter à la base de données « orcl » avec l’utilisateur SYS, et lister les


valeurs des paramètres d’initialisation à l’aide de la vue v$parameter et à
l’aide de la commande SHOW PARAMETER
COL NAME FORMAT A30
COL VALUE FORMAT A30
SELECT NAME,VALUE FROM V$PARAMETER;
SHOW PARAMETER PARAMETER_NAME

4. Modifier les paramètres d’initialisation «job_queue_processes » de la


valeur 1000 à la valeur 15.
ALTER SYSTEM SET JOB_QUEUE_PROCESSES = 15 SCOPE=BOTH;

5. Modifier les paramètres d’initialisation «processes» de la valeur 300 à la


valeur 200.
ALTER SYSTEM SET SESSIONS=472 SCOPE=SPFILE;

6. A l’aide de SQL*PLUS arrêter et démarrer la base de donnée « orcl »


SHUTDOWN IMMEDIATE
STARTUP
MODULE 3: L’architecture Oracle Net
MODULE 4 : Le fichier de contrôle

1. Connecter en tant que utilisateur SYS sur la base « orcl ». Exécuter la


commande suivante :
ALTER DATABASE BACKUP CONTROLFILE TO TRACE as ‘/home/oracle/control.sql’;
2. Examiner le contenu du fichier de trace control.sql
3. Le contenu de fichier ressemblera à ceci :

CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS NOARCHIVELOG


MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 '/oradata/orcl/redo01.log' SIZE 50M BLOCKSIZE 512,
GROUP 2 '/oradata/orcl/redo02.log' SIZE 50M BLOCKSIZE 512,
GROUP 3 '/oradata/orcl/redo03.log' SIZE 50M BLOCKSIZE 512
-- STANDBY LOGFILE
DATAFILE
'/oradata/orcl/system01.dbf',
'/oradata/orcl/sysaux01.dbf',
'/oradata/orcl/undotbs01.dbf',
'/oradata/orcl/example01.dbf',
'/oradata/orcl/users01.dbf'
CHARACTER SET WE8MSWIN1252
;

4. Multiplexer le fichier de contrôle dans une autre destination en utilisant


les commandes suivantes :

SHOW PARAMETER CONTROL_FILES

NAME TYPE VALUE


------------------------------------ ----------- ------------------------------
control_files string /oradata/orcl/control01.ctl, /
orafra/orcl/control02.ctl
SQL> ALTER SYSTEM SET
CONTROL_FILES='/oradata/orcl/control01.ctl','/orafra/orcl/control02.ctl','/orabin/
app/oracle/control03.ctl'SCOPE=spfile;

Systeme modifie.
SHUTDOWN IMMEDIATE
Base de donnees fermee.
Base de donnees demontee.
Instance ORACLE arretee.
EXIT
Deconnecte de Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit
Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
[oracle@OradistHost oracle]$ cp /oradata/orcl/control01.ctl
/orabin/app/oracle/control03.ctl
[oracle@OradistHost oracle]$ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.2.0 Production on Wed Apr 7 17:12:18 2021

Copyright (c) 1982, 2014, Oracle. All rights reserved.

Connected to an idle instance.

SQL> STARTUP
ORACLE instance started.

Total System Global Area 3019898880 bytes


Fixed Size 2928968 bytes
Variable Size 738201272 bytes
Database Buffers 2264924160 bytes
Redo Buffers 13844480 bytes
Base de donnees montee.
Base de donnees ouverte.

SHOW PARAMETER CONTROL_FILES

NAME TYPE VALUE


------------------------------------ ----------- ------------------------------
control_files string /oradata/orcl/control01.ctl, /
orafra/orcl/control02.ctl, /or
abin/app/oracle/control03.ctl
MODULE 5 : Les fichiers de journalisation

1. Multiplier les fichiers de journalisation de la base de données « orcl » en


utilisant les commandes suivantes :
alter database add logfile member '/oradata/orcl/redo01a.log' to group 1;
alter database add logfile member '/oradata/orcl/redo02a.log' to group 2;
alter database add logfile member '/oradata/orcl/redo03a.log' to group 3;
alter system switch logfile;

SQL> select GROUP# ,MEMBERS from v$log;

GROUP# MEMBERS
---------- ----------
1 2
2 2
3 2
2. Supprimer les nouveaux membres récemment ajouté à la base orcl en
utilisant les commandes suivantes :
ALTER DATABASE DROP LOGFILE MEMBER '/oradata/orcl/redo01a.log';
ALTER DATABASE DROP LOGFILE MEMBER '/oradata/orcl/redo02a.log';
ALTER DATABASE DROP LOGFILE MEMBER '/oradata/orcl/redo03a.log';
SQL> ALTER DATABASE DROP LOGFILE MEMBER '/oradata/orcl/redo01a.log';
Base de donnees modifiee.
SQL> ALTER DATABASE DROP LOGFILE MEMBER '/oradata/orcl/redo02a.log';
Base de donnees modifiee.
SQL> ALTER DATABASE DROP LOGFILE MEMBER '/oradata/orcl/redo03a.log';
ALTER DATABASE DROP LOGFILE MEMBER '/oradata/orcl/redo03a.log'
*
ERREUR a la ligne 1 :
ORA-01609: le journal 3 est le journal en cours pour le thread 1 - impossible
de supprimer des membres
ORA-00312: journal en ligne 3 thread 1 : '/oradata/orcl/redo03.log'
ORA-00312: journal en ligne 3 thread 1 : '/oradata/orcl/redo03a.log'
SQL> ALTER SYSTEM SWITCH LOGFILE;
Systeme modifie.
SQL> ALTER DATABASE DROP LOGFILE MEMBER '/oradata/orcl/redo03a.log';
Base de donnees modifiee.
SQL> SELECT GROUP#, MEMBERS FROM V$LOG;
GROUP# MEMBERS
---------- ----------
1 1
2 1
3 1

3. Changer le mode de la base de données en mode archivelog en utilisant


les commandes suivantes :
SQL> SELECT LOG_MODE FROM V$DATABASE;

LOG_MODE
------------
NOARCHIVELOG
SQL> SHUT IMMEDIATE
Base de donnees fermee.
Base de donnees demontee.
Instance ORACLE arretee.
SQL> STARTUP MOUNT
Instance ORACLE lancee.

Total System Global Area 3019898880 bytes


Fixed Size 2928968 bytes
Variable Size 738201272 bytes
Database Buffers 2264924160 bytes
Redo Buffers 13844480 bytes
Base de donnees montee.
SQL> ALTER DATABASE ARCHIVELOG ;
Base de donnees modifiee.
SQL> ALTER DATABASE OPEN;
Base de donnees modifiee.
SQL> SELECT LOG_MODE FROM V$DATABASE;
LOG_MODE
------------
ARCHIVELOG
MODULE 6 : Les Tablespaces
1. Connecter avec l’utilisateur SYS sous la base de données « orcl », et créer
la tablespace TEST en ajoutant deux fichiers de données test01.dbf et
test02.dbf à l’aide de cette commande :

CREATE TABLESPACE TEST DATAFILE '/ORADATA/ORCL/TEST01.DBF' SIZE 100M


,'/ORADATA/ORCL/TEST02.DBF' SIZE 100M;

SELECT TABLESPACE_NAME, EXTENT_MANAGEMENT,


SEGMENT_SPACE_MANAGEMENT FROM DBA_TABLESPACES WHERE
TABLESPACE_NAME='TEST';

TABLESPACE_NAME EXTENT_MAN SEGMEN


------------------------------ ---------- -------------------
TEST LOCAL AUTO

2. Supprimer le fichier de données test02.dbf de la tablespace test02.dbf en


utilisant les commandes suivantes :

ALTER TABLESPACE TEST DROP DATAFILE '/ORADATA/ORCL/TEST02.DBF';

3. Changer le nom de la tablespace « test » en « test1 » en utilisant cette


commande :
ALTER TABLESPACE test RENAME TO test1;

4. Changer le status de la tablespace test1 en mode READ ONLY :

ALTER TABLESPACE TEST1 READ ONLY;

5. Essayer de supprimer la tablespace test en supprimant la tablespace et les


fichiers de données à l’aide de cette commande :

DROP TABLESPACE test1 INCLUDING CONTENTS AND DATAFILES;


MODULE 8 : Gérer les données d’annulation

1. Connecter avec l’utilisateur HR sur la base de données « orcl » avec le mot


de passe HR. Si le compte est verrouillé, activer le avec la commande :

ALTER USER HR IDENTIFIED BY HR ACCOUNT UNLOCK ;

2. Modifier une ligne de la table departments qui a pour la valeur de


DEPARTMENT_ID =100 et le DEPARTMENT_NAME la valeur « Finance »
avec la valeur « Fin » :

UPDATE departments set DEPARTMENT_NAME='Fin' where DEPARTMENT_ID=100;

3. Ouvrir une nouvelle session et connecter avec l’utilisateur HR et lister


toutes les lignes de la table :

SELECT * FROM DEPARTMENTS ;

4. Maintenant, valider la transaction sur la première session et essayer de


nouveau :
5. Changer le paramètre d’initialisation UNDO_RETENTION a la valeur 3600
avec les étapes suivantes :

SHOW PARAMETER UNDO_RET

NAME TYPE VALUE


------------------------------------ ----------- ------------------------------
undo_retention integer 900

ALTER SYSTEM SET UNDO_RETENTION=3600;

Systeme modifie.

SQL> SHOW PARAMETER UNDO_RET

NAME TYPE VALUE


------------------------------------ ----------- ------------------------------
undo_retention integer 3600

6. Effacer la table departments et essayer de la récupérer avec l’option


flashback to before drop :

SQL> conn hr/hr

SQL> ALTER TABLE EMPLOYEES DROP CONSTRAINT EMP_DEPT_FK;


Table modifiee.

SQL> ALTER TABLE JOB_HISTORY DROP CONSTRAINT JHIST_DEPT_FK;


Table modifiee.

SQL> DROP TABLE DEPARTMENTS;


Table supprimee.

SQL> FLASHBACK TABLE DEPARTMENTS TO BEFORE DROP;


Flashback termine.

SQL> select * from departments;


MODULE 9 : création d’une table
1. Créer la table commande avec 6 colonnes :
 NO_COMMANDE de type NUMBER(6) et not null
 CODE_CLIENT de type CHAR(5) et not null
 NO_EMPLOYE de type NUMBER(6) et not null
 DATE_COMMANDE de type DATE
 DATE_ENVOI de type DATE
 PORT de type NUMBER

CREATE TABLE COMMANDES (

NO_COMMANDE NUMBER(6) NOT NULL,

CODE_CLIENT CHAR(5) NOT NULL,

NO_EMPLOYE NUMBER(6) NOT NULL,

DATE_COMMANDE DATE DEFAULT SYSDATE,

DATE_ENVOI DATE ,

PORT NUMBER(8,2) );

2. Créer une table department_cpy qui est une copie de la table


departments :
CREATE TABLE DEPARTMENT_CPY AS SELECT * FROM DEPARTMENTS;

3. Ajouter une nouvelle colonne à la table commande « CLIENT_NAME » de


type VARCHAR2
ALTER TABLE COMMANDES ADD (CLIENT_NAME varchar2(30));

4. Modifier le type de donnée de la colonne NO_COMMANDE en char (6)


ALTER TABLE COMMANDES MODIFY (NO_COMMANDE CHAR(6)) ;

5. Supprimer la colonne CLIENT_NAME de la table COMMANDE


ALTER TABLE COMMANDES DROP COLUMN CLIENT_NAME ;

6. Supprimer la table COMMANDES


DROP TABLE COMMANDES CASCADE CONSTRAINTS ;
MODULE 12 : Les index
1. Créer un index sur la table departments sur la colonne department_name :
CREATE INDEX IDX_DNAME ON DEPARTMENTS (DEPARTMENT_NAME);

2. Modifier le nom de l’index de IDX_DNAME vers INDEX_DEPTNAME


ALTER INDEX idx_dname RENAME TO INDEX_DEPTNAME;

3. Supprimer l’index IDX_DNAME de la table departments


DROP INDEX IDX_DNAME

MODULE 13 : Les utilisateurs


1. Créer un utilisateur ora21 identifié par le mot de passe ora21
CREATE USER ORA21 IDENTIFIED BY ORA21 ACCOUNT UNLOCK;

2. Modifier l’utilisateur ora21, pour qu’il puisse écrire sur la tablespace


users avec un quota illimté
ALTER USER ora21 DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP
QUOTA UNLIMITED TO USERS;

3. Créer un profil nommé ora_profil et affecter le à l’utilisateur ora21 :


 L’utilisation de 7 caractères alphanumériques au minimum ;
 Le changement du mot de passe initial lors de la première connexion ;
 La désactivation de la session au bout de 15 min d'inactivité ;
 Le changement du mot de passe tous les 90 jours ;
 L’utilisation d’un historique de 4 mots de passe ;
 Le verrouillage des comptes au bout de six échecs de connexion, pendant 30 minutes ;

CREATE PROFILE ORA_PROFILE LIMIT


PASSWORD_LIFE_TIME 90
IDLE_TIME 15
PASSWORD_GRACE_TIME 0
PASSWORD_REUSE_TIME 365
PASSWORD_REUSE_MAX 4
FAILED_LOGIN_ATTEMPTS 6
PASSWORD_LOCK_TIME 30/1440
PASSWORD_VERIFY_FUNCTION ora12c_verify_function;

ALTER USER ora21 PROFILE ORA_PROFILE;


4. Supprimer l’utilisateur ora21
DROP USER ORA21 CASCADE ;
MODULE 13 : Les privilèges

1. Créer un utilisateur ora22 identifié par le mot de passe ora22


CREATE USER ORA22 IDENTIFIED BY ORA22 ACCOUNT UNLOCK;

2. Accordé à l’utilisateur ora22 les privilèges système suivants :


Se connecter et créer les tables
GRANT CREATE SESSION, RESOURCE, CREATE TABLE TO ORA22;

3. Accordé à l’utilisateur ora22 les privilèges objet suivants :


Select, alter et insert dans la table emp du schema SCOTT
GRANT SELECT, ALTER, INSERT ON SCOTT.EMP TO ORA22;

4. Révoquer des privilèges objet


REVOKE SELECT ON SCOTT.EMP FROM ORA22;
BACKUP & RESTORE

1. Effecuter une sauvegarde complète de la base orcl en utilisant le script


suivant :

export ORACLE_SID=orcl
export ORACLE_HOME= /orabin/app/oracle/product/12.1.0.2/db_1
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export PATH=$ORACLE_HOME/bin:$PATH:$HOME/bin
$ORACLE_HOME/bin/rman target / msglog=BACKUP.log << EOF
run {
ALLOCATE CHANNEL c1 DEVICE TYPE disk;
ALLOCATE CHANNEL c2 DEVICE TYPE disk;
ALLOCATE CHANNEL c3 DEVICE TYPE disk;
ALLOCATE CHANNEL c4 DEVICE TYPE disk;
backup as compressed backupset database tag = 'Daily_FBkp' plus archivelog;
backup current controlfile tag="FULL_CONTROL_BACKUP";
release channel c1;
release channel c2;
release channel c3;
release channel c4;
}

run {
ALLOCATE CHANNEL c1 DEVICE TYPE disk;
ALLOCATE CHANNEL c2 DEVICE TYPE disk;
ALLOCATE CHANNEL c3 DEVICE TYPE disk;
ALLOCATE CHANNEL c4 DEVICE TYPE disk;
crosscheck archivelog all;
crosscheck backup;
delete noprompt expired archivelog all;
delete noprompt expired backup;
delete noprompt obsolete;
release channel c1;
release channel c2;
release channel c3;
release channel c4;
}

2. How to recover from a loss of one redo log member of a MULTIPLEXED


GROUP
How to recover from a loss of one redo log member of a MULTIPLEXED GROUP

étape 1:
SELECT GROUP#,STATUS,MEMBER FROM V$LOGFILE;

étape 2:

cd /oradata/orcl/

rm redo02a.log (the status column of V$LOGFILE view change (from NULL to INVALID) for the
lost member)

étape 3:

ALTER SYSTEM SWITCH LOGFILE;

étape 4:

ALTER DATABASE DROP LOGFILE MEMBER '/ORADATA/ORCL/REDO02a.log';

étape 5:

alter database add logfile member '/oradata/orcl/redo02a.log' to group 2;

étape 6:

alter system switch logfile;

étape 7:

alter system switch logfile;

3. How to recover from a loss of all redo log members of an INACTIVE GROUP
étape 1:

select GROUP#,STATUS,MEMBER from v$logfile;

étape 2:

cd /oradata/orcl/

rm redo02a.log (INACTIVE GROUP)

étape 3:

startup mount

étape 4:

alter database clear logfile group 1; (The redo log group 1 is INACTIVE and ARCHIVED)

étape 5:

alter database open;

---- If you are in the situation to have lost an INACTIVE and NOT already ARCHIVED redo log
group ----

alter database clear unarchived logfile group 1;

RMAN> backup database;


4. How to recover from a loss of all redo log members of the CURRENT group
étape 1:

select GROUP#,STATUS,MEMBER from v$logfile;

étape 2:

cd /oradata/orcl/

rm redo02.log (CURRENT group)

étape 3:

startup (The instance alerts you it cannot open your database because of the missing files.
It''s time to perform an incomplete recovery.)

étape 4:

select group#, status, archived, thread#, sequence#, first_change# from v$log; (obtain the
latest valid SCN of the missing group)

étape 5:

RMAN> restore database until scn (the latest valid SCN)

RMAN> recover database until scn (the latest valid SCN)

RMAN> alter database open resetlogs;

5. How to restore from a loss of a subset of the CURRENT CONTROL FILES


étape 1:

select status, name from V$CONTROLFILE;

étape 2:

rm /oradata/orcl/control01.ctl

étape 3:

cp /home/oracle/app/oracle/flash_recovery_area/orcl/control02.ctl
/home/oracle/app/oracle/oradata/orcl/control01.ctl

6. How to restore from a loss of all CURRENT CONTROL FILES TO THE


DEFAULT LOCATION
étape 1:

rm /orafra/orcl/control02.ctl /oradata/orcl/control01.ctl

étape 2:

startup nomount;
étape 3:

rman target /

étape 4:

restore controlfile from autobackup;

étape 5:

alter database mount;

étape 6:

recover database;

étape 7:

alter database open resetlogs;

7. How to restore from a loss of all current control files to A NON DEFAULT
LOCATION USING AUTOBACKUP
étape 1:

rm /orafra/orcl/control02.ctl /oradata/orcl/control01.ctl

étape 2:

pwd

/oradata/orcl/non_default_location

étape 3:

RMAN> startup nomount;

étape 4:

RMAN> restore controlfile to ' /oradata/orcl/non_default_location/control01.ctl' from


autobackup;

étape 5:

SQL> alter system set control_files=' /oradata/orcl/non_default_location/control01.ctl'


scope=spfile;

étape 6:

shutdown immediate;

étape 7:

rman target /

startup mount;

recover database;

alter database open resetlogs;


étape 8:

shutdown immediate;

étape 9:

pwd

/oradata/orcl/non_default_location

cp control01.ctl /orafra/orcl/control02.ctl

cp control01.ctl /oradata/orcl/control01.ctl

Vous aimerez peut-être aussi