다음 이전 차례

4. 데이터베이스의 생성

4.1 개요

당신이 앞 단락의 충고를 따랐고, 데이터베이스를 만들지 않았기를 바란다.

대부분의 사람들을 위해, 그 과정을 두개의 단어로 요약할수 있다: "'dbassist'를 구동하라". 전에 오라클을 사용해본적이 없고 이것이 처음이 아니라면, 어떤 문제도 정말로 당신을 조정할수 없다(?????).

완벽히 하기 위해, 나는 내가 처음 계획했던것 대신 실제로 한(된)것을 문서화할것이다. 마지막줄 : 이것은 생산시스템도 중요한(예, 사용자가 많은, 지속적으로 사용하는) 개발 시스템도 아니다. 나는 8i를 가지고 놀려고, 그리고 이전버전에서 8버전으로 뭐가 달라졌는지 알아보기 위해서 이다.

무엇을 뜻하냐 하면, 'dbassist'가 쉬운 옵션을 제공하면 나는 그것을 사용한다. 그리고 다른 디스크나 적어도 다른 파티션을 추천하면 나는 그렇게 했다. 나의 $ORACLE_HOME/home/oracle 이다. 모든 데이터 파일과 소프트웨어 는 그곳에 있으면 모든 것을 하나의 파티션에 두었다.

