02.Oracle/DataBase2008. 7. 17. 13:22
반응형

ERROR:
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
Linux Error: 2: No such file or directory


상태로 봐서는... 오라클DB를 기동하는 DB 파일중의 일부가 없기 때문입니다.

오라클DB를 기동하기 위해서는

1. 시스템 테이블스페이스 (기본 파일명 : system.dbf)

2. UNDO 테이블스페이스  (기본 파일명 : undotbs1.dbf)

3. TOOLS 테이블스페이스 (기본 파일명 : tools.dbf)

그리고

온라인 리두로그 파일(redo1.log, redo2.log, redo3.log,...),

컨트롤 파일 (control1.ctl,...)

가 필요한데, 해당 테이블스페이스가 속한 데이터파일이 파일 시스템에 없거나

경로가 잘못 지정되어 있어서 그렇습니다.


님이 관리하시는 서버에 Oracle DB가 어떻게 구성되어 있는지를 몰라서

정확한 답변을 드리기는 힘들고요

(외장 Disk Array 를 사용하시는지, 혹은 NFS를 사용하시는지...

 어떤 이유에서인지 linux 파일시스템 mount 가 되어 있지 않아서

 오라클 데몬이 파일을 찾지 못하는 경우입니다)


우선 파일시스템 체크를 해보시고요...


파일 시스템에 이상이 없다면

shell 에서 sqlplus "/ as sysdba" 로 접속하셔서 다음의 명령어를 입력해 보시기 바랍니다...


select tablespace_name, file_name

  from dba_data_files;


쿼리로 나온 결과에는 테이블스페이스 및 해당 테이블스페이스의 내용을 보관하고 있는

데이터파일 이름이 나옵니다.

이 결과값이 현재 물리적인 파일시스템과 일치하는지 하나씩 확인해 보시기 바랍니다.


참고로...

오라클의 관리자 계정인 system 계정의 기본 패스워드는 'manager' 입니다.

통상 오라클 9i 이상부터는 DBA가 DB를 관리하기 위하여 svrmgrl 을 사용하지 않고

sqlplus "/ as sysdba" 로 접속하게 되어 있습니다.


** 답변 일부를 수정드립니다.


또 하나의 가능성은


리눅스 Shell 환경변수에서

$ORACLE_HOME 이나 $ORACLE_SID 가 잘못 되어 있을수 있습니다.


계정의 home directory에서

vi .cshrc (C-Shell 사용시)

vi .profile (Korn Shell, Bourne-Shell 사용시)

하셔서 $ORACLE_SID 나 $ORACLE_HOME 이 어떻게 정의되어 있나 확인하시고요


echo $ORACLE_HOME

명령으로 나온 결과의 끝에 "/" 가 붙어 있으면 안됩니다.


예> ORACLE_HOME = /oracle/app/oracle/9204/product  (O)

        ORACLE_HOME = /oracle/app/oracle/9204/product/ (X)


$ORACLE_SID의 확인은

echo $ORACLE_SID

명령으로 확인 가능하고요


만약 $ORACLE_SID = MYDB 라면


오라클 데몬 프로세스가 떠 있는지 확인하시고요, 명령은

ps -ef | grep ora_

라고 치시면


ora_smon_MYDB


라고 나와야 정상입니다.

Posted by 1010