-- 락이 걸려있는 테이블을 조회한다 --

SELECT vo.session_id,do.object_name, do.owner, do.object_type,do.owner, 
vo.xidusn, vo.locked_mode 
FROM v$locked_object vo , dba_objects do 
WHERE vo.object_id = do.object_id
;

 

-- 락이 걸려있는 테이블이 몇개인지 확인한다 --

SELECT count(*)
FROM v$locked_object vo , dba_objects do 
WHERE vo.object_id = do.object_id

select a.sid, a.serial#
from v$session a, v$lock b, dba_objects c
where a.sid=b.sid and
b.id1=c.object_id and
b.type='TM' 
;

 

-- 해당되는 테이블 락을 해제시킨다 --

alter system kill session '10,23779';
alter system kill session '14,22484';
commit;

1. 디비링크 생성

create [public] database link 링크이름

connect to 원격디비 아이디 identified by 원격디비 비밀번호

using ‘TNS명’

public : public 을 사용하면 공용 디비링크가 생성된다.

사용하지 않으면 생성한 사용자만 사용이 가능하다.

* NLS_CHARACTER_SET이 동일하지 않으면 한글이 깨져서 보인다.

예) create public database link linkWebHR

connect to ksprg identified by pw1234

using ‘WEB_HR’

2. 디비링크 사용

select * from table@링크이름

예) select * from table@linkWebHR

3. 디비링크 삭제

drop public database link 생성된 링크명칭

* 디비링크 현황

select * from all_db_links;

요즘은 대부분 스프링 프레임워크를 사용하지만 예전에 작업된 싸이트나 아직 스트럿츠를 사용하는 곳도 간혹 있다.

간단하게 스트럿츠에서 제공하는 태그에 대해 정리해본다.

 

 

1. if , else , elseif

- 기본적 if구문

<s:if test="1==1">1=1이 참일 경우 나타남</s:if>

 

2. append

- 여러 리스트를 하나의 iterator로 묶어줌 (첫번째 리스트에 두번째리스트가 합쳐진 형태)

<s:append id = "totalList">

<s:param value="%{list1}"/>

<s:param value="%{list2}"/>

</s:append>

<s:iterator value="%{totalList}">

<s:property/>

</s:iterator>

 

3. generator

- val 속성 값으로 iterator를 생성

cf) separator - 구분자

count - 최대요소수

<s:generator separator="," val="%{'aaa,bbb,cc,dd'} count="3">

<s:iterator>

<s:property/>

</s:iterator>

</s:generator>

cf) 결과.. aaa,bbb,ccc

 

4. merge

- 여러리스트를 하나의 iterator로 묶음 (첫번째리스트의 첫번째아이템, 두번째리스트 의 두번째아이템, 다시 첫번째리스트의 두번째 아이템 순서로 합쳐짐 )

<s:merge id= "totalList">

<s:param value="%{lsit1}"/>

<s:param value="%{list2}"/>

</s:merage>

<s:iterator value="%{totalList}">

<s:property />

</s:iterator>

 

5. sort

- 태그속성으로 설정되는 comparator를 사용하여 목록을 정렬하는 태그

예) list 에 {b,a,c}를 저장하고 comparator를 사용 정열하면 {a,b,c}가 됨

<s:sort comparator="myComparator" source ="list">

<s:iterator>

<s:property/>

</s:itertator>

</s:sort>

 

6. subset

- iterator의 서브셋을 취하는 태그

cf) count - subset iterater에 담을 요소의 수

start - 시작 인덱스값(0부터)

decider - 메소드사용시 메소드 명

<s:subset source="list" count="3" start ="3">

<s:iterator>

<s:property/>

</s:iterator>

</s:subset>

 

7. a

- HTML 의 <a href =""/>태그

<s:url id="test" action="link"></s:url>

<s:a href="${test}">링크</s:a>

 

8. action

- jsp에서 직접 액션을 호출

cf) executeResult-리절트

실행여부

<s:action name="action1" executeResult="true"/>

 

9. bean

- 자바빈 규정에 따라 클래스를 인스턴스화

<s:bean name="com.bean.User" id="user">

<s:param name="first" value="'a'"/>

<s:param name="last" value="'b'"/>

first : <s:property value="first"/>

last: <s:property value="last"/>

</s:bean>

<br/>

first :<s:property value="#user.first"/>

last:<s:property value="#user.last"/>

 

10. date

- date형식 가져오기

<s:date name="currDate" format="yyyy-MM-dd hh:mm:ss"/>

 

11. debug

- debug하이퍼 링크를 출력링크를 클릭하면 밸류스택의 내용과 스택 컨텍스트 내용을 출력

