Buenas a todos!

Este post pode ser um pouco passado para muitos DBAs, mas para quem está começando e planeja automatizar algumas tarefas, as dicas aqui pode ser de extrema utilidade!

Antes de começar, atente-se que o post é dividido em duas partes:
– Criando scripts sqlplus e rman para Windows;
– Criando scripts sqlplus e rman para Linux;

Dividimos desta maneira devido a limitações de cada ambiente.
Vamos começar!

CRIANDO SCRIPTS SQL*PLUS E RMAN PARA WINDOWS

Veja o exemplo de script que montei abaixo

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”KAplY2hvIGNvbm5lY3QgLyBhcyBzeXNkYmEKZWNobyBTRUxFQ1QgMSBGUk9NIGR1YWwKZWNobyBXSEVSRSAxPTE7CmVjaG8gZXhpdAopIHwgc3FscGx1cyAvbm9sb2c=” hover_enabled=”0″]KAplY2hvIGNvbm5lY3QgLyBhcyBzeXNkYmEKZWNobyBTRUxFQ1QgMSBGUk9NIGR1YWwKZWNobyBXSEVSRSAxPTE7CmVjaG8gZXhpdAopIHwgc3FscGx1cyAvbm9sb2c=[/et_pb_dmb_code_snippet]

Neste script, escrevemos uma série de comando SQL agrupados por ‘()’ e os enviamos por pipe ( ‘|’ ) para o sqlplus.
Com isto teremos um resultado como:

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”U1FMKlBsdXM6IFJlbGVhc2UgMTEuMS4wLjcuMCAtIFByb2R1Y3Rpb24gb24gRG9tIFNldCAyMyAxMzoyODo1MyAyMDEyCgpDb3B5cmlnaHQgKGMpIDE5ODIsIDIwMDgsIE9yYWNsZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgpTUUw+IENvbmVjdGFkby4KU1FMPiAgIDIKICAgICAgICAgMQotLS0tLS0tLS0tCiAgICAgICAgIDEKClNRTD4gRGVzY29uZWN0YWRvIGRlIE9yYWNsZSBEYXRhYmFzZSAxMWcgUmVsZWFzZSAxMS4xLjAuNy4wIC0gNjRiaXQgUHJvZHVjdGlvbg==” hover_enabled=”0″]U1FMKlBsdXM6IFJlbGVhc2UgMTEuMS4wLjcuMCAtIFByb2R1Y3Rpb24gb24gRG9tIFNldCAyMyAxMzoyODo1MyAyMDEyCgpDb3B5cmlnaHQgKGMpIDE5ODIsIDIwMDgsIE9yYWNsZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgpTUUw+IENvbmVjdGFkby4KU1FMPiAgIDIKICAgICAgICAgMQotLS0tLS0tLS0tCiAgICAgICAgIDEKClNRTD4gRGVzY29uZWN0YWRvIGRlIE9yYWNsZSBEYXRhYmFzZSAxMWcgUmVsZWFzZSAxMS4xLjAuNy4wIC0gNjRiaXQgUHJvZHVjdGlvbg==[/et_pb_dmb_code_snippet]

Simples não?

OMITINDO E EXIBINDO APENAS AS INFORMAÇÕES IMPORTANTES

No exemplo acima, observe a série de textos exibidos pelo SQLPLUS. As vezes estes textos podem atrapalhar o fluxo de seu script ou mesmo inviabilizá-lo.
Que tal reformularmos?

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”KAplY2hvIGNvbm5lY3QgLyBhcyBzeXNkYmEKZWNobyBzZXQgcGFnZXNpemUgMDsKZWNobyBTRUxFQ1QgMSBGUk9NIGR1YWwKZWNobyBXSEVSRSAxPTE7CmVjaG8gZXhpdAopIHwgc3FscGx1cyAtcyAvbm9sb2c=” hover_enabled=”0″]KAplY2hvIGNvbm5lY3QgLyBhcyBzeXNkYmEKZWNobyBzZXQgcGFnZXNpemUgMDsKZWNobyBTRUxFQ1QgMSBGUk9NIGR1YWwKZWNobyBXSEVSRSAxPTE7CmVjaG8gZXhpdAopIHwgc3FscGx1cyAtcyAvbm9sb2c=[/et_pb_dmb_code_snippet]

