IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
logo
Sommaire > Administration > Autres
        Comment afficher l'espace disque occupé par les objets Oracle ?
        Comment positionner la valeur de certains paramètres à la connection?
        Comment créer un DBLink sans Tnsnames.ora ?
        Comment lire le fichier d'alert de Sql*Plus ?
        Comment lister les Directory ainsi que leurs caractéristiques principales ?
        Comment recompiler des objets en fonction de leurs dépendances ?
        Comment vider les caches Oracle ?
        Comment modifier le mot de passe de l'utilisateur sysman dans Enterprise Manager Grid Control ?
        Comment afficher les paramètres cachés d'Oracle ?



Comment afficher l'espace disque occupé par les objets Oracle ?
auteur : SheikYerbouti
Comment calculer l'espace disque occupé par les objets Oracle

En interrogeant la vue DBA_SEGMENTS :

SQL> COLUMN TABLE FORMAT A30 
SQL> COLUMN Taille FORMAT A15 
SQL> COLUMN TABLESPACE FORMAT A20 
SQL> 
SQL> SELECT segment_name "TABLE" 
  2      , SUM(BYTES) /1024 || 'Ko' "Taille" 
  3      , blocks "Blocs" 
  4      , tablespace_name "TABLESPACE" 
  5  FROM   dba_segments 
  6  WHERE  segment_type = 'TABLE' 
  7  AND    OWNER = 'FD' 
  8  GROUP BY segment_name, tablespace_name, blocks 
  9  ORDER BY segment_name ; 

TABLE                          Taille               Blocs TABLESPACE 
------------------------------ --------------- ---------- -------------------- 
ADRESSE                        64Ko                     8 USERS 
CONTACT                        64Ko                     8 USERS 
DEPT                           64Ko                     8 USERS 
EMP                            128Ko                   16 USERS 
EMPLOYE                        64Ko                     8 USERS 
FACTURE                        64Ko                     8 USERS 
LOV_BLOCK                      64Ko                     8 USERS 
LOV_COLONNE                    64Ko                     8 USERS 
LOV_ELEMENT_COLONNE            64Ko                     8 USERS 
LOV_ITEM                       64Ko                     8 USERS 
LOV_LOV                        64Ko                     8 USERS 
LOV_MODULE                     64Ko                     8 USERS 
NOMBRES                        64Ko                     8 USERS 
TELEPHONE                      64Ko                     8 USERS 
TEST                           2048Ko                 256 USERS 
TEST_LOV                       4096Ko                 512 USERS 
TEST_TYPES                     64Ko                     8 USERS 
TRACE                          64Ko                     8 SYSTEM 
UTIL_PREFS                     64Ko                     8 USERS 
UTIL_PREFS_ORDER               64Ko                     8 USERS 
UTIL_PREFS_RECORD_ORDER        64Ko                     8 USERS 

21 ligne(s) sélectionnée(s).
Afficher la place occupée par toutes les tables d'un schéma particulier :

SQL> SELECT SUM(BYTES) /1024 /1024 || 'Mo' "Taille" 
  2      , SUM(blocks) "Blocs" 
  3  FROM   dba_segments 
  4  WHERE  segment_type = 'TABLE' 
  5  AND    OWNER = 'FD' 
  6  GROUP BY OWNER ; 

Taille               Blocs 
--------------- ---------- 
7,25Mo                 928
Afficher le cumul de volumétrie de tous les objets d'un schéma particulier :

SQL> SELECT SUM(BYTES) /1024 /1024 || 'Mo' "Taille" 
  2      , SUM(blocks) "Blocs" 
  3  FROM   dba_segments 
  4  WHERE  OWNER = 'FD' ; 

Taille               Blocs 
--------------- ---------- 
12,625Mo              1616 
Afficher l'espace occupé par l'ensemble des schémas :

SQL> SELECT SUM(BYTES) /1024 /1024 || 'Mo' "Taille" 
  2      , SUM(blocks) "Blocs" 
  3  FROM   dba_segments ; 

Taille               Blocs 
--------------- ---------- 
647,484375Mo         82878 

Comment positionner la valeur de certains paramètres à la connection?
auteur : lalystar
Pour fixer la valeur de certains paramètres de sessions automatiquement à chaque connection d'un utilisateur donné, le plus simple est d'utiliser un trigger au niveau de la base.
Le trigger doit être créé en tant que SYS ou bien par un utilisateur ayant le privilège ADMINISTER DATABASE TRIGGER.

create or replace trigger TG_DB_AFTER_LOGON after logon on database
begin
   if user = 'SCOTT' then
      execute immediate 'alter session set sort_area_size=100000';
   end if;
end;
Exemple d'utilisation :

