Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Permintaan untuk memeriksa ukuran tabel di database Oracle

Kita sering perlu mencari tahu seberapa besar tabel oracle itu. Misalkan Anda melakukan pemuatan data yang sangat besar dan ingin mengetahui ukuran tabel Oracle yang dialokasikan.

Kita dapat menggunakan Query di bawah ini untuk memeriksa ukuran tabel di oracle

Untuk ukuran tabel oracle dalam MB

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>';

Untuk ukuran tabel oracle dalam GB

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>';

Jika Anda tidak memiliki akses ke dba_segments, Anda juga dapat menggunakan user_segments

Untuk ukuran dalam MB

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>’

Untuk ukuran dalam GB

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>’;

kita juga dapat menggunakan kueri ini untuk menemukan sepuluh tabel terbesar dalam skema atau tablespace tertentu

10 tabel besar teratas dalam skema tertentu

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;

10 tabel besar teratas di tablespace tertentu

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;

Mencantumkan tabel yang lebih besar dari 10G

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;

Berikut adalah kueri jika Anda ingin mengetahui juga ruang yang terkait dengan indeks pada tabel

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
/

Jumlah ukuran tabel untuk skema tertentu

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;

Kueri di atas akan menyediakan ruang yang dialokasikan dalam database. Jika Anda tertarik dengan ruang baris yang digunakan oleh tabel, Anda dapat menggunakan kueri di bawah ini

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';

Kueri ini harus dijalankan setelah statistik dibuat untuk tabel.

Jika Anda tertarik dengan penggunaan ruang tabel selama periode waktu atau tren pertumbuhan objek, Anda dapat menggunakan kueri di bawah ini

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

Cara menghitung Ukuran untuk tabel yang berisi segmen LOB

pilih dari kolom BYTES di DBA_SEGMENTS untuk tabel yang menunjukkan segmen tabel tetapi tidak termasuk ukuran segmen LOB (CLOB atau BLOB).
Untuk menghitung ukuran total tabel dan segmen LOBS terkait, jumlah berikut harus terjadi:
byte untuk tabel => dari dba_segments
+
byte untuk segmen LOB => dari dba_lobs dan dba_segments di mana segment_type adalah LOBSEGMENT
+
byte untuk Indeks LOB (Lob Locator) =dari dba_indexes dan dba_segments

Kita dapat menggunakan kueri di bawah ini untuk menghitung ukuran total

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;

Semoga Anda menyukai artikel ini tentang cara memeriksa ukuran tabel di database Oracle. Kami telah memberikan berbagai pertanyaan dan Anda dapat menggunakannya sesuai dengan kebutuhan. Harap berikan umpan balik

Artikel Terkait

Cara memeriksa tablespace di Oracle:Pelajari tentang Cara Memeriksa Tablespace di Oracle, ruang kosong tablespace, informasi pertumbuhan tablespace, ukuran tablespace, file data terkait, ukuran tablespace
Alter Table di Oracle:Alter table di oracle digunakan untuk memodifikasi kolom, drop dan tambahkan batasan, ubah tipe data kolom tabel, ubah parameter penyimpanan tabel
buat tabel di oracle:Tabel adalah unit dasar penyimpanan data di Oracle Database. kami membahas cara menggunakan perintah Oracle create table untuk membuat tabel dengan foreign key /primary key
alter table add column oracle:Wawasan yang berguna tentang Cara mengubah tabel menambahkan oracle kolom. Detail tentang fitur penambahan kolom cepat yang diperkenalkan di oracle 11g
pertanyaan asktom
Tanda Air Tinggi di Oracle:Tanda air tinggi di database oracle digunakan untuk menampilkan blok yang pernah digunakan dalam siklus hidup tabel oracle
ora-00942:Belajar memecahkan masalah tabel atau tampilan ORA-00942 tidak ada di database Oracle.Cara mudah untuk mengatasi kesalahan dalam waktu yang lebih singkat

Kursus yang Direkomendasikan

Berikut adalah Kursus Udemy yang bagus untuk Oracle SQL
Oracle-Sql-Step-by-step :Kursus ini mencakup sql dasar, bergabung, Membuat Tabel dan memodifikasi strukturnya, Membuat Tampilan, Union, Union -semua dan banyak hal lainnya . Kursus yang bagus dan kursus yang harus dimiliki untuk pemula SQL
Kursus Lengkap Sertifikasi Oracle SQL :Ini adalah kursus yang bagus untuk siapa saja yang ingin siap kerja untuk keterampilan pengembang SQL. Kursus yang dijelaskan dengan baik
Pengembang Oracle SQL:Esensi, Kiat, dan Trik :Alat pengembang Oracle Sql sedang digunakan oleh banyak pengembang. Kursus ini memberi kita trik dan pelajaran tentang cara menggunakannya secara efektif dan menjadi pengembang sql yang produktif
Oracle SQL Performance Tuning Masterclass 2020 :Penyetelan kinerja adalah salah satu keterampilan penting dan paling dicari. Ini adalah kursus yang bagus untuk mempelajarinya dan mulai melakukan penyetelan kinerja sql


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL*Plus tidak menjalankan skrip SQL yang dilakukan oleh Pengembang SQL

  2. Cara mengganti nama kolom tabel di Oracle 10g

  3. Cara mendapatkan usia dalam tahun, bulan, dan hari menggunakan Oracle

  4. REGEXP_INSTR() Fungsi di Oracle

  5. Kriteria Hibernasi untuk Tanggal