domingo, 30 de janeiro de 2011

PL/SQL - Procedures e Funções


PL/SQL - Procedures e Funções



Procedures


Uma procedure nada mais é do um bloco PL/SQL nomeado. A grande vantagem sobre um bloco PL/SQL anônimo é que pode ser compilado e armazenado no banco de dados como um objeto de schema. Graças a essa característica as procedures são de fácil manutenção, o código é reutilizável e permitem que trabalhemos com módulos de programa.
Uma procedure é, então, um bloco PL/SQL nomeado que pode aceitar argumentos (também chamado de parâmetros) e pode ser chamada por um programa, uma sessão SQL ou uma trigger.
Durante a instalação do banco de dados Oracle um script é executado automaticamente e cria toda a estrutura necessária para que as procedures sejam executadas. Eventualmente esse procedimento automático pode falhar devido a alguma falha física no disco rígido, nesse caso o usuário SYS pode recriar a estrutura através do script SQL DBMSSTDX.SQL.
Para criar uma procedure o usuário precisa ter o privilégio de sistema CREATE PROCEDURE, para criar a procedure em outros schemas o usuário deve ter o privilégio de CREATE ANY PROCEDURE. Este é um ponto muito interessante sobre as procedures, os privilégios para criação de procedures têm que concedidos explicitamente, ou seja, não pode ser adquirido através de roles.
Para executar uma procedure externa é necessário ter o privilégio de EXECUTE. Caso queira alterar a procedure de outro schema deve ter o privilégio de sistema ALTER ANY PROCEDURE.
A sintaxe básica de uma procedure é:
CREATE [OR REPLACE] PROCEDURE [schema.]nome_da_procedure
[(parâmetro1 [modo1] tipodedado1,
   parâmetro2 [modo2] tipodedado2,
   ...)]
IS|AS
Bloco PL/SQL
Onde:
REPLACE - indica que caso a procedure exista ela será eliminada e substituída pela nova versão criada pelo comando;
BLOCO PL/SQL - inicia com uma cláusula BEGIN e termina com END ou END nome_da_procedure;
NOME_DA_PROCEDURE - indica o nome da procedure;
PARÂMETRO - indica o nome da variável PL/SQL que é passada na chamada da procedure ou o nome da variável que retornará os valores da procedure ou ambos. O que irá conter em parâmetro depende de MODO;
MODO - Indica que o parâmetro é de entrada (IN), saída (OUT) ou ambos (IN OUT). É importante notar que IN é o modo default, ou seja, se não dissermos nada o modo do nosso parâmetro será, automaticamente, IN;
TIPODEDADO - indica o tipo de dado do parâmetro. Pode ser qualquer tipo de dado do SQL ou do PL/SQL. Pode usar referencias como %TYPE, %ROWTYPE ou qualquer tipo de dado escalar ou composto. Atenção: não é possível fazer qualquer restrição ao tamanho do tipo de dado neste ponto.
IS|AS - a sintaxe do comando aceita tanto IS como AS. Por convenção usamos IS na criação de procedures e AS quando estivermos criando pacotes.
BLOCO PL/SQL - indica as ações que serão executadas por aquela procedure.
Vamos ver um exemplo de procedure para ajudar nosso entendimento:
CREATE OR REPLACE PROCEDURE aumenta_sal
(p_empno IN emp.empno%TYPE)
IS
BEGIN
UPDATE scott.emp
SET sal = sal * 1.10
WHERE empno = p_empno;
END aumenta_sal;
/
Neste exemplo estamos criando uma procedure para aumentar o salário de um funcionário em 10%. A primeira linha define o NOME DA PROCEDURE, que vai ser AUMENTA_SAL.
A linha dois define o parâmetro P_EMPNO no modo IN. Ou seja, vai ser um dado informado na chamada da procedure. Em seguida determinamos que ele será do mesmo tipo e tamanho que a coluna EMPNO da tabela EMP. Isso é feito através da referencia EMP.EMPNO%TYPE.
Podemos verificar o estado de nossa procedure através de uma simples consulta:
SELECT object_name, status 
  FROM user_objects 
 WHERE object_name LIKE '%AUMENTA%';
