Secret Poten

#11.SQL PLUS에 접속방법 본문

오라클 데이터베이스[11gR2](#1~

#11.SQL PLUS에 접속방법

potentail 2017. 11. 8. 19:35

#10까진 SQL을 제대로 사용하는 법이 아닌 SQL을 배우기전 간단한 Introduction이였습니다.


#11부터는 SQL에 관해 설명 하도록 하겠습니다.

SQL이란 제가 앞서 설명했듯이 데이터베이스와 커뮤니 케이션을 하기위한 언어로써

오라클,MS SQL,My SQL 등등 각종 다른 데이터베이스와도 동일한 SQL문을 이용할 수 있습니다.

SQL은 표준화 정책으로 인해 모든 데이터베이스에서 동일하게 작동합니다.


다만 다른 데이터베이스에선 다른 명령어가 몇몇개 있을 수도 있습니다.

EX> 현재 데이터베이스의 파라미터를 변경하기 위한 명령어 등


일단은 제가 오라클DB말곤 제대로 써본적이 없어서 확답은 드리지 못하겠습니다.



1. oracle 유저로 리눅스 로그인


버추얼 머신을 시작하고 여기까지 오는데는 이제 어렵지 않게 하실 수 있을거라 생각합니다.


2. SQL*Plus에 접속


여기서부터 진짜로 SQL문을 작성해서 사용하게 됩니다.


먼저 SQL plus에 접속하기 위해선


sqlplus [계정명]/[비밀번호]@[tnsname]

이 기본 형식입니다.


tnsname은 생략이 가능합니다.

사실상 단일 인스턴스 데이터베이스에서는 의미가 없는것이기도 하죠.


하지만 sys유저로 데이터베이스에 로그인을 하려면


sqlplus sys/비밀번호 as sysdba

로 접속하여야 합니다.


우리는 아직 일반유저는 없기때문에 sys유저로 접속, 그후 scott이라는 계정의 락을 풀어주도록 합니다.


  • sqlplus / as sysdba


Q. 어라? 로그인할때 계정명과 비밀번호를 줘서 로그인을 하는것 아니였나요?

A. oracle이라는 유저는 리눅스(OS)계정에서 이미 인증을 받았던 계정이므로 계정명과 패스워드를 입력하지 않아도 sys권한으로 데이터베이스에 접속 할 수 있습니다.



oracle이란 계정은 dba라는 그룹에 포함되어있습니다.


그리고 이 dba라는 그룹은



이렇게 설치할때 관리자 그룹으로 설정을 해두었기 때문에

운영체제 계정에 만약 dba라는 그룹안에 계정이 포함되어있으면 언제든 sys권한으로 쉽게 접속 가능합니다.


그렇기 때문에 보안에 주의하여 설계 하셔야 합니다.


3. scott계정의 락 풀기 및 비밀번호 설정

오라클 데이터베이스의 계정은 비밀번호를 설정하면 테이블내에 따로 비밀번호가 암호화 되어서 저장됩니다.

하지만 이 암호는 복호화가 불가능 하기때문에 비밀번호를 찾을 수 없습니다.


그렇기 때문에 sys권한으로 비밀번호를 재설정 할 수 밖에 없습니다.


하지만 scott이라는 계정은 생성은 되어있지만 패스워드가 아직 부여되지 않았으며

계정은 잠겨 있습니다.


오라클은 이런식으로 미리 만들어진 계정은 잠궈둡니다. (보안을 위해)


실습을 위해 scott이라는 계정의 락을 풀어주도록 합니다.


  • ┌ALTER USER scott IDENTIFIED BY tiger
  • └ACCOUNT UNLOCK;

위 두줄은 이어서 쓰셔도 되고 중간에 엔터를 한번 넣어서 치셔도 됩니다.


이런식으로 명령어를 입력하게 되면 User altered.라는 성공메세지가 뜹니다.


※TIP

SQL에서는 명령어를 칠 때 대소문자를 구별하지 않습니다.

ⓐwhere 절에서 문자나 문자열을 찾을땐 대소문자 구분을 합니다.

ex> select ???? from ??? where name='A'

      select ???? from ??? where name='a'

      └다른문장


명령어를 잠깐 설명하자면

alter명령어는 데이터베이스의 정보,상태등을 변경할때 사용하는 명령어입니다.

거기에 user라는 명령어가 따라 붙으면서 유저의 정보를 변경하는 명령어가 되었습니다.


그리고 scott이라는 계정명을 주고 identified by로 비밀번호를 설정하게 합니다.

identified externally 라는 옵션도 있긴하지만 운영체제 단에서 계정에 무언가를 할 때 쓰는것이므로 언급하진 않겠습니다.


identified by로 비밀번호를 설정하였다면 엔터를 치고 내려가서

account unlock으로 계정의 락을 풀어주었습니다.


그리고 문장의 끝마침을 알리는 ;(세미콜론)으로 명령어를 실행하였습니다.


이것을 토대로 계정을 생성하고나면 이런식으로 비밀번호를 생성,변경을 할 수 있으며

계정을 락,언락할 수 있습니다.


4. scott 유저로 재접속

connect 명령어로 현재 세션에서 다른계정으로 넘어갈수 있습니다.


줄여서 conn까지만 쳐도 됩니다.


  • conn(ect) 계정명/비밀번호


중간에 오류한번 냈네요 ㅠㅜ... 잠을 못자서 그런지 많이 피곤한가봅니다.


일단 conn명령어로 유저를 변경하긴 했지만

Connected만 뜨고 진짜로 변경이 되었는지 잘 모르는 상태입니다.


  • show user


show user는 현재 접속중인 유저를 보여주는 명령어입니다.


scott으로 정상적으로 접속 했습니다.


5. Scott유저가 가진 emp테이블 쿼리

오늘은 글 제목처럼 SELECT를 사용만 해보는겁니다.

scott이라는 계정안에는 emp라는 사원테이블이 있습니다.

(데이터베이스를 만들때 샘플스키마를 체크하였다면 해당 테이블이 존재합니다)


emp테이블 뿐만이 아니라 dept테이블등 실습하기 정말 좋은 테이블들이 있습니다.


그러면 scott이 가진 emp테이블을 select해보도록 하죠.


  • SELECT * FROM emp;


명령어를 쳤을때 해당 캡쳐처럼 테이블과 그 테이블안에 내용이 보여지면 성공한 것입니다.


SQL설명할때 기초적인 문법은 제가 설명을 드렸습니다.


※TIP

SQL plus는 라인모드로 진행하는 것이기 때문에 터미널창이 작거나 하여 지저분하게 보이는 경우가 많습니다.

이럴경우 다른 SQL툴을 사용하여 데이터베이스에 접속하여 사용할 수 있습니다.

ex> SQL Developer, 올챙이, 토드 등등..


제가 써본건 SQL Developer밖에 없어서 올챙이나 토드가 SQL을 작성하는 툴이 맞는지도 아직은 정확하게 모르겠네요 ㄷㄷ...(관리도구인지 SQL작성도구인지 헷갈리네요)


일단은 오늘 알아보고 다음 포스팅 #12때는 SQL을 계속 나가는것이 아니라 툴을 소개해서 그 툴로 실습을 하도록 진행하겠습니다.


일단 SQL문법을 제가 설명드린대로 아시고 있다면 문제를 하나 낼테니 직접 SQL문을 작성하여 보시기 바랍니다.


>emp(사원테이블)에서 사원번호(empno)와 사원의 이름(ename)그리고 봉급(sal)을 가져오는 쿼리를 작성하여 보시오.


엄청 간단한거 같죠??


SQL을 처음 배울땐 쉬워보여도 뒤로 갈수록 골치아파집니다 ㅎㅎ~


오늘은 여기까지 진행하도록 하겠습니다.

터미널창은 exit 명령어를 계속 쳐서 sql plus에서도 접속종료해주신후

시스템->끄기 로 가상머신을 제대로 꺼주시기 바랍니다.




(Youtube) Secret Poten : http://goo.gl/ENeBOR

(Youtube) Secret Poten AE : http://goo.gl/qasbWH


그외 궁금한점은

공지사항을 잘보시고 오픈채팅으로 물어봐주시면 감사하겠습니다

공지사항 바로가기


-HardWare SetUp-

CPU : Intel i7-6700k(OC)

RAM : Samsung DDR4 8GB X 4 (32GB)

HDD : Seagate 1TB X 3 (3TB HDD), Seagate 4TB =Total 7TB

SSD : SanDisk SSD 256GB

VGA : Asus GTX1080 8GB(OC)

MB : Asus Z170-A STCOM

Case : Thermaltake Core X9

PSU : Micronics Performance II HV 850W Bronze

ODD : LG BH16NS55 (Blu-ray ODD)

Other : PSIONIC Custom Water Cooler (CPU set), LED Cooler (EA 8), Scarlett 6i6, MXL990




Comments