Как отобразить системную статистику с помощью запроса?

Ну, я должен сказать, что у меня нет большого опыта работы с Oracle. Моя проблема:

У меня есть сервер, на котором работает база данных Oracle. Иногда он загружается медленно и зависает. Мне нужно отслеживать, чтобы знать, почему. Но у меня нет разрешения на этом сервере. Я могу только выполнить запрос через PDO.

Вот как я запускаю запрос:

$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");

Я не уверен, нахожусь ли я на неправильном пути или нет 🙁

0

Решение

Это довольно сложный вопрос. Это может быть не только ваша база данных, что может привести к замедлению работы системы. Это зависит от того, что у вас на сервере.

Вот подсказка о том, как вы можете собрать информацию о запросах, которые были запущены в тот же день: запускайте его каждую ночь, чтобы узнать, что произошло в вашей базе данных: использование V$SQL Системное представление Oracle

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 или другие виды системы, вам может потребоваться обратиться к администратору базы данных за дополнительными грантами в базе данных. например вам может понадобиться что-то вроде роли SELECT_CATALOG_ROLE или похожие

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector