Oracle-SYSAUX表空間解讀
SYSAUX概述
官方文檔:About the SYSAUX Tablespace
SYSAUX表空間在oracle Database 10g中引入,作為SYSTEM表空間的輔助表空間.
以前一些使用獨立表空間或系統表空間的數據庫組件現在在SYSAUX表空間中創建.
SYSAUX 表空間存放一些其他的 metadata 組件,如 OEM,Streams 等會默認存放在 SYSAUX 表空間里。
通過分離這些組件和功能,SYSTEM表空間的負荷得以減輕.反復創建一些相關對象及組件引起SYSTEM表空間的碎片問題得以避免。
因此SYSAUX 表空間也是在在 DB 創建或者升級時自動創建的。 如果在手工使用SQL 創建 DB 時沒有指定 SYSAUX tablespace,那么創建語句會報錯。 無法執行。
在正常操作下, 不能 drop 和 rename SYSAUX 表空間。
如果SYSAUX表空間不可用,數據庫核心功能將保持有效;使用SYSAUX表空間的特點將會失敗或功能受限.
我們不能使用 alter tablespace 來修改這 4 個屬性,同樣也不能 drop 和 rename SYSAUX 表空間。
數據庫創建腳本中的SYSAUX
我們來看下我們的數據庫創建腳本:
SET VERIFY OFF connect "SYS"/"&&sysPassword" as SYSDBA set echo on spool /oracle/admin/cc/scripts/CreateDB.log append startup nomount pfile="/oracle/admin/cc/scripts/init.ora"; CREATE DATABASE "cc" MAXINSTANCES 8 MAXLOGHISTORY 1 MAXLOGFILES 16 MAXLOGMEMBERS 3 MAXDATAFILES 100 DATAFILE '/oradata/cc/system01.dbf' SIZE 700M REUSE EXTENT MANAGEMENT LOCAL SYSAUX DATAFILE '/oradata/cc/sysaux01.dbf' SIZE 600M REUSE SMALLFILE DEFAULT TEMPORARY TABLESPACE TEMP TEMPFILE '/oradata/cc/temp01.dbf' SIZE 20M REUSE SMALLFILE UNDO TABLESPACE "UNDOTBS1" DATAFILE '/oradata/cc/undotbs01.dbf' SIZE 200M REUSE CHARACTER SET AL32UTF8 NATIONAL CHARACTER SET AL16UTF16 LOGFILE GROUP 1 ('/oradata/cc/redo01.log') SIZE 51200K, GROUP 2 ('/oradata/cc/redo02.log') SIZE 51200K, GROUP 3 ('/oradata/cc/redo03.log') SIZE 51200K USER SYS IDENTIFIED BY "&&sysPassword" USER SYSTEM IDENTIFIED BY "&&systemPassword"; spool off
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
SYSAUX表空間的數據庫組件
查看SYSAUX表空間信息-V$SYSAUX_OCCUPANTS
select OCCUPANT_NAME, SCHEMA_NAME,MOVE_PROCEDURE ,SPACE_USAGE_KBYTES from V$SYSAUX_OCCUPANTS;
1
說明:
這些組件占據這 SYSAUX 表空間,所以這些組件的大小也就決定 SYSAUX表空間的大小。
schema_name 對應的是用戶名。
在v$sysaux_occupants 視圖里中的move_procudure字段,是用于遷移組件信息的。就是對于已經安裝好的組件,如果想把這些組件放到其他的空間,可以使用這個存儲過程。如果沒有對應的過程,說明不可移動。
比如我們的AWR。 AWR 是SYSAUX 中占用空間最多的組件。 對于一個有10個并發session 的系統,就需要200M 的空間。當然,也可以修改AWR的保存策略來控制AWR所占用空間的大小
SYAAUX表空間的限制
1. 不能刪除
SQL> drop tablespace SYSAUX including contents and datafiles; drop tablespace SYSAUX including contents and datafiles * ERROR at line 1: ORA-13501: Cannot drop SYSAUX tablespace
1
2
3
4
5
6
2. 不能重命名
SQL> alter tablespace SYSAUX rename to OPT_TBS; alter tablespace SYSAUX rename to OPT_TBS * ERROR at line 1: ORA-13502: Cannot rename SYSAUX tablespace
1
2
3
4
5
3. 不能置為read only
SQL> alter tablesapce SYSAUX read only; alter tablesapce SYSAUX read only * ERROR at line 1: ORA-00940: invalid ALTER command
1
2
3
4
5
栗子:將Logminer 從SYSAUX 表空間,遷移到users表空間,在還原回來
如果希望轉移這些系統對象的表空間,可以使用相應得系統包實現:
(1)查看遷移之前的信息:
SQL> select OCCUPANT_NAME,OCCUPANT_DESC,SCHEMA_NAME,MOVE_PROCEDURE,SPACE_USAGE_KBYTES from v$sysaux_occupants where occupant_name='LOGMNR'; OCCUPANT_NAME OCCUPANT_DESC SCHEMA_NAME MOVE_PROCEDURE SPACE_USAGE_KBYTES --------------- --------------- -------------------- ---------------------------------------- ------------------ LOGMNR LogMiner SYSTEM SYS.DBMS_LOGMNR_D.SET_TABLESPACE 6080
1
2
3
4
5
6
7
8
9
10
11
(2)調用系統包SYS.DBMS_LOGMNR_D.SET_TABLESPACE遷移
SQL> exec SYS.DBMS_LOGMNR_D.SET_TABLESPACE('USERS'); PL/SQL procedure successfully completed.
1
2
3
(3)驗證遷移后的大小
SQL> select OCCUPANT_NAME,OCCUPANT_DESC,SCHEMA_NAME,MOVE_PROCEDURE,SPACE_USAGE_KBYTES from v$sysaux_occupants where occupant_name='LOGMNR'; OCCUPANT_NAME OCCUPANT_DESC SCHEMA_NAME MOVE_PROCEDURE SPACE_USAGE_KBYTES --------------- --------------- -------------------- ---------------------------------------- ------------------ LOGMNR LogMiner SYSTEM SYS.DBMS_LOGMNR_D.SET_TABLESPACE 0
1
2
3
4
5
6
7
8
9
–注意,這里占空的空間變成了0. 數據遷移到了USERS 表空間
(4)還原到SYSAUX 表空間
SQL> exec SYS.DBMS_LOGMNR_D.SET_TABLESPACE('SYSAUX'); PL/SQL procedure successfully completed.
1
2
3
(5)驗證還原后的大小
SQL> select OCCUPANT_NAME,OCCUPANT_DESC,SCHEMA_NAME,MOVE_PROCEDURE,SPACE_USAGE_KBYTES from v$sysaux_occupants where occupant_name='LOGMNR'; OCCUPANT_NAME OCCUPANT_DESC SCHEMA_NAME MOVE_PROCEDURE SPACE_USAGE_KBYTES --------------- --------------- -------------------- ---------------------------------------- ------------------ LOGMNR LogMiner SYSTEM SYS.DBMS_LOGMNR_D.SET_TABLESPACE 6080
1
2
3
4
5
6
7
8
9
–觀察大小,復位為原來的大小
結論:
這是一個管理及規劃上的改進,進一步獨立SYSTEM表空間,保證其存儲及性能.
我們在做數據庫規劃時大可借鑒Oracle這個改進,分離重要數據及次要數據,分離穩定結構及頻繁變化結構,盡量減少對重要數據及結構的影響。
Oracle 數據庫
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。