Agora podemos verificar o funcionamento de nossa procedure:
SELECT empno, sal
  FROM scott.emp;

EMPNO      SAL
---------- ----------
7839       5000
7698       2850
7782       2450

CALL AUMENTA_SAL(7839);
Ou
EXECUTE AUMENTA_SAL(7839);

SELECT empno, sal
  FROM scott.emp;

     EMPNO        SAL
---------- ----------
      7839       5500
      7698       2850
      7782       2450
Podemos notar que o salário do funcionário 7839 aumentou em 10%. É interessante notar que neste momento é possível executar a instrução ROLLBACK;
É possível desfazer as alterações porque os dados passados através dos modos OUT e IN OUT são registrados no arquivo de redo log e no segmento de rollback. Isso é perfeito quando trabalhamos com parâmetros pouco extensos, mas pode causar impacto no sistema quando trabalhamos com parâmetros extensos como, por exemplo, um registro ou um VARRAY. Para resolver esse problema podemos usar a opção de NOCOPY. Nossa procedure ficaria assim com a opção NOCOPY:
CREATE OR REPLACE PROCEDURE aumenta_sal
(p_empno IN OUT NOCOPY emp.empno%TYPE)
IS
BEGIN
UPDATE scott.emp
SET sal = sal * 1.10
WHERE empno = p_empno;
END aumenta_sal;
/




Redes - Frame Relay

Redes - Frame Relay


      Apesar de ser um protocolo relativamente antigo, o Frame Relay é ainda muito utilizado na área de telecomunicações. Por suas características de qualidade e por existir no Brasil uma rede legada com grande capilaridade, o Frame Relay está presente na composição de diversos serviços de Telecom, em geral, como uma opção de acesso a redes de dados corporativas ou à Internet.

De uma forma genérica, podemos dizer que a tecnologia Frame Relay implementa mecanismos para o envio de informações por comutação de pacotes, sejam elas provenientes de serviços de dados como de voz. A forma de envio é feita por “frames” (ou quadros), onde cada frame tem um “endereço” que define o destino de entrega da informação.




Características do Frame Relay

      Quando implementamos o Frame Realy, podemos utilizar a tecnologia tanto prover acesso, como para o transporte das informações. Quando foi concebida, na década de 1980, a tecnologia era considerada de alta velocidade. Entretanto, a percepção do que seja uma alta ou baixa velocidade de transmissão muda com o tempo, e hoje, ainda é uma opção interessante para redes de acesso, pois existem grandes restrições ao uso do Frame Relay na implementação de backbones.

Na figura abaixo, temos uma arquitetura típica no processo de formação de redes corporativas utilizando frame relay no acesso.

      É importante ressaltar que a tecnologia Frame Relay apresenta uma série de vantagens para a sua utilização como rede de acesso tais como: custo baixo, alta confiabilidade na transmissão, tecnologia estável e já testada em diversas situações, reconhecimento pelo mercado, boa escalabilidade e flexibilidade de configuração, interoperabilidade com backbones IP e ATM (como mostra a figura anterior), grande capilaridade na rede legada, capacidade de transportar voz e dados com qualidade e baixo overhead no protocolo.

Porém, como funciona o Frame Relay?

      Como dito na introdução, a tecnologia FR utiliza comutação de pacotes, ou ainda, multiplexação estatística, e de fato, organiza a informação a ser transmitida em “frames” (quadros), que contém em seus cabeçalhos o endereço de destino. A informação da LAN é encapsulada em quadros que são encaminhados através de portas sem a necessidade de alocação fixa no tempo, ou seja, são utilizados recursos de rede em função da demanda apresentada pela aplicação do cliente.

      Utilizamos o termo “encaminhamento” de informações pois o FR é eminentemente um protocolo de camada 2, e é lícito afirmar que é um protocolo simples, que nem sequer implementa todas as funcionalidades previstas para o Layer 2 do modelo OSI. De fato, o FR foi concebido para ser “rápido” e eficiente, pois as funções suprimidas são geralmente realizadas pelas aplicações transportadas. Apenas como exemplo, o FR não realiza pedidos de retransmissão no caso de perda de frames. O FR verifica na recepção se um frame chegou corretamente, descartando-o no caso de problemas. Eventuais pedidos de retransmissão devem ser feitos pelos protocolos de camadas mais altas.

