[접속]

윈도우 command에서 sqlplus / as sysdba 명령어 입력하여 접속

 

[작업 테이블 스페이스 지정]

기존에 만들어진 tablespace 정보 확인

SQL> SELECT tablespace_name, bytes, file_name FROM dba_data_files;

 

저장된 곳을 확인했으면 그곳에 200M 정도의 테이블스페이스를 만든다.

SQL > CREATE TABLESPACE 테이블스페이스명

2 DATAFILE 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\PIWMDB\PIWM01.DBF' size 200M;

 

 

[계정 생성]

SQL> CREATE USER 생성할 계정 이름 

2 IDENTIFIED BY 계정 비밀번호

3 DEFAULT TABLESPACE 테이블스페이스명

3 QUOTA UNLIMITED ON 테이블스페이스명;  // 테이블스페이스의 제한량 무한대

 

[계정에 대한 권한 설정]

GRANT CREATE SESSION, CREATE TABLE, CREATE SEQUENCE, CREATE VIEW TO 권한을 줄 계정명;

  

 

 

 

[테이블 스페이스 조회]

SELECT * FROM DBA_TABLESPACES;

 

[접속 권한 부여 (DML, DDL)]

GRANT RESOURCE, CONNECT TO 권한 받을 계정;

 

[SYNONYM 생성 권한 부여]

GRANT SYNONYM TO 권한 줄 계정명;

 

[테이블 권한 부여]

GRANT SELECT, INSERT, UPDATE, DELETE ON 권한 줄 테이블명 TO 권한 받을 계정;

 

[SYNONYM 생성]

CREATE SYNONYM 계정명.테이블명 FOR 테이블 소유자 계정명.테이블명;

  

[FUNCTION 실행 권한 부여]

GRANT EXECUTE ON 권한 줄 함수명 TO 권한 받을 계정;

 

[계정 삭제]

DROP USER  삭제할 계정 CASCADE;

 

[현재 계정 조회]

SELECT USER FROM DUAL;

 

[오라클 전체 테이블 권한 부여]

SELECT 'GRANT SELECT ON 테이블소유계정.'||TABLE_NAME || ' TO 권한을 줄 계정명;'

FROM ALL_TABLES WHERE OWNER = '테이블소유계정'



출처: https://artwook.tistory.com/244 [나비의 블로그]

 

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

티베로 작업시 필요로한 내용이다. 우연히 구글링하다 좋은 포스팅 발견하여 퍼왔다.


WRITTEN BY
테네시왈츠
항상 겸손하게 항상 새롭게 항상 진실하게

,

오늘 급히 오라클 세션을 강제로 종료할 일이 발생했다.

오라클 Job의 다음 실행일시를 변경해 주는 작업인데

나는 주로 SqlDeveloper를 사용하는데 이 Tool로 변경해 주었더니 제대로 먹히지가 않았었다.

난 당연히 잘 돌았겠지 했는데 좌절감을 맛 보았다.

 

그래서 Toad를 이용하여 다음 실행일시를 변경할려고 하는데 오랫만에 Toad를 열어보니 이 마저도 만만치 않는거다

다시 SqlDeveloper로 돌아와 변경을 하고 Toad에서 확인을 해보려 강제 실행을 했더니...

그 순간 아무런 반응이 없더니 늘 그렇듯 또 어..어.. 왜 이러지... 왜 이러지... db에 문제 생길까봐 얼른 강제로 세션

종료하는 구문을 찾아야만 했다.

 

그래서 나온 답이 아래와 같다.

SELECT * FROM V$SESSION WHERE STATUS = 'ACTIVE' AND USERNAME IS NOT NULL;
ALTER SYSTEM KILL SESSION '4,9839'; -- 'SID, SERIAL#'


WRITTEN BY
테네시왈츠
항상 겸손하게 항상 새롭게 항상 진실하게

,

오라클 LOCK 걸린 SQL을 찾아라

 


