Compartilhando conhecimento com o mundo

Com tecnologia do Blogger.

Pesquisa

Download

Blogger Tricks

Blogger Themes

Visitas

Assuntos

11/25/2013

Como evitar privilégios na tabela padrão concedidos para PUBLIC - Informix


O usuário mandou criar uma tabela e dar a permissão de select public, depois de criar a tabela com a permissão fui checar e descobri que as permissões (delete, insert e update) estavam liberadas também mais como isso pode ocorrer? Vou simular o que ocorreu e mostrar duas soluções para este problema, primeiro vamos criar uma tabela com a permissão de select public (somente)
SQL:   New  Run  Modify  Use-editor  Output  Choose  Save  Info  Drop  Exit
Run the current SQL statements.
----------------------- dw_sig@sefaz_sig ------- Press CTRL-W for Help --------

drop table nl2020 ;

CREATE TABLE dba.nl2020 (
     conta              DECIMAL(9,0),
     ug_id              DECIMAL(6,0),
     gestao_id          DECIMAL(5,0),
     data_lanc          DATE,
     num_doc            VARCHAR(11),
     evento             DECIMAL(6),
     qdd                DECIMAL(4),
     ug_ident           DECIMAL(6),
     gestao_ident       DECIMAL(5),
     dt_emis            DATE,
     dc                 VARCHAR(1),
     valor              FLOAT,
     insc_evento        VARCHAR(22),
     observacao         CHAR(231)
     );

grant select on "dba".nl2020 to "public" as "dba";
Checando as permissões dessa tabela o public esta liberado pra tudo - não deveria;
-------------------------------------------------------------------------------------------------
25/11/2013                      ***** INFORMIX BASIC SERVICES *****                      15:13:01
-------------------------------------------------------------------------------------------------

grant select on "dba".nl2020 to "public" as "dba";
grant update on "dba".nl2020 to "public" as "dba";
grant insert on "dba".nl2020 to "public" as "dba";
grant delete on "dba".nl2020 to "public" as "dba";
grant index on "dba".nl2020 to "public" as "dba";

Pressione qualquer tecla para continuar...
Solução 1

Criando desse jeito dá certo
SQL:   New  Run  Modify  Use-editor  Output  Choose  Save  Info  Drop  Exit
Run the current SQL statements.
----------------------- dw_sig@sefaz_sig ------- Press CTRL-W for Help --------
CREATE TABLE dba.nl2020 (    
     conta              DECIMAL(9,0),
     ug_id              DECIMAL(6,0),
     gestao_id          DECIMAL(5,0),
     data_lanc          DATE,
     num_doc            VARCHAR(11),
     evento             DECIMAL(6),
     qdd                DECIMAL(4),
     ug_ident           DECIMAL(6),
     gestao_ident       DECIMAL(5),
     dt_emis            DATE,
     dc                 VARCHAR(1),
     valor              FLOAT,
     insc_evento        VARCHAR(22),
     observacao         CHAR(231)
     );

revoke all on "dba".nl2020 from "public" as "dba";

grant select on "dba".nl2020 to "public" as "dba";
Ela fica com essas permissões corretas
-------------------------------------------------------------------------------------------------
25/11/2013                      ***** INFORMIX BASIC SERVICES *****                      15:13:01
-------------------------------------------------------------------------------------------------

grant select on "dba".nl2020 to "public" as "dba";

Pressione qualquer tecla para continuar...
Solução 2

Adicionando esta variável de ambiente
[s343:informix]$/opt/informix64/etc> export NODEFDAC=yes
Executando o script que vai criar a tabela e dando a permissão de grant select
SQL:   New  Run  Modify  Use-editor  Output  Choose  Save  Info  Drop  Exit
Run the current SQL statements.
----------------------- dw_sig@sefaz_sig ------- Press CTRL-W for Help --------
CREATE TABLE dba.nl2020 (    
     conta              DECIMAL(9,0),
     ug_id              DECIMAL(6,0),
     gestao_id          DECIMAL(5,0),
     data_lanc          DATE,
     num_doc            VARCHAR(11),
     evento             DECIMAL(6),
     qdd                DECIMAL(4),
     ug_ident           DECIMAL(6),
     gestao_ident       DECIMAL(5),
     dt_emis            DATE,
     dc                 VARCHAR(1),
     valor              FLOAT,
     insc_evento        VARCHAR(22),
     observacao         CHAR(231)
     );

grant select on "dba".nl2020 to "public" as "dba";
Ficou assim a permissão, correta
-------------------------------------------------------------------------------------------------
25/11/2013                      ***** INFORMIX BASIC SERVICES *****                      15:13:01
-------------------------------------------------------------------------------------------------

grant select on "dba".nl2020 to "public" as "dba";

Pressione qualquer tecla para continuar...
A variável de ambiente NODEFDAC, quando definido como YES, impede o public de receber automaticamente esses privilégios no nível de tabela.

Referencia1 - Referencia2

11/24/2013

Horário de Verão - Informix


Desde que comecei a trabalhar com bancos de dados (Adabas mainframe e bancos relacionais como Informix e Oracle) uma das coisas que eu sempre checava as documentações de cada banco (ou acionava o suporte para tirar a duvida) era a mudanças no horário de verão. Este post tem como finalidade tornar-se um guia rápido de como configurar o ambiente operacional Linux em um banco de dados Informix para suportar o ajuste de horário no período do horário de verão (DST - Daylight Saving Time) para o Informix 11.70.

Vou dividir este post em três seções, a primeira sessão vai ser como configurar o sistema operacional para alternar para o novo horário de verão e a segunda sessão é a mais crítico (mais não complicada) que será no Informix e a terceira sessão é uma rápida ideia de como funciona a troca do horário de verão em outros bancos de dados.

Sistema Operacional

Não se esqueça de executar esses comandos como root, digitando su antes de começar, se estiver usando o CentOS, ou sudo antes de cada comando se estiver usando Ubuntu ou Linux Mint. No caso do Debian e do Fedora, não me lembro se já vem com senha de root ou com sudo definido.
#FAZENDO BACKUP DO ARQUIVO QUE DEFINE A HORA DO SISTEMA
cp /etc/localtime /etc/localtime_bkp
 
#COPIANDO ARQUIVO REFERENTE AO TIMEZONE DE SAO PAULO, COM HORARIO DE VERAO
cp /usr/share/zoneinfo/America/Sao_Paulo /etc/localtime
 
#ATUALIZANDO A HORA
ntpdate br.pool.ntp.org pool.ntp.org
Banco de Dados

Como esta mudança de horário ocorre a noite o dba tem que observar esses procedimentos;
0. Avise os analistas  para não deixar rodar nada deles no horário que o banco vai sair.
1. Se o update statistic roda neste horario mude ou não rode neste dia ela;
2. Se o backup passa das 00:00 horas mude ele de horário;
Tirando e voltando o banco no domingo dia da mudança da hora;
# Tirando o banco do ar;
onmode -ky
# Como o horário de verão (-1) depois de 15 minutos com o banco fora volto ele;
oninit -v
Observação

No banco de dados Informix não tem problema é com a mudança da hora, para sincronizar é só tirar e voltar que ele esta sincronizado o problema esta nas aplicações, neste caso os analistas tem que dizer se duas 23 horas (quando acaba o horário de verão) pode realmente comprometer a aplicação;

11/22/2013

Upgrade do Informix


Esta versão esta rodando no meu micro (Wmware) como faz um bom tempo que não uso ela vou fazer o upgrade, depois do upgrade removi do meu micro esta imagem da VM.

A versão antiga
IBM Informix Dynamic Server Version 11.70.UC4DE
Vai ser atualizado para a versão
Informix Ultimate Edition 11.70.UC5
Detalhes do banco
root@informixva[demo_on]:/home/informix# onstat -g dis
shared memory not initialized for INFORMIXSERVER 'demo_on'
There are 1 servers found
Server        : demo_on
Server Number : 0
Server Type   : IDS
Server Status : Down
Server Version: IBM Informix Dynamic Server Version 11.70.UC4DE
Shared Memory : 0x44000000
INFORMIXDIR   : /opt/IBM/informix
ONCONFIG      : /opt/IBM/informix/etc/onconfig.demo_on
SQLHOSTS      : /data/IBM/informix/etc/sqlhosts.demos
Host          : informixva
Tirando o banco, renomeando a partição antiga dos binarios do informix
informix@informixva[demo_on]:~$ onmode -yulck
informix@informixva[demo_on]:~$ onstat -
shared memory not initialized for INFORMIXSERVER 'demo_on'
informix@informixva[demo_on]:~$
informix@informixva[demo_on]:~$ su root
root@informixva[demo_on]:/home/informix# cd /opt/IBM/informix
root@informixva[demo_on]:/opt/IBM/informix# cd ..
root@informixva[demo_on]:/opt/IBM# ls
AE  docs  DS2.2  informix  InstallationManager  OpenAdmin  SDPShared
root@informixva[demo_on]:/opt/IBM# mv /opt/IBM/informix /opt/IBM/informix_antigo
root@informixva[demo_on]:/opt/IBM#
Criando o link simbolico, descompactando e iniciando a instalação
root@informixva[demo_on]:/opt/IBM# mkdir informix_11.70.UC5
root@informixva[demo_on]:/opt/IBM# chown informix:informix informix_11.70.UC5
root@informixva[demo_on]:/opt/IBM# ln -s informix_11.70.UC5 informix
root@informixva[demo_on]:/opt/IBM# chown informix:informix informix
root@informixva[demo_on]:/opt/IBM# cd informix
root@informixva[demo_on]:/opt/IBM/informix# cp /home/informix/ULTIMATE_ED_11.70.UC5_LINUX_X86.tar .
root@informixva[demo_on]:/opt/IBM/informix#
root@informixva[demo_on]:/opt/IBM/informix# tar -xvf ULTIMATE_ED_11.70.UC5_LINUX_X86.tar
root@informixva[demo_on]:/opt/IBM/informix# rm ULTIMATE_ED_11.70.UC5_LINUX_X86.tar
root@informixva[demo_on]:/opt/IBM/informix#./ids_install
Tela abaixo - Digitei Enter (para continuar a instalação)
===============================================================================
Getting started with IBM Informix Software Bundle
-------------------------------------------------

InstallAnywhere will guide you through the installation of IBM Informix
Software Bundle.

Copyright IBM Corporation 1996, 2012. All rights reserved.

1. Release Notes
The Release Notes can be found in
/opt/IBM/informix_11.70.UC5/SERVER/doc/ids_unix_relnotes_11.70.html

2. Installation Guide
Please view the Installation / Quick Beginnings Guide at
/opt/IBM/informix_11.70.UC5/SERVER/doc/ids_unix_installg_11.70.pdf

3. Launch Information Center
Access the IDS 11.70 Information Center at
http://publib.boulder.ibm.com/infocenter/idshelp/v117/index.jsp

To Begin Installation,
Respond to each prompt to proceed to the next step in the installation.
If you want to change something on a previous step, type 'back'.

You may cancel this installation at any time by typing 'quit'.

PRESS  TO CONTINUE:
Tela abaixo - Digitei 1 (aceito os termos)
International Program License Agreement
    
    Part 1 - General Terms
    
    BY DOWNLOADING, INSTALLING, COPYING, ACCESSING, CLICKING ON AN
    "ACCEPT" BUTTON, OR OTHERWISE USING THE PROGRAM, LICENSEE AGREES TO
    THE TERMS OF THIS AGREEMENT. IF YOU ARE ACCEPTING THESE TERMS ON
    BEHALF OF LICENSEE, YOU REPRESENT AND WARRANT THAT YOU HAVE FULL
    AUTHORITY TO BIND LICENSEE TO THESE TERMS. IF YOU DO NOT AGREE TO
    THESE TERMS,
    
    - DO NOT DOWNLOAD, INSTALL, COPY, ACCESS, CLICK ON AN "ACCEPT" BUTTON,
    OR USE THE PROGRAM; AND
    
    - PROMPTLY RETURN THE UNUSED MEDIA, DOCUMENTATION, AND PROOF OF
    ENTITLEMENT TO THE PARTY FROM WHOM IT WAS OBTAINED FOR A REFUND OF THE
    AMOUNT PAID. IF THE PROGRAM WAS DOWNLOADED, DESTROY ALL COPIES OF THE
    PROGRAM.
    

