오라클 계정에서
sqlplus "/as sysdba" 로 접속(dba관리자 모드면 확인 가능)
select name from v$database;
으로 확인
Posted by 오달봉
,


아놔 진작 이 방법을 쓸껄 ㅋㅋㅋ

먼저 select name, value$ from SYS.props$; 쿼리를 날려 캐릭터 셋을 확인 한다.
 
아니면
SELECT
(SELECT VALUE FROM nls_database_parameters WHERE PARAMETER = 'NLS_LANGUAGE') || '_' ||
(SELECT VALUE FROM nls_database_parameters WHERE PARAMETER = 'NLS_TERRITORY') || '.' ||
(SELECT VALUE FROM nls_database_parameters WHERE PARAMETER = 'NLS_CHARACTERSET')
FROM DUAL;
이렇게 하면 확실하게 캐릭터 샛을 확인 할 수 있다.

NLS_CHARACTERSET이 KO16KSC5601 아니면 한글이 깨질 가능성이 크다.

관리자 모드(토드를 접속해도 무관하나 나는 DB서버 오라클 계정에서 sqlplus "/as sysdba" 로 접속)

update sys.props$ set value$='AMERICAN' where name='NLS_LANGUAGE';
update sys.props$ set value$='AMERICA' where name='NLS_TERRITORY';
update sys.props$ set value$='KO16KSC5601' where name='NLS_CHARACTERSET';
update sys.props$ set value$='AL16UTF16' where name='NLS_NCHAR_CHARACTERSET';

업데이트 후 오라클 재시작했다.

p.s was계정 쪽 .bash_profile에 굳이 nls_lang을 설정할 필요는 없다라~~~

Posted by 오달봉
,

1. %CATALINA_HOME%/conf/server.xml에 "GlobalNamingResources"속성에 다음과 같이 추가
<ResourceParams name="HCOP">
      <parameter>
        <name>validationQuery</name>
        <value>select 1 from dual</value>
      </parameter>
      <parameter>
        <name>maxWait</name>
        <value>10000</value>
      </parameter>
      <parameter>
        <name>maxActive</name>
        <value>40</value>
      </parameter>
      <parameter>
        <name>password</name>
        <value>dasancop</value>
      </parameter>
      <parameter>
        <name>url</name>
        <value>jdbc:oracle:thin:@123.212.190.243:1521:ora10g</value>
      </parameter>
      <parameter>
        <name>driverClassName</name>
        <value>oracle.jdbc.pool.OracleDataSource</value>
      </parameter>
      <parameter>
        <name>maxIdle</name>
        <value>20</value>
      </parameter>
      <parameter>
        <name>username</name>
        <value>dasancop</value>
      </parameter>
    </ResourceParams>

2.  %CATALINA_HOME%/conf/Catalina/localhost에 'context명'.xml에 유사하게 설정
<?xml version='1.0' encoding='utf-8'?>
<Context crossContext="true" displayName="HANDY CoP Web Application" docBase="hcop" path="/hcop" workDir="work/Standalone/localhost/hcop">
  <Logger className="org.apache.catalina.logger.FileLogger" prefix="localhost_hcop_log." suffix=".txt" timestamp="true"/>
  <ResourceLink global="HCOP" name="HCOP" type="oracle.jdbc.pool.OracleDataSource"/>
</Context>

3. Context에서 jndi를 설정하는 xml쪽에 다음과 같이 설정
 <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
  <property name="jndiName">
   <value>java:comp/env/HCOP</value>
  </property>
 </bean>
Posted by 오달봉
,

1. 오라클계정 접속
su - oracle

2. 리스너 stop
lsnrctl stop

3. sqlplus로 관리자모드 접속
sqlplus "/as sysdba"

4. 오라클 중단
shutdown immediate
(normal, immediate, abort가 있음)

5. 오라클 시작
startup

6. 리스너 재시작
lsnrctl start

끝......
Posted by 오달봉
,

find ./ -name '*.*' -exec grep 'customDecoder' {} \; -print
Posted by 오달봉
,

 

예를 들어 update "테이블명" set e_mail = 'xxx@xxx.com' where절 없이 요따구로 업데이트 쳐서

테이블 전체가 업데이트 쳐지는 충격과 공포의 상태가 올 수 있다.

친절히도 오라클은 이걸 복구할 수 있는 기능이 있다.

먼저 테이블을 백업 후 delete from "테이블명"으로 해당 테이블의 데이터를 지운 후, 

insert into "테이블명" select * from "테이블명" as of timestamp(SYSTIMESTAMP - INTERVAL '240'MINUTE)

여기서 중요한건  '240'MINUTE의 숫자는 분단위로 조작 할 수 있고,

240분이니 4시간전으로 돌리고자 한다는 것이다.

Posted by 오달봉
,

jstl로 <c:import>를 하려니 아래와 문제가 생겼다.

javax.servlet.ServletException: Unable to get RequestDispatcher for Context: "****" and URL: "/contentView.do?boardJspView=contentView%2fboardTotalList". Verify values and/or enable cross context access.

사수이신 황책임이 확인해준 결과 톰캣폴더 conf/Catalina/localhost폴더에
"context".xml에 크로스 컨택스트를 하지 않는 것이 문제였다.

<Context path="****" crossContext="false"></Context>

이런식으로 설정해 주면 된다.
Posted by 오달봉
,

스스로에게 생일 선물로 개발중인 DB테이블을 날리는 어마어마한 일을 저질렀다.

식겁했지만 결국 복구 했다.

오라클 10g이상에서만 가능

flashback table 테이블명 to before drop;

이러면 테이블은 복구 되는데 문젠 index가 깨져서 복구한다.

select object_name, original_name, operation, type, droptime, dropscn, can_undrop from user_recyclebin order by droptime desc;

이렇게 해서 깨진 인덱스를 찾던지 다른 방법을 이용해서 복구한다.
허나 BIN$F48pK4wvSMORjTMVbaj1ug==$0 이딴 식의 이름으로 복구 되는데

alter index "BIN$F48pK4wvSMORjTMVbaj1ug==$0" rename to 인덱스명

이런방법으로 이름을 바꾸면 된다.
Posted by 오달봉
,
1. 리눅스

다음같은 명령어를 catalina.sh에 넣는다.
JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=EUC-KR -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=6868"


2. Windows
다음같은 명령어를 catalina.bat에 넣는다.
set JAVA_OPTS=-Xmx512m -Xms512m -XX:MaxPermSize=256m -Xdebug -Xrunjdwp:transport=dt_socket,address=5353,server=y,suspend=n

이렇게 되면 JVM을 통해 리모드 디버그를 할 수 있다.
Posted by 오달봉
,