Maison > Article > base de données > Oracle vérifie l'utilisation de l'espace table et résout les problèmes d'instance complète
Cet article vous apporte des connaissances pertinentes sur Oracle Le problème le plus courant rencontré dans l'utilisation quotidienne d'oralce est que l'espace table d'oracle est plein, les données ne peuvent pas être écrites et un message d'erreur est signalé. ensemble. J'espère utile à tout le monde.
Tutoriel recommandé : "Tutoriel vidéo Oracle"
--查看数据库表空间文件 select * from dba_data_files;
--查看所有表空间的总容量 select dba.TABLESPACE_NAME, sum(bytes)/1024/1024 as MB from dba_data_files dba group by dba.TABLESPACE_NAME;
--查看数据库表空间使用率 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;
--查看表空间总大小、使用率、剩余空间 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
--查看表空间使用率(包含临时表空间) 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
--查看具体表的占用空间大小 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
alter database datafile ‘...\system_01.dbf' autoextend on; alter database datafile ‘...\system_01.dbf' resize 1024M;
alter tablespace SYSTEM add datafile '/****' size 1000m autoextend on next 100m;
alter tablespace TEMP01 add tempfile'/****' size 1000m autoextend on next 100m;Utilisé pour l'espace de table temporaire temporaire. Problème de taux completL'objectif principal de l'espace de table temporaire est de fournir un espace de calcul temporaire lorsque la base de données effectue des opérations telles que comme les opérations de tri, la gestion des index et l'accès aux vues. Une fois l'opération terminée, le système le nettoiera automatiquement, mais parfois nous rencontrerons des segments temporaires qui ne sont pas disponibles, l'espace table TEMP est presque entièrement utilisé ; fait augmenter l'espace de la table temporaire principalement dans les situations suivantes :
1, trier par ou regrouper par (trier les comptes par disque pour la partie principale)
2, création et recréation d'index ; opération distincte ;
4. union et intersection et moins de tri-fusion
5. Analyser l'opération
6.
Solution 1 : utilisez la méthode ci-dessus pour ajouter des fichiers d'espace table à temp
Solution 2 : lorsque l'espace de ressources du serveur est limité, rétablissez un nouvel espace table temporaire pour remplacer l'espace table actuel
--1.查看当前的数据库默认表空间: select * from database_properties where property_name='DEFAULT_TEMP_TABLESPACE'; --2.创建新的临时表空间 create temporary tablespace TEMP01 tempfile '/home/temp01.dbf' size 31G; --3.更改默认临时表空间 alter database default temporary tablespace TEMP01; --4.删除原来的临时表空间 drop tablespace TEMP02 including contents and datafiles; --如果删除原来临时表空间报错ORA-60100:由于排序段,已阻止删除表空间... --(说明有语句正在使用原来的临时表空间,需要将其kill掉再删除,此语句多为排序的语句) --查询语句 Select se.username,se.sid,se.serial#,su.extents,su.blocks*to_number(rtrim(p.value))as Space, tablespace,segtype,sql_text from v$sort_usage su,v$parameter p,v$session se,v$sql s where p.name='db_block_size' and su.session_addr=se.saddr and s.hash_value=su.sqlhash and s.address=su.sqladdr order by se.username,se.sid; --删除对应的'sid,serial#' alter system kill session 'sid,serial#'
Pièce jointe : afficher la table space Est-il capable d'une expansion automatique
--查看表空间是否具有自动扩展的能力 SELECT T.TABLESPACE_NAME,D.FILE_NAME, D.AUTOEXTENSIBLE,D.BYTES,D.MAXBYTES,D.STATUS FROM DBA_TABLESPACES T,DBA_DATA_FILES D WHERE T.TABLESPACE_NAME =D.TABLESPACE_NAME ORDER BY TABLESPACE_NAME,FILE_NAME;
Tutoriel recommandé : "
Tutoriel vidéo OracleCe qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!