Toad, Orange 등 좋은 툴도 있는데 비싸기도 하지만 간단하게 쓰기에는 좀 무거운 감이 있다.
sqlplus를 잘 사용하는 경우 편할 때가 있어 배워보고자 합니다.


실행하기

1. sysdba로 바로 로그인합니다.
[oracle@rh5 ~]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Tue Sep 8 22:30:40 2009

Copyright (c) 1982, 2005, Oracle.  All rights reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

SQL>

2. 위상태에서 다른 user로 로그인할 경우
SQL> connect scott/tiger
Connected.

3. 처음부터 scott로 접속할 경우
[OCRL]rh5.cs.com:/oracle/app/oracle/product/10g> sqlplus

SQL*Plus: Release 10.2.0.1.0 - Production on Tue Sep 8 22:31:40 2009

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

Enter user-name: scott
Enter password:

Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

SQL>

4. sqlplus userid 또는 sqlplus userid/passwd 와 같이 해도 되는데 보안상 위 방법을 쓰는게 좋다고 합니다.


도움말 보기 : help [명령어]

SQL> help ed

 EDIT
 ----

 Invokes an operating system text editor on the contents of the
 specified file or on the contents of the SQL buffer. The buffer
 has no command history list and does not record SQL*Plus commands.

 ED[IT] [file_name[.ext]]

 Not available in iSQL*Plus

환경설정 : set [키워드] 값

select한 값이 보기좋게 나오게 하기 위해선
set linesize 150
set pagesize 50
정도로 값을 늘려주어야 한다.
set pause on은 중간에 멈추게 한다.

linesize (n) : 한줄에 표시될 텍스트숫자 기본값80
pages (n) 또는 pagesize (n) : 한페이지당 표시되는 라인수 기본값 24
colsep (text) : 칼럼이 표시될때 칼럼의 구별문자 기본값 공백
feedback (off | on) : 선택된 행이 몇 행인지 표시함 기본값은 6행이상일때 on
             예) set feedback 3 : 3행이상일때 on
heading (off | on) : 컬럼에 대한 heading을 표시함 기본값은 on
paues (on | off | text) : 엔터키를 누를때마다 화면이 지나감 기본값은 off
timing (on | off) : sql문장이 처리되는 시간을 표시 기본값은 off
verify (on | off) : & 변수로 값을 받을 경우 화면에 확인하기 위해 old,new를 표시할 것인지 기본값은  on
show all : 환경이 어떻게 설정 되었는가 확인
numformat : 큰 숫자가 표시될때 E+10 와 같은 식으로 나오지 않도록 함.
            예) set numformat 999999999999999999999999999999.9999999999
                 set numformat ""              <- 원래대로 하기

- 매번 환경변수를 변경해 주어야 하면 glogin.sql에 다음을 추가한다.

[OCRL]rh5.cs.com:/oracle/app/oracle/product/10g> cd sqlplus/admin
[OCRL]rh5.cs.com:/oracle/app/oracle/product/10g/sqlplus/admin> vi glogin.sql

SET PAGESIZE 100
SET LINESIZE 300


- 프롬프트 변경
SQL> set sqlprompt "_USER'@'_CONNECT_IDENTIFIER> "
SCOTT@ORCL>


File 관련

- r, ru, run 또는 / : 바로 전에 실행한 sql을 다시 실행한다.
   L 또는 l : 바로 전에 실행한 sql을 본다.

SQL> select * from dept;
    DEPTNO DNAME   LOC
---------- ---------------------------- --------------------------
 10 ACCOUNTING   NEW YORK
 20 RESEARCH   DALLAS
 30 SALES   CHICAGO
 40 OPERATIONS   BOSTON
SQL> /
    DEPTNO DNAME   LOC
---------- ---------------------------- --------------------------
 10 ACCOUNTING   NEW YORK
 20 RESEARCH   DALLAS
 30 SALES   CHICAGO
 40 OPERATIONS   BOSTON

SQL> l
  1* select * from dept

- get : 파일을 메모리로 불러온다.
   test.sql에 dept를 조회하는 sql문이 있을때...

SQL> get test.sql
  1* select * from dept
SQL> /
    DEPTNO DNAME   LOC
---------- ---------------------------- --------------------------
 10 ACCOUNTING   NEW YORK
 20 RESEARCH   DALLAS
 30 SALES   CHICAGO
 40 OPERATIONS   BOSTON

- save : 바로 전에 실행한 sql을 저장한다.
   ! : 쉘로 이동하고 exit하면 다시 sqlplus로 돌아온다. 
   ! 명령어 : unix 명령을 바로 실행할 수 있다.

