Rumah  >  Artikel  >  pangkalan data  >  Oracle menyemak penggunaan ruang jadual dan menyelesaikan isu contoh penuh

Oracle menyemak penggunaan ruang jadual dan menyelesaikan isu contoh penuh

WBOY
WBOYke hadapan
2022-07-29 15:25:544211semak imbas

Artikel ini membawa anda pengetahuan yang berkaitan tentang Oracle Masalah yang paling biasa dihadapi dalam penggunaan harian oralce ialah ruang jadual oralce penuh, data tidak boleh ditulis dan mesej ralat dilaporkan di bawah. Mari kita lihat, saya harap ia akan membantu semua orang.

Oracle menyemak penggunaan ruang jadual dan menyelesaikan isu contoh penuh

Tutorial yang disyorkan: "Tutorial Video Oracle"

1. Semak penggunaan ruang meja

1. Lihat fail ruang jadual pangkalan data:

--查看数据库表空间文件
select * from dba_data_files;

2 Lihat jumlah kapasiti semua ruang jadual:

--查看所有表空间的总容量
select dba.TABLESPACE_NAME, sum(bytes)/1024/1024 as MB  
from dba_data_files dba 
group by dba.TABLESPACE_NAME;

3. Lihat penggunaan ruang jadual pangkalan data

--查看数据库表空间使用率
select total.tablespace_name,round(total.MB, 2) as Total_MB,round(total.MB - free.MB, 2) as Used_MB,round((1-free.MB / total.MB)* 100, 2) || '%' as Used_Pct 
from (
select tablespace_name, sum(bytes) /1024/1024 as MB 
from dba_free_space group by tablespace_name) free,
(select tablespace_name, sum(bytes) / 1024 / 1024 as MB 
from dba_data_files group by tablespace_name) total     
where free.tablespace_name = total.tablespace_name 
order by used_pct desc;

4.1. Semak jumlah saiz, penggunaan dan ruang yang tinggal bagi ruang meja

--查看表空间总大小、使用率、剩余空间
select a.tablespace_name, total, free, total-free as used, substr(free/total * 100, 1, 5) as "FREE%", substr((total - free)/total * 100, 1, 5) as "USED%"
from
(select tablespace_name, sum(bytes)/1024/1024 as total from dba_data_files group by tablespace_name) a,
(select tablespace_name, sum(bytes)/1024/1024 as free from dba_free_space group by tablespace_name) b
where a.tablespace_name = b.tablespace_name
order by a.tablespace_name

4.2. Semak penggunaan ruang meja (termasuk ruang meja sementara temp)

--查看表空间使用率(包含临时表空间)
select * from (
Select a.tablespace_name,
(a.bytes- b.bytes) "表空间使用大小(BYTE)",
a.bytes/(1024*1024*1024) "表空间大小(GB)",
b.bytes/(1024*1024*1024) "表空间剩余大小(GB)",
(a.bytes- b.bytes)/(1024*1024*1024) "表空间使用大小(GB)",
to_char((1 - b.bytes/a.bytes)*100,'99.99999') || '%' "使用率"
from (select tablespace_name,
sum(bytes) bytes
from dba_data_files
group by tablespace_name) a,
(select tablespace_name,
sum(bytes) bytes
from dba_free_space
group by tablespace_name) b
where a.tablespace_name = b.tablespace_name
union all
select c.tablespace_name,
d.bytes_used "表空间使用大小(BYTE)",
c.bytes/(1024*1024*1024) "表空间大小(GB)",
(c.bytes-d.bytes_used)/(1024*1024*1024) "表空间剩余大小(GB)",
d.bytes_used/(1024*1024*1024) "表空间使用大小(GB)",
to_char(d.bytes_used*100/c.bytes,'99.99999') || '%' "使用率"
from
(select tablespace_name,sum(bytes) bytes
from dba_temp_files group by tablespace_name) c,
(select tablespace_name,sum(bytes_cached) bytes_used
from v$temp_extent_pool group by tablespace_name) d
where c.tablespace_name = d.tablespace_name
)
order by tablespace_name

5. Semak butiran Ruang yang diduduki oleh jadual

--查看具体表的占用空间大小
select * from (
select t.tablespace_name,t.owner, t.segment_name, t.segment_type, sum(t.bytes / 1024 / 1024) mb
from dba_segments t
where t.segment_type='TABLE'
group by t.tablespace_name,t.OWNER, t.segment_name, t.segment_type
) t
order by t.mb desc

2 Kembangkan saiz atau tambahkan fail ruang jadual

1 Tukar saiz ruang peruntukan fail data dbf

alter database datafile ‘...\system_01.dbf' autoextend on;
alter database datafile ‘...\system_01.dbf' resize 1024M;

2.1 Tambah fail data baharu pada ruang jadual (jika ruang jadual ialah 32G dan tidak boleh dikembangkan, tambahkan fail ruang jadual)

alter tablespace SYSTEM add datafile '/****' size 1000m autoextend on next 100m;

2.2 Jika jadual baharu space ialah jadual sementara temp, ralat akan dilaporkan:

0RA-03217: Pilihan tidak sah untuk menukar TEMPORARY TABLESPACE

Penyelesaian: tukar fail data kepada tempfile

alter tablespace TEMP01 add tempfile'/****' size 1000m autoextend on next 100m;

Untuk menyelesaikan masalah penggunaan penuh ruang jadual sementara temp

ruang jadual sementara Tujuan utama adalah untuk menyediakan ruang pengkomputeran sementara apabila pangkalan data melakukan operasi seperti operasi pengisihan, mengurus indeks dan mengakses pandangan Sistem akan membersihkan secara automatik selepas operasi selesai, tetapi kadangkala kami menghadapi segmen sementara yang tidak dilepaskan dan ruang meja TEMP hampir penuh;

menyebabkan ruang meja sementara meningkat terutamanya dalam situasi berikut:

1. susunan mengikut atau kumpulan mengikut (akaun isihan cakera untuk bahagian utama) ;

2 3. operasi yang berbeza; .

Penyelesaian 1: Gunakan kaedah di atas untuk menambah fail ruang jadual untuk temp

Penyelesaian 2: Apabila ruang sumber pelayan terhad, sediakan semula ruang jadual sementara baharu untuk menggantikan semasa ruang meja

Lampiran: Semak sama ada ruang jadual mempunyai keupayaan untuk mengembangkan secara automatik

Tutorial yang disyorkan: "

Tutorial Video Oracle

"

Atas ialah kandungan terperinci Oracle menyemak penggunaan ruang jadual dan menyelesaikan isu contoh penuh. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:jb51.net. Jika ada pelanggaran, sila hubungi admin@php.cn Padam
Artikel sebelumnya:Analisis urutan Oracle SEQUENCEArtikel seterusnya:Analisis urutan Oracle SEQUENCE