지원되지 않는 문자집합 에러 원인과 해결방법 19C 업그레이드를 하고 나서 기존 서버에서 사용하던 툴을 실행하려고 했는데 orai18n.jar 가 필요하다는 에러가 나왔다. 이 에러 원인은 DB에 세팅된 인코딩 방식이 JDBC에서 지원하지 않는 인코딩 방식이라 에러가 나는 것이다. 즉 이 에러는 JDBC에서 지원하는 인코딩셋을 사용하냐 안하냐에 따라서 에러가 발생하는 것이다. ojdbc8.jar를 사용했고 DB인코딩 세팅이 K016MSWIN949인데 이건 JDBC에서 지원하지 않는 인코딩 방식이라 에러가 발생한다. 다른 서버에서는 UTF8AL32UTF8 이여서 에러가 발생하지 않는다. 이는 ojdbc8.jar에서 지원하는 인코딩 이여서 그런것이다. 에러 해결방법은 단순하게 orai18n.jar를 추가하면..
T2 인스턴스의 CPU크레딧이란 T2 인스턴스는 기본으로 주어지는 CPU성능과 더불어 여러가지 성능을 버스트 해서 순간적으로 성능이 확장된다. 다만 성능을 버스트 할때 CPU크레딧이 쌓이는데 T2 유형마다 주어진 CPU크레딧 수량이 있는데 그 수량을 다 사용되면 성능이 버스트 되지 않는다. [인스턴스 유형마다 주어지는 크레딧양] CPU크레딧은 시간마다 주어지는데 이것은 누적이 되고 누적가능한 CPU크레딧 수량을 넘어서면 더이상 누적 되지 않는다. 누적된 CPU크레딧은 인스턴스를 중지 시키면 초기화 된다. 만약 주어진 크레딧이 상관없이 성능을 계속해서 버스트 하고 싶다면 크레딧 사양을 무제한(Unlimited) 모드로 바꿔야 한다. 무제한 모드로 변경하는 방법은 EC2 인스턴스에서 수정화면에서 할 수 있다..
RDS Oralce은 그냥 쿼리문으로 session을 kill 하려고 했을 때 ORA-01031 권한 문제로 할 수 없다. RDS는 그래서 PL/SQL문으로 session kill을 해야 한다. [PL/SQL 스크립트] begin rdsadmin.rdsadmin_util.kill( sid => sid, serial => serial_number); end; [사용] 상태가 KILLED면 이건 아직 완전히 세션이 Kill된것이 아니므로 10분정도 기다려야 한다. 만약에 즉시 kill 하고 싶다면 serial 밑에 method => 'IMMEDIATE' 를 추가 하면 된다. docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/Appendix.Oracle.Common..
AWS 이용 중 AWS에 문의를 해야 할 때 문의 하는 방법은 간단하다. 콘솔 오른쪽 위세 지원 화살표를 클릭하고 지원센터로 들어가서 하면 된다. [지원센터 화면] 지원센터 화면에서 Create case 주황색 박스 버튼을 클릭하여 문의 할수가 있는데 문제는 Support Plan이 Basic이면 문의 할수가 없다. 한단계 이상 업그레이드를 해야 지원이 가능하다. 업그레이드 하는 방법은 왼쪽 메뉴 Support plan 오른쪽 파란색 글씨 change버튼을 클릭하여 넘어간 화면에서 업그레이드를 할 수 있다. 난 이미 Developer로 change해서 New Plan에 Developer이 없다. 가격은 Developer은 월 $29 Business 월 $100 Enterprise 월 $15000 기본적인..
EC2 인스턴스가 문제가 생길 때 다른 인스턴스로 데이터를 옮기는 방법은 인스턴스의 이미지를 생성하고 이 이미지로 똑같은 인스턴스를 생성하는 것이다. 인스턴스를 똑같이 하나 만들려면 인스턴스를 생성할 수 있는 정보와 그 인스턴스 안에 들어있던 데이터 2개가 있어야 한다. 이미지는 시스템 환경구성 이고, 데이터가 있는 저장공간을 볼륨이라 한다. 볼륨을 복사 하는걸 스냅샷 이라 한다. 먼저 아래는 이미지 생성방법이다. 이미지 생성과정 1. 이미지 생성할 인스턴스를 종료 2. 연결된 볼륨의 스냅샷을 가져옴 3. AMI를 생성하고 등록한 다음 인스턴스를 재부팅 만약 재부팅 안함에 체크를 함녀 이미지 파일의 무결성을 보장할 수 없다. 이미지 생성 버튼을 클릭하면 아래와 같이 이미지가 생성된다. 만들어지는 상태는 ..
RDS DB인스턴스 엔진 Oracle 11g을 사용하고 있었는데 11g가 2020년 10월 31일에 지원종료가 되기 때문에 업그레이드를 해야 했다. 19c는 2026년 3월 31일까지 지원을 하고 나머지 12c나 18c는 2022년까지 밖에 지원이 안된다. 그래서 가장 지원이 오랫동안 되는 19c로 업그레이드 하는것이 좋다. 한번 업그레이드 하면 다시 다운그레이드 못하기 때문에 전 엔진버전으로 복구를 하려면 스냅샷으로 복원을 하는 수밖에 없다. 기존 11g에서 JAVA 서비스를 돌리고 있었다면 19c용 JDBC를 다운받아 교체해야 한다. 아래 링크에서 다운받으면 된다. www.oracle.com/database/technologies/appdev/jdbc-downloads.html 19c 업그레이드 방법..
RDS를 백업하기 위해서 스냅샷을 생성하고 복구하기 위해 스냅샷을 복원한다. 이 과정에서 DB 인스턴스는 생성이 되며 DB 인스턴스 자체에서 백업을 하지 못한다. 스냅샷을 생성하는건 인스턴스의 사진을 찍는다는것이라고 생각하면 되고 스냅샷 복원은 사진에 있는 정보로 그대로 똑같은 DB 인스턴스를 생성한다고 보면된다. 스냅샷 백업은 자동백업과 수동백업이 있는데 자동백업은 인스턴스가 삭제되면 자동삭제되지만 수동백업은 인스턴스가 삭제되도 그대로 남아있다. 자동백업 세팅은 인스턴스 생성할때 백업메뉴에서 할 수 있으며, 보존기간은 최소 1일부터 최대 35일까지 세팅할 수 있다. 자동 스냅샷은 매일 생성되며 보존기간만큼 보관된다. 스냅샷을 이용한 RDS 백업방법과 복구방법 수동 백업은 RDS서비스의 스냅샷 메뉴에서 ..
Interrupted가 발생했다는 것은 먼가에 가로막혀 멈춰있는 상태를 뜻한다. 그러면 아래를 보고 에러원인을 파악해보자. 로그 java.lang.InterruptedException at java.lang.ProcessImpl.waitFor(Native Method) 코드 java.lang.Process process = Runtime.getRuntime().exec( 시스템명령어 ); int returnValue = process.waitFor(); Runtime.getRuntime().exec() 함수는 다른 프로세스에서 시스템명령어를 실행시키는 함수이다. 설명:Executes the specified string command in a separate process. 프로세스는 함수라고 생각하면 ..
운영(Prod)하고 있는 서버에는 대게 테스트 서버가 있다. 그러면 운영서버와 테스트서버의 DB의 스키마는 완전히 똑같을 것이다. 테스트(QA) 서버에서는 운영에 있는 데이터와 똑같이 해서 테스트 해보는게 가장 이상적인 방법인데 너무 불편할것이다. 왜냐하면 운영에 있는 테이블의 데이터들을 그대로 가져오는게 여간 귀찮은 작업일수밖에 없으니 말이다. 그런데 그 귀찮은 작업을 가장 쉽게 하는 방법으로 DB Link를 이용하는 방법이 있다. DB Link를 이용한 데이터 옮기는법. 1. 우선 테스트 -> 운영 으로 DB Link를 생성한다. (방법을 모르면 아래 링크 참조) https://deftkang.tistory.com/110?category=1089009 [Oracle] DB Link설정하는 방법과 오류..
Oracle 12c 에서 컬럼을 수정하였는데 아래 오류가 발생하였다. 이유는 12c 이상에서는 extended statistics 기능을 위해, 사용자가 생성하지 않은 컬럼도 DB엔진이 virtual column으로 지정하고 별도 생성하여 관리한다는 것이다. 컬럼수정 쿼리는 아래와 같다. ALTER TABLE EDI_SCRAPING_MNG MODIFY( TYPE VARCHAR2(6) ); 테이블 EDI_SCRAPING_MNG의 컬럼 TYPE을 수정하려는데 에러가 발생했다. 그래서 이 테이블의 virtual column이 무엇인지 조회했다. virtual_column 조회쿼리 SELECT OWNER, table_name, column_name, data_type, hidden_column, data_def..
컴퓨터를 개발용도로 사용하다 보면 불필요한 로그 파일이나 트레이스 파일이 쌓일때 주기적으로 지워줘야 할때가 생긴다. 그럴때 파일을 삭제하는 배치파일을 만들어 작업스케줄러에 등록하면 자동으로 파일을 삭제되게 할 수 있다. 우선 배치파일을 아에 모르면 아래 포스팅을 참조하라 https://deftkang.tistory.com/142 파일삭제하는 batch파일 명령어 FORFILES FORFILES /P 삭제할 파일 경로 /M 삭제할 파일 /D 며칠 지난거 삭제할 건지 /C 실제 삭제하는 명령어 사실 FORFILES는 단순히 파일을 어떤 명령어로 실행시키는 작업을 하는 것이다. 그 실행시키는 명령어는 /C 뒤에 정의되고 거기에 삭제하는 명령어를 써야 삭제가 된다. 사용예제 FORFILES /P D:\orada..
DELETE FROM 테이블명과 TRUNCATE TABLE 테이블명의 결과는 모든 데이터를 지운다는 점에서 똑같다. docs에서 Truncate 주의사항을 보면 rollback을 못한다고 한다. 이 뜻은 머냐면 데이터를 지우고나서 사용하던 할당된 저장공간까지 다 지운다는 것이다. 단순히 delete만 하면 데이터를 지우고 나서 할당된 공간은 그대로 남아 있고. rollback을 하여 다시 그 저장공간안에 데이터를 채울수 있다. 테이블에 있는 데이터를 모두 지울때는 Truncate를 사용하고 데이터를 몇개씩만 지우고 실수로 지웠을 때 rollback을 하고 싶을땐 delete를 이용하도록 하자. 참고사이트 http://www.gurubee.net/article/1455