Oracle 관련2006. 12. 21. 18:34

SELECT O.OBJECT_NAME
, O.OBJECT_TYPE
, O.STATUS
, O.LAST_DDL_TIME
, O.OBJECT_ID
, NVL(D.DEBUGINFO, 'F') DEBUGINFO
FROM SYS.DBA_OBJECTS O
, SYS.ALL_PROBE_OBJECTS D
WHERE O.OWNER = 'USER'
AND O.OBJECT_TYPE = 'SYNONYM'
AND O.OBJECT_ID = D.OBJECT_ID (+)
AND O.OBJECT_NAME = D.OBJECT_NAME (+)
AND O.OBJECT_TYPE = D.OBJECT_TYPE (+)
AND D.OWNER (+) = 'USER'

ORDER BY O.OBJECT_TYPE
, O.OBJECT_NAME

Posted by la30321
Oracle 관련2006. 12. 21. 16:33

테이블스페이스별 데이터파일의 I/O 를 조회하자

/* 파일 i/o 가 한쪽에만 치우칠 경우, 부하를 분산 시켜줄 필요가 있다 */

SELECT PHYRDS, PHYWRTS, D.NAME FILENAME, T.NAME TSNAME
FROM V$DATAFILE D, V$FILESTAT F, V$TABLESPACE T
WHERE D.FILE# = F.FILE#
AND D.TS# = T.TS#
ORDER BY T.NAME, D.NAME;

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

현재 접속된 사용자가 어떤 SQL을 사용하고 있을까?

select a.sid, a.serial#, b.hash_value, b.sql_text
from v$session a, v$sqltext b
where 1=1
and a.username = '&username'
and a.sql_hash_value = b.hash_value
order by b.hash_value, b.piece;

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

누가 테이블에 LOCK 를 발생시켰나?

-- 테이블에 lock을 발생시킨 user를 찾을 경우가 많습니다.

-- 특히 OPS(RAC on 9i) system에서는 더더욱 그런 경우가 많구요.

-- 제가 관리하던 시스템에서 자주 썼던 sql입니다.

-- 기타 많은 유사한 sql로 있습니다만 한번 써 보시길 바랍니다.

/* 락발생 사용자와 sql, object 조회 */

select distinct x.session_id, a.serial#,d.object_name,a.machine,a.terminal,a.program,b.address,b.piece, b.sql_text
from v$locked_object x, v$session a, v$sqltext b, dba_objects d
where x.session_id = a.sid
and x.object_id = d.object_id
and a.sql_address = b.address
--and a.terminal = '김성기'
order by b.address,b.piece;

/* 락 발생 사용자확인 */
select distinct x.session_id, a.serial#,d.object_name,a.machine,a.terminal,a.program, a.logon_time
--select 'alter system kill session ''' || a.sid || ',' || a.serial# || ''';'
from gv$locked_object x, gv$session a, dba_objects d
where x.session_id = a.sid
and x.object_id = d.object_id
order by logon_time;
;

/* 현재 접속자의 sql 분석 */
select distinct a.sid,a.serial#,a.machine,a.terminal,a.program,b.address,b.piece, b.sql_text
from v$session a, v$sqltext b
where a.sql_address = b.address
order by a.sid, a.serial#,b.address,b.piece;


/* 접속 사용자 제거 */
--alter system kill session 'session_id,serial#';
alter system kill session '27,29915';

/****************************************************

*************Thinking Oracle - zerobug *************

****************************************************/

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

wait 가 가장많은 사용자 조회하기

-- 세션 모니터링 쿼리는 비일비재 하지만 특정이벤트에 대한 세션정보와

그에 따른 기타 정보를 조회하는 쿼리입니다.

-- wait 가 가장 많은 사용자 조회
select se.sid, p.spid,ss.status, ss.machine, ss.program, ss.terminal, ss.username,
ss.sql_hash_value, se.event, se.time_waited,
so.block_gets, so.consistent_gets, so.physical_reads

from v$session_event se, v$session ss, v$process p, v$sess_io so
where 1=1
and event like '%db file %'
and se.sid = ss.sid
and ss.paddr = p.addr
and ss.sid = so.sid
order by time_waited desc
;

-- 해당 sql 조회
select *
from v$sqltext
where hash_value = '984118682'
order by piece;

Posted by la30321
Oracle 관련2006. 12. 21. 16:25

• AQ_ADMINISTRATOR_ROLE :

• AQ_USER_ROLE

• AUTHENTICATEDUSER

• CONNECT : 오라클에 접속 할 수 있는 세션 생성 및 테이블을 생성하거나 조회 할 수 있는 가장 일반적인 권한들로 이루어져 있습니다.

-CONNECT Role이 없으면 유저를 생성하고서도 Oracle에 접속 할 수가 없습니다.

DB에 접속할 수 있는 권한
-SQL.BSQ 스크립트에 의해서 생성됨
-포함되는 시스템 권한 :
ALTER SESSION, CREATE CLUSTER, CREATE DATABASE LINK, CREATE SEQUENCE, CREATE SESSION, CREATE SYNONYM, CREATE TABLE, CREATE VIEW