<s:debug/>

 

12. i18n

- 리소스 번들을 얻고 그 내용을 벨류 스택에 저장한다(미리 리소스 번들에 "abc= 가나다" 라고 만들어 둠)- 국제화

<s:i18n name="example.i18n.myBundle">

리소스 번들예제 <s:text name= "abc"/>

</s:i18n>

 

13. include

- jsp include 역활

<s:include value="includeTag1.jsp">

<s:param name="a" value="'abc'"/>

</s:indclude>

 

14. param

- 파리미터로 사용

<s:param name="a" value="'a'"/>

<s:param name="a">a</s:param>

 

15. push

- 밸류스택 안에 값을 저장한다

<s:push value= "user">

first:<s:property value="first"/>

se<s:property value="se"/>

</s:push>

 

16. set

- 특정 스코프의 변수에 값을 할당

<s:set name="a" value="user.first" scope="session"/>

<s:porperty value="#a"/>

 

17. text

- i18n 텍스트 메시지를 렌더링

i18n예 참고

url

url생성

param 태그사용가능

<s:url id="a" value="/jsp/a.jsp">

<s:param name="id" value="'a23'"/>

</s:url>

 

18. propery

- 프로퍼티값을 출력

cf) value값을 지정안하면 밸류스택의 맨 위의 값을 취함

<s:property value="a"/><s:property />

서버에 수정 권한이 없어 TNS설정을 하지 못할 경우 DB에서 바로 DB링크를 사용하는 방법을 사용한다.

 

create database link 링크이름
       connect to 원격디비 아이디 identified by 원격디비 비밀번호
       using
      '(DESCRIPTION=
             (ADDRESS=
             (PROTOCOL=TCP)
             (HOST=원격디비아이피)
             (PORT=1521))
             (CONNECT_DATA=
                  (SID=orcl)
 

             ) 

       )'
 

DB링크와 방식은 같지만 TNS설정이 없기 때문에 바로 DB링크를 걸때 TNS정보를 입력해 준다.

오라클에서 데이터를 뽑아올 때 if문과 같이 조건에 따라 값을 정할 수 있는 함수가 DECODE 함수이다. 

 

적용 쿼리)

decode(검색컬럼, 조건1, 결과값1,..., 기본값 )

  

    

예) 

select   

      count(decode(to_char(hiredate,'mm'), '01', 1)) "1월",
      count(decode(to_char(hiredate,'mm'), '02', 1)) "2월",
      count(decode(to_char(hiredate,'mm'), '03', 1)) "3월",
      count(decode(to_char(hiredate,'mm'), '04', 1)) "4월",
      count(decode(to_char(hiredate,'mm'), '05', 1)) "5월",
      count(decode(to_char(hiredate,'mm'), '06', 1)) "6월",
      count(decode(to_char(hiredate,'mm'), '07', 1)) "7월",
      count(decode(to_char(hiredate,'mm'), '08', 1)) "8월",
      count(decode(to_char(hiredate,'mm'), '09', 1)) "9월",
      count(decode(to_char(hiredate,'mm'), '10', 1)) "10월",
      count(decode(to_char(hiredate,'mm'), '11', 1)) "11월",
      count(decode(to_char(hiredate,'mm'), '12', 1)) "12월",
      count(*) "전체"
from  

      emp
where  

      to_char(hiredate,'mm') >= '01'  

      and to_char(hiredate,'mm') <= '12';  

처음부터 대소문자를 구분하지 않고 검색할 수 있는 검색기능을 만들기 위해 오라클의 UPPER기능을 통해 검색어의 대소문자

구분을 제거 하여 검색하도록 하였다.

오픈전 작업 시 테스트 했을 때는 문제 없이 필터링 되어 넘어갔는데 오픈 후에 다시 검색기능을 테스트 해 보니 대문자로 검색 시

대문자만 검색되고 소문자로 검색 시 소문자만 검색되는 문제가 발생 하였다.

그래서 원인 분석에 들어갔고 혹시나 다음과 같이 작성했던 쿼리문이 문제가 되었나 싶어

 

