글: 김용삼 / thinkm1@chollian.net
|
내겐 기다리고 기다리던 오라클이었다. 왜냐하면
기존 8.0.x 버전은 SQL-Net에서 외부접속이 잘 안 되었기 때문이다.
오라클 자체의 문제는 아니었지만 신경에 거슬렸다. 기존 8i 리눅스용에는
버그가 많다는 소문에 그냥 다음 버전이 나오기를 기다렸는데 이번에
나온 것이다. 그 외에 추가된 많은 기능이 무척 흥미를 끌었다. 그리고 애초부터 8.0.5 버전은 리눅스 커널 2.0.X와 낮은 버전의 glibc에 궁합이 맞게 나왔기 때문에 스탠다드에디션에서는 무려 3번의 패치를 해야지 겨우 돌아갔다.엔터프라이즈버전 역시 1번의 패치를 해야 하는데 이 놈이 각 디렉토리에 마구 백업본을 만들어 놔서 매우 지저분했다. 또한 그 패치는 오라클사의 공식패치가 아닌 것으로 알고 있다. 공식 패치라고 하더라도 오라클사는 래드햇 5.2 버전에서 8.0.X를 권장했다. 혹시라도 내게 왜 이렇게 굳이 기를 쓰고 갖가지 오라클을 인스톨 하냐고 물으면 사실 특별한 이유가 없다. 내가 생각해도 무척 소모적이다. 기존버전을 100% 이해하고 활용하는 것도 아니라면,그냥 있는 것 쓰고 다음에 누가 신버전 인스톨 해 놓으면 그때 쓰면 되지 않는가?" 그리고 "인스톨은 방식이 바뀌면 매번 달라지는데 굳이 보다 먼저, 보다 완벽히 인스톨 하려고 애쓸 필요가 있냐”고 반문할 것이다. 그렇다. 맞다. 현실적인 분들에게는 그렇다. 하지만 나는 자립하고 싶다. 그리고 모험을 하고 싶다. 왜 산에 오르는가? 운동삼아? 그렇다 나도 두뇌운동 삼아 인스톨 하느라 갖가지 궁리를 한다. 또 다른 이유는? 개척자 정신, 선구자 정신이다. 하얀 눈이 내린 곳에 처음 발을 디뎌보라. 얼마나 가슴 설래이고 뿌듯한가?그런 기분을 느끼는 것이다. 먼저 오라클 덩치부터 말하면 약 280메가다. 정확히275.3메가. 오라클사 홈페이지는 288메가라고 잘못 적혀있다. 이것은 테크넷에서 받았다. 현재 근무중인 이곳 한국통신의 인터넷 환경이 양호한 편인데도 불구하고 오랜 시간을 들여 받았다. 나는 겟라이트를 칭찬하고 싶다. 어느분들은 이놈이 네트웍 트레픽을 유발하는 녀석이라고 하지만 겟라이트는 정직한 방법으로 꾸준히 차곡차곡 파일을 받아 기쁨을 선사한다. 압축을 풀고보니 버전은 8.1.6.1 이었다. 윈도우 환경에서 받았다면 윈집으로 tgz 압축을 풀어서 씨디로 굽는 것이 좋을 것이다. 아니면 멀티부팅을 사용하는 경우 리눅스와 윈도우가 공용할 수 있는 드라이브를 지정해서 공유해도 될 것이다. 아무튼 이런 280메가짜리도 요즈음 하드가 커져서 별 문제가 안될 것이다. MP3와 동영상 조금 지우면 되지 않을까. 일단 압축을 풀어놓고 보면 막막하다. 이제부터 씨름 시작이다. 정신적인 컴퓨터와의 씨름이다. 두렵더라도 작은 전투를 즐기는 자세로 임해야 한다. 작은 전투와 승리가 모여야 오라클 고지를 점령할 수 있다. 기존에는 root에서 oratab.sh를, oracle 계정에서는 orainst를 이용했다. 그러나 이번에는 싹~ 바뀌었다. ...그 영웅적인 이름 runInstaller!! 한번 실행시켜 보라. 되는 사람도 있고 안 되는
사람도 있다. 이 녀석은 Xwindow 상에서만 뜬다. 나는 그것도 모르고
텍스트 모드에서 벼라별 짓을 다했다. 모르는 소스코드도 수 시간씩
들여다 봤다. 알 턱이 있나 그렇다고 내가 맨땅에 해딩하는 식으로 그냥 덤빈 것은 아니다. 나름대로 머리를 쓴다고 오라클사에서 만든 수십페이지 분량의 인스톨가이드 한 묶음을 찬찬히 보면서 참고를 했는데 그런말이 거기에는 없었다. 첫째 원인은 내 리눅스(또는 유닉스)에 대한 지식이 부족했기 때문이다. 내 주위에 나보다 리눅스를 잘 다루는 사람이 없어서 배울 기회가 없었기 때문이다.(리눅스가 뜨지만 아무래도 윈도우 기반의 프로젝트가 더 많은 것 같다) runInstaller. 이놈은 자바를 띄우는 녀석이다. 인스톨 가이드에도 나와있다. 그러나 영어가 짧은 나는 전문을 해석할 수 없어서 또 자바를 미리 깔아야 되는 줄 알고 IBM에서 운영하는 무슨 works에 가서 며칠 전에 나왔다는 자바 1.3을 다운 받아서 정성스레 오라클 디렉토리 이어지는 중간에 풀어놓았다. "여기 따끈한 자바 있으니 탈없이 인스톨 마치거라~" 나중에 안 일이지만 이것도 헛일이었다. 오라클은 자신이 자바런타임 1.1.7(8?)을 내장하고 있어서 불필요한 일이었다. 나중에 다 인스톨 되고 보면 홈디렉토리에 JRE 라는 소프트링크가 보일텐데 자기 것에 링크되어있다.(소프트 링크란 일종의 가상본. 윈도우의 .lnk에 해당)
=======인스톨 준비======= 먼저 인스톨 환경부터 살펴보자. 리눅스 레드햇
6.1 이상이면 문제없을 것이다. 최소램은 128메가. 적어도 펜티엄
2는 되어야 할 것 같다. 중요한 것은 램이 192정도는 되어야 오라클의
맛을 느낄 수 있다는 것이다. 이번 인스톨은 128MB 환경에서 했다.
오라클 권장은 256메가다. Oracle8i R2에 필요한 하드공간은 최소
700~800메가는 되어야 할 것같다. 눈 딱 감고 1G 할당하면 좋을
것이다.(리눅스의 용량이 아니라 오라클만이 사용하는 공간이다.
대게 /home 아래에 오라클 홈디렉토리와 베이스디렉토리를 만든다.
홈은 프로그램이 있는 곳이고 베이스는 덩치큰 DB파일이 있는 곳이다.
모두 합해서 1G를 할당하면 좋다는 말이다.) 그리고 사용자 Oracle을 만들고 나서 프라이머리 그룹에는 꼭 oinstaller그룹으로 소속시켜야 한다. 그 다음 순번으로는 dba그룹을 지정한다. 이 점은 이전 8.0.x버전과 특히 달라진 부분이다. 즉 oracle유저는 위 두 그룹에 모두 속해야 하고 특히 우선권은 oinstaller에 있다. 가장 우려했던 것은 오라클 8.0.x버전부터 엄포를 놓던 공유메모리(shered memory)인 SHMMAX, SHMSEG 였다. 왜냐하면 이것은 리눅스 배포판에서 기본설정이 되어있기 때문에 바꾸려면 새로 커널 컴파일을 해야 하기 때문이었다. 한숨 휴~ 오라클은 무려 4G나 이 값에 할당하는데, 이전 레드햇은 겨우16MB 였다. 과연 내가 쓰고있는 리눅스 배포판은? 여기에 덩치 큰 8iR2는 과연 지장없이 인스톨 될 수 있을까? 혹시 코끼리를 냉장고에 구겨 넣으려는 시도는 아닐까? 그래서 커널소스를 직접 보기로 했다. /usr/src/linux/include/asm/shmparam.h 파워리눅스R2는 32MB로 설정되어 있었다. 16MB보다 커서 안심이었다. 아마 요즈음은 대게 64MB 이상을 사용하므로 이 값이 기본으로 설정된 것 같았다. 아무튼 새로 컴파일하지 않았다. 또 마운트 포인트라는 말이 나온다. 이 말은 디스크가 여러 개 일 때 안전을 위해 중요한 핵심파일을 분산시켜 놓는 것을 말한다. 설명 나온대로 만들어 주었는데 나중에 보니 하나도 쓰지 않았다. 아마도 인스톨시에 typical을 선택해서 역시 기본 값으로 알아서 만들고 인스톨 한 것 같았다. 다음 .bashrc파일에 각종 파라미터값을 export 해줘야 한다. 아래와 같이 하면 된다.(oracle 계정) export UMASK=022 참고로 위에서 #표시는 주석이니까 나중에 필요할 때 지워주면 된다.(혹시 모를까봐) 그리고 DISPLAY=apple:0.0 에서 apple는 내 컴퓨터의 IP주소니까 localhost로 해도 된다. 참고로 최초 인스톨 실패시에 오라클 인스톨러가 계속해서 IP 주소를 찾을 수 없다고 했는데 나중에 알고 보니 root 권한으로 Xwindow를 띄우고 한텀창에서 netcfg를 치고 두번째 탭에서 apple, 123.011.016.019(자기 IP) 라고 하면 된다. 이후에 apple은 위 IP 주소 대신 사용할 수 있다. 여기서 말이 쉽지만 사실 이것 때문에 난 하루 꼬박 날렸다. "아...역시 내 수준에 오라클 8iR2 인스톨은 무린가봐." 하고 말이다. 이정도면 인스톨 준비단계는 다 된 것 같다. 점검하면 일단 최초 로그인시에 oracle로 로그인 하면 오라클이 인스톨 및 가동될 자리에 딱~ 위치해야 한다. 무슨 말이냐면 윈도우에서 Program Files디렉토리에 대부분의 인스톨 파일이 풀리듯이 오라클에서 로그인하면 바로 인스톨 될 오라클 홈 디렉토리에 위치해서 커서가 깜박여야 한다는 것이다. pwd라는 명령을 치면 현재 디렉토리가 나오는데 이 디렉토리는 바로 .bashrc의 ORACLE_HOME과 일치해야 한다는 것이다. env 라는 명령을 치면 위에서 export 한 값이 제대로 나오는지 확인할 수 있다. -참고로 나는 이것이 제대로 나오지 않았다...
또 하루를 날렸는데, 문제는 내가 임의로,
======= 인스톨 시작======== 지금 생각해도 감동의 순간 이었다.oracle로 로그인한 후, Xwindow에서 한텀을 띄우고, 압축 풀어놓은 곳에서 /runInstaller 를 쳤을 때 떠오르는 자바창은 그간의 피로를 스르르 녹여버렸다. 왜냐하면 그전까지 나는 Xwindow가 아니라 그냥 텍스트 화면에서 계속 시도했기 때문이다. 그렇게 하면 스스로 알아서 윈도우창을 띄우고 짠~ "어서옵쇼~ 지금부터 인스톨을 시작 하십시요." 하면서 나타날 줄 알았던 것이다. 역시 무식하면 심신이 고생을 한다. 여러분은 절대 그러지 말기를. 자, 그럼 runInstaller의 위치를 살펴보자. 하드에 소스를 풀어놓으면 약 300메가 가량된다. 시디가 있으면 좋다. 굽던지 얻던지 해서 시디가 있으면 mount -t iso9660 /dev/cdrom /mnt/cdrom이라는 명령을 root계정에서 미리 쳐줘야 시디를 인식한다. 노파심에서 압축은 아래처럼 압축 풀 디렉토리에서 푼다. tar xvfz /mnt/windisk/oracle8iR2.tar.gz 이렇게 하면 해당경로에 위치한 파일이 현재 위치에 풀린다. 이것도 무지 고생해서 안 사실임. 왜냐하면 나는 계속 -xvfz라고 쳤기 때문. runInstaller로 떠오르는 작지도 크지도 않은 창은 자바로 만든 창이다.(현재 oracle 계정임) 이 창모양은 NT 에서나 리눅스에서나 똑같다. 그래서 유니버설 인스톨러 라고 한다. 단, 폰트는 유니버설이 아닌데 NT의 한글폰트가 좀 더 예뻤던 것 같다. 참고로 나는 한글의 윗쪽 1/3이 짤려서 나와 조금 불편했다. 처음화면에서 경로 맞나 확인하고 다음으로 넘어간다.지금 정확히 기억이 안 나는데(그때 너무 흥분해서) 만약 SID를 물으면 .bashrc에 써주었던 SID를 써준다. GLOBAL DBNAME을 물으면 똑같이 써줘도 상관없다.(나는 잘 몰라서 똑같이 써주었다) 데이터 베이스는 typical로 해준다. 이전 8.0.x인스톨에 비해 이번 8iR2에서는 과정이 단순해졌다. 몇 가지 선택사항과 값을 써주고 나면 인스톨에 들어간다. 사용한 시스템이 팬III 550이었는데 약간 지루하다는 느낌이 들 정도였다. 알아서 SQL-Net 리스너 설정을 해주고 마지막 단계로 사용할 데이터베이스까지 생성을 해준다. 즉, 인스톨 과정은 먼저 파일들 복사 ->SQL-Net/listener 설정 ->데이터베이스를 생성이다. 인스톨러가 해주니까 구경만 하면 된다. 이 과정이 모두 끝나면 인스톨이 다 된 것이다. 이제 남은 것은 화면 설명에 나온대로 root로 새로 로그인(초보를 위해 설명하면 ctrl키와 alt키를 누른 상태에서 F1, F2, F3를 차례로 누르면 현재 실행 중인 프로그램과 별도로 또 하나의 화면에서 작업을 할 수 있다.)해서 oracle 홈디렉토리에 있는 root.sh를./root.sh라고 실행만 하면 끝나는 것이다. 일사천리로 여기까지 온 사람은 행복한 사람이다. 이미 오라클 인스톨을 몇 번 해 본 사람이거나, 위의 설명을 모두 꼼꼼히 이해하고 따라온 사람, 아니면 신의 은총을 받은 사람, 아니면 정말 똑똑한 사람이다. 하지만 항상 인스톨 가이드에 없는 무수한 문제가 발생하기 마련이다. 내게 닥친 첫 번째 에러는 /etc에 무슨 디렉토리가 없다는 메시지였다. 그래서 잽싸게 화면 전환해서(ctrl+alt+F2) 없다는 디렉토리 만들고 사용자는 oracle, 그룹은 oinstall로 바꿔줬다. 그리고 안심이 안 되서 패스가 재대로 되어있나 확인을 했다. 그러니까 다음으로 넘어갔다. 이때 모두 잘 사용하겠지만 mc를 쓰면 초보자도 쉽게 할 수 있다. 굳이 텍스트 명령으로 하려면 chown oracle.oistall XXX 또는 chown oracle.dba XXX 하면 된다. 자세한 것은 man chown으로 살펴본다. 참고로 해당 디렉토리 아래 모든 파일의 권한을 바꾸려면 chown -R oracle.oinstall XXX 하면 된다.(이것 아는데 또 하루 걸렸음) 두 번째로 만난 문제(에러)는 위에서 한 번 언급했지만 IP주소를 못 찾는다는 메시지 였다. 이 경우는 root에서 Xwindow 띄우고 한 텀 띄우고, netcgf를 쳐서 뜨는 창에 123.234.012.255 ABCDE라고 입력해주면 된다. 화면에 여러 탭 중 IP 주소 127.0.0.1이라고 나와 있는 맨 앞의 탭이다. 중간에 이런 에러를 만났을 경우 즉시 해결되지 않을 수도 있다.그러면 일단 모두 인스톨이 끝날 때까지 기다린다. DB만 따로 인스톨하는 방법이 있기 때문이다. 이 외의 수많은 에러가 있을 것이다. 스스로 해결하는데 며칠씩 걸릴 수도 있다. 그러나 여기서 그 많은 경우를 가정하기란 힘들다. 그때그때 알아서 해결해야 한다. 아무튼 해결한 문제점은 모두 공유할 수 있으면 좋겠다. 오라클 인스톨하는데 다들 며칠씩 허비할 필요는 없지 않은가.
=====DB만 따로 인스톨 하기===== 이 방법 역시 예전과 많이 달랐다. 기존 인스톨 프로그램에서 하던 것을 오라클 8iR2에서는 dbassist를 이용한다. 프로그램이 인스톨 되어있는 상황에서 그냥 이렇게 치면 화면이 뜬다. 마치 runInstaller를 사용하듯이 하면 된다.(인스톨 가이드에는 Response File명인 dbca.rsp를 이용해서 ./runInstaller -dbca.rsp 라고 하면 된다고 했는데 해보니까 안 되었다. 아마 한 번 인스톨에 실패한 사람은 다시 기회를 주지 않나 보다 . 야속한 오라클!.^-^ 하지만 dbassist를 이용하면 된다) 참고로 계속 언급되었던 '인스톨가이드'는 오라클 압축 풀면 /doc/unixdoc/ 아래에 있다. HTML인데 프린트 하면 수십 페이지 분량이다. 내용은 많은데 친절하진 못하다. 모두 영어고. 따로 DB를 인스톨 할 때도 몇 가지 값을 넣어줘야 한다. (SID도) 참고로 MTS방식과 Dedicate방식의 차이는 나중에 바꿀 수 있다. OLTP 용이냐 웨어하우스 용이냐도 $ORACLE_HOME/dbs/initSID.ora 에서 파라메타를 수정할 수 있을 것이다. 그냥 hybride를 선택하면 된다. 역시 진행 막대가 나타나고 모두 끝났다는 반가운 메시지를 접할 것이다. 부디..그러길 바란다. dbassist파일은 홈디렉토리/bin 에있다. 패스가 잡혀있으면 그냥 실행이 될 것이다. 만약 안되면 dbassist -dbca.rsp라고 해본다.
=====확인 및 인스톨 후 설정===== 모두 다 끝났으면 아마도 현재 오라클이 가동 중 일 것이다. 오라클 홈에서 svrmrl -> connect internal -> shutdown ->exit 를 차례로 친다. 다음 lsnrctl stop을 친다. 에러가 나면 오라클이 작동중이 아니라는 것이다. 신경쓸 것 없다. 로그오프후 재 로그인을 한다. 반가운 오라클 홈에 들어왔으면 lsnectl start친다. 한 페이지 죽 올라가고 내용 중 successuful 이 있으면 리스너가 작동중이다. 다른 사람들이 접속해서 내 오라클을 사용할 때 필요한게 이 리스너다. 에러가 나면 그냥 고개를 끄덕여 준다. 다른 방법이 있기 때문이다. 다음 svrmrl -> connect internal -> startup 까지 친다. 여기서 화면에 4~7 줄 정도 올라가고 mount ..open 이라는 단어가 에러없이 보이면 성공한 것이다. 이제 당신도 오라클 8iR2 유저가 되는 순간이다. 만약 에러가 발생한다면? 무수한 경우가 존재한다. 하드웨어, 운영체제, 경로설정 불완전한 인스톨 해법이 없다면 runInstalller와 dbassist로 재 인스톨을 권한다. 경험상 이번 8iR2에는 별 문제가 없는 것 같다. 비록 자바 널포인트 에러를 인스톨 중에 만났지만 재 인스톨 후 DB만 따로 인스톨 해주니 모두 정상이었다. 노파심에 말한다. ORACLE8iR2는 Mysql 같은 공개 DBMS가 아니다. 매우 유명한 상용 DBMS다.(글 읽는 이의 수준을 모르니 이해 해주시길 바랍니다) startup <-> shutdown 을 반복했을 때 아무 이상이 없어야 재대로 인스톨 된 것이다 참고로 shutdown시 그냥 멈춰있으면 누가 사용 중이라는 것이므로 shutdown immediate 라고 친다. 그래도 안 되면 shutdown abort 라고 친다. (현재 스팰링이 자신 없는데 help shutdown으로 확인한다) 리스너도 뜨고 DB도 뜨면 이제 하산할 차례다. 다 된 것이다. 아직 인스톨을 못해서 시간 낭비하는 다른 사람들에게 스스로 터득한 비법을 전수 해주기 바란다. 리스너가 뜨지 않을 경우도 있다. 오라클 홈/network/admin/listener.ora에 있는 리스너를 mc 또는 vi로 아래처럼 편집한다. # LISTENER.ORA Configuration SID_LIST_LISTENER = 위에서 Host= apple은 Host=149.123.056.089(자신의 IP)라고 해도 된다. 물론 경로는 알아서 자신의 경로로 바꿔줘야 한다. 이러면 리스너가 뜰 것이다. (lsnrctl start) 그래도 뜨지 않으면 역시 여러 문제가 있을 수 있다. 디렉토리와 파일 권한문제를 한 번 점검하길 바란다. 포트 1521도 오라클만이 사용하나 점검 해보고. 다음 tnsnames.ora를 본다. 같은 디렉토리에 있다. # TNSNAMES.ORA Configuration EXTPROC_CONNECTION_DATA = linux=(DESCRIPTION=(ADDRESS=(PROTOCOL =TCP) 위에서 fujitsu는 내가 상대편의 오라클에 접속하기 위한 설정이고 linux는 내 자신이 리스너를 통해서 접속하는 방법이다.(테스트용) 리스너가 제대로 뜨면 svrmgrl-> connect internal->startup->exit 로 DB도 띄우고 sqlplus scott/tiger@linux 라고 친다. sqlplus에 제대로 들어갔으면 다 정상작동하는 것이다. select * from tab; 로 테스트 해본다. 긴 여정이 끝났다. 전문가는 반나절 일거리지만 초보자는 일주일도 더 걸릴 수 있다. 기존 8.0.x 인스톨에 경험이 있음에도 불구하고 헤메는 것은 마찬가지 같다. (온통 자바로 바뀌어서)
=======유용한 명령어 ======= <리눅스용> top : 메모리 상황과 시스템 자원 사용율을 알 수 있다. kill : 불필요한 프로세스를 죽인다. top에 보면
프로세스 Id가 있다. kill 999 하면 강제로 df -k : 현재 구성하고 있는 리눅스 파티션 현황과 사용량을 알 수 있다. <오라클용> (system/manager로 로그인) select tablespace_name, sum(blocks), sum(bytes) select * from nls_database_parameters; create user orange identified by 123456
========= 여담 ========= 혹자는 생각할 것이다. 뭐 어렵다고 이런 글을 올리냐고. 어려운 것을 떠나 이것은 나의 투쟁사이다. 생각해 보라. 될지 안 될지 무슨 에러와 부딪힐지 모르는 수많은 상황을 거쳐 끝내 startup, shutdown, lsnrctrl start가 되는 시간은 자신과의 싸움에서 승리하는 순간이다. 여러분도 인스톨에 성공하는 기쁨을 누리길 바란다. 또 한가지 하고 싶은 말은 혼자만 알고 있지 말자는 것. 서로 공유하자는 것이다. 지금까지 한 인스톨은 오라클 8i를 사용할 준비과정이다. 수영장에 찾아와서 수영복입고 뛰어들 준비를 마친 것이다. 이제 멋진 폼 잡고 수영을 시작할 단계다. '오라클8iR2'라는 꽤 넓은 풀장에서 말이다. 참고로 저는 OCPDBA 7 과정을 수료했습니다. 현재 가물가물 거리지만. 이 글을 혹시 다른 곳에 올리실 때는 출처를
밝히시고 처음부터 끝까지 올려 주십시오. 부분발췌를 금합니다.
잘못된 내용이나 추가부분은 제게 연락 주면 모았다가 한꺼번에
수정하겠습니다. |