반응형

컴퓨터활용/오라클 32

오라클 LOCK 조회 및 KILL 방법

프로젝트에서 LOCK 이 자주 걸리는 문제가 발생하여 연구하던 중에 아래의 sql 문을 이용하여 lock 세션을 찾아서 관리할 수 있다는 것을 알았다. 그러나 이 SQL 은 System 유저만이 사용할 수 있다는 제약이 있다. LOCK 이 발생하게 되면 프로그램이 동작하다가 멈추고 기다리게 된다. 원인을 파악하는데 시간이 허비하게 되는데 알고 보니 테이블에 LOCK이 걸린 것이었다면 허탈함을 금할 수 없다. 자주 LOCK 이 걸리는 테이블이라면 SELECT 할 때 WAIT 타임을 1 정도로 주면 1초동안 LOCK 이 풀리기를 대기하다가 오류 처리되므로 개발자가 쉽게 LOCK 걸린 상황을 인지할 수 있다. -- 락걸린 테이블 확인 SELECT DO.OBJECT_NAME, DO.OWNER, DO.OBJECT..

Golden 에서 접속 오류 날 때

처음 실행해서 접속을 시도할 때 Initialization error SQL*Net not properly installed OracleHomeKey:SOFTWARE\ORACLE OracleHomeDir: 라는 오류 팝업이 뜨면 다음과 같이 조치한다. 이것은 10g에서 잘 사용하다가 개발환경이 11g로 업그레이드되면서 Golden 이 제대로 인식을 하지 못 하기 때문인데 최신버젼으로 Update 를 하면 해결된다. GOLDEN 화면 ----> HELP ----> CHECK THE WEB FOR A NEW VERSION.... 선택 후 최신 버전으로 업그레이드 하여 사용하시면 됩니다.

INDEX_DESC HINT

