/* 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 파일을 삭제한다. (절대 탐색기에서 임의로 지우지 말것)

Posted by Duritz

공지사항

Yesterday
Today
Total
12-05 02:20

달력

 « |  » 2024.12
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31