SELECT /*+ ORDERED */
       A.SID SID
     , TO_CHAR(B.SERIAL#) SEQ
     , ID1 ID1
     , TO_CHAR(B.AUDSID) AUD
     , B.USERNAME UNAME
     , B.OSUSER OSUSER
     , C.SQL_TEXT SQLSTMT
  FROM V$LOCK A
     , V$SESSION B
     , V$SQL C
 WHERE A.TYPE = 'TM'
   AND A.SID = B.SID
   AND C.HASH_VALUE(+) = B.SQL_HASH_VALUE;

 

 

SESSION KILL을 아래와 같이

ALTER SYSTEM KILL SESSION 'SID, SERIAL#'

 

 

 

 

참고 : http://nizistyle.tistory.com/4

 


WRITTEN BY
테네시왈츠
항상 겸손하게 항상 새롭게 항상 진실하게

,

오라클 계층형 쿼리

이전에 몇번 사용해 본거 같은데 오늘 조직도 관련하여 쓸일이 있어서 기술해 본다.


계층 관계가 있는 칼럼(외래키로 자기자신 테이블을 참조)이 있는 경우 계층 구조를 이용하여 데이터를 추출


select 칼럼 from 테이블 start with 조건 connect by [prior] [nocycle]


형식은 위 쿼리형태이다.


CREATE TABLE JOJIK (

    GROUP_CD VARCHAR2(20)

  , DEPT_CD VARCHAR2(20)

  , DEPT_NM VARCHAR2(50)

  , SUB_DEPT_CD VARCHAR2(20)

);


이렇게 테이블을 구성한뒤


SELECT LEVEL

     , GROUP_CD

     , LPAD(' ',(LEVEL-1)*2,' ')||DEPT_NM

     , DEPT_CD

  FROM JOJIK

 START WITH SUB_DEPT_CD IS NULL

       CONNECT BY PRIOR DEPT_CD = SUB_DEPT_CD

 ORDER BY GROUP_CD, ORDER_SEQ;


이렇게 쿼리를 구성하면 멋지게 다음과 같이 결과가 나온다.




WRITTEN BY
테네시왈츠
항상 겸손하게 항상 새롭게 항상 진실하게

,

--1. Logon
 sqlplus "/as sysdba"

--2. Table Space Create

 create tablespace TS_SETDBNAME_DATA01 datafile 'C:\oracle\product\10.2.0\oradata\SETDBNAME\ts_SETDBNAME_data01.dbf' size 1000M autoextend on next 100M;

 create tablespace TS_SETDBNAME_IDX01 datafile 'C:\oracle\product\10.2.0\oradata\SETDBNAME\ts_SETDBNAME_idx01.dbf' size 500M autoextend on next 50M;

--3. USER Create

 create user mesadmin identified by admin default tablespace TS_SETDBNAME_DATA01 temporary tablespace TEMP;  
      
 grant connect , resource, dba to mesadmin;
 


WRITTEN BY
테네시왈츠
항상 겸손하게 항상 새롭게 항상 진실하게

,


   -- 패키지.프로시저 내용
   SELECT ARGUMENT_NAME,DATA_TYPE,IN_OUT,SEQUENCE  FROM   all_arguments
    WHERE object_id =
    (SELECT object_id FROM all_objects WHERE owner = 'owner명'
    AND object_name ='패키지명'
    AND object_type ='PACKAGE')
    AND OBJECT_NAME='프로시저명'
    ORDER BY Object_Name, Overload, Sequence
   
   -- 프로시저 내용
   SELECT  ARGUMENT_NAME,DATA_TYPE,IN_OUT,SEQUENCE  FROM   all_arguments
    WHERE  object_id =
    (SELECT object_id FROM all_objects WHERE owner = 'owner명'
    AND object_name ='프로시저명'
    AND object_type ='PROCEDURE')
    ORDER BY Object_Name, Overload, Sequence

개인적으로는 이렇게 불러다가
각 파라미터의 정보등을 비교하여 자동으로 패키지, 프로시저를 호출하는 함수를 만들어 쓰고 있다.


WRITTEN BY
테네시왈츠
항상 겸손하게 항상 새롭게 항상 진실하게

,