DB2 - Bancos de dados

Este capítulo descreve a criação, ativação e desativação dos bancos de dados com a sintaxe associada.

Arquitetura de banco de dados

Um banco de dados é uma coleção de Tabelas, Esquemas, Bufferpools, Logs, Grupos de armazenamento e Tablespaces trabalhando juntos para lidar com as operações do banco de dados com eficiência.

Diretório de banco de dados

O diretório do banco de dados é um repositório organizado de bancos de dados. Quando você cria um banco de dados, todos os detalhes sobre o banco de dados são armazenados em um diretório de banco de dados, como detalhes de dispositivos de armazenamento padrão, arquivos de configuração e lista de tabelas temporárias, etc.

O diretório global da partição é criado na pasta da instância. Este diretório contém todas as informações globais relacionadas ao banco de dados. Este diretório global de partição é denominado NODExxxx / SQLyyy, em que xxxx é o número da partição de dados e yyy é o token do banco de dados.

No diretório global da partição, um diretório específico do membro é criado. Este diretório contém informações do banco de dados local. O diretório específico do membro é nomeado como MEMBERxxxx onde xxxx é um número de membro. O ambiente do DB2 Enterprise Server Edition é executado em um único membro e possui apenas um diretório específico de membro. Este diretório específico de membro é exclusivamente nomeado como MEMBER0000.

Diretório global particionado

Localização do diretório: <instância> / NODExxx / SQLxxx

O diretório global da partição contém arquivos relacionados ao banco de dados, conforme listado a seguir.

  • Arquivos de monitoramento de eventos de gravação em arquivo de deadlock global
  • Arquivos de informações de espaço de tabela [SQLSPCS.1, SQLSPCS.2]
  • Arquivos de controle do grupo de armazenamento [SQLSGF.1, SQLSGF.2]
  • Arquivos de contêiner de espaço de tabela temporários. [/ caminho de armazenamento / /T0000011/C000000.TMP/SQL00002.MEMBER0001.TDA]
  • Arquivo de configuração global [SQLDBCONF]
  • Arquivos de histórico [DB2RHIST.ASC, DB2RHIST.BAK, DB2TSCHG.HIS, DB2TSCHG.HIS]
  • Arquivos relacionados ao registro [SQLOGCTL.GLFH.1, SQLOGCTL.GLFH.2]
  • Bloqueando arquivos [SQLINSLK, SQLTMPLK]
  • Recipientes de armazenamento automático

Diretório específico de membros

Localização do diretório: / NODExxxx / SQLxxxx / MEMBER0000

Este diretório contém:

  • Objetos associados a bancos de dados
  • Arquivos de informações do buffer pool [SQLBP.1, SQLBP.2]
  • Arquivos de monitoramento de eventos locais
  • Arquivos relacionados ao registro [SQLOGCTL.LFH.1, SQLOGCTL.LFH.2, SQLOGMIR.LFH].
  • Arquivos de configuração local
  • Arquivo de monitor de evento de deadlocks. Os arquivos detalhados do monitor de eventos de conflito são armazenados no diretório do banco de dados do nó do catálogo no caso de ESE e ambiente de banco de dados particionado.

Criando banco de dados

Você pode criar um banco de dados na instância usando o comando “CREATE DATABASE”. Todos os bancos de dados são criados com o grupo de armazenamento padrão “IBMSTOGROUP”, que é criado no momento da criação de uma instância. No DB2, todas as tabelas do banco de dados são armazenadas em “tablespace”, que usam seus respectivos grupos de armazenamento.

Os privilégios para o banco de dados são definidos automaticamente como PUBLIC [CREATETAB, BINDADD, CONNECT, IMPLICIT_SCHEMA e SELECT], entretanto, se a opção RESTRICTIVE estiver presente, os privilégios não serão concedidos como PUBLIC.

Criação de banco de dados não restritivo

Este comando é usado para criar um banco de dados não restritivo.

Syntax: [Para criar um novo banco de dados. 'database_name' indica um novo nome de banco de dados, que você deseja criar.]

db2 create database <database name>

Example: [Para criar um novo banco de dados não restritivo com o nome 'um']

db2 create database one

Output:

DB20000I The CREATE DATABASE command completed successfully.

Criação de banco de dados restritivo

O banco de dados restritivo é criado ao invocar este comando.

Syntax: [Na sintaxe abaixo, “db_name” indica o nome do banco de dados.]

db2 create database <db_name> restrictive

Example: [Para criar um novo banco de dados restritivo com o nome 'dois']

db2 create database two restrictive

Criação de banco de dados com localização diferente definida pelo usuário

Crie um banco de dados com o grupo de armazenamento padrão “IBMSTOGROUP” em um caminho diferente. Anteriormente, você invocou o comando “criar banco de dados” sem nenhum local definido pelo usuário para armazenar ou criar banco de dados em um local específico. Para criar o banco de dados usando o local do banco de dados definido pelo usuário, o seguinte procedimento é seguido:

Syntax: [Na sintaxe abaixo, 'db_name' indica o 'nome do banco de dados' e 'data_location' indica onde armazenar os dados nas pastas e 'db_path_location' indica a localização do driver de 'data_location'.]

db2 create database '<db_name>' on '<data location>' dbpath on '<db_path_location>'

Example: [Para criar um banco de dados chamado 'four', onde os dados são armazenados em 'data1' e esta pasta é armazenada em 'dbpath1']

db2 create database four on '/data1' dbpath on '/dbpath1'

Visualizando arquivos de diretório de banco de dados local ou do sistema

Você executa este comando para ver a lista de diretórios disponíveis na instância atual.

Syntax:

db2 list database directory

Example:

db2 list database directory

Output:

System Database Directory  
 Number of entries in the directory = 6  
 Database 1 entry:  
 Database alias                       = FOUR  
 Database name                        = FOUR  
 Local database directory             = 
 /home/db2inst4/Desktop/dbpath  
 Database release level               = f.00  
 Comment                              =  
 Directory entry type                 = Indirect  
 Catalog database partition number    = 0  
 Alternate server hostname            =  
 Alternate server port number         =  
Database 2 entry: 
Database alias                       = SIX  
Database name                        = SIX  
Local database directory             = /home/db2inst4  
Database release level               = f.00  
Comment                              =  
Directory entry type                 = Indirect  
Catalog database partition number    = 0  
Alternate server hostname            =  
Alternate server port number         =

Ativando banco de dados

Este comando inicializa todos os serviços necessários para um determinado banco de dados para que o banco de dados esteja disponível para aplicação.

Syntax: ['db_name' indica o nome do banco de dados]

db2 activate db <db_name>

Example: [Ativando o banco de dados 'um']

db2 activate db one

Desativando banco de dados

Usando este comando, você pode parar os serviços de banco de dados.

Syntax:

db2 deactivate db <db_name>

Example: [Para desativar o banco de dados 'um']

db2 deactivate db one

Conectando ao banco de dados

Depois de criar um banco de dados, para colocá-lo em uso, você precisa conectar ou iniciar o banco de dados.

Syntax:

db2 connect to <database name>

Example: [Para conectar o banco de dados um ao CLI atual]

db2 connect to one

Output:

Database Connection Information  
 Database server        = DB2/LINUXX8664 10.1.0  
 SQL authorization ID   = DB2INST4  
 Local database alias   = ONE

Verificando se o banco de dados é restritivo

Para verificar se este banco de dados é restritivo ou não, aqui está a sintaxe:

Syntax: [Na seguinte sintaxe, 'db' indica Banco de dados, 'cfg' indica configuração, 'db_name' indica o nome do banco de dados]

db2 get db cfg for <db_name> | grep -i restrict

Example: [Para verificar se 'um' banco de dados é restrito ou não]

db2 get db cfg for one | grep -i restrict

Output:

Restrict access                       = NO

Configurando o gerenciador de banco de dados e o banco de dados

A configuração da instância (configuração do gerenciador de banco de dados) é armazenada em um arquivo denominado 'db2system' e a configuração relacionada ao banco de dados é armazenada em um arquivo denominado 'SQLDBCON'. Esses arquivos não podem ser editados diretamente. Você pode editar esses arquivos usando ferramentas que chamam API. Usando o processador de linha de comando, você pode usar esses comandos.

Parâmetros de configuração do gerenciador de banco de dados

Syntax: [Para obter as informações do gerenciador de banco de dados de instância]

db2 get database manager configuration
OU
db2 get dbm cfg

Syntax: [Para atualizar o gerenciador de banco de dados da instância]

db2 update database manager configuration
OU
db2 update dbm cfg

Syntax: [Para redefinir as configurações anteriores]

db2 reset database manager configuration
OU
db2 reset dbm cfg

Parâmetros de configuração do banco de dados

Syntax: [Para obter as informações do Banco de Dados]

db2 get database configuration
OU
db2 get db cfg

Syntax: [Para atualizar a configuração do banco de dados]

db2 update database configuration
OU
db2 update db cfg