Outra característica importante do Frame Relay é que implementa o encaminhamento através de Circuitos Virtuais (Virtual Circuits – VC’s), que funcionam basicamente como um circuito dedicado durante a transmissão. Falaremos um pouco mais sobre eles nas próximas seções.


Estrutura do Frame (Quadro)

Como dito, o FR utiliza frames para o transporte das informações. O frame é composto de cinco partes como mostra a figura abaixo:

  • Os campos “Flag” são apenas para indicar o início e o final de cada quadro.
  • O “Frame Relay Header (FRH)” é uma parte mais complexa, com diversos campos utilizados para controle do protocolo (ver explicação a seguir).
  • O campo “Information” carrega a informação da aplicação do usuário.
  • O campo “FCS (Frame Check Sequence)” é um CRC (Cyclic Redundat Check) de 16 bits utilizado para detecção de erros no receptor, ou seja, caso ocorra algum erro entre a transmissão e a recepção do frame, é com este campo que o protocolo verifica a integridade do quadro.
 Vamos agora ver como é o Header:


O FRH tem 2 bytes e é composto pelos seguintes campos:
  • DLCI (Data Link Connection Identifier – 10 bits) que indica o endereço de destino do frame. De fato, é o número do Circuito Virtual Permanente (CVP ou PVC – Permanent Virtual Circuit).
  • C/R (Command / Response – 1 bit) que indica se este é um frame de comando ou de resposta.
  • EA (Extended Address – 2 bits) que indica se este frame tem um cabeçalho estendido, ou seja, com até 2 bytes adicionais. A extensão do cabeçalho é interessante caso se queira ampliar as possibilidades de endereçamento.
  • FECN (Foward Explicit Congestion Notification – 1 bit) e BECN (Backward Explicit Congestion Notification – 1 bit) – quando a rede fica congestionada ao ponto de não conseguir processar novas transmissões, ela começa a descartar frames. Esses frames descartados são retransmitidos, e portanto, podem causar mais congestionamento. Para prevenir esta situação, os campos FECN e BECN são utilizados para notificar os equipamentos de recepção e transmissão acerca do problema de congestionamento. O FECN é setado (“1”) para indicar que o caminho “de ida” (downstream) da informação está congestionado. O BECN é setado (“1”) para indicar que o caminho “de volta” do caminho onde trafega a informação está congestionado.
  • DE (Discard Eligibility Indicator – 1 bit) que indica se este é um frame elegível para o descarte no caso de congestionamento na rede.

Circuitos Virtuais (VC – Virtual Circuits)

Na tecnologia Frame Relay existem dois tipos de VC’s (Virtual Circuits – Circuitos Virtuais) padronizados: PVC e SVC.

O “Permanent Virtual Circuit (PVC)”, geralmente traduzido para CVP – Circuito Virtual Permanente, pode ser configurado pela operadora de serviços de telecomunicações e se comporta para o usuário como uma conexão permanente entre dois pontos. Quando um CVP é implementado, existe a criação de uma rota de encaminhamento. Esta rota pode ser alterada durante a operação devido a problemas ou por mudanças de configuração promovidas pela própria operadora.

O CVP é muito utilizado na prática para a formação de redes corporativas. Por exemplo: imagine uma empresa com filiais em três estados brasileiros que precisa contratar em uma operadora o serviço de telecom, ou seja, quer interligar as três LANs de tal forma que estas possam compartilhar servidores de aplicação (controle de estoque, sistema financeiro, PABX, acesso a Internet etc). Uma topologia simples para solucionar esta demanda é apresentada na figura seguinte onde cada LAN é conectada ao backbone da operadora através de CVPs Frame Relay. Neste caso, a tecnologia Frame Relay não é utilizada para levar a informação de uma LAN para outra. De fato, serve apenas como rede de acesso, sendo que cada CVP criado leva a informação de uma LAN até um ponto de entrada no backbone.


