'Daily/Prog'에 해당하는 글 107건

ORACLE dump import

Daily/Prog 2021. 7. 22. 00:14
반응형

 

초보 오라클러가 오라클 데이터를 덤프받아 import 하며 간만에 크게 삽질한 과정을 적어본다. (난 도대체 언제까지 초보일껀가?) impdp 과정에서 오류나는 tablespace 열심히 만들고, 그 외에 유독 눈에 띄는 오류들이 있었다.

 

ora-12899: value too large for column actual x maximum n

 

아니 똑같은 스키마에 덤프 떠서 고대로 넣는데 먼 소린고... 

 

무시하다가 나중에 데이터를 확인했는데 같은 테이블에서도 어떤 컬럼은 한글이 깨지고 어떤 컬럼은 안깨지고... Mysql 에서도 테이블 별로 인코딩 설정은 가능하지만, 컬럼 별로 깨지고 안깨진다? 오라클 초보자로서는 당최 이해할 수가 없었는데 검색을 조금 해보니 알 것 같았다. KO16MSWIN949 의 2바이트짜리 한글들이 AL32UTF8 의 3바이트 한글로 넘어오면서 컬럼값이 넘친 것이니 인코딩 문제는 맞다. 아니 오라클 깔면 기본으로 UTF8 쓰게 되어 있는데 굳이 바꿔 가지고 이렇게들 피곤하게 할까잉...

 

오라클에서 인코딩 관련 설정 2개 / 언어 관련 설정 2개를 찾았다.

 

SELECT name, value$
FROM sys.props$
WHERE name IN ('NLS_LANGUAGE','NLS_TERRITORY','NLS_CHARACTERSET','NLS_NCHAR_CHARACTERSET');

or

SELECT * 
FROM NLS_DATABASE_PARAMETERS 
WHERE PARAMETER IN ('NLS_LANGUAGE','NLS_TERRITORY','NLS_CHARACTERSET','NLS_NCHAR_CHARACTERSET');

--NLS_LANGUAGE AMERICAN
--NLS_TERRITORY AMERICA
--NLS_CHARACTERSET AL32UTF8
--NLS_NCHAR_CHARACTERSET AL16UTF16

 

NLS_CHARACTERSET : char / varchar 데이터타입에서 사용하는 문자셋

NLS_VCHAR_CHARACTERSET  : nchar / nvarchar 데이터타입에서 사용하는 문자셋

 

 

역시 덤프 받아온 운영DB 와 NLS_CHARACTERSET 이 달랐고, varchar 의 한글만 문제가 발생한 것이다. KO16MSWIN949 로 인코딩 변경이 필요했다.

 

 

SQL> update props$ set value$='KO16MSWIN949' where name='NLS_CHARACTERSET';
SQL> commit;
SQL> shutdown immediate;
SQL> startup;

 

인터넷에서 대충 검색 해보고 뙇! 역시 천재라고 잠시 생각했지만, update 하면서 인코딩 값에 오타가 들어갔었는지 습관적으로 커밋은 했는데 startup 에 실패했다. 그 일순간의 오타로 오라클을 재설치까지 했다.ㅋㅋ nomount 하고 어쩌구 저쩌구 하면 가능하다고는 하는데, 난 모르겠고 빨리 재설치를 빨리 하는 것이 더 이득인 상황. 어짜피 이미 깨진 한글 다시 넣으려면 테이블들 다 확인해서 drop 을 하던 truncate 를 하던 해야 할 상황이었는데, 재설치가 빠르지... 라는 타협을 하고서는 ./deinstall ㅋㅋ 역시 뭔 프로그램이던 삭제는 참 빨라. $ORACLE_HOME 이랑 oradata 디렉토리도 비워주고 재설치 고고.

 

이번엔 미리 NLS_CHARACTERSET 인코딩 설정하고, profile 에 NLS_LANG 도 맞춰주고... impdp 뙇!

 

ORA-39006: internal error
ORA-39065: unexpected master process exception in DISPATCH
ORA-00600: internal error code, arguments: [kokle_lob2lob13:input mismatch], [1], [], [], [], [], [], []
ORA-39097: Data Pump job encountered unexpected error -600

 

아씨... 이럼 완전 나가린데...

 

한참 삽질 끝에 구글신이 도와주긴 했는데 이해는 안간다. NLS_CHARACTERSET 랑 DB internal 캐릭터셋이 따로 노는겨? 왜 둘다 바꿔줘야 하는겨? ㅡ.ㅡ 테스트 해보니 아래 방법이 NLS_CHARACTERSET 까지 확실하게 바뀌니, 아래 방법을 추천하는 걸로...

 

SQL> shutdown immediate;
SQL> startup mount;
SQL> alter system enable restricted session;
SQL> alter system set job_queue_processes=0;
SQL> alter database open;
SQL> alter database character set internal_use KO16MSWIN949;
SQL> shutdown immediate;
SQL> startup;

 

alter database character set internal_use <- 요기가 포인트!

 

아무튼 긴~ 삽질끝에 덤프질 해결~

