sexta-feira, 10 de fevereiro de 2017

Alocando poll threads para uma combinação de interface/protocolo com o parâmetro de configuração NETTYPE

O parâmetro de configuração NETTYPE configura threads de pesquisa para cada tipo de conexão que suporta a instância do servidor de banco de dados. Você pode usar esse parâmetro de configuração para alocar mais de um segmento de pesquisa para uma combinação de interface/protocolo.
Defina o parâmetro de configuração NETTYPE da seguinte maneira: 
  1. Especifique SQLI, drtlitcp ou drsoctcp como o protocolo de conexão.
  2. Adicione informações sobre o número de segmentos de pesquisa, O número de conexões e a classe de processador virtual.
For example, specify:


NETTYPE drtlitcp,3,2,CPU 


Uma entrada NETTYPE pode manipular vários aliases de servidor de banco de dados no mesmo tipo de protocolo. Assim, quando DRDA® está em uso, O segmento de rede (nettype drtlitcp ou drsoctcp) geralmente tem pelo menos dois soquetes aberto e ouvindo conexões. Um socket está aberto para conexões SQLI e outro está aberto para conexões DRDA. Sockets adicionais podem estar abertos se muitos aliases de servidor separados estiverem configurados.

DRDA - Configurando o Informix para conexões com IBM Data Server Clients

Você deve ter instalado um IBM® Data Server Client e o driver aplicável. 
Este tópico explica como configurar o IBM Informix® para conexões com clientes do IBM Data Server. 
Para configurar o Informix para se conectar a um IBM Data Server Client: 
    Configure um novo server alias no arquivo sqlhosts ou no registro do Windows, usando o protocolo de conexão drtlitcp ou drsoctcp. Especifique informações em um dos seguintes formatos:

    server_name  drtlitcp machine_name service name/portnumber
    server_name  drsoctcp machine_name service name/portnumber
    
    
    Por exemplo, para uma nova entrada de arquivo sqlhosts para uma conexão DRDA®, especifique:
    ajm_dr drtlitcp ajmhost 9502

    Se você estiver definindo entradas SQLHOSTS para o Gerenciador de Conexões, inclua entradas para o protocolo de conexão drtlitcp ou drsoctcp, conforme mostrado na lista a seguir:
    ajm_primary   onsoctcp   ajmserver  ajmsrv
    ajm_hdr       onsoctcp   ajmhdr     ajmhdrsrv
    ajm_sds       onsoctcp   ajmsds     ajmsdssrv
    ajm_dr        drsoctcp   ajmdr      ajmdrsrv
    ajm_hdr_dr    drsoctcp   ajmhdr     ajmhdrsrv
    ajm_sds_dr    drsoctcp   ajmsds     ajmsdssrv
     
Verifique se o arquivo onconfig lista a conexão DRDA como um dos aliases de servidor. O alias não deve ser o DBSERVERNAME.
 
Use o DRDA para se conectar ao servidor.
Se você receber o erro-23104 ao acessar o servidor através do protocolo DRDA, o aplicativo cliente pode estar tentando vincular um valor que tenha uma codificação diferente da página de código ou conjunto de códigos da localidade do banco de dados. Defina a variável de ambiente GL_USEGLU como 1 antes de iniciar a instância do Informix. Isso permite que o servidor inicialize os conversores Unicode apropriados que são necessários para manipular as conversões de conjunto de códigos.

Visão geral do DRDA

Distributed Relational Database Architecture ™ (DRDA®) é um conjunto de protocolos que permitem a comunicação entre aplicativos e sistemas de banco de dados em diferentes plataformas e permite que dados relacionais sejam distribuídos entre várias plataformas.

Qualquer combinação de produtos de gerenciamento de banco de dados relacional que usam DRDA pode ser conectada para formar um sistema de gerenciamento de banco de dados relacional distribuído. O DRDA coordena a comunicação entre sistemas, definindo o que deve ser trocado e como ele deve ser trocado.


Você pode configurar o IBM® Informix® para usar o DRDA para responder às solicitações de uma API comum (por exemplo, do IBM Data Server JDBC Driver e do IBM Data Server .NET Provider).
  
Você também pode habilitar conexões DRDA entre uma API cliente e o Gerenciador de Conexões Informix (o utilitário oncmsm) que gerencia e redireciona as solicitações de conexão do cliente entre um servidor primário e um ou mais servidores secundários. O Gerenciador de Conexões fornece recursos de recuperação automática e balanceamento de carga. Quando um cliente faz uma solicitação para se conectar a um servidor, o Connection Manager roteia a solicitação de conexão para o servidor apropriado com base em uma configuração de nível de serviço. Você pode configurar o Gerenciador de Conexões para trocar automaticamente para servidores específicos ou para tipos específicos de servidores. Para obter mais informações sobre o Gerenciador de Conexões e instruções para configurá-lo, consulte  Manage cluster connections with the Connection Manager.

Enterprise Replication, replicação de dados e utilitários Informix, como DB-Access, requerem conexões SQLI. Os utilitários Enterprise Replication não operam através de conexões DRDA. No entanto, as ligações Enterprise Replication podem coexistir com ligações DRDA.
  
A comunicação entre uma API comum e o Informix pode usar segurança de senha criptografada ou um ID de usuário criptografado e segurança de senha criptografada.
  
Você pode usar o protocolo Secure Sockets Layer (SSL) para criptografar dados em conexões end-to-end TCP / IP e DRDA seguras entre o Informix e uma API comum de cliente. Para obter informações sobre SSL, consulte o IBM Informix Security Guide.

quarta-feira, 24 de agosto de 2016

Configurando Informix Storage Manager (ISM sobre UNIX)

Para configurar o IBM-Informix Storage Manager (ISM) para rodar no UNIX siga os passos abaixo:

  1.  Se log como usuário informix no servidor onde esta instalado o Informix Server. Configure seu ambiente para utilizar o ISM.
  2. Crie um diretorio no qual será armazenado o backup de Logico Log. Este passo só é necessario se você necessita salvar os backups dos espaços ou logical logs para arquivos.
  3. No arquivo de configurações ONCONFIG do ambiente, especificar os nomes de pool de volumes para os espaços de armazenamento e logical logs, adicionando o seguinte:

    ISM_DATA_POOL       ISMData
    ISM_LOG_POOL         ISMLogs

    datapool - Se você for fazer o backup de seus espaços de armazenamento para dispositivos de fita, utilizar o valor ISMData.
    Se você for fazer o backup de seus espaços de armazenamentos para arquivos então utilize o valor ISMDiskData.

    logpool - Se você for fazer o backup de seus Logical Logs para um dispositivo de fita, utilizar o valor ISMLogs.
    Se você for fazer o backup de seus Logical Logs para arquivos, utilizar o valor ISMDiskLogs.
  4. Setar o parametro LTAPEDEV no arquivo ONCONFIG para /dev/null
     
  5. Se log como root para configurar o ISM.
  6. Digite o comando: ism_startup - init.
  7. Adicione o usuário innformix como administrador do ISM:
    ism_add -admin informix@hostname
  8. Adicione um dispositivo de armazenamento para o ISM Server utilizando o seguinte comando:
    ism_add -device /ontapeDir/onBar/logs -type fileism_add -device /ontapeDir/onBar/spaces -type file
  9.  Rotular os dispositivos utilizando o comando abaixo:
    ism_op -label /ontapeDir/onBar/spaces -pool ISMDiskData -volume ISMDiskData

    ism_op -label /ontapeDir/onBar/logs -pool ISMDiskLogs -volume ISMDiskLogs
  10. Montar o dispositivo utilizando o comando ism_op como abaixo:
    ism_op -mount /ontapeDir/onBar/logs

quarta-feira, 29 de junho de 2016

Segurança dos Dados

Níveis de Segurança dos Dados Informix

A segurança dos dados esta relacionada a assuntos de proteção dos dados a usuários sem autorização.
Um banco de dados seguro permite aos usuários só ter acesso ou modificar dados para os quais eles estão autorizados. Há vários níveis de privilégios em um banco de dados:
  • Privilégios ao nível de banco de dados
  • Privilégios ao nível de tabela
  • Privilégios ao nível de coluna

Privilégios ao Nível de Banco de Dados

Para ter acesso a um banco de dados, um usuário tem que ter o privilégio CONNECT ou um privilégio superior.

O Privilégio CONNECT

O privilégio CONNECT permite para um usuário especificar o banco de dados em um comando de DATABASE, mas o usuário não pode criar nem excluir tabelas e índices. Embora um usuário com o privilégio CONNECT não possa criar tabelas permanentes, o usuário pode criar views e tabelas temporárias.

O Privilégio RESOURCE

O privilégio RESOURCE dá aos usuários o privilégio CONNECT  e também a habilidade para criar e excluir tabelas e índices no banco de dados.

O Privilégio DBA

Um usuário com privilégio de DBA tem todos os privilégios RESOURCE como também a habilidade para conceder e revogar privilégios CONNECT, RESOURCE e DBA.
A única restrição colocada em usuários com o estado DBA é a inabilidade para revogar o privilégio de DBA deles próprios. Porém, um usuário com status de DBA pode conceder o privilégio a outro usuário que pode revogar isso do então concessor.

Concedendo Privilégios ao Nível de Banco de Dados

GRANT CONNECT TO PUBLIC;

GRANT CONNECT TO amilcar, ajm;

GRANT DBA TO amilcar;

Você pode usar o comando GRANT para conceder privilégios de acesso ao banco de dados a usuários. Os componentes do comando GRANT são:

Privilégio - É um dos tipos de acesso ao nível de banco de dados: CONNECT, RESOURCE ou DBA.
PUBLIC - É a palavra chave que você usa para especificar privilégios de acesso para todos usuários.
user-list - É uma lista de nomes de login para os usuários para quem você esta concedendo privilégios de acesso. Você pode entrar com um ou mais nomes, separados por vírgulas.

Exemplos:
No primeiro exemplo mostrado acima, o privilégio CONNECT é concedido a todos os usuários (PUBLIC).
No segundo exemplo, o privilégio RESOURCE é concedido só aos usuários amilcar e ajm.
No terceiro exemplo, é dado a amilcar o privilégio de DBA.

Privilégios ao Nível de Tabela /  Coluna

ALTER -  adicionar, excluir ou modificar colunas.
DELETE - remover linhas de uma tabela.
INDEX - criar índices em uma tabela.
SELECT - retornar informações das colunas de uma tabela.
UPDATE - alterar as informações das colunas de uma tabela.
INSERT - inserir linhas em uma tabela.
REFERENCES - referenciar colunas através de uma constraint referencial.
ALL - realizar toda e qualquer operação anterior.

Você pode especificar as operações que um usuário pode executar em uma tabela ou colunas dentro de uma tabela que você criou. Os privilégios que você pode conceder e pode revogar são mostrados abaixo.
Nenhum destes privilégios terá efeito até que o usuário tenha pelo menos o privilégio CONNECT ao banco de dados.

Concedendo Privilégios ao Nível de Tabela

GRANT ALL ON customer TO PUBLIC;

GRANT UPDATE ON orders TO amilcar WITH GRANT OPTION;

GRANT INSERT, DELETE ON items TO ajm AS amilcar;

Você pode usar o comando GRANT para especificar as operações que um usuário pode executar em uma tabela que você criou. Os componentes de um GRANT ao nível de tabela são:

