캠핑과 개발

#Oracle start

오라클 시작 명령어

 

기본적으로 오라클 시작시 리스너를 시작함

(모든 과정은 oracle설치 계정으로 진행되어야 함)

 

lsnrctl start --리스너 시작

 

sqlplus "/as sysdba" --sqlplus접속 sysdba로


startup

 

#Oracle stop

오라클 종료 명령어

 

sqlplus상에서

shutdown [normal, transactional, immediate, abort];

 

normal : 더이상의 새로운 접속을 허용하지 않으며 종료를 수행하기전에 

모든 사용자들이 접속(session)을 끊는것을 기다립니다. 

인스턴스를 종료하기전에 데이터베이스를 닫고 dismount합니다. 

다음 시작시에는 인스턴스 복구가 필요치 않습니다. 


transactional : 트랜스 액션 종료는 클라이언트가 작업을 잃어버리지 않도록 

합니다. 특정 인스턴스에서 클라이언트는 새로운 transaction을 시작할 수 없습 

니다. 클라이언트는 진행중인 transaction을 종료할때 접속이 끊어집니다. 

모든 transaction이 끝났을때 즉시 종료되며 다음 시작때 인스턴스 복구가 

필요하지 않습니다. 


immediate : 현재 dbms가 수행하고 있는 sql문은 완료하지 않습니다. 

오라클 서버는 현재 접속중인 사용자가 접속을 끊을때까지 기다리지 않으며 현재 

진행중인 transaction을 rollback하고 모든 사용자의 접속을 끊습니다. 

다음 시작때 인스턴스 복구가 필요하지 않습니다. 


abort : 정상 종료나 즉시 종료가 제대로 동작하지 않는역우 현재의 데이터 

베이스 인스턴스를 중지시킵니다. 

오라클 서버가 수행하고 있는 sql문은 즉시 종료되며 현재 접속중인 사용자들이 

접속을 끊을때까지 기다리지 않습니다. 커밋되지 않은 transaction은 rollback되 

지 않습니다. 파일을 닫지 않은채 인스턴스를 종료합니다. 

다음 시작시 인스턴스 복구를 필요로 합니다.


[출처] [Oracle] 오라클 서버 시작 명령어|작성자 juner84

'DEVELOPMENT > Database' 카테고리의 다른 글

ER-Win에서 DB Table 가져오기  (0) 2009.05.13
MSSQL2000, 2005 테이블 명세서 추출 쿼리문  (0) 2009.05.13
Toad 단축키  (0) 2009.04.18
[oracle] decode 함수  (1) 2009.01.16
[ORACLE] 테이블 관련 정보 쿼리  (0) 2008.07.26

F1

Toad 도움말 파일의 SQL Editor 부분이 표시됩니다.

F2

전체 화면 Editor Editor/Results 패널 표시 장치 사이를 전환합니다.

<SHIFT>F2

전체 화면 그리드를 전환합니다.

F3

다음으로 일치하는 것을 찾습니다.

<SHIFT>F3

이전에 일치하는 것을 찾습니다.

F4

팝업 창의 테이블, , 프로시저, 함수, 또는 패키지를 설명합니다.

F5

스크립트로 실행합니다.

F6

커서를 Editor Results 패널 사이로 전환합니다.

F7

모든 텍스트를 지웁니다.

F8

이전 SQL 문을 재호출합니다(SQL Statement Recall 창을 불러옵니다).

F9

실행문을 실행합니다.

<CTRL>F9

실행(구문 분석) 없이 실행문을 검사합니다.

<SHIFT>F9

커서 위치에서 현재 실행문을 실행합니다.

F10

오른쪽 클릭 메뉴를 표시합니다.

F11

Script 같은 실행(=F5)

F12

편집기 내용을 지정된 외부 편집기로 전달합니다.

<CTRL>A

모든 텍스트를 선택합니다.

<CTRL>C

복사

<CTRL>D

프로시저 인수를 표시합니다.

<CTRL>E

현재 실행문에서 Explain Plan 실행합니다.

<CTRL>F