• CTXAPP : Oracle8i의 intermedia text 가 Oracle9i 부터는 Oracle Text 라는 이름으로 변경되었다. context option을 사용할 사용자에게 권한을 부여한다.

• DBA: 모든 시스템 권한이 부여된 Role.

-DBA Role은 데이터베이스 관리자에게만 부여해야 합니다.

-오라클 DB를 관리하기 위해 필요한 권한들을 가진 롤로 124개의 권한이 부여되어 있음
- SQL.BSQ 스크립트에 의해서 생성됨
-WITH ADMIN OPTION을 가진 모든 시스템 권한들이 포함
STARTUP, SHUTDOWN, ALTER DATABASE OPEN, ALTER DATABASE MOUNT, ALTER DATABASE BACKUP, ALTER DATABASE ARCHIVELOG, ALTER DATABASE RECOVER, CREATE DATABASE, RESTRICTED SESSION

• DELETE_CATALOG_ROLE : 이 롤이 승인된 사용자는 시스템 감사 테이블(AUD$)에 대해 DELETE 권한을 가집니다.

-sys.aud$ 테이블의 행 데이터를 제거할 수 있는 권한을 부여 받는다.

• EJBCLIENT

• EXECUTE_CATALOG_ROLE : 이 롤이 승인된 사용자는 데이터 딕셔너리에 있는 모든 패키지와 프로시져를 EXECUTE 할 수 있는 권한을 가집니다.

-recovery catalog에 포함된 모든 패키지를 실행할 수 있는 권한을 부여 받는다.

• EXP_FULL_DATABASE:임의의 오라클 사용자가 데이터베이스 내에 존재하는 모든 데이터베이스 객체를 모두 추출할 수 있는 권한을 부여 받는다.

• GATHER_SYSTEM_STATISTICS

• GLOBAL_AQ_USER_ROLE

• HS_ADMIN_ROLE

• IMP_FULL_DATABASE : 임의의 오라클 사용자가 임의로 추출된 dump 파일 내부에 존재하는 모든 데이터베이스 객체를 모두 추출할 수 있는 권한을 부여 받는다.

• JAVADEBUGPRIV

• JAVAIDPRIV

• JAVASYSPRIV

• JAVAUSERPRIV

• JAVA_ADMIN

• JAVA_DEPLOY

• LOGSTDBY_ADMINISTRATOR

• MGMT_USER

• OEM_ADVISOR

• OEM_MONITOR

• OLAP_DBA

• OLAP_USER

RECOVERY_CATALOG_OWNER :RMAN 기능을 사용하기 위해서 필요하다 . (복구 소유자의 권한을 RMAN에 부여)

• RESOURCE : Store Procedure나 Trigger와 같은 PL/SQL을 사용할 수 있는 권한들로 이루어져 있습니다.

-PL/SQL을 사용하려면 RESOURCE Role을 부여해야 합니다.

-오라클 DB의 기본 개체(TABLE, VIEW, INDEX등)를 생성.변경.삭제할 수 있는 권한을 가짐
-SQL.BSQ 스크립트에 의해서 생성됨
-포함되는 시스템 권한 :
CREATE CLUSTER, CREATE INDEXTYPE, CREATE OPERATOR, CREATE PROCEDURE, CREATE SEQUENCE, CREATE TABLE, CREATE TRIGGER, CREATE TYPE

SCHEDULER_ADMIN : database administrators는 DBA역할의 한 부분으로 이미 ADMIN option에 이 역할이 있을 것이다

SELECT_CATALOG_ROLE : 이 롤이 승인된 사용자는 모든 데이터 딕셔너리 뷰에 대해 SELECT권한을 지닙니다.

-모든 추출된 recovery catalog 뷰와 테이블로부터 롤들을 select할 수 있는 권한을 부여 받는다.

• WM_ADMIN_ROLE

• XDBADMIN : Oracle XML DB ADMIN 접근. XML schemas를 등록해야 하는 사용자를 위해 유용.

• XDBWEBSERVICES : xml database WebServices

Posted by la30321
Oracle 관련2006. 11. 21. 09:26


▣ 수동으로 데이터 파일 크기 변경

- ALTER DATABASE명령으로 데이터 파일의 크기를 변경 할 수 있습니다.

예제)
SQL>ALTER DATABASE DATAFILE
'C:\ORACLE\ORADATA\app_data02.dbf' RESIZE 300M

RESIZE명령으로 데이터 파일의 크기를 300M로 했습니다.
기존 데이터 파일의 크기가 300M가 넘을 경우에는 300M로 줄어들게되고,
300M가 되지 않았을 경우에는 300M로 늘어나게 됩니다.

▣ 테이블 스페이스 쿼터 및 권한주기

alter user lips quota unlimited on LIP_TS_i2

Posted by la30321
Oracle 관련2006. 11. 16. 14:03

insert into복사대상테이블select * from복사원본 ;

Posted by la30321