Privilégio - é um ou mais tipos de acesso à tabela: ALTER, DELETE, INDEX, INSERT, SELECT, UPDATE, REFERENCES, ALL.
Tabela ou View - é o nome da tabela ou View para a qual você concede privilégios de acesso.
PUBLIC - é a palavra chave que você usa para especificar privilégios de acesso para todos usuários.
user list - é uma lista de nomes de login de usuários para quem você esta concedendo os privilégios de acesso. Você pode entrar com um ou mais nomes, separados por vírgula.
WITH GRANT OPTION - Permite ao usuário ou lista de usuários no comando GRANT a habilidade de conceder o mesmo privilégio a outros usuários.
AS [user] - faz outro usuário como o concessor das permissões. Incluindo esta opção renuncia sua habilidade para revogar o privilégio concedido anteriormente.

No primeiro exemplo mostrado acima, são concedidos todos os privilégios a todos usuários (PUBLIC) na tabela customer. No segundo exemplo, amilcar recebe permissões de atualização na tabela order com a habilidade para dar a mesma permissão a outros usuários. No terceiro exemplo o concessor usa amilcar para conceder privilégios de INSERT e DELETE ao usuário ajm.

Concedendo Privilégios ao Nível de Coluna

  • Apenas os privilégios de SELECT, UPDATE e REFERENCES podem ser concedidos ao nível de coluna.
  • Os privilégios ao nível de coluna são concedidos da mesma forma que os privilégios ao nível de tabela, exceto pelo fato de que uma lista de colunas tem de acompanhar o comando GRANT.
Exemplos:
GRANT SELECT (company, fname, lname) ON customer TO PUBLIC;

GRANT INSERT, UPDATE (quantity), SELECT ON items TO amilcar;

Ao conceder privilégios para uma tabela, você pode especificar os privilégios de SELECT, UPDATE e de REFERENCES para aplicar somente sobre certas colunas na tabela.
No primeiro exemplo mostrado acima, o privilégio SELECT é concedido a todos usuários nas colunas company, fname e lname da tabela customer.
No segundo exemplo, o privilégio de UPDATE é concedido só na coluna quantity, mas são concedidos os privilegios de INSERT e SELECT em todas colunas da tabela.

Privilégios Padrão

Ao nível de Banco de Dados

Quando você cria um banco de dados, automaticamente você ja tem privilégios DBA.

Ao Nível de Tabela

Bancos de Dados Non-ANSI: Todos os privilégios, exeto ALTER e REFERENCES são concedidos a todos os usuários.

Bancos de Dados ANSI: nenhum privilégio padrão é concedido.

  • Privilégio Default ao nível de Banco de Dados
    Quando você cria um banco de dados, você é automaticamente o DBA daquele banco de dados e o único que tem acesso ao banco de dados. Se você quiser permitir que outros usuários tenham acesso ao banco de dados, voce tem que conceder a eles privilégios de CONNECT, RESOURCE ou DBA.
  • Privilégio Default ao nível de Tabelas
    Em um banco de dados que não são ANSI, o default é conceder privilégios ao nível de tabela (exceto ALTER) para todos os usuários (PUBLIC). Em um banco de dados ANSI, nenhum privilégio default ao nível de tabela é concedido. Você tem que conceder estes privilégios explicitamente.

Privilégios ao Nível de Store Procedure

Concedendo permissões

REVOKE DELETE ON orders FROM PUBLIC;
GRANT EXECUTE ON delete_proc TO PUBLIC;

Uma Store Procedure consiste de código (comandos SQL e Linguagem da Store Procedure) que é armazenado no banco de dados. Permissões para uma procedure são concedidas e revogadas igualmente com permissões a uma tabela. Você concede e revoga a pemissão de EXECUTE para uma stored procedure especifica.
O exemplo acima revoga de todos os usuários (exeto o dono da tabela) de apagar qualquer linha da tabela orders. O próximo comando GRANT permite aos usuários executar a store procedure delete_proc que pode conter código especial para excluir a tabela orders.

Revogando Privilégios ao Nível de Banco de Dados

