by-nc-sa     개발자, DBA가 함께 만들어가는 구루비 지식창고!

10장. SQL DDL( NEW )




SQL 구문별 상세 설명 - 세션 컨트롤

  • 테스트
  • Session : 사용자가 인증 절차를 거쳐 데이터베이스 인스턴스와 연결되는 것을 말한다. ( SQL*PLUS, 소프트웨어 )
  • 동일한 사용자가 여러 개의 세션을 사용할 수 있으며 연결 소프트웨어를 종료하면 해당 세션도 종료된다.

현재 세션을 변경하는 ALTER SESSION ( page. 472 )

ALTER SESSION {SET {parameter_name = parameter_value} }...
  • SQL_TRACE : 현재 세션에서 SQL문장을 TRACE 지정
  • NLS_LANGUAGE : 현재 세션에서 언어 지정
  • OPTIMIZER_GOAL : 옵티마이저 모드를 지정

ALTER SESSION 테스트


SQL> SELECT * FROM AAABBB;
SELECT * FROM AAABBB
              *
1행에 오류:
ORA-00942: 테이블 또는 뷰가 존재하지 않습니다


SQL> ALTER SESSION SET NLS_LANGUAGE = ENGLISH;

Session altered.

SQL> SELECT * FROM AAABBB;
SELECT * FROM AAABBB
              *
ERROR at line 1:
ORA-00942: table or view does not exist


SQL> ALTER SESSION SET NLS_LANGUAGE = KOREAN;

세션이 변경되었습니다.

SQL> SELECT * FROM AAABBB;
SELECT * FROM AAABBB
              *
1행에 오류:
ORA-00942: 테이블 또는 뷰가 존재하지 않습니다

현재 세션을 활성화/비활성화시키는 SET ROLE ( page. 473 )

  • 역할( Role ) : 오라클이나 시스템이나 스키마를 가진 오브젝트( 테이블, 뷰 등)에 대해 권한을 그룹별로 묶어서 부여하여 사용자들의 권한을 쉽게 통제하기 위해
    만든 권한 관리( Privilege Management ) 단위다.
    
    SET ROLE { role [IDENTIFIED BY password]
                    [, role [IDENTIFIED BY password] ] ...
    		| ALL [EXCEPT role [, role] ...]
    		| NONE}
    
    
  • ALL은 현재 세션의 모든 역활(ROLE)을 활성화시키고
  • NONE은 현재 세션은 모든 역할을 비활성화시킨다.

SET ROLLE 테스트 ( page. 474 )


--SESSION 1
SQL> conn sys/ua0919@dev_new_test as sysdba
연결되었습니다.
SQL>
SQL> grant create role to hr;

권한이 부여되었습니다.

SQL> conn hr/hr@dev_new_test;
연결되었습니다.
SQL>
SQL> create role aaa;

롤이 생성되었습니다.

SQL> grant select on employees to aaa;

권한이 부여되었습니다.

SQL> grant aaa to scott;

권한이 부여되었습니다.

--SESSION 2
SQL> conn scott/tiger@dev_new_test;
연결되었습니다.
SQL>
SQL>
SQL>
SQL>
SQL> --세션 접속상태에서 ROLE 부여 전
SQL> select count(*) from hr.employees;
select count(*) from hr.employees
                        *
1행에 오류:
ORA-00942: 테이블 또는 뷰가 존재하지 않습니다

--세션 접속상태에서 ROLE 부여 후
SQL> select count(*) from hr.employees;
select count(*) from hr.employees
                        *
1행에 오류:
ORA-00942: 테이블 또는 뷰가 존재하지 않습니다


SQL> set role all;

롤이 지정되었습니다.

SQL> select count(*) from hr.employees;

  COUNT(*)
----------
       107

SQL> set role none;

롤이 지정되었습니다.

SQL> select count(*) from hr.employees;
select count(*) from hr.employees
                        *
1행에 오류:
ORA-00942: 테이블 또는 뷰가 존재하지 않습니다

SQL 구분별 상세 설명 - 시스템 컨트롤

  • 테이터베이스가 가동되어 있는 상태에서 다양하게 인스턴스 성격을 바꾸는 SQL 명령어가 시스템 컨트롤문장이다.

현재 기동되고 인스턴스의 성격을 변경하는 ALTER SYSTEM

ALTER SYSTEM {생략
                  | KILL SESSION 'integer1,integer2' }

alter system kill session '23,26870';

문서정보

Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.