ORACLE

오라클 사용자 삭제//사용자 삭제//테이블 정보

gold99 2024. 1. 17. 00:07

***
-사용자 삭제
-사용자  스페이스 생성
-scott.dmp 파일 복사
-테이블 정보
 -(분석하기)
 -(업데이트)
-테이블 이동
-권한
 -권한 보기
   -Role 보기
 -Role 에 부여된 정보 보기
 -'CONNECT' 에 부여된 Role 정보 보기
-Role 생성
 -롤에 권한 부여
 -사용자에게 롤 부여
 -테이블 영역  권한 주기(EJB 권한 부여)
 -다른 사용자에게 권한 부여
   --자신이 받은 권한을 다른 사용자에게(with admin option)
     다른 사용자에게 권한 부여 가능)하게
 -권한을 다시 회수(/as sysdba 에서 권한을 부여한  테이블의 권한을 다시 회수 해도 양도 받은     테이블은 권한이 적용됨)
 -롤 삭제

-객체 권한
 -다른 사용자 테이블 보기/지우기
 -아무(public) 사용자에게 score 권한 부여
 -public권한 취소
 -객체롤 삭제
-External table
==========================================================

nls_date_format  yyyy-mm-dd hh24:mi:ss  (레지스트에 등록)

--사용자 삭제
drop user ejb;

create tablespace ejb
 datafile 'd:\iedu\ejb.dbf' size 100m;
create temporary tablespace ejbtemp
 tempfile 'd:\iedu\ejbtemp.dbf' size 10m;

create user ejb
 identified by ejb
 default tablespace ejb
 temporary tablespace ejbtemp;

grant connect, resource to ejb;
conn ejb/ejb

select * from tab;

=================================================

conn /as sysdba

create user scott
 identified by tiger
 default tablespace ejb
 temporary tablespace ejbtemp;
==============================================
--scott.dmp 파일 복사
--새명령창
set oracle_sid=iedu
imp help=y
imp system/manager file=D:\lecture\oracle\scott.dmp fromuser=scott

========
원래창

select * from tab;
select * from big_emp;

 

conn ejb/ejb
create table test1(
a number,
b varchar2(20)
);
begin
 for z in 1..10 loop
  insert into test1 values(z,'aaa');
 end loop;
end;
/
commit;
select rowid,a,b from test1;

--테이블의 정보
conn /as sysdba
desc dba_tables;
select owner,TABLE_NAME,TABLESPACE_NAME,pct_free,pct_used,num_rows,chain_cnt from dba_tables
 where OWNER='EJB';

re:

OWNER                          TABLE_NAME
------------------------------ ------------------------------
TABLESPACE_NAME                  PCT_FREE   PCT_USED   NUM_ROWS  CHAIN_CNT
------------------------------ ---------- ---------- ---------- ----------
EJB                            TEST1
EJB                                    10         40

 

--테이블 정보(분석하기기)
analyze table ejb.test1 compute statistics for table;

re:
테이블이 분석되었습니다.

SQL> select owner,TABLE_NAME,TABLESPACE_NAME,pct_free,pct_used,num_rows,chain_cn
t from dba_tables
  2     where OWNER='EJB';

re:
OWNER                          TABLE_NAME
------------------------------ ------------------------------
TABLESPACE_NAME                  PCT_FREE   PCT_USED   NUM_ROWS  CHAIN_CNT
------------------------------ ---------- ---------- ---------- ----------
EJB                            TEST1
EJB                                    10         40         10          0

 

conn ejb/ejb
begin
 for z in 1..100000 loop
  insert into test1 values (z,'aaa');
 end loop;
end;
/
commit
conn /as sysdba

select owner,TABLE_NAME,TABLESPACE_NAME,pct_free,pct_used,num_rows,chain_cnt from dba_tables
       where OWNER='EJB';