SQL> select * from salgrade;
     GRADE LOSAL    HISAL
---------- ---------- ----------
  1   700     1200
  2  1201     1400
  3  1401     2000
  4  2001     3000
  5  3001     9999
SQL> save testsal.sql
Created file testsal.sql

SQL> !
[oracle@rh5 ~]$ ls test*.sql
test.sql  testemp.sql  testsal.sql  testspool.sql
[oracle@rh5 ~]$ exit
exit

SQL> !ls test*.sql
test.sql  testemp.sql  testsal.sql  testspool.sql

- @ 또는 start 파일명 : 파일에 있는 sql을 바로 실행

SQL> @test.sql
  2  ;
    DEPTNO DNAME   LOC
---------- ---------------------------- --------------------------
 10 ACCOUNTING   NEW YORK
 20 RESEARCH   DALLAS
 30 SALES   CHICAGO
 40 OPERATIONS   BOSTON

- spool 파일명 또는 spool on / spool off : 화면에 출력되는 것을 파일로 저장
  파일명을 지정해 주지 않으면 on.lst 파일을 만든다.


SQL> spool testspool.sql
SQL> @test.sql
  2  ;
    DEPTNO DNAME   LOC
---------- ---------------------------- --------------------------
 10 ACCOUNTING   NEW YORK
 20 RESEARCH   DALLAS
 30 SALES   CHICAGO
 40 OPERATIONS   BOSTON
SQL> spool off
SQL> !ls -lsa testspool.sql
4 -rw-r--r-- 1 oracle dba 765 Sep  8 23:22 testspool.sql

- ed : 메모리에 있는 명령어 편집
            vi로 편집하여 저장하면 afiedt.buf 에 저장되고 / 로 실행이 가능
           사용전에 환경변수에 다음이 있어야 한다.
            vi내에서 ; 으로 끝내지 않아야 실행시 에러가 나지 않는다.


[OCRL]rh5.cs.com:/oracle/app/oracle/product/10g> vi .bash_profile
export EDITOR=vi
export FCEDIT=vi




기타 등등

- Auto Commit이 없기 때문에 commit을 해주어야 한다.

- unix 명령어 사용하기 : ! 를 앞에 붙여 사용한다.
SQL> !pwd
/oracle/app/oracle/product/10g

다음에 나오는 사이트를 참고했습니다.

Oracle 10g RAC On Linux Using VMware Server
http://www.oracle-base.com/articles/10g/OracleDB10gR2RACInstallationOnCentos4UsingVMware.php


VMware 설치

참고 사이트는 호스트가 Linux인데 저는 WindowsXP에 설치합니다.
VMWare는 무료로 제공되는 Server 버젼을 사용합니다.
Product : VMware Server Console
Version : 1.0.6 build-91891

새로운 가상머신을 추가합니다.



Custom으로 해야만 Redhat 설치할때 disk가 보입니다.



Linux, Red Hat Linux를 선택합니다.



가상머신 이름은 RH5Rac1, 메인 폴더는 D:\VMware\RH5Rac1으로 했습니다. 가상머신 이름은 VMware에서 보여지는 이름입니다.


Make thie virtual machine private에 체크



User that powers on the virtual machine 선택


Number of processeors : One



메모리는 1024MB - Clusterware 설치할때 최소 900MB라 1024MB 정도는 잡아줍니다.



우선 Use bridged networking으로 합니다. 나중에 바꿔줄 겁니다.



LSI Logic 선택



Create a new virtual disk 선택



SCSI 선택



50GB 정도는 잡아줍니다. Allocate all disk space now를 선택하지 않으면 초기에 전체크기로 파일을 만들지 않습니다.



디스크 파일 이름 기본으로 합니다. OS는 하나만 만들거라 그냥 기본으로 했습니다.



Red hat이 ISO로 있어서 CD-ROM에서 ISO파일을 선택해 줍니다.



네트워크는 Custom으로 하고 VMnet8(NAT)로 합니다. 호스트 윈도우 (WindowsXP) 로컬 네트워크를 공유해 놓으면 Linux에서 호스트 통해서 인터넷 사용도 가능합니다.



네트워크를 추가합니다.



Host-only로 만드는데 호스트 Windows에 VMnet1과 같은 네트워크로 구성하면 됩니다. 내부에서만 사용이 가능합니다.



RAC 구성을 위한 HDD를 만듭니다.



Create a new virtual disk를 선택합니다.



SCSI로 선택합니다.



10GB로 하고 모두 체크하지 않았는데 속도가 너무 느려져서 체크를 해야 할 것 같습니다. 하드 공간에 여유가 있으면 미리 10GB를 잡고 하는 것도 좋겠습니다.



