2014년 6월 16일 월요일

Context Option의 사용법![오라클개발자교육/오라클/ORACLE강좌/오라클교육잘하는곳/오라클교육추천/ORACLE실무교육/ORACLE/ORACLE교육/ORACLE학원/오라클실무교육]


context option의 기본적인 사용방법 
-------------------------------------------------------------------- 

1. parameter 설정 
(1) $ORACLE_HOME/dbs directory내의 init.ora file 내에 

  TEXT_ENABLE = TRUE로 지정되어야 한다. 

  이때, 는 환경변수에 지정된 ORACLE_SID에 해당하는 
  값으로, ORA7인 경우가 많다. 

(2) open_cursors를 약 2000 정도로 크게 지정한다. 


2. one step query와 two step query사용방법 (1) ~ (5)은 동일 
(1)  ctxsrv -user ctxsys/ctxsys  -log ctx.log & 
    또는 ctxctl에서 start 명령 이용 

    이 context server process는 하나만 실행시키기 보다는 context 
    option을 사용하게 되는 user수만큼 띄우는 것이 performance에 좋다. 

    또는 ctxctl을 수행시킨 후 start n 
    (여기에서 n은 context server의 갯수)으로 실행하여도 된다. 

(2)  context option을 사용할 사용자에게 다음과 같은 role에 대한 권한을 
    부여한다. 

    os> sqlplus ctxsys/ctxsys 
    sql> grant ctxapp to username; 

(3)  pl/sql에서 때때로 role을 통해 부여받은 권한을 인식하지 못하는 경우 
    가 있으므로 다음과 같이 명시적으로 권한을 부여한다.    

    sqlplus ctxsys/ctxsys 
    sql> grant execute on ctx_query to username; 
    sql> grant execute on ctx_ddl to username; 

(4)  sqlplus username/password 
    sql>  exec ctx_ddl.create_policy('policy_name',    'table_name.column_name', 
lexer_pref=>'CTXSYS.KOREAN'); 

*  이때 policy_name은 임의의 이름을 지정하면 된다. 
**  primary key가 두개 이상의 column으로 구성되어 있다면, 
  textkey=>'pk1,...,pkn'으로 지정한다. 
  즉 pk1, pk2 column으로 primary key가 구성되었다면 
  exec ctx_ddl.create_policy('policy_name', 
  'table_name.column_name', 
  textkey=>'pk1,pk2',lexer_pref=>'CTXSYS.KOREAN'); 

*** composite textkey인 경우 table의 primary key를 구성하는 column이 16개 
  까지만 가능하다. 

**** primary key가 복수개인 것은 가능하지만 policy를 구성하는 column을 
    복수개로 지정할 수는 없다. 

(5)  exec ctx_ddl.create_index('policy_name'); 
    여기에서 policy_name은 create_plicy에서 생성한 policy_name을 지정한다. 

(6)-1 1 step query방법(stored procedure내에 사용하는 것은 불가능) 

    다음과 같이 where절에 contains라는 새로운 연산자를 이용하여 query한다. 
    
    예를 들어, 
    select * from table_name 
    where contains(column_name, '찾고자_하는_형태소') > 0; 

(6)-2 2 step query방법 
  
a. 먼저 다음과 같은 result table을 만든다. 
  
create table ctx_result 
  (textkey varchar2(64),      
  textkey2 varchar2(64),      
  ...                          
  textkeyn varchar2(64),    
  score number, 
  conid number); 

*  이때, primary key를 구성하는 column의 갯수만큼 textkey가 필요하므로    
primary key가 하나의 column으로 구성되어 있다면 위의 ctx_result 
  table의 구성 중 textkey2 ~ textkeyn은 빼고 textkey, score, conid, 
  3개의 column으로 result table을 만들면 된다. 
**  primary key column의 data type이 varchar2가 아니고 number라 
  하더라도 textkey는 무조건 varchar2(64)로 잡도록 한다. 
      
*** conid는 하나의 result table을 여러 query가 공유하는 경우, qeury를 
  구별하여 주기위한 것이다. 

2) 위에서 만든 result table을 이용하여 다음과 같이 두 단계의 query를 
  수행한다. 

  exec ctx_query.contains('policy_name', '찾고자_하는_형태소', 
                          'ctx_result'); 

  이때 찾고자_하는_형태소 부분에는 형태소 or 형태소, 형태소 | 형태소, 
  형태소 and 형태소, 형태소 & 형태소 등의 표현이 가능하다. 

  select score, primary_key, column_name 
  from table_name, result_name 
  where table_name.pk = ctx_result.textkey 
  and table_name.pk2 = ctx_result.textkey2 
  ... 
  and  table_name.pkn = ctx_result.textkeyn 
  order by score desc; 

위의 query는 primary key를 구성하는 column이 
라고 가정할 경우의 query문이며, primary key가 하나의 컬럼으로 이루어졌다면 
      and table_name.pk2 = ctx_result.textkey2 
        ... 
      and  table_name.pkn = ctx_result.textkeyn 
부분은 불필요하다.  
  
Previous Article : Designer R1.3.2를 Designer R2.1.2로 Upgrade  
Next Article : Lock이 걸린 Session과 SQL문확인 

오라클자바커뮤니티교육센터, 개발자전문교육, 개인80%환급 
www.oraclejavacommunity.com


평일주간(9:30~18:10) 개강
(6/23)[기업100%환급]자바기초에서 JDBC, Servlet/JSP까지 
(6/23)[기업100%환급]Spring ,MyBatis,Hibernate실무과정
(6/23)[기업100%환급]SQL기초에서 Schema Object까지
(6/30)[기업100%환급]PL/SQL,ORACLE HINT,TUNING
(6/30)[기업100%환급]안드로이드개발자과정
(7/07)[기업100%환급]C#4.0,WinForm,ADO.NET프로그래밍
(7/07)[채용예정교육]오라클자바개발잘하는신입뽑기프로젝트,교육전취업확정

평일야간(19:00~21:50) 개강
(6/17)자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지
(6/18)C#,ASP.NET마스터
(6/19)웹퍼블리싱 마스터
(6/19)Spring3.X, MyBatis, Hibernate실무과정
(6/24)안드로이드개발자과정
(6/24)MyBatis3.X, Hibernate4.X ORM실무과정
(6/26)SQL초보에서실전전문가까지
(7/02)자바웹(JSP,Spring,MyBatis,XPlatform)프로젝트과정

주말(10:00~17:50) 개강
(6/21)Spring3.X, MyBatis, Hibernate실무과정
(6/21)MyBatis3.X, Hibernate4.X ORM실무과정
(6/21)자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지
(6/28)SQL초보에서 Schema Object까지
(6/28)안드로이드개발자과정
(6/28)개발자를위한PLSQL,SQL튜닝,힌트
(6/28)실무예제로 배워보는 jQuery(개발자/디자이너를위한)
(6/28)자바웹(JSP,Spring,MyBatis,XPlatform)프로젝트과정
(7/13)C#,ASP.NET마스터

주말저녁(18:30~22:20) 개강
(6/28)JAVA,Network&WEB&Framework
(6/28)SQL기초에서실무까지

댓글 없음:

댓글 쓰기