본문 바로가기

DB의 속삭임

[DB][ORACLE][관리][에러]ORA-01078 ORA-0037 ORA-00205 ORA-00201 ORA-01103 [oracle@localhost /home/oracle]$ sqlplus /nologSQL*Plus: Release 11.1.0.6.0 - Production on Fri Aug 6 00:55:11 2010Copyright (c) 1982, 2007, Oracle. All rights reserved.SQL> conn /as sysdba Connected to an idle instance. SQL> startup ORA-01078: failure in processing system parameters LRM-00109: could not open parameter file '/home/oracle/app/oracle/product/11.1.0/db_1/dbs/initORCL.ora'조치 : cp $O.. 더보기
[DB][MySQL][관리] MySQL의 TimeOut 1. Time Out의 종류 - connect_timeout (bad handshake timeout) - interactive_timeout (interactive 모드에서 connection time out) ※ interactive 모드는 'mysql>' 과 같은 프롬프트 있는 콘솔이나 터미널 모드를 말합니다.- wait_timeout (none interactive 모드에서 connection time out) 2. connect_timeout - 이 설정은 mysqld 와 mysql client 가 연결(connection)을 맺기 위해서 mysqld 가 연결 패킷을 기다리는 최대 시간입니다.- 즉, TCP 연결을 맺는 과정(3-way handshake)에서, connect_timeout 동안에.. 더보기
[DB][ORACLE][관리]오라클에서 자주 사용하는 딕셔너리 테이블 분류성능뷰 / 딕셔너리딕셔너리세션과 관련된 정보V$SESSION세션에 대한 전반적인 정보를 보여준다V$SESSSTAT세션의 현황에 대한 통계정보를 보여준다V$SESSION_WAIT세션의 WAITING 통계정보를 보여준다V$SESSION_EVENT세션의 현재 WATING EVENT를 보여준다V$SESS_IO세션의 IO현황을 보여준다V$STATNAMESESSSTAT의 STATUS의 이름을 보여준다.성능 관련 정보V$SYSTAT시스템 전반의 성능 통계 정보를 보여준다V$SYSTEM_EVENT시스템의 WATING EVENT별 통계정보를 보여준다V$LIBRARYCACHE라이브러리 캐쉬 사용 정보를 보여준다.V$ROWCACHE데이터 딕셔너리의 사용정보를 보여준다V$LATCHLATCH에 대한 정보를 보여준다V$LOC.. 더보기
[DB][ORACLE][관리]테이블에 락이 걸린 정보를 확인하는 방법 * 데이타를 이용하다보면 테이블에 lock이 걸려, 수동으로 lock을 확인하고, 해당 계정의 섹션을 죽임으로써 락을 풀어 줄 필요가 있을 때가 있다.1. 해당 테이블[조건절에서 제외하면 모든 테이블]의 락정보 확인 쿼리SELECT B.TYPE, C.OBJECT_NAME, A.SID, A.SERIAL#, D.OS_USER_NAME AS OS_USER_NAME, D.ORACLE_USERNAME AS ORACLE_USERNAME FROM V$SESSION A,V$LOCK B,DBA_OBJECTS C, V$LOCKED_OBJECT DWHERE A.SID = B.SID AND B.ID1 = C.OBJECT_ID AND B.TYPE = 'TM' AND C.OBJECT_NAME = '[락정보를 확인할 테이블]' A.. 더보기
[DB][ORACLE][관리] Oracle의 휴지통 Flashback테이블 * Flashback테이블 : Oracle에서 Table을 Drop했을때 바로 삭제 되는 것이 아니라, Flashback테이블에 남게 된다. 이는 Oracle Flashback Technologies의 하나이다.* 10g부터 가능한것으로 보이며, 9i는 과거 시점부터 데이터는 볼수 있지만 테이블을 즉시 되살리수는 없다고 합니다.1. 삭제된 테이블 확인. show recyclebin; * 해당 명령을 실행 시키면, 삭제되기전의 테이블 명과 삭제후 변환된 테이블명을 모두 확인 가능하며, 언제 삭제되었는지도 확인이 가능하다. Object가 삭제되면 "BIN$"로 시작되는 임의의 명으로 변경이 된다. 2. 테이블 되살리기FLASHBACK TABLE [테이블명] TO BEFORE DROP; 3-1. 플래쉬백으로 .. 더보기
[DB][ORACLE][관리]계정(USER) 생성및 테이블 스페이스(table space) 생성하기 * 계정을 생성할때 보통 해당 테이블 스페이스와 datafile을 생성하여 관리하는 것이 보통이다. 하지만 매일 사용하는 것이 아니라 프로젝트 시작 단계나, 간혹 사용되는 명령이므로 잊어먹기 좋다. 그래서 따로 기록 해두는 것이 좋은 명령이다.1. 테이블 스페이스 생성 및 데이터파일 생성 CREATE TABLESPACE [테이블스페이스명]DATAFILE '[데이터 파일 경로 / 데이터 파일명.DBF]' SIZE 100M AUTOEXTEND ON; * 데이터 파일을 생성하기 전에 해당 시스템은 어떤 경로로 데이터 파일을 관리 되는지 확인 해보도록 하자.* 각 관리자 별로 마음대로 데이터 파일을 관리 하는경우가 있는데, 이것은 향후 유지관리 면에서 심각한 이슈가 될수 있다.2. 유저 생성. 상기 명령으 TA.. 더보기
[DB][ORACLE][SQL] 테이블 및 컬럼 코멘트 시스템을 관리하거나 개발을 하다보면 테이블을 만들고, 기억못하거나, 인수인계시 고생을 많이 한다. 그런경우 테이블에 또는 컬럼에 코멘트를 달아 놓으면, 누구나 쉽게 이해 할 수가 있다. 1. 테이블 코멘트 COMMENT ON TABLE [USER].[TABLE] IS '[코멘트 내용]'; 2. 컬럼 코멘트 COMMENT ON COLUMN [USER].[TABLE].[COLUMN] IS '[코멘트 내용]'; 1. 코멘트는 후차의 담당자나 개발자 또는 함께 일을 하는 동료들에게 베푸는 매너이다. 그러므로 꼭 지켜야 되는 것이다. 2. 코멘트 명령을 아는 것이 중요 한것이 아니다, 어떤 내용을 적느냐도 중요한데, 예를 들어 구분자로 쓰는 컬럼이라면, 해당값일때 어떤 의미인지, 시퀀스를 사용하는 컬럼이라면 해당.. 더보기
[DB][MYSQL][SQL]INSERT문과 UPDATE문을 한번에 기술하고 처리 하는 MERGE문 * 개발을 하다보면, 입력과 수정문을 동시에 번갈아 가면어 사용해야 될때가 있다. 이럴때 제시 되는 방법이다. * INSERT INTO ~ ON ~ KEY UPDATE INSERT INTO [테이블명] ([컬럼명], ... ) VALUES ([입력값], ... ) ON DUPLICATE KEY UPDATE [컬럼명] = [업데이트 값], ... ; * 오라클 또한 이와 비슷한 기능이 있다. => 2013/01/24 - [DB의 속삭임/SQL의 외침] - [DB][ORACLE][SQL]INSERT문과 UPDATE문을 한번에 기술하고 처리 하는 MERGE문 더보기
[DB][ORACLE][SQL]INSERT문과 UPDATE문을 한번에 기술하고 처리 하는 MERGE문 * 개발을 하다보면, 입력과 수정문을 동시에 번갈아 가면어 사용해야 될때가 있다. 이럴때 제시되는 방법이다. * MERGE INTO 문 MERGE INTO [테이블명] T1 USING ([SELECT QUERY]) T2 ON (JOIN 구문) WHEN MATCHED THEN --조회 값이 있다면, UPDATE SET T1.[컬럼명] = T2.[컬럼명], ... WHEN NOT MATCHED THEN --조회 값이 없다면, INSERT (T1.[컬럼명], ... ) VALUES (T2.[컬럼명], ... ); * MYSQL에도 이와 유사한 기능이 있다. => 2013/01/24 - [DB의 속삭임/SQL의 외침] - [DB][MYSQL][SQL]INSERT문과 UPDATE문을 한번에 기술하고 처리 하는 M.. 더보기
[DB][ORACLE][관리]계정 삭제 / 계정 세션 끊기 * 계정을 삭제할때, 해당 계정이 접속중이면 삭제가 제한된다. * 유저 삭제 DROP USER [삭제할 유저명] CASCADE; * 유저가 접속해 있으면 삭제가 제한된다. 이럴때는 유저의 접속을 강제로 끊어 줘야 된다. 1. 타겟이 될 유저의 SID와 SERIAL을 확인한다. SELECT SID,SERIAL# FROM V$SESSION WHERE USERNAME = '[타겟이 될 계정명]'; 2. 확인된 SID와 SERIAL로 삭제한다. ALTER SYSTEM KILL SESSION '[SID],[SERIAL]'; 더보기