티스토리 뷰

웹개발/DataBase

Oralce 기본 사용 명령어

야쿠 yaku 2011.07.16 23:59
-- 오라클 설치 후


 SQL PLUS 실행
 
사용자 명 입력 : sys/change_on_install as sysdba
 
데이터베이스 실행 : startup force

nomount 단계 : startup nomount
 
mount 단계 : alter database mount
 
open 단계 : alter database open;
 
:: FORCE 옵션은 현재 데이터베이스가 이미 시작된 상태라면 자동으로 데이터베이스를 종료후 시작해 준다.
 
:: RESTRCT 옵션은 데이터베이스를 정상적으로 구동해 줍니다.


데이터베이스 종료
 
SQL> shutdown normal
 
:: normal 멸령어를 사용할 때 옵션을 표시하지 않으면 기본적으로 normal 입니다.
 
:: Transactional 데이터베이스 종료하는 시점에 접속된 사용자가 존재하는 경우 데이터베이스를 종료하지 않고 작업을 종료 할때가지 기다렸다가 종료하는 옵션입니다.
 
:: immediate 데이터베이스를 즉시 종료시키는 옵션입니다.
 
:: shutdown abort 옵션과 유사하게 데이터베이스를 즉시 종료시키는 옵션입니다.
 

데이터베이스에서 bert 사용자 생성
 
sqlplus : sys/change_on_install as sysdba
 

sql> create user bert identified by bert;
 
sql> grant resource,connect to bert;
 
사용자 변경
 
sql> alter user bert identified by 12312;
 
사용자 삭제
 
sql> drop  user bert;
 
암호병경 허용
 
sql> alter user scott password expire;
 
sql> alter user scott account unlock; // 금지된 사용자의 계정과 암호를 다시 사용할 수 있도록 허용한다.
 
sql> conn / as sysdba
 

[권한]
 
1. 시스템 권한 부여
 
sql> create user yaku identified by 12312
 
sql> grant create session to yaku; 데이터베이스에 접속 할 수 있는 권한
 
sql> grant create table to yaku; 접속 후 table 만들고 싶다면 create table 권한

sql> grant create view to yaku; 접속후 뷰 만들수 있는 권한
 

2.시스템 권한 취소
 
sql> revoke create session from yaku;
 
sql> revoke create view from yaku;
 

[public 과 with admin options 옵션 ]
 
sql> grant create session TO PUBLIC;  시스템 권한을 데이터베이스에 생성된 모든 사용에게 부여할때 옵션
 
sql> grant create table to yaku WITH ADMIN OPTION; 해당 사용자에게 시스템 권한을 사용할 수 있도록 부여
 

[객체권한]
 
sql> conn scott/12312;
 
sql> create table emp1( a number);
 
sql> grant select on emp1 to yaku; // 셀렉트
 
sql> grant update on emp1 to yaku;
 
sql> grant delete on emp1 to yaku; //삭ㅈ
 
sql>grant all on emp1 to yaku;
 

[롤 ]
 
1.connect 데이터베이스에 접속할 수 있는 기본 권한 롤
 
2.resouce 기복적인 객체를 생성  , 변경 , 삭제 할수 있는 룰
 
3.dba 오라클 데이터베이스를 관리하기 위한 필요한 권한을 가진 룰
 
4.exp_full_database,imp_full_database 데이터베이스에서 제공하는 expert,import 툴을 사용할 수 있는 권한을 가진 룰
 
5.sysdba 데이터베이스의 시작과 종료 및 모든 관리를 하기위해 필요한 권한을 가진 룰
 
6.sysoper sysdba 롤 권한 더불어 데이터베이스를 생성할 수 있는 권한을 가진 롤
 

sql> create user sqlary identified by salary123;
 
sql> grant resouce,connect to salary;
 

[테이블 스페이스 생성]
 
----ms sql--------------|-------oracle(9i)----
자동 균일 증가   | 1block = (2,4,8,16,32KB)
1page = 8KB    | 테이블 생성시 지정해 줄 수 있다...
1extent = 8pages = 64KB | 1extent = 8blocks
------------------------|---------------------
create tablespace last_2005
datafile 'c:\last_2005.dbf' size 20m
extent management local
segment space management auto;

desc dba_users --사용자 계정테이블 구조를 조회함

--테이블 스페이스 생성하기....
create tablespace salestbs
datafile 'c:\oracledata\salestbs01.dbf' size 20m
extent management local --EXTENT관리를 LOCAL 오라클 서버에서 자동으로 하게 함..
segment space management auto; --SEGMENT 공간관리도 자동으로 관리하게 함...


desc dba_tablespaces --테이블스페이스정보 테이블 구조 조회함

select * from dba_tablespaces --contents:temporary --> 임시테이블스페이스임... (소트할때 PGA가 부족할 때 사용되어지는 부분)
 
select file_id, file_name, tablespace_name, bytes, status
from dba_data_files;
 
select *
from dba_users;
 
desc dba_temp_files --temporary tablespace 확인하기...
 
select file_id, file_name, tablespace_name, bytes, status from dba_temp_files;
 

create user orauser1 identified by tpdlf; --일반 사용자를 이렇게 생성하면 현재 테이블스페이스에 생성되므로 주의해야 함...


