<br><div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div><div bgcolor="#ffffff"><div><font face="Arial" size="2">1- Preciso ter em uma tabela Oracle, para consultas 
(PL/SQL) eventuais, as informações de uso de memória, uso de&nbsp;cpu e&nbsp;dos 
5 processos&nbsp;que&nbsp;estão consumindo mais&nbsp;recursos (no momento da 
coleta)&nbsp;de determinado servidor Unix;</font></div></div></div></blockquote><div><br>Perfeito, isso você deve saber melhor que eu :-) <br></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div><div bgcolor="#ffffff"><div><font face="Arial" size="2">2- A coleta dessas informações deve acontecer em 
períodos de tempo determinados (de 30 em 30 minutos, por exemplo);</font></div></div></div></blockquote><div><br>O cron resolve este problema.<br></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div><div bgcolor="#ffffff"><div><font face="Arial" size="2">3- Antes de fazer a coleta das informações é 
necessário saber se um processo X está rodando no servidor, caso não esteja, não 
é necessário fazer a coleta.</font></div></div></div></blockquote><div><br>Proc::ProcessTable vem a calhar aqui.<br><br>use List::Util;<br>use Proc::ProcessTable;<br><br>my $p = Proc::ProcessTable-&gt;new;<br><br>if (first { $_-&gt;fname eq 'meuprocesso' } @{$p-&gt;table}) {
<br>...<br>}<br></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div><div bgcolor="#ffffff"><div><font face="Arial" size="2">4- Preciso dispor as informações em colunas 
(Coleta, Data_Hora, Cpu, Memória, Processo1, Processo2, Processo3, Processo4, 
Processo5)&nbsp;da tabela Oracle. Por exemplo: </font></div>
<div>
<table style="width: 553pt; border-collapse: collapse;" border="0" cellpadding="0" cellspacing="0" width="738">
  <colgroup>
  <col style="width: 44pt;" width="59">
  <col style="width: 76pt;" width="101">
  <col style="width: 26pt;" width="34">
  <col style="width: 52pt;" width="69">
  <col style="width: 71pt;" span="5" width="95">
  </colgroup><tbody>
  <tr height="17">
    <td style="border: medium none rgb(212, 208, 200); width: 44pt; background-color: transparent;" height="17" width="59"><strong><font face="Arial" size="2">COLETA</font></strong></td>
    <td style="border: medium none rgb(212, 208, 200); width: 76pt; background-color: transparent;" width="101"><strong><font face="Arial" size="2">DATA_HORA</font></strong></td>
    <td style="border: medium none rgb(212, 208, 200); width: 26pt; background-color: transparent;" width="34"><strong><font face="Arial" size="2">CPU</font></strong></td>
    <td style="border: medium none rgb(212, 208, 200); width: 52pt; background-color: transparent;" width="69"><strong><font face="Arial" size="2">MEMÓRIA</font></strong></td>
    <td style="border: medium none rgb(212, 208, 200); width: 71pt; background-color: transparent;" width="95"><strong><font face="Arial" size="2">PROCESSO_1</font></strong></td>
    <td style="border: medium none rgb(212, 208, 200); width: 71pt; background-color: transparent;" width="95"><strong><font face="Arial" size="2">PROCESSO_2</font></strong></td>
    <td style="border: medium none rgb(212, 208, 200); width: 71pt; background-color: transparent;" width="95"><strong><font face="Arial" size="2">PROCESSO_3</font></strong></td>
    <td style="border: medium none rgb(212, 208, 200); width: 71pt; background-color: transparent;" width="95"><strong><font face="Arial" size="2">PROCESSO_4</font></strong></td>
    <td style="border: medium none rgb(212, 208, 200); width: 71pt; background-color: transparent;" width="95"><strong><font face="Arial" size="2">PROCESSO_5</font></strong></td></tr>
  <tr height="17">
    <td style="border: medium none rgb(212, 208, 200); background-color: transparent;" height="17"><font face="Arial" size="2">coleta1</font></td>
    <td style="border: medium none rgb(212, 208, 200); background-color: transparent;"><font face="Arial" size="2">15/8/2006 
    18:30</font></td>
    <td style="border: medium none rgb(212, 208, 200); background-color: transparent;"><font face="Arial" size="2">60%</font></td>
    <td style="border: medium none rgb(212, 208, 200); background-color: transparent;"><font face="Arial" size="2">70%</font></td>
    <td style="border: medium none rgb(212, 208, 200); background-color: transparent;"><font face="Arial" size="2">x</font></td>
    <td style="border: medium none rgb(212, 208, 200); background-color: transparent;"><font face="Arial" size="2">y</font></td>
    <td style="border: medium none rgb(212, 208, 200); background-color: transparent;"><font face="Arial" size="2">z</font></td>
    <td style="border: medium none rgb(212, 208, 200); background-color: transparent;"><font face="Arial" size="2">a</font></td>
    <td style="border: medium none rgb(212, 208, 200); background-color: transparent;"><font face="Arial" size="2">b</font></td></tr>
  <tr height="17">
    <td style="border: medium none rgb(212, 208, 200); background-color: transparent;" height="17"><font face="Arial" size="2">coleta2</font></td>
    <td style="border: medium none rgb(212, 208, 200); background-color: transparent;"><font face="Arial" size="2">15/8/2006 
    19:00</font></td>
    <td style="border: medium none rgb(212, 208, 200); background-color: transparent;"><font face="Arial" size="2">50%</font></td>
    <td style="border: medium none rgb(212, 208, 200); background-color: transparent;"><font face="Arial" size="2">80%</font></td>
    <td style="border: medium none rgb(212, 208, 200); background-color: transparent;"><font face="Arial" size="2">y</font></td>
    <td style="border: medium none rgb(212, 208, 200); background-color: transparent;"><font face="Arial" size="2">a</font></td>
    <td style="border: medium none rgb(212, 208, 200); background-color: transparent;"><font face="Arial" size="2">z</font></td>
    <td style="border: medium none rgb(212, 208, 200); background-color: transparent;"><font face="Arial" size="2">x</font></td>
    <td style="border: medium none rgb(212, 208, 200); background-color: transparent;"><font face="Arial" size="2">b</font></td></tr>
  <tr height="17">
    <td style="border: medium none rgb(212, 208, 200); background-color: transparent;" height="17"><font face="Arial" size="2">coleta3</font></td>
    <td style="border: medium none rgb(212, 208, 200); background-color: transparent;"><font face="Arial" size="2">15/8/2006 19:30</font></td>
    <td style="border: medium none rgb(212, 208, 200); background-color: transparent;"><font face="Arial" size="2">70%</font></td>
    <td style="border: medium none rgb(212, 208, 200); background-color: transparent;"><font face="Arial" size="2">85%</font></td>
    <td style="border: medium none rgb(212, 208, 200); background-color: transparent;"><font face="Arial" size="2">a</font></td>
    <td style="border: medium none rgb(212, 208, 200); background-color: transparent;"><font face="Arial" size="2">b</font></td>
    <td style="border: medium none rgb(212, 208, 200); background-color: transparent;"><font face="Arial" size="2">z</font></td>
    <td style="border: medium none rgb(212, 208, 200); background-color: transparent;"><font face="Arial" size="2">y</font></td>
    <td style="border: medium none rgb(212, 208, 200); background-color: transparent;"><font face="Arial" size="2">x</font></td></tr>
  <tr height="17">
    <td style="border: medium none rgb(212, 208, 200); background-color: transparent;" height="17"><font face="Arial" size="2">coleta4</font></td>
    <td style="border: medium none rgb(212, 208, 200); background-color: transparent;"><font face="Arial" size="2">15/8/2006 
    20:00</font></td>
    <td style="border: medium none rgb(212, 208, 200); background-color: transparent;"><font face="Arial" size="2">30%</font></td>
    <td style="border: medium none rgb(212, 208, 200); background-color: transparent;"><font face="Arial" size="2">40%</font></td>
    <td style="border: medium none rgb(212, 208, 200); background-color: transparent;"><font face="Arial" size="2">b</font></td>
    <td style="border: medium none rgb(212, 208, 200); background-color: transparent;"><font face="Arial" size="2">y</font></td>
    <td style="border: medium none rgb(212, 208, 200); background-color: transparent;"><font face="Arial" size="2">x</font></td>
    <td style="border: medium none rgb(212, 208, 200); background-color: transparent;"><font face="Arial" size="2">a</font></td>
    <td style="border: medium none rgb(212, 208, 200); background-color: transparent;"><font face="Arial" size="2">z</font></td></tr></tbody></table></div></div></div></blockquote><div><br>Isso você faz a inserção via DBI (OK, você pode ser mais tosco executando o binário do Oracle, porém tente o DBI antes). 'perldoc DBI' para esse caso.
