행위

Sqlplus

DB CAFE

1 SQL PLUS 사용법(Oracle)

1.1 사용법

1.1.1 SQL*PLUS 접속

$ sqlplus / as sysdba                    // 로컬에서 SYS 계정으로 접속
$ sqlplus scott/oracle                     // 로컬에서 일반계정 SCOTT 유저로 접속
$ sqlplus system/oracle                  // 로컬에서 SYSTEM 유저로 접속
$ sqlplus system/oracle@massdb     // 클라이언트나 로컬에서 리스너를 이용하여 SYSTEM 유저로 접속

1.1.2 HELP 사용법

SYS@testdb> help start           // start 관련 명령어를 출력
SYS@testdb> help shutdown    // shutdown 관련 명령어를 출력
SYS@testdb> help a               // a와 연관된 명령어 모두 출력

1.1.3 TABLE 구조 확인

SYS@testdb> desc tablename   // tablename의 구조를 보여 줍니다.

1.1.4 Unix/Linux 쉘 명령어를 수행

SYS@testdb> ! ls -al              // 현재 유닉스/리눅스의 목록을 보여줍니다.
SYS@testdb> host ls -al         // 위와 동일 함

1.1.5 이전 SQL 재수행

SYS@testdb> / // 메모리로 불러온 SQL 문을 실행 하게 됩니다.(이전) SYS@testdb> L // 메모리로 불러온 SQL 문을 보여 줍니다.(이전)

1.1.6 SQL 편집

SYS@testdb> ed[IT] // 기본적으로 1번 이상의 SQL을 수행해야 합니다.(버퍼관련..) SYS@testdb> ed[IT] file // 편집 후 저장하게 되면 file.sql로 저장 됩니다.

1.1.7 파일로 저장

SYS@testdb> save filename // filename.sql 파일을 현재 디렉토리에 저장 SYS@testdb> save /doc/filename // /doc/filename.sql 디렉토리에 저장(절대경로)

1.1.8 SQL 파일로 저장(spool)

SYS@testdb> spool filename.txt     // filename.txt 현재 시점 부터 화면 내용 저장
SYS@testdb> spool off                 // filename.txt 저장 해제

1.1.9 SQL 스크립트 수행

SYS@testdb> @script // 현재 디렉토리의 script.sql을 수행 합니다.

1.1.10 명령어를 화면에 Display

SYS@testdb> set echo [On/Off] // on, off 따라 다릅니다.

1.1.11 SQL 수행 시간 켜기

SYS@testdb> set timing [on/off] // sql문장이 처리되는 시간을 표시 기본값은 off

1.1.12 컬럼명 On/Off

SYS@testdb> set heading [on / off] // 컬럼 명 설정 또는 해제

1.1.13 버퍼에서 사용 하는 명령어

SYS@testdb> A // 라인끝에 텍스트를 추가 SYS@testdb> C/old/new // old 를 new로 바꿈 SYS@testdb> I text // 다음 line 에 text를 추가 SYS@testdb> L // 전체 문자을 화면에 보여 ("이전 SQL 재 수행" 내용을 참조) SYS@testdb> n text // n라인 전체를 text로 바꿈 SYS@testdb> R // buffer에 있는 문장 실행 SYS@testdb> edit // buffer에 있는 문장을 file로 부름 ("SQL 편집" 내용을 참조)

1.1.14 그 외 SET 환경 설정

SYS@testdb> colsep (text) // 칼럼이 표시될때 칼럼의 구별문자 기본값 공백 SYS@testdb> feedback (off | on) // 선택된 행이 몇 행인지 표시함 기본값은 6행이상일때 on SYS@testdb> linesize (n) // 한줄에 표시될 텍스트숫자 기본값80 SYS@testdb> pages (n) // 한페이지당 표시되는 라인수 기본값 24 SYS@testdb> paues (on | off | text) // 엔터키를 누를때마다 화면이 지나감 기본값은 off SYS@testdb> verify (on | off) // & 변수로 값을 받을 경우 화면에 확인하기 위해 old,new를 표시할 것인지 기본값은 on SYS@testdb> show all // 환경이 어떻게 설정 되었는가 확인

1.2 사용팁

1.2.1 SQLPLUS 상에서는 Auto Commit이 안된다.

그러므로 중간 중간 " COMMIT "를 수행한다.

1.2.2 한 화면씩 보여주는 기능

> set pause on; (설정) 
set pause off; (해제)

※ 설정을 하고나서 SQL 명령을 수행하면 커서가 그 다음 LINE에서 대기하고 있으므로 [Enter] Key를 친다. 그 다음부터는 Enter키로 한화면씩 보면 됨

1.2.3 Unix Shell 명령어를 사용하기 위해서는 ?

> ! 를 붙여 사용한다. 
or 
> host

1.2.4 바로전에 실행한 SQL문을 FILE로 저장하려면 ?

> save

1.2.5 파일의 내용을 메모리로 불러오려면 ?

> get  를 붙여 사용한다.

1.2.6 메모리로 불러온 SQL문이나 메모리에 있는 명령 실행

>  /  를 붙여 사용한다.

1.2.7 바로 전에 수행한 명령어 편집

>  ed  를 붙여 사용한다.

1.2.8 바로 전에 수행한 명령어

> l 를 붙여 사용한다.

1.2.9 SQL문이 있는 FIle 바로 실행

> @ 또는 Start 를 붙여 사용한다.

1.2.10 Columns 명을 나타내지 않는다.

> set heading off / on

1.2.11 한번에 DATA를 가져오는 단위

set arraysize line_number(숫자);

1.2.12 sql문 수행 소요되는 시간

> set timing on / off

1.2.13 sqlplus 프로파일에 추가

$ORACLE_HOME/sqlplus/admin/glogin.sql 에 초기값 세팅 함.

SET sqlprompt "_USER'@'_CONNECT_IDENTIFIER> "      // 프롬프트 변경

1.2.14 sqlplus 실행후 적용 하기

SET sqlprompt "_USER'@'_CONNECT_IDENTIFIER SQL> "

1.2.15 & 문자를 입력대기 문자로 인식 하지 않도록 ?

SET DEFINE OFF
INSERT INTO DEPARTMENT (DEPARTMENT_NAME) VALUES ('Finance & Treasury');

1.3 SYS 로그인 실패

1.3.1 토드/오렌지 툴 접속 이 안될경우 ORA-01017

$ORACLE_HOME/dbs/orapwSID 파일(sys 암호를 저장하는) 생성 해야함

orapwd file=$ORACLE_HOME/dbs/orapwsid1 password="SYS암호문자" force=y