Amazon RDS for Oracle을 사용하는 경우 "ORA-01653: unable to extend table SYS.AUD$ or FGA_LOG$ in tablespace SYSTEM" 오류를 방지하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2020년 6월 24일

데이터베이스 감사 테이블에서 이벤트를 기록하기 위해 Amazon RDS(Amazon Relational Database Service) 데이터베이스에서 Oracle 감사 기능을 활성화했습니다. 그러나 SYSTEM 테이블스페이스가 예상보다 더 증가하거나 다음과 같은 오류 메시지가 표시됩니다.

"ORA-01653: unable to extend table..." for SYS.AUD$ or FGA_LOG$ in the tablespace SYSTEM."

이 오류를 해결하려면 어떻게 해야 합니까?

간략한 설명

ORA-01653 오류는 SYSTEM 테이블스페이스의 SYS.AUD 테이블에 여유 공간이 부족하여 발생합니다. 기본적으로 여기에 Oracle 감사 테이블 AUD$FGA_LOG$가 정의됩니다. 이 오류는 테이블이 추가 데이터를 수용하기 위해 자동 확장을 시도하지만, 테이블 확장이 금지된 경우에 발생합니다. 테이블스페이스 부족을 유발하는 감사 작업에 대한 자세한 내용은 Configuring and Administering Auditing에 대한 Oracle 설명서를 참조하십시오.

참고: AUDIT_SYS_OPERATIONS는 기본적으로 Amazon RDS for Oracle에서 활성화됩니다.

해결 방법

이 문제를 해결하려면 다음 솔루션 중 하나 이상을 고려합니다.

전용 테이블스페이스로 AUDIT 테이블 마이그레이션

감사 테이블은 DELETE 문을 사용하여 수동 또는 자동화된 제거 루틴으로 레코드를 정리할 때까지 무한으로 커집니다. 여유 공간은 영향을 받는 세그먼트로만 회수되므로, SYSTEM 테이블스페이스에서 테이블을 제거해도 AUD$FGA_LOG$ 테이블 크기는 기능상 변화가 없습니다. 오히려 이로 인해 조각화 문제가 발생할 수 있습니다.

SYSTEM 테이블스페이스에서 다른 테이블스페이스로 AUDIT 테이블을 마이그레이션하면 RDS DB 인스턴스의 감사 테이블 크기를 더 많이 제어할 수 있습니다. 사용자가 직접 테이블을 마이그레이션하거나, RDS 인스턴스에서 Oracle 11g R2 이상의 버전을 실행하는 경우 DBMS_AUDIT_MGMT 패키지를 사용할 수 있습니다.

테이블을 수동으로 마이그레이션하려면 다음 단계를 수행합니다.

1.    다음과 비슷한 명령을 실행하여 새 테이블스페이스를 생성합니다.

CREATE TABLESPACE <name>;

참고: AUTOEXTENSIBLE 세그먼트 공간 관리(기본적으로 새 테이블스페이스에 대해 활성화됨)를 통해 테이블스페이스를 생성하면 나중에 테이블 크기를 쉽게 조정할 수 있습니다.

2.    다음과 비슷한 명령을 실행하여 AUD$ 테이블을 새 테이블스페이스로 마이그레이션합니다.

BEGIN
SYS.DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_LOCATION(audit_trail_type => SYS.DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,
audit_trail_location_value => '<name>');
END;
/ 

3.    다음과 비슷한 명령을 실행하여 FGA_LOG$ 테이블을 새 테이블스페이스로 마이그레이션합니다.

BEGIN
SYS.DBMS_AUDIT_MGMT.set_audit_trail_location(audit_trail_type => SYS.DBMS_AUDIT_MGMT.AUDIT_TRAIL_FGA_STD, audit_trail_location_value => '<name>');
END;
/

참고: 테이블의 크기에 따라 이 작업을 완료하는 데 시간이 걸릴 수 있습니다. 테이블이 크거나 테이블에 자주 액세스하는 경우 교착 상태 오류가 발생할 수도 있습니다. 교착 상태 오류를 해결하려면 임시로 DB_AUDIT_TRAILNONE으로 설정하고 데이터베이스를 다시 시작한 후 작업을 다시 시도합니다. 프로세스를 완료한 후에 DB_AUDIT_TRAIL을 되돌릴 수 있습니다.

테이블 감사 모범 사례 준수

관리 가능한 감사 테이블을 유지하려면 감사 테이블에서 이용하는 공간을 최소화합니다. 또한 관련 작업의 최소 세트를 감사하여 ORA-01653 오류 발생을 최소화합니다. 마지막으로, 감사 트레일 레코드를 자주 아카이브하고 제거합니다. 자세한 내용은 Oracle 데이터베이스 문서의 Guidelines for Auditing Typical Database Activity를 참조하십시오.

SYSTEM 테이블스페이스에 대해 AUTOEXTEND 설정

Oracle을 실행하는 RDS DB 인스턴스의 경우 SYSTEM 테이블스페이스에 대한 AUTOEXTEND는 기본적으로 ON으로 설정되어 있습니다. 수동으로 AUTOEXTEND를 끄면 SYSTEM 테이블스페이스의 추가 공간을 프로비저닝하는 데이터베이스 기능에 영향을 줄 수 있습니다. ALTER TABLESPACE 명령을 실행하여 SYSTEM 테이블스페이스에 대해 이 설정을 활성화할 수 있습니다.

ALTER TABLESPACE SYSTEM AUTOEXTEND ON;

자세한 내용은 테이블스페이스 생성과 크기 조정을 참조하십시오.

SYSTEM 테이블스페이스의 MAXSIZE를 더 큰 값으로 설정

SYSTEM 테이블스페이스의 MAXBYTES 또는 MAXBLOCKS 설정이 너무 낮으면 SYSTEM 테이블스페이스의 MAXSIZE를 더 큰 값으로 설정합니다.

또한 다음과 비슷한 명령을 실행하여 SYSTEM 테이블스페이스의 최대 크기에 대한 한도를 제거할 수도 있습니다.

ALTER TABLESPACE SYSTEM AUTOEXTEND ON MAXSIZE UNLIMITED;