반응형

WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

트랙백  0 , 댓글  0개가 달렸습니다.
secret

Locale not recognized

Daily/Prog 2021. 6. 29. 00:38
반응형

 

Mac 에서 SQL Development 실행시 커넥션 테스트하면서 발생한 에러.

Status : Failure - Test filed : Locale not recognized

 

Locale 을 지정해주자...

 

$ vi /Users/xxx/Downloads/SQLDeveloper.app/Contents/Resources/sqldeveloper/sqldeveloper/bin/sqldeveloper.conf
...
AddVMOption -Duser.language=ko
AddVMOption -Duser.country=KR

 

와 씨 드럽게 길다. 설정 같은데서 locale 선택하는 항목 하나 만들어 놓으면 될 것을 이렇게 거지같이 만들어 놨네...

반응형

WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

트랙백  0 , 댓글  0개가 달렸습니다.
secret
반응형

Tomcat 은 훌륭한 WAS 이다. 그대로 갖다 쓰면 되는 것을 이짓저짓 해가면서 에러를 발생시킨다. 오늘도 어김없이 뻘짓을 하다가 에러를 발생시킨다. Tomcat7 과 Tomcat8 을 동시에 올리는 과정에서 에러가 발생했다. 각각 그대로 썼다면 문제가 없었겠지만 멀티 인스턴스를 생성하는 과정에서 Tomcat7 기반에다가 Tomcat8 설정을 그대로 가져왔더니 에러가 발생했다. 왜 이런 짓을 했는지는 비밀이다.ㅋㅋ

 

28-Jun-2021 14:01:19.636 경고 [main] org.apache.catalina.startup.ClassLoaderFactory.validateFile Problem with directory [/app/tomcat7-jdk1.6/bin/"/app/instances/instance6/lib"], exists: [false], isDirectory: [false], canRead: [false]
28-Jun-2021 14:01:19.637 경고 [main] org.apache.catalina.startup.ClassLoaderFactory.validateFile Problem with directory [/app/tomcat7-jdk1.6/bin/"/app/instances/instance6/lib/*.jar"], exists: [false], isDirectory: [false], canRead: [false]
28-Jun-2021 14:01:19.637 경고 [main] org.apache.catalina.startup.ClassLoaderFactory.validateFile Problem with directory [/app/tomcat7-jdk1.6/bin/"/app/tomcat7-jdk1.6/lib"], exists: [false], isDirectory: [false], canRead: [false]
28-Jun-2021 14:01:19.638 경고 [main] org.apache.catalina.startup.ClassLoaderFactory.validateFile Problem with directory [/app/tomcat7-jdk1.6/bin/"/app/tomcat7-jdk1.6/lib/*.jar"], exists: [false], isDirectory: [false], canRead: [false]

 

음... 한글 로그가 참 눈에 거슬린다. 결론부터 얘기하자면 설정에 따옴표(") 가 붙은게 문제이다. tomcat8 에는 로더 간에 따옴표(")로 구분을 하였고, tomcat7 에는 따옴표가 없는데... 그 때문이다. 

 

(Tomcat8, conf/catalina.properties)
common.loader="${catalina.base}/lib","${catalina.base}/lib/*.jar","${catalina.home}/lib","${catalina.home}/lib/*.jar"

