Скрипт Pl / sql для вычисления свободного места в табличном пространстве пользователей в oracle

#oracle #plsql #oracle11g #tablespace

#Oracle #plsql #oracle11g #табличное пространство

Вопрос:

 SELECT tablespace_name, sum(bytes)/1024/1024 "MB Free"
  FROM dba_free_space 
 WHERE tablespace_name = 'USERS'
 GROUP BY tablespace_name;
  

Привет всем, приведенный выше запрос — это то, что я использую для отображения свободного места в табличном пространстве пользователя, но как мне написать отдельный скрипт PL / SQL, чтобы сохранить его в отдельной таблице с именем табличного пространства и отметкой времени.

Пожалуйста, помогите мне, так как мне нужен этот запуск в планировщике заданий на каждый час.

Заранее спасибо

Ответ №1:

Предполагая, что вы уже создали таблицу, в которой хотите сохранить данные, просто

 CREATE OR REPLACE PROCEDURE snap_free_space
AS
BEGIN
  INSERT INTO new_table( tablespace_name, free_bytes, collection_time )
    SELECT tablespace_name, sum(bytes), sysdate
      FROM dba_free_space
     GROUP BY tablespace_name;
END;
  

Комментарии:

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

2. DBMS_JOB — это инструмент планирования внутренней базы данных.

3. DBMS_SCHEDULER был представлен с 10g. download.oracle.com/docs/cd/E11882_01/appdev.112/e25788 /… «Пакет DBMS_JOB был заменен пакетом DBMS_SCHEDULER». download.oracle.com/docs/cd/E11882_01/appdev.112/e25788 /…