SQL> connect sys/... as sysdba
Connected.
SQL> create or replace trigger TG_DB_AFTER_LOGON after logon on database
  2  begin
  3   if user = 'SCOTT' then
  4    execute immediate 'alter session set sort_area_size=100000';
  5   end if;
  6  end;
  7
  8  /

Trigger created.

SQL> show parameter sort_area_size

NAME                                 TYPE        VALUE
------------------------------------ ----------- -----------------------------
sort_area_size                       integer     65536
SQL> connect scott/...
Connected.
SQL> show parameter sort_area_size;

NAME                                 TYPE        VALUE
------------------------------------ ----------- -----------------------------
sort_area_size                       integer     100000
Ce genre de trigger est utile en particulier pour fixer les paramètres régionaux (séparateur décimal, séparateur de milliers...) indépendamment de la plateforme (Windows, Unix...) et de l'outil utilisé pour la connection (SQL*Plus, SQL*Loader, ...).



Comment lire le fichier d'alert de Sql*Plus ?
auteur : Jaouad
Ici il s'agit d'utiliser les tables externes, fonctionnalité disponible à partir de la 9i :

create directory BDUMP as 'background_dump_dest'
create table alert_log(text varchar2(80))
organization external
(
type oracle_loader
default directory BDUMP
access parameters (records delimited by newline)
location ('alert_SID.log')
)
reject limit 1000;


SQL>  select * from alert_log ;

Comment lister les Directory ainsi que leurs caractéristiques principales ?
auteur : Laurent Schneider
La requête suivante permet d'afficher les directory, avec les propriétés suivantes :
  • Schéma
  • Nom
  • Chemin

select OWNER,
       DIRECTORY_NAME,
       DIRECTORY_PATH
  from DBA_DIRECTORIES
 order by OWNER,
    DIRECTORY_NAME;
    
OWNER DIRECTORY_NAME  DIRECTORY_PATH
----- --------------- ----------------------------------------
SYS   WORK_DIR        /app/oracle/product/10.2.0.2/work
SYS   TMP             /tmp
SYS   DATA_PUMP_DIR   /app/oracle/product/10.2.0.2/rdbms/log/
SYS   ADMIN_DIR       /app/oracle/product/10.2.0.2/md/admin

Comment recompiler des objets en fonction de leurs dépendances ?
auteur : Pierre Forstmann
Grâce au mécanisme de compilation automatique à l'exécution d'un objet invalide, Oracle va compiler toutes les vues dépendantes pour les exécuter lors de l'exécution d'une vue.

La procédure suivante qui exécute "à vide" toutes les vues du schéma courant qui ne sont pas référencées dans d'autres vues va donc compiler toutes les vues du schéma courant:

create or replace procedure ev
is
comm varchar2(100);
res int;
begin
for lv in (select view_name from user_views where not exists 
                (select referenced_name from user_dependencies where referenced_name = view_name))
    loop
        comm := 'SELECT COUNT(*) FROM  ' || lv.view_name || ' WHERE 1=0';
        dbms_output.put_line(comm || ' ...');
        execute immediate comm into res;
        dbms_output.put_line('... OK.');
    end loop;
end;
/
Voici un exemple :

SQL> create table t(x int, y int);

Table created.

SQL> create view v1 as select x,y from t;

View created.

SQL> create view v2 as select x,y from v1 where x >= 0;

View created.

SQL> create view v3 as select x,y from v2 where y >= 0;

View created.

SQL> 
SQL> create view v4 as select x from t;

View created.

SQL> 
SQL> --
SQL> -- compiler toutes les vues
SQL> --
SQL> create or replace procedure ctv
  2  is
  3  comm varchar2(100);
  4  begin
  5  for lv in (select view_name from user_views)
  6  	 loop
  7  	     comm := 'ALTER VIEW ' || lv.view_name || ' COMPILE';
  8  	     dbms_output.put_line(comm || ' ...');
  9  	     execute immediate comm;
 10  	     dbms_output.put_line('... OK.');
 11  	 end loop;
 12  end;
 13  /

Procedure created.

SQL> show errors
No errors.
SQL> 
SQL> --
SQL> -- lister status des vues
SQL> --
SQL> 
SQL> create or replace procedure lsv(cv out sys_refcursor)
  2  is
  3  begin
  4  open cv for
  5  	     'select object_name, status from user_objects where object_type = ''VIEW'' ';
  6  end;
  7  /

Procedure created.

