Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Truy vấn kiểm tra kích thước bảng trong cơ sở dữ liệu Oracle

Chúng ta thường cần tìm hiểu xem bảng oracle cụ thể đó lớn đến mức nào. Giả sử bạn đã thực hiện một tải dữ liệu lớn và muốn biết kích thước bảng oracle được phân bổ.

Chúng ta có thể sử dụng Truy vấn dưới đây để kiểm tra kích thước bảng trong oracle

Đối với kích thước bảng oracle tính bằng 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>';

Đối với kích thước bảng oracle tính bằng 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>';

Nếu bạn không có quyền truy cập vào dba_segment, thì bạn cũng có thể sử dụng user_segment

Đối với kích thước tính bằng 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>’

Đối với kích thước tính bằng 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>’;

chúng ta cũng có thể sử dụng truy vấn này để tìm mười bảng lớn nhất trong một lược đồ hoặc vùng bảng cụ thể

10 bảng lớn hàng đầu trong lược đồ Cụ thể

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 bảng lớn hàng đầu trong vùng bảng Cụ thể

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;

Liệt kê các bảng lớn hơn 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;

Đây là truy vấn nếu bạn cũng muốn biết không gian được liên kết với các chỉ mục trên bảng

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
/

Tổng kích thước của bảng cho một lược đồ cụ thể

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;

Các truy vấn trên sẽ cung cấp không gian được cấp phát trong cơ sở dữ liệu. Nếu bạn quan tâm đến không gian hàng được sử dụng bởi bảng, bạn có thể sử dụng truy vấn bên dưới

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

Truy vấn này sẽ được chạy sau khi thống kê được tạo cho bảng.

Nếu bạn quan tâm đến việc sử dụng không gian của bảng trong một khoảng thời gian hoặc xu hướng phát triển đối tượng, bạn có thể sử dụng truy vấn dưới đây

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

Cách tính Kích thước cho bảng chứa phân đoạn LOB

chọn từ cột BYTES trong DBA_SEGMENTS cho bảng hiển thị phân đoạn bảng nhưng không bao gồm kích thước phân đoạn LOB (CLOB hoặc BLOB).
Để tính toán tổng kích thước cho bảng và các phân đoạn LOBS được liên kết, tổng các thông số sau phải xảy ra:
byte cho bảng => từ dba_searies
+
byte cho các phân đoạn LOB => từ dba_lobs và dba_searies trong đó phân đoạn_type là LOBSEGMENT
+
byte cho Chỉ mục LOB (Lob Locator) =từ dba_indexes và dba_searies

Chúng ta có thể sử dụng truy vấn dưới đây để tính tổng kích thước

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;

Hy vọng bạn thích bài viết này về cách kiểm tra kích thước bảng trong cơ sở dữ liệu Oracle. Chúng tôi đã đưa ra các truy vấn khác nhau và bạn có thể sử dụng chúng theo yêu cầu. Vui lòng cung cấp phản hồi

Các bài viết có liên quan

Cách kiểm tra không gian bảng trong Oracle:Tìm hiểu về Cách kiểm tra không gian bảng trong Oracle, không gian trống của vùng bảng, thông tin tăng trưởng vùng bảng, kích thước vùng bảng, tệp dữ liệu được liên kết, kích thước vùng bảng
Alter Table trong Oracle:Alter table trong oracle được sử dụng để sửa đổi một cột, thả và thêm các ràng buộc, thay đổi kiểu dữ liệu của cột bảng, thay đổi các tham số lưu trữ bảng
tạo bảng trong oracle:Bảng là đơn vị lưu trữ dữ liệu cơ bản trong Cơ sở dữ liệu Oracle. chúng tôi đề cập đến cách sử dụng lệnh tạo bảng của Oracle để tạo bảng có khóa ngoại / khóa chính
thay đổi bảng thêm cột oracle:Thông tin chi tiết hữu ích về Cách thay đổi bảng thêm cột oracle. Thông tin chi tiết về tính năng cột thêm nhanh được giới thiệu trong câu hỏi oracle 11g

Dấu nước cao trong Oracle:Dấu nước cao trong cơ sở dữ liệu oracle được sử dụng để hiển thị các khối đã từng được sử dụng trong vòng đời của oracle table
ora-00942:Tìm hiểu cách khắc phục sự cố bảng hoặc dạng xem ORA-00942 không tồn tại trong cơ sở dữ liệu Oracle. Các cách dễ dàng để giải quyết lỗi trong thời gian ngắn hơn

Các khóa học được đề xuất

Đây là Khóa học Udemy hay dành cho Oracle SQL
Oracle-Sql-Step-by-step:Khóa học này bao gồm sql cơ bản, các phép nối, Tạo Bảng và sửa đổi cấu trúc của nó, Tạo Dạng xem, Liên minh, Liên hợp-tất cả và nhiều thứ khác . Một khóa học tuyệt vời và phải có cho người mới bắt đầu sử dụng SQL
Khóa học chứng chỉ SQL Oracle hoàn chỉnh :Đây là một khóa học tốt cho bất kỳ ai muốn sẵn sàng tìm việc cho các kỹ năng của nhà phát triển SQL. Một khóa học được giải thích thú vị
Oracle SQL Developer:Cơ bản, Mẹo và Thủ thuật :Công cụ dành cho nhà phát triển Oracle Sql đang được nhiều nhà phát triển sử dụng. Khóa học này cung cấp cho chúng ta các thủ thuật và bài học về cách sử dụng nó một cách hiệu quả và trở thành một nhà phát triển sql hiệu quả
Oracle SQL Performance Tuning Masterclass 2020 :Điều chỉnh hiệu suất là một trong những kỹ năng quan trọng và được tìm kiếm nhiều nhất. Đây là một khóa học tốt để tìm hiểu về nó và bắt đầu thực hiện điều chỉnh hiệu suất 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. Truyền mảng cho thủ tục Oracle từ c #

  2. Oracle:Cách đếm các hàng rỗng và không rỗng

  3. Hàm Group_concat MySQL tương đương trong Oracle

  4. Những điều bạn nên biết trước khi học Oracle

  5. quan điểm cụ thể hóa trong tiên tri là gì?