D:\VMware\rac\shared에 disk1로 만듭니다.



Advanced로 들어가서 SCSI 1:1, Independent, Persistent를 선택합니다.



같은 방식으로 SCSI 1:2에 HDD를 하나 더 추가합니다.



아래와 같이 만들고 Start 를 합니다.


 

SGA (System Global Area) : 공용 메모리 영역

공유풀 (Shared Pool) : 고정영역 (Permanent Area) + 동적영역 (Dynamic Area)
    - 동적영역 : 라이브러리 캐쉬 + 데이터 딕셔너리 캐쉬
    - SQL 쿼리 (Clicent) -> Data Dictionary에서 테이블 존재유무 파악 
       -> Query가 올바르면 Library Cache에 분석 정보, 실행 계획을 저장한다.
    - SHARED_POOL_RESERVED_SIZE
       : 메모리에 미리 공간을 확보하여 메모리 조각 부족으로 SQL 수행이 실패하는 것을 막기 위해 설정한다.
         너무 크면 메모리 낭비되고, 작으면 ORA-4031 에러 발생 가능성이 올라감

 

데이터 버퍼 캐쉬 (Data Buffer Cache)
    - 디스크에서 읽은 자료를 메모리에 저장할 때 사용하는 기억장소
    - DB_CACHE_SIZE
    - 디스크 I/O를 줄이려고 가장 크게 잡힌다.




리두 로그 버퍼 (Redo Log Buffer)


대형 풀 (Large Pool)


자바 풀 (Java Pool)



SQL> show sga

Total System Global Area  285212672 bytes
Fixed Size      1218992 bytes
Variable Size     75499088 bytes
Database Buffers   205520896 bytes
Redo Buffers      2973696 bytes

SQL> select * from v$sga;

NAME           VALUE
---------------------------------------- ----------
Fixed Size        1218992
Variable Size       75499088
Database Buffers     205520896
Redo Buffers        2973696


SQL> select * from v$sgastat;

POOL    NAME          BYTES
------------------------ ---------------------------------------------------- ----------
...

shared pool   KTI latches           288
shared pool   KKJ WRK LAT           300
shared pool   kfkhsh_kfdsg          2052
shared pool   event statistics ptr arra         680
shared pool   KGKP randnum         40000
large pool   PX msg pool        206208
large pool   free memory       3988096
java pool   free memory       4194304

597 rows selected.



SQL> select * from v$sga_dynamic_components;

COMPONENT                CURRENT_SIZE MIN_SIZE   MAX_SIZE USER_SPECIFIED_SIZE OPER_COUNT LAST_OPER_TYPE       LAST_OPER_MODE  LAST_OPER_TI GRANULE_SIZE
-------------------------------------------------------------------------------------------------------------------------------- ------------ ---------- ---------- ------------------- ---------- -------------------------- ------------------ ------------ ------------
shared pool                    67108864 67108864   0        0   0 STATIC          4194304
large pool                     4194304  4194304   0        0   0 STATIC          4194304
java pool                     4194304  4194304   0        0   0 STATIC          4194304
streams pool                    0        0   0        0   0 STATIC          4194304
DEFAULT buffer cache                  205520896  205520896   0        0   0 INITIALIZING          4194304
KEEP buffer cache                   0        0   0        0   0 STATIC          4194304
RECYCLE buffer cache                   0        0   0        0   0 STATIC          4194304
DEFAULT 2K buffer cache                   0        0   0        0   0 STATIC          4194304
DEFAULT 4K buffer cache                   0        0   0        0   0 STATIC          4194304
DEFAULT 8K buffer cache                   0        0   0        0   0 STATIC          4194304
DEFAULT 16K buffer cache                  0        0   0        0   0 STATIC          4194304
DEFAULT 32K buffer cache                  0        0   0        0   0 STATIC          4194304
ASM Buffer Cache                   0        0   0        0   0 STATIC          4194304

13 rows selected.



SQL> alter system set parameter_name=변경값;

예제) alter system set db_cache_size = 20M;
        alter system set shared_pool_size = 28M;


SQL> show parameter cache_size


 

DBMS_JAVA 패키지 설치 여부 확인

SQL> select object_name from dba_objects where object_name = 'DBMS_JAVA';

OBJECT_NAME
-------------------------------------------------------------------------------------------------------
DBMS_JAVA
DBMS_JAVA
DBMS_JAVA

파라미터 정보 확인

- JAVA_POOL_SIZE 확인

SQL> show parameter java