SQL> show errors
No errors.
SQL> 
SQL> 
SQL> --
SQL> -- executer les vues dont aucune autre vue ne dépend
SQL> --
SQL> 
SQL> create or replace procedure ev
  2  is
  3  comm varchar2(100);
  4  res int;
  5  begin
  6  for lv in (select view_name from user_views where not exists
  7  		     (select referenced_name from user_dependencies where referenced_name = view_name))
  8  	 loop
  9  	     comm := 'SELECT COUNT(*) FROM  ' || lv.view_name || ' WHERE 1=0';
 10  	     dbms_output.put_line(comm || ' ...');
 11  	     execute immediate comm into res;
 12  	     dbms_output.put_line('... OK.');
 13  	 end loop;
 14  end;
 15  /

Procedure created.

SQL> show errors
No errors.
SQL> 
SQL> 
SQL> var rc refcursor;
SQL> column object_name format a15
SQL> 
SQL> --
SQL> -- execute v1, v4
SQL> --
SQL> set serveroutput on;
SQL> alter table t add (z char(3));

Table altered.

SQL> exec lsv(:rc);

PL/SQL procedure successfully completed.

SQL> print :rc

OBJECT_NAME     STATUS                                                          
--------------- -------                                                         
V1              INVALID                                                         
V2              INVALID                                                         
V3              INVALID                                                         
V4              INVALID                                                         

SQL> exec ev;
SELECT COUNT(*) FROM  V4 WHERE 1=0 ...                                          
... OK.                                                                         
SELECT COUNT(*) FROM  V3 WHERE 1=0 ...                                          
... OK.                                                                         

PL/SQL procedure successfully completed.

SQL> exec lsv(:rc);

PL/SQL procedure successfully completed.

SQL> print :rc

OBJECT_NAME     STATUS                                                          
--------------- -------                                                         
V1              VALID                                                           
V2              VALID                                                           
V3              VALID                                                           
V4              VALID                                                           

SQL> 

Comment vider les caches Oracle ?
auteur : Jaouad
Voici la commande pour la Shared Pool :

SQL> alter system flush shared_pool 
  2  ;

Système modifié.
Et celle pour vider le cache de données (10g) :

SQL> alter system flush buffer_cache ;

Système modifié.
elle peut également recevoir les paramétres suivant : GLOBAL et CONTEXT


Comment modifier le mot de passe de l'utilisateur sysman dans Enterprise Manager Grid Control ?
auteur : bouyao
1. Il faut tout d'abord arrêter OMS :
  • sous Unix :

$ emctl stop oms
  • sous Windows :
Arrêter le service windows Oracle{oracle_home_name}ProcessManger
ou, sous la ligne de commande Dos :

C> emctl stop oms
2. Vérifier que OMS est arrêté :

  • sous Unix :

$ emctl status oms
  • sous Windows :
Vérifier la status du service Windows Oracle{oracle_home_name}ProcessManager
ou, sous la ligne de commande Dos :

C> emctl status oms
3. Se connecter à la base avec un privilège DBA, puis tapez la commande suivante :

SQL> ALTER USER sysman IDENTIFIED BY 'new_password';
4. Vérifier le nouveau mot de passe :

SQL> CONNECT sysman/nouveau_passe[@database_alias]
5. Dans $ORACLE_HOME/sysman/config

5.1. Sauvegarder le fichier emoms.properties dans emoms.properties.orig

5.2. Editer le fichier emoms.properties

a. Rechercher la ligne commencant par: oracle.sysman.eml.mntr.emdRepPwd=

Remplacer la valeur encrypté par le nouveau mot de passe

b. Rechercher la ligne : oracle.sysman.eml.mntr.emdRepPwdEncrypted=TRUE

Remplacer TRUE par FALSE

6. Redémarrer OMS
  • sous Unix :

$ emctl start oms
  • sous Windows :
Démarrer le service Oracle{oracle_home_name}ProcessManager
ou, sous la ligne de commande Dos :

C> emctl start oms
7. Vérifier que oracle.sysman.eml.mntr.emdRepPwd est encrypté.


Comment afficher les paramètres cachés d'Oracle ?
auteurs : bouyao, Fred_D
Pour exécuter cette requête, il faut avoir le privilège DBA :

SELECT a.ksppinm Parametre,
       c.ksppstvl Valeur
  FROM x$ksppi a,
       x$ksppcv b,
       x$ksppsv c
 WHERE a.indx = b.indx
   AND a.indx = c.indx
   AND a.ksppinm LIKE '/_%' escape '/' ;
Normalement, les paramètres cachés commencent par un underscore ('_'), et dans la 10g, on a en plus les paramètres cachés qui commencent par deux underscore ('__').

Attention :
la modification de certains paramètres cachés peuvent corrompre votre base. Il faut les utiliser avec précautions !



Consultez les autres F.A.Q's


Valid XHTML 1.0 TransitionalValid CSS!

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2007 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.