Nous avons souvent besoin de savoir quelle est la taille de cette table oracle particulière. Supposons que vous ayez effectué une énorme charge de données et que vous souhaitiez connaître la taille de la table oracle allouée.
Nous pouvons utiliser la requête ci-dessous pour vérifier la taille de la table dans Oracle
Pour la taille de la table oracle en Mo
select owner as "Schema" , segment_name as "Object Name" , segment_type as "Object Type" , round(bytes/1024/1024,2) as "Object Size (Mb)" , tablespace_name as "Tablespace" from dba_segments where segment_name=’<table_name>’ and owner='<Table owner>';
Pour la taille de la table oracle en Go
select owner as "Schema" , segment_name as "Object Name" , segment_type as "Object Type" , round(bytes/1024/1024/1024,2) as "Object Size (Gb)" , tablespace_name as "Tablespace" from dba_segments where segment_name=’<table_name>’ and owner='<Table owner>' and owner='<Table owner>';
Si vous n'avez pas accès à dba_segments, vous pouvez également utiliser user_segments
Pour la taille en Mo
select segment_name as "Object Name" , segment_type as "Object Type" , round(bytes/1024/1024,2) as "Object Size (Mb)" , tablespace_name as "Tablespace" from user_segments where segment_name=’<table_name>’
Pour la taille en Go
select segment_name as "Object Name" , segment_type as "Object Type" , round(bytes/1024/1024/1024,2) as "Object Size (Gb)" , tablespace_name as "Tablespace" from user_segments where segment_name=’<table_name>’;
nous pouvons également utiliser cette requête pour trouver les dix plus grandes tables d'un schéma ou d'un tablespace particulier
Top 10 des grandes tables dans un schéma particulier
select * from (select owner as "Schema" , segment_name as "Object Name" , segment_type as "Object Type" , round(bytes/1024/1024/1024,2) as "Object Size (Gb)" , tablespace_name as "Tablespace" from dba_segments where owner=’<schema>’ and segment_type='TABLE' order by 4 desc) where rownum < 11;
Top 10 des grandes tables dans un tablespace particulier
select * from (select owner as "Schema" , segment_name as "Object Name" , segment_type as "Object Type" , round(bytes/1024/1024/1024,2) as "Object Size (Gb)" , tablespace_name as "Tablespace" from dba_segments where tablespace_name =’<tablespace name>' and segment_name='TABLE' order by 4 desc ) where rownum <11;
Répertorier les tables supérieures à 10 G
select owner as "Schema" , segment_name as "Object Name" , segment_type as "Object Type" , round(bytes/1024/1024/1024,2) as "Object Size (Gb)" , tablespace_name as "Tablespace" from dba_segments where segment_type='TABLE' where bytes/1024/1024/1024 >10 order by 4 desc;
Voici la requête si vous souhaitez également connaître l'espace associé aux index sur la table
with tables as ( select segment_name tname, to_char(bytes/1024/1024,'999,999.99') table_size from user_segments where segment_type = 'TABLE' and segment_name not like 'BIN%' ), indexes as ( select table_name, index_name, scbp, rn, (select to_char(bytes/1024/1024,'999,999.99') from user_segments where segment_name = INDEX_NAME and segment_type = 'INDEX') index_size from ( select table_name, index_name, substr( max(sys_connect_by_path( column_name, ', ' )), 3) scbp, row_number() over (partition by table_name order by index_name) rn from user_ind_columns start with column_position = 1 connect by prior table_name = table_name and prior index_name = index_name and prior column_position+1 = column_position group by table_name, index_name ) ) select decode( nvl(rn,1), 1, tables.tname ) tname, decode( nvl(rn,1), 1, tables.table_size ) table_size, rn "INDEX#", indexes.scbp, indexes.index_name, indexes.index_size from tables, indexes where tables.tname = indexes.table_name(+) and tables.tname = '&1' order by tables.tname, indexes.rn /
Somme de la taille de la table pour un schéma particulier
select owner,sum(bytes)/1024/1024/1024 as "SIZE in GB" from dba_segments where owner='SCHEMA_NAME' and segment_type='TABLE' group by owner;
Les requêtes ci-dessus fourniront l'espace alloué dans la base de données. Si vous êtes intéressé par l'espace ligne consommé par la table, vous pouvez utiliser la requête ci-dessous
select round((num_rows*avg_row_len/1024),2) used_space_bytes from dba_tables where table_name ='<table name>' and table_owner='<table owner';
Cette requête doit être exécutée après la génération des statistiques pour la table.
Si vous êtes intéressé par l'utilisation de l'espace de la table sur une période de temps ou par la tendance de croissance des objets, vous pouvez utiliser la requête ci-dessous
select * from table(dbms_space.OBJECT_GROWTH_TREND('<table owner>','<table name>','TABLE')); Example SQL> select * from table(dbms_space.OBJECT_GROWTH_TREND('SCOTT','EMP_DATA','TABLE')); TIMEPOINT SPACE_USAGE SPACE_ALLOC QUALITY ---------------------- ---------- ------------ -------- 05-JUN-19 08.59.45.214446 AM 210979117 225829120 INTERPOLATED 06-JUN-19 08.59.45.214446 AM 210979117 225829120 INTERPOLATED 07-JUN-19 08.59.45.214446 AM 210979117 225829120 INTERPOLATED
Comment calculer la taille du tableau contenant les segments LOB
sélectionnez dans la colonne BYTES dans DBA_SEGMENTS pour que la table affiche le segment de table mais n'inclut pas les tailles des segments LOB (CLOB ou BLOB).
Pour calculer la taille totale de la table et des segments LOBS associés, une somme des éléments suivants doit se produisent :
les octets pour la table => de dba_segments
+
les octets pour les segments LOB => de dba_lobs et dba_segments où segment_type est LOBSEGMENT
+
le octets pour l'index LOB (Lob Locator) =de dba_indexes et dba_segments
Nous pouvons utiliser la requête ci-dessous pour calculer la taille totale
ACCEPT SCHEMA PROMPT 'Table Owner: ' ACCEPT TABNAME PROMPT 'Table Name: ' SELECT (SELECT SUM(S.BYTES) FROM DBA_SEGMENTS S WHERE S.OWNER = UPPER('&SCHEMA') AND (S.SEGMENT_NAME = UPPER('&TABNAME'))) + (SELECT SUM(S.BYTES) FROM DBA_SEGMENTS S, DBA_LOBS L WHERE S.OWNER = UPPER('&SCHEMA') AND (L.SEGMENT_NAME = S.SEGMENT_NAME AND L.TABLE_NAME = UPPER('&TABNAME') AND L.OWNER = UPPER('&SCHEMA'))) + (SELECT SUM(S.BYTES) FROM DBA_SEGMENTS S, DBA_INDEXES I WHERE S.OWNER = UPPER('&SCHEMA') AND (I.INDEX_NAME = S.SEGMENT_NAME AND I.TABLE_NAME = UPPER('&TABNAME') AND INDEX_TYPE = 'LOB' AND I.OWNER = UPPER('&SCHEMA'))) "TOTAL TABLE SIZE" FROM DUAL;
J'espère que cet article sur la vérification de la taille d'une table dans la base de données Oracle vous plaira. Nous avons donné diverses requêtes et vous pouvez les utiliser selon les besoins. Merci de nous faire part de vos commentaires
Articles connexes
Comment vérifier l'espace de table dans Oracle :Découvrez comment vérifier l'espace de table dans Oracle, l'espace libre de l'espace de table, les informations de croissance de l'espace de table, la taille de l'espace de table, les fichiers de données associés, la taille de l'espace de table
Alter Table dans Oracle :Alter table dans Oracle est utilisé pour modifier une colonne, supprimez et ajoutez des contraintes, modifiez le type de données de la colonne de la table, modifiez les paramètres de stockage de la table
créer une table dans oracle :les tables sont l'unité de base de stockage de données dans une base de données Oracle. nous expliquons comment utiliser la commande Oracle create table pour créer une table avec une clé étrangère/clé primaire
alter table add column oracle :aperçu utile de la modification de la table add column oracle Détails sur la fonctionnalité d'ajout rapide de colonne introduite dans oracle 11g
question asktom
Limite d'alerte élevée dans Oracle :la limite d'alerte haute dans la base de données Oracle est utilisée pour afficher les blocs qui ont déjà été utilisés dans le cycle de vie de la table oracle
ora-00942 :Apprenez à dépanner la table ou la vue ORA-00942 qui n'existe pas dans la base de données Oracle. Des moyens simples pour résoudre l'erreur en moins de temps
Cours recommandés
Voici le joli cours Udemy pour Oracle SQL
Oracle-Sql-Step-by-step :Ce cours couvre les bases de SQL, les jointures, la création de tables et la modification de sa structure, la création de vues, l'union, l'union -all et bien d'autres choses . Un excellent cours et un cours indispensable pour les débutants SQL
Le cours complet de certification Oracle SQL :C'est un bon cours pour tous ceux qui veulent être prêts à travailler pour les compétences de développeur SQL. Un cours bien expliqué
Oracle SQL Developer :Essentials, Tips and Tricks :l'outil de développement Oracle SQL est utilisé par de nombreux développeurs. Ce cours nous donne des astuces et des leçons sur la façon de l'utiliser efficacement et de devenir un développeur sql productif
Oracle SQL Performance Tuning Masterclass 2020 :l'optimisation des performances est l'une des compétences essentielles et les plus recherchées. C'est un bon cours pour en savoir plus et commencer à ajuster les performances SQL