오라클 기준으로 DBA 도움 없이도 업무상 필요시 종종 사용하게 되는 DBA성 쿼리를 기록해두려고 합니다. 추가로 업데이트 예정입니다.
Lock 확인 쿼리
테이블명을 안다면 아래와 같이 조회
SELECT A.SID
,A.SERIAL#
,A.USER_NAME
FROM V$SESSION A
, V$LOCK B
, DBA_OBJECTS
WHERE A.SID = B.SID
and A.SID = B.SID
and B.ID1 = C.OBJECT_ID
and B.TYPE = 'TM'
and C.OBJECT_NAME = '테이블명'
위 결과에서 확인된 SID, A.SERIAL# 확인하여 해당 SESSION kill
ALTER SYSTEM KILL SESSION 'SID, SERIAL#;
Tablespace 사용량 조회
SELECT A.TABLESPACE_NAME, A.FILE_ID,
ROUND(A.BYTES/1024/1024/1024, 2) AS USABLE, -- GB
ROUND( B.BYTES/1024/1024/1024,2) AS FREE,
TRUNC(100-(B.BYTES/A.BYTES*100),2) AS USED_RATE,
TRUNC(B.BYTES/A.BYTES*100,2) AS FREE_RATE
FROM (SELECT TABLESPACE_NAME, FILE_ID, SUM(BYTES) BYTES
FROM DBA_DATA_FILES
GROUP BY TABLESPACE_NAME, FILE_ID ) A,
(SELECT TABLESPACE_NAME, FILE_ID, SUM(BYTES) BYTES
FROM DBA_FREE_SPACE
GROUP BY TABLESPACE_NAME, FILE_ID ) B
WHERE A.TABLESPACE_NAME = B.TABLESPACE_NAME
AND A.FILE_ID = B.FILE_ID(+)
ORDER BY USED_RATE DESC;
default Tablespace 확인
select username, default_tablespace from dba_users where username = 'user1';
Table 권한 확인
-- USER1에 부여된 테이블 권한 확인
select * from dba_tab_privs where grantee = 'USER1';
DBlink 확인
DBLink명, 목적지 HOST명, 계정명 등 확인 가능
Private DBlink는 계정당 하나만 생성 가능함, DBlink 하나로 목적지 DB서버의 두 개 이상의 계정에 대한 할당 불가함.
이처럼 DBLink 자체에 권한을 추가하는 것은 안되지만
기존에 생성 되어 있는 DBLink로 별도 계정에 존재하는 테이블 접근하려면 기존 계정에 테이블 별로 권한을 부여하는 방법으로 가능
-- 해당 DB에 생성되어 있는 DBlink 정보
select * from dba_db_links;
ex) LK_TGT_DB1 이라는 DBLink는 USER1 에 대한 권한을 갖고 있고, USER2에 존재하는 테이블에 접근하려면 USER2의 해당 테이블에 대해 USER1에 권한을 부여하면 기존 LK_TGT_DB1 이라는 DBLink 활용 가능
DDL 스크립트 추출
- TABLE, INDEX, Procedure 등 OBJECT
-- 파라미터로 OBJECT TYPE, OBJECT명
select dbms_metadata.get_ddl('TABLE', 'USER1') from dual;
select dbms_metadata.get_ddl('INDEX', 'PK_TABLE1') from dual;
'학습장 > ETC' 카테고리의 다른 글
UTC, 시간표기 관련 (2) | 2022.12.13 |
---|---|
M1 Mac anaconda 설치 (4) | 2022.10.20 |
M1 Mac 윈도우10 설치 (2) | 2021.07.14 |
python 외부 스크립트 import (0) | 2021.04.12 |
Bash shell date 반복문 (0) | 2021.04.05 |
댓글