달력

10

« 2018/10 »

  •  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  •  
  •  
  •  
2011.09.14 21:28

Distinct 처리과정 Study/Database2011.09.14 21:28


• 9i 버젼까지는 Distinct 키워드 처리를 위해서 
  SELECT된 record를 SORT(정렬)한 후에, 중복제거를 합니다.
  이 때 메모리를 많이 사용합니다.

• 10g~ 버젼부터는 메모리 사용량을 줄이기 위해
  정렬방법을 안쓰고 Hash 메커니즘을 이용해서 중복제거를 합니다.
  따라서 아래처럼 결과가 정렬되지 않습니다.

  ※distinct 에서 order by 구문을 이용할 경우 기존의 9i버전때까지의 distinct 처럼
    SORT UNIQUE  로 바뀐다. 그냥 distinct 후 받아온 값을 정렬해주는 메소드를 정의한다.

Posted by 유쾌한순례자
2011.09.14 21:27

q연산자 Study/Database2011.09.14 21:27


 q연산자! Literal Character String 처럼 작은따음표 안에 작음 따음표를 찍어야 되는 경우 처럼 사용할때 편리하다
   ※단 10g 이상에만 지원
   q'[문자열]' ,[] , {},(),<>,!!
Posted by 유쾌한순례자
2011.09.14 21:27

sqlplus 모양 정리 Study/Database2011.09.14 21:27

sql plus에서 컬럼명이 줄줄이 이어져서 불편했었지 ㅜㅜ

SQL> col last_name format a15  /* 출력결과의 Heading이 LAST_NAME일 경우 */
       /* 15글자 공간사용하여 출력.             */
     col job_id format a10

     col salary format 99999

     set pagesize 999          /* 한 페이지를 999 라인으로 사용         */
       /* 999 라인마다 Heading이 출력됩니다.    */
     set linesize 200          /* 한 라인의 길이를 200 바이트만 제한    */


     col last_name format a50



Posted by 유쾌한순례자
2011.09.14 21:26

select * 은 별로 좋지 않다. Study/Database2011.09.14 21:26


 select * 등 * 최대한 안쓰는게 좋다 예를 들어 컬럼 하나당 1메가라고 치면 11개의 컬럼이  전송되면 11메가 아닌가.

신경쓰자



Posted by 유쾌한순례자
OCP 수업중 들었던 내용 정리


1) FROM 절에 테이블 이름을 적을때 스키마.테이블이름 습관들기

2) 테이블 보는 명령어인 desc는 describe의 약어 였다... orz

3) AS 는 왠만하면 약식표기법이 아닌 표준문법으로 쓰자. (이유는 일부 리포팅툴에서 약식표기를 인식 못할때가 많음)

4) 대소문자 변환 함수는 아예 insert 당시에 대소문자 변화 함수를 사용해서 입력해야한다. 




  

Posted by 유쾌한순례자
 일단 파일을 다운받아두고 설치를 시작.

 밑에는 sudo 명령어를 이용해 해도 상관없으나 root로 설치를 시작.

1. root 계정으로 접속.
# su - root


2. 커널버전 확인 ( 우분투 9 버전 이상부터는 설치가 가능하다고 한다)
# uname -r


3. 필요 패키지 설정

binutils-2.17.50.0.6-2.el5
compat-libstdc++-33-3.2.3-61
elfutils-libelf-0.125-3.el5
elfutils-libelf-devel-0.125
glibc-2.5-12
glibc-common-2.5-12
glibc-devel-2.5-12
glibc-headers-2.5-12
gcc-4.1.1-52
gcc-c++-4.1.1-52
libaio-0.3.106
libaio-devel-0.3.106 
libgcc-4.1.1-52
libstdc++-4.1.1 
libstdc++-devel-4.1.1-52.e15
make-3.81-1.1
sysstat-7.0.0

※대부분 설치가 되어있으나 일단 확인하자.
# apt-get update
# apt-get upgrade
# apt-get install 
binutils elfutils glibc-2.9-1 gcc libaio1 libaio-dev libgcc1 libstdc++6 libstdc++6-4.3-dev make sysstat lesstif2 lesstif2-dev build-essential rpm libc6 original-awk gawk ksh alien

※설치시 
 lesstif2-dev 와 build-essential 패키지에서 의존성문제로 오류가 발생하였으나 제외하고 설치 ( 차후 문제는 발생하지 않았음)

