오라클 데이터베이스에 spfile 파라메타 파일이 나오면서 DBA 작업이 번거로워 지는 경우가 종종 있습니다.
DBA 가 DB Parameter 잘못 조정했다가 DB 기동이 안되어 많이 헤매는 경험을 하게 됩니다.
원래 Oracle DB 파라메타 파일은 init<SID>.ora 형태를 띄고 있는 Text 파일입니다.
Text 형태의 파일이기 때문에 잘못된 게 있으면 그냥 vi 로 열어서 수정한 후, 다시 startup 하면 되었습니다.
하지만, spfile<SID>.ora 형태로 바뀌면서 더이상 vi 로 편집할 수 없게 되었습니다.
spfile 은 Binary 파일이기 때문에 vi로 편집하면 깨집니다.
위와 같이 DB 파라메타의 문제로 DB Startup 이 안되는 경우에는 spfile 을 먼저 pfile 로 바꿔줘야 합니다.
init<SID>.ora 형태의 Text 파일을 pfile 이라고 합니다.
pfile 로 바꿔서 vi 로 편집한 후, 이 pfile 로 바로 기동하거나, 다시 spfile 로 변경해준 후 기동하면 됩니다.
이런 과정없이 DB가 기동되지도 않았는데, 그냥 alter system 명령으로 DB 파라메타를 변경하려고 하면
아래와 같이 ORA-01034 에러가 발생합니다.
싱글(Single) DB라면 create pfile from spfile; 커맨드만으로 spfile 에서 pfile 을 간단하게 만들 수 있습니다.
하지만, ASM을 사용하는 RAC 에서 spfile 이 ASM 스토리지 안에 있는 경우는
아래와 같이 ORA-01565, ORA-27037 에러가 발생합니다.
아래에서 볼 수 있듯이 $ORACLE_HOME/dbs 디렉토리에 이미 pfile (initSID.ora) 이 존재하고 있습니다.
하지만, 이 파일을 열어서 보면 pfile 이 아니고, 실제로는 ASM 안에 들어있는 spfile 입니다.
따라서 vi 로 직접 편집할 수가 없습니다.
이걸 create pfile from spfile 명령으로 아래와 같이 파일들의 위치를 지정해줘야 에러없이 pfile 을 추출할 수 있습니다.
이제, /tmp 디렉토리에 pfile 이 우리가 지정한 이름(initRAC.ora) 으로 만들어져 있습니다.
이것을 vi 로 편집하면 됩니다.
위에서 sga_target 값이 너무 작아서 에러가 났었습니다. (ORA-00821)
제가 작은 sga_target 값에도 불구하고, sessions, processes 값을 너무 크게 늘렸었거든요.
이제 sga_target 값을 좀많이 늘려주던가, 아니면, sessions, processes 값을 원래대로 줄여준 다음에,
다시 create spfile from pfile 명령으로 다시 spfile 을 ASM 스토리지내에 만들어서 넣어주면 됩니다.
이제 DB파라메타 들이 정상으로 수정되었기 때문에 DB를 기동해주면 잘 올라옵니다.
'IT관련' 카테고리의 다른 글
버추얼박스(VirtualBox)로 게스트 OS 설치 방법 - 내 PC안의 또다른 PC (0) | 2019.08.01 |
---|---|
오라클 가상머신 VirtualBox 다운로드 및 설치 - 내 PC안의 또다른 PC (0) | 2019.08.01 |
윈도우즈10 시작메뉴, 태스크바 사라진 경우 - Start Menu, Taskbar missing in MS Windows (0) | 2019.07.26 |
VirtualBox 에서 스토리지 디스크 할당방식 변경(동적할당 vs 고정크기) - 공유 디스크로 변환 (0) | 2019.07.24 |
오라클 에러 정보 (CRS-2546, CRS-4000) - RAC에서 CRS 에러 (0) | 2019.07.23 |