=>  UPPER(A.SUBJECT) LIKE UPPER('%'||#search_key#||'%')

 

다음과 같이 수정하였다. 

 

=>  UPPER(A.SUBJECT) LIKE '%'||UPPER(#search_key#)||'%'

 

그 결과 이상없이 대소문자를 필터링 하여 검색이 되었다. 하지만 여기서 예상치 못했던 또 다른 문제가 발생하였다.

검색 결과 화면에 보여질 때 필터링 단어의 스타일을 바꿔주는 부분에서 대문자로 검색 시 대문자로 검색된 문자만 변경되고

소문자로 검색 시 소문자로 검색된 문자만 변경되는 현상이다.

 

대문자로 검색하든 소문자로 검색하든 스타일이 적용 되어야 한다는게 맞기 때문에 원인 분석 후 DB에서 조회해온 제목과 내용을

replaceAll를 통해 스타일을 적용해 주는 부분에서 대소문자를 구분하여 스타일을 적용해 준다고 판단하여 대소문자 구분없이

치환해 주는 방법을 구글링 해 보았다.

 

치환할 문자 앞부분에 (?i)를 붙여 주면 대소문자 구분없이 치환해 준다는 것이다.

 

적용 방법은 다음과 같다.

=>  replaceAll("(?i)"+board_search_code, "<b>"+board_search_code+"</b>") 

Oracle JDBC 드라이버는 메이븐 센트럴 레파지토리에 없다. 그래서 따로 레파지토리를 추가해 줘야 하는데

검색을 해보니 예전에는 오라클에서 제공하는 메이븐 레파지토리(http://download.oracle.com/maven)가 있었는데 

요즘 오라클 사이트가 전체적으로 삐꾸가 되서 이제 잘 되지 않는것 같다.



다음은 JDBC 드라이버가 오라클 사이트에 올라오는 최신 버전은 아니지만 그래도 거의 준 최신 버전을 받을수 있는 레파지토리이다.

http://maven.jahia.org/maven2

pom.xml 파일 repositories 에 요걸 추가하고

1
2
3
4
5
<repository>
<id>oracle</id>
<name>ORACLE JDBC Repository</name>
</repository>



dependencies 에 요걸 추가해 주면 된다.

1
2
3
4
5
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.1.0.7.0</version>
</dependency>

ojdbc5 가 필요한 사람은 ojdbc6 대신에 ojdbc5 로 바꿔서 적어주면 됨.



참고 : ojdbc6은 Oracle 11g부터 사용가능하다

* 예시 *

<select id="selectbox" name="selectbox">

     <option value="01" selected>첫번째</option>
     <option value="02" >두번째</option>
<option value="03" >세번째</option>
</select>

1. 원하는 데이터에 해당하는 option 선택 하기
$("#selectbox > option[value=02]").attr("selected", "ture");
2. 선택된 select태그의 option 값 가져오기
$("#selectbox option:selected").val();

추가 : $('input[name=radUserId]:checked').val()


Window >> Preferences >> Java >> Code Style >> Code Templates >> Comments


Files (*.java, *.jsp 등, 파일 맨 위에 생성되는 주석 설정)

 

/**

* <pre>

* 1. 프로젝트명 : ${project_name}

* 2. 패키지명(또는 디렉토리 경로) : ${package_name}

* 3. 파일명 : ${file_name}

* 4. 작성일 : ${date} ${time}

* 5. 작성자 : ${user}

* 6. 설명 :

* </pre>

*/


 

Types (클래스명 바로 위에 생성되는 주석 설정)

 

/**

* <pre>

* 1. 패키지명 : ${package_name}

* 2. 타입명 : ${file_name}

* 3. 작성일 : ${date} ${time}

* 4. 작성자 : ${user}

* 5. 설명 :

* </pre>

* ${tags}

*/


 

Methods (메소드명 바로 위에 생성되는 주석 설정)

생성자나 오버라이드되는 메소드, 또는 getter/setter는 별도 설정

 

/**

* <pre>

* 1. 메소드명 : ${enclosing_method}

* 2. 작성일 : ${date} ${time}

* 3. 작성자 : ${user}

* 4. 설명 :

* </pre>

* ${tags}

*/

 

 



* 자주 쓰이는 설정(예, ${date})

date : Current date (현재 날짜)

time : Current time (현재 시간)

user : User name (사용자 이름)

enclosing_type :The type enclosing the method (선택된 메소드의 타입)

file_name : Name of the enclosing compilation (선택된 파일 이름)

package_name : Name of the enclosing package (선택된 패키지 이름)

project_name : Name of the enclosing project (선택된 프로젝트 이름)

tags : Generated Javadoc tags (@param, @return...) (Javedoc 태그 생성)



메소드나 클래스 바로 위에 주석(/**) 시작 입력하고 엔터 누르면 자동으로 위에서 설정한 주석 템플릿이 생성된다.

참고로 주석입력 단축키는 ALT + SHIFT + J 이다.


<dependency>

      <groupId>servlets.com</groupId>

      <artifactId>cos</artifactId>

      <version>05Nov2002</version>

</dependency>

+ Recent posts