4. 그룹 및 사용자 생성
# addgroup dba
# addgroup oinstall
# addgroup nobody
# useradd -m oracle -g oinstall -G dba -s /bin/bash
# useradd -g nobody nobody
# passwd oracle

5. 커널파라미터 수정
# gedit /etc/sysctl.conf

○ sysctl.conf 맨 밑에 추가


#oracle kernel  
fs.file-max = 65535
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 1048576
net.core.rmem_max = 1048576
net.core.wmem_default = 262144
net.core.wmem_max = 262144

○ 재부팅 

6. 사용자 쉘 리미트 설정

# gedit /etc/security/limits.conf

○ 맨하단에 삽입

oracle soft nproc 2047
oracle hard nproc 16383
oracle soft nofile 1023
oracle hard nofile 65535

# gedit /etc/pam.d/login

○ 맨하단에 삽입

session required /lib/security/pam_limits.so
session required pam_limits.so

7. 링크 수정
# ln -s /usr/bin/original-awk /bin/awk
# ln -s /usr/lib/rpm /bin/rpm
# ln -s /lib/libgcc_s_so.1 /lib/libgcc_s.so
# ln -s /usr/bin/basename /bin/basename


8. 환경변수 설정
# gedit /etc/profile

○ 맨하단에 삽입
export ORACLE_BASE=/oracle
export ORACLE_HOME=/oracle/11g
export ORACLE_SID=orcl
export PATH=$PATH:$ORACLE_HOME/bin


9. oracle 설치폴더 생성
# mkdir /oracle
# mkdir /oracle/11g
# chown -R oracle:oinstall /oracle
# chmod -R 775 /oracle


10. 압축해제 및 옮기기
# mv 다운받은위치/linux_11gR2* /home/oracle
# unzip 파일이름.zip (두개니까)
# chown -R oracle:oinstall ./database

11. 설치
# sudo -i
# xhost +
# su - oracle
# export DISPLAY=:0.0
# export LANG = C  (한글이 깨져서 ㅁㅁㅁㅁ 이런식으로 나올때)
# ./database/runInstaller

그 뒤는 GUI 모드로 설치.

설치 중에 알아둘 것 group name은 dba inventory 위치는 /oracle/oraInventory

※ 설치 중 JVM 오류를 내뱉었는데. java 버전은 1.6 깔아주니 문제 없이 설치되었다.
 
Posted by 유쾌한순례자
1. 서버에서 listener.ora 설정 

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = PC이름)(PORT = 1521))
    )
  )

 SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = orcl) ##오라클 SID
    (ORACLE_HOME = 오라클홈)
    )
  )
 

※ PC이름 또는 도메인 을 넣으면 된다.
※ 이유는 모르겠으나 서버에서 PC이름에 IP를 넣으면 리스너가 error 뱉는걸 확인하였음.
※ 오라클홈은 ex) /oracle/11g
 
2.  클라이언트에서 tnsnames.ora 설정

ORCL =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = IP주소)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl)
    )
  )

EXTPROC_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
    )
    (CONNECT_DATA =
      (SID = PLSExtProc)
      (PRESENTATION = RO)
    )
  )

 ※ip주소에는 ip주소를 넣으면 된다.
Posted by 유쾌한순례자
2010.08.22 10:07

if not exists Study/Database2010.08.22 10:07

요번 작업 중에 프로그램이 운용되고 있는 DB에서 통계값을 산출하여 새로운 DB에 저장하여 사용자들이 그 내용을 볼 수 있도록 하는 작업을 하고 있다.

통계산출DB에 값이 있을경우는 update 없을경우는 insert 시키는 것인데..

iBatis에서 쿼리로 해결하였다.

if not exists ( select 컬럼명 from 테이블명 where 조건)

begin
--insert 구문
end

else

begin
--update구문
end

Posted by 유쾌한순례자
이곳에서 표현할때에 IP주소를 D클래스 부분만 보여지게 해야하는 경우가 있다

'xx.xx.xx'+right(ip주소컬럼,charindex('.',reverse(ip주소컬럼),0)) as ip주소컬럼

이렇게 하면 xx.xx.xx.24  이런식으로 나온다.
Posted by 유쾌한순례자
2010.06.26 01:31

게시판 다음글 이전글 Study/Database2010.06.26 01:31

쿼리로 간단히 해결

<!-- 이전글

select * from bbs where idx = (select max(idx) from bbs where idx<?)

<!-- 다음글

select * from bbs where idx = (select min(idx) from bbs where idx>?)
Posted by 유쾌한순례자