Press Enter to continue viewing the license agreement, or enter "1" to
   accept the agreement, "2" to decline it, "3" to print it, or "99" to go back
   to the previous screen.:
Tela abaixo - Digitei 1 (instalando)
Installation Goals
------------------

What do you want to accomplish?

  ->1- Install products and features
    2- Extract the product files (-DLEGACY option)
    3- Create an RPM image for redistribution

ENTER THE NUMBER FOR YOUR CHOICE, OR PRESS  TO ACCEPT THE DEFAULT::
Tela abaixo - (o endereço esta correto) - Enter
Installation Location
---------------------

Choose location for software installation

  Default Install Folder: /opt/IBM/informix

ENTER AN ABSOLUTE PATH, OR PRESS  TO ACCEPT THE DEFAULT
      :
Tela abaixo - (Não quero criar uma instancia) 2 Enter
Installation Type
-----------------

Select the installation type.

Typical: Install the database server with all features and a database server that
is configured with default values. Includes:
** Client Software Development Kit (CSDK)
** Java Database Connectivity (JDBC)
Minimum disk space required: 700-800MB

Custom: Install the database server with specific features and software that you need.
Optionally install a configured database server instance.
Minimum disk space required: 75 MB (without a server instance)

  ->1- Typical
    2- Custom

ENTER THE NUMBER FOR YOUR CHOICE, OR PRESS  TO ACCEPT THE DEFAULT::
Tela abaixo - Digitei 1 Enter
International License Agreement for Non-Warranted Programs
    
    Part 1 - General Terms
    
    BY DOWNLOADING, INSTALLING, COPYING, ACCESSING, CLICKING ON AN
    "ACCEPT" BUTTON, OR OTHERWISE USING THE PROGRAM, LICENSEE AGREES TO
    THE TERMS OF THIS AGREEMENT. IF YOU ARE ACCEPTING THESE TERMS ON
    BEHALF OF LICENSEE, YOU REPRESENT AND WARRANT THAT YOU HAVE FULL
    AUTHORITY TO BIND LICENSEE TO THESE TERMS. IF YOU DO NOT AGREE TO
    THESE TERMS,
    
    * DO NOT DOWNLOAD, INSTALL, COPY, ACCESS, CLICK ON AN "ACCEPT" BUTTON,
    OR USE THE PROGRAM; AND
    
    * PROMPTLY RETURN THE UNUSED MEDIA AND DOCUMENTATION TO THE PARTY FROM
    WHOM IT WAS OBTAINED FOR A REFUND OF THE AMOUNT PAID. IF THE PROGRAM
    WAS DOWNLOADED, DESTROY ALL COPIES OF THE PROGRAM.
    
    1. Definitions

Press Enter to continue viewing the license agreement, or enter "1" to
   accept the agreement, "2" to decline it, "3" to print it, or "99" to go back
   to the previous screen.:
Tela abaixo - Digitei Enter
Installation Summary
--------------------

Please review the following before continuing:

Product Name:
    IBM Informix Software Bundle

Install Folder:
    /opt/IBM/informix

Product Features:
    IBM Informix database server,
    Base Server,
    Extensions and tools,
    J/Foundation,
    Database extensions,
    Conversion and reversion support,
    XML publishing,
    Demonstration database scripts,
    Enterprise Replication,
    Data loading utilities,
    onunload and onload utilities,
    dbload utility,
    High-Performance Loader,
    Backup and Restore,
    archecker utility,
    ON-Bar utility,
    Informix Storage Manager,
    Informix interface to Tivoli Storage Manager,
    Administrative utilities,
    Performance monitoring utilities,
    Miscellaneous monitoring utilities,
    Auditing utilities,
    Database import and export utilities,
    IBM Informix Client SDK,
    IBM Informix Object Interface for C++,
    IBM Informix Object Interface for C++ demos,
    IBM Informix ESQL/C,
    7.2 application compatibility module,
    IBM Informix ESQL/C demos,
    IBM Informix LIBDMI for client applications,
    IBM Informix ODBC Driver,
    IBM Informix ODBC Driver demos,
    Global Language Support (GLS),
    West European and Americas,
    East European and Slavic,
    Japanese,
    Korean,
    Chinese,
    Thai,
    IBM Informix JDBC

Disk Space Information (for Installation Target):
    Required:  496,289,042 bytes
    Available: 2,099,097,600 bytes

PRESS  TO CONTINUE:
Tela abaixo - (O PATH esta correto) - Enter

Ready To Install
----------------

InstallAnywhere is now ready to install IBM Informix Software Bundle onto your
system at the following location:

   /opt/IBM/informix

PRESS  TO INSTALL:
Tela abaixo - Instando - Aguarde
Installing...
-------------

[==================|==================|==================|==================]
[------------------|------------------|------------------|------------------]
Tela abaixo - Instalacao Completa - Enter
Installation Complete
---------------------

Congratulations! IBM Informix Software Bundle installation is complete.

Product install status:
IBM Informix 11.70: Successful
IBM Informix Client-SDK: Successful
IBM Informix JDBC Driver: Successful
IBM OpenAdmin Tool for Informix: Successful


For more information about using Informix products, see the IBM Informix 11.70
Information Center at
http://publib.boulder.ibm.com/infocenter/idshelp/v117/index.jsp.

PRESS  TO EXIT THE INSTALLER:
Vamos copiar o arquivo de configuracao (onconfig.demo_on) e o sqlhosts.demos da pasta antiga do Informix
root@informixva[demo_on]:/opt/IBM# cd informix_antigo/
root@informixva[demo_on]:/opt/IBM/informix_antigo# cd etc
root@informixva[demo_on]:/opt/IBM/informix_antigo/etc# cp onconfig.demo_on /opt/IBM/informix/etc
root@informixva[demo_on]:/opt/IBM/informix_antigo/etc# cp sqlhosts.demos /opt/IBM/informix/etc
root@informixva[demo_on]:/opt/IBM/informix_antigo/etc# chown informix:informix /opt/IBM/informix/etc/onconfig.demo_on
Colocando o banco no ar - entrou no ar ok - sem mensagens de erro
informix@informixva[demo_on]:~$ oninit -v
Reading configuration file '/opt/IBM/informix/etc/onconfig.demo_on'...succeeded
Creating /INFORMIXTMP/.infxdirs...succeeded
Checking config parameters...succeeded
Allocating and attaching to shared memory...succeeded
Creating resident pool 10598 kbytes...succeeded
Allocating 100016 kbytes for buffer pool of 2K page size...succeeded
Creating infos file "/opt/IBM/informix/etc/.infos.demo_on"...succeeded
Linking conf file "/opt/IBM/informix/etc/.conf.demo_on"...succeeded
Initializing rhead structure...succeeded
Writing to infos file...succeeded
Initialization of Encryption...succeeded
Initializing ASF...succeeded
Initializing Dictionary Cache and SPL Routine Cache...succeeded
Bringing up ADM VP...succeeded
Creating VP classes...succeeded
Forking main_loop thread...succeeded
Initializing DR structures...succeeded
Forking 1 'soctcp' listener threads...succeeded
Forking 1 'soctcp' listener threads...succeeded
Starting tracing...succeeded
Initializing 8 flushers...succeeded
Initializing SDS Server network connections...succeeded
Initializing log/checkpoint information...succeeded
Initializing dbspaces...succeeded
Opening primary chunks...succeeded
Opening mirror chunks...succeeded
Validating chunks...succeeded
Initialize Async Log Flusher...succeeded
Starting B-tree Scanner...succeeded
Initializing DBSPACETEMP list...succeeded
Init ReadAhead Daemon...succeeded
Checking database partition index...succeeded
Initializing dataskip structure...succeeded
Checking for temporary tables to drop...succeeded
Updating Global Row Counter...succeeded
Forking onmode_mon thread...succeeded
Creating periodic thread...succeeded
Starting scheduling system...succeeded
Verbose output complete: mode = 5
Versao atualizada ficou assim
IBM Informix Dynamic Server Version 11.70.UC5 -- On-Line -- Up 00:02:12 -- 177052 Kbytes

Configurando a Auditoria no Informix


Este artigo discute brevemente o processo de configurar e fornece uma demonstração de auditoria gerenciados pelo servidor de banco de dados usando Informix Dynamic Server para Unix sem a separação de funções.

Configurando a Auditoria

1. Acesso com o usuário informix.
2. A auditoria é desativada por padrão quando você instala o servidor de banco de dados. Para ativá-la, edite o arquivo $INFORMIXDIR/aaodir/adtcfg da seguinte forma:

Altere o parâmetro ADTMODE de 0 (que é o padrão) para 1. O valor 1 significa que a servidor de banco de dados gerenciara a auditoria de todas as sessões.

Altere o parâmetro ADTPATH ​​para o caminho completo para o qual você deseja que o servidor de banco de dados salve os arquivos de auditoria. A propriedade do diretório deve ser informix, Group ID deve ser informix e a permissão deve ser 755 para impedir o uso não autorizado dos arquivos de auditoria.

Para este exemplo, vamos usar no parametro ADTPATH o caminho /usr/informix/auditing

Este é o conteúdo do arquivo adtfcg resultantes:
    ADTMODE         1
    ADTPATH         /usr/informix/auditing
    ADTSIZE         50000
    ADTERR          0
A descrição de cada parâmetro:

ADTMODE - Controla o nivel de auditoria, o valor default é 0 (zero);
0 = auditoria esta desativada;
1 = a auditoria em; inicia auditoria em todas as sessões;
3 = a auditoria em auditorias; DBSSO ações;
5 = a auditoria em; ações de administrador de banco de dados servidor de auditorias;
7 = a auditoria em; DBSSO auditorias e ações de administrador de banco de dados do servidor;
ADTPATH - ​​especifica o diretório no qual o servidor de banco de dados salva os arquivos de auditoria. Certifique-se de que o diretório que você colocar tenha os privilégios de acesso adequadas para evitar a utilização não autorizada de registros de auditoria. Para alterar o valor ADTPATH ​​com onaudit, auditoria gerenciados no servidor de banco de dados deve estar ligado.

ADTPATH ​​- especifica o tamanho máximo de um arquivo de auditoria. Quando um arquivo atinge o tamanho máximo, o servidor de banco de dados salva o arquivo de auditoria e cria um novo. Este parâmetro aplica-se apenas à auditoria gerenciados pelo servidor de banco de dados.

ADTERR - especifica como o servidor de banco de dados se comporta quando encontra um erro enquanto grava um registro de auditoria, o valor default é 0 (zero);

0 = continuar modo de erro, quando se encontra um erro, uma vez que escreve um registro de auditoria, o servidor de banco de dados, escreve uma mensagem de falha no registro de mensagem. Ele continua a processar o segmento.
1 = halt error mode: suspender o processamento de thread, quando o servidor de banco de dados encontra um erro, uma vez que escreve um registro de auditoria, o servidor de banco de dados suspende o processamento da thread até que ela grave com sucesso o registro.
3 = halt error mode: onde o sistema é desligado, quando o servidor de banco de dados encontra um erro, uma vez que escreve um registro de auditoria, o servidor de banco de dados é desligado.


Pare e reinicie a máquina para que as novas configurações tenham efeito.

4. Execute onaudit -c para confirmar os parâmetros de configuração de auditoria estão corretas.
    ADTMODE    = 1
    ADTERR     = 0
    ADTPATH    = /usr/informix/auditing
    ADTSIZE    = 50000
    Audit file = 0
Auditoria está agora ligada

5. Crie a máscara de auditoria _require que se aplica automaticamente a todos os usuários. Neste exemplo, a máscara _require é criado usando os eventos recomendadas Informix.
onaudit -a -u _require -e +OPDB,GRDB,RVDB,GRTB, RVTB,CRRL,STRL,STSA,STOM,GRRL,RVRL,GRFR,RVFR
As máscaras de auditoria

Audit Masks

Máscaras de auditoria especificam os eventos que o servidor de banco de dados devem auditar. Você pode incluir qualquer evento em uma máscara. As máscaras são associados com IDs de usuário, de modo que as ações especificadas que um ID de usuário são gravadas. As máscaras globais _default, _require e _exclude são especificados para todos os usuários no sistema.

Antes de usar a auditoria, você deve especificar quais os eventos de auditoria para serem auditados. Para especificar eventos auditados, adicione os eventos para as máscaras. Você também deve realizar outras tarefas, que a administração de Auditoria.

