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
Oracle 10g 부터 데이터 백업과 복원을 위해 기존엔 exp/imp 툴이 있었는데 expdp/impdp 툴이 제공됐다. 11g 부터는 exp/imp 툴에 대한 사용 지원은 되지 않는다고 하는 데 사용은 할 수 있다. exp/imp와 expdp/impdp 의 가장 큰 차이는 백업한 파일을 덤프 파일이라고 하는데 이 덤프 파일을 exp/imp 툴은 클라이언트에 저장하고 expdp/impdp는 서버에 저장한다. 그리고 exp/imp는 오라클 버전을 설정하여 덤프를 뜨지 못하고 expdp/impdp는 덤프 할 때 오라클 버전을 설정할 수 있다. 만약에 오라클 11g클라이언트에서 exp를 이용해 덤프를 했을 경우 무조건 11g로만 덤프가 떠지고 expdp를 이용하면 10g 버전으로도 덤프가 가능하다는 것이다..
배치파일(*.bat)이란 윈도우 스크립트이고 cmd창에서 실행할 수 있는 하나의 작업단위를 말한다. 유닉스에선 쉘스크립트라고 부른다. 백업을 하기위해선 필요한 파일들을 모아서 압축하는 과정이 필요한데 파일들이 여러곳에 흩어져있어서 번거로웠다. 그리고 이름도 계속 바꿔야 하고 백업한 파일을 한곳에 모아둬야 하는데 쫌 번거로운 작업이였다. 그래서 배치파일을 만들어 이 작업들을 한번에 실행되게 만들었다. Windows 배치 파일 명령어 분석(ECHO, ZIP, MOVE) @ECHO OFF란 커맨드창에서 명령줄을 쳤을때 그걸 메아리처럼 명령줄이 응답받는데 그걸 끄기 위함이다. SETLOCAL ~ ENDLOCAL 은 지역을 선언한 것이고 일반적 코딩에서의 { } 로 보면된다. 이안에서 선언한 변수는 해당 지역에서..
테이블, 오브젝트, 패키지 생성 삭제scrip문을 미리 만들어놔서 커맨드창에서 편하게 실행시켜 빠르게 스키마를 구성할 수 있다. cmd창에서 sql파일 실행. 위 스크립트문은 커맨드창에서 실행할꺼라 REM이 있다. REM은 배치파일에서 주석문으로 쓰인다. 또 커맨드창에서 실행시키려고 sqlplus 문법인 스크립트 실행문 @@, @가 앞에 붙어있는데 이 차이는 잘 모르겠다. UNDEFINE을 만들어 놓은 이유는 테이블 생성할때 어느 테이블스페이스를 사용할지 지정하는데 그걸 변수로 만들어서 DEFINE을 이용하여 변수를 사용한다. cre~.sql 파일들은 전부 아래처럼 이루어져있다. &&SYSTEM_TBS 처럼 앞에 &&가 붙으면 변수라는 뜻이다. cmd창에서 변수명을 입력하라고 뜬다. 이제 저 스크립트 문..
19c 클라이언트 다운받는 법 1) 오라클 홈페이지 접속 https://www.oracle.com/kr/index.html Oracle 대한민국 | 통합된 클라우드 애플리케이션과 플랫폼 서비스 Oracle Exadata X8M, Autonomous Database 및 멀티클라우드 지원: Oracle의 "가장 광대한 업데이트" Wikibon 보고서: Exadata X8M 및 Oracle의 DbaaS 전략은 AWS를 비롯한 경쟁 업체에 비해 더 저렴한 가격, 낮은 위험성, 그리고 더 유연한 배포 옵션을 제공합니다. www.oracle.com 2) 위 메뉴창 클릭후 제품 도움말 아래 메뉴에서 다운로드 클릭 3) 데이터베이스 19c Enterprise/Starndard Editions 클릭 후 다음화면의 Not..
전체 테이블 스페이스 여유공간및 자동확장여부 조회 SELECT A.TABLESPACE_NAME "테이블스페이스명", A.FILE_NAME "파일경로", (A.BYTES - B.FREE) "사용공간", B.FREE "여유 공간", A.BYTES "총크기", TO_CHAR( (B.FREE / A.BYTES * 100) , '999.99')||'%' "여유공간", A.AUTOEXTENSIBLE "자동확장여부" FROM ( SELECT FILE_ID, TABLESPACE_NAME, FILE_NAME, SUBSTR(FILE_NAME,1,200) FILE_NM, SUM(BYTES) BYTES, AUTOEXTENSIBLE FROM DBA_DATA_FILES GROUP BY FILE_ID,TABLESPACE_NAME,..