【總結】Oracle數據庫 查看表空間和增加表空間


 

一、Oracle查看 表空間 的名稱及其大小

查看 表空間的名稱及其大小的SQL語句:

select t1.tablespace_name,round(sum(bytes/(1024*1024)),0) tablespace_Size_MB
from dba_tablespaces t1, dba_data_files t2
where t1.tablespace_name = t2.tablespace_name   
group by t1.tablespace_name;  

 

查詢結果:

TABLESPACE_NAME                TABLESPACE_SIZE_MB
------------------------------ ------------------
DLOTTEY                                    276480
SYSAUX                                      48450
UNDOTBS1                                    20000
INDEXMT                                     10240
USERS                                        1041
SYSTEM                                      10240
UNDOTBS2                                    20000
MMLOTTERY                                  215040

8 rows selected.

 

 

二、Oracle查看 表空間 的具體使用情況

方法1:(未排序)

select a.tablespace_name "tablespace_name",
    totalspace "totalspaceM",
    freespace "freespaceM",
    round((1-freespace/totalspace)*100,2) "round%"
from
    (select tablespace_name,round(sum(bytes)/1024/1024) totalspace from dba_data_files group by tablespace_name) a,
    (select tablespace_name,round(sum(bytes)/1024/1024) freespace from dba_free_space group by tablespace_name) b
where a.tablespace_name=b.tablespace_name;

 

查詢結果:

tablespace_name          totalspaceM freespaceM     round%
------------------------ ----------- ---------- ----------
DLOTTEY                       276480     232415      15.94
SYSAUX                         48450       9683      80.01
UNDOTBS1                       20000      19741        1.3
INDEXMT                        10240      10024       2.11
USERS                           1041        138      86.74
SYSTEM                         10240       4344      57.58
UNDOTBS2                       20000      19601          2
MMLOTTERY                     215040      36279      83.13


8 rows selected.

  

方法二:(查詢結果排序)  

select a.tablespace_name,
    a.bytes/1024/1024 "Sum MB",
    (a.bytes-b.bytes)/1024/1024 "used MB",
    b.bytes/1024/1024 "free MB",
    round(((a.bytes-b.bytes)/a.bytes)*100,2) "percent_used"
from
    (select tablespace_name,sum(bytes) bytes from dba_data_files group by tablespace_name) a,
    (select tablespace_name,sum(bytes) bytes,max(bytes) largest from dba_free_space group by tablespace_name) b
where a.tablespace_name=b.tablespace_name
order by ((a.bytes-b.bytes)/a.bytes) desc;

  

查詢結果:

TABLESPACE_NAME            Sum MB    used MB    free MB percent_used
---------------------- ---------- ---------- ---------- ------------
USERS                     1041.25    903.375    137.875        86.76
MMLOTTERY                  215040     178761      36279        83.13
SYSAUX                      48450      38767       9683        80.01
SYSTEM                      10240   5896.125   4343.875        57.58
DLOTTEY                    276480 44065.4375 232414.563        15.94
INDEXMT                     10240    215.625  10024.375         2.11
UNDOTBS2                    20000   399.3125 19600.6875            2
UNDOTBS1                    20000      257.5    19742.5         1.29

8 rows selected.

  

三、Oracle查看 表空間物理文件 的名稱及大小

set lines 150;
col tablespace_name for a20;
col file_name for a60;
 

1、查詢所有的表空間

SQL語句:
select tablespace_name, file_id, file_name,   
    round(bytes/(1024*1024),0) total_space_MB   
from dba_data_files   
order by tablespace_name;  

  

2、查詢指定的表空間

SQL語句:
select tablespace_name, file_id, file_name,   
    round(bytes/(1024*1024),0) total_space_MB   
from dba_data_files
where tablespace_name = 'MMLOTTERY'
order by tablespace_name;   

 

查詢結果:

TABLESPACE_NAME        FILE_ID FILE_NAME                                   TOTAL_SPACE_MB
------------------- ---------- ------------------------------------------- --------------
MMLOTTERY                   18 +DATA/ora11g/datafile/mmlottery01.dbf                30720
MMLOTTERY                   19 +DATA/ora11g/datafile/mmlottery02.dbf                30720
MMLOTTERY                   20 +DATA/ora11g/datafile/mmlottery03.dbf                30720
MMLOTTERY                   22 +DATA/ora11g/datafile/mmlottery04.dbf                30720
MMLOTTERY                   23 +DATA/ora11g/datafile/mmlottery05.dbf                30720
MMLOTTERY                   26 +DATA/ora11g/datafile/mmlottery06.dbf                30720
MMLOTTERY                   27 +DATA/ora11g/datafile/mmlottery07.dbf                30720

7 rows selected.

  

四、Oracle查看  真實占用的空間