O servidor de banco de dados não fornece auditoria de objetos ou processos. Por exemplo, você não pode pedir para o servidor de banco de dados possa auditar todas as tentativas de acesso em um determinado objeto. Você pode, no entanto, filtrar os registros de auditoria da trilha de auditoria com base em objetos com as ferramentas de auditoria de análise, que a análise de Auditoria.

Importante: Se a auditoria estiver desligado, o servidor de banco de dados não vai fazer auditoria eventos, mesmo se os eventos são especificadas nas máscaras. User masks

As máscaras globais são sempre aplicadas às ações do usuário que são executadas durante uma sessão em que a auditoria está ligado. Máscaras de auditoria são aplicadas na seguinte ordem:
1.  Uma mascara individual a um usuário ou se não existir, a máscara _default;
2.  A mascara _require;
3.  A mascara _exclude;
Quando um usuário inicia o acesso a um banco de dados, o servidor verifica se o banco de dados de uma máscara de usuário individual existe com o mesmo nome de usuário da conta de que o usuário utiliza. Se uma máscara de usuário individual existe, o servidor de banco de dados lê as instruções de auditoria nele primeiro e ignora a máscara _default. Se nenhuma máscara usuário individual existe, o servidor de banco de dados lê e aplica as instruções de auditoria na máscara _default para esse usuário.

Além do padrão e máscaras individuais, o servidor de banco de dados lê e aplica as instruções de auditoria nas máscaras _require e _exclude. Estas máscaras são globais porque se aplicam a todos os usuários. Eventos de auditoria na máscara _require são auditados, mesmo que eles não são encontrados no _default ou máscaras de usuários individuais. Eventos de auditoria na máscara _exclude não são auditados, mesmo que possam ler o anteriormente máscaras obrigá-los especificamente.

Importante: se, são utilizados as instruções na última máscara para ser lido as instruções de auditoria destas máscaras conflito. Máscaras são lidas na seguinte ordem : username, _default, _require, e _exclude.

Os usuários não podem saber se existem máscaras de utilizador individual de suas contas. Além disso, os usuários não são obrigados a fazer qualquer coisa para ativar a auditoria de suas ações. Depois que um administrador de auditoria transforma em auditoria, opera automaticamente e os usuários não podem desativá-lo.

Quando o banco de dados está instalado, não existem máscaras de auditoria. Um administrador de auditoria deve especificar todas as máscaras, incluindo a máscara padrão e as máscaras globais.

Importante: As ações que o DBSA, um administrador de auditoria, ou do usuário informix são potencialmente perigosos para a segurança do servidor de banco de dados. Para reduzir o risco de um usuário sem escrúpulos abusando da conta informix, recomenda-se que as ações de informix sempre ser auditada. Este procedimento destina-se a evitar que um usuário sem escrúpulos de usar informix mexer com auditoria ou de concessão de acesso discricionário para outro usuário sem escrúpulos.

Códigos de Eventos

Abaixo estão os códigos de eventos
+---------+---------------+-----------------------------------------------+
| AUDIT   | COMMAND       | OBS                                           |
+---------+---------------+-----------------------------------------------+
| BGTX    | :ddl:         | BEGIN WORK                                    |
| CMTX    | :ddl:         | COMMIT WORK                                   |
| RLTX    | :ddl:         | ROLLBACK WORK                                 |
| ACTB    | :ddl:         | Access Table                                  |
| CLDB    | :ddl:         | CLOSE DATABASE                                |
| OPDB    | :ddl:         | DATABASE                                      |
| ULTB    | :ddl:         | Unlock Table                                  |
| LKTB    | :ddl:         | Lock Table                                    |
| STSN    | :ddl:         | Start Session                                 |
+---------+---------------+-----------------------------------------------+
| ADCK    | :dbsa:        | Add chunk                                     |
| ADLG    | :dbsa:        | Add log                                       |
+---------+---------------+-----------------------------------------------+
| ALFR    | :ddl:         | ALTER FRAGMENT                                |
| ALIX    | :ddl:         | ALTER INDEX                                   |
| ALLC    | :lbac:        | ALTER Security Label Component                |
| ALME    | :ius:         | Alter Access Method                           |
| ALOC    | :ius:         | ALTER Operator Class                          |
| ALSQ    | :ddl:         | ALTER SEQUENCE                                |
| ALTB    | :ddl:         | ALTER TABLE                                   |
+---------+---------------+-----------------------------------------------+
| CRAM    | :audit:       | Create Audit Mask                             |
| DRAM    | :audit:       | Drop audit mask                               |
| UPAM    | :audit:       | Update Audit Mask                             |
+---------+---------------+-----------------------------------------------+
| CRDB    | :dba:         | CREATE DATABASE                               |
| DRDB    | :dba:         | DROP DATABASE                                 |
+---------+---------------+-----------------------------------------------+
| CRAG    | :ius:         | CREATE AGGREGATE                              |
| CRBS    | :dbsa:        | CREATE storage space                          |
| CRBT    | :ius:         | CREATE opaque (binary) type                   |
| CRCT    | :ius:         | CREATE CAST                                   |
| CRDS    | :dbsa:        | CREATE dbspace                                |
| CRDT    | :ius:         | CREATE DISTINCT TYPE                          |
| CRIX    | :ddl:         | CREATE INDEX                                  |
| CRLB    | :lbac:        | CREATE LABEL                                  |
| CRLC    | :lbac:        | CREATE LABEL COMPONENT                        |
| CRME    | :ius:         | CREATE Access Method                          |
| CROC    | :ius:         | CREATE Operator Class                         |
| CRPL    | :lbac:        | CREATE POLICY                                 |
| CRPT    | :dml:         | Encryption or Decryption function             |
| CRRL    | :perms:       | CREATE ROLE                                   |
| CRRT    | :ius:         | CREATE named ROW TYPE                         |
| CRSN    | :ddl:         | CREATE SYNONYM                                |
| CRSP    | :ddl:         | CREATE STORED PROCEDURE                       |
| CRSQ    | :ddl:         | CREATE SEQUENCE                               |
| CRTB    | :ddl:         | CREATE TABLE                                  |
| CRTR    | :ddl:         | CREATE TRIGGER                                |
| CRVW    | :ddl:         | CREATE VIEW                                   |
| CRXD    | :ius:         | CREATE XA Data Source                         |
| CRXT    | :ius:         | CREATE XA Data Source Type                    |
+---------+---------------+-----------------------------------------------+
| DLRW    | :crud:        | DELETE ROW                                    |
| DNCK    | :dbsa:        | Down Chunk - offline                          |
| DNDM    | :dbsa:        | Disable disk mirroring                        |
| DRAG    | :ius:         | DROP AGGREGATE                                |
| DRBS    | :dbsa:        | DROP storage space                            |
| DRCK    | :dbsa:        | Drop chunk                                    |
| DRCT    | :ius:         | DROP CAST                                     |
| DRDS    | :dbsa:        | DROP dbspace                                  |
| DRIX    | :ddl:         | DROP INDEX                                    |
| DRLB    | :lbac:        | DROP LABEL                                    |
| DRLC    | :lbac:        | DROP LABEL COMPONENT                          |
| DRLG    | :dbsa:        | Drop transaction log (why no create?)         |
| DRME    | :ius:         | DROP Access Method                            |
| DROC    | :ius:         | DROP Operator Class                           |
| DRPL    | :lbac:        | DROP POLICY                                   |
| DRRL    | :perms:       | DROP ROLE                                     |
| DRRT    | :ius:         | DROP ROW TYPE                                 |
| DRSN    | :ddl:         | DROP SYNONYM                                  |
| DRSP    | :ddl:         | DROP STORED PROCEDURE                         |
| DRSQ    | :ddl:         | DROP SEQUENCE                                 |
| DRTB    | :ddl:         | DROP TABLE                                    |
| DRTR    | :ddl:         | DROP TRIGGER                                  |
| DRTY    | :ius:         | DROP TYPE                                     |
| DRVW    | :ddl:         | DROP VIEW                                     |
| DRXD    | :ius:         | DROP XA Data Source                           |
| DRXT    | :ius:         | DROP XA Data Source Type                      |
+---------+---------------+-----------------------------------------------+
| EXSP    | :dml:         | EXECUTE PROCEDURE                             |
+---------+---------------+-----------------------------------------------+
| GRDB    | :perms:       | GRANT DB privilege                            |
| GRDR    | :perms:       | GRANT DEFAULT ROLE                            |
| GRFR    | :perms:       | GRANT FRAGMENT                                |
| GRLB    | :lbac:        | GRANT SECURITY LABEL                          |
| GRRL    | :perms:       | GRANT ROLE                                    |
| GRSA    | :lbac:        | GRANT DBSECADM                                |
| GRSS    | :lbac:        | GRANT SETSESSIONAUTH                          |
| GRTB    | :perms:       | GRANT table permissions                       |
| GRXM    | :lbac:        | GRANT EXEMPTION                               |
+---------+---------------+-----------------------------------------------+
| INRW    | :crud:        | INSERT ROW                                    |
+---------+---------------+-----------------------------------------------+
| LGDB    | :dbsa:        | Change database log mode                      |
| LSAM    | :audit:       | List Audit Mask                               |
| LSDB    | :ddl:         | List databases                                |
+---------+---------------+-----------------------------------------------+
| MDLG    | :dbsa:        | Modify transaction logging                    |
+---------+---------------+-----------------------------------------------+
| ONAU    | :onutils:     | ON-Audit                                      |
| ONBR    | :onutils:     | ON-BAR                                        |
| ONCH    | :onutils:     | ON-Check                                      |
| ONIN    | :onutils:     | ON-Init                                       |
| ONLG    | :onutils:     | ON-Log                                        |
| ONLO    | :onutils:     | ON-Load                                       |
| ONMN    | :onutils:     | ON-Monitor                                    |
| ONMO    | :onutils:     | ON-Mode                                       |
| ONPA    | :onutils:     | ON-Params                                     |
| ONPL    | :onutils:     | ON-Pload                                      |
| ONSP    | :onutils:     | ON-Spaces                                     |
| ONST    | :onutils:     | ON-Stat                                       |
| ONTP    | :onutils:     | ON-Tape                                       |
| ONUL    | :onutils:     | ON-Unload                                     |
+---------+---------------+-----------------------------------------------+
| RDRW    | :crud:        | READ ROW                                      |
| RLOP    | :optical:     | Release optical cluster                       |
| RMCK    | :dbsa:        | Clear mirrored chunks                         |
| RNDB    | :dba:         | Rename database                               |
| RNDS    | :dbsa:        | Rename dbspace                                |
| RNIX    | :ddl:         | Rename index                                  |
| RNLB    | :lbac:        | Rename label                                  |
| RNLC    | :lbac:        | Rename label component                        |
| RNPL    | :lbac:        | Rename policy                                 |
| RNSQ    | :ddl:         | Rename sequence                               |
| RNTC    | :ddl:         | Rename table/column                           |
+---------+---------------+-----------------------------------------------+
| RSOP    | :optical:     | Reserve optical cluster                       |
+---------+---------------+-----------------------------------------------+
| RVDB    | :perms:       | Revoke Database Privileges                    |
| RVDR    | :perms:       | Revoke Default Role                           |
| RVFR    | :perms:       | Revoke Fragment                               |
| RVLB    | :lbac:        | Revoke Label                                  |
| RVRL    | :perms:       | Revoke Role                                   |
| RVSA    | :lbac:        | Revoke DBSECADM                               |
| RVSS    | :lbac:        | Revoke SETSESSIONAUTH                         |
| RVTB    | :perms:       | Revoke table privileges                       |
| RVXM    | :lbac:        | Revoke exemption                              |
+---------+---------------+-----------------------------------------------+
| SCSP    | :dml:         | SYSTEM command in Stored Procedure            |
+---------+---------------+-----------------------------------------------+
| STCN    | :ddl:         | SET CONSTRAINT                                |
| STCO    | :dml:         | SET COLLATION                                 |
| STDF    | :dml:         | SET DEBUG FILE                                |
| STDP    | :perms:       | SET DATABASE PASSWORD                         |
| STDS    | :dml:         | SET DATASKIP                                  |
| STEP    | :dml:         | SET ENCRYPTION PASSWORD                       |
| STEV    | :dml:         | SET ENVIRONMENT                               |
| STEX    | :dml:         | SET EXPLAIN                                   |
| STIL    | :dml:         | SET ISOLATION                                 |
| STLM    | :dml:         | SET LOCK MODE                                 |
| STNC    | :dml:         | SET NO COLLATION                              |
| STOM    | :ddl:         | SET object mode                               |
| STOP    | :ddl:         | STOP VIOLATIONS                               |
| STPR    | :dml:         | SET PDQPRIORITY                               |
| STRL    | :perms:       | SET ROLE                                      |
| STRS    | :dba:         | SET RESIDENT                                  |
| STRT    | :ddl:         | START VIOLATIONS                              |
| STSA    | :perms:       | SET SESSION AUTHORIZATION                     |
| STSC    | :dbsa:        | SET STATEMENT CACHE                           |
| STTX    | :dml:         | SET TRANSACTION                               |
| SVXD    | :ddl:         | SAVE EXTERNAL DIRECTIVES                      |
+---------+---------------+-----------------------------------------------+
| TCTB    | :ddl:         | Truncate table                                |
+---------+---------------+-----------------------------------------------+
| ALOP    | :optical:     | ALTER Optical Cluster                         |
| CROP    | :optical:     | CREATE OPTICAL CLUSTER                        |
| DROP    | :optical:     | DROP OPTICAL CLUSTER                          |
| TMOP    | :optical:     | Optical timeout                               |
+---------+---------------+-----------------------------------------------+
| UPCK    | :dbsa:        | UP Chunk                                      |
| UPDM    | :dbsa:        | Enable Disk Mirroring                         |
+--------+----------------+-----------------------------------------------+
| UPRW    | :crud:        | UPDATE row                                    |
+---------+---------------+-----------------------------------------------+
| USSP    | :ddl:         | UPDATE STATISTICS - Stored procedure          |
| USTB    | :ddl:         | UPDATE STATISTICS - Table                     |
+---------+---------------+-----------------------------------------------+
| DRDM    | :domain:      | DROP DOMAIN                                   |
| CRDM    | :domain:      | CREATE domain                                 |
+---------+---------------+-----------------------------------------------+
Descrição do comando onaudit
 onaudit ?
