Oracle SYSAUX 表空间 说明

一.SYSAUX说明

在Oracle 10g版本中,引入了SYSTEM表空间的一个辅助表空间:SYSAUX表空间。

SYSAUX表空间存放一些其他的metadata组件,如OEM,Streams等会默认存放在SYSAUX表空间里。这样也能降低SYSTEM表空间的负载。因此SYSAUX表空间也是在在DB创建或者升级时自动创建的。如果在手工使用SQL创建DB时没有指定SYSAUX tablespace,那么创建语句会报错。无法执行。

在正常操作下,不能drop和rename SYSAUX表空间。如果SYSAUX表空间不可用时,数据库的核心功能还是可以继续运行的。只是一些存放在SYSAUX表空间里的功能收到限制,就如我们之前说的OEM。

在DB创建时指定SYSAUX表空间,必须指定如下4个属性:

(1).PERMANENT

(2).READ WRITE

(3).EXTENT MANAGMENT LOCAL

(4).SEGMENT SPACE MANAGMENT AUTO

我们不能使用alter tablespace来修改这4个属性,同样也不能drop和rename SYSAUX表空间。

我们可以使用v$sysaux_occupants视图来查看SYSAUX表空间里的组件信息,如:

SQL>select occupant_name,schema_name,move_procedure from v$sysaux_occupants;

occupant_nameschema_namemove_procedure

------------------------- -------------------- ----------------------------------------

logmnrsystemsys.dbms_logmnr_d.set_tablespace

logstdbysystemsys.dbms_logstdby.set_tablespace

streamssys

xdbxdbxdb.dbms_xdb.movexdb_tablespace

aosysdbms_aw.move_awmeta

xsoqhistsysdbms_xsoq.olapimoveproc

xsamdolapsysdbms_amd.move_olap_catalog

sm/awrsys

sm/advisorsys

sm/optstatsys

sm/othersys

statspackperfstat

odmdmsysmove_odm

sdomdsysmdsys.move_sdo

wmwmsysdbms_wm.move_proc

ordimordsys

ordim/pluginsordplugins

ordim/sqlmmsi_informtn_schema

emsysmanemd_maintenance.move_em_tblspc

textctxsysdri_move_ctxsys

ultrasearchwksysmove_wk

ultrasearch_demo_userwk_testmove_wk

expression_filterexfsys

em_monitoring_userdbsnmp

tsmtsmsys

job_schedulersys

26 rows selected.

这些组件占据这SYSAUX表空间,所以这些组件的大小也就决定SYSAUX表空间的大小。根据这些组件创建时的初始化大小,SYSAUX至少需要400M的空间。

还有一点要注意,就是这里的schema_name对应的是用户名。

SQL> desc dba_users;

NameNull?Type

----------------------------------------- -------- ----------------------------

USERNAMENOT NULL VARCHAR2(30)

USER_IDNOT NULL NUMBER

PASSWORDVARCHAR2(30)

ACCOUNT_STATUSNOT NULL VARCHAR2(32)

LOCK_DATEDATE

EXPIRY_DATEDATE

DEFAULT_TABLESPACENOT NULL VARCHAR2(30)

TEMPORARY_TABLESPACENOT NULL VARCHAR2(30)

CREATEDNOT NULL DATE

PROFILENOT NULL VARCHAR2(30)

INITIAL_RSRC_CONSUMER_GROUPVARCHAR2(30)

EXTERNAL_NAMEVARCHAR2(4000)

SQL> select username,account_status,default_tablespace from dba_users;

USERNAMEACCOUNT_STATUSDEFAULT_TABLESPA

------------------------------ -------------------------------- ----------------

MDDATAEXPIRED & LOCKEDUSERS

MDSYSEXPIRED & LOCKEDSYSAUX

ORDSYSEXPIRED & LOCKEDSYSAUX

CTXSYSEXPIRED & LOCKEDSYSAUX

ANONYMOUSEXPIRED & LOCKEDSYSAUX