re:
OWNER                          TABLE_NAME
------------------------------ ------------------------------
TABLESPACE_NAME                  PCT_FREE   PCT_USED   NUM_ROWS  CHAIN_CNT
------------------------------ ---------- ---------- ---------- ----------
EJB                            TEST1
EJB                                    10         40         10          0

SQL> analyze table ejb.test1 compute statistics for table;

테이블이 분석되었습니다.

SQL> select owner,TABLE_NAME,TABLESPACE_NAME,pct_free,pct_used,num_rows,chain_cn
t from dba_tables
  2         where OWNER='EJB';

re

OWNER                          TABLE_NAME
------------------------------ ------------------------------
TABLESPACE_NAME                  PCT_FREE   PCT_USED   NUM_ROWS  CHAIN_CNT
------------------------------ ---------- ---------- ---------- ----------
EJB                            TEST1
EJB                                    10         40     100010          0

---(업데이트)
-update ejb.test1 set b='12345678901234567890';

-analyze table ejb.test1 compute statistics for table;
-select owner,TABLE_NAME,TABLESPACE_NAME,pct_free,pct_used,num_rows,chain_cnt from dba_tables
          where OWNER='EJB';

re:
OWNER                          TABLE_NAME
------------------------------ ------------------------------
TABLESPACE_NAME                  PCT_FREE   PCT_USED   NUM_ROWS  CHAIN_CNT
------------------------------ ---------- ---------- ---------- ----------
EJB                            TEST1
EJB                                    10         40     100010          0


------------------------------------------------------------

--새로운 테이블스페이스 생성
create tablespace expert
 datafile 'd:\iedu\expert01.dbf' size 10m;

--테이블 이동
alter table ejb.test1 move tablespace expert;

analyze table ejb.test1 compute statistics for table;
select owner,TABLE_NAME,TABLESPACE_NAME,pct_free,pct_used,num_rows,chain_cnt from dba_tables
          where OWNER='EJB';
re:
OWNER                          TABLE_NAME
------------------------------ ------------------------------
TABLESPACE_NAME                  PCT_FREE   PCT_USED   NUM_ROWS  CHAIN_CNT
------------------------------ ---------- ---------- ---------- ----------
EJB                            TEST1
EXPERT                                 10         40     100010          0

==============================
---권한
create user e1
 identified by e1
 default tablespace ejb
 temporary tablespace ejbtemp;
create user e2
 identified by e2
 default tablespace ejb
 temporary tablespace ejbtemp;
create user e3
 identified by e3
 default tablespace ejb
 temporary tablespace ejbtemp;
=======================================================================================
--권한 보기
select * from system_privilege_map;
--Role 보기
select * from dba_roles;

--Role 에 부여된 정보 보기
select * from role_sys_privs;

--'CONNECT' 에 부여된 Role 정보 보기
select * from role_sys_privs where role='CONNECT';

re:

ROLE                           PRIVILEGE                                ADM
------------------------------ ---------------------------------------- ---
CONNECT                        CREATE VIEW                              NO
CONNECT                        CREATE TABLE                             NO
CONNECT                        ALTER SESSION                            NO
CONNECT                        CREATE CLUSTER                           NO
CONNECT                        CREATE SESSION                           NO
CONNECT                        CREATE SYNONYM                           NO
CONNECT                        CREATE SEQUENCE                          NO
CONNECT                        CREATE DATABASE LINK                     NO

------------------------
--RESOURCE 에 부여된 Role 정보 보기
select * from role_sys_privs where role='RESOURCE';

re:
ROLE                           PRIVILEGE                                ADM
------------------------------ ---------------------------------------- ---
RESOURCE                       CREATE TYPE                              NO
RESOURCE                       CREATE TABLE                             NO
RESOURCE                       CREATE CLUSTER                           NO
RESOURCE                       CREATE TRIGGER                           NO
RESOURCE                       CREATE OPERATOR                          NO
RESOURCE                       CREATE SEQUENCE                          NO
RESOURCE                       CREATE INDEXTYPE                         NO
RESOURCE                       CREATE PROCEDURE                         NO


