tag:blogger.com,1999:blog-87989685226142375032024-03-05T00:55:18.436-04:00Claudemar Martins de SáCompartilhando conhecimento com o mundoClaudemar Martins de Sáhttp://www.blogger.com/profile/05069108300402187406noreply@blogger.comBlogger87125tag:blogger.com,1999:blog-8798968522614237503.post-49728262136057647462024-01-12T14:02:00.007-04:002024-01-12T15:37:59.821-04:00Otimizando a Organização de Arquivos por Meio de AutomaçãoA reorganização de diretórios com os relatórios dos backups desempenha um papel fundamental na organização e na eficiência operacional. Um script Bash bem elaborado pode facilitar significativamente esse processo, proporcionando automação e economia de tempo para administradores de sistemas.
Ao implementar um script Bash para a reorganização de diretórios em um servidor FTP, é possível criar uma estrutura lógica e ordenada, simplificando a navegação e o gerenciamento de arquivos. Esse tipo de script pode ser projetado para categorizar arquivos por tipo, data ou qualquer critério relevante, facilitando a localização e o acesso aos dados.
O script poderia começar realizando uma análise do diretório atual no servidor FTP, identificando subdiretórios e arquivos. Em seguida, com base em critérios predefinidos, ele organiza esses itens de maneira lógica. Isso pode envolver a criação de novos diretórios, a transferência de arquivos entre eles e até mesmo a exclusão de itens não mais necessários.
<h1>Diretório</h1>
Esse o diretório onde estão os arquivos de FTP dos jobs dos backups - todos juntos, misturados, pra encontrar um era um trabalho - imagine esse diretório com 15 anos de relatório de backups
<pre style="border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;">\\ftp\repositorio\mdf\db2\dbas
24020220611DIA.TXT
8020220610DIA.TXT
21020220610DIA.TXT
24020220610DIA.TXT
8020220609DIA.TXT
24220220611LEG.TXT
2020220206MES.TXT
3020220206MES.TXT
4020220206MES.TXT
5020220206MES.TXT
6020220206MES.TXT
7020220206MES.TXT
8020220206MES.TXT
9020220206MES.TXT
10020220206MES.TXT
12020220206MES.TXT
13020220206MES.TXT
14020220206MES.TXT
15020220206MES.TXT</pre>
Ao rodar o script bash vamos gravar para dentro de uma pasta chamada FTP_ADABAS onde vamos separar por ano e o tipo de backup
<pre style="border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;">FTP_ADABAS
2022
- ANO
- DIA
- LEG
- MES
- SEG
- SEM
- SHOC
2023
- ANO
- DIA
- LEG
- MES
- SEG
- SEM
- SHOC
2024
- ANO
- DIA
- LEG
- MES
- SEG
- SEM
- SHOC
2025
- ANO
- DIA
- LEG
- MES
- SEG
- SEM
- SHOC
2026
- ANO
- DIA
- LEG
- MES
- SEG
- SEM
- SHOC</pre>
<h1>script_backup.bat</h1>
Para abordar essa questão, desenvolvemos um script em BAT denominado "script_backup.bat". Este script desempenha a função de mover os arquivos localizados na raiz do diretório para o diretório específico do ano correspondente. Sua estrutura é simples, empregando comandos do DOS do Windows.
O funcionamento do script se inicia com a captura da variável referente ao ano atual. Em seguida, são movidos os backups no formato TXT do diretório principal para suas respectivas pastas no diretório ANO/PERIODICIDADE. Essa abordagem visa categorizar os backups de forma organizada, facilitando a gestão e recuperação de dados com base em critérios temporais específicos.
Ao realizar esse processo de reorganização, o script contribui para a manutenção da estrutura do repositório, assegurando que os backups sejam armazenados nos diretórios correspondentes ao ano e à periodicidade desejados. Essa prática não apenas simplifica a localização de backups específicos, mas também promove uma melhor organização e gestão eficiente dos dados armazenados, otimizando assim o ambiente de backup no sistema operacional Windows.
<pre style="border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;">@echo off
setlocal enabledelayedexpansion
:: ---------------------------------------------------------------------------------
:: Extract date fields - language dependent
:: ---------------------------------------------------------------------------------
::
::
for /f "tokens=1-4 delims=/-. " %%i in ('date /t') do (
set v1=%%i& set v2=%%j& set v3=%%k
if "%%i:~0,1%%" gtr "9" (set v1=%%j& set v2=%%k& set v3=%%l)
for /f "skip=1 tokens=2-4 delims=(-)" %%m in ('echo.^|date') do (
set %%m=!v1!& set %%n=!v2!& set %%o=!v3!
)
)
:: Final set for language independency (English and Portuguese - maybe works for Spanish and French)
set year=%yy%%aa%
set month=%mm%
set day=%dd%
:: ---------------------------------------------------------------------------------
:: Validando as Variaveis que foram carregadas acima
:: ---------------------------------------------------------------------------------
::
:: echo Year:[%year%] - month:[%month%] - day:[%day%]
::
:: ---------------------------------------------------------------------------------
:: ---- Movendo os arquivos DIA
:: ---------------------------------------------------------------------------------
::
::
move \\ftp\repositorio\mdf\db2\dbas\*DIA.TXT \\ftp\repositorio\mdf\db2\dbas\FTP_ADABAS\%year%\DIA
::
::
:: ---------------------------------------------------------------------------------
:: ---- Movendo os arquivos SEG
:: ---------------------------------------------------------------------------------
::
::
move \\ftp\repositorio\mdf\db2\dbas\*SEG.TXT \\ftp\repositorio\mdf\db2\dbas\FTP_ADABAS\%year%\SEG
::
::
:: ---------------------------------------------------------------------------------
:: ---- Movendo os arquivos SEM
:: ---------------------------------------------------------------------------------
::
::
move \\ftp\repositorio\mdf\db2\dbas\*SEM.TXT \\ftp\repositorio\mdf\db2\dbas\FTP_ADABAS\%year%\SEM
::
::
:: ---------------------------------------------------------------------------------
:: ---- Movendo os arquivos MES
:: ---------------------------------------------------------------------------------
::
::
move \\ftp\repositorio\mdf\db2\dbas\*MES.TXT \\ftp\repositorio\mdf\db2\dbas\FTP_ADABAS\%year%\MES
::
::
:: ---------------------------------------------------------------------------------
:: ---- Movendo os arquivos ANO
:: ---------------------------------------------------------------------------------
::
::
move \\ftp\repositorio\mdf\db2\dbas\*ANO.TXT \\ftp\repositorio\mdf\db2\dbas\FTP_ADABAS\%year%\ANO
::
::
:: ---------------------------------------------------------------------------------
:: ---- Movendo os arquivos LEG
:: ---------------------------------------------------------------------------------
::
::
move \\ftp\repositorio\mdf\db2\dbas\*LEG.TXT \\ftp\repositorio\mdf\db2\dbas\FTP_ADABAS\%year%\LEG
::
::
:: ---------------------------------------------------------------------------------
:: ---- Movendo os arquivos HOL
:: ---------------------------------------------------------------------------------
::
::
move \\ftp\repositorio\mdf\db2\dbas\*HOL.TXT \\ftp\repositorio\mdf\db2\dbas\FTP_ADABAS\%year%\SHOC\SHOL
::
::
:: ---------------------------------------------------------------------------------
:: ---- Movendo os arquivos HOM
:: ---------------------------------------------------------------------------------
::
::
move \\ftp\repositorio\mdf\db2\dbas\*HOM.TXT \\ftp\repositorio\mdf\db2\dbas\FTP_ADABAS\%year%\SHOC\SHOM
::
::
:: ---------------------------------------------------------------------------------
:: ---- Movendo os arquivos HOC
:: ---------------------------------------------------------------------------------
::
::
move \\ftp\repositorio\mdf\db2\dbas\*HOC.TXT \\ftp\repositorio\mdf\db2\dbas\FTP_ADABAS\%year%\SHOC\SHOC
::
::
:: ---------------------------------------------------------------------------------
:: ---- Movendo os arquivos RESTANTE que sobrou
:: ---------------------------------------------------------------------------------
::
::
move \\ftp\repositorio\mdf\db2\dbas\*.TXT \\ftp\repositorio\mdf\db2\dbas\FTP_ADABAS\%year%
::
::
endlocal
: pause</pre>
<h1>Rodar Automaticamente</h1>
Para que seu arquivo bat rode ao acessar o seu windows, execute os passos a seguir: Pressione as teclas Windows+R, cole
<pre style="border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;">%appdata%\Microsoft\windows\start menu\programs\startup</pre>
e clique em Ok. Em seguida cole sua batch neste diretório ou se preferir navegue manualmente conforme imagem abaixo:
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwF4E-n3efl2RjOoc48gfJrpQM5OSWvkY_9DsdO23xOYnLmmFGYPhlQSt0tiXiW-O8iAkkHrSTaPq7a6xt2Qf7zI_Ssx3QDFeX3Vc_o0LxXkhd3xDo1P-NShH2SNCxpJbuOmAMksMZjectn6cZnnFIAC6rfGbd9xnmDUdiOWyorwty_EUxvqdbHRiblg/s1600/Fd9df0df-fbc7-4f6c-b3b8-deb9ff18719a.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" data-original-height="271" data-original-width="748" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwF4E-n3efl2RjOoc48gfJrpQM5OSWvkY_9DsdO23xOYnLmmFGYPhlQSt0tiXiW-O8iAkkHrSTaPq7a6xt2Qf7zI_Ssx3QDFeX3Vc_o0LxXkhd3xDo1P-NShH2SNCxpJbuOmAMksMZjectn6cZnnFIAC6rfGbd9xnmDUdiOWyorwty_EUxvqdbHRiblg/s1600/Fd9df0df-fbc7-4f6c-b3b8-deb9ff18719a.png"/></a></div>
E cole o arquivo bat nesse diretório, todas as vezes que você logar no Windows vai executar esse arquivo movimentando os arquivos
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzArcWd5Cbu-Ak91M1B36LioWURkXaQ7m7_2I4e_W3uM4FVgDj5tmKCRDfZij-kYXwK-1TP0v8BAELgoG0Uidf_OmddlJA3Gifqm2196Xf-EKwdzrUv-AeiM2UIAjuSNJa1ekoKawymEaOIYF2wdmv8kSEpNmKFw9IszVqbzzYTZE9keRfPSqvyLqFIA/s1920/Captura%20de%20Tela%20%28281%29.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="320" data-original-height="1080" data-original-width="1920" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzArcWd5Cbu-Ak91M1B36LioWURkXaQ7m7_2I4e_W3uM4FVgDj5tmKCRDfZij-kYXwK-1TP0v8BAELgoG0Uidf_OmddlJA3Gifqm2196Xf-EKwdzrUv-AeiM2UIAjuSNJa1ekoKawymEaOIYF2wdmv8kSEpNmKFw9IszVqbzzYTZE9keRfPSqvyLqFIA/s320/Captura%20de%20Tela%20%28281%29.png"/></a></div>Claudemar Martins de Sáhttp://www.blogger.com/profile/05069108300402187406noreply@blogger.com0tag:blogger.com,1999:blog-8798968522614237503.post-57467380943782639332020-02-28T08:29:00.000-04:002020-05-18T10:51:09.042-04:00Migrando o Informix para o SQL ServerTem vários programas para migrar o Informix para o SQL Server, a grande maioria pagos, mas encontrei um bem interessante (e código aberto) e resolvei compartilhar com vocês - O <a href="http://www.sqlines.com/sqldata/informix-to-sql-server">SQLines Data</a> é uma ferramenta de transferência de dados, escalável e de alto desempenho, conversão de esquema e validação para a migração de vários bancos de dados. A ferramenta requer conexões com os bancos de dados Informix (ODBC/CLI sem ODBC Manager) e SQL Server (SQL Server Native Client).
<br /><br />
Validando e depois transferindo os dados
<br /><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfxPsp0hkHzj7C3gKSekG6fZODqE1DKtq3WgSMqwPKdcF3nnh8TGvxIT2HzFyYCuQuDGfZDD4v6Yak68X61ibdCNo4ajCdHeNTdQ6Cx5i50-k89S2aPzoF4rymomvRxwFTzC0h8CFMwhQ/s1600/Captura+de+Tela+%2528333%2529.png" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfxPsp0hkHzj7C3gKSekG6fZODqE1DKtq3WgSMqwPKdcF3nnh8TGvxIT2HzFyYCuQuDGfZDD4v6Yak68X61ibdCNo4ajCdHeNTdQ6Cx5i50-k89S2aPzoF4rymomvRxwFTzC0h8CFMwhQ/s320/Captura+de+Tela+%2528333%2529.png" width="320" height="180" data-original-width="1366" data-original-height="768" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEix4tNSScxtYZmkdQYvtmgqkk68O9Drto7ddGDoxidlAaaX1a1_mHxdPyh5b-tonq9yh7iTc7aicr0zrXxsiteKRGEThAl_1UcepKKCY9gD6I2BxGkPSxMTLOXZMhg98cJi25ArEyBCIbg/s1600/Captura+de+Tela+%2528334%2529.png" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEix4tNSScxtYZmkdQYvtmgqkk68O9Drto7ddGDoxidlAaaX1a1_mHxdPyh5b-tonq9yh7iTc7aicr0zrXxsiteKRGEThAl_1UcepKKCY9gD6I2BxGkPSxMTLOXZMhg98cJi25ArEyBCIbg/s320/Captura+de+Tela+%2528334%2529.png" width="320" height="180" data-original-width="1366" data-original-height="768" /></a>
<br /><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhHU3MBd5ATmkKCGBCbyGTNkdX04jiPE6ArSfkjgi7vFyuGAQzpZWLY04dw8Fnj6ySLMmb31UsagJPnZvd6baz9qSJfe0_PGBk1fI4hSzmHridZsXW5MJj7V0JYoX_rn0yUKSnWCCC0ZE/s1600/Captura+de+Tela+%2528335%2529.png" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhHU3MBd5ATmkKCGBCbyGTNkdX04jiPE6ArSfkjgi7vFyuGAQzpZWLY04dw8Fnj6ySLMmb31UsagJPnZvd6baz9qSJfe0_PGBk1fI4hSzmHridZsXW5MJj7V0JYoX_rn0yUKSnWCCC0ZE/s320/Captura+de+Tela+%2528335%2529.png" width="320" height="180" data-original-width="1366" data-original-height="768" /></a>
<br /><br />
Comparando a quantidade de linhas de cada tabelas de um banco com outro (bateu)
<br /><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCEmLIMQaGwamH5Ll3U_vhA8aRhQ4pdICYrY1ooVYNujXsVqTcRlAZNvrXS7ymUptOfCqq2FNY3cv0lBnsuAnLL61iNtOzb51VkTLKKWgOo14B_NTpeoY9Ke75lXk4b9bWp-BnqiRi7jo/s1600/Captura+de+Tela+%2528336%2529.png" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCEmLIMQaGwamH5Ll3U_vhA8aRhQ4pdICYrY1ooVYNujXsVqTcRlAZNvrXS7ymUptOfCqq2FNY3cv0lBnsuAnLL61iNtOzb51VkTLKKWgOo14B_NTpeoY9Ke75lXk4b9bWp-BnqiRi7jo/s320/Captura+de+Tela+%2528336%2529.png" width="320" height="180" data-original-width="1366" data-original-height="768" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiz7WsZUAX-WKb3MbD_afPZ9m0VAahmVerU8RXEYsxMiVg5oPFw5RlNroqJNlAI_muWEuK36iQoz4wEuhWxcf3XV1bepH6aIPoKHKT-CbjHlK4KygYO4fq7a3qi7ZzlqrMkpBgfyafSgpo/s1600/Captura+de+Tela+%2528337%2529.png" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiz7WsZUAX-WKb3MbD_afPZ9m0VAahmVerU8RXEYsxMiVg5oPFw5RlNroqJNlAI_muWEuK36iQoz4wEuhWxcf3XV1bepH6aIPoKHKT-CbjHlK4KygYO4fq7a3qi7ZzlqrMkpBgfyafSgpo/s320/Captura+de+Tela+%2528337%2529.png" width="320" height="180" data-original-width="1366" data-original-height="768" /></a>Claudemar Martins de Sáhttp://www.blogger.com/profile/05069108300402187406noreply@blogger.com7tag:blogger.com,1999:blog-8798968522614237503.post-57695067741158803552019-11-02T22:17:00.001-04:002019-11-02T22:17:19.171-04:00Conectar o Informix a partir de um pacote SSISAssim como ocorre com muitos produtos de terceiros, o objeto de conexão Informix OLEDB da IBM é menos simples quando se trata de configurá-lo para funcionar com o SSIS. Após algumas pesquisas, criei a seguinte maneira de conectar-se ao banco de dados Informix através do SSIS em um ambiente Windows x64. Eu tive que passar por pilhas de documentação da IBM, muitos artigos na internet e algumas tentativas e erros antes de chegar a uma solução funcional. Eventualmente, consegui obter a conexão bem-sucedida com um banco de dados Informix a partir de um pacote SSIS (Works for Excel etc.). Espero que este post poupe algum trabalho.
<br /><br />
Primeiro, faça o download da versão mais recente do Informix Client Software Development Kit (32 bits) no site da IBM. É um freeware, mas você precisa se registrar no site da IBM para fazer o download do produto. Não use as versões de 64 bits, a menos que esteja trabalhando com o BIDS 2008R2 ou o SQL 2012 Data Tools, pois qualquer coisa anterior a esse (BIDS) ainda é um aplicativo de 32 bits, e seus fornecedores de 64 bits não serão mostrados na lista de fornecedores. Você pode baixar a versão mais recente do SDK do <a href="https://www.ibm.com/support/pages/informix-client-software-development-kit-client-sdk-and-informix-connect-system-requirements">cliente aqui</a> .
<br /><br />
A próxima etapa é adicionar um caminho para “C:\Windows\SysWOW64” ao início da variável ambiental do caminho antes de instalar o SDK do cliente. Caso contrário, você receberá uma mensagem de erro dizendo adicionar um prefixo à variável de caminho. Em seguida, instale o produto, incluindo o pacote de driver do servidor de dados IBM.
<br /><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUVSKnGDG-CqyIjfBVsBTUd-7Hs2fY0q7JHCXNSqrcp6drOTY1jELtdZg0HAvv0dcsoSrmG-h2ta5ccYnG-eLbOOojBG4laH_-HEALalMkRnf9sk6NhOZ65CGLYHX6MZRXs6DQ2vvrcew/s1600/0112a-varification.png" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUVSKnGDG-CqyIjfBVsBTUd-7Hs2fY0q7JHCXNSqrcp6drOTY1jELtdZg0HAvv0dcsoSrmG-h2ta5ccYnG-eLbOOojBG4laH_-HEALalMkRnf9sk6NhOZ65CGLYHX6MZRXs6DQ2vvrcew/s1600/0112a-varification.png" data-original-width="320" data-original-height="166" /></a>
<br /><br />
Após instalar o SDK do cliente, use a ferramenta Setnet32 para configurar um servidor Informix padrão. Você pode encontrar o aplicativo Setnet32 em "Todos os programas > IBM Informix Client SDK".
<br /><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLiVJT3y-TYzHboNaTUJbLzlRmh7pW2lZ5-fn9_6odweKEkCy-2LyzlzmelMLGJbbrlR0pf75DNPs9-HmdiLmXj6E2K0-1166bRynUgLH2RgNVa5DoGow89lktVewJd77cT92VK-6B5s4/s1600/54679-setnet32.png" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLiVJT3y-TYzHboNaTUJbLzlRmh7pW2lZ5-fn9_6odweKEkCy-2LyzlzmelMLGJbbrlR0pf75DNPs9-HmdiLmXj6E2K0-1166bRynUgLH2RgNVa5DoGow89lktVewJd77cT92VK-6B5s4/s1600/54679-setnet32.png" data-original-width="400" data-original-height="320" /></a>
<br /><br />
Preencha as informações do servidor e do host com os detalhes corretos no servidor Informix. Você encontrará que as variáveis ambientais INFORMIXDIR e INFORMIXSERVER estão preenchidas com valores referentes ao servidor padrão. Em seguida, adicione uma nova entrada ao seu arquivo de serviços. O arquivo de serviço pode ser encontrado em "C:\Windows\System32\drivers\etc".
<br /><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5c2F19cKweX2-yjNxkpeFIS-MuVSP1o_jHa_bYMYFP3pl_r0xv_kltdcDXfPWnVHSYs_rcLFjn9NcgvNylhyphenhyphen1WgKpS_RNZ6I3vdFfRqsVr4WFwMgMBLk8LiO53pIgF2cID3T93VmOMfA/s1600/c048d-service.png" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5c2F19cKweX2-yjNxkpeFIS-MuVSP1o_jHa_bYMYFP3pl_r0xv_kltdcDXfPWnVHSYs_rcLFjn9NcgvNylhyphenhyphen1WgKpS_RNZ6I3vdFfRqsVr4WFwMgMBLk8LiO53pIgF2cID3T93VmOMfA/s1600/c048d-service.png" data-original-width="400" data-original-height="121" /></a>
<br /><br />
O formato do arquivo de serviço é mencionado claramente no início do arquivo. A primeira entrada é o nome do serviço, o número da porta e o protocolo.
Após editar o arquivo de serviço, você pode criar uma nova Conexão Aberta à Base de Dados (ODBC). Não use a ferramenta Administrador da fonte de dados em “Arquivos de programas > Ferramentas administrativas”; em vez disso, use “C:\Windows\SysWOW64\odbcad.exe” para adicionar e configurar a nova fonte de dados. Estranho eu sei, não me pergunte por que funciona dessa maneira, mas funciona
<br /><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrVZhb0GyD2wjcmhEie8qr1eDY9r0bHOz6wJUDWA63C8QMyksD13AbIJwDzpHVQvqWS47v2mazgC4Fe3qCv73J9aSvkezBFG2Tp4QI_IxrDi4d24rBpwDqqE5I2Y-uUFvi4cb5b8RVWEM/s1600/dfe9f-addnewconnection.png" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrVZhb0GyD2wjcmhEie8qr1eDY9r0bHOz6wJUDWA63C8QMyksD13AbIJwDzpHVQvqWS47v2mazgC4Fe3qCv73J9aSvkezBFG2Tp4QI_IxrDi4d24rBpwDqqE5I2Y-uUFvi4cb5b8RVWEM/s1600/dfe9f-addnewconnection.png" data-original-width="320" data-original-height="240" /></a>
<br /><br />
Selecione IBM INFORMIX ODBC DRIVER e clique em concluir. A janela de configurações será exibida. Dê qualquer nome à fonte de dados e preencha os detalhes de conexão apropriados. Clique em aplicar e testar a conexão.
<br /><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZbVITS3oz9xf81FpUqiuswVrtNsti32BpGaB_vTpUbjez31DjFEgQIldb0hHJN2T8orJXW9Ny2BWHSxBh0Obq90Gj1-pJ_wMlBbn3ew7-kBvRityxGLTUGVEpEQ0RBlTg-zs6_2AWoI0/s1600/aeac2-testcon.png" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZbVITS3oz9xf81FpUqiuswVrtNsti32BpGaB_vTpUbjez31DjFEgQIldb0hHJN2T8orJXW9Ny2BWHSxBh0Obq90Gj1-pJ_wMlBbn3ew7-kBvRityxGLTUGVEpEQ0RBlTg-zs6_2AWoI0/s1600/aeac2-testcon.png" data-original-width="320" data-original-height="288" /></a>
<br /><br />
Quase pronto! configurando seu ambiente para conectar-se ao Informix. Abra Lances e crie um novo projeto SSIS. Vá para adicionar nova fonte de dados, você encontrará “O IBM OLE DB Provider para Informix” está listado em Provedores OLE DB. Crie uma nova conexão com o servidor Informix e divirta-se com Data.
<br /><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxbBeM7O8qNqF8mTmvRPfGTqjYs_6X2TMhys4ROgu11_5Pzo1T4ErxPT_8Pdl_25_hzdis1FkKByPW3WrwLtpb3bY31JmaxBOi_2HZ8RGf_nf3KZnaRTMOv7PKzo5fgXNk-070L5U4fT4/s1600/dfdbc-addoledbcon.png" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxbBeM7O8qNqF8mTmvRPfGTqjYs_6X2TMhys4ROgu11_5Pzo1T4ErxPT_8Pdl_25_hzdis1FkKByPW3WrwLtpb3bY31JmaxBOi_2HZ8RGf_nf3KZnaRTMOv7PKzo5fgXNk-070L5U4fT4/s1600/dfdbc-addoledbcon.png" data-original-width="312" data-original-height="319" /></a>
<br /><br />
O nome do servidor deve ser fornecido no formato de banco de dados @ servername .
Isso é CRÍTICO ! Defina apropriedade Run64BitRunTime do seu projeto SSIS como " False " Project> Properties> Debugging
<br /><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjfoYG_2ysnmeom2c5UbQ3mPrrdrbLSDxp2f6pcYecGfhxcQvpIB0MCZiP19V6m8qBR0_feC1vLYt5FSu3DqhvuemSTCT9gcU9vIpA58R75U2U5BJrJ8qzsDNSP5S9ht9vzalOL5ir7Mo/s1600/13eda-etl.png" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjfoYG_2ysnmeom2c5UbQ3mPrrdrbLSDxp2f6pcYecGfhxcQvpIB0MCZiP19V6m8qBR0_feC1vLYt5FSu3DqhvuemSTCT9gcU9vIpA58R75U2U5BJrJ8qzsDNSP5S9ht9vzalOL5ir7Mo/s1600/13eda-etl.png" data-original-width="320" data-original-height="255" /></a>
Claudemar Martins de Sáhttp://www.blogger.com/profile/05069108300402187406noreply@blogger.com0tag:blogger.com,1999:blog-8798968522614237503.post-16773498499723465402019-11-02T17:22:00.001-04:002019-11-02T17:41:48.393-04:00Update Statistic - InformixPara compreender verdadeiramente a importância de UPDATE STATISTICS, você precisa entender exatamente o que acontece quando uma consulta SQL é colocada pelo usuário para execução. Cada consulta SQL que é inserido deve ser analisado, otimizado e executado.
<br /><br />
O otimizador é o componente que prepara um plano de consulta. Um plano de consulta ideal e aquele que consulta a execução da minha query - ou seja, ele determina a forma mais eficiente para buscar os dados. Para isso, ela faz uso de um conjunto de dados estatísticos, no entanto, estes dados estatísticos não pode ser assumida para ser exato. A precisão dos dados depende de um grande número de fatores, como o tipo de algoritmo de amostragem utilizado, o número de amostras colhidas, e a distorção dos dados.
<br /><br />
O otimizador de consulta não recalcula automaticamente do perfil para as tabelas. Em alguns casos, reunindo as estatísticas pode levar mais tempo do que executar a consulta. Para garantir que o otimizador escolhe um plano de consulta que melhor reflete o estado atual de suas tabelas, execute UPDATE STATISTICS em intervalos regulares.
<br /><br />
Como trabalha o UPDATE STATISTICS
<br /><br />
O UPDATE STATISTICS deve ser executada após uma carga inicial dos dados e criação de índices. Ele também deve ser executado após quaisquer mudanças significativas nas tabelas do banco de dados, incluindo qualquer inserção em larga escala, ou operações de atualização ou excluir. Se você não implementar UPDATE STATISTICS, o otimizador tem dados imprecisos para determinar os melhores caminhos de acesso aos seus dados.
<br /><br />
A base do otimizador de consulta estima o custos sobre o número de linhas a serem recuperadas de cada tabela. Por sua vez, a estimativa do número de linhas é baseado na seletividade de cada expressão condicional, que é utilizado na cláusula WHERE. Um filtro é uma expressão condicional, que é usado para selecionar as linhas. A seletividade é um valor entre 0 e 1 que indica a porcentagem de linhas dentro da tabela que o filtro pode passar. Um filtro seletivo, que passa algumas linhas, tem seletividade para 0, e um filtro que passa quase todas as linhas tem seletividade 1.
<br /><br />
O otimizador pode usar as distribuições de dados para calcular a seletividade para os filtros em uma consulta. No entanto, na ausência de distribuição de dados, o servidor de banco de dados calcula a seletividade em relação aos filtros de diferentes tipos com base em índices de tabela. A correção de estimar a seletividade altamente influencia o custo de cada plano de execução. Assim, a precisão de obter um plano ideal é totalmente dependente da informação estatística atual dos objetos de banco de dados envolvidos na consulta.
<br /><br />
Cada vez que a consulta UPDATE STATISTICS é executado, as seguintes tabelas de catálogo do sistema são atualizadas. Os itens listados em cada ponto devem colunas em tabelas.
<br /><br />
SYSTABLES
<pre style="border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>+-------------+--------------------------------------------------------------------+
| nindexes | Número de índices na tabela; |
+-------------+--------------------------------------------------------------------+
| nrows | Número de linhas na tabela; |
+-------------+--------------------------------------------------------------------+
| npused | Número de páginas usadas para armazenar "nrows" na tabela; |
+-------------+--------------------------------------------------------------------+</code></pre>
SYSCOLUMNS
<pre style="border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>+-------------+--------------------------------------------------------------------+
| colmin | Segundo valor mínimo da coluna |
+-------------+--------------------------------------------------------------------+
| Colmax | Segundo valor máximo da coluna |
+-------------+--------------------------------------------------------------------+</code></pre>
SYSINDEXES e SYSFRAGMENTS
<pre style="border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>+-------------+--------------------------------------------------------------------+
| levels | Número de níveis na B-Tree |
+-------------+--------------------------------------------------------------------+
| leaves | Número de leaves contidas na B-tree |
+-------------+--------------------------------------------------------------------+
| nunique | Número de valores distintos |
+-------------+--------------------------------------------------------------------+
| clust | Clusterdness em relativo a tabela; |
+-------------+--------------------------------------------------------------------+</code></pre>
SYSDISTRIB
<br /><br />
- Linhas que tenham informações sobre como os valores das tabelas e dados do usuário são distribuídos. (Então, todas as colunas são afetadas)<br />
- Também mantém a resolução e nível de confiança da distribuição.<br /><br />
Modos do UPDATE STATISTICS
<br /><br />
A três modos de atualização, os dados estatísticos são low (baixa), medium (média) e high (alta).
<br /><br />
O modo de low preenche apenas os valores estatísticos escalares (ou seja, não existem indicações de distribuição) de uma tabela. Todas as informações, como os níveis de índice B-tree, número de páginas consumidas pela tabela, número de valores distintos de uma coluna são armazenados.
<br /><br />
No modo medium, além de estatísticas modo de low, a declaração classifica um conjunto de amostras de valores de coluna e preenche os dados de distribuição na tabela do catálogo do sistema sysdistrib que representa esta amostra. De modo geral, tem uma margem de confiança no intervalo de 85% a 99%.
<br /><br />
No modo de high, além de estatísticas modo de low, a declaração classifica todos os valores da coluna e preenche a tabela com informações sysdistrib distribuição exata em todos os valores da tabela no momento da execução. Embora possa parecer uma boa ideia usar sempre o UPDATE STATISTICS no modo de high, isso não é realmente o caso. O modo de high usa muitas box para alcançar maior precisão devido à sua baixa resolução de 0,5. Portanto, ele consome uma grande quantidade de espaço em disco, especialmente quando a tabela é muito grande. Além disso, é bastante pesado executar o UPDATE STATISTICS no sistema no modo high em produção que funciona continuamente. Além disso, o modo de high nem sempre garante uma estimativa perfeita uma vez que nenhum plano de execução é garantia de ser 100% melhor desde que o plano se baseia em uma estimativa.
<br /><br />
Resolução e Confiança
<br /><br />
Dois termos importantes para entender em relação ao update statistic que são resolução e confiança. A resolução é um número entre 0.005 e 10. Confiança é uma medida de equivalência entre as estimativas obtidas e os valores reais obtidos. É expressa como um valor entre 0,80 e 0,99. O ideal é que ele é necessário para a consulta para ter um valor alto confiança. A resolução padrão para o modo de alta é de 0,5 e, para o modo médio, é 2,5. A confiança padrão para o modo de high é de 0,99. Encontra-se entre 0,85 e 0,99 para o modo medium.
<br /><br />
Histograma e o UPDATE STATISTICS
<br /><br />
Informix utiliza histogramas para armazenar a informação de distribuição de dados. Os histogramas são usados para calcular a seletividade dos predicados. Eles são comprovados para produzir estimativa de taxa baixa de erros e incorrer em quase nenhum run-time overhead.
<br /><br />
Um histograma é usado para sintetizar graficamente e exibir a distribuição de um conjunto de dados do processo. O Informix utiliza histogramas de altura equilibrad (isto é, largura/altura) como range de transbordo, em oposição aos histogramas largura equilibrada. Tendo a altura em relação significa o mesmo número de valores em cada range é mantido. Dependendo dos valores, a gama é determinada, e um range representa uma gama. Abaixo está um exemplo de um histograma:
<pre style="border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code> ^
Número |
de |
linhas | altura constante
+------------------------
|
|
|
|
---+------------------------
| 5 25 29 77 118
| range de valores</code></pre>
Suponha que há mil linhas em uma tabela. Se o número do range é fixada em 10, a proporção será de 1000-1010, assim existem 100 linhas em cada range. Esta 100 representa a altura. No caso de um histograma em relação altura, este valor (100) é fixo.
<br /><br />
A distribuições de dados são gerados pelo servidor para colunas individuais de uma tabela, e são armazenados como histogramas encoded e coluna encdat do catálogo do sistema sysdistrib. O número padrão de caixas pode ser adequada se os dados são uniformemente distribuídas em todo o domínio de valores para essa coluna. No entanto, se os dados são altamente distorcidos, então são necessários um número maior de caixas (menor resolução) para garantir que os dados não é muito inclinada.
<br /><br />
A mágica do UPDATE STATISTICS
<br /><br />
Basicamente, sempre que o comando UPDATE STATISTICS é executado tanto no modo de alta ou média, dois tipos de caixas são criados, os distribution bin e o overflow bin. Cada entrada no bin é composto da seguinte maneira:
<br /><br />
Distribuição bin
<pre style="border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>- Número de linhas no lixo;
- Número de valores distintos na bin;
- Maior valor de dados no lixo;
</code></pre>
Overflow bin
<pre style="border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>- Valor dos dados
- Frequência de valor de dados</code></pre>
Ilustração
<br /><br />
Agora, vamos considerar uma tabela de inventário que consiste em três colunas - item_num, customer_name e amount. Iremos realizar UPDATE STATISTICS na coluna item_num, em seguida, ver como as duas caixas são construídas.
<br /><br />
<b>Table 1. Inventory table</b>
<pre style="border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>item_num customer_name amount
1 manoj 92.5
1 prasanna 43.75
1 bharath 90
1 ranjani 78.5
1 priya 23.5
1 radhika 126.75
1 vaibhav 75
1 harsha 300.50
1 vishwas 20
2 deepak 32.5
2 vinay 90
2 archit 65.20
2 vishnu 32.75
2 samir 48.3
2 ravi 49.5
3 srini 67.5
4 rahul 56.0
5 sudev 73.0</code></pre>
Para preencher a distribuição de dados, execute do UPDATE STATISTICS no modo de alta ou média. A informação no histograma pode ser recuperada a partir do utilitário Informix chamado dbschema invocando o seguinte comando:
<pre style="border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>$ Dbschema-d (dbname) -hd [(table)]</code></pre>
A listagem a seguir mostra a distribuição dos dados acima quando o update statistic é executado no modo médio com uma resolução de 10.
<br /><br />
Listing 1. Distribution output
<pre style="border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>$ dbschema -d newdb -hd Inventory
DBSCHEMA Schema Utility INFORMIX-SQL Version 11.10.FC2
Copyright IBM Corporation 1996, 2006 All rights reserved
Software Serial Number AAA#B000000
{
Distribution for informix.Inventory.item_num
Constructed on 2007-11-09 04:47:00.00000
Medium Mode, 10.000000 Resolution, 0.950000 Confidence
--- DISTRIBUTION ---
( 1)
1: ( 2, 2, 4)
2: ( 1, 1, 5)
--- OVERFLOW ---
1: ( 9, 1)
2: ( 6, 2)</code></pre>
<br />
<pre style="border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>Definir o número de caixas
A fórmula para calcular o número de caixas é:
100/resolution = número de caixas.
Uma resolução de 1 significa que 1% dos dados entra em cada bin (100/1 = 100 caixas)
A resolução de 10 significa que 10% das os dados vão para cada bin (10 caixas são criados).</code></pre>
Compreender a distribuição bin
<br /><br />
O bin sempre começa com um número bin ou um identificador que é incrementado sequencialmente para cada linha. Cada fila tem três colunas associados. Todas as três colunas estão representadas com os parênteses. A primeira coluna indica o tamanho da caixa. A segunda coluna indica o número de elementos diferentes dentro do intervalo, e a terceira coluna indica os valores mais elevados dentro do range.
<br /><br />
Por exemplo, pegando acima a saída da Distribuição em consideração, a primeira linha pode ser lida da seguinte forma:
<br /><br />
- O tamanho bin = 2
<br /><br />
- Existem dois elementos distintos entre o intervalo de 1 e 4. Você pode ver isso quando você olha para a tabela de inventário. Os dois valores distintos são 3 e 4. Um observador realmente interessado deve ter notado que os valores 1 e 2 não são levados em consideração. A contagem para este está incluído na caixa de overflow e não é para ser tomada em consideração para este bem.
<br /><br />
- O intervalo é entre os valores 1 e 4.
<br /><br />
Compreender o overflow bin
<br /><br />
Como o bin de distribuição, a overflow bin também está representada em linhas. Cada linha começa com um identificador que é incrementado para cada linha. Existem apenas duas colunas nesta bin, cada um representado dentro do parêntese. A primeira coluna indica o número de vezes que o valor da segunda coluna é repetida. A segunda coluna especifica o próprio valor da coluna.
<br /><br />
Por exemplo, na tabela acima, pode ser visto que o C1=1 é repetido 9 vezes e C1=2 é repetido 6 vezes. Note que apenas os valores de coluna que cruzam 25% do tamanho da bin são colocados na overflow bin. As contagens obtidas aqui são valores absolutos tiro certo que podem ser utilizados para as estimativas.
NOTA : A saída do dbschema não pode ser comparado com o conceito regular de filas e colunas. Os termos de linhas e colunas aqui estão literalmente tomadas e não têm ligação com a concepção de linhas e colunas usadas em bancos de dados.
<br /><br />
Ilustração de um plano de consulta
<br /><br />
Considere duas tabelas, cliente e ordens . A tabela cliente tem a atributos customer_num , CEP e customer_name ; ordens tem o atributos customer_num , quantidade e item_num .
<br /><br />
Abaixo está um exemplo de como um plano de consulta ficaria assim para a consulta:
<pre style="border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>select * from orders a, customer b where a.customer_num > 435 and b.zipcode > "65*" ;</code></pre>
Listing 2. SQEXPLAIN output
<pre style="border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>QUERY:
------
Completed pass 1 in 0 minutes 0 seconds
UPDATE STATISTICS:
==================
Table: informix.customer
Mode: HIGH
Number of Bins: 288 Bin size 11
Sort data 0.2 MB Sort memory granted 0.2 MB
Estimated number of table scans 1
PASS #1 zipcode
Light scans enabled
Scan 0 Sort 0 Build 0 Insert 0 Close 0 Total 0
Completed pass 1 in 0 minutes 0 seconds
QUERY:
------
select * from orders a, customer b where a.customer_num > 435 and b.zipcode > "65*"
Estimated Cost: 9805
Estimated # of Rows Returned: 244530
Maximum Threads: 1
1) informix.b: INDEX PATH
(1) Index Keys: zipcode (Parallel, fragments: ALL)
Lower Index Filter: informix.b.zipcode > '65*'
2) informix.a: INDEX PATH
(1) Index Keys: customer_num (Parallel, fragments: ALL)
Lower Index Filter: informix.a.customer_num > 435
NESTED LOOP JOIN
</code></pre>
Como seria se não existisse o UPDATE STATISTICS
<br /><br />
Considere um cenário típico em que a importância de UPDATE STATISTICS pode ser demonstrada. Considere três tabelas, T1, T2 e T3. Suponha que eles têm 10, 100 e 1000 linhas, respectivamente. Agora, suponha que você tem que realizar uma operação 'EQUI-JOIN' em todas as três tabelas. O otimizador seria checaria o plano de consulta antes de realizar a própria operação de junção real, fazendo uso dos dados estatísticos. Você assume que esses dados estatísticos estão atualizados e continua seguir em frente.
<br /><br />
Agora, quantas maneiras você pode executar esta operação participar? Como você sabe que T1*T2 não é o mesmo que T2*T1, que é uma questão simples de descobrir. Você tem três tabelas e, portanto, você teria essas forma 3!*2!*1! executar uma operação de junção. Isso é de 12 maneiras diferentes de fazê-lo. Para este exemplo, apenas 5 casos do 12 são usados.
<pre style="border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>Case 1 -- (T1 * T2) * T3 results in 1,011,010 row accesses.
Case 2 -- (T2 * T1) * T3 results in 1,101,100 row accesses.
Case 3 -- (T1 * T3) * T2 results in 1,011,010 row accesses.
Case 4 -- T1 * (T2 * T3) results in 1,001,010 row accesses.
Case 5 -- T3 * (T2 * T1) results in 1,011,000 row accesses.
</code></pre>
Agora, suponha que havia um grande número de operações realizadas, e essas tabelas foram manipulados. O cenário atual resultaria em T1, T2 e T3 com 1000, 100 e 10, linhas respectivamente. Desde o UPDATE STATISTICS não é executado automaticamente, as tabelas de catálogo do sistema não seria atualizada e ainda estaria mantendo os dados estatísticos de data. Agora, você deve executar novamente a operação de junção por igualdade.
<br /><br />
O otimizador escolhe Caso 4, uma vez que determinou que ela tem o número mínimo de acessos linha e, portanto, deve ser eficiente. Mas, o plano não produz o melhor resultado. De acordo com a situação atual, um plano eficiente seria usar Caso 5 - (T3 * (T2 * T1) - ao passo que o otimizador escolhe Caso 4 -. T1 * (T2 * T3) Isso resulta em uma linha extra enorme '9990' acessos. Este número pode crescer para trilhões para bancos de dados volumosos, o que reduz drasticamente a eficiência da consulta. Se você tivesse executado a instrução UPDATE STATISTICS, teria sido muito mais eficiente. Este exemplo mostra porque UPDATE STATISTICS tem de ser executado periodicamente. Resumindo tudo isso, use a instrução UPDATE STATISTICS para executar qualquer uma das seguintes tarefas:
<br /><br />
- Calcula-se a distribuição dos valores da coluna.<br />
- Atualizar as tabelas de catálogo do sistema que o servidor de banco de dados usa para otimizar as consultas.<br />
- Força re-otimização de rotinas SPL.<br />
- Converta índices existentes quando você atualizar o servidor de banco de dados.<br />
<br />
Sintaxe de UPDATE STATISTICS
<br /><br />
Versão 1: Para atualizar as estatísticas para todo o banco de dados<pre style="border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>UPDATE STATISTICS (LOW | MEDIUM | HIGH);</code></pre>
Versão 2: Para atualizar as estatísticas para uma tabela específica em um banco de dados. Todas as colunas são atualizados neste caso.<pre style="border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>UPDATE STATISTICS (LOW | MEDIUM | HIGH) FOR TABLE (table_name) ;</code></pre>
Versão 3: Para atualizar as estatísticas para uma determinada coluna de uma tabela específica em um banco de dados.<pre style="border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>UPDATE STATISTICS (LOW | MEDIUM | HIGH) FOR TABLE (table_name) (column_name);</code></pre>
Versão 4: Para atualizar as estatísticas para um procedimento armazenado em um banco de dados.<pre style="border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>UPDATE STATISTICS (LOW | MEDIUM | HIGH) FOR PROCEDURE;</code></pre>
Versão 5: Para executar UPDATE STATISTICS, definindo a sua própria resolução.<pre style="border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>UPDATE STATISTICS (LOW | MEDIUM | HIGH) FOR TABLE (table_name) RESOLUTION 10;</code></pre>
O comando UPDATE STATISTICS não é executada automaticamente. É de responsabilidade do usuário para executar esta declaração manualmente. Este comando deve ser executado periodicamente para que o otimizador tem os mais recentes dados com ele para chegar a um plano eficaz para buscar os dados.
Idealmente, é preferido para executar esta indicação quando um volume de dados é manipulado na base de dados. Por padrão, o UPDATE STATISTICS é executado no modo de baixo. Neste modo, as distribuições de dados não são gerados. Nunca use o modo de alta para um banco de dados inteiro ou todas as tabelas em um banco de dados ou até mesmo todas as colunas de uma tabela, a menos que o banco de dados ou as tabelas são de um tamanho consideravelmente menor.
<a href="http://www.ibm.com/developerworks/data/library/techarticle/dm-0803changappa/">Link</a>
<BR />
<BR />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMJuNhZfCMuZvIJREriWKG76jksAnPgEmpR5sZFmRQ_HNkzcBJr1h2Fw3gm35CQxVpK6evI3bpwYtAnDY78CMrAwc68vOISNI5OVFgwZpxuN_l99E58YSWaAj9zh3RKtnL7NU6vazVZVw/s1600/informix-partitioning-intervalrollingwindowtable-18-638.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMJuNhZfCMuZvIJREriWKG76jksAnPgEmpR5sZFmRQ_HNkzcBJr1h2Fw3gm35CQxVpK6evI3bpwYtAnDY78CMrAwc68vOISNI5OVFgwZpxuN_l99E58YSWaAj9zh3RKtnL7NU6vazVZVw/s1600/informix-partitioning-intervalrollingwindowtable-18-638.jpg" data-original-width="638" data-original-height="479" /></a>Claudemar Martins de Sáhttp://www.blogger.com/profile/05069108300402187406noreply@blogger.com0tag:blogger.com,1999:blog-8798968522614237503.post-8618934279651816072019-11-02T12:21:00.000-04:002019-11-02T16:52:30.669-04:00Remmina - Conexão Remota - Linux MintRemmina é uma aplicação de desktop remoto, um software e livre coberta pela licença GNU GPL, escrito em C e GTK+, e disponível apenas para sistemas baseados em Unix/Linux. É muito útil para administradores de sistemas e para aqueles que precisam acessar computadores remotos.<br />
<br />
O Remmina suporta vários protocolos de rede em uma interface integrada e consistente, no momento em que os protocolos RDP, VNC, NX, SPICE, XDMCP e SSH são suportados. Adicionalmente, você pode instalar os plugins Remmina: RDP, VNC, NX, XDMCP, SSH e Telepathy.<br />
<br />
Principais características do Remmina:<br />
<br />
<ul>
<li>Permite manter uma lista de perfis de conexão, organizados por grupos;</li>
<li>Permite fazer conexões rápidas colocando diretamente o endereço do servidor;</li>
<li>Os desktops remotos com resoluções mais elevadas são roláveis/escaláveis na janela e no modo de tela cheia;</li>
<li>Modo de tela cheia View-port: a área de trabalho remota rola automaticamente quando o mouse se move sobre a borda da tela;</li>
<li>Barra de ferramentas flutuante no modo de tela cheia, permite alternar entre os modos, ativar o teclado, minimizar, etc;</li>
<li>Interface com guias, opcionalmente gerenciada por grupos;</li>
<li>Ícone da bandeja, permite acessar rapidamente perfis de conexão configurados.</li>
Para instalar no Ubuntu, Linux Mint, Elementary OS e Deivados, execute:<br />
<pre style="border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>$ sudo apt-add-repository ppa:remmina-ppa-team/remmina-next
$ sudo apt-get update
$ sudo apt-get install remmina remmina-plugin-rdp libfreerdp-plugins-standard</code></pre>
Telas de instalação no Linux Mint.
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2j2aKEeEWcan2yLVZS7Btyg4GTtx1EisUT-Ixz-AeWpzVQNkAZ2yFe5eh3yjftz2Zc9YeGgi6SlN8BISPPa5a5Rc4MSvAtsDCOOtg9jSpoeTV6X7zK2HaFkpHkPpFkEPhy9PYCw_1B04/s1600/rdp-linux-to-windows001.png" imageanchor="1"><img border="0" data-original-height="723" data-original-width="989" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2j2aKEeEWcan2yLVZS7Btyg4GTtx1EisUT-Ixz-AeWpzVQNkAZ2yFe5eh3yjftz2Zc9YeGgi6SlN8BISPPa5a5Rc4MSvAtsDCOOtg9jSpoeTV6X7zK2HaFkpHkPpFkEPhy9PYCw_1B04/s1600/rdp-linux-to-windows001.png" /></a>
<br /><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLBnULDqa7HmLN3LzXzZydBI5rYP_eKif-7qGfkbZCKlZTIlTxy1hYBLS40VvJHMmXKdLhhyphenhyphenDMMDelkLCqWSHO9omX9NGq-p2e4HyBc7S0F3NQaFraeaxAjIk86TXxfLSMkSNxEEvUsyc/s1600/rdp-linux-to-windows002.png" imageanchor="1"><img border="0" data-original-height="609" data-original-width="863" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLBnULDqa7HmLN3LzXzZydBI5rYP_eKif-7qGfkbZCKlZTIlTxy1hYBLS40VvJHMmXKdLhhyphenhyphenDMMDelkLCqWSHO9omX9NGq-p2e4HyBc7S0F3NQaFraeaxAjIk86TXxfLSMkSNxEEvUsyc/s1600/rdp-linux-to-windows002.png" /></a>
<br /><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGzrPwRsOeJokTPkfa08Ldkk6UAasPhlys_gIBgTlMaaxFmcdnDiHjTHX7fblFzmCjHx6N2JPTCnK6bu4uscg9uHXNo7vcqTggp9-D-x7VMfW72LpVGp0mpcB48UaD-g2uxXKFCgh6MyU/s1600/rdp-linux-to-windows003.png" imageanchor="1"><img border="0" data-original-height="544" data-original-width="557" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGzrPwRsOeJokTPkfa08Ldkk6UAasPhlys_gIBgTlMaaxFmcdnDiHjTHX7fblFzmCjHx6N2JPTCnK6bu4uscg9uHXNo7vcqTggp9-D-x7VMfW72LpVGp0mpcB48UaD-g2uxXKFCgh6MyU/s1600/rdp-linux-to-windows003.png" /></a>
<br /><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQzxZ3FpE4Plg_6X6EmDHITIk6LI2-1W8Cru3Lhy5ebQsjWsYghFuf9240InLwYuBOz2EBhVaKABI0lez6JA5gvqFh0gZ-fbCCZDSCyOjy8WMDdENEEvcpGRyMsp_7HvKp_Kb_6JR8VpI/s1600/rdp-linux-to-windows006.png" imageanchor="1"><img border="0" data-original-height="391" data-original-width="794" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQzxZ3FpE4Plg_6X6EmDHITIk6LI2-1W8Cru3Lhy5ebQsjWsYghFuf9240InLwYuBOz2EBhVaKABI0lez6JA5gvqFh0gZ-fbCCZDSCyOjy8WMDdENEEvcpGRyMsp_7HvKp_Kb_6JR8VpI/s1600/rdp-linux-to-windows006.png" /></a>
<br /><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9GvLNq6m2KCA9qrd49lyFPvxQ3_PV1b9yv0CSSrxsP3TNe1Stk2JDLox8aE9BGWvtSPnSmUM4TmrXCx2P1M69LdJz5Xd_H3-IT-iiv2pAoodBXEK5LM4zNf0Qnkn-Kw1IyErYvsbr5Y8/s1600/rdp-linux-to-windows004.png" imageanchor="1"><img border="0" data-original-height="430" data-original-width="654" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9GvLNq6m2KCA9qrd49lyFPvxQ3_PV1b9yv0CSSrxsP3TNe1Stk2JDLox8aE9BGWvtSPnSmUM4TmrXCx2P1M69LdJz5Xd_H3-IT-iiv2pAoodBXEK5LM4zNf0Qnkn-Kw1IyErYvsbr5Y8/s1600/rdp-linux-to-windows004.png" /></a>
<br /><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOgncXvE0OGzdPfqt1SdKcbuL9H89-wv_DRjinliQTPyNb183K-BncUCKxOOPAs8vWLwPpVS7tucM0BKzPpFmUdHTUpK2pJXsKRXHW5VHSxry7t8IYtRS_GYRj_tA9vuNQ2YVbPDO7Oc0/s1600/rdp-linux-to-windows005.png" imageanchor="1"><img border="0" data-original-height="625" data-original-width="797" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOgncXvE0OGzdPfqt1SdKcbuL9H89-wv_DRjinliQTPyNb183K-BncUCKxOOPAs8vWLwPpVS7tucM0BKzPpFmUdHTUpK2pJXsKRXHW5VHSxry7t8IYtRS_GYRj_tA9vuNQ2YVbPDO7Oc0/s1600/rdp-linux-to-windows005.png" /></a></ul>
Claudemar Martins de Sáhttp://www.blogger.com/profile/05069108300402187406noreply@blogger.com0tag:blogger.com,1999:blog-8798968522614237503.post-44428747066365667792019-11-01T17:50:00.002-04:002019-11-01T18:23:49.963-04:00Recuperação de Arquivos DeletadosDiskDigger é um software para Windows e Android que permite recuperar arquivos diversos no computador, que foram deletados do disco rígido ou de um pendrive, por exemplo. O processo de recuperação é fácil e dura apenas alguns minutos – dependendo do tamanho da unidade scaneada.
<br /><br />
Passo 0. Escolher o idioma que vamos usar o programa;
<br /><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_5PobqctgED-nQnsrKatZWLHd4rm_diESJSUnvDR-N6sLZjjHg_yOc8yo3eOnby6TYnj5XHQ_NYrYJIpQK57Tp76_wKQ1xb8OhTqNx9-dMMIwIfD6sEvrRk1KrHSPQhnH3Km0rTetJHc/s1600/Captura+de+Tela+%2528181%2529.png" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_5PobqctgED-nQnsrKatZWLHd4rm_diESJSUnvDR-N6sLZjjHg_yOc8yo3eOnby6TYnj5XHQ_NYrYJIpQK57Tp76_wKQ1xb8OhTqNx9-dMMIwIfD6sEvrRk1KrHSPQhnH3Km0rTetJHc/s1600/Captura+de+Tela+%2528181%2529.png" data-original-width="1366" data-original-height="768" /></a>
<br /><br />
Passo 1. Com o DiskDigger no seu computador – não requer nem mesmo instalação – abra o programa e selecione o disco que será analisado para recuperação posterior de arquivos. Clique no botão “Seguinte”;
<br /><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiELK8JkW1fZpuifFif1YhEPepCawOwC1LKIH5-1V8SnHFeJXPVP2NzonIqNoQ_Z5TBBE4bCteCmtghlEqP5-8lmDoUR4Ti2mn3LQSF2XSO5eU-SeNWu44GorJ328vwoCM6YuQQg8l74Q/s1600/Captura+de+Tela+%2528182%2529.png" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiELK8JkW1fZpuifFif1YhEPepCawOwC1LKIH5-1V8SnHFeJXPVP2NzonIqNoQ_Z5TBBE4bCteCmtghlEqP5-8lmDoUR4Ti2mn3LQSF2XSO5eU-SeNWu44GorJ328vwoCM6YuQQg8l74Q/s1600/Captura+de+Tela+%2528182%2529.png" data-original-width="1366" data-original-height="768" /></a>
<br /><br />
Passo 2. Escolha entre “Pesquisa funda” e “Pesquisa avançada”. O primeiro recupera arquivos deletados, o segundo faz isso e também procura por vestígios de antigos arquivos, os “arquivos mortos”, que não servem para nada e só ocupam espaço – este segundo, porém, leva mais tempo. Em seguida, clique em “Seguinte”;
<br /><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmZfB7J9_TWRRi1zYJez19yTESd_MV-kLMI4Pn3gy5CRZ5k3geVKnFjsX7uddny8ZRzVScwG7yKjM1uH6HCObZTVpAOWPxOdzohgFBHXrhhhpvy9Pli9keOADw8THTejgAVKv9Smtidmk/s1600/Captura+de+Tela+%2528184%2529.png" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmZfB7J9_TWRRi1zYJez19yTESd_MV-kLMI4Pn3gy5CRZ5k3geVKnFjsX7uddny8ZRzVScwG7yKjM1uH6HCObZTVpAOWPxOdzohgFBHXrhhhpvy9Pli9keOADw8THTejgAVKv9Smtidmk/s1600/Captura+de+Tela+%2528184%2529.png" data-original-width="1366" data-original-height="768" /></a>
<br /><br />
Passo 3. Aguarde o processo de pesquisa. O tempo varia de acordo com o tamanho da unidade escolhida para ser pesquisada;
<br /><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjg_oxLtzZfHL8JKjj5G9_SybZYY2MpvV7JhxzK9MGujkEheqTQe8cRyatCUEszuXbQRVIV-dYLq5sQZG2MizudY4evMhvUJHglfp4Nr8eyE_xVqs5OLHnVN0AMIO0PCzfe8I0Jl4vFuXk/s1600/Captura+de+Tela+%2528185%2529.png" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjg_oxLtzZfHL8JKjj5G9_SybZYY2MpvV7JhxzK9MGujkEheqTQe8cRyatCUEszuXbQRVIV-dYLq5sQZG2MizudY4evMhvUJHglfp4Nr8eyE_xVqs5OLHnVN0AMIO0PCzfe8I0Jl4vFuXk/s1600/Captura+de+Tela+%2528185%2529.png" data-original-width="1366" data-original-height="768" /></a>
<br /><br />
Passo 4. Ao final, o programa vai exibir quantos arquivos foram encontrados, clique em “Ok”;
<br /><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgECeoTA4LQEMXAE5dX-_gveJiE2KAfN9SU-3jXnqZwvmKWnmp4E78f4JmbQOa5EOos5G2dPX8AdJrYgHk72YWk0yaWeG-fjiSmJiaVtK4SZYLSI5RsRciYubJyiJ43qzNlvYDwjOMqdJM/s1600/Captura+de+Tela+%2528186%2529.png" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgECeoTA4LQEMXAE5dX-_gveJiE2KAfN9SU-3jXnqZwvmKWnmp4E78f4JmbQOa5EOos5G2dPX8AdJrYgHk72YWk0yaWeG-fjiSmJiaVtK4SZYLSI5RsRciYubJyiJ43qzNlvYDwjOMqdJM/s1600/Captura+de+Tela+%2528186%2529.png" data-original-width="1366" data-original-height="768" /></a>
<br /><br />
Passo 5. Escolha o arquivo que você deseja recuperar e clique em “Guardar ficheiros selecionados” para salvá-lo novamente no computador;
<br /><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWcF0YJvtNj_AE0mYVBVDrosTWjzAPE0ZKHqJtN_2x8CVGkQ4KrCZsVhDEuzERQR1hcTkyIPM-k9TdymcIBHdQxnNdyPvEvbyLDFq4bBned7hw8rqKEQFUEZtxwrBB8jBRxzeFIToWnf4/s1600/Captura+de+Tela+%2528187%2529.png" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWcF0YJvtNj_AE0mYVBVDrosTWjzAPE0ZKHqJtN_2x8CVGkQ4KrCZsVhDEuzERQR1hcTkyIPM-k9TdymcIBHdQxnNdyPvEvbyLDFq4bBned7hw8rqKEQFUEZtxwrBB8jBRxzeFIToWnf4/s1600/Captura+de+Tela+%2528187%2529.png" data-original-width="1366" data-original-height="768" /></a>
<br /><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgv6ioUBn3D52gy5BZSxJr8sDnrAgTCho8iR5hxE-ubtBU7MVC1rfEbyWGdgTuoFB2rxq7GzuovdVTBhsfCFLbz59015dty6lXMPe2TA_8ZVGBNMzE2rITZCEO57ynmijE14P1yp1yG36w/s1600/Captura+de+Tela+%2528188%2529.png" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgv6ioUBn3D52gy5BZSxJr8sDnrAgTCho8iR5hxE-ubtBU7MVC1rfEbyWGdgTuoFB2rxq7GzuovdVTBhsfCFLbz59015dty6lXMPe2TA_8ZVGBNMzE2rITZCEO57ynmijE14P1yp1yG36w/s1600/Captura+de+Tela+%2528188%2529.png" data-original-width="1366" data-original-height="768" /></a>
<br /><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNI969nNMnTpB3KkjdPNW4bM3JOvSBRxgQ1CNUetPsFV_G6dGBCaSgsQcDCeR73R6_gh9w970aNw5qPm0U2lNObZUo-Z8Nyfwwj_2qEjXx3UMYRut-U165Ve-PUJrJ4XIJIXbQMkNq0Pg/s1600/Captura+de+Tela+%2528189%2529.png" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNI969nNMnTpB3KkjdPNW4bM3JOvSBRxgQ1CNUetPsFV_G6dGBCaSgsQcDCeR73R6_gh9w970aNw5qPm0U2lNObZUo-Z8Nyfwwj_2qEjXx3UMYRut-U165Ve-PUJrJ4XIJIXbQMkNq0Pg/s1600/Captura+de+Tela+%2528189%2529.png" data-original-width="1366" data-original-height="768" /></a>
<br /><br />
SIM
<br /><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6aNm9BbgOpu1lbpYoZ3AIcVPxJQUU7R1_cSJW1RjtifQ_es4F6DIuGZ5Y6IIxDbMPQbmG_63tB3QssR7ZtilOA6Wo0h1uK9tnLVS5JEjxMbMyEH_orKS9VFJAx2CsyUV-NKjHTdFCbOY/s1600/Captura+de+Tela+%2528190%2529.png" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6aNm9BbgOpu1lbpYoZ3AIcVPxJQUU7R1_cSJW1RjtifQ_es4F6DIuGZ5Y6IIxDbMPQbmG_63tB3QssR7ZtilOA6Wo0h1uK9tnLVS5JEjxMbMyEH_orKS9VFJAx2CsyUV-NKjHTdFCbOY/s1600/Captura+de+Tela+%2528190%2529.png" data-original-width="1366" data-original-height="768" /></a>
<br /><br />
Arquivo recuperado
<br /><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijv9L_I8slG3LXwUvccwgwxkUz5NB3lg7Coeq6iI2oBWvrc7Lt1caqERLmK0PeOBS7WJvypZkp8uMMjNucJGrGZz6eX30lBH6_NTCRt13xQ8o-ZOFU9y7cSAgiWfI-kGpBS4KI35VSK-Q/s1600/Captura+de+Tela+%2528191%2529.png" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijv9L_I8slG3LXwUvccwgwxkUz5NB3lg7Coeq6iI2oBWvrc7Lt1caqERLmK0PeOBS7WJvypZkp8uMMjNucJGrGZz6eX30lBH6_NTCRt13xQ8o-ZOFU9y7cSAgiWfI-kGpBS4KI35VSK-Q/s1600/Captura+de+Tela+%2528191%2529.png" data-original-width="1366" data-original-height="768" /></a>
<br /><br />
Abrindo o arquivo
<br /><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixJ-My6LKTH9Bm2MuFD55P0kOSC_dKMDoMqP_PdPRVdpcP3bU_Rl-jvrQ4-rnq1RlFKvrAB-B0-j1K7tXSVIYBSoe7TsCF39VADdvomsG2Ku68eQrsO8EiL0EsRlEIzyBxmdYhYYeB5_c/s1600/Captura+de+Tela+%2528192%2529.png" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixJ-My6LKTH9Bm2MuFD55P0kOSC_dKMDoMqP_PdPRVdpcP3bU_Rl-jvrQ4-rnq1RlFKvrAB-B0-j1K7tXSVIYBSoe7TsCF39VADdvomsG2Ku68eQrsO8EiL0EsRlEIzyBxmdYhYYeB5_c/s1600/Captura+de+Tela+%2528192%2529.png" data-original-width="1366" data-original-height="768" /></a>
Claudemar Martins de Sáhttp://www.blogger.com/profile/05069108300402187406noreply@blogger.com0tag:blogger.com,1999:blog-8798968522614237503.post-84369543433738969852019-11-01T17:28:00.002-04:002019-11-01T17:45:13.391-04:00Migrando Dados do SQL Server para o MySQLEste artigo mostra como usar o programa <a href="https://www.dbsofts.com/download/">ESF Database Migration Toolkit</a> migrar rapidamente dados do SQL Server para o MySQL! Ajudá-lo a resolver tarefas complexas e economizar muito tempo!
<br />
<br />
<b>Requisitos:</b>
<br />
<pre style="border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>Download - ESF Database Migration Toolkit.
Windows 7 ou superior.
SQL Server 6.5 ou superior.
MySQL 3.23 ou superior.</code></pre>
<b>Introdução:</b>
<br />
<br />
1. Na caixa de diálogo (Choose a Data Source) "Escolha uma fonte de dados", escolha "Microsoft SQL Server";<br />
<br />
<ul>
<li>Digite o nome do host do SQL Server (você também pode adicionar um nome de instância). por exemplo: localhost\sqlexpress.<br /></li>
<li>Se estiver usando o método TCP/IP, insira a porta do servidor (o padrão é 0 e use o método pipe). Além disso, você precisará fornecer um nome de usuário (por exemplo: sa) e senha.<br /></li>
<li>Marque a caixa de seleção (Windows Authentication) "Autenticação do Windows" se estiver usando a autenticação do Windows.<br /></li>
<li>Pressione o botão (Refresh Database) "Atualizar banco de dados" para listar todos os bancos de dados, selecione um banco de dados existente ou insira um novo nome de banco de dados; este kit de ferramentas criará automaticamente o novo banco de dados durante o processo de migração.<br /></li>
<li>Pressione o botão (Refresh Schema) "Atualizar esquema" para listar todos os esquemas, você pode selecionar um esquema existente ou inserir um novo nome de esquema.</li>
</ul>
<br />
Este kit de ferramentas criará automaticamente o novo esquema durante o processo de migração. Se você deixá-lo vazio, o padrão é "dbo".
<br /><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIokMelNlkgT5fSH9nHJ-Gu7y1RyS79mCl2fn-AsfeZ5-PbEJ4P1PH3QQG4RiYWVrubQSQe-aoHBFhulvAyUkuIWP_TiZ9iqCvhNi9mHjngCCk7BE7qfVHvX7HNulPnCkoxczktmgylMU/s1600/sqlserver_source.png" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIokMelNlkgT5fSH9nHJ-Gu7y1RyS79mCl2fn-AsfeZ5-PbEJ4P1PH3QQG4RiYWVrubQSQe-aoHBFhulvAyUkuIWP_TiZ9iqCvhNi9mHjngCCk7BE7qfVHvX7HNulPnCkoxczktmgylMU/s1600/sqlserver_source.png" data-original-width="515" data-original-height="397" /></a>
<br /><br />
2. Na caixa de diálogo (Choose a Destination) "Escolha um destino", escolha "MySQL";
<br /><br />
<ul>
<li>Digite o nome do servidor (padrão: localhost), porta (padrão: 3306), nome de usuário e senha.</li>
<li>MySQL suportando alguns mecanismos de armazenamento diferentes, clique aqui para obter mais informações sobre o MySQL Storage Engine.</li>
<li>Escolha um conjunto de caracteres, por exemplo: UTF-8.</li>
<li>Pressione o botão (Refresh) "Atualizar" para listar toda a automação de bancos de dados MySQL, você pode escolher um banco de dados existente ou inserir um novo nome de banco de dados; este kit de ferramentas cria automaticamente o novo banco de dados durante o processo de migração.</li>
</ul>
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZl60jS_qaBBiUBFa88oihRBAMkI6mhuIk4ha1QTZ39Zx26_4cC8MrSh_XTOZGnCfXdJ5p4A-yrzv2MHDVOeSKQajHkvO-3BjC1Y0yrxZei_-deEa1FuaQN2Hhp-LQ2x9MJyd0HmqWYTQ/s1600/mysql_dest.png" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZl60jS_qaBBiUBFa88oihRBAMkI6mhuIk4ha1QTZ39Zx26_4cC8MrSh_XTOZGnCfXdJ5p4A-yrzv2MHDVOeSKQajHkvO-3BjC1Y0yrxZei_-deEa1FuaQN2Hhp-LQ2x9MJyd0HmqWYTQ/s1600/mysql_dest.png" data-original-width="515" data-original-height="397" /></a>
<br /><br />
3. Na caixa de diálogo "Select source Tables(s) & View(s)";
<br /><br />
Selecione as tabelas/visualizações que serão migradas.
<br /><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhc5stJ48raiUFtBlIkr0C0EeDQcaqrz-j8KlQfSIrB5p3hCHVPw-DPYSM6_MgXJg1JhHrQzoKplOfKJ_kJl9fZUkR7g8Y6kJP9lYHwSq6JOqzRs6aPmhVF-xSEvilTLtddkMowC69F61I/s1600/select_tables.png" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhc5stJ48raiUFtBlIkr0C0EeDQcaqrz-j8KlQfSIrB5p3hCHVPw-DPYSM6_MgXJg1JhHrQzoKplOfKJ_kJl9fZUkR7g8Y6kJP9lYHwSq6JOqzRs6aPmhVF-xSEvilTLtddkMowC69F61I/s1600/select_tables.png" data-original-width="515" data-original-height="397" /></a>
<br /><br />
Clique em "..." para definir as opções da tabela ou remapear a estrutura da tabela.
<br /><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAMSi4XGwTgYsFOZNNyX3BbjHmSAlBlDDcDgsoR7khX-Klyo8cJBQG5KIkWPB4tmMq6RR7VUqQvt05GQGOoA7_TKFV4V6Uw1EwIGqTAndo_-7FgaG7AYvA7BdxVPnuYdxWekiQZLEiFV4/s1600/transform.png" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAMSi4XGwTgYsFOZNNyX3BbjHmSAlBlDDcDgsoR7khX-Klyo8cJBQG5KIkWPB4tmMq6RR7VUqQvt05GQGOoA7_TKFV4V6Uw1EwIGqTAndo_-7FgaG7AYvA7BdxVPnuYdxWekiQZLEiFV4/s1600/transform.png" data-original-width="597" data-original-height="595" /></a>
<br /><br />
Você pode definir o método de transferência de dados (Overwrite Table/Empty Data/Append Data/Skip Table) traduzindo (Substituir tabela/Dados vazios/Anexar dados/Ignorar tabela) ou filtrar os dados antes da transferência.
<br /><br />
Escolha a opção (Field Mapping) "Mapeamento de campos", você pode redefinir os campos na tabela de destino, por exemplo: nome do campo, tipo de dados, valor padrão, comentário e também.
<br /><br />
4. Na caixa de diálogo (Execution) "Execução";
<br /><br />
Clique em (Submit) "Enviar" para iniciar a migração. Este kit de ferramentas o ajudará a migrar rapidamente dados do SQL Server para o MySQL sem intervenção.
<br /><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikjT_8hBODdT49SXfSExt6EmO_si1_yc5BSuS99BHZYi_eUxr4jGs5I4tDN8ZuK6oRtYelyHEptQdsQupl_6MfJdHJaWtoFTaCe7h6Egqm2t_qw2_zdQj54tzHTTS_3u13LktJU3OxerI/s1600/execute.png" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikjT_8hBODdT49SXfSExt6EmO_si1_yc5BSuS99BHZYi_eUxr4jGs5I4tDN8ZuK6oRtYelyHEptQdsQupl_6MfJdHJaWtoFTaCe7h6Egqm2t_qw2_zdQj54tzHTTS_3u13LktJU3OxerI/s1600/execute.png" data-original-width="515" data-original-height="397" /></a>
<br />
<br />
<ul>
<li>Clique em "Browse Log" para acessar o log de migração completo.</li>
<li>Clique em (Save as job) "Salvar como trabalho" para salvar as configurações de migração em um arquivo de trabalho, para que você possa "Carregar trabalho" para recarregar rapidamente o trabalho de migração no futuro ou executar o trabalho de migração via prompt de comando. Execute "esf-cmd --help" no prompt de comando para obter os parâmetros completos do comando.</li>
</ul>
<br />
<b>5. Terminado!</b>
<br /><br />
O programa concluirá a migração o mais rápido possível e gerará um relatório de migração para você. Tudo o que você precisa fazer é sentar e esperar.Claudemar Martins de Sáhttp://www.blogger.com/profile/05069108300402187406noreply@blogger.com0tag:blogger.com,1999:blog-8798968522614237503.post-3340400903187907362019-10-31T15:14:00.000-04:002019-10-31T15:30:18.030-04:00Migrando um Banco de Dados via ESFEste software permite transferir dados entre vários formatos de banco de dados sem escrever qualquer script. Com ESF Database MigrationToolkit esqueça aqueles sintaxes SQL complexas e difíceis! Com apenas 3 passos, de forma fácil e precisa, você migra o seu banco de dados e economize muito tempo e dinheiro!
<br /><br />
Este conjunto de ferramentas reduz drasticamente o esforço, o custo e o risco de migrar para ou a partir de qualquer um dos seguintes formatos de banco de dados: Oracle, MySQL, SQL Server, PostgreSQL, IBM DB2, IBM Informix, InterSystems Caché, Teradata, Visual FoxPro, SQLite, FireBird, InterBase, Microsoft Access, Microsoft Excel, Paradox, Lotus, dBase, CSV/Text e transferir qualquer fonte de dados ODBC DSN para eles.
<br /><br />
O software possui toda a estrutura da tabela, dados, esquemas (Oracle, SQL Server 2000 ou superior, PostgreSQL), LOB (Large Text / Binary Objects), chave primária/chave estrangeira, índices, auto-incremento (serial) e valor padrão que será migrado.
<br /><br />
Quando você deseja migrar dados entre dois personagens-conjuntos diferentes ou entre tabelas, ele também converte a automação de conjunto de caracteres de dados.
<br /><br />
ESF Database Migration Toolkit é rápido, seguro e estável! Possui DBMS API nativa e tecnologia “bulk-insert” que pode aumentar a produtividade, acelerando todo o processo de migração.
<br /><br />
<b>Simples</b>
<br /><br />
Este conjunto de ferramentas fornece um manual passo-a-passo, além de poder migrar o formato de um arquivo ou um banco de dados para outro em apenas 3 passos.
<br /><br />
<b>Alta velocidade</b>
<br /><br />
De acordo com milhares de testes, ESF Database Migration Toolkit é o software com a velocidade média mais rápida do mercado.
<br /><br />
<b>Compreensivo</b>
<br /><br />
Migra LOB (objetos grandes), chaves primárias, índices, chaves estrangeiras, valores padrão, Autoincrement (Auto-ID) etc, e migra entre esquemas diferentes (Oracle, SQL Server 2005 ou superior, PostgreSQL).
<br /><br />
<b>Flexível</b>
<br /><br />
Você pode mudar o campo de nome, tipo de dados, comprimento, valor de tabela padrão e muito mais, além de filtrar dados na migração.
<br /><br />
<b>No mundo todo</b>
<br /><br />
O software suporta Unicode e migração entre diferentes caracteres conjuntos de automação (por exemplo UTF8, LATIM, CP1250, ASCII).
<br /><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSLmuHTevF2MQ_zOZRViq9oBRaZ_Xtt9kPNOic0wm75Nu72-1AKNFr6qQx61NGHgfxV9PwFKnrA2kUDGqOXd_gA64tTt4Yuq0PS0_gB6m39VZ7Mzc02H-cqBaHTfdZqY1gtbg3Daepn9Q/s1600/esfdbconvert1.gif" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSLmuHTevF2MQ_zOZRViq9oBRaZ_Xtt9kPNOic0wm75Nu72-1AKNFr6qQx61NGHgfxV9PwFKnrA2kUDGqOXd_gA64tTt4Yuq0PS0_gB6m39VZ7Mzc02H-cqBaHTfdZqY1gtbg3Daepn9Q/s1600/esfdbconvert1.gif" data-original-width="506" data-original-height="386" /></a>
<br /><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiS7l7BWA_R3lOTiEl6WuLAcdQ7jjGRqiLIncG6eXUxMEfcqnnT6qFThwXdaLqn-phAmE5spK61iGAVJTSBucFr8rrn6AsH01571vXX4AEMZLCu6vRw8kAhR30f4S9sWwU5HE_iz6CFjbI/s1600/esfdbconvert2.gif" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiS7l7BWA_R3lOTiEl6WuLAcdQ7jjGRqiLIncG6eXUxMEfcqnnT6qFThwXdaLqn-phAmE5spK61iGAVJTSBucFr8rrn6AsH01571vXX4AEMZLCu6vRw8kAhR30f4S9sWwU5HE_iz6CFjbI/s1600/esfdbconvert2.gif" data-original-width="506" data-original-height="386" /></a>
<br /><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfH8EviwxcACC3s2-e50m6OG26MhHc_UZ-PbZN0ekh0koJlRrJ9vUeSgKAj7o-7GxfPNPMY1Gcon92O0s31ixd8DESbLG68bR8GXLdu01MFxIGqntfL1pvZQ-RbrWtTe-LEF4VlHDcRuk/s1600/esfdbconvert3.gif" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfH8EviwxcACC3s2-e50m6OG26MhHc_UZ-PbZN0ekh0koJlRrJ9vUeSgKAj7o-7GxfPNPMY1Gcon92O0s31ixd8DESbLG68bR8GXLdu01MFxIGqntfL1pvZQ-RbrWtTe-LEF4VlHDcRuk/s1600/esfdbconvert3.gif" data-original-width="506" data-original-height="386" /></a> Claudemar Martins de Sáhttp://www.blogger.com/profile/05069108300402187406noreply@blogger.com2tag:blogger.com,1999:blog-8798968522614237503.post-42030470785169515702019-10-31T14:19:00.000-04:002019-10-31T14:19:15.706-04:00Compilador COBOL gratuitoO <a href="https://sourceforge.net/projects/open-cobol/">GnuCOBOL</a> é provavelmente a melhor opção para quem quer aprender a programar em COBOL mas não tem acesso a um compilador comercial. Conheça um pouco mais sobre esse projeto e como ele pode ajudá-lo.
<br /><br />
<b>O que é o GnuCOBOL?</b><br /><br />
O GnuCOBOL é um compilador COBOL gratuito, distribuído sob a GNU General Public License, da Free Software Foundation (FSF).
<br /><br />
Esse compilador começou a ser desenvolvido em 2001 por Keisuke Nishida e Roger While com o nome de OpenCOBOL. Em 2013, virou um projeto GNU, ganhou o nome de GnuCOBOL e passou a contar com diversos colaboradores.
<br /><br />
Uma curiosidade: Keisuke Nishida já havia colaborado com o brasileiro Rildo Pragana no desenvolvimento de um outro compilador, chamado TinyCOBOL.
<br /><br />
O GnuCOBOL incorpora a maior parte dos padrões conhecidos como COBOL/85 e COBOL/2002, além de algumas extensões disponíveis em diversos compiladores de mercado, como o Micro Focus COBOL e o AcuCOBOL.
<br /><br />
<b>Como funciona?</b><br /><br />
O GnuCOBOL traduz o seu programa fonte de COBOL para C, e em seguida compila esse programa em C usando o gcc, uma “coleção” de compiladores também distribuído gratuitamente pela FSF.
<br /><br />
Essa solução permite que o GnuCOBOL seja usado em diferentes plataformas: Unix/Linux, Mac OS X, Microsoft Windows, OS/400, z/OS 390, OpenSolaris entre outros.
<br /><br />
<b>Como instalar?</b><br /><br />
Os binários e fontes do COBOL estão disponíveis na SourceForge. Mas, antes de baixar, vale a pena dar uma olhada no site oficial do GnuCOBOL. Clicando aqui você vai direto para a seção que explica o processo de instalação em diferentes plataformas.
<br /><br />
<b>Onde obter mais informações?</b><br /><br />
Na página de faq do GnuCOBOL você encontra todo tipo de informação: história do projeto, nomes dos colaboradores, dialetos suportados, procedimentos de instalação, incompatibilidades com outros compiladores conhecidos, extensões disponíveis etc.
<br /><br />
A página da SourceForge tem também algumas informações sobre o andamento do projeto e algumas evoluções que ainda estão em beta-teste.
<br /><br />
Existe também um manual excelente, escrito por Gary Cutler, chamado GnuCOBOL Programmers Guide. Esse documento é melhor do que muito manual oficial de compiladores comerciais. A versão mais recente é de 2013.
<br /><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_DClDY1I5K3Hn0hq-LI91l9gfx4Twkqt31biqFX-Z5dZBItDKHWs3D5UGWNGaAXbJkUg9XrgD5oSbR0-L13pfxneCsD7DTG04817kcuyyVsOU0itliKRUuQbr2BjCaSofi4BQaXrdQw/s1600/1.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_DClDY1I5K3Hn0hq-LI91l9gfx4Twkqt31biqFX-Z5dZBItDKHWs3D5UGWNGaAXbJkUg9XrgD5oSbR0-L13pfxneCsD7DTG04817kcuyyVsOU0itliKRUuQbr2BjCaSofi4BQaXrdQw/s1600/1.jpg" data-original-width="1583" data-original-height="894" /></a>
<br /><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpbo0nIllz2qUS3mfikT4Y6YOqK9v12Mkd1TTmKCjmxfFlzMnG3ZY5joULHRDavTbswfixJsJBMfpq4vnd44_n5tGEyyNREyvzbHNaDvsUcCO2qsCj0X5biQX4EbU96Izg5OfITS6q8w/s1600/1+%25281%2529.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpbo0nIllz2qUS3mfikT4Y6YOqK9v12Mkd1TTmKCjmxfFlzMnG3ZY5joULHRDavTbswfixJsJBMfpq4vnd44_n5tGEyyNREyvzbHNaDvsUcCO2qsCj0X5biQX4EbU96Izg5OfITS6q8w/s1600/1+%25281%2529.jpg" data-original-width="1600" data-original-height="973" /></a>
<br /><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7SZSiK4vmfLbfWDEktioN2GZhwYw2PODuVrvTODAbRONZ_TRf9TpUp_lCrSj6Hzta23f16rCINF9K936zj_IDJRZ6ZWQppXR6enbNDMX5-zu6RxWBpG61qj95oY1u4q6hm1cZe0XuMg/s1600/1+%25282%2529.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7SZSiK4vmfLbfWDEktioN2GZhwYw2PODuVrvTODAbRONZ_TRf9TpUp_lCrSj6Hzta23f16rCINF9K936zj_IDJRZ6ZWQppXR6enbNDMX5-zu6RxWBpG61qj95oY1u4q6hm1cZe0XuMg/s1600/1+%25282%2529.jpg" data-original-width="1178" data-original-height="810" /></a>
<br /><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwuv9yN9AFDzzZSn89HjhPVVbjqjJi_yjmWsb3S4ny6F_HRuxnDQJh7BosSmhonzn_QKExMldupr1DqX1SZy5F1vJ3vRWMiqbpaPt8ALjRMshQLXURyQdbwH9nwzjaeCXSDa-MsN0lEA/s1600/1+%25283%2529.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwuv9yN9AFDzzZSn89HjhPVVbjqjJi_yjmWsb3S4ny6F_HRuxnDQJh7BosSmhonzn_QKExMldupr1DqX1SZy5F1vJ3vRWMiqbpaPt8ALjRMshQLXURyQdbwH9nwzjaeCXSDa-MsN0lEA/s1600/1+%25283%2529.jpg" data-original-width="640" data-original-height="463" /></a>
<br /><br /><a href="http://jornadat.com.br/compilador-cobol-gratuito/#more-175">Fonte</a>
Claudemar Martins de Sáhttp://www.blogger.com/profile/05069108300402187406noreply@blogger.com0tag:blogger.com,1999:blog-8798968522614237503.post-2136975229294081162019-10-29T16:28:00.000-04:002019-10-29T17:39:49.053-04:00Checklist no InformixUm script que eu usava muito no Informix todos os dias checo o backups, se o update statistic esta rodando ou processos com prioridades (não pode estar rodando nenhum, se estiver o sistema vai ficar lento), essas são algumas coisas que checo todos os dias, pra facilitar criei um script para fazer uma checagem rápida do Informix;
<br /><br />
<b>Primeira tela</b>
<br /><br />
<pre style="border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>-------------------------------------------------------------------------------------------------
26/05/2013 ***** INFORMIX BASIC SERVICES ***** 15:30:27
-------------------------------------------------------------------------------------------------
+--------------------------+------------
| Backup Rodando | 0
+--------------------------+------------
| Usuarios Presos | 0
+--------------------------+------------
| Update Statistic | 0
+--------------------------+------------
| Processos com Prioridade | 0
+--------------------------+------------</code></pre>
<b>Segunda tela</b>
<br /><br />
<pre style="border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>-------------------------------------------------------------------------------------------------
26/05/2013 ***** INFORMIX BASIC SERVICES ***** 15:30:03
-------------------------------------------------------------------------------------------------
+-------------------------+-------+
| Total de Logical Logs | 71 |
+-------------------------+-------+
| Total de LLOG Livres | 70 |
+-------------------------+-------+
| Necessita de Backup | 0 |
+-------------------------+-------+--------------------------+
| Currente LLOG | 37 | 99.31392669677734375 % |
+-------------------------+-------+--------------------------+
IBM Informix Dynamic Server Version 11.50.FC8W3 -- On-Line -- Up 17 days 17:47:33 -- 8760064 Kbytes
Message Log File: /export/home/informix/online.log
05/26/13 10:30:01 Attempting to free unused operating system segments. This
operation may take several minutes.
05/26/13 11:00:01 Attempting to free unused operating system segments. This
operation may take several minutes.
05/26/13 11:30:02 Attempting to free unused operating system segments. This
operation may take several minutes.
05/26/13 12:00:03 Attempting to free unused operating system segments. This
operation may take several minutes.
05/26/13 12:30:02 Attempting to free unused operating system segments. This
operation may take several minutes.
05/26/13 13:00:01 Attempting to free unused operating system segments. This
operation may take several minutes.
05/26/13 13:30:02 Attempting to free unused operating system segments. This
operation may take several minutes.
05/26/13 14:00:02 Attempting to free unused operating system segments. This
operation may take several minutes.
05/26/13 14:30:02 Attempting to free unused operating system segments. This
operation may take several minutes.
05/26/13 15:00:01 Attempting to free unused operating system segments. This
operation may take several minutes.</code></pre>
<b>Terceira tela</b>
<br /><br />
<pre style="border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>IBM Informix Dynamic Server Version 11.50.FC8W3 -- On-Line -- Up 17 days 17:40:07 -- 8760064 Kbytes
num DBSpace Q Size Q Len Buffer partnum size scanner
Dbspaces - Archive Status
name number level date log log-position
rootdbs 1 0 10/29/2013.01:20 16043 0xbf4e018
phydbs 2 0 10/29/2013.01:20 16043 0xbf4e018
logdbs 3 0 10/29/2013.01:20 16043 0xbf4e018
fro_dbs 6 0 10/29/2013.01:20 16043 0xbf4e018
tra_dbs 7 0 10/29/2013.01:20 16043 0xbf4e018
nfe_dbs 8 0 10/29/2013.01:20 16043 0xbf4e018
sgf_dbs 9 0 10/29/2013.01:20 16043 0xbf4e018
exp_dbs 10 0 10/29/2013.01:20 16043 0xbf4e018
er_sbspace 11 0 10/29/2013.01:20 16043 0xbf4e018
====> Nao tem usuario preso.
Linux 2.6.18-400.1.1.el5 (s275) 10/29/2013
03:22:38 PM CPU %user %nice %system %iowait %steal %idle
03:22:39 PM all 0.00 0.00 0.08 0.00 0.00 99.92
03:22:40 PM all 0.08 0.00 0.08 0.00 0.00 99.83
03:22:41 PM all 0.00 0.00 0.08 0.00 0.00 99.92
03:22:42 PM all 0.08 0.00 0.00 0.00 0.00 99.92
03:22:43 PM all 0.08 0.00 0.08 0.00 0.00 99.83
03:22:44 PM all 0.08 0.00 0.08 0.08 0.00 99.75
03:22:45 PM all 0.00 0.00 0.08 0.00 0.00 99.92
03:22:46 PM all 0.08 0.00 0.08 0.50 0.00 99.33
03:22:47 PM all 0.08 0.00 0.00 0.00 0.00 99.92
03:22:48 PM all 0.17 0.00 0.08 0.00 0.00 99.75
Average: all 0.07 0.00 0.07 0.06 0.00 99.81</code></pre>
<b>Script Completo</b>
<br /><br />
<pre style="border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>clear ;
cat /etc/*-release
LOG1="/tmp/1234_$(whoami)_pode_deletar_1234_0.log"
LOG2="/tmp/1234_$(whoami)_pode_deletar_1234_1.log"
LOG3="/tmp/1234_$(whoami)_pode_deletar_1234_2.log"
LOG4="/tmp/1234_$(whoami)_pode_deletar_1234_3.log"
LOG5="/tmp/1234_$(whoami)_pode_deletar_1234_4.log"
LOG6="/tmp/1234_$(whoami)_pode_deletar_1234_5.log"
LOG7="/tmp/1234_$(whoami)_pode_deletar_1234_4.log"
LOG8="/tmp/1234_$(whoami)_pode_deletar_1234_5.log"
clear
echo "-------------------------------------------------------------------------------------------------"
echo -n
echo -n "$(date "+%d/%m/%Y")"
echo -n " "
echo -n " ***** INFORMIX BASIC SERVICES ***** "
echo -n " "
echo "$(date "+%T")"
echo "-------------------------------------------------------------------------------------------------"
echo
echo "+--------------------------+------------ "
echo "| Backup Rodando | $(onstat -g sql | grep 'sysutils RR' | wc -l)"
echo "+--------------------------+------------ "
echo "| Usuarios Presos | $(ps -ef |grep '\?' | grep -vE 'informix|root|defunct|dba|bin|sendmail|hald|zabbix_agentd|usr|transporta|crond|sshimada|rpc|avahi|daemon|ssh|cruiz|ods|transfer|tmatas|sleep' | wc -l )"
echo "+--------------------------+------------ "
echo "| Update Statistic | $(onstat -g sql | grep 'UPDATE STATIST' | wc -l)"
echo "+--------------------------+------------ "
echo "| Processos com Prioridade | $(onstat -g mgm | grep / | grep -v Lock | wc -l) "
echo "+--------------------------+------------ "
echo "| Processos DBA Rodando | $(onstat -u | grep ' dba ' | wc -l)"
echo "+--------------------------+------------ "
echo
pause 3
clear
echo "-------------------------------------------------------------------------------------------------"
echo -n
echo -n "$(date "+%d/%m/%Y")"
echo -n " "
echo -n " ***** INFORMIX BASIC SERVICES ***** "
echo -n " "
echo "$(date "+%T")"
echo "-------------------------------------------------------------------------------------------------"
echo
dbaccess sysmaster > /dev/null <<+
unload to $LOG1
select count (*) from syslogs where is_backed_up = '1';
select ((size - used) / size)*100 from syslogs where is_current = '1'
+
cat $LOG1 | awk -F "|" '{
t_iso3=$3
if ($3 == "0")
{ t_iso3=" Online " }
if ($3 == "1")
{ t_iso3=" Offline " }
printf("| Total de LLOG Livres | %-5d | \n",$1)}' > $LOG2
# ------------------------------------------------------------------------------------------------------
# ------------------------------------------------------------------------------------------------------
# ------------------------------------------------------------------------------------------------------
dbaccess sysmaster > /dev/null <<+
unload to $LOG1
select number, ((size - used) / size)*100 from syslogs where is_current = '1'
+
cat $LOG1 | awk -F "|" '{
t_iso3=$3
if ($3 == "0")
{ t_iso3=" Online " }
if ($3 == "1")
{ t_iso3=" Offline " }
printf("| Currente LLOG | %-2s | %-22s % | \n",$1,$2)}' >> $LOG3
# ------------------------------ ------------------------------------------------------------------------
# ------------------------------------------------------------------------------------------------------
# ------------------------------------------------------------------------------------------------------
dbaccess sysmaster > /dev/null <<+
unload to $LOG1
select count (*) from syslogs where is_backed_up = '0' and is_current = '0'
+
cat $LOG1 | awk -F "|" '{
t_iso3=$3
if ($3 == "0")
{ t_iso3=" Online " }
if ($3 == "1")
{ t_iso3=" Offline " }
printf("| Necessita de Backup | %-2d | \n",$1)}' >> $LOG4
# ------------------------------------------------------------------------------------------------------
# ------------------------------------------------------------------------------------------------------
# ------------------------------------------------------------------------------------------------------
dbaccess sysmaster > /dev/null <<+
unload to $LOG1
select count (*) from syslogs
+
cat $LOG1 | awk -F "|" '{
t_iso3=$3
if ($3 == "0")
{ t_iso3=" Online " }
if ($3 == "1")
{ t_iso3=" Offline " }
printf("| Total de Logical Logs | %-2d | \n",$1)}' >> $LOG5
# ------------------------------------------------------------------------------------------------------
# ------------------------------------------------------------------------------------------------------
# ------------------------------------------------------------------------------------------------------
clear
echo "-------------------------------------------------------------------------------------------------"
echo -n
echo -n "$(date "+%d/%m/%Y")"
echo -n " "
echo -n " ***** INFORMIX BASIC SERVICES ***** "
echo -n " "
echo "$(date "+%T")"
echo "-------------------------------------------------------------------------------------------------"
echo
echo "+-------------------------+-------+"
cat $LOG5
echo "+-------------------------+-------+"
cat $LOG2
echo "+-------------------------+-------+"
cat $LOG4
echo "+-------------------------+-------+--------------------------+"
cat $LOG3
echo "+-------------------------+-------+--------------------------+"
rm $LOG1
rm $LOG2
rm $LOG3
rm $LOG4
rm $LOG5
echo
# comandos
onstat -m ; sleep 4 ; clear ; onstat -g arc ; proc_so ; sar 1 10</code></pre>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPvJEAJYZ1indXktBOIvju_UbAA1sE4YOsy7_cStuSOjUiOsWNF8JvTtX5HcMwFksh34vgzvjwX0Ndz3epZC7KUjMt70EYVGj6CIHZIYFi-83EfBOIY8pJNFcaKqwnMeX8XDFMP5uNbhI/s1600/Captura+de+Tela+%2528162%2529.png" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPvJEAJYZ1indXktBOIvju_UbAA1sE4YOsy7_cStuSOjUiOsWNF8JvTtX5HcMwFksh34vgzvjwX0Ndz3epZC7KUjMt70EYVGj6CIHZIYFi-83EfBOIY8pJNFcaKqwnMeX8XDFMP5uNbhI/s320/Captura+de+Tela+%2528162%2529.png" width="320" height="180" data-original-width="1366" data-original-height="768" /></a>Claudemar Martins de Sáhttp://www.blogger.com/profile/05069108300402187406noreply@blogger.com0tag:blogger.com,1999:blog-8798968522614237503.post-4333253138785101962019-10-29T14:03:00.005-04:002019-10-29T14:03:54.171-04:00Cliente SSH gratuito - PoderosaO Poderosa, um cliente SSH gratuito de código aberta para Windows em seu primeiro lançamento, agora possui uma nova versão paga que você pode testar e avaliar gratuitamente. Com sua interface de usuário moderna, este terminal tem muitas maneiras de facilitar sua vida: fornece uma interface de usuário moderna para uma experiência familiar semelhante a um navegador, com suporte para guias. É versátil e robusto.
<br /><br />
<a href="https://www.poderosa-terminal.com/">Download</a>
<br /><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibYmy2FDPYuLtjMd2Ryg-qCY4QJ73NdKZkyiBI5mTkSW7KymjeBa8TDnqpp1kqJD1Q-5zsetHPxafb9H5MPm3TiSpGVDYpNiVAgyragoS1S3kCc5LB0i9SILhYHsiHD2k6lRKPz22CGjM/s1600/admin-poderosa_ss.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibYmy2FDPYuLtjMd2Ryg-qCY4QJ73NdKZkyiBI5mTkSW7KymjeBa8TDnqpp1kqJD1Q-5zsetHPxafb9H5MPm3TiSpGVDYpNiVAgyragoS1S3kCc5LB0i9SILhYHsiHD2k6lRKPz22CGjM/s1600/admin-poderosa_ss.jpg" data-original-width="1021" data-original-height="526" /></a>Claudemar Martins de Sáhttp://www.blogger.com/profile/05069108300402187406noreply@blogger.com0tag:blogger.com,1999:blog-8798968522614237503.post-62088957782823096412019-10-29T13:02:00.003-04:002019-10-31T14:25:47.784-04:00Saindo do Windows e indo para o LinuxNeste ano (08/2019) estava observando que o meu notebook estava ficando lento, depois de várias varreduras com o anti-virus, faxina nos arquivos, nada melhorava a performance e para piorar o pacote Office da Microsoft expirou e não deixava mais salvar documentos nele, instalei o Libre Office e comecei a usar, depois disso veio um start, o porque não ir para o Linux e ver a performance e usar o Libre Office no Linux? Depois de muito estudar e ver o melhor caminho para ir um recem ex-Windows, gostei de duas distribuições, o Linux Mint e o Deepin.
<br /><br />
<b>Deepin</b>
<br /><br />
O Deepin é uma distribuição Linux, baseada no Debian Unstable, que vem com um ambiente gráfico bastante elegante, eficiente e simplificado que dá pelo nome de Deepin Desktop Environment (DDE) – parece um misto de Windows com MacOS.
<br /><br />
O que mais chamou minha atenção foi o seu visual, bem suave e fluído. Outro ponto forte, é o menu de configuração lateral, que concentra de forma fácil tudo o que é necessário e fornece informações, como previsão do tempo.
<br /><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgO1rpBc8o5I7a1AcHTMNFenllzb8W4i11qGkra9oAZyGz-m9iS-mdpVrhCpTuDeRr7mO5KIKxhW03eLlicIA57Z1kPkCIyj8fvDfEbvRoiJp7OUjm9RJUB4BVH8tOIFkmGsZOG0yD0_Y0/s1600/Deepin-Desktop3-768x432.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgO1rpBc8o5I7a1AcHTMNFenllzb8W4i11qGkra9oAZyGz-m9iS-mdpVrhCpTuDeRr7mO5KIKxhW03eLlicIA57Z1kPkCIyj8fvDfEbvRoiJp7OUjm9RJUB4BVH8tOIFkmGsZOG0yD0_Y0/s1600/Deepin-Desktop3-768x432.jpg" data-original-width="768" data-original-height="432" /></a>
<br /><br />
<b>Linux Mint (versão Cinnamon) </b>
<br /><br />
O Linux Mint é uma das distribuições Linux mais populares do mundo. Para quem quer dar os primeiros passos numa boa alternativa ao sistema operativo Windows e também macOS, esta é normalmente uma das distribuições Linux sugeridas, mas é também uma das que tem maior comunidade.
<br /><br />
No geral esta distribuição oferece tudo o que o utilizador precisa. Tudo é pensado e desenhado ao pormenor tal como acontece com sistemas operativos que são mantidos por grandes empresas. Desde os ícones, aos Wallpapers, passando pelos menus…. o Linux é das distribuições mais amigáveis do utilizador e das mais populares…e não lhe faltam atributos.
<br /><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhD92ynL72kO9-vLGDUboHpnvKezawQZ0gy0YDH3wrQHT20d-xIER0ZqXOLGU_S0qFc4nNDUg4yWgNPFk-8bl0Ocd3rw65-nViN7hpV_X0FOGziN2uUBzgUFR5-g2uz9H-h9E-W7jTAV-w/s1600/mint19_capa-720x451.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhD92ynL72kO9-vLGDUboHpnvKezawQZ0gy0YDH3wrQHT20d-xIER0ZqXOLGU_S0qFc4nNDUg4yWgNPFk-8bl0Ocd3rw65-nViN7hpV_X0FOGziN2uUBzgUFR5-g2uz9H-h9E-W7jTAV-w/s1600/mint19_capa-720x451.jpg" data-original-width="720" data-original-height="451" /></a>
<br /><br />
<b>Veridito Final</b>
<br /><br />
Depois de ler muito, o que tinha de bom em cada uma, essas duas distribuições são intuitivas, faceis de usar para um recem Windows, antes de ir de bater o martelo sobre a distribuição procurei uma coisa que tinha que ter no Linux que usava muito, a essencial era a conexão VPN para o serviço, fazendo uma busca encontrei um software no Linux chamado NetExtender, perguntei a equipe responsavel pela VPN no serviço me deram altas dicas (agora vou de vez), a distribuição que mais me gostei foi o Linux Mint, o que o Linux Mint entrega de diferente em relação às demais distribuições? Pra mim o consumo de memória abaixo da média e a interface gráfica são elementos que despertam atenção no sistema, mesclando o bom aproveitamento de hardware com um visual sofisticado e intuitivo. Veja como ficou o meu Notebook.
<br /><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2So0lbkyLbcxK-XB4xuJh1JJ_aRQ_qlEyF1p_bPSOBzfKN3cLCetj8bvUOpkRHjW9wvN2AOKQ265XYhYmf1WG5Q1xjxnIgZT3dW77ZRXVr8srs1zn5K23sw_M0lZrdv9fxKSfYeo0Lzk/s1600/Linux-Mint-19.2-Cinnamon-Desktop-1024x576.png" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2So0lbkyLbcxK-XB4xuJh1JJ_aRQ_qlEyF1p_bPSOBzfKN3cLCetj8bvUOpkRHjW9wvN2AOKQ265XYhYmf1WG5Q1xjxnIgZT3dW77ZRXVr8srs1zn5K23sw_M0lZrdv9fxKSfYeo0Lzk/s1600/Linux-Mint-19.2-Cinnamon-Desktop-1024x576.png" data-original-width="1024" data-original-height="576" /></a>
<br /><br />
<b>Pós Instalação</b>
<br /><br />
Como você pode ver na imagem acima fui de vez, nem coloquei dual boot, o Linux Mint virou meu principal sistema operacional, de cara uma coisa que reparei foi a performance geral do notebook, ficou melhor que o Windows 10, me surpreendeu. Depois instalei os softwares que mais usava no Windows, o navegador Chrome, o emulador de telnet PW3270, o NetExtender para criar uma conexão VPN com o serviço, todos funcionando perfeitamente.Claudemar Martins de Sáhttp://www.blogger.com/profile/05069108300402187406noreply@blogger.com0tag:blogger.com,1999:blog-8798968522614237503.post-31650278982943444682019-10-29T12:19:00.000-04:002019-10-29T12:19:01.114-04:00Wine LinuxCom o Wine dá para executar programas do Windows em sistema operacional Linux. Com o Wine você pode mudar de uma vez por todas do Windows para Linux facilmente. O Wine é uma ferramenta que implementa a API do Windows, permitindo a execução de programas criados especificamente para os sistemas operacionais da Microsoft. Com este aplicativo, que não é um emulador, você pode até mesmo executar aplicativos do DOS, eliminando o uso do Windows e abrir a possibilidade de desfrutar o sistema operacional de código aberto por excelência.<br />
<br />
Principais características:<br />
<br />
<ul>
<li>Implementação de programas para Windows 9x / NT / 2000 / XP, Windows 3.x e DOS.</li>
<li>Compatível com o desenho de memória Win32. </li>
<li>Suporte para DirectX.</li>
<li>Total compatibilidade com os drivers de hardware.
</li>
</ul>
<br />
<b>Instalação</b>
<br /><br />
Este artigo ajudará você a instalar o Wine 4 Stable Release em sistemas baseados em RHEL. Os usuários do Fedora podem usar o repositório yum oficial fornecido pela equipe do Wine para a instalação dos pacotes mais recentes do Wine.
<br /><br />
<b>Etapa 1 - Pré-requisito</b>
<br /><br />
Primeiro, torne-se usuário root no seu sistema CentOS 8. Continue com o tutorial.
<pre style="border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>$ sudo -i</code></pre>
O Wine exigia muitos pacotes de desenvolvimento. Primeiro, recomendamos atualizar todos os pacotes do sistema usando os seguintes comandos.
<pre style="border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code># dnf clean all
# dnf update</code></pre>
Agora instale os pacotes necessários para o Wine usando o yum package manager usando os seguintes comandos.
<pre style="border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code># dnf groupinstall 'Development Tools'
# dnf install libX11-devel freetype-devel zlib-devel libxcb-devel libxslt-devel libgcrypt-devel libxml2-devel gnutls-devel libpng-devel libjpeg-turbo-devel libtiff-devel gstreamer-devel dbus-devel fontconfig-devel</code></pre>
<b>Passo 2 – Instalando o Wine 4</b>
<br /><br />
Pacotes RPM para o Wine não estão disponíveis para as versões mais recentes, portanto, precisamos <a href="https://dl.winehq.org/wine/source/4.x/">fazer o download</a> do código-fonte do Wine. Use os comandos abaixo para fazer o download.
<pre style="border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code># cd /opt
# wget https://dl.winehq.org/wine/source/4.x/wine-4.18.tar.xz
# tar -Jxf wine-4.18.tar.xz
# cd wine-4.18</code></pre>
Configure o wine usando um dos seguintes comandos, com base na arquitetura do sistema. Isso definirá o ambiente de instalação do Wine de acordo com o seu sistema.
<pre style="border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>Para sistemas de 32 bits:
# ./configure
Para sistemas de 64 bits:
# ./configure --enable-win64</code></pre>
Por fim, execute o comando make and make install para compilar a fonte do wine e instalá-lo em seu sistema.
<pre style="border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code># sudo make
# sudo make install</code></pre>
<b>Etapa 3 - Verifique a versão do Wine</b>
<br /><br />
Use o seguinte comando para verificar a versão do wine instalada no seu sistema
<pre style="border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>On 32-Bit Systems:
# wine --version
On 64-Bit Systems:
# wine64 --version</code></pre>
<b>Como usar o Wine?</b>
<br /><br />
Para usar o wine, precisamos fazer login na área de trabalho do CentOS / Fedora. Depois disso, faça o download de um arquivo executável do Windows (.exe) como o PuTTY no seu sistema e abra-o com o Wine como na captura de tela abaixo ou use o seguinte comando.
<pre style="border: 1px dashed #999999; color: black; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>wine putty.exe</code></pre>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkSd-4fVS_5tGeZLrXAHgW7__FYnMx5GlK9NC9fgehGev-R8iDsFQ8FybLI2lXaezSMYnPTSDxRL7W5Ub7nI0XjO3yOIo-ndcB08lyBfcx_FubkzU46Kl9hvXQSdagd_tWIDy7RQnJHGU/s1600/wine-centos8.png" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkSd-4fVS_5tGeZLrXAHgW7__FYnMx5GlK9NC9fgehGev-R8iDsFQ8FybLI2lXaezSMYnPTSDxRL7W5Ub7nI0XjO3yOIo-ndcB08lyBfcx_FubkzU46Kl9hvXQSdagd_tWIDy7RQnJHGU/s1600/wine-centos8.png" data-original-width="800" data-original-height="600" /></a>
<br />Claudemar Martins de Sáhttp://www.blogger.com/profile/05069108300402187406noreply@blogger.com0tag:blogger.com,1999:blog-8798968522614237503.post-80532388158665171422019-03-13T12:28:00.000-04:002019-03-13T12:28:10.863-04:00Display da dia/hora de inicio de um processo - InformixAlgumas vezes quero descobrir que dia um determinado processo começou a rodar no Informix, criei um script que faz isso, primeiro tenho que descobrir com o comando onstat -g ses o número da sessão:
<pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>[s275:informix]$/export/home/informix> onstat -g ses
IBM Informix Dynamic Server Version 11.50.FC8W3 -- On-Line -- Up 3 days 06:24:03 -- 8760064 Kbytes
session #RSAM total used dynamic
id user tty pid hostname threads memory memory explain
6536 informix - 0 - 0 12288 11816 off
6534 informix - 0 - 0 12288 11816 off
6514 dba - 2179 M331 1 139264 134200 off
136 dba - 6529 M331 1 118784 90992 off
134 dba - 6530 M331 1 126976 90408 off
104 informix - 0 - 1 53248 49104 off
42 informix - 0 - 1 602112 435648 off
41 informix - 0 - 1 483328 356472 off
40 informix - 0 - 1 442368 390256 off
9 informix - 0 - 0 16384 13400 off
8 informix - 0 - 0 16384 13400 off
7 informix - 0 - 0 12288 11816 off
6 informix - 0 - 0 12288 11816 off
5 informix - 0 - 0 12288 11816 off
4 informix - 0 - 0 12288 11816 off
3 informix - 0 - 0 12288 11816 off
2 informix - 0 - 0 12288 11816 off
</code></pre>
Vamos checar que dia rodou o processo com a sessão id 6536
<pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>[s275:informix]$/export/home/informix> ./proc_tt 6536
(*) Display da dia/hora de inicio de um processo
Database selected.
sid 6536
servidor s275
usuario informix
iniciou 2019-03-12 18:40:23
1 row(s) retrieved.
Database closed.
[s275:informix]$/export/home/informix></code></pre>
O script complete para fazer isso é esse:
<pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code># ---------------------------------------------------------------------
# Funcao : Display da hora de inicio de um processo
# Comando: ./proc_ti process_id --- exemplo --- ./proc_ti 75
# Criado : 30/10/2011
# ---------------------------------------------------------------------
PROCESS=${1}
export shell=/bin/bash
echo
echo "(*) Display da dia/hora de inicio de um processo"
echo
echo "SELECT a.sid, TRIM(a.hostname) as servidor, TRIM(a.username) as usuario,
DBINFO('utc_to_datetime', a.connected) as iniciou
from syssessions a
where sid =
${PROCESS}"|dbaccess sysmaster</code></pre>
Claudemar Martins de Sáhttp://www.blogger.com/profile/05069108300402187406noreply@blogger.com3tag:blogger.com,1999:blog-8798968522614237503.post-61389849128785861952019-03-12T18:27:00.003-04:002019-03-12T18:37:37.318-04:00Usuários Cadastrados no Sistema OperacionalA maioria das demandas de cadastro chegam primeiro para a equipe de sistema operacional (Linux) e depois vem para a equipe de Informix liberar as permissões, algumas vezes ocorre do usuário não ser criado, este script ajuda a equipe a olhar rapidamente e ver se o usuário foi criado, o bom que agiliza nesta consulta pra ver se o usuário foi cadastradado.
<br /><br />
Ele rodando seria desse jeito;
<pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>Usuario #2285 = AA991400
Usuario #2286 = AA991401
Usuario #2287 = AA991402
Usuario #2288 = AA991403
Usuario #2289 = AA991404
Usuario #2290 = AA991405
Usuario #2291 = AA991406
Usuario #2292 = AA991407
Usuario #2293 = AA991408
Usuario #2294 = AA991409
Usuario #2295 = AA991410
Usuario #2296 = AA991411
Usuario #2297 = AA991412
Usuario #2298 = AA991413
Usuario #2299 = AA991414
Usuario #2300 = AA991415
Usuario #2301 = AA991416
Usuario #2302 = AA991417
Usuario #2303 = AA991418
Usuario #2304 = AD99921A
Usuario #2305 = AA991419
Usuario #2306 = AA991420
Usuario #2307 = AA991421
Usuario #2308 = AA991422
Usuario #2309 = AD99922A
</code></pre>
O script completo é esse;
<pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code># -------------------------------------------------------------------------
# Funcao: Verifica os usuarios cadastrados no SISTEMA OPERACIONAL
# -------------------------------------------------------------------------
#!/bin/bash
# userlist.sh
PASSWORD_FILE=/etc/passwd
n=1 # User number
for name in $(awk 'BEGIN{FS=":"}{print $1}' < "$PASSWORD_FILE" )
# ---------------------------------------------------------------------------
# Field separator = : ^^^^^^
# Print first field ^^^^^^^^
# Get input from password file ^^^^^^^^^^^^^^^^^
# ---------------------------------------------------------------------------
do
echo "Usuario #$n = $name"
let "n += 1"
done
exit 0
</code></pre>Claudemar Martins de Sáhttp://www.blogger.com/profile/05069108300402187406noreply@blogger.com0tag:blogger.com,1999:blog-8798968522614237503.post-37176965572515047572016-07-08T13:25:00.000-04:002019-03-12T18:01:23.519-04:00Diagnostica de Lentidão - InformixNo Informix depois de tempo observando algumas situações que deixavam o banco de dados lento resolvi criar um script que faz uma check list de algumas coisas para identificar mais rápido o motivo que o banco de dados Informix estava lento, inicialmente coloquei quatro causas mais comuns que ocorriam aqui comigo no script para ser rodado pra trazer o resultado mais rápido essas informações para identificar as possíveis causas da lentidão no banco de dados Informix, o resultado do script é este:
<pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>-------------------------------------------------------------------------------------------------
08/07/2016 ***** INFORMIX BASIC SERVICES ***** 12:56:44
-------------------------------------------------------------------------------------------------
+--------------------------+------------
| Backup Rodando | 0
+--------------------------+------------
| Usuarios Presos | 0
+--------------------------+------------
| Update Statistic | 0
+--------------------------+------------
| Processos com Prioridade | 0
+--------------------------+------------</code></pre>
O script pra rodar esta abaixo;<pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>LOG1="/tmp/1234_$(whoami)_pode_deletar_1234_0.log"
LOG2="/tmp/1234_$(whoami)_pode_deletar_1234_1.log"
echo "-------------------------------------------------------------------------------------------------"
echo -n
echo -n "$(date "+%d/%m/%Y")"
echo -n " "
echo -n " ***** INFORMIX BASIC SERVICES ***** "
echo -n " "
echo "$(date "+%T")"
echo "-------------------------------------------------------------------------------------------------"
echo
echo "+--------------------------+------------ "
echo "| Backup Rodando | $(onstat -g sql | grep 'sysutils RR' | wc -l)"
echo "+--------------------------+------------ "
echo "| Usuarios Presos | $(ps -ef |grep '\?' | grep -vE 'informix|root|defunct|dba|bin|sendmail|hald|zabbix_agentd|usr|crond|rpc|daemon|ssh|sleep' | wc -l )"
echo "+--------------------------+------------ "
echo "| Update Statistic | $(onstat -g sql | grep 'UPDATE STATIST' | wc -l)"
echo "+--------------------------+------------ "
echo "| Processos com Prioridade | $(onstat -g mgm | grep / | grep -v Lock | wc -l) "
echo "+--------------------------+------------ "
echo</code></pre>
Vamos colocar mais uma função neste script, quero ver as consultas no banco que estão com algum erro;<pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>LOG1="/tmp/1234_$(whoami)_pode_deletar_1234_0.log"
LOG2="/tmp/1234_$(whoami)_pode_deletar_1234_1.log"
echo "-------------------------------------------------------------------------------------------------"
echo -n
echo -n "$(date "+%d/%m/%Y")"
echo -n " "
echo -n " ***** INFORMIX BASIC SERVICES ***** "
echo -n " "
echo "$(date "+%T")"
echo "-------------------------------------------------------------------------------------------------"
echo
echo "+--------------------------+------------ "
echo "| Backup Rodando | $(onstat -g sql | grep 'sysutils RR' | wc -l)"
echo "+--------------------------+------------ "
echo "| Usuarios Presos | $(ps -ef |grep '\?' | grep -vE 'informix|root|defunct|dba|bin|sendmail|hald|zabbix_agentd|usr|transporta|crond|sshimada|rpc|avahi|daemon|ssh|cruiz|ods|transfer|tmatas|sleep' | wc -l )"
echo "+--------------------------+------------ "
echo "| Update Statistic | $(onstat -g sql | grep 'UPDATE STATIST' | wc -l)"
echo "+--------------------------+------------ "
echo "| Processos com Prioridade | $(onstat -g mgm | grep / | grep -v Lock | wc -l) "
echo "+--------------------------+------------ "
echo "| Processos com Erro | $(onstat -g sql |grep -v '0 0 ' | grep 'Off' | wc -l)"
echo "+--------------------------+------------ "
echo
</code></pre>
Resultado;<pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>-------------------------------------------------------------------------------------------------
08/07/2016 ***** INFORMIX BASIC SERVICES ***** 13:12:58
-------------------------------------------------------------------------------------------------
+--------------------------+------------
| Backup Rodando | 0
+--------------------------+------------
| Usuarios Presos | 0
+--------------------------+------------
| Update Statistic | 0
+--------------------------+------------
| Processos com Prioridade | 0
+--------------------------+------------
| Processos com Erro | 0
+--------------------------+------------
</code></pre>Este script simples ajudou a identificar algumas situações de lentidões no banco de dados Informix de forma bem mais rápida, pra mim foi uma mão na roda;
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZ4GTZxBUr9MIC_zviwFG-7rm-1opn9bQLsUA1MH3oG7EA1WEetru4YvKG84iQ-FtaOo4dFtYqGUHNbVTrvuxMpu9I3taqEoVjWSt0NJCOmWAh4RH0pWGxIcKP1ySvoFLXqmJQAc4dsk4/s1600/informix.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZ4GTZxBUr9MIC_zviwFG-7rm-1opn9bQLsUA1MH3oG7EA1WEetru4YvKG84iQ-FtaOo4dFtYqGUHNbVTrvuxMpu9I3taqEoVjWSt0NJCOmWAh4RH0pWGxIcKP1ySvoFLXqmJQAc4dsk4/s320/informix.jpg" width="320" height="180" /></a>Claudemar Martins de Sáhttp://www.blogger.com/profile/05069108300402187406noreply@blogger.com0tag:blogger.com,1999:blog-8798968522614237503.post-88779806787901562422015-11-24T16:49:00.002-03:002015-11-24T16:49:49.371-03:00Apostila de Banco de Dados DB2 para MainframesA apostila Banco de Dados DB2 para Mainframes foi desenvolvido pela Mainframe School treinamentos em seus cursos sendo um ótimo material de estudos totalmente em português. O material mostra uma introdução sobre o DB2 para Mainframes sendo indicado para estudantes de concursos públicos e profissionais de TI em geral. Vale a pena conferir.
<br />
<br />
<a href="https://drive.google.com/file/d/0B1cu_-gW8sSDV3dBZm1RVFBuNDA/view?usp=sharing"><b>Download PDF</b></a>
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkkhjP4dZZcMFuNu4WAXUHWBpAlBDBSF7joSoQM0ihwSLb9tYwDpFczwm-Z4g08KEd5aHRTsYTFbOKgaN_8ZpN7WbHc7h1B_Gy5ia3qHXbrpPvQNawF6hI2odKSREb3HYeo6UtwpNnUg/s1600/apostila_db2.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkkhjP4dZZcMFuNu4WAXUHWBpAlBDBSF7joSoQM0ihwSLb9tYwDpFczwm-Z4g08KEd5aHRTsYTFbOKgaN_8ZpN7WbHc7h1B_Gy5ia3qHXbrpPvQNawF6hI2odKSREb3HYeo6UtwpNnUg/s640/apostila_db2.jpg" /></a> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4IZV_BA1roLyDgcv_RP8022Xi_9aXkxM-2mczB5ZW3bEQTSubQKy-ugC3ZoWRMBCV1Ra1GCK_d3OqCDfclc7OUhP9VS4X2lubWS8N04p779IkULLwkOoqBE7Dujd8TGP0FzfoUuoT0w/s1600/apostila_db2-2.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4IZV_BA1roLyDgcv_RP8022Xi_9aXkxM-2mczB5ZW3bEQTSubQKy-ugC3ZoWRMBCV1Ra1GCK_d3OqCDfclc7OUhP9VS4X2lubWS8N04p779IkULLwkOoqBE7Dujd8TGP0FzfoUuoT0w/s640/apostila_db2-2.jpg" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvLdOoQ1nin_VzuT51t2aysHpjpp-lK3Lx7XbFSmfXlZbcnUfRWlvPTY9flyav_d4Inju_XYugbQcPQbLoIDqsV_XcXd9LrBKy1nBenbkOqs74JHU6-SOBktCbWbtquK8ZwF6X0s_5uA/s1600/apostila_db2-3.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvLdOoQ1nin_VzuT51t2aysHpjpp-lK3Lx7XbFSmfXlZbcnUfRWlvPTY9flyav_d4Inju_XYugbQcPQbLoIDqsV_XcXd9LrBKy1nBenbkOqs74JHU6-SOBktCbWbtquK8ZwF6X0s_5uA/s640/apostila_db2-3.jpg" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXoCmmty-y8YbsvdrDy-Aaa2EXRIa7K1-U8nHg4NavtM108dXjescWC4MSMRk-2_4IGCRN-HgH9kIfmAWh8fTKNHYRM1LNuDnRVTYGpLIqw2L0VJASk0LIdXYFBmho8uBQqz7LPhWPKw/s1600/apostila_db2-4.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXoCmmty-y8YbsvdrDy-Aaa2EXRIa7K1-U8nHg4NavtM108dXjescWC4MSMRk-2_4IGCRN-HgH9kIfmAWh8fTKNHYRM1LNuDnRVTYGpLIqw2L0VJASk0LIdXYFBmho8uBQqz7LPhWPKw/s640/apostila_db2-4.jpg" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6cIzFCi30yO8epGrF9_sZ7JVm_4EtPW3c4107PAh-urXggpzJIR2wph60larDoWDFAiAk2Asjurw7vs8WMobYdLUHN8rkmNrUfduHdDJaep_bZpuJtLTJygwJz5t0_mY7-mAm3J9YtQ/s1600/apostila_db2-6.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6cIzFCi30yO8epGrF9_sZ7JVm_4EtPW3c4107PAh-urXggpzJIR2wph60larDoWDFAiAk2Asjurw7vs8WMobYdLUHN8rkmNrUfduHdDJaep_bZpuJtLTJygwJz5t0_mY7-mAm3J9YtQ/s640/apostila_db2-6.jpg" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhT05XalEqd4Eb2crFPaEbQbzW3Y6kzM1kdgkl_mzHjmzK6fcXZyi7Pm6Jjx1Cfrbxl6q8C1kGe4ruoRnhZPL6RHYuyHToMVSVSGY1mUUweXgoDnLeLBN3EfvCG4v4HVz_g4NaNR5Hdlw/s1600/apostila_db2-7.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhT05XalEqd4Eb2crFPaEbQbzW3Y6kzM1kdgkl_mzHjmzK6fcXZyi7Pm6Jjx1Cfrbxl6q8C1kGe4ruoRnhZPL6RHYuyHToMVSVSGY1mUUweXgoDnLeLBN3EfvCG4v4HVz_g4NaNR5Hdlw/s640/apostila_db2-7.jpg" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhc0JMcayIbCnbDm9Mxyr-5mAJ4181lVakm15CYr5pk5t6SAYhIFJ8Dax9aMgNJnR296KxPhqtMCYRA9HJJhUeB-rkJHE8M5OEiM8e3mGB_XBjEd8LAbsJM9J7rTPGTRfMo6xUYH0CDDg/s1600/apostila_db2-8.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhc0JMcayIbCnbDm9Mxyr-5mAJ4181lVakm15CYr5pk5t6SAYhIFJ8Dax9aMgNJnR296KxPhqtMCYRA9HJJhUeB-rkJHE8M5OEiM8e3mGB_XBjEd8LAbsJM9J7rTPGTRfMo6xUYH0CDDg/s640/apostila_db2-8.jpg" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCa57Q_gsObLyx8Kgt64HPhI0wlHuXKaEVPZLWrtrISB5pBLIgXnH8RacJZfAIxjiyNqvfJlBogI_4i81L4O1EECrl4sn1LgUxLEoDB9D5TptOAtwlOdHUeRXtJ30Cw-BqLdQX5oRuyQ/s1600/apostila_db2-9.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCa57Q_gsObLyx8Kgt64HPhI0wlHuXKaEVPZLWrtrISB5pBLIgXnH8RacJZfAIxjiyNqvfJlBogI_4i81L4O1EECrl4sn1LgUxLEoDB9D5TptOAtwlOdHUeRXtJ30Cw-BqLdQX5oRuyQ/s640/apostila_db2-9.jpg" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDayVeuoM-oOZkkucm91krutpKhgO6eToeeAC7NwY3UA1M2N39Mpx-VoHMiFjcO77NuACsYcZ7uiiFvxrpfSs5XgI3lCv_hi9RcpkK_WSadLW0fkuUhKnyjRh23E16C3ELL1BHHG2X7A/s1600/apostila_db2-10.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDayVeuoM-oOZkkucm91krutpKhgO6eToeeAC7NwY3UA1M2N39Mpx-VoHMiFjcO77NuACsYcZ7uiiFvxrpfSs5XgI3lCv_hi9RcpkK_WSadLW0fkuUhKnyjRh23E16C3ELL1BHHG2X7A/s640/apostila_db2-10.jpg" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXhp0PgooVJunJwt7rDGWlBmhhBhIJaMO9eIx2vJxAS3kqX2d5md_Ga9Kf62VCprX8vOTghOA1h3FviZ34q77oAEI6xtUeweodWr0XcHgKQsWIM7Nku-gVSxFYAzyrhhix5t_mWaVgLQ/s1600/apostila_db2-11.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXhp0PgooVJunJwt7rDGWlBmhhBhIJaMO9eIx2vJxAS3kqX2d5md_Ga9Kf62VCprX8vOTghOA1h3FviZ34q77oAEI6xtUeweodWr0XcHgKQsWIM7Nku-gVSxFYAzyrhhix5t_mWaVgLQ/s640/apostila_db2-11.jpg" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNI0fO3o5FaFbO2IAn6uh-wOhPGg5zvoSA53MzU4S05sqDAhflTSY5U6ZCzbwRNVHEOnkpP26HZJoCH5chnlguEy0Bs6NuaPKNVWZ9_FJjt9rnebUSqTb0qJ-ks6AcPoWj716hxlSy4w/s1600/apostila_db2-12.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNI0fO3o5FaFbO2IAn6uh-wOhPGg5zvoSA53MzU4S05sqDAhflTSY5U6ZCzbwRNVHEOnkpP26HZJoCH5chnlguEy0Bs6NuaPKNVWZ9_FJjt9rnebUSqTb0qJ-ks6AcPoWj716hxlSy4w/s640/apostila_db2-12.jpg" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHlYyWCKYQOlaP_vWQPXOAUJRzReQrUol8SwrU491u6bILWHaoh3gYC0Ka2p0Stqnxr8sWM9XUyFD27j45czQw-irh362qLFQvzbr6j06xErCkxjltRoWp3cq-ZhdyjR-6l9lSL7_MJQ/s1600/apostila_db2-13.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHlYyWCKYQOlaP_vWQPXOAUJRzReQrUol8SwrU491u6bILWHaoh3gYC0Ka2p0Stqnxr8sWM9XUyFD27j45czQw-irh362qLFQvzbr6j06xErCkxjltRoWp3cq-ZhdyjR-6l9lSL7_MJQ/s640/apostila_db2-13.jpg" /></a>
<br />
<a href="https://100acl.wordpress.com/2014/02/18/db2-para-mainframes/"><b>Créditos</b></a>Claudemar Martins de Sáhttp://www.blogger.com/profile/05069108300402187406noreply@blogger.com1tag:blogger.com,1999:blog-8798968522614237503.post-64787904628331773762015-11-08T13:39:00.000-03:002015-11-08T15:03:54.426-03:00Instalando o Hercules z/OS 1.10 no WindowsEste post explica como instalar e iniciar o Hercules no Windows rodando o z/OS 1.10, vou colocar aqui todos passos necessários para instalar no Windows ou um verdadeiro mainframe e em execução.
<br />
<br />
<b><span style="font-size: large;">1.1 Pré-requisitos
</span></b><br />
<br />
<b><span style="font-size: large;">1.1.1 HARDWARE
</span></b><br />
<br />
Obviamente, temos de ter um PC/Notebook com uma boa especificação, caso contrário, a implementação deste emulador será muito lenta. No meu caso, rodo sem problemas sob um Dual Core o Hercules e até o primeiro Pentium 4 de 1,8 GHz, dando uma proporção de desempenho MIPS bastante aceitável.
<br />
<br />
De qualquer forma, uma das coisas que para emulação é muito armazenamento, especialmente se Hercules ou o que en cima- executar página. Portanto, para esta instalação, você deve ter pelo menos 1 GB de RAM para inicializar o z/OS "nua", ou seja, apenas JES2, TSO e VTAM. Se executar o DB2, CICS, etc., seria aconselhável ter pelo menos 2 GB de RAM mínima para o Hercules sozinho. Isto significa que além de Windows também precisa de memória para ser executado.
<br />
<br />
Na minha máquina particular, eu tenho 2 GB de RAM, e "apenas" tem que Hercules, ou seja, eu não tenho mais aplicações para executar (e outras emulações de terminal, que explicarei mais tarde). Portanto, eu tenho 1,5 GB de RAM reservados para Hercules e os restantes 512 MB está disponível para o Windows deixou isso irá impedir que o Windows processa-se a paginação, causando problemas de lentidão e falta de desempenho.
<br />
<br />
Finalmente, para instalar z/OS 1.10, vamos precisar de 17 GB disponíveis, é o que ocupa as imagens do ADCD, que vou explicar mais tarde.
<br />
<br />
<b><span style="font-size: large;">1.1.2 Software</span></b><br />
<br />
Além de ter a do Windows (testando o ter feito no Windows XP, mas Hercules é executado no Windows 2003 Server ou mesmo Windows 7) instalou o último nível de correção, você deve ter instalado um emulador de terminal IBM 3270. No meu caso, eu tenho PW3270 que é um emulador de telnet gratis para poder acessar o Hercules.
<br />
<br />
<b><span style="font-size: large;">1.1.3 Comunicação</span></b><br />
<br />
Se nossa equipe vai participar em uma rede, e até mesmo futuros terminais servirá 3270 para outros cargos ou terminais estão rodando em computadores diferentes no próprio Hércules, deve ter configurado adequadamente IP. No meu caso, o meu servidor tem o IP 192 168 254 118 Hercules. Também é importante ter configurado adequadamente o Gateway e outros. Se o computador pode se conectar à Internet está configurada corretamente.
<br />
<br />
Também é importante para adicionar exceções no firewall, uma vez que, como veremos, as portas TCP abertas para o Hercules que podem ser conectados a qualquer terminal remotamente, por isso é importante para adicionar exceções.
<br />
<br />
<b><span style="font-size: large;">Hercules 1.2 Instalação no Windows
</span></b><br />
<br />
Para a instalação de Hércules, siga estes passos:
<br />
<br />
1. Vamos ir para o Web http://www.hercules-390.org/ e vamos para a parte de download. Nele, Hercules está disponível para uma variedade de plataformas e sistemas operacionais, para escolher nossa instalação do Windows (no meu caso, o arquivo MSI de 32 bits) e prossiga para baixá-lo.
<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTy5uCdRkslfen5RrmS2KBuo4gWT5WSDKe3HkvHye5I1IfQG_v6cm-ANUfHE5TH3I8sQRWcn-CQ49cX8ey4Km0T9NTWbqIyutqLdxQP5zIH5q7ZielPCXgXbui8g8ungtzwAJWfs9qDCs/s1600/Dibujo1.jpg" imageanchor="1"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTy5uCdRkslfen5RrmS2KBuo4gWT5WSDKe3HkvHye5I1IfQG_v6cm-ANUfHE5TH3I8sQRWcn-CQ49cX8ey4Km0T9NTWbqIyutqLdxQP5zIH5q7ZielPCXgXbui8g8ungtzwAJWfs9qDCs/s1600/Dibujo1.jpg" /></a>
<br />
Fig. 1: Baixar o arquivo Hercules-3.07-w32.msi
<br />
<br />
2. Uma vez baixado, execute-o e vamos lançar um assistente que vai continuar passo a passo pelos seguintes números:
<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiHCY71huBddy2YI27u_bhWO6-DrPEPWRpSoyRLHOoBz5RVZMjntFVl192-Uel1SFK2cIMWsMd6bbk2B_bwW_dBrNQOyZY375Nx9mLTpRd1RVVSANREjj60tevkPmhtBQ0wFxipMI4lHsc/s1600/Dibujo2.jpg" imageanchor="1"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiHCY71huBddy2YI27u_bhWO6-DrPEPWRpSoyRLHOoBz5RVZMjntFVl192-Uel1SFK2cIMWsMd6bbk2B_bwW_dBrNQOyZY375Nx9mLTpRd1RVVSANREjj60tevkPmhtBQ0wFxipMI4lHsc/s1600/Dibujo2.jpg" /></a>
<br />
<br />
Fig. 2: Bem-vindo ao assistente.
<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtydqUWTqskWPkP5RSy0D1vWldLkI02S-rXYeRtudp625zNK09XzJS4mXyFwIzQDrtJTvK6ZjXMaDnxeTkzylaXRj330gnytW7LGgJzoYkL7bu58lEMMHDDnce2ZZOO1Guflhv38CYplE/s1600/Dibujo3.jpg" imageanchor="1"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtydqUWTqskWPkP5RSy0D1vWldLkI02S-rXYeRtudp625zNK09XzJS4mXyFwIzQDrtJTvK6ZjXMaDnxeTkzylaXRj330gnytW7LGgJzoYkL7bu58lEMMHDDnce2ZZOO1Guflhv38CYplE/s1600/Dibujo3.jpg" /></a>
<br />
<br />
Fig. 3: Selecionar Pasta de Instalação
<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj54x7F3ZFLAviGUWOGC319vwhCE_9emK-5U0LE58a81x0EK5B_GM-zRvFrT_FDP-RgAlmQOjaQpfqLC3FUHmf4BjtnXDcYABbnqSg5SJpUyp_eh0GeZDYMNJKKe4Uvj3O27IWbyyA61L4/s1600/Dibujo4.jpg" imageanchor="1"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj54x7F3ZFLAviGUWOGC319vwhCE_9emK-5U0LE58a81x0EK5B_GM-zRvFrT_FDP-RgAlmQOjaQpfqLC3FUHmf4BjtnXDcYABbnqSg5SJpUyp_eh0GeZDYMNJKKe4Uvj3O27IWbyyA61L4/s1600/Dibujo4.jpg" /></a>
<br />
<br />
Fig. 4: Confirmar dados de instalação
<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMH_5MsgLGOWjX4K0bD7vOJ_C-z1VSEpwnQ_pLG-tTNA41ZkRoTjt3LG7WZpc8T9IeZ5Dy7gMku1TWqnzRm5I_Pq2fhr6XXRk1kdAy_lD18qpyygHgkt_i5TKgm0Ta8npO2ljiLtC_NQ8/s1600/Dibujo5.jpg" imageanchor="1"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMH_5MsgLGOWjX4K0bD7vOJ_C-z1VSEpwnQ_pLG-tTNA41ZkRoTjt3LG7WZpc8T9IeZ5Dy7gMku1TWqnzRm5I_Pq2fhr6XXRk1kdAy_lD18qpyygHgkt_i5TKgm0Ta8npO2ljiLtC_NQ8/s1600/Dibujo5.jpg" /></a>
<br />
<br />
Fig. 5: Instalação concluída
<br />
<br />
<b><span style="font-size: large;">1.3 Instalação ADCD z/OS 1.10
</span></b><br />
<br />
Esta parte da instalação depende inteiramente P2P, não há nenhum site oficial para download como É ILEGAL executar z/OS 1.10, sem a licença correspondente. Se você deseja obter uma cópia legal do z/OS, você deve ir ao site da IBM http://dtsc.dfw.ibm.com/MVSDS/'HTTPD2.ADCD.GLOBAL.HTML(READM110) 'e fazer a correspondente e pedido de pagamento subsequente.
<br />
<br />
<b><span style="font-size: large;">1.3.1 É ADCD
</span></b><br />
<br />
O ADCD significa Application Developer / distribuição controlada e é uma versão do z / OS preparado com todos os aplicativos instalados para as empresas que querem desenvolver sob a plataforma de mainframe mas não têm ninguém para trabalhar. Portanto, a IBM configurou az / OS "pronto para correr" com os parâmetros e perfis de endereçamento de partida para o IPL específicas, ter uma sessão TSO sem ter que tocar qualquer parâmetro.
<br />
<br />
<b><span style="font-size: large;">1.3.2 Parametrização do ADCD
</span></b><br />
<br />
Como essa instalação é baseado em um mainframe, temos que saber seus parâmetros e definições para configurar as Hercules de acordo com as especificações de dispositivos e comportamento do ADCD. A este respeito, a web http://dtsc.dfw.ibm.com/MVSDS/'HTTPD2.ADCD.GLOBAL.HTML(READM110) 'dá-nos algumas pistas, mas fará um resumo aqui:
<br />
<br />
<b><span style="font-size: large;">Endereços dos Dispositivos:
</span></b><br />
<br />
- Endereços de Disco: 0A80 para 0A9F<br />
- Terminal Endereço: 0700 para 071F e 0900 a 091F <br />
- Endereços de fita: 0500 para 050F e 0580 a 058F <br />
- Endereços TCP CTC-comunicações / IP: 0E20 para 0E22 <br />
- Disco IPL: 0A80<br />
- Disco IODF e Catálogo Master: 0A82
<br />
<br />
Parâmetros de carga:
<br />
<pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>+----+-----------------------------------------------------------------------------------+
| CS | CLPA and cold start of JES2. Base z/OS system functions i.e. no CICS, DB2, WAS |
+----+-----------------------------------------------------------------------------------+
| 00 | Warm start of JES2. Base z/OS system functions i.e. no CICS, DB2, IMS, WAS, etc. |
+----+-----------------------------------------------------------------------------------+
| WS | Warm start of JES2. Base z/OS system functions i.e. no CICS, DB2, IMS, WAS, etc. |
+----+-----------------------------------------------------------------------------------+
| DC | CLPA, brings in CICS LPA modules, cold start of JES2, starts up DB2 and CICS. |
+----+-----------------------------------------------------------------------------------+
| DB | Warmstart of JES2 and starts the DB2 and CICS. |
+----+-----------------------------------------------------------------------------------+
| DI | CLPA and cold start of JES2 and loads the IMS Libraries. IMS manually started. |
+----+-----------------------------------------------------------------------------------+
| CC | CLPA and cold start of JES2, loads the CICS Libraries, starts up CICS, no DB2. |
+----+-----------------------------------------------------------------------------------+
| CW | Warm start of JES2, and starts up CICS. |
+----+-----------------------------------------------------------------------------------+
| 2C | CLPA, cold start of JES2, starts up DB2, no CICS. |
+----+-----------------------------------------------------------------------------------+
| 2W | Warm start of JES2, starts up DB2, no CICS. |
+----+-----------------------------------------------------------------------------------+
| IC | CLPA and cold start of JES2 and load the IMS, start IMS, no DB2 or CICS. |
+----+-----------------------------------------------------------------------------------+
| IW | Warm start of JES2 start IMS, no DB2 or CICS. |
+----+-----------------------------------------------------------------------------------+
| AC | CLPA and cold start of JES2 load IMS and CICS libraries, start IMS,DB2,and CICS. |
+----+-----------------------------------------------------------------------------------+
| AW | Warm start of JES2. start IMS, DB/2, and CICS. |
+----+-----------------------------------------------------------------------------------+
| BC | CLPA and cold start of JES2, load WAS libraries, WAS is manually started |
+----+-----------------------------------------------------------------------------------+
| BW | Warm start of JES2. WAS is manually started. |
+----+-----------------------------------------------------------------------------------+
| 99 | Points to IODF99 for IPL on MP3000. |
+----+-----------------------------------------------------------------------------------+</code></pre>
O LOADER PARAMETER dá muita informação dE IPL a partir de mainframe e é um parâmetro necessário para O z/OS. O parâmetro tem a seguinte estrutura:
<br />
<pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>+------+-----------------------------------------------------------------------+
| AAAA | Direção do disco onde reside o IODF |
+------+-----------------------------------------------------------------------+
| BB | Membro de LOAD(BB) dentro da SYS1.IPLPARM parametrizara nossa arraque |
+------+-----------------------------------------------------------------------+
| C | Parâmetro de mensagens adicionais (M é "mensagem") |
+------+-----------------------------------------------------------------------+
| D | Nucleo alternativo quando falha a carga do nucleo primário |
+------+-----------------------------------------------------------------------+</code></pre>
Portanto, LOAD PARAMETER será 0A82XXM1 onde XX representa o topo da lista. Por exemplo, LOADPARM 0A82CSM1 irá pesquisar o IODF no disco no 0A82, o sistema inicializa em modo de cold start (sem CICS, DB2, etc.), deixando mensagens descritivas durante a inicialização e é o núcleo alternativo NUCLEUS1 se o primário falhar. Na verdade, primeiro z/OS para executar, você precisa para começar bem, para fazer uma memória limpar, SPOOL, etc.
<br />
<br />
<b><span style="font-size: large;">1.3.3 - Instalação do z/OS e configuração final
</span></b><br />
<br />
A instalação, uma vez feito o download do z/OS de um ambiente P2P é tão simples como criar em sua unidade de disco C: uma pasta chamada ZOS110 e queimá-la com CCKD 26 arquivos de extensão. Cada arquivo é um modelo IBM 3390 3, 2,8 GB de capacidade líquida DISC, só virou-se para um utilitário especial de disco real em um arquivo, assim como você faria no comando DD ou Linux como se torna DVD para o formato ISO. Meios compactados CCKD Contagem chave de dados, que é o formato de arquivo para -não controla setores endereçáveis, tais como os PCS e é comprimido, porque caso contrário, cada arquivo ocuparia quase 3 GB, o que tornaria as nossas instalações ocupadas muito bonito o que mantém até hoje. É comprimido não nos preocupa porque Hercules tem um driver que pode trabalhar com esses volumes compactados.
<br />
<pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code> +-------------+-------------------------------------------------------------------+
| JARES1.CCKD | Disco Residente IPL |
+-------------+-------------------------------------------------------------------+
| JARES2.CCKD | Residente |
+-------------+-------------------------------------------------------------------+
| JASYS1.CCKD | Master Catalog, IODF, configuracões e parametrizações |
+-------------+-------------------------------------------------------------------+
| JAUSS1.CCKD | Unix System Services , arquivos ZFS e HFS de Unix |
+-------------+-------------------------------------------------------------------+
| JAPRD1.CCKD | SMP/E: Produtos instalados |
+-------------+-------------------------------------------------------------------+
| JAPRD2.CCKD | SMP/E: Produtos instalados |
+-------------+-------------------------------------------------------------------+
| JAPRD3.CCKD | SMP/E: Produtos instalados |
+-------------+-------------------------------------------------------------------+
| JAPRD4.CCKD | SMP/E: Produtos instalados |
+-------------+-------------------------------------------------------------------+
| JADIS1.CCKD | SMP/E: Biblitoeca de distribuição |
+-------------+-------------------------------------------------------------------+
| JADIS2.CCKD | SMP/E: Biblitoeca de distribuição |
+-------------+-------------------------------------------------------------------+
| JADIS3.CCKD | SMP/E: Biblitoeca de distribuição |
+-------------+-------------------------------------------------------------------+
| JADIS4.CCKD | SMP/E: Biblitoeca de distribuição |
+-------------+-------------------------------------------------------------------+
| JADIS5.CCKD | SMP/E: Biblitoeca de distribuição |
+-------------+-------------------------------------------------------------------+
| JADIS6.CCKD | SMP/E: Biblitoeca de distribuição |
+-------------+-------------------------------------------------------------------+
| JADB81.CCKD | DB2 Versão 8 |
+-------------+-------------------------------------------------------------------+
| JADB82.CCKD | DB2 Versão 8 |
+-------------+-------------------------------------------------------------------+
| JADB83.CCKD | DB2 Versão 8 |
+-------------+-------------------------------------------------------------------+
| JADB84.CCKD | DB2 Versão 8 |
+-------------+-------------------------------------------------------------------+
| JADB91.CCKD | DB2 Versão 9 |
+-------------+-------------------------------------------------------------------+
| JADB92.CCKD | DB2 Versão 9 |
+-------------+-------------------------------------------------------------------+
| JACIC1.CCKD | Sistema Transaccional CICS |
+-------------+-------------------------------------------------------------------+
| JAIMS1.CCKD | Sistema Transaccional IMS |
+-------------+-------------------------------------------------------------------+
| JAWAS1.CCKD | Produtos WebSphere |
+-------------+-------------------------------------------------------------------+
| JAWAS2.CCKD | Produtos WebSphere |
+-------------+-------------------------------------------------------------------+
| JAWAS3.CCKD | Produtos WebSphere |
+-------------+-------------------------------------------------------------------+
| SARES1.CCKD | Stand Alone Rescue (Recuperação em caso de falha grave |
+-------------+-------------------------------------------------------------------+
</code></pre>As imagens são desse jeito no Windows
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQ8MUUAzY3Drb1ve5NJwbWE4wl6CNDEq70RHGbisoQagFbjjXFGgXqTY_9QpzXfthoNXxUpsl4la5b1khUF5X3jvrDHFyl1RX0Hz3ZqeGROAjy2nyDo7E5tjZkxZia8O9jEQXz_G-bVjI/s1600/zos1.jpg" imageanchor="1"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQ8MUUAzY3Drb1ve5NJwbWE4wl6CNDEq70RHGbisoQagFbjjXFGgXqTY_9QpzXfthoNXxUpsl4la5b1khUF5X3jvrDHFyl1RX0Hz3ZqeGROAjy2nyDo7E5tjZkxZia8O9jEQXz_G-bVjI/s1600/zos1.jpg" /></a>
<br />
<br />
Com esta lista, de acordo com a configuração de endereços de disco e terminais, que são capazes de gerar o arquivo de configuração que é então utilizado pelo Hercules, o chamado hercules.cnf, que terá o seguinte conteúdo: <pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code># ---------------------------------------------------------------------------------------
# Hercules Emulator Control file...
# Description:
# MaxShutdownSecs: 15
# ---------------------------------------------------------------------------------------
#
# Fichero de Configuracion para Hercules & IBM ADCD z/OS 1.10
#
CPUSERIAL 123456 # Numero de Serie CPU
MODEL 603 # Modelo de maquina
CPUMODEL 2094 # Tipo de maquina – un z9 EC –
MAINSIZE 1024 # Memoria Principal en Megabytes – 1 GB de RAM
XPNDSIZE 0 # Memoria Expandida –no se utiliza-
CNSLPORT 23 # Puerto TCP donde conectaran las consolas
NUMCPU 2 # Numero de CPUs (Dual Core 2, QuadCore 4)
TZOFFSET +0100 # Huso Horario (GMT +1 Europa/Madrid)
OSTAILOR OS/390 # Ajuste de Rendimiento para OS/390 o z/OS
PANRATE FAST # Tasa de refresco Hercules
ARCHMODE ESAME # Modo Operacion S/370, ESA/390 o ESAME (64bit)
PGMPRDOS LICENSED # Permiso de ejecución z/OS en Hercules
# ---------------------------------------------------------------------------------------
# Parametro de Arranque IPL
# ---------------------------------------------------------------------------------------
#
LOADPARM 0A82CSM1 # z/OS 1.10
#
# ---------------------------------------------------------------------------------------
# Display Terminals
# ---------------------------------------------------------------------------------------
0700 3270
0701 3270
0702 3270
0703 3270
0704 3270
# ---------------------------------------------------------------------------------------
# DASD Devices
# ---------------------------------------------------------------------------------------
0A80 3390 C:ZOS110\JARES1.CCKD
0A81 3390 C:ZOS110\JARES2.CCKD
0A82 3390 C:ZOS110\JASYS1.CCKD
0A83 3390 C:ZOS110\JAUSS1.CCKD
0A84 3390 C:ZOS110\JAPRD1.CCKD
0A85 3390 C:ZOS110\JAPRD2.CCKD
0A86 3390 C:ZOS110\JAPRD3.CCKD
0A87 3390 C:ZOS110\JAPRD4.CCKD
0A88 3390 C:ZOS110\JADIS1.CCKD
0A89 3390 C:ZOS110\JADIS2.CCKD
0A8A 3390 C:ZOS110\JADIS3.CCKD
0A8B 3390 C:ZOS110\JADIS4.CCKD
0A8C 3390 C:ZOS110\JADIS5.CCKD
0A8D 3390 C:ZOS110\JADIS6.CCKD
0A8E 3390 C:ZOS110\JADB81.CCKD
0A8F 3390 C:ZOS110\JADB82.CCKD
0A90 3390 C:ZOS110\JADB83.CCKD
0A91 3390 C:ZOS110\JADB84.CCKD
0A92 3390 C:ZOS110\JADB91.CCKD
0A93 3390 C:ZOS110\JADB92.CCKD
0A94 3390 C:ZOS110\JACIC1.CCKD
0A95 3390 C:ZOS110\JAIMS1.CCKD
0A96 3390 C:ZOS110\JAWAS1.CCKD
0A97 3390 C:ZOS110\JAWAS2.CCKD
0A98 3390 C:ZOS110\JAWAS3.CCKD
0A99 3390 C:ZOS110\SARES1.CCKD</code></pre>
Coloque este arquivo (hercules.cnf) com as configurações na pasta onde foi instalado o Hercules do seu Windows - se escolheu o assistente de configuração padrão, ele estará em C:\Program Files\Hercules\Hercules 3,07 (32 Bit) - e enquanto os arquivos do ADCD que gravamos na pasta C:\ZOS110, agora vamos rodar o Hercules.
<br />
<br />
<b><span style="font-size: large;">Liberando Acesso nas Imagens</b></span>
<br />
<br />
Antes de começar a rodar temos que tirar da pasta das imagens o acesso de leitura;
<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0XgPnFZ6Ce951puI4rfuhBnL50AsnDd3orQC_nqNL_zh7n25Ra2IofAEamkcVp5Jp9oeLuSJU1_Fjv5Olemlkhhjp1OnUHMOk-wNYI_Bxheyza2m3O0_zb-OvOz7lUYQsxT2SOLXNxy4/s1600/zos1-a.jpg" imageanchor="1"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0XgPnFZ6Ce951puI4rfuhBnL50AsnDd3orQC_nqNL_zh7n25Ra2IofAEamkcVp5Jp9oeLuSJU1_Fjv5Olemlkhhjp1OnUHMOk-wNYI_Bxheyza2m3O0_zb-OvOz7lUYQsxT2SOLXNxy4/s200/zos1-a.jpg" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJKXRxUmGxVfovIn0qMpE9KoVA65xQR2tYzmu10LduiaW8spW4ET2QMF88sB6mfStBdcmRo4Nqljx2O0nKn4MdiIfQDs7Fngb2UHa9TBr59JtKWQkqauC2sWVugsoA9gAHYZRMilvwGkw/s1600/zos1-b.jpg" imageanchor="1"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJKXRxUmGxVfovIn0qMpE9KoVA65xQR2tYzmu10LduiaW8spW4ET2QMF88sB6mfStBdcmRo4Nqljx2O0nKn4MdiIfQDs7Fngb2UHa9TBr59JtKWQkqauC2sWVugsoA9gAHYZRMilvwGkw/s200/zos1-b.jpg" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiTx_p7VviPjOr-3D-iP4can_ShZDtsvJQLo3wbVljJwexLFAGYM9FQbF3-_ho69ZkmX3-W7JU0z247zpovJ4hy89_tC4yOe2jdmET-2gEt8gBegziIlCCzkRhQ3fp5IbHO1u8HuQXHnc/s1600/zos1-c.jpg" imageanchor="1"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiTx_p7VviPjOr-3D-iP4can_ShZDtsvJQLo3wbVljJwexLFAGYM9FQbF3-_ho69ZkmX3-W7JU0z247zpovJ4hy89_tC4yOe2jdmET-2gEt8gBegziIlCCzkRhQ3fp5IbHO1u8HuQXHnc/s200/zos1-c.jpg" /></a>
<br />
<br />
<b><span style="font-size: large;">1.4 Executando o Hércules</span></b><br />
<br />
Agora, nós temos todos os componentes prontos para rodar a primeira vez o Hercules em seu PC. Para fazer isso, vai na pasta onde esta instalado o Hercules e procure pelo arquivo hercules.exe e de dois cliques neste executável. Isto irá abrir uma janela de linha de comando e, igual a uma tela como a figura a seguir:
<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiqdfRT5WX8u6iX18kXAZ83iUJdkXHO3V-VMa1TNpbIm387CXVj5Rl8ozpTPMsIYute70SH6Ogko2_N8w0MUfOPNYpKdEdjm_2MGH7RXRy2FigOvrXRuhpbuC5fhrgD5k_YR_cpOH0BOM/s1600/zos2.jpg" imageanchor="1"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiqdfRT5WX8u6iX18kXAZ83iUJdkXHO3V-VMa1TNpbIm387CXVj5Rl8ozpTPMsIYute70SH6Ogko2_N8w0MUfOPNYpKdEdjm_2MGH7RXRy2FigOvrXRuhpbuC5fhrgD5k_YR_cpOH0BOM/s1600/zos2.jpg" /></a>
<br />
<br />
A Fig. 6: Início da Hercules
<br />
<br />
Se você pressionar a tecla ESC, temos uma representação gráfica do Hercules com todos as imagens e processadores disponiveis:
<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-hHH7u-ul8mkSiOvcdD2-vhY5dt1mbNV2fllbnwdar4dnT_i2ztAmKHQYq6zL_axczQ7VZBmjXV3lsYsmL-EKh6X_r_e5s5OQ9kUo9IKLb5WtWi57H2bt4uRgI3D5YcULdBAq5ittBHo/s1600/zos3.jpg" imageanchor="1"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-hHH7u-ul8mkSiOvcdD2-vhY5dt1mbNV2fllbnwdar4dnT_i2ztAmKHQYq6zL_axczQ7VZBmjXV3lsYsmL-EKh6X_r_e5s5OQ9kUo9IKLb5WtWi57H2bt4uRgI3D5YcULdBAq5ittBHo/s1600/zos3.jpg" /></a>
<br />
<br />
A Fig. 7: Representação gráfica de Hercules
<br />
<br />
Você pode reparar na nossa figura acima, nós temos a lista de dispositivos que definimos. 3270 é o terminal para podermos acessar o Hercules, já os 3390 são discos. Se eles são verdes como todos discos - que é que eles são detectados e estão ativos. Se eles são cinza, isso significa que eles não estão ainda ligadas, tais como terminais de fitas e 3490.
<br />
<br />
<b><span style="font-size: large;">1.4.1 Conectando a Console Master
</span></b><br />
<br />
Como acontece em instalações de mainframe de grandes, precisamos de um ou vários terminais 3270 que se tornem a nossa console do sistema direto (ou Console Master), onde vamos dar os comandos para z/OS durante a inicialização. Além disso, precisamos também nos conectar com a TSO, CICS, etc. Portanto, temos que ter um/dois emuladores de telnet abertos e configurados para o nosso Hercules. Para fazer isso, vamos vamos usar o emulador PW3270 que é um emulador gratis - <a href="https://softwarepublico.gov.br/social/pw3270/">Clique Aqui</a>
<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZUQJU4EDwXrMFqRx-jgwFxzal2DInqc6gypJQHwDLj9I110Xt28BEMADGfq0m3oyXenoBuZqAQui9C3TlHuFlHIurOFK2tvp_Y6wrQ9doBxqZp8KHqt4O9ip7nQlbJwJOdPdWVKA7oZQ/s1600/hercules_install_14.jpg" imageanchor="1"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZUQJU4EDwXrMFqRx-jgwFxzal2DInqc6gypJQHwDLj9I110Xt28BEMADGfq0m3oyXenoBuZqAQui9C3TlHuFlHIurOFK2tvp_Y6wrQ9doBxqZp8KHqt4O9ip7nQlbJwJOdPdWVKA7oZQ/s640/hercules_install_14.jpg" /></a>
<br />
<br />
<b><span style="font-size: large;">1.5 - Iniciando o IPL no z/OS 1.10
</span></b><br />
<br />
Depois de instalado o emulador de telnet, configurado e conectado no nosso Hercules chegou o momento de iniciar o z/OS, temos de ir para a janela de execução do Hércules, para fazer a inicialização do disco de IPL z/OS, que é o JARES1 que tem o endereço 0A80. Assim, você pode fazer o IPL de duas maneiras: a partir da representação gráfica do Hercules ou digitando IPL 0A80 na console do Hercules:
<br />
<br />
1 - Pelo Modo Gráfico: Pressione a L (IPL), em seguida, pressione G (o endereço 0A80)
<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1U37BAYXFv5zG85NAmUjd2M0zSTJtTbIbdyEd5BNGedtPCGmAqEwQC5PAj1Mb5iQCV_lfhfPJSFuKMo6x4ipUsDaUUznL_DJERtJwIJgT4fhzrvUCXm9g8LHilpS8ALIqkANuuAGB2qE/s1600/hercules3.jpg" imageanchor="1"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1U37BAYXFv5zG85NAmUjd2M0zSTJtTbIbdyEd5BNGedtPCGmAqEwQC5PAj1Mb5iQCV_lfhfPJSFuKMo6x4ipUsDaUUznL_DJERtJwIJgT4fhzrvUCXm9g8LHilpS8ALIqkANuuAGB2qE/s1600/hercules3.jpg" /></a>
<br />
<br />
Fig. 13: A carga do z/OS a partir da representação gráfica
<br />
<br />
NOTA: No Hercules observe em Peripherals onde esta o disco 0A80 esta na Unidade G - depois de ter clicado L (ipL) clique G que o IPL será iniciado neste endereço.
<br />
<br />
2 - Pelo Modo Console: escreva na tela de comandos da console do Hercules o comando IPL 0a80 e pressione Enter.
<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQ34Gu2UW6A-8TLHsIO9rbXzJYm02a8RVcIgPEBlCQsIPPL47huZW-EhAob4nQWGh0_du4yuF30L3WligJErN94fNghSrr0wt-i2c_NHpZDERgE2DQhq7aB85lT5UqiLsojF-GFjBsDfg/s1600/hercules4.jpg" imageanchor="1"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQ34Gu2UW6A-8TLHsIO9rbXzJYm02a8RVcIgPEBlCQsIPPL47huZW-EhAob4nQWGh0_du4yuF30L3WligJErN94fNghSrr0wt-i2c_NHpZDERgE2DQhq7aB85lT5UqiLsojF-GFjBsDfg/s1600/hercules4.jpg" /></a>
<br />
<br />
Fig. 14: Carregando o z/OS a partir do console
<br />
<br />
Se nos concentrarmos em nossa sessão de 3270 do endereço 700, (se você abriu dois observe que uma delas você recebera mensagens - esta será a console master) que deve começar a ver mensagens.
<br />
<br />
<span style="font-size: large;"><b>1.5.1 INITIALIZATION SYSPLEX
</b></span><br />
<br />
Como é a primeira vez que você esta rodando o z/OS, você vai receber uma mensagem no console da seguinte forma:
<br />
<br />
<pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>IXC414I CANNOT JOIN SYSPLEX ADCDPL WHICH IS RUNNING IN MONOPLEX MODE: CONFIGURA
TION REQUIREMENT
IXC404I SYSTEM(S) ACTIVE OR IPLING: ADCD
IXC420D REPLY I TO INITIALIZE SYSPLEX ADCDPL, OR R TO REINITIALIZE XCF.</code></pre>
Isto porque inicializamos pela primeira vez um chamado SYSPLEX ADCDPL, responda na console com o comando <pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>R 00, R</code></pre>o I (Inicializar). E continuará a implementação do sistema, como de costume. Isso só pode ser feito uma vez que temos os seguintes tempos e nos pediu para não inicializar nada.
<br />
<br />
<span style="font-size: large;"><b>1.5.2 - Carga do z/OS
</b></span><br />
<br />
Uma vez passado o NIP, o texto deve mover-se à turquesa verde e o console começará a mostrar um monte de mensagens informativas e de carga dos subsistemas. Mensagens têm sempre um código de mensagem e texto abaixo. A cor das mensagens é também importante, uma vez que terá um ou outro tratamento com base na mesma:<br /><br />
- <b>VERDE</b>: Estas são mensagens informativas. Não há necessidade de atenção.<br />
- <b>Branco</b>: Eles são mensagens de cuidado, para que o operador deve prestar atenção a fazer o que lhes é dado (responder a uma pergunta, etc.).<br />
- <b>ROJO</b>: São mensagens de advertência severa de erro possível. Essas mensagens têm um código que terá que olhar no manual do z/OS para sua origem e as ações a tomar para resolver o aviso ou erro.
<br />
<br />
O processo de carregamento z/OS, colocara nesta ordem os seguintes subsistemas:
<br />
<br />
- WLM: Workload Manager: Estas mensagens são reconhecidos pelo código IWMXXXX. Na verdade, você recebe uma mensagem de aviso em vermelho dizendo que, na ausência de processamento de políticas predefinidas, que usará uma política padrão.
<br />
- JES2: Job Entry Subsystem. Reconhecemos isso porque faz de COLD-START e deixa as mensagens em branco com os códigos começando com $HASPXXX <br />
- VTAM: Virtual Telecommunication Access Mode: O sistema de comunicações, as mensagens começando com o código ISTXXXX <br />
- ZFS: O sistema Unix: Suas mensagens começando com o código BPXXXXX <br />
- TSO: Time Sharing Option. São as mensagens iniciadas com IKTXXXX do sistema. Na verdade, se olharmos para estes dois, já podemos entrar no nosso máquina:
<br />
<br />
<pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>$HASP373 TSO STARTED
IEF403I TSO – STARTED – TIME=11.56.33
IKT007I TCAS ACCEPTING LOGONS</code></pre>
<br />
<span style="font-size: large;"><b>1.5.3 - Acessando o TSO</b></span><br />
<br />
Na figura da imagem abaixo, esta escrito LOGON IBMUSER, temos que dar este comando para acessar o TSO com este usuário - nesta versão de z/OS temos esses usuários disponíveis para acessar ;
<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSN7UoVBdeL1pgnqiz4ZYJ7OPZIFaEUnUTFkv7rfcKsJN-wh2voEFRZOBcB5ZVjycF8BiLJyRMDhVKxCATIHvcYGZ1XccOuMt_EaxWtmttNIqcHUnZAS8id6nINB6ZWp6yr2PIj4WVciY/s1600/zos5.jpg" imageanchor="1"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSN7UoVBdeL1pgnqiz4ZYJ7OPZIFaEUnUTFkv7rfcKsJN-wh2voEFRZOBcB5ZVjycF8BiLJyRMDhVKxCATIHvcYGZ1XccOuMt_EaxWtmttNIqcHUnZAS8id6nINB6ZWp6yr2PIj4WVciY/s1600/zos5.jpg" /></a>
<br />
<br />
Fig. 15: Logo de entrada do sistema z/OS desde terminal 701
<br />
<br />
Para facilitar esta abaixo os usuários com as senhas para o z/OS 1.10
<pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>+------------------+-----------------+
| Userid | Password |
+------------------+-----------------+
| ADCDMST | SYS1 or ADCDMST |
| IBMUSER | SYS1 or IBMUSER |
| SYSADM | SYS1 or SYSADM |
| SYSOPR | SYS1 or SYSOPR |
| ADCDA - ADCDZ | TEST |
| WEBADM | WEBADM |
| OPEN1 thru OPEN3 | SYS1 |
| ZOSMFAD | ZOSMFAD |
+------------------+-----------------+</code></pre>
A seguinte tela vai nos pedir a senha do usuário IBMUSER
<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVbuVcSlHuc8M7nNxxSSNarRNbBkwViZyfp-xhBudmrJYkfmzbIK5_rHgsYjUtu3oRiWcpFQcyXk1r6cRiPonPjAn9NNrz4538w8ro-AVFeGhxHI2Fr54KtgT1zQapt7crNy157Lj_mD8/s1600/zos6.jpg" imageanchor="1"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVbuVcSlHuc8M7nNxxSSNarRNbBkwViZyfp-xhBudmrJYkfmzbIK5_rHgsYjUtu3oRiWcpFQcyXk1r6cRiPonPjAn9NNrz4538w8ro-AVFeGhxHI2Fr54KtgT1zQapt7crNy157Lj_mD8/s1600/zos6.jpg" /></a>
<br />
<br />
Fig. 16: LOGON IBMUSER
<br />
<br />
Digite a senha e tecle enter, estaremos entrando a sessão:
<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJ-xFpaWqRhpKAJICJIt3VyLM1xFXJrsGwhgFmZlb2AI4alYFJBeDTHXNZVo5vlU8PB1u4vH_M1TAhZ3x4Z67jx96uqW0qOXeBLINLXCZvaK3KMibH7HHGwmtoqjq1sG5Yo-PVTNLNRjU/s1600/zos7.jpg" imageanchor="1"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJ-xFpaWqRhpKAJICJIt3VyLM1xFXJrsGwhgFmZlb2AI4alYFJBeDTHXNZVo5vlU8PB1u4vH_M1TAhZ3x4Z67jx96uqW0qOXeBLINLXCZvaK3KMibH7HHGwmtoqjq1sG5Yo-PVTNLNRjU/s1600/zos7.jpg" /></a>
<br />
<br />
Fig. 17: mensagem de boas vindas. Pressione Enter
<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSXtz4djf0wDjoXcr9Y0cts8z2lJfAohndWBO9AGGQGIfnKmotGL27VcTIVOxBpOGCPpSVk1Am_-O4MMMinSh98WWH3BWhrsFyPIpGYH6OLanpCkYe0UDsQGmhzSpD1CDIZ4jp-8tm8XM/s1600/zos8.jpg" imageanchor="1"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSXtz4djf0wDjoXcr9Y0cts8z2lJfAohndWBO9AGGQGIfnKmotGL27VcTIVOxBpOGCPpSVk1Am_-O4MMMinSh98WWH3BWhrsFyPIpGYH6OLanpCkYe0UDsQGmhzSpD1CDIZ4jp-8tm8XM/s1600/zos8.jpg" /></a>
<br />
<br />
Fig. 18: Menu principal ISPF
<br />
<br />
<span style="font-size: large;"><b>1.6 Fechando o z/OS
</b></span><br />
<br />
É importante que quando chegarmos a usar o z / OS, vamos fechar de uma forma ordenada. Não devemos esquecer que os processos de ter partes memória e disco partes, de modo que desligar "da maneira mais difícil" pode causar perda de dados. Portanto, para desligar o sistema de uma forma ordenada, nós siga estes passos:
<br />
<br />
<b><span style="font-size: large;">1.6.1 Saindo do TSO
</span></b><br />
<br />
Se você clicar repetidamente em PF3, vamos deixar o TSO. Se você tiver modificado os dados, o ISPF nos perguntar o que fazer com o tempo, caso em que temos de eliminar ou salvar, como vemos.
<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTYJcjcsYSqVGE2HC7_lzX7kzUbxngoOBKO9yPjLLJ5vA7fiK4bLAqs5MYyGTbvzV4wrcWo0YqIOSFS6gNp88oLxMKRmrRHwH60FSX0PBiTPmRwg16UqxilBTU41u2gZJSeZigZKUo1sQ/s1600/zos9.jpg" imageanchor="1"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTYJcjcsYSqVGE2HC7_lzX7kzUbxngoOBKO9yPjLLJ5vA7fiK4bLAqs5MYyGTbvzV4wrcWo0YqIOSFS6gNp88oLxMKRmrRHwH60FSX0PBiTPmRwg16UqxilBTU41u2gZJSeZigZKUo1sQ/s1600/zos9.jpg" /></a>
<br />
<br />
Fig. 19: Saindo do TSO
<br />
<br />
Uma vez respondidas com a opção 2 (enter), vamos encontrar o prompt READY. Digite LOGOFF e tecle enter para sair.
<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsuqMo17vIa6VpH5MiuAlNWmc4M_lLqUSbfp-Mt0l0t_qtAkMPYGQoxXByC5tc6RJhrVYniylwg22PvuberXyZKUZ7KTxGJhy5Xv2CqnJmWJ_IvzHwQLcTL-MeC9a5J6W_9b7DU7ZTEA0/s1600/zos10.jpg" imageanchor="1"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsuqMo17vIa6VpH5MiuAlNWmc4M_lLqUSbfp-Mt0l0t_qtAkMPYGQoxXByC5tc6RJhrVYniylwg22PvuberXyZKUZ7KTxGJhy5Xv2CqnJmWJ_IvzHwQLcTL-MeC9a5J6W_9b7DU7ZTEA0/s1600/zos10.jpg" /></a>
<br />
<br />
Fig. 20: TSO READY - Digite logoff para sair;
<br />
<br />
E retornando para o logotipo do z/OS Figura 15. Neste momento, poderíamos fechar sem problema a sessão do TSO.
<br />
<br />
<b><span style="font-size: large;">1.6.1 Parando o z/OS
</span></b><br />
<br />
A ideia agora é começar a fechar um por um todos os processos que o sistema, mas, felizmente, nas versões do ADCD z/OS já tem um procedimento que para tirar os aplicativos rapidamente, chamado de SHUTALL. Assim, digitando na console S SHUTALL (tecle enter será retirada do ar vários aplicativos), o sistema começará a fechar em ordem, mas terá que responder a algumas pendencias da console:
<br />
<pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code> 1 *01.47.41 *IWM048E WLM RUNNING IN GOAL MODE WITH THE DEFAULT
2 * POLICY
IEE612I CN=L700 DEVNUM=0700 SYS=ADCD
s SHUTALL
IEE163I MODE= RD</code></pre>
Como você pode ver, o número da pergunta é 02. Portanto, devemos responder o seguinte:
R 03, Y
<br />
<pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code> *01.47.41 *IWM048E WLM RUNNING IN GOAL MODE WITH THE DEFAULT
* POLICY
*01.51.50 *02 BPXI078D STOP OF ZFS REQUESTED. REPLY 'Y' TO
* PROCEED. ANY OTHER REPLY WILL CANCEL THIS STOP.
*01.51.54 *BPXI032E FORK SERVICE HAS BEEN SHUTDOWN SUCCESSFULLY.
*ISSUE F BPXOINIT,RESTART=FORKS TO RESTART FORK SERVICE.
- 01.51.54 STC00614 IEF404I BPXAS - ENDED - TIME=01.51.54
- 01.51.54 STC00611 IEF404I BPXAS - ENDED - TIME=01.51.54
- 01.51.54 STC00615 IEF404I BPXAS - ENDED - TIME=01.51.54
- 01.51.54 STC00609 IRRB005I (#) RACF SUBSYSTEM TERMINATION IS COMPLETE.
- 01.51.55 IEF404I RACF - ENDED - TIME=01.51.55
- 01.51.55 IEF352I ADDRESS SPACE UNAVAILABLE
IEE612I CN=L700 DEVNUM=0700 SYS=ADCD
02,y
IEE163I MODE= RD</code></pre>
Fig. 21: Respondendo a pergunta do z/OS
<br />
<br />
<b><span style="font-size: large;">Retirando o DLF
</span></b><br />
<br />
Na console de esses dois comandos para tirar do ar o DLF;
<br />
<pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>F DLF,MODE=D
P DLF</code></pre>
Retirando o Jes2
Na tela da console de o comando $pjes2
<br />
<pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code> *01.55.28 *IWM048E WLM RUNNING IN GOAL MODE WITH THE DEFAULT
* POLICY
*02.03.30 *BPXI032E FORK SERVICE HAS BEEN SHUTDOWN SUCCESSFULLY.
*ISSUE F BPXOINIT,RESTART=FORKS TO RESTART FORK SERVICE.
- 02.03.54 d a,l
02.03.54 IEE114I 02.03.54 2015.310 ACTIVITY 804 C
JOBS M/S TS USERS SYSAS INITS ACTIVE/MAX VTAM OAS
00000 00001 00000 00030 00010 00000/00000 00002
JES2 JES2 IEFPROC NSW S
IEE612I CN=L700 DEVNUM=0700 SYS=ADCD
$pjes2
IEE163I MODE= RD</code></pre>Fig. 22: Retirando o Jes2 do ar
<br /><br />
Quando na console der o comando que o Jes2 saiu do ar
<br />
<pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code> 00 02.04.41 $HASP085 JES2 TERMINATION COMPLETE
- 02.04.41 IEF404I JES2 - ENDED - TIME=02.04.41</code></pre>
De o comando Z EOD (EOD – End Of Day) para fechar o z / OS
<br />
<pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code> *01.55.28 *IWM048E WLM RUNNING IN GOAL MODE WITH THE DEFAULT
* POLICY
*02.03.30 *BPXI032E FORK SERVICE HAS BEEN SHUTDOWN SUCCESSFULLY.
*ISSUE F BPXOINIT,RESTART=FORKS TO RESTART FORK SERVICE.
02.04.34 $HASP314 INIT 7 DRAINED ******** C=ABCD
- 02.04.34 STC00634 IEF404I INIT - ENDED - TIME=02.04.34
- 02.04.34 STC00635 IEF404I INIT - ENDED - TIME=02.04.34
02.04.34 $HASP314 INIT 8 DRAINED ******** C=ABCD
02.04.34 $HASP314 INIT 9 DRAINED ******** C=ABCD
02.04.34 $HASP314 INIT 10 DRAINED ******** C=ABCD
02.04.34 CNZ4213I SYSLOG PROCESSING HAS ENDED
*02.04.36 *IEE037D LOG NOT ACTIVE
- 02.04.36 IXZ0002I CONNECTION TO JESXCF COMPONENT DISABLED,
- GROUP N1 MEMBER N1$SYS1
02.04.36 $HASP9085 JES2 MONITOR ADDRESS SPACE STOPPED FOR JES2
- 02.04.36 IEF404I IEESYSAS - ENDED - TIME=02.04.36
- 02.04.36 IXZ0002I CONNECTION TO JESXCF COMPONENT DISABLED,
- GROUP SYSJ2$XD MEMBER N1$SYS1$$$$$$$$$
00 02.04.41 $HASP085 JES2 TERMINATION COMPLETE
- 02.04.41 IEF404I JES2 - ENDED - TIME=02.04.41
IEE612I CN=L700 DEVNUM=0700 SYS=ADCD
z eod
IEE163I MODE= RD</code></pre>Fig. 23: Jes2 fora do ar
<br /><br />
Depois de o comando QUIESCE
<br />
<pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code> *01.55.28 *IWM048E WLM RUNNING IN GOAL MODE WITH THE DEFAULT
* POLICY
*02.03.30 *BPXI032E FORK SERVICE HAS BEEN SHUTDOWN SUCCESSFULLY.
*ISSUE F BPXOINIT,RESTART=FORKS TO RESTART FORK SERVICE.
02.04.34 $HASP314 INIT 10 DRAINED ******** C=ABCD
02.04.34 CNZ4213I SYSLOG PROCESSING HAS ENDED
*02.04.36 *IEE037D LOG NOT ACTIVE
- 02.04.36 IXZ0002I CONNECTION TO JESXCF COMPONENT DISABLED,
- GROUP N1 MEMBER N1$SYS1
02.04.36 $HASP9085 JES2 MONITOR ADDRESS SPACE STOPPED FOR JES2
- 02.04.36 IEF404I IEESYSAS - ENDED - TIME=02.04.36
- 02.04.36 IXZ0002I CONNECTION TO JESXCF COMPONENT DISABLED,
- GROUP SYSJ2$XD MEMBER N1$SYS1$$$$$$$$$
02.04.41 $HASP085 JES2 TERMINATION COMPLETE
- 02.04.41 IEF404I JES2 - ENDED - TIME=02.04.41
00- 02.06.42 z eod
02.06.42 IEE334I HALT EOD SUCCESSFUL
*02.06.42 *IEE362A SMF ENTER DUMP FOR SYS1.MAN1 ON ZASYS1
02.06.42 IEE360I SMF NOW RECORDING ON SYS1.MAN2 ON ZASYS1
TIME=02.06.42
IEE612I CN=L700 DEVNUM=0700 SYS=ADCD
QUIESCE
IEE163I MODE= RD</code></pre>Fig. 24: Comando quiesce - terminando a sessão no nosso hercules
<br /><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihLNOGbuUmc7RxPntYj8aVHp1Q7rYyWSw-juziY3HxYbmpMOl37-NAEh3ZGyVCMxg5fLEk_qd6IVEjd5fYFKIyVaZGX2pqSeRfdncZhv5CStrBF-elGxhu1HOC_JFS5mEy0UlqDlYYvBs/s1600/hercules5.jpg" imageanchor="1"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihLNOGbuUmc7RxPntYj8aVHp1Q7rYyWSw-juziY3HxYbmpMOl37-NAEh3ZGyVCMxg5fLEk_qd6IVEjd5fYFKIyVaZGX2pqSeRfdncZhv5CStrBF-elGxhu1HOC_JFS5mEy0UlqDlYYvBs/s1600/hercules5.jpg" /></a>
<br /><br />
Fig. 25: Fechando o Hercules
<br /><br />
<br /><br />
Fig. 22: Hercules parada completa.
<br /><br />
<span style="font-size: large;"><b>1.6.2 Encerramento do Hercules</b></span><br />
<br /><br />
Agora sim podemos sair do Hercules sem comprometer as imagens do z/OS, na console do Hercules tecle ESC vai cair na tela gráfica dos discos, a partir de Hercules ou plotagem W (Po W er) e, em seguida, Y para confirmar, e Hercules irá fechar - se clicar no X do canto superior direito também podera ser feito sem nenhum problema
<br /><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuPeVBTabLT6XAwsayJ4M8dQuPDyr6lfmVif8vA3VfgJi5I4QrXGLYr3n-Sc44EvJmdHYBMyeTeaoJe3hgx2RVCxnxhEACCjf71RIkwOfXlRgRZNgvFYuditoJfIBrbKSWarpZeQ9H8Ls/s1600/hercules_saindo_1.jpg" imageanchor="1"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuPeVBTabLT6XAwsayJ4M8dQuPDyr6lfmVif8vA3VfgJi5I4QrXGLYr3n-Sc44EvJmdHYBMyeTeaoJe3hgx2RVCxnxhEACCjf71RIkwOfXlRgRZNgvFYuditoJfIBrbKSWarpZeQ9H8Ls/s640/hercules_saindo_1.jpg" /></a>
<br /><br />
Depois de sair esta tela some em instantes;
<br /><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglR_YbXt25PNf6C0Tis14iNRR9SR7HP417X7zPyf3Bz479j1OjnwFp1Vf8nynDHWGadaZ-kokZIvWT4CPtxsAYvlvwSJf8bHC3yc7QjcWVqjnKxGm8b8JgzhZVMLXclK6v5WyRaab7Y4Y/s1600/hercules_saindo_2.jpg" imageanchor="1"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglR_YbXt25PNf6C0Tis14iNRR9SR7HP417X7zPyf3Bz479j1OjnwFp1Vf8nynDHWGadaZ-kokZIvWT4CPtxsAYvlvwSJf8bHC3yc7QjcWVqjnKxGm8b8JgzhZVMLXclK6v5WyRaab7Y4Y/s640/hercules_saindo_2.jpg" /></a>
<br /><br />
Espero que este post ajudou a fazer um começo e um desligamento ordenado. Nas seguintes entradas, eu vou buscá-la preenchida com TCP / IP e outras configurações. - <a href="http://mainframecorner.com/?p=503">Clique Aqui</a>Claudemar Martins de Sáhttp://www.blogger.com/profile/05069108300402187406noreply@blogger.com17tag:blogger.com,1999:blog-8798968522614237503.post-27944704279954610082015-11-04T13:06:00.002-03:002015-11-04T13:12:49.609-03:00Criando um Programa Cobol pelo TSO - MainframeEste post explica como criar e compilar um programa COBOL no TSO.
<br />
<br />
<b><span style="font-size: large;">Introdução</span></b><br />
<br />
Primeiro de tudo, você deve entender como um programa COBOL é compilado. Nós temos uma fonte, rodamos um job que copila e dai temos um objeto ou executável. Uma vez que o programa objeto, podemos executar ele que mostrara um resultado obtido.
<br />
<br />
Então, primeiro, temos uma biblioteca onde ele será o nosso arquivo de origem, editar um membro onde a linguagem de programação COBOL. Esta biblioteca é definido como qualquer JCL biblioteca, ou seja, particionado e com bloco fixo de 80.
<br />
<br />
Em segundo lugar, precisamos de ter uma biblioteca onde, uma vez compilado, deixe o programa executável ou objeto resultado da nossa programação. Esta biblioteca, que contém um objeto, NÃO deve ser definido como bloco fixo de 80, mas como U ou indefinido (undefined). Isto é muito importante por causa da não definição da biblioteca, ele não irá funcionar.
<br />
<br />
E, finalmente, precisamos de um JCL para chamar as ferramentas de compilação e montagem, que vai ler o nosso membro de origem COBOL e nos deixar o objeto na biblioteca criada com formato de U, usando as variáveis e parâmetros apropriados.
<br />
<br />
<b><span style="font-size: large;">Criando o programa COBOL (fonte)</span></b>
<br />
<br />
Se você não tiver, nós criamos uma biblioteca particionado e com um formato de registro fixo de 80 caracteres. No nosso exemplo, a chamada ADCD.LIB.JCL. Nesta biblioteca, criamos um membro do chamado OLAMUNDO contendo o seguinte programa (OLÁ MUNDO é o clássico):
<br />
<pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code> File Edit Edit_Settings Menu Utilities Compilers Test Help
EDIT ADCD.LIB.JCL(OLAMUNDO) - 01.05 Columns 00001 00072
****** ***************************** Top of Data ******************************
000001 IDENTIFICATION DIVISION.
000002 PROGRAM-ID. HOLAMUN.
000003 AUTHOR. JAVIER CASTILLA PARA EUSKAL ENCONTER Y MAINFRAMECORNER
000004 INSTALLATION. IBM-ZOS.
000005 DATE-WRITTEN. 13 FEBRERO DE 2013.
000006 DATE-COMPILED.
000007 SECURITY. NONE.
000008 ENVIRONMENT DIVISION.
000009 CONFIGURATION SECTION.
000010 SOURCE-COMPUTER. MIORDENADOR.
000011 OBJECT-COMPUTER. MIORDENADOR.
000012 SPECIAL-NAMES.
000013 DECIMAL-POINT IS COMMA.
000014 DATA DIVISION.
000015 WORKING-STORAGE SECTION.
000016
000017 PROCEDURE DIVISION.
000018 001-MAIN.
000019
000020 DISPLAY "OLA MUNDO - RODAMOS UM PROGRAMA COBOL"
000021 GOBACK.
****** **************************** Bottom of Data ****************************
Command ===> Scroll ===> PAGE
F1=Help F2=Split F3=Exit F5=Rfind F6=Rchange F7=Up
F8=Down F9=Swap F10=Left F11=Right F12=Cancel</code></pre>
<br />
<b><span style="font-size: large;">Criando o objeto de programa
</span></b><br />
<br />
Esta etapa envolve dois pontos: Primeiro, já temos criados a biblioteca de objetos de software com formato de U (não canso de repetir) e em segundo lugar, iniciar o JCL para nos ler o membro cobol fonte, e irá compilar e vai deixar o objeto nos objetos de biblioteca programa.
<br />
<br />
<span style="font-size: large;"><b>Criando objetos de biblioteca
</b></span><br />
<br />
É simples: O JCL abaixo vamos pegar o objeto fonte ADCD.LIB.JCL(OLAMUNDO) e vamos gravar o objeto na ADCD.Z110.VTAMLIB(OLAMUNDO);
<br />
<br />
<b><span style="font-size: large;">Compilando um COBOL</span></b><br />
<br />
Para compilar o programa usamos o seguinte JCL:
<br />
<pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code> File Edit Edit_Settings Menu Utilities Compilers Test Help
EDIT ADCD.LIB.JCL(OLAMUND1) - 01.01 Columns 00001 00072
Command ===> sub Scroll ===> CSR
****** ***************************** Top of Data ******************************
000001 //TSOAD05J JOB 1AD40G12,'IBMUSER',NOTIFY=&SYSUID,
000002 // MSGCLASS=Q,CLASS=A,MSGLEVEL=(1,1),REGION=0M,TIME=(0,7)
000003 //STEP0 EXEC IGYWCLG,PARM.COBOL='LIB,APOST,XREF,MAP,OFFSET'
000004 //STEPLIB DD DSN=ADCD.Z110.VTAMLIB,DISP=SHR
000005 //* --------------------------------------------------------------
000006 //* COMPILAR Y LINKEDITAR HOLAMUN (HOLAMUNDO EUSKAL ENC Y MFCORNER)
000007 //* SYSLIB ES LA LIB. DE COPYS
000008 //* SYSIN ES LA LIB. DE PROGRAMAS FUENTES
000009 //* SYSLMOD ES LA LIB. DE PROGRAMAS OBJETOS O EJECUTABLES
000010 //* --------------------------------------------------------------
000011 //COBOL.SYSIN DD DSN=ADCD.LIB.JCL(OLAMUNDO),DISP=SHR
000012 //LKED.SYSLMOD DD DSN=ADCD.Z110.VTAMLIB(OLAMUNDO),DISP=SHR
000013 /*</code></pre>
Os parâmetros em negrito são as que precisam editar ele não deve trabalhar no nosso exemplo:
<br />
<br />
- <b>COBOL.SYSIN DD</b> é o registro onde irá apontar para o nosso COBOL fonte.
<br />
<br />
- <b>STEPLIB DD</b> é o registro que irá apontar para a biblioteca de objetos.
<br />
<br />
- <b>LKED.SYSLMOD</b> guia DD é onde definimos o objeto membro que é criado resultado da compilação.
<br />
<br />
Uma vez liberado JCL deve terminar Cond.Code 0. Se apenas um outro, tem que olhar para fora para certo se o trabalho tem sido um erro na transcrição do programa e corrigir o programa de origem. Se consultarmos Livreiro ADCD.Z110.VTAMLIB, deve ser um membro criado chamado OLAMUNDO.
<br />
<pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code> File Edit Edit_Settings Menu Utilities Compilers Test Help
EDIT ADCD.LIB.JCL(OLAMUND1) - 01.01 Columns 00001 00072
Command ===> sub Scroll ===> CSR
****** ***************************** Top of Data ******************************
000001 //TSOAD05J JOB 1AD40G12,'IBMUSER',NOTIFY=&SYSUID,
000002 // MSGCLASS=Q,CLASS=A,MSGLEVEL=(1,1),REGION=0M,TIME=(0,7)
000003 //STEP0 EXEC IGYWCLG,PARM.COBOL='LIB,APOST,XREF,MAP,OFFSET'
000004 //STEPLIB DD DSN=ADCD.Z110.VTAMLIB,DISP=SHR
000005 //* --------------------------------------------------------------
000006 //* COMPILAR Y LINKEDITAR HOLAMUN (HOLAMUNDO EUSKAL ENC Y MFCORNER)
000007 //* SYSLIB ES LA LIB. DE COPYS
000008 //* SYSIN ES LA LIB. DE PROGRAMAS FUENTES
000009 //* SYSLMOD ES LA LIB. DE PROGRAMAS OBJETOS O EJECUTABLES
000010 //* --------------------------------------------------------------
000011 //COBOL.SYSIN DD DSN=ADCD.LIB.JCL(OLAMUNDO),DISP=SHR
000012 //LKED.SYSLMOD DD DSN=ADCD.Z110.VTAMLIB(OLAMUNDO),DISP=SHR
000013 /*
000014
000015
IKJ56250I JOB TSOAD05J(JOB00293) SUBMITTED
***</code></pre>
Rodou
<br />
<pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code> 05.47.12 JOB00293 $HASP165 TSOAD05J ENDED AT N1 MAXCC=0 CN(INTERNAL)
*** </code></pre>
<br />
<b><span style="font-size: large;">A execução do programa COBOL
</span></b><br />
<br />
Para executar o programa, basta fazer uma CHAMADA TSO é o membro ao abrigo do programa. No nosso exemplo, o comando seria:
<br />
<pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>TSO CALL 'ADCD.Z110.VTAMLIB(OLAMUNDO)'</code></pre>
Dando o comando no TSO;
<br />
<pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code> Menu Functions Confirm Utilities Help
BROWSE ADCD.LIB.JCL Row 00278 of 00481
Name Prompt Size Created Changed ID
_________ OLAMUND1 *RC=0 23 2008/11/06 2015/11/04 05:32:58 IBMUSER
_________ OLCUTL 23 2008/11/06 2008/11/06 15:55:48 IBMUSER
_________ PDOPMEMO 100 2008/11/06 2008/11/06 15:55:48 IBMUSER
_________ PDOPPGM 83 2008/11/06 2008/11/06 15:55:48 IBMUSER
_________ PDORIMLD 17 2008/11/06 2008/11/06 15:55:48 IBMUSER
_________ PDSE 21 2008/11/06 2008/11/06 15:55:48 IBMUSER
_________ PORTRACF 16 2008/11/06 2008/11/06 15:55:48 IBMUSER
_________ PORTTOOL 305 2008/11/06 2008/11/06 15:55:48 IBMUSER
_________ PROCTEST 7 2008/11/06 2008/11/06 15:55:48 IBMUSER
_________ PROFILE 388 2008/11/06 2008/11/06 15:55:48 IBMUSER
_________ Q80SMHP 35 2008/11/06 2008/11/06 15:55:48 IBMUSER
_________ Q80SMID 65 2008/11/06 2008/11/06 15:55:48 IBMUSER
_________ Q80SMIE 65 2008/11/06 2008/11/06 15:55:48 IBMUSER
_________ Q80SMIG 65 2008/11/06 2008/11/06 15:55:48 IBMUSER
_________ Q80SMIP 65 2008/11/06 2008/11/06 15:55:48 IBMUSER
_________ Q80SMIT 35 2008/11/06 2008/11/06 15:55:48 IBMUSER
_________ Q80SMJV 123 2008/11/06 2008/11/06 15:55:48 IBMUSER
Command ===> tso call 'ADCD.Z110.VTAMLIB(OLAMUNDO)' Scroll ===> PAGE
F1=Help F2=Split F3=Exit F5=Rfind F7=Up F8=Down F9=Swap
F10=Left F11=Right F12=Cancel</code></pre>
Resultado
<br />
<pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code> Menu Functions Confirm Utilities Help
BROWSE ADCD.LIB.JCL Row 00278 of 00481
Name Prompt Size Created Changed ID
_________ OLAMUND1 *RC=0 23 2008/11/06 2015/11/04 05:32:58 IBMUSER
_________ OLCUTL 23 2008/11/06 2008/11/06 15:55:48 IBMUSER
_________ PDOPMEMO 100 2008/11/06 2008/11/06 15:55:48 IBMUSER
_________ PDOPPGM 83 2008/11/06 2008/11/06 15:55:48 IBMUSER
_________ PDORIMLD 17 2008/11/06 2008/11/06 15:55:48 IBMUSER
_________ PDSE 21 2008/11/06 2008/11/06 15:55:48 IBMUSER
_________ PORTRACF 16 2008/11/06 2008/11/06 15:55:48 IBMUSER
_________ PORTTOOL 305 2008/11/06 2008/11/06 15:55:48 IBMUSER
_________ PROCTEST 7 2008/11/06 2008/11/06 15:55:48 IBMUSER
_________ PROFILE 388 2008/11/06 2008/11/06 15:55:48 IBMUSER
_________ Q80SMHP 35 2008/11/06 2008/11/06 15:55:48 IBMUSER
_________ Q80SMID 65 2008/11/06 2008/11/06 15:55:48 IBMUSER
_________ Q80SMIE 65 2008/11/06 2008/11/06 15:55:48 IBMUSER
_________ Q80SMIG 65 2008/11/06 2008/11/06 15:55:48 IBMUSER
_________ Q80SMIP 65 2008/11/06 2008/11/06 15:55:48 IBMUSER
_________ Q80SMIT 35 2008/11/06 2008/11/06 15:55:48 IBMUSE
OLA MUNDO - RODAMOS UM PROGRAMA COBOL
***
</code></pre>
Vamos rodar um jcl para ver o resultado;
<br />
<pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code> File Edit Edit_Settings Menu Utilities Compilers Test Help
EDIT ADCD.LIB.JCL(COBOL003) - 01.06 Columns 00001 00072
Command ===> Scroll ===> CSR
****** ***************************** Top of Data ******************************
000001 //TSOAD05J JOB 1AD40G12,'IBMUSER',NOTIFY=&SYSUID,
000002 // MSGCLASS=Q,CLASS=A,MSGLEVEL=(1,1),REGION=0M,TIME=(0,7)
000003 //* -------------------------------------------
000004 //* RODANDO UM COBOL POR JCL
000005 //* -------------------------------------------
000006 //STEP10 EXEC PGM=OLAMUNDO
000007 //STEPLIB DD DSN=ADCD.Z110.VTAMLIB,DISP=SHR
000008 //SYSPRINT DD SYSOUT=*
000009 /*
000010
000011
000012
000013
000014
000015
000016
000017
000018
000019</code></pre>
Resultado
<br />
<pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code> Display Filter View Print Options Help
-------------------------------------------------------------------------------
SDSF OUTPUT DISPLAY TSOAD05J JOB00185 DSID 2 LINE 0 COLUMNS 02- 81
COMMAND INPUT ===> SCROLL ===> PAGE
********************************* TOP OF DATA **********************************
J E S 2 J O B L O G -- S Y S T E M S Y S 1 -- N
09.20.37 JOB00185 ---- WEDNESDAY, 04 NOV 2015 ----
09.20.37 JOB00185 IRR010I USERID IBMUSER IS ASSIGNED TO THIS JOB.
09.20.37 JOB00185 ICH70001I IBMUSER LAST ACCESS AT 09:12:17 ON WEDNESDAY, NOVE
09.20.37 JOB00185 $HASP373 TSOAD05J STARTED - INIT 1 - CLASS A - SYS SYS1
09.20.37 JOB00185 IEF403I TSOAD05J - STARTED - TIME=09.20.37
09.20.38 JOB00185 IEF404I TSOAD05J - ENDED - TIME=09.20.38
09.20.38 JOB00185 $HASP395 TSOAD05J ENDED
------ JES2 JOB STATISTICS ------
04 NOV 2015 JOB EXECUTION DATE
22 CARDS READ
45 SYSOUT PRINT RECORDS
0 SYSOUT PUNCH RECORDS
2 SYSOUT SPOOL KBYTES
0.00 MINUTES EXECUTION TIME
1 //TSOAD05J JOB 1AD40G12,'IBMUSER',NOTIFY=&SYSUID,
// MSGCLASS=Q,CLASS=A,MSGLEVEL=(1,1),REGION=0M,TIME=(0,7)
//* -------------------------------------------
//* RODANDO UM COBOL POR JCL
//* -------------------------------------------
IEFC653I SUBSTITUTION JCL - 1AD40G12,'IBMUSER',NOTIFY=IBMUSER,MSGCLASS
TIME=(0,7)
2 //STEP10 EXEC PGM=OLAMUNDO
3 //STEPLIB DD DSN=ADCD.Z110.VTAMLIB,DISP=SHR
4 //SYSPRINT DD SYSOUT=*
/*
5 //SYSIN DD * GENERATED STATEMENT
ICH70001I IBMUSER LAST ACCESS AT 09:12:17 ON WEDNESDAY, NOVEMBER 4, 2015
IEF236I ALLOC. FOR TSOAD05J STEP10
IEF237I 0A81 ALLOCATED TO STEPLIB
IEF237I JES2 ALLOCATED TO SYSPRINT
IEF237I JES2 ALLOCATED TO SYSIN
IEF237I JES2 ALLOCATED TO SYSOUT
IEF285I IBMUSER.TSOAD05J.JOB00185.D0000103.? SYSOUT
IEF142I TSOAD05J STEP10 - STEP WAS EXECUTED - COND CODE 0000
IEF285I ADCD.Z110.VTAMLIB KEPT
IEF285I VOL SER NOS= ZARES1.
IEF285I IBMUSER.TSOAD05J.JOB00185.D0000102.? SYSOUT
IEF285I IBMUSER.TSOAD05J.JOB00185.D0000101.? SYSIN
IEF373I STEP/STEP10 /START 2015308.0920
IEF374I STEP/STEP10 /STOP 2015308.0920 CPU 0MIN 00.17SEC SRB 0MIN 00.04S
IEF375I JOB/TSOAD05J/START 2015308.0920
IEF376I JOB/TSOAD05J/STOP 2015308.0920 CPU 0MIN 00.17SEC SRB 0MIN 00.04S
OLA MUNDO - RODAMOS UM PROGRAMA COBOL
******************************** BOTTOM OF DATA ********************************
F1=HELP F2=SPLIT F3=END F4=RETURN F5=IFIND F6=BOOK
F7=UP F8=DOWN F9=SWAP F10=LEFT F11=RIGHT F12=RETRIEVE</code></pre>
<a href="http://mainframecorner.com/?p=1476">Clique Aqui</a>Claudemar Martins de Sáhttp://www.blogger.com/profile/05069108300402187406noreply@blogger.com17tag:blogger.com,1999:blog-8798968522614237503.post-46886229494141403862015-10-27T09:50:00.000-03:002015-10-27T09:50:34.309-03:00O que é um catálogo no Mainframe?Um catálogo descreve atributos do data set e indica os volumes em que ele está localizado.
<br />
<br />
Quando um data set é catalogado, ele pode ser referido pelo nome, sem que o usuário precise especificar onde o data set está armazenado. Os data set podem ser catalogados, descatalogados, ou recatalogados. Todos os discos onde estão os data set gerenciados pelo sistema são catalogados automaticamente em um catálogo.
<br />
<br />
Catalogar o data set em fita magnética não é necessário, mas isso pode simplificar tarefas dos usuários.
<br />
<br />
No z/OS, o Master Catalog e o User Catalogs armazenam as localizações dos data sets. Ambos os discos e fitas dos data sets podem ser catalogados. Para encontrar um data set que você solicitou, z/OS deve saber três informações:
<br />
<br />
- Nome do data sets;<br />
- Nome do volume;<br />
- Unidade (do tipo de dispositivo de volume, tal como um disco ou fita 3390 3590);
<br />
<br />
Você pode especificar todos os três valores em painéis ISPF ou em JCL. No entanto, o tipo de dispositivo de unidade e o volume muitas vezes não são relevantes para um usuário final ou a um programa. Um catálogo do sistema é usado para armazenar e recuperar a locação da UNIT e o VOLUME de um dataset. Em sua forma mais básica, um catálogo pode fornecer o tipo de dispositivo da unidade e nome do volume para qualquer data set que está catalogado. Um catálogo do sistema fornece uma função de consulta simples. Com esta facilidade o usuário só precisa fornecer um o nome do data set.
<br />
<br />
<b><span style="font-size: large;">Master Catalog e User Catalog</span></b>
<br />
<br />
Um sistema z/OS tem sempre, pelo menos, um <b>Master Catalog</b>. Se ele tem um único catálogo, este catálogo seria o Master Catalog e as entradas de localização para todos os data sets seriam armazenados nele. Um único catálogo, no entanto, seria eficiente nem flexível, para um sistema típico z/OS usa um catálogo principal e numerosos catálogos de usuários conectados a ele.
<br />
<br />
Um User Catalog armazena o nome e a localização de um data set (DSN/volume/unidade). O Master Catalog geralmente armazena apenas um dataset High-Level Qualifier (HLQ) com o nome do user catalog, que contém a localização de todos os conjuntos de dados pré-fixados por esta HLQ. O HLQ é chamado um alias.
<br />
<br />
Como regra geral, todos os data sets do usuário de instalação z/OS são catalogados. Data sets não catalogadas raramente são necessários e sua utilização está frequentemente relacionado a problemas de recuperação ou instalação de novo software. Data sets criados através ISPF são automaticamente catalogado.
<br />
<br />
<b><span style="font-size: large;">Exemplo Pratico
</span></b><br />
<br />
Vamos usar o catalogo para pegar um determinado arquivo, temos 5 arquivos;
<br />
<pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code> ADABAS.S.BACKUP.DB106.FTP* Type on Volume(s)
ADABAS.S.BACKUP.DB106.FTP.G0753V00 SEQ PDW999
ADABAS.S.BACKUP.DB106.FTP.G0754V00 SEQ PDW999
ADABAS.S.BACKUP.DB106.FTP.G0755V00 SEQ PDW999
ADABAS.S.BACKUP.DB106.FTP.G0756V00 SEQ PDW999
********** End of Dataset List **********</code></pre>
<b><br /><span style="font-size: large;">Lendo o Último arquivo</span></b>
<br />
<br />
Quero pegar o último que foi gravado pelo catalogo e ler e gravar na fila do spool;
<br />
<pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>//AACGENER JOB (DBA,MASTER),'DBA',CLASS=S,MSGCLASS=A
//*UQ ALLOW
//* --------------------------------------------------
//* LENDO DATA SET E JOGANDO NA FILA DO SPOOL
//* --------------------------------------------------
//GRAVA1 EXEC PGM=ICEGENER
//SYSPRINT DD SYSOUT=A
//SYSUT1 DD DSN=ADABAS.S.BACKUP.DB106.FTP(0),DISP=OLD
//SYSUT2 DD SYSOUT=G
//SYSIN DD DUMMY</code></pre>
Resultado<br />
<pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>1Logon accepted to library DBA.
1NEXT AABPBK04 230
1_______________________________________________________________________________
* A D A S A V DB HOMOLOGACAO 106
_______________________________________________________________________________
22222 5555555 111 00000 111 5555555 DDDDDD OOOOO MMM MMM IIIIIII NNN NNN GGGGG OOOOO
22 222 555 1111 000 000 1111 555 DDD DDD OOO OOO MMM MMM III NNNN NNN GGG OOO OOO
222 555 11111 000 000 11111 555 DDD DDD OOO OOO MMMMMMMMM III NNNN NNN GGG OOO OOO
222 5555555 111 000 000 111 5555555 DDD DDD OOO OOO MMM M MMM III NNN NNNN GGG GGG OOO OOO
222 555 111 000 000 111 555 DDD DDD OOO OOO MMM MMM III NNN NNNN GGG GGG OOO OOO
222 555 111 000 000 111 555 DDD DDD OOO OOO MMM MMM III NNN NNN GGG GGG OOO OOO
2222222 5555555 1111111 00000 1111111 5555555 DDDDDD OOOOO MMM MMM IIIIIII NNN NNN GGGGG OOOOO
VOLSER-Table:
-------------
I No. I Type I VOLSER I Device I High I Tape I Size in I
I I I I I RABN I Drive I Tracks I
I-----I------I--------I--------I------------I-------I----------I
I 1 I ASSO I DPL001 I 8391 I 539988 I 1 I 12874 I
I 2 I ASSO I DPL002 I 8391 I 1079988 I 0 I 0 I
I 3 I DATA I DPL001 I 8391 I 526195 I 1 I 88720 I
I 4 I DATA I DPL002 I 8391 I 1052395 I 1 I 383 I
--------------------------------------------------------------------------------
OP=S CL=ALL IN=ALL JB=AACGENER,04413 DS=2 SI=SO LR=1 LL=80 PP=0 DC= RL=999999
AD=J DE= SC= PT= SQ=C RR=0 OC= SD=2000 26.10.2015, 18:14:28</code></pre>
<b><br /><span style="font-size: large;">Lendo o Antepenúltimo arquivo</span></b>
<br />
<br />
Vamos pegar o antepenuntimo arquivo e jogar ele na fila do spool;<br />
<pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>//AACGENER JOB (DBA,MASTER),'DBA',CLASS=S,MSGCLASS=A
//*UQ ALLOW
//* --------------------------------------------------
//* LENDO DATA SET E JOGANDO NA FILA DO SPOOL
//* --------------------------------------------------
//GRAVA1 EXEC PGM=ICEGENER
//SYSPRINT DD SYSOUT=A
//SYSUT1 DD DSN=ADABAS.S.BACKUP.DB106.FTP(-1),DISP=OLD
//SYSUT2 DD SYSOUT=G
//SYSIN DD DUMMY</code></pre>
Resultado<br />
<pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>1Logon accepted to library DBA.
1NEXT AABPBK04 230
1_______________________________________________________________________________
* A D A S A V DB HOMOLOGACAO 106
_______________________________________________________________________________
22222 33333 111 00000 111 5555555 SSSSS EEEEEEE XXX XXX TTTTTTT AAAAA
22 222 33 333 1111 000 000 1111 555 SSS SS EEE XXX XXX TTT AAA AAA
222 333 11111 000 000 11111 555 SSSS EEE XXXX TTT AAA AAA
222 333 111 000 000 111 5555555 SSSS EEEEEEE XXXX TTT AAAAAAA
222 333 111 000 000 111 555 SSSS EEE XXXXX TTT AAA AAA
222 33 333 111 000 000 111 555 SS SSS EEE XXX XXX TTT AAA AAA
2222222 33333 1111111 00000 1111111 5555555 SSSS EEEEEEE XXX XXX TTT AAA AAA
VOLSER-Table:
-------------
I No. I Type I VOLSER I Device I High I Tape I Size in I
I I I I I RABN I Drive I Tracks I
I-----I------I--------I--------I------------I-------I----------I
I 1 I ASSO I DPL001 I 8391 I 539988 I 1 I 12873 I
I 2 I ASSO I DPL002 I 8391 I 1079988 I 0 I 0 I
I 3 I DATA I DPL001 I 8391 I 526195 I 1 I 88713 I
I 4 I DATA I DPL002 I 8391 I 1052395 I 1 I 382 I
--------------------------------------------------------------------------------
OP=S CL=ALL IN=ALL JB=AACGENER,04414 DS=2 SI=SO LR=1 LL=80 PP=0 DC= RL=999999
AD=J DE= SC= PT= SQ=C RR=0 OC= SD=2000 26.10.2015, 18:15:49</code></pre>
<a href="http://ruifeio.com/2010/12/01/what-is-a-catalog/">Clique Aqui</a>Claudemar Martins de Sáhttp://www.blogger.com/profile/05069108300402187406noreply@blogger.com0tag:blogger.com,1999:blog-8798968522614237503.post-38610063790824497652015-07-08T14:32:00.000-04:002015-07-08T14:34:30.155-04:00Error converting data type DBTYPE_DBTIMESTAMP to datetimeUma tabela do Informix tinha que ser migrada para o SQL Server e todas as vezes que tentava acessar ela pelo SQL Management Studio ocorria o erro abaixo;
<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidQVj8cOZLGFS6S_nuRZaIABy7q9hy7uHrJGHIhNe2gnoEGaeNTVkbufn7kwvyuguC_RgF7Ski0-xGuUOuliXiTPoJveGkeHgcS_7iVsHMWc1A_VlGEfYFSm_Y4EplUGsmcG9jHRNsz00/s1600/error_converting.jpg" imageanchor="1"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidQVj8cOZLGFS6S_nuRZaIABy7q9hy7uHrJGHIhNe2gnoEGaeNTVkbufn7kwvyuguC_RgF7Ski0-xGuUOuliXiTPoJveGkeHgcS_7iVsHMWc1A_VlGEfYFSm_Y4EplUGsmcG9jHRNsz00/s1600/error_converting.jpg" /></a><br /><br />
<b><span style="font-size: large;">Causa deste problema</span></b>
<br />
<br />
Fiz um backup unload da tabela e analisando com calma os dados do campo datetime tem alguns registros que foram gravado com segundos 60, o SQL SERVER o segundo vai até 59, é esta a causa do problema;
<br />
<pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>99020|99887766553150|1|H|2015-05-14 10:23:60||
99032|99887766554102|1|T|2015-08-12 11:14:60||
99043|99887766554116|1|T|2015-03-13 10:39:60||
99054|99887766554180|1|T|2015-12-10 20:32:60||
99061|99887766554173|1|T|2016-06-12 23:00:60||
99073|99887766554142|1|T|2016-09-29 14:12:60||
99082|99887766554170|1|T|2015-02-26 01:21:60||</code></pre>
Pesquisando em diversos sites e em um forum do Informix encontrei uma resposta simples para o banco para isso, no banco de dados Informix a tabela foi criada como (interval year to second) a aplicação deve estar como year to minute.
<br />
<br />
<b><span style="font-size: large;">Solucionando</span></b>
<br />
<br />
Temos duas alternativas, alterar na tabela os segundos (de 60 para 59) fazendo um update em cada registro ou alterar o arquivo (do backup unload) para poder carregar os registros no SQL Server, vou fazer esta opção, para fazer isto vou usar o comando (sed -i) que é um comando que são praticamente encontrados em quase todas as distribuições
<br />
<br />
<b><span style="font-size: large;">Tratamento de SED - Alterando o Segundo</span></b>
<br />
<br />
Como fiz backup unload vou alterar e converter alguns valores para poder carregar no SQL Server, primeiro vamos alterar o segundo 60 transformar para 59
<br />
<pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>sed -i s/:60/:59/g Dec_Empresa_Monitorada.unl
</code></pre>Chequei antes para ver se tem :60 em outro lugar e não tem.
<br /><br />
<b><span style="font-size: large;">Tratamento de SED - Adicionando o comando Insert</span></b>
<br />
<br />
Agora vamos colocar o comando de insert neste arquivo<br />
<pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>sed -i "s/^/INSERT INTO [dbo].[Dec_Empresa_Monitorada] ([dec_numero],[emp_cnpjcpf],[dem_contador],[dem_situacao],[dem_dthr_insercao],[dem_dthr_atualizacao]) VALUES ('/" Dec_Empresa_Monitorada.unl
</code></pre>
<b><span style="font-size: large;">Tratamento de SED - Alterando o Pipe 1</span></b>
<br />
<br />
Alguns campos estão em branco, vou retirar o pipe e colocar ','' <br />
<pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>sed -i "s/||/','');/" Dec_Empresa_Monitorada.unl</code></pre>
<b><span style="font-size: large;">Tratamento de SED - Alterando o Pipe 2</span></b>
<br />
<br />
Agora vamos separar os pipe (um somente) para ','<br />
<pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>sed -i "s/|/','/g" Dec_Empresa_Monitorada.unl</code></pre>
<b><span style="font-size: large;">Tratamento de SED - Fechando o comando Insert</span></b>
<br />
<br />
Transformando a parte final para poder fechar o insert
<br />
<pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>sed -i "s/','$/');/" Dec_Empresa_Monitorada.unl</code></pre>
<b><span style="font-size: large;">Resultado</span></b>
<br />
<br />
Uma parte do arquivo transformado, agora vou pegar o arquivo todo e rodar no SQL Management Studio para inserir na tabela;
<pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>INSERT INTO [dbo].[Dec_Empresa_Monitorada] ([dec_numero],[emp_cnpjcpf],[dem_contador],[dem_situacao],[dem_dthr_insercao],[dem_dthr_atualizacao]) VALUES ('66001','11223344500110','1','T','2014-06-27 13:59:56','');
INSERT INTO [dbo].[Dec_Empresa_Monitorada] ([dec_numero],[emp_cnpjcpf],[dem_contador],[dem_situacao],[dem_dthr_insercao],[dem_dthr_atualizacao]) VALUES ('66007','11223344500127','1','T','2014-06-28 18:13:57','');
INSERT INTO [dbo].[Dec_Empresa_Monitorada] ([dec_numero],[emp_cnpjcpf],[dem_contador],[dem_situacao],[dem_dthr_insercao],[dem_dthr_atualizacao]) VALUES ('66064','11223344500177','1','T','2014-06-28 20:51:43','');
INSERT INTO [dbo].[Dec_Empresa_Monitorada] ([dec_numero],[emp_cnpjcpf],[dem_contador],[dem_situacao],[dem_dthr_insercao],[dem_dthr_atualizacao]) VALUES ('66040','11223344500147','1','T','2014-06-28 21:17:39','');
INSERT INTO [dbo].[Dec_Empresa_Monitorada] ([dec_numero],[emp_cnpjcpf],[dem_contador],[dem_situacao],[dem_dthr_insercao],[dem_dthr_atualizacao]) VALUES ('66016','11223344500132','1','T','2014-06-30 07:31:11','');</code></pre>
Rodei este arquivo no SQL Server e rodou ok;
<br />
<br />
No SQL Server ficou com esta quantidade de linhas
<br />
<pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>select count(*) from Dec_Empresa_Monitorada
2375</code></pre>
No Informix ficou com esta quantidade;
<br />
<pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>[s275:informix]$/export/home/informix/backup> echo "select count(*) from Dec_Empresa_Monitorada" | dbaccess efronteiras
Database selected.
(count(*))
2375
1 row(s) retrieved.</code></pre>
Quantidade de linhas ok;Claudemar Martins de Sáhttp://www.blogger.com/profile/05069108300402187406noreply@blogger.com0tag:blogger.com,1999:blog-8798968522614237503.post-4514781684397594802015-05-27T11:43:00.000-04:002015-05-28T11:46:00.959-04:00SSIS Package: Truncation may occur due to inserting data from data flow columnDurante o desenvolvimento de um projeto do SSIS deu uma mensagem de warning (aviso) sobre uma tarefa de fluxo de dados.
<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7k4TMbdHGPImis5QTp1jdYGQCPPVIqAnTdM6qEHXypiNyGsgooUSgt5tQLADY7tlF-mFOaQ60nfvR6zxok4Yl-1u3hFGlxN5d1UlADq7_PUFETYsnhjRhYWygLZkz3Z9byxnx0CDnosY/s1600/ssis_erro.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7k4TMbdHGPImis5QTp1jdYGQCPPVIqAnTdM6qEHXypiNyGsgooUSgt5tQLADY7tlF-mFOaQ60nfvR6zxok4Yl-1u3hFGlxN5d1UlADq7_PUFETYsnhjRhYWygLZkz3Z9byxnx0CDnosY/s1600/ssis_erro.jpg" /></a>
<br />
<br />
<b>Causa</b> - Esta mensagem de aviso aparece sobre a tarefa de fluxo de dados SSIS quando o comprimento do tipo de dados da coluna de origem é maior do que o comprimento do tipo de dados da coluna de destino.
<br />
<br />
<b>Resolução</b> - A fim de remover essa mensagem de aviso de solução SSIS, certifique-se de comprimento tipo de dados a coluna de origem deve ser igual ao comprimento tipo de dados da coluna de destino .
<br />
<br />
Temos duas abordagens possíveis para resolver esta mensagem de (Warning) no SSIS:
<br />
<br />
<b>1. Usando o Advance editor</b>
<br />
<br />
<b>Passo 1</b> - Clique com o botão direito na fonte de dados (Oledb Source) e selecione "Show Advanced Editor", em seguida, vá para Input and Output Properties tab.
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZFgGg4uQ9F2R5RHCtvc8_yhHoCBeRNVQbskC7gRwqhu2bZDJgGU_QpVr2V8CAXWiZVPlSpGqkbDzhNEcCEjJMdqsnXKWv93JE2reZnNxIQqWEFFmoiIrXt62O9kiHTbQAPmua2fN2BZk/s1600/ssis_erro1.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZFgGg4uQ9F2R5RHCtvc8_yhHoCBeRNVQbskC7gRwqhu2bZDJgGU_QpVr2V8CAXWiZVPlSpGqkbDzhNEcCEjJMdqsnXKWv93JE2reZnNxIQqWEFFmoiIrXt62O9kiHTbQAPmua2fN2BZk/s1600/ssis_erro1.jpg" /></a>
<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
<b>Passo 2</b> - Escolha Oledb Source Output, expanda output columns.
<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_a53TgXg0l9Dl2mb1Dfrg_F5iP0rA4JID8Dr_sBqiyvsaIeT_IqhnoJk4Rh7mzasvuxM1FGyaQOgudzaB6K06e9d65zJ6RcZFctU3U2AVEvKPfrM3ChWH0WFWOeuF_t-bJMFzFRwwjhI/s1600/ssis_erro3.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_a53TgXg0l9Dl2mb1Dfrg_F5iP0rA4JID8Dr_sBqiyvsaIeT_IqhnoJk4Rh7mzasvuxM1FGyaQOgudzaB6K06e9d65zJ6RcZFctU3U2AVEvKPfrM3ChWH0WFWOeuF_t-bJMFzFRwwjhI/s1600/ssis_erro3.jpg" /></a>
<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
<b>Passo 3</b> - Escolha apropriada coluna e você pode alterar o tipo de dados da coluna, bem como tamanho do mesmo.
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_A1k_okZlWohadZxdFb-4kEaTX6wgB6ddnVeBd37Mua-1dd2RxKlSLEkE4klo_oRpWr8TamgixjOcDszAIUh9Fbrr9gvvQLvPukTYCjdJxrqk-I2pXofz2YG5f2wL5KVtyHRFOd_0TwE/s1600/ssis_erro4.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_A1k_okZlWohadZxdFb-4kEaTX6wgB6ddnVeBd37Mua-1dd2RxKlSLEkE4klo_oRpWr8TamgixjOcDszAIUh9Fbrr9gvvQLvPukTYCjdJxrqk-I2pXofz2YG5f2wL5KVtyHRFOd_0TwE/s1600/ssis_erro4.jpg" /></a><br />
<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
Foi alterado para Numeric, pois os conversão de dados para manipular o comprimento tipo de dados dessa coluna em particular.
<br />
<br />
Antes de alterar o formato (Tem um warning);<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAo0DK7bh5KGcbtmrPSswSGlDhg-gFaKjX5BskUJqyEod2puMMmCOcfIm_PhOjiFDdIy6bMfNxNcT8-hMasDzfGJnN7MbtpADBKl01qXcIYCo1QWRZJDfoyrtJcv36tM520ZUHxQJ8ArI/s1600/ssis_erro6.jpg" imageanchor="1"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAo0DK7bh5KGcbtmrPSswSGlDhg-gFaKjX5BskUJqyEod2puMMmCOcfIm_PhOjiFDdIy6bMfNxNcT8-hMasDzfGJnN7MbtpADBKl01qXcIYCo1QWRZJDfoyrtJcv36tM520ZUHxQJ8ArI/s1600/ssis_erro6.jpg" /></a>
<br />
<br />
Depois de alterar o formato (Não tem mais o warning);
<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiuyalOvQXIdGVXeFYuiqVpftx5Mj9DPgtkAFdxf-xsHiuONfqgwMmoXBPy10R1J5T_eP68zSVxrKzxdehcXzeZ3ZE2MON51wpLDqJ10jHcr3mnGExmL9OLSJCTFDnV4m7V6POqkIzRMYM/s1600/ssis_erro5.jpg" imageanchor="1"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiuyalOvQXIdGVXeFYuiqVpftx5Mj9DPgtkAFdxf-xsHiuONfqgwMmoXBPy10R1J5T_eP68zSVxrKzxdehcXzeZ3ZE2MON51wpLDqJ10jHcr3mnGExmL9OLSJCTFDnV4m7V6POqkIzRMYM/s1600/ssis_erro5.jpg" /></a>
<br />
<br />
<b>2. Usando a conversão de dados</b>
<br />
<br />
Assim que o tipo e o comprimento de origem e o destino estejam iguais, a mensagem de warning (aviso) desapareceu;
<br />
<br />
Espero que este artigo tenha te ajudado a resolver este problema. Dúvida, sugestão ou feedback são bem vindos - <a href="http://vsstack.blogspot.com.br/p/ssis-package-truncation-may-occur-due.html">Tutorial Retirado</a>Claudemar Martins de Sáhttp://www.blogger.com/profile/05069108300402187406noreply@blogger.com0tag:blogger.com,1999:blog-8798968522614237503.post-24348842015212436512015-04-15T09:48:00.000-04:002015-04-26T22:18:51.245-04:00Importar ou vincular dados no AccessSe seu departamento ou grupo de trabalho usa o Microsoft SQL Server para armazenar dados, você pode precisar trabalhar com alguns dados do SQL Server no Access. Você pode levar dados dos objetos (tabelas ou modos) do SQL Server para o Access de uma das duas formas — importando ou vinculando. A diferença entre os dois processos é a seguinte:
<br />
<br />
<ul>
<li><b>Quando você importa os dados</b>, o Access cria um cópia dos dados do SQL Server e nenhuma alteração posterior que for feita nos dados no banco de dados do Access se refletirá no banco de dados do SQL Server. Da mesma forma, nenhuma alteração posterior feita na tabela ou no modo de exibição do SQL Server será refletida no Access.</li>
</ul>
<ul>
<li><b>Quando você se vincula aos dados</b> do SQL Server, você está se conectando diretamente aos dados da fonte, de modo que todas as alterações posteriores que forem feitas em dados no Access serão refletidas no SQL Server e vice-versa.
<br />
<br />
</ul>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmSStVbhBdPHN03FF-hsQ-QBSrlyLxygAEYnFbkrEFd9DnqsxyyPCioWtxyGkRt4Fi1xoJiBhfDYhNRSi1Aq2LwIlvN362jP_JE1cy-q6rk1GUefxk1oayJEXHySczBqmpBLQEUIkGVm0/s1600/access_001.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmSStVbhBdPHN03FF-hsQ-QBSrlyLxygAEYnFbkrEFd9DnqsxyyPCioWtxyGkRt4Fi1xoJiBhfDYhNRSi1Aq2LwIlvN362jP_JE1cy-q6rk1GUefxk1oayJEXHySczBqmpBLQEUIkGVm0/s200/access_001.jpg" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsvoXa-2ZM394s8p8gKPfNFFGIec6LW2u_cD46bn55PzRC96iSfOF6Vn2WUeui7S8q_h5fgGWNZyMNrVJ_9pVbRqM_UqNvuIUgbCZSoh1HFyq0iw6PvZhxg-JHz6tskNKJ8NUj3KQLAVk/s1600/access_002.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsvoXa-2ZM394s8p8gKPfNFFGIec6LW2u_cD46bn55PzRC96iSfOF6Vn2WUeui7S8q_h5fgGWNZyMNrVJ_9pVbRqM_UqNvuIUgbCZSoh1HFyq0iw6PvZhxg-JHz6tskNKJ8NUj3KQLAVk/s200/access_002.jpg" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiB2BhOE6SiQbzQqbunR-EuJpxNxoaj8N7olDu-OxPqUvM1B1zs3GQho2UtjPSsLI9YW4xxzhVqJhO8wh7o161fY71cP5vBmOD3VoAxGf3wJfGIcJwqUm-ySu_Idni58EBnDmEIhspSnsM/s1600/access_003.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiB2BhOE6SiQbzQqbunR-EuJpxNxoaj8N7olDu-OxPqUvM1B1zs3GQho2UtjPSsLI9YW4xxzhVqJhO8wh7o161fY71cP5vBmOD3VoAxGf3wJfGIcJwqUm-ySu_Idni58EBnDmEIhspSnsM/s200/access_003.jpg" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9cp5TdE0ZsX-VZchzWzGxFs2kA3bJ0FXJc99h58Q9HI8PZONIx6_rMonq3VB8ZJzTTYb57peZfIUo45Dv6pfJx0KHYGoAChQAZiygw5p3n0pSi5kMhSp8BLFRcctD9skSqEMvOpmKw9Y/s1600/access_004.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9cp5TdE0ZsX-VZchzWzGxFs2kA3bJ0FXJc99h58Q9HI8PZONIx6_rMonq3VB8ZJzTTYb57peZfIUo45Dv6pfJx0KHYGoAChQAZiygw5p3n0pSi5kMhSp8BLFRcctD9skSqEMvOpmKw9Y/s200/access_004.jpg" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZv2KDJqtZhltKGCSicw8ESqrNdyC7xViFOO8KpZw6iT8aQlGM3ufcAjjWC50P7CbbtlJFH8ETMPqU0ykl3qrJs-H78Adtpp3lq40i9R1lwSyYOyiCVYFgfe_0mZRAF5uHLxwjqhpg2D4/s1600/access_005.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZv2KDJqtZhltKGCSicw8ESqrNdyC7xViFOO8KpZw6iT8aQlGM3ufcAjjWC50P7CbbtlJFH8ETMPqU0ykl3qrJs-H78Adtpp3lq40i9R1lwSyYOyiCVYFgfe_0mZRAF5uHLxwjqhpg2D4/s200/access_005.jpg" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieLXqzl_3FowfC1qpzvnlPAUvZsZtiMQ82YLg0OvBbJdTK0B59A6igEBzSnXerHHZpj19cZZI1vrV3KQZij3coa4qTkzr7-pAhSHGwyY-ucS9lTKBqN4b8eSAx9-3ns0lRKqylt0CuHB4/s1600/access_006.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieLXqzl_3FowfC1qpzvnlPAUvZsZtiMQ82YLg0OvBbJdTK0B59A6igEBzSnXerHHZpj19cZZI1vrV3KQZij3coa4qTkzr7-pAhSHGwyY-ucS9lTKBqN4b8eSAx9-3ns0lRKqylt0CuHB4/s200/access_006.jpg" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCNxhwb1iqmXQBkgQGulpkY8Qc4__tNGWQNy5A5rzC4cNkpIuEFnynxwPpz28jYKi5UWT4-RgRgWCjPu_88WOSD2NWIQR2dSDDTHWPgO_P1vB9HO0OFJvKltJv7Vb_Hc8aCNO2Km2bpaU/s1600/access_007.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCNxhwb1iqmXQBkgQGulpkY8Qc4__tNGWQNy5A5rzC4cNkpIuEFnynxwPpz28jYKi5UWT4-RgRgWCjPu_88WOSD2NWIQR2dSDDTHWPgO_P1vB9HO0OFJvKltJv7Vb_Hc8aCNO2Km2bpaU/s200/access_007.jpg" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0avwjwAMfzlEHE48Rls-ws7zsnu70J9c5C5kliMj1UjHyA0fEiXwYEFBIWEt4xScZ1poFur5LYZo_kY6pYsApFZjFrGNsD_VGH1KvAWGpZ9zZ1HkFh-UyuRmeUVbop6Jtj1hW9OMYFnc/s1600/access_008.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0avwjwAMfzlEHE48Rls-ws7zsnu70J9c5C5kliMj1UjHyA0fEiXwYEFBIWEt4xScZ1poFur5LYZo_kY6pYsApFZjFrGNsD_VGH1KvAWGpZ9zZ1HkFh-UyuRmeUVbop6Jtj1hW9OMYFnc/s200/access_008.jpg" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhudMuFKXqxtaDjFvoCqgbC8G2Z35EPEtYozP_ZbKFe8rLAsL-t_jq7WMlIFClzCndyN7mJZUHDdPMWc-CKTwBO6WHZ9I6YQI3su1ZqgX_Mhm17cBEl7Mjel1PJ9NZ0EIQmY4ZGonJUw6w/s1600/access_009.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhudMuFKXqxtaDjFvoCqgbC8G2Z35EPEtYozP_ZbKFe8rLAsL-t_jq7WMlIFClzCndyN7mJZUHDdPMWc-CKTwBO6WHZ9I6YQI3su1ZqgX_Mhm17cBEl7Mjel1PJ9NZ0EIQmY4ZGonJUw6w/s200/access_009.jpg" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOzsZ3z1MZBnx54RYCiUaM850PIhrWNUQ4AyJp1-oQhIyqD_knDKjhkg9AOOoJuMtx_kYr65szz0kJm-rR0giX_1YSLY2QT-HUsVRL6A3gnGdXWL0BEBce-ZVMK2j_dVzVFstqgxz35UM/s1600/access_010.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOzsZ3z1MZBnx54RYCiUaM850PIhrWNUQ4AyJp1-oQhIyqD_knDKjhkg9AOOoJuMtx_kYr65szz0kJm-rR0giX_1YSLY2QT-HUsVRL6A3gnGdXWL0BEBce-ZVMK2j_dVzVFstqgxz35UM/s200/access_010.jpg" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEida6vnuDMibaGIbAOSe5cKMkCgYOGHz6JF40lWKIX4WoRz-fGzU8itsuWddMrD0xSqjxaHSBJZ81WlzuF-Oc3wLErqvA-I7jyfhagMWTNLyQAfrOO2eHLxwQauqDtKC3TVwUVR-P4bZrA/s1600/access_011.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEida6vnuDMibaGIbAOSe5cKMkCgYOGHz6JF40lWKIX4WoRz-fGzU8itsuWddMrD0xSqjxaHSBJZ81WlzuF-Oc3wLErqvA-I7jyfhagMWTNLyQAfrOO2eHLxwQauqDtKC3TVwUVR-P4bZrA/s200/access_011.jpg" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDvADfSMaBjH3eawSJ4RvFJu2zOWGIVACOm0Sq_8WnYTcSGmuiJDZ_4Xw48Gvj0Y3fiYqVBn9JiZpJqhCPEWm6vnTo1EY4y51xaoJ2bK0e5FMZWvy3x_VoI1B2AyNaYbZnfBdM1t6gtNs/s1600/access_012.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDvADfSMaBjH3eawSJ4RvFJu2zOWGIVACOm0Sq_8WnYTcSGmuiJDZ_4Xw48Gvj0Y3fiYqVBn9JiZpJqhCPEWm6vnTo1EY4y51xaoJ2bK0e5FMZWvy3x_VoI1B2AyNaYbZnfBdM1t6gtNs/s200/access_012.jpg" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8Kb1gM6_4pQz2q4sdjwaxDDRKT7XPgP4C1876LAqUo-1TXhTdLTQ9UBSntDeYsAXTlhmj1zTADQt7p6OzI_eSRRO1HfWG0tuzm7qL3uM4AzcwVIV94zsesY9dqM-nPkeFLx4pYU4yy_g/s1600/access_013.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8Kb1gM6_4pQz2q4sdjwaxDDRKT7XPgP4C1876LAqUo-1TXhTdLTQ9UBSntDeYsAXTlhmj1zTADQt7p6OzI_eSRRO1HfWG0tuzm7qL3uM4AzcwVIV94zsesY9dqM-nPkeFLx4pYU4yy_g/s200/access_013.jpg" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjw78gVHObEcZvKb_sT6J8uJH6_CutxtnvksrTGTA4sIQXIZJ1gdUzOcHwLQpU2gDFzaaVuWNyx5tsxsWtXPh_leLmXeBtjozCAvIrbuHnGOnxhzp4v_kn0h4rcJ0kPbMhHBzhmu3uYwOE/s1600/access_014.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjw78gVHObEcZvKb_sT6J8uJH6_CutxtnvksrTGTA4sIQXIZJ1gdUzOcHwLQpU2gDFzaaVuWNyx5tsxsWtXPh_leLmXeBtjozCAvIrbuHnGOnxhzp4v_kn0h4rcJ0kPbMhHBzhmu3uYwOE/s200/access_014.jpg" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzNCU6lYs2dLLIYU-7XRb2OQkhuvrdrIJ-6JxflruudNVStwIHO-Vby6XmHwhsq4fWNav11RU7FC2tjCWgK2mYl7YfXFOYJx4UiDUgZoo1FvkevbxLeOwsG4jhA_HN9slUgp2WdlOc5ak/s1600/access_015.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzNCU6lYs2dLLIYU-7XRb2OQkhuvrdrIJ-6JxflruudNVStwIHO-Vby6XmHwhsq4fWNav11RU7FC2tjCWgK2mYl7YfXFOYJx4UiDUgZoo1FvkevbxLeOwsG4jhA_HN9slUgp2WdlOc5ak/s200/access_015.jpg" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgi0HuJJSS7Kk3Zv7xigY6Ja0ylmya0CE4Mv_VeiaIQ8lfHQSUOpiVtfiOle0Qu0TW4DxuAfIEuQFvJdCVLDCx2BDNc-O4C9KuT7MxM7QDcLKk2kpXGtXazVMTibQRd-v63ePUv2zQ0Q2A/s1600/access_016.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgi0HuJJSS7Kk3Zv7xigY6Ja0ylmya0CE4Mv_VeiaIQ8lfHQSUOpiVtfiOle0Qu0TW4DxuAfIEuQFvJdCVLDCx2BDNc-O4C9KuT7MxM7QDcLKk2kpXGtXazVMTibQRd-v63ePUv2zQ0Q2A/s200/access_016.jpg" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAmfzJpvhw9lgQrmUTVTK_sUZnNtpEOdzJSR5BEkmO3c0GiIevIYFcpucjaBusFOh1xaUjka0_NEP5w3irA7OnjgjGxmHI1KN8AxUKSFLPSYj07D0PxCNHxIK6bTsG6r_e0BZaDnOnG58/s1600/access_017.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAmfzJpvhw9lgQrmUTVTK_sUZnNtpEOdzJSR5BEkmO3c0GiIevIYFcpucjaBusFOh1xaUjka0_NEP5w3irA7OnjgjGxmHI1KN8AxUKSFLPSYj07D0PxCNHxIK6bTsG6r_e0BZaDnOnG58/s200/access_017.jpg" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGIjhzAJ0tY1jn0q4NZE9zOcGDMVxKJiMzlahCIHPdR64jMTzfUwGXUuqFqgHtIffaYWMHFCaqTXDDK6IU9TkOeY9Q4w24Hfd3EJHJkZSkhPABj59z0jisA3wZbpfcUGcCyIMV2H7K2-E/s1600/access_018.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGIjhzAJ0tY1jn0q4NZE9zOcGDMVxKJiMzlahCIHPdR64jMTzfUwGXUuqFqgHtIffaYWMHFCaqTXDDK6IU9TkOeY9Q4w24Hfd3EJHJkZSkhPABj59z0jisA3wZbpfcUGcCyIMV2H7K2-E/s200/access_018.jpg" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJr8e29_wM8FXYze1ponImkT5r03o4-087bsrusgS6DCGe56pUx9t1N7EOJMiMTldEFxtAVTnuNS6xBdXEl1U6ePR4m3PI5kbsiTkCszvoyI88ieWHg8jUZycP2jbmNkwCVbdciAeOdO4/s1600/access_019.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJr8e29_wM8FXYze1ponImkT5r03o4-087bsrusgS6DCGe56pUx9t1N7EOJMiMTldEFxtAVTnuNS6xBdXEl1U6ePR4m3PI5kbsiTkCszvoyI88ieWHg8jUZycP2jbmNkwCVbdciAeOdO4/s200/access_019.jpg" /></a>Claudemar Martins de Sáhttp://www.blogger.com/profile/05069108300402187406noreply@blogger.com0tag:blogger.com,1999:blog-8798968522614237503.post-4128004166151602262015-03-07T02:54:00.000-04:002019-11-02T17:11:41.952-04:00Compactando Pasta do Servidor - SSISEste é um exemplo de um programa feito pelo SSIS que faz backup de algumas pastas importantes do servidor. Este procedimento pelo SSIS faz o backup de algumas pastas (retirando algumas pastas que não quero), compactando, colocando o arquivo compactado em uma pasta especifica e fazendo um controle da quantidade de arquivos compactados. Primeiro, vamos criar uma tabela onde vai ficar armazenado as pasta que vamos usar.
<a href="https://drive.google.com/file/d/0B1cu_-gW8sSDblNHZ29hQlQtejQ/view?usp=sharing"><b>Download Clique Aqui</b></a>
<br /><br />
<font size="3"><b>1 - Criando a Tabela</b></font>
<br /><br />
Definindo uma tabela onde vamos inserir os caminhos das pastas, dá para colocar nas variaveis as pastas o problema é que no futuro uma mudança no nome dos servidores ou no nome das pastas temos que editar cada uma das variaveis no SSIS e alterar na unha o nome das pastas, colocando em uma tabela é só rodar um simples update resolve, o nome da tabela vai ser bdfaz_programas;
<pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>CREATE TABLE [dbo].[bdfaz_programas](
[prg_codigo] [int] NOT NULL,
[prg_descricao] [varchar](60) NOT NULL,
[prg_sigla] [varchar](20) NULL,
[prg_nome_detalhado] [varchar](100) NULL,
[prg_sistema_origem] [varchar](60) NOT NULL,
[prg_analista_origem] [varchar](60) NOT NULL,
[prg_fone_origem] [varchar](9) NOT NULL,
[prg_email_origem] [varchar](60) NOT NULL,
[prg_job_grande_porte] [varchar](60) NULL,
[prg_area_grande_porte] [varchar](60) NULL,
[prg_nome_arquivo_texto] [varchar](60) NULL,
[prg_origem_inicial] [varchar](60) NULL,
[prg_origem_final] [varchar](60) NULL,
[prg_destino_inicial] [varchar](60) NULL,
[prg_destino_final] [varchar](60) NULL,
[prg_nome_arquivo_compactado] [varchar](60) NULL,
[prg_servidor_carga] [varchar](60) NULL,
[prg_servidor_banco] [varchar](60) NULL,
[prg_banco_dados] [varchar](60) NULL,
[frequencia] [varchar](40) NULL,
[prg_observacao] [varchar](max) NULL
)
ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]</code></pre>
Este vai ser o registro que vamos inserir que contem os dados sobre as pastas que vamos salvar;
<pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>INSERT INTO [dbo]. [bdfaz_programas]
([prg_codigo]
,[prg_descricao]
,[prg_sigla]
,[prg_nome_detalhado]
,[prg_sistema_origem]
,[prg_analista_origem]
,[prg_fone_origem]
,[prg_email_origem]
,[prg_job_grande_porte]
,[prg_area_grande_porte]
,[prg_nome_arquivo_texto]
,[prg_origem_inicial]
,[prg_origem_final]
,[prg_destino_inicial]
,[prg_destino_final]
,[prg_nome_arquivo_compactado]
,[prg_servidor_carga]
,[prg_servidor_banco]
,[prg_banco_dados]
,[frequencia]
,[prg_observacao])
VALUES
(
'1', --- prg_codigo
'Compacta_gql', --- prg_descricao
'', --- prg_sigla
'Compacta Pasta', --- prg_nome_detalhado
'XXXXX', --- prg_sistema_origem
'Equipe BI', --- prg_analista_origem
'9999-9999', --- prg_fone_origem
'meu_e_mail@alguma.coisa.br', --- prg_email_origem
'NULL', --- prg_job_grande_porte
'NULL', --- prg_area_grande_porte
'', --- prg_nome_arquivo_texto
'C:\Claudemar\CARGA\FONTES\', --- prg_origem_inicial --- pasta fonte
'C:\Claudemar\CARGA\TMP', --- prg_origem_final --- pasta temporaria
'C:\Claudemar\CARGA\BACKUP', --- prg_destino_inicial --- pasta backup (sem \)
'C:\Claudemar\CARGA\BACKUP\', --- prg_destino_final --- pasta backup (com \)
'modelos_gql_compactados.zip', --- prg_nome_arquivo_compactado
'NULL', --- prg_servidor_carga
'NULL', --- prg_servidor_banco
'NULL', --- prg_banco_dados
'mensal', --- frequencia
'NULL' --- prg_observacao
)</code></pre>
<font size="3"><b>2 - Variáveis</b></font>
<br /><br />
Abrindo o SSIS vamos definir essas variaveis;
<pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>+-----------------------------+---------------+-------------------------+
| nome | Data Type | Value |
+-----------------------------+---------------+-------------------------+
| caminho_backup_dois_gql | String | caminho_backup_dois_gql |
| caminho_backup_gql | String | |
| caminho_fonte_gql | String | caminho_fonte_gql |
| caminho_pasta_tmp | String | caminho_pasta_tmp |
| compactar_arquivos | String | N |
| pasta_modelo_gql | String | pasta_modelo_gql |
| pastas_modelos_gql | Objet | System.Object |
| prg_codigo | Int32 | 1 |
| prg_periodo | String | 15 |
+-----------------------------+---------------+-------------------------+</code></pre>
O valor da variavel prg_codigo é o mesmo valor que foi colocado no insert acima;
<br /><br />
Tela do SSIS das variáveis;
<br /><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3FDNqnyD8HXVfw3JVJzw9j2kKBtMUB5swBc6jZA_C3Ok_mwne0S0TGt89As4qPbN6Fy4A1rxgrACqExPuItdbc5Wn3pa2eunZ4dWfz2Z3GluiSvhsq6Be0eUJtwsC7iJZnZ7bSuxtrxc/s1600/00.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3FDNqnyD8HXVfw3JVJzw9j2kKBtMUB5swBc6jZA_C3Ok_mwne0S0TGt89As4qPbN6Fy4A1rxgrACqExPuItdbc5Wn3pa2eunZ4dWfz2Z3GluiSvhsq6Be0eUJtwsC7iJZnZ7bSuxtrxc/s400/00.jpg"></a>
<br /><br />
<font size="3"><b>3 - Configurando a Conexão OLE DB</b></font>
<br /><br />
Neste passo vamos apontar no SSIS o banco/tabela onde criamos a tabela acima;
<br /><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzsrR0rQDwVYTyCCOMsA1xtSf1vG7EuWay-OqZ38roPnYvCrQDHlT2IZJmLoJOwlBFdhhXUsndpujXW7-ShOO0XD1iSwG8xgRVXAN3onGduxEPuROWUOzuaICwrh9n8YgFoZRRYph84P8/s1600/compacta_gql_modelo_0001.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzsrR0rQDwVYTyCCOMsA1xtSf1vG7EuWay-OqZ38roPnYvCrQDHlT2IZJmLoJOwlBFdhhXUsndpujXW7-ShOO0XD1iSwG8xgRVXAN3onGduxEPuROWUOzuaICwrh9n8YgFoZRRYph84P8/s200/compacta_gql_modelo_0001.jpg"></a> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjt5KLrAWOCkQW_45DzqDK2tQNxjggPk6yEDWEAsAyrh8kSlNHs_giiYallG62rtyYKZA3DGRM-5r1C_8U778jGPYtEvERyqoXi3SBYDC2MOC2UnIuLQUuR_dt8tf0Se5SzSG97rYQCZ2E/s1600/compacta_gql_modelo_0002.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjt5KLrAWOCkQW_45DzqDK2tQNxjggPk6yEDWEAsAyrh8kSlNHs_giiYallG62rtyYKZA3DGRM-5r1C_8U778jGPYtEvERyqoXi3SBYDC2MOC2UnIuLQUuR_dt8tf0Se5SzSG97rYQCZ2E/s200/compacta_gql_modelo_0002.jpg"></a> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiy2hN0poiDDhwtMN_T5ztnZm0JMzgybbh-qqj68lm8z8y51VA-_WnJiY3M_T7LmfMqJYbHEL_QeBa6YJVoI7spqL8Shk4Fxw1xTVHbxqsIXS7xzYMCEZrQFfdrjmmEIg_eUe49rpAqBzc/s1600/compacta_gql_modelo_0003.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiy2hN0poiDDhwtMN_T5ztnZm0JMzgybbh-qqj68lm8z8y51VA-_WnJiY3M_T7LmfMqJYbHEL_QeBa6YJVoI7spqL8Shk4Fxw1xTVHbxqsIXS7xzYMCEZrQFfdrjmmEIg_eUe49rpAqBzc/s200/compacta_gql_modelo_0003.jpg"></a> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1cuaNukElvFOkYXqfq5qy-os7rV3d34HKMDOqcJABQocXM9g4DnbvxHPsQKqQJ5b8BY_chKYTG278gbZfXrbF2Y-e80Gzuf7P67-CGN3y9rk3UxvyqPV8PiVXGy3zGvRF8bx3D09GAck/s1600/compacta_gql_modelo_0004.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1cuaNukElvFOkYXqfq5qy-os7rV3d34HKMDOqcJABQocXM9g4DnbvxHPsQKqQJ5b8BY_chKYTG278gbZfXrbF2Y-e80Gzuf7P67-CGN3y9rk3UxvyqPV8PiVXGy3zGvRF8bx3D09GAck/s200/compacta_gql_modelo_0004.jpg"></a> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXmihm30aIscGJRnsp44Qd3jHtG-cEyd87_UYNvQUlakhR-DKtC8S9KuYdYWn_F-tJxRlGNv1SWBQvuuG2tB72ByzoSIgjtycTOz_BR2Vm_Lpzy53J0sFXkT4qZKw92xgI2kHC_ZwNhS4/s1600/compacta_gql_modelo_0005.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXmihm30aIscGJRnsp44Qd3jHtG-cEyd87_UYNvQUlakhR-DKtC8S9KuYdYWn_F-tJxRlGNv1SWBQvuuG2tB72ByzoSIgjtycTOz_BR2Vm_Lpzy53J0sFXkT4qZKw92xgI2kHC_ZwNhS4/s200/compacta_gql_modelo_0005.jpg"></a> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEji4Da_OYdWvQIaEB5gRYjWrgD4bf6hvacNoaawTLblNUZRrj6tQAaLUS8YHqOBc26WHzJqF9zwXFiAAwN3ufKhIg2ECxz4acBxXG8gBXDZspgOEPeELMlPGFUtuIvJt4h0-gjNNw_hjGo/s1600/compacta_gql_modelo_0006.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEji4Da_OYdWvQIaEB5gRYjWrgD4bf6hvacNoaawTLblNUZRrj6tQAaLUS8YHqOBc26WHzJqF9zwXFiAAwN3ufKhIg2ECxz4acBxXG8gBXDZspgOEPeELMlPGFUtuIvJt4h0-gjNNw_hjGo/s200/compacta_gql_modelo_0006.jpg"></a>
</br></br>
<font size="3"><b>4 - Pelo SSIS</b></font>
<br /><br />
Vamos abrir o SSIS e vamos criar um componente Data Flow (Data Flow Task), depois de adicionar vamos clicar duas vezes nele para acessar o Control Flow, dai vamos adicionar dentro dele dois componentes;
</br></br>
- OLE BD Source e o;</br>
- Script Task (Transformation)
</br></br>
<font size="3"><b>4.1 - OLE BD Source - Script Transformation</b></font>
<br /><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhK88EQ3TgUH2NLFqm0f5k4EZceEI9YreCTgYxXjwVBCBB3BR0THkzKQJqDEOo3c73dJ_aIhVCxiDzre06JFQevrOqsXgDyUItYpIjcSLG0jDkQjnHwNtw-YTSI4N6RWL48lbp-YK1HALc/s1600/compacta_gql_modelo_0010.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhK88EQ3TgUH2NLFqm0f5k4EZceEI9YreCTgYxXjwVBCBB3BR0THkzKQJqDEOo3c73dJ_aIhVCxiDzre06JFQevrOqsXgDyUItYpIjcSLG0jDkQjnHwNtw-YTSI4N6RWL48lbp-YK1HALc/s200/compacta_gql_modelo_0010.jpg"></a> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjh-Dv03gwN3B31kX7ugvbZin4rbGDHwJOOprfB7oyfkBttDjbF-4ev3cwvS0riqaO11QJiAVHfDbgel0x2gCxrga7ehi94tRxihg5hhEKioYNJtCS62JCPhoLRp50MC4rjAyvHtb-Zom8/s1600/compacta_gql_modelo_0011.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjh-Dv03gwN3B31kX7ugvbZin4rbGDHwJOOprfB7oyfkBttDjbF-4ev3cwvS0riqaO11QJiAVHfDbgel0x2gCxrga7ehi94tRxihg5hhEKioYNJtCS62JCPhoLRp50MC4rjAyvHtb-Zom8/s200/compacta_gql_modelo_0011.jpg"></a> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhajDw1Uij-MFDTD6A59xiipddHcEBSNsTUB6rnrIzcniiec_AfbCF8SwRJLjiMGXC4oZE2ieEsqX2L2PzXAKrpKt0SvNLeQRl7e86xBxmnnFVdj5ceTZxAU_nCMu4BBrwNVfnCjel0gU4/s1600/compacta_gql_modelo_0012.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhajDw1Uij-MFDTD6A59xiipddHcEBSNsTUB6rnrIzcniiec_AfbCF8SwRJLjiMGXC4oZE2ieEsqX2L2PzXAKrpKt0SvNLeQRl7e86xBxmnnFVdj5ceTZxAU_nCMu4BBrwNVfnCjel0gU4/s200/compacta_gql_modelo_0012.jpg"></a> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizx_WM6tlT86XBKluIJE9Ck2rc2LLDKgeNhWVMbNFNnI9uaVCVWhFdCIWWfgxcAvkcrPwudT7ZVheZ06R455ddAu-MKMtqkmXfFXELmm-zcqw1zJUrw7LlSTTFYE8xEKDCZ3-rR2Pa-8w/s1600/compacta_gql_modelo_0014.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizx_WM6tlT86XBKluIJE9Ck2rc2LLDKgeNhWVMbNFNnI9uaVCVWhFdCIWWfgxcAvkcrPwudT7ZVheZ06R455ddAu-MKMtqkmXfFXELmm-zcqw1zJUrw7LlSTTFYE8xEKDCZ3-rR2Pa-8w/s200/compacta_gql_modelo_0014.jpg"></a> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMoqBwQOJ7RpZsUBtuWoW0RgpXihjeu2zDDqPG9ui4huytg3_LoyIWSwRHQAdxmmVjrXwxMW6kYh8JZ59EpGlyTsqbJrcNQAkgXLuNTdbNzEV3qkJc0_dhyphenhyphennvKgLLFkWRktHd3CcV1QCA/s1600/compacta_gql_modelo_0015.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMoqBwQOJ7RpZsUBtuWoW0RgpXihjeu2zDDqPG9ui4huytg3_LoyIWSwRHQAdxmmVjrXwxMW6kYh8JZ59EpGlyTsqbJrcNQAkgXLuNTdbNzEV3qkJc0_dhyphenhyphennvKgLLFkWRktHd3CcV1QCA/s200/compacta_gql_modelo_0015.jpg"></a> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5ZjJUCyRMt7kK2YQwTQne_HOlRpPvaQg0_9OQ8DjsKzbVRcCEG9fdoisIXEntmaHWTQ91l2aXB833I56Y9FfkiqXdzRwAJ_nDM_KZwfXWsO-GyQhrE60Be0U2hsJ6iPnmKUd3YZ1iOPg/s1600/compacta_gql_modelo_0016.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5ZjJUCyRMt7kK2YQwTQne_HOlRpPvaQg0_9OQ8DjsKzbVRcCEG9fdoisIXEntmaHWTQ91l2aXB833I56Y9FfkiqXdzRwAJ_nDM_KZwfXWsO-GyQhrE60Be0U2hsJ6iPnmKUd3YZ1iOPg/s200/compacta_gql_modelo_0016.jpg"></a> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdmeGIOdWA7a6GGHdhs7z-g6Vp-0kAGJsi9kmwXiB5HjMvKdIHnXgqz0xe581ydhV8zaPqyufwmhPmosHdrrTgmGDX8CpfjdKWgZcXztJ0BCr1RyWP0naKKq_S81-mpkzwNB9M591uRng/s1600/compacta_gql_modelo_0017.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdmeGIOdWA7a6GGHdhs7z-g6Vp-0kAGJsi9kmwXiB5HjMvKdIHnXgqz0xe581ydhV8zaPqyufwmhPmosHdrrTgmGDX8CpfjdKWgZcXztJ0BCr1RyWP0naKKq_S81-mpkzwNB9M591uRng/s200/compacta_gql_modelo_0017.jpg"></a> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj63VqPRnetWf4P9wp4aJBlEPqYFjbElDURVJy-h7JjrPIW77QIOcbmGFWiVABCbuDKgvsPEISOz_DNAwKulIMEWkj3m7EHyqMQZEdN7rUX-xhpwZWc2rVx3CcElhQ6vziE_7IrcIH5t5E/s1600/compacta_gql_modelo_0018.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj63VqPRnetWf4P9wp4aJBlEPqYFjbElDURVJy-h7JjrPIW77QIOcbmGFWiVABCbuDKgvsPEISOz_DNAwKulIMEWkj3m7EHyqMQZEdN7rUX-xhpwZWc2rVx3CcElhQ6vziE_7IrcIH5t5E/s200/compacta_gql_modelo_0018.jpg"></a> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDXbU8gVr_N-e35c_I_XLWa0cp9vxvj0rOafRA4UgsVTCVpdSrTnX6qSJEt7GfsjyAQ1vsyjMgRF8wZPaG2hOrBgZeVjMorfkHT4Rr8CQTF3qwbDEMRLMyVf31hx2c_9Itzzpgv4Iapcs/s1600/compacta_gql_modelo_0019.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDXbU8gVr_N-e35c_I_XLWa0cp9vxvj0rOafRA4UgsVTCVpdSrTnX6qSJEt7GfsjyAQ1vsyjMgRF8wZPaG2hOrBgZeVjMorfkHT4Rr8CQTF3qwbDEMRLMyVf31hx2c_9Itzzpgv4Iapcs/s200/compacta_gql_modelo_0019.jpg"></a> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4TvcvlC0AgHMW0rYFgQ9ORpUO_ISz0xWkSKn9SURLtGgagKzsRRLQFVAtJvYcYAcox7N2pKE8FhKMsUfoykQk0-G1H9RYhrxgJr4utnpQNYDWpD4M7ldKIarcSqLIbhQb1lXT_sETV48/s1600/compacta_gql_modelo_0020.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4TvcvlC0AgHMW0rYFgQ9ORpUO_ISz0xWkSKn9SURLtGgagKzsRRLQFVAtJvYcYAcox7N2pKE8FhKMsUfoykQk0-G1H9RYhrxgJr4utnpQNYDWpD4M7ldKIarcSqLIbhQb1lXT_sETV48/s200/compacta_gql_modelo_0020.jpg"></a> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWQxf3-4nRCqY3iS7WY38CQA1tPhM7OMNHnE4DDCgMBDxlHOj4iaAiIBlj-cgcPeCCM-tFt-z2a9KyLxCiEHt4cX-Sx9WrLLyrOG3xHEGCghfqQFjDkwnrgGki4zxwz7hOvlj5Dttfc1k/s1600/compacta_gql_modelo_0021.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWQxf3-4nRCqY3iS7WY38CQA1tPhM7OMNHnE4DDCgMBDxlHOj4iaAiIBlj-cgcPeCCM-tFt-z2a9KyLxCiEHt4cX-Sx9WrLLyrOG3xHEGCghfqQFjDkwnrgGki4zxwz7hOvlj5Dttfc1k/s200/compacta_gql_modelo_0021.jpg"></a> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtuA7IqCeqMn3QKJxVkrRCYnKo_EAb0hffdCCwZkwkMgaZkcFW1N8Og0jn0cNVXx5Etsm-ciTM7zHZ0fqWkbpACfa1oy2jG2_6E-PrPyVMygh7nWnbhf9IrqwQo1syN0ny9RJNDOlyMaw/s1600/compacta_gql_modelo_0023.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtuA7IqCeqMn3QKJxVkrRCYnKo_EAb0hffdCCwZkwkMgaZkcFW1N8Og0jn0cNVXx5Etsm-ciTM7zHZ0fqWkbpACfa1oy2jG2_6E-PrPyVMygh7nWnbhf9IrqwQo1syN0ny9RJNDOlyMaw/s200/compacta_gql_modelo_0023.jpg"></a> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgTl3FJBlNY7GALrsZMlz19-uJ6jsi8K6SMFLw7jpQBuhyENzutB4rz6Lfs-io8t4Hu7JogNdrChGXgoh4CncAhbMonQwlrcK52aLRg60q6cLTeZF1QO38MX4w1_GQPE_pXXyzu04oOZo/s1600/compacta_gql_modelo_0024.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgTl3FJBlNY7GALrsZMlz19-uJ6jsi8K6SMFLw7jpQBuhyENzutB4rz6Lfs-io8t4Hu7JogNdrChGXgoh4CncAhbMonQwlrcK52aLRg60q6cLTeZF1QO38MX4w1_GQPE_pXXyzu04oOZo/s200/compacta_gql_modelo_0024.jpg"></a>
</br></br>
<font size="3"><b>4.2 - OLE BD Source</b></font>
<br /><br />
Vamos pegar no banco os valores da tabela que fizemos o insert;
</br></br>
SQL command text
<pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>SELECT [prg_codigo]
,[prg_origem_inicial] as caminho_fonte_gql
,[prg_origem_final] as caminho_pasta_tmp
,[prg_destino_inicial] as caminho_backup_dois_gql
,[prg_destino_final] as caminho_backup_gql
,[prg_nome_arquivo_compactado] as nome_arquivo_zip
,[prg_nome_arquivo_texto]
FROM [dbo].[bdfaz_programas]
WHERE prg_codigo= ?</code></pre>Clique em Parameters e adicione a variavel User::prg_codigo
</br></br>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiVchf9lXl-v3vTursqgCA8w07k0I9GLxh29nX5ZIK5Ic8VNNZj9tWOX2X0cIs8xeIyOdB5oKTJ8Cm4fECNGcnkgtVQApgP2XilOSZcP5q5pn1hwO8_vYpIDTLs5uebVd2kbsgIrZtY8k/s1600/0011.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiVchf9lXl-v3vTursqgCA8w07k0I9GLxh29nX5ZIK5Ic8VNNZj9tWOX2X0cIs8xeIyOdB5oKTJ8Cm4fECNGcnkgtVQApgP2XilOSZcP5q5pn1hwO8_vYpIDTLs5uebVd2kbsgIrZtY8k/s200/0011.jpg"></a> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkZknqPspI7RUVFvNUofdvLafUhEea7UdNW_S7cGnxV-NknXw33yYG7huNUPIbKgNSQesp6n1iCq_w2V4OYE9gwOb0Wjc7mBoTVnRFHlqBU9c2EXMkWO3U5BonEkYyW9IZ2B41RmxwoXM/s1600/0012.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkZknqPspI7RUVFvNUofdvLafUhEea7UdNW_S7cGnxV-NknXw33yYG7huNUPIbKgNSQesp6n1iCq_w2V4OYE9gwOb0Wjc7mBoTVnRFHlqBU9c2EXMkWO3U5BonEkYyW9IZ2B41RmxwoXM/s200/0012.jpg"></a> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWRMo3i9j9QLJrcQy4TSmmhnWczMtc1hYPBxmVKIHTPIg30ZfnTu7FVwFcthuRHrCv_iDSex240sNtolWjh9ExePZq6tH-CFoOkLVSWZjpI_ViBtvoQC15d_ZVEnlgp1r1MS75JcgAZA0/s1600/0013.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWRMo3i9j9QLJrcQy4TSmmhnWczMtc1hYPBxmVKIHTPIg30ZfnTu7FVwFcthuRHrCv_iDSex240sNtolWjh9ExePZq6tH-CFoOkLVSWZjpI_ViBtvoQC15d_ZVEnlgp1r1MS75JcgAZA0/s200/0013.jpg"></a>
</br></br>
<font size="3"><b>4.3 - Script Transformation</b></font>
<br /><br />
Ele vai gravar as variáveis que estão no banco (do nosso insert) para gravar nas variáveis do nosso SSIS;
<br /><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmL4Fv7zn3_HiZZXbhRMe9FkdxzWP5pQX5ZAKyTHeVaCE8vPLBh1FKRy2cxMdDE_cY6qw-Dzb_Dh9mQAg89d5TVvNwt5W8ioduaHMbzFVGBzThU_gQHwnW9gQebQ09BppxJxFR2mARU5U/s1600/11.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmL4Fv7zn3_HiZZXbhRMe9FkdxzWP5pQX5ZAKyTHeVaCE8vPLBh1FKRy2cxMdDE_cY6qw-Dzb_Dh9mQAg89d5TVvNwt5W8ioduaHMbzFVGBzThU_gQHwnW9gQebQ09BppxJxFR2mARU5U/s200/11.jpg"></a> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhq2F6Bl-0QMtjfYn98MVkJBV5aHcDPYqcpIdtAgnnW0kCmJHNiYm7ZbZDD7eUusl44jlbCyrmk9ngGdu84RBludb14HcSB7iGt-s9pSTqUhVu1_arulLvacwFzlBrJVq1v6Aoxy9BJ8hs/s1600/12.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhq2F6Bl-0QMtjfYn98MVkJBV5aHcDPYqcpIdtAgnnW0kCmJHNiYm7ZbZDD7eUusl44jlbCyrmk9ngGdu84RBludb14HcSB7iGt-s9pSTqUhVu1_arulLvacwFzlBrJVq1v6Aoxy9BJ8hs/s200/12.jpg"></a> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjaHBRLLX687PYuGvig_niBl-m16KFVrJZBn48BEOdXkKRA6_Ual7x-Gjhx7cNg4NefWWAgD1XodUHOOcMLm9GNcIraq9SVzYlFKNH9YAP5Ns6IKBHu1VXCX3QC6c-PVhUApxNSBoUDNE/s1600/13.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjaHBRLLX687PYuGvig_niBl-m16KFVrJZBn48BEOdXkKRA6_Ual7x-Gjhx7cNg4NefWWAgD1XodUHOOcMLm9GNcIraq9SVzYlFKNH9YAP5Ns6IKBHu1VXCX3QC6c-PVhUApxNSBoUDNE/s200/13.jpg"></a>
<br /><br />
ReadWriteVariables marque essas variaveis<pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>User::caminho_backup_dois_gql,User::caminho_backup_gql,User::caminho_fonte_gql,User::caminho_pasta_tmp,User::pasta_modelo_gql</code></pre>
Em (Edit Script) cole o script abaixo - vai gravar nas variaveis os dados (nomes das pastas) que inserimos na tabela;<pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>/* Microsoft SQL Server Integration Services Script Component
* Write scripts using Microsoft Visual C# 2008.
* ScriptMain is the entry point class of the script.*/
using System;
using System.Data;
using Microsoft.SqlServer.Dts.Pipeline.Wrapper;
using Microsoft.SqlServer.Dts.Runtime.Wrapper;
using System.Windows.Forms;
[Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute]
public class ScriptMain : UserComponent
{
string caminho_backup_gql = string.Empty;
string caminho_backup_dois_gql = string.Empty;
string caminho_fonte_gql = string.Empty;
string caminho_pasta_tmp = string.Empty;
string pasta_modelo_gql = string.Empty;
//string caminho_processar = string.Empty;
public override void PreExecute()
{
base.PreExecute();
}
public override void PostExecute()
{
base.PostExecute();
Variables.caminhofontegql = caminho_fonte_gql;
Variables.caminhobackupdoisgql = caminho_backup_dois_gql;
Variables.caminhobackupgql = caminho_backup_gql;
Variables.caminhopastatmp = caminho_pasta_tmp;
Variables.pastamodelogql = string.Empty;
// ---------------------------------------------------------------------------------------------
// Imprimi na tela as variaveis carregadas
// ---------------------------------------------------------------------------------------------
//MessageBox.Show(Variables.caminhofontegql, "caminho_fonte_gql");
//MessageBox.Show(Variables.caminhopastatmp, "caminho_pasta_tmp");
//MessageBox.Show(Variables.caminhofontedoisgql, "caminho_fonte_dois_gql");
//MessageBox.Show(Variables.caminhobackupgql, "caminho_backup_gql");
//MessageBox.Show(Variables.pastamodelogql, "pastamodelogql");
// ---------------------------------------------------------------------------------------------
}
public override void Input0_ProcessInputRow(Input0Buffer Row)
{
caminho_fonte_gql = Row.caminhofontegql;
caminho_pasta_tmp = Row.caminhopastatmp;
caminho_backup_dois_gql = Row.caminhobackupdoisgql;
caminho_backup_gql = Row.caminhobackupgql + DateTime.Now.ToString("yyyyMMddHHmmss_") + Row.nomearquivozip;
}
}</code></pre>
<font size="3"><b>5 - Adicionando um Script Task - Data Flow</b></font>
<br /><br />
No Data Flow vamos criar um componente - Script Task (Transformation)
</br></br>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYXsUuMWHHWQWnHP9YgU-pbZnkfXjR2RRVSG1rmAKk99N2dCtRZv2yguVPksLkLt3p2iv50Ermf6GEzzjvRAqNC-zuMd4LnbueSs-oXOb1WNkxcfSOfCb8iP2GF04so__0xHYcPPlwbjw/s1600/15.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYXsUuMWHHWQWnHP9YgU-pbZnkfXjR2RRVSG1rmAKk99N2dCtRZv2yguVPksLkLt3p2iv50Ermf6GEzzjvRAqNC-zuMd4LnbueSs-oXOb1WNkxcfSOfCb8iP2GF04so__0xHYcPPlwbjw/s200/15.jpg"></a> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivBtebPMJjy_iA9uSNWuR_OXvFs3lT7ZDtyGyydJgrgE3abItK7JMhcxS6WV40HmONqMy47SY-NWfPE7L3AG4H3e8ogaJyO9f9KxF7nxvEmnZHjSJkaU4O5am2dSTH-G9C4xLO5zw9n0k/s1600/16.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivBtebPMJjy_iA9uSNWuR_OXvFs3lT7ZDtyGyydJgrgE3abItK7JMhcxS6WV40HmONqMy47SY-NWfPE7L3AG4H3e8ogaJyO9f9KxF7nxvEmnZHjSJkaU4O5am2dSTH-G9C4xLO5zw9n0k/s200/16.jpg"></a> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi51V3QwefUovF5Pq4iytpoIoROcZAQVP0DuyppKc9XIx3ONpX6upLiLxHZDl2aYUaXN6NyQamPwDblNNwN9VTb9PxicCaoYKs7ZCxcsq37uG_kCknkBBQymm2HQM6180tauPMExidLWY0/s1600/17.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi51V3QwefUovF5Pq4iytpoIoROcZAQVP0DuyppKc9XIx3ONpX6upLiLxHZDl2aYUaXN6NyQamPwDblNNwN9VTb9PxicCaoYKs7ZCxcsq37uG_kCknkBBQymm2HQM6180tauPMExidLWY0/s200/17.jpg"></a>
<br /><br />
ReadOnlyVariables marque essas variaveis<pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>User::caminho_fonte_gql,User::caminho_pasta_tmp</code></pre>
Em (Edit Script) cole o script abaixo - este script descobre o nome das pastas e inicia a copia das pastas (tem uma parte que que colocamos algumas pastas para não copiar);
<pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>#region Help: Introduction to the script task
/* The Script Task allows you to perform virtually any operation that can be accomplished in
* a .Net application within the context of an Integration Services control flow.
*
* Expand the other regions which have "Help" prefixes for examples of specific ways to use
* Integration Services features within this script task. */
#endregion
using System;
using System.Data;
using System.IO;
using Microsoft.SqlServer.Dts.Runtime;
using System.Windows.Forms;
using System.Collections.Generic;
namespace ST_34ad99c71d8c4458afb662e9cd553c03
{
///
/// ScriptMain is the entry point class of the script. Do not change the name, attributes,
/// or parent of this class.
///
[Microsoft.SqlServer.Dts.Tasks.ScriptTask.SSISScriptTaskEntryPointAttribute]
public partial class ScriptMain : Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase
{
#region Help: Using Integration Services variables and parameters in a script
/* To use a variable in this script, first ensure that the variable has been added to
* either the list contained in the ReadOnlyVariables property or the list contained in
* the ReadWriteVariables property of this script task, according to whether or not your
* code needs to write to the variable. To add the variable, save this script, close this instance of
* Visual Studio, and update the ReadOnlyVariables and
* ReadWriteVariables properties in the Script Transformation Editor window.
* To use a parameter in this script, follow the same steps. Parameters are always read-only.
*
* Example of reading from a variable:
* DateTime startTime = (DateTime) Dts.Variables["System::StartTime"].Value;
*
* Example of writing to a variable:
* Dts.Variables["User::myStringVariable"].Value = "new value";
*
* Example of reading from a package parameter:
* int batchId = (int) Dts.Variables["$Package::batchId"].Value;
*
* Example of reading from a project parameter:
* int batchId = (int) Dts.Variables["$Project::batchId"].Value;
*
* Example of reading from a sensitive project parameter:
* int batchId = (int) Dts.Variables["$Project::batchId"].GetSensitiveValue();
* */
#endregion
#region Help: Firing Integration Services events from a script
/* This script task can fire events for logging purposes.
*
* Example of firing an error event:
* Dts.Events.FireError(18, "Process Values", "Bad value", "", 0);
*
* Example of firing an information event:
* Dts.Events.FireInformation(3, "Process Values", "Processing has started", "", 0, ref fireAgain)
*
* Example of firing a warning event:
* Dts.Events.FireWarning(14, "Process Values", "No values received for input", "", 0);
* */
#endregion
#region Help: Using Integration Services connection managers in a script
/* Some types of connection managers can be used in this script task. See the topic
* "Working with Connection Managers Programatically" for details.
*
* Example of using an ADO.Net connection manager:
* object rawConnection = Dts.Connections["Sales DB"].AcquireConnection(Dts.Transaction);
* SqlConnection myADONETConnection = (SqlConnection)rawConnection;
* //Use the connection in some code here, then release the connection
* Dts.Connections["Sales DB"].ReleaseConnection(rawConnection);
*
* Example of using a File connection manager
* object rawConnection = Dts.Connections["Prices.zip"].AcquireConnection(Dts.Transaction);
* string filePath = (string)rawConnection;
* //Use the connection in some code here, then release the connection
* Dts.Connections["Prices.zip"].ReleaseConnection(rawConnection);
* */
#endregion
static string CONST_ORIGEM = null;
static string CONST_DESTINO = null;
//List lista_origem = new List(); //um arraymultidimensional
//List lista_destino = new List();
List<string> lista_origem = new List<string>(); //um arraymultidimensional
List<string> lista_destino = new List<string>();
///
/// This method is called when this script task executes in the control flow.
/// Before returning from this method, set the value of Dts.TaskResult to indicate success or failure.
/// To open Help, press F1.
///
public void Main()
{
// CONST_ORIGEM = Dts.Variables["prg_origem_inicial_gql"].Value.ToString();
// CONST_DESTINO = Dts.Variables["prg_origem_final_gql"].Value.ToString();
CONST_ORIGEM = Dts.Variables["caminho_fonte_gql"].Value.ToString();
CONST_DESTINO = Dts.Variables["caminho_pasta_tmp"].Value.ToString() + "\\";
//descobre o nome das pastas
ListaDiretorios();
//executa copia
for (int i = 0; i < lista_origem.Count; i++)
{
CopiaDiretorio(lista_origem[i], lista_destino[i], true);
}
}
#region ListaDiretorios
void ListaDiretorios()
{
// buscar pastas dos modelos GQL
List<string> lista = new List<string>();
//List lista = new List();
string[] dirs = System.IO.Directory.GetDirectories(CONST_ORIGEM);
//string pasta_suporte_gql = CONST_ORIGEM + "\\suporte_gql";
//string pasta_suporte_gql = CONST_ORIGEM + "\\DfsrPrivate";
//lista de nome das pastas (limpa string do caminho completo da past)
for (int i = 0; i < dirs.LongLength; i++)
{
//if (!dirs[i].Contains("suporte"))
if (
//-----------------------------------------------------------------------
// 3 pastas que não quero que sejam copiadas para a tmp
//-----------------------------------------------------------------------
!dirs[i].Contains("DfsrPrivate") &&
!dirs[i].Contains("instalacao_gql") &&
!dirs[i].Contains("__DFSR_DIAGNOSTICS_TEST_FOLDER__")
)
//if (!dirs[i].Contains("DfsrPrivate"))
{
lista.Add(dirs[i].Replace(CONST_ORIGEM, ""));
}
}
//monta caminho completo da origem
foreach (string p in lista)
{
lista_origem.Add(CONST_ORIGEM + p);
//--------------------------------------------------------------------------
// Mensagem das pastas de origem
//--------------------------------------------------------------------------
//MessageBox.Show("Origem " + CONST_ORIGEM + p);
}
//monta caminho completo do destino
foreach (string p in lista)
{
lista_destino.Add(CONST_DESTINO + p);
//--------------------------------------------------------------------------
// Mensagem das pastas de origem
//--------------------------------------------------------------------------
//MessageBox.Show("Destino " + CONST_DESTINO + p);
}
}
#endregion ListaDiretorios
#region CopiaFolderSubfolder
///
/// Metodo para copiar folders e subfolders
///
/// pasta de origem
/// pasta de destino
/// indica se eh para copiar subdiretorios
private static void CopiaDiretorio(string sourceDirName, string destDirName, bool copySubDirs)
{
// Get the subdirectories for the specified directory.
DirectoryInfo dir = new DirectoryInfo(sourceDirName);
DirectoryInfo[] dirs = dir.GetDirectories();
if (!dir.Exists)
{
throw new DirectoryNotFoundException(
"Source directory does not exist or could not be found: "
+ sourceDirName);
}
// If the destination directory doesn't exist, create it.
if (!Directory.Exists(destDirName))
{
Directory.CreateDirectory(destDirName);
}
// Get the files in the directory and copy them to the new location.
FileInfo[] files = dir.GetFiles();
foreach (FileInfo file in files)
{
string temppath = Path.Combine(destDirName, file.Name);
file.CopyTo(temppath, false);
}
// If copying subdirectories, copy them and their contents to new location.
if (copySubDirs)
{
foreach (DirectoryInfo subdir in dirs)
{
string temppath = Path.Combine(destDirName, subdir.Name);
CopiaDiretorio(subdir.FullName, temppath, copySubDirs);
}
}
}
#endregion CopiaFolderSubfolder
}
}</code></pre>
Imagens
<br /><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSy1Lq_DWNZn-mlf70R9HnLhyYCGvXRhtkMQYmuZw-sdvvD8ySx_TJVv0Yv6gNsuau0JP_ze8u0-mWgmKOaeQugSG6V-lw4lVWESRLM2YF_i31LH8ntaT35b_Kxx9oobn6_ubVXaKGQWQ/s1600/compacta_gql_modelo_0029.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSy1Lq_DWNZn-mlf70R9HnLhyYCGvXRhtkMQYmuZw-sdvvD8ySx_TJVv0Yv6gNsuau0JP_ze8u0-mWgmKOaeQugSG6V-lw4lVWESRLM2YF_i31LH8ntaT35b_Kxx9oobn6_ubVXaKGQWQ/s200/compacta_gql_modelo_0029.jpg"></a> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-_o6mcodWGGB2vBcuesWLb3mEw6B5VS595Wc7ZzwXxZcIAXb9QyJMKd87N_cXkKSozDKTdLpH-ySGNnMZd5QynPQJ4MzsrzpczVTWc8ah0yQR2XmqJry5joxgBZaW2GNO6qh9WeefbE0/s1600/compacta_gql_modelo_0030.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-_o6mcodWGGB2vBcuesWLb3mEw6B5VS595Wc7ZzwXxZcIAXb9QyJMKd87N_cXkKSozDKTdLpH-ySGNnMZd5QynPQJ4MzsrzpczVTWc8ah0yQR2XmqJry5joxgBZaW2GNO6qh9WeefbE0/s200/compacta_gql_modelo_0030.jpg"></a> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbOO4nVqcDYFzgPzvVoEZwdRwZN7tFO0wtvlzzi9aerNzLk6mH8qMaQ_Qhydttk2ftd66hKLROVh006rNAcRpW-dWXrsD8hANWqruxByZqxPupGkBxKYOYuhb1u78zFcC6EwdfcfJYn2M/s1600/compacta_gql_modelo_0031.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbOO4nVqcDYFzgPzvVoEZwdRwZN7tFO0wtvlzzi9aerNzLk6mH8qMaQ_Qhydttk2ftd66hKLROVh006rNAcRpW-dWXrsD8hANWqruxByZqxPupGkBxKYOYuhb1u78zFcC6EwdfcfJYn2M/s200/compacta_gql_modelo_0031.jpg"></a>
<br /><br />
<font size="3"><b>6 - Adicionando o Execute Process Task</b></font>
<br /><br />
No Data Flow vamos criar colocar o Execute Process Task - Este processo vai compactar a pasta temporaria;
<br /><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7-Z4lBFpKmP-_aBx20u5X-c_JFFmmimk_hk2uCtfAkeS9WpsvVhw4zQMMW9jOYWZTqTVlPnU0bHQ83b-wSjkD5Qorc-yc5SRGkdBTQ0T3YBEgzQzFjmFd20Nn6UgxZZ1ZVND8cvPfAn4/s1600/compacta_gql_modelo_0040.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7-Z4lBFpKmP-_aBx20u5X-c_JFFmmimk_hk2uCtfAkeS9WpsvVhw4zQMMW9jOYWZTqTVlPnU0bHQ83b-wSjkD5Qorc-yc5SRGkdBTQ0T3YBEgzQzFjmFd20Nn6UgxZZ1ZVND8cvPfAn4/s200/compacta_gql_modelo_0040.jpg"></a> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4ok_o3pHi-j48nkdK7YeEWb5uPaG6ETk-79wXAOaF96SSMR3o6LuzbF3ddITxCTfIHUHAOBVcKnj0IsCbdXkvjGHRln0bTPNrv6dF_KG-MkOCpGHSTyNLekBGNpoDwsQKGHUoYu8vogg/s1600/20.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4ok_o3pHi-j48nkdK7YeEWb5uPaG6ETk-79wXAOaF96SSMR3o6LuzbF3ddITxCTfIHUHAOBVcKnj0IsCbdXkvjGHRln0bTPNrv6dF_KG-MkOCpGHSTyNLekBGNpoDwsQKGHUoYu8vogg/s200/20.jpg"></a> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3_bs3cF-MUEPdOaO0z9kGSVKVnv38Q15yzKcgsnFHRYjmDusVvFcAZ9e3dqzur8y0C2AweKMiemJO5xIqLQabaKPoM_9JItdt8NddSM7j8Vw0gSJ94RKWHex1V3F9zDZbadA9xHdSsmY/s1600/21.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3_bs3cF-MUEPdOaO0z9kGSVKVnv38Q15yzKcgsnFHRYjmDusVvFcAZ9e3dqzur8y0C2AweKMiemJO5xIqLQabaKPoM_9JItdt8NddSM7j8Vw0gSJ94RKWHex1V3F9zDZbadA9xHdSsmY/s200/21.jpg"></a> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglNAWEXWS305oS_6G5dUz_zqylS0BMIzVAAtzNh5Apc9pSaJQfM1KOJdLoaUZRtEhZwII_jXM6OVTn6ooKVbRkdJRD2RBD0JExBZN3sviYP6LQLOx1NkLxjiCGz83DOtkYpCwySc4QXHU/s1600/22.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglNAWEXWS305oS_6G5dUz_zqylS0BMIzVAAtzNh5Apc9pSaJQfM1KOJdLoaUZRtEhZwII_jXM6OVTn6ooKVbRkdJRD2RBD0JExBZN3sviYP6LQLOx1NkLxjiCGz83DOtkYpCwySc4QXHU/s200/22.jpg"></a> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhF_EQO4JOXkjWIh5oDZwSfC-xbAxhNwZFqPNT9OCS3Ck-g-DYr19Gr8o1jf70H1SYn5x_OC8n-BxOWSxzOXQDzdmwR5NrI_i3-OpoSVlZ3koHmlgjZzOJv7fCcZSWyB5pbvcojr1cH2qg/s1600/compacta_gql_modelo_0046.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhF_EQO4JOXkjWIh5oDZwSfC-xbAxhNwZFqPNT9OCS3Ck-g-DYr19Gr8o1jf70H1SYn5x_OC8n-BxOWSxzOXQDzdmwR5NrI_i3-OpoSVlZ3koHmlgjZzOJv7fCcZSWyB5pbvcojr1cH2qg/s200/compacta_gql_modelo_0046.jpg"></a> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2OKhQgaf3WRStL6Q5vSQKNMndUOm5Dzw5wSTQbziTl6E1UIpn6zrNPZPw14Mha6dz1ZJSTrXULdc7HvcDrbXHp-BCe2IoBFHj6xYlLvV_uEZExvJNeL9eNZUUJ0rfl1bB7-jK1ceeCmM/s1600/compacta_gql_modelo_0047.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2OKhQgaf3WRStL6Q5vSQKNMndUOm5Dzw5wSTQbziTl6E1UIpn6zrNPZPw14Mha6dz1ZJSTrXULdc7HvcDrbXHp-BCe2IoBFHj6xYlLvV_uEZExvJNeL9eNZUUJ0rfl1bB7-jK1ceeCmM/s200/compacta_gql_modelo_0047.jpg"></a>
<br /><br />
Em > Process
<pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>RequireFullFileName - True
Executable - C:\Program Files\WinRAR\Rar.exe
Arguments - a -df -ep1 -m5 + caminho_pasta_tmp
FailTaskIfReturnCodeIsNotSucessValue - True
SucessValue - 0
TimeOut - 0</code></pre>
Em > Arguments > Adicione
<pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>"a -df -ep1 -m5 " + @[User::caminho_backup_gql] + " " + @[User::caminho_pasta_tmp]</code></pre>
<font size="3"><b>7 - Adicionando o Script Task</b></font>
<br /><br />
No Data Flow vamos adicionar o Script Task (Transformation) - esta parte vai deletar os arquivos compactados antigos - vou deixar somente os 12 últimos arquivos compactados, surgindo mais um novo o arquivo mais antigo será deletado;
</br></br>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDhRFYVGTe4NcQ7opBojlijqW9OvO5M3BhNqDs5hEbbtjXkPOLGjlszawMnEh90esSIqNAFQ-dUxmnuxMZDfxI98cZyVpUIpwcFC6BVT7LOBaQHOBsmEj0iD4lj5UMhl_OYqUh1vFJYpI/s1600/30.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDhRFYVGTe4NcQ7opBojlijqW9OvO5M3BhNqDs5hEbbtjXkPOLGjlszawMnEh90esSIqNAFQ-dUxmnuxMZDfxI98cZyVpUIpwcFC6BVT7LOBaQHOBsmEj0iD4lj5UMhl_OYqUh1vFJYpI/s200/30.jpg"></a> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZGmp6egJ4KLIloZO94DQEih5aLFxLy8-Eq8_6Q1RWDLG2abVfgh13SaDDBfWrRd3y8-SUON3wyyvjJ3YVKXi_4fURYmEX2OnKbOQBHn3tqQs7UGO9KWhdJusqsz6tQo5P7ESDqdtbCkc/s1600/31.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZGmp6egJ4KLIloZO94DQEih5aLFxLy8-Eq8_6Q1RWDLG2abVfgh13SaDDBfWrRd3y8-SUON3wyyvjJ3YVKXi_4fURYmEX2OnKbOQBHn3tqQs7UGO9KWhdJusqsz6tQo5P7ESDqdtbCkc/s200/31.jpg"></a> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisQg0xQzHZKN2BfJBC9cBvpkeTjb2Ma13nhQqXrvlWtKtIJ_9gtq_HoRDIQ5KjCnG-FQbDLfRiMPFFIBZbgHX2RvlXFmvuhdW7NB4jK5xkBUgOvuaMRvq1GN05i6d_whNl0QduOPsrVDI/s1600/32.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisQg0xQzHZKN2BfJBC9cBvpkeTjb2Ma13nhQqXrvlWtKtIJ_9gtq_HoRDIQ5KjCnG-FQbDLfRiMPFFIBZbgHX2RvlXFmvuhdW7NB4jK5xkBUgOvuaMRvq1GN05i6d_whNl0QduOPsrVDI/s200/32.jpg"></a>
</br></br>
ReadOnlyVariable<pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>User::caminho_backup_dois_gql,User::prg_periodo</code></pre>
Em (Edit Script) cole o script abaixo;
<pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>/*
Microsoft SQL Server Integration Services Script Task
Write scripts using Microsoft Visual C# 2008.
The ScriptMain is the entry point class of the script.
* Este script deleta o arquivo mais antigo do backup compactado da s371
*/
using System;
using System.Data;
using Microsoft.SqlServer.Dts.Runtime;
using System.Windows.Forms;
using System.IO;
namespace ST_bb39ea0d414d46bbbe9be76558ec7188.csproj
{
[Microsoft.SqlServer.Dts.Tasks.ScriptTask.SSISScriptTaskEntryPointAttribute]
public partial class ScriptMain : Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase
{
#region VSTA generated code
enum ScriptResults
{
Success = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Success,
Failure = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Failure
};
#endregion
/*
The execution engine calls this method when the task executes.
To access the object model, use the Dts property. Connections, variables, events,
and logging features are available as members of the Dts property as shown in the following examples.
To reference a variable, call Dts.Variables["MyCaseSensitiveVariableName"].Value;
To post a log entry, call Dts.Log("This is my log text", 999, null);
To fire an event, call Dts.Events.FireInformation(99, "test", "hit the help message", "", 0, true);
To use the connections collection use something like the following:
ConnectionManager cm = Dts.Connections.Add("OLEDB");
cm.ConnectionString = "Data Source=localhost;Initial Catalog=AdventureWorks;Provider=SQLNCLI10;Integrated Security=SSPI;Auto Translate=False;";
Before returning from this method, set the value of Dts.TaskResult to indicate success or failure.
To open Help, press F1.
*/
public void Main()
{
//----------------------------------------------------------------------------
//Display da variavel da pasta que vamos deletar
//----------------------------------------------------------------------------
//MessageBox.Show(Dts.Variables["User::caminho_backup_dois_gql"].Value.ToString());
int RetentionPeriod = Convert.ToInt32(Dts.Variables["User::prg_periodo"].Value.ToString());
string directoryPath = Dts.Variables["User::caminho_backup_dois_gql"].Value.ToString();
//string directoryPath = Dts.Variables["User::prg_pasta_backup"].Value.ToString();
string[] oldfiles = System.IO.Directory.GetFiles(directoryPath, "*.*");
foreach (string currFile in oldfiles)
{
FileInfo currFileInfo = new FileInfo(currFile);
//================================================================================
//abaixo deleta os arquivos pela data de criacao
//================================================================================
if (currFileInfo.CreationTime < (DateTime.Now.AddDays(-RetentionPeriod)))
//================================================================================
//abaixo deleta os arquivos pela data de modificacao
//================================================================================
//if (currFileInfo.LastWriteTime < (DateTime.Now.AddDays(-RetentionPeriod)))
//================================================================================
{
currFileInfo.Delete();
}
}
// TODO: Add your code here
Dts.TaskResult = (int)ScriptResults.Success;
}
}
}</code></pre>
<font size="3"><b>8 - Rodando o Projeto</b></font>
<br /><br />
Rodando para ver;
<br /><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDtceRTZaKtvk5Et5_QyI2YUWoYrZk0iUDO8unHYOhyZU76ofzgIIzOnS_quAYPg5dM168hg5FlJyORZq4yj845gWFw8p59dZJuMhvt6lRr7TgsXdnOxmjopJsHW_mGWfVN_jYWgcZqbw/s1600/50.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDtceRTZaKtvk5Et5_QyI2YUWoYrZk0iUDO8unHYOhyZU76ofzgIIzOnS_quAYPg5dM168hg5FlJyORZq4yj845gWFw8p59dZJuMhvt6lRr7TgsXdnOxmjopJsHW_mGWfVN_jYWgcZqbw/s200/50.jpg"></a> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6hHzIYIl0dzG0o143_EZ6yIM2RXl8QrkvzTRVpuJHvHArCUObnelpJdjpbFnrCZ4UEjNu05lvrMnPZwMp0qlInw0dHLMllxhoc9RGAwnNbQ7yJIoX_0bQd74EmNAcPDcWRnsOJpChGyA/s1600/51.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6hHzIYIl0dzG0o143_EZ6yIM2RXl8QrkvzTRVpuJHvHArCUObnelpJdjpbFnrCZ4UEjNu05lvrMnPZwMp0qlInw0dHLMllxhoc9RGAwnNbQ7yJIoX_0bQd74EmNAcPDcWRnsOJpChGyA/s200/51.jpg"></a> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbo1dEx41NQQxelgbkh8Do77YjT3aL5voJxrAm_s3o9bIT1k-wNjFHsWnXmON8JRpkJnc5YrmUTAL1SRy3zEJwBjDFS1bzJ45_E1zU947TY3w5-X53EOv6053oybjNAw_X7sbLTIs9b4g/s1600/52.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbo1dEx41NQQxelgbkh8Do77YjT3aL5voJxrAm_s3o9bIT1k-wNjFHsWnXmON8JRpkJnc5YrmUTAL1SRy3zEJwBjDFS1bzJ45_E1zU947TY3w5-X53EOv6053oybjNAw_X7sbLTIs9b4g/s200/52.jpg"></a>Claudemar Martins de Sáhttp://www.blogger.com/profile/05069108300402187406noreply@blogger.com0tag:blogger.com,1999:blog-8798968522614237503.post-67156777491203093452014-11-26T14:14:00.000-03:002015-03-08T12:11:34.972-04:00Que delimitador usar - InformixNesse artigo, o objetivo é apresentar uma sugestão envolvendo o problema de descobrir que delimitador usar em uma tabela do informix que parece que usa todos as letras/símbolos, vamos descobrir qual é a letra/simbolo que na tabela do informix menos usa, o backup é de uma tabela do Informix e restauração vai ser no SQL Server 2014.
<br /><br />
Umas das soluções foi pesquisar no arquivo do backup da tabela do Informix e ver se tem alguma letra/simbolo disponivel, primeiro vamos preparar o script que vamos rodar o backup da tabela - o backup via external tables que é o backup mais rápido aqui pra mim;
<br /><br />
Criar este script com o nome backup_script.sql
<pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>#!/bin/sh
###############################################################################
# Script para backup de tabelas via EXTERNAL TABLES #
# Criado Por Claudemar Martins de Sa #
# Uso: backup_script.sh [DATABASE] [TABELA] #
# Rodar: ./backup_script.sql nome_do_banco nome_da_tabela #
###############################################################################
DATABASE=${1}
TABLE=${2}
dbaccess ${DATABASE} >/dev/null << EOF
set pdqpriority 30;
CREATE EXTERNAL TABLE informix.bkp_${TABLE}
SAMEAS ${TABLE}
USING
(DATAFILES ("DISK:/export/home/informix/backup/${TABLE}.unl"),
FORMAT 'DELIMITED',
DELIMITER '',
RECORDEND '',
Deluxe,
NUMROWS 50,
MAXERRORS 50,
REJECTFILE ''
);
insert into bkp_${TABLE}
select * from ${TABLE};
drop table bkp_${TABLE}
EOF</code></pre>
Rodando o backup da tabela sem o delimitador - rodamos assim - ./nome_do_script nome_do_banco nome_da_tabela
<pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>./backup_script.sql faz_sgf notes_rel_baixa
Database selected.
PDQ Priority set.
Table created.
9992 row(s) inserted.
Table dropped.
Database closed.</code></pre>
Script que vamos analisar o backup e ver se tem alguma letra que podemos usar como delimitador
<br /><br />
Criar este script com o nome delimitador.sql
<pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code># :%s/antes/nova/g
TABLE=${1}
echo "q - $(cat $TABLE | grep '\q' | wc -l)" ;
echo "w - $(cat $TABLE | grep '\w' | wc -l)" ;
echo "e - $(cat $TABLE | grep '\e' | wc -l)" ;
echo "r - $(cat $TABLE | grep '\r' | wc -l)" ;
echo "t - $(cat $TABLE | grep '\t' | wc -l)" ;
echo "y - $(cat $TABLE | grep '\y' | wc -l)" ;
echo "u - $(cat $TABLE | grep '\u' | wc -l)" ;
echo "i - $(cat $TABLE | grep '\i' | wc -l)" ;
echo "o - $(cat $TABLE | grep '\o' | wc -l)" ;
echo "p - $(cat $TABLE | grep '\p' | wc -l)" ;
echo "a - $(cat $TABLE | grep '\a' | wc -l)" ;
echo "s - $(cat $TABLE | grep '\s' | wc -l)" ;
echo "d - $(cat $TABLE | grep '\d' | wc -l)" ;
echo "f - $(cat $TABLE | grep '\f' | wc -l)" ;
echo "g - $(cat $TABLE | grep '\g' | wc -l)" ;
echo "h - $(cat $TABLE | grep '\h' | wc -l)" ;
echo "k - $(cat $TABLE | grep '\k' | wc -l)" ;
echo "l - $(cat $TABLE | grep '\l' | wc -l)" ;
echo "z - $(cat $TABLE | grep '\z' | wc -l)" ;
echo "x - $(cat $TABLE | grep '\x' | wc -l)" ;
echo "c - $(cat $TABLE | grep '\c' | wc -l)" ;
echo "v - $(cat $TABLE | grep '\v' | wc -l)" ;
echo "b - $(cat $TABLE | grep '\b' | wc -l)" ;
echo "n - $(cat $TABLE | grep '\n' | wc -l)" ;
echo "m - $(cat $TABLE | grep '\m' | wc -l)" ;
echo ", - $(cat $TABLE | grep '\,' | wc -l)" ;
echo ". - $(cat $TABLE | grep '\.' | wc -l)" ;
echo "; - $(cat $TABLE | grep '\;' | wc -l)" ;
echo "! - $(cat $TABLE | grep '\!' | wc -l)" ;
echo "@ - $(cat $TABLE | grep '\@' | wc -l)" ;
echo "# - $(cat $TABLE | grep '\#' | wc -l)" ;
echo "$ - $(cat $TABLE | grep '\$' | wc -l)" ;
echo "% - $(cat $TABLE | grep '\%' | wc -l)" ;
echo "& - $(cat $TABLE | grep '\&' | wc -l)" ;
echo "* - $(cat $TABLE | grep '\*' | wc -l)" ;
echo "( - $(cat $TABLE | grep '(' | wc -l)" ;
echo ") - $(cat $TABLE | grep ')' | wc -l)" ;
echo "_ - $(cat $TABLE | grep '\_' | wc -l)" ;
echo "- - $(cat $TABLE | grep '\-' | wc -l)" ;
echo "+ - $(cat $TABLE | grep '\+' | wc -l)" ;
echo "| - $(cat $TABLE | grep '\|' | wc -l)" ;
echo "~ - $(cat $TABLE | grep '\~' | wc -l)" ;
echo "? - $(cat $TABLE | grep '\?' | wc -l)" ;
echo "[ - $(cat $TABLE | grep '\[' | wc -l)" ;
echo "] - $(cat $TABLE | grep '\]' | wc -l)" ;
echo "< - $(cat $TABLE | grep '\<' | wc -l)" ;
echo "> - $(cat $TABLE | grep '\>' | wc -l)" ;
echo "{ - $(cat $TABLE | grep '\{' | wc -l)" ;
echo "} - $(cat $TABLE | grep '\}' | wc -l)" ;
echo -n '" - '
cat $TABLE | grep '"' | wc -l</code></pre>
Rodando o programa para descobrir que letra não existe no arquivo de backup da tabela, reparem o { não tem - vou usar ele como delimitador
<pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>./delimitador.sh notes_rel_baixa.unl
q - 8079
w - 24779
e - 19215
r - 19246
t - 17554
y - 11
u - 17609
i - 17987
o - 19566
p - 14714
a - 18981
s - 18458
d - 18332
f - 13783
g - 10093
h - 6551
k - 136
l - 18383
z - 4793
x - 8326
c - 16933
v - 13901
b - 24779
n - 19679
m - 16356
, - 13836
. - 20762
; - 1238
! - 7
@ - 1
# - 0
$ - 1364
% - 228
& - 21
* - 19
( - 1832
) - 2457
_ - 6
- - 18013
+ - 30
| - 47306
~ - 5
? - 7
[ - 1
] - 4
< - 24779
> - 24779
{ - 0
} - 1
" - 233</code></pre>
Alterando o arquivo de backup e colocando a letra { como delimitador
<pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>#!/bin/sh
###############################################################################
# Script para backup de tabelas via EXTERNAL TABLES #
# Criado Por Claudemar Martins de Sa #
# Uso: backup_script.sh [DATABASE] [TABELA] #
# Rodar: ./backup_script.sql nome_do_banco nome_da_tabela #
###############################################################################
DATABASE=${1}
TABLE=${2}
dbaccess ${DATABASE} >/dev/null << EOF
set pdqpriority 30;
CREATE EXTERNAL TABLE informix.bkp_${TABLE}
SAMEAS ${TABLE}
USING
(DATAFILES ("DISK:/export/home/informix/backup/${TABLE}.unl"),
FORMAT 'DELIMITED',
DELIMITER '{',
RECORDEND '',
Deluxe,
NUMROWS 50,
MAXERRORS 50,
REJECTFILE ''
);
insert into bkp_${TABLE}
select * from ${TABLE};
drop table bkp_${TABLE}
EOF</code></pre>
Rodando o backup da tabela no Informix
<pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>./backup_script.sql faz_sgf notes_rel_baixa
Database selected.
PDQ Priority set.
Table created.
9992 row(s) inserted.
Table dropped.
Database closed.</code></pre>
Criando a tabela no SQL Server 2014 igual como esta no Informix
<pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>use faz_sgf;
create table "dbo".notes_rel_baixa
(
osn_codigo integer not null ,
rel_versao integer not null ,
inscricaoestadual decimal(14,0) not null ,
baixa_dt_ini_fisc datetime2,
baixa_dt_fin_fisc datetime2,
baixa_folha varchar(10),
baixa_rudfto varchar(8),
baixa_dt_conclusao datetime2,
baixa_descritivo text,
baixa_altcadastral text,
baixa_versaosf varchar(1,1),
baixa_sit_aprovacao integer not null ,
usr_codigo_criacao integer not null ,
usr_dt_hr_criacao datetime2 ,
usr_codigo_alter integer,
usr_dt_hr_alter datetime2,
primary key (osn_codigo,rel_versao,inscricaoestadual)
);</code></pre>
O utilitário bcp é uma ferramenta de linha de comandos que usa a API do BCP (Programa de cópia em massa).
<pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>bcp bdfaz_faz_sgf.dbo.notes_rel_baixa format nul -c -f D:\Usuários\faz_sgf\notes_rel_baixa.fmt -T -S s905\itc005 -t "{"</code></pre>
Ficou assim;
<pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>11.0
16
1 SQLCHAR 0 12 "{" 1 osn_codigo ""
2 SQLCHAR 0 12 "{" 2 rel_versao ""
3 SQLCHAR 0 41 "{" 3 inscricaoestadual ""
4 SQLCHAR 0 30 "{" 4 baixa_dt_ini_fisc ""
5 SQLCHAR 0 30 "{" 5 baixa_dt_fin_fisc ""
6 SQLCHAR 0 10 "{" 6 baixa_folha SQL_Latin1_General_CP1_CI_AS
7 SQLCHAR 0 8 "{" 7 baixa_rudfto SQL_Latin1_General_CP1_CI_AS
8 SQLCHAR 0 30 "{" 8 baixa_dt_conclusao ""
9 SQLCHAR 0 0 "{" 9 baixa_descritivo SQL_Latin1_General_CP1_CI_AS
10 SQLCHAR 0 0 "{" 10 baixa_altcadastral SQL_Latin1_General_CP1_CI_AS
11 SQLCHAR 0 1 "{" 11 baixa_versaosf SQL_Latin1_General_CP1_CI_AS
12 SQLCHAR 0 12 "{" 12 baixa_sit_aprovacao ""
13 SQLCHAR 0 12 "{" 13 usr_codigo_criacao ""
14 SQLCHAR 0 30 "{" 14 usr_dt_hr_criacao ""
15 SQLCHAR 0 12 "{" 15 usr_codigo_alter ""
16 SQLCHAR 0 30 "{\n" 16 usr_dt_hr_alter ""</code></pre>
Coloco no servidor SQL Server os arquivos de bcp e o arquivo de backup da tabela no Informix - rodando este comando;
<pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>use faz_sgf;
BULK INSERT notes_rel_baixa --- delimitador ({)
FROM 'I:\data\bdfaz\carga_claudemar\faz_sgf\notes_rel_baixa.unl' -- unload
WITH (FORMATFILE = 'I:\data\bdfaz\carga_claudemar\faz_sgf\notes_rel_baixa.fmt'); -- bcp</code></pre>
Terminou ok a importação no SQL Server
<pre style="background-color: black; border: 1px dashed #999999; color: white; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"><code>(9992 row(s) affected)</code></pre>
Claudemar Martins de Sáhttp://www.blogger.com/profile/05069108300402187406noreply@blogger.com0