O Switched Virtual Circuit (SVC), geralmente traduzido para CVC – Circuito Virtual Comutado, é criado de forma automática, sob demanda, fazendo a conexão permanente entre dois pontos quando necessário para atender uma aplicação que exija um circuito temporário. Um exemplo de aplicação para este tipo de circuito é o uso em chamadas de voz onde a conexão só precisa estar feita no período de duração da chamada. O protocolo de sinalização do SVC é especificado na norma ITU-T Q.933.

Note que para o usuário é transparente o uso SVC ou PVC, desde que tudo ocorra bem. Porém, para a operadora o SVC permite uma maior flexibilidade na conectividade entre os pontos de origem e destino na rede, resultando em economia no projeto.


Controle de Congestionamento do Frame Relay

A tecnologia FR apresenta alguns mecanismos opcionais de controle e sinalização para a situação de congestionamento, verificação do estado das conexões e sinalização para formação de um SVC.

Como em toda rede, no caso do FR, vão existir restrições de banda. Toda tecnologia com multiplexão estatística vai ter este tipo de problema. Na medida em que o tráfego aumenta, aloca-se banda para a realização das transmissões até que a rede congestione, ou seja, o tráfego que chega não consegue mais ser atendido. Uma das primeiras conseqüências do congestionamento é o aumento no atraso da entrega dos frames e em casos mais extremos, o descarte de pacotes. Note que neste último caso, tornam-se importantes os procedimentos de reenvio, as solicitações de retransmissão das camadas superiores.

A tecnologia FR tem os seguintes mecanismos para gerenciar o problema de congestionamento:
  • Explicit Congestion Notification (ECN) – neste caso, utiliza-se os bits FECN e BECN do header FR para avisar os equipamentos sobre o problema do congestionamento. Se um equipamento detecta o congestionamento ele “seta” BECN e FECN no upstream e no downstream (Figura a seguir). Os avisos de BECN e FECN podem ser utilizados pelos protocolos de camada superior para iniciar procedimentos de recuperação de pacotes, diminuição da necessidade de banda etc.
  • Implicit Congestion Notification – neste caso, a detecção do congestionamento é feita por um protocolo de camada superior. Os protocolos de aplicação do cliente podem por exemplo, monitorar o atraso de chegada de informação, ou seja, “deduzem” que algo está ocorrendo na rede. Neste caso, os protocolos podem ativar procedimentos que reduzem o envio de frames, diminuindo o congestionamento.
  • Discard Eligibility (DE) – quando ocorre congestionamento, a rede FR pode decidir descartar frames para diminuir o problema. A função DE fornece um sinal para determinar quais quadros podem ser descartados caso necessário. No header FR, o bit DE pode ser colocado em “1” para indicar que aquele é um quadro eleito para descarte. Um ponto interessante a ser discutido mais para frente neste tutorial é: como é a definição de elegibilidade para descarte? Veremos na próxima seção.
  • Sinalização com DLCI (Data Link Connection Identifier) específico – no FR é possível a comunicação do status das portas e dos circuitos virtuais utilizando DLCIs específicos. Nesses frames podem ser passadas informações do estado de cada porta ou circuito virtual (por exemplo: se está congestionado ou não).

Eligibilidade para Descarte e CIR (Commited Information Rate)

No padrão Frame Relay, existe um parâmetro chamado CIR – Commited Information Rate que representa algo como uma garantia de banda na contratação de um circuito virtual. A CIR é especificada como um percentual da capacidade máxima da porta contratada e este valor define a partir de quando o bit DE (Discard Elegibility) será ativado. Quando um equipamento do cliente ultrapassa o valor da CIR no uso da banda do seu circuito, os frames passam a ter o bit DE em “1”.