(Tomcat7, conf/catalina.properties)
common.loader=${catalina.base}/lib,${catalina.base}/lib/*.jar,${catalina.home}/lib,${catalina.home}/lib/*.jar

 

필요에 맞게 따옴표(") 를 넣거나 빼면 된다. 

 

기본 그대로 잘 쓰면 에러 안난다.ㅋ

반응형

WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

트랙백  0 , 댓글  0개가 달렸습니다.
secret

파일 mime-type 체크

Daily/Prog 2020. 5. 14. 18:26
반응형



얼마전 s3 에 업로드된 상당량의 이미지 mime-type 이 octet-stream 으로 올라가 있는 것을 확인했다. 또 그 파일들은 모두 확장자가 대문자인 것도 확인했다.


String mimeType = Files.probeContentType(path);


위 부분에서 대문자 확장자 파일들에 대한 처리가 정상적으로 되지 않아 null 을 반환한 것이 문제였다. 확장자로 mimeType 을 얻어오는 과정에서 발생할 예외들을 미리 예상하여 처리할 수도 있지만, 업로드시 파일에서 직접 mimeType 을 확인할 수도 있다. Apache 의  Tika 라이브러리를 사용해 봤다.


compile group: 'org.apache.tika', name: 'tika-core', version: '1.24'

...

String mimeType = new Tika().detect(inputStream);


tika-parsers 는 용량이 어마무시하다. parser 가 꼭 필요한게 아니라면 core 만 받자.


그리고 기존에 s3 에 octet-stream 타입으로 업로드된 이미지 파일들은 aws-cli 로 배치처리 하여 image/jpeg 으로 변경하였다.


> aws s3 cp \

 s3://bucket/path \

 s3://bucket/path \

 --exclude "*" \

 --include "*.JPG" \

 --acl public-read \

 --no-guess-mime-type \

 --content-type "image/jpeg" \

 --metadata-directive "REPLACE" \

 --recursive

 --profile myprofile


아쉽게도 include 에 지정한 패턴이 대소문자를 구분하지 못해서 시간이 꽤 걸렸음...



반응형

WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

트랙백  0 , 댓글  0개가 달렸습니다.
secret
반응형

올해 초부터인가... AppStore 다운로드 속도가 말도 안되게 느려진 것을 알게 됐다. 이러다 말겠지 하다가, 급하게 대용량 앱 다운로드를 해야 하는 상황이 닥쳐서 원인 찾기에 나서 봤다. (여기서 속도가 느리다는 정도는 1시간이 지나도록 다운로드가 아주 미세하게 진행되는 정도를 말함.)



1. WiFi 속도


연결된 wifi 속도는 짱짱하다. 단지 AppStore 다운로드만 느린걸로 봐서 인터넷 속도는 문제가 없다.



2. AppStore 문제? 


지금 다시 찾아보려니 해당 글을 찾지는 못했지만 그 글은 앱스토어 다운로드 속도가 개느려졌다는 문의였고, 애플의 답변은 같은 문의가 엄청 많지만 스토어 측의 문제는 아니라고 했다. 나 뿐만이 아닌 많은 사람들이 겪는 문제라...



3. 인터넷의 다양한 해결법?


인터넷에는 앱스토어 다운로드 속도 저하 등의 검색어로 검색을 해보면 수많은 해결법이 많이 나와 있다. 하지만 글만 봐도 따라해 보고 싶은 내용은 거의 없다. 용량 확보, 메모리 확보, 캐시 삭제, 기타 등등 흔한 잡소리...



4. WiFi 에서만 다운로드가 느림?


WiFi 에서 다운로드가 느리다면 LTE 로 테스트 해보자. 대용량은 LTE 다운로드가 안될 수 있으니 저용량 앱을 하나 선택해서 테스트. LTE 에서도 다운로드가 느리다면 AppStore 저장소 쪽의 문제라고 볼 수 있다. 하지만 LTE 에서는 다운로드가 빠르다면 당연히 WiFi 의 문제겠지. 다른 서비스는 인터넷 속도가 빠른데 AppStore 가 느리다면 DNS 를 바꿔볼 수 있겠지.



 DNS 변경으로 해결 


인터넷 속도는 좋고 AppStore 문제는 아니라 하니, 연결된 wifi 의  DNS 설정 을 바꿔보는 것을 한번 시도해 봤다. 다행히 수동 설정이 가능했고, 기존 DNS 를 삭제하고 구글 DNS  8.8.8.8  로 입력하고 저장하는 순간, 멈춰있던 App 다운로드 속도가 폭발했다. ㅋㅋㅋ


찾아보니 자동 설정되는 DNS 인 210.220.163.82 / 219.250.36.130 은 SK DNS 라고 한다.  SK DNS  가 잘못했네.ㅋㅋ






그럴일 있을까마는 구글 DNS 문제시 다시 DNS 자동 설정으로 되돌리거나 타 ISP DNS 로 수정.


  • KT1 - 168.126.63.1
  • KT2 - 168.126.63.2

  • SKB1 - 210.220.163.82
  • SKB2 - 219.250.36.130

  • LGU1 - 164.124.101.2
  • LGU2 - 203.248.252.2

  • Google1 - 8.8.8.8
  • Google2 - 8.8.4.4



반응형

WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

트랙백  0 , 댓글  12개가 달렸습니다.
  1. 이넘의 sk 바꿔버릴까 하다 보고 해결했네요 sk인터넷 넷플릭스부터 앱스토어까지 정말 짜증나게 하는군요
  2. 보름아빠 2020.05.14 22:11
    와 이거 때문에 장기간 고민해왔는데 감사합니다. 저도 SKB인데 이런 문제가 있었을 줄이야 ... 정말 감사합니다
  3. 유성종 2020.06.26 21:36
    너무 감사합니다! 한번에 해결이 되고 간단하네요!
  4. 이렇게한뒤에 저희집 와이파이가 연결이 안됍니다 이유 아시는지요
    • 이렇게... 가 구글 dns 로 변경을 하셨다는 말인거 같은데... 이것은 와이파이 연결과는 상관이 없습니다. 우선적으로 와이파이를 연결 후에 dns 를 sk 나 구글꺼를 사용하는 설정이기 때문에...
  5. 자동으로 바꿧더니 기존 sk DNS 와 도메인이 사라졌습니다 다시 써놓고 자동으로 바꾸면 없어지더군요
  6. 전철호 2020.09.17 22:44
    DNS 설정 하니 해결이 되네요. 정말 감사합니다
  7. 아이폰12프로 2020.11.24 16:01
    정말 고맙습니다. 이렇게 쉽게 해결되는 문제였는데 kt에 전화하고 난리를 쳤네요..ㅋㅋ
secret