<br></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div><div bgcolor="#ffffff"><div><font face="Arial" size="2">5- A cada coleta devo importar os dados resultantes 
da mesma, na tabela Oracle (a cada 30 minutos terei uma nova&nbsp;tupla na 
tabela). </font></div>
<div><font face="Arial" size="2">coleta1&nbsp;&nbsp;&nbsp; 16/8/2006 
20:30&nbsp;&nbsp;&nbsp; 50%&nbsp;&nbsp;&nbsp; 60%&nbsp;&nbsp;&nbsp; 
s&nbsp;&nbsp;&nbsp; j&nbsp;&nbsp;&nbsp; f&nbsp;&nbsp;&nbsp; c&nbsp;&nbsp;&nbsp; 
k</font></div></div></div></blockquote><div><br>CPU e Memória são o total sendo utilizado no seu servidor no momento ou o total utilizado por este cinco processos? Você tem o nome deste cinco processos já? <br><br># separamos&nbsp; todos os processos cujo nomes sejam aqueles que queremos
<br>my @processos = grep { $_-&gt;fname =~ m/^(?:a|b|c|d|e) } @{$p-&gt;table};<br><br># somamos a cpu utilizada<br>my $cpu_usada = 0;<br>$cpu_usada += $_-&gt;pctcpu for (@processos);<br><br>Caso você não saiba o nome dos processos, você pode verificar o PID do processo que os gera e localizar todos os processos cujo PPID (Parent PID) sejam igual àquele que você coletou.
<br></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div><div bgcolor="#ffffff"><div><font face="Arial" size="2">O grande X da questão é: Como fazer essas coletas e 
importar essas informações para a tabela do Oracle (o Oracle está instalado no 
mesmo servidor onde será feita a coleta).</font></div></div></div></blockquote><div><br>No final das contas Proc::ProcessTable e DBI podem fazer exatamente o que você quer. Se você estiver impedido de utilizar DBI por qualquer motivo, você pode substituí-lo por um pipe para o seu comando 'sql':
<br><br>&lt;code&gt;<br># veja que eu não sei quais são os parâmetros para o seu programa, porém<br># você deve utilizá-lo como na linha de comando.<br>open my $sql, &quot;| /usr/bin/sql -Uusuario -Psenha&quot; or die $!; 
<br></div><br>print $sql &quot;INSERT INTO oracle (cpu, memoria, proc1, proc2, proc3, proc4, proc5) VALUES ($cpu_usada, $memoria_usada, &quot;$proc1&quot;, &quot;$proc2&quot;, &quot;$proc3&quot;, &quot;$proc4&quot;, &quot;$proc5&quot;);\n&quot;;
<br><br>close $sql or warn $!;<br>&lt;/code&gt;<br><br>Saiba que este modo de interação com o banco de dados é um 'quick and dirty hack', e não deve ser usado como primeiro recurso.<br><br></div>-- <br>Igor Sutton Lopes<br>
t: +55 51 9627.0779<br>e: <a href="mailto:igor.sutton@gmail.com">igor.sutton@gmail.com</a>