SQL語句:

select t.owner,t.segment_name,t.segment_type,
    sum(t.bytes/1024/1024) used_MB
from dba_segments t
where owner = 'MMLOTTERY'
group by owner,segment_name,segment_type
order by used_MB desc;

 

查詢結果:

OWNER               SEGMENT_NAME                     SEGMENT_TYPE          USED_MB
------------------- -------------------------------- ------------------ ----------
MMLOTTERY           TB_ORIGINAL_ORDERDETAILS         TABLE                    1792
MMLOTTERY           TB_LOTTERY_SALEDETAIL            TABLE                    1472
MMLOTTERY           TB_LOTTERYSCHEMEINFO_ADD         TABLE                    1280
MMLOTTERY           TEST_007                         TABLE                    1152
MMLOTTERY           TB_ACCOUNT_OPERATE_DETAIL        TABLE                     808
MMLOTTERY           PK14                             INDEX                     377
MMLOTTERY           PK14_11                          INDEX                     312
MMLOTTERY           PK14_13                          INDEX                     200
MMLOTTERY           PK14_12                          INDEX                     160
MMLOTTERY           TB_BONUS_ORDERDETAILS            TABLE                     160
MMLOTTERY           TB_WINBONUS_DETAIL               TABLE                     144

11 rows selected.

  

  

五、Oracle 增加表空間

語法:
    alter tablespace {表空間名字} add datafile '物理數據文件路徑' SIZE 『初始大小M』 AUTOEXTEND ON NEXT 『自動擴展大小M』
 
例子:
 
alter tablespace MMLOTTERY add datafile '+DATA/ora11g/datafile/mmlottery08.dbf' size 30720m autoextend on next 200m;

 

注意:如果添加表空間的文件名重復,那么會報錯,如下:

SQL> alter tablespace MMLOTTERY add datafile '+DATA/ora11g/datafile/mmlottery08.dbf' size 30720m autoextend on next 200m;
alter tablespace MMLOTTERY add datafile '+DATA/ora11g/datafile/mmlottery08.dbf' size 30720m autoextend on next 200m
*
ERROR at line 1:
ORA-01537: cannot add file '+DATA/ora11g/datafile/mmlottery08.dbf' - file already part of database

 

若 datafile 加錯到表空間,則執行刪除操作。
alter tablespace MMLOTTERY drop datafile ' +DATA/ora11g/datafile/mmlottery08.dbf ';
或者
alter database datafile ' +DATA/ora11g/datafile/mmlottery08.dbf ' offline drop;
 

 

六、Oracle 臨時表空間的查看與增加

查看臨時表空間
SQL語句:
select tablespace_name,file_id,file_name,round(bytes/1024/1024,0) temp_size_MB from dba_temp_files;
 
查詢結果:
TABLESPACE_NAME      FILE_ID FILE_NAME                                     TEMP_SIZE_MB
----------------- ---------- --------------------------------------------- ------------
TEMP                       1 +DATA/ora11g/tempfile/temp.262.917714589             20000

 

 
增加臨時表空間文件
SQL語句:
alter tablespace TEMP add tempfile '+DATA/ora11g/tempfile/temp01.dbf' size 20000m autoextend on next 2000m;
 

 

七、查看表空間是否為自增

表空間是有數據文件組成的,所以看表空間是否自增即看數據文件,如下查自增的表空間: 

select tablespace_name,file_name,autoextensible from dba_data_files where autoextensible='YES';

autoextensible: YES/NO 即表示是否自增。

示例:

SQL> select tablespace_name,file_name,autoextensible from dba_data_files where TABLESPACE_NAME='USERS';

TABLESPACE_NAME      FILE_NAME                                                    AUT
-------------------- ------------------------------------------------------------ ---
USERS                +DATA/ora11g/datafile/users.264.917714693                    YES

 

 

【實例】Oracle 表空間的查看與增加

步驟 1、查看表空間的具體使用情況

 SQL語句,如下:

select a.tablespace_name,
    a.bytes/1024/1024 "Sum MB",
    (a.bytes-b.bytes)/1024/1024 "used MB",
    b.bytes/1024/1024 "free MB",
    round(((a.bytes-b.bytes)/a.bytes)*100,2) "percent_used"
from
    (select tablespace_name,sum(bytes) bytes from dba_data_files group by tablespace_name) a,
    (select tablespace_name,sum(bytes) bytes,max(bytes) largest from dba_free_space group by tablespace_name) b
where a.tablespace_name=b.tablespace_name
order by ((a.bytes-b.bytes)/a.bytes) desc;

  

查詢結果:

TABLESPACE_NAME            Sum MB    used MB    free MB percent_used
---------------------- ---------- ---------- ---------- ------------
USERS                     1041.25    903.375    137.875        86.76
MMLOTTERY                  215040     178761      36279        83.13
SYSAUX                      48450      38767       9683        80.01
SYSTEM                      10240   5896.125   4343.875        57.58
DLOTTEY                    276480 44065.4375 232414.563        15.94
INDEXMT                     10240    215.625  10024.375         2.11
UNDOTBS2                    20000   399.3125 19600.6875            2
UNDOTBS1                    20000      257.5    19742.5         1.29

8 rows selected.

  

 步驟2、查看指定表空間(MMLOTTERY)的物理文件名稱及其大小

set lines 150;
col tablespace_name for a20;
col file_name for a60;
 
SQL語句:
select tablespace_name, file_id, file_name,   
    round(bytes/(1024*1024),0) total_space_MB   
from dba_data_files
where tablespace_name = 'MMLOTTERY'
order by tablespace_name;   

 

查詢結果:

TABLESPACE_NAME        FILE_ID FILE_NAME                                   TOTAL_SPACE_MB
------------------- ---------- ------------------------------------------- --------------
MMLOTTERY                   18 +DATA/ora11g/datafile/mmlottery01.dbf                30720
MMLOTTERY                   19 +DATA/ora11g/datafile/mmlottery02.dbf                30720
MMLOTTERY                   20 +DATA/ora11g/datafile/mmlottery03.dbf                30720
MMLOTTERY                   22 +DATA/ora11g/datafile/mmlottery04.dbf                30720
MMLOTTERY                   23 +DATA/ora11g/datafile/mmlottery05.dbf                30720
MMLOTTERY                   26 +DATA/ora11g/datafile/mmlottery06.dbf                30720
MMLOTTERY                   27 +DATA/ora11g/datafile/mmlottery07.dbf                30720

7 rows selected.

  

步驟3、增加指定表空間(MMLOTTERY)的大小

增加指定表空間的大小,SQL語句:

SQL> alter tablespace MMLOTTERY add datafile '+DATA/ora11g/datafile/mmlottery.dbf' size 30720m;         

Tablespace altered.

  

 

根據步驟2的命令,查詢增加后的結果:

TABLESPACE_NAME         FILE_ID FILE_NAME                                                    TOTAL_SPACE_MB
-------------------- ---------- ------------------------------------------------------------ --------------
MMLOTTERY                      18 +DATA/ora11g/datafile/mmlottery01.dbf                                   30720
MMLOTTERY                      19 +DATA/ora11g/datafile/mmlottery02.dbf                                   30720
MMLOTTERY                      20 +DATA/ora11g/datafile/mmlottery03.dbf                                   30720
MMLOTTERY                      22 +DATA/ora11g/datafile/mmlottery04.dbf                                   30720
MMLOTTERY                      23 +DATA/ora11g/datafile/mmlottery05.dbf                                   30720
MMLOTTERY                      26 +DATA/ora11g/datafile/mmlottery06.dbf                                   30720
MMLOTTERY                      27 +DATA/ora11g/datafile/mmlottery07.dbf                                   30720
MMLOTTERY                      28 +DATA/ora11g/datafile/mmlottery08.dbf                                   30720


8 rows selected.

  

 步驟4、查看增加表空間后的具體情況

SQL語句:

select a.tablespace_name,
    a.bytes/1024/1024 "Sum MB",
    (a.bytes-b.bytes)/1024/1024 "used MB",
    b.bytes/1024/1024 "free MB",
    round(((a.bytes-b.bytes)/a.bytes)*100,2) "percent_used"
from
    (select tablespace_name,sum(bytes) bytes from dba_data_files group by tablespace_name) a,
    (select tablespace_name,sum(bytes) bytes,max(bytes) largest from dba_free_space group by tablespace_name) b
where a.tablespace_name=b.tablespace_name
and a.tablespace_name='MMLOTTERY';

  

 查詢結果:

TABLESPACE_NAME          Sum MB    used MB    free MB percent_used
-------------------- ---------- ---------- ---------- ------------
MMLOTTERY                245760     179218      66542        72.92

  

 【備注】

Oracle只查詢一條記錄的語句:
select * from tablename where rownum = 1;

 

 
修改用戶默認表空間
alter user user_name default tablespace dev_tb;
alter user user_name temporary tablespace dev_temp;
 
查看數據文件是否有數據:
只需查看數據文件中是否包含extent段。如果有extent(索引段,數據段)段,則說明數據文件中有數據。
使用dba_extents視圖和dba_data_files視圖進行連接查詢。
select t.file_name,t1.owner,t1.segment_name,t1.segment_type,t1.tablespace_name from dba_data_files t,dba_extents t1 where t.file_id=t1.file_id and file_name='你要查詢的數據文件路徑';

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM