oracle資料表空間查詢維護命令大全之中的一個(資料資料表空間)史上最全

來源:互聯網
上載者:User

標籤:tracking   default   where   object   enc   off   base   oracle表   sea   

      資料表空間是資料庫的邏輯劃分,一個資料表空間僅僅能屬於一個資料庫。

全部的資料庫物件都存放在建立指定的資料表空間中。但主要存放的是表, 所以稱作資料表空間。在oracle 資料庫中至少存在一個資料表空間。即SYSTEM的資料表空間。一個資料表空間能夠包括多個段。以及區。以及最小的塊,同一時候也能夠包括多個資料檔案(物理結構)。
oracle 能夠依據資料表空間對相關的使用者配額以及磁碟空間都有極大的保護作用,並且還能夠靈活的存放。同一時候也能夠把不同的資料檔案分開存放,保證不同資料檔案的安全行。


所以在一般資料建立後,就會建立相關的資料表空間,再建立相關的使用者。

Oracle資料庫開創性地提出了資料表空間的設計理念,這為Oracle資料庫的高效能做出了不可磨滅的貢獻。能夠這麼說,Oracle中非常多最佳化都是基於資料表空間的設計理念而實現的。

下面針對資料資料表空間一些相關命令進行匯總

1,資料表空間匯總

--建立資料表空間的指令碼
CREATE TABLESPACE TEST_FILE
LOGGING
DATAFILE ‘/U02/APP/ORACLE/ORADATA/ITSDB/TEST_FILE.DBF‘
SIZE 10M  
AUTOEXTEND ON  
NEXT 10M MAXSIZE 10240M  
EXTENT MANAGEMENT LOCAL;

--查看使用者的預設資料表空間
SELECT T.USERNAME,T.DEFAULT_TABLESPACE FROM DBA_USERS  T

--改動使用者的預設資料表空間TABLESPACE_B
ALTER   USER   USER_A   DEFAULT   TABLESPACE   TABLESPACE_B

--使用者在資料表空間上放開限制
ALTER   USER   USER_A   QUOTA   UNLIMITED   ON   TABLESPACE_B;  

--回收許可權
REVOKE   UNLIMITED   TABLESPACE   ON   TABLESPACE_A   FROM   USER_A

--以使USER_A帳戶不能在TABLESPACE_A上建立不論什麼對象。
ALTER   USER   USER_A   QUOTA   0   ON   TABLESPACE_A


--移動表的資料表空間
ALTER TABLE CQRM.CQ_FLIGHTS_SEATS_SEQUENCE MOVE TABLESPACE CQRM;COMMIT;

--批量移動資料表空間的語句
SELECT ‘ALTER TABLE ‘||TABLE_NAME||‘ MOVE TABLESPACE CQRM;COMMIT;‘ FROM USER_TABLES WHERE TABLESPACE_NAME=‘TEST‘;

--在資料表空間上重建索引
SELECT ‘ALTER INDEX ‘||OWNER||‘.‘||INDEX_NAME||‘ REBUILD TABLESPACE CQRM;COMMIT;‘ FROM DBA_INDEXES WHERE  TABLE_NAME IN (‘‘)
AND OWNER=‘TEST‘


SELECT ‘ALTER TABLE ‘||OWNER||‘.‘||TABLE_NAME||‘ MOVE TABLESPACE TEST;COMMIT;‘ FROM DBA_TABLES WHERE TABLESPACE_NAME=‘TEST1‘ AND OWNER=‘TEST‘

2,改變資料表空間狀態

1.使資料表空間離線

ALTER TABLESPACE GAME OFFLINE;

假設是意外刪除了資料檔案,則必須帶有RECOVER選項

ALTER TABLESPACE GAME OFFLINE FOR RECOVER;

2.使資料表空間聯機

ALTER TABLESPACE GAME ONLINE;

3.使資料檔案離線

ALTER DATABASE DATAFILE 3 OFFLINE;

4.使資料檔案聯機

ALTER DATABASE DATAFILE 3 ONLINE;

5.使資料表空間僅僅讀

ALTER TABLESPACE GAME READ ONLY;

6.使資料表空間可讀寫

ALTER TABLESPACE GAME READ WRITE;

刪除資料表空間

DROP TABLESPACE DATA01 INCLUDING CONTENTS AND DATAFILES;

擴充資料表空間

3,首先查看錶空間的名字和所屬檔案

SELECT TABLESPACE_NAME, FILE_ID, FILE_NAME,
ROUND(BYTES/(1024*1024),0) TOTAL_SPACE
FROM DBA_DATA_FILES
ORDER BY TABLESPACE_NAME;

1.添加資料檔案
ALTER TABLESPACE GAME
ADD DATAFILE ‘/ORACLE/ORADATA/DB/GAME02.DBF‘ SIZE 1000M;

