2010년 8월 25일 수요일

오라클 설치, User만들기, Table 만들기, 데이터 입력.

오라클을 설치하자.
설치는 다음으로 대충 하면 되고,
전역 인스턴스 이름을 알면된다. 10g를 설치했을 경우 default로 orcl 일것이다.
전역아이디의 비밀번호를 입력하는 부분에서 꼭 기억해야한다.
자! 오라클 설치를 했으면....데이터베이스를 사용해야지.
데이터베이스를 사용한다. 뭘 어떻게 사용하냐.
데이터베이스는 데이터가 막 모여있다. 어떻게 모여있나. 테이블이라고 하는 틀에 데이터가 들어가게된다.
데이터베이스를 사용하기 위해서 테이블을 만들어야 하네. 자! 테이블을 만들어 보자.
그런데 테이블을 만들기 전에 내 ID가 있어야 한다. dbms 안에는 여러개의 데이터베이스 인스턴스가 있고, 데이터베이스 인스턴스 마다 엑세스가 가능한 user가 정해져있다.
system 이라는 user는 모든 걸 다 할수있는 계정이다. 계정을 id 라고도 하고 user라고도 하고, account 라고도 한다. 다 같은 말이다. 유식한 사람들이 있어보이려고 단어를 많이 만든 것 같다. 내가 매우 싫어하는 습관이지만 유식한척 하려면 어쩔 수 없다. 다 알아야지. 각설하고...
오라클을 설치할 때 default로 orcl 이라는 instance가 만들어졌다. 맨날 전지전능한 system이라는 계정을 사용할 수 없으니까, 그건 위기의 상황을 위해 남겨두고, 새로 user를 만들어 보자.
커맨드창의 프롬프트에서
sqlplus / as sysdba 로 접속을 하거나.
sqlplus 프로그램을 실행시켜서 system / 비밀번호 를 입력한다.
비밀번호는 설치할 때 입력했었다.
그럼 SQL> 이라는 프롬프트가 나온다. 자 이제 유저도 만들고, 테이블도 만들어 보자.
접속을 처음 했으면 지금은 admin계정인거다. admin 계정은 system, sysdba등 을 말하는데, 전지전능한 계정이다. 그럼 개인적으로 사용할 계정을 만들어보자.
create user test identified by test;
grant connect, resource, create view to test;
이렇게 하면 test라는 아이디에, test라는 비밀번호로 계정을 하나 만들었다.
그 계정에다가 connect, resource, create view를 할 수있는 권한을 줬다. 무슨 권한인지는 나도 잘 모르겠다.
그 다음에 그 계정으로 로그인을 하자.
conn test/test
이렇게 하면 test계정으로 로그인을 했다. 현재는 기본적으로 시스템이 가지고 있는 데이터베이스 인스턴스만 있다. 이 데이터베이스 인스턴스로는 아무것도 할 수 없다. 그저 현재 dbms에 무슨 데이터베이스 인스턴스가 있고, 사용자는 누구누구가 있으며, 각종 설정을 확인하고 수정할 수 있다. 지금 그게 필요한게 아니잖아!
이제 테이블을 만들어야지! 테이블을 만들어보자
create table sample
(id number,
data1 number,
data2 number,
data3 number,
data4 number,
data5 number,
data6 number,
data7 number,
data8 number,
data9 number,
data10 number);
이렇게 하면 테이블이 만들어진다. 11개의 열(column)을 가지는 테이블이다. id, data1, data2...하는 것은 컬럼의 이름이고, number는 그 컬럼에 들어갈 수 있는 데이터형이다. 전부다 숫자만 들어간다.
내가 임의로 만든 테이블이다.
그럼 여기다가 데이터를 넣어보자.
insert into sample values(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11);
이렇게 하면 id부터 data10 까지 순서대로 1~ 11이 들어간다.
들어간 데이터를 보고 싶으면..
select * from sample;
하면된다.
이상!


완전 고차원 스킬 추가!
샘플 데이터를 만드는 이유 중에 대용량 데이터를 테스트 해보기 위함이 있다.
그럼 insert를 매우 많이 해야한다. 100개, 1000개가 아니라 100000개, 1000000개를 해야한다. 일일이 insert 할텐가!
자!
먼저 테이블을 만들자. random_tab 이라는 이름의 테이블이다. tab_pk라는 첫번째 열은 pk 이다. pk는 primary key의 약자로 기본키 이다.
create table random_tab(

tab_pk number primary key,
random_val_50 number,
random_val_100 number);
두번째로 시퀀스라는 것을 만들어야 한다. 1000000개를 입력하려면 1~1000000까지 찍어주는 자동번호표가 있어야 한다. r_seq라는 이름의 시퀀스이다. 1부터 시작해서 1씩 1000000까지 늘어난다.


CREATE SEQUENCE r_seq
INCREMENT BY 1
START WITH 1
MAXVALUE 1000000
CYCLE NOCACHE;
이제 한방에 입력하는 방법이다. begin으로 시작해서 end로 끝난다. for ... loop를 사용해서 첫번째 열에다가는 r_seq라는 시퀀스를 이용해서 nextval를 넣는다. 그리고 두번째 세번째 열에는 랜덤값을 넣는다.
begin
 for i in 1 .. 1000000 loop
insert into random_tab value(select r_seq.nextval,round(dbms_random.value * 50, 0),round(dbms_random.value * 100, 0) from dual);
end loop;
end;
/
이렇게 하면 3개의 열과 백만개의 행을 가진 테이블 하나가 생겼다.
이것을 조금씩 조작하면 샘플테이블을 자유롭게 만들수 있을 것이다.

댓글 없음:

댓글 쓰기