텍스트를 찾습니다(Find Text 창을 불러옵니다).

<CTRL>G

라인으로 이동합니다(Goto Line 창을 불러옵니다).

<CTRL>L

텍스트를 소문자로 변환합니다.

<CTRL>M

Make Code Statement

<CTRL>N

이름이 지정된 SQL 문을 재호출합니다(SQL Statement Recall 창을 불러옵니다).

<CTRL>O

텍스트 파일을 엽니다.

<CTRL>P

Strip Code Statement

<CTRL>R

검색 바꾸기(Find and Replace Text 창을 불러옵니다)

<CTRL>S

파일을 저장합니다.

<SHIFT><CTRL>S

파일을 다른 이름으로 저장합니다.

<CTRL>T

드롭다운을 표시합니다.

<CTRL>U

텍스트를 대문자로 변환합니다.

<CTRL>V

붙여넣기

<CTRL>X

잘라내기

<SHIFT><CTRL>Z

마지막으로 취소한 작업을 재실행합니다.

<ALT><UP>

이전 실행문을 표시합니다.

<ALT><DOWN>

다음 실행문을 표시합니다(<ALT><UP> 사용한 사용)

<ALT><PgUp>

이전 탭으로 이동

<ALT><PgDn>

다음 탭으로 이동

<CTRL><ALT><PgUp>

이전 결과 패널 탭으로 이동

<CTRL><ALT><PgDn>

다음 결과 패널 탭으로 이동

<CTRL><HOME>

데이터 그리드에서는 위의 레코드셋으로 이동하며, 결과 그리드에서는 커서가 위치한 행의 번째 열로 이동하고, 편집기에서는 텍스트의 번째 열과 번째 행으로 이동합니다.

<CTRL><END>

데이터 그리드에서는 레코드셋의 끝으로 이동하며, 편집기에서는 텍스트의 마지막 열과 마지막 행으로 이동합니다. 단원의 "주의" 참조하십시오.

<CTRL><SPACE>

코드 완성 템플릿을 활성화합니다.

<CTRL><TAB>

MDI Child 창의 콜렉션을 순환합니다.

<CTRL><ENTER>

커서 이치에서 현재 SQL 문을 실행합니다.

<CTRL>. (마침표)

테이블 이름을 자동으로 완성합니다

'DEVELOPMENT > Database' 카테고리의 다른 글

MSSQL2000, 2005 테이블 명세서 추출 쿼리문  (0) 2009.05.13
oracle 시작과 종료  (0) 2009.05.07
[oracle] decode 함수  (1) 2009.01.16
[ORACLE] 테이블 관련 정보 쿼리  (0) 2008.07.26
[MS-SQL] SELECT INTO  (0) 2008.05.20


DECODE는 일반적인 프로그래밍 언어의 IF문을 SQL 문자 또는 PL/SQL안으로 끌여들여 사용하기 위하여 만들어진 오라클함수이다. 따라서 일반 프로그래밍 언어의 IF문이 수행할 수 있는 기능을 포함하고 있다. select시의 decode 사용은 from 절만 빼고 어디에서나 사용할수 있다.
단. 비교 연산은 '='만 가능하다.


문법

DECODE(expr, search, result
       [, search, result ]...
       [, default ]      )

형식은 다음과 같이 사용하시면 됩니다.

DECODE(deptname, 'A', 1, 0)

-> deptname이 'A'와 같으면 1을 갖고 아니면 0을 갖게 됩니다.

또는 SUM함수로 합계를 내줄 수 있습니다.