4.2 단계별 설명

  1. 명령 프롬프트에서 다음을 입력하라:
    dbassist
    
  2. 나의 컴퓨터는 "JNLS Exception: oracle.ntpg.jnls.JNLSException. Unable to find any National Character Sets." 라고 표시했다. 오라클 8i 패치 FAQ에 따르면 그것은 알려진 문제(884001)이다. 그리고 무시해도 안전하다.
  3. "Create a database" 라는 라디오버튼을 선택하고 "Next"를 눌러라.
  4. 두가지 옵션: Typical 과 Custom. 만약 당신이 무엇을 하려는지 알고 있다면 여기를 읽을 필요 없이 마음편하게 Custom 을 선택하라. 나는 그것(Custom)까지 포함시키지는 않을것이다. 대신 당신이 "Typical"을 선택하고 "Next"를 눌렀다고 간주할것이다.
  5. 다음 설치자는 당신이 테이더베이스를 당신의 CD에서 복사할지 이니면 데이터 화일을 만들지 물어볼것이다. 내가 첫번째 옵션을 선택했을때, 오라클은 나의 CD플레이어를 찾지못했다.(당신은 첫번째 옵션을 선택하라) 그래서 나는 두번째 옵션으로 다시 선택했다. 그것은 어렵지 않고, 다만 좀더 많은 시간이 걸린다.
  6. 설치자가 테이터베이스가 작동할 환경을 물어볼때 'Hybrid'라고 선택하 는게 아무도 좋을(안전할)것이다.
  7. 이제 설치자는 얼마나 많은 사용자가 당신의 데이터베이를 사용할것인지 물어볼것이다. 나는 5라고 입력했다
  8. 다음으로 당신의 새로운 데이터베이스에 어떤것을 설치할것이지 물어볼것이다. 다시말하자면 당신의 당신이 원하는것을 나보다 더 잘 알고 있다.
  9. 오라클은 이제 "Global Database Name" 과 "SID"를 필요로 할것이다. 데이터베이스 이름(Database Name)은 FQDN(fully qualified domain name) 과 비듯하다(그러나 다르다). 당신이 오라클 도사라면, 마찬가지로 만약 당신의 회사가 사용하던 관행이 있다면 무엇을 입력해야 되는지 알겟지만. 나는 'dev1'라고 했다.(SID와 데이터베이스 이름 모두)
  10. 이제, 당신은 '당장' 데이터베이스를 만들지, 아니면 쉘스크립트로 정보를 저장하게 할지 정해야 한다. 나는 128Mb를 가지고 첫번째 옵션으로 고생을 하였다. 쉘 스크립트를 만들었고, X(window)를 끝내고 메모리를 많이 사용하는 다른 것을 끝내고 스크립트를 시작했다. 잽싸게(?)
  11. 문서의 어떤 곳에서도 언급하지 않았지만, 그러나 당신의 데이터베이스 는 그것(롤백세그먼트)없이 잘 작동하지 않는다!. 데이터 베이스 즉 'dbassist'는 제대로 생성되었으나, 디폴트 사용자 롤백세그먼트(user rollback segments) 는 off-line 인체로 남겨져있다. (참조:non-systerm users 는 트랜젝션을 필요로 하는 어떤 동작도 하지 않는다) 입력하라.
    cd $ORACLE_HOME/dbs
    
    이제 "init<SID>" (나의 경우는 "initdev1.ora")를 수정할 필요가 있다. 화일의 중간쯤에 다음과 같이 코멘트(comment, #) 되어 있을것이다.
    # rollback_segments = (r01, r02, r03, r04)
    
    코멘틀 없애라(#을 제거하라). 화일을 저장하면 된것이다.
  12. 이런 후에야 당신으 당신의 데이터베이스를 가지게 되며 시작할수 있다. 그러나 시스템(system) 비밀번호를 아마도 알수 없을것이다.! 두가지 알아야 할것이 있다. 첫번재는 SYSTEM 비밀번호이다. 디포트는 'MANAGER'이다.(오라클 비밀번호는 관습적으로 대문자를 사용 하는 것같다. 사실 비밀번호는 대/소문자를 구분하지 않는다.) 나는 즉시 SQL*Plus 프롬프트에서 password 라고 해서 바꾸라고 권장한다. (사람들은 ALTER USER를 생각하겠지만, 8i부터 지원원하는 SQL*Plus 에서 새로게 생긴것이다.) 당신이 필요한 다른 비밀번호는 SYS를 위한것이다. 디폴트는 'CHANGE_ON_INSTALL' 이고, 그것이 말하는 데로 정확하게 해라.
  13. 마지막과정, SQL*Plus 로 로그인 하면 'no profile'이라는 성가신 경고를 없애는 과정이다. SQL*Plus 에 'system'이란 사용자로 로그인하라(sqlplus system/<password>). 그리고 다음을 입력하라:
    @?/sqlplus/admin/pupbld.sql
    
    의문부호(?)는 $ORACLE_HOME 디렉토리의 별명(alias)이다.

그리고 그것으로, 이제 당신의 데이터베이스를 사용가능하다. SQL*Plus를 이용하여 로그인할수 있다.

4.3 질문과 답변

이거 정말 쉬워요?

그렇다 그리고 그렇지 않다. 만약 당신이 단지 구동만 시킬것이고, 8i의 새로운 특징을 배우기위한 당신만을 위한 데이터베이스라면 "그렇다"이고, 위에서 말한 데이터베이스를 완벽하게 그리고 잘 작동하게 한려고 한다면 "그렇지 않다" 이다.

그러나, 당신이 오라클에 대해 모든것을 안다면 당신은 디폴트 설정이 지독히 나쁘다는 것을 쉽게 알수 있을것이다. 만약 당신이 중요한, 생산 시스템을 만들것이라면 "Custom" 옵션을 선택하라고 충고하고 싶다.

나의 장난을 위한 시스템의 경우에도 나는 몇가지 설정을 바꾸었다. 모든 테이블스페이스(table-spaces)의 크기를 늘리고 바꾸었다. 이유는 그것들이 자동으로 늘어나지 않았기 때문에.(나는 소프트웨어가 지나치게 똑똑해 지려고하면 소프트웨어가 싫어진다.)

모든 화일을 다른 디스크에 넣는게 정말 필요한가요?

아니다. 그렇게 하지 않아도 잘 동작한다. 그러나 모든 화일을 같은 디스크에 넣으라고 권하고 싶다.

여러개의 디스크에 분산된 화일은 ,설령 화일이 테이터 화일이 한곳에 있고 롤백 세그먼트가 다른 곳에 있더라도, 상당한 성능항상을 가져온다. 더많은 정보를 원하면 오라클 DBA 에 관한 책을 참조하라.

dbassist을 시작할수 없어요.

설치 초기에 내용없는 화일(zero-length files) 때문에 일어난다. 패치를 설치하면 이문제를 해결하수 있다.

"ORA-01034: ORACLE not available" 란 매세지

짧게 이야기하면, 아마도 당신의 $ORACLE_SID 가 정확하지 않아서 생긴다. 'dbassist'가 가지고 있는 값과 당신의 환경변수를 같게하고, 익스포트되어야 한다.(예, 본쉘(Bourne shell)호환 쉘에서 export ORACLE_SID )

"ORA-01012: Not logged in" 란 매세지

매우 흔한 오류이다. 오류를 일으키는 많은 다른 이유가 있다.

먼저, 공유서버 설정(Shared Server configuration)을 만들지 않았는지 확인해보라.(MTS라고 알려진) Dedicated Server 를 이용해서 데이터베이스를 만들고, 나중에 바꾸어라.

그것이 아니라면, 당신의 NLS_LANG 환경변수를 확인해보라. 가장쉬운 옵션은 그것을 설정하지 않는것이다. 만약 정말로 그 환경변수를 사용하고 싶다면, 정확한 값을 가지고 있어야하다. (알파벳의 12번째 글자?????)


다음 이전 차례