게시판 프로그램을 작성할 때 최신 게시물이 먼저 나오도록 하는 경우에 index_desc 를 많이 사용하게 된다. 사용방법 SELECT /*+ INDEX_DESC(TABLE_ALIAS_NAME INDEX_NAME) */ * FROM TABLE_NAME TABLE_ALIAS_NAME WHERE KEY1 = :B1 (index_name index가 key1 column에 생성되어 있다) 윗 문장에 rownum=1 조건을 추가하면 key가 제일 큰 것 하나만 조회되므로, max function의 기능을 대신할 수 있다. 최신글 조회하고자 한다면 다음과 같이 한다. SELECT * FROM ( SELECT /*+ INDEX_DESC(B TB_CO_ARTICLE_PK) */ ROWNUM AS RN, B.* FRO..

ORA-01003 에러 발생 원인 및 조치

ORA-01003 에러 발생 원인 및 조치 현황에 대한 참고할 만한 글이 있다. 주로 발생되는 경우로는 배치서버에서 가결산 작업 중 금리제공모듈, 고객정보모듈 등 에서 ORA-01003 오류 다수 발생되었다. ORA-01003 발생 원인은 배치 프로그램 또는 TP서비스 구동 중 DB(서버) 메모리 내의 테이블 정보와 AP(서버) 프로그램단 SQL내에서 참조하는 테이블 정보가 서로다른 경우 발생 되므로 이런 경우는 대부분 프로그램 구동중에 테이블 재생성 작업을 수행하는 경우에 발생 가능하다. 프로젝트에서 데이타 전환을 하는 과정에서 현재 데이터 재적재(전환원본DB -> 운영DB)가 일중 수시로 진행되고 있고, 이 재적재는 내부적으로 테이블 재생성(drop & create)과정을 거치게 됨으로써 발생하고 있..

오라클 날짜 함수

SELECT /* 오늘날짜 시분초 포함*/ TO_CHAR(SYSDATE,'YYYY/MM/DD HH24:MI:SS') FROM DUAL; SELECT /* 오늘날짜 00시 00분 00초 */ TO_CHAR(TRUNC(SYSDATE),'YYYY/MM/DD HH24:MI:SS') FROM DUAL; SELECT /* 오늘날짜 00시 00분 00초 위와 동일*/ TO_CHAR(TRUNC(SYSDATE,'DD'),'YYYY/MM/DD HH24:MI:SS') FROM DUAL; SELECT /* 마이크로세컨드 */ TO_CHAR(CURRENT_TIMESTAMP, 'YYYY/MM/DD HH24:MI:SS.FF') FROM DUAL; SELECT /* 밀리세컨드 */ TO_CHAR(CURRENT_TIMESTAMP(3)..

오라클 리스너 떠 있는지 확인하는 방법

오라클 리스너 확인하기 1. 리스너 구동하기 lsnrctl start : 리스너 구동하기 lsnrctl stop : 리스너 중단하기 이 명령어는 오라클이 설치되어 있는 서버에서 실행해야 한다. 당연 oracle 유저로 실행해야 먹을 것이다. 윈도우 커맨드모드에서 실행하는 client 용 명령어는 아니다. 2. 리스너 환경 파일 $ORACLE_HOME/network/admin 아래에 있는 listener.ora 3. tnsping 사용하여 외부에서 리스너 동작 확인하기 사용법 : tnsping TNS명 C:\Documents and Settings\SHCHOI> tnsping DBDCBS1 TNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 - Product..

오라클에 ' 문자(작은 따옴표) 를 데이타로 저장하고 싶을 때

SQL로 작은따옴표 문자를 DB에 넣고자 한다면 어떻게 하냐고 물어온 사람이 있다. 문자열은 작은따옴표('') 로 값을 앞뒤로 묶어서 구분을 해 주기 때문에 정작 작은따옴표를 값으로 넣으려면 어떻게 해야 할 지 난감할 수가 있다. 예를 들어 저장하고자 하는 데이타가 '최성환' 와 같이 ' 문자를 포함한 것이라고 한다면 다음과 같은 SQL을 작성하여 실행해 보고 그 결과를 본다면 이해가 되실 것이다. UPDATE afee_comm_base SET comm_mclas_nm = '''최성환''' WHERE comm_cd = '4607391018'; SELECT * FROM afee_comm_base WHERE comm_cd = '4607391018'; 그렇다면 \ 나 " [ ] - 이런 문자 들은 어떻게 하면..

ORACLE exp 예제

개발 중에 데이타를 수시로 백업을 해 둘 필요가 있다면 오라클에서 제공하는 exp 를 이용해서 데이타를 백업할 수 있다. 우선 다음과 같이 백업하는 shell 프로그램을 간단하게 작성하고 backupdb.sh 라고 저장을 한다. db 접속할 user와 password, 저장할 백업파일명, 그리고 테이블들의 list는 당연히 본인의 것으로 수정을 해야 할 것이다. 유닉스에서는 테이블수가 많을 경우 역슬래쉬문자(\) 로 라인을 끊어서 나열열할 수 있다. 테이블을 지정하지 않고 특정 유저의 모든 오브젝트를 내려받고자 한다면 USER=user_id 로 기술하면 되겠다. #!/usr/bin/ksh today=`date '+20%Y%m%d-%H%M%S'` export back_file=~/backup/fee_dat..

PL SQL 문법 정리

SQL문 SELECT DML(데이터 조작어) INSERT, UPDATE, DELETE DDL(데이터 정의어) IMPLICIT COMMIT CREATE, ALTER, DROP, RENAME, TRUNCATE TCL(트랜잭션 제어) COMMIT, ROLLBACK, SAVEPOINT DCL(데이터 제어어)IMPLICIT COMMIT GRANT, REVOKE [1] Writing Basic SQL Statements 1. SELECT 기본 문장(선택, 프로잭션, 조인) SELECT [DISTINCT] { *, column [alias], ... } FROM table ; 2. SELECT 예제 SELECT * FROM dept ; SELECT deptno, loc FROM dept ; SELECT ename, ..

반응형