Onaudit -- Audit Subsystem Configuration Utility

Usage: onaudit  [-f file] [-u name] [-r bmsk] [-e eset] [-y]
       onaudit [-c] [-n] [-l lev] [-e err] [-p path] [-s size]
action: one of
    -a   -- add a mask
    -d   -- delete a mask
    -m   -- modify a mask
    -o   -- output a mask
 -r bmsk -- name of basemask
 -c      -- print audit configuration
 -n      -- start new log file
 -l lev  -- set ADTMODE
 -e err  -- set ADTERR
 -p path -- set ADTPATH
 -s size -- set ADTSIZE
 -f file -- include instruction file
 -u mask -- name of target/mask
 -e eset -- event set added to (+) or removed from (-) mask
 -R fga  -- set ADTROWS for Fine-Grained Auditing
 -y      -- respond yes to all prompts
Demostrando a Auditoria 1

1. Criar uma máscara usuário individual. Para este exemplo, a máscara do usuário é pat e os eventos a serem auditados será a criação de bases de dados e soltando.
    onaudit -a -u pat -e +CRDB,DRDB
2. Execute o comando onaudit -o -y para mostrar os eventos de auditoria de todos os usuários definidos. A saída é apresentada da seguinte forma:
    _require    -    GRDB,GRTB,OPDB,RVDB,RVTB,STOM,GRFR,RVFR,CRRL,GRRL,RVRL,STRL,STSA
    pat         -   CRDB,DRDB
3. Execute os seguintes comandos SQL como pat usuário:
    CREATE DATABASE test;
    CREATE TABLE tab1
     (
     col1 INT
      );
    DATABASE sysmaster;
    DROP DATABASE test;
4. Execute onshowaudit para exibir os eventos controlados para o usuário pat. Os eventos são exibidos aqui.
    > onshowaudit

    ONLN|2002-10-31 14:25:10.000|digger2|2684|pat|pat|0:CRDB:test:-
    ONLN|2002-10-31 14:25:28.000|digger2|2684|pat|pat|0:OPDB:sysmaster:0:-
    ONLN|2002-10-31 14:25:28.000|digger2|2684|pat|pat|0:DRDB:test:-
Formato do registro de auditoria

O servidor de banco de dados gera a segunda parte do registro de auditoria, com campos que dependem do evento de auditoria.

A Tabela abaixo mostra o formato dos registros de auditoria do servidor de banco de dados.
+------+-------------------------+---------------------+------+--------------+-------+-------+----------+---------------------+
| ONLN | Date and Time           | hostname            | pid  | database     | user  | errno | event    | Additional Fields   |
|      |                         | hostname.domain.ext |      | server name  | name  |       | mnemonic |                     |
+------+-------------------------+---------------------+------+--------------+-------+-------+----------+---------------------+
| ONLN | 2008-07-28 15:43:00.000 | turk                | 4549 | khan         | jazt  | 0     | CRDB     | dbsch               |
+------+-------------------------+---------------------+------+--------------+-------+-------+----------+---------------------+
| ONLN | 2008-07-28 15:43:18.000 | turk                | 4549 | khan         | jazt  | 0     | ACTB     | dbsch:jazt:v1:103   |
+------+-------------------------+---------------------+------+--------------+-------+-------+----------+---------------------+
| ONLN | 2008-07-28 15:43:19.000 | turk                | 4549 | khan         | jazt  | 0     | CLDB     | dbsh                |
+------+-------------------------+---------------------+------+--------------+-------+-------+----------+---------------------+
| ONLN | 2008-07-28 15:43:21.000 | turk                | 4549 | khan         | jazt  | 0     | ALFR     | local:109:-:-:4:4:  |
|      |                         |                     |      |              |       |       |          | db1,db2,db3,        |
|      |                         |                     |      |              |       |       |          | rootdbs:0           | 
+------+-------------------------+---------------------+------+--------------+-------+-------+----------+---------------------+
| ONLN | 2008-07-28 15:43:28.000 | turk                | 4549 | khan         | jazt  | 0     | ALFR     | local:109:aa5x:-:   |
|      |                         |                     |      |              |       |       |          | 32:4: db1,db2       |
|      |                         |                     |      |              |       |       |          | rootdbs:0           |
+------+-------------------------+---------------------+------+--------------+-------+-------+----------+---------------------+
| ONLN | 2008-07-28 15:43:29.000 | turk                | 4549 | khan         | jazt  | 0     | STDS     | 2:-                 |
+------+-------------------------+---------------------+------+--------------+-------+-------+----------+---------------------+
| ONLN | 2008-07-28 15:43:29.000 | turk                | 4549 | khan         | jazt  | 0     | STPR     | 100                 |
+------+-------------------------+---------------------+------+--------------+-------+-------+----------+---------------------+
Detalhes;
+-----------------------+------------------------------------------------------------------------------------------------------+
| ONLN                  | Um campo fixo utilizado para identificar eventos                                                     |
+-----------------------+------------------------------------------------------------------------------------------------------+
| date and time         | Indica quando o evento de auditoria foi gravado                                                      |
+-----------------------+------------------------------------------------------------------------------------------------------+
| hostname              | O nome do computador host UNIX do aplicativo cliente que executa o evento de auditoria               |
+-----------------------+------------------------------------------------------------------------------------------------------+
| hostname.domain.ext   | O nome do computador com o Windows de host, domínio e extensão da aplicação do                       | 
|                       | cliente que executa o evento de auditoria.                                                           |  
+-----------------------+------------------------------------------------------------------------------------------------------+
| pid                   | O ID do processo do aplicativo cliente que faz com que o servidor de banco de                        |   
|                       | dados para executar o evento de auditoria.                                                           | 
+-----------------------+------------------------------------------------------------------------------------------------------+
| database server name  | O nome do servidor de banco de dados no qual o evento de auditoria é executado                       |
+-----------------------+------------------------------------------------------------------------------------------------------+
| user name             | O nome de login do usuário que solicita o evento                                                     |
+-----------------------+------------------------------------------------------------------------------------------------------+
| errno                 | O resultado de evento que contém o número do erro que o evento retorna, indicando o sucesso (0) ou   |
|                       | falha.                                                                                               |
+-----------------------+------------------------------------------------------------------------------------------------------+
| event mnemônico       | Evento de auditoria de servidor de banco de dados que o servidor de banco de dados correu, como      |
|                       | ALFR (Alter Fragment).                                                                               |
+-----------------------+------------------------------------------------------------------------------------------------------+
| Additional Fields     | Todos os campos que identificam bases de dados, tabelas, e assim por diante. Estes campos adicionais | 
|                       | são campos de auditoria de eventos que contêm informações capturadas em forma de tabela pelo         |
|                       | utilitário onshowaudit para análise da auditoria .                                                   |
+-----------------------+------------------------------------------------------------------------------------------------------+
5. Repita o passo 3 como usuário informix.

6. Execute onshowaudit para exibir os eventos controlados para informix usuário. Os eventos são exibidos aqui.
     > onshowaudit

    ONLN|2002-10-31 14:38:35.000|digger2|2711|informix|informix|0:OPDB:sysmaster:0:- 
Note-se que os eventos CRDB (create database), OPDB (open database), e DRDB (drop database) são mostrados para o usuário pat, mas o usuário informix só mostra OPDB.

Além disso, observe que a auditoria não registra o evento CRTB (create table) para qualquer usuário, porque não é parte de qualquer uma das máscaras de auditoria.

Comandos ONAUDIT

Alguns exemplos de comandos
+---------------------------------+-------------------------------------------------------------------------+
| comandos                        | descrição                                                               |
+---------------------------------+-------------------------------------------------------------------------+
| onaudit -o -y                   | lista todos as regras/mascaras                                          |
+---------------------------------+-------------------------------------------------------------------------+
| onaudit -o -u teste             | lista todos as regras/mascaras do usuário teste                         | 
+---------------------------------+-------------------------------------------------------------------------+
| onaudit -l 1                    | inicia auditoria                                                        | 
+---------------------------------+-------------------------------------------------------------------------+
| onaudit -l 0                    | para auditoria                                                          |
+---------------------------------+-------------------------------------------------------------------------+
| onaudit -f (adtmask_file)       | Cria regras baseadas em arquivo  (não sobrescreve config ja existente)  | 
----------------------------------+-------------------------------------------------------------------------+
| onaudit -a -u teste -e (regras) | Cria regras para usuário teste                                          |
+---------------------------------+-------------------------------------------------------------------------+
| onaudit -m -u teste -e          | altera regras                                                           |
+---------------------------------+-------------------------------------------------------------------------+
| onaudit -d -u teste             | apaga regra do usuario teste                                            |
+---------------------------------+-------------------------------------------------------------------------+
| onaudit -d -y                   | apaga todas as regras                                                   |
+---------------------------------+-------------------------------------------------------------------------+
| onaudit -l 1 -p /log -n         | altera diretório de log (é necessario ter -l 1 e -n)                    |
+---------------------------------+-------------------------------------------------------------------------+
| onaudit -c                      | display dos parametros da audit                                         |
+---------------------------------+-------------------------------------------------------------------------+
| onaudit -R 1                    | command enables selective row-level auditing                            |
+---------------------------------+-------------------------------------------------------------------------+
Demostrando a Auditoria 2

Primeiro vamos ser se existe alguma mascara ativada
[s343:informix]$/> onaudit -o -y
Onaudit -- Audit Subsystem Configuration Utility 
Vamos criar uma mascara individual para o usuário informix onde quero pegar quando ele criar um novo banco, criar novas tabelas, quando ele renomear um banco e quero pegar também quando ele deletar um banco;
+---------+---------------+-----------------------------------------------+
| CRDB    | :dba:         | CREATE DATABASE                               |
| CRTB    | :ddl:         | CREATE TABLE                                  |
| RNDB    | :dba:         | Rename database                               |
| DRDB    | :dba:         | DROP DATABASE                                 |
+---------+---------------+-----------------------------------------------+
O comando é este
[s343:informix]$/> onaudit -a -u informix -e +CRDB,CRTB,RNDB,DRDB
Onaudit -- Audit Subsystem Configuration Utility
Vendo se existe alguma mascara individual - tem a do usuário informix que acabamos de criar
[s343:informix]$/> onaudit -o -y
Onaudit -- Audit Subsystem Configuration Utility