2.手動添加資料檔案尺寸
ALTER DATABASE DATAFILE ‘/ORACLE/ORADATA/DB/GAME.DBF‘
RESIZE 4000M;

3.設定資料檔案自己主動擴充
ALTER DATABASE DATAFILE ‘/ORACLE/ORADATA/DB/GAME.DBF‘
AUTOEXTEND ON NEXT 100M
MAXSIZE 10000M;
4.更改資料檔案的位置
ALTER TABLESPACE APP_DATA RENAME DATAFILE  
‘‘ TO ‘‘


--整合資料表空間的片段
ALTER TABLESPACE TABLESPACENAME COALESCE
此語句是整合資料表空間的片段添加資料表空間的連續性,可是他不會收縮一個檔案的大小的。



設定後查看錶空間資訊

SELECT A.TABLESPACE_NAME,A.BYTES TOTAL,B.BYTES USED, C.BYTES FREE,
(B.BYTES*100)/A.BYTES "% USED",(C.BYTES*100)/A.BYTES "% FREE"
FROM SYS.SM$TS_AVAIL A,SYS.SM$TS_USED B,SYS.SM$TS_FREE C
WHERE A.TABLESPACE_NAME=B.TABLESPACE_NAME AND A.TABLESPACE_NAME=C.TABLESPACE_NAME;

--查看錶空間使用狀況

SELECT UPPER(F.TABLESPACE_NAME) "資料表空間名",
       D.TOT_GROOTTE_MB "資料表空間大小(G)",
       D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空間(G)",
       CASE
         WHEN D.TOT_GROOTTE_MB = 0 THEN
          0
         ELSE
          TO_NUMBER(TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) /
                                  D.TOT_GROOTTE_MB * 100,
                                  2),
                            ‘990.99‘))
       END "使用比",
       F.TOTAL_BYTES "空暇空間(G)",
       F.MAX_BYTES "最大塊(G)"
  FROM (SELECT TABLESPACE_NAME,
               ROUND(SUM(BYTES) / (1024 * 1024 * 1024), 2) TOTAL_BYTES,
               ROUND(MAX(BYTES) / (1024 * 1024 * 1024), 2) MAX_BYTES
          FROM SYS.DBA_FREE_SPACE
         GROUP BY TABLESPACE_NAME) F,
       (SELECT DD.TABLESPACE_NAME,
               ROUND(SUM(DD.BYTES) / (1024 * 1024 * 1024), 2) TOT_GROOTTE_MB
          FROM SYS.DBA_DATA_FILES DD
         GROUP BY DD.TABLESPACE_NAME) D
 WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME
 ORDER BY 4 DESC
--也能夠從視圖DBA_TABLESPACE_USAGE_METRICS  查詢假設資料表空間不是自己主動擴充則兩者查詢結果同樣,假設是自己主動擴充的話則兩者有偏差,以上面的查詢為準


--查看使用者使用了那些資料表空間
SELECT OWNER, OBJECT_TYPE, TABLESPACE_NAME
  FROM (SELECT DISTINCT ‘TABLE‘ OBJECT_TYPE, OWNER, TABLESPACE_NAME
          FROM DBA_TABLES
        UNION
        SELECT DISTINCT ‘INDEX‘ OBJECT_TYPE, OWNER, TABLESPACE_NAME
          FROM DBA_INDEXES)
 WHERE TABLESPACE_NAME IS NOT NULL
   AND OWNER = ‘EZOFFICE‘
 ORDER BY 1, 2, 3;
 
 
 SELECT T.SEGMENT_NAME, T.TABLESPACE_NAME, BYTES / 1024 / 1024
  FROM DBA_SEGMENTS T
 WHERE T.SEGMENT_NAME IN
       (‘‘)
   AND OWNER = ‘USER‘

--能夠查看回收的資料檔案大小
SELECT ‘ALTER DATABASE DATAFILE ‘‘‘ || A.FILE_NAME || ‘‘‘ RESIZE ‘ ||
       ROUND(A.FILESIZE - (A.FILESIZE - C.HWMSIZE - 100) * 0.8) || ‘M;‘,
       A.FILESIZE || ‘M‘ AS "資料檔案的總大小",
       C.HWMSIZE || ‘M‘ AS "資料檔案的有用大小"
  FROM (SELECT FILE_ID, FILE_NAME, ROUND(BYTES / 1024 / 1024) AS FILESIZE
          FROM DBA_DATA_FILES) A,
       (SELECT FILE_ID, ROUND(MAX(BLOCK_ID) * 8 / 1024) AS HWMSIZE
          FROM DBA_EXTENTS
         GROUP BY FILE_ID) C
 WHERE A.FILE_ID = C.FILE_ID

   AND A.FILESIZE - C.HWMSIZE > 100;


下一篇會繼續講述uodo資料表空間


oracle資料表空間查詢維護命令大全之中的一個(資料資料表空間)史上最全

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.