2009. 3. 14. 03:25 Program.../Oracle
Oracle 유저 생성,삭제 및 테이블, 테이블스페이스 생성, 삭제
/* SYS로 접속하여 실행 */
--- TABLE CREATE ---
-- 1. 테이블 스페이스 생성
create tablespace develtbs
datafile 'c:\data\develtbs01.dbf' size 2048k -- size는 64kb의 배수로 하는것이 좋다.
extent management local
segment space management auto;
--|| 생성되어진 tablespace 조회
select *
from dba_data_files;
-- 2. user create
create user orauser1 identified by pass123 --user만들기
default tablespace develtbs -- 위에서 생성한 tablespace사용
temporary tablespace temp; -- temp는 유저가 oder by를 할때 사용할 공간을 설정해주는 것이다.
--|| 연결권한을 줘야 접속이 가능하다.
grant create session to orauser1;
--|| 새로만들어진 계정으로 접속하기
create table testtbl
(no number, name varchar2(10)); -- 권한이 없어서 테이블 생성이 안된다.
--|| orauser1 자신에게 부여되어진 system 권한을 조회
select *
from user_sys_privs;
--|| sys로 다시 접속하여 테이블 생성 권한을 준다.
grant create table to orauser1;
--|| 새로운 유저로 접속하여 권한을 조회하면 권한이 되있다
--|| 그리고 테이블을 생성하면 할당량이 주어지지 않아서 또다시 테이블 생성이 안된다.
select *
from user_users; -- 테이블 저장하는 테이블 스페이스 조회
select *
from user_ts_quotas; -- ts(tablespace)의 공간조회
--|| sys로 할당량을 준다.
alter user orauser1
quota 1024k on develtbs
quota 1024k on temp;
--|| 다시 새로운 유저로 공간조회를 하면 공간이 주어지게된다. 그리고 테이블도 생성이 된다.
create table testtbl
(no number, name varchar2(10)); -- 이것은 아무이상없이 생성이 된다.
insert into testtbl values(1, '홍길동');
select * from testtbl; -- 자료를 넣어주고 select하면 테이블이 생성된것을 확인할수 있다.
create table testtbl2
(name varchar2(10)) tablespace develtbs;
create table testtbl3
(name varchar2(10)) tablespace users; -- 이것은 users에 테이블 생성이 가능하도록 주어지지 않았기때문에
-- 생성이 되지 않는다. sys가 권한을 주어야 한다.
-- tablespace users라고 입력을 하지 않게되면 해당 테이블은
-- 처음유저 생성시 sys가 정해준
테이블스페이스에 저장이 되게 된다.
--|| sys로 users테이블스페이스에 무제한 할당량을 주어본다.
alter user orauser1
quota unlimited on users;
--|| 다시 새로 생성한 유저로 와서 테이블을 생성해보자
create table testtbl3
(name varchar2(10)) tablespace users;
select * from user_tables; -- 사용하는 테이블을 검색해보면 사용하는 테이블 수와
-- 테이블 스페이스도 확인 할 수 있다.
-------------------------------------------------------------------------------------------
============================= 개 발 자 용 U S E R 생 성
=================================
-------------------------------------------------------------------------------------------
/* sys로 접속하여 다음과 같이 생성을 한다. */
create user javauser1 identified by pass123
default tablespace develtbs
temporary tablespace temp;
grant connect, resource to javauser1;
select * from dba_roles; -- 권한 그룹을 표시해 준다.
select *
from dba_sys_privs
where grantee in ('CONNECT','RESOURCE'); -- 해당 권한 그룹(ROLE)에서 가지고 있는 권한(PRIVS)을 보여준다.
/* 생성한 유저로 접속하여 다음과 같이 해보자 */
select * from user_sys_privs; -- 유저가 가진 권한을 보여준다.
create table mytab1
(name varchar2(10));
create table mytab2
(addr varchar2(20)) tablespace users; -- 위 두개의 테이블은 별도의 권한을 주지 않았는데도 생성이 된다.
select * from user_tables;
select * from user_role_privs; -- 유저에게 부여된 role(권한그룹)을 보여준다.
select *
from role_sys_privs
where role in ('CONNECT','RESOURCE') -- role안에 포함되어진 권한(privs)들을 보여준다.
--// 아무 무리 없이 테이블이 생성된다. 이러한 이유는 sys에서 유저 생성시 connect, resource라는
-- 권한 그룹(ROLE)에 대하여 권한을 주었기 때문에 그 권한 그룹안에 포함되어진 권한(privs)들이 자동적으로
-- 적용이 되어 일일이 하나씩 권한을 주지 않아도 된다.
/*/////// sys로 접속하여 실행 ///////*/
--- salesman이라는 사용자를 제거 ---
drop user salesman; -- 삭제가 안된다. cascade를 하라고 나온다.
drop user salesman cascade; -- cascade를 넣어주면 유저 소유의 object를 삭제후 유저를 삭제한다.
-- 단, 삭제할시엔 해당 유저를 접속종료한뒤 삭제한다.
-- Tablespace를 제거한다. --
select *
from dba_data_files; -- 현재 tablespace로 사용하는 파일들을 보여준다.
drop tablespace salestbs
including contents and datafiles; -- 원하는 tablespace 파일을 삭제한다. (절대 탐색기에서 임의로 지우지 말것)
'Program... > Oracle' 카테고리의 다른 글
Oracle 테이블 관리 (0) | 2009.03.14 |
---|---|
Oracle constraint(제약조건) (0) | 2009.03.14 |
Oracle 데이터 조작어(insert, update, delete commit, rollback) (0) | 2009.03.14 |
Oracle 서브상관쿼리, exists, not exists (0) | 2009.03.14 |
Oracle 서브쿼리(SubQuery) (0) | 2009.03.14 |