informix                                -       CRDB,CRTB,RNDB,DRDB
Criando um novo banco chamado aafai240
[s343:informix]$/> echo "create database aafai240 with log;" | dbaccess sysmaster

Database selected.
Database closed.
Database created.
Database closed.
Criando uma tabela chamada audit_db
[s343:informix]$/> echo "CREATE TABLE dba.audit_db ( audit_system CHAR(4) NOT NULL, audit_dt_ocorrido CHAR(23) NOT NULL)" | dbaccess aafai240

Database selected.
Table created.
Database closed.
Renomeando o banco aafai240 para aafanatb
[s343:informix]$/> echo "rename database aafai240 to aafanatb" | dbaccess sysmaster

Database selected.
Database renamed.
Database closed.
Dropando o banco aafanatb
[s343:informix]$/> echo "drop database aafanatb" | dbaccess sysmaster

Database selected.
Database dropped.
Database closed.
Olhando a auditoria
[s343:informix]$/> onshowaudit 
Resultado - no final apareceu o que fiz
---- corte ---- no final ----
ONLN|2013-11-22 15:44:54.000|s343.ms|5349|desenv|informix|0:CRDB:aafai240:-
ONLN|2013-11-22 15:47:06.000|s343.ms|5399|desenv|informix|0:CRTB:aafai240:100:audit_db:dba:0:-
ONLN|2013-11-22 15:49:00.000|s343.ms|5411|desenv|informix|0:RNDB:aafai240:aafanatb:informix                        
ONLN|2013-11-22 15:49:44.000|s343.ms|5416|desenv|informix|0:DRDB:aafanatb:-
Listando a mascara individual
[s343:informix]$/> onaudit -o -y
Onaudit -- Audit Subsystem Configuration Utility

informix                                -       CRDB,CRTB,DRDB,DRTB,RNDB
Deletando a mascara individual do usuário informix
[s343:informix]$/> onaudit -d -u informix
Listando as mascaras individuais - não tem nenhuma
[s343:informix]$/> onaudit -o -y
Onaudit -- Audit Subsystem Configuration Utility

11/21/2013

Onde esta o Arquivo de alert do Oracle?


No banco de dados Oracle o arquivo alert.log registra cronologicamente as mensagens de erros resultantes do funcionamento diário do banco de dados. Além disso, registra os arquivos de “traces” gerados para auxiliarem os DBAs a rastrearem as atividades dos usuários ou mesmo detalhamento dos erros ocorridos durante o processamento das aplicações.

Primeiro abre o sqlplus;
[oracle@s236 ~]$ sqlplus / as sysdba
Dentro do sqlplus de o comando
SQL*Plus: Release 10.2.0.5.0 - Production on Thu Nov 21 15:05:57 2013

Copyright (c) 1982, 2010, Oracle.  All Rights Reserved.

Connected to:
Oracle Database 10g Release 10.2.0.5.0 - 64bit Production

SQL> select value from v$parameter where name='background_dump_dest';

VALUE
--------------------------------------------------------------------------------
/oracle/admin/RHHML/bdump
Anote este endereço. Se o parâmetro “background_dump_dest” não for especificado o Oracle irá gravar o arquivo “alert.log dentro do caminho $ORACLE_HOME/RDBMS/diretório de trace.

Saindo do sqlplus
SQL> exit
Disconnected from Oracle Database 10g Release 10.2.0.5.0.- 64bits Production
Acesse o diretório que o comando select nos passou;
[oracle@s236 ~]$ cd /oracle/admin/RHHML/bdump
Primeiro vou dar um display para ver se o arquivo existe;
[oracle@s236 bdump]$ ls -la alert_*
-rw-r----- 1 oracle oinstall 7595738 Nov 21 09:00 alert_RHHML.log
[oracle@s236 bdump]$ 
Vou ver o conteudo do arquivo de alert;
[oracle@s236 bdump]$ cat alert_RHHML.log
Resultado
Wed Nov 20 22:02:54 AMST 2013
Thread 1 advanced to log sequence 37145 (LGWR switch)
  Current log# 5 seq# 37145 mem# 0: /db/RHHML/redo05.log
Wed Nov 20 22:29:52 AMST 2013
Thread 1 advanced to log sequence 37146 (LGWR switch)
  Current log# 6 seq# 37146 mem# 0: /db/RHHML/redo06.log
Thu Nov 21 03:00:22 AMST 2013
Thread 1 advanced to log sequence 37147 (LGWR switch)
  Current log# 7 seq# 37147 mem# 0: /db/RHHML/redo07.log
Thu Nov 21 05:23:26 AMST 2013
Thread 1 advanced to log sequence 37148 (LGWR switch)
  Current log# 8 seq# 37148 mem# 0: /db/RHHML/redo08.log
Thu Nov 21 05:40:20 AMST 2013
Thread 1 advanced to log sequence 37149 (LGWR switch)
  Current log# 9 seq# 37149 mem# 0: /db/RHHML/redo09.log
Thu Nov 21 08:39:57 AMST 2013
Thread 1 advanced to log sequence 37150 (LGWR switch)
  Current log# 10 seq# 37150 mem# 0: /db/RHHML/redo10.log
Thu Nov 21 09:00:32 AMST 2013
Thread 1 advanced to log sequence 37151 (LGWR switch)
  Current log# 1 seq# 37151 mem# 0: /db/RHHML/redo01.log

Facilidades para a Auditoria - Informix


A auditoria no Informix não é um ponto forte quando utilizado sua ferramenta nativa, pois não gera muitas informações úteis ou detalhadas suficiente para rastreamento e sim apenas informações do que ocorreu (Referencia). Para facilitar pra mim a leitura da auditoria no Informix criei duas maneiras, a primeira é um script em shell que lê os arquivos de auditoria e me mostra dos mais variados jeitos (por data, por tabela, por usuário, por banco), a segunda maneira (que não terminei) dá para criar um banco no informix e você carrega os arquivos da auditoria nele, com um simples select você busca o que você quer;

Primeira facilidade da Auditoria

O script que criei dá para fazer algumas buscas interessantes na auditoria - Download;
-------------------------------------------------------------------------------------------------
25/11/2013                      ***** INFORMIX BASIC SERVICES *****                      13:24:23
-------------------------------------------------------------------------------------------------
                                             informix

        Code  Function                                    
        ----  ------------------------------------------- 
         1    Lista as Datas dos Arquivos de Auditoria     
         2    Informix Audit Mnemonic Groupings           
         3    Lista Auditoria por Data                    
         4    Lista Auditoria por Banco                   
         5    Lista Auditoria por Tabela                  
         6    Lista Auditoria por Usuario                 
         7    Display dos Parametros da Audit             
         0    Voltar ao Menu Inicial                      
        ----  ------------------------------------------- 

     Digite um Codigo - 
Lista as datas dos arquivos de auditoria salvos
-------------------------------------------------------------------------------------------------
25/11/2013                      ***** INFORMIX BASIC SERVICES *****                      13:24:41
-------------------------------------------------------------------------------------------------
                                             informix

-rw-rw---- 1 informix informix 16393 May 23  2013 morfeu.0
-rw-rw---- 1 informix informix   145 May 23  2013 morfeu.1
-rw-rw---- 1 informix informix 49952 May 23  2013 morfeu.10
-rw-rw---- 1 informix informix 49975 May 23  2013 morfeu.11
-rw-rw---- 1 informix informix 49975 May 23  2013 morfeu.12
-rw-rw---- 1 informix informix 49977 May 23  2013 morfeu.13
-rw-rw---- 1 informix informix 49977 May 23  2013 morfeu.14
-rw-rw---- 1 informix informix 49977 May 23  2013 morfeu.15
-rw-rw---- 1 informix informix 49969 May 23  2013 morfeu.16
-rw-rw---- 1 informix informix 49977 May 23  2013 morfeu.17
-rw-rw---- 1 informix informix 49968 May 23  2013 morfeu.18
-rw-rw---- 1 informix informix 49977 May 23  2013 morfeu.19
-rw-rw---- 1 informix informix   364 May 23  2013 morfeu.2
-rw-rw---- 1 informix informix 49977 May 23  2013 morfeu.20
-rw-rw---- 1 informix informix 49977 May 23  2013 morfeu.21
-rw-rw---- 1 informix informix 49968 May 23  2013 morfeu.22
-rw-rw---- 1 informix informix 49905 May 23  2013 morfeu.23
-rw-rw---- 1 informix informix 49898 May 23  2013 morfeu.24
-rw-rw---- 1 informix informix 49961 May 23  2013 morfeu.25
-rw-rw---- 1 informix informix 49950 May 23  2013 morfeu.26
-rw-rw---- 1 informix informix 49993 May 23  2013 morfeu.27
-rw-rw---- 1 informix informix 49951 May 23  2013 morfeu.28
-rw-rw---- 1 informix informix 49912 May 23  2013 morfeu.29
-rw-rw---- 1 informix informix 49925 May 23  2013 morfeu.296
-rw-rw---- 1 informix informix 49998 May 23  2013 morfeu.297
-rw-rw---- 1 informix informix 49997 May 23  2013 morfeu.298
-rw-rw---- 1 informix informix 49937 May 23  2013 morfeu.299
---- corte ----
Lista as Mnemonic Groupings
-------------------------------------------------------------------------------------------------
25/11/2013                      ***** INFORMIX BASIC SERVICES *****                      13:25:27
-------------------------------------------------------------------------------------------------
                                             informix

+---------+---------------+-----------------------------------------------+
| AUDIT   | COMMAND       | OBS                                           |
+---------+---------------+-----------------------------------------------+
| BGTX    | :ddl:         | BEGIN WORK                                    |
| CMTX    | :ddl:         | COMMIT WORK                                   |
| RLTX    | :ddl:         | ROLLBACK WORK                                 |
| ACTB    | :ddl:         | Access Table                                  |
| CLDB    | :ddl:         | CLOSE DATABASE                                |
| OPDB    | :ddl:         | DATABASE                                      |
| ULTB    | :ddl:         | Unlock Table                                  |
| LKTB    | :ddl:         | Lock Table                                    |
| STSN    | :ddl:         | Start Session                                 |
+---------+---------------+-----------------------------------------------+
| ADCK    | :dbsa:        | Add chunk                                     |
| ADLG    | :dbsa:        | Add log                                       |
+---------+---------------+-----------------------------------------------+
---- corte ----
Lista a auditoria em um determinado dia do ano;
-------------------------------------------------------------------------------------------------
25/11/2013                      ***** INFORMIX BASIC SERVICES *****                      13:28:34
-------------------------------------------------------------------------------------------------
                                             informix

 Digite o ANO .: 2013

 Digite o MES .: 05
Resultado
-------------------------------------------------------------------------------------------------
25/11/2013                      ***** INFORMIX BASIC SERVICES *****                      13:26:01
-------------------------------------------------------------------------------------------------
                                             informix

ONLN|2013-05-18 04:00:04.262|talos.domain|32373|morfeu|informix|0:ONMO:-F 
ONLN|2013-05-18 04:25:02.908|talos.domain|520|morfeu|informix|0:ONMO:-F 
ONLN|2013-05-18 04:50:03.548|talos.domain|602|morfeu|informix|0:ONMO:-F 
ONLN|2013-05-18 05:00:03.205|talos.domain|629|morfeu|informix|0:ONMO:-F 
ONLN|2013-05-18 05:25:02.854|talos.domain|744|morfeu|informix|0:ONMO:-F 
ONLN|2013-05-18 05:50:03.549|talos.domain|833|morfeu|informix|0:ONMO:-F 
ONLN|2013-05-18 06:00:04.187|talos.domain|864|morfeu|informix|0:ONMO:-F 
ONLN|2013-05-18 06:25:03.861|talos.domain|993|morfeu|informix|0:ONMO:-F 
ONLN|2013-05-18 06:50:03.504|talos.domain|1074|morfeu|informix|0:ONMO:-F 
ONLN|2013-05-18 07:00:05.179|talos.domain|1117|morfeu|informix|0:ONMO:-F 
ONLN|2013-05-18 07:57:31.025|talos.domain|1413|morfeu|informix|0:ONMO:-z 3419 
ONLN|2013-05-18 08:00:56.233|talos.domain|1538|morfeu|informix|0:ONMO:-z 4264 
ONLN|2013-05-18 08:01:01.239|talos.domain|1543|morfeu|informix|0:ONMO:-z 4263 
ONLN|2013-05-18 08:01:05.243|talos.domain|1548|morfeu|informix|0:ONMO:-z 4262 
ONLN|2013-05-18 08:01:08.245|talos.domain|1549|morfeu|informix|0:ONMO:-z 4261 
ONLN|2013-05-18 08:01:44.281|talos.domain|1587|morfeu|informix|0:ONMO:-z 4256 
ONLN|2013-05-18 08:01:46.385|talos.domain|1586|morfeu|informix|-1:ONBR:-b -l
ONLN|2013-05-18 08:01:53.291|talos.domain|1600|morfeu|informix|0:ONMO:-z 4258 
ONLN|2013-05-18 08:02:05.304|talos.domain|1619|morfeu|informix|0:ONMO:-z 4261 
ONLN|2013-05-18 08:02:11.312|talos.domain|1620|morfeu|informix|0:ONMO:-z 4258 
ONLN|2013-05-18 08:02:16.316|talos.domain|1621|morfeu|informix|0:ONMO:-z 4256 
ONLN|2013-05-18 08:05:27.545|talos.domain|29987|morfeu|informix|0:ONBR:-b -w
ONLN|2013-05-18 08:05:28.508|talos.domain|1699|morfeu|informix|0:ONMO:-z 4261 
ONLN|2013-05-18 08:05:35.516|talos.domain|1706|morfeu|informix|0:ONMO:-z 4258 
ONLN|2013-05-18 08:05:41.521|talos.domain|1707|morfeu|informix|0:ONMO:-z 4256 
ONLN|2013-05-18 08:06:39.605|talos.domain|1720|morfeu|informix|0:ONMO:-z 4258 
ONLN|2013-05-18 08:06:51.629|talos.domain|1721|morfeu|informix|0:ONMO:-z 4256
Checando a auditoria de um determinado usuário
-------------------------------------------------------------------------------------------------
26/11/2013                      ***** INFORMIX BASIC SERVICES *****                      11:03:10
-------------------------------------------------------------------------------------------------
                                             informix

 Digite o USER ID do usuario ....: webgrb
Resultado
-------------------------------------------------------------------------------------------------
26/11/2013                      ***** INFORMIX BASIC SERVICES *****                      11:03:10
-------------------------------------------------------------------------------------------------
                                             informix

ONLN|2012-09-05 00:11:48.969|perses.01.domain01|380308|morfeu|webgrb|-1:STSN:perses.01.domain01
ONLN|2012-09-05 00:17:00.655|perses.01.domain01|379536|morfeu|webgrb|-1:STSN:perses.01.domain01
ONLN|2012-09-06 00:11:53.918|perses.01.domain01|420380|morfeu|webgrb|-1:STSN:perses.01.domain01
ONLN|2012-09-06 00:16:57.732|perses.01.domain01|417812|morfeu|webgrb|-1:STSN:perses.01.domain01
ONLN|2012-09-06 09:33:30.862|simeonte.01.domain01|13494|morfeu|webgrb|-1:STSN
ONLN|2012-09-06 10:07:57.297|simeonte.01.domain01|13925|morfeu|webgrb|0:CRVW:dw_sig_desenv:2689:webgrb:vdw_pdevento_ageprev_2002
Segunda facilidade da Auditoria

Esta segunda opção não terminei mais é bem legal, gravo os arquivos de auditoria em um banco no informix, primeiro vamos criar um banco no dbspace data, o banco vai ser no log;
echo "create database aafai240 in data;" | dbaccess sysmaster

Database selected.

Database closed.

Database created.

Database closed.
Criando a tabela no banco aafai240 onde vou carregar os dados da tabela
SQL:   New  Run  Modify  Use-editor  Output  Choose  Save  Info  Drop  Exit
Run the current SQL statements.

----------------------- aafai240@desenv ----------- Press CTRL-W for Help --------

CREATE TABLE dba.audit_db (
    audit_system        CHAR(4) NOT NULL,
    audit_dt_ocorrido   CHAR(23) NOT NULL,
    audit_origem        CHAR(50) NOT NULL,
    audit_pd            CHAR(10) NOT NULL,
    audit_instancia     CHAR(20) NOT NULL,
    audit_user_id       CHAR(30) NOT NULL,
    audit_detail        CHAR(110) NOT NULL,
        ENABLED
)
Executando a carga -- esta é a parte que quero automatizar -- estou estudando para ver como faço
echo "LOAD FROM '/export/home/informix/logs/audit/primary.1' insert into audit_db;" | dbaccess aafai240
echo "LOAD FROM '/export/home/informix/logs/audit/primary.2' insert into audit_db;" | dbaccess aafai240
echo "LOAD FROM '/export/home/informix/logs/audit/primary.3' insert into audit_db;" | dbaccess aafai240
echo "LOAD FROM '/export/home/informix/logs/audit/primary.4' insert into audit_db;" | dbaccess aafai240
echo "LOAD FROM '/export/home/informix/logs/audit/primary.5' insert into audit_db;" | dbaccess aafai240
echo "LOAD FROM '/export/home/informix/logs/audit/primary.6' insert into audit_db;" | dbaccess aafai240
echo "LOAD FROM '/export/home/informix/logs/audit/primary.7' insert into audit_db;" | dbaccess aafai240
echo "LOAD FROM '/export/home/informix/logs/audit/primary.8' insert into audit_db;" | dbaccess aafai240
echo "LOAD FROM '/export/home/informix/logs/audit/primary.9' insert into audit_db;" | dbaccess aafai240
Checando os dados Gravados
SQL:   New  Run  Modify  Use-editor  Output  Choose  Save  Info  Drop  Exit
Run the current SQL statements.

----------------------- aafai240@desenv -------- Press CTRL-W for Help --------

select * from 'dba'.audit_db 
Resultado
DISPLAY:   Next  Restart  Exit
Display next page of results. 

----------------------- aafai240@desenv -------- Press CTRL-W for Help --------

audit_system       ONLN
audit_dt_ocorrido  2011-10-04 10:01:45.320
audit_origem       cratos.domain
audit_pd           29382
audit_instancia    primary
audit_user_id      dba
audit_detail       0:GRTB:web_quaker:263:2:dba:public:

audit_system       ONLN
audit_dt_ocorrido  2011-10-04 10:01:45.350
audit_origem       cratos.domain
audit_pd           29382
audit_instancia    primary
audit_user_id      dba
audit_detail       0:RVTB:web_quaker:263:2:dba:public:0

audit_system       ONLN
audit_dt_ocorrido  2011-10-04 10:01:45.354
audit_origem       cratos.domain
audit_pd           29382
audit_instancia    primary
audit_user_id      dba
audit_detail       0:GRTB:web_quaker:263:2:dba:silva,lregra:
Ferramenta Nativa do Informix

O comando onshowaudit no Informix dá para fazer algumas algumas consultas nos logs de auditoria;
[s343:informix]$/export/home/informix/claudemar> onshowaudit ?

ONSHOWAUDIT Secure Audit Utility
INFORMIX-SQL Version 11.70.FC2


  USAGE: onshowaudit [-I | -O] [-f (input file)] [-u (user name)] [-s (server name)] 
         onshowaudit [-n (server number)] [-l [(loadfile)]]

         -I : read from the Informix audit trail
         -O : read from the OS audit trail
         -f : read a single audit trail file (Informix mode only)
         -u : extract only records concerning 
         -s : extract only records concerning 
         -n : extract audit records from ADTPATH in ADTCFG.
         -l [(loadfile)] : print audit records with delimiters
Comando mostrando o arquivo de log de auditoria /work/aaodir/ol_lx_rama.7
[s343:informix]$/export/home/informix/claudemar> onshowaudit -I -f /work/aaodir/ol_lx_rama.7

ONSHOWAUDIT Secure Audit Utility
INFORMIX-SQL Version 11.70.FC4
ONLN|2011-10-06 15:28:25.000|fido|11647|abc1170tcp|informix|0:RDRW:stores_demo:106:2097230:309:: 
Program Over. 
Mostrando apenas registros de usr1
[s343:informix]$/export/home/informix/claudemar> onshowaudit -I -f /work/aaodir/ol_lx_rama.7 -u usr1 
ONLN|2009-05-29 09:09:02.000|s132.TX|-1|abc1170tcp|informix|0:DRTB:stores_demo:4294967295:dbmd3:usr1:0:1050535
ONLN|2009-05-29 09:09:07.000|s132.TX|-1|abc1170tcp|informix|0:CRTB:stores_demo:0:dbmd1:usr1:0:-
ONLN|2009-05-29 09:09:07.000|s132.TX|-1|abc1170tcp|informix|0:DRTB:stores_demo:4294967295:dbmd1:usr1:0:1050535
ONLN|2009-05-29 09:09:07.000|s132.TX|-1|abc1170tcp|informix|0:CRTB:stores_demo:0:dbmd2:usr1:0:-
ONLN|2009-05-29 09:09:07.000|s132.TX|-1|abc1170tcp|informix|0:DRTB:stores_demo:4294967295:dbmd2:usr1:0:1050535
ONLN|2009-05-29 09:09:07.000|s132.TX|-1|abc1170tcp|informix|0:CRTB:stores_demo:0:dbmd3:usr1:0:-
ONLN|2009-05-29 09:09:07.000|s132.TX|-1|abc1170tcp|informix|0:DRTB:stores_demo:4294967295:dbmd3:usr1:0:1050535
Soluções Encontradas

A aqueles clientes que estão sujeitas a leis e a regulamentos de uma forma ou de outra, muitos se perguntam sobre quais operações devem ser auditadas. Não há uma resposta curta para isso, com a ajuda desse link (Clique Aqui) encontrei um script (Clique Aqui) dá para ter uma ideia sobre o que auditar;

Rodei o script e ele me mostrou algumas mascaras com as permissões a serem auditadas como exemplo;
onaudit -a -u _audit -e +CRAM,DRAM,LSAM,UPAM
onaudit -a -u _crud -e +DLRW,INRW,RDRW,UPRW
onaudit -a -u _dba -e +CRDB,DRDB,RNDB,STRS
onaudit -a -u _dbsa -e +ADCK,ADLG,CRBS,CRDS,DNCK,DNDM,DRBS,DRCK,DRDS,DRLG,LGDB,MDLG,RMCK,RNDS,STSC,UPCK,UPDM
onaudit -a -u _ddl -e +ACTB,ALFR,ALIX,ALSQ,ALTB,BGTX,CLDB,CMTX,CRIX,CRSN,CRSP,CRSQ,CRTB,CRTR,CRVW,DRIX,DRSN,DRSP,DRSQ,DRTB,DRTR,DRVW,LKTB,LSDB,OPDB,RLTX,RNIX,RNSQ,RNTC,STCN,STOM,STOP,STRT,STSN,SVXD,TCTB,ULTB,USSP,USTB
onaudit -a -u _dml -e +CRPT,EXSP,SCSP,STCO,STDF,STDS,STEP,STEV,STEX,STIL,STLM,STNC,STPR,STTX
onaudit -a -u _domain -e +CRDM,DRDM
onaudit -a -u _ius -e +ALME,ALOC,CRAG,CRBT,CRCT,CRDT,CRME,CROC,CRRT,CRXD,CRXT,DRAG,DRCT,DRME,DROC,DRRT,DRTY,DRXD,DRXT
onaudit -a -u _lbac -e +ALLC,CRLB,CRLC,CRPL,DRLB,DRLC,DRPL,GRLB,GRSA,GRSS,GRXM,RNLB,RNLC,RNPL,RVLB,RVSA,RVSS,RVXM
onaudit -a -u _onutils -e +ONAU,ONBR,ONCH,ONIN,ONLG,ONLO,ONMN,ONMO,ONPA,ONPL,ONSP,ONST,ONTP,ONUL
onaudit -a -u _optical -e +ALOP,CROP,DROP,RLOP,RSOP,TMOP
onaudit -a -u _perms -e +CRRL,DRRL,GRDB,GRDR,GRFR,GRRL,GRTB,RVDB,RVDR,RVFR,RVRL,RVTB,STDP,STRL,STSA

11/20/2013

Reorganizando uma Instancia - Informix


Uma instancia do Informix foi definida para ficar todos os bancos usando uma dbspace especifica;
   +------------+-----------------+----------+ 
   | Dbspace    | Database        | Space    | 
   +------------+-----------------+----------+-----------+
   | rootdbs    | syscdr          |          | Bancos    | 
   | rootdbs    | sysutils        |          |           | 
   | rootdbs    | sysuser         |          |           |
   | rootdbs    | sysadmin        | 35 Gb    | SYS*      | 
   +------------+-----------------+----------+-----------+
   | phydbs     |                 | 20 Gb    |
   +------------+-----------------+----------+
   | tmp1dbs    |                 | 50 Gb    |
   | tmp2dbs    |                 | 50 Gb    |
   +------------+-----------------+----------+
   | logdbs     |                 | 5 Gb     |
   +------------+-----------------+----------+-----------+
   | usrdbs     | Auditoria       | 800 Gb   | Bancos    | 
   | usrdbs     | tributario      | 600 GB   |           |
   | usrdbs     | etl_dw          | 400 Gb   | de        | 
   | usrdbs     | desenv          | 20  Gb   |           |
   | usrdbs     | gql             | 20  Gb   | Produção  |
   +------------+-----------------+----------+-----------+
Vamos deixar cada banco (produção) em um dbspace exclusiva (cada um no seu quadrado) - usando o utilitário dbexport (backup) e restaurar via (dbimport) apontando a nova dbspace, este vai ser o novo formato dos dbspace do novo banco;
   +------------+-----------------+----------+
   | Dbspace    | Database        | Space    |
   +------------+-----------------+----------+-----------+
   | rootdbs    | syscdr          |          | Bancos    |
   | rootdbs    | sysutils        |          |           |
   | rootdbs    | sysuser         |          |           | 
   | rootdbs    | sysadmin        | 35 Gb    | SYS*      |     
   +------------+-----------------+----------+-----------+
   | phydbs     |                 | 20 Gb    |
   +------------+-----------------+----------+
   | tmp1dbs    |                 | 50 Gb    |
   | tmp2dbs    |                 | 50 Gb    |
   +------------+-----------------+----------+
   | logdbs     |                 | 5 Gb     |
   +------------+-----------------+----------+-----------+
   | aud_dbs    | Auditoria       | 800 Gb   | Bancos    | 
   +------------+-----------------+----------+           |
   | trb_dbs    | tributario      | 600 Gb   |           |
   +------------+-----------------+----------+           | 
   | etl_dbs    | etl_dw          | 400 Gb   | de        |
   +------------+-----------------+----------+           |
   | des_dbs    | desenv          | 20 Gb    |           |
   +------------+-----------------+----------+           |
   | gql_dbs    | gql             | 20 Gb    | Produção  |
   +------------+-----------------+----------+-----------+
Começando, vamos preparar a instalação do banco Informix no Hat Red na VM - Super tranquilo;
[xUnion:informix]$/export/home/informix/ su root
Password:
[xUnion:root]#/export/home/informix> cd /opt
[xUnion:root]#/opt> mkdir informix1170FC2
[xUnion:root]#/opt> ln -s informix1170FC2 informix
[xUnion:informix]$/opt/informix> tar -xvf IIF_11.70.FC2_linux_64.tar
Instalando o Informix
[xUnion:root]#/opt/informix> ./ids_install
Preparing to install...
Extracting the JRE from the installer archive...
Unpacking the JRE...
Extracting the installation resources from the installer archive...
Configuring the installer for this system's environment...

Launching installer...

Preparing CONSOLE Mode Installation...

===============================================================================
IBM Informix Software Bundle                     (created with InstallAnywhere)
-------------------------------------------------------------------------------
Enter para continuar
===============================================================================
Getting started with IBM Informix Software Bundle
-------------------------------------------------

InstallAnywhere will guide you through the installation of IBM Informix
Software Bundle.

1. Release Notes
The Release Notes can be found in
/opt/informix1170FC2/server/doc/ids_unix_relnotes_11.70.html

2. Installation Guide
Please view the Installation / Quick Beginnings Guide at
/opt/informix1170FC2/server/doc/ids_unix_installg_11.70.pdf

3. Launch Information Center
Access the IDS 11.70 Information Center at
http://publib.boulder.ibm.com/infocenter/idshelp/v117/index.jsp

To Begin Installation,
Respond to each prompt to proceed to the next step in the installation.
If you want to change something on a previous step, type 'back'.

You may cancel this installation at any time by typing 'quit'.

PRESS  TO CONTINUE:
1 (enter) para aceitar os termos
===============================================================================

    International Program License Agreement
    
    Part 1 - General Terms
    
    BY DOWNLOADING, INSTALLING, COPYING, ACCESSING, CLICKING ON AN
    "ACCEPT" BUTTON, OR OTHERWISE USING THE PROGRAM, LICENSEE AGREES TO
    THE TERMS OF THIS AGREEMENT. IF YOU ARE ACCEPTING THESE TERMS ON
    BEHALF OF LICENSEE, YOU REPRESENT AND WARRANT THAT YOU HAVE FULL
    AUTHORITY TO BIND LICENSEE TO THESE TERMS. IF YOU DO NOT AGREE TO
    THESE TERMS,
    
    - DO NOT DOWNLOAD, INSTALL, COPY, ACCESS, CLICK ON AN "ACCEPT" BUTTON,
    OR USE THE PROGRAM; AND
    
    - PROMPTLY RETURN THE UNUSED MEDIA, DOCUMENTATION, AND PROOF OF
    ENTITLEMENT TO THE PARTY FROM WHOM IT WAS OBTAINED FOR A REFUND OF THE
    AMOUNT PAID. IF THE PROGRAM WAS DOWNLOADED, DESTROY ALL COPIES OF THE
    PROGRAM.
    

Press Enter to continue viewing the license agreement, or enter "1" to
   accept the agreement, "2" to decline it, "3" to print it, "4" to read
   non-IBM terms, or "99" to go back to the previous screen.: 1
1 (enter)
===============================================================================
Installation Goals
------------------

What do you want to accomplish?

  ->1- Install products and features
    2- Extract the product files (-DLEGACY option)
    3- Create an RPM image for redistribution

ENTER THE NUMBER FOR YOUR CHOICE, OR PRESS  TO ACCEPT THE DEFAULT::
Esta ok o caminho
===============================================================================
Installation Location
---------------------

Choose location for software installation

  Default Install Folder: /opt/informix

ENTER AN ABSOLUTE PATH, OR PRESS  TO ACCEPT THE DEFAULT
      :
1 (enter)
===============================================================================
Installation Type
-----------------

Select the installation type.

Typical: Install the database server with all features and a database server that
is configured with default values. Includes:
** Client Software Development Kit (CSDK)
** Java Database Connectivity (JDBC)
Minimum disk space required: 700-800MB

Custom: Install the database server with specific features and software that you need.
Optionally install a configured database server instance.
Minimum disk space required: 75 MB (without a server instance)

  ->1- Typical
    2- Custom

ENTER THE NUMBER FOR YOUR CHOICE, OR PRESS  TO ACCEPT THE DEFAULT::
Não quero criar uma instancia;
===============================================================================
Server Instance Creation
------------------------

Create a server instance?

  ->1- Yes - create an instance
    2- No - do not create an instance

ENTER THE NUMBER FOR YOUR CHOICE, OR PRESS  TO ACCEPT THE DEFAULT:: 2
Informação do que vai ser instalado
===============================================================================
Installation Summary
--------------------

Please review the following before continuing:

Product Name:
    IBM Informix Software Bundle

Install Folder:
    /opt/informix

Product Features:
    IBM Informix database server,
    Base Server,
    Extensions and tools,
    J/Foundation,
    Database extensions,
    Conversion and reversion support,
    XML publishing,
    Demonstration database scripts,
    Enterprise Replication,
    Data loading utilities,
    onunload and onload utilities,
    dbload utility,
    High-Performance Loader,
    Backup and Restore,
    archecker utility,
    ON-Bar utility,
    Informix Storage Manager,
    Informix interface to Tivoli Storage Manager,
    Administrative utilities,
    Performance monitoring utilities,
    Miscellaneous monitoring utilities,
    Auditing utilities,
    Database import and export utilities,
    IBM Informix Client SDK,
    IBM Informix Object Interface for C++,
    IBM Informix Object Interface for C++ demos,
    IBM Informix ESQL/C,
    7.2 application compatibility module,
    IBM Informix ESQL/C demos,
    IBM Informix LIBDMI for client applications,
    IBM Informix ODBC Driver,
    IBM Informix ODBC Driver demos,
    Global Language Support (GLS),
    West European and Americas,
    East European and Slavic,
    Japanese,
    Korean,
    Chinese,
    Thai,
    IBM Informix JDBC

Disk Space Information (for Installation Target):
    Required:  579,278,432 bytes
    Available: 145,188,388,864 bytes

PRESS  TO CONTINUE:
Esta correto (enter)
===============================================================================
Ready To Install
----------------

InstallAnywhere is now ready to install IBM Informix Software Bundle onto your
system at the following location:

   /opt/informix

PRESS  TO INSTALL:
Instalando
===============================================================================
Installing...
-------------

[==================|==================|==================|==================]
[------------------|------------------|------------------|------------------]
Instalou com sucesso
===============================================================================
Installation Complete
---------------------

Congratulations! IBM Informix Software Bundle installation is complete.

Product install status:
IBM Informix 11.70: Successful
IBM Informix Client-SDK: Successful
IBM Informix JDBC Driver: Successful


PRESS  TO EXIT THE INSTALLER:
[xUnion:root]#/opt/informix>
Copiando os arquivo onconfig/sqlhosts do servidor original;
[xUnion:informix]$/export/home/informix> cp onconfig /opt/informix/etc
[xUnion:informix]$/export/home/informix> cp sqlhosts /opt/informix/etc
Subindo e inicializando a instancia
[xUnion:informix]$/export/home/; oninit -i
Reading configuration file '/opt/informix/etc/onconfig'...succeeded
Creating /export/home/informix/space/.infxdirs...succeeded
Checking config parameters...succeeded
Allocating and attaching to shared memory...succeeded
Creating resident pool 81858 kbytes...succeeded
Allocating 40016 kbytes for buffer pool of 2K page size...succeeded
Allocating 4328016 kbytes for buffer pool of 16K page size...succeeded
Creating infos file "/opt/informix/etc/.infos.permanente_db"...succeeded
Linking conf file "/opt/informix/etc/.conf.permanente_db"...succeeded
Initializing rhead structure...succeeded
Writing to infos file...succeeded
Initialization of Encryption...succeeded
Initializing ASF...succeeded
Initializing Dictionary Cache and SPL Routine Cache...succeeded
Bringing up ADM VP...succeeded
Creating VP classes...succeeded
Onlining 2 additional cpu vps...succeeded
Onlining 3 IO vps...succeeded
Forking main_loop thread...succeeded
succeeded
Forking 1 'soctcp' listener threads...succeeded
Starting tracing...succeeded
Initializing 50 flushers...succeeded
Initializing SDS Server network connections...succeeded
Initializing log/checkpoint information...succeeded
Initializing dbspaces...succeeded
Opening primary chunks...succeeded
Opening mirror chunks...succeeded
Validating chunks...succeeded
Initialize Async Log Flusher...succeeded
Starting B-tree Scanner...succeeded
Initializing DBSPACETEMP list...succeeded
Initializing dataskip structure...succeeded
Checking for temporary tables to drop...succeeded
Updating Global Row Counter...
Forking onmode_mon thread...succeeded
Creating periodic thread...succeeded
Starting scheduling system...succeeded
Verbose output complete: mode = 5
Checando o arquivo de log - esta tudo ok sem mensagem de erro;
05/22/10 11:03:58  On-Line Mode
05/22/10 11:03:59  SCHAPI: Started dbScheduler thread.
05/22/10 11:03:59  Auto Registration is synced
05/22/10 11:03:59  Booting Language  from module <>
05/22/10 11:03:59  Loading Module 
05/22/10 11:03:59  SCHAPI: Started 2 dbWorker threads.
05/22/10 11:04:02  Defragmenter cleaner thread now running
05/22/10 11:04:02  Defragmenter cleaner thread cleaned:0 partitions
05/22/10 11:04:59  Loading Module <$INFORMIXDIR/extend/ifxmngr/ifxmngr.bld>
05/22/10 11:04:59  The C Language Module  loaded
Criando o dbspace tmp1dbs - (raw device) 50 Gb
chown informix:informix /dev/sdb2
chmod 660 /dev/sdb2
ln -s /dev/sdb2 /dev/informix/tmp1_dbs
touch /dev/informix/tmp1_dbs
chmod 660 /dev/informix/tmp1_dbs
chown informix:informix /dev/informix/tmp1_dbs
onspaces -c -d tmp1dbs -t -p /dev/informix/tmp1_dbs -s 52428800 -o 0 -k 16
Criando o dbspace tmp2dbs - (raw device) 50 Gb
chown informix:informix /dev/sdb3
chmod 660 /dev/sdb3
ln -s /dev/sdb3 /dev/informix/tmp2_dbs
touch /dev/informix/tmp1_dbs
chmod 660 /dev/informix/tmp1_dbs
chown informix:informix /dev/informix/tmp1_dbs
onspaces -c -d tmp1dbs -t -p /dev/informix/tmp1_dbs -s 52428800 -o 0 -k 16
Criando o dbspace logdbs - logical logs (raw device) - 5 Gb
chown informix:informix /dev/sdb6
chmod 660 /dev/sdb6
ln -s /dev/sdb6 /dev/informix/logdbs
touch /dev/informix/logdbs
chmod 660 /dev/informix/logdbs
chown informix:informix /dev/informix/logdbs
onspaces -c -d logdbs -p /dev/informix/logdbs -o 0 -s 5242880
Criando o dbspace aud_dbs (raw device) - 800 Gb
chown informix:informix /dev/sdb7
chmod 660 /dev/sdb7
ln -s /dev/sdb7 /dev/informix/aud_dbs
touch /dev/informix/aud_dbs
chmod 660 /dev/informix/aud_dbs
chown informix:informix /dev/informix/aud_dbs
onspaces -c -d aud_dbs -p /dev/informix/aud_dbs -s 838860800 -o 0  -k 16
Criando o dbspace trb_dbs (raw device) - 600 Gb
chown informix:informix /dev/sdb8
chmod 660 /dev/sdb8
ln -s /dev/sdb8 /dev/informix/trb_dbs
touch /dev/informix/trb_dbs
chmod 660 /dev/informix/trb_dbs
chown informix:informix /dev/informix/trb_dbs
onspaces -c -d trb_dbs -p /dev/informix/trb_dbs -s 629145600 -o 0  -k 16
Criando o dbspace etl_dbs (raw device) - 400 Gb
chown informix:informix /dev/sdb9
chmod 660 /dev/sdb9
ln -s /dev/sdb9 /dev/informix/etl_dbs
touch /dev/informix/etl_dbs
chmod 660 /dev/informix/etl_dbs
chown informix:informix /dev/informix/etl_dbs
onspaces -c -d etl_dbs -p /dev/informix/etl_dbs -s 419430400 -o 0  -k 16
Criando o dbspace des_dbs (raw device) - 20 Gb
chown informix:informix /dev/sdb10
chmod 660 /dev/sdb10
ln -s /dev/sdb10 /dev/informix/des_dbs
touch /dev/informix/des_dbs
chmod 660 /dev/informix/des_dbs
chown informix:informix /dev/informix/des_dbs
onspaces -c -d des_dbs -p /dev/informix/des_dbs -s 20971520 -o 0  -k 16
Criando o dbspace gql_dbs (raw device) - 20 Gb
chown informix:informix /dev/sdb11
chmod 660 /dev/sdb11
ln -s /dev/sdb11 /dev/informix/gql_dbs
touch /dev/informix/gql_dbs
chmod 660 /dev/informix/gql_dbs
chown informix:informix /dev/informix/gql_dbs
onspaces -c -d gql_dbs -p /dev/informix/gql_dbs -s 20971520 -o 0  -k 16
Para criar as llogs vou criar uma shell script que vai fazer um loop até não ter mais espaço disponivel na logdbs;
[xUnion:informix]$/export/home/informix> vi create_llog.sql
Este vai ser o comando que vai rodar várias vezes e criar as llog
CT=1
LIMIT=80
while [ "$CT" -lt "$LIMIT" ]
do
echo $CT
onparams -a -d logdbs -s 102400;
let "CT +=1"
done
Dando permissão e rodando;
[xUnion:informix]$/export/home/informix> chmod 755 create_llog.sql
[xUnion:informix]$/export/home/informix> ./create_llog.sql
Ficou assim - cada banco vai ficar em uma dbspace especifica
Chunks
address          chunk/dbs     offset     size       free       bpages     flags pathname
159e211d0        1      1      0          18350080   18316759              PO-B-- /dev/informix/rootdbs
15c304378        2      2      0          3276800    3276747               PO-B-- /dev/informix/tmp1_dbs
15c304578        3      3      0          3276800    3276747               PO-B-- /dev/informix/tmp2_dbs
15c304778        4      4      0          10485760   10485707              PO-B-- /dev/informix/phydbs
15c304978        5      5      0          2621440    10187                 PO-B-- /dev/informix/logdbs
15c304b78        6      6      0          52428800   52428747              PO-B-- /dev/informix/aud_dbs
15c304d78        7      7      0          39321600   39321547              PO-B-- /dev/informix/trb_dbs
15c306028        8      8      0          26214400   26214347              PO-B-- /dev/informix/etl_dbs
15c306228        9      9      0          1310720    1310667               PO-B-- /dev/informix/des_dbs
15c306428        10     10     0          1310720    1133297               PO-B-- /dev/informix/gql_dbs
10 active, 32766 maximum
Antes todos ficavam em uma dbspace - (chunk 6 até 14);
Chunks
address          chunk/dbs     offset     size       free       bpages     flags pathname
15821e1d0        1      1      0          18350080   18066171              PO-B-D /dev/sdb20
15a855028        2      2      0          3276800    3271193               PO-B-- /dev/sdb21
15a855228        3      3      0          3276800    3271197               PO-B-- /dev/sdb22
15a855428        4      4      0          10485760   524260                PO-B-D /dev/sdb23
15a855628        5      5      0          2621440    10212                 PO-B-D /dev/sdb24
15a855828        6      6      0          34078720   262831                PO-B-D /dev/sdb25
15a855a28        7      6      0          34078720   2335458               PO-B-D /dev/sdb26
15a855c28        8      6      0          4966626    150616                PO-B-D /home/informix/pool/nx2009_usrdbs_fisico_1
15a855e28        9      6      0          1310720    117589                PO-B-D /home/informix/pool/nx2009_usrdbs_fisico_2
15a856028        10     6      0          655360     97931                 PO-B-D /home/informix/pool/nx2009_usrdbs_fisico_3
15a856228        11     6      0          1310720    175558                PO-B-D /home/informix/pool/nx2009_usrdbs_fisico_4
15a856428        12     6      0          1638400    126094                PO-B-D /home/informix/pool/nx2009_usrdbs_fisico_5
15a856628        13     6      0          2949120    409723                PO-B-D /home/informix/pool/nx2009_usrdbs_fisico_6
15a856828        14     6      0          22020096   15405876              PO-B-D /home/informix/pool/nx2009_usrdbs_fisico_7
14 active, 32766 maximum
Instalando o Compactador/Descompactador o backup onbar vai compactar o backup - estou antecipando; Clique Aqui
[xUnion:root]#/tmp> rpm -ivh pigz-2.1.6-1.el6.rf.x86_64.rpm
warning: pigz-2.1.6-1.el6.rf.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 6b8d79e6: NOKEY
Preparing...                ########################################### [100%]
   1:pigz                   ########################################### [100%]
[xUnion:root]#/tmp>
[xUnion:root]#/tmp> rpm -ql pigz
/usr/bin/pigz
/usr/bin/unpigz
/usr/share/doc/pigz-2.1.6
/usr/share/doc/pigz-2.1.6/README
/usr/share/doc/pigz-2.1.6/pigz.pdf
/usr/share/man/man1/pigz.1.gz
[xUnion:root]#/tmp>
[xUnion:root]#/tmp>
[xUnion:root]#/tmp> rpm -ql pigz
/usr/bin/pigz
/usr/bin/unpigz
/usr/share/doc/pigz-2.1.6
/usr/share/doc/pigz-2.1.6/README
/usr/share/doc/pigz-2.1.6/pigz.pdf
/usr/share/man/man1/pigz.1.gz
[xUnion:root]#/tmp>
[xUnion:root]#/tmp>
[xUnion:root]#/tmp> pigz
Usage: pigz [options] [files ...]
  will compress files in place, adding the suffix '.gz'.  If no files are
  specified, stdin will be compressed to stdout.  pigz does what gzip does,
  but spreads the work over multiple processors and cores when compressing.

Options:
  -0 to -9, --fast, --best   Compression levels, --fast is -1, --best is -9
  -b, --blocksize mmm  Set compression block size to mmmK (default 128K)
  -p, --processes n    Allow up to n compression threads (default is the
                       number of online processors, or 8 if unknown)
  -i, --independent    Compress blocks independently for damage recovery
  -R, --rsyncable      Input-determined block locations for rsync
  -d, --decompress     Decompress the compressed input
  -t, --test           Test the integrity of the compressed input
  -l, --list           List the contents of the compressed input
  -f, --force          Force overwrite, compress .gz, links, and to terminal
  -r, --recursive      Process the contents of all subdirectories
  -S, --suffix .sss    Use suffix .sss instead of .gz (for compression)
  -z, --zlib           Compress to zlib (.zz) instead of gzip format
  -K, --zip            Compress to PKWare zip (.zip) single entry format
  -k, --keep           Do not delete original file after processing
  -c, --stdout         Write all processed output to stdout (won't delete)
  -N, --name           Store/restore file name and mod time in/from header
  -n, --no-name        Do not store or restore file name in/from header
  -T, --no-time        Do not store or restore mod time in/from header
  -q, --quiet          Print no messages, even on error
  -v, --verbose        Provide more verbose output
[xUnion:root]#/tmp>
Alterado a onconfig para a compactação do backup;
BACKUP_FILTER           /usr/bin/pigz
RESTORE_FILTER          /usr/bin/unpigz
Antes de rodar o backup (dbexport) é simples, porém é preciso ter conhecimento de algumas informações:

- É obrigatório acesso unico e exclusivo ao banco de dados para o usuário que irá exportar o banco.
- Se houver algum usuário conectado no banco a exportação não irá ocorrer.
- Para exportação dos formatos de data é utilizado as variáveis de ambiente DBDATE, GL_DATETIME e USE_DTENV.
- A performance irá depender principalmente do I/O de disco onde os dados estão alocados e onde serão gerados.
- Para melhorar performance pode-se utilizar recurso de paralelismo se definido a variável PDQPRIORITY entre outras configurações de conectividade.
- Não é salvo: ultimo valor de campo SERIAL e modo de log do banco de dados
- São exportados todas as informações, como: tabelas, indices, sequences, roles, grants, estatisticas, triggers, stored procedures e etc.
- Configurações da Instancia (ONCONFIG) e dbspaces não são exportados pois não fazem parte do banco de dados, eles estão "acima" do banco.

Ao exportar uma base de dados o dbexport irá salvar todos os dados em um diretório, o nome deste diretório é o nome da base mais a extenção ".exp", durante a execução ele irá exibir o script dos objetos que estão sendo exportados.

- No servidor antigo - Iniciando o backup dos bancos de produção
dbexport -d auditoria -si
dbexport -d tributario -si
dbexport -d etl_dw -si
dbexport -d desenv -si
dbexport -d gql -si
- No servidor novo - Restaurando o backup - O parametro -d xxxx estou informando o novo dbspace que o banco vai ser gravado para esta banco;
dbimport auditoria -d aud_dbs
dbimport tributario -d trb_dbs
dbimport etl_dw -d etl_dbs
dbimport desenv -d des_dbs
dbimport gql -d gql_dbs
Considerações Finais - Teste feitos antes de liberar;
- Update Statistic - Ok
- Backup Onbar da Instancia - Ok
- Sincronizar contas; Ok
- Copiar passwd e shadow; Ok
- Sincronizar diretorios dos usuários; Ok
- Alterar o IP (do servidor velho) e do servidor novo; Ok
- Desligar o servidor antigo. Ok
- Reiniciar o novo servidor. Ok
- Compactar as tabelas para aumentar o espaço livre - (futuramente com calma - vou fazer);
- Testar o backup Logical Log - ok testado;
- Liberado os analistas testes - Ok;
- Liberada para produção - Ok;