Voz sobre Frame Relay (VoFR)

Uma das aplicações que a tecnologia Frame Relay lida com excelente qualidade é o transporte de voz telefônica. O padrão Frame Relay consegue atender o QoS exigido para a aplicação permitindo ao usuário ter acessos com voz e dados integrados diminuindo custos empresariais. Muitas empresas adotam o FR como tecnologia de acesso justamente por saberem que a sua qualidade é muito boa. Abaixo uma figura mostrando uma topologia típica de VoFR.

 Frame Relay e ATM

As tecnologias ATM e FR, através de seus fóruns, desenvolveram diversos IAs (Implementation Agreements) para possibilitar a integração de equipamentos em uma mesma rede. Uma IA se chama “Frame Relay/ATM Network Interworking Implementation Agreement (FRF.5)” que explica como encapsular frames em células ATM. Os endereços FR são mapeados para endereçamentos ATM quando a informação passa por um núcleo da nova tecnologia. Veja a figura seguinte.


Outra forma de interoperabilidade está descrita na IA FRF.8 Frame Relay/ATM PVC Service Interworking Implementation Agreement. Neste caso é feito um processo de conversão dos protocolos permitindo que redes FR se liguem a redes ATM . Veja a figura seguinte.


Especificações e Normas Frame Relay

Existem dois órgãos internacionais que se envolveram fortemente na padronização do Frame Relay: ANSI e ITU-T. Cada órgão publica as normas com uma numeração diferente:
  • Especificação: Service Description – ANSI T1.606 ou I.233
  • Especificação: Core Aspects – ANSI T1.618 ou Q.922 (Anexo A)
  • Especificação: Access Signaling – ANSI T1.617 ou Q.933
Leo***

terça-feira, 25 de janeiro de 2011

Criar Um Job (Trabalho) No Sql Server 2008

Criar Um Job (Trabalho) No Sql Server 2008

  1. No Pesquisador de Objetos , conecte a uma instância do SQL Server Database Engine e expanda essa instância.
  2. Expanda SQL Server Agent .
  3. Botão direito do mouse Empregos e, em seguida, clique em New Job .
  4. No geral página, no nome , digite um nome para o trabalho.
  5. Desmarque a Enabled caixa de seleção se você não quer que o trabalho seja executado imediatamente após a sua criação. Por exemplo, se você quiser testar um trabalho antes que ele seja programado para ser executado, o trabalho de desativar.
  6. Em Descrição , digite uma descrição do que o trabalho não. O número máximo de caracteres é 512.
Para adicionar etapas de trabalho, agendas, alertas e notificações que podem ser enviados aos operadores, consulte os links para tópicos de instrução que se seguem.


-----------------------------------



-----------------------------------

     Abaixo são mostradas as Stored Procedures que são utilizadas para se trabalhar com Jobs. Estas Stored Procedure estão localizadas dentro do banco de dados MSDB: 

Stored Procedure

                                  Função

sp_add_Job
    ===>   Cria um Job , mas não o agenda para execução

sp_update_Job
    ===>  Permite a modificação de parâmetros do Job

sp_delete_Job
    ===>  Apaga um Job

sp_help_Job
    ===>  Mostra informações sobre um Job

sp_add_Jobschedule
    ===>  Cria um agendamento para um Job ( Data/Hora início e término , etc)

sp_update_Jobschedule 
    ===>  Atualiza as informações deagendamento para um Job

sp_delete_Jobschedule
    ===>   Apaga um agendamento de um Job

sp_help_Jobschedule
    ===>  Mostra informações sobre um agendamento de um Job

sp_add_Jobstep
    ===>  Adiciona um passo para um Job

sp_update_Jobstep
    ===>  Modifica as configurações de um passo de um Job

sp_delete_Jobstep
    ===>  Apaga um passo de um Job

sp_help_Jobstep
    ===>  Mostra informações (inclusive o código fonte) de um passo de um Job






Leo***