---------------------------------------------------
--Role 생성
create role ejbrole;
-롤에 권한 부여
grant create session,create table to ejbrole;
-사용자에게 롤 부여
grant ejbrole to e1;   --create table 권한 부여
grant ejbrole to e2 with admin option;  (다른 사용자에게 권한 부여 가능)하게
conn e1/e1;
conn e2/e2;

conn e3/e3;
re:
ERROR:
ORA-01045: user E3 lacks CREATE SESSION privilege; logon denied
경고: 이제는 ORACLE에 연결되어 있지 않습니다.

conn e1/e1;

create table tt(
 a number,
 b varchar2(20)
);

re:
*
1행에 오류:
ORA-01950: 테이블 영역 'EJB'에 대한 권한이 없읍

conn /as sysdba

--EJB 권한 부여
alter user e1
 quota 10m on ejb;
alter user e2
 quota 10m on ejb;
alter user e3
 quota 10m on ejb;


conn e1/e1;

create table tt(
 a number,
 b varchar2(20)
);


-----------------
--다른 사용자에게 권한 부여

grant ejbrole to e3;

re:
*
1행에 오류:
ORA-01932: 롤 'EJBROLE'에 대한 ADMIN 옵션이 허가되지 않았습니다

----부여하기
conn e2/e2
create table tt(
 a number,
 b varchar2(20)
);
grant ejbrole to e3;

--권한을 다시 회수
conn /as sysdba
revoke ejbrole from e1;
revoke ejbrole from e2;

conn e3/e3

--롤 삭제
conn/as sysdba
drop role ejbrole;
conn e3/e3

--객체 권한
conn /as sysdba
grant connect,resource to e1;
grant connect,resource to e2;
grant connect,resource to e3;

--객체 생성
create role objrole;
conn scott/tiger
 select * from tab;

grant select on part to objrole;
grant select,delete on tech to objrole;

--권한 부여
conn/ as sysdba

grant objrole to e1;
grant objrole to e2 with admin option;

--다른 사용자 테이블 보기/지우기
conn e1/e1
select * from scott.part;
delete scott.part;  --삭제 안됨

select * from scott.dept;
delect scott.dept;  --선택,삭제 가능

select * from scott.dept;
insert into scott.dept values(33.'관리부','부산');

grant objrole to e3;


conn e2/e2
grant objrole to e3;

conn scott/tiger
grant select on score to public;  // 아무 사용자에게 score 권한 부여

--사용자에게 권한 부여
conn e2/e2
select * from scott.score;

-public권한 취소
conn scott/tiger
revoke select on score from public;

conn e2/e2
select * from scott.score;

--객체롤 삭제
conn /as sysdba
drop role objrole;

==============================================================================================
==External table


4-19-1.dat
4-19-1.dat 생성 ex) 15. 캔디,미국,1000

conn /as sysdba
grant dba to e1;
conn e1/e1

1. create directory cartoon as 'D:\lecture\oracle\ejb1기';
2. create table cartoon_e(
 no number,
 cname char(20),
 maker char(20),
 price number
)
organization external(
 type oracle_loader
 default directory cartoon
 location('4-19-1.dat','4-19-2.dat')
)
reject limit unlimited;   --에러시 언로드 되는 레코드 제한

   
select * from cartoon_e;


insert into cartoon_e
 values(11,'aa','bb',200);
select * from cartoon_e;

 

 

 

 

 

 

 

 

 

 


----------책의 내용 따라하기 333p~339p 까지 ---------------------
(없는 부분 추가)

create user you
 identified by you
 default tablespace ejb
 temporary tablespace ejbtemp;
create user seo
 identified by seo
 default tablespace ejb
 temporary tablespace ejbtemp;
create user kim
 identified by kim
 default tablespace ejb
 temporary tablespace ejbtemp;
create user seo
 identified by seo
 default tablespace ejb
 temporary tablespace ejbtemp;

drop user you;
drop user seo;