실수로 디비 테이블을 날려먹고 아뿔싸... 하는 생각을 하신 분들이 꽤 되실 거라 생각 듭니다. 개발자로서 일을 처음 시작할 때 저 역시 작업하다 데이터를 날려먹고 사수한테 엄청 혼났던 기억도 났고, 후임으로 들어온 신입이 패스워드 칼럼을 전부 날려먹어서 복원했던 기억도 납니다. 롤백하면 되겠지 생각했는데 이미 커밋까지 다 해버렸고, 신입은 혼자서 어쩌지 하면서 시간을 보내고 있었네요^^ 이런 경험 들은 전부 가지고 계시죠? 오라클은 데이터를 FLASHBACK이라는 임시 저장소를 가지고 있습니다. 자료가 쌓이는 로그죠. 그래서 일정 시간 이내의 자료들은 어느 정도 복구가 가능합니다. 기준자료의 데이터가 바뀐 경우 TIMESTAMP라는 함수를 써서 아주 쉽게 복원할 수 있습니다. 하지만 테이블의 칼럼을 변..
사용하는 오라클 버전을 잘모를때 버전을 확인할 수 있는 방법을 알아보겠습니다. 1. 시스템계정으로 접속하여 확인 로컬시스템에 오라클이 설치되어있고, 사용할 디비툴이 없을때에는 도스창에서 아래와 같이 입력해보세요. c:\> sqlplus "/as sysdba" 접속하면서 바로 설치된 오라클의 버전정보를 알 수있습니다. 2. 원격으로 붙는다면 아래와 같이 접속해보세요. c:\> sqlplus 아이디/암호@TNS네임 3. 디비툴이나 SQLPlus 에서는 다음과 같이 입력해보세요. SELECT * FROM v$version 아래와 같은 결과 값을 확인할 수 있습니다. Oracle9i Enterprise Edition Release 9.2.0.8.0 - 64bit Production PL/SQL Release 9..
데이터를 후가공하여 컬럼내용을 나열할때 사용하는 함수입니다. 만약 아이템코드에 대한 여러가지 아이템부품이 있고, 한줄로 나열해서 쓸일이 있으면 아래 함수를 사용하시면 됩니다. 예제 테이블) 아이템코드 아이템부품 0001 부품1 0001 부품2 0001 부품3 0002 공구1 0002 공구2 아이템코드에 대한 여러개의 부품들이 있습니다. 지금 저희가 만들 함수는 아이템코드로 호출을하면 이러한 부품들을 한줄로 만들어서 한줄로 나열하게 만드는 겁니다. CREATE OR REPLACE FUNCTION 펑션이름(아이템코드 IN CHAR) RETURN VARCHAR2 IS TEMPSTR VARCHAR2(4000); CURSOR ITEM_CUR IS SELECT 아이템부품 FROM 아이템테이블 WHERE 아이템코드 ..
실수로 디비컬럼을 다른 값으로 업데이트하고 커밋을 처리했을경우 어떻게 처리하고 계시나요? 다행히 백업 테이블이 남아있어서 백업 테이블기준으로 데이터를 업데이트해야할 경우 아래와 같이 사용하시면 됩니다. 오라클에서 참조되는 테이블 대상으로 쿼리를 업데이트할경우에는 아래와 같이 사용해주세요. UPDATE 업데이트대상테이블 a SET 업데이트할 값 = (SELECT 업데이트참조 값 FROM 참조될테이블 b WHERE A.기준값 = b.기준값 ) WHERE a.기준값 IN (SELECT A.기준값 FROM 참조될 테이블 ) 업데이트참조 값은 다른 테이블에 있는 업데이트 대상 값입니다.
오라클을 D:에 설치한뒤 컴퓨터를 포맷하거나 기존의 환경을 그래도 압축해서 다른 컴퓨터로 가져올경우에 아래와 같이 설정을 하면 오라클을 재설치 할 필요없이 기존의 쓰던 오라클을 사용하실 수 있습니다. 오라클 인스턴스와 마찬가지로 환경변수를 설정한 후 사용하시면 됩니다. 컴퓨터 - 시스템속성 - 고급 - 환경변수 에 들어가주세요. 시스템변수 - 새로만들기 버튼을 클릭 후 변수이름을 추가해주셔야 됩니다. 변수이름 변수값 ORACLE_HOME D:\source\oracle\product\11.2.0\client_1 TNS_ADMIN D:\source\oracle\product\11.2.0\client_1\network\admin 변수의 경로는 오라클이 존재하는 위치로 맞춰주시기 바랍니다.
시스템 모니터링하다 데이터가 중복으로 들어오는 걸 발견했습니다. 테이블에 데이터가 중복으로 수천건이 들어오고 있어서 계속 쌓이기전에 빨리 처리하면서 처리한 방법을 팁으로 남겨봅니다. 일단 아래 테이블 양식을 살펴주세요. 제가 사용한 테이블은 시간당 자료를 입력을 받는 테이블이었는데 연계된 하드웨어 특성상 사용자의 의도된 중복된 자료도 넘어올 수 있기에 고유키나 유니크로 설계가 되어 있지 않았습니다. 설계부터가 좀 잘못되어 있었는데 그냥 고칠 수도 없고 중복된 자료나 정리해야죠.. 일반적으로 테이블에 넘어오는 데이터 양식은 아래와 같습니다. TEST 테이블형식예제) SEQ PJCD HOUR MINUTE SECOND CONTENT 1 PJCD001 08 10 15 기록1 2 PJCD002 09 12 07 기..