본문 바로가기
Oracle/이벤트

ORA-00838,ORA-47500

by 취미툰 2021. 1. 21.
반응형

테스트서버를 재기동한 후 DB가 안올라와서 확인해보니 위와 같은 에러가 발생하였습니다. 기본적인 테스트용도로만 사용할꺼라 XE 버전을 사용하고 있었고, 서버재기동을 하면 자동적으로 DB기동을 시켜주는데.. 안되는 상황이었습니다.

이 에러를 해결하고 DB를 띄웠지만 XE버전에 대한 이해가 낮아 DB를 다시 재기동했을때 다른 에러가 발생하였습니다.. 

에러명

ORA-00838: Specified value of MEMORY_TARGET is too small, needs to be at least 1036M 

 

증상 : DB down 상태에서 startup 시 no mount상태로 갈떄 spfile또는 pfile을 읽으면서 발생

원인 :  MEMORY_TARGET에 설정된 메모리가 DB 기동하는데 필요한 메모리보다 작게 설정되어 있어서 발생

해결 : 저의 경우에는 spfile로 해결하였습니다.

 

-mount 상태까지 올리기

SQL> startup mount
ORACLE instance started.

Total System Global Area 1068937216 bytes
Fixed Size                  2225640 bytes
Variable Size             436210200 bytes
Database Buffers          620756992 bytes
Redo Buffers                9744384 bytes
Database mounted.

 

-MEMORY_TARGET을 1500M로 수정
SQL> alter system set memory_target=1500M scope=spfile;

System altered.

-DB Open
SQL> alter database open;

Database altered.

-확인
SQL> select status,instance_name from v$instance;

STATUS       INSTANCE_NAME
------------ ----------------
OPEN         XE

 

 

 

EE버전에서는 발생했을 때 쉽게 해결가능합니다만, XE버전의 경우에는 무료버전이기 때문에 자원에 대한 제한이 걸려있습니다. 따라서 MEMORY_TARGET을 아무렇지 않게 늘려버렸다가, 그다음 재기동 시 아래의 에러를 발생하였고, 해결하는데 약간?의 시간이 소요되었습니다

 

11g 기준 XE버전 자원 제한

USER DATA 12G 이하

CPU 1core

MEMORY 1G 이하

 

18c 기준 XE버전 자원 제한 

USER DATA 12G 이하

CPU 2core

MEMORY 2G 이하

 

 

에러명

ORA-47500: XE edition memory parameter invalid or not specified

 

증상 : DB down 상태에서 startup 시 no mount상태로 갈떄 spfile또는 pfile을 읽으면서 발생

원인 : 11gR2 XE버전의 메모리자원은 최대 1G인데 설정값이 1G가 넘게 설정되어 DB DOWN 상태에서 시작 시 나오는 에러

해결 : 저의 경우에는 mount까지도 DB가 올라가지 않기 때문에 pfile 생성 후 pfile의 설정을 변경하여 DB를 Open시켰습니다.

 

 

SQL> create pfile from spfile;

File created.

 

 

pfile 오픈

SGA_Target과 MEMORY_TAGET 파라미터 부분을 주석처리한 후 DB 재기동

 

XE.__db_cache_size=620756992

XE.__java_pool_size=16777216

XE.__large_pool_size=16777216

XE.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment

XE.__pga_aggregate_target=503316480

XE.__sga_target=1073741824

XE.__shared_io_pool_size=0

XE.__shared_pool_size=402653184

XE.__streams_pool_size=0

*.audit_file_dest='/u01/app/oracle/admin/XE/adump'

*.compatible='11.2.0.0.0'

*.control_files='/u01/app/oracle/oradata/XE/control.dbf'

*.db_name='XE'

*.DB_RECOVERY_FILE_DEST='/u01/app/oracle/fast_recovery_area'

*.DB_RECOVERY_FILE_DEST_SIZE=10G

*.diagnostic_dest='/u01/app/oracle'

*.dispatchers='(PROTOCOL=TCP) (SERVICE=XEXDB)'

*.job_queue_processes=4

#*.memory_target=1035M

*.open_cursors=300

*.remote_login_passwordfile='EXCLUSIVE'

*.sec_case_sensitive_logon=FALSE

*.sessions=20

#*.sga_target=1073741824

*.shared_servers=4

*.undo_management='AUTO'

*.undo_tablespace='UNDOTBS1'

 

 

DB재기동

 

SQL> create spfile from pfile;

File created.

SQL> startup
ORACLE instance started.

Total System Global Area  217157632 bytes
Fixed Size                  2225072 bytes
Variable Size             159386704 bytes
Database Buffers           50331648 bytes
Redo Buffers                5214208 bytes
Database mounted.
Database opened.

 

저도 이게 왜 되는지 원인이 감이 안오네요.. 실제로 파라미터를 주석처리한 후 SGA영역의 크기가 1019MB -> 207MB로 줄긴했습니다만, pfile에 값들과도 다른 값이 할당된거 같고... 좀더 파악해봐야겠습니다.

 

수정 전 SGA

약 1019MB
설정 전
Total System Global Area 1068937216 bytes
Fixed Size                  2225640 bytes
Variable Size             436210200 bytes
Database Buffers          620756992 bytes
Redo Buffers                9744384 bytes

 

수정 후 SGA

약 207MB
Total System Global Area  217157632 bytes
Fixed Size                  2225072 bytes
Variable Size             159386704 bytes
Database Buffers           50331648 bytes
Redo Buffers                5214208 bytes

반응형

댓글