오라클 세션수 및 프로세서수 변경하기

※SESSIONS 기본값 = (11 × PROCESSES) + 5

SPFILE확인하기

변경하기

※Oracle 재시작인 필요함.

그외 유용한 쿼리

참고사이트: http://d.hatena.ne.jp/teraliso/20080526

Posted in Oracle | コメントは受け付けていません。

RDS에서 statspack 이용방법

1. sqlplus에 로그인
2. execute statspack.snap(i_snap_level => 7) 실행하여 시작지점을 설정(snapshot번호가 생성)
3. 시간이 흐른뒤 다시한번 execute statspack.snap(i_snap_level => 7) 실행하여 종료지점을 설정(snapshot번호가 생성)
4. snapshot 번호를 검색한다. select snap_id, snap_time from stats$snapshot order by 1;
5. exec RDSADMIN.RDS_RUN_SPREPORT(snapshot시작번호, snapshot종료번호);
6. RDS AWS Web Console의 log에서 *.lst 를 다운로드한다.

*.lst를 살펴보면 쿼리에 Hash Value가 있는데 보다 상세히 확인하려면 SQL> @$ORACLE_HOME/rdbms/admin/sprepsql.sql 를 실행한다.
그 후에 snap shot 개시와 종료번호를 각각 입력후 리포트이름을 입력(적당히)하면 상세 정보(실행계획)가 출력된다.

Posted in Oracle | コメントは受け付けていません。

JBoss 4.2.3 에서 org.jboss.mx.server.MBeanServerBuilderImpl 에러

JBoss4.2.3에서 Caused by: java.lang.ClassNotFoundException: org.jboss.mx.server.MBeanServerBuilderImpl 에러가 발생할때의 해결방법.
run.bat에 아래를 추가한다.

참고사이트: https://developer.jboss.org/wiki/JBossMBeansInJConsole

http://code.google.com/a/eclipselabs.org/p/jvmmonitor/issues/detail?id=60

https://developer.jboss.org/thread/52095

https://developer.jboss.org/message/5662

Posted in Java, JBoss | コメントは受け付けていません。

jvisualvm을 이용하여 remote서버 감시

(1) Dynamic전송설정(ssh)
Putty에서 -D11099포트를 추가하여 SOCKS프록시로써 이용한다.
※리모트쪽에 踏み台서버가 있는 경우.

(2) 감시할 Java프로세서가 있는 서버에서는 jstatd를 실행한다.
Java의 tools.jar과 같은 디렉토리에 tools.policy을 아래의 내용으로 작성한다.

실행할때는 아래와 같다.

확인할때는 아래와 같이 한다. (리모트에서도 확인가능)

(3) 당신의 작업PC에서 jvisualvm을 실행한다.
(4) 메뉴의 네트워크 설정에서 SOCKS프록시에 localhost:11099를 설정한다.
(5) jvisualvm에서 리모트 감시할 서버의 IP를 입력한다.
ssh Dynamic전송하고 있으므로 리모트 서버의 Private IP를 입력해도 무방하다.
포트는 jstatd에서 지정한 1234을 입력한다. (1099 RMI포트가 아닌 jstatd의 포트이다.)
(6) 추가후 조금 기다리면 java process 리스트가 표시될 것이다.

스레드나 샘플러를 확인하기 위해서는 jmx로 접속이 필요하므로 리모트에서 작동하는 Java프로세스의 JVM옵션에 아래를 추가해야 한다.

jstatd로는 JVM메모리와 CPU정보를 확인할 수 있고 jmx로는 스레드와 심플러정보를 확인할 수 있다.

참고사이트: http://www.herongyang.com/Java-Tools/jstat-jstatd-JVM-Remote-Monitoring-Server.html

http://stackoverflow.com/questions/9939883/can-not-start-jstatd-in-linux

http://www.fukabee.com/blog/2011/10/31_151716.php

Posted in Java | コメントは受け付けていません。

Java GC관련 조사

옵션리스트:
-XX:GCTimeRatio=99
-XX:MaxGCPauseMillis=
-Xmx
-XX:+PrintGCApplicationStoppedTime
-XX:PretenureSizeThreshold=n
-XX:MaxTenuringThreshold=
-XX:PromotedPadding=
-XX:+UseSerialGC
가장 심플한 컬렉터이며 싱글 프로세서 시스템에서 가장 효과적임.
오브젝트는 포인터 알고리즘을 사용한 포인터의 이동에 의해 tenured영역에 할당된다.
메이져 콜렉터는 tenured영역이 가득차면 시작된다.
-XX:+UseParallelGC
멀티스레드로 Young세대의 마이너 컬렉션을 실행하여 싱글스레드로 Old세대의 메이져 컬렉터를 실행한다.
-XX:+UseParallelOldGC (Java 7u4부터 디폴트적용)
마이너 컬렉션과 메이져 컬렉션에 멀티스레트를 이용한다.
-XX:+UseConcMarkSweepGC
-XX:+UseG1GC
Java 6에서 도입된 새로운 컬렉터.
프래그멘테이션으로 CMS를 괴롭히는 FullGC이벤트를 최소화하기위하여 반복발행하는 stop-the-world의 정지를 짧게하여 tenured영역을 압축한다.
커다란 오브젝트의 할당과 컬렉션은 G1에서는 매우 코스트가 들어가며 지금까지 대부분 최적화가 적용되지 않고 있다.
정지시간의 타겟 -XX:MaxGCPauseMillis= 에 대해 동작하며 기본값은 200ms이다.

