오라클 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.0.0 - 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.0.0 - 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.0.0 - 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를 쉘상에서 기동시켜주어야 합니다..
#ctxsrv -user ctxsys/ctxsys -logfile ctxsrv.log &
그럼 행운을 빕니다..
PS)
질문은 http://dr.moira.co.kr의 QandA에서 받겠습니다..
제가 아는 만큼만 알려 드리겠습니다.
|