环境:Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Prod
原因:上一任因领导要求启用了审计功能,然并卵,结果SYSTEM表空间爆了,然后补坑中。。。
1.数据库逻辑全备
过程略。。。
2.SYSTEM表空间备份
expdp备份表空间,略。。。
3.备份并归档AUD$基表
CREATE TABLE AUD_RECORD TABLESPACE AUDTBS AS (SELECT * FROM SYS.AUD$);
exp system/system file=aud_record.dmp log=aud_record.log tables=SYS.AUD_RECORD
网上很多资料是建议创建一个AUD$基表的拷贝,然后再对这个表进行备份,但一直没明白为什么要这样做,在测试环境测试过直接对AUD$基表备份也是没问题的
4.清空AUD$基表数据
TRUNCATE TABLE "SYS"."AUD$";
如果该表很大的话,比如有超过30G以上之类的,可按如下操作,以避免高IO操作影响系统性能,导致数据库挂起
清空数据并保留原有extent
TRUNCATE TABLE "SYS"."AUD$" REUSE STORAGE;
逐步回收extent
ALTER TABLE "SYS"."AUD$" DEALLOCATE UNUSED KEEP 1000M;
ALTER TABLE "SYS"."AUD$" DEALLOCATE UNUSED KEEP 500M;
ALTER TABLE "SYS"."AUD$" DEALLOCATE UNUSED KEEP 10M;
ALTER TABLE "SYS"."AUD$" DEALLOCATE UNUSED KEEP 0M;
5.创建审计专用表空间
CREATE TABLESPACE AUDTBS DATAFILE '/u01/app/oracle/oradata/odb1/audtbs01.dbf' SIZE 10M AUTOEXTEND ON;
6.授权SYS用户不限制使用该表空间
ALTER USER SYS QUOTA UNLIMITED ON AUDTBS;
7.移动审计相关表至该表空间(增加了移动CLOB对象语句)
ALTER TABLE "SYS"."AUD$" MOVE TABLESPACE AUDTBS;
ALTER INDEX "SYS"."I_AUD1" REBUILD ONLINE TABLESPACE AUDTBS;
ALTER TABLE "SYS"."AUD$" MOVE LOB ("SQLBIND") STORE AS (TABLESPACE AUDTBS);
ALTER TABLE "SYS"."AUD$" MOVE LOB ("SQLTEXT") STORE AS (TABLESPACE AUDTBS);
ALTER TABLE "SYS"."AUDIT$" MOVE TABLESPACE AUDTBS;
ALTER INDEX "SYS"."I_AUDIT" REBUILD ONLINE TABLESPACE AUDTBS;
ALTER TABLE "SYS"."AUDIT_ACTIONS" MOVE TABLESPACE AUDTBS;
ALTER INDEX "SYS"."I_AUDIT_ACTIONS" REBUILD ONLINE TABLESPACE AUDTBS;
8.其它测试略。。。
阅读(7717) | 评论(0) | 转发(0) |