EXFSYSEXPIRED & LOCKEDSYSAUX

OUTLNEXPIRED & LOCKEDSYSTEM

DIPEXPIRED & LOCKEDUSERS

DMSYSEXPIRED & LOCKEDSYSAUX

DBSNMPOPENSYSAUX

SCOTTEXPIRED & LOCKEDUSERS

WMSYSEXPIRED & LOCKEDSYSAUX

SYSMANOPENSYSAUX

XDBEXPIRED & LOCKEDSYSAUX

TSMSYSEXPIRED & LOCKEDUSERS

ORDPLUGINSEXPIRED & LOCKEDSYSAUX

MGMT_VIEWOPENSYSTEM

SI_INFORMTN_SCHEMAEXPIRED & LOCKEDSYSAUX

OLAPSYSEXPIRED & LOCKEDSYSAUX

SYSOPENSYSTEM

SYSTEMOPENSYSTEM

21 rows selected.

这里没有显示这些组件的描述信息,因为显示不全。感兴趣的,可以自己查看一下。

SQL> desc v$sysaux_occupants

NameNull?Type

----------------------------------------- -------- ----------------------------

OCCUPANT_NAMEVARCHAR2(64)

OCCUPANT_DESCVARCHAR2(64)

SCHEMA_NAMEVARCHAR2(64)

MOVE_PROCEDUREVARCHAR2(64)

MOVE_PROCEDURE_DESCVARCHAR2(64)

SPACE_USAGE_KBYTESNUMBER

在v$sysaux_occupants视图里有个move_procudure的过程。这个过程就是用迁移组件信息的。就是对于已经安装好的组件,如果我们想把这些组件放到其他的空间,就可以使用这个存储过程。如果没有对应的过程,就不可移动。

这样做可以控制SYSAUX表空间的大小。比如我们的AWR。AWR是SYSAUX中占用空间最多的组件。对于一个有10个并发session的系统,就需要200M的空间。当然,也可以修改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_NAMEOCCUPANT_DESCSCHEMA_NAMEMOVE_PROCEDURESPACE_USAGE_KBYTES

--------------- --------------- -------------------- ---------------------------------------- ------------------

LOGMNRLogMinerSYSTEMSYS.DBMS_LOGMNR_D.SET_TABLESPACE6080

(2)移动

SQL> exec SYS.DBMS_LOGMNR_D.SET_TABLESPACE('USERS');

PL/SQL procedure successfully completed.

(3)验证

SQL>select OCCUPANT_NAME,OCCUPANT_DESC,SCHEMA_NAME,MOVE_PROCEDURE,SPACE_USAGE_KBYTES from v$sysaux_occupants where occupant_name='LOGMNR';

OCCUPANT_NAMEOCCUPANT_DESCSCHEMA_NAMEMOVE_PROCEDURESPACE_USAGE_KBYTES

--------------- --------------- -------------------- ---------------------------------------- ------------------

LOGMNRLogMinerSYSTEMSYS.DBMS_LOGMNR_D.SET_TABLESPACE0

--注意,这里占空的空间变成了0.数据迁移到了USERS表空间

(4)还原到SYSAUX表空间

SQL>exec SYS.DBMS_LOGMNR_D.SET_TABLESPACE('SYSAUX');

PL/SQL procedure successfully completed.

(5)验证

SQL> select OCCUPANT_NAME,OCCUPANT_DESC,SCHEMA_NAME,MOVE_PROCEDURE,SPACE_USAGE_KBYTES from v$sysaux_occupants where occupant_name='LOGMNR';

OCCUPANT_NAMEOCCUPANT_DESCSCHEMA_NAMEMOVE_PROCEDURESPACE_USAGE_KBYTES

--------------- --------------- -------------------- ---------------------------------------- ------------------

LOGMNRLogMinerSYSTEMSYS.DBMS_LOGMNR_D.SET_TABLESPACE6080

--大小又变回来了。

2.2SYSAUX不能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

---------------------------------------------------------------------------------------------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值