SUM(DECODE(deptname, 'A', 1, 0)

-> deptname이 'A'와 같으면, 1을 누적하고,아니면 0을 갖게 됩니다.

2중 DECODE문도 허용됩니다. 다음을 보도록 하겠습니다.

DECODE(deptname, 'A', DECODE(name, 'KIM', 1), 0)

-> deptname이 'A'와 같고, name이 'KIM'이면, 1을 같고, 아니면, 0을 갖는다.

2중 DECODE문을 쓸때 두개의 DECODE문은 AND연산으로 수행됨을 명심하길 바랍니다.

기타 DECODE문과 오라클내에서 쓸 수 있는 여러가지 함수를 혼용해서 쓸수 있습니다.
예를들면, 문자열을 잘라주는 SUBSTR함수라든가, 위에서 사용한 SUM함수 등을 혼용해서 쓸 수 있습니다.
이렇게 원하는 sql문을 구사하기 위해서는 많은 실습과 경험과 그리고, 시행착오가 필요합니다.
DECODE문을 사용해서 조건에 맞는 항목에 대한 연산도 가능합니다.

다음을 보도록 하겠습니다.

문제) 사원테이블(PA06MR0)에서 영문성이 'KIM'으로 시작하는 사람과 'LEE'로 시작하는 사람의 합을 구하라. 단 입사년도 가 올해(1998)인 사람의 합을 구하라.

SELECT EMPNAME,
    SUM(DECODE(SUBSTR(EMPNAME,1,3),'KIM',1,0) 
    + DECODE(SUBSTR(EMPNAME,1,3),'LEE',1,0)),
FROM PA06MR0
WHERE SUBSTR(entondate, 1, 4) = '1998';
GROUP BY EMPNAME;


MS-SQL의 경우 CASE문과 같다.

CASE A
    WHEN 'apple' THEN 1  
    WHEN 'banana' THEN 0
    WHEN 'potato' THEN 2
END

 

'DEVELOPMENT > Database' 카테고리의 다른 글

oracle 시작과 종료  (0) 2009.05.07
Toad 단축키  (0) 2009.04.18
[ORACLE] 테이블 관련 정보 쿼리  (0) 2008.07.26
[MS-SQL] SELECT INTO  (0) 2008.05.20
[oracle] 오라클 중복제거 하면서 전체 값 가져오기  (0) 2008.03.27

테이블 관련 정보를 알아볼수 있는 쿼리를 정리했다.
나름 유용하게 사용할수 있을꺼 같다.

# 해당 테이블스페이스에 관련된 모든 테이블을 가져온다.
SELECT * FROM TABS

# 해당 테이블스페이스에 관련된 모든 시퀀스를 가져온다.
SELECT * FROM SEQ

# 해당 테이블스페이스에 관련된 모든 뷰의 정보를 가져온다.
SELECT * FROM USER_VIEWS

# 해당 테이블에 컬럼리스트를 가져온다.
SELECT *
FROM USER_TAB_COLUMNS
WHERE TABLE_NAME = 테이블명
ORDER BY COLUMN_ID ASC

# 해당 테이블스페이스에 관련된 모든 트리거를 가져온단.
SELECT * FROM USER_TRIGGERS

# 해당 테이블에 관련된 제약 정보들을 가져온다.
SELECT  C.TABLE_NAME A1,
        SUBSTR(A.COLUMN_NAME,1,15) A2,
        DECODE(B.CONSTRAINT_TYPE, 'P','PRIMARY KEY',
                                  'U','UNIQUE KEY',
                                  'C','CHECK OR NOT NULL',
                                  'R','FOREIGN KEY') A3,
        A.CONSTRAINT_NAME   A4      
FROM    USER_CONS_COLUMNS  A,  USER_CONSTRAINTS  B, USER_INDEXES C
WHERE   A.TABLE_NAME = B.TABLE_NAME
AND     A.TABLE_NAME = C.TABLE_NAME
AND     A.CONSTRAINT_NAME = B.CONSTRAINT_NAME
AND     A.TABLE_NAME =UPPER('테이블명')

ORDER BY 1,2;

'DEVELOPMENT > Database' 카테고리의 다른 글

oracle 시작과 종료  (0) 2009.05.07
Toad 단축키  (0) 2009.04.18
[oracle] decode 함수  (1) 2009.01.16
[MS-SQL] SELECT INTO  (0) 2008.05.20
[oracle] 오라클 중복제거 하면서 전체 값 가져오기  (0) 2008.03.27

