오라클 815,816기준
기본적으로 오라클을 설치하면 intermedia text 패키지들이 설치가 됩니다.
패키지가 설치 되었는지 검사 하기
#sqlplus ctxsys/ctxsys 로 접속이 되어야 합니다
즉 ctxsys라는 사용자가 있어야 설치가 된겁니다.
intermedia text관련 라이브러리가 설치되었는지 검사
SQL>select library_name,file_spec,dynamic,status from user_libraries;
LIBRARY_NAME FILE_SPEC D STATUS
------------ ---------------------------------------- - -------
DR$LIBX /oracle/db/dev118/ctx/lib/libctxx8.so Y VALID
위가 같은 내용이 검색된다면 intermedia 관려 패키지들이 설치가 된겁니다..
[1]만약 설치가 되어 있지 않다면 아래의 순서대로 설치해주시면 됩니다..
1-1) SYS사용자로 접속을 합니다
SQL>@$ORACLE_HOME/ctx/admin/dr0csys.sql ctxsys패스워드 디폴트테이블스페이스 템프로리테이블스패이
스 (EX SQL>@$ORACLE_HOME/ctx/admin/dr0csys.sql ctxsys system temp)
1-2) cxtsys사용자로 접속을 합니다
SQL>connect ctxsys/ctxsys
1-3) 관련 라이브러리를 설치합니다.
SQL>@$ORACLE_HOME/ctx/admin/dr0inst.sql $ORACLE_HOME/ctx/lib/libctxx8.so
1-4) 한글 랙서(Lexer)를 설치 합니다.
SQL>@$ORACLE_HOME/ctx/admin/defaults/drdefko.sql
만약 기존에 설치되어 있는 intermedia text를 제거 하고자 한다면 아래 순서대로 하시면 됩니
다.. (권하고 싶은 방법이 아닙니다 이렇게 제거하고 다시 설치하려다 안돼서 오라클을 다
시 설치한 경험이 있습니다 그러나 이방법으로 제거한후 다시 설치하는것이 맞습니다 )
2-1) ctxsys사용자로 접속해 intermedia text라이브러리를 제거 합니다.
SQL>@$ORCLE_HOME/ctx/admin/dr0drop.sql
2-2) sys 사용자로 접속해 ctxsys사용자를 제거 합니다.
SQL>@$ORACLE_HOME/ctx/admin/dr0dsys.sql
[2] Net8 세팅하기
기본적으로 오라클 816은 intermadia text설치한다면 Net8설정이 오라클 설치시 세팅이 됩니다.
세팅이 되어 있지 않거나 아래와 내용이 다른 경우 세로 세팅을 하시면 됩니다.
$ORACLE_HOME/network/admin/listener.ora
($ORACLE_HOME이 /home/oracle이라고 가정)
만약 intermedia text세팅이 되어 있지 않다면
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST=
(ADDRESS= (PROTOCOL=tcp) (HOST=xxx.xxx.co.kr) (PORT=1521))
)
)
)
SID_LIST_LISTENER =
(SID_DESC =
(GLOBAL_DBNAME = ORCL)
(ORACLE_HOME = /home/oracle)
(SID_NAME = ORCL)
)
)
이렇게만 되어 있을 겁니다.
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC) (KEY = EXTPROC))
(ADDRESS = (PROTOCOL = TCP) (HOST = xxx.xxx.co.kr) (PORT = 1521))
)
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /home/oracle)
(ENVS = 'LD_LIBRARY_PATH=/home/oracle/ctx/lib')
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = ORCL)
(ORACLE_HOME = /home/oracle)
(SID_NAME = ORCL)
)
)
위와 같이 바꾸어 줍니다.
즉
LISTENER에서
(ADDRESS = (PROTOCOL = IPC) (KEY = EXTPROC))를 추가하고
SID_LIST_LISTENER 에서
SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /home/oracle)
(ENVS = LD_LIBRARY_PATH = /home/oracle/ctx/lib)
(PROGRAM = extproc)
추가 하는 겁니다..
$ORACLE_HOME/network/admin/tnsnames.ora
intermedia text가 세팅되어 있지 않았다면
DBCON =
(DESCRIPTION =
(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = xxx.xxx.co.kr)(PORT = 1521)))
(CONNECT_DATA = (SERVICE_NAME = ORCL))
)
이렇게만 되어 있을 겁니다.
DBCON =
(DESCRIPTION =
(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = xxx.xxx.co.kr)(PORT = 1521)))
(CONNECT_DATA = (SERVICE_NAME = ORCL))
)
EXTPROC_CONNECTION_DATA.XXX.CO.KR =
(DESCRIPTION =
(ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC)))
(CONNECT_DATA = (SID = PLSExtProc)(PRESENTATION = RO))
)
위와 같이 EXTPROC_CONNECTION_DATA.XXX.CO.KR 의 내용을 추가 합니다..
EXTPROC_CONNECTION_DATA는 반드시 적어주어야 합니다.
XXX.CO.KR은 $ORACLE_HOME/network/admin/sqlnet.ora 파일에 있는 NAMES.DEFAULT_DOMAIN = XXX.CO.KR의
XXX.CO.KR을 적어주셔야 합니다.
만약 sqlnet.ora파일에 NAMES.DEFAULT_DOMAIN 없다면 반드시 세팅해 주셔야 합니다
Net8세팅이 다되었다면 리스너를 재실행 합니다.
lsnrctl stop -> lsnctl start
다음 intermedia text서비스가 시작 되었는지 체크합니다
#lsnrctl status
LSNRCTL for Linux: Version 8.1.5. - Production on 21-APR-01 11:02:01
(c) Copyright 1998 Oracle Corporation. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 8.1.5. - Production
Start Date 21-APR-01 09:13:14
Uptime 0 days 1 hr. 48 min. 46 sec
Trace Level off
Security OFF
SNMP OFF
Listener Parameter File /home/oracle/network/admin/listener.ora
Listener Log File /home/oracle/network/log/listener.log
Services Summary...
PLSExtProc has 1 service handler(s)
ORCL has 1 service handler(s)
The command completed successfully
위의 내용과 같이
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC))
PLSExtProc has 1 service handler(s)
이런 이런내용들이 확이 되어야 합니다..
tnsping으로도 확인 해봅니다..
#tnsping EXTPROC_CONNECTION_DATA.XXX.CO.KR
TNS Ping Utility for Linux: Version 8.1.5. - Production on 21-APR-01 11:05:58
(c) Copyright 1997 Oracle Corporation. All rights reserved.
Attempting to contact (ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC))
OK (0 msec)
OK가 되었다면 Net8세팅이 정상적으로 되었다고 보시면 됩니다..
새로운 사용자를 만들고 테스트를 해보겠습니다
SQL>Create user ctxtest identified by ctxtest;
SQL>Grant connect, resource, ctxapp to ctxtest;
ctxtest라는 사용자에게 ctxapp라는 권한이 반드시 있어야 합니다
SQL>connect ctxtest/ctxtest
SQL>Create table test(num number primary key, text long);
SQL>Insert into test values (1,'테스트');
SQL>Insert into test values (2,'InterMedia text 입력테스트');
SQL>Create index test_idx_text on test(text) indextype is ctxsys.context;
SQL>Select num,text from test where contains (text,'%입력%') > 0;
NUM TEXT
--- ----------------------------------------------
2 InterMedia text 입력테스트
CONTEXT INDEX의 경우 입력될때마다 자동으로 인덱스 생성이 되지 않기 때문에..
ctxsrv를 쉘상에서 기동시켜주어야 합니다..
#ctxstv -user ctxsys/ctxsys -logfile ctxsrv.log &
그럼 행운을 빕니다..--참을수 없는 배살에 두려움.