DB/Oracle

[Command] Oracle Command 1

중랑거북이 2021. 1. 12. 12:17

[DB SID 확인]

# select name from v$database;

 

[DATA File 위치 확인]

# select * from dba_data_files;

 

[DB Instance 확인]

# select * frm v$instance;

 

[DB 프로세스 확인]

# ps -ef | grep pmon

# ps -ef | grep ora

 

[리스너 프로세스 확인]

# ps -ef | grep lsnr

 

[Archive 모드 변경]

1. # shutdown immediate

2. # startup mount

3. # alter database archivelog;

4. # alter database open;

 

[Archive 모드 확인]

1. # Select name, log_mode from v$database;

2. # archive log list;

# colum 길이 변경 col name format a30

# database 복구하기 recover database;

# Datafile에서 file 이름 검색 select file_name, bytes/1024/1024 MB from dba_data_files;

 

[DB Link 걸기]

1. DB Link 확인

# select * from dba_db_links;

2. DB Link 걸기

 # create public database link DBLink_name connect to imsi identified by 유저패스워드 using '링크네임

  -tns에 등록된것'

 # create public database link TMS connect to uosvc1 identified by svc1 using 'TMS.WORLD';

 

http://blog.naver.com/svljwnv/60167125515

 

 

 

[설정된 디렉토리 정보 확인]

# select * from dba_directories;

 

[비밀번호 변경]

# alter user [유저명] identified by [신규비밀번호];

 

[생성된 User 정보 확인]

# select * from all_users;

 

 

[DB 내리는 명령어]

1. 일반적인 명령어

# shutdown immediate

 

2. 위 명령어가 적용되지 않을 경우

# shutdown abort

 

[인스턴스 확인]

# select * from v$instance;

또는

# select instance from v$thread;

 

[오라클 버전 확인]

# select * from v$version;

 

[파라메터 확인]

# show parameter

 

[yum 사용 tip]

# yum whatprovide [설치 프로그램 명]

 

[SQL 명령줄 한번에 표시]

# SQL > set line 200

 

[Oracle 로그 위치 확인]

#show parameter p_d;

 

[사용자 게정 GID 변경]

usermod -g [GID] [User]

 

[테이블 컬럼 확인]

desc [테이블명]

 

[DB 세부 패치 정보 확인 쿼리 (둘중 택1]

# select * from dba_registry_hostory

# select * from dba_resigtry_sqlpatch

 

[DB 세부버전 명령어(sql 접속 X]

# opatch lsinvectory

 

[V$LOCK 을 사용한 잠금 경합 모니터링]

# SELECT s.username, s.sid, s.serial#, s.logon_time,

DECODE(l.type, 'TM', 'TABLE LOCK',

'TX', 'ROW LOCK',

NULL) "LOCK LEVEL",

o.owner, o.object_name, o.object_type

FROM v$session s, v$lock l, dba_objects o

WHERE s.sid = l.sid

AND o.object_id = l.id1

AND s.username IS NOT NULL

 

[락이 걸린 세션 자세히 알아보기]

# select a.sid, a.serial#,a.username,a.process,b.object_name,

decode(c.lmode,2,'RS',3,'RX',4,'S',5,'SRX',8,'X','NO') "TABLE LOCK",

decode (a.command,2,'INSERT',3,'SELECT',6,'UPDATE',7,'DELETE',12,'DROP TABLE',26,'LOCK TABLE','UNknown') "SQL",

decode(a.lockwait, NULL,'NO wait','Wait') "STATUS"

from v$session a,dba_objects b, v$lock c

where a.sid=c.sid and b.object_id=c.id1

and c.type='TM'

 

[락이 걸린 세션 간단히 알아보기]

# select a.sid, a.serial#, b.type, c.object_name, a.program, a.lockwait,

a.logon_time, a.process, a.osuser, a.terminal

from v$session a, v$lock b, dba_objects c

where a.sid = b.sid

and b.id1 = c.object_id

and b.type = 'TM';

select a.sid, a.serial#, a.username, a.process, b.object_name

from v$session a , dba_objects b, v$lock c

where a.sid=c.sid and b.object_id = c.id1

and c.type = 'TM'

 

[락이 걸린 세션을 찾아 내어 세션을 죽이려고 해도 죽지 않는 경우]

--아래 쿼리문으로 OS단의 PROCESS ID를 찾아내어 OS에서 죽인다

--kill -9 [프로세스아이디]

# select substr(s.username,1,11) "ORACLE USER", p.pid "PROCESS ID",

s.sid "SESSION ID", s.serial#, osuser "OS USER",

p.spid "PROC SPID",s.process "SESS SPID", s.lockwait "LOCK WAIT"

from v$process p, v$session s, v$access a

where a.sid=s.sid and

p.addr=s.paddr and

s.username != 'SYS'

[위 쿼리문의 결과가 있다면 락이 걸린 세션이 있다는것이므로 아래의 쿼리문으로 세션을 죽인다]

# ALTER SYSTEM KILL SESSION ['세션ID']

 

 

[alter session으로 죽지않는 프로세스 죽이기]

1.oracle이 설치된 서버에 텔넷으로 root로 접속한다

2.su -오라클계정

3.sqlplus '/as sysdba''

4.connect system/sys

5. # ALTER SYSTEM KILL SESSION ['세션ID']

 

[특정 테이블에 사용된 쿼리]

# SELECT * FROM V$SQLAREA

WHERE parsing_schema_name = 'ING'

AND lower(sql_text) LIKE '%order_result_report_tbl%'

ORDER BY last_active_time DESC

 

[ 현재 세션에서 사용되는 쿼리]

# SELECT S.SID

, S.SERIAL#

, S.STATUS

, S.PROCESS

, S.OSUSER

, A.SQL_TEXT

, P.PROGRAM

FROM V$SESSION S

, V$SQLAREA A

, V$PROCESS P

WHERE S.SQL_HASH_VALUE = A.HASH_VALUE

AND S.SQL_ADDRESS = A.ADDRESS

AND S.PADDR = P.ADDR

AND S.SCHEMANAME = 'ING'

AND S.STATUS = 'ACTIVE'

 

[평균 메모리 사용량이 많은 SQL (상위 N)]

# SELECT BUFFER_GETS,DISK_READS,

EXECUTIONS,BUFFER_PER_EXEC,SQL_TEXT

FROM ( SELECT BUFFER_GETS,DISK_READS, EXECUTIONS,

BUFFER_GETS/DECODE(EXECUTIONS,0,1,EXECUTIONS) BUFFER_PER_EXEC,

SQL_TEXT

FROM V$SQLAREA

WHERE LAST_ACTIVE_TIME > trunc(SYSDATE)-8/24

AND ROWNUM <= 5

ORDER BY BUFFER_GETS/DECODE(EXECUTIONS,0,1,EXECUTIONS) DESC )

 

[총 메모리 사용량이 많은 SQL (상위 N)]

# SELECT BUFFER_GETS,DISK_READS,EXECUTIONS,SQL_TEXT

FROM (SELECT BUFFER_GETS,DISK_READS,EXECUTIONS,SQL_TEXT

FROM V$

 

[오라클 접속(오라클 계정으로 실행할것!)]

> su - oracle

> sqlplus "/as sysdba"

 

728x90