Exemplos:
REVOKE CONNECT FROM amilcar;

REVOKE RESOURCE FROM ajm;

Você pode usar o comando REVOKE para revogar os privilégios de acesso ao banco de dados dos usuários. Os componentes de um comando REVOKE são:

Privilégio - é um dos tipos de acesso ao nivel de banco de dados: CONNECT, RESOURCE ou DBA.
PUBLIC- é a palavra chave que você usa para especificar os privilégios de acesso para todos usuários.
user list - é uma lista de nome de login de usuários para quem você está revogando os privilégios de acesso. Você pode entrar com um ou mais nomes separados por vírgula.

Se você revogar o privilégio de DBA ou RESOURCE de um ou mais usuários, eles passam a ter o privilégio CONNECT. Para revogar todos os privilégios no banco de dados dos usuários com status de DBA ou RESOURCE, você tem que revogar o CONNECT como foi revogado o DBA ou RESOURCE. No primeiro exemplo mostrado acima, o privilégio CONNECT é revogado de amilcar. No segundo exemplo, o privilégio de RESOURCE é revogado do usuário ajm. ajm tem agora o privilégio CONNECT.

Revogando Privilégios ao nível de Tabela

Exemplos:
REVOKE ALL ON orders FROM PUBLIC;

REVOKE DELETE, UPDATE ON customer FROM amilcar, ajm;

Você pode usar o REVOKE para prevenir operações especificas que um usuário pode executar em uma tabela que você criou. Os componentes de um comando REVOKE são:

Privilégio - é um ou mais dos tipos de acesso de tabela: ALTER, DELETE, INDEX, INSERT, SELECT, UPDATE, REFERENCES, ALL.
Tabela ou View - é o nome da tabela ou da view da qual você revoga privilégios de acesso.
PUBLIC - é a palavra chave que você usa para especificar os privilégios de acesso de todos os usuários.
user list - é uma lista de nome de login de usuários para quem você está revogando os privilégios de acesso. Você pode entrar com um ou mais nomes separados por vírgula.

Embora você possa conceder privilégios de UPDATE e SELECT para colunas especificas, você não pode revogar estes privilégios coluna a coluna. Se você revogar os privilégios de UPDATE ou SELECT de um usuário, todos os privilégios UPDATE e SELECT que você concedeu a este usuário serão revogados.
No primeiro exemplo mostrado acima, são revogados todos os privilégios de todos os usuários (public) na tabela orders.
No segundo exemplo, são revogados os privilégios de DELETE e UPDATE dos usuarios amilcar e ajm na tabela customer.

Tabelas do Catálogo do Sistema 

  • sysusers  - privilégios concedidos ao nível do banco de dados
  • systabauth - privilégios concedidos ao nível de tabela
  • syscolauth - privilégios concedidos ao nivel de coluna
  • sysfragauth - privilégios concedidos aos fragmentos das tabelas
  • sysprocauth - privilégios concedidos em stored procedures
  • sysroleauth - roles que são concedidos aos usuários

segunda-feira, 25 de maio de 2015

Script Shell rapido e util para junções de colunas.

Saudações a todos, já faz um tempo que não escrevo no blog, falta de tempo.

Mas vamos ao que interessa, as vezes nos deparamos em situações que temos dois arquivos e precisamos fazer uma junção linha a linha desses dois arquivos.

Exemplo:

arquivo_1:

Shell
Amilcar
AJM
VERUM

arquivo_2:

Script
Moreti
Solutions
Solutions

então queremos a seguinte saida:

Saida:

Shell Script
Amilcar Moreti
AJM Solutions
VERUM Solutions

Nesse exemplo vou utilizar um shell script com o comando FOR.

set -f
IFS=' '
set -- $( cat arquivo_2 )

for i in `cat arquivo_1`
do printf "%s %s\n" "$i" "$1"
shift
done

sexta-feira, 7 de março de 2014