如何理解Oracle SYSAUX表空間,相信很多沒有經(jīng)驗(yàn)的人對(duì)此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。
成都創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作與策劃設(shè)計(jì),靖邊網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)10年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:靖邊等地區(qū)。靖邊做網(wǎng)站價(jià)格咨詢:13518219792
一. SYSAUX 說明
在Oracle 10g 版本中,引入了SYSTEM表空間的一個(gè)輔助表空間: SYSAUX表空間。
SYSAUX 表空間存放一些其他的metadata組件,如OEM,Streams 等會(huì)默認(rèn)存放在SYSAUX表空間里。這樣也能降低SYSTEM表空間的負(fù)載。 因此SYSAUX 表空間也是在在DB 創(chuàng)建或者升級(jí)時(shí)自動(dòng)創(chuàng)建的。 如果在手工使用SQL創(chuàng)建DB時(shí)沒有指定SYSAUX tablespace,那么創(chuàng)建語句會(huì)報(bào)錯(cuò)。 無法執(zhí)行。
在正常操作下, 不能drop 和rename SYSAUX 表空間。 如果SYSAUX 表空間不可用時(shí), 數(shù)據(jù)庫的核心功能還是可以繼續(xù)運(yùn)行的。只是一些存放在SYSAUX表空間里的功能收到限制,就如我們之前說的OEM。
在DB 創(chuàng)建時(shí)指定SYSAUX 表空間,必須指定如下4個(gè)屬性:
(1). PERMANENT
(2). READ WRITE
(3). EXTENT MANAGMENT LOCAL
(4). SEGMENT SPACE MANAGMENT AUTO
我們不能使用alter tablespace 來修改這4個(gè)屬性,同樣也不能drop 和rename SYSAUX 表空間。
我們可以使用v$sysaux_occupants 視圖來查看SYSAUX 表空間里的組件信息,如:
SQL> select occupant_name,schema_name,move_procedure from v$sysaux_occupants;
occupant_name schema_name move_procedure
------------------------- -------------------- ----------------------------------------
logmnr system sys.dbms_logmnr_d.set_tablespace
logstdby system sys.dbms_logstdby.set_tablespace
streams sys
xdb xdb xdb.dbms_xdb.movexdb_tablespace
ao sys dbms_aw.move_awmeta
xsoqhist sys dbms_xsoq.olapimoveproc
xsamd olapsys dbms_amd.move_olap_catalog
sm/awr sys
sm/advisor sys
sm/optstat sys
sm/other sys
statspack perfstat
odm dmsys move_odm
sdo mdsys mdsys.move_sdo
wm wmsys dbms_wm.move_proc
ordim ordsys
ordim/plugins ordplugins
ordim/sqlmm si_informtn_schema
em sysman emd_maintenance.move_em_tblspc
text ctxsys dri_move_ctxsys
ultrasearch wksys move_wk
ultrasearch_demo_user wk_test move_wk
expression_filter exfsys
em_monitoring_user dbsnmp
tsm tsmsys
job_scheduler sys
26 rows selected.
這些組件占據(jù)這SYSAUX 表空間,所以這些組件的大小也就決定SYSAUX 表空間的大小。 根據(jù)這些組件創(chuàng)建時(shí)的初始化大小,SYSAUX 至少需要400M的空間。
還有一點(diǎn)要注意,就是這里的schema_name 對(duì)應(yīng)的是用戶名。
SQL> desc dba_users;
Name Null? Type
----------------------------------------- -------- ----------------------------
USERNAME NOT NULL VARCHAR2(30)
USER_ID NOT NULL NUMBER
PASSWORD VARCHAR2(30)
ACCOUNT_STATUS NOT NULL VARCHAR2(32)
LOCK_DATE DATE
EXPIRY_DATE DATE
DEFAULT_TABLESPACE NOT NULL VARCHAR2(30)
TEMPORARY_TABLESPACE NOT NULL VARCHAR2(30)
CREATED NOT NULL DATE
PROFILE NOT NULL VARCHAR2(30)
INITIAL_RSRC_CONSUMER_GROUP VARCHAR2(30)
EXTERNAL_NAME VARCHAR2(4000)
SQL> select username,account_status,default_tablespace from dba_users;
USERNAME ACCOUNT_STATUS DEFAULT_TABLESPA
------------------------------ -------------------------------- ----------------
MDDATA EXPIRED & LOCKED USERS
MDSYS EXPIRED & LOCKED SYSAUX
ORDSYS EXPIRED & LOCKED SYSAUX
CTXSYS EXPIRED & LOCKED SYSAUX
ANONYMOUS EXPIRED & LOCKED SYSAUX
EXFSYS EXPIRED & LOCKED SYSAUX
OUTLN EXPIRED & LOCKED SYSTEM
DIP EXPIRED & LOCKED USERS
DMSYS EXPIRED & LOCKED SYSAUX
DBSNMP OPEN SYSAUX
SCOTT EXPIRED & LOCKED USERS
WMSYS EXPIRED & LOCKED SYSAUX
SYSMAN OPEN SYSAUX
XDB EXPIRED & LOCKED SYSAUX
TSMSYS EXPIRED & LOCKED USERS
ORDPLUGINS EXPIRED & LOCKED SYSAUX
MGMT_VIEW OPEN SYSTEM
SI_INFORMTN_SCHEMA EXPIRED & LOCKED SYSAUX
OLAPSYS EXPIRED & LOCKED SYSAUX
SYS OPEN SYSTEM
SYSTEM OPEN SYSTEM
21 rows selected.
這里沒有顯示這些組件的描述信息,因?yàn)轱@示不全。 感興趣的,可以自己查看一下。
SQL> desc v$sysaux_occupants
Name Null? Type
----------------------------------------- -------- ----------------------------
OCCUPANT_NAME VARCHAR2(64)
OCCUPANT_DESC VARCHAR2(64)
SCHEMA_NAME VARCHAR2(64)
MOVE_PROCEDURE VARCHAR2(64)
MOVE_PROCEDURE_DESC VARCHAR2(64)
SPACE_USAGE_KBYTES NUMBER
在v$sysaux_occupants 視圖里有個(gè)move_procudure的過程。 這個(gè)過程就是用遷移組件信息的。就是對(duì)于已經(jīng)安裝好的組件,如果我們想把這些組件放到其他的空間,就可以使用這個(gè)存儲(chǔ)過程。如果沒有對(duì)應(yīng)的過程,就不可移動(dòng)。
這樣做可以控制SYSAUX表空間的大小。 比如我們的AWR。 AWR 是SYSAUX 中占用空間最多的組件。 對(duì)于一個(gè)有10個(gè)并發(fā)session 的系統(tǒng),就需要200M 的空間。當(dāng)然,也可以修改AWR的保存策略來控制AWR所占用空間的大小。
二. 示例:
2.1. 將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
(2)移動(dòng)
SQL> exec SYS.DBMS_LOGMNR_D.SET_TABLESPACE('USERS');
PL/SQL procedure successfully completed.
(3)驗(yàn)證
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
--注意,這里占空的空間變成了0. 數(shù)據(jù)遷移到了USERS 表空間
(4)還原到SYSAUX 表空間
SQL> exec SYS.DBMS_LOGMNR_D.SET_TABLESPACE('SYSAUX');
PL/SQL procedure successfully completed.
(5)驗(yàn)證
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
--大小又變回來了。
2.2 SYSAUX不能drop
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
2.3 SYSAUX 不能重命名
SQL> alter tablespace SYSAUX rename to DAVE;
alter tablespace SYSAUX rename to DAVE
*
ERROR at line 1:
ORA-13502: Cannot rename SYSAUX tablespace
2.3 不能將SYSAUX 改成只讀
SQL> alter tablesapce SYSAUX read only;
alter tablesapce SYSAUX read only
*
ERROR at line 1:
ORA-00940: invalid ALTER command
看完上述內(nèi)容,你們掌握如何理解Oracle SYSAUX表空間的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!