어플리케이션과 GC의 동작을 이해하기위해서는 적어도 아래의 설정을 적용하여 JVM을 기동할 필요가 있다.
-verbose:gc
-Xloggc:
-XX:+PrintGCDetails
-XX:+PrintGCDateStamps
-XX:+PrintTenuringDistribution
-XX:+PrintGCApplicationConcurrentTime
-XX:+PrintGCApplicationStoppedTime

Eden은 대부분의 오브젝트가 가장 처음에 할당되는 영역이다.
survivor영역은 Eden영역의 컬렉션에서 살아남은 오브젝트의 일시보관장소이다.
Eden과 survivor영역은 young 또는 new라고도 불리어진다.
계속 존속하는 오브젝트는 최종적으로 tenured(종신) 영역으로 이동된다.
perm(영속)영역은 클래스나 static인 String등 실제로 영속(永続)하는게 당연한 오브젝트를 랜덤하게 갖는다.
Java 7에서는 intern()으로 리턴되는 String은 permgen에서 tenured으로 이동되어진다.
(Java 8부터는 사용되지 않음)
다른 상용 컬렉터(JRockit등)의 대부분은 각각 다른 perm영역을 사용하지 않고 tenured으로 이용될수도 있다.
마이너 컬렉션은 Eden영역이 가득차면 실행된다. new영역에 있는 모든 오브젝트가 필요에 따라 survivor영역이나 tenured영역에 복사된다.

참고사이트: http://www.infoq.com/jp/articles/Java_Garbage_Collection_Distilled

Posted in Java | コメントは受け付けていません。

Java POI 에서 xssf로 비밀번호 저장하기

참고사이트: http://www.quicklyjava.com/create-password-protected-excel-using-apache-poi/

Posted in Java | コメントは受け付けていません。

JBoss 4.2.3 포트를 일괄변경하기

JBoss 5.x에서는 VM옵션에 -Djboss.service.binding.set=ports-01 와 같이 추가하면 되었는데 JBoss 4.2.3에서는 약간 다르다.

/docs/examples/binding-manager/sample-bindings.xml 를 보면 알겠지만 여기에 미리 port-01과 같은 예약어가 정의되어 있다.
JBoss 4.2.3에서는 conf/jboss-service.xml 를 열어보면 아래와 같은 내용을 코멘트아웃되어 있을것이다.

단지 위부분을 해제하면 된다.

참고사이트

http://nitinbksc.wordpress.com/2009/07/24/setting-multiple-instances-for-jboss-4-2-3-ga/

Posted in JBoss | コメントは受け付けていません。

oracle dump

export

테이블 이름의 앞자리가 VPB_ 인 테이블만 덤프하기

테이블 이름의 앞자리가 VPB_ 인 테이블과 변경일이 과거 1개월이내의 테이블만 덤프하기

import

주의사항:
※import할 테이블은 미리 삭제할 필요가 있음.
※인덱스나 PK등은 import할때 자동생성됨.
※import하는 곳의 표영역은 덤프시의 표영역과 같은 장소에 import됨.
※표영역이 부족한 경우는 수동으로 확장해야함.

Posted in Oracle | コメントは受け付けていません。

WebView에서의 멀티뷰와 팝업

setJavaScriptCanOpenWindowsAutomatically와 setSupportMultipleWindows메소드가 있다.
둘의 차이점을 조사해본 결과 아래와 같음.

setJavaScript
CanOpenWindowsAutomatically
setSupportMultipleWindows target=”_blank”(태그) window.open(자바스크립트) 비고
true true 반응없음 OK onCreateWindow메소드가 호출됨
true false OK OK
false true 반응없음 OK onCreateWindow메소드가 호출됨
false false OK OK
단 Android2.3에서는 뒤로가기가 안됨

위에서 OK의 경우는 현재의 WebView에 새창의 내용이 덮어씌어지는 경우를 뜻한다.

이상의 결과를 보면 스스로 멀티탭을 구현하는 경우는 setSupportMultipleWindows(true)로 하여
WebChromeClient클래스의 onCreateWindow메소드를 오버라이드한다.
여기에서 멀티탭이 열리고 애니메이션등등을 구현하면 되겠다.

setJavaScriptCanOpenWindowsAutomatically의 내용은 애매함…

Posted in Android Tip | コメントは受け付けていません。

I/O wait 프로세스 감시

참고로 STAT의 의미는 아래와 같다.

R(Running) … TASK_RUNNING
실행가능상태.

S(Sleep) … TASK_INTERRUPTIBLE
인터럽트 가능한 대기 상태.
주로 복귀시간이 예측불가능한 장시간의 대기 상태를 나타냄.
(유져의 키보드 입력을 기다리는등)

D(Disk Sleep) … TASK_UNINTERRUPTIBLE
인터럽트 불가능한 대기 상태.
주로 단시간에 복귀하는 대기 상태를 나타냄.
(디스크의 입출력등)

T(Stopped) … TASK_STOPPED
서스펜드 시그널이 보내져 실행이 중단된 상태.
RESUME될때까지 스케쥴링 되지 않는다.

Z(Zombie) … TASK_ZOMBIE
좀비상태.
Child프로세스가 종료되었으나 Parent 프로세스에 의해 메모리가 해제되지 않은 상태.

참고사이트

http://goungoun.dip.jp/app/fswiki/wiki.cgi/devnotebook?page=Linux%A1%A2i%2Fo%C2%D4%A4%C1%A4%B7%A4%C6%A4%A4%A4%EB%A5%D7%A5%ED%A5%BB%A5%B9%A4%F2%B8%AB%B6%CB%A4%E1%A4%EB

http://d.hatena.ne.jp/yohei-a/20100119/1263874921

Posted in Linux | コメントは受け付けていません。