2017-01-04 6 views
0

글쎄, 나는 오라클에 대한 많은 경험이 없다고 말해야 만한다. 내 문제는 :쿼리를 사용하여 시스템 통계를 표시하는 방법은 무엇입니까?

Oracle 데이터베이스를 실행하는 서버가 있습니다. 언젠가 천천히로드되고 멈 춥니 다. 나는 이유를 알기 위해 추적 할 필요가있다. 하지만이 서버에 대한 권한이 없습니다. PDO를 통해서만 쿼리를 실행할 수 있습니다. , 내가 등등 CPU 부하 속도, 메모리, 세션으로 서버에 대한 정보를 수집하는 쿼리를 사용에 대한 차트를 그릴 수 있기를 바랍니다 그래서

$db = new PDOOCI\PDO("192.168.x.x:xxxx/something.something;charset=AL32UTF8", "username", "password"); 
$status = $db->prepare("SELECT * FROM table"); 
$status->execute(); 
$r = $status->fetchAll(); 
var_dump($r); 

: 나는 쿼리를 실행하는 방법은 다음과

실시간으로. 이런 방식으로 어느 날 시간이 느려지는지 알 수 있습니다.

아래에서 쿼리를 시도했지만 아무 것도 반환하지 않습니다.

$status = $db->prepare("SELECT sql_text FROM v$session"); 
$status = $db->prepare("SELECT * FROM v$process"); 
$status = $db->prepare("select * from V$OSSTAT"); 

는 내가 잘못된 길에있어 또는

+2

DBA에게 AWR 스냅 샷 보고서를 실행하십시오. "로드가 느려지고 멈춘다"는 의미는 아닙니다. "select * from table"이 느린다고 말하는 겁니까? 테이블이 얼마나 큽니까? – OldProgrammer

+0

No select * from table은 연결하고 데이터를 가져 오는 방법을 보여주는 예제 일뿐입니다. 그것은 병원에서 큰 데이터베이스입니다. 때때로이 데이터베이스에 연결할 수 없으며 Iam이 원인을 찾는 중입니다. – KaZaT

+2

"이 데이터베이스에 연결할 수 없습니다."그게 무슨 뜻입니까? 더 구체적으로 시도하십시오. 전체 책은 oracle db 성능 튜닝에 쓰여 있습니다. 예, 도움이 될 수 있습니다. – OldProgrammer

답변

0

이 다소 어려운 문제입니다 :(여부를 확실하지 않다. 그것은 시스템이 느리게 않을 수있는 데이터베이스가 아닌 다른 것들 일 수있다. 그것은 당신이 서버에 어떤 따라 다음

당신이 바로 그 날 시작하는 쿼리에 대한 정보를 수집 할 수 방법에 대한 힌트이다. 사용 V$SQL 오라클 : 데이터베이스에 무슨 일이 있었는지 알고 매일 밤 실행 시스템보기

SELECT * 
    FROM v$sql 
WHERE to_date(last_load_time,'YYYY-MM-DD/HH24:MI:SS') > trunc(sysdate) 

당신은 단지 10 개 개의 가장 비용이 많이 드는 쿼리를 원하는 경우에, 순서는 다음 (10) 상단 행 걸릴 :

SELECT * FROM (
    SELECT sql_text, cpu_time, elapsed_time, last_load_time 
     FROM v$sql 
    WHERE to_date(last_load_time,'YYYY-MM-DD/HH24:MI:SS') > trunc(sysdate) 
    ORDER BY cpu_time desc 
)WHERE ROWNUM <10 

주의 : 당신이 v$session 또는 기타 시스템보기에 아무것도 볼 수 있기 때문에, 당신은 추가에 대한 귀하의 DBA에게 문의해야 할 수도 있습니다 데이터베이스에 대한 권한 부여. 예 : 역할 SELECT_CATALOG_ROLE 또는 이와 비슷한 것이 필요할 수도 있습니다.