select *          -- 계정이 생성된 테이블 스페이스 확인하기...
from dba_users
where username = upper('orauser1')
--기본테이블스페이스가 system으로 잡혀있는 사용자가 테이블을 만들면 그 테이블들은 system 테이블스페이스에서 만들어지므로
--성능의 저하가 발생됨... (시스템이 기본정보를 저장/조회하는 영역으므로 일반 사용자도 이곳을 사용하면 DISK IO 가 많아짐...
 
select *  --사용자 계정 권한의 종류 확인하기
from system_privilege_map where name like 'CREATE%'
 
SELECT *  --ORAUSER1 계정에 대한 시스템 권한 확인하기
FROM DBA_SYS_PRIVS
WHERE GRANTEE='ORAUSER1'
 
GRANT CREATE SESSION TO ORAUSER1; --로그인 할 수 있는(세션생성) 권한 주기
GRANT CREATE TABLE TO ORAUSER1; --CREATE TABLE 할 수 있는 권한 주기
 
--계정생성 순서
-> 계정생성 -> 세션(로긴)허용 -> 해당테이블스페이스 쿼터 할당


ALTER USER ORAUSER1 --SYSTEM TABLESPACE 에서 사용자에게 2MB 할당해주기
QUOTA 2M ON SYSTEM -- 10M, 5M, UNLIMITED 등등 할당 할 수 있음
 

--시스템 테이블 조회하기 (일반유저)
SELECT * FROM DBA_USERS --일반유저는 사용 불가능함...
SELECT * FROM USER_USERS--자기 소유의 내용만 조회 가능함 (일반계정도 사용 가능 - 자기 정보 조회)
 

--테이블 조회하기...
SELECT * FROM DBA_TABLES WHERE OWNER = 'ORAUSER1'  --특정 사용자가 만든 테이블 조회하기

SELECT * FROM USER_TABLES --일반 유저도 조회 가능함 (자기계정 확인)


DROP USER ORAUSER1 --사용자 계정 삭제하기...(해당 계정소유의 오브젝트가 있다면 바로 삭제가 불가능함..)
DESC DBA_OBJECTS
 
SELECT *  FROM DBA_OBJECTS WHERE OWNER='ORAUSER1'   --삭제할 계정소유의 오브젝트 확인하기...


DROP TABLE ORAUSER1.MYTAB --삭제할 계정소유의 테이블 먼저 삭제함...
 

--또는 삭제할 계정을 삭제할 때 그 소유의 오브젝트를 모두 지우고 삭제함..
DROP USER ORAUSER1 CASCADE
 
CREATE USER ORAUSER2 IDENTIFIED BY TPDLF
DEFAULT TABLESPACE SALESTBS
TEMPORARY TABLESPACE TEMP
QUOTA 5M ON SALESTBS  --SALESTBS 테이블스페이스는 5MB 할당
QUOTA UNLIMITED ON TEMP  --임시 테이블스페이스는 모두 할당

GRANT CREATE SESSION TO ORAUSER2  --로긴 권한 부여
GRANT CREATE TABLE TO ORAUSER2  --테이블 생성 권한 부여
 
SELECT *   --DATA DICTIONARY 항목 보기
FROM DICTIONARY
 
SELECT *   --조건에 맞는 DIC 항목 보기
FROM DICT
WHERE UPPER(COMMENTS) LIKE '%USER%'
AND TABLE_NAME LIKE 'DBA_%'
 
SELECT *
FROM DICT
WHERE UPPER(COMMENTS) LIKE '%SYSTEM PRIVILEGE%'
AND TABLE_NAME LIKE 'USER_%'

SELECT *   --현재 데이타베이스 서버에 접속하고 있는 사용자(터미널) 검색하기
FROM V$SESSION
 
ALTER SYSTEM KILL (SID#), (SERIAL#) --현재 접속하고 있는 세션 강제 죽이기...

select tablespace_name, sum(bytes) "Free Bytes" --각 테이블스페이스 파일의 원래 할당 크기 확인...
from dba_data_files
group by tablespace_name

--현재 사용중인 테이블스페이스 파일 공간 확인하기....
select a.tablespace_name,
    a.file_name,
    a.bytes,
    b."free byte",
    (a.bytes - b."free byte") "사용중인 공간"
from dba_data_files a, (select tablespace_name, sum(bytes) "free byte"
          from dba_free_space
      group by tablespace_name
      ) b
where a.tablespace_name = b.tablespace_name
 
-- SALESTBS라는 테이블스페이스 대한 모든 소유자들과 사용량 등 확인 
SELECT OWNER, SEGMENT_NAME, SEGMENT_TYPE, BYTES, BLOCKS
FROM DBA_SEGMENTS
WHERE TABLESPACE_NAME = 'SALESTBS'
 

* table space생성
 
create tablespace 테이블스페이스명 datafile 'C:\경로......\파일이름.dbf' size 10M;
 
* 사용자 생성
 
create user 계정 indentified by 패스워드 default tablespace 테이블스페이스 (요기서 지정된 테이블스페이스가 디폴트로 지정)
 
* 권한주기
 
grant connect, resource(권한나열) to 사용자계정;
 


:: 디폴트 패스워드 확인

select * from dba_users_with_defpwd


 DB_NAME과 SID 확인 방법
 
Oracle SID를 알려면 다음 처럼 질의 합니다.

SQL> select instance from v$thread;

INSTANCE
----------------
LSMS

Oracle DB_NAME은 다음 처럼 질의 하구요...

SQL> select name from v$database;

NAME
---------
LSMS

ORACLE_SID나 DB_SID는 같은 값을 가리키며 v$thread에서 확인 가능!!
DB_NAME은 v$database에서 확인 가능!!!

저작자 표시
신고

'웹개발 > DataBase' 카테고리의 다른 글

INDEX 제대로 사용하기  (0) 2011.07.17
오라클 페이징 처리 하기  (0) 2011.07.17
Oralce 기본 사용 명령어  (0) 2011.07.16
postgresSql 사용법 정리 ( 간단 )  (0) 2011.07.16
Mysql 자료  (0) 2011.06.07
MySql UTF-8 설정  (2) 2011.01.30
댓글
댓글쓰기 폼