3주 동안 고인물로 지내다가 다시 새로운 물을 가득 넣기로 마음 굳게 먹었다.
요즘 별다르게 배운게 없고 공부한게 없었는데 이게 다 모 사이트 운영때문이다.. 결국은 핑계다 ㅡ,.-^

운영업무를 하다보면 고객의 요청에 의해서 각종 데이터들을 산출해야 한다.
회원정보라던지 매출액등 월말, 분기별로 아주 바쁘게 데이터를 뽑아서 엑셀로 이쁘게 포장해서
고객에게 주면 참 좋아 하신다..^^;

그런데 이런 데이터들을 산출하다 보면 SELECT 된 값들을 다른 테이블에 그 데이터만을 담아서 사용하고 싶은 경우가 있다. 그 중에 또 다른 값을 가져오거나  그 값들로 인해서 또 다른 테이블과 조인을 한다던가 해야 하는 일 말이다.  이런 테이블을 만들지 않으면 쿼리도 늘어나고 속도도 느려지니 헷갈리고 속도도 느려진다.

그래서 이 때  사용할수 있는게 SELECT INTO 이다.
SELECT INTO는 현재 있는 테이블에 있는 내용 전체나 일부를 가져와서 새로운 테이블로 만들 때 사용한다.
기존에 있던 테이블에는 INSERT 시킬수가 없다. 기존 테이블에 INSERT를 시킬려면 SELECT INSERT를 사용하면 된다.

사용법
SELECT * FROM tableName
SELECT * INTO  temp_tableName(새로만들 테이블) FROM tableName

위에 사용법으로 테이블을 만들게 되면 영구적으로 테이블이 생기게 된다.
물론 DROP 명령으로 지워주면 되긴 하지만 잠시만 쓰고 지울 것이라면 굳이 영구 테이블을 만들지 않고 임시테이블을 만들어 사용하면 된다.

임시 테이블은 전역임시 테이블, 세션 임시 테이블 두개로 나뉜다.

만드는방법 사용할 수 있는 범위 삭제되는 시기
일반 테이블 CREATE TABLE 다른 세션에서도 DROP TABLE
세션 임시 테이블
#tablename
해당 세션에서만
세션이 끊어질 때
전역 임시 테이블
##tablename
다른 세션에서도
세션이 끊어질 때
tempdb의 일반 테이블
CREATE TABLE
다른 세션에서도
SQL 서버가 시작 될 때

사용법
SELECT * INTO #tablename FROM table
SELECT * INTO ##tablename FROM table
SELECT * FROM #tablename
SELECT * FROM ##tablename

이렇게 생성 된 테이블은 해당 데이터베이스에 생성되는 것이 아니라 tempdb에 만들어 지며 logout 할 때 자동으로 삭제가 된다.

실무에서는 많이 사용하는지는 모르지만 개인적으로는 정말 많이 사용한다.

참고::
오라클에서는 사용법이 다르다.

CREATE TABLE tableName_temp
AS SELECT * FROM tableName


'DEVELOPMENT > Database' 카테고리의 다른 글

oracle 시작과 종료  (0) 2009.05.07
Toad 단축키  (0) 2009.04.18
[oracle] decode 함수  (1) 2009.01.16
[ORACLE] 테이블 관련 정보 쿼리  (0) 2008.07.26
[oracle] 오라클 중복제거 하면서 전체 값 가져오기  (0) 2008.03.27


SELECT *
FROM (
  SELECT 컬럼1, 컬럼2, 컬럼3,
               ROW_NUMBER() OVER( PARTITION BY 중복조회컬럼 ORDER BY 정렬컬럼 ) CNT
  FROM 테이블
  )
WHERE CNT > 1
RANK() OVER()
DENSE_RANK() OVER()

실무에 사용했던 예))

'DEVELOPMENT > Database' 카테고리의 다른 글

oracle 시작과 종료  (0) 2009.05.07
Toad 단축키  (0) 2009.04.18
[oracle] decode 함수  (1) 2009.01.16
[ORACLE] 테이블 관련 정보 쿼리  (0) 2008.07.26
[MS-SQL] SELECT INTO  (0) 2008.05.20