NAME         TYPE      VALUE
------------------------------------ ---------------------- ------------------------------
java_max_sessionspace_size      integer             0
java_pool_size                            big integer       0
java_soft_sessionspace_limit        integer            0

- SHARED_POOL_SIZE 확인

SQL> show parameter shared_pool_size

NAME         TYPE      VALUE
------------------------------------ ---------------------- ------------------------------
shared_pool_size       big integer     0

- 파라미터 정보 확인

SQL> l
  1  SELECT name, value FROM v$parameter
  2* WHERE UPPER(name) LIKE '%DB%'
SQL> /

NAME                                      VALUE
----------------------------------------------------------------------------------------------
dbwr_io_slaves                         0
db_file_name_convert
db_block_buffers                       0
db_block_checksum            TRUE
db_block_size                       8192
.....


PFILE, SPFILE 파일

- PFILE 생성


- SPFILE 생성



Control 파일

- 조회

SQL> select value from v$parameter where name='control_files';

VALUE
-------------------------------------------------------------------------------------------------------/oracle/app/oracle/oradata/OCRL/control01.ctl, /oracle/app/oracle/oradata/OCRL/control02.ctl, /oracle/app/oracle/oradata/OCRL/control03.ctl

SQL> show parameter control_files;

NAME                TYPE      VALUE
---------------- --------- ------------------------------
control_files        string      /oracle/app/oracle/oradata/OCR
                                      L/control01.ctl, /oracle/app/o
                                      racle/oradata/OCRL/control02.c
                                       tl, /oracle/app/oracle/oradata
                                      /OCRL/control03.ctl

SQL> SELECT name  FROM V$CONTROLFILE;

NAME
----------------------------------------------------------------------------------------------
/oracle/app/oracle/oradata/OCRL/control01.ctl
/oracle/app/oracle/oradata/OCRL/control02.ctl
/oracle/app/oracle/oradata/OCRL/control03.ctl


Redo Log 파일

- Log Group 정보

SQL> SELECT groups, current_group#, sequence# FROM  V$THREAD;

    GROUPS    CURRENT_GROUP#  SEQUENCE#
    ----------     --------------        ----------
              3                       1                       35

GROUPS : Online redo log group의 수
CURRENT_GROUP# : 현재 log group 번호

- Group, Member 정보

SQL> select group#, sequence#, bytes, members, status FROM v$LOG;

    GROUP#  SEQUENCE#    BYTES    MEMBERS STATUS
  ---------- ---------- ---------- ---------- --------------------------------
              1     35 52428800           1                   CURRENT
              2     33 52428800           1                   INACTIVE
              3     34 52428800           1                   INACTIVE

 - CURRENT  : LGWR Process 가 현재 사용중인 상태.
 - ACTIVE      : 사용중이지는 않지만 긴 트랜젝션으로 인해  Recovery 에 필요한 상태.
 - INACTIVE   : Recovery 에도 필요하지 않은 상태


SQL> select group#, status, member from v$logfile;

    GROUP#       STATUS       MEMBER
----------------------------------------------------------------------------------------------
              3         STALE       /oracle/app/oracle/oradata/OCRL/redo03.log
              2         STALE       /oracle/app/oracle/oradata/OCRL/redo02.log
              1                          /oracle/app/oracle/oradata/OCRL/redo01.log







[참고 : 오라클클럽 (www.oracleclub.com)]


일단 SQL Plus나 Orange 로 연결을 성공한 다음부터 할 수 있는겁니다.
tnsnames.ora 설정하는 부분은 생략합니다.

(1) tablespace 생성
create tablespace member
datafile 'e:\oracle\oradata\ora9idev\member.dbf'
size 30M;

(2) tablespace 생성
create tablespace member_idx
datafile 'e:\oracle\oradata\ora9idev\member_idx.dbf'
size 10M;

(3) user 생성
create user member identified by member
default tablespace member
temporary tablespace temp;

(4) 사용자에 권한 부여
grant connect, resource to member;

(5) 생성한 user로 접속
connect member/member@peg

(6) 테이블 생성
create table member
(member_no  char(4) not null,
name        varchar2(8),
in_date     date,
out_date    date,
member_div  char(1),
birthday    date,
sex         char(1),
zip_code    char(6),
address     varchar2(100),
h_tel       varchar2(100),
office      varchar2(100),
o_tel       varchar2(100),
hand_tel    varchar2(100),
call_no     varchar2(100),
fax_no      varchar2(100),
constraint member_pk_key primary key (member_no)
using index tablespace member_idx storage (initial 4k next 4k))
tablespace member storage (initial 4k next 4k);


참고자료 ; 파워빌더 11.x  대림

+ Recent posts