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

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

h3.현재 세션을 변경하는 ALTER SESSION ( page. 472 )
{CODE:SQL}
ALTER SESSION {SET {parameter_name = parameter_value} }...
{CODE}

  • SQL_TRACE : 현재 세션에서 SQL문장을 TRACE 지정
  • NLS_LANGUAGE : 현재 세션에서 언어 지정
  • OPTIMIZER_GOAL : 옵티마이저 모드를 지정

ALTER SESSION 테스트

{CODE:SQL}

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: 테이블 또는 뷰가 존재하지 않습니다
{CODE}

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

  • 역할( Role ) : 오라클이나 시스템이나 스키마를 가진 오브젝트( 테이블, 뷰 등)에 대해 권한을 그룹별로 묶어서 부여하여 사용자들의 권한을 쉽게 통제하기 위해
    만든 권한 관리( Privilege Management ) 단위다.
    {CODE:SQL}

SET ROLE { role IDENTIFIED BY password
[, role IDENTIFIED BY password ] ...

ALL [EXCEPT role , role ...]
NONE}

{CODE}

  • ALL은 현재 세션의 모든 역활(ROLE)을 활성화시키고
  • NONE은 현재 세션은 모든 역할을 비활성화시킨다.

SET ROLLE 테스트 ( page. 474 )

{CODE:SQL}
--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: 테이블 또는 뷰가 존재하지 않습니다
{CODE}

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

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

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

{CODE:SQL}
ALTER SYSTEM {생략

KILL SESSION 'integer1,integer2' }

alter system kill session '23,26870';
{CODE}