E como resultado, omitiremos todas as informações exibidas pelo SQLPLUS ( observe o -s ) e omitiremos o header da coluna selecionada ( observe o set pagesize 0; )

Resultado:

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”ICAgICAgICAgMQ==” hover_enabled=”0″]ICAgICAgICAgMQ==[/et_pb_dmb_code_snippet]

SE VOCÊ QUISER USAR UM SCRIPT PARA RMAN, SIGA O MESMO PRINCÍPIO E SUBSTITUA O SQLPLUS -S /NOLOG POR ALGO COMO RMAN TARGET /.

 

CRIANDO SCRIPTS SQLPLUS E RMAN PARA LINUX

Vamos nos inspirar no exemplo anterior e montar um sql que exiba “1“:

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”c3FscGx1cyAtcyA8PCBfRU9GCi8gYXMgc3lzZGJhCnNldCBwYWdlc2l6ZSAwOwpTRUxFQ1QgMSBGUk9NIGR1YWwKV0hFUkUgMT0xOwpleGl0OwpfRU9G” hover_enabled=”0″]c3FscGx1cyAtcyA8PCBfRU9GCi8gYXMgc3lzZGJhCnNldCBwYWdlc2l6ZSAwOwpTRUxFQ1QgMSBGUk9NIGR1YWwKV0hFUkUgMT0xOwpleGl0OwpfRU9G[/et_pb_dmb_code_snippet]

Explicando a extrutura:

Todo o bloco agrupado dentro das tags _EOF será digitado ao abrir o comando SQLPLUS. Inclusive as quebras de linha e caracteres especiais.
No exemplo acima usei _EOF mas poderia ser algo como HOUHOUHOU

Observe:

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”c3FscGx1cyAtcyA8PCBIT1VIT1VIT1UKLyBhcyBzeXNkYmEKc2V0IHBhZ2VzaXplIDA7ClNFTEVDVCAxIEZST00gZHVhbApXSEVSRSAxPTE7CmV4aXQ7CkhPVUhPVUhPVQ==” hover_enabled=”0″]c3FscGx1cyAtcyA8PCBIT1VIT1VIT1UKLyBhcyBzeXNkYmEKc2V0IHBhZ2VzaXplIDA7ClNFTEVDVCAxIEZST00gZHVhbApXSEVSRSAxPTE7CmV4aXQ7CkhPVUhPVUhPVQ==[/et_pb_dmb_code_snippet]

Como já usei -s e set pagesize 0; o resultado deste script será apenas:

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”ICAgICAgIDE=” hover_enabled=”0″]ICAgICAgIDE=[/et_pb_dmb_code_snippet]

Simples não?

POR QUE USAR ESTA MODELAGEM DE SCRIPT E NÃO USAR O @<SCRIPT.SQL>?

Com a abordagem proposta acima, podemos usar variáveis de ambiente ou personalizar o script dinamicamente.
Observe um exemplo de uso de scripts:

Dropando usuário por parametro

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”Tk9NRV9ET19VU1VBUklPPSdkYXJ0YW5naGFuJzsKCmVjaG8gJ1ZvdSBkcm9wYXIgbyAkTk9NRV9ET19VU1VBUklPISc7CgpzcWxwbHVzIC1zIDw8IF9FT0YgPj4gJExPR19GSUxFIAovIGFzIHN5c2RiYQpEUk9QIFVTRVIgJE5PTUVfRE9fVVNVQVJJTyBDQVNDQURFOwpleGl0OwpfRU9G” hover_enabled=”0″]Tk9NRV9ET19VU1VBUklPPSdkYXJ0YW5naGFuJzsKCmVjaG8gJ1ZvdSBkcm9wYXIgbyAkTk9NRV9ET19VU1VBUklPISc7CgpzcWxwbHVzIC1zIDw8IF9FT0YgPj4gJExPR19GSUxFIAovIGFzIHN5c2RiYQpEUk9QIFVTRVIgJE5PTUVfRE9fVVNVQVJJTyBDQVNDQURFOwpleGl0OwpfRU9G[/et_pb_dmb_code_snippet]

Observe o uso de variáveis dentro do script. Com isto, podemos fazer scripts que busquem archives via ftp de outros servidores e os apliquem num ambiente, que façamos backups customizados ou replicação de usuários para bases de testes.

Bem, espero que este artigo possa ajudar muitos administradores nesse mundão 🙂

Forte abraço a todos.
Dartanghan.