<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5173052840491277468</id><updated>2012-02-07T16:36:22.598-02:00</updated><category term='Unix'/><category term='Informix'/><title type='text'>Tecnologia da Informação</title><subtitle type='html'>Blog dedicado a informações sobre o tema Tecnologia da Informação, a idéia é bloggar sobre todos os assuntos relacionados, desde hardware até Gestão Empresarial, mas meu foco principal sempre será o Informix e o Unix.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://ajmoreti.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://ajmoreti.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default?start-index=101&amp;max-results=100'/><author><name>Amilcar de Jesus Moreti</name><uri>http://www.blogger.com/profile/04022310434818885345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://1.bp.blogspot.com/_I4DneDrgUiQ/Sq_P5t7dwtI/AAAAAAAAAFA/mYME8h_xiF4/S220/Imagem0116.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>122</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5173052840491277468.post-8611242358424637532</id><published>2012-02-07T16:36:00.001-02:00</published><updated>2012-02-07T16:36:22.718-02:00</updated><title type='text'>Utilizando os Manuais do SuSE</title><content type='html'>&lt;p&gt;Ola Pessoal, hoje vou escrever um pouco de como utilizar melhor as paginas (man) do SuSE, porem esse texto vai servir para muitas outras distribuições.&lt;/p&gt; &lt;p&gt;Em todas as distribuições Linux, são instalados os manuais e são muito uteis em varios momentos na vida de um administrador de sistema Unix em geral, então fica aqui algumas dicas de como utilizar melhor esses manuais.&lt;/p&gt; &lt;p&gt;Suponha que você queira encontra paginas de manual para determinados comandos que você nao saiba o nome porem tem relacionamento com uma determinada palavra. Utilizando o comando &lt;em&gt;apropos&lt;/em&gt; ele pesquisara em uma base de dados e mostrara algumas informações, vamos ver um exemplo:&lt;/p&gt; &lt;p&gt;&lt;font color="#666666"&gt;&lt;strong&gt;amilcar@isis:~&amp;gt; apropos cron&lt;/strong&gt;&lt;br&gt;Config::Crontab (3pm) - Read/Write Vixie compatible crontab(5) files&lt;br&gt;cron (8)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - daemon to execute scheduled commands (ISC Cron V4.1)&lt;br&gt;crontab (1)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - maintain crontab files for individual users (ISC Cron V4.1)&lt;br&gt;crontab (1p)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - schedule periodic background work&lt;br&gt;crontab (5)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - tables for driving cron (ISC Cron V4.1)&lt;br&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;no exemplo acima podemos observar que o comando &lt;em&gt;apropos&lt;/em&gt; nos traz sugestão de todos os manuais que ele encontrou sobre o assunto cron.&lt;/p&gt; &lt;p&gt;Temos tambem o comando &lt;em&gt;whatis&lt;/em&gt; que é uma forma de mostrar comandos que contem&amp;nbsp; palavra que voce digitar:&lt;/p&gt; &lt;p&gt;&lt;font color="#666666"&gt;&lt;strong&gt;amilcar@isis:~&amp;gt; whatis ls&lt;br&gt;&lt;/strong&gt;ls (1)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - list directory contents&lt;br&gt;ls (1p)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - list directory contents&lt;br&gt;&lt;strong&gt;amilcar@isis:~&amp;gt; whatis cron&lt;/strong&gt;&lt;br&gt;cron (8)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - daemon to execute scheduled commands (ISC Cron V4.1)&lt;br&gt;&lt;strong&gt;amilcar@isis:~&amp;gt; whatis whatis nslookup&lt;/strong&gt;&lt;br&gt;whatis (1)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - display manual page descriptions&lt;br&gt;nslookup (1)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - query Internet name servers interactively&lt;br&gt;amilcar@isis:~&amp;gt;&lt;br&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#666666"&gt;&lt;font color="#000000"&gt;E a maneira de exibir a pagina de manual para um comando é o comando &lt;em&gt;man&lt;/em&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#666666"&gt;&lt;strong&gt;amilcar@isis:~&amp;gt; man head&lt;/strong&gt;&lt;br&gt;Man: find all matching manual pages&lt;br&gt; * head (1)&lt;br&gt;&amp;nbsp;&amp;nbsp; head (1p)&lt;br&gt;Man: What manual page do you want?&lt;br&gt;Man:&lt;br&gt;&lt;/font&gt;&lt;/p&gt;&lt;font color="#666666"&gt;&lt;/font&gt; &lt;p&gt;HEAD(1)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; User Commands&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HEAD(1)&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;NAME&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; head - output the first part of files&lt;/p&gt; &lt;p&gt;SYNOPSIS&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; head [OPTION]... [FILE]...&lt;/p&gt; &lt;p&gt;DESCRIPTION&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Print&amp;nbsp; the&amp;nbsp; first&amp;nbsp; 10&amp;nbsp; lines&amp;nbsp; of each FILE to standard output.&amp;nbsp; With more than one FILE, precede each with a header giving the file&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; name.&amp;nbsp; With no FILE, or when FILE is -, read standard input.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Mandatory arguments to long options are mandatory for short options too.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -c, --bytes=[-]N&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print the first N bytes of each file; with the leading `-', print all but the last N bytes of each file&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -n, --lines=[-]N&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print the first N lines instead of the first 10; with the leading `-', print all but the last N lines of each file&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -q, --quiet, --silent&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; never print headers giving file names&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -v, --verbose&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; always print headers giving file names&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --help display this help and exit&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --version&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; output version information and exit&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; N may have a multiplier suffix: b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024, GB 1000*1000*1000, G 1024*1024*1024, and&amp;nbsp; so&amp;nbsp; on&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for T, P, E, Z, Y.&lt;/p&gt; &lt;p&gt;AUTHOR&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Written by David MacKenzie and Jim Meyering.&lt;/p&gt; &lt;p&gt;REPORTING BUGS&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Report bugs to &amp;lt;bug-coreutils@gnu.org&amp;gt;.&lt;/p&gt; &lt;p&gt;COPYRIGHT&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Copyright Â© 2008 Free Software Foundation, Inc.&amp;nbsp; License GPLv3+: GNU GPL version 3 or later &amp;lt;&lt;a href="http://gnu.org/licenses/gpl.html"&gt;http://gnu.org/licenses/gpl.html&lt;/a&gt;&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; This is free software: you are free to change and redistribute it.&amp;nbsp; There is NO WARRANTY, to the extent permitted by law.&lt;/p&gt; &lt;p&gt; Manual page head(1) line 1&lt;br&gt;&lt;/p&gt; &lt;p&gt;O comando anterior exibe a pagina de manual encontrado para o comando head. Como você viu no exemplo anterior, alguns comandos podem ter multiplas paginas de manuais. Por exemplo, o comando acima, “&lt;em&gt;man head”&lt;/em&gt; possui 2 manuais, isso porque os manuais são organizados em sessões, como mostro na tabela abaixo:&lt;/p&gt; &lt;table border="0" cellspacing="0" cellpadding="2" width="645"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="36"&gt;&lt;strong&gt;Sessão&lt;/strong&gt;&lt;/td&gt; &lt;td valign="top" width="607"&gt;&lt;strong&gt;Descrição&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="36"&gt;0&lt;/td&gt; &lt;td valign="top" width="607"&gt;Arquivos de Cabeçalho (geralmente encontrado em /usr/include)&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="36"&gt;1&lt;/td&gt; &lt;td valign="top" width="607"&gt;Programas executaveis ou comandos shell&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="36"&gt;2&lt;/td&gt; &lt;td valign="top" width="607"&gt;System calls&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="36"&gt;3&lt;/td&gt; &lt;td valign="top" width="607"&gt;Library calls&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="36"&gt;4&lt;/td&gt; &lt;td valign="top" width="607"&gt;Arquivos especiais&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="36"&gt;5&lt;/td&gt; &lt;td valign="top" width="607"&gt;Arquivos formatados e convencionados&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="36"&gt;6&lt;/td&gt; &lt;td valign="top" width="607"&gt;Games&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="36"&gt;7 &lt;/td&gt; &lt;td valign="top" width="607"&gt;Diversos&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="36"&gt;8&lt;/td&gt; &lt;td valign="top" width="607"&gt;Comandos de Administração de Sistemas&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="36"&gt;9&lt;/td&gt; &lt;td valign="top" width="607"&gt;Rotinas de Kernel (não é padrao)&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;O código a seguir mostra alguns exemplos de outras opções úteis com o comando man.&lt;/p&gt; &lt;p&gt;&lt;font color="#666666"&gt;&lt;strong&gt;amilcar@isis:~&amp;gt; man mount -a&lt;/strong&gt;&lt;br&gt;Man: find all matching manual pages&lt;br&gt; * mount (8)&lt;br&gt;&amp;nbsp;&amp;nbsp; mount (2)&lt;br&gt;Man: What manual page do you want?&lt;br&gt;Man:&lt;/font&gt;&lt;br&gt;&lt;br&gt;Mostra todas as páginas de manual relacionadas com componente&lt;/p&gt; &lt;p&gt;&lt;font color="#666666"&gt;&lt;strong&gt;amilcar@isis:~&amp;gt; man 5 crontab&lt;/strong&gt;&lt;br&gt;amilcar@isis:~&amp;gt;&lt;br&gt;&lt;/font&gt;&lt;br&gt;Mostra a sessão 5 para o manual do crontab&lt;/p&gt; &lt;p&gt;&lt;font color="#666666"&gt;&lt;strong&gt;amilcar@isis:~&amp;gt; man -f mount&lt;/strong&gt;&lt;br&gt;mount (2)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - mount file system&lt;br&gt;mount (8)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - mount a file system&lt;br&gt;amilcar@isis:~&amp;gt;&lt;/font&gt;&lt;br&gt;&lt;br&gt;Mesmo que o comando &lt;em&gt;whatis&lt;/em&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#666666"&gt;&lt;strong&gt;amilcar@isis:~&amp;gt; man -k mount&lt;br&gt;&lt;/strong&gt;&lt;/font&gt;&lt;font color="#666666"&gt;auto.master (5)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Master Map for automounter&lt;br&gt;autofs (5)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Format of the automounter maps&lt;br&gt;autofs (8)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Control Script for automounter&lt;br&gt;automount (8)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - manage autofs mount points&lt;br&gt;free (1)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Display amount of free and used memory in the system&lt;br&gt;mdu (1)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - display the amount of space occupied by an MSDOS directory&lt;br&gt;mklost+found (8)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - create a lost+found directory on a mounted Linux second extended file system&lt;br&gt;mmount (1)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - mount an MSDOS disk&lt;br&gt;mount (2)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - mount file system&lt;br&gt;mount (8)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - mount a file system&lt;br&gt;mount.cifs (8)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - mount using the Common Internet File System (CIFS)&lt;br&gt;mount.nfs (8)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - mount a Network File System&lt;br&gt;mount.ntfs (8)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Third Generation Read/Write NTFS Driver&lt;br&gt;mount.ntfs-3g (8)&amp;nbsp;&amp;nbsp;&amp;nbsp; - Third Generation Read/Write NTFS Driver&lt;br&gt;mountd (8)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - NFS mount daemon&lt;br&gt;mountpoint (1)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - see if a directory is a mountpoint&lt;br&gt;ntfs-3g.probe (8)&amp;nbsp;&amp;nbsp;&amp;nbsp; - Probe an NTFS volume mountability&lt;br&gt;ntfsmount (8)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - NTFS module for FUSE.&lt;br&gt;rpc.mountd (8)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - NFS mount daemon&lt;br&gt;setup (2)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - setup devices and file systems, mount root file system&lt;br&gt;showmount (8)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - show mount information for an NFS server&lt;br&gt;sleep (1)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - delay for a specified amount of time&lt;br&gt;umount (2)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - unmount file system&lt;br&gt;umount (8)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - unmount file systems&lt;br&gt;umount.cifs (8)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - for normal, non-root users, to unmount their own Common Internet File System (CIFS) mounts&lt;br&gt;umount.nfs (8)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - unmount a Network File System&lt;br&gt;umount2 (2)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - unmount file system&lt;br&gt;amilcar@isis:~&amp;gt;&lt;/font&gt;&lt;br&gt;&lt;br&gt;Mesmo que o comando &lt;em&gt;apropos&lt;/em&gt;&lt;/p&gt; &lt;p&gt;Para quem gosta de pesquisar na net, pode pesquisar qualquer manual de comando no seguinte site: &lt;a href="http://linuxmanpages.com"&gt;Linux Man Pages&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5173052840491277468-8611242358424637532?l=ajmoreti.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajmoreti.blogspot.com/feeds/8611242358424637532/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://ajmoreti.blogspot.com/2012/02/utilizando-os-manuais-do-suse.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/8611242358424637532'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/8611242358424637532'/><link rel='alternate' type='text/html' href='http://ajmoreti.blogspot.com/2012/02/utilizando-os-manuais-do-suse.html' title='Utilizando os Manuais do SuSE'/><author><name>Amilcar de Jesus Moreti</name><uri>http://www.blogger.com/profile/04022310434818885345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://1.bp.blogspot.com/_I4DneDrgUiQ/Sq_P5t7dwtI/AAAAAAAAAFA/mYME8h_xiF4/S220/Imagem0116.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5173052840491277468.post-4158964656363566272</id><published>2012-02-06T17:19:00.001-02:00</published><updated>2012-02-06T17:19:51.910-02:00</updated><title type='text'>Usando o help no openSuSE</title><content type='html'>&lt;p&gt;A opção –h ou - - help são muitas vezes utilizados para mostrar ajuda de um determinado comando. Segue abaixo um exemplo ilustrando o help para o comando &lt;em&gt;ls&lt;/em&gt;:&lt;/p&gt; &lt;p&gt;&lt;font color="#666666"&gt;&lt;strong&gt;amilcar@isis:~&amp;gt; ls --help | less&lt;/strong&gt;&lt;/font&gt;&lt;br&gt;&lt;font color="#666666"&gt;Usage: ls [OPTION]... [FILE]...&lt;br&gt;List information about the FILEs (the current directory by default).&lt;br&gt;Sort entries alphabetically if none of -cftuvSUX nor --sort.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#666666"&gt;Mandatory arguments to long options are mandatory for short options too.&lt;br&gt;&amp;nbsp; -a, --all&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; do not ignore entries starting with .&lt;br&gt;&amp;nbsp; -A, --almost-all&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; do not list implied . and ..&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --author&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; with -l, print the author of each file&lt;br&gt;&amp;nbsp; -b, --escape&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print octal escapes for nongraphic characters&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --block-size=SIZE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; use SIZE-byte blocks&lt;br&gt;&amp;nbsp; -B, --ignore-backups&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; do not list implied entries ending with ~&lt;br&gt;&amp;nbsp; -c&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; with -lt: sort by, and show, ctime (time of last&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; modification of file status information)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; with -l: show ctime and sort by name&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; otherwise: sort by ctime&lt;br&gt;&amp;nbsp; -C&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; list entries by columns&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --color[=WHEN]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; control whether color is used to distinguish file&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; types.&amp;nbsp; WHEN may be `never', `always', or `auto'&lt;br&gt;&amp;nbsp; -d, --directory&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; list directory entries instead of contents,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; and do not dereference symbolic links&lt;br&gt;&amp;nbsp; -D, --dired&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; generate output designed for Emacs' dired mode&lt;br&gt;&amp;nbsp; -f&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; do not sort, enable -aU, disable -ls --color&lt;br&gt;&amp;nbsp; -F, --classify&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; append indicator (one of */=&amp;gt;@|) to entries&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --file-type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; likewise, except do not append `*'&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --format=WORD&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; across -x, commas -m, horizontal -x, long -l,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; single-column -1, verbose -l, vertical -C&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --full-time&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; like -l --time-style=full-iso&lt;br&gt;&amp;nbsp; -g&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; like -l, but do not list owner&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --group-directories-first&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; group directories before files.&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; augment with a --sort option, but any&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; use of --sort=none (-U) disables grouping&lt;br&gt;&amp;nbsp; -G, --no-group&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; in a long listing, don't print group names&lt;br&gt;&amp;nbsp; -h, --human-readable&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; with -l, print sizes in human readable format&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (e.g., 1K 234M 2G)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --si&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; likewise, but use powers of 1000 not 1024&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#666666"&gt;&lt;font color="#000000"&gt;A saida anterior mostra como o comando &lt;em&gt;ls&lt;/em&gt; é usado e disponibiliza uma lista de opções. Canalizando a saída para o comando &lt;em&gt;less. &lt;/em&gt;Você pode formatar as mensagem de help utilizando o comando &lt;em&gt;card&lt;/em&gt;. Por exemplo:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#666666"&gt;&lt;strong&gt;&lt;font color="#666666"&gt;amilcar@isis:~&amp;gt; card ls --output=/tmp/ls.ps&lt;/font&gt;&lt;br&gt;&lt;/strong&gt;&lt;/font&gt;&lt;font color="#666666"&gt;[/tmp/card.7334.R2KJSi/card (Reference Card): 2 pages on 1 sheet]&lt;br&gt;[Total: 2 pages on 1 sheet] saved into the file `/tmp/ls.ps'&lt;br&gt;&lt;/font&gt;&lt;strong&gt;&lt;font color="#666666"&gt;amilcar@isis:~&amp;gt; lpr ls.ps&lt;/strong&gt;&lt;/font&gt;&lt;br&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#666666"&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#000000"&gt;O resultado mostrado aqui é o &lt;em&gt;ls.ps&lt;/em&gt; que você pode abrir em leitor de PostScript para visualiza-lo. Você tambem pode utilizar o comando &lt;em&gt;lpr&lt;/em&gt; para imprimir o documentos gerado, se você não utilizar a opção &lt;em&gt;–output, &lt;/em&gt;isso podera ser enviado para uma impressora padrão automaticamente.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;Bom fica aqui a dica muito importante de como utilizar o help do Linux, isso é importante para aprendermos sobre as opções e a utilização correta de um determinado comando, hoje podemos localizar o help desses comando também na net, é só pesquisar que tem muitos sites bons explicando os comandos.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;ate a proxima.&lt;font color="#666666"&gt;&lt;/p&gt; &lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;/font&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5173052840491277468-4158964656363566272?l=ajmoreti.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajmoreti.blogspot.com/feeds/4158964656363566272/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://ajmoreti.blogspot.com/2012/02/usando-o-help-no-opensuse.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/4158964656363566272'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/4158964656363566272'/><link rel='alternate' type='text/html' href='http://ajmoreti.blogspot.com/2012/02/usando-o-help-no-opensuse.html' title='Usando o help no openSuSE'/><author><name>Amilcar de Jesus Moreti</name><uri>http://www.blogger.com/profile/04022310434818885345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://1.bp.blogspot.com/_I4DneDrgUiQ/Sq_P5t7dwtI/AAAAAAAAAFA/mYME8h_xiF4/S220/Imagem0116.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5173052840491277468.post-2706469820738769054</id><published>2012-01-20T16:35:00.001-02:00</published><updated>2012-01-20T16:35:02.046-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Unix'/><title type='text'>Iniciando com SuSE</title><content type='html'>&lt;p&gt;A maioria das versões de Linux, assim como Unix, define&amp;nbsp; o prompt de comando padrão como um sinal de dolar, &lt;em&gt;$,&lt;/em&gt; para usuários comuns e para o root #). o SuSE, entretanto, define o prompt de comando padrão como um sinal de maior&amp;nbsp; (&amp;gt;), mas segue a convenção dos Linux usando o sinal de cerquilha ou libra # para o usuario root. Ao longo dos meus post, você vai ver &lt;em&gt;$&lt;/em&gt; para o prompt de shell para comandos que podem rodar como qualquer usuario (não querer privilegios especiais).&lt;/p&gt; &lt;p&gt;Voce pode customizar seu prompt da maneira que voce quiser, usando o comando abaixo:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;font color="#666666"&gt;$ export PS1=" [\u@\h \w]\\$ "&lt;br&gt;[amilcar@isis /root]$&lt;/font&gt;&lt;br&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p&gt;Este comando configura o prompt com seu nome, &lt;em&gt;@&lt;/em&gt; o hostname corrente, com o diretorio de trabalho atual, tudo dentro dos colchetes, seguido pelo &lt;em&gt;$ &lt;/em&gt;que é o prompt tradicional.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&lt;strong&gt;Encontrando Comandos&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Alguns dos comandos que vou descrever em meus post, pode não ser encontrados na sua distribuição ou dependendo do usuario que você estiver logado, ou se digitar o comando errado, irá aparecer uma mensagem similar&amp;nbsp; a essa:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;font color="#666666"&gt;[amilcar@isis ~]$ comandoinexistente&lt;br&gt;bash: comandoinexistente: command not found&lt;/font&gt;&lt;br&gt;&lt;/p&gt; &lt;p&gt;Algumas das razões para voltar essa mensagem de erro:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Você pode ter digitado o comando errado;&lt;/li&gt; &lt;li&gt;O comando pode não existir em seu PATH;&lt;/li&gt; &lt;li&gt;Pode ser necessario do usuario root para executar o comando;&lt;/li&gt; &lt;li&gt;O comando pode nao estar instalado no computador;&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt; &lt;p&gt;Abaixo alguns comandos para extrair informações do comandos que deseja usar:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;font color="#666666"&gt;&lt;strong&gt;[amilcar@isis ~]$ type mount &lt;/strong&gt;&amp;nbsp; (Mostra o primeiro comando do PATH)&lt;br&gt;mount is /bin/mount&lt;br&gt;[amilcar@isis ~]$ ]&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#666666"&gt;&lt;strong&gt;[amilcar@isis ~]$ whereis mount&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/strong&gt;(Mostra binarios, fontes e manuais)&lt;br&gt;mount: /bin/mount /sbin/mount.nfs /sbin/mount.cifs /sbin/mount.nfs4 /sbin/mount.ntfs /sbin/mount.ntfs-3g /usr/share/man/man2/mount.2.gz /usr/share/man/man8/mount.8.gz&lt;br&gt;[amilcar@isis ~]$&lt;/font&gt;&lt;br&gt;&lt;font color="#666666"&gt;&lt;br&gt;&lt;strong&gt;[amilcar@isis ~]$ which mount &lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (procura pelo comando em qualquer lugar da file system)&lt;br&gt;/bin/mount&lt;br&gt;[amilcar@isis ~]$&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#666666"&gt;&lt;strong&gt;[amilcar@isis ~]$ rpm -qal |grep mount&amp;nbsp; &lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (encontrar pelo comando em qualquer pacote instalado)&lt;br&gt;/usr/bin/mmount&lt;br&gt;/usr/share/man/man1/mmount.1.gz&lt;br&gt;/usr/share/zsh/4.3.6/functions/_fusermount&lt;br&gt;/usr/share/zsh/4.3.6/functions/_mount&lt;br&gt;/usr/share/zsh/4.3.6/functions/_showmount&lt;br&gt;/usr/lib64/hal/hal-storage-cleanup-all-mountpoints&lt;br&gt;/usr/lib64/hal/hal-storage-cleanup-mountpoint&lt;br&gt;/usr/lib64/hal/hal-storage-mount&lt;br&gt;/usr/lib64/hal/hal-storage-unmount&lt;br&gt;/usr/lib/perl5/vendor_perl/5.10.0/x86_64-linux-thread-multi/linux/ncp_mount.ph&lt;br&gt;/usr/lib/perl5/vendor_perl/5.10.0/x86_64-linux-thread-multi/linux/nfs4_mount.ph&lt;br&gt;/usr/lib/perl5/vendor_perl/5.10.0/x86_64-linux-thread-multi/linux/nfs_mount.ph&lt;br&gt;/usr/lib/perl5/vendor_perl/5.10.0/x86_64-linux-thread-multi/linux/smb_mount.ph&lt;br&gt;/usr/lib/perl5/vendor_perl/5.10.0/x86_64-linux-thread-multi/rpcsvc/mount.ph&lt;br&gt;/usr/lib/perl5/vendor_perl/5.10.0/x86_64-linux-thread-multi/sys/mount.ph&lt;br&gt;/sbin/mount.nfs&lt;br&gt;/sbin/mount.nfs4&lt;br&gt;/sbin/umount.nfs&lt;br&gt;/sbin/umount.nfs4&lt;br&gt;…………………&lt;br&gt;…………………&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#666666"&gt;&lt;strong&gt;[amilcar@isis ~]$ rpm -q --whatprovides tar &lt;/strong&gt;&amp;nbsp; (procura pelo pacote que prove o comando)&lt;br&gt;tar-1.20-23.12.1&lt;br&gt;[amilcar@isis ~]$&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&lt;font color="#000000"&gt;Se o comando que voce procura nao estiver instalado, voce pode fazer a instalação do pacote usando o shell ou GUI:&lt;/font&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;Instalação pelo Shell – &lt;/strong&gt;digite &lt;em&gt;yast&lt;/em&gt; na linha de comandoe siga as orientações do YaST2. Também pode ser instalado via &lt;em&gt;zypper&lt;/em&gt; ou ainda com o &lt;em&gt;rpm.&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Instalação via GUI – &lt;/strong&gt;pode ser instalado pela versão grafica do YaST2, você vai precisar da senha do root para rodar a aplicação.&lt;font color="#666666"&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/font&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5173052840491277468-2706469820738769054?l=ajmoreti.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajmoreti.blogspot.com/feeds/2706469820738769054/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://ajmoreti.blogspot.com/2012/01/iniciando-com-suse.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/2706469820738769054'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/2706469820738769054'/><link rel='alternate' type='text/html' href='http://ajmoreti.blogspot.com/2012/01/iniciando-com-suse.html' title='Iniciando com SuSE'/><author><name>Amilcar de Jesus Moreti</name><uri>http://www.blogger.com/profile/04022310434818885345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://1.bp.blogspot.com/_I4DneDrgUiQ/Sq_P5t7dwtI/AAAAAAAAAFA/mYME8h_xiF4/S220/Imagem0116.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5173052840491277468.post-7307654459350059008</id><published>2012-01-20T14:46:00.001-02:00</published><updated>2012-01-20T14:46:28.295-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Informix'/><title type='text'>Usando o recurso GLS</title><content type='html'>&lt;p&gt;O recurso de Suporte de Linguagem Global (Global Language Support – GLS)&amp;nbsp; permite que produtos IBM Informix lide com diferentes idiomas, convenções culturais, e conjuntos de códigos para a Ásia, Africa, Europa, Latino Americano, e países do Oriente Médio.&lt;/p&gt; &lt;p&gt;O recurso GLS permite que você crie bancos de dados usando os diacríticos, de sequência , e convenções monetárias e hora do idioma que você selecionar. Não existe nenhum parametro de configuração no ONCONFIG para o GLS, essas configurações são realizadas nas variaveis de ambiente do sistema.&lt;/p&gt; &lt;p&gt;Em um banco de dados, algumas das tarefas por ele realizado dependem das convenções de linguagem e cultura dos dados que eles manipulam. Por exemplo, o servidor de banco de dados deve classificar dados do Brasil diferentemente dos dados de caracteres coreanos. Uma aplicação Cliente deve exibir a moeda canadense diferentemente da moeda Tailandesa. &lt;/p&gt; &lt;p&gt;Se o servidor de banco de dados Informix ® ou produto cliente inclui o código para executar essas tarefas, cada um precisaria ser escrito especialmente para lidar com um conjuento diferentes de culturas especifica de dados. &lt;/p&gt; &lt;p&gt;Com suporte ao GLS, produtos IBM Informix não precisa especificar como processar informações especificas de cultura diretamente. Informações específicas de cultura reside em um local GLS. Quando um produto IBM Informix necessita de informações especificas de culturas, ele chama a biblioteca GLS,&amp;nbsp; que acessa o local GLS e retorna as informações para os produtos IBM Informix.&lt;/p&gt; &lt;p&gt;O recurso GLS é uma forma portátil de suporte de informação específicos de culturas. Embora muitos sistemas operacionais oferecem suporte para varios tipos de idiomas, esse suporte é geralmente para o proprio sistema operacional. Não existem ainda padrões para o formato de informações especificas de culturas e idiomas. Esta falta de conformidade significa que se você mover um aplicativo de um ambiente de uma determinada região para uma outra região, talvez seja necessario mudar o suporte de linguagem do sistema operacional.&lt;/p&gt; &lt;p&gt;O recurso GLS pode acessar informações especificas de cultura em um UNIX® e ou no Windows®. Produtos IBM Informix pode localizar as informações de localidade em qualquer plataforma para o qual são portados.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Nota para o Ambiente Windows®&lt;br&gt;&lt;/strong&gt;Para que o GLS suporte um local não padrão, a versão do Windows® que voce esta usando tambem deve suportar essa localidade. Ou seja, voce não pode suportar um aplicativo japonês no Windows, a menos que a aplicação esta rodando na versão japonesa do Windows®.&lt;br&gt;&lt;strong&gt;Fim da Nota.&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Para utilizar o recurso GLS, as tarefas que voce precisa para realizar depende se você é um administrador de sistemas, administrador de banco de dados, usuario final de um aplicativo, usuario final de um utilitario de servidor de banco de dados ou desenvolvedor de aplicações.&lt;/p&gt; &lt;table border="0" cellspacing="0" cellpadding="2" width="655"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="200"&gt;&lt;strong&gt;Função&lt;/strong&gt;&lt;/td&gt; &lt;td valign="top" width="453"&gt;&lt;strong&gt;Tarefas&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="200"&gt;Administrador de sistema, administrador de banco de dados, e ou usuario final do aplicativo&lt;/td&gt; &lt;td valign="top" width="453"&gt; &lt;ul&gt; &lt;li&gt;Para locais não padrão, configure as variaveis de ambientes &lt;strong&gt;DB_LOCALE, CLIENT_LOCALE, &lt;/strong&gt;e &lt;strong&gt;SERVER_LOCALE.&lt;/strong&gt;  &lt;li&gt;Para customizar os formatos par asuarios finais, configure as variaveis de ambientes &lt;strong&gt;GL_DATE, GL_DATETIME &lt;/strong&gt;e &lt;strong&gt;DBMONEY. &lt;/strong&gt;Para o Informix SQL/C você pode configurar a variavel &lt;strong&gt;DBTIME &lt;/strong&gt;ao inves da variavel &lt;strong&gt;GL_DATETIME.&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="200"&gt;&amp;nbsp;&lt;/td&gt; &lt;td valign="top" width="453"&gt; &lt;ul&gt; &lt;li&gt;Para configurar um ambiente GLS para Informix ESQL / C, configure as variáveis ​​de ambiente&amp;nbsp; &lt;strong&gt;CC8BITLEVEL&lt;/strong&gt; e &lt;strong&gt;ESQLMF&lt;/strong&gt;.  &lt;li&gt;Para executar uma configuração adicional para o ambiente GLS, definir as variaveis de ambiente &lt;strong&gt;DBLANG &lt;/strong&gt;e &lt;strong&gt;GLS8BITFSYS.&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5173052840491277468-7307654459350059008?l=ajmoreti.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajmoreti.blogspot.com/feeds/7307654459350059008/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://ajmoreti.blogspot.com/2012/01/usando-o-recurso-gls.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/7307654459350059008'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/7307654459350059008'/><link rel='alternate' type='text/html' href='http://ajmoreti.blogspot.com/2012/01/usando-o-recurso-gls.html' title='Usando o recurso GLS'/><author><name>Amilcar de Jesus Moreti</name><uri>http://www.blogger.com/profile/04022310434818885345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://1.bp.blogspot.com/_I4DneDrgUiQ/Sq_P5t7dwtI/AAAAAAAAAFA/mYME8h_xiF4/S220/Imagem0116.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5173052840491277468.post-5346783065483828185</id><published>2012-01-13T10:12:00.001-02:00</published><updated>2012-01-13T10:12:18.895-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Informix'/><title type='text'>Locale em Informix</title><content type='html'>&lt;h4&gt;Locale&lt;/h4&gt; &lt;p&gt;A GLS ou descrição locais (Locale) é um conjunto de arquivos que contêm informações específicas para uma determinada língua e cultura:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;O nome do conjunto de códigos que os dados do aplicativo usa;&lt;/li&gt; &lt;li&gt;A ordem de agrupamento a ser usado para dados de caracteres;&lt;/li&gt; &lt;li&gt;O formato em que diferentes tipos de dados aparece para usuários finais;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;O locale padrão é a localidade que a instalação do Windows ® utiliza. Por exemplo, Instalações do Windows em Inglês dos EUA usam o locale &lt;strong&gt;en_us.1252.&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Caracteres de Byte Único&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Esta publicação representa caracteres de byte único como uma série de letras minúsculas. O formato para a representação de um caractere de byte único é:&lt;/p&gt; &lt;p&gt;&lt;font style="background-color: #cccccc"&gt;&lt;font style=""&gt;a&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font style="background-color: #cccccc"&gt;&lt;/font&gt;&lt;font style=""&gt;Aqui &lt;em&gt;a &lt;/em&gt;representa qualquer caractere de byte único, não para a letra "a" em si.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;O formato para a representação de uma seqüência de caracteres de byte único é a seguinte:&lt;/p&gt; &lt;p&gt;&lt;font style="background-color: #cccccc"&gt;a b c d e ……….z&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font style="background-color: #cccccc"&gt;&lt;/font&gt;&lt;font style=""&gt;Aqui &lt;em&gt;a&lt;/em&gt; representa o primeiro caracter e &lt;em&gt;z &lt;/em&gt;representa o ultimo caractere da sring. Por exemplo, se a string &lt;em&gt;informix&lt;/em&gt; consiste de oito caracteres de byte unico, o seguinte formato representa essa string de 8 caracteres abstratamente:&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font style="background-color: #cccccc"&gt;abcdefgh&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Caracteres Multibyte&lt;/strong&gt;&lt;/p&gt; &lt;p&gt; Não é a ideia dessa publicação tentar mostrar a aparencia real de carecteres multibyte no texto, exemplos ou diagramas. Em vez disso, a convenção a seguir mostra como caracteres multibyte são armazenados abstratamente:&lt;/p&gt; &lt;p&gt;&lt;font style="background-color: #cccccc"&gt;A&lt;sup&gt;1&lt;/sup&gt;……………A&lt;sup&gt;n&lt;/sup&gt;&lt;sup&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/sup&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;De um a quatro letras maiusculas identicas, cada um seguido por um numero diferente sobrescrito, representa um caractere multibyte. Os sobrescritos mostram o byte &lt;em&gt;n&lt;/em&gt; do caracter multibyte, onde &lt;em&gt;n&lt;/em&gt; tem valores entre dois e quatro, por exemplo, os seguintes simbolos representam um caractere multibyte que consiste de dois bytes:&lt;/p&gt; &lt;p&gt;&lt;font style="background-color: #cccccc"&gt;A&lt;sup&gt;1&lt;/sup&gt;A&lt;sup&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/sup&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;A notação a seguir representa um caractere multibyte que consite em quatro bytes (o comprimento máximo de um caractere multibyte): &lt;p&gt;&lt;font style="background-color: #cccccc"&gt;A&lt;sup&gt;1&lt;/sup&gt;A&lt;sup&gt;2&lt;/sup&gt;A&lt;sup&gt;3&lt;/sup&gt;A&lt;sup&gt;4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/sup&gt;&lt;/font&gt; &lt;p&gt;O proximo exemplo mostra uma sequencia de caracteres multibyte em uma instrução SQL:&lt;pre&gt;&lt;font style="background-color: #cccccc"&gt;CREATE DATABASE A&lt;sup&gt;1&lt;/sup&gt;A&lt;sup&gt;2&lt;/sup&gt;B&lt;sup&gt;1&lt;/sup&gt;B&lt;sup&gt;2&lt;/sup&gt;C&lt;sup&gt;1&lt;/sup&gt;C&lt;sup&gt;2&lt;/sup&gt;D&lt;sup&gt;1&lt;/sup&gt;D&lt;sup&gt;2&lt;/sup&gt;E&lt;sup&gt;1&lt;/sup&gt;E&lt;sup&gt;2&lt;/sup&gt;;                                                             &lt;/font&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;Esta instrução cria um banco de dados cujo nome é composto de cinco caracteres multibyte, cada um dos quais é de dois byte.&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Caracteres de byte unico e multibyte na mesma string&lt;/strong&gt;&lt;br /&gt;&lt;p&gt;Para um conjunto de código multibyte, uma determinada string pode ser composto por caracteres de byte único e multibyte. Para representar essa string mista, esta publicação simplesmente combina os formatos de caracteres multibyte e byte unico. O próximo exemplo representa uma string com quatro caracteres, onde o primeiro e o quarto caracter são byte unico, e o segundo e terceiro caracteres são multibyte que consistem de dois bytes cada um:&lt;pre&gt;&lt;font style="background-color: #cccccc"&gt;aA&lt;sup&gt;1&lt;/sup&gt;A&lt;sup&gt;2&lt;/sup&gt;B&lt;sup&gt;1&lt;/sup&gt;B&lt;sup&gt;2&lt;/sup&gt;b                                                                                       &lt;/font&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Caracteres de espaço em branco na String&lt;/strong&gt;&lt;br /&gt;&lt;p&gt;Espaço me branco é uma serie de um ou mais caracteres que são apresentados como espaço em branco, cada localidade GLS define quais caracteres são caracteres de espaço em branco. &lt;br /&gt;&lt;p&gt;Por exemplo, tanto o TAB &lt;em&gt;(ASCII 9)&lt;/em&gt; e no espaço em branco &lt;em&gt;(ASCII 32)&lt;/em&gt; pode ser definido como caracteres espaço em branco em uma localidade, mas certas combinação de tecla CTRL e outro caracter pode ser definido como caracteres de espaço em branco em uma localidade diferente.&lt;br /&gt;&lt;p&gt;A convenção para a representação de um espaço de byte unico branco nesta publicação é a letra “s”. A notação a seguir representa um espaço de byte unico branco:&lt;br /&gt;&lt;p&gt;&lt;font style="background-color: #cccccc"&gt;s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;br /&gt;&lt;h5&gt;&lt;font style="font-weight: normal"&gt;No conjunto de codigo ASCII, um exemplo de um espçao em branco de um unico byte é o caractere em branco (ASCII 32). Para representar uma string que consiste de dois caracteres ASCII em branco, a publicação utiliza a seguinte notação:&lt;/font&gt;&lt;/h5&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;font style="background-color: #cccccc"&gt;ss&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;h5&gt;&lt;font style="font-weight: normal"&gt;A notação a seguir representa um caractere de espaço multibyte branco:&lt;/font&gt;&lt;/h5&gt;&lt;pre&gt;&lt;font style="background-color: #cccccc"&gt;s&lt;sup&gt;1&lt;/sup&gt;...s&lt;sup&gt;n                                                                                                         &lt;/sup&gt;&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font style="background-color: #cccccc"&gt;&lt;font face="Calibri"&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style=""&gt;&lt;font style="" face="Calibri"&gt;Aqui S&lt;sup&gt;1&lt;/sup&gt; representa o primeiro byte do caractere espaço em branco, e s&lt;sup&gt;n&lt;/sup&gt; representa o último byte do caractere espaço em branco, onde &lt;em&gt;n&lt;/em&gt; pode variar entre dois e quatro. A notação a seguir representa 4-byte de um caractere espaço em branco:&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font style="background-color: #cccccc"&gt;s&lt;sup&gt;1&lt;/sup&gt;s&lt;sup&gt;2&lt;/sup&gt;s&lt;sup&gt;3&lt;/sup&gt;s&lt;sup&gt;4                                                                                                        &lt;/sup&gt;&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font style=""&gt;&lt;/font&gt;&lt;font style="background-color: #cccccc"&gt;&lt;/font&gt;&lt;font style="" face="Calibri"&gt;&lt;strong&gt;Entendendo melhor Caracteres de espaços em branco&lt;/strong&gt;&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;Combinações de caracteres com espaços em branco podem ocorrer em  strings entre aspas, em colunas CHAR que contêm menos caracteres do que o comprimento da coluna declarada, e em outros contextos. Por exemplo, se uma coluna CHAR(5) em um conjunto de códigos de byte único contém três caracteres, a string é preenchido com dois espaços em branco de modo que seu comprimento é igual ao comprimento da coluna:&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font style="background-color: #cccccc"&gt;abcss                                                                                            &lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;O próximo exemplo representa uma string de cinco caracteres (tres caracteres de dados e dois caracteres em branco à direita) em um conjunto de código multibyte , onde cada um dos caracteres de dados e caracteres  de espaço em branco é composto de dois bytes:&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font style="background-color: #cccccc"&gt;A&lt;sup&gt;1&lt;/sup&gt;A&lt;sup&gt;2&lt;/sup&gt;B&lt;sup&gt;1&lt;/sup&gt;B&lt;sup&gt;2&lt;/sup&gt;C&lt;sup&gt;1&lt;/sup&gt;C&lt;sup&gt;2&lt;/sup&gt;s&lt;sup&gt;1&lt;/sup&gt;s&lt;sup&gt;2&lt;/sup&gt;s&lt;sup&gt;1&lt;/sup&gt;s&lt;sup&gt;2                                                                                           &lt;/sup&gt;&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;sup&gt;&lt;font style="background-color: #cccccc"&gt;&lt;/font&gt;&lt;/sup&gt;&lt;font style="" face="Calibri"&gt;Em algumas localidades, uma string pode conter caracteres espaço em branco de bytes de códigos unico e multibyte. Por exemplo, considere a seguinte seqüência:&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font style="background-color: #cccccc"&gt;abcss&lt;sup&gt;1&lt;/sup&gt;s&lt;sup&gt;2&lt;/sup&gt;sss&lt;sup&gt;1&lt;/sup&gt;s&lt;sup&gt;2                                                                                                 &lt;/sup&gt;&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;A string tem três caracteres de byte único (abc), um caractere de byte único de espaço em branco (s), um caractere de espaço multibyte branco ( s&lt;sup&gt;1&lt;/sup&gt;s&lt;sup&gt;2&lt;/sup&gt; ), dois caractere de byte único de espaço em branco (ss), e um character de espaço em branco multibyte (s&lt;sup&gt;1&lt;/sup&gt;s&lt;sup&gt;2&lt;/sup&gt;).&lt;/font&gt;&lt;/pre&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5173052840491277468-5346783065483828185?l=ajmoreti.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajmoreti.blogspot.com/feeds/5346783065483828185/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://ajmoreti.blogspot.com/2012/01/locale-em-informix.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/5346783065483828185'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/5346783065483828185'/><link rel='alternate' type='text/html' href='http://ajmoreti.blogspot.com/2012/01/locale-em-informix.html' title='Locale em Informix'/><author><name>Amilcar de Jesus Moreti</name><uri>http://www.blogger.com/profile/04022310434818885345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://1.bp.blogspot.com/_I4DneDrgUiQ/Sq_P5t7dwtI/AAAAAAAAAFA/mYME8h_xiF4/S220/Imagem0116.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5173052840491277468.post-3641390298939964976</id><published>2011-12-13T14:03:00.001-02:00</published><updated>2011-12-13T14:03:00.206-02:00</updated><title type='text'>Comparando SuSE com outras distribuições Linux</title><content type='html'>&lt;p&gt;Usando openSuSE pode ser a melhor maneira de aprender Linux se você tiver a intenção de se tornar um profissional Linux. Com seu foco no desenvolvimento comunitario, voce pode ter certeza que voce esta recebendo alguns dos mais recentes e melhores software de codigo aberto disponivel. Utilizando o openSuSE voce ganhara habilidades em niveis de ambientes empresariais. &lt;/p&gt; &lt;p&gt;Alem da Novell, Red Hat Inc. é outra grande corporação que distribui Linux no mercado. Os Sistemas Operacionais da Red Hat segue o mesmo modelo dual de distribuição, com o Red Hat Enterprise Linux (RHEL) sendo uma distribuição comercial e o Fedora como um sistema Livre.&lt;/p&gt; &lt;p&gt;Debian é considerado uma distribuição Linux de altissima qualidade, com um forte compromisso com os ideiais do software de código aberto. Alguns derivados de distribuição Linux, como o popular Linux Ubuntu e o KNOPPIX são baseado no Debian. E embora o Debian é bom para utilizar-se em pequenas empresas, o projeto não tem uma infra-estrutura de empresas como (treinamento, suporte, documentação e assim por diante) que é construida em torno do SuSE Enterprise Linux e Red Hat Enterprise.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5173052840491277468-3641390298939964976?l=ajmoreti.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajmoreti.blogspot.com/feeds/3641390298939964976/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://ajmoreti.blogspot.com/2011/12/comparando-suse-com-outras.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/3641390298939964976'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/3641390298939964976'/><link rel='alternate' type='text/html' href='http://ajmoreti.blogspot.com/2011/12/comparando-suse-com-outras.html' title='Comparando SuSE com outras distribuições Linux'/><author><name>Amilcar de Jesus Moreti</name><uri>http://www.blogger.com/profile/04022310434818885345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://1.bp.blogspot.com/_I4DneDrgUiQ/Sq_P5t7dwtI/AAAAAAAAAFA/mYME8h_xiF4/S220/Imagem0116.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5173052840491277468.post-8855242010280206739</id><published>2011-12-08T08:45:00.001-02:00</published><updated>2011-12-08T08:45:14.536-02:00</updated><title type='text'>Sobre SuSE, Novell e Linux</title><content type='html'>&lt;p&gt;SuSE (pronuncia-se SOO-zuh) é um Sistema Operacional Linux de propriedade da Novell, Inc. SuSE representado pela empresa de Software Alemã System-Entwicklung. o SuSE foi baseado no Slackware Linux, e tornou-se oficialmente uma distribuição independente em 1996, quando foi lançada a sua primeira versão:&lt;/p&gt; &lt;p&gt;SuSE&amp;nbsp; foi, e permanece, uma das distribuições de Linux mais popular da Europa.&lt;/p&gt; &lt;p&gt;Em novembro de 2003, a Novell adquriu o SuSE e incorporou a distribuição em seus projetos. Hoje existem 3 edições para o SuSE:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;SuSE Linux Enterprise Desktop&lt;/strong&gt; (SLED) edição comercial, baseado em assinatura, produzido pela Novell, Inc. cujo objetivo é fornecer um ambiente de Desktop empresarial, oferecendo suporte, treinamentos, documentações, certificações de hardware, entre outros produtos.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;SuSE Linux Enterprise Server&lt;/strong&gt; (SLES) tambem uma edição comercial, porem uma edição focada em servidores.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;openSuSE, &lt;/strong&gt;uma versão de codigo aberto do SuSE, livre, e sem as opções de suporte ofertada pela Novell, foi iniciada pela Novell em 2005. openSuSE é uma comunidade do sistema operacional que é distribuida livremente e tornou-se conhecida pela sua estabilidade e suporte a hardware.&lt;/li&gt;&lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5173052840491277468-8855242010280206739?l=ajmoreti.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajmoreti.blogspot.com/feeds/8855242010280206739/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://ajmoreti.blogspot.com/2011/12/sobre-suse-novell-e-linux.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/8855242010280206739'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/8855242010280206739'/><link rel='alternate' type='text/html' href='http://ajmoreti.blogspot.com/2011/12/sobre-suse-novell-e-linux.html' title='Sobre SuSE, Novell e Linux'/><author><name>Amilcar de Jesus Moreti</name><uri>http://www.blogger.com/profile/04022310434818885345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://1.bp.blogspot.com/_I4DneDrgUiQ/Sq_P5t7dwtI/AAAAAAAAAFA/mYME8h_xiF4/S220/Imagem0116.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5173052840491277468.post-9172666593925760984</id><published>2011-11-08T14:27:00.001-02:00</published><updated>2011-11-08T14:27:41.248-02:00</updated><title type='text'>SuSE Linux</title><content type='html'>&lt;p&gt;Depois que você ja teve alguma experiencia com linux, você nao precisa de alguem dizendo a você para clicar no botão ajuda ou para arrastar um arquivo para a lixeira para exclui-lo &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Alegre" src="http://lh6.ggpht.com/-jf9G35t4TDg/TrlYevJi0-I/AAAAAAAAAWM/WPv-uclNeSo/wlEmoticon-smile%25255B2%25255D.png?imgmax=800"&gt;. O que você precisa é de um bom livro ou um site que mostrem comandos poderosos e as opções que permitem você controlar seu sistema Linux, como os processos, usuarios, media de armazenamento, recursos de redes, e serviços do sistema associados com tudo isso.&lt;/p&gt; &lt;p&gt;Como podem perceber sou um adpto da SuSE, gosto muito dessa distribuição, talvez por usar e acompanhar toda a sua evolução desde 1994 quando surgiu a versão 1.0 baseada no Slackware. Vou tentar nos proximos dias ou proximos meses quem sabe, passar varios conceitos e comandos do OpenSuSE e do SuSE Linux da Novell para ajudar a você a se tornar um usuario avançado em Linux. Se você é um administrador de Sistemas ou um usuario comum, esses artigos vai mostrar-lhes comandos para criar sistemas de arquivos, solucionar problemas de redes, aumentar o nivel de segurança, e mostrar muita coisa que você gostaria de saber sobre o seu sistema Linux. &lt;/p&gt; &lt;p&gt;Quem me inspiriou a escrever esse artigo foi Christopher Negus e Françõis Caen, que escreveram um livro chamado SUSE LINUX TOOLBOX (1000+ Commands for OpenSuSE and SUSE Enterprise, li o livro e gostei muito, eles estão de Parabens pela iniciativa, esse livro foi publicado nos Estados Unidos da America em Indianopolis e Simultaneamente no Canada, para os interessados na aquisição do Livro, procure no Amazon.com pelo ISBN: 978-0-470-08292-9.&lt;/p&gt; &lt;p&gt;Os artigos que vou escrever, foi inspirado nesse livro, e vai ser focado em comandos de linhas de comandos do openSuSE.&lt;/p&gt; &lt;p&gt;Uma breve historia da Novell’s com o SuSE&lt;/p&gt; &lt;p&gt;para saber mais, vá ate o link do wikipedia &lt;a title="http://pt.wikipedia.org/wiki/OpenSUSE" href="http://pt.wikipedia.org/wiki/OpenSUSE"&gt;http://pt.wikipedia.org/wiki/OpenSUSE&lt;/a&gt;&lt;/p&gt; &lt;p&gt;O mais interessante da historia e poucos sabem é que existe um acordo de cooperação entre a Novell e a Microsoft que teve inicio em 2006 e com termino em 2011, porem ja foi renovado por mais 4 anos. O acordo previa a colaboração entre as duas empresas para que trabalhassem em direção ao suporte e interoperabilidade entre os sistemas operacionais Windows e Linux. É bom deixar claro que a Microsoft não contribui para o desenvolvimento do SuSE e tambem esse acordo não se extende ao OpenSuSE, somente ao SuSE Linux Enterprise da Novell.&lt;/p&gt; &lt;p&gt;Então até os proximos artigos, &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5173052840491277468-9172666593925760984?l=ajmoreti.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajmoreti.blogspot.com/feeds/9172666593925760984/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://ajmoreti.blogspot.com/2011/11/suse-linux.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/9172666593925760984'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/9172666593925760984'/><link rel='alternate' type='text/html' href='http://ajmoreti.blogspot.com/2011/11/suse-linux.html' title='SuSE Linux'/><author><name>Amilcar de Jesus Moreti</name><uri>http://www.blogger.com/profile/04022310434818885345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://1.bp.blogspot.com/_I4DneDrgUiQ/Sq_P5t7dwtI/AAAAAAAAAFA/mYME8h_xiF4/S220/Imagem0116.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/-jf9G35t4TDg/TrlYevJi0-I/AAAAAAAAAWM/WPv-uclNeSo/s72-c/wlEmoticon-smile%25255B2%25255D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5173052840491277468.post-2423487909890338494</id><published>2011-10-11T10:37:00.001-03:00</published><updated>2011-10-11T10:37:14.563-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Unix'/><title type='text'>PAM–Plugglable Authentication Modules</title><content type='html'>&lt;p&gt;Já faz alguns dias que venho quebrando a cabeça com o PAM, muito minucioso para configurar, porem muito eficiente para quem busca segurança. Já faz dias que estou vasculhando a Internet, procurando por documentos e dicas, participando de fóruns para tentar entender como realmente funciona o aplicativo para poder configurar dois servidores.&lt;/p&gt;  &lt;p&gt;O meu objetivo com o PAM, é configurar uma autenticação segura, onde, por exemplo, se o usuário errar a senha por cinco vezes bloqueia o acesso, e somente é liberado se o root liberar, também configurar o comprimento da senha, que seria no caso de seis caracteres, porem teria que ter uma maiúscula e um numero formando essa senha, ate esse momento que estou escrevendo esse artigo não consegui sucesso ainda.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Mas o que é realmente o PAM?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;O PAM é uma biblioteca que permite usuários autenticar em ambientes como o Linux ou Unix (HP-UX,    &lt;br /&gt;AIX, Solaris, entre outros). O grande objetivo do desenvolvimento do PAM deu-se devido ao problema encontrado quando era preciso fazer o &lt;em&gt;login&lt;/em&gt; de um usuário, utilizando uma senha criptografada através de acesso remoto. Além disso, como cada programa possuía seu método próprio de &lt;em&gt;login&lt;/em&gt;, caso fosse necessário mudar o método de autenticação, os programas teria que ser alterados para reconhecer este novo método. Foi neste momento, que a SUN MICROSYSTEMS criou o PAM, um aplicativo centralizador da tarefa de autenticação, com isso não seria mais necessário cada programa se preocupar com o papel de autenticador, pois esta seria a tarefa do PAM e casso fosse mudado o critério de autenticação, por questão de segurança, somente seria necessários alterar o método no próprio PAM.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Qual a Vantagem do PAM&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;A principal vantagem do PAM, além de centralizador das funções de autenticação do &lt;i&gt;login&lt;/i&gt; e senha, é que ele é capaz de selecionar, se configurar para tal, os programas aos quais os usuários que fez o login pode ou não acessar. Desta forma, um usuário que quisesse usufruir de aplicativos de áudio e vídeo, por exemplo, remotamente, poderia ser bloqueado o que não aconteceria caso ele estivesse utilizando estes aplicativos localmente.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Configuração do Módulo PAM&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Os arquivos de configuração do PAM, no Linux, normalmente estão localizados no diretório /etc/pam.d/.&lt;/p&gt;  &lt;p&gt;Nestes arquivos, a linha de configuração é dada como:&lt;/p&gt;  &lt;p&gt;&lt;i&gt;Service-name module-type control-flag modulo-path args&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Nome do Serviço&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Esta associado ao nome do serviço a esta entrada. Por exemplo, ftpd, rlogind, su e outros.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Divisão dos Módulos – Module-Type&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Como o próprio nome diz, o PAM é um conjunto de módulos, no qual cada um recebe uma ou mais funções especiais dentro do processo de autenticação. Essa função que cada modulo tem é determinado pelas divisões dos módulos do PAM, que são: AUTH, ACCOUNT, PASSWORD, SESSION.&lt;/p&gt;  &lt;p&gt;AUTH &lt;/p&gt;  &lt;p&gt;A divisão AUTH trata da autenticação, seja por &lt;i&gt;login/senha &lt;/i&gt;ou autenticação biométrica (voz, retina, impressão digital, por exemplo).&lt;/p&gt;  &lt;p&gt;ACCOUNT &lt;/p&gt;  &lt;p&gt;Esta divisão, terá o papel de autorização ou não autorização para o uso de programas com base no &lt;i&gt;login&lt;/i&gt;, determinando assim, o usuário apto a utilizar aquele programa ou não.&lt;/p&gt;  &lt;p&gt;PASSWORD&lt;/p&gt;  &lt;p&gt;É responsável pela troca de senha.&lt;/p&gt;  &lt;p&gt;SESSION&lt;/p&gt;  &lt;p&gt;Determina qual será o ambiente do usuário com base no seu &lt;i&gt;login.&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;É importante salientar, neste momento, que o PAM é o conjunto de módulos e como tal, não precisa ter todos os módulos existentes e possíveis para funcionar, basta ter aqueles os quais o administrador acha necessário trabalhar, e que, alguns módulos possuem apenas uma das divisões acima citadas enquanto outros chegam a ter todas as divisões.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Controle das Flags – Control-flag&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;O control-flag é utilizado para indicar de que forma a biblioteca do PAM reagirá ao sucesso ou falha do módulo que esta associado. Outra função que a control-flag pode executar é dando prioridades a cada módulo, visto que eles podem ser empilhados.&lt;/p&gt;  &lt;p&gt;Existem dois modos de sintaxe para o control-flag um mais antigo e tradicional que divide a sintaxe em: REQUIRED, REQUISITE, SUFFICIENT, OPTIONAL. O modo mais novo, mais elaborado e especifico separa da seguinte forma: VALUE=ACTION. A parte ACTION é nomeada como IGNORE, BAD, DIE, OK, DONE, RESET.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Controle de Sintaxe do Modo Tradicional&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;REQUIRED&lt;/p&gt;  &lt;p&gt;Estabelece que: a falha do módulo utilizando a sintaxe REQUIRED, não será mostrada ao usuário até que todos os módulos estejam sendo executados.&lt;/p&gt;  &lt;p&gt;REQUISITE&lt;/p&gt;  &lt;p&gt;Parecido com o REQUIRED, porem no caso de falha, o controle é retornado direto a aplicação. Esta flag é muito utilizada para proteger um usuário que tente colocar sua senha quando o meio esta inseguro.&lt;/p&gt;  &lt;p&gt;SUFFICIENT&lt;/p&gt;  &lt;p&gt;A falha deste modulo não implica em falha da autenticação como um todo. Se o modulo falhar, o próximo da classe é executado. Se não houver próximo, então a classe retorna com sucesso. Se, por outro lado, o modulo terminar com sucesso, então os módulos seguintes dessa classe não serão executados. Este parâmetro é bastante usado no caso de usar LDAP para autenticação, por exemplo, ou outra fonte de dados.&lt;/p&gt;  &lt;p&gt;OPTIONAL&lt;/p&gt;  &lt;p&gt;Módulos marcados como ptional praticamente não influencia o resultado da autenticação como um todo. Eles terão alguma influencia somente caso os módulos anteriores da mesma classe não apresentem um resultado definitivo.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Exemplos de Modulos do PAM – Module Path&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Existem muitos módulos disponíveis como: pam_access, pam_chroot, pam_cracklib, pam_deny, pam_env, pam_filter, pam_ftp, pam_group, pam_issue, pam_krb4, pam_lastlog, pam_limits, pam_listfile, pam_mail, pam_mkhomedir, pam_motd, pam_nologin, pam_permit, pam_pwdb, pam_radius, pam_rhosts_auth, pam_rootok, pam_securetty, pam_tally, pam_time, pam_unix, pam_userdb, pam_warn, pam_wheel, pam_tally2.&lt;/p&gt;  &lt;p&gt;Porem, somente os módulos principais serão mostrados e explicados a seguir.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Securetty Module – pam_securetty&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Module-Type: &lt;/b&gt;AUTH&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Autor: &lt;/b&gt;Elliot Lee&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Características:&lt;/b&gt; este modulo simplesmente verifica em qual terminal o &lt;i&gt;root&lt;/i&gt; esta tentando fazer login, então a partir dele é possivel restringir os locais em que o root pode fazer login. Logo,a principal característica do &lt;i&gt;pam_securetty &lt;/i&gt;é evitar o login do root em terminais inseguros. Vale ressaltar, que para o &lt;i&gt;pam_securetty&lt;/i&gt;,nenhum terminal esta liberado para o login, o root que devera configurar este modulo para ele possa fazer o login em outro terminal.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Password Database Module – pam_pwdb&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Module-Type:&lt;/b&gt; ACCOUNT, AUTH, PASSWORD, SESSION&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Autores: &lt;/b&gt;Cristian Gafton e Andrew G. Morgan&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Caracteristica: &lt;/b&gt;Este é o principal modulo do programa login, para tanto ele se encarrega de fazer a verificação do nome do usuário e senha, assim, autorizando o usuário ou não. Este modulo ainda aceita alguns parâmetros em sua configuração: shadow, nullok, md5, use_authtok.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Shadow:&lt;/b&gt; permite o uso de senhas &lt;i&gt;shadow &lt;/i&gt;ou convencionais.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Nullok:&lt;/b&gt; permite o uso de senha em branco.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Md5:&lt;/b&gt; usa criptografia md5 em vez de cript padrão.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Use_authok:&lt;/b&gt; indica que o modulo deve usar a autenticação já fornecida para os módulos anteriores, para não interrogar o usuário novamente.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;No-login Module – pam_nologin&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Module-Type: &lt;/b&gt;ACCOUNT, AUTH&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Autor: &lt;/b&gt;Michael K. Johnson&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Caracteristica: &lt;/b&gt;este modulo é muito útil quando se deseja fazer a manutenção do sistema. Com ele funcionando, não será permitido a nenhum usuário fazer o login com exceção do root. É importante citar que, usuários que já estiverem feito o login não serão afetados com a adição deste modulo.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Cracklib pluggable password strength-checker – pam-cracklib&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Module-Type:&lt;/b&gt; PASSWORD&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Autor:&lt;/b&gt; Cristian Gafton&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Caracteristica: &lt;/b&gt;este modulo fara a verificação da fragilidade de uma nova senha. Para isto, ele avalia algumas características como:&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Polindrome:&lt;/b&gt; a nova senha é um palindrome da antiga?&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Case change only:&lt;/b&gt; a nova senha é a antiga com apenas a diferença da caixa(maiúscula e minúscula)?&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Simiar:&lt;/b&gt; a nova senha é similar a antiga? Ou seja, se existe caracteres repetidos. Ele estipula um numero mínimo para o uso dos mesmo caracteres da senha antiga.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Simple:&lt;/b&gt; a nova senha é muito pequena?&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Rotated:&lt;/b&gt; a nova senha é a antiga, porem invertida?&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Already used: &lt;/b&gt;a opção para nova senha já foi utilizada no passado?&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Access Module – pam_access&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Module-Type:&lt;/b&gt; ACCOUNT&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Autor:&lt;/b&gt; Alexei Nogin&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Caracteristica: &lt;/b&gt;verifica quais usuários podem fazer login e em qual local (terminal, remoto, domínio, etc.)&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Resource Limits Module – pam_limits&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Module-Type:&lt;/b&gt; SESSION&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Autor:&lt;/b&gt; Cristian Gafton&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Caracteristica: &lt;/b&gt;este modulo limita o uso dos recursos como : uso da CPU, memoria e outros. Sua linha de configuração de entrada é:&lt;/p&gt;  &lt;p&gt;&amp;lt;domain&amp;gt; &amp;lt;type&amp;gt; &amp;lt;item&amp;gt; &amp;lt;value&amp;gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Domain:&lt;/b&gt; pode ser o nome de um usuário ou grupo.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Type:&lt;/b&gt; pode ser de dois tipos: hard ou soft. Para o hard o usuário não pode alterar os recursos pre-definidos, já para o modo soft o usuário é capaz de alterar os recursos, porem sem ultrapassar os limites do modo hard.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Item: &lt;/b&gt;pode ser cada um dos seguintes:&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Core: &lt;/b&gt;tamanho máximo para arquivos core (KB)&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Data: &lt;/b&gt;tamanho máximo do seguimento de dados de um processo de memoria&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Fsize: &lt;/b&gt;tamanho máximo para novos arquivos.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Memlock: &lt;/b&gt;tamanho máximo de memoria que um processo pode bloquear na memoria física.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Nofile:&lt;/b&gt; quantidade máxima de arquivos abertos ao mesmo tempo&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Rss:&lt;/b&gt; tamanho máximo que um processo pode manter na memoria física&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Stack:&lt;/b&gt; tamanho máximo da pilha&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Cpu:&lt;/b&gt; tempo máximo do uso da CPU&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Nproc:&lt;/b&gt; quantidade máxima de processos disponíveis para um único usuário&lt;/p&gt;  &lt;p&gt;&lt;b&gt;As:&lt;/b&gt; limite de espaço de endereçamento&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Maxlogins:&lt;/b&gt; quantidade máxima de logins para este usuário ou grupo&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Priority:&lt;/b&gt; a prioridade com os processos deste usuário serão executados.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Value: &lt;/b&gt;determina o valor para opção do Item.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Argumentos – Args&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Os args, argumentos, fazem parte de uma lista de símbolos que podem ser colocados ao final de cada modulo, se desejado. Estes argumentos são semelhantes aos argumentos disponíveis em um comando do Linux.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5173052840491277468-2423487909890338494?l=ajmoreti.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajmoreti.blogspot.com/feeds/2423487909890338494/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://ajmoreti.blogspot.com/2011/10/pamplugglable-authentication-modules.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/2423487909890338494'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/2423487909890338494'/><link rel='alternate' type='text/html' href='http://ajmoreti.blogspot.com/2011/10/pamplugglable-authentication-modules.html' title='PAM–Plugglable Authentication Modules'/><author><name>Amilcar de Jesus Moreti</name><uri>http://www.blogger.com/profile/04022310434818885345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://1.bp.blogspot.com/_I4DneDrgUiQ/Sq_P5t7dwtI/AAAAAAAAAFA/mYME8h_xiF4/S220/Imagem0116.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5173052840491277468.post-2751437711906618522</id><published>2011-10-06T15:26:00.001-03:00</published><updated>2011-10-06T15:26:25.604-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Unix'/><title type='text'>Manual - Linux-PAM (PAM_TALLY2)</title><content type='html'>&lt;p&gt;&lt;strong&gt;NAME&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;pam_tally2 – Modulo contador de login (contagem)&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;SINOPSE&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;pam_tally2.so&lt;/strong&gt; [file=/path/to/counter] [onerr=[fail|succeed]] [magic_root] [even_deny_root] [deny=n] [lock_time=n] [unlock_time=n] [root_unlock_time] [serialize] [audit] [silent] [no_login_info]&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;pam_tally2&lt;/strong&gt; [—file /path/to/counter] [—user username] [—reset[n]] [—quiet]&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;DESCRIPTION&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Este módulo mantem uma contagem das tentativas de acessos, pode reiniciar a contagem com sucesso, pode negar acesso se muitas tentativas falham.&lt;/p&gt;    &lt;p&gt;pam_tally2 divide-se em duas partes: &lt;strong&gt;pam_tally2.so &lt;/strong&gt;e &lt;strong&gt;pam_tally2.&lt;/strong&gt; O primeiro é o módulo do PAM e o segundo um programa stand-alone. &lt;strong&gt;pam_tally2 &lt;/strong&gt;é um aplicativo (opcional) que pode ser usado para consultar e manipular o arquivo de contagem. O programa pode exibir a contagem do usuário, parametrizar contagem de usuário ou limpar todas as contagem. Parametrizações para fazer a contagem podem ser uteis para bloquear os usuários sem alterar suas senhas. Por exemplo, pode-se limpar todas as contagem a meia-noite usando-se o cron.&lt;/p&gt;    &lt;p&gt;Normalmente, falhas de acesso com o usuário root não fara com que a conta root fique bloqueada, para evitar ataques de negação de serviço: se o seu usuários não recebe contas de shell e o root só podem fazer login via &lt;strong&gt;su&lt;/strong&gt; ou no console da maquina (não telnet/rsh, etc), isso é seguro.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;OPÇÕES&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;OPÇÕES GLOBAIS&lt;/p&gt;    &lt;p&gt;Estas opções podem ser usadas no modulo &lt;strong&gt;auth&lt;/strong&gt; e &lt;strong&gt;account&lt;/strong&gt;.&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;onerr=&lt;/strong&gt;[&lt;u&gt;fail&lt;/u&gt;|&lt;u&gt;succeed&lt;/u&gt;]&lt;/p&gt;    &lt;p&gt;se algo estranho acontece (como não conseguir abrir o arquivo), retorna com &lt;strong&gt;PAM_SUCCESS &lt;/strong&gt;se &lt;strong&gt;onerr=&lt;/strong&gt;succeed é dado senão um código de erro do PAM.&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;file=&lt;/strong&gt;&lt;u&gt;/path/to/counter&lt;/u&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;arquivo onde será mantida a contagem. o padrão é /var/log/tallylog.&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;audit&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;Irá registrar o nome do usuário no log do sistema se o usuário não for encontrado.&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;silent&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;não existe mensagens de informações.&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;no_log_info&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;não grava mensagens de log via syslog(3).&lt;/p&gt;    &lt;p&gt;AUTH OPTIONS&lt;/p&gt;    &lt;p&gt;Primeira fase de autenticação contra as tentativas de login e verifica se deve ser negado acesso ao usuário. Se o usuário é autenticado, o processo de login continua para o &lt;strong&gt;pam_setcred(3)&lt;/strong&gt; e o contador é zerado.&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;deny=&lt;/strong&gt;&lt;u&gt;n&lt;/u&gt;&lt;/p&gt;    &lt;p&gt;Nega o acesso se a contagem para este usuário excede &lt;u&gt;n&lt;/u&gt;.&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;lock_time=&lt;/strong&gt;&lt;u&gt;n&lt;/u&gt;&lt;/p&gt;    &lt;p&gt;Sempre negar &lt;u&gt;n&lt;/u&gt; segundos após tentativas mal sucedidas.&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;unlock_time=&lt;/strong&gt;&lt;u&gt;n&lt;/u&gt;&lt;/p&gt;    &lt;p&gt;Permite o acesso após &lt;u&gt;n&lt;/u&gt; segundos após as tentativas de falhas.&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;magic_root&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;Se o módulo é chamado por um usuário com uid=0 o contador não é incrementado. O administrador de sistemas deve utilizar isso para usuários de serviços como o &lt;strong&gt;su&lt;/strong&gt;, caso contrario, este argumento deve ser omitido.&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;no_lock_time&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;não utiliza o campo .fail_locktime no arquivo /var/log/faillog para este usuário.&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;even_deny_root&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;conta root pode tornar-se indisponivel.&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;root_unlock_time=&lt;/strong&gt;&lt;u&gt;n&lt;/u&gt;&lt;/p&gt;    &lt;p&gt;Esta opção implica na opção &lt;strong&gt;even_deny_root. &lt;/strong&gt;Permite o acesso após &lt;u&gt;n&lt;/u&gt; segundos após as tentativas de falhas. Se esta opção for utilizada o usuário root será bloqueado para um periodo de tempo especificado depois que ele ultrapassou o seu máximo de tentativas permitidas.&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;serialize&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;serializar o acesso ao arquivo de registro usando bloqueios.&lt;/p&gt;    &lt;p&gt;OPÇÃO ACCOUNT&lt;/p&gt;    &lt;p&gt;Redefine tentativas do contador se o usuário não é root. Esta fase pode ser usado opcionalmente por serviços que não chamam o &lt;strong&gt;pam_setcred(3)&lt;/strong&gt; corretamente ou se a reinicialização deve ser feito independentemente do fracasso de contas dos outros módulos.&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;magic_root&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;Se o módulo é chamado por um usuário com uid=0 o contador não é incrementado. O administrador de sistemas deve utilizar isso para usuários de serviços como o &lt;strong&gt;su&lt;/strong&gt;, caso contrario, este argumento deve ser omitido.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;VALORES RETORNADOS&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;PAM_AUTH_ERR&lt;/p&gt;    &lt;p&gt;uma opção invalida foi dada, o módulo não foi capaz de recuperar o nome do usuário, nenhum arquivo counter válido foi encontrado, ou muitos logins falhos.&lt;/p&gt;    &lt;p&gt;PAM_SUCCESS&lt;/p&gt;    &lt;p&gt;tudo que foi bem sucedido&lt;/p&gt;    &lt;p&gt;PAM_USER_UNKNOWN&lt;/p&gt;    &lt;p&gt;usuário não conhecido&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;NOTA&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;pam_tally2 não é compatível com o formato de arquivo do antigo pam_tally. Isto é causado pela exigência de compatibilidade entre o formato de arquivo tallylog entre arquiteturas de 32bits e 64bits em sistemas multiarch.&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;EXEMPLOS&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;adicione as seguintes linhas ao arquivo /etc/pam.d/login para bloquear a conta após 4 tentativas de falhas no login. A conta do root também será bloqueada. As contas serão automaticamente desbloqueada após 20 minutos.&lt;/p&gt;    &lt;p&gt;auth&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; required&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; pam_securetty.so      &lt;br /&gt;auth&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; required&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; pam_tally2.so deny=4 even_deny_root unlock_time=1200       &lt;br /&gt;auth&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; required&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; pam_env.so       &lt;br /&gt;auth&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; required&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; pam_unix.so       &lt;br /&gt;auth&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; required&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; pam_nologin.so       &lt;br /&gt;account&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; required&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; pam_unix.so       &lt;br /&gt;password&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; required&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; pam_unix.so       &lt;br /&gt;session&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; required&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; pam_limits.so       &lt;br /&gt;session&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; required&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; pam_unix.so       &lt;br /&gt;session&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; required&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; pam_lastlog.so nowtmp       &lt;br /&gt;session&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; optional&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; pam_mail.so standard&lt;/p&gt;&lt;/blockquote&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5173052840491277468-2751437711906618522?l=ajmoreti.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajmoreti.blogspot.com/feeds/2751437711906618522/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://ajmoreti.blogspot.com/2011/10/manual-linux-pam-pamtally2.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/2751437711906618522'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/2751437711906618522'/><link rel='alternate' type='text/html' href='http://ajmoreti.blogspot.com/2011/10/manual-linux-pam-pamtally2.html' title='Manual - Linux-PAM (PAM_TALLY2)'/><author><name>Amilcar de Jesus Moreti</name><uri>http://www.blogger.com/profile/04022310434818885345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://1.bp.blogspot.com/_I4DneDrgUiQ/Sq_P5t7dwtI/AAAAAAAAAFA/mYME8h_xiF4/S220/Imagem0116.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5173052840491277468.post-7649263034524493451</id><published>2011-09-30T11:07:00.001-03:00</published><updated>2011-09-30T11:07:26.060-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Unix'/><title type='text'>Entendendo e Configurando o PAM</title><content type='html'>&lt;h6&gt;por &lt;a href="http://www.ibm.com/developerworks/br/library/l-pam/#author1"&gt;Vishal Srivistava&lt;/a&gt;, Associate Software Engineer, IBM&lt;/h6&gt;  &lt;h2&gt;Conceitos básicos sobre o Pluggable Authentication Module e como configurá-lo e gravar um aplicativo de login&lt;/h2&gt;  &lt;h5&gt;&lt;strong&gt;Resumo:&lt;/strong&gt;&amp;#160; A API do Pluggable Authentication Module (PAM) expõe um conjunto de funções que os programadores de aplicativos usam para funções relacionadas à segurança, como autenticação do usuário, criptografia de dados, LDAP, etc. Neste artigo, você terá um guia básico para o modelo do PAM no Linux, aprenderá a configurar o PAM e a designar um aplicativo de login do PAM de amostra em 10 etapas bem fáceis.&lt;/h5&gt;  &lt;p&gt;Para usuários Linux, compartilhar arquivos certamente é uma tarefa trabalhosa. Por exemplo, exige demais ter que lembrar de várias senhas e redesignar os aplicativos de acesso do sistema (como &lt;i&gt;login&lt;/i&gt;, &lt;i&gt;su&lt;/i&gt;, &lt;i&gt;password&lt;/i&gt;, &lt;i&gt;ftp&lt;/i&gt; , etc.) é demorado. Somando a essa dificuldade está o processo de &lt;i&gt;autenticação&lt;/i&gt;, em que um sistema identifica um usuário e fornece controle de acesso ideal para esse usuário.&lt;/p&gt;  &lt;h3&gt;&lt;a name="N10071"&gt;Um histórico do uso do PAM&lt;/a&gt;&lt;/h3&gt;  &lt;p&gt;O PAM é uma API que cuida da autenticação de um usuário para um serviço. Antes do PAM, aplicativos como &lt;i&gt;login&lt;/i&gt; (e &lt;i&gt;rlogin&lt;/i&gt;, &lt;i&gt;telnet&lt;/i&gt;, &lt;i&gt;rsh&lt;/i&gt;) procuravam pelo nome do usuário em &lt;code&gt;/etc/passwd&lt;/code&gt; e depois comparavam os dois e autenticavam o nome digitado pelo usuário. Todos os aplicativos usavam esses serviços compartilhados, embora os detalhes da implementação e a autoridade para configurá-los não fossem compartilhados. &lt;/p&gt;  &lt;p&gt;Em seguida, os desenvolvedores do aplicativo tentavam codificar seus próprios processos. Com isso veio a necessidade de separar o aplicativo e o módulo de segurança (um módulo de segurança comum pode ser compartilhado por aplicativos e ser configurado conforme necessário). &lt;/p&gt;  &lt;p&gt;O mecanismo PAM integra vários esquemas de autenticação de nível inferior em uma API de nível superior que permite que os programas que dependem da autenticação sejam gravados independentemente do esquema de autenticação subjacente. O principal recurso do PAM e a configuração dinâmica da autenticação através de um arquivo &lt;code&gt;/etc/pam.d&lt;/code&gt; ou &lt;code&gt;/etc/pam.conf&lt;/code&gt;. &lt;/p&gt;  &lt;p&gt;O PAM pode ser configurado para impedir que determinados programas autentiquem os usuários e para avisar quando determinados programas tentam fazer a autenticação. Os programas do PAM usam os módulos do PAM (&lt;i&gt;módulos de autenticação&lt;/i&gt;): Eles são anexados aos aplicativos no tempo de execução para funcionar. &lt;/p&gt;  &lt;p&gt;A Figura 1 mostra o fluxo básico do modelo do PAM. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-M9IQX_VZ8V4/ToXNFMmXRcI/AAAAAAAAAV8/XXAy4Y4PXmk/s1600-h/figure12.gif"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="figure1" border="0" alt="figure1" src="http://lh6.ggpht.com/-iGFfh6h9mR0/ToXNFx3dyaI/AAAAAAAAAWA/VrE84k1tykM/figure1_thumb.gif?imgmax=800" width="240" height="57" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;&lt;a name="N100B0"&gt;Quais sistemas operacionais suportam o PAM?&lt;/a&gt;&lt;/h3&gt;  &lt;p&gt;O PAM foi desenvolvido primeiramente pela Sun Microsystems em 1995 e é suportado pelas seguintes versões de sistemas operacionais (e superior): &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;RedHat 5.0 &lt;/li&gt;    &lt;li&gt;SUSE 6.2 &lt;/li&gt;    &lt;li&gt;Debian 2.2 &lt;/li&gt;    &lt;li&gt;Mandrake 5.2 &lt;/li&gt;    &lt;li&gt;Caldera 1.3 &lt;/li&gt;    &lt;li&gt;TurboLinux 3.6 &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;O PAM também é suportado por versões recentes do Solaris™, AIX®, HP-UX e Mac OS® X. Mais tarde, ele foi padronizado como parte do processo de padronização X/Open UNIX® (na arquitetura X/Open single sign-on service (XSSO)). &lt;/p&gt;  &lt;h3&gt;&lt;a name="N100D9"&gt;Que tipo de PAM posso obter?&lt;/a&gt;&lt;/h3&gt;  &lt;p&gt;Embora eles não sejam estritamente classificadas, podemos dizer que há três tipos de PAM: &lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;b&gt;Linux-PAM&lt;/b&gt;: O Linux-PAM abrange todo o PAM discutido neste artigo. A arquitetura principal do PAM em qualquer plataforma Unix é semelhante à versão PAM do Linux. &lt;/li&gt;    &lt;li&gt;&lt;b&gt;OpenPAM&lt;/b&gt;: O OpenPAM é outra implementação do PAM desenvolvida pelos laboratórios Dag-Erling Smorgrav em NAI como parte do programa de pesquisa DARPA-CHATS. Por ser um software livre, ele é usado principalmente pelo FreeBSD, NetBSD e por aplicativos (além do Mac OS X). &lt;/li&gt;    &lt;li&gt;&lt;b&gt;Java™ PAM ou JPam&lt;/b&gt;: O PAM é basicamente um módulo de autenticação padrão que suporta Linux e UNIX. O JPam atua como uma ponte entre a parte Java e o PAM comum. Ele permite o uso dos módulos ou recursos do PAM (como &lt;i&gt;auth&lt;/i&gt;, &lt;i&gt;account&lt;/i&gt;, &lt;i&gt;passwd&lt;/i&gt;, &lt;i&gt;session&lt;/i&gt; , etc.) pelos aplicativos baseados em Java. Ele fornece o JAAS e APIs diretas e suporte para a maioria dos sistemas operacionais e arquiteturas do Unix. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Embora esses sejam PAMs diferentes, a funcionalidade principal permanece a mesma. &lt;/p&gt;  &lt;h3&gt;&lt;a name="N10105"&gt;Como são os módulos do PAM? &lt;/a&gt;&lt;/h3&gt;  &lt;p&gt;A instalação do PAM é um processo etapa por etapa. Consulte Recursos para obter instruções de instalação.&lt;/p&gt;  &lt;p&gt;Os módulos do PAM são classificados por tipo de módulo. Qualquer módulo fornecido deve implementar pelo menos uma das quatro funções de tipo de módulo: &lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;O &lt;b&gt;módulo de autenticação&lt;/b&gt; é usado para autenticar usuários ou configurar/cancelar credenciais. &lt;/li&gt;    &lt;li&gt;Os &lt;b&gt;módulos de gerenciamento de conta&lt;/b&gt; executam ações relacionadas ao acesso, à expiração de conta e de credencial, restrições/regras de senha, etc. &lt;/li&gt;    &lt;li&gt;O &lt;b&gt;módulo de gerenciamento de sessão&lt;/b&gt; é usado para inicializar e terminar sessões. &lt;/li&gt;    &lt;li&gt;O &lt;b&gt;módulo de gerenciamento de senha&lt;/b&gt; executa ações relacionadas à alteração/atualização de senha. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;O PAM fornece recursos funcionais diferentes, como autenticação de conexão única, controle de acesso, etc. A implementação de cada um é manipulada por módulos diferentes. A seguir há alguns dos principais módulos: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;code&gt;pam_access&lt;/code&gt; fornece o controle de acesso de login log-daemon-style usando nome de login/domínio, dependendo das regras predefinidas no arquivo /etc/security/access.conf. &lt;/li&gt;    &lt;li&gt;&lt;code&gt;pam_cracklib&lt;/code&gt; verifica as senhas em relação às regras de senha. &lt;/li&gt;    &lt;li&gt;&lt;code&gt;pam_env sets/unsets&lt;/code&gt; verifica as variáveis de ambiente a partir de /etc/security/pam_env_conf. &lt;/li&gt;    &lt;li&gt;&lt;code&gt;pam_debug&lt;/code&gt; depura o PAM. &lt;/li&gt;    &lt;li&gt;&lt;code&gt;pam_deny&lt;/code&gt; bloqueia os módulos do PAM. &lt;/li&gt;    &lt;li&gt;&lt;code&gt;pam_echo&lt;/code&gt; imprime as mensagens. &lt;/li&gt;    &lt;li&gt;&lt;code&gt;pam_exec&lt;/code&gt; executa um comando externo. &lt;/li&gt;    &lt;li&gt;&lt;code&gt;pam_ftp&lt;/code&gt; é o módulo para acesso anônimo. &lt;/li&gt;    &lt;li&gt;&lt;code&gt;pam_localuser&lt;/code&gt; requer que o usuário seja listado em /etc/passwd. &lt;/li&gt;    &lt;li&gt;&lt;code&gt;pam_unix&lt;/code&gt; fornece autenticação de senha tradicional de &lt;code&gt;/etc/passwd&lt;/code&gt;. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Há vários outros módulos (&lt;code&gt;pam_userdb&lt;/code&gt;, &lt;code&gt;pam_warn&lt;/code&gt;, &lt;code&gt;pam_xauth&lt;/code&gt;), que usam um conjunto de valores que eles retornam. (Os detalhes desses módulos podem ser obtidos no guia de administração do PAM em Recursos.) &lt;/p&gt;  &lt;h3&gt;&lt;a name="N10189"&gt;Configurando o PAM&lt;/a&gt;&lt;/h3&gt;  &lt;p&gt;A configuração do PAM é geralmente implementada no arquivo de configuração que reside em &lt;code&gt;&lt;em&gt;/etc/pam.d&lt;/em&gt;&lt;/code&gt; ou &lt;code&gt;&lt;em&gt;/etc/pam.conf&lt;/em&gt;&lt;/code&gt; (para versões antigas).&lt;/p&gt;  &lt;h2&gt;&lt;a name="N1019B"&gt;A Estrutura do Arquivo de Configuração&lt;/a&gt;&lt;/h2&gt;  &lt;p&gt;Para cada serviço que usa o PAM, há um arquivo correspondente no diretório, que contém as regras ou as instruções sobre como as informações de autenticação e de conta devem ser obtidas para esse serviço. Geralmente há uma regra por linha. &lt;/p&gt;  &lt;p&gt;Os campos nos arquivos de configuração do PAM incluem:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;code&gt;Service_name&lt;/code&gt; Especifica o nome do serviço/aplicativo. (O padrão é OTHER.) &lt;/li&gt;    &lt;li&gt;&lt;code&gt;Module_type&lt;/code&gt; especifica o tipo de módulo (&lt;code&gt;auth/account/session/passwd&lt;/code&gt;) para o serviço correspondente no campo &lt;code&gt;Service_name&lt;/code&gt;. &lt;/li&gt;    &lt;li&gt;&lt;code&gt;Control_flag&lt;/code&gt; especifica o comportamento de pilha do módulo. Os seguintes valores podem ser usados: &lt;code&gt;requisito&lt;/code&gt;, &lt;code&gt;necessário&lt;/code&gt;, &lt;code&gt;suficiente&lt;/code&gt; e &lt;code&gt;opcional&lt;/code&gt;. &lt;/li&gt;    &lt;li&gt;&lt;code&gt;Module_path&lt;/code&gt; especifica o nome do caminho para o objeto de biblioteca que implementa o módulo. Ele é configurado para &lt;code&gt;/lib/security&lt;/code&gt; por padrão. &lt;/li&gt;    &lt;li&gt;&lt;code&gt;Module_options&lt;/code&gt;/&lt;code&gt;module_args&lt;/code&gt; (campos opcionais) especificam as opções ou os argumentos que podem ser passados para os módulos de serviços. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Os módulos são chamados na ordem em que eles são listados no arquivo de configuração, dependendo do que o &lt;code&gt;Control_flag&lt;/code&gt; para cada entrada permite. Os valores de control_flag incluem: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Requisite: Todos os módulos necessários em uma pilha devem ser aceitos como um resultado com êxito. Se um ou mais dos módulos necessários falharem, todos os módulos necessários na pilha serão implementados, mas o primeiro erro será retornado. &lt;/li&gt;    &lt;li&gt;Sufficient: Se um módulo sinalizado como suficiente obtiver êxito e nenhum módulo anterior ou suficiente falhar, todos os módulos restantes na pilha serão ignorados e o êxito será retornado. &lt;/li&gt;    &lt;li&gt;Optional: Se nenhum dos módulos na pilha for necessário e nenhum módulo suficiente obtiver êxito, pelo menos um módulo opcional do serviço/aplicativo precisa obter êxito. &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;&lt;a name="N101FB"&gt;Exemplos de Arquivos de Configuração do PAM &lt;/a&gt;&lt;/h3&gt;  &lt;p&gt;A Tabela 1 mostra alguns exemplos de arquivos de configuração do PAM em vários sistemas operacionais.&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="692"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="123"&gt;&lt;strong&gt;Sistema &lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="89"&gt;&lt;strong&gt;Encontrado em …&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="62"&gt;&lt;strong&gt;Tipo&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="82"&gt;&lt;strong&gt;Controle (Flag)&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="334"&gt;&lt;strong&gt;Módulo&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="123"&gt;Red Hat&lt;/td&gt;        &lt;td valign="top" width="89"&gt;/etc/pam.d&lt;/td&gt;        &lt;td valign="top" width="62"&gt;auth&lt;/td&gt;        &lt;td valign="top" width="82"&gt;requerid&lt;/td&gt;        &lt;td valign="top" width="334"&gt;         &lt;p&gt;/lib/security/pam_unix.so&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="123"&gt;Red Hat&lt;/td&gt;        &lt;td valign="top" width="89"&gt;/etc/pam.d&lt;/td&gt;        &lt;td valign="top" width="62"&gt;account&lt;/td&gt;        &lt;td valign="top" width="82"&gt;sufficient&lt;/td&gt;        &lt;td valign="top" width="334"&gt;/lib/security/pam_unix.so&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="123"&gt;Red Hat&lt;/td&gt;        &lt;td valign="top" width="89"&gt;/etc/pam.d&lt;/td&gt;        &lt;td valign="top" width="62"&gt;session&lt;/td&gt;        &lt;td valign="top" width="82"&gt;required&lt;/td&gt;        &lt;td valign="top" width="334"&gt;/lib/security/pam_limit.so&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="123"&gt;AIX&lt;/td&gt;        &lt;td valign="top" width="89"&gt;/etc/pam.conf&lt;/td&gt;        &lt;td valign="top" width="62"&gt;auth&lt;/td&gt;        &lt;td valign="top" width="82"&gt;requerid&lt;/td&gt;        &lt;td valign="top" width="334"&gt;/usr/lib/security/pam_aix&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="123"&gt;AIX&lt;/td&gt;        &lt;td valign="top" width="89"&gt;/etc/pam.conf&lt;/td&gt;        &lt;td valign="top" width="62"&gt;account&lt;/td&gt;        &lt;td valign="top" width="82"&gt;required&lt;/td&gt;        &lt;td valign="top" width="334"&gt;/usr/lib/security/pam_aix&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="123"&gt;AIX&lt;/td&gt;        &lt;td valign="top" width="89"&gt;/etc/pam.conf&lt;/td&gt;        &lt;td valign="top" width="62"&gt;password&lt;/td&gt;        &lt;td valign="top" width="82"&gt;required&lt;/td&gt;        &lt;td valign="top" width="334"&gt;/usr/lib/security/pam_aix&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="123"&gt;zSUSE 64-bit | 32-bit&lt;/td&gt;        &lt;td valign="top" width="89"&gt;/etc/pam.conf&lt;/td&gt;        &lt;td valign="top" width="62"&gt;auth&lt;/td&gt;        &lt;td valign="top" width="82"&gt;required&lt;/td&gt;        &lt;td valign="top" width="334"&gt;/lib64/security/pam_unix.so | /lib/security/pam_unix.so&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="123"&gt;zSUSE 64-bit | 32-bit&lt;/td&gt;        &lt;td valign="top" width="89"&gt;/etc/pam.conf&lt;/td&gt;        &lt;td valign="top" width="62"&gt;account&lt;/td&gt;        &lt;td valign="top" width="82"&gt;required&lt;/td&gt;        &lt;td valign="top" width="334"&gt;/lib64/security/pam_unix.so | /lib/security/pam_unix.so&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="123"&gt;zSUSE 64-bit | 32-bit&lt;/td&gt;        &lt;td valign="top" width="89"&gt;/etc/pam.conf&lt;/td&gt;        &lt;td valign="top" width="62"&gt;session&lt;/td&gt;        &lt;td valign="top" width="82"&gt;required&lt;/td&gt;        &lt;td valign="top" width="334"&gt;/lib64/security/pam_unix.so | /lib/security/pam_unix.so&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="123"&gt;Solaris&lt;/td&gt;        &lt;td valign="top" width="89"&gt;/etc/pam.conf&lt;/td&gt;        &lt;td valign="top" width="62"&gt;auth&lt;/td&gt;        &lt;td valign="top" width="82"&gt;required&lt;/td&gt;        &lt;td valign="top" width="334"&gt;/usr/lib/security/pam_unix.so.1&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="123"&gt;Solaris&lt;/td&gt;        &lt;td valign="top" width="89"&gt;/etc/pam.conf&lt;/td&gt;        &lt;td valign="top" width="62"&gt;account&lt;/td&gt;        &lt;td valign="top" width="82"&gt;required&lt;/td&gt;        &lt;td valign="top" width="334"&gt;/usr/lib/security/pam_unix.so.1&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="123"&gt;Solaris&lt;/td&gt;        &lt;td valign="top" width="89"&gt;/etc/pam.conf&lt;/td&gt;        &lt;td valign="top" width="62"&gt;password&lt;/td&gt;        &lt;td valign="top" width="82"&gt;required&lt;/td&gt;        &lt;td valign="top" width="334"&gt;/usr/lib/security/pam_unix.so.1&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="123"&gt;HP-UX&lt;/td&gt;        &lt;td valign="top" width="89"&gt;         &lt;p&gt;/etc/pam.conf&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="62"&gt;auth&lt;/td&gt;        &lt;td valign="top" width="82"&gt;required&lt;/td&gt;        &lt;td valign="top" width="334"&gt;libpam_unix.so.1&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="123"&gt;HP-UX&lt;/td&gt;        &lt;td valign="top" width="89"&gt;         &lt;p&gt;/etc/pam.conf&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="62"&gt;account&lt;/td&gt;        &lt;td valign="top" width="82"&gt;required&lt;/td&gt;        &lt;td valign="top" width="334"&gt;libpam_unix.so.1&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="123"&gt;HP-UX&lt;/td&gt;        &lt;td valign="top" width="89"&gt;         &lt;p&gt;/etc/pam.conf&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="62"&gt;password&lt;/td&gt;        &lt;td valign="top" width="82"&gt;required&lt;/td&gt;        &lt;td valign="top" width="334"&gt;libpam_unix.so.1&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;h3&gt;&amp;#160;&lt;/h3&gt;  &lt;h3&gt;&lt;a name="N10338"&gt;O &amp;quot;Outro&amp;quot; Arquivo do PAM&lt;/a&gt;&lt;/h3&gt;  &lt;p&gt;O arquivo de configuração padrão do PAM &lt;code&gt;/etc/pam.d&lt;/code&gt; é usado por todos os outros serviços que não são explicitamente configurados e talvez seja o arquivo padrão mais simples e robusto do qual o PAM depende. O conteúdo é semelhante ao seguinte: &lt;/p&gt;  &lt;pre&gt;/etc/pam.d/other File&lt;br /&gt;&lt;br /&gt;auth        required     pam_warn.so&lt;br /&gt;auth        required     pam_deny.so&lt;br /&gt;account     required     pam_warn.so&lt;br /&gt;account     required     pam_deny.so&lt;br /&gt;password    required     pam_warn.so&lt;br /&gt;password    required     pam_deny.so&lt;br /&gt;session     required     pam_warn.so&lt;br /&gt;session     required     pam_deny.so&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;O arquivo é muito simples. Para todos os tipos de módulo, Control_flag é o mesmo: &lt;code&gt;required&lt;/code&gt;. Dois módulos são chamados:&lt;/font&gt; &lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;  &lt;li&gt;Primeiro, &lt;font face="Calibri"&gt;&lt;code&gt;pam_warn.so&lt;/code&gt; é chamado para registrar informações sobre a tentativa em progresso. &lt;/font&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Em seguida, &lt;font face="Calibri"&gt;&lt;code&gt;pam_deny.so&lt;/code&gt; é chamado apenas para retornar uma falha e impedir que qualquer tipo de conexão ou de autenticação seja executado. &lt;/font&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Portanto, qualquer serviço que use o PAM deve ser configurado explicitamente para permitir a autenticação, caso contrário, as tentativas falharão.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;&lt;a name="N10365"&gt;Dez etapas para designar um Aplicativo de Login Simples do PAM&lt;/a&gt;&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Essas 10 etapas ajudam a implementar seu próprio aplicativo PAM e a entender as funções de uma sessão do PAM:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;  &lt;li&gt;Inclua os arquivos de cabeçalho para a implementação PAM (por exemplo, pam_appl.h, pam_misc.h). &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Na função &lt;code&gt;main&lt;/code&gt; , inicialize a biblioteca do PAM libpam.so (que carrega os módulos especificados no arquivo de configuração para o aplicativo) usando um manipulador exclusivo. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Tente autenticação para todos os módulos e manipule os cenários de falha. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Verifique os detalhes de credencial e de conta do usuário. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Abra uma nova sessão do PAM. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Configure o ambiente para o usuário usando as credencias. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Quando o usuário estiver concluído, remova a configuração do ambiente do usuário. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Feche a sessão do PAM. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Saia da biblioteca libpam.so com o valor do identificador. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;SAIR. &lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;&lt;a name="N10394"&gt;Conclusão&lt;/a&gt;&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Depender do PAM para ajudar a lutar pelos esforços de autenticação de nível inferior em um todo mais gerenciável é uma maneira de simplificar esse mecanismo de segurança. Neste artigo, você aprendeu: &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;A arquitetura básica do PAM &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Como configurar os módulos do PAM &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;A descrição de um aplicativo de login do PAM como um guia para entender como eles funcionam. &lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5173052840491277468-7649263034524493451?l=ajmoreti.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajmoreti.blogspot.com/feeds/7649263034524493451/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://ajmoreti.blogspot.com/2011/09/entendendo-e-configurando-o-pam.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/7649263034524493451'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/7649263034524493451'/><link rel='alternate' type='text/html' href='http://ajmoreti.blogspot.com/2011/09/entendendo-e-configurando-o-pam.html' title='Entendendo e Configurando o PAM'/><author><name>Amilcar de Jesus Moreti</name><uri>http://www.blogger.com/profile/04022310434818885345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://1.bp.blogspot.com/_I4DneDrgUiQ/Sq_P5t7dwtI/AAAAAAAAAFA/mYME8h_xiF4/S220/Imagem0116.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/-iGFfh6h9mR0/ToXNFx3dyaI/AAAAAAAAAWA/VrE84k1tykM/s72-c/figure1_thumb.gif?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5173052840491277468.post-4997202556831204812</id><published>2011-09-29T12:46:00.001-03:00</published><updated>2011-09-29T12:46:05.572-03:00</updated><title type='text'>Configuração do arquivo PAM</title><content type='html'>&lt;p&gt;Quando um aplicativo PAM é iniciado, ele ativa o PAM-API.&lt;/p&gt;  &lt;p&gt;Esta ativação realiza uma série de tarefas, sendo a mais importante a leitura do arquivo de configuração: /etc/pam.conf. alternativamente, este pode ser o conteúdo do diretório /etc/pam.d. A presença deste diretório fará com que PAM ignore o arquivo /etc/pam.conf.    &lt;br /&gt;Esses arquivos do PAM é que vai fazer as tarefas de autenticação.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5173052840491277468-4997202556831204812?l=ajmoreti.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajmoreti.blogspot.com/feeds/4997202556831204812/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://ajmoreti.blogspot.com/2011/09/configuracao-do-arquivo-pam.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/4997202556831204812'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/4997202556831204812'/><link rel='alternate' type='text/html' href='http://ajmoreti.blogspot.com/2011/09/configuracao-do-arquivo-pam.html' title='Configuração do arquivo PAM'/><author><name>Amilcar de Jesus Moreti</name><uri>http://www.blogger.com/profile/04022310434818885345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://1.bp.blogspot.com/_I4DneDrgUiQ/Sq_P5t7dwtI/AAAAAAAAAFA/mYME8h_xiF4/S220/Imagem0116.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5173052840491277468.post-6568957952187724443</id><published>2011-09-28T15:44:00.001-03:00</published><updated>2011-09-28T15:44:35.598-03:00</updated><title type='text'>Visão Geral do PAM</title><content type='html'>&lt;p&gt;Para quem não conhece, nós começaremos por um exemplo. Uma aplicação que concede alguns serviços para os usuários; &lt;strong&gt;login&lt;/strong&gt; é um programa. O &lt;strong&gt;Login &lt;/strong&gt;faz duas coisas, ele primeiro verifica se o usuário solicitante é quem ele diz ser e segundo lhe fornece o serviço solicitado: no caso do &lt;strong&gt;login&lt;/strong&gt; o serviço é um comando Shell (bash, tcsh, zsh, etc.) rodando com a identidade do usuário.&lt;/p&gt;  &lt;p&gt;Tradicionalmente, o primeiro passo é realizado através da aplicação de &lt;strong&gt;Login&lt;/strong&gt; que solicita ao usuário uma senha e então verifica se a autenticação confere com o sistema, se o usuário é quem diz ser, o sistema vai para o segundo passo. Esta é a tarefa que é delegada ao Linux-PAM.&lt;/p&gt;  &lt;p&gt;Do ponto de vista do programador da aplicação (neste caso, a pessoa que escreveu a aplicação de &lt;strong&gt;Login&lt;/strong&gt;), Linux-Pam cuida dessa tarefa de autenticação – verificar a autenticação do usuário.&lt;/p&gt;  &lt;p&gt;A flexibilidade do Linux-PAM é que você, o administrador de sistema, tem a liberdade para estipular qual o esquema de autenticação será usado. Você tem a liberdade para configurar o esquema&amp;#160; para um ou todas aplicações PAM do seu Linux.&lt;/p&gt;  &lt;p&gt;Isto é, você pode autenticar de qualquer coisa desde confiança simples (pam_permit) à algo paranoico como uma combinação de escaneamento de retina, autenticação por voz e uma simples senha.&lt;/p&gt;  &lt;p&gt;Pam lida com quatro tipos distintos de gestão. Estes são: &lt;em&gt;gerenciamento de autenticação; gerenciamento de contas; gerenciamento de sessão e gerenciamento de senhas. &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;A associação de gestão preferencial com o comportamento de uma aplicação é feita com entradas no arquivo de configurações do PAM.&lt;/p&gt;  &lt;p&gt;A associação do sistema de gestão preferencial com o comportamento de uma aplicação é feita com entradas no arquivo de configuração relevantes Linux-PAM. As funções de gerenciamento são realizadas por módulos específicos no arquivo de configuração.&lt;/p&gt;  &lt;p&gt;As funções de gestão são realizadas por módulos especificados no arquivo de configuração. &lt;/p&gt;  &lt;p&gt;Abaixo uma ilustração que a organização geral do PAM:&lt;/p&gt;  &lt;p&gt;+--------------------+   &lt;br /&gt;| Aplicação: X&amp;#160;&amp;#160;&amp;#160; |    &lt;br /&gt;+--------------------+&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; /&amp;#160;&amp;#160; +------------+&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; +=============================+    &lt;br /&gt;|Autenticação-&amp;#160; [----&amp;gt;—\—]&amp;#160; Linux –&amp;#160; |—&amp;lt; |&amp;#160;&amp;#160; Arquivo de Configuração PAM&amp;#160; |    &lt;br /&gt;|&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; +&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [----&amp;lt;—/—]&amp;#160; PAM&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; |&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; |=============================|     &lt;br /&gt;| conversation()[—+&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; \&amp;#160;&amp;#160; |&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; |&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; | X auth …… a.so&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; |    &lt;br /&gt;+--------------------+&amp;#160;&amp;#160;&amp;#160; |&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; +-n—n-----+&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; | X auth …… b.so&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; |    &lt;br /&gt;|&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; |&amp;#160;&amp;#160;&amp;#160; |&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; |&amp;#160;&amp;#160;&amp;#160; |&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; |&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; _____ /    &lt;br /&gt;|&amp;#160;&amp;#160;&amp;#160;&amp;#160; Usuário&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; |&amp;#160;&amp;#160;&amp;#160; A&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; |&amp;#160;&amp;#160;&amp;#160; |&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; |&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; -----‘&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;|&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; |&amp;#160;&amp;#160;&amp;#160;&amp;#160; |&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; V&amp;#160;&amp;#160; A&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; |_________________´    &lt;br /&gt;+--------------------+&amp;#160;&amp;#160;&amp;#160;&amp;#160; + ---------|---|--------------------+----------------+-----------------+    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; +----u---u--------+&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; |&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; |&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; |    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; |&amp;#160;&amp;#160; auth…&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; |--------[ a ]-------------[ b ]-------------[ c ]    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; +------------------+    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; |&amp;#160;&amp;#160;&amp;#160;&amp;#160; acct …&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; |-------[ b ]--------------[ d ]    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; +------------------+    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; |&amp;#160;&amp;#160; password&amp;#160;&amp;#160;&amp;#160; |--------[ b ]--------------[ c ]    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; +------------------+    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; |&amp;#160;&amp;#160; session&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; |--------[ e ]--------------[ c ]    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; +------------------+&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;A titulo de explicação,&amp;#160; a esquerda da figure representa à aplicação; aplicação X. Tal interface de aplicativos com a biblioteca Linux-PAM e não conhece nenhuma das especificidades de seu método de autenticação configurado. A biblioteca Linux-PAM (no centro) consulta o conteúdo do arquivo de configuração do PAM e carrega os módulos que são apropriados para a aplicação X. Esses módulos dividem-se em um dos quatros grupos de gestão (inferior-centro) e são empilhados na ordem em que aparecem no arquivo de configuração. Estes módulos, quando chamado pelo PAM, executa tarefas de autenticação de diferentes aplicações. Informações textuais, exigidos ou oferecidos aos usuários, podem ser trocados através do uso do aplicativo fornecido pela função conversation. &lt;/p&gt;  &lt;p&gt;Se um programa vai usar o PAM, então ele tem que ter funções PAM explicitamente codificadas no programa. Se você tem aceso aos código fontes você pode adicionar apropriadamente as funções PAM. Se você não tem acesso ao código fonte, e os binários não incluem funções do PAM, então não é possível usar o PAM.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5173052840491277468-6568957952187724443?l=ajmoreti.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajmoreti.blogspot.com/feeds/6568957952187724443/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://ajmoreti.blogspot.com/2011/09/visao-geral-do-pam.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/6568957952187724443'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/6568957952187724443'/><link rel='alternate' type='text/html' href='http://ajmoreti.blogspot.com/2011/09/visao-geral-do-pam.html' title='Visão Geral do PAM'/><author><name>Amilcar de Jesus Moreti</name><uri>http://www.blogger.com/profile/04022310434818885345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://1.bp.blogspot.com/_I4DneDrgUiQ/Sq_P5t7dwtI/AAAAAAAAAFA/mYME8h_xiF4/S220/Imagem0116.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5173052840491277468.post-8467604756184696203</id><published>2011-09-27T17:17:00.001-03:00</published><updated>2011-09-27T17:17:19.164-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Unix'/><title type='text'>Introdução ao PAM para Linux</title><content type='html'>&lt;p&gt;Linux-PAM (Pluggable Authentication Modules for Linux) é uma coleção de bibliotecas compartilhadas que permite ao administrador de sistema escolher como a aplicação autentica os usuários.&lt;/p&gt;  &lt;p&gt;Em outras palavras, sem recompilar uma aplicação adaptada ao PAM, é possível alternar entre o mecanismo de autenticação que ele usa. De fato, pode-se atualizar inteiramente o sistema de autenticação local em afetar os próprios aplicativos.&lt;/p&gt;  &lt;p&gt;Historicamente uma aplicação exige que um determinado usuário seja autenticado, e para isso a aplicação teve que ser compilado para usar um mecanismo de autenticação específico. Por exemplo, no caso dos UN*X tradicionais, a identidade do usuário é verificada por uma senha que o usuário digita corretamente. Essa senha, depois de ter sido prefixada por duas vezes, é criptografada (com crypt). O usuário é então autenticado, se essa senha encriptada é idêntica ao segundo campo de entrada do usuário no banco de dados de senha do sistema (o arquivo /etc/passwd).&amp;#160; Na maioria dos sistemas UNIX se não todas, as formas de privilégios são feito com base neste sistema de autenticação único. Esse tipo de autenticação vem na forma de um identificador único de usuário (UID) e membros de vários grupos.    &lt;br /&gt;Serviços e aplicações são autenticados baseados na identificação (UID) e no grupo (GID) do usuário. Tradicionalmente, os membros dos grupos são baseado nas entradas do arquivo /etc/group.&lt;/p&gt;  &lt;p&gt;Este é o objetivo do Projeto Linux-PAM para separar o desenvolvimento de permissões de privilégio de software do desenvolvimento de redes seguras e esquemas de autenticação apropriadas.&amp;#160; Isto é realizado através de uma biblioteca de funções que um aplicativo pode usar para solicitar que um usuário seja autenticado. Esta biblioteca PAM é configurada localmente com um arquivo de sistema, &lt;em&gt;/etc/pam.conf&lt;/em&gt; (ou uma serie de arquivos locais em &lt;em&gt;/etc/pam.d/)&lt;/em&gt; para autenticar uma solicitação do usuário dos módulos de autenticação disponíveis localmente. Os módulos são geralmente localizados no diretório &lt;em&gt;/lib/security&lt;/em&gt; ou &lt;em&gt;/lib64/security&lt;/em&gt; e toma a forma de arquivos de objetos carregável dinamicamente.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5173052840491277468-8467604756184696203?l=ajmoreti.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajmoreti.blogspot.com/feeds/8467604756184696203/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://ajmoreti.blogspot.com/2011/09/introducao-ao-pam-para-linux.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/8467604756184696203'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/8467604756184696203'/><link rel='alternate' type='text/html' href='http://ajmoreti.blogspot.com/2011/09/introducao-ao-pam-para-linux.html' title='Introdução ao PAM para Linux'/><author><name>Amilcar de Jesus Moreti</name><uri>http://www.blogger.com/profile/04022310434818885345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://1.bp.blogspot.com/_I4DneDrgUiQ/Sq_P5t7dwtI/AAAAAAAAAFA/mYME8h_xiF4/S220/Imagem0116.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5173052840491277468.post-7755922358239113031</id><published>2011-09-19T16:43:00.001-03:00</published><updated>2011-09-19T16:43:29.220-03:00</updated><title type='text'>Informix–Conexão Segura</title><content type='html'>&lt;p&gt;Pode-se administrar a segurança das conexões do servidor do banco de dados usando a autenticação e os processos de autorização.&lt;/p&gt;  &lt;p&gt;Um usuário deve ser autenticado com uma instalação segura fornecendo um ID de usuário válido e uma senha segura que correspondam&amp;#160; as credenciais de uma conta de usuários do sistema operacional de onde esta instalado o Informix. Um tipo de método de autenticação é baseada no próprio sistema operacional, em que um ID de usuário e senha são passadas diretamente para o sistema operacional para verificação. Podemos também configurar as autenticações de conexões usando módulos de autenticação. Dependendo do sistema operacional, podemos usar um dos seguintes tipos de módulos de autenticação:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Autenticação pelo PAM para Informix rodando em UNIX ou Linux. Podemos utilizar esse modulo para implementar mecanismos alternativos de autenticação. Você pode usar os módulos para implementar um mecanismo de autenticação alternativa que você cria para uma aplicação especifica. &lt;/li&gt;    &lt;li&gt;Suporte de autenticação à Lightweight Directory Access Protocol (LDAP) para Windows. Utilize o módulo LDAP&amp;#160; quando quiser utilizar a autenticação do informix pelo LDAP. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Usuários autenticados devem especificar um banco de dados ao qual se conectar. Um usuário pode executar ações em determinados banco de dados ou acessar objetos, desde que tenham sido autorizados pelo DBA. Por exemplo, usuários com privilégios de CONNECT pode se conectar a um banco de dados e executar consultas, enquanto que usuários com privilégios RESOURCE podem criar objetos. &lt;/p&gt;  &lt;p&gt;Você pode garantir que senhas de autenticação de conexão são seguras, criptografando usando um módulo de suporte de comunicação (CSM).&amp;#160; O CSM com senha simples (SPWDCSM) fornece criptografia de senha.&amp;#160; SPWDCSM esta disponível para todas as plataformas.&lt;/p&gt;  &lt;p&gt;Se quiser pode-se autenticar por um ambiente Single Sign-On&amp;#160; (SSO), pode-se usar também o Generic Security Services CSM (GSSCM) para implementar uma autenticação Kerberos. Além disso, o protocolo Kerberos tem vários recursos internos que podem proporcionar benefícios de segurança, mesmo que simples e senhas CSM criptografadas. Autenticação SSO verifica a identidade de um usuário, &lt;/p&gt;  &lt;p&gt;SSO autenticação verifica a identidade de um usuário e facilita o gerenciamento centralizado de usuários e senhas. Se os serviços de confidencialidade e integridade estão habilitados no GSSCSM, o Kerberos criptografa as transmissões de dados e assegura que a troca de dados entre o usuário e o servidor de banco de dados seja uma conexão segura.&lt;/p&gt;  &lt;p&gt;Conexões com o HDR não podem usar esses módulos de autenticações, mas pode funcionar com estes módulos, restringindo as portas de rede específica para a replicação e conexões de alta disponibilidade. &lt;/p&gt;  &lt;p&gt;Pode-se configurar o IBM Informix para verificar se o ID do usuário que está executando o programa corresponde ao ID do usuário que está tentando se conectar ao banco de dados. &lt;/p&gt;  &lt;p&gt;Você pode configurar o IBM Informix para verificar se o ID do usuário que está executando o programa corresponde ao ID do usuário que está tentando se conectar ao banco de dados. &lt;/p&gt;  &lt;p&gt;Você pode limitar os ataques de negação de serviço para impedir que conexões legítimas para o servidor de banco de dados seja bloqueada. &lt;/p&gt;  &lt;p&gt;Abaixo mais detalhes sobre a autenticação PAM &lt;/p&gt;  &lt;h1&gt;&lt;/h1&gt;  &lt;h2&gt;&lt;/h2&gt;  &lt;h2&gt;&lt;/h2&gt;  &lt;h2&gt;&lt;/h2&gt;  &lt;h3&gt;&amp;#160;&lt;/h3&gt;  &lt;h2&gt;Pluggable authentication modules para sistemas rodando no UNIX ou Linux&lt;/h2&gt;  &lt;p&gt;O Pluggable Authentication Module (PAM) é uma estrutura de módulos muito bem definidas para suportar diferentes tipos de autenticação, originalmente desenvolvido pela Sun Microsystems. PAM é suportado em ambas plataformas de 32 e 64 bits, nos sistemas Solaris, Linux, HP-UX e AIX.&lt;/p&gt;  &lt;p&gt;Administradores de Sistema pode usar o PAM para implementar diferentes mecanismos de autenticação para diferentes tipos de aplicações. Por exemplo, a autenticação de login no UNIX pode ser diferente da autenticação de um servidor de banco de dados. PAM permite muitos cenários em uma única maquina, porque os serviços de autenticação são aplicadas em camadas.&lt;/p&gt;  &lt;p&gt;Administradores de Sistema pode usar o PAM para habilitar um aplicativo para selecionar o método de autenticação conforme exigido, &lt;/p&gt;  &lt;p&gt;PAM para habilitar um aplicativo para selecionar o autenticação conforme exigido e empilhamento do modulo. Alguns módulos podem ser empilhados um após o outro, permitindo assim que a aplicação será autenticado de varias maneiras, antes de conceder acesso. PAM fornece um conjunto de APIs para suportar a autenticação, gerenciamento de contas, gerenciamento de sessões e gerenciamento de senhas.&lt;/p&gt;  &lt;p&gt;O Administrador de Sistema pode habilitar ou desabilitar o uso do PAM.Por padrão, o servidor de banco de dados utiliza o mecanismo de autenticação tradicional do Informix ( que se baseia no mecanismo BSD – rhosts) a fim de evitar mudanças importantes para os utilizadores.&lt;/p&gt;  &lt;h2&gt;Para utilizar o PAM com o IBM Informix:&lt;/h2&gt;  &lt;ul&gt;   &lt;li&gt;O Banco de dados Informix deve estar em um Sistema Operacional que suporta o PAM. &lt;/li&gt;    &lt;li&gt;Aplicações Clientes deve ser escrito com um versão mais recente do SDK. &lt;/li&gt;    &lt;li&gt;O serviço do PAM deve estar devidamente configurado no Sistema Operacional. &lt;/li&gt;    &lt;li&gt;Deve-se decidir qual o método de autenticação que o PAM vai prover: conexão do cliente através de password, digitando uma senha correta em prompt ( por exemplo, um servidor de autenticação RADIUS) ou ambas as combinações. &lt;/li&gt;    &lt;li&gt;&lt;em&gt;Linux somente:&lt;/em&gt; Quando configurar o PAM para exigir senha e autenticação baseada em resposta,&amp;#160; o serviço do PAM sempre ignora a senha enviada na solicitação de conexão do cliente e pede a senha uma segunda vez. &lt;/li&gt;    &lt;li&gt;Você deve garantir que a Replicação e clusters de alta disponibilidade não serão afetadas pela autenticação PAM. &lt;/li&gt;    &lt;li&gt;Deve-se modificar o arquivo sqlhosts no servidor, tanto para a aplicação quanto para o servidor de bando de dados; &lt;/li&gt; &lt;/ul&gt;  &lt;h2&gt;O serviço PAM&lt;/h2&gt;  &lt;p&gt;O serviço PAM identifica o módulo PAM.&lt;/p&gt;  &lt;p&gt;O módulo PAM tipicamente esta localizado no diretório /etc/security e seus parâmetros são listados no arquivo /etc/pam.conf.&lt;/p&gt;  &lt;p&gt;No Linux, o arquivo /etc/pam.conf pode ser substituído por um diretório chamado /etc/pam.d, onde há um arquivo para cada serviço. Se /etc/pam.d existe, /etc/pam.conf é ignorado pelo Linux. &lt;/p&gt;  &lt;h2&gt;Métodos de autenticação com o módulo PAM&lt;/h2&gt;  &lt;p&gt;O módulo PAM determinará se um usuário poderá autenticar-se fornecendo uma senha, respondendo corretamente a um desafio ou ambos.&lt;/p&gt;  &lt;p&gt;A implementação PAM no IBM Informix tira proveito do fato de que as solicitações de conexão explicita, o cliente envia uma senha para o servidor. Pode-se configurar o PAM para fazer esta senha o único requisito para autenticação no servidor.&lt;/p&gt;  &lt;p&gt;Quando configurar o PAM para usar o protocolo baseado em resposta, a autenticação é concluída depois que o usuário digita a resposta correta para uma pergunta ou outra. Com este modo de autenticação um aplicativo deve ser projetado para responder ao desafio corretamente antes de conectar ao servidor de banco de dados. Pode-se configurar a autenticação do PAM para utilizar somente o modo baseado em resposta, de forma que o PAM ignore as senhas de conexão do cliente.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Linux somente:&lt;/em&gt;&amp;#160; Se o PAM é configurado para utilizar o protocolo baseado em resposta, a senha vindo dos clientes são sempre ignoradas. O serviço PAM no Linux pede a senha do usuário uma segunda vez se ambos os modos de autenticação estão habilitados.&lt;/p&gt;  &lt;h2&gt;Tamanho necessário da pilha para o PAM&lt;/h2&gt;  &lt;p&gt;Pode-se customizar o tamanho das pilhas disponíveis para o módulos do PAM.&lt;/p&gt;  &lt;p&gt;O PAM carrega recursos do Sistema Operacional ou módulos do PAM fornecidos por terceiros (bibliotecas compartilhadas) para as threads do Informix. Os requisitos do tamanho das pilhas não podem ser previsto. Para uma instancia, no Linux alguns módulos exigem mais do que 128 KB de espaço de pilha. Use o parâmetro de configuração PAM_STACKSIZE para modificar o valor.&lt;/p&gt;  &lt;p&gt;Por exemplo, configure o parâmetro PAM_STACKSIZE no arquivo onconfig como abaixo:&lt;/p&gt;  &lt;p&gt;PAM_STACKSIZE 64&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; # Stack size needed for the PAM modules (Kbytes)&lt;/p&gt;  &lt;p&gt;No UNIX, o valor padrão do PAM_STACKSIZE é 32 KB.&lt;/p&gt;  &lt;p&gt;No Linux, o valor padrão é 128 KB mais o valor do STACKSIZE.&lt;/p&gt;  &lt;h2&gt;Configurando um servidor de banco de dados para utilizar o PAM&lt;/h2&gt;  &lt;p&gt;Para configurar um servidor para utilizar o PAM, o administrador de sistemas devera saber:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;O nome do modulo PAM;&lt;/li&gt;    &lt;li&gt;Se o módulo PAM esta utilizando o método baseado em respostas além de aceitar um nome de usuário e senha. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Abaixo um exemplo do arquivo sqlhosts configurado para utilizar a autenticação PAM baseado em resposta:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;prdsoc onsoctcp isis prdsrv s=4, pam_serv=(pam_cha1), pamauth=(challenge)&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Abaixo um exemplo do arquivo sqlhosts configurado para utilizar a autenticação PAM baseado em autenticação com senhas:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;prdsoc onsoctcp isis prdsrv s=4, pam_serv=(pam_pass), pamauth=(password)&lt;/em&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5173052840491277468-7755922358239113031?l=ajmoreti.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajmoreti.blogspot.com/feeds/7755922358239113031/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://ajmoreti.blogspot.com/2011/09/informixconexao-segura.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/7755922358239113031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/7755922358239113031'/><link rel='alternate' type='text/html' href='http://ajmoreti.blogspot.com/2011/09/informixconexao-segura.html' title='Informix–Conexão Segura'/><author><name>Amilcar de Jesus Moreti</name><uri>http://www.blogger.com/profile/04022310434818885345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://1.bp.blogspot.com/_I4DneDrgUiQ/Sq_P5t7dwtI/AAAAAAAAAFA/mYME8h_xiF4/S220/Imagem0116.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5173052840491277468.post-8868420912395884058</id><published>2011-08-11T12:05:00.001-03:00</published><updated>2011-08-11T12:05:17.616-03:00</updated><title type='text'>Processadores PA-RISC ( Precision Architeture Risc)</title><content type='html'>&lt;p&gt;Todos os HP 9000 da serie 800 utilizavam a tecnologia “Precision Architecture Risc (PA-Risc)”. O PA-RISC esta construído dentro dos princípios de Reduced instruction Set Computing (RISC) o que implica a implementação de poucos componentes fornecendo uma confiabilidade superior que quando comparado com sistemas CISC (Complex Instruction Set Computer).&lt;/p&gt;  &lt;p&gt;Os estudos mostram que equipamentos CISC gastavam 80% do tempo executando instruções simples (soma, subtração, etc) e os restantes 20% em operações complexas, fazendo uso ainda dos microcódigo (microcódigo: ocorre o acesso à instrução e dentro do processador tem um código que acessa o hardware). No Risc isso não acontece porque tudo já é executado em hardware (elimina microcódigo) as instruções complexas ficam por conta do compilador e todas as operações são feitas em registradores.&lt;/p&gt;  &lt;p&gt;A base do PA-RISC é um set de instruções contendo 140 instruções de formato fixo cuidadosamente selecionadas.&lt;/p&gt;  &lt;p&gt;O paralelismo de instruções, pipelining (técnica que sobre passa o processamento de instruções, de modo que uma instrução pode iniciar sua execução antes que a anterior tenha terminado) é utilizado eficientemente pelo HP PA-RISC em 5 estágios, aliados a compiladores otimizados e ao seu projeto Load/Store, melhoram a execução de instruções em um único ciclo e expandem a performance do sistema.&lt;/p&gt;  &lt;p&gt;O PA-RISC utiliza o sistema operacional HP-UX que é o sistema operacional SYSTEM V da AT&amp;amp;T com implementações desenvolvidas pela Hewlett-Packard como: gráficos, suporte a linguagem nativa e algumas construções do Unix BSD.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;O Hardware do PA-Risc&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Certas operações do sistema, como o boot, podem necessitar da especificação do endereço de hardware. Portanto, é interessante que os administradores de sistemas conheça a configuração de seu hardware com os respectivos endereços.&lt;/p&gt;  &lt;p&gt;Cada periférico possui um único endereço de hardware que identifica a path de conexão da CPU para o device propriamente dito. Essa path é composta pelo endereço de todos os elementos que aparecem entre a CPU e o periférico.&lt;/p&gt;  &lt;p&gt;SPU – System Processing Unit. São as unidades de processamento do sistema, sendo basicamente a CPU e memoria.&lt;/p&gt;  &lt;p&gt;BUS – São circuitos através do qual os dados trafegam entre os módulos do hardware (CPU, Memoria, Chanel Adapter, device adapter). As placas dos periféricos são conectadas no bus. As maquinas de BUS HP-PB (HP-Precision Bus) com exceção da 890, utilizam somente um BUS, já o modelo 890 utiliza 2 estruturas de BUS; PMB (Processor Main Bus) para processador e memória e HP-PB para I/O.&lt;/p&gt;  &lt;p&gt;SLOTS – Local físico onde serão conectados as placas. Cada slot tem um número/letra. Nas maquinas HP-PB, todos os slots são conectados no Bus de precisão.&lt;/p&gt;  &lt;p&gt;Device Adapter – É a interface que liga o Bus ao periférico, são conhecidos também I/O cards. Os principais devices adapters são:&lt;/p&gt;  &lt;ul&gt;   &lt;ul&gt;     &lt;li&gt;SCSI – Small Computer System Interface. Tecnologia nova que trabalha com conect/desconect para o Bus, permitindo que periféricos de velocidade diferentes sejam conectados a mesma placa (Discos, Fitas, DVDs, etc).        &lt;br /&gt;Pode-se conectar até 7 devices SCSI para cada adaptador (endereçados de 0 a 6): O ultimo device SCSI deve ter um terminador. O comprimento do cabo não deve exceder 6m. &lt;/li&gt;      &lt;li&gt;HP-IB – HP Interface Bus – Suporta Discos, Fitas, drivers DVD-ROM, impressoras e ploters. Este Device Adapter tem função para aqueles que possuem periféricos HP-IB antigos e querem aproveita-los. Uma desvantagem deste Device Adapter é o fato de não permitir a conexão de periféricos com velocidades diferentes ( Discos e Fitas por exemplo).        &lt;br /&gt;Pode-se conectar até 4 discos HP-IB. O comprimento do cabo não deve exceder 20m, para interface de velocidade padrão e 15m, para alta velocidade.         &lt;br /&gt;Um extensor pode ser utilizado para transmissões a distancia entre SPU e o periférico atingido, até 1.25km (exceto para discos). &lt;/li&gt;      &lt;li&gt;MUX – Suporta qualquer ligação serial RS-232, plotters, Access Port e alguns podem ligar modems. Podem ser de 8 e de 16 saídas. O comprimento do cabo pode estar entre 5 e 15 m. &lt;/li&gt;      &lt;li&gt;LAN – Local Área Network. Conecta redes padrão Ethernet e IEEE 802-3. &lt;/li&gt;      &lt;li&gt;GPIO – General Purpose I/O. Device Adapter utilizado para Conectar periféricos específicos. &lt;/li&gt;      &lt;li&gt;PSI – Placa programável onde se carrega os protocolos IBM SNA ou X25. &lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5173052840491277468-8868420912395884058?l=ajmoreti.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajmoreti.blogspot.com/feeds/8868420912395884058/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://ajmoreti.blogspot.com/2011/08/processadores-pa-risc-precision.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/8868420912395884058'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/8868420912395884058'/><link rel='alternate' type='text/html' href='http://ajmoreti.blogspot.com/2011/08/processadores-pa-risc-precision.html' title='Processadores PA-RISC ( Precision Architeture Risc)'/><author><name>Amilcar de Jesus Moreti</name><uri>http://www.blogger.com/profile/04022310434818885345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://1.bp.blogspot.com/_I4DneDrgUiQ/Sq_P5t7dwtI/AAAAAAAAAFA/mYME8h_xiF4/S220/Imagem0116.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5173052840491277468.post-5624827506349867809</id><published>2011-08-11T09:18:00.001-03:00</published><updated>2011-08-11T09:18:22.555-03:00</updated><title type='text'>Processadores Itanium</title><content type='html'>&lt;p&gt;Tambem Conhecido como &lt;a href="http://pt.wikipedia.org/wiki/IA-64"&gt;IA-64&lt;/a&gt; foi desenvolvido pela Intel e HP, para plataformas &lt;a href="http://pt.wikipedia.org/wiki/SMP"&gt;SMP&lt;/a&gt; de &lt;a href="http://pt.wikipedia.org/wiki/64_bits"&gt;64 bits&lt;/a&gt; “puro-sangue”.&lt;/p&gt;  &lt;p&gt;A tecnologia Itanium não usa a arquitetura &lt;a href="http://pt.wikipedia.org/wiki/RISC"&gt;RISC&lt;/a&gt; nem &lt;a href="http://pt.wikipedia.org/wiki/CISC"&gt;CISC&lt;/a&gt;, na verdade a Intel criou uma nova arquitetura chamada de &lt;a href="http://pt.wikipedia.org/wiki/EPIC"&gt;EPIC&lt;/a&gt;. Aqui se inicia a 8ª Geração de Processadores.&lt;/p&gt;  &lt;p&gt;Esse processador é incompatível com Sistemas Operacionais desenvolvidos para os &lt;a href="http://pt.wikipedia.org/wiki/Processador"&gt;processadores&lt;/a&gt; da linha X86-64, pois estes são compatíveis com 32 e 64 bits. &lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;font size="1"&gt;Fontes de Pesquisas: wikipedia.org, clube do hardware, documentos do site da HP e Intel&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Historia do Itanium&lt;/strong&gt;&lt;/p&gt;  &lt;h5&gt;História&lt;/h5&gt;  &lt;p&gt;Desenvolvimento: 1989-2000&lt;/p&gt;  &lt;p&gt;Em 1989, a HP determinou que as arquiteturas reduced instruction set computer (RISC) estavam se aproximando do limite de processamento de uma instrução por ciclo. &lt;/p&gt;  &lt;p&gt;A HP começou a estudar&amp;#160; uma nova arquitetura, mais tarde nomeado Explicitly Parallel instruction Computing (EPIC).&lt;/p&gt;  &lt;p&gt;Essa arquitetura permite que o processador execute múltiplas instruções em cada ciclo de clock. Essa arquitetura de very long instruction word (VLIW), em que uma única palavra de instrução contém instruções múltiplas. Com a EPIC, o compilador determina antecipadamente quais instruções podem ser executadas ao mesmo tempo, tão simplesmente o microprocessador executa as instruções e não precisa definir mecanismos para determinar quais as instruções executar em paralelo. &lt;/p&gt;  &lt;p&gt;O principal objetivo desta abordagem é primeiramente permitir uma mais profunda inspeção do código, identificando oportunidades adicionais para execução paralela, e, depois, para simplificar o design do processador e reduzir o consumo de energia, eliminando a necessidade de circuitos de programação para o tempo de execução. &lt;/p&gt;  &lt;p&gt;A HP determinou que já não era rentável para os sistemas individuais corporativos das empresas, como ela própria, desenvolver microprocessadores proprietários, então a HP buscou uma parceria com a Intel em 1994 para desenvolver a arquitetura IA-64, que derivou da EPIC. Intel estava disposta a empreender um esforço de desenvolvimento muito grande na IA-64, na expectativa de que o microprocessador resultante seria utilizado pela maioria dos fabricantes de sistemas das empresas. A HP e a Intel deram início a um grande esforço de desenvolvimento conjunto com a meta de entregar o primeiro produto, Merced, em 1998. Durante o desenvolvimento, Intel, HP e analistas da indústria previram que IA-64 iria dominar servidores, workstations e desktops high-end, e eventualmente suplantar as arquiteturas RISC e complex instruction set computer (CISC) para todos os aplicativos de uso geral. A Compaq e Silicon Graphics decidiu abandonar desenvolvimento das arquiteturas Alpha e MIPS, respectivamente, com intenção de migrar para IA-64. Vários grupos desenvolveram sistemas operacionais para a arquitetura, incluindo Microsoft Windows, Linux e variantes UNIX, tais como HP-UX, Solaris, Tru64 UNIX, e Monterey/64 (as três últimas foram canceladas antes de chegar ao mercado). Em 1997, tornou-se evidente que a arquitectura IA-64 e o compilador eram muito mais difíceis de implementar do que se pensava inicialmente, e a entrega de Merced começou a escorregar. As dificuldades técnicas incluindo o transistor de altas contagens necessárias para apoiar as largas instruções e os caches de grandes dimensões. Houve também problemas estruturais no âmbito do projecto, como os dois elementos da equipe conjunta utilizarem métodos diferentes e terem diferentes prioridades. Desde que o Merced foi o primeiro processador EPIC, o esforço de desenvolvimento encontrou mais problemas imprevistos do que a equipe estava acostumada. Além disso, o conceito EPIC depende de capacidade do compilador que nunca haviam sido implementadas antes, de forma que mais investigação era necessário. A Intel anunciou o nome oficial do processador Itanium, em 4 de outubro de 1999. Em poucas horas, o nome Itanic havia sido cunhado em um newsgroup da Usenet, uma referência ao Titanic, o &amp;quot;transatlântico inafundável&amp;quot; que afundou em 1912. Itanic desde então tem sido frequentemente utilizado por The Register, Scott McNealy, e outros[o que implica que o investimento multibilionário no Itanium e à enorme expectativa precoce seria seguido por sua morte relativamente rápida.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Itanium (Merced): 2001&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Até o momento que o Itanium foi lançado em junho de 2001, seu desempenho não era superior aos concorrentes processadores RISC e CISC. O Itanium competiu no low-end (principalmente 4-CPU e sistemas menores) com servidores baseados em processadores x86, e em high-end com arquitetura IBM, POWER e a Sun Microsystems com arquitetura SPARC. A Intel reposicionou o Itanium para focalizar no negócio high-end e computação HPC, na tentativa de duplicar o sucesso horizontal do x86 no mercado (isto é, única arquitetura, vários fornecedores de sistemas). O sucesso desta versão do processador inicial foi limitada a substituir PA-RISC em sistemas HP, Alpha em sistemas Compaq e MIPS em sistemas SGI, embora a IBM também entregou um supercomputador baseado neste processador. POWER and SPARC manteve-se forte, enquanto a arquitetura 32-bit x86 continuou a crescer para dentro do espaço da empresa. Com as economias de escala, alimentada pela sua enorme base instalada, x86 manteve-se o eminente &amp;quot;horizonte&amp;quot; na arquitetura em computação empresarial. Apenas alguns milhares de sistemas que usam o processador Itanium original “Merced” foram vendidos, devido ao desempenho relativamente fraco, alto custo e disponibilidade de software limitado. Reconhecendo que a falta de software poderia ser um problema sério para o futuro, a Intel fez milhares destes primeiros sistemas disponíveis para os fornecedores de software independentes (ISVs) para estimular o desenvolvimento. HP e Intel trouxe a próxima geração do processador Itanium 2 ao mercado um ano depois.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Itanium 2: 2002-presente&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Itanium 2 em 2003&lt;/p&gt;  &lt;p&gt;O processador Itanium 2 foi lançado em 2002, e foi comercializado para servidores corporativos e não para toda a gama de computadores high-end. O primeiro Itanium 2, com o codinome de McKinley, foi desenvolvido em conjunto pela HP e Intel. Ele aliviava muitos dos problemas de desempenho do processador Itanium original, que foram causados por um subsistema de memória ineficiente. McKinley continha 221 milhões de transistores, dos quais 25 milhões foram para a lógica, medido 19,5 milímetros de 21,6 mm (421mm 2)e foi fabricadas em 180 nm, volume de processamento CMOS com seis camadas de metalização de alumínio. Em 2003, a AMD lançou o Opteron, que implementou a sua arquitetura de 64-bit (x86-64). Opteron ganhou rápida aceitação no mercado de servidores corporativos porque forneceu uma atualização fácil de x86. A Intel respondeu através da implementação da arquitetura x86-64 em seus microprocessadores Xeon em 2004. A Intel lançou um novo Itanium 2 membro da família, codinome Madison, em 2003. Madison usava um processo de 130 nm e foi a base de todos os novos processadores Itanium até Montecito ser lançado em junho de 2006. Em março de 2005, a Intel anunciou que estava trabalhando em um novo processador Itanium, codinome Tukwila, a ser lançado em 2007. Tukwila teria quatro núcleos de processador e substituirá o BUS do Itanium com uma nova interface comum de sistemas, que também seria usado por um novo processador Xeon. Mais tarde naquele ano, a Intel revisa a data de entrega do Tukwila para final de 2008. Em novembro de 2005, os principais fabricantes de servidores Itanium se juntaram com a Intel e um número de fornecedores de software para formar o Itanium Solutions Alliance para promover a arquitetura e acelerar a portabilidade de software. A Aliança anunciou que seus membros iriam investir US $ 10 bilhões em soluções Itanium no final da década. Em 2006, a Intel entregou o Montecito, um processador dual-core, que praticamente dobrou o desempenho e diminuiu o consumo de energia por cerca de 20 por cento. A Intel lançou a versão Itanium atual, codinome Montvale, em novembro de 2007. Em maio de 2009, o cronograma para Tukwila, e seu acompanhamento foi novamente revisto, com liberação para OEMs prevista para o primeiro trimestre de 2010. Em comparação com a família de processadores Xeon Server, Itanium não é um produto de alto volume para Intel. A Intel não divulgou o número de produção, mas um analista da indústria estima que a taxa de produção foi de 200.000 processadores por ano em 2007. Segundo o Gartner, o número total de servidores Itanium vendidos por todos os fornecedores em 2007 foi de cerca de 55.000. Isso se compara com os 417.000 servidores RISC (espalhados por todos os vendedores RISC) e 8,4 milhões de servidores x86. De 2001 a 2007 a IDC reporta que um total de 184.000 sistemas baseados em Itanium foram vendidos. Para o mercado de sistemas, o combinado POWER / SPARC / Itanium, em um relatório da IDC informa que o POWER captou 42% e SPARC captou 32%, enquanto as receitas baseadas no sistema Itanium chegaram a 26% no segundo trimestre de 2008. De acordo com um analista da IDC, em HP 2007 representou, talvez, 80% das receitas sistemas Itanium. Segundo o Gartner, a HP em 2008 representaram 95% das vendas Itanium.&lt;/p&gt;  &lt;p&gt;A Intel tem amplamente documentado o conjunto de instruções de processadores e microarquitetura, e da imprensa técnica forneceu revisões. A arquitetura foi renomeado várias vezes durante sua história. HP inicialmente chamou-PA-WideWord. Intel mais tarde chamou IA-64, depois de processadores Itanium Architecture (IPA), antes de se estabelecer em Intel Itanium Architecture, mas ainda é amplamente referido como IA-64. É uma arquitetura de 64 bits, totalmente paralela rica em registros. A base da palavra de dados é de 64 bits, byte endereçável. O espaço de endereçamento lógico é 2 64 bytes. A arquitetura implementa pressuposição, especulação, e previsão de desvio. Ele usa um mecanismo de hardware para renomeação de registro, em vez de simples registo de janelas para a passagem de parâmetro. O mesmo mecanismo também é utilizado para permitir a execução paralela de loops. Especulação, previsão, pressuposição, e renomeação estão sob o controle do compilador: cada instrução inclui bits extras para isso. Esta abordagem é a característica distintiva da arquitetura. A arquitetura implementa 128 registros inteiros, 128 registros de ponto flutuante, 64 pressuposição de um bits, e oito registros derivados. Os registros de ponto flutuante de 82 bits preserva a precisão dos resultados intermediários.&lt;/p&gt;  &lt;h4&gt;&lt;font size="2"&gt;Execução da instrução&lt;/font&gt;&lt;/h4&gt;  &lt;p&gt;Cada instrução 128-bit contém três instruções, e a busca do mecanismo pode ler as duas instruções por clock do cache L1 no pipeline. Quando o compilador pode tirar o máximo proveito deste, o processador pode executar seis instruções por ciclo de clock. O processador tem trinta unidades de execução funcional em onze grupos. Cada unidade pode executar um subconjunto específico do conjunto de instruções, e cada unidade é executado a uma taxa de uma instrução por ciclo de execução, a menos barreiras à espera de dados. Embora nem todas as unidades de participação em um grupo executam subconjuntos idênticos do conjunto de instruções, instruções comuns podem ser executadas em várias unidades.&lt;/p&gt;  &lt;p&gt;Os grupos de unidade de execução incluem:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Seis ALUs de propósito geral, duas unidades integras, uma unidade de mudança &lt;/li&gt;    &lt;li&gt;Quatro unidades de dados de cache &lt;/li&gt;    &lt;li&gt;Seis unidades de multimídia, duas unidades de deslocamento paralelo, um multiplicador paralelo, uma contagem de população &lt;/li&gt;    &lt;li&gt;Duas unidades com ponto flutuante de 82-bits com acumulação-múltipla, Duas unidades com ponto flutuante SIMD com acumulação-múltipla (duas operações de 32-bit cada) &lt;/li&gt;    &lt;li&gt;Três unidades derivadas &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;O compilador pode freqüentemente agrupar instruções em conjunto de seis que podem ser executadas ao mesmo tempo. Desde que a unidades de ponto flutuante implemente uma operação de acumulação-múltipla, uma instrução de um único ponto flutuante pode executar o trabalho de duas instruções quando a aplicação requer uma multiplicação seguido por um acréscimo (Isto é muito comum em processamento científico). Quando isso ocorre, o processador pode executar quatro FLOPS por ciclo. Por exemplo, a 800 MHz Itanium tiveram uma avaliação teórica de 3,2 g FLOPS e os mais rápidos processadores Itanium 2, a 1,67 GHz, foi avaliado em 6,67 GFLOPS.&lt;/p&gt;  &lt;h4&gt;&lt;font size="2"&gt;Arquitetura de Memória&lt;/font&gt;&lt;/h4&gt;  &lt;p&gt;De 2002 a 2006, os processadores Itanium 2 compartilhavam uma hierarquia de cache comum. Eles tinham 16 KiB de cache L1 de instruções e 16 KiB de Nível 1 cache de dados. A cache L2 foi unificada (tanto de instruções e dados) e é de 256 KiB. A cache de nível 3 também foi unificada e varia em tamanho de 1,5 MiB a 24 MiB. Os 256 KiB de cache L2 contém lógica suficiente para lidar com operações de semáforo sem perturbar a unidade lógica aritmética principal (ALU). A memória principal é acessada através de um BUS para uma off-chip chip set. O Itanium 2 BUS foi inicialmente chamado de McKinley BUS, mas agora é normalmente referido como o Itanium BUS. A velocidade do BUS vem aumentando com lançamentos novos processadores. As transferências de BUS 2 × 128 bits por ciclo de clock, então a 200 MHz BUS McKinley transfere 6,4 GiB / s), e os 533 MHz BUS Montecito transfere17,056 GiB / s Alterações de arquitetura Processadores Itanium lançado antes de 2006 tinha suporte de hardware para o IA-32 arquitetura para permitir suporte para aplicativos de servidor legado, mas o desempenho para o código IA-32 era muito pior do que para o código nativo e também pior do que o desempenho dos processadores x86 contemporâneos. Em 2005, a Intel desenvolveu o IA-32 Execution Layer (IA-32 EL), um emulador de software que fornece um melhor desempenho. Com Montecito, da Intel, portanto, eliminado suporte de hardware para IA-32 do código. Em 2006, com o lançamento do Montecito, a Intel fez uma série de melhorias para a arquitetura do processador de base, incluindo:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Hardware multithreading: Cada núcleo do processador mantém contexto para duas linhas de execução. Quando uma barreira de contexto aparece durante o acesso a memória, o outro segmento pode executar. Intel chama isso de “coarse multithreading” para distingui-lo da tecnologia hiper-threading, A Intel integra em alguns processadores x86 e x86-64. “Coarse multithreading” está bem adaptado à arquitetura Intel Itanium e resulta em um ganho de desempenho significativo. &lt;/li&gt;    &lt;li&gt;Suporte de hardware para virtualização: Intel adicionou Intel Virtualization Technology (Intel VT), que fornece ao hardware assistências para funções de virtualização do núcleo. A virtualização permite que um software “hypervisor” para executar várias instâncias do sistema operabcional do processador simultaneamente. &lt;/li&gt;    &lt;li&gt;Melhorias Cache: Montecito acrescentado um cache L2 dividido, que incluí 1 cache L2 dedicado MiB para obter instruções. O original 256 KiB de cache L2 foi convertido para um cache de dados dedicado. Montecito também incluídos até 12 MiB de cache on-die L3. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Suporte de Hardware&lt;/p&gt;  &lt;p&gt;A partir de 2009 Vários fabricantes oferecem sistemas Itanium, incluindo HP, SGI, NEC, Fujitsu, Hitachi, e Groupe Bull. Além disso, a Intel oferece um chassi que podem ser usados por integradores de sistema para construir sistemas Itanium. A HP, o único dos principais fabricantes da indústria de quatro servidores para oferecer sistemas baseados em Itanium, hoje, produz pelo menos 80% de todos os sistemas Itanium. A HP teve 7200 sistemas vendidos no primeiro trimestre de 2006. A maior parte dos sistemas vendidos são servidores corporativos e máquinas para a computação em larga escala técnica, com um preço médio de venda por sistema extra de E.U. $ 200.000. Um sistema típico utiliza oito ou mais processadores Itanium.&lt;/p&gt;  &lt;h4&gt;&lt;font size="2"&gt;Chipsets&lt;/font&gt;&lt;/h4&gt;  &lt;p&gt;A Interface BUS Itanium se comunica com o restante do sistema através de um chipset. Fabricantes de servidores Enterprise diferenciam seus sistemas através da concepção e desenvolvimento de chipsets que a interface do processador de memória, interligações, e os controladores de periféricos. O chipset é o coração do sistema de arquitetura de nível para cada projeto do sistema. Desenvolvimento de um chipset custa dezenas de milhões de dólares e representa um importante compromisso para a utilização do Itanium. A IBM criou um chipset em 2003, e a Intel em 2002, mas nenhum deles desenvolveu chipsets para suportar novas tecnologias como DDR2 ou PCI Express... atualmente, existem chipsets modernos para sistemas de apoio às tecnologias, como são fabricados pela HP, Fujitsu, SGI, NEC e Hitachi. O próximo processador Itanium (Tukwila) foi desenhado para compartilhar um chipset comum com o processador Intel Xeon EX (processador Intel Xeon projetado para quatro processadores e servidores maiores). O objetivo é agilizar o desenvolvimento do sistema e reduzir os custos para OEMs de servidor, muitos dos quais desenvolvem tanto para servidores Itanium quanto para Xeon.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;O mais novo processador Intel Itanium série 9300 (Tukwila)&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Os servidores baseados em Itanium fornecem desempenho escalável e poderoso para ambientes de UNIX e mainframe, e também excelente disponibilidade para as suas aplicações mais críticas. Esses sistemas são ideais para as cargas de trabalho mais intensas de hoje, como aplicações de banco de dados, inteligência corporativa e planejamento de recursos corporativos (ERP). &lt;/p&gt;  &lt;p&gt;O mais novo processador Intel Itanium série 9300 fornece mais do dobro do desempenho da geração anterior, além de até seis vezes mais largura de banda de memória, até nove vezes mais largura de banda de interconexão e até oito vezes mais capacidade de memória. Fornece uma incrível escalabilidade e uma base poderosa, flexível e com maior eficiência energética para virtualização, consolidação e gerenciamento de carga de trabalho do data center.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5173052840491277468-5624827506349867809?l=ajmoreti.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajmoreti.blogspot.com/feeds/5624827506349867809/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://ajmoreti.blogspot.com/2011/08/processadores-itanium.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/5624827506349867809'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/5624827506349867809'/><link rel='alternate' type='text/html' href='http://ajmoreti.blogspot.com/2011/08/processadores-itanium.html' title='Processadores Itanium'/><author><name>Amilcar de Jesus Moreti</name><uri>http://www.blogger.com/profile/04022310434818885345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://1.bp.blogspot.com/_I4DneDrgUiQ/Sq_P5t7dwtI/AAAAAAAAAFA/mYME8h_xiF4/S220/Imagem0116.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5173052840491277468.post-917212429868945957</id><published>2011-08-10T17:30:00.001-03:00</published><updated>2011-08-10T17:30:52.791-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Informix'/><title type='text'>Configuração de Clusters</title><content type='html'>&lt;p&gt;Para configurar seu sistema&amp;#160; como um cluster de alta disponibilidade, você deve tomar as seguintes ações:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Conheça os requisitos de Hardware e Sistema Operacional; &lt;/li&gt;    &lt;li&gt;Conheça os requisitos do Banco de Dados; &lt;/li&gt;    &lt;li&gt;Conheça os requisitos do Servidor de Banco de dados; &lt;/li&gt;    &lt;li&gt;Configuração da Conectividade. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Cada item desses tópicos serão explicados abaixo.&lt;/p&gt;  &lt;p&gt;Você pode configurar seu sistema para usar o protocolo SSL (Secure Sockets Layer), um protocolo de comunicação que garante a privacidade e integridade dos dados transmitidos através da rede, para comunicação HDR. Você pode usar o protocolo SSL para conexão entre o servidor primário e secundário e para conexões com RS (Remote Standalone) e SD (Shared Disk) de servidores secundários em uma configuração de alta disponibilidade. Para obter informações de como usar o protocolo SSL, veja a sessão “Secure Sockets Layer Communication Protocol Encryption” do IBM Informix Security Guide.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Requisitos de Hardware e Sistema Operacional&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Para o funcionamento do cluster de alta disponibilidade, o hardware deve atender certos requisitos.&lt;/p&gt;  &lt;p&gt;O hardware deve atender aos seguintes requisitos:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;O servidor primário e secundário deve ser capaz de executar a mesma imagem do IBM Informix, mesmo que eles não tenha hardware ou o sistema operacional idêntico.&amp;#160; Por exemplo, você pode usar servidores com diferentes sistemas operacionais Linux de 32 bits, porque esses sistemas operacionais pode executar a imagem do Informix. Nessa situação, você não pode adicionar um server com um Linux 64-bit porque esse sistema operacional requer uma imagem de Informix diferente. Cheque o arquivo “machine notes”: você pode usar qualquer combinação de hardware e sistema operacional listado nesse arquivo. &lt;/li&gt;    &lt;li&gt;O hardware que roda como primário e secundário deve suportar redes. &lt;/li&gt;    &lt;li&gt;A quantidade de espaço em disco alocado para os dbspaces no servidor primário e secundário devem ser iguais. O tipo de espaço em disco é irrelevante; você pode usar uma mistura de raw device com file system. &lt;/li&gt;    &lt;li&gt;Os chunks em cada servidores devem ter os mesmos caminhos. Links simbólicos são permitidos para a plataforma UNIX, mas não para a plataforma Windows. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Requisitos do Banco de Dados&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;O Banco de dados deve atender os seguintes requisitos:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Todos os dados devem ser logged.      &lt;br /&gt;Todos os bancos de dados que vai ser replicado devem estar em modo transacional.       &lt;br /&gt;      &lt;br /&gt;Este requisito é importante&amp;#160; porque o servidor de banco de dados secundário usa registros de logical-log vindo do servidor primário para atualizar os dados que ele gerencia. Se o banco de dados gerenciado pelo servidor primário não esta em modo transacional, para esse banco de dados não será gerado registros de logs,&amp;#160; sendo assim o servidor de banco de dados secundário não terá meios para atualizar os dados. &lt;/li&gt;    &lt;li&gt;Os dados devem residir no mesmo dbspace ou sbspaces.      &lt;br /&gt;Se o seu banco de dados primário tem objetos armazenados em blobspaces, modificações nos dados dentro desses blobspaces não é replicado como parte normal do processamento HDR. No entanto, objetos grandes mas simples são replicados.       &lt;br /&gt;Objetos grandes, que são armazenados em sbspaces, são replicados. Os sbspaces devem estar em modo transacional. Tipos definidos por usuários (UDTs) são replicados, a menos que estejam armazenados em arquivos do sistema operacional. Tipos de dados com out-of-row são replicados se os dados estão armazenados em sbspace ou em uma tabela diferente no mesmo servidor de banco de dados. &lt;/li&gt;    &lt;li&gt;O servidor secundário não pode usar compressão de disco.      &lt;br /&gt;Se você usar o recurso do Informix de compressão de disco, dados que são comprimidos na tabela de origem vão ser comprimidos nas tabelas de destino. Você não pode executar compressão no HDR secundário, RS secundário ou SD secundário, porque o HDR destino deve ter as mesmas configurações de dados e físico como o servidor de origem       &lt;br /&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Requisitos do Servidor do Banco de Dados&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Para um par cluster de servidores de alta disponibilidade funcionar, você deve configurar totalmente cada um dos servidores. Você pode então usar os aspectos relevantes para configurar os pares de servidores.&lt;/p&gt;  &lt;p&gt;Estes tópicos descrevem as considerações de configuração a seguir para os pares de cluster:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Versão do Banco de dados; &lt;/li&gt;    &lt;li&gt;Configuração do dbspace e chunk; &lt;/li&gt;    &lt;li&gt;Tamanhos de paginas não padrão em um ambiente HDR; &lt;/li&gt;    &lt;li&gt;Espelhamento; &lt;/li&gt;    &lt;li&gt;Configuração do Physical-log; &lt;/li&gt;    &lt;li&gt;Dbspace e dispositivo de backup para logical-log; &lt;/li&gt;    &lt;li&gt;Configuração do Logical-log &lt;/li&gt;    &lt;li&gt;Parâmetros de configurações do HDR; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Versão do Banco de dados&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;As versões do Informix no servidor primário e secundário deve ser idêntica.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Configuração do dbspace e chunk&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;o numero de dbspaces, o numero de chunks, seus tamanhos, seus caminhos e seus offsets devem ser idênticos no servidor de banco de dados primário e secundário. Além disso, a configuração deve conter pelo menos um dbspace temporário se o servidor HDR secundário for usado para criação de relatórios de atividades.&lt;/p&gt;  &lt;p&gt;Somente no UNIX:&lt;/p&gt;  &lt;p&gt;Você poderá usar links simbólicos para os chunks.&lt;/p&gt;  &lt;p&gt;Importante: Se você não utilizar links simbólicos para os chunks, você não poderá alterar os caminhos facilmente&lt;/p&gt;  &lt;p&gt;Os seguintes parâmetros no ONCONFIG deve ter o mesmo valor em cada servidor de banco de dados: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;ROOTNAME &lt;/li&gt;    &lt;li&gt;ROOTOFFSET &lt;/li&gt;    &lt;li&gt;ROOTPATH &lt;/li&gt;    &lt;li&gt;ROOTSIZE &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Tamanhos de paginas não padrão em um ambiente HDR&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;O tamanho de paginas de um dbspace e as especificações de buffer são automaticamente propagadas a partir do servidor primário para o secundário. Embora ambos os servidores devem ter o mesmo buffer pools, o numero de buffer no buffer pool não precisam corresponder.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Espelhamento&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Você não deve configurar o parâmetro MIRROR&amp;#160; para o mesmo valor nos dois servidores de banco de dados; você pode habilitar espelhamentos em um servidor de banco de dados e desabilitar o espelhamento no outro. Entretanto, se você especificar um chunk espelho para um chunk root do servidor primário, você deve também especificar um chunk espelho para o chunk root do servidor secundário. Portanto, os seguintes parâmetros do ONCONFIG devem ser configurados com o mesmo valor em ambos os servidores: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;MIRROROFFSET &lt;/li&gt;    &lt;li&gt;MIRRORPATH &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Configuração do Physical-log&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;O Physical-log deve ser idêntico em ambos os servidores. Os seguintes parâmetros do ONCONFIG devem ter os mesmos valores em cada servidores:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;PHYSBUFF &lt;/li&gt;    &lt;li&gt;PHYSFILE &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Dbspace e dispositivo de backup para logical-log&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Você pode especificar diferentes dispositivos para o servidor primário e secundário.&lt;/p&gt;  &lt;p&gt;Se você usar o ON-Bar, configure os parâmetros de configuração do ON-Bar com os mesmos valores em ambos os servers. Para informações dos parâmetros do ON-Bar veja o IBM Informix Backup and Restore Guide.&lt;/p&gt;  &lt;p&gt;Se você usa o ontape, o tamanho e o bloco do dispositivo devem ser idênticos. A seguir os parâmetros do ONCONFIG que devem ser o mesmo valor em ambos os servidores:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;LTAPEBLK &lt;/li&gt;    &lt;li&gt;LTAPESIZE &lt;/li&gt;    &lt;li&gt;TAPEBLK &lt;/li&gt;    &lt;li&gt;TAPESIZE &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Configuração do Logical-log&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Todos os registros de logs são replicados para o servidor secundário. Você pode configurar o mesmo numero de Logical-log e também com o mesmo tamanho em ambos os servidores. A seguir os parametros do ONCONFIG que devem ser o mesmo valor em ambos os servidores:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;LOGBUFF &lt;/li&gt;    &lt;li&gt;LOGFILES &lt;/li&gt;    &lt;li&gt;LOGSIZE &lt;/li&gt;    &lt;li&gt;DYNAMIC_LOGS &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Logical-logs que são adicionados dinamicamente no servidor primário são replicados automaticamente para o servidor secundário. Embora o valor de DYNAMIC_LOGS no servidor secundário não tem nenhum efeito, DYNAMIC_LOGS mantem em sincronia com os valores do servidor primário.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Parâmetros de configurações do HDR&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Os seguintes parâmetros de configuração do HDR devem ser definidos com valores iguais em ambos o servidores:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;DRAUTO &lt;/li&gt;    &lt;li&gt;DRINTERVAL &lt;/li&gt;    &lt;li&gt;DRTIMEOUT &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Para servidores secundários em cluster de alta disponibilidade HDR, RSS e SDS, Logical-log&amp;#160; em tabelas temporárias devem sempre ser desativado, definindo o parâmetro de configuração TEMPTAB_NOLOG a 1.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5173052840491277468-917212429868945957?l=ajmoreti.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajmoreti.blogspot.com/feeds/917212429868945957/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://ajmoreti.blogspot.com/2011/08/configuracao-de-clusters.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/917212429868945957'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/917212429868945957'/><link rel='alternate' type='text/html' href='http://ajmoreti.blogspot.com/2011/08/configuracao-de-clusters.html' title='Configuração de Clusters'/><author><name>Amilcar de Jesus Moreti</name><uri>http://www.blogger.com/profile/04022310434818885345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://1.bp.blogspot.com/_I4DneDrgUiQ/Sq_P5t7dwtI/AAAAAAAAAFA/mYME8h_xiF4/S220/Imagem0116.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5173052840491277468.post-6659394590487648299</id><published>2011-07-26T11:42:00.001-03:00</published><updated>2011-07-26T11:42:11.821-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Informix'/><title type='text'>A Arquitetura Multithreaded</title><content type='html'>&lt;p&gt;&lt;strong&gt;O que é uma Thread?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Uma Thread é uma sequencia de instruções sendo executadas em um programa.&lt;/p&gt;  &lt;p&gt;Antes, observaremos a arquitetura do servidor, pois é útil examinar o conceito usual de uma thread.&lt;/p&gt;  &lt;p&gt;Uma thread pode ser interpretada como uma sequencia de instruções sendo executadas em um programa. Quando múltiplas thread são executadas em uma mesma entidade (no nosso caso, um processo), ela é chamada de multithreading.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Single-Threaded vs. Multithreaded&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt; &lt;a href="http://lh5.ggpht.com/-devkwNcmIWo/Ti7SPhT4okI/AAAAAAAAAUA/hf5DlO0enl8/s1600-h/processo2.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="processo" border="0" alt="processo" src="http://lh4.ggpht.com/-9VFV_2v1p58/Ti7SQe6g2xI/AAAAAAAAAUE/08b9k_ncgdQ/processo_thumb.png?imgmax=800" width="244" height="107" /&gt;&lt;/a&gt;   &lt;p&gt;Um processo regular UNIX que não implementa threads pode ser pensado como um processo single-threaded, apesar de não ser chamado assim. Uma sequencia de instruções é executada para este processo, e o sistema operacional é responsável por agendar e executar esses processos.&lt;/p&gt;  &lt;p&gt;Multithreading é um método de muitas execuções repetidas de um processo para diferentes usuários sem ter que formar muitas instancias daquele processo ao nível do sistema operacional.&lt;/p&gt;  &lt;p&gt;Um processo multhreaded pode ter threads múltiplas pesquisando dentro de um processo UNIX, cada um executando sequencialmente e dando o controle para outras threads em um ponto especifico de tempo. A forma como uma arquitetura multithread é executada é o que difere de uma arquitetura de single-thread recebendo e executando solicitações de um processo de um único usuário.&lt;/p&gt;  &lt;p&gt;Multithreading é um conceito ao nível do sistema por onde os programas realmente executam instruções ao nível da maquina para manipular os processos, então esse é executado para vários usuários ao invés de apenas um. O programa executa estas instruções totalmente ao nível do usuário, e não nível do Kernel do UNIX. Longe de afetar o UNIX, um processo em arquitetura multithread é um processo único, como qualquer outro processo.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Um programa Single-Threaded&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Considerar como o UNIX trabalha com multiprocessamento.&lt;/p&gt;  &lt;p&gt;Cada processo UNIX tem um espaço de endereço consistindo em três segmentos: text, data e stack. O segmento text contem a instrução da maquina que gera o programa de codificação executável. Os segmentos stack contem variáveis locais usada pelos programas funcionais. Finalmente, o segmento data contem o programa global e as variáveis estáticas, strings, array e outros dados.&lt;/p&gt;  &lt;p&gt;Em uma maquina monoprocessada que esteja executando 1000 processos, somente um processo esta sendo executado pelo UNIX em algum momento. Cada processo esta sendo executado dentro de uma quantidade especifica de tempo antes dele ser pré-desocupado (interrompido) pelo kernel de maneira que o próximo processo agendado possa ser executado. Quando um processo em execução é pré-desocupado, devem ser salvas informações suficientes de maneira que o processo possa ser reiniciado mais tarde. Esta informação é chamada de context do processo. O context consiste basicamente dos seguintes componentes:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;O program counter, o qual especifica o endereço das próximas instruções a serem executadas. &lt;/li&gt;    &lt;li&gt;O stack pointer, o qual contem o endereço atual da próxima entrada no stack. &lt;/li&gt;    &lt;li&gt;O general purpose registers, os quais contem os dados gerados pelo processo durante essa execução. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Existem outros componentes do context do processo UNIX, chamado de system level context, porem não vamos abortar, pois não são críticos para a compreensão de multithreading.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Um Context Switch (Alternância de Contexto)&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Em UNIX, um context switch ocorre quando um processo em execução é interrompido pelo sistema operacional. Para fazer isto, o sistema operacional salva, correntemente, o context do processo em execução em estruturas de dados pré-alocadas em memoria e carrega o contexto do próximo processo agendado.&lt;/p&gt;  &lt;p&gt;Carregar o context envolve restauração do program counter, o stack pointer e todos os general purpose registers para os valores salvos pelo sistema operacional na ultima vez que o processo em execução foi pré-desocupado. Uma vez completo, o processo continua sua execução a partir da linha de código especificada pelo program counter.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Um processo Multithreaded&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;O processo multithread, cada thread tem o seu próprio context, isto é, seu próprio local no código ( program counter ) e suas próprias variáveis de dados. Um processo multithread trabalha muito parecido com o sistema operacional na maneira da troca de um context de uma thread para outra.&lt;/p&gt;  &lt;p&gt;O próprio processo executa instruções de maquinas para realizar uma copia da thread executada no momento e trazer a próxima thread agendada. Isto permite basicamente o mesmo resultado que o sistema operacional alcança fazendo um context switch. O resultado é que o program counter aponta para uma nova instrução dentro do segmento text, o stack pointer aponta para uma diferente área de memoria&amp;#160; e os general purpose register são restaurados para os valores previamente salvados por este context. No caso do IDS Multithreading, o stack de uma thread é mantido em shared memory para se mover entre os processos do servidor (virtual processors). O tamanho padrão de stack é 32 kilobytes por cada userthread. O servidor verifica o overflow do stack e automaticamente expande o tamanho stack.&lt;/p&gt;  &lt;p&gt;Uma vez que o processo multithread age como um mini sistema operacional, ele é responsável por manter coisas do tipo:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Agendamento: a thread&amp;#160; atual decide quando ceder controle de um processo e transferir controle para outra thread. A thread atual tambem decide qual a próxima thread que será executada baseado em mecanismo de prioridade interno. &lt;/li&gt;    &lt;li&gt;Troca de Context: quando a thread atual decide que é a hora de executar outra thread, ele deve executar instruções de maquina para efetuar a troca de context entre as threads. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Agendamentos e a troca de context ainda são efetuados pelo UNIX normalmente. O processo multithread efetua agendamento e a troca de context de threads. Mantenha estes dois conceitos separados.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Virtual Processors&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Os processos que compõe o database server são conhecidos para Virtual Processors. Cada VP pertence a um virtual processor class. Um VP class é um grupo de processos responsáveis por um conjunto especifico de tarefas (na forma de threads), como, por exemplo, gravar para o logical log ou ler dados do disco. Isto quer dizer que um VP de uma certa classe pode somente pesquisar thread de uma mesma classe. Uma classe de VP pode ter um ou mais VPs, a qual na maior parte dos casos é configurada pelo administrador do sistema. O nome de um VP executável é &lt;strong&gt;oninit&lt;/strong&gt;. Todos os VPs de todas as classes são exemplos de mesmo programa, &lt;strong&gt;oninit.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Executando uma Thread&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Uma Thread esta sendo executada em um processador particular, ou esta em uma de uma serie de filas. As filas ready (ready queues) mantem os contexts de threads esperando para executa-los em um processador. Quando um processador esta livre, ele obterá o context de uma thread de uma ready queue. Ha um mecanismo de prioridade interno que determina qual thread o processador obterá da fila. O processador os substitui o context atual com o context da nova thread e continua o processamento daquela thread.&lt;/p&gt;  &lt;p&gt;As ready queues são compartilhadas entre processadores de mesma classe de modo que uma thread possa migrar entre vários processadores durante sua existência (apesar do server tender em manter a execução de uma thread em um mesmo processo). Este mecanismo mentem o trabalho balanceado entre os processos e garante que uma thread será executada se algum processador estiver disponível.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Passando o controle para outra Thread&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;A um ponto especifico de execução, a thread cede o controle do processador para outra thread. Algumas ações comuns que poderiam fazer a thread ceder são:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Aguardando por uma operação de leitura ou de gravação no disco;&lt;/li&gt;    &lt;li&gt;Aguardando por uma solicitação do processo de aplicação;&lt;/li&gt;    &lt;li&gt;Aguardando por um lock ou outro recurso;&lt;/li&gt;    &lt;li&gt;Não há mais trabalho a fazer.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Uma thread tambem poderia ceder o controle por nenhuma razão, além de dar a uma outra thread uma chance de ser executada.&lt;/p&gt;  &lt;p&gt;Quando um thread cede controle, ela é responsável pela colocação de seu próprio context em uma de muitas filas de espera (wait queue) ou uma fila de aguardo (sleep queue). As wait queue são usadas basicamente para esperar uma operação. As sleep queues são usadas por threads que necessitam ser reativadas depois de um período de tempo.&lt;/p&gt;  &lt;p&gt;O processador, então, pega o context de uma thread qualquer de uma ready queue e a substitui seu context com a nova thread. O processador continua a execução com o novo context.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Vantagens das Threads do Servidor&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Algumas das vantagens do server threads são listadas abaixo:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;São necessários poucos processos para fazer o mesmo trabalho. Este é particularmente eficiente em um ambiente OLTP quando há um grande numero de usuários. Você pode pensar nisto como &lt;em&gt;fan-in&lt;/em&gt;, onde há um grande numero de processos de aplicação com um pequeno numero de processos do database server suportando suas solicitações. Uma vantagem adicional é que um sistema que pode suportar mais usuários porque ha menos processos que necessitam ser suportados pelo sistema operacional.&lt;/li&gt;    &lt;li&gt;Além das capacidades &lt;em&gt;fan-in&lt;/em&gt;, o server tambem oferece uma capacidade fan-out. Múltiplos processos do database server podem fazer o trabalho por uma aplicação.&lt;/li&gt;    &lt;li&gt;A arquitetura multithreaded substitui muito a troca do context feito pelo sistema operacional com a troca do context feitos pelos processos dentro do database server. Uma troca de context é mais rápido quando feito dentro de um processo porque ha menos informações para trocar.&lt;/li&gt;    &lt;li&gt;O processo do database server faz o seu próprio agendamento de thread. Isto dignifica que o DBMS, a frente do que o sistema operacional determina a prioridade de tarefas.&lt;/li&gt;    &lt;li&gt;Algumas características oferecidas por um sistema multi-processado fazem deste tipo de arquitetura, muito mais eficiente. Por exemplo, nós poderíamos dar um importante processo do database server direitos exclusivos para usar um processador em partilhar.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Fan-out&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Uma das vantagens do server está em suas capacidades &lt;em&gt;fan-out&lt;/em&gt;. Isto significa que usuários podem levar vantagens de múltiplos processadores do database server (e múltiplos CPUs, se disponível) trabalhando simultaneamente para fazer o trabalho deles. &lt;/p&gt;  &lt;p&gt;o Server criará múltiplas threads que farão o trabalho de um usuário para as operações seguintes:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Ordenação&lt;/li&gt;    &lt;li&gt;Indexação&lt;/li&gt;    &lt;li&gt;Recuperação&lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5173052840491277468-6659394590487648299?l=ajmoreti.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajmoreti.blogspot.com/feeds/6659394590487648299/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://ajmoreti.blogspot.com/2011/07/arquitetura-multithreaded.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/6659394590487648299'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/6659394590487648299'/><link rel='alternate' type='text/html' href='http://ajmoreti.blogspot.com/2011/07/arquitetura-multithreaded.html' title='A Arquitetura Multithreaded'/><author><name>Amilcar de Jesus Moreti</name><uri>http://www.blogger.com/profile/04022310434818885345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://1.bp.blogspot.com/_I4DneDrgUiQ/Sq_P5t7dwtI/AAAAAAAAAFA/mYME8h_xiF4/S220/Imagem0116.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/-9VFV_2v1p58/Ti7SQe6g2xI/AAAAAAAAAUE/08b9k_ncgdQ/s72-c/processo_thumb.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5173052840491277468.post-5704466161897098943</id><published>2011-07-25T07:18:00.001-03:00</published><updated>2011-07-25T07:18:29.724-03:00</updated><title type='text'>Atualizando o Informix (In-Place)</title><content type='html'>&lt;p&gt;Na atualização do Informix sempre surge duvidas, devo atualizar no mesmo diretório? não vou perder meus dados que estão lá? não vai danificar meu chunk primário?&lt;/p&gt;  &lt;p&gt;A IBM diz que atualizar o Informix diretamente para a versão atual, deve-se instalar o produto em um novo diretório,&amp;#160; copiando alguns arquivos de configuração e iniciar o servidor para automaticamente converter os dados de sua base atual.&lt;/p&gt;  &lt;p&gt;Segundo a IBM pode-se atualizar diretamente qualquer desses produtos: Informix Versão 11.10, 10.00, 9.40, 9.30, 9.21 ou 7.31&lt;/p&gt;  &lt;p&gt;A atualização é um método de migração in-loco que usa uma base teste e produção.&lt;/p&gt;  &lt;p&gt;A atualização é um método de migração in-loco que usa seu teste existentes e hardware de produção. O sistema operacional nesses servidores devem ser suportados pelo Informix. Além disso, você deve ter espaço suficiente para a conversão dos dados.&lt;/p&gt;  &lt;p&gt;Uma atualização segura consiste de alguns procedimentos:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Prepare seu sistema, que inclui fechar todas as transações, verifique a integridade dos dados com o utilitário &lt;strong&gt;oncheck,&lt;/strong&gt; e faça um backup do nível 0. ( Se você estiver utilizando o Enterprise Replication ou cluster de alta disponibilidade, você deve para esse serviço e realizar algumas tarefas adicionais).       &lt;br /&gt;      &lt;br /&gt;Uma boa pratica é fazer backup de todos os arquivos de configuração, tanto do sistema operacional quanto do Informix.       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Instale o novo produto no servidor.      &lt;br /&gt;      &lt;br /&gt;&lt;strong&gt;Importante:&lt;/strong&gt; A forma mais segura de atualizar o Informix é instalar uma nova versão em outro diretório. Para economizar espaço você pode selecionar somente os produtos que necessita para a instalação. Somente depois de testar a instancia do servidor com as configurações semelhantes ao de produção é que vamos aplicar essa atualização no servidor de produção, depois de validado esse ambiente de produção, pode-se remover a versão antiga.       &lt;br /&gt;      &lt;br /&gt;Se você não tem espaço em seu servidor para suportar as duas versões, instale a nova versão sobre a versão existente. Nesse caso você não pode selecionar a instalação de componentes.       &lt;br /&gt;Certifique-se também nesse caso, que você tenha a mídia da versão anterior, pois se algo der errado não pode reverter isso.       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Copie o arquivo ONCONFIG para o novo diretório do Informix.      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Inicialize a instancia com a nova versão do Informix. Os dados do banco serão convertidos automaticamente.      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Se você tiver problemas de performance, rode o UPDATE STATISTICS e UPDATE STATISTICS FOR PROCEDURE.      &lt;br /&gt;      &lt;br /&gt;Esse tipo de migração minimiza os riscos. Se algo der errado você poderá voltar a versão antiga. Em caso de problema durante a conversão então terá que voltar o backup nível 0. &lt;/li&gt; &lt;/ol&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5173052840491277468-5704466161897098943?l=ajmoreti.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajmoreti.blogspot.com/feeds/5704466161897098943/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://ajmoreti.blogspot.com/2011/07/atualizando-o-informix-in-place_25.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/5704466161897098943'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/5704466161897098943'/><link rel='alternate' type='text/html' href='http://ajmoreti.blogspot.com/2011/07/atualizando-o-informix-in-place_25.html' title='Atualizando o Informix (In-Place)'/><author><name>Amilcar de Jesus Moreti</name><uri>http://www.blogger.com/profile/04022310434818885345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://1.bp.blogspot.com/_I4DneDrgUiQ/Sq_P5t7dwtI/AAAAAAAAAFA/mYME8h_xiF4/S220/Imagem0116.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5173052840491277468.post-2181513429651345241</id><published>2011-07-22T23:33:00.001-03:00</published><updated>2011-07-22T23:33:09.063-03:00</updated><title type='text'>Atualizando o Informix (In-Place)</title><content type='html'>&lt;p&gt;Na atualização do Informix sempre surge duvidas, devo atualizar no mesmo diretório? não vou perder meus dados que estão lá? não vai danificar meu chunk primário?&lt;/p&gt;  &lt;p&gt;A IBM diz que atualizar o Informix diretamente para a versão atual, deve-se instalar o produto em um novo diretório,&amp;#160; copiando alguns arquivos de configuração e iniciar o servidor para automaticamente converter os dados de sua base atual.&lt;/p&gt;  &lt;p&gt;Segundo a IBM pode-se atualizar diretamente qualquer desses produtos: Informix Versão 11.10, 10.00, 9.40, 9.30, 9.21 ou 7.31&lt;/p&gt;  &lt;p&gt;A atualização é um método de migração in-loco que usa uma base teste e produção.&lt;/p&gt;  &lt;p&gt;A atualização é um método de migração in-loco que usa seu teste existentes e hardware de produção. O sistema operacional nesses servidores devem ser suportados pelo Informix. Além disso, você deve ter espaço suficiente para a conversão dos dados.&lt;/p&gt;  &lt;p&gt;Uma atualização segura consiste de alguns procedimentos:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Prepare seu sistema, que inclui fechar todas as transações, verifique a integridade dos dados com o utilitário &lt;strong&gt;oncheck,&lt;/strong&gt; e faça um backup do nível 0. ( Se você estiver utilizando o Enterprise Replication ou cluster de alta disponibilidade, você deve para esse serviço e realizar algumas tarefas adicionais).      &lt;br /&gt;      &lt;br /&gt;Uma boa pratica é fazer backup de todos os arquivos de configuração, tanto do sistema operacional quanto do Informix.      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Instale o novo produto no servidor.     &lt;br /&gt;      &lt;br /&gt;&lt;strong&gt;Importante:&lt;/strong&gt; A forma mais segura de atualizar o Informix é instalar uma nova versão em outro diretório. Para economizar espaço você pode selecionar somente os produtos que necessita para a instalação. Somente depois de testar a instancia do servidor com as configurações semelhantes ao de produção é que vamos aplicar essa atualização no servidor de produção, depois de validado esse ambiente de produção, pode-se remover a versão antiga.      &lt;br /&gt;      &lt;br /&gt;Se você não tem espaço em seu servidor para suportar as duas versões, instale a nova versão sobre a versão existente. Nesse caso você não pode selecionar a instalação de componentes.      &lt;br /&gt;Certifique-se também nesse caso, que você tenha a mídia da versão anterior, pois se algo der errado não pode reverter isso.      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Copie o arquivo ONCONFIG para o novo diretório do Informix.     &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Inicialize a instancia com a nova versão do Informix. Os dados do banco serão convertidos automaticamente.     &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Se você tiver problemas de performance, rode o UPDATE STATISTICS e UPDATE STATISTICS FOR PROCEDURE.     &lt;br /&gt;      &lt;br /&gt;Esse tipo de migração minimiza os riscos. Se algo der errado você poderá voltar a versão antiga. Em caso de problema durante a conversão então terá que voltar o backup nível 0.&lt;/li&gt; &lt;/ol&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5173052840491277468-2181513429651345241?l=ajmoreti.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajmoreti.blogspot.com/feeds/2181513429651345241/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://ajmoreti.blogspot.com/2011/07/atualizando-o-informix-in-place.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/2181513429651345241'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/2181513429651345241'/><link rel='alternate' type='text/html' href='http://ajmoreti.blogspot.com/2011/07/atualizando-o-informix-in-place.html' title='Atualizando o Informix (In-Place)'/><author><name>Amilcar de Jesus Moreti</name><uri>http://www.blogger.com/profile/04022310434818885345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://1.bp.blogspot.com/_I4DneDrgUiQ/Sq_P5t7dwtI/AAAAAAAAAFA/mYME8h_xiF4/S220/Imagem0116.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5173052840491277468.post-3494358679586557871</id><published>2011-07-22T09:25:00.001-03:00</published><updated>2011-07-22T09:25:23.610-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Informix'/><title type='text'>Warning no arquivo online.log</title><content type='html'>&lt;p&gt;Saudações, &lt;/p&gt;  &lt;p&gt;Olhando o meu online.log , arquivo de log do informix, me deparei com um warning que se refere a prioridade do PDQ, o bloco do warning estou postando a seguir:&lt;/p&gt;  &lt;p&gt;Warning: PDQ functionality is not supported in IDS Growth Edition.    &lt;br /&gt;The value of MAX_PDQPRIORITY cannot be set to 100. It is reset to 0.&lt;/p&gt;  &lt;p&gt;Bem, vamos tentar entender o que é exatamente esse warning.&lt;/p&gt;  &lt;p&gt;Existem vários tipos de Edição do Informix, além do Growth Edition, temos o Enterprise, entre outros. &lt;/p&gt;  &lt;p&gt;Mas a pergunta chave aqui é… o que é esse parâmetro MAX_PDQPRIORITY?&lt;/p&gt;  &lt;p&gt;MAX_PDQPRIORITY limita os recursos PDQ que o servidor de banco de dados pode atribuir a qualquer consulta DSS. MAX_PDQPRIORITY é um fator que é usado para dimensionar o valor de prioridade PDQ definidas pelos usuários. Por exemplo, suponha que o DBA atribuiu à MAX_PDQPRIORITY um valor de 80.&amp;#160; &lt;/p&gt;  &lt;p&gt;MAX_PDQPRIORITY é um fator que é usado para dimensionar o valor de prioridade PDQ definidas pelos usuários. Se um usuário configura a variável de ambiente PDQPRIORITY para 50 e executa a query, o banco de dados vai executar essa query com um prioridade de 40.&lt;/p&gt;  &lt;p&gt;Podemos usar o onmode para alterar o valor do MAX_PDQPRIORITY quando o servidor de banco estiver online.&lt;/p&gt;  &lt;p&gt;No IDS, os recursos PDQ incluem memoria, CPU, I/O em discos e scan threads, e se o valor de MAX_PDQPRIORITY for muito baixo, a performance pode cair muito. &lt;/p&gt;  &lt;p&gt;Por padrão no onconfig.std o valor de PDQ_PRIORITY é 100.&lt;/p&gt;  &lt;p&gt;PDQ é abreviação de &lt;em&gt;Parallel Database Query&lt;/em&gt; e o objetivo do PDQ é melhorar a performance das queries que são executadas no banco de dados. &lt;/p&gt;  &lt;p&gt;Infelizmente esse recurso somente esta disponível em algumas edições do Informix e como percebemos na versão Growth não esta disponível.&lt;/p&gt;  &lt;p&gt;Como não gosto muito de ficar vendo warning nos arquivos de log, fiz algumas ações para passar o valor de MAX_PRIORITY&amp;#160; para 0, assim não fico mais recebendo essa mensagem de warning. &lt;/p&gt;  &lt;p&gt;a primeira ação foi rodar o&lt;strong&gt; onmode –D 0&lt;/strong&gt;, esse comando define a prioridade do PDQ deve ser usado um valor de 0 a 100, porem não resolveu o problema, então fiz a mudança manualmente no arquivo onconfig alterando o valor da variável MAX_PDQPRIORITY para 0. Feito isso o warning não sai mais no online.log.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5173052840491277468-3494358679586557871?l=ajmoreti.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajmoreti.blogspot.com/feeds/3494358679586557871/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://ajmoreti.blogspot.com/2011/07/warning-no-arquivo-onlinelog.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/3494358679586557871'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/3494358679586557871'/><link rel='alternate' type='text/html' href='http://ajmoreti.blogspot.com/2011/07/warning-no-arquivo-onlinelog.html' title='Warning no arquivo online.log'/><author><name>Amilcar de Jesus Moreti</name><uri>http://www.blogger.com/profile/04022310434818885345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://1.bp.blogspot.com/_I4DneDrgUiQ/Sq_P5t7dwtI/AAAAAAAAAFA/mYME8h_xiF4/S220/Imagem0116.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5173052840491277468.post-3271820913293409997</id><published>2011-07-21T09:38:00.001-03:00</published><updated>2011-07-21T09:38:12.057-03:00</updated><title type='text'>Rastreamento de endereço IP com Xtrace</title><content type='html'>&lt;h3&gt;&lt;strong&gt;Resolução de Problemas&lt;/strong&gt;&lt;/h3&gt;  &lt;p&gt;&lt;strong&gt;Problema&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Rastreamento do endereço IP e numero de porta com xtrace no IBM Informix Dynamic Server&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Resolvendo o problema&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;No IDS versão 10x em diante o usuario com privilegios administrativos pode rastrear o endereço IP de todos os cliente conexão com o servidor de banco de dados usando o utilitario IDS Xtrace. &lt;/p&gt;  &lt;p&gt;Esta facilidade é util no diagnostico de problemas com conexão no banco de dados vinda de clientes (conexão de entradas).&lt;/p&gt;  &lt;p&gt;Esta facilidade é aplicavel somente nos servidores IDS que tem chamadas SOC (Sockets) usando conexão TCP (Transmission Control Protocol) e TLI (Transport Level Interface) utilizando TCP e SPX.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Passos para Utilização&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Para rastrear o IP faça o seguinte:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Verifique o status do IDS Server;      &lt;br /&gt;Certifique-se de que o IDS esta ativo e no modo ‘On-Line’. O comando ‘onstat –‘ pode ser usado para se verificar o status do server.       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Defina os valores das variaveis. Este passo é opcional.      &lt;br /&gt;O valor padrão do xtrace é 4096. Este valor pode ser mudado quanto o xtrace estiver no modo off.       &lt;br /&gt;Exemplo:       &lt;br /&gt;      &lt;br /&gt;&lt;em&gt;xtrace size 8000&lt;/em&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Inicializar os componentes do IP trace      &lt;br /&gt;Setar o componente ‘XTF_IPTRACE’ e a variavel ‘XTF_SYSCALLS’ para o IP trace       &lt;br /&gt;Exemplo:       &lt;br /&gt;      &lt;br /&gt;&lt;em&gt;xtrace heavy –c XTF_IPTRACE –f XTF_SYSCALLS&lt;/em&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Iniciar o rastreamento      &lt;br /&gt;Isso forçara o IDS a coletar todos os dados relacionados as conexões&amp;#160; para dentro do repositorio. O tamanho desse repositorio é definido na variavel &lt;em&gt;xtrace size&lt;/em&gt;.       &lt;br /&gt;Exemplo:       &lt;br /&gt;      &lt;br /&gt;&lt;em&gt;xtrace on&lt;/em&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Analisar os detalhes das conexões dos clientes.      &lt;br /&gt;Os detalhes do xtrace pode ser visualizado usando o comando xtrace view.       &lt;br /&gt;Exemplo:       &lt;br /&gt;      &lt;br /&gt;&lt;em&gt;xtrace view&lt;/em&gt;       &lt;br /&gt;      &lt;br /&gt;Abaixo uma saida do xtrace:       &lt;br /&gt;&lt;b&gt;For Sockets:&lt;/b&gt;       &lt;br /&gt;Quando um host name existe       &lt;br /&gt;&lt;font face="Calibri"&gt;&lt;tt&gt;&lt;em&gt;accpsocket - Accepted IP Address &amp;lt;Hex Address&amp;gt;(&amp;lt;Host Name&amp;gt;)            &lt;br /&gt;            &lt;br /&gt;&lt;/em&gt;&lt;/tt&gt;&lt;/font&gt;&lt;font face="Calibri"&gt;Quando um host name nao existe        &lt;br /&gt;&lt;/font&gt;&lt;em&gt;&lt;font face="Calibri"&gt;&lt;tt&gt;accpsocket - Accepted IP Address &amp;lt;Hex Address&amp;gt;            &lt;br /&gt;            &lt;br /&gt;&lt;/tt&gt;&lt;/font&gt;&lt;/em&gt;&lt;b&gt;For TLI:        &lt;br /&gt;&lt;/b&gt;Quando um host name existe       &lt;br /&gt;&lt;font face="Calibri"&gt;&lt;em&gt;&lt;tt&gt;accptli - Rejected IP Address &amp;lt;&lt;/tt&gt;&lt;tt&gt;Hex Address&lt;/tt&gt;&lt;tt&gt;&amp;gt;(&amp;lt;&lt;/tt&gt;&lt;tt&gt;Host Name&lt;/tt&gt;&lt;/em&gt;&lt;em&gt;&lt;tt&gt;&amp;gt;)            &lt;br /&gt;&lt;/tt&gt;&lt;tt&gt;accptli - Queuing IP Address &amp;lt;&lt;/tt&gt;&lt;tt&gt;Hex Address&lt;/tt&gt;&lt;tt&gt;&amp;gt;(&amp;lt;&lt;/tt&gt;&lt;tt&gt;Host Name&lt;/tt&gt;&lt;/em&gt;&lt;em&gt;&lt;tt&gt;&amp;gt;)            &lt;br /&gt;&lt;/tt&gt;&lt;tt&gt;accptli - Failed accept IP Address &amp;lt;&lt;/tt&gt;&lt;tt&gt;Hex Address&lt;/tt&gt;&lt;tt&gt;&amp;gt;(&amp;lt;&lt;/tt&gt;&lt;tt&gt;Host Name&lt;/tt&gt;&lt;/em&gt;&lt;em&gt;&lt;tt&gt;&amp;gt;)            &lt;br /&gt;&lt;/tt&gt;&lt;tt&gt;accptli - Accepting IP Address &amp;lt;&lt;/tt&gt;&lt;tt&gt;Hex Address&lt;/tt&gt;&lt;tt&gt;&amp;gt;(&amp;lt;&lt;/tt&gt;&lt;tt&gt;Host Name&lt;/tt&gt;&lt;/em&gt;&lt;tt&gt;&lt;em&gt;&amp;gt;)            &lt;br /&gt;&lt;/em&gt;          &lt;br /&gt;&lt;/tt&gt;Quando um host name nao existe         &lt;br /&gt;&lt;/font&gt;&lt;tt&gt;&lt;em&gt;accptli - Rejected IP Address &amp;lt;&lt;/em&gt;&lt;/tt&gt;&lt;em&gt;&lt;tt&gt;Hex Address&amp;gt;          &lt;br /&gt;&lt;/tt&gt;&lt;tt&gt;accptli - Rejected IP Address &amp;lt;&lt;/tt&gt;&lt;/em&gt;&lt;em&gt;&lt;tt&gt;Hex Address&amp;gt;          &lt;br /&gt;&lt;/tt&gt;&lt;tt&gt;accptli - Queuing IP Address &amp;lt;&lt;/tt&gt;&lt;/em&gt;&lt;em&gt;&lt;tt&gt;Hex Address&amp;gt;          &lt;br /&gt;&lt;/tt&gt;&lt;tt&gt;accptli - Failed accept IP Address &amp;lt;&lt;/tt&gt;&lt;/em&gt;&lt;em&gt;&lt;tt&gt;Hex Address&amp;gt;          &lt;br /&gt;&lt;/tt&gt;&lt;tt&gt;accptli - Accepting IP Address &amp;lt;&lt;/tt&gt;&lt;/em&gt;&lt;tt&gt;&lt;em&gt;Hex Address&amp;gt;          &lt;br /&gt;&lt;/em&gt;&lt;/tt&gt;&lt;/li&gt;    &lt;li&gt;Finalizando o rastreamento      &lt;br /&gt;O rastreamento é finalizado com o comando xtrace off       &lt;br /&gt;Exemplo:       &lt;br /&gt;      &lt;br /&gt;&lt;em&gt;xtrace off&lt;/em&gt; &lt;/li&gt; &lt;/ol&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5173052840491277468-3271820913293409997?l=ajmoreti.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajmoreti.blogspot.com/feeds/3271820913293409997/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://ajmoreti.blogspot.com/2011/07/rastreamento-de-endereco-ip-com-xtrace.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/3271820913293409997'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/3271820913293409997'/><link rel='alternate' type='text/html' href='http://ajmoreti.blogspot.com/2011/07/rastreamento-de-endereco-ip-com-xtrace.html' title='Rastreamento de endereço IP com Xtrace'/><author><name>Amilcar de Jesus Moreti</name><uri>http://www.blogger.com/profile/04022310434818885345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://1.bp.blogspot.com/_I4DneDrgUiQ/Sq_P5t7dwtI/AAAAAAAAAFA/mYME8h_xiF4/S220/Imagem0116.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5173052840491277468.post-2049378839414425849</id><published>2011-07-20T11:19:00.001-03:00</published><updated>2011-07-20T11:19:36.331-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Unix'/><title type='text'>Usos do Shell</title><content type='html'>&lt;p&gt;Uma das maiores funções do shell é para interpretar comandos digitados em linhas de comandos. O shell analisa a linha de comando, quebra-os em palavras (chamados de tokens), separados por um espaço em branco, que consiste em tabulações, espaços ou nova linha. Se a palavra contem metacaracteres especiais, o shell avalia-os tambem. O shell trata processamentos em primeiro plano (foreground) e tambem em segundo plano (background). Apos a linha de comando ser processada, o shell procura pelo comando e inicia a sua execução.&lt;/p&gt;  &lt;p&gt;Outra função importante do shell é a personalização do ambiente dos usuários, feito normalmente em arquivos de inicialização. Estes arquivos contem definições para a configuração de terminais e características de ambientes gráficos; configuração de variáveis que define as pesquisas de comandos (search path), permissões, prompts e tipos de terminais, e configurações de variáveis requeridas por aplicações especificas como um x-window, programas para processar textos, e bibliotecas para linguagem de programação. O Korn Shell e o C Shell tambem fornece uma maior personalização com o histórico e aliases, variáveis embutida configura proteção contra sobreposição de arquivos, de forma não intencional, e notifica o usuário quando tarefas foram completadas.&lt;/p&gt;  &lt;p&gt;O shell pode ser usado como um interpretador de linguagem de programação. Programas Shell, chamados de scripts, consiste de uma lista de comando em um arquivo. Os programas são criados em um editor. Estes arquivos consistem de comandos UNIX em forma de programação como atribuições de variáveis, condições e loops. Os shell scripts não precisam ser compilados. O shell interpreta cada linha do script como se tivesse sido digitado via teclado. Porque o shell é responsável por interpretar os comandos, é necessário que o usuário tenha conhecimento dos comandos UNIX.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5173052840491277468-2049378839414425849?l=ajmoreti.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajmoreti.blogspot.com/feeds/2049378839414425849/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://ajmoreti.blogspot.com/2011/07/usos-do-shell.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/2049378839414425849'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/2049378839414425849'/><link rel='alternate' type='text/html' href='http://ajmoreti.blogspot.com/2011/07/usos-do-shell.html' title='Usos do Shell'/><author><name>Amilcar de Jesus Moreti</name><uri>http://www.blogger.com/profile/04022310434818885345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://1.bp.blogspot.com/_I4DneDrgUiQ/Sq_P5t7dwtI/AAAAAAAAAFA/mYME8h_xiF4/S220/Imagem0116.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5173052840491277468.post-6053664731042730979</id><published>2011-07-20T08:44:00.001-03:00</published><updated>2011-07-20T08:44:29.923-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Informix'/><title type='text'>Eventos Importantes no Servidor IDS</title><content type='html'>&lt;p&gt;&lt;strong&gt;Data Caching&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Quando o servidor quer acessar algum dado, ela deve achar a pagina onde aquele dado esta alocado. Uma vez que a pagina é localizada, esta é lida do disco para dentro de um dos buffers no shared memory buffer pool. Uma vez que esta pagina esta no buffer pool, qualquer outro usuário que queira ler aquela pagina pode faze-lo sem ter que lê-lo novamente do disco; as pagina no shared memory buffer pool são compartilhadas por todo os processos do servidor.&lt;/p&gt;  &lt;p&gt;A leitura de pagina do disco dentro do shared memory buffers é conhecida como &lt;em&gt;data caching. &lt;/em&gt;Se o dado na pagina é modificado por um servidor (durante um INSERT, DELETE ou UPDATE), ela é modificada diretamente no buffer. Isto quer dizer que todo o processo do servidor terá acesso imediato para o dado modificado.&lt;/p&gt;  &lt;p&gt;Os buffers modificados em shared memory serão copiados de volta para o disco mais tarde.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Checkpoints&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Como as paginas são lidas dos discos para dentro da shared memory buffers e então modificadas dentro destes buffers, as paginas dos discos e as copias destas paginas no shared memory buffers tornam-se fora de sincronização. É necessário, nesta ocasião, ressincronizar estes dois de modo que eles estejam iguais. Esta ressincronização é executada por um evento do sistema conhecido como &lt;strong&gt;checkpoint.&lt;/strong&gt; Durante um checkpoint, todas as paginas na shared memory buffers que foram modificadas são copiadas de volta para o disco. Este trabalho é executado por um dos virtuais processors. Quando o checkpoint esta terminado, todas as paginas na shared memory buffers estão novamente sincronizadas com as paginas do disco.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Point of Recovery&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Estes checkpoints também sevem como um recovery point. Se o sistema sofre um crash, nenhuma mudança feita pelas paginas em shared memory esta sincronizada com as paginas de disco. Mas nós sabemos, que somente as mudanças feitas deste o ultimo checkpoint não estão sincronizadas no disco. O mecanismo automático de recovery se previne de recuperar essas mudanças feitas desde o ultimo checkpoint.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5173052840491277468-6053664731042730979?l=ajmoreti.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajmoreti.blogspot.com/feeds/6053664731042730979/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://ajmoreti.blogspot.com/2011/07/eventos-importantes-no-servidor-ids.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/6053664731042730979'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/6053664731042730979'/><link rel='alternate' type='text/html' href='http://ajmoreti.blogspot.com/2011/07/eventos-importantes-no-servidor-ids.html' title='Eventos Importantes no Servidor IDS'/><author><name>Amilcar de Jesus Moreti</name><uri>http://www.blogger.com/profile/04022310434818885345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://1.bp.blogspot.com/_I4DneDrgUiQ/Sq_P5t7dwtI/AAAAAAAAAFA/mYME8h_xiF4/S220/Imagem0116.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5173052840491277468.post-7356729187443549657</id><published>2011-07-18T12:26:00.001-03:00</published><updated>2011-07-18T12:26:55.481-03:00</updated><title type='text'>Componente do Disco</title><content type='html'>&lt;p&gt;&lt;strong&gt;Chunks&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;O servidor não usa o sistema de arquivo do UNIX para fazer a sua administração de espaço em disco, mas apropriadamente, ele utiliza seus próprios mecanismos de gerenciamento do espaço em disco – mecanismos que são bem melhores adaptados à gerencia de banco de dados do que o sistema de arquivo do UNIX.&lt;/p&gt;  &lt;p&gt;É necessário construir um espaço disponível para o servidor. Este espaço é associado em unidades chamadas chunks. Um chunk é uma unidade de espaço continuo que é associado ao servidor para seu uso; o servidor administrará o uso do espaço dentro de cada chunk. Um chunk pode ser um raw device do UNIX.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Paginas&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Quando um chunk é associado ao servidor, ele será quebrado em pequenas unidades chamadas paginas. A pagina é a unidade básica de I/O de um servidor Informix. Todos os dados em um servidor são guardados em paginas. Por exemplo, se você quiser guardar uma linha de uma tabela do banco de dados, o dado para esta linha deve ser guardado em uma pagina. Quando o dado é lido do disco para um buffer na shared memory, a pagina inteira na qual este dado esta guardado será lida para dentro do buffer. Uma grande quantidade de dados pode ser guarda em uma única pagina.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Page Size&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;O tamanho de uma pagina usada por um servidor é determinado quando o porte é feito para uma maquina / sistema em particular. O tamanho mais comum de pagina usado é 2 Kbytes, embora alguns sistemas usem um tamanho de 4 Kbytes.&lt;/p&gt;  &lt;p&gt;O tamanho da pagina para um servidor não pode ser alterado. Isto é exceto, para blobpages, as quais são atualmente um tamanho logico de paginas ou um numero que representa um múltiplo do tamanho da pagina do servidor. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Tblspaces&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Um tblspace é um termo logico usado para referir-se a uma coleção logica de todas as paginas alocadas para uma determinada tabela ou um fragmento de tabela se sua tabela esta fragmentada.&lt;/p&gt;  &lt;p&gt;O espaço representando por um tblspace não é necessariamente continuo, aqui pode haver paginas espalhadas por um chunk, ou pode haver paginas de uma tabela em diferentes chunks.&lt;/p&gt;  &lt;p&gt;Para tabelas não fragmentadas, um tblspace residira sempre em um dbspace. Se o dbspace tem somente um chunk associado a ele, então todas as paginas de um tblspace residirão sobre este único chunk. Se o dbspace tem vários chunks associados a ele, as paginas de um tblspace podem residir em qualquer dum dos chunks naquele dbspace.&lt;/p&gt;  &lt;p&gt;Para tabelas fragmentadas, cada fragmento tem um tablespace id único. Este numero de tablespace é o &lt;strong&gt;partnum&lt;/strong&gt; na &lt;strong&gt;systables&lt;/strong&gt; do catalogo do sistema, e o campo &lt;strong&gt;partn&lt;/strong&gt; em &lt;strong&gt;sysframents&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Dbspaces&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-H0Na1MZFWfA/TiRQu1XTX7I/AAAAAAAAAT4/bgJo1EYzlA0/s1600-h/dbspace%25255B2%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="dbspace" border="0" alt="dbspace" src="http://lh6.ggpht.com/-FNAOwCy0PeQ/TiRQvpU7cRI/AAAAAAAAAT8/ap0y96VWAYE/dbspace_thumb.png?imgmax=800" width="244" height="177" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Um dbspace é uma coleção de chunks. Cada dbspace deve ter no mínimo um chunk associado a ele inicialmente; este é conhecido como primary chunk. Dbspaces podem ter tantos chunks associados a ele quanto necessário. Se você esgotar o espaço em um dbspace particular ( em virtude de que todos os chunks associados a ele estão cheios), você pode adicionar chunks extras a ele.&lt;/p&gt;  &lt;p&gt;Banco de dados e tabelas pode ser criados em dbspaces separados. Isto significa que aquela tabela ou banco de dados pode crescer tanto quanto o espaço disponível naquele dbspace. Você não pode controlar em quais chunks dentro de um dbspace um banco de dados serão criados em um device físico em especifico, você de associar somente aqueles chunks residentes no device físico ao dbspace.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Root Dbspace&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Cada servidor deve ter no mínimo um dbspace; o root dbspace. Este é onde todas as informações importantes do sistema que controlam o servidor estão localizados.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font size="4"&gt;Agrupamento Logico&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;dbspaces e tblspaces&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Podemos pensar em dbspaces e tblspaces como agrupamentos lógicos de espaço físico.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Um dbspace é um agrupamento logico de chunks físicos. Os chunks pode estar em diferentes discos, contudo eles são parte de um mesmo dbspace. &lt;/li&gt;    &lt;li&gt;Um tblspace é um agrupamento logico de extents. Os extents dentro de um tblspace podem estar em chunks diferentes (e, portanto em discos diferentes). &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Tipo de Dado Blob&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Bynary Large Objects, BLOBs, são conjuntos de bytes de comprimento e valor indeterminado. Um BLOB pode ser uma imagem ou som digitalizado, um modulo de programa ou um contrato legal.&lt;/p&gt;  &lt;p&gt;Qualquer coisa que você pode guardar em um arquivo de um computador você pode guardar um um BLOB.&lt;/p&gt;  &lt;p&gt;O limite teórico para o tamanho deles é de 2 gigabytes; este tamanho é baseado no maior valor que pode ser armazenado em inteiro de 4-bytes.&lt;/p&gt;  &lt;p&gt;Ha dois tipos de BLOBs: TEXT e BYTE. O tipo de dado TEXT é usado para armazenar textos ASCII como memorandos capítulos de manuais e documentos de negócios. O tipo de dado BYTE é usado para arquivar qualquer classe de dado binário, como planilhas, módulos de programas de carga, e imagens e sons digitalizados.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Blobspace&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Um blobspace é uma entidade logica que representa uma coleção de espaços físicos na forma de chunks.&lt;/p&gt;  &lt;p&gt;Cada blobspace deve ter no mínimo um chink associado a ele; o qual é conhecido como o primary chunk. Blobspaces podem ter tantos chunks associados a ele quanto for necessário. &lt;/p&gt;  &lt;p&gt;Colunas BYTE e TEXT podem ser colocadas em blobspace separados. Isto significa que os dados destas colunas blob serão guardados naquele blobspace. Você não pode controlar em qual chunk, dentro de um blobspace o dado blob será guardado. Um servidor pode ter tantos blobspaces quanto queria. Qualquer blobspace pode conter dados blob de diferentes colunas de diferentes tabelas, mesmo de diferentes banco de dados. O blobspace forma um conjunto de espaço de armazenamento que pode ser usado por qualquer coluna blob no servidor.&lt;/p&gt;  &lt;p&gt;Todos os arquivos de blobs em um único blobspace, mesmo que estes estejam em tabelas diferentes , usarão o mesmo tamanho de blobpage. Cada blobspace arquiva um dado blob usando o mesmo tamanho de blobpage. Você pode ter vários blobspaces, e cada blobspace pode ter um diferente tamanho de blobpage do que os outros.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Mirroring (Espelhamento)&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Mirroring é um processo de replicação de dados automático. O servidor permite a escolha de Mirroring ao nível de dbspaces ou blobspaces. Em casos quando há requerimentos para segurança e disponibilidade, o disco mirroring é um dos vários aspectos para escolher. Sem o disco mirroring, o retorno de uma queda de um disco geraria:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Torna o dado indisponível para o usuário. &lt;/li&gt;    &lt;li&gt;Substituição do hardware que teve a falha. &lt;/li&gt;    &lt;li&gt;Restauração de fitas de backup. &lt;/li&gt;    &lt;li&gt;Rollback de alguns logs de transação. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Com o disco mirroring, a recuperação pode ser completada sem nenhuma interrupção para a disposição de dados.&lt;/p&gt;  &lt;p&gt;A escolha para o mirror de disco é feita quando o servidor esta sendo inicializado (initialize). Apesar disso, mirror de dbspaces ou blobspaces individuais, pode ser feito a qualquer momento.&lt;/p&gt;  &lt;p&gt;Quanto um dbspaces ou blobspace é espelhado, ambos, primary chunk e mirror chunk são especificados nas criações do espaço ou sempre que um novo chunk precisar ser adicionado. As escritas feitas para o primary chunk e para o mirror chunk são assíncronas. As leituras são separadas entre o primary e o mirror chunk para o aumento de performance.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Logical Logs&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Dentro dos limites de um servidor,&amp;#160; uma certa quantidade do espaço do disco será reservada para o logical logs.&lt;/p&gt;  &lt;p&gt;O logical logs são coleções de paginas continuas de um disco que são usadas para registrar transações arquivadas para o servidor. Estas transações registradas são usadas para mapear todas as mudanças que são feitas no database server. Toda mudança no banco esta registrada no logical log. Cada servidor deve ter no mínimo três logical logs. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Physical Log&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;O servidor tem um log especial que é usado para propósitos de recuperação automática. Este log é chamado de physical log. O physical log é uma coleção de paginas continuas sobre o disco.&lt;/p&gt;  &lt;p&gt;Quando uma pagina tem que ser lida dentro de um shared memory buffer, e um usuário quer modificar dados naquela pagina, antes que a mudança seja feita, uma copia da pagina em sua forma original é gravada no physical log. Esta copia de pagina é conhecida como before image. Somente a primeira mudança para uma pagina em um buffer ocasionará um before image para ser gravada no physical log. Outras mudanças subsequentes para aquela mesma pagina não causarão before images adicionais para serem escritas no physical log. Estas before images serão usados por um mecanismo automático de recuperação.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5173052840491277468-7356729187443549657?l=ajmoreti.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajmoreti.blogspot.com/feeds/7356729187443549657/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://ajmoreti.blogspot.com/2011/07/componente-do-disco.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/7356729187443549657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/7356729187443549657'/><link rel='alternate' type='text/html' href='http://ajmoreti.blogspot.com/2011/07/componente-do-disco.html' title='Componente do Disco'/><author><name>Amilcar de Jesus Moreti</name><uri>http://www.blogger.com/profile/04022310434818885345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://1.bp.blogspot.com/_I4DneDrgUiQ/Sq_P5t7dwtI/AAAAAAAAAFA/mYME8h_xiF4/S220/Imagem0116.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/-FNAOwCy0PeQ/TiRQvpU7cRI/AAAAAAAAAT8/ap0y96VWAYE/s72-c/dbspace_thumb.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5173052840491277468.post-7374944523232496832</id><published>2011-07-18T11:14:00.001-03:00</published><updated>2011-07-18T11:14:33.026-03:00</updated><title type='text'>Shared Memory: The Message Portion</title><content type='html'>&lt;p&gt;&lt;a href="http://lh4.ggpht.com/-FP9xUKiCj7Y/TiQ_w7FEl5I/AAAAAAAAATw/Vf6Y3wJE-wY/s1600-h/residen%25255B2%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="residen" border="0" alt="residen" src="http://lh4.ggpht.com/-6f_FY1Y4tdg/TiQ_x3K4hDI/AAAAAAAAAT0/t0BvdfKlupU/residen_thumb.png?imgmax=800" width="244" height="150" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;A message portion da shared memory ou porção de comunicação é alocada quando o servidor é iniciado. A message portion contém os message buffers para as aplicações clientes locais que usam a shared memory na comunicação com o servidor.&lt;/p&gt;  &lt;p&gt;As aplicações cliente e o servidor ligam-se ao mesmo segmento de shared memory. O cliente deixa mensagens para o servidor na porção message e depois recupera as mensagens do servidor para ele. O tamanho da porção message é aproximadamente de 12 Kb para cada usuário que use a shared memory para se comunicar com o servidor.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5173052840491277468-7374944523232496832?l=ajmoreti.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajmoreti.blogspot.com/feeds/7374944523232496832/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://ajmoreti.blogspot.com/2011/07/shared-memory-message-portion.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/7374944523232496832'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/7374944523232496832'/><link rel='alternate' type='text/html' href='http://ajmoreti.blogspot.com/2011/07/shared-memory-message-portion.html' title='Shared Memory: The Message Portion'/><author><name>Amilcar de Jesus Moreti</name><uri>http://www.blogger.com/profile/04022310434818885345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://1.bp.blogspot.com/_I4DneDrgUiQ/Sq_P5t7dwtI/AAAAAAAAAFA/mYME8h_xiF4/S220/Imagem0116.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/-6f_FY1Y4tdg/TiQ_x3K4hDI/AAAAAAAAAT0/t0BvdfKlupU/s72-c/residen_thumb.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5173052840491277468.post-8393479319662615072</id><published>2011-07-18T10:49:00.001-03:00</published><updated>2011-07-18T10:49:59.326-03:00</updated><title type='text'>The Virtual Portion: Exemplo de Cache</title><content type='html'>&lt;p&gt;&lt;a href="http://lh3.ggpht.com/-o1qnvXk6gt8/TiQ6A7YvA8I/AAAAAAAAATo/MEcr1MB9PNY/s1600-h/cache2.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="cache" border="0" alt="cache" src="http://lh5.ggpht.com/-ccd0kL7p9YQ/TiQ6BkpuLYI/AAAAAAAAATs/llZJ0AUKLI8/cache_thumb.jpg?imgmax=800" width="244" height="175" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;A virtual portion da shared memory contem memory pools que são designados a manter tabelas de catalogo do sistema para uso das sessões.&lt;/p&gt;  &lt;p&gt;Qualquer sessão executando um comando SQL que necessite de informações sobre as tabelas pela primeira vez, deve recuperar estas informações das tabelas de catalogo do sistema. Isto exige uma leitura de disco para obtenção das paginas das tabelas de catalogo do sistema que não estão nos shared memory buffer pools. Uma vez que o servidor de banco de dados lê as paginas que contem o catalogo do sistema, a informação para a tabela é colocada em uma estrutura que é mais eficiente para a o acesso&amp;#160; do servidor de banco de dados.&lt;/p&gt;  &lt;p&gt;Esta estrutura é parte do shared memory dictionary pool. Apos o primeiro acesso de uma usuário, todos os usuários podem acessar os dictionary pools para obter a informação do dictionary da tabela, ganhando tempo e memoria.&lt;/p&gt;  &lt;p&gt;Outro exemplo de manutenção de tabelas em memoria é a manutenção de stores procedures. O valor default para este pool é de 50 stored procedures. Deste modo, usuários acessando stored procedures não terão que recupera-las sempre do disco.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5173052840491277468-8393479319662615072?l=ajmoreti.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajmoreti.blogspot.com/feeds/8393479319662615072/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://ajmoreti.blogspot.com/2011/07/virtual-portion-exemplo-de-cache.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/8393479319662615072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/8393479319662615072'/><link rel='alternate' type='text/html' href='http://ajmoreti.blogspot.com/2011/07/virtual-portion-exemplo-de-cache.html' title='The Virtual Portion: Exemplo de Cache'/><author><name>Amilcar de Jesus Moreti</name><uri>http://www.blogger.com/profile/04022310434818885345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://1.bp.blogspot.com/_I4DneDrgUiQ/Sq_P5t7dwtI/AAAAAAAAAFA/mYME8h_xiF4/S220/Imagem0116.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/-ccd0kL7p9YQ/TiQ6BkpuLYI/AAAAAAAAATs/llZJ0AUKLI8/s72-c/cache_thumb.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5173052840491277468.post-754011578463758120</id><published>2011-07-08T17:09:00.001-03:00</published><updated>2011-07-08T17:09:25.678-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Informix'/><title type='text'>Datas de Calendário em Informix</title><content type='html'>&lt;p&gt;O tipo de dados DATE armazena uma data do calendário.&amp;#160; Um valor DATE é um numero inteiro representando o numero de dias corridos desde meia-noite do dia 31 de dezembro de 1899. &lt;/p&gt;  &lt;p&gt;O formato DATE tem precisão suficiente para realizar as datas para o futuro distante (58.000 séculos). Valores DATE negativos são interpretados como contagem de dias antes da data de época; isto é, um valor DATE –1 representa 30 de dezembro de 1899.&lt;/p&gt;  &lt;p&gt;Os valores DATE por ser inteiros, podem ser usados em expressões aritméticas.&amp;#160; Por exemplo, você pode querer a média de uma coluna DATE, ou você pode adicionar 7 ou 365 para uma coluna DATE. Além disso, um rico conjunto de funções existem especificamente para manipular valores de data.&lt;/p&gt;  &lt;p&gt;O tipo de dados DATE é compacto, 4 bytes por item. Funções aritméticas e comparações são executadas rapidamente em colunas DATE.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Função MONTHS_BETWEEN&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;A função MONTHS_BETWEEN requer dois argumentos, cada um dos quais podem ser uma expressão DATE ou DATETIME. Se o primeiro argumento maior que o primeiro, o valor retornado é positivo. &lt;/p&gt;  &lt;p&gt;O valor retornado é tipo DECIMAL, representando a diferença entre os dois argumentos, expresso como um valor decimal. Se o primeiro argumento é menor que o segundo argumento, o valor retornado é negativo.&lt;/p&gt;  &lt;p&gt;Se as datas do argumentos forem os mesmos dias de um mês ou são os últimos dias de um mês, o resultado é um numero inteiro. Senão um resultado em fração é retornado, com base em um mês de 31 dias. Esta parte fracionaria também pode incluir a diferença na hora, minutos ou segundos, a menos que ambos os argumentos sejam uma expressão DATE.&lt;/p&gt;  &lt;p&gt;Abaixo uma query chamando uma função MONTHS_BETWEEN, usando dois valores DATE.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;font color="#666666"&gt;SELECT&amp;#160; MONTHS_BETWEEN((SELECT DATE(parametro_dat)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; FROM ped_info_compl        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WHERE empresa = a.empresa        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AND pedido = a.pedido        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AND campo = 'Data Final Projeto'), (SELECT DATE(parametro_dat)        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; FROM ped_info_compl        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WHERE empresa = a.empresa        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AND pedido = a.pedido        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AND campo = 'Data Inicial Projeto'))        &lt;br /&gt;FROM ped_info_compl a        &lt;br /&gt;WHERE a.empresa = '01'        &lt;br /&gt;AND a.pedido = 18188&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;O valor retornado da query acima seria de 12 meses, nesse exemplo que coloquei ai, o primeiro argumento desse pedido esta com com o campo definido em DATATIME e seu conteúdo é 2011-07-06 00:00:00 e o segundo argumento tem o seguinte conteúdo 2012-07-06 00:00:00, por isso o retorno seria 12 inteiros.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Função ADD_MONTH&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;A função ADD_MONTHS trabalha com a expressão DATETIME ou DATE como um primeiro argumento, e requer como segundo argumento um inteiro, especificando o numero de meses para adicionar ao primeiro argumento. O secundo argumento pode ser positivo ou negativo.&lt;/p&gt;  &lt;p&gt;O Valor que é retornado é a soma de um valor DATE ou DATETIME do primeiro argumento e um valor INTERVAL UNITS MONTH que é baseado em um numero de meses especificado no segundo argumento.&lt;/p&gt;  &lt;p&gt;O tipo de dados retornados depende do tipo de dados do primeiro argumento:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Se o primeiro argumento for um valor DATE, ADD_MONTHS retornara um valor DATE;&lt;/li&gt;    &lt;li&gt;Se o primeiro argumento for um valor DATETIME, ADD_MONTHS retornara um valor DATETIME YEAR TO FRACTIONS(5), com os mesmos valores para unidades de tempo menor do dia como no primeiro argumento.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Se a unidade de tempo day e month especificado no primeiro argumento é o ultimo dia do mês, ou se o mês resultante tem menos dias que o primeiro argumento, então o valor retornado é o ultimo dia do mês em questão. Caso contrario o valor retornara a mesma quantidade de dias do mês do primeiro argumento. &lt;/p&gt;  &lt;p&gt;O valor retornado pode ser um ano diferente, se o mês resultante for maior que dezembro ( ou o segundo argumento for um numero negativo, menor que janeiro) do ano do primeiro argumento. Veja os exemplos abaixo:&lt;/p&gt;  &lt;p&gt;Uma Query onde é um resultado normal&lt;/p&gt;  &lt;p&gt;&lt;font color="#646b86"&gt;SELECT order_date     &lt;br /&gt;FROM ami_backlog_prev      &lt;br /&gt;WHERE order_num = 18188&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Resultado&lt;/p&gt;  &lt;p&gt;&lt;font color="#646b86"&gt;order_date&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt; -------------       &lt;br /&gt; 04/05/2011&lt;/font&gt; &lt;/p&gt;  &lt;p&gt;Adicionando 5 meses&lt;/p&gt;  &lt;p&gt;&lt;font color="#646b86"&gt;SELECT ADD_MONTHS(order_date,5)     &lt;br /&gt;FROM ami_backlog_prev      &lt;br /&gt;WHERE order_num = 18188&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#646b86"&gt;(expression)&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt; ---------------       &lt;br /&gt; 04/10/2011&amp;#160; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Adicionando 12 meses&lt;/p&gt;  &lt;p&gt;&lt;font color="#646b86"&gt;SELECT ADD_MONTHS(order_date,12)     &lt;br /&gt;FROM ami_backlog_prev      &lt;br /&gt;WHERE order_num = 18188&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#646b86"&gt;(expression)&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;---------------       &lt;br /&gt;04/05/2012&lt;/font&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;Tirando 3 meses&lt;/p&gt;  &lt;p&gt;&lt;font color="#646b86"&gt;SELECT ADD_MONTHS(order_date,-3)     &lt;br /&gt;FROM ami_backlog_prev      &lt;br /&gt;WHERE order_num = 18188&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#646b86"&gt;(expression)&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;---------------       &lt;br /&gt;04/02/2011      &lt;br /&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Tirando 12 meses&lt;/p&gt;  &lt;p&gt;&lt;font color="#646b86"&gt;SELECT ADD_MONTHS(order_date,-12)     &lt;br /&gt;FROM ami_backlog_prev      &lt;br /&gt;WHERE order_num = 18188&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#646b86"&gt;(expression)&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;---------------       &lt;br /&gt;04/05/2010&lt;/font&gt;&amp;#160;&amp;#160; &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Função DATE&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;A função DATE converte um argumento para um valor DATE. O seu argumento não DATE pode ser qualquer expressão que possa ser convertido para um valor DATE, geralmente um CHAR, DATETIME ou um valor INTEIRO, veja o&amp;#160; exemplo abaixo:&lt;/p&gt;  &lt;p&gt;&lt;font color="#646b86"&gt;SELECT *      &lt;br /&gt;FROM pedidos      &lt;br /&gt;WHERE num_pedido &amp;lt; DATE ('31/12/07’)&lt;/font&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5173052840491277468-754011578463758120?l=ajmoreti.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajmoreti.blogspot.com/feeds/754011578463758120/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://ajmoreti.blogspot.com/2011/07/datas-de-calendario-em-informix.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/754011578463758120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/754011578463758120'/><link rel='alternate' type='text/html' href='http://ajmoreti.blogspot.com/2011/07/datas-de-calendario-em-informix.html' title='Datas de Calendário em Informix'/><author><name>Amilcar de Jesus Moreti</name><uri>http://www.blogger.com/profile/04022310434818885345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://1.bp.blogspot.com/_I4DneDrgUiQ/Sq_P5t7dwtI/AAAAAAAAAFA/mYME8h_xiF4/S220/Imagem0116.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5173052840491277468.post-2485284691243347598</id><published>2011-07-04T14:49:00.001-03:00</published><updated>2011-07-04T14:49:09.578-03:00</updated><title type='text'>Execução de Gatilhos (Triggers)</title><content type='html'>&lt;p&gt;Um gatilho (trigger) é um mecanismo de banco de dados que executa uma instrução SQL automaticamente quando um determinado evento ocorrer. Você pode criar um gatilho em uma tabela para executar um SELECT, INSERT, UPDATE ou DELETE.&lt;/p&gt;  &lt;p&gt;Quando se cria um gatilho com a declaração CREATE TRIGGER, o database server coloca informações sobre a trigger no system catalog &lt;strong&gt;(systriggers).&lt;/strong&gt; O server coloca a declaração de que o gatilho é executado dentro do system catalog &lt;strong&gt;(systrigbody). &lt;/strong&gt;Além disso, tabelas de dicionário são armazenados na memoria para indicar se a tabela possui gatilhos definidos para ele. Sempre que o servidor executa uma declaração SELECT, INSERT, UPDATE ou DELETE, verifica se um gatilho esta definido para o tipo de declaração e a tabela e coluna na qual a instrução opera. Se uma declaração requer um gatilho pra ser executado, o server&amp;#160; recupera o texto de instrução de &lt;strong&gt;systrigbody&lt;/strong&gt; e executa a rotina SPL, quando necessário, antes, durante e apos a instrução.&lt;/p&gt;  &lt;p&gt;SINTAXE:&lt;/p&gt;  &lt;pre&gt;&lt;a href="http://publib.boulder.ibm.com/infocenter/idshelp/v10/topic/com.ibm.sqls.doc/sqls334.htm#skipsyn-113"&gt;&lt;img border="0" alt="Skip visual syntax diagram" src="http://publib.boulder.ibm.com/infocenter/idshelp/v10/topic/com.ibm.sqls.doc/c.gif" /&gt;&lt;/a&gt;&amp;gt;&amp;gt;-CREATE TRIGGER--+---------------------+--&lt;em&gt;trigger&lt;/em&gt;-------------&amp;gt;&lt;br /&gt;                   |                (1)  |&lt;br /&gt;                   '-| Owner Name |------'&lt;br /&gt; &lt;br /&gt;&amp;gt;--+---------------------------------------------------+--------&amp;gt;&lt;br /&gt;   |                        (2)                        |&lt;br /&gt;   +-| Trigger on a Table |----------------------------+&lt;br /&gt;   |  (3)                                              |&lt;br /&gt;   '--------INSTEAD OF--+----------------------------+-'&lt;br /&gt;                        |                       (4)  |&lt;br /&gt;                        '-| Trigger on a View |------'&lt;br /&gt; &lt;br /&gt;    (3)   .-ENABLED--.&lt;br /&gt;&amp;gt;---------+-DISABLED-+-----------------------------------------&amp;gt;&amp;lt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Um gatilho, exceto se for desativado, executa automaticamente um conjunto de instruções SQL, chamada &lt;em&gt;trigger action, &lt;/em&gt;quando um evento especifico de gatilho ocorrer. &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Quando se dispara um gatilho &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Pode-se utilizar a declaração CREATE TRIGGER de duas maneiras distintas: &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;Pode-se definir um gatilho em um tabela no banco de dados corrente; &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Para o IDS, pode-se também definir um gatilho INSTEAD OF em uma view no banco de dados corrente.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Qualquer instrução SQL que é uma instancia do evento da trigger é chamado de instrução de acionamento (triggering statement), quando o evento ocorre, gatilhos definidos em tabelas e gatilhos definidos em view são tratadas de maneiras diferentes quando executada:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;Para tabelas, o trigger event e o trigger action são executados &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Para views, somente o trigger action é executado, ao invés do evento.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;A declaração CREATE TRIGGER pode suportar a integridade dos dados no banco através de definição de regras pelas operações DML (o triggering events) o que faz com que o servidor tome ações especificas. &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;pode suportar a integridade dos dados no banco de dados através da definição de regras pelas quais especificado operações DML (a fatos geradores) fazer com que o servidor de banco de dados para tomar ações especificadas. &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;em&gt;Exemplo de gatilho em uma tabela:&lt;/em&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;|--+-+-DELETE----------------------------+--ON--&lt;em&gt;table&lt;/em&gt;--| DELETE and SELECT Subclauses |-+--|&lt;br /&gt;   | |  (1)                              |                                              |&lt;br /&gt;   | '--------SELECT--+----------------+-'                                              |&lt;br /&gt;   |                  |     .-,------. |                                                |&lt;br /&gt;   |                  |     V        | |                                                |&lt;br /&gt;   |                  '-OF----&lt;em&gt;column&lt;/em&gt;-+-'                                                |&lt;br /&gt;   +-UPDATE--+----------------+--ON--&lt;em&gt;table&lt;/em&gt;--| UPDATE Subclauses |-----------------------+&lt;br /&gt;   |         |     .-,------. |                                                         |&lt;br /&gt;   |         |     V        | |                                                         |&lt;br /&gt;   |         '-OF----&lt;em&gt;column&lt;/em&gt;-+-'                                                         |&lt;br /&gt;   |                                          (2)                               (3)     |&lt;br /&gt;   '-INSERT--ON--&lt;em&gt;table&lt;/em&gt;--+-| NEW Declaration |-------| Correlated Table Action |------+--'&lt;br /&gt;                        |                   (4)                                      |&lt;br /&gt;                        '-| Action Clause |------------------------------------------'&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;em&gt;&lt;/em&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;em&gt;&lt;font face="Calibri"&gt;Sub-clausula DELETE e SELECT:&lt;/font&gt;&lt;/em&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;                      (4)&lt;br /&gt;|--+-| Action Clause |--------------------------------------------------------------------+--|&lt;br /&gt;   |                     (5)                               (3)                            |&lt;br /&gt;   +-| OLD Declaration |-------| Correlated Table Action |--------------------------------+&lt;br /&gt;   |                     (5)                       (2)                               (3)  |&lt;br /&gt;   '-| OLD Declaration |-------| NEW Declaration |-------| Correlated Table Action |------'&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;em&gt;&lt;font face="Calibri"&gt;Gatilho em uma View:&lt;/font&gt;&lt;/em&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;   (1)&lt;br /&gt;|---------------------------------------------------------------&amp;gt;&lt;br /&gt; &lt;br /&gt;&amp;gt;--+-INSERT ON--&lt;em&gt;view&lt;/em&gt;--+------------------------------+------------------------+--&amp;gt;&lt;br /&gt;   |                  '-REFERENCING NEW--+----+--&lt;em&gt;new&lt;/em&gt;-'                        |&lt;br /&gt;   |                                     '-AS-'                               |&lt;br /&gt;   +-DELETE ON--&lt;em&gt;view&lt;/em&gt;--+-------------------------------+-----------------------+&lt;br /&gt;   |                  '-REFERENCING--OLD--+----+--&lt;em&gt;old&lt;/em&gt;-'                       |&lt;br /&gt;   |                                      '-AS-'                              |&lt;br /&gt;   '-UPDATE ON--&lt;em&gt;view&lt;/em&gt;--+-----------------------------------------------------+-'&lt;br /&gt;                      +-REFERENCING--OLD--+----+--&lt;em&gt;old&lt;/em&gt;--+------------------+-+&lt;br /&gt;                      |                   '-AS-'       '-NEW--+----+--&lt;em&gt;new&lt;/em&gt;-' |&lt;br /&gt;                      |                                       '-AS-'        |&lt;br /&gt;                      '-REFERENCING--NEW--+----+--&lt;em&gt;new&lt;/em&gt;--+------------------+-'&lt;br /&gt;                                          '-AS-'       '-OLD--+----+--&lt;em&gt;old&lt;/em&gt;-'&lt;br /&gt;                                                              '-AS-'&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;#160;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;strong&gt;&lt;font face="Calibri"&gt;Restrições dos Gatilhos&lt;/font&gt;&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;Para criar uma trigger em uma tabela ou uma View, deve-se possuir direitos sobre a tabela ou view, ou ter status de DBA.  &lt;/font&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;font face="Calibri"&gt;A tabela na qual esta criando o gatilho deve existir no banco de dados. Não pode criar uma trigger em qualquer das seguintes situações:&lt;/font&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;&lt;font face="Calibri"&gt;Uma tabela de diagnostico,&amp;#160; uma tabela violada ou uma tabela em outro banco de dados;&lt;/font&gt; &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;uma raw table, uma tabela temporária ou tabela do system catalog.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;No DB-Acess, se você quiser definir um gatilho como parte de uma esquema, coloque a declaração CREATE TRIGGER dentro de uma declaração CREATE SCHEMA.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Se você estiver incorporando uma instrução CREATE TRIGGER em um programa de ESQL/C, não se pode utilizar uma variável na definição da trigger.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Não pode usar a declaração DROP TRIGGER para remover uma trigger existente. Se você usar DROP TABLE ou DROP VIEW para remover gatilhos em tabelas ou view do banco de dados, todas as triggers nessa tabela ou view serão dropadas.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5173052840491277468-2485284691243347598?l=ajmoreti.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajmoreti.blogspot.com/feeds/2485284691243347598/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://ajmoreti.blogspot.com/2011/07/execucao-de-gatilhos-triggers.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/2485284691243347598'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/2485284691243347598'/><link rel='alternate' type='text/html' href='http://ajmoreti.blogspot.com/2011/07/execucao-de-gatilhos-triggers.html' title='Execução de Gatilhos (Triggers)'/><author><name>Amilcar de Jesus Moreti</name><uri>http://www.blogger.com/profile/04022310434818885345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://1.bp.blogspot.com/_I4DneDrgUiQ/Sq_P5t7dwtI/AAAAAAAAAFA/mYME8h_xiF4/S220/Imagem0116.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5173052840491277468.post-7483942517060117077</id><published>2011-06-30T09:03:00.001-03:00</published><updated>2011-06-30T09:03:56.293-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Informix'/><title type='text'>A Virtual Portion pode crescer</title><content type='html'>&lt;table border="1" cellspacing="0" cellpadding="2" width="126"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="124"&gt;         &lt;p align="center"&gt;Segmento inicial           &lt;br /&gt;            &lt;br /&gt;Tamanho Configurável&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p align="left"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; +&lt;/p&gt;  &lt;table border="1" cellspacing="0" cellpadding="2" width="129"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="127"&gt;         &lt;p align="center"&gt;Segmento Adicional&lt;/p&gt;          &lt;p align="center"&gt;&amp;#160;&lt;/p&gt;          &lt;p align="center"&gt;Tamanho Configurável&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;Por causa da natureza das informações armazenadas na virtual portion da &lt;em&gt;shared memory&lt;/em&gt;, a quantidade de &lt;em&gt;shared memory&lt;/em&gt; usada pelo servidor varia dependendo da atividade. Em momentos de grande atividade, mais &lt;em&gt;shared memory pools&lt;/em&gt; são criados, e os &lt;em&gt;pools&lt;/em&gt; existentes podem ser expandidos. Se mais espaço for necessário para a porção virtual, segmentos adicionais de &lt;em&gt;shared memory&lt;/em&gt; são acrescentados automaticamente.&lt;/p&gt;  &lt;p&gt;Uma vez que os segmentos de &lt;em&gt;shared memory&lt;/em&gt; são alocados para o servidor, eles somente podem ser liberados pelo administrador executando o utilitário &lt;strong&gt;onmode&lt;/strong&gt; ou mudando o servidor para o modo off-line. &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5173052840491277468-7483942517060117077?l=ajmoreti.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajmoreti.blogspot.com/feeds/7483942517060117077/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://ajmoreti.blogspot.com/2011/06/virtual-portion-pode-crescer.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/7483942517060117077'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/7483942517060117077'/><link rel='alternate' type='text/html' href='http://ajmoreti.blogspot.com/2011/06/virtual-portion-pode-crescer.html' title='A Virtual Portion pode crescer'/><author><name>Amilcar de Jesus Moreti</name><uri>http://www.blogger.com/profile/04022310434818885345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://1.bp.blogspot.com/_I4DneDrgUiQ/Sq_P5t7dwtI/AAAAAAAAAFA/mYME8h_xiF4/S220/Imagem0116.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5173052840491277468.post-6088622722792685468</id><published>2011-06-28T10:36:00.001-03:00</published><updated>2011-06-28T10:36:57.850-03:00</updated><title type='text'>Shared Memory: The Virtual Portion</title><content type='html'>&lt;p&gt;&lt;a href="http://lh4.ggpht.com/-14gcC9OSx7c/TgnY9VoFZZI/AAAAAAAAATQ/ym7IwjbIRa8/s1600-h/clip_image001%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image001" border="0" alt="clip_image001" src="http://lh3.ggpht.com/-cnVFEwMQD7k/TgnY-F5ZoqI/AAAAAAAAATU/K3UmuJfuJwQ/clip_image001_thumb.png?imgmax=800" width="244" height="219" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;A virtual portion da &lt;em&gt;shared memory &lt;/em&gt;é usada para muitos propósitos. Alguns destes propósitos são listados a seguir:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Mapeamento dos Dados das Sessões – cada &lt;em&gt;sessão&lt;/em&gt; tem seu próprio &lt;em&gt;pool &lt;/em&gt;o qual contem os dados particulares da sessão. O nome de um &lt;em&gt;session pool&lt;/em&gt;&amp;#160; é o mesmo &lt;strong&gt;session_id&lt;/strong&gt; que é dado ao usuário. Quando uma sessão desconecta-se de um servidor , este &lt;em&gt;session pool&lt;/em&gt; é liberado.&lt;/li&gt;    &lt;li&gt;Cache das informações do dicionário – &lt;em&gt;os dictionary pools &lt;/em&gt;mantem em memoria as informações das tabelas de catalogo do sistema.&lt;/li&gt;    &lt;li&gt;&lt;em&gt;Cache &lt;/em&gt;das&lt;em&gt; stored procedures – stored procedures&lt;/em&gt; usadas por uma sessão são mantidas nos &lt;em&gt;procedures pools. &lt;/em&gt;&lt;/li&gt;    &lt;li&gt;Informações de Thread – &lt;em&gt;MT pools&lt;/em&gt; mantem estruturas e &lt;em&gt;stacks &lt;/em&gt;usadas para controlar as threads.&lt;/li&gt;    &lt;li&gt;Ordenação – o espaço temporário para ordenação de dados é alocado como um &lt;em&gt;sort pool.&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;em&gt;Big Buffer&lt;/em&gt; – &lt;em&gt;Big Buffer &lt;/em&gt;são usados pelo &lt;strong&gt;AIO VPs &lt;/strong&gt;que gravam um grande bloco de paginas para o disco de uma vez. É alocado um &lt;em&gt;Big Buffer &lt;/em&gt;por &lt;strong&gt;AIO VP.&lt;/strong&gt;&lt;/li&gt;    &lt;li&gt;Informação Global – dados diversos não pertencentes a uma sessão em especifico são guardados no &lt;em&gt;global pool.&lt;/em&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5173052840491277468-6088622722792685468?l=ajmoreti.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajmoreti.blogspot.com/feeds/6088622722792685468/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://ajmoreti.blogspot.com/2011/06/shared-memory-virtual-portion.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/6088622722792685468'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/6088622722792685468'/><link rel='alternate' type='text/html' href='http://ajmoreti.blogspot.com/2011/06/shared-memory-virtual-portion.html' title='Shared Memory: The Virtual Portion'/><author><name>Amilcar de Jesus Moreti</name><uri>http://www.blogger.com/profile/04022310434818885345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://1.bp.blogspot.com/_I4DneDrgUiQ/Sq_P5t7dwtI/AAAAAAAAAFA/mYME8h_xiF4/S220/Imagem0116.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/-cnVFEwMQD7k/TgnY-F5ZoqI/AAAAAAAAATU/K3UmuJfuJwQ/s72-c/clip_image001_thumb.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5173052840491277468.post-564273138958400340</id><published>2011-06-28T10:16:00.001-03:00</published><updated>2011-06-28T10:16:40.535-03:00</updated><title type='text'>Alocação de Shared Memory: The Virtual Portion</title><content type='html'>&lt;p&gt;Quando o servidor necessita de memória para um propósito especifico, ele reserva uma memória não usada dentro da virtual portion. A memória reservada para um propósito especifico é conhecida como um &lt;i&gt;shared memory pool. &lt;/i&gt;Um &lt;i&gt;memory pool&lt;/i&gt; é alocado para um propósito especifico; por exemplo, para armazenar dados particulares de um usuário. Atualmente, existem mais de 50 tipos de &lt;i&gt;shared memory pools &lt;/i&gt;que podem ser alocados. Os &lt;i&gt;pools&lt;/i&gt; podem ser alocados a qualquer momento e são liberados quando eles não são mais necessários. Quando o espaço de um pool é liberado, o espaço é disponibilizado para que o servidor possa reutilizá-lo.&lt;/p&gt;  &lt;p&gt;O Servidor controla alocações de memória para um &lt;i&gt;memory pool &lt;/i&gt;mapeando o uso da memória com paginas bitmap. A memória é alocada da virtual portion para uso do servidor em incrementos de 8Kb, valor este que não pode ser modificado. Cada bit em uma pagina bitmap mapeia um bloco de 8Kb.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5173052840491277468-564273138958400340?l=ajmoreti.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajmoreti.blogspot.com/feeds/564273138958400340/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://ajmoreti.blogspot.com/2011/06/alocacao-de-shared-memory-virtual.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/564273138958400340'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/564273138958400340'/><link rel='alternate' type='text/html' href='http://ajmoreti.blogspot.com/2011/06/alocacao-de-shared-memory-virtual.html' title='Alocação de Shared Memory: The Virtual Portion'/><author><name>Amilcar de Jesus Moreti</name><uri>http://www.blogger.com/profile/04022310434818885345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://1.bp.blogspot.com/_I4DneDrgUiQ/Sq_P5t7dwtI/AAAAAAAAAFA/mYME8h_xiF4/S220/Imagem0116.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5173052840491277468.post-7897819047427733771</id><published>2011-06-28T10:07:00.001-03:00</published><updated>2011-06-28T10:07:30.100-03:00</updated><title type='text'>The Resident Portion: LRUs</title><content type='html'>&lt;p&gt;&lt;a href="http://lh3.ggpht.com/-XvZkN8rnRLc/TgnSC4aq5cI/AAAAAAAAATI/71kEa4GIkIE/s1600-h/image%25255B2%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/-392mk560JRg/TgnSEFCZQPI/AAAAAAAAATM/rLB-LJ_coR4/image_thumb.png?imgmax=800" width="244" height="193" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Quando o servidor precisa trazer uma página do disco para a &lt;i&gt;shared memory, &lt;/i&gt;ele deve primeiro localizar um &lt;i&gt;buffer &lt;/i&gt;para dentro do qual colocará a página. Todo &lt;i&gt;buffer &lt;/i&gt;é mapeado através de diversas listas conectadas de ponteiros conhecidas como filas Least Recently Used (&lt;b&gt;LRU)&lt;/b&gt;. Os pares de filas LRU têm uma fila livre, a FLRU (LRU Livre) e uma fila modificada, a MLRU (LRU modificada).&lt;/p&gt;  &lt;p&gt;Quando o servidor é colocado em modo on-line pela primeira vez, todas as páginas dos &lt;i&gt;buffers&lt;/i&gt; (as quais estão vazias), são distribuídas igualmente nas FLRU dos pares de LRU. Esta distribuição é para balancear a associação das páginas do &lt;i&gt;buffer &lt;/i&gt;dentre as filas de FLRU de modo que uma fila não gere um gargalo.&lt;/p&gt;  &lt;p&gt;Quando uma thread de usuário precisa de um &lt;i&gt;buffer&lt;/i&gt;, o servidor seleciona um &lt;i&gt;Least Recently Used buffer &lt;/i&gt;randomicamente em uma das filas de FLRU que não estão reservadas por nenhuma outra thread de usuário. Se a página está sendo modificada, o &lt;i&gt;buffer &lt;/i&gt;é colocado em um &lt;i&gt;Most Recently Used buffer&lt;/i&gt; na fila de MLRU. Se a página foi lida, mas não foi modificada, o &lt;i&gt;buffer &lt;/i&gt;é retornado para o &lt;i&gt;Most Recently Used buffer &lt;/i&gt;na fila de FLRU.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5173052840491277468-7897819047427733771?l=ajmoreti.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajmoreti.blogspot.com/feeds/7897819047427733771/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://ajmoreti.blogspot.com/2011/06/resident-portion-lrus.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/7897819047427733771'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/7897819047427733771'/><link rel='alternate' type='text/html' href='http://ajmoreti.blogspot.com/2011/06/resident-portion-lrus.html' title='The Resident Portion: LRUs'/><author><name>Amilcar de Jesus Moreti</name><uri>http://www.blogger.com/profile/04022310434818885345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://1.bp.blogspot.com/_I4DneDrgUiQ/Sq_P5t7dwtI/AAAAAAAAAFA/mYME8h_xiF4/S220/Imagem0116.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/-392mk560JRg/TgnSEFCZQPI/AAAAAAAAATM/rLB-LJ_coR4/s72-c/image_thumb.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5173052840491277468.post-6790742853635260518</id><published>2011-06-28T10:03:00.001-03:00</published><updated>2011-06-28T10:03:32.918-03:00</updated><title type='text'>The Resident Portion: Logical Log Buffers</title><content type='html'>&lt;p&gt;&lt;a href="http://lh4.ggpht.com/-Ot5yk8Ub0aQ/TgnRHdblAfI/AAAAAAAAATA/CYK6lKjAQLM/s1600-h/image%25255B2%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/-iS7Q2JVAyFk/TgnRI98GMWI/AAAAAAAAATE/1QswLKd2e7k/image_thumb.png?imgmax=800" width="244" height="185" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;O &lt;i&gt;logical logs &lt;/i&gt;é um &lt;i&gt;log, &lt;/i&gt;ou atualmente uma coleção de logs, em disco que recebe as entradas DML (Insert, Update, Delete) de banco de dados com log, assim como DDL para todas as tabelas. Com servidores IBM Informix, o mesmo grupo de &lt;i&gt;logs&lt;/i&gt; é compartilhado por todos bancos de dados. Transações de diferentes bancos de dados são intercaladas no interior dos logs de transação.&lt;/p&gt;  &lt;p&gt;Como a quantidade de dados gravados nestes logs pode ser grande, para ajudar a reduzir a quantidade de I/O físico necessário para gravar os dados no disco, o dado é primeiro colocado em um &lt;i&gt;buffer&lt;/i&gt;, o qual será transferido para o disco mais tarde. O servidor aloca três &lt;i&gt;buffers, &lt;/i&gt;para uso com os &lt;i&gt;logical logs.&lt;/i&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5173052840491277468-6790742853635260518?l=ajmoreti.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajmoreti.blogspot.com/feeds/6790742853635260518/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://ajmoreti.blogspot.com/2011/06/resident-portion-logical-log-buffers.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/6790742853635260518'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/6790742853635260518'/><link rel='alternate' type='text/html' href='http://ajmoreti.blogspot.com/2011/06/resident-portion-logical-log-buffers.html' title='The Resident Portion: Logical Log Buffers'/><author><name>Amilcar de Jesus Moreti</name><uri>http://www.blogger.com/profile/04022310434818885345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://1.bp.blogspot.com/_I4DneDrgUiQ/Sq_P5t7dwtI/AAAAAAAAAFA/mYME8h_xiF4/S220/Imagem0116.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/-iS7Q2JVAyFk/TgnRI98GMWI/AAAAAAAAATE/1QswLKd2e7k/s72-c/image_thumb.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5173052840491277468.post-5851418474812334082</id><published>2011-06-27T17:19:00.001-03:00</published><updated>2011-06-27T17:19:56.620-03:00</updated><title type='text'>Historia do Shell</title><content type='html'>&lt;p&gt;A primeira versão do shell padrão do UNIX foi introduzido na V7 (Sétima edição pela AT&amp;amp;T) no final de 1979, e foi batizado pelo nome do seu criador, Stephen Bourne. O Bourne Shell é uma linguagem de programação baseada em uma linguagem de programação chamada Algol. E foi utilizado primeiramente para gerenciar tarefas de administração do sistema. Embora popular pela sua simplicidade e velocidade, ele não tem muitas características para o uso interativo, como o histórico, aliases e controle de tarefas.&lt;/p&gt;  &lt;p&gt;O C Shell, desenvolvido pela Universidade da Califórnia em Berkeley no final de 1970, foi lançado como parte do UNIX 2BSD. O Shell, foi escrito por Bill Joy, oferecendo um numero adicional de características não encontradas no Bourne Shell. O C Shell é baseado na linguagem de programação C, e quando usada como linguagem de programação, compartilha uma sintaxe similar ao C. Ele também oferece melhorias para o uso interativo, como o histórico de linha de comando, aliases e controles de tarefas. o C Shell foi projetado para grandes Servidores e por isso características adicionais foram adicionadas, o C Shell tem uma tendência de ser mais lento, tanto em Servidores de pequeno porte quanto Servidores de Grande porte em comparação ao Bourne Shell.&lt;/p&gt;  &lt;p&gt;Tanto o Bourne Shell e o C Shell disponível, usuários UNIX tinha agora uma escolha e conflitos para saber qual o melhor Shell. David Korn, da AT&amp;amp;T, criou o Korn Shell pelos meados dos anos 80. Foi lançado em 1986 e tornou-se oficialmente parte da distribuição UNIX SVR4 em 1988. O Korn Shell, é realmente um superconjunto do Bourne Shell, rodando não somente nos sistemas UNIX, mas também no OS/2, VMS e mesmo no DOS. isso fornece alta compatibilidade com o Bourne Shell, acrescenta muitas características popular do C Shell, e é muito rápido e eficiente. O Korn Shell passou por uma serie de revisões. &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5173052840491277468-5851418474812334082?l=ajmoreti.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajmoreti.blogspot.com/feeds/5851418474812334082/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://ajmoreti.blogspot.com/2011/06/historia-do-shell.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/5851418474812334082'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/5851418474812334082'/><link rel='alternate' type='text/html' href='http://ajmoreti.blogspot.com/2011/06/historia-do-shell.html' title='Historia do Shell'/><author><name>Amilcar de Jesus Moreti</name><uri>http://www.blogger.com/profile/04022310434818885345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://1.bp.blogspot.com/_I4DneDrgUiQ/Sq_P5t7dwtI/AAAAAAAAAFA/mYME8h_xiF4/S220/Imagem0116.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5173052840491277468.post-1287058329629916476</id><published>2011-06-22T17:39:00.001-03:00</published><updated>2011-06-22T17:39:49.763-03:00</updated><title type='text'>Introdução ao UNIX SHELLs</title><content type='html'>&lt;p&gt;&lt;strong&gt;Definição e função&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;O Shell é um programa especial usado como uma interface entre o usuário e o coração do Sistema Operacional UNIX, chamado de &lt;em&gt;kernel&lt;/em&gt;, como mostra a figura abaixo:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-JV0xeMT_pVQ/TgJTEXsAraI/AAAAAAAAAS4/Po24JRWTIO4/s1600-h/kernel2.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="kernel" border="0" alt="kernel" src="http://lh3.ggpht.com/-q-3OLsAAaxo/TgJTFPdgT9I/AAAAAAAAAS8/xC7JhRSySvA/kernel_thumb.jpg?imgmax=800" width="244" height="219" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;O kernel é carregado na memoria no momento do boot e gerencia o sistema ate o momento do shutdown. Isso cria e controla processos, e gerencia memorias, sistemas de arquivos, comunicações, e assim por diante. Todos os outros programas, incluindo shells scripts residem fora do disco. O kernel carrega esses programas em memoria, executa-os, e limpa o sistema quando terminar. O shell é um programa que inicializa quando você faz um logon. Isso permite os usuários interagir com o kernel interpretando os comandos digitados pelo usuário em linha de comando ou em um shell script.&lt;/p&gt;  &lt;p&gt;Quando você faz logon, um shell interativo é iniciado e um prompt fica aguardando a sua entrada. Depois de digitar um comando, é de responsabilidade do shell: (a) analisar a linha de comando; (b) lidar com wildcards, redirecionamentos, pipes e controle dos trabalhos; e (c) pesquisar pelo comando e se encontrado, executar o comando. Quando você estuda UNIX pela primeira vez, recomendo passar uma boa parte de seu tempo digitando comandos em prompt. Use a interatividade do shell.&lt;/p&gt;  &lt;p&gt;Se você costuma executar um conjunto de comando regularmente, você pode querer automatizar essas tarefas. Um arquivo de script permite que você crie um conjunto de comandos, e então execute esse script. Um shell script é muito parecido com um arquivo de lote do Windows: É uma lista de comandos UNIX e então esse arquivo é executado. Scripts mais sofisticados contem instruções de programação para criar decisões, looping, e muito mais. Escrever um script não requer somente estudar técnicas de programação, mas sim que você tenha um bom conhecimento dos utilitários UNIX e como eles trabalham. Existem alguns utilitários, como &lt;em&gt;grep, sed e awk, &lt;/em&gt;que são ferramentas extremamente poderosas usadas em scripts para a manipulação das saídas dos comandos. Depois que você se familiarizar com essas ferramentas e com construção de programas, você estará pronto para escrever scripts poderosos. Ao executar comandos dentro de scripts, você estará usando o shell como uma linguagem de programação.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Os três principais Shells&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Os três principais Shells e suportados na maioria dos sistemas UNIX são o Bourne Shell (AT&amp;amp;T Shell), o C Shell (Berkeley), e o Korn Shell (superconjunto do Bourne Shell). Todos esses três Shells se comportam praticamente da mesma forma quando executado, mas tem algumas diferenças na sintaxe e eficiência quando utilizado como linguagem de programação.&lt;/p&gt;  &lt;p&gt;O Bourne Shell é o shell padrão do UNIX, e o shell é usado para administrar o sistema. A maioria dos scripts de administração do sistema, como os scripts &lt;em&gt;rc start&lt;/em&gt;&amp;#160; e &lt;em&gt;stop&lt;/em&gt; e &lt;em&gt;shutdown&lt;/em&gt; são scripts Bourne Shell, e quando em modo &lt;em&gt;single user&lt;/em&gt;,&lt;em&gt;&amp;#160;&lt;/em&gt;este é o shell usado pelo root. Este shell foi escrito pela AT&amp;amp;T e é conhecido por ser objetivo, compacto e rápido. O prompt padrão do Bourne Shell é o sinal de dólar ($).&lt;/p&gt;  &lt;p&gt;O C shell foi desenvolvido e adicionado uma serie de característica pela Berkeley, como o histórico de linha de comando, aliases, cálculos aritméticos controles de tarefas. O C Shell tem sido melhor em comparação ao Bourne Shell para usuários que rodam em shell interativo, mas administradores&amp;#160; preferem o Bourne Shell para script, porque o Bourne Shell são simples e bem mais rápidos comparado com scripts escrito em C Shell. O prompt padrão do C Shell é o sinal de porcentagem (%).&lt;/p&gt;  &lt;p&gt;O Korn Shell é um superconjunto do Bourne Shell escrito por David Korn da AT&amp;amp;T. Uma serie de recursos foram adicionados a esse shell além das melhorias do C Shell. As características do Korn Shell inclui um histórico editável, aliases, funções, expressões regulares, cálculos aritméticos, controles de tarefas e debug, entre outras. O Bourne Shell é quase totalmente compatível com o Korn Shell. O prompt padrão do Korn Shell é o sinal de dólar ($).&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5173052840491277468-1287058329629916476?l=ajmoreti.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajmoreti.blogspot.com/feeds/1287058329629916476/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://ajmoreti.blogspot.com/2011/06/introducao-ao-unix-shells.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/1287058329629916476'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/1287058329629916476'/><link rel='alternate' type='text/html' href='http://ajmoreti.blogspot.com/2011/06/introducao-ao-unix-shells.html' title='Introdução ao UNIX SHELLs'/><author><name>Amilcar de Jesus Moreti</name><uri>http://www.blogger.com/profile/04022310434818885345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://1.bp.blogspot.com/_I4DneDrgUiQ/Sq_P5t7dwtI/AAAAAAAAAFA/mYME8h_xiF4/S220/Imagem0116.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/-q-3OLsAAaxo/TgJTFPdgT9I/AAAAAAAAAS8/xC7JhRSySvA/s72-c/kernel_thumb.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5173052840491277468.post-3083648178612029004</id><published>2011-06-21T15:36:00.001-03:00</published><updated>2011-06-21T15:36:19.489-03:00</updated><title type='text'>The Resident Portion: Physical Log Buffers</title><content type='html'>&lt;p&gt;&lt;a href="http://lh6.ggpht.com/-7LIZkRPqy_c/TgDknZFQ3DI/AAAAAAAAASw/2B_5mmXBE7Y/s1600-h/image%25255B2%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-SgrTft8O75E/TgDkotQ6E5I/AAAAAAAAAS0/_im7ZrXmkIY/image_thumb.png?imgmax=800" width="244" height="185" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a name="OLE_LINK7"&gt;&lt;/a&gt;&lt;a name="OLE_LINK6"&gt;Outra parte importante da resident portion da &lt;i&gt;shared memory &lt;/i&gt;é usada para &lt;i&gt;log buffers. &lt;/i&gt;O &lt;i&gt;physical log &lt;/i&gt;é um log especial usado para mecanismos de tolerância à falhas do servidor. Ele contém as &lt;i&gt;Before images &lt;/i&gt;(apenas a primeira cópia) de páginas de dados e índices que estão no &lt;i&gt;buffer pool &lt;/i&gt;e estão sendo modificadas desde o momento que elas foram lidas do disco.&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Para reduzir a quantidade de I/O físico associado com a manutenção desde &lt;i&gt;log&lt;/i&gt;, os &lt;i&gt;buffers&lt;/i&gt; são usados na gravação do log; ao invés de gravar cada entrada diretamente no disco, as entradas são gravadas em um &lt;i&gt;buffer, &lt;/i&gt;o qual é transferido para o disco mais tarde. Como o servidor tem o controle sobre quando estes &lt;i&gt;buffers &lt;/i&gt;são transferidos para o disco, ele pode garantir que eles serão transferidos quando necessário.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5173052840491277468-3083648178612029004?l=ajmoreti.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajmoreti.blogspot.com/feeds/3083648178612029004/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://ajmoreti.blogspot.com/2011/06/resident-portion-physical-log-buffers.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/3083648178612029004'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/3083648178612029004'/><link rel='alternate' type='text/html' href='http://ajmoreti.blogspot.com/2011/06/resident-portion-physical-log-buffers.html' title='The Resident Portion: Physical Log Buffers'/><author><name>Amilcar de Jesus Moreti</name><uri>http://www.blogger.com/profile/04022310434818885345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://1.bp.blogspot.com/_I4DneDrgUiQ/Sq_P5t7dwtI/AAAAAAAAAFA/mYME8h_xiF4/S220/Imagem0116.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/-SgrTft8O75E/TgDkotQ6E5I/AAAAAAAAAS0/_im7ZrXmkIY/s72-c/image_thumb.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5173052840491277468.post-8402425595482054504</id><published>2011-06-15T11:19:00.001-03:00</published><updated>2011-06-15T11:19:06.903-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Informix'/><title type='text'>The Resident Portion: Buffer Pool</title><content type='html'>&lt;p&gt;&lt;a href="http://lh3.ggpht.com/-Yj4gV53_cj4/Tfi_VOySTOI/AAAAAAAAASk/TkKg4ET5La8/s1600-h/image%25255B2%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-oLC0KnirkZk/Tfi_WcV_QAI/AAAAAAAAASo/G7IndY4xVWg/image_thumb.png?imgmax=800" width="244" height="186" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;A maior parte da resident portion da &lt;i&gt;shared memory&lt;/i&gt; é usada para o &lt;i&gt;buffer pool&lt;/i&gt; (também conhecido como &lt;i&gt;buffer cache&lt;/i&gt;), o qual é uma coleção de &lt;i&gt;buffers &lt;/i&gt;dedicados a armazenar em cache, os dados do disco. Armazenar páginas de dados em &lt;i&gt;shared memory &lt;/i&gt;permite que muitos usuários leiam e gravem dados sem no momento ter de realizar leituras e gravações nos discos. Nos capítulos seguintes, você aprenderá como especificar o número de &lt;i&gt;buffers&lt;/i&gt; para usar em seu servidor.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5173052840491277468-8402425595482054504?l=ajmoreti.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajmoreti.blogspot.com/feeds/8402425595482054504/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://ajmoreti.blogspot.com/2011/06/resident-portion-buffer-pool.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/8402425595482054504'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/8402425595482054504'/><link rel='alternate' type='text/html' href='http://ajmoreti.blogspot.com/2011/06/resident-portion-buffer-pool.html' title='The Resident Portion: Buffer Pool'/><author><name>Amilcar de Jesus Moreti</name><uri>http://www.blogger.com/profile/04022310434818885345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://1.bp.blogspot.com/_I4DneDrgUiQ/Sq_P5t7dwtI/AAAAAAAAAFA/mYME8h_xiF4/S220/Imagem0116.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/-oLC0KnirkZk/Tfi_WcV_QAI/AAAAAAAAASo/G7IndY4xVWg/s72-c/image_thumb.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5173052840491277468.post-7633340144160140851</id><published>2011-06-15T11:14:00.001-03:00</published><updated>2011-06-15T11:14:52.227-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Informix'/><title type='text'>Shared Memory: the Resident Portion</title><content type='html'>&lt;p&gt;&lt;a href="http://lh4.ggpht.com/-6SKgugyOKek/Tfi-F3LcOyI/AAAAAAAAASc/oqBOvFJfFYI/s1600-h/image%25255B2%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-aahNdPdJmgM/Tfi-U4a0MPI/AAAAAAAAASg/ZCRRmlT-21s/image_thumb.png?imgmax=800" width="244" height="187" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;O principal uso da resident portion da &lt;i&gt;shared memory&lt;/i&gt; é para conter o &lt;i&gt;buffer pool. O buffer pooI &lt;/i&gt;mantém páginas de dados das tabelas dos bancos de dados. A resident portion também mantém o controle de outros recursos do servidor.&lt;/p&gt;  &lt;p&gt;O servidor alocará algumas coleções de estruturas de dados nesta porção da &lt;i&gt;shared memory.&lt;/i&gt; Estas estruturas são algumas vezes conhecidas como tabelas internas, mas tenha em mente que não são como as tabelas de banco de dados.&lt;/p&gt;  &lt;p&gt;O servidor de banco de dados associa uma tabela interna para cada um dos principais recursos do servidor. O tamanho dessas tabelas internas é configurável ajustando o tamanho do recurso da &lt;i&gt;shared memory &lt;/i&gt;usando o &lt;b&gt;onmonitor, &lt;/b&gt;ou modificando o arquivo &lt;b&gt;onconfig&lt;/b&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5173052840491277468-7633340144160140851?l=ajmoreti.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajmoreti.blogspot.com/feeds/7633340144160140851/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://ajmoreti.blogspot.com/2011/06/shared-memory-resident-portion.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/7633340144160140851'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/7633340144160140851'/><link rel='alternate' type='text/html' href='http://ajmoreti.blogspot.com/2011/06/shared-memory-resident-portion.html' title='Shared Memory: the Resident Portion'/><author><name>Amilcar de Jesus Moreti</name><uri>http://www.blogger.com/profile/04022310434818885345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://1.bp.blogspot.com/_I4DneDrgUiQ/Sq_P5t7dwtI/AAAAAAAAAFA/mYME8h_xiF4/S220/Imagem0116.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/-aahNdPdJmgM/Tfi-U4a0MPI/AAAAAAAAASg/ZCRRmlT-21s/s72-c/image_thumb.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5173052840491277468.post-6873015619325556508</id><published>2011-06-15T10:59:00.001-03:00</published><updated>2011-06-15T10:59:22.769-03:00</updated><title type='text'>O componente Shared Memory</title><content type='html'>&lt;p&gt;&lt;a href="http://lh3.ggpht.com/-Us4kRSpDdCU/Tfi6slHsKxI/AAAAAAAAASU/nx363z9Aqh4/s1600-h/image%25255B2%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-edQbkAoZuxM/Tfi6uWnqcpI/AAAAAAAAASY/QbcuFLobF4w/image_thumb.png?imgmax=800" width="244" height="189" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;A shared memory no servidor é dividida em três porções. Cada uma destas porções é listada abaixo e explicada em maiores detalhes nos capítulos posteriores.&lt;/p&gt;  &lt;p&gt;· Resident portion – a porção &lt;i&gt;resident portion &lt;/i&gt;contém o &lt;i&gt;buffer pool &lt;/i&gt;e outras informações do sistema. Esta parte da &lt;i&gt;shared memory &lt;/i&gt;pode ser configurada para permanecer residente na memória principal (se esta capacidade é suportada pelo sistema operacional).&lt;/p&gt;  &lt;p&gt;· Virtual portion – a &lt;i&gt;virtual portion&lt;/i&gt; contém informações sobre as threads e sessões, e os dados que são usados por elas. Estas informações crescem e diminuem constantemente, sendo que o servidor de banco de dados é responsável pelo controle de alocação e liberação de memória nesta porção.&lt;/p&gt;  &lt;p&gt;· Message portion – a &lt;i&gt;message portion &lt;/i&gt;armazena os &lt;i&gt;message buffers&lt;/i&gt; que são usados na comunicação entre o cliente e o servidor quando o método de comunicação é feito através da &lt;i&gt;shared memory&lt;/i&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5173052840491277468-6873015619325556508?l=ajmoreti.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajmoreti.blogspot.com/feeds/6873015619325556508/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://ajmoreti.blogspot.com/2011/06/o-componente-shared-memory.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/6873015619325556508'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/6873015619325556508'/><link rel='alternate' type='text/html' href='http://ajmoreti.blogspot.com/2011/06/o-componente-shared-memory.html' title='O componente Shared Memory'/><author><name>Amilcar de Jesus Moreti</name><uri>http://www.blogger.com/profile/04022310434818885345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://1.bp.blogspot.com/_I4DneDrgUiQ/Sq_P5t7dwtI/AAAAAAAAAFA/mYME8h_xiF4/S220/Imagem0116.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/-edQbkAoZuxM/Tfi6uWnqcpI/AAAAAAAAASY/QbcuFLobF4w/s72-c/image_thumb.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5173052840491277468.post-7468367692083424862</id><published>2011-06-15T10:52:00.001-03:00</published><updated>2011-06-15T10:52:40.969-03:00</updated><title type='text'>Componente de Processo: Virtual Processors</title><content type='html'>&lt;p&gt;&lt;a href="http://lh3.ggpht.com/-1V7YFgXgA94/Tfi5Iyh3fWI/AAAAAAAAASM/E_3-djRug5g/s1600-h/image%25255B2%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/-VSJQvhTlFSU/Tfi5J7KSMBI/AAAAAAAAASQ/S2Z1VXwBGuU/image_thumb.png?imgmax=800" width="244" height="181" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Os processos que compõe o servidor de banco de dados são conhecidos como &lt;i&gt;virtual processors.&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;Cada virtual processor &lt;/i&gt;pertence a uma classe de &lt;i&gt;virtual processor&lt;/i&gt;. A classe VP é um ou mais processos responsáveis por um conjunto específico de tarefas ( na forma de threads), como gravações para o logical log ou leitura de dados do disco. Isto significa que um VP de uma certa classe pode somente executar threads da mesma classe. Cada VP na classe VP é apenas outra instância do mesmo programa. Um VP pode pertencer somente a uma classe. Uma classe VP pode ter um ou mais VPs, o que em muitos casos é configurável pelo administrador do sistema.&lt;/p&gt;  &lt;p&gt;VPs são executados como &lt;b&gt;root&lt;/b&gt;. Isto é necessário porque o VP deve executar certas tarefas como o usuário que iniciou a tarefa (como gravar a saída de um SET EXPLAIN ou executar o SYSTEM da SPL). Tendo VPs executando como &lt;b&gt;root&lt;/b&gt;, tem-se o beneficio adicional de proteção dos processos do servidor de banco de dados. Somente &lt;b&gt;root &lt;/b&gt;ou &lt;b&gt;informix &lt;/b&gt;pode eliminar um VP. Se você executar um processo de status no UNIX, o virtual processors aparecerá como processos chamados de &lt;b&gt;oninit&lt;/b&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5173052840491277468-7468367692083424862?l=ajmoreti.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajmoreti.blogspot.com/feeds/7468367692083424862/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://ajmoreti.blogspot.com/2011/06/componente-de-processo-virtual.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/7468367692083424862'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/7468367692083424862'/><link rel='alternate' type='text/html' href='http://ajmoreti.blogspot.com/2011/06/componente-de-processo-virtual.html' title='Componente de Processo: Virtual Processors'/><author><name>Amilcar de Jesus Moreti</name><uri>http://www.blogger.com/profile/04022310434818885345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://1.bp.blogspot.com/_I4DneDrgUiQ/Sq_P5t7dwtI/AAAAAAAAAFA/mYME8h_xiF4/S220/Imagem0116.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/-VSJQvhTlFSU/Tfi5J7KSMBI/AAAAAAAAASQ/S2Z1VXwBGuU/s72-c/image_thumb.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5173052840491277468.post-8728363933675856839</id><published>2011-06-09T08:32:00.001-03:00</published><updated>2011-06-09T08:32:03.211-03:00</updated><title type='text'>Visão da Arquitetura</title><content type='html'>&lt;p&gt;&lt;a href="http://lh4.ggpht.com/-5j9qY-K5kcU/TfCvKBhnksI/AAAAAAAAARg/39H-2WATOAE/s1600-h/image%25255B2%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-dcH_SJpuWrE/TfCvL0GEnBI/AAAAAAAAARk/ykaEp-n3sfY/image_thumb.png?imgmax=800" width="244" height="186" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;O servidor é composto por três grandes componentes. Os componentes são introduzidos nas paginas seguintes e discutidos em detalhes nos capítulos posteriores.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;O Componente Processo&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;O &lt;i&gt;componente Processo &lt;/i&gt;define o &lt;i&gt;database Server. &lt;/i&gt;Os processos que definem o &lt;i&gt;database Server &lt;/i&gt;são conhecidos como &lt;i&gt;virtual processors. &lt;/i&gt;Ao nível do UNIX esses processos são chamados &lt;b&gt;oninit.&lt;/b&gt; Cada virtual processor (VP) pertence a uma classe de &lt;i&gt;virtual processor. &lt;/i&gt;Uma classe de VP é um conjunto de processos responsáveis por um conjunto especifico de tarefas.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;O Componente Shared Memory&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;O Segundo componente é a &lt;i&gt;Shared Memory. &lt;/i&gt;A Shared Memory é feita de três porções: residente, virtual e de mensagem. A &lt;i&gt;Shared Memory &lt;/i&gt;é usada para:&lt;/p&gt;  &lt;p&gt;· Cópia dos dados do disco para &lt;i&gt;shared memory &lt;/i&gt;para acesso mais rápido (resident portion);&lt;/p&gt;  &lt;p&gt;· Manutenção e controle dos recursos solicitados pelos processos (virtual portion);&lt;/p&gt;  &lt;p&gt;· Um mecanismo de comunicação para os processos cliente e servidor falarem entre si para coordenar suas atividades (message portion).&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;O Componente Disco&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Seguindo, há o &lt;i&gt;componente disco. &lt;/i&gt;Esta é um coleção de uma ou mais unidades de espaço em disco designado para o sistema do servidor. Todos os dados nos banco de dados, além de toda a informação do sistema necessário para manter o servidor, são armazenados dentro do componente disco.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5173052840491277468-8728363933675856839?l=ajmoreti.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajmoreti.blogspot.com/feeds/8728363933675856839/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://ajmoreti.blogspot.com/2011/06/visao-da-arquitetura.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/8728363933675856839'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/8728363933675856839'/><link rel='alternate' type='text/html' href='http://ajmoreti.blogspot.com/2011/06/visao-da-arquitetura.html' title='Visão da Arquitetura'/><author><name>Amilcar de Jesus Moreti</name><uri>http://www.blogger.com/profile/04022310434818885345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://1.bp.blogspot.com/_I4DneDrgUiQ/Sq_P5t7dwtI/AAAAAAAAAFA/mYME8h_xiF4/S220/Imagem0116.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/-dcH_SJpuWrE/TfCvL0GEnBI/AAAAAAAAARk/ykaEp-n3sfY/s72-c/image_thumb.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5173052840491277468.post-4237155320773086272</id><published>2011-05-06T20:14:00.001-03:00</published><updated>2011-05-06T20:14:47.763-03:00</updated><title type='text'>O Servidor de Banco de Dados Informix</title><content type='html'>&lt;p&gt;&lt;a href="http://lh3.ggpht.com/_I4DneDrgUiQ/TcSA4gxk1BI/AAAAAAAAAI8/wOkN9uR2_P0/s1600-h/image%5B2%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_I4DneDrgUiQ/TcSA5r7yijI/AAAAAAAAAJA/3YHpwvmEHAw/image_thumb.png?imgmax=800" width="244" height="183" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;O servidor implementa uma arquitetura multi-thread. Isto quer dizer que:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Menos processos são exigidos para executar as atividades do SGBD; &lt;/li&gt;    &lt;li&gt;Um processo que pode fazer o trabalho para mais de uma aplicação através do uso de threads. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Esses processos são coletivamente conhecidos como &lt;em&gt;database server.&lt;/em&gt; Você pode dinamicamente alocar processos para o &lt;em&gt;database server &lt;/em&gt;quanto necessário, por isso o termo &lt;em&gt;DYNAMIC SERVER.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;A arquitetura multithreaded permite uma melhor escalabilidade. Isto quer dizer que quanto mais usuários são adicionados, uma quantidade mínima de recursos adicionais é exigida pelo servidor para acomodar esses usuários. Isto devido a escalabilidade e a eficiente implementação multithreaded.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5173052840491277468-4237155320773086272?l=ajmoreti.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajmoreti.blogspot.com/feeds/4237155320773086272/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://ajmoreti.blogspot.com/2011/05/o-servidor-de-banco-de-dados-informix.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/4237155320773086272'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/4237155320773086272'/><link rel='alternate' type='text/html' href='http://ajmoreti.blogspot.com/2011/05/o-servidor-de-banco-de-dados-informix.html' title='O Servidor de Banco de Dados Informix'/><author><name>Amilcar de Jesus Moreti</name><uri>http://www.blogger.com/profile/04022310434818885345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://1.bp.blogspot.com/_I4DneDrgUiQ/Sq_P5t7dwtI/AAAAAAAAAFA/mYME8h_xiF4/S220/Imagem0116.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_I4DneDrgUiQ/TcSA5r7yijI/AAAAAAAAAJA/3YHpwvmEHAw/s72-c/image_thumb.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5173052840491277468.post-1682372223153037367</id><published>2011-04-19T10:08:00.001-03:00</published><updated>2011-04-19T10:08:16.364-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Unix'/><title type='text'>Visão Geral da Arvore de Diretórios</title><content type='html'>&lt;p&gt;Vamos descrever aqui as partes importantes da arvore de diretórios do UNIX em particular do LINUX, em matéria passada já postei sobre a estrutura do HP-UX, baseado no Sistema de Arquivos Padrão do LINUX – FSSTND. Ele descreve a forma usual de dividir a arvore de diretórios em diferentes sistemas de arquivos com diferentes propósitos, justificando a adoção de cada divisão. Algumas opções alternativas de particionamento vamos descrever também.&lt;/p&gt;  &lt;p&gt;O &lt;b&gt;Filesystem Hierarchy Standard&lt;/b&gt; (padrão para sistema de arquivos hierárquico), ou &lt;b&gt;FHS&lt;/b&gt;, define os principais diretórios, e o seu conteúdo, em um &lt;a href="http://pt.wikipedia.org/wiki/Sistema_operativo"&gt;sistema operacional&lt;/a&gt; &lt;a href="http://pt.wikipedia.org/wiki/Linux"&gt;Linux&lt;/a&gt; ou do &lt;a href="http://pt.wikipedia.org/wiki/Unix-like"&gt;tipo Unix&lt;/a&gt;. A versão atual é a &lt;b&gt;2.3&lt;/b&gt;, anunciada em 29 de janeiro de 2004.&lt;/p&gt;  &lt;p&gt;No início do ano de &lt;a href="http://pt.wikipedia.org/wiki/1996"&gt;1996&lt;/a&gt;, surgiu um movimento, com o apoio da comunidade de desenvolvedores do &lt;a href="http://pt.wikipedia.org/wiki/BSD"&gt;BSD&lt;/a&gt;, que visava o desenvolvimento de versões do FSSTND para outros sistemas do tipo Unix, além do Linux. A partir desta iniciativa foi realizado um esforço para determinar os problemas comuns aos sistemas do tipo Unix. Como resultado da ampliação do escopo do problema, o nome do padrão foi alterado para &lt;i&gt;Filesystem Hierarchy Standard&lt;/i&gt; (FHS) (padrão para sistemas de arquivo hierárquicos).&lt;/p&gt;  &lt;p&gt;O FHS é mantido pelo &lt;a href="http://pt.wikipedia.org/w/index.php?title=Free_Standards_Group&amp;amp;action=edit&amp;amp;redlink=1"&gt;Free Standards Group&lt;/a&gt;, uma organização sem fins lucrativos formada por importantes empresas de &lt;i&gt;&lt;a href="http://pt.wikipedia.org/wiki/Hardware"&gt;hardware&lt;/a&gt;&lt;/i&gt; e &lt;i&gt;&lt;a href="http://pt.wikipedia.org/wiki/Software"&gt;software&lt;/a&gt;&lt;/i&gt;, como &lt;a href="http://pt.wikipedia.org/wiki/Hewlett-Packard"&gt;HP&lt;/a&gt;, &lt;a href="http://pt.wikipedia.org/wiki/Red_Hat"&gt;Red Hat&lt;/a&gt;, &lt;a href="http://pt.wikipedia.org/wiki/IBM"&gt;IBM&lt;/a&gt; e &lt;a href="http://pt.wikipedia.org/wiki/Dell"&gt;Dell&lt;/a&gt;. Ainda hoje, a grande maioria das &lt;a href="http://pt.wikipedia.org/wiki/Distribui%C3%A7%C3%B5es_Linux"&gt;distribuições Linux&lt;/a&gt;, incluindo membros da Free Standards Group, não adotam o padrão proposto. Em particular, diretórios (&lt;i&gt;paths&lt;/i&gt;) criados pelo FHS, como o /srv/, não foram adotados em grande escala. Alguns sistemas Unix e Linux rompem com o padrão FHS, como o &lt;a href="http://pt.wikipedia.org/wiki/GoboLinux"&gt;GoboLinux&lt;/a&gt;. O &lt;a href="http://pt.wikipedia.org/wiki/Mac_OS_X"&gt;Mac OS X&lt;/a&gt; utiliza uma estrutura com nomes legíveis por seres humanos em conjunto com um sistema baseado no FHS.&lt;/p&gt;  &lt;p&gt;A intenção dessa matéria é apresentar uma visão geral sob um ponto de vista de sistema de arquivos.&lt;/p&gt;  &lt;p&gt;A arvore de diretórios deve ser dividida em partes menores, cada uma com o seu próprio disco ou partição, facilitando questões como limites de tamanho de disco ou a geração de cópias&amp;#160; de segurança. Os sistemas de arquivo mais importantes são o raiz (root), representando por uma /, /usr, /var e /home. Cada parte tem um proposito diferente. &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;O sistema de arquivos raiz é especifico de cada maquina (ele é geralmente armazenado em disco local, apesar de poder ser um disco em memoria e contem os arquivos necessários&amp;#160; para a inicialização do sistema e para permitir o acesso aos demais sistemas de arquivos. O conteúdo do sistema de arquivos raiz devera ser suficiente ainda para que o sistema possa ser executado em modo monousuário. ele contem ainda ferramentas para resolver eventuais problemas de disco e recuperar arquivos a partir&amp;#160; de copias de segurança.     &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;O sistema de arquivos &lt;strong&gt;/usr&lt;/strong&gt; contem os comandos, bibliotecas, paginas de manuais e outros arquivos imutáveis, necessários para a operação normal do sistema. Os arquivos no &lt;strong&gt;/usr&lt;/strong&gt; não devem ser específicos para uma determinada maquina e não devem ser alterados durante o uso normal. Isso permite que estes arquivos possam ser compartilhados através da rede, o que pode ser bastante interessante pela possível economia de espaço em disco, ( o, /usr pode conter facilmente centenas de megabytes) torna a administração mais simples (uma vez que somente o &lt;strong&gt;/usr&lt;/strong&gt; na maquina principal necessita ser atualizado e mantido em dia). Mesmo que este sistema de arquivos esteja no disco local, ele deve ser montado com autorização de somente leitura, para diminuir a chance de corrupção de arquivos durante um eventual acidente.      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;O sistema de arquivos &lt;strong&gt;/var &lt;/strong&gt;contém arquivos mutáveis, como diretórios de arquivos temporários, spool (para correio eletrônico, news, impressões, etc), logs, paginas de manual formatadas, etc… Tradicionalmente o conteúdo do &lt;strong&gt;/var&lt;/strong&gt; era montado em algum lugar sob o &lt;strong&gt;/usr&lt;/strong&gt;, porem isso tornava impossível montar o &lt;strong&gt;/usr&lt;/strong&gt; com permissões de somente leitura.      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;O sistema de arquivos &lt;strong&gt;/home&lt;/strong&gt; contem os diretórios pessoais dos usuários, ou seja, todas as informações armazenadas por estes no sistema. Separar diretórios pessoais em sua própria arvore de diretórios ou sistema de arquivos simplifica a geração de copias de segurança, uma vez que outras partes do sistema normalmente não necessitam de copias com a mesma frequência. Um &lt;strong&gt;/home&lt;/strong&gt; muito grande pode ser dividido em diversos sistemas de arquivos que requerem um nível adicional na sua denominação, por exemplo, (&lt;strong&gt;/home/amilcar&lt;/strong&gt;&amp;#160; ou &lt;strong&gt;/home/funcionário&lt;/strong&gt;).&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;A estrutura dos sistemas de arquivos UNIX prevê um agrupamento de acordo com o proposito. Os comandos estão todos em uma determinada área, todos os arquivos de dados em outra área, documentação em uma terceira, e assim por diante. Uma alternativa seria agrupar os arquivos de acordo com os programas a que eles pertençam, isto é, os arquivos do Emacs estariam todos em um único diretório, todos os arquivos do vim em outro, e assim por diante. O problema dessa abordagem reside no compartilhamento de arquivos (um diretório de programa contém todos os tipos de arquivos: estáticos, dinâmicos, compartilhados e não compartilhados,…) e algumas vezes em encontrar alguns desses arquivos ( por exemplo uma pagina de manual a ser pesquisada em um grande numero de diretórios é um pesadelo para a administração).&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5173052840491277468-1682372223153037367?l=ajmoreti.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajmoreti.blogspot.com/feeds/1682372223153037367/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://ajmoreti.blogspot.com/2011/04/visao-geral-da-arvore-de-diretorios.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/1682372223153037367'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/1682372223153037367'/><link rel='alternate' type='text/html' href='http://ajmoreti.blogspot.com/2011/04/visao-geral-da-arvore-de-diretorios.html' title='Visão Geral da Arvore de Diretórios'/><author><name>Amilcar de Jesus Moreti</name><uri>http://www.blogger.com/profile/04022310434818885345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://1.bp.blogspot.com/_I4DneDrgUiQ/Sq_P5t7dwtI/AAAAAAAAAFA/mYME8h_xiF4/S220/Imagem0116.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5173052840491277468.post-5552006822588987240</id><published>2011-04-05T13:44:00.001-03:00</published><updated>2011-04-05T13:44:30.356-03:00</updated><title type='text'>A estrutura do sistema de arquivos</title><content type='html'>&lt;p&gt;O sistema de arquivos é dividido em diversas partes, normalmente utilizado uma estrutura em arvore, com um sistema de arquivos chamado raiz (root), simbolizado por ‘/’. Debaixo deste podemos ter diversos outros:&amp;#160; /bin, /lib, /etc, /dev/,etc…&lt;/p&gt;  &lt;p&gt;Um sistema de arquivos /usr pode conter programas e dados não atualizáveis, o /var pode conter dados variáveis (como arquivos de log) e um sistema /home pode ter arquivos pessoais de todos os usuários. Dependendo da configuração de hardware e das definições do administrador do sistema, a divisão pode variar substancialmente, sendo possível inclusive que todos os conteúdos estejam em um único sistema de arquivos.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5173052840491277468-5552006822588987240?l=ajmoreti.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajmoreti.blogspot.com/feeds/5552006822588987240/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://ajmoreti.blogspot.com/2011/04/estrutura-do-sistema-de-arquivos.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/5552006822588987240'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/5552006822588987240'/><link rel='alternate' type='text/html' href='http://ajmoreti.blogspot.com/2011/04/estrutura-do-sistema-de-arquivos.html' title='A estrutura do sistema de arquivos'/><author><name>Amilcar de Jesus Moreti</name><uri>http://www.blogger.com/profile/04022310434818885345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://1.bp.blogspot.com/_I4DneDrgUiQ/Sq_P5t7dwtI/AAAAAAAAAFA/mYME8h_xiF4/S220/Imagem0116.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5173052840491277468.post-7367300255124897720</id><published>2011-04-04T14:42:00.001-03:00</published><updated>2011-04-04T14:42:28.645-03:00</updated><title type='text'>Principais Serviços de um Sistema UNIX</title><content type='html'>&lt;p&gt;&lt;strong&gt;init&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;O mais importante serviço isolado disponível em um sistema UNIX é denominado &lt;strong&gt;init&lt;/strong&gt;. O &lt;strong&gt;init &lt;/strong&gt;é o primeiro processo iniciado em todos os sistemas UNIX, apos a carga do kernel do sistema. Quando o &lt;strong&gt;init&lt;/strong&gt; é disparado, ele continua o processo de inicialização do sistema, executando diversas tarefas necessárias ao funcionamento do UNIX (checando e montando sistemas de arquivos, iniciando serviços,etc).&lt;/p&gt;  &lt;p&gt;A lista exata de tarefas que o &lt;strong&gt;init&lt;/strong&gt; realiza depende do estado em que ele esta. O &lt;strong&gt;init&lt;/strong&gt; provê o conceito de modo monousuário, no qual ninguém, além do root, pode entrar no sistema, sendo utilizado somente o shell do console do sistema, ou o modo multiusuário, o modo padrão de inicio do sistema. Algumas versões generalizam isso, denominando-os &lt;strong&gt;níveis de execução;&lt;/strong&gt; sendo os modos mono e multiusuário considerado como níveis, podendo existir diversos outros, como por exemplo , aquele que permite a execução do X (interface gráfica) na console.&lt;/p&gt;  &lt;p&gt;Em uma operação normal, o &lt;strong&gt;init&lt;/strong&gt; certifica-se que o &lt;strong&gt;getty&lt;/strong&gt; esta sendo executado (permite acesso aos usuários) e adota processos órfãos (processos cujos programas que o iniciaram (chamado de pais) morreram (não esta sendo mais executado)). No UNIX todos os processos devem estar em uma estrutura do tipo árvore, devendo todos eles terem um “pai”.&lt;/p&gt;  &lt;p&gt;Quando um sistema é desligado, é o &lt;strong&gt;init&lt;/strong&gt; que se encarrega de finalizar todos os outros processos, desmontar todos os sistemas de arquivos e parar o processador junto com tudo o mais que esteja sendo executado.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Acesso a partir de terminais&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Os acessos a partir de terminais (via linhas seriais) e através do console (quando não esta sendo executado o X), são disponibilizados pelo &lt;strong&gt;getty&lt;/strong&gt;. o init inicia uma instancia distinta do &lt;strong&gt;getty&lt;/strong&gt; para cada terminal, no qual o acesso é permitido. O &lt;strong&gt;getty&lt;/strong&gt; lê o nome do usuário e executa o programa de acesso &lt;strong&gt;login&lt;/strong&gt;, o qual por sua vez processa a validação da senha do usuário. Caso usuário e senha sejam validos, o &lt;strong&gt;login&lt;/strong&gt; inicia o shell do usuário. Quando um shell é finalizado, isto é, o usuário sai do sistema, ou quando o &lt;strong&gt;login &lt;/strong&gt;é finalizado porque usuário ou senha são incorretos, o &lt;strong&gt;init&lt;/strong&gt; inicia uma nova instancia do &lt;strong&gt;getty.&lt;/strong&gt; O kernel não tem conhecimentos dos acessos, pois tudo isso é controlado pelos programas de sistema.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Syslog&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;O kernel e muitos programas do sistema produzem vários avisos, mensagens de erros, e outros alertas. É importante que estas mensagens possam ser lidas outra hora, mesmo que isto demore muito tempo desde o ocorrido. Para que isso seja possível elas devem ser gravadas em um arquivo. O programa responsável por este arquivamento é o &lt;strong&gt;syslog&lt;/strong&gt;. Ele pode ser configurado para gravar as mensagens em diferentes arquivos de acordo com o nível de importância ou origem. As mensagens do kernel são frequentemente direcionadas para arquivos distintos, pois estas mensagens são normalmente mais importantes e necessitam ser lidas com amis frequência para se evitar/sanar problemas.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Comandos periódicos: cron e at&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Tanto administradores do sistema como usuários comuns necessitam executar periodicamente determinados programas. O administrador do sistema quer executar um comando para limpar os diretórios que contenham arquivos temporários antigos ( /tmp e /var/tmp ), evitando assim que os discos rígidos fiquem cheios de arquivos sem utilidade, uma vez que nem todos os programas apagam os arquivos temporários após a sua execução.&lt;/p&gt;  &lt;p&gt;o cron foi criado para atender a essa demanda. Cada usuário tem uma tabela do&amp;#160; cron (crontab) à sua disposição, onde se inclui os comandos desejados e a frequência com que eles devem ser executados. O daemon do cron encarrega-se de executar os comandos nos dias e horários definidos.&lt;/p&gt;  &lt;p&gt;O comando at é similar ao cron, mas esta limitado a uma única execução: o comando é executado em um determinado horário fornecido, mas não repedidas vezes.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Interface Gráfica&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;O UNIX e o Linux não incorporam a interface do usuário ao kernel. Ela é implementada pelos programas a nível de usuário, tanto no modo texto como no ambiente gráfico. &lt;/p&gt;  &lt;p&gt;Esta solução gera uma maior flexibilidade para o sistema, mas, pela facilidade de implementação, pode-se ter uma multiplicidade exagerada de interfaces, uma para cada programa, tornando o sistema mais complexo de ser utilizado.&lt;/p&gt;  &lt;p&gt;O ambiente gráfico usado com o Linux é chamado de X Window (X). O X na verdade não implementa a interface gráfica, somente disponibiliza um sistema de janelas, onde outros programas podem implementar um ambiente gráfico. Algumas interfaces gráficas mais populares para o Linux são: KDE, GNOME, WINDOWS MAKER.    &lt;br /&gt;No ambiente UNIX sendo o CDE.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Rede&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Rede pode ser definida como a conexão entre dois ou mais computadores,s de forma que eles possam comunicar-se entre si. Os métodos de conexão e comunicação são um tanto complexo, porem os resultados são muito uteis.&lt;/p&gt;  &lt;p&gt;Os sistemas UNIX tem muitas características de rede. Os serviços básicos de impressão, copias de segurança, sistemas de arquivos, etc, podem ser realizadas através da rede. Isso pode tornar a administração do sistema mais simples, uma vez que permite a suas administração de forma centralizada, mantendo os benefícios do processamento distribuído e do uso de microcomputadores, gerando menores custos e melhor tolerância a falhas.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Acesso via Rede&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Os acessos via rede são um pouco diferentes dos acessos normais, onde há uma linha serial distinta para cada terminal, através da qual&amp;#160; é possível acessar o sistema. Nos casos de acessos via rede, para cada usuário que conecta-se ao sistema, há uma conexão virtual separada, podendo haver um numero ilimitado delas. Não é mais possível executar um &lt;strong&gt;getty&lt;/strong&gt; para cada conexão virtual possível. Existem muitas formas diferentes de conectar-se via rede, sendo o &lt;strong&gt;telnet&lt;/strong&gt; e &lt;strong&gt;rlogin&lt;/strong&gt;&amp;#160; os mais utilizados em redes TCP/IP, hoje sendo o &lt;strong&gt;ssh&lt;/strong&gt; um serviço mais utilizado e mais seguro.&lt;/p&gt;  &lt;p&gt;Acessos via rede tem, ao invés de inúmeros &lt;strong&gt;getty&lt;/strong&gt;, um servidor controlando o acesso ( o &lt;strong&gt;telnet &lt;/strong&gt;o &lt;strong&gt;rlogin &lt;/strong&gt;e o &lt;strong&gt;SSH&lt;/strong&gt; utilizam servidores distintos), o qual monitora as tentativas de conexão. Quando algum usuário tenta conectar-se, o servidor inicia uma nova instancia de si próprio para controlar esta conexão enquanto o servidor original continua monitorando novas tentativas. As novas instancias funcionam de maneira similar ao getty.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Sistemas de arquivos em Rede (NFS)&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Uma das maiores facilidades disponibilizadas pelos serviços de rede é o compartilhamento de arquivos através de &lt;strong&gt;sistemas de arquivos em rede. &lt;/strong&gt;O mais usado é conhecido como NFS (Network File System), tendo sido desenvolvido pela Sun.&lt;/p&gt;  &lt;p&gt;Com um sistema de arquivos em rede, qualquer operação com arquivos executados por um programa em uma maquina, é enviada pela rede para outro computador. Esse procedimento faz o programa “pensar” que todos os arquivos encontram-se no mesmo equipamento onde ele esta sendo executado. Isto torna o compartilhamento de informações muito simples, já que não requer nenhuma modificação nos programas utilizados.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Correio Eletrônico&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;O correio eletrônico é normalmente o mais importante meio de comunicação entre os usuários. Uma mensagem eletrônica é armazenada em um arquivo, formatada de maneira especial, e programa de correio específicos são utilizados para ler e enviar mensagens.&lt;/p&gt;  &lt;p&gt;Cada usuário tem uma caixa de entrada de mensagens ( um arquivo com um formato especial) onde todas as novas mensagens são armazenadas. Quando alguém envia uma nova mensagem, o programa de correio localiza a caixa do destinatário e adiciona a nova mensagem ao arquivo de mensagens. Caso a caixa de entrada esteja em outra maquina, a mensagem é enviada através da rede para o equipamento que mantem os arquivos de correio do destinatário.&lt;/p&gt;  &lt;p&gt;O sistema de correio é constituído por uma serie de programas. A entrega de mensagens para usuários remotos é realizada por uma programa especifico ( o &lt;strong&gt;agente de transferência de mensagens &lt;/strong&gt;ou&lt;strong&gt; MTA&lt;/strong&gt;, como por exemplo o &lt;strong&gt;sendmail&lt;/strong&gt; ou &lt;strong&gt;qmail&lt;/strong&gt;), enquanto os programas de usuários são também distintos (&lt;strong&gt;agente de correio de usuário MUA,&lt;/strong&gt; por exemplo: pine, elm, evolution). As caixas postais são normalmente armazenadas no diretório /var/spool/mail.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Impressão&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Somente um usuário pode utilizar uma impressora a cada vez, mais seria anti-econômico não compartilhar esse recurso entre os demais usuários da rede. A impressora é gerenciada por um software que implementa o conceito de &lt;strong&gt;fila de impressão: &lt;/strong&gt;todos os trabalhos são colocados em uma fila e todas vez que a impressora finaliza um trabalho de impressão, o seguinte é iniciado automaticamente. Isso evita que os usuários tenham que organizar esta fila ou que haja problemas no controle de uso da impressora.&lt;/p&gt;  &lt;p&gt;O software de fila de impressão também trava os trabalhos de impressão em disco, ou seja os textos são mantidos em um arquivo enquanto estejam na fila de impressão. Isso permite que uma aplicação transfira rapidamente os trabalhos de impressão para o software gerenciador da fila, não tendo que esperar que o trabalho de impressão seja finalizado para continuar a sua execução.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5173052840491277468-7367300255124897720?l=ajmoreti.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajmoreti.blogspot.com/feeds/7367300255124897720/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://ajmoreti.blogspot.com/2011/04/principais-servicos-de-um-sistema-unix.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/7367300255124897720'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/7367300255124897720'/><link rel='alternate' type='text/html' href='http://ajmoreti.blogspot.com/2011/04/principais-servicos-de-um-sistema-unix.html' title='Principais Serviços de um Sistema UNIX'/><author><name>Amilcar de Jesus Moreti</name><uri>http://www.blogger.com/profile/04022310434818885345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://1.bp.blogspot.com/_I4DneDrgUiQ/Sq_P5t7dwtI/AAAAAAAAAFA/mYME8h_xiF4/S220/Imagem0116.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5173052840491277468.post-8844682590380491735</id><published>2011-03-31T16:52:00.001-03:00</published><updated>2011-03-31T16:52:18.015-03:00</updated><title type='text'>Partes importantes do kernel</title><content type='html'>&lt;p&gt;O Kernel do linux é formado por diferentes partes: gerenciador de processos, gerenciador de memória, controle de dispositivos de hardware, controle de sistemas de arquivos, gerenciador de rede e vários outros. A figura abaixo mostra alguns deles.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_I4DneDrgUiQ/TZTba2sEStI/AAAAAAAAAH4/_NIOLo7Ak64/s1600-h/kernel%5B3%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="kernel" border="0" alt="kernel" src="http://lh6.ggpht.com/_I4DneDrgUiQ/TZTbbidXogI/AAAAAAAAAH8/mOTPOpANV5c/kernel_thumb%5B1%5D.png?imgmax=800" width="230" height="196" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Provavelmente as partes mais importantes do kernel ( nada funciona sem elas ) são o gerenciador de memória e o gerenciador de processos. O gerenciador de memória é o responsável pela atribuição de áreas de memoria e áreas de troca (swap) para os processos, para os demais componentes do kernel e para o cache de disco. O gerenciador de processos cria processos e implementa multitarefa através da troca de processos ativos no processador.&lt;/p&gt;  &lt;p&gt;No nível mais baixo, o kernel contem controladores (drives) para cada tipo de hardware suportado. Uma vez que existem inúmeros hardwares, o numero de controladores também é muito grande. A similaridade de funcionalidades permite que se tenham classes de controladores para suportar funções similares, ou seja, cada membro de uma determinada classe de hardwares tem a mesma interface com o resto do kernel, mas diferem somente no que é necessário para implementar as suas características especificas. Por exemplo, todos os discos rígidos parecem iguais para o resto do kernel, isto é, todos tem operações como “inicialize o dispositivo”, “leia o setor N” e “grave o setor N”.&lt;/p&gt;  &lt;p&gt;Alguns serviços de software disponibilizados pelo kernel tem propriedades similares, e podem ser também derivados em classes. Por exemplo, os diversos protocolos de rede foram abstraídos em uma interface de programação, a biblioteca BSD de socket. Outro exemplo é a camada do &lt;strong&gt;sistema virtual de arquivos&lt;/strong&gt;&amp;#160; (VFS), a qual abstrai as operações dos diversos sistemas de arquivos de suas implementações. quando alguma entidade tenta utilizar um sistema de arquivos, a requisição é direcionada ao VFS, o qual a reencaminha para o controlador adequado ao sistema de arquivos solicitado.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5173052840491277468-8844682590380491735?l=ajmoreti.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajmoreti.blogspot.com/feeds/8844682590380491735/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://ajmoreti.blogspot.com/2011/03/partes-importantes-do-kernel.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/8844682590380491735'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/8844682590380491735'/><link rel='alternate' type='text/html' href='http://ajmoreti.blogspot.com/2011/03/partes-importantes-do-kernel.html' title='Partes importantes do kernel'/><author><name>Amilcar de Jesus Moreti</name><uri>http://www.blogger.com/profile/04022310434818885345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://1.bp.blogspot.com/_I4DneDrgUiQ/Sq_P5t7dwtI/AAAAAAAAAFA/mYME8h_xiF4/S220/Imagem0116.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_I4DneDrgUiQ/TZTbbidXogI/AAAAAAAAAH8/mOTPOpANV5c/s72-c/kernel_thumb%5B1%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5173052840491277468.post-3184917010656549325</id><published>2011-03-30T18:11:00.001-03:00</published><updated>2011-03-30T18:11:57.793-03:00</updated><title type='text'>Visão Geral de um Sistema Linux</title><content type='html'>&lt;p&gt;Um sistema operacional UNIX consiste de um &lt;strong&gt;núcleo (kernel) &lt;/strong&gt;e alguns &lt;strong&gt;programas do sistema.&amp;#160; &lt;/strong&gt;Há ainda aplicações que executam diversas tarefas. O kernel é o coração do sistema operacional. Ele mantem o controle dos arquivos em disco, inicializa programas e executa-os de forma concorrente, aloca memória e outros recursos para os diversos processos, recebe e envia pacotes da rede, e assim por diante. O kernel faz muito pouco sozinho, na verdade ele provê ferramentas com as quais os serviços podem ser desenvolvidos. Ele ainda evita que qualquer um possa acessar diretamente os componentes de hardware, forçando o uso das ferramentas disponíveis. Deste modo, o kernel mantem uma certa proteção entre os usuários. As ferramentas disponibilizadas pelo kernel são utilizados através das &lt;strong&gt;chamadas ao sistema (system calls)&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;Os programas de sistema utilizam as ferramentas disponibilizadas pelo kernel para implementar os diversos serviços necessários ao sistema operacional. Programas de sistema e todos os demais programas, são executados ‘sobre o kernel’, o qual é denominado &lt;strong&gt;modo usuário (user mode)&lt;/strong&gt;. a diferença entre programas de sistemas e aplicações esta no seu objetivo: as ultimas visam que coisas uteis sejam realizadas (brincar, caso seja um jogo), enquanto os primeiros são necessários para manter o sistema operacional funcionando. Um editor de texto é uma aplicação, o &lt;strong&gt;telnet&lt;/strong&gt; é um programa de sistema. a diferença é algumas vezes muito pequena, e somente é importante para classificadores compulsivos.&lt;/p&gt;  &lt;p&gt;Um sistema operacional pode ainda conter compiladores e suas bibliotecas correspondentes (gcc e C no caso do Linux), ainda que nem todas as linguagens devam ser parte integrante do sistema operacional. Documentação e até mesmo jogos podem fazer parte. Tradicionalmente o sistema operacional tem sido definido como o conteúdo nos discos de instalação, o que no Linux pode variar bastante, já que ele pode ser encontrado em diversos sites ao redor do mundo.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5173052840491277468-3184917010656549325?l=ajmoreti.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajmoreti.blogspot.com/feeds/3184917010656549325/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://ajmoreti.blogspot.com/2011/03/visao-geral-de-um-sistema-linux.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/3184917010656549325'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/3184917010656549325'/><link rel='alternate' type='text/html' href='http://ajmoreti.blogspot.com/2011/03/visao-geral-de-um-sistema-linux.html' title='Visão Geral de um Sistema Linux'/><author><name>Amilcar de Jesus Moreti</name><uri>http://www.blogger.com/profile/04022310434818885345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://1.bp.blogspot.com/_I4DneDrgUiQ/Sq_P5t7dwtI/AAAAAAAAAFA/mYME8h_xiF4/S220/Imagem0116.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5173052840491277468.post-5041081068639656954</id><published>2011-03-14T15:16:00.001-03:00</published><updated>2011-03-14T15:16:53.195-03:00</updated><title type='text'>Datas de Calendário em Informix</title><content type='html'>&lt;p&gt;Datas de calendário em Banco de Dados Informix são armazenados como inteiros representando o numero de dias corridos desde 31 de dezembro de 1899. Como valores DATE são inteiros, eles podem ser usados em expressões aritméticas. Por exemplo:&lt;/p&gt;  &lt;p&gt;SELECT order_date + 5 FROM orders&lt;/p&gt;  &lt;p&gt;O exemplo acima adiciona cinco dias para cada data do pedido.&lt;/p&gt;  &lt;p&gt;Quando a data é exibida por um servidor de banco de dados IBM Informix, o formato padrão é mm/dd/aaaa. Funções podem ser aplicadas para os valores armazenados em um tipo de dado DATE para modificar o modo de exibição, ou extrair o dia, dia da semana, e assim por diante.&lt;/p&gt;  &lt;p&gt;Os tipos de dados cronológicos adicionais são:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;DATETIME – registra um ponto exato no tempo, com precisão de um ano até uma fração de segundo. Quando você define uma coluna DATETIME. você pode especificar a sua precisão. &lt;/li&gt;    &lt;li&gt;INTERVAL- armazena a medida de tempo entre dois tipos de dados DATETIME. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Algumas das funções relatadas para data e hora são listadas abaixo. Você pode usar essas funções na clausula SELECT ou na clausula WHERE de uma query. Essas funções retornam um valor que corresponde à expressão ou argumentos que você usa para chamar a função.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;DAY (expressão date / datetime) – retorna um valor inteiro que representa o dia do mês. &lt;/li&gt;    &lt;li&gt;MONTH (expressão date / datetime) – retorna um valor inteiro que representa o mês. &lt;/li&gt;    &lt;li&gt;WEEKDAY (expressão date / datetime) – retorna um inteiro que representa o dia da semana (de 0 a 6, onde Domingo é 0 (zero)). &lt;/li&gt;    &lt;li&gt;YEAR (expressão date / datetime) – retorna um inteiro de quatro dígitos que representa o ano. &lt;/li&gt;    &lt;li&gt;DATE (expressão nondate) – retorna um valor DATE que corresponde a uma expressão caractere com a qual você chamou. &lt;/li&gt;    &lt;li&gt;EXTEND (expressão date / datetime, [ primeiro ao ultimo]) – ajusta a precisão do valor DATE ou DATETIME. &lt;/li&gt;    &lt;li&gt;MDY (mês, dia, ano) – retorna um DATE no formato mm/dd/aaaa com o mês, dia e ano informados. &lt;/li&gt;    &lt;li&gt;CURRENT – retorna um valor DATETIME do instante corrente. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Uma expressão date / datetime é uma expressão que corresponde a um valor DATE ou DATETIME.&lt;/p&gt;  &lt;p&gt;Exemplos:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Comparando Datas&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;SELECT customer_num, call_dtime      &lt;br /&gt;FROM cust_calls       &lt;br /&gt;WHERE call_dtime &amp;gt;= ‘2011-03-14’;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;SELECT customer_num, call_dtime      &lt;br /&gt;FROM cust_calls       &lt;br /&gt;WHERE call_dtime &amp;gt;= DATE(‘03/14/2011’)&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;Extraindo o Mês&lt;/strong&gt;     &lt;br /&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;SELECT customer_num, MONTH(call_dtime)      &lt;br /&gt;FROM cust_calls&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;As funções TODAY e CURRENT&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font color="#4f81bd"&gt;SELECT customer_num, MONTH(call_dtime) &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font color="#4f81bd"&gt;FROM cust_calls &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font color="#4f81bd"&gt;WHERE MONTH(call_dtime) = MONTH(CURRENT) &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font color="#4f81bd"&gt;AND YEAR(call_dtime) &amp;lt; YEAR(CURRENT);&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font color="#4f81bd"&gt;SELECT customer_num, MONTH(call_dtime) &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font color="#4f81bd"&gt;FROM cust_calls &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font color="#4f81bd"&gt;WHERE MONTH(call_dtime) = MONTH(TODAY) &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font color="#4f81bd"&gt;AND YEAR(call_dtime) &amp;lt; YEAR(TODAY);&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;font color="#4f81bd"&gt;Também as funções TODAY ou CURRENT podem ser usadas para extrair o mês, dia, ano ou dia da semana da data do sistema. Esse exemplo usa a função TODAY e CURRENT para comparar os valores da coluna &lt;em&gt;call_dtime&lt;/em&gt; para o mesmo mês corrente, mas do ano anterior. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#4f81bd"&gt;A função TODAY retorna a data do sistema como um tipo DATE. A função CURRENT retorna o valor como um DATETIME.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#4f81bd"&gt;A função EXTEND&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font color="#4f81bd"&gt;SELECT customer_num call_dtime &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font color="#4f81bd"&gt;FROM cust_calls&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font color="#4f81bd"&gt;SELECT customer_num, EXTEND(call_dtime, month to minute) &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font color="#4f81bd"&gt;FROM cust_calls&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;font color="#4f81bd"&gt;O primeiro exemplo acima retorna os valores de customer_num e call_dtime da tabela cust_calls sem o uso da função EXTEND. no segundo exemplo, a função EXTEND restringe os valores DATETIME da coluna call_dtime da tabela cust_calls exibindo somente os sub-campos especificados, de um mês ate minuto. Note que o ano não é retornado nesse exemplo.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#4f81bd"&gt;A função TO_CHAR&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font color="#4f81bd"&gt;SELECT TO_CHAR(call_dtime, ‘%A %B %d %Y %R’) &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font color="#4f81bd"&gt;FROM cust_calls&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;font color="#4f81bd"&gt;A função TO_CHAR converte um valor DATE ou DATETIME para uma sequencia de caractere. A sequencia de caracteres contem a data no formato requisitado. Se você omitir todos os símbolos de formato, o formato padrão de data é usado.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;   &lt;table border="0" cellspacing="0" cellpadding="2" width="497"&gt;&lt;tbody&gt;       &lt;tr&gt;&lt;font color="#4f81bd"&gt;&lt;/font&gt;&lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;   &lt;table border="0" cellspacing="0" cellpadding="2" width="497"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="70"&gt;           &lt;p&gt;&lt;strong&gt;&lt;font color="#4f81bd"&gt;Símbolo:&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="425"&gt;           &lt;p&gt;&lt;strong&gt;&lt;font color="#4f81bd"&gt;Faixa de caractere retornada:&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="70"&gt;           &lt;p&gt;&lt;font color="#4f81bd"&gt;%A&lt;/font&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="425"&gt;           &lt;p&gt;&lt;font color="#4f81bd"&gt;Nome completo do dia da semana&lt;/font&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="70"&gt;           &lt;p&gt;&lt;font color="#4f81bd"&gt;%B&lt;/font&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="425"&gt;           &lt;p&gt;&lt;font color="#4f81bd"&gt;Nome completo do mês&lt;/font&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="70"&gt;           &lt;p&gt;&lt;font color="#4f81bd"&gt;%d&lt;/font&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="425"&gt;           &lt;p&gt;&lt;font color="#4f81bd"&gt;Dia do mês como um decimal&lt;/font&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="70"&gt;           &lt;p&gt;&lt;font color="#4f81bd"&gt;%m&lt;/font&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="425"&gt;           &lt;p&gt;&lt;font color="#4f81bd"&gt;Mês como um decimal&lt;/font&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="70"&gt;           &lt;p&gt;&lt;font color="#4f81bd"&gt;%Y&lt;/font&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="425"&gt;           &lt;p&gt;&lt;font color="#4f81bd"&gt;Ano como um decimal de 4 dígitos&lt;/font&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="70"&gt;           &lt;p&gt;&lt;font color="#4f81bd"&gt;%R&lt;/font&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="425"&gt;           &lt;p&gt;&lt;font color="#4f81bd"&gt;Hora do dia no formato de 24 horas&lt;/font&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;   &lt;table border="0" cellspacing="0" cellpadding="2" width="497"&gt;&lt;tbody&gt;       &lt;tr&gt;&lt;font color="#4f81bd"&gt;&lt;/font&gt;&lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;&lt;font color="#4f81bd"&gt;Nota: A função TO_CHAR foi introduzida com o IDS 7.3&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#4f81bd"&gt;A função TO_DATE&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font color="#4f81bd"&gt;SELECT * FROM cust_calls &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font color="#4f81bd"&gt;WHERE call_dtime = TO_DATE(‘2011-03-14 14:56’,’%Y-%m-%d %H:%M’)&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;font color="#4f81bd"&gt;A função TO_DATE converte uma sequencia de caracteres para um valor DATETIME. A sequencia de caracteres é convertida de acordo como o formato especificado. Os símbolos de formato para a função TO_CHAR pode ser usados, bem como:&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;   &lt;table border="0" cellspacing="0" cellpadding="2" width="400"&gt;&lt;tbody&gt;       &lt;tr&gt;&lt;font color="#4f81bd"&gt;&lt;/font&gt;&lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;   &lt;table border="0" cellspacing="0" cellpadding="2" width="400"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="80"&gt;           &lt;p&gt;&lt;strong&gt;&lt;font color="#4f81bd"&gt;Símbolo:&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="320"&gt;           &lt;p&gt;&lt;strong&gt;&lt;font color="#4f81bd"&gt;Faixa de caractere retornada:&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="80"&gt;           &lt;p&gt;&lt;font color="#4f81bd"&gt;%H&lt;/font&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="320"&gt;           &lt;p&gt;&lt;font color="#4f81bd"&gt;Numero de horas&lt;/font&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="80"&gt;           &lt;p&gt;&lt;font color="#4f81bd"&gt;%M&lt;/font&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="320"&gt;           &lt;p&gt;&lt;font color="#4f81bd"&gt;Numero de minutos&lt;/font&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;   &lt;table border="0" cellspacing="0" cellpadding="2" width="400"&gt;&lt;tbody&gt;       &lt;tr&gt;&lt;font color="#4f81bd"&gt;&lt;/font&gt;&lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;&lt;font color="#4f81bd"&gt;Se você omitir o formato, o formato padrão do DATETIME é usado para converter a expressão.&lt;/font&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5173052840491277468-5041081068639656954?l=ajmoreti.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajmoreti.blogspot.com/feeds/5041081068639656954/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://ajmoreti.blogspot.com/2011/03/datas-de-calendario-em-informix.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/5041081068639656954'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/5041081068639656954'/><link rel='alternate' type='text/html' href='http://ajmoreti.blogspot.com/2011/03/datas-de-calendario-em-informix.html' title='Datas de Calendário em Informix'/><author><name>Amilcar de Jesus Moreti</name><uri>http://www.blogger.com/profile/04022310434818885345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://1.bp.blogspot.com/_I4DneDrgUiQ/Sq_P5t7dwtI/AAAAAAAAAFA/mYME8h_xiF4/S220/Imagem0116.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5173052840491277468.post-4334041382347170149</id><published>2011-03-11T10:56:00.003-03:00</published><updated>2011-03-11T12:23:15.893-03:00</updated><title type='text'>UNIQUE ou DISTINCT?</title><content type='html'>Use DISTINCT ou UNIQUE para exigir que as colunas em que o índice baseia-se aceitar apenas os dados únicos. Se você não especificar a palavra-chave UNIQUE ou DISTINCT, o índice vai permitir valores duplicados nas colunas indexadas ( ou um conjunto de colunas indexadas). O exemplo abaixo cria um índice único:&lt;br /&gt;&lt;pre&gt;&lt;span style="color: #333333; font-family: Verdana;"&gt;CREATE UNIQUE INDEX c_num_ix ON customer (customer_num)&lt;/span&gt;&lt;/pre&gt;Um índice único impede valores duplicados na coluna &lt;b&gt;customer_num&lt;/b&gt;. A coluna com um índice único pode ter, no máximo, um valor NULL.&lt;br /&gt;&lt;br /&gt;A palavra-chave DISTINCT e UNIQUE são sinônimos neste contexto, a declaração abaixo tem o mesmo efeito da declaração acima:&lt;br /&gt;&lt;pre&gt;&lt;span style="color: #333333; font-family: Verdana;"&gt;CREATE DISTINCT INDEX c_num_ix ON customer (customer_num)&lt;/span&gt;&lt;/pre&gt;Os índices em ambos os exemplos é mantida em ordem ascendente, qual é a ordem padrão.&lt;br /&gt;&lt;br /&gt;Você também pode evitar dados duplicados em uma coluna ou um conjunto de colunas criando um UNIQUE CONSTRAINT com a declaração CREATE TABLE ou ALTER TABLE.&lt;br /&gt;&lt;br /&gt;Em uma Query você pode evitar as linhas duplicadas de dados no resultado retornado incluindo a palavra-chave DISTINCT, ou o seu sinônimo UNIQUE, em seu comando SELECT. UNIQUE é uma extensão do IBM Informix para o padrão ANSI.&lt;br /&gt;&lt;br /&gt;Quando você usa a palavra-chave DISTINCT ou UNIQUE, você deve coloca-la imediatamente apos o comando SELECT, no inicio de seleção. Ele é aplicado para toda a linha.&lt;br /&gt;&lt;br /&gt;A palavra-chave DISTINCT ou UNIQUE, suprime os valores duplicados.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5173052840491277468-4334041382347170149?l=ajmoreti.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajmoreti.blogspot.com/feeds/4334041382347170149/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://ajmoreti.blogspot.com/2011/03/unique-ou-distinct.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/4334041382347170149'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/4334041382347170149'/><link rel='alternate' type='text/html' href='http://ajmoreti.blogspot.com/2011/03/unique-ou-distinct.html' title='UNIQUE ou DISTINCT?'/><author><name>Amilcar de Jesus Moreti</name><uri>http://www.blogger.com/profile/04022310434818885345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://1.bp.blogspot.com/_I4DneDrgUiQ/Sq_P5t7dwtI/AAAAAAAAAFA/mYME8h_xiF4/S220/Imagem0116.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5173052840491277468.post-2859094814539930724</id><published>2011-03-09T14:28:00.001-03:00</published><updated>2011-03-09T14:28:12.265-03:00</updated><title type='text'>Usando Expressões Regulares no SquidGuard</title><content type='html'>&lt;p&gt;Nunca será possível adicionar todas as paginas que deseja bloquear pelos arquivos &lt;em&gt;domains&lt;/em&gt; e &lt;em&gt;url&lt;/em&gt;.&amp;#160; Para alcançar um nível maior de segurança podemos usar o &lt;em&gt;expressionlists&lt;/em&gt;.     &lt;br /&gt;Em uma &lt;em&gt;expressionlist&lt;/em&gt; podemos entrar com palavras que provavelmente não se encontram em partes nos &lt;em&gt;domains&lt;/em&gt; e &lt;em&gt;urls&lt;/em&gt;. Cada &lt;em&gt;domains&lt;/em&gt; e &lt;em&gt;url&lt;/em&gt;&amp;#160; serão comparados com as entradas encontradas em &lt;em&gt;expressionlist&lt;/em&gt;.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Atenção: &lt;/b&gt;Somente use o &lt;em&gt;expressionlist&lt;/em&gt; se você tem certeza que não se enquadram em sites inocentes. Além disso o uso dessas listas podem impactar na performance do sistema.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;b&gt;Adicionando listas de expressões na configuração.        &lt;br /&gt;&lt;/b&gt;Listas de Expressões são incluídas na tag &lt;em&gt;dest&lt;/em&gt;. O exemplo abaixo mostra como fica o arquivo de configuração do squidGuad:       &lt;br /&gt;      &lt;br /&gt;Usando a lista de expressões para bloquear porn       &lt;br /&gt;      &lt;br /&gt;dest porn {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; domainlist&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; porn/domains       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; urllist&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; porn/urls       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; expressionlist&amp;#160;&amp;#160; porn/expressions       &lt;br /&gt;}       &lt;br /&gt;Podemos adicionar a lista de expressões para cada destino definido (lembre-se: Performance!). SquidGuard procura pelo arquivo de expressões definido em &lt;em&gt;dbhome&lt;/em&gt;.       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;b&gt;Sintaxe das listas de expressões        &lt;br /&gt;&lt;/b&gt;O formato do arquivo &lt;em&gt;expressionlist&lt;/em&gt; são linhas com expressões regulares:       &lt;br /&gt;      &lt;br /&gt;      &lt;table border="0" cellspacing="0" cellpadding="2" width="400"&gt;&lt;tbody&gt;         &lt;tr&gt;           &lt;td valign="top" width="31"&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;/td&gt;            &lt;td valign="top" width="369"&gt;             &lt;p style="margin-right: 0px" dir="ltr" align="left"&gt;Corresponde a qualquer caracter (use “\.” para corresponder a um “.”)&lt;/p&gt;           &lt;/td&gt;         &lt;/tr&gt;          &lt;tr&gt;           &lt;td valign="top" width="31"&gt;&lt;strong&gt;[abc]&lt;/strong&gt;&lt;/td&gt;            &lt;td valign="top" width="369"&gt;Corresponde a um dos caracteres (“[abc]” corresponde a um dos caracteres “a” ou “b” ou “c”).&lt;/td&gt;         &lt;/tr&gt;          &lt;tr&gt;           &lt;td valign="top" width="31"&gt;&lt;strong&gt;[c-g]&lt;/strong&gt;&lt;/td&gt;            &lt;td valign="top" width="369"&gt;Corresponde a um dos caracteres no range (“[c-g]” corresponde a um dos caracteres “c” ou “d” ou “e” ou “f” ou “g”.              &lt;br /&gt;”[a-z0-9]” corresponde a qualquer letra ou digito.               &lt;br /&gt;”[-/.:?]” corresponde a um único “-“ ou “/” ou “.” ou “:” ou “?”).&lt;/td&gt;         &lt;/tr&gt;          &lt;tr&gt;           &lt;td valign="top" width="31"&gt;&lt;strong&gt;?&lt;/strong&gt;&lt;/td&gt;            &lt;td valign="top" width="369"&gt;Nenhum ou um dos anteriores (“words?” corresponderá “word” e “words”              &lt;br /&gt;”[abc]?” corresponderá há “a” ou “b” ou “c” ou nada (“”))&lt;/td&gt;         &lt;/tr&gt;          &lt;tr&gt;           &lt;td valign="top" width="31"&gt;&lt;strong&gt;*&lt;/strong&gt;&lt;/td&gt;            &lt;td valign="top" width="369"&gt;Nenhum ou mais das anteriores (“words*” corresponderá há “word”, “words” e “wordssssss”. “.*” correspondera a qualquer coisa incluindo nada)&lt;/td&gt;         &lt;/tr&gt;          &lt;tr&gt;           &lt;td valign="top" width="31"&gt;&lt;strong&gt;+&lt;/strong&gt;&lt;/td&gt;            &lt;td valign="top" width="369"&gt;Um ou mais das anteriores (“xxx+” correspondera a uma sequencia de 3 ou mais “x”).&lt;/td&gt;         &lt;/tr&gt;          &lt;tr&gt;           &lt;td valign="top" width="31"&gt;&lt;strong&gt;(expr1|expr2)&lt;/strong&gt;&lt;/td&gt;            &lt;td valign="top" width="369"&gt;Uma das expressões. Uma expressão similar (“(foo|bar)” correspondera há “foo” ou “bar”.              &lt;br /&gt;”(foo|bar)?” correspondera a “foo” ou “bar” ou nada (“”)).&lt;/td&gt;         &lt;/tr&gt;          &lt;tr&gt;           &lt;td valign="top" width="31"&gt;&lt;strong&gt;$&lt;/strong&gt;&lt;/td&gt;            &lt;td valign="top" width="369"&gt;Final da linha (“(foo|bar)$” correspondera a “foo” ou “bar” somente no final da linha.&lt;/td&gt;         &lt;/tr&gt;          &lt;tr&gt;           &lt;td valign="top" width="31"&gt;&lt;strong&gt;\x&lt;/strong&gt;&lt;/td&gt;            &lt;td valign="top" width="369"&gt;Desativar o significado especial de x, where x é caráter especial em regex “.?*+()^$[]{}\” (“\.” correspondera a um unico “.”, “\\” a um unico “\”, etc…)&lt;/td&gt;         &lt;/tr&gt;       &lt;/tbody&gt;&lt;/table&gt;      &lt;div align="justify"&gt;&amp;#160; &lt;br /&gt;&lt;/div&gt;   &lt;/li&gt; &lt;/ol&gt;  &lt;p align="justify"&gt;As entradas para as listas de expressões são &lt;em&gt;cleartext&lt;/em&gt;. Assim, um começo para bloquear um possivel material sexual, corresponde à expressão poderia parecer:&lt;/p&gt;  &lt;p align="justify"&gt;(^|[-\?+=/_])(bondage|boobs?|busty?|hardcore|porno?|sex|xxx+)([-\?+=/_]|$)&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;até mais.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5173052840491277468-2859094814539930724?l=ajmoreti.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajmoreti.blogspot.com/feeds/2859094814539930724/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://ajmoreti.blogspot.com/2011/03/usando-expressoes-regulares-no.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/2859094814539930724'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/2859094814539930724'/><link rel='alternate' type='text/html' href='http://ajmoreti.blogspot.com/2011/03/usando-expressoes-regulares-no.html' title='Usando Expressões Regulares no SquidGuard'/><author><name>Amilcar de Jesus Moreti</name><uri>http://www.blogger.com/profile/04022310434818885345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://1.bp.blogspot.com/_I4DneDrgUiQ/Sq_P5t7dwtI/AAAAAAAAAFA/mYME8h_xiF4/S220/Imagem0116.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5173052840491277468.post-1874755894179550650</id><published>2011-02-18T15:34:00.001-02:00</published><updated>2011-02-18T15:34:27.813-02:00</updated><title type='text'>Configuração Básica com squidGuard</title><content type='html'>&lt;blockquote&gt;   &lt;p align="justify"&gt;Neste artigo não vou abordar a instalação do squidGuard e sim a configuração do squidguard.conf. Depois do squidGuard instalado com sucesso, você pode configurar o software de acordo com suas necessidades. abaixo alguns exemplos de configurações básicas.&lt;/p&gt;    &lt;p align="justify"&gt;1. Uma configuração simples: uma categoria, uma regra para todos.&lt;/p&gt;    &lt;table border="1" cellspacing="0" cellpadding="2" width="442"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="440"&gt;&lt;font color="#000000"&gt;#             &lt;br /&gt;# Arquivo de Configuração para o squidGuard              &lt;br /&gt;#              &lt;br /&gt;dbhome&amp;#160; /var/lib/squidGuard/db              &lt;br /&gt;logdir&amp;#160;&amp;#160;&amp;#160;&amp;#160; /var/log/squidGuard              &lt;br /&gt;              &lt;br /&gt;dest porno {              &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; domainlist&amp;#160;&amp;#160; blacklist/domains              &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; urllist&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; blacklist/urls              &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }              &lt;br /&gt;acl {              &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; default {              &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; pass !porno all              &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; redirect http://10.0.1.8/block.html              &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }              &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt;&lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt;    &lt;p&gt;As entradas tem o seguinte significado:&lt;/p&gt;    &lt;table border="0" cellspacing="0" cellpadding="2" width="444"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="167"&gt;dbhome&lt;/td&gt;          &lt;td valign="top" width="275"&gt;Local onde se encontra os arquivos de controle, por exemplo (blacklist ou whitelist);&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="167"&gt;logdir&lt;/td&gt;          &lt;td valign="top" width="275"&gt;Local onde serão armazenados os arquivos de logs.&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="167"&gt;dest&lt;/td&gt;          &lt;td valign="top" width="275"&gt;Definição das categorias. Nessas categorias você pode definir os arquivos arquivos com domínios, urls e expressões regulares.&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="167"&gt;acl&lt;/td&gt;          &lt;td valign="top" width="275"&gt;Definições de bloqueios. Em nosso exemplo somente&amp;#160; a acl &lt;em&gt;default&lt;/em&gt; foi definida. Você pode definir mais que uma acl. A categoria &lt;em&gt;porno&lt;/em&gt; que definimos em &lt;em&gt;dest&lt;/em&gt; é bloqueada pela expressão &lt;em&gt;!porno&lt;/em&gt;. Temos que adicionar o identificador all depois dos blocklist ou os usuários não conseguirão navegar.            &lt;br /&gt;A diretiva redirect é mandatória, o squid mostrará um html avisando sobre o aviso do bloqueio.&lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt;    &lt;p&gt;2. Bloqueando mais de uma categoria:&lt;/p&gt;    &lt;p&gt;Primeiro defina as categorias, como fizemos anteriormente, por exemplo: definindo 3 categorias&lt;/p&gt;    &lt;table border="1" cellspacing="0" cellpadding="2" width="400"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="400"&gt;           &lt;p&gt;&lt;font color="#000000"&gt;dest ads&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; domainlist&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; blacklists/ads/domains                &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; urllist&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; blacklists/ads/urls                &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt;&lt;/p&gt;            &lt;p&gt;&lt;font color="#000000"&gt;dest agressivo&amp;#160; {               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; domainlist&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; blacklists/aggressive/domains                &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; urllist&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; blacklists/aggressive/urls                &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt;&lt;/p&gt;            &lt;p&gt;&lt;font color="#000000"&gt;dest aud-vid&amp;#160;&amp;#160;&amp;#160; {               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; domainlist&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; blacklists/audio-video/domains                &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; urllist&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; blacklists/audio-video/urls                &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }                &lt;br /&gt;&lt;/font&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt;    &lt;p&gt;Agora veja como fica a acl&lt;/p&gt;    &lt;table border="1" cellspacing="0" cellpadding="2" width="400"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="400"&gt;&lt;font color="#000000"&gt;acl {             &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; default {              &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; pass !ads !agressivo !aud-vid all              &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#000000"&gt;redirect http://10.0.1.8/block.html               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }                &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt;    &lt;p&gt;3. Whitelist&lt;/p&gt;    &lt;p&gt;&lt;font color="#5588aa"&gt;As vezes é necessario liberar determinados sites&lt;/font&gt;, em corporações é normal a liberação de sites de bancos por exemplo.&lt;/p&gt;   &lt;font color="#000000"&gt;     &lt;table border="1" cellspacing="0" cellpadding="2" width="400"&gt;&lt;tbody&gt;         &lt;tr&gt;           &lt;td valign="top" width="400"&gt;&lt;font color="#000000"&gt;dest bancos {               &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; domainlist&amp;#160;&amp;#160; whitelist/bancos/domains                &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; urllist&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; whitelist/bancos/urls                &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }                &lt;br /&gt;acl {                &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; default {                &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; pass bancos &lt;font color="#000000"&gt;!ads !agressivo !aud-vid all                 &lt;br /&gt;&lt;/font&gt;all                &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; redirect http://10.0.1.8/block.html                &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }                &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt; &lt;/td&gt;         &lt;/tr&gt;       &lt;/tbody&gt;&lt;/table&gt;           &lt;font color="#4f81bd"&gt;No exemplo acima nos assumimos que a whitelist esta localizada no diretório whitelist e determinamos um subdiretório bancos e tambem repare que nao usamos a exclamação para negar nesse caso.&lt;/font&gt;&lt;/font&gt;&lt;/blockquote&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5173052840491277468-1874755894179550650?l=ajmoreti.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajmoreti.blogspot.com/feeds/1874755894179550650/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://ajmoreti.blogspot.com/2011/02/configuracao-basica-com-squidguard.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/1874755894179550650'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/1874755894179550650'/><link rel='alternate' type='text/html' href='http://ajmoreti.blogspot.com/2011/02/configuracao-basica-com-squidguard.html' title='Configuração Básica com squidGuard'/><author><name>Amilcar de Jesus Moreti</name><uri>http://www.blogger.com/profile/04022310434818885345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://1.bp.blogspot.com/_I4DneDrgUiQ/Sq_P5t7dwtI/AAAAAAAAAFA/mYME8h_xiF4/S220/Imagem0116.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5173052840491277468.post-3836518814983686321</id><published>2010-11-29T11:59:00.001-02:00</published><updated>2010-11-29T11:59:48.063-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Unix'/><title type='text'>Como utilizar o zypper com o OpenSuSE</title><content type='html'>&lt;p&gt;&lt;strong&gt;Instalando e removendo software&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Para instalar um pacote registrado no repositorio use:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;font color="#333333"&gt;mozart:/etc/samba # zypper install samba-doc       &lt;br /&gt;Loading repository data...        &lt;br /&gt;Reading installed packages...        &lt;br /&gt;Resolving package dependencies...&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;font color="#333333"&gt;The following NEW package is going to be installed:       &lt;br /&gt;&amp;#160; samba-doc&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;font color="#333333"&gt;1 new package to install.       &lt;br /&gt;Overall download size: 13.3 MiB. After the operation, additional 24.2 MiB will be used.        &lt;br /&gt;Continue? [y/n/?] (y): y        &lt;br /&gt;Retrieving package samba-doc-3.4.3-3.6.1.noarch (1/1), 13.3 MiB (24.2 MiB unpacked)        &lt;br /&gt;Retrieving: samba-doc-3.4.3-3.6.1.noarch.rpm [done (82.1 KiB/s)]        &lt;br /&gt;Installing: samba-doc-3.4.3-3.6.1 [done]        &lt;br /&gt;mozart:/etc/samba #        &lt;br /&gt;&lt;/font&gt;&lt;/em&gt;&lt;em&gt;&lt;font color="#333333"&gt;&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Para remover um pacote instalado use:&lt;/p&gt;  &lt;p&gt;&lt;font color="#333333"&gt;&lt;em&gt;mozart:/etc/samba # zypper remove augeas-lenses       &lt;br /&gt;Loading repository data...        &lt;br /&gt;Reading installed packages...        &lt;br /&gt;Resolving package dependencies...&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#333333"&gt;&lt;em&gt;The following package is going to be REMOVED:       &lt;br /&gt;&amp;#160; augeas-lenses&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#333333"&gt;&lt;em&gt;1 package to remove.       &lt;br /&gt;After the operation, 151.0 KiB will be freed.        &lt;br /&gt;Continue? [y/n/?] (y): y        &lt;br /&gt;Removing augeas-lenses-0.5.0-2.2 [done]        &lt;br /&gt;There are some running programs that use files deleted by recent upgrade. You may wish to restart some of them. Run 'zypper ps' to list these programs.        &lt;br /&gt;mozart:/etc/samba #&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Atualizando Pacotes:&lt;/p&gt;  &lt;p&gt;Há duas maneiras de atualizar os pacotes com zypper. Para atualizar todas as correções oficiais, rode o comando abaixo:&lt;/p&gt;  &lt;p&gt;&lt;font color="#333333"&gt;&lt;em&gt;mozart:/etc/samba # zypper update&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;nesse caso, todos os patches que estão disponiveis no repositorio serao verificados e instalados, se necessario.&lt;/p&gt;  &lt;p&gt;Para à atualização de um único pacote, rode o comando abaixo:&lt;/p&gt;  &lt;p&gt;&lt;font color="#333333"&gt;&lt;em&gt;mozart:/etc/samba # zypper update aaa_base       &lt;br /&gt;Loading repository data...        &lt;br /&gt;Reading installed packages...        &lt;br /&gt;Resolving package dependencies...&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#333333"&gt;&lt;em&gt;The following package is going to be upgraded:       &lt;br /&gt;&amp;#160; aaa_base&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#333333"&gt;&lt;em&gt;1 package to upgrade.       &lt;br /&gt;Overall download size: 148.0 KiB. No additional space will be used or freed after the operation.        &lt;br /&gt;Continue? [y/n/?] (y): y        &lt;br /&gt;&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#333333"&gt;&lt;em&gt;Retrieving package aaa_base-11.2-43.46.1.x86_64 (1/1), 148.0 KiB (319.0 KiB unpacked)       &lt;br /&gt;Retrieving delta: ./rpm/x86_64/aaa_base-11.2-43.45.1_43.46.1.x86_64.delta.rpm, 93.0 KiB        &lt;br /&gt;Retrieving: aaa_base-11.2-43.45.1_43.46.1.x86_64.delta.rpm [done (8.9 KiB/s)]        &lt;br /&gt;Applying delta: ./aaa_base-11.2-43.45.1_43.46.1.x86_64.delta.rpm [done]        &lt;br /&gt;Installing: aaa_base-11.2-43.46.1 [done]        &lt;br /&gt;Additional rpm output:        &lt;br /&gt;insserv: warning: script 'K01bilogix' missing LSB tags and overrides        &lt;br /&gt;insserv: warning: script 'bilogix' missing LSB tags and overrides        &lt;br /&gt;Updating etc/sysconfig/language...        &lt;br /&gt;Updating etc/sysconfig/backup...        &lt;br /&gt;Updating etc/sysconfig/boot...        &lt;br /&gt;Updating etc/sysconfig/kernel...        &lt;br /&gt;Updating etc/sysconfig/suseconfig...        &lt;br /&gt;Updating etc/sysconfig/clock...        &lt;br /&gt;Updating etc/sysconfig/proxy...        &lt;br /&gt;Updating etc/sysconfig/windowmanager...        &lt;br /&gt;Updating etc/sysconfig/sysctl...        &lt;br /&gt;Updating etc/sysconfig/cron...        &lt;br /&gt;Updating etc/sysconfig/news...        &lt;br /&gt;Updating etc/sysconfig/shutdown...        &lt;br /&gt;Updating etc/passwd...unchanged        &lt;br /&gt;Updating etc/group...unchanged        &lt;br /&gt;Updating etc/shadow...unchanged        &lt;br /&gt;insserv: warning: script 'K01bilogix' missing LSB tags and overrides        &lt;br /&gt;insserv: warning: script 'bilogix' missing LSB tags and overrides&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&lt;font color="#333333"&gt;&lt;em&gt;There are some running programs that use files deleted by recent upgrade. You may wish to restart some of them. Run 'zypper ps' to list these programs.&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#333333"&gt;&lt;em&gt;mozart:/etc/samba #&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Para verificar os pacotes de atualizacao no repositorio registrado, verifique com o comando abaixo:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;font color="#333333"&gt;mozart:/etc/samba # zypper list-updates       &lt;br /&gt;Loading repository data...        &lt;br /&gt;Reading installed packages...        &lt;br /&gt;S | Repository&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; | Name&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; | Current Version | Available Version | Arch        &lt;br /&gt;--+----------------------+-------------------------------------+-----------------+-------------------+-------        &lt;br /&gt;v | openSUSE-11.2-Update | aria2&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; | 1.5.2-2.3.1&amp;#160;&amp;#160;&amp;#160;&amp;#160; | 1.9.3-0.1.1&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; | x86_64        &lt;br /&gt;v | openSUSE-11.2-Update | autofs&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; | 5.0.4-6.1&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; | 5.0.4-6.2.1&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; | x86_64        &lt;br /&gt;v | openSUSE-11.2-Update | bash&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; | 4.0-18.3&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; | 4.0-18.4.1&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; | x86_64        &lt;br /&gt;v | openSUSE-11.2-Update | bash-doc&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; | 4.0-18.3&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; | 4.0-18.4.1&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; | x86_64        &lt;br /&gt;v | openSUSE-11.2-Update | bzip2&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; | 1.0.5-36.6&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; | 1.0.5-36.7.1&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; | x86_64        &lt;br /&gt;v | openSUSE-11.2-Update | cifs-mount&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; | 3.4.2-1.1.3.1&amp;#160;&amp;#160; | 3.4.3-3.6.1&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; | x86_64        &lt;br /&gt;v | openSUSE-11.2-Update | cpio&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; | 2.10-4.2&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; | 2.10-4.3.1&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; | x86_64        &lt;br /&gt;v | openSUSE-11.2-Update | cron&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; | 4.1-195.196.1&amp;#160;&amp;#160; | 4.1-195.197.1&amp;#160;&amp;#160;&amp;#160;&amp;#160; | x86_64        &lt;br /&gt;v | openSUSE-11.2-Update | cups&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; | 1.3.11-4.1&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; | 1.3.11-4.5.1&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; | x86_64        &lt;br /&gt;v | openSUSE-11.2-Update | cups-client&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; | 1.3.11-4.1&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; | 1.3.11-4.5.1&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; | x86_64        &lt;br /&gt;v | openSUSE-11.2-Update | cups-libs&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; | 1.3.11-4.1&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; | 1.3.11-4.5.1&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; | x86_64        &lt;br /&gt;v | openSUSE-11.2-Update | desktop-translations&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; | 11.2-11.13.1&amp;#160;&amp;#160;&amp;#160; | 11.2-11.16.1&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; | noarch        &lt;br /&gt;v | openSUSE-11.2-Update | device-mapper&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; | 1.02.31-11.2&amp;#160;&amp;#160;&amp;#160; | 1.02.31-11.3.1&amp;#160;&amp;#160;&amp;#160; | x86_64        &lt;br /&gt;v | openSUSE-11.2-Update | dhcpcd&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; | 3.2.3-47.2&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; | 3.2.3-47.4.1&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; | x86_64        &lt;br /&gt;v | openSUSE-11.2-Update | ethtool&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; | 6-79.2&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; | 6-79.3.1&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; | x86_64        &lt;br /&gt;v | openSUSE-11.2-Update | findutils&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; | 4.4.0-46.2&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; | 4.4.0-46.3.1&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; | x86_64        &lt;br /&gt;v | openSUSE-11.2-Update | freetype2&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; | 2.3.9-2.2&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; | 2.3.9-2.4.1&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; | x86_64        &lt;br /&gt;&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5173052840491277468-3836518814983686321?l=ajmoreti.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajmoreti.blogspot.com/feeds/3836518814983686321/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://ajmoreti.blogspot.com/2010/11/como-utilizar-o-zypper-com-o-opensuse.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/3836518814983686321'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/3836518814983686321'/><link rel='alternate' type='text/html' href='http://ajmoreti.blogspot.com/2010/11/como-utilizar-o-zypper-com-o-opensuse.html' title='Como utilizar o zypper com o OpenSuSE'/><author><name>Amilcar de Jesus Moreti</name><uri>http://www.blogger.com/profile/04022310434818885345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://1.bp.blogspot.com/_I4DneDrgUiQ/Sq_P5t7dwtI/AAAAAAAAAFA/mYME8h_xiF4/S220/Imagem0116.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5173052840491277468.post-1228128803214695071</id><published>2010-11-23T11:59:00.001-02:00</published><updated>2010-11-23T11:59:08.767-02:00</updated><title type='text'>onstat–b (Mostra informações do buffer em uso)</title><content type='html'>&lt;p&gt;Use a opção &lt;strong&gt;onstat -b&lt;/strong&gt; para exibir informações do buffers que estão em uso, incluindo o número total de páginas residentes na área de buffer.&lt;/p&gt;  &lt;p&gt;Sintaxe:&lt;/p&gt;  &lt;p&gt;informix@isis:~&amp;gt; onstat –b&lt;/p&gt;  &lt;p&gt;O número máximo de buffers disponíveis especificado no parâmetro de configuração BUFFERPOOL do ONCONFIG.&lt;/p&gt;  &lt;p&gt;O comando &lt;strong&gt;onstat -b&lt;/strong&gt; também fornece informações resumidas dos número de buffers modificados, o número total de páginas residentes na área de buffer, o numero total de buffer disponível, o numero total de hash buckets disponíveis e o tamanho do buffer em bytes (tamanho da pagina).&lt;/p&gt;  &lt;p&gt;&lt;em&gt;informix@isis:~&amp;gt; onstat -b&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;font color="#9b00d3"&gt;IBM Informix Dynamic Server Version 11.50.FC6WE -- On-Line -- Up 14 days 06:16:07 -- 303184 Kbytes&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;font color="#9b00d3"&gt;Buffers        &lt;br /&gt;address&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; userthread&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; flgs pagenum&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; memaddr&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; nslots pgflgs xflgs owner&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; waitlist&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;font color="#9b00d3"&gt;Buffer pool page size: 2048        &lt;br /&gt;1 modified, 50000 total, 65536 hash buckets, 2048 buffer size&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;informix@isis:~&amp;gt;      &lt;br /&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Nota:&lt;/strong&gt; Informações geradas pelo &lt;strong&gt;onstat –b &lt;/strong&gt;são paginas sendo modificadas por uma thread. Não confundir com paginas usadas.&lt;/p&gt;  &lt;p&gt;O tamanho da pagina é a menor unidade de I/O no sistema e determinada no momento da transferência.&lt;/p&gt;  &lt;p&gt;Atualmente, o campo userthread é sempre 0.&lt;/p&gt;  &lt;p&gt;O numero de hash buckets é a menor potencia de dois no buffers.&lt;/p&gt;  &lt;p&gt;Buffer hash buckets aponta para o buffer headers. Cada buffer header contem um ponteiro para um pagina no buffer que mantem informações sobre o status de paginas lidas e escritas para a pagina de buffer. Haverá um cabeçalho de buffer para cada reserva na área de buffer.&lt;/p&gt;  &lt;p&gt;As chamadas são feitas para determinar a validade das informações contidas na página do buffer para cada I/O executado.&lt;/p&gt;  &lt;p&gt;O número de páginas modificadas se torna zero quando o buffer pool é liberado com um checkpoint ou quando as paginas são limpadas.&lt;/p&gt;  &lt;p&gt;Cada uma das páginas dentro do buffer pool pode ser exibida ao executar o comando &lt;strong&gt;onstat –g dmp&lt;/strong&gt; com o valor &lt;strong&gt;memaddr&lt;/strong&gt; e o &lt;strong&gt;pagesize&lt;/strong&gt; ( exemplo onstat-g dmp 0xa088000 2048).&lt;/p&gt;  &lt;p&gt;Não confundir o bloqueio de uma página da área de buffer com o bloqueio de uma página de banco de dados.&lt;/p&gt;  &lt;p&gt;Páginas dentro da área de buffer será fechada e liberada como páginas (de qualquer tipo) que são lidas do disco e colocada no buffer.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5173052840491277468-1228128803214695071?l=ajmoreti.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajmoreti.blogspot.com/feeds/1228128803214695071/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://ajmoreti.blogspot.com/2010/11/onstatb-mostra-informacoes-do-buffer-em.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/1228128803214695071'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/1228128803214695071'/><link rel='alternate' type='text/html' href='http://ajmoreti.blogspot.com/2010/11/onstatb-mostra-informacoes-do-buffer-em.html' title='onstat–b (Mostra informações do buffer em uso)'/><author><name>Amilcar de Jesus Moreti</name><uri>http://www.blogger.com/profile/04022310434818885345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://1.bp.blogspot.com/_I4DneDrgUiQ/Sq_P5t7dwtI/AAAAAAAAAFA/mYME8h_xiF4/S220/Imagem0116.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5173052840491277468.post-8654784671459403216</id><published>2010-09-22T14:47:00.001-03:00</published><updated>2010-09-22T14:47:11.610-03:00</updated><title type='text'>Profissionais Windows x Linha de Comando</title><content type='html'>&lt;p&gt;Interessante esse tema, para ser sincero nem acho que nem tenho condições de estar escrevendo algum artigo para Windows, pois não conheço quase nada, porem tenho vários colegas de profissão que são profissionais em Windows e trabalham com o Mesmo, só que dar uma ênfase aqui, estou falando de profissionais que trabalham com Servidores Windows. &lt;/p&gt;  &lt;p&gt;Pois bem… não é difícil deduzir que sou um profissional especializado no Mundo Unix, HP-UX, Linux, AIX, etc, trabalho com consultoria, a maioria sendo cliente Totvs principalmente aplicado ao sistema Logix, e 99% das consultoria que faço é baseado em sistemas Unix, aconteceu que esses dias um cliente que tem a base em Windows Server me contatou para fazer um serviço em Banco de Dados Informix.&lt;/p&gt;  &lt;p&gt;Bom aceitei o desafio a principio somente auxiliando o responsável pelo sistema, e o auxilio foi no sentido de ajudar a criar uma instancia, dbspaces, chunks, etc,… até ai tudo bem, mas ai me deparei com um problema interessante, para entendermos melhor o problema vou explicar como faço no Unix para resolver isso.&lt;/p&gt;  &lt;p&gt;Quando se cria a instancia no informix o IDS já cria os logical logs dentro do rootdbs, então geralmente, não sendo uma regra, por questão de organização até e performance a gente cria um dbspace e um chunk somente para o logical log:&lt;/p&gt;  &lt;p&gt;# onspaces –a –d llog –p /dblog/llog.000 –o 0 –s 1000106&lt;/p&gt;  &lt;p&gt;e no windows não é diferente:&lt;/p&gt;  &lt;p&gt;# onspaces –a –d llog –p C:\IFMXDATA\tst\llog.000 –o 0 –s 1000212&lt;/p&gt;  &lt;p&gt;muito bem, depois a gente da uma organizada em tudo isso, primeiro criando mais 3 arquivos de logs para o dbspace llog:&lt;/p&gt;  &lt;p&gt;# onparams –a –d llog&lt;/p&gt;  &lt;p&gt;e para o Windows o mesmo procedimento&lt;/p&gt;  &lt;p&gt;depois de criado os 3 logs, então movemos o ponto do logical log e do check point ate os logs que foram criados.&lt;/p&gt;  &lt;p&gt;# onmode –l &lt;/p&gt;  &lt;p&gt;# onmode –c&lt;/p&gt;  &lt;p&gt;muito bem, movidos os ponteiros, entra aqui uma brincadeira em shell script que utilizo muito para simplificar as tarefas, nesse caso para remover os logs do rootdbs&lt;/p&gt;  &lt;p&gt;# for i in `seq 6`   &lt;br /&gt;do    &lt;br /&gt;onparams –d –l $i –y    &lt;br /&gt;done&lt;/p&gt;  &lt;p&gt;esse comando simplesmente remove os 6 primeiros logical logs que estão no rootdbs, simplifica não… &lt;/p&gt;  &lt;p&gt;pois bem…&lt;/p&gt;  &lt;p&gt;depois comento isso para o windows, &lt;/p&gt;  &lt;p&gt;feito isso no linux, o normal é a gente encher agora o chunk criado para os logs de logs, o comando ja passei acima , porem já pensou um chunk de 500.000 paginas, sendo que cada logical log tem o tamanho de 5000 paginas, a gente teria que executar o comando 100 vezes. é ai que entra a linha de comando novamente:&lt;/p&gt;  &lt;p&gt;um exemplo bem simples e rápido&lt;/p&gt;  &lt;p&gt;while true   &lt;br /&gt;do    &lt;br /&gt;onparams –a –d llog    &lt;br /&gt;done;&lt;/p&gt;  &lt;p&gt;na era que começar a dar a mensagem na console de que o chunk esta cheio, simplesmente aperte o ctrl-c para cancelar a execução do script… &lt;/p&gt;  &lt;p&gt;um exemplo mais elaborado&lt;/p&gt;  &lt;p&gt;x=1   &lt;br /&gt;while [ $x != 0 ]    &lt;br /&gt;do    &lt;br /&gt;onparams –a –d llog    &lt;br /&gt;x=`onstat –d |grep tstlog | awk ‘{print $6}’`    &lt;br /&gt;done&lt;/p&gt;  &lt;p&gt;esse script já é mais elaborado, na hora que a coluna do onstat free chegar a 0 quer dizer que ja encheu os logs, então o valor do x vai retornar 0 ao while fazendo que o mesmo aborte o código.&lt;/p&gt;  &lt;p&gt;magico não , isso é o mundo linux.&lt;/p&gt;  &lt;p&gt;Porem retornando ao tema Windows, no atendimento a esse cliente, fiquei pensando e agora como vamos encher o log…&lt;/p&gt;  &lt;p&gt;uma maneira seria fazer na unha, seta para cima e enter… ate encher o log ,mas o Windows não? tem como automatizar a tarefa… ? postei em alguns blog essa duvida, e no máximo o que me responderam foi , cria um arquivo .bat e insira um monte de vez o comando e depois rode o arquivo de lote, sinceramente&amp;#160; acho que foi a pior resposta que ouvi até hoje, porem continuei minha pesquisa no google por dias, e não consegui achar a solução desse problema, e também consultei alguns especialistas em plataforma Microsoft.&lt;/p&gt;  &lt;p&gt;ontem instalando um servidor windows para teste, fiquei ainda pensando … caramba será que não tem maneira de automatizar isso mesmo?&lt;/p&gt;  &lt;p&gt;foi ai que para minha surpresa resolvi digitar um for la no prompt do windows, pode parecer engraçado, mas o windows tem um for, me desculpem os usuários de windows que conhecem, pois eu nao conhecia, e resolvi ler o help do FOR e para minha surpresa, resolvi o primeiro problema…..&lt;/p&gt;  &lt;p&gt;sim removi os 6 primeiros logs no windows com o comando FOR olhem só….&lt;/p&gt;  &lt;p&gt;FOR /L %i IN (1,1,6) DO onparams –d –l %i –y&lt;/p&gt;  &lt;p&gt;magico também, risos.&lt;/p&gt;  &lt;p&gt;ai tinha o segundo problema que na verdade já tinha resolvido o segundo o com o primeiro ficando assim:&lt;/p&gt;  &lt;p&gt;FOR /L %i IN (1,1,97) DO onparams –a –l llog&lt;/p&gt;  &lt;p&gt;problema resolvido, o windows server até que foi interessante nesse caso, resolver um problema via prompt, confesso que para mim foi novidade sim, porem conhecimento adquirido.&lt;/p&gt;  &lt;p&gt;Mas gostaria de destacar a não resolução desse problema pelos profissionais do Windows, eles mesmos não conhecem isso, so sabem mexer em mouse? mau costume……&lt;/p&gt;  &lt;p&gt;abraços a todos e qualquer duvida estou a disposição.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5173052840491277468-8654784671459403216?l=ajmoreti.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajmoreti.blogspot.com/feeds/8654784671459403216/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://ajmoreti.blogspot.com/2010/09/profissionais-windows-x-linha-de.html#comment-form' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/8654784671459403216'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/8654784671459403216'/><link rel='alternate' type='text/html' href='http://ajmoreti.blogspot.com/2010/09/profissionais-windows-x-linha-de.html' title='Profissionais Windows x Linha de Comando'/><author><name>Amilcar de Jesus Moreti</name><uri>http://www.blogger.com/profile/04022310434818885345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://1.bp.blogspot.com/_I4DneDrgUiQ/Sq_P5t7dwtI/AAAAAAAAAFA/mYME8h_xiF4/S220/Imagem0116.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5173052840491277468.post-4928867392489218958</id><published>2010-09-21T12:04:00.001-03:00</published><updated>2010-09-21T12:04:37.946-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Informix'/><title type='text'>Códigos de retorno do utilitário onstat</title><content type='html'>&lt;p&gt;O utilitário onstat exibe um conjunto de códigos de retorno quando você executa o utilitário.&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="611"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="88"&gt;         &lt;p align="center"&gt;&lt;strong&gt;Valor&lt;/strong&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="521"&gt;         &lt;p align="center"&gt;&lt;strong&gt;Descrição&lt;/strong&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="88"&gt;-1&lt;/td&gt;        &lt;td valign="top" width="521"&gt;Inicialização GLS local falhou ou IDS não anexou a memória compartilhada&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="88"&gt;0&lt;/td&gt;        &lt;td valign="top" width="521"&gt;Modo de Inicialização&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="88"&gt;1&lt;/td&gt;        &lt;td valign="top" width="521"&gt;Quiescent mode&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="88"&gt;2&lt;/td&gt;        &lt;td valign="top" width="521"&gt;Recovery mode&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="88"&gt;3&lt;/td&gt;        &lt;td valign="top" width="521"&gt;         &lt;p&gt;Backup mode&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="88"&gt;4&lt;/td&gt;        &lt;td valign="top" width="521"&gt;Shutdown mode&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="88"&gt;5&lt;/td&gt;        &lt;td valign="top" width="521"&gt;Online mode&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="88"&gt;6&lt;/td&gt;        &lt;td valign="top" width="521"&gt;Abort mode&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="88"&gt;7&lt;/td&gt;        &lt;td valign="top" width="521"&gt;User mode&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="88"&gt;255&lt;/td&gt;        &lt;td valign="top" width="521"&gt;         &lt;p&gt;Off-Line mode&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5173052840491277468-4928867392489218958?l=ajmoreti.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajmoreti.blogspot.com/feeds/4928867392489218958/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://ajmoreti.blogspot.com/2010/09/codigos-de-retorno-do-utilitario-onstat.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/4928867392489218958'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/4928867392489218958'/><link rel='alternate' type='text/html' href='http://ajmoreti.blogspot.com/2010/09/codigos-de-retorno-do-utilitario-onstat.html' title='Códigos de retorno do utilitário onstat'/><author><name>Amilcar de Jesus Moreti</name><uri>http://www.blogger.com/profile/04022310434818885345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://1.bp.blogspot.com/_I4DneDrgUiQ/Sq_P5t7dwtI/AAAAAAAAAFA/mYME8h_xiF4/S220/Imagem0116.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5173052840491277468.post-6756270357854531907</id><published>2010-09-06T14:40:00.001-03:00</published><updated>2010-09-06T14:47:21.762-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Informix'/><title type='text'>onstat – : Status do Servidor</title><content type='html'>&lt;p&gt;Todas as saídas &lt;strong&gt;onstat&lt;/strong&gt; inclui um cabeçalho. O comando &lt;strong&gt;onstat -&lt;/strong&gt; exibe apenas o cabeçalho, devolvendo valores que indica o modo do servidor. A primeira parte da saída identifica a versão do Server, a segunda parte identifica o status do server. O status do servidor Informix pode assumir um dos seguintes valores:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;p&gt;Initialization&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;Shutting Down&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;Quiescent&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;OnLine&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;Fast Recovery&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;Abort&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;Archive Backup&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;Unknown&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;Read-Only&lt;/p&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Adicionalmente, o status do servidor pode ser acompanhada de informações secundárias. O valor &lt;strong&gt;(PRIM)&lt;/strong&gt; ou &lt;strong&gt;(SEC)&lt;/strong&gt; será exibido para os sistemas em sistemas de replicação de dados. &lt;strong&gt;(CKPT REQ)&lt;/strong&gt; aparecerá caso haja necessidade; &lt;strong&gt;(CKPT INP)&lt;/strong&gt; aparecerá se um ponto de verificação está em andamento; e &lt;strong&gt;(LONGTX)&lt;/strong&gt; aparecerá caso esteja tendo um ROLL BACK sendo executado.&lt;/p&gt;  &lt;p&gt;E na parte final das informações são fornecidas o tempo que o servidor esta no ar, seguido pelo tamanho total dos segmentos da shared memory (resident + virtual) utilizado pelo servidor em Kbytes. Se o servidor é impedido de realizar qualquer trabalho, a razão é adicionado ao final da linha de status. As possíveis&amp;#160; razões para um sistema de bloqueio são:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;CKPT Checkpoint&lt;/li&gt;    &lt;li&gt;LONGTX Long Transaction&lt;/li&gt;    &lt;li&gt;ARCHIVE Archive Requested Block&lt;/li&gt;    &lt;li&gt;MEDIA_FAILURE DBSpace being marked down&lt;/li&gt;    &lt;li&gt;HANG_SYSTEM Server Requested Block&lt;/li&gt;    &lt;li&gt;DBS_DROP DBSpace is being dropped&lt;/li&gt;    &lt;li&gt;DDR DDR Synchronization&lt;/li&gt;    &lt;li&gt;LBU Prevent Log Backups&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Sintaxe:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;isis:~ # onstat -&lt;/p&gt;  &lt;p&gt;&lt;em&gt;(Version--Mode (Type)--(Checkpnt)--&lt;/em&gt;Up &lt;em&gt;Uptime--Sh_mem&lt;/em&gt; Kbytes)&lt;/p&gt;  &lt;h6&gt;&lt;font color="#800000"&gt;IBM Informix Dynamic Server Version 11.50.FC6WE -- On-Line -- Up 19 days 03:08:27 -- 1310184 Kbytes&lt;/font&gt;&lt;/h6&gt;  &lt;p&gt;&lt;strong&gt;Version:     &lt;br /&gt;&lt;/strong&gt;Nome e a versão do produto&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Mode:     &lt;br /&gt;&lt;/strong&gt;É o modo atual&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Type:     &lt;br /&gt;&lt;/strong&gt;Se o servidor de banco usa HDR, indica se o servidor é primario ou secundario.    &lt;br /&gt;Se o servidor não esta envolvido com HDR, então este campo não contem nada. Se o server é primario então será mostrado o valor &lt;strong&gt;P &lt;/strong&gt;e se for um servidor secundario será exibido o valor &lt;strong&gt;S&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Checkpnt:     &lt;br /&gt;&lt;/strong&gt;Se um flag Checkpnt é definido, poderá então ser mostrado mais 2 valores    &lt;br /&gt;&lt;strong&gt;(CKPT REQ) -&lt;/strong&gt; Indica que um segmento de usuário solicitou um checkpoint    &lt;br /&gt;&lt;strong&gt;(CKPT INP)&lt;/strong&gt; – Indica que um checkpoint esta em progresso. Durante o checkpoint, o acesso é limitado somente para leitura. O Servidor de Banco de Dados não pode escrever ou atualizar dados até que o checkpoint termine.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Uptime:     &lt;br /&gt;&lt;/strong&gt;Indica o tempo que o Servidor de Banco de dados esta rodando.    &lt;br /&gt;Se a hora do sistema é alterado manualmente para uma data posterior da inicialização do banco de dados, o tempo de atividade não estará disponível. Nesta situação será exibido essa mensagem: &lt;samp&gt;Uptime Unavailable&lt;/samp&gt;.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Sh_mem:     &lt;br /&gt;&lt;/strong&gt;È o tamanho do banco de dados na Shared Memory, mostrado em kilobytes&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5173052840491277468-6756270357854531907?l=ajmoreti.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajmoreti.blogspot.com/feeds/6756270357854531907/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://ajmoreti.blogspot.com/2010/09/onstat-status-do-servidor.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/6756270357854531907'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/6756270357854531907'/><link rel='alternate' type='text/html' href='http://ajmoreti.blogspot.com/2010/09/onstat-status-do-servidor.html' title='onstat – : Status do Servidor'/><author><name>Amilcar de Jesus Moreti</name><uri>http://www.blogger.com/profile/04022310434818885345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://1.bp.blogspot.com/_I4DneDrgUiQ/Sq_P5t7dwtI/AAAAAAAAAFA/mYME8h_xiF4/S220/Imagem0116.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5173052840491277468.post-4295128196043695934</id><published>2010-09-03T14:08:00.001-03:00</published><updated>2010-09-03T14:08:23.901-03:00</updated><title type='text'>onstat -d: Comando que mostra informações sobre o chunk</title><content type='html'>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Use o comando &lt;strong&gt;onstat-d&lt;/strong&gt; para mostrar informações sobre os chunks de cada espaço de armazenamento.&lt;/p&gt;  &lt;p&gt;O comando &lt;strong&gt;onstat –d &lt;/strong&gt;fornece uma saída em duas partes. A primeira parte identifica todos os dbspaces numa instancia; a segunda parte identifica todos os chunks associados aos dbspaces da primeira parte.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Sintaxe: &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;onstat –d&lt;/p&gt;  &lt;p&gt;O comando &lt;strong&gt;onstat –d &lt;/strong&gt;fornece uma saída em duas partes. A primeira parte identifica todos os dbspaces numa instancia; a segunda parte identifica todos os chunks associados aos dbspaces da primeira parte.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Usando onstat-d com blobspaces&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Se você usar o comando &lt;strong&gt;onstat-d&lt;/strong&gt; em uma instância com chunks blobspace, o servidor de banco de dados exibira a seguinte mensagem:&lt;/p&gt;  &lt;h6&gt;&lt;font color="#800000"&gt;NOTE: For BLOB chunks, the number of free pages shown is out of date. Run ‘onstat -d update' for current stats.&lt;/font&gt;&lt;/h6&gt;  &lt;p&gt;Para obter estatísticas dos chunks blobspaces atualizadas,&amp;#160; digite o comando &lt;strong&gt;onstat –d update&lt;/strong&gt;. O utilitário &lt;strong&gt;onstat&lt;/strong&gt; atualiza a shared memory com uma contagem exata de páginas livres para cada chunk blobspace.&lt;/p&gt;  &lt;h6&gt;&lt;font color="#800000"&gt;Waiting for server to update BLOB chunk statistics ...&lt;/font&gt;&lt;/h6&gt;  &lt;p&gt;Exemplo do comando&lt;strong&gt; onstat –d:&lt;/strong&gt;&lt;/p&gt;  &lt;h6&gt;&lt;font color="#804000"&gt;IBM Informix Dynamic Server Version 11.50.FC6WE -- On-Line -- Up 14 days 04:47:06 -- 1310184 Kbytes &lt;/font&gt;&lt;/h6&gt;  &lt;h6&gt;&lt;font color="#804000"&gt;Dbspaces&lt;/font&gt;&lt;/h6&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="611"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="66"&gt;&lt;strong&gt;           &lt;h6&gt;&lt;strong&gt;&lt;font color="#804000"&gt;address &lt;/font&gt;&lt;/strong&gt;&lt;/h6&gt;         &lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="60"&gt;         &lt;h6&gt;&lt;strong&gt;&lt;font color="#804000"&gt;number&amp;#160; &lt;/font&gt;&lt;/strong&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="75"&gt;         &lt;h6&gt;&lt;strong&gt;&lt;font color="#804000"&gt;flags&lt;/font&gt;&lt;/strong&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="61"&gt;         &lt;h6&gt;&lt;strong&gt;&lt;font color="#804000"&gt;fchunk&lt;/font&gt;&lt;/strong&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="64"&gt;         &lt;h6&gt;&lt;strong&gt;&lt;font color="#804000"&gt;nchunks&lt;/font&gt;&lt;/strong&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="53"&gt;         &lt;h6&gt;&lt;strong&gt;&lt;font color="#804000"&gt;pgsize &lt;/font&gt;&lt;/strong&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="46"&gt;         &lt;h6&gt;&lt;strong&gt;&lt;font color="#804000"&gt;flags&lt;/font&gt;&lt;/strong&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="51"&gt;         &lt;h6&gt;&lt;strong&gt;&lt;font color="#804000"&gt;owner&lt;/font&gt;&lt;/strong&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;strong&gt;           &lt;h6&gt;&lt;strong&gt;&lt;font color="#804000"&gt;name&lt;/font&gt;&lt;/strong&gt;&lt;/h6&gt;         &lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="66"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;4c4cc028&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="60"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;1 &lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="75"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;0x70001&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="61"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;1&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="64"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;1&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="53"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;2048&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="46"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;N&amp;#160; B&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="51"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;informix&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="133"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;rootdbs&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="66"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;4d53e9d0&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="60"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;2 &lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="75"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;0x70001&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="61"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;2&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="64"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;1&amp;#160;&amp;#160; &lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="53"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;2048&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="46"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;N&amp;#160; B &lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="51"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;informix&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="133"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;plog&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="66"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;4d53eb68&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="60"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;3&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="75"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;0x42001&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="61"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;3&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="64"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;1&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="53"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;2048&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="46"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;N TB&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="51"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;informix&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="133"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;tmp1_tst&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="66"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;4d53ed00&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="60"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;4&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="75"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;0x42001&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="61"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;4&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="64"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;1&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="53"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;2048&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="46"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;N TB&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="51"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;informix&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="133"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;tmp2_tst&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="66"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;4d540028&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="60"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;5&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="75"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;0x42001&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="61"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;5&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="64"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;1&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="53"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;2048&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="46"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;N TB&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="51"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;informix&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="133"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;tmp3_tst&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="66"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;4d5401c0&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="60"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;6&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="75"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;0x60001&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="61"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;6&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="64"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;1&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="53"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;2048&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="46"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;N&amp;#160; B&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="51"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;informix&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="133"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;logicallog&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="66"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;4d540358&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="60"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;7&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="75"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;0x60001&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="61"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;7&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="64"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;1&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="53"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;2048&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="46"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;N&amp;#160; B&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="51"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;informix&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="133"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;crm_tst&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="66"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;4d5404f0&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="60"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;8&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="75"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;0x60001&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="61"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;8&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="64"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;4&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="53"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;2048&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="46"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;N&amp;#160; B&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="51"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;informix&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="133"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;logix_tst&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;h6&gt;&lt;font color="#804000"&gt;8 active, 2047 maximum &lt;/font&gt;&lt;/h6&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="617"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="93"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;Chunks&lt;/font&gt;&lt;/h6&gt;          &lt;h6&gt;&lt;font color="#804000"&gt;address&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="72"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;chunk/dbs&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="45"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;offset&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="71"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;size&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="69"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;free&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="43"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;bpages&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="54"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;flags&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="168"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;pathname&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="93"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;4c4cc1c0&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="72"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;1&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 1&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="45"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;0&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="71"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;150000&amp;#160; &lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="69"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;110158&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="43"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="54"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;P0-B-&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="168"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;/dbtst/dbroots/rootdbs&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="93"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;4d540688&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="72"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;2&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 2&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="45"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;0&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="71"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;500053&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="69"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;0&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="43"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="54"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;P0-B-&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="168"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;/tstlog/pyslog/plog&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="93"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;4d540878&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="72"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;3&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 3&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="45"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;0&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="71"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;250053&amp;#160;&amp;#160; &lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="69"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;249950&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="43"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="54"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;P0-B-&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="168"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;/tsttmp/tmp1_tst&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="93"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;4d540a68&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="72"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;4&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 4&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="45"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;0&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="71"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;250053&amp;#160;&amp;#160; &lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="69"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;249950&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="43"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="54"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;P0-B-&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="168"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;/tsttmp/tmp2_tst&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="93"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;4d540c58&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="72"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;5&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 5&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="45"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;0 &lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="71"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;250053&amp;#160;&amp;#160; &lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="69"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;249950&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="43"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="54"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;P0-B-&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="168"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;/tsttmp/tmp3_tst&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="93"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;4d541028&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="72"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;6&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 6 &lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="45"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;0&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="71"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;1500053&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="69"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;0&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="43"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="54"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;P0-B-&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="168"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;/tstlog/logicallog/llog&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="93"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;4d541218&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="72"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;7&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 7&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="45"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;0&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="71"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;1000053&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="69"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;699914&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="43"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="54"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;P0-B-&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="168"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;/dbtst/crm/crm.01&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="93"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;4d541408&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="72"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;8&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 8&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="45"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;0&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="71"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;2000053&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="69"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;116&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="43"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="54"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;P0-B-&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="168"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;/dbtst/logix/tst.01&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="93"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;4d5415f8&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="72"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;9&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 8 &lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="45"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;0&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="71"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;2000003&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="69"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;90&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="43"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="54"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;P0-B-&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="168"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;/dbtst/logix/tst.02&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="93"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;4d5417e8&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="72"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;10&amp;#160;&amp;#160;&amp;#160;&amp;#160; 8&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="45"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;0&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="71"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;2000003&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="69"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;542310&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="43"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="54"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;P0-B-&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="168"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;/dbtst/logix/tst.03&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="93"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;4d5419d8&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="72"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;11&amp;#160;&amp;#160;&amp;#160;&amp;#160; 8&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="45"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;0&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="71"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;2000003&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="69"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;2000000&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="43"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="54"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;P0-B-&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="168"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;/dbtst/logix/tst.04&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;h6&gt;&lt;font color="#804000"&gt;11 active, 32766 maximum&lt;/font&gt;&lt;/h6&gt;  &lt;h6&gt;&lt;font color="#800000"&gt;NOTE: The values in the “size” and “free” columns for DBspace chunks are      &lt;br /&gt;displayed interms of “pgsizes” of the DBspace to which they belong.&lt;/font&gt;&lt;/h6&gt;  &lt;h6&gt;&lt;font color="#800000"&gt;Expand chunk capacity mode: always&lt;/font&gt;&lt;/h6&gt;  &lt;p&gt;&lt;strong&gt;Descrição dos campos do DBspaces&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;address      &lt;br /&gt;&lt;/strong&gt;É o endereço do dbspace na shared memory.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;number&lt;/strong&gt;     &lt;br /&gt;Número de identificação único do dbspace atribuído na criação.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;flags      &lt;br /&gt;&lt;/strong&gt;Valores hexadecimal usado para descrever cada dbspaces. Cada flag individual descreve o status do dbspace usando os seguintes valores hexadecimais:&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="714"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="108"&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;Valor da Flag&lt;/font&gt;&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="604"&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;Descrição&lt;/font&gt;&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="108"&gt;0x00000000&lt;/td&gt;        &lt;td valign="top" width="604"&gt;Mirror não habilitado e dbspace não espelhado&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="108"&gt;0x00000001&lt;/td&gt;        &lt;td valign="top" width="604"&gt;Mirror habilitado e dbspace não espelhado&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="108"&gt;0x00000002&lt;/td&gt;        &lt;td valign="top" width="604"&gt;Mirror habilitado e dbspace espelhado&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="108"&gt;0x00000004&lt;/td&gt;        &lt;td valign="top" width="604"&gt;Mirror do chunk desabilitado&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="108"&gt;0x00000008&lt;/td&gt;        &lt;td valign="top" width="604"&gt;Mirror Recente&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="108"&gt;0x00000010&lt;/td&gt;        &lt;td valign="top" width="604"&gt;Blobspace&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="108"&gt;0x00000020&lt;/td&gt;        &lt;td valign="top" width="604"&gt;Blobspace em mídias removíveis&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="108"&gt;0x00000040&lt;/td&gt;        &lt;td valign="top" width="604"&gt;Blobspace em mídias óticas&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="108"&gt;0x00000080&lt;/td&gt;        &lt;td valign="top" width="604"&gt;Blobspace dropado&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="108"&gt;0x00000100&lt;/td&gt;        &lt;td valign="top" width="604"&gt;Blobspace é ótico STAGEBLOB&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="108"&gt;0x00000200&lt;/td&gt;        &lt;td valign="top" width="604"&gt;DBspace esta sendo recuperado&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="108"&gt;0x00000400&lt;/td&gt;        &lt;td valign="top" width="604"&gt;DBspace totalmente recuperado&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="108"&gt;0x00000800&lt;/td&gt;        &lt;td valign="top" width="604"&gt;Logical Log esta sendo recuperado&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="108"&gt;0x00001000&lt;/td&gt;        &lt;td valign="top" width="604"&gt;Uma tabela na dbspace esta sendo dropada&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="108"&gt;0x00002000&lt;/td&gt;        &lt;td valign="top" width="604"&gt;DBspace temporário&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="108"&gt;0x00004000&lt;/td&gt;        &lt;td valign="top" width="604"&gt;Blobspace esta sendo backupeado&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="108"&gt;0x00008000&lt;/td&gt;        &lt;td valign="top" width="604"&gt;Sbspace&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="108"&gt;0x00010000&lt;/td&gt;        &lt;td valign="top" width="604"&gt;Physical ou logical log alterado&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="108"&gt;0x00020000&lt;/td&gt;        &lt;td valign="top" width="604"&gt;Dbspace ou chunk tables alterado&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="108"&gt;0x00040000&lt;/td&gt;        &lt;td valign="top" width="604"&gt;         &lt;p&gt;Dbspace ou blobspace contem large chunk&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="108"&gt;0x00080000&lt;/td&gt;        &lt;td valign="top" width="604"&gt;Chunk nesse dbspace foi renomeado&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="108"&gt;0x00100000&lt;/td&gt;        &lt;td valign="top" width="604"&gt;DBspace temporários utilizados apenas em discos compartilhados em outros servidores.É um dos dbspaces listados no parâmetro ONCONFIG SDS_TEMPDBS.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="108"&gt;0x00200000&lt;/td&gt;        &lt;td valign="top" width="604"&gt;DBspace temporários utilizados apenas em discos compartilhados em outros servidores. É um dos dbspaces listados no parâmetro ONCONFIG DBSPACETEMP.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="108"&gt;0x00400000&lt;/td&gt;        &lt;td valign="top" width="604"&gt;O DBspace foi backapeado.&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;strong&gt;fchunk      &lt;br /&gt;&lt;/strong&gt;É o numero de identificação do primeiro chunk da dbspace&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;nchunk      &lt;br /&gt;&lt;/strong&gt;É o numero de chunk existente na dbspace&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;pgsize      &lt;br /&gt;&lt;/strong&gt;É o tamanho da pagina do dbspace em bytes&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;flags      &lt;br /&gt;&lt;/strong&gt;Usa letras em cada posição para descrever cada dbspace&lt;/p&gt;  &lt;p&gt;Posição 1:&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="400"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="56"&gt;&lt;strong&gt;Flag &lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="344"&gt;&lt;strong&gt;Descrição&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="56"&gt;M&lt;/td&gt;        &lt;td valign="top" width="344"&gt;Mirror&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="56"&gt;N&lt;/td&gt;        &lt;td valign="top" width="344"&gt;Não Mirror&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;Posição 2:&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="583"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="56"&gt;&lt;strong&gt;Flag &lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="525"&gt;&lt;strong&gt;Descrição&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="56"&gt;X&lt;/td&gt;        &lt;td valign="top" width="525"&gt;Mirror criado recente&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="56"&gt;P&lt;/td&gt;        &lt;td valign="top" width="525"&gt;physical recuperado aguardando pela recuperação do Logical Log&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="56"&gt;L&lt;/td&gt;        &lt;td valign="top" width="525"&gt;Logical esta sendo recuperado&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="56"&gt;R&lt;/td&gt;        &lt;td valign="top" width="525"&gt;Sendo recuperado&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="56"&gt;D&lt;/td&gt;        &lt;td valign="top" width="525"&gt;Down&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;Posição 3:&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="659"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="56"&gt;&lt;strong&gt;Flag &lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="601"&gt;&lt;strong&gt;Descrição&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="56"&gt;B&lt;/td&gt;        &lt;td valign="top" width="601"&gt;Blobspace&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="56"&gt;S&lt;/td&gt;        &lt;td valign="top" width="601"&gt;Sbspace&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="56"&gt;T&lt;/td&gt;        &lt;td valign="top" width="601"&gt;DBspace temporária&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="56"&gt;U&lt;/td&gt;        &lt;td valign="top" width="601"&gt;SBspace temporária&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="56"&gt;W&lt;/td&gt;        &lt;td valign="top" width="601"&gt;DBspace temporário no server primário (Esta flag só é mostrada no server secundário)&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;Posição 4:&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="402"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="56"&gt;&lt;strong&gt;Flag &lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="344"&gt;&lt;strong&gt;Descrição&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="56"&gt;B&lt;/td&gt;        &lt;td valign="top" width="344"&gt;O Dbspace tem chunks maiores que 2GB&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;strong&gt;Owner      &lt;br /&gt;&lt;/strong&gt;Proprietário do DBspace&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Name      &lt;br /&gt;&lt;/strong&gt;Nome do DBspace&lt;/p&gt;  &lt;p&gt;Na linha a seguir da lista dos dbspaces:    &lt;br /&gt;&lt;strong&gt;active:&lt;/strong&gt; Numero de dbspaces sendo utilizando no momento pela instancia incluindo o rootdbs     &lt;br /&gt;&lt;strong&gt;Maximum:&lt;/strong&gt; refere-se ao numero máximo de DBspaces que a instância suporta.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Descrição dos campos dos Chunks&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;address      &lt;br /&gt;&lt;/strong&gt;É o endereço do chunk&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;chunk/dbs      &lt;br /&gt;&lt;/strong&gt;É o numero do chunk associado ao numero do dbspace&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;offset      &lt;br /&gt;&lt;/strong&gt;É o numero do offset do Chunk criado&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;size      &lt;br /&gt;&lt;/strong&gt;Tamanho do total do chunk, esse numero é em paginas.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;free      &lt;br /&gt;&lt;/strong&gt;O número de páginas livres no chunk.     &lt;br /&gt;Para um blobspace, indica o números de paginas livres aproximado&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;bpages      &lt;br /&gt;&lt;/strong&gt;Tamanho do total do chunk em blobpages.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;flags      &lt;br /&gt;&lt;/strong&gt;Prove informações de status dos chunks.&lt;/p&gt;  &lt;p&gt;Posição 1:&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="402"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="56"&gt;&lt;strong&gt;Flag &lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="344"&gt;&lt;strong&gt;Descrição&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="56"&gt;P&lt;/td&gt;        &lt;td valign="top" width="344"&gt;Primário&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="56"&gt;M&lt;/td&gt;        &lt;td valign="top" width="344"&gt;Mirror&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;Posição 2:&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="402"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="56"&gt;&lt;strong&gt;Flag &lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="344"&gt;&lt;strong&gt;Descrição&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="56"&gt;N&lt;/td&gt;        &lt;td valign="top" width="344"&gt;Renomeado e requer inicialização ou inconsistente&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="56"&gt;O&lt;/td&gt;        &lt;td valign="top" width="344"&gt;Online&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="56"&gt;D&lt;/td&gt;        &lt;td valign="top" width="344"&gt;Down&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="56"&gt;X&lt;/td&gt;        &lt;td valign="top" width="344"&gt;Mirror criado recentemente&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="56"&gt;I&lt;/td&gt;        &lt;td valign="top" width="344"&gt;Inconsistente&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Posição 3:&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="402"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="56"&gt;&lt;strong&gt;Flag &lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="344"&gt;&lt;strong&gt;Descrição&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="56"&gt;- &lt;/td&gt;        &lt;td valign="top" width="344"&gt;DBspace&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="56"&gt;B&lt;/td&gt;        &lt;td valign="top" width="344"&gt;Blobspace&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="56"&gt;S&lt;/td&gt;        &lt;td valign="top" width="344"&gt;Smart Blobspace&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;Posição 4:&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="402"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="56"&gt;&lt;strong&gt;Flag &lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="344"&gt;&lt;strong&gt;Descrição&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="56"&gt;B&lt;/td&gt;        &lt;td valign="top" width="344"&gt;O chunk tem suporte acima de 2GB&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;Posição 5:&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="402"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="56"&gt;&lt;strong&gt;Flag &lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="344"&gt;&lt;strong&gt;Descrição&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="56"&gt;-&lt;/td&gt;        &lt;td valign="top" width="344"&gt;Não utiliza direct I/O ou os I/O concorrentes estão em cooked&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="56"&gt;C&lt;/td&gt;        &lt;td valign="top" width="344"&gt;No AIX ®, usando&amp;#160; I/O concorrendo em cooked&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="56"&gt;D&lt;/td&gt;        &lt;td valign="top" width="344"&gt;Direto I/O&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;strong&gt;pathname      &lt;br /&gt;&lt;/strong&gt;é o caminho dos chunks nos dispositivos físicos.&lt;/p&gt;  &lt;p&gt;Na linha abaixo das visualizações dos chunks:   &lt;br /&gt;&lt;strong&gt;active:&lt;/strong&gt; Numero de chunk sendo utilizando no momento pela instancia incluindo o rootdbs     &lt;br /&gt;&lt;strong&gt;Maximum:&lt;/strong&gt; refere-se ao numero máximo de chunks a instância suporta.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5173052840491277468-4295128196043695934?l=ajmoreti.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajmoreti.blogspot.com/feeds/4295128196043695934/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://ajmoreti.blogspot.com/2010/09/onstat-d-comando-que-mostra-informacoes.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/4295128196043695934'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5173052840491277468/posts/default/4295128196043695934'/><link rel='alternate' type='text/html' href='http://ajmoreti.blogspot.com/2010/09/onstat-d-comando-que-mostra-informacoes.html' title='onstat -d: Comando que mostra informações sobre o chunk'/><author><name>Amilcar de Jesus Moreti</name><uri>http://www.blogger.com/profile/04022310434818885345</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://1.bp.blogspot.com/_I4DneDrgUiQ/Sq_P5t7dwtI/AAAAAAAAAFA/mYME8h_xiF4/S220/Imagem0116.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5173052840491277468.post-9046102705343135708</id><published>2010-09-01T16:17:00.001-03:00</published><updated>2010-09-01T16:17:15.639-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Informix'/><title type='text'>Comando onstat</title><content type='html'>&lt;p&gt;O utilitário &lt;strong&gt;onstat&lt;/strong&gt; lê estruturas de memória compartilhada e fornece estatísticas sobre o servidor de banco de dados no momento em que o comando é executado.&lt;/p&gt;  &lt;p&gt;Você pode combinar várias opção em um único comando. O utilitário &lt;strong&gt;onstat&lt;/strong&gt; não coloca lock na shared memory para executar o utilitário e não afeta o desempenho&lt;/p&gt;  &lt;h3&gt;&lt;strong&gt;onstat-D:&lt;/strong&gt; &lt;/h3&gt;  &lt;p&gt;Imprima ler e gravar informações de página&lt;/p&gt;  &lt;p&gt;Mostra informações de leituras e gravação das paginas.&lt;/p&gt;  &lt;p&gt;Sintaxe:&lt;/p&gt;  &lt;p&gt;onstat –D&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Exemplo:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;isis:~ # onstat -D&lt;/p&gt;  &lt;h6&gt;&lt;font color="#804000"&gt;IBM Informix Dynamic Server Version 11.50.FC6WE -- On-Line -- Up 14 days 04:47:06 -- 1310184 Kbytes &lt;/font&gt;&lt;/h6&gt;  &lt;h6&gt;&lt;font color="#804000"&gt;Dbspaces&lt;/font&gt;&lt;/h6&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="611"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="66"&gt;&lt;strong&gt;           &lt;h6&gt;&lt;strong&gt;&lt;font color="#804000"&gt;address &lt;/font&gt;&lt;/strong&gt;&lt;/h6&gt;         &lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="60"&gt;         &lt;h6&gt;&lt;strong&gt;&lt;font color="#804000"&gt;number&amp;#160; &lt;/font&gt;&lt;/strong&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="75"&gt;         &lt;h6&gt;&lt;strong&gt;&lt;font color="#804000"&gt;flags&lt;/font&gt;&lt;/strong&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="61"&gt;         &lt;h6&gt;&lt;strong&gt;&lt;font color="#804000"&gt;fchunk&lt;/font&gt;&lt;/strong&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="64"&gt;         &lt;h6&gt;&lt;strong&gt;&lt;font color="#804000"&gt;nchunks&lt;/font&gt;&lt;/strong&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="53"&gt;         &lt;h6&gt;&lt;strong&gt;&lt;font color="#804000"&gt;pgsize &lt;/font&gt;&lt;/strong&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="46"&gt;         &lt;h6&gt;&lt;strong&gt;&lt;font color="#804000"&gt;flags&lt;/font&gt;&lt;/strong&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="51"&gt;         &lt;h6&gt;&lt;strong&gt;&lt;font color="#804000"&gt;owner&lt;/font&gt;&lt;/strong&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;strong&gt;           &lt;h6&gt;&lt;strong&gt;&lt;font color="#804000"&gt;name&lt;/font&gt;&lt;/strong&gt;&lt;/h6&gt;         &lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="66"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;4c4cc028&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="60"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;1 &lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="75"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;0x70001&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="61"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;1&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="64"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;1&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="53"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;2048&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="46"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;N&amp;#160; B&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="51"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;informix&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="133"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;rootdbs&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="66"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;4d53e9d0&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="60"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;2 &lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="75"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;0x70001&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="61"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;2&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="64"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;1&amp;#160;&amp;#160; &lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="53"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;2048&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="46"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;N&amp;#160; B &lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="51"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;informix&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="133"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;plog&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="66"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;4d53eb68&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="60"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;3&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="75"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;0x42001&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="61"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;3&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="64"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;1&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="53"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;2048&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="46"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;N TB&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="51"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;informix&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="133"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;tmp1_tst&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="66"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;4d53ed00&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="60"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;4&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="75"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;0x42001&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="61"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;4&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="64"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;1&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="53"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;2048&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="46"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;N TB&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="51"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;informix&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="133"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;tmp2_tst&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="66"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;4d540028&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="60"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;5&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="75"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;0x42001&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="61"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;5&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="64"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;1&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="53"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;2048&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="46"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;N TB&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="51"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;informix&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="133"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;tmp3_tst&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="66"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;4d5401c0&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="60"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;6&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="75"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;0x60001&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="61"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;6&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="64"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;1&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="53"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;2048&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="46"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;N&amp;#160; B&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="51"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;informix&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="133"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;logicallog&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="66"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;4d540358&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="60"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;7&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="75"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;0x60001&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="61"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;7&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="64"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;1&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="53"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;2048&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="46"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;N&amp;#160; B&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="51"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;informix&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="133"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;crm_tst&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="66"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;4d5404f0&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="60"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;8&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="75"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;0x60001&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="61"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;8&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="64"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;4&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="53"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;2048&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="46"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;N&amp;#160; B&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="51"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;informix&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="133"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;logix_tst&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;h6&gt;&lt;font color="#804000"&gt;8 active, 2047 maximum &lt;/font&gt;&lt;/h6&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="607"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="83"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;Chunks&lt;/font&gt;&lt;/h6&gt;          &lt;h6&gt;&lt;font color="#804000"&gt;address&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="75"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;chunk/dbs&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="40"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;offset&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="89"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;page Rd&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="78"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;page Wr&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="240"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;pathname&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="83"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;4c4cc1c0&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="75"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;1&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 1&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="40"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;0&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="89"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;304763&amp;#160;&amp;#160; &lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="78"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;234297&amp;#160;&amp;#160; &lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="240"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;/dbtst/dbroots/rootdbs&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="83"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;4d540688&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="75"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;2&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 2&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="40"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;0&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="89"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;4 &lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="78"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;794344&amp;#160;&amp;#160; &lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="240"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;/tstlog/pyslog/plog&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="83"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;4d540878&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="75"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;3&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 3&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="40"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;0&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="89"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;350420&amp;#160;&amp;#160; &lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="78"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;381160&amp;#160;&amp;#160; &lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="240"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;/tsttmp/tmp1_tst&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="83"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;4d540a68&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="75"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;4&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 4&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="40"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;0&lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="89"&gt;         &lt;h6&gt;&lt;font color="#804000"&gt;340538&amp;#160;&amp;#160; &lt;/font&gt;&lt;/h6&gt;       &lt;/td&gt;        &lt;td valign="top" width="78"&gt;         &lt;h6&gt;&lt;font color="#804000