Syntax: [Para redefinir os valores configurados anteriormente na configuração do banco de dados

db2 reset database configuration
OU
db2 reset db cfg

Syntax: [Para verificar o tamanho do banco de dados ativo atual]

db2 "call get_dbsize_info(?,?,?,-1)"

Example: [Para verificar o tamanho do banco de dados atualmente ativado]

db2 "call get_dbsize_info(?,?,?,-1)"

Output:

Value of output parameters   
--------------------------   
Parameter Name  : SNAPSHOTTIMESTAMP   
Parameter Value : 2014-07-02-10.27.15.556775  
Parameter Name  : DATABASESIZE   
Parameter Value : 105795584  
Parameter Name  : DATABASECAPACITY   
Parameter Value : 396784705536  
Return Status = 0

Estimando o espaço necessário para o banco de dados

Para estimar o tamanho de um banco de dados, a contribuição dos seguintes fatores deve ser considerada:

  • Tabelas de catálogo do sistema
  • Dados da tabela do usuário
  • Long Field Data
  • Dados de objeto grande (LOB)
  • Espaço de Índice
  • Espaço de Trabalho Temporário
  • Dados XML
  • Espaço de arquivo de log
  • Diretório de banco de dados local
  • Arquivos do sistema

Verificando autoridades de banco de dados

Você pode usar a seguinte sintaxe para verificar quais autoridades de banco de dados são concedidas a PUBLIC no banco de dados não restritivo.

Step 1: conecte-se ao banco de dados com o ID do usuário de autenticação e a senha da instância.

Syntax: [Para conectar ao banco de dados com nome de usuário e senha]

db2 connect to <db_name> user <userid> using <password>

Example: [Para conectar “um” Banco de Dados com o ID de usuário 'db2inst4' e senha 'db2inst4']

db2 connect to one user db2inst4 using db2inst4

Output:

Database Connection Information  
 Database server        = DB2/LINUXX8664 10.1.0  
 SQL authorization ID   = DB2INST4  
 Local database alias   = ONE

Step2: Para verificar as autoridades do banco de dados.

Syntax: [A sintaxe abaixo mostra o resultado dos serviços de autoridade para o banco de dados atual]

db2 "select substr(authority,1,25) as authority, d_user, d_group, 
d_public, role_user, role_group, role_public,d_role from table( 
sysproc.auth_list_authorities_for_authid ('public','g'))as t 
order by authority"

Example:

db2 "select substr(authority,1,25) as authority, d_user, d_group, 
d_public, role_user, role_group, role_public,d_role from table( 
sysproc.auth_list_authorities_for_authid ('PUBLIC','G'))as t 
order by authority"

Output:

AUTHORITY                 D_USER D_GROUP D_PUBLIC ROLE_USER ROLE_GROUP ROLE_PUBLIC D_ROLE  
------------------------- ------ ------- -------- --------- ---------- ----------- ------  
ACCESSCTRL                *      *       N        *         *          N           *       
BINDADD                   *      *       Y        *         *          N           *       
CONNECT                   *      *       Y        *         *          N           *       
CREATETAB                 *      *       Y        *         *          N           *       
CREATE_EXTERNAL_ROUTINE   *      *       N        *         *          N           *       
CREATE_NOT_FENCED_ROUTINE *      *       N        *         *          N           *       
CREATE_SECURE_OBJECT      *      *       N        *         *          N           *       
DATAACCESS                *      *       N        *         *          N           *       
DBADM                     *      *       N        *         *          N           *       
EXPLAIN                   *      *       N        *         *          N           *       
IMPLICIT_SCHEMA           *      *       Y        *         *          N           *       
LOAD                      *      *       N        *         *          N           *       
QUIESCE_CONNECT           *      *       N        *         *          N           *       
SECADM                    *      *       N        *         *          N           *       
SQLADM                    *      *       N        *         *          N           *       
SYSADM                    *      *       *        *         *          *           *       
SYSCTRL                   *      *       *        *         *          *           *       
SYSMAINT                  *      *       *        *         *          *           *       
SYSMON                    *      *       *        *         *          *           *       
WLMADM                    *      *       N        *         *          N           *         
20 record(s) selected.

Descartando banco de dados

Usando o comando Drop, você pode remover nosso banco de dados do diretório do banco de dados da instância. Este comando pode deletar todos os seus objetos, tabelas, espaços, containers e arquivos associados.

Syntax: [Para eliminar qualquer banco de dados de uma instância]

db2 drop database <db_name>

Example: [Para eliminar 'seis' banco de dados da instância]

db2  drop database six

Output:

DB20000I The DROP DATABASE command completed successfully