Suporte / Infraestrutura

Análise de Performance

Neste capítulo, seguirá um checklist para consulta sobre os seguintes problemas: Sistema abre com a tela toda branca, sistema não abre, impressora não funciona, lentidão.

Análise de Performance

DEP

DEP - (Prevenção de execução de dados): É um recurso de segurança que vem de fábrica nos sistemas operacionais Microsoft Windows. Este recurso destina-se a impedir a execução de códigos de uma região da memória não-executável em um aplicativo ou serviço.

Este recurso pode ser ativado tanto nos servidores quando nas estações de trabalho dos usuários, isso vai depender de como nossos produtos estão instalados.

Configuração da DEP

Análise de Performance

Performance - Visão geral

Esta IT tem por objetivo apresentar alguns pontos que podem ser avaliados durante a análise de desempenho (lentidão) de servidores e estações de trabalho Windows, quando o servidor/estação apresenta lentidão excessiva no uso com as aplicações da Ema.

Esta análise deve ser realizada por intermédio do responsável pela infraestrutura de TI da empresa (cliente), quando os sistemas da Ema estiverem prejudicando o andamento dos processos de negócios devido ao seu baixo desempenho.

Para os servidores, todas as versões do sistema operacional Windows Server 2008 R2, possuem um recurso muito útil chamado de “Performance Monitor", ou "Monitor de Performance", que pode ser encontrado nas "Ferramentas Administrativas". Este recurso consegue utilizar coletores de informações sobre todo o hardware e software, e emitir um relatório ao final, diagnosticando a situação atual.

Uma análise de desempenho deve ser realizada preferencialmente de maneira holística, pois os servidores e os demais ativos de TI atuam sobre uma topologia de rede que costuma ser diferente em cada cenário, e isto pode influenciar diretamente o desempenho das aplicações da Ema.

Em suma, não somente o servidor pode ou deve ser analisado, mas a rede como um todo: Servidores físicos, servidores virtuais, estações de trabalho, ativos de rede, serviços de rede, sistemas operacionais, etc.   

A seguir, encontram-se alguns itens que de acordo com nossa experiência, comumente costumam influenciar no desempenho do servidor:


Hardware

Processador: 

Verificar se a capacidade de processamento do servidor está suportando a carga de processos atual.

Memória RAM: 

Verificar a quantidade de memória RAM disponível, além da memória RAM que está sendo utilizada. Computadores que trabalham utilizando o limite da memória RAM, realizando paginação em disco, apresentam lentidão excessiva. Este é um dos problemas mais comuns. Se necessário, realizar testes para diagnóstico de problemas na memória RAM. O Windows Server possui um recurso chamado "Diagnóstico de Memória do Windows", se for necessário.

Disco (HD): 

Verificar o espaço em disco livre, a integridade e o desempenho do HD. Servidores antigos possuem discos mais lentos. Pouco espaço livre em disco é um risco muito grande, não só para os sistemas da Ema, mas para o servidor. A integridade e o desempenho do disco pode ser verificada com aplicativos de terceiros, ou com o próprio Monitor de Performance do Windows.

Servidor Físico: 

Verificar a integridade e o tempo de vida do servidor físico. Servidores antigos costumam não suportar os sistemas da Ema e diversas outras aplicações, com um desempenho satisfatório.


Software

Drivers: 

Conferir se todos os drivers estão devidamente instalados e atualizados.

Prevenção de Execução de dados (DEP):

Incluir os executáveis da Ema como exceção no DEP. Isto ajuda a evitar diversos problemas que já enfrentamos.

Arquitetura do Sistema Operacional:

Recomenda-se que a arquitetura do S.O. seja de 64 bits, para que o servidor possa utilizar todo o desempenho disponíveis nos processadores atuais. Sistemas operacionais de 32 bits reconhecem até 3,3 GB de memória RAM por padrão. Algumas versões de 32 bits conseguem utilizar mais de 3,3GB de memória RAM, mas muitos aplicativos não conseguem utilizar mais que o limite desta arquitetura quando instalados, como por exemplo, o banco de dados Oracle.

Serviços do Windows:

Verificar se existem serviços que podem ser desativados, para que não comprometam ou influenciem no desempenho do servidor desnecessariamente.

Antivírus: 

A existência de antivírus pode prejudicar ou comprometer totalmente o desempenho dos sistemas da Ema. Recomenda-se que os diretórios e os executáveis utilizados pela Ema sejam adicionados como exceção no antivírus para evitar problemas.

Vírus: 

Poucos servidores possuem antivírus. Muitos malwares costumam afetar o desempenho do servidor, neste caso, também é muito importante verificar a existência de vírus.

Plugin Internet Banking: 

Os plugins costumam interferir no funcionamento do nosso software. Eis alguns: GBplugin, Warsaw e SCPVISTA (Bradesco). O sistema pode apresentar lentidão, travamento ou ainda, fechar sozinho em alguns casos, sem apresentar mensagem de erro. Verificar o uso de qualquer internet banking nas estações de trabalho ou nos servidores e removê-los, pois, eles não são compatíveis com as aplicações da Ema.

Serviços Virtuais: 

Verificar a integridade dos sistemas de virtualização, realizar os últimos updates disponíveis para o hipervisor.

Outros aplicativos: 

A existência de diversos outros softwares instalados no mesmo servidor onde encontram-se os sistemas da Ema influenciam diretamente no desempenho e/ou na funcionalidade dos sistemas. O servidor deve ser dedicado aos sistemas da Ema.

Relatórios de Problemas: 

Caso ocorra algum problema muito específico, este recurso que está disponível na Central de Ações, no Painel de Controle, pode ajudar a identificar a origem dos erros. Pesquisar pela opção "Exibir todos os relatórios de problemas"


Infraestrutura: 

Internet: 

Para cenários que utilizam a comunicação via internet para uso dos sistemas da Ema, é de suma importância que o link de internet tenha uma velocidade compatível com todos os recursos que são utilizados na rede. Conferir a velocidade contratada, o consumo de banda do link e a integridade do sinal. Se necessário, solicitar o aumento de velocidade ou outras providências pertinentes ao problema relatado.

Rede: 

O cabeamento deve estar devidamente protegido de interferências e agentes externos que possam prejudicar a integridade dos cabos. A comunicação entre os hosts não deve sofrer quedas constantes ou perdas de pacotes. Avaliar a largura de banda da rede e os demais ativos relacionados a transmissão dos dados (switches, roteadores, access points, etc).

Ainda em relação a Rede, é possível realizar testes de largura de banda através do aplicativo Iperf: http://brainwork.com.br/. Ele poderá identificar facilmente, se existem problemas na largura de banda interna ou quedas na conexão.

Alimentação Elétrica: 

Verificar a alimentação elétrica dos principais ativos de TI. Se houver problemas aparentes ou histórico de incidentes, deve-se verificar a situação com uma empresa especializada.

Observações sobre Banco de dados: 

Recomendamos fortemente que o banco de dados seja avaliado em conjunto com a infraestrutura de TI, pois o banco de dados está totalmente relacionado com o uso crítico das aplicações da Ema, e podem influenciar diretamente no desempenho.

Parcerias: 

A Ema possui parceria com empresas especializadas em infraestrutura de TI e banco de dados Oracle. São empresas certificadas pela Ema para exercerem qualquer tipo de serviço relacionado ao seu ramo de atuação, com ênfase nas aplicações da Ema.

Análise de Performance

Registrando / Atualizando MIDAS.DLL

Para registar a DLL midas.dll efetue o seguinte procedimento:

Com isto a DLL será registrada.

Análise de Performance

Script para análise de performance

Objetivo

Essa documentação tem por objetivo prover orientações para o fluxo de análise de performance dos sistemas da Ema, de modo que as ações realizadas pelas áreas envolvidas neste processo sejam organizadas e eficazes para a resolução de cada demanda.

Fluxo de atendimento

O fluxo de atendimento para análise de performance deve ser iniciado por meio da abertura de uma tarefa com o time de Suporte. Nesta primeira etapa a equipe de Suporte irá levantar informações acerca da situação relatada pelo cliente, onde deverá ser realizada uma pré-análise do ambiente onde o sistema da Ema está operando. O time de Suporte deverá detalhar o comportamento apresentado pelo sistema no momento em que o problema relatado pelo cliente ocorre. 

Durante a etapa de pré-análise, o time de Suporte poderá identificar algum gap de performance. A equipe poderá repassar ao cliente os pontos de verificação para que ele possa prover às ações corretivas. Caso o problema de performance persista ou caso seja considerado pertinente uma análise relacionada à infraestrutura de TI do cliente para identificação do problema, a equipe de TI da Ema será acionada para prestar apoio. A equipe de TI deverá ser acionada após a avaliação do segundo nível de atendimento do Suporte, para que outros aspectos relacionados à situação relatada pelo cliente possam ser avaliadas.

A equipe de TI da Ema ficará responsável por avaliar a estrutura de servidores, estações de trabalho e/ou rede do cliente, bem como poderá conferir se o banco de dados utilizado pelo sistema da Ema está parametrizado corretamente, de acordo com os padrões que constam em nossa  documentação. Todas estas atividades serão executadas de maneira remota.

Se a equipe de TI da Ema identificar gaps de performance na infraestrutura do cliente, eles serão repassados ao responsável pelo início do atendimento da tarefa, para que ele estabeleça contato com o cliente e realize um feedback. Os pontos de atenção avaliados pela equipe de TI serão encaminhados com orientações de correção e/ou sugestões de melhoria. Caso nenhum gap seja identificado pelo time de TI, o atendimento poderá ser escalado para avaliação da equipe de Desenvolvimento ou devolvido para equipe de Suporte, dependendo da situação. Se for necessário, a equipe de TI da Ema poderá se reunir com o cliente presencialmente na Ema ou remotamente via call, para avaliação dos gaps identificados ou para apoio técnico.

Se o atendimento for escalado para o time de Desenvolvimento, a equipe irá realizar uma análise com base em todo levantamento de informações que constam na tarefa, em busca de algum problema no produto que possa estar interferindo na baixa performance da operação relatada pelo cliente, bem como irá verificar alguns aspectos relacionados ao banco de dados que estiverem ao nosso alcance, como, por exemplo, a necessidade de criação de índices.

Se o problema de performance persistir ou não for identificado após todas as verificações realizadas pelas áreas de negócio da Ema (Operações, TI e Desenvolvimento), será avaliado o acionamento de uma empresa parceira para avaliação do banco de dados do sistema da Ema, podendo a empresa ser acionada diretamente pela Ema ou pelo próprio cliente.

Atividades de cada área

Suporte (Operações)

Levantamento de informações acerca da situação relatada pelo cliente
Pré-análise da estrutura 
Análise do ambiente de TI
Monitoramento de recursos de hardware
Banco de dados

Desenvolvimento

Análise do produto
Ações que podem ser realizadas a nível de banco de dados:

Terceiros

 

Bancos de dados

Procedimentos, comandos, orientações sobre bancos de dados

Bancos de dados

Oracle

Comandos pós instalação

Abaixo seguem os comandos de parametrização que devem ser executados no banco de dados após a instalação inicial:

  1. CONECTAR VIA PROMPT DE COMANDO
    • Iniciar -> Executar -> sqlplus sys as sysdba

  2. ALTERAR O CHARSET
    • shut immediate;
    • startup restrict;
    • alter database character set INTERNAL_USE WE8ISO8859P1;
    • shut;
    • startup;

  3. AUMENTAR O Nº DE CONEXÕES (Se necessário, realizar backup do arquivo de configuração do Oracle deste diretório: C:\app\product\11.2.0\dbhome_1\database)
    • shut immediate;
    • startup restrict;
    • alter system set PROCESSES=3000 scope=SPFILE;
    • alter system set TRANSACTIONS=3000 scope=SPFILE;
    • alter system set SESSIONS=3000 scope=SPFILE;
    • shut;
    • startup;

  4. ALTERAR FORMATO DATA/HORA E IDIOMA
    • alter session set NLS_DATE_FORMAT = 'YYYY-MM-DD';
    • alter session set NLS_TIMESTAMP_FORMAT = 'YYYY-MM-DD HH24:MI:SS.FF';
    • call dbms_session.set_nls('NLS_LANGUAGE','PORTUGUESE');
    • call dbms_session.set_nls('NLS_TERRITORY','BRAZIL');
    • call dbms_session.set_nls('NLS_NUMERIC_CHARACTERS','''.,''');

  5. CRIAR USUÁRIO EMA
    • CREATE USER EMA IDENTIFIED BY "dbaaccesskey"
          DEFAULT TABLESPACE "USERS"
          QUOTA UNLIMITED ON "USERS";
    • GRANT "CONNECT" TO EMA WITH ADMIN OPTION;
      GRANT "DBA" TO EMA WITH ADMIN OPTION;
      ALTER USER EMA DEFAULT ROLE "CONNECT", "DBA";

  6. CONFIGURAR ORACLE 11G PARA NÃO EXPIRAR A SENHA DO USUÁRIO
    • ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

Comandos de manutenção

1 - CONFIGURAR ORACLE 11G PARA NÃO EXPIRAR A SENHA DO USUÁRIO

ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

---------------------------------------------------------

2 - OTIMIZAR E CORRIGIR PROBLEMAS COM O BANCO

1ª opção: EXECUTE DBMS_UTILITY.ANALYZE_SCHEMA('EMA', 'COMPUTE');

2ª opção: EXEC DBMS_STATS.GATHER_DATABASE_STATS;

---------------------------------------------------------

3 - VERIFICAR INFORMAÇÕES SOBRE MEMÓRIA E OUTRAS PARAMETRIZAÇÕES

Verificar o nº de processos: show parameter processes;
Verificar o nº de sessões: show parameter sessions;
Verificar o nº de transações: show parameter transactions;
Verificar informações sobre a memória: show parameter memory;
Verificar informações sobre a memória sga: show parameter sga;
Verificar informações sobre a memória pga: show parameter pga;

---------------------------------------------------------

4 - VERIFICAR SESSÕES, PROCESSOS E TRANSAÇÕES

select name, value
from v$parameter
where name in ('processes', 'sessions', 'transactions');

---------------------------------------------------------

5 - VERIFICAR SESSÕES EM USO E LIMITE CONFIGURADO

select current_utilization, limit_value
from v$resource_limit
where resource_name='sessions';

---------------------------------------------------------

6 - AUMENTAR MEMÓRIA RAM ALOCADA PARA O ORACLE

*Fazer um backup do arquivo antes de executar os comandos "$ORACLE_HOME/database/spfileXE-ORCL.ora"

alter system set memory_max_target=6500M scope=spfile;
alter system set memory_target=4500M scope=spfile;
shut immediate;
startup;

ou

alter system set sga_target=4G scope=spfile;
alter system set sga_max_size=5G scope=spfile;
shut immediate;
startup;

---------------------------------------------------------

7 - VERIFICAR Nº DE TABELAS

select count(1) from all_tables where owner = 'EMA';

---------------------------------------------------------

8 - VERIFICAR USUÁRIOS CONECTADOS

select sid,serial#,username, osuser, machine from v$session;

PARA DESCONECTAR O USUÁRIO DA BASE

alter system disconnect session 'sid,serial' immediate;

---------------------------------------------------------

9 - ADICIONAR NOVO TABLESPACE

CREATE TABLESPACE NOME_TABLESPACE LOGGING DATAFILE 'C:\APP\ORADATA\ORCL\NOME.DBF' SIZE 100M AUTOEXTEND ON NEXT 100M EXTENT MANAGEMENT LOCAL;

---------------------------------------------------------

10 - CRIAR UM NOVO DBF EM UM TABLESPACE EXISTENTE

ALTER TABLESPACE USERS ADD DATAFILE 'C:\APP\ORADATA\ORCL\USERS02.DBF' SIZE 100M AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED;

---------------------------------------------------------

11 - CRIAR NOVO DBF EM NO TABLESPACE TEMP

ALTER TABLESPACE TEMP ADD TEMPFILE 'C:\APP\ADMINISTRATOR\ORADATA\ORCL\TEMP02.DBF' SIZE 100M AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED;

---------------------------------------------------------

12 - EXCLUIR DBF DE UM TABLESPACE

ALTER TABLESPACE USERS DROP DATAFILE 'C:\APP\ORADATA\ORCL\WMW01.DBF';

---------------------------------------------------------

13 - COMANDO PARA OBTER TAMANHO OCUPADO POR CADA SCHEMA DO BANCO

select owner BANCO, tablespace_name,
cast(sum(bytes / 1024/*KB*/ / 1024/*MB*/) as numeric(15,2)) TAMANHO_MB,
cast(sum(bytes / 1024/*KB*/ / 1024/*MB*/ / 1024/*GB*/) as numeric(15,2)) TAMANHO_GB
from dba_segments
where tablespace_name = 'USERS'
group by owner, tablespace_name
order by 4 desc;

---------------------------------------------------------

14 - COMANDO PARA OBTER TAMANHO OCUPADO PELO SCHEMA EMA

select sum(bytes/1024/1024/1024)GB from dba_segments where owner='EMA';

---------------------------------------------------------

15 - IDENTIFICAR O TAMANHO DO DATAFILE

select substr(a.tablespace_name,1,20) "Tablespaces",
(b.BYTES/1048576) as "TotalMB",
(b.BYTES/1048576)-(c.BYTES/1048576) as "UsedMB",
(c.BYTES/1048576) as "FreeMB"
from dba_tablespaces a,
(select tablespace_name,sum(bytes) as "BYTES"
from dba_data_files
group by tablespace_name ) b,
(select tablespace_name,sum(bytes) as "BYTES"
from dba_free_space
group by tablespace_name) c
where
a.tablespace_name = b.tablespace_name(+)
and b.tablespace_name = c.tablespace_name(+)
order by a.tablespace_name;

---------------------------------------------------------

16 - LIBERAR BLOQUEIO DE TABELA PARA DROPAR USUÁRIO

alter table bloqueio_tabela enable table lock;

---------------------------------------------------------

17 - OBTER ESTATÍSTICAS DO BANCO DE DADOS

exec DBMS_STATS.GATHER_SCHEMA_STATS('EMA'); --SCHEMA
exec dbms_stats.gather_fixed_objects_stats(); --Objetos fixos do oracle
exec dbms_stats.gather_database_stats(); --Todo o Banco
exec dbms_stats.gather_dictionary_stats(); --Dicionario de dados do oracle
exec dbms_stats.gather_system_stats(); --S.O.

---------------------------------------------------------

18 - DESBLOQUER CONTA DE USUÁRIO NO ORACLE

ALTER USER "NOME DO USUARIO" IDENTIFIED BY "NOVA SENHA" ACCOUNT UNLOCK;

---------------------------------------------------------

19 - ALTERAR SENHA DO USUÁRIO NO ORACLE

ALTER USER EMA IDENTIFIED BY "senha" ACCOUNT UNLOCK;

---------------------------------------------------------

20 - COLOCAR DATAFILE PARA AUTOEXTEND=ON

alter database datafile 'C:\app\Administrador\oradata\orcl\USERS05.DBF' autoextend on;

---------------------------------------------------------

21 - DROPAR DATAFILE QUE NÃO EXISTE MAIS

alter database datafile 'c:\oracle\oradata\datafiles\file01.db' offline drop;

---------------------------------------------------------

22 - SETAR O TABLESPACE USERS COMO PRINCIPAL

--Pegar o FILE_ID do USERS com esse SELECT:

select file_id,
file_name,
TABLESPACE_NAME
from dba_data_files
where tablespace_name = 'USERS';

--Colocar o FILE_ID no lugar do número 4:

alter database datafile 4 resize 1024M;

---------------------------------------------------------

23 - SCRIPT PARA DROPAR TODOS OS USUÁRIOS DO ORACLE

begin
for tab in (
select distinct owner
from all_tables
where tablespace_name = 'USERS'
)
loop
execute immediate 'drop user ' || tab.owner || ' cascade';
end loop;
end;

---------------------------------------------------------

24 - VERIFICAR QUANTIDADE DE PROCESSOS EM USO E LIMITE

select * from v$resource_limit where resource_name = 'processes';

---------------------------------------------------------

25 - DELETER DATAFILE (EXCLUIR O ARQUIVO E DEPOIS DROPAR DO ORACLE)

SQL> startup
ORACLE instance started.

Total System Global Area 1720328192 bytes
Fixed Size 2255904 bytes
Variable Size 1275069408 bytes
Database Buffers 436207616 bytes
Redo Buffers 6795264 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 6 - see DBWR trace file
ORA-01110: data file 6: 'C:\ORACLE\ORADATA\ORCL\TRASHED01.DBF'

SQL> alter database datafile 6 offline drop;

---------------------------------------------------------

26 - OBTER VERSÃO DO ORACLE

select * from v$version;

---------------------------------------------------------

27 - RESOLVER PROBLEMA "ORA-12514 - TNS:Listener..." e outros erros de Listener

Antes de executar as ações a seguir, tente reiniciar os serviços do Oracle e do Listener nos Serviços do Windows. Dependendo do tipo de problema apresentado, a reinicialização dos serviços pode fazer com que o Listener volte a funcionar corretamente.

Realizar também um teste para confirmar se o serviço Listener está configurado corretamente, executando o seguinte comando no CMD do Windows: TNSPING ORCL

## SOLUÇÃO 1

Executar os seguintes comandos no terminal do Oracle:

- Consultar o valor da string LOCAL_LISTENER (pode estar vazio): SHOW PARAMETER LOCAL LISTENER

- Setar um valor para string LOCAL_LISTENER*: alter system set LOCAL_LISTENER='(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.21)(PORT=1521))'scope=both;

*Substituir o endereço IP na sintaxe HOST pelo endereço IP do servidor de banco de dados

## SOLUÇÃO 2

- Consultar o valor da variável v$parameter: select value from v$parameter where name='service_names'

- Após consultar o valor da variável, copiar o resultado do "service_names" no arquivo "tnsnames.ora":

TEST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = *<Endereco_IP_Servidor>*)(PORT = *<1521>*))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = <service_names>)
)
)

- Executar o seguinte comando no CMD do Windows para testar se a conectividade com o Listener está funcionando: sqlplus system/dbaaccesskey@orcl

Se funcionar, a conexão com o banco será feita normalmente sem erros de Listener 

## SOLUÇÃO 3

Substituir o conteúdo do arquivo "LISTENER.ORA" pelo conteúdo abaixo, informando o nome do servidor Oracle no parâmetro HOST:

# listener.ora Network Configuration File: C:\app\product\11.2.0\dbhome_1\network\admin\listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = C:\app\product\11.2.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:C:\app\product\11.2.0\dbhome_1\bin\oraclr11.dll")
)
)

LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = Nome_do_Servidor)(PORT = 1521))
)
)

ADR_BASE_LISTENER = C:\app


## SOLUÇÃO 4

Alterar no arquivo listener.ora o endereço de IP do host para o nome do host (reiniciar serviços do Oracle)

---------------------------------------------------------

28 - CONCEDER PERMISSÃO DE CONSULTA EM TODAS AS TABELAS DE UM SCHEMA PARA O USUÁRIO

BEGIN
FOR R IN (SELECT owner, table_name FROM all_tables WHERE owner='EMA') LOOP
EXECUTE IMMEDIATE 'grant select on '||R.owner||'.'||R.table_name||' to MXCRICIUMA';
END LOOP;
END;

---------------------------------------------------------

29 - VERIFICAR PRIVILÉGIOS DE USUÁRIOS NO ORACLE

select * from (
select 'GRANT '||privilege||' TO '||grantee||';' from dba_sys_privs
where grantee in ('EMA','EMA_CONSULTA')
union all
select 'grant '||privilege||' on '||grantor||'.'||table_name||' to '||grantee||';' from dba_tab_privs
where grantee in ('EMA','EMA_CONSULTA')
union all
select 'GRANT '||GRANTED_ROLE||' TO '||grantee||';' from dba_role_privs
where grantee in ('EMA','EMA_CONSULTA'));

---------------------------------------------------------

30 - PERMISÃO PARA ACESSO A FUNÇÃO

GRANT EXECUTE ON EMA.VALOR_VARIAVEL_PROCESSO TO PUBLIC

CREATE PUBLIC SYNONYM VALOR_VARIAVEL_PROCESSO FOR EMA.VALOR_VARIAVEL_PROCESSO

---------------------------------------------------------

31 - NÃO USAR O "EMA." NA FRENTE DOS SELECTS

ALTER SESSION SET CURRENT_SCHEMA="EMA";

---------------------------------------------------------

32 - REVOGAR PERMISSÕES PARA USUÁRIO

REVOKE DBA FROM nome_usuario;

---------------------------------------------------------

33 - ALTERAR A SENHA DO USUÁRIO

ALTER USER EMA IDENTIFIED BY "dbaaccesskey_99";

---------------------------------------------------------

34 - SENHA PADRÃO USUÁRIOS WMW

db97!#!!

---------------------------------------------------------

35 - CONCEDER PERMISSÃO PARA LOGAR NO ORACLE

GRANT create session to MXCRICIUMA;

---------------------------------------------------------

36 - CONCEDER PERMISSÃO PARA USUÁRIO ACESSAR DETERMINADAS TABELAS NO ORACLE

GRANT select,update,delete,insert ON EMA.exl_modeloicliente TO mxcriciuma;

---------------------------------------------------------

37 - CONCEDER PERMISSÃO PARA USUÁRIO CRIAR VIEWS NO ORACLE

GRANT create view TO mxcriciuma;

---------------------------------------------------------

38 - REVOGAR PERMISSÃO DE CONSULTA EM TODAS AS TABELAS DE UM USUÁRIO

BEGIN
FOR R IN (SELECT owner, table_name FROM all_tables WHERE owner='EMA') LOOP
EXECUTE IMMEDIATE 'revoke select on '||R.owner||'.'||R.table_name||' from MXCRICIUMA';
END LOOP;
END;

---------------------------------------------------------

39 - ERRO DURANTE A INSTALAÇÃO DO ORACLE

"Causa: Falha ao acessar local temporario oracle"

6.2.23 INS-30131 Error When Installing Oracle Database or Oracle Client
If the administrative shares are not enabled when performing a single instance Oracle Database or Oracle Client installation for 12c Release 1 (12.1) on Microsoft Windows 7, Microsoft Windows 8, and Microsoft Windows 10, then the installation fails with an INS-30131 error.

Workaround:
Execute the net share command to ensure that the administrative shares are enabled. If they are disabled, then enable them by following the instructions in the Microsoft Windows documentation. Alternatively, perform the client or server installation by specifying the following options:

For a client installation:

-ignorePrereq -J"-Doracle.install.client.validate.clientSupportedOSCheck=false"

For a server installation:

-ignorePrereq -J"-Doracle.install.db.validate.supportedOSCheck=false"

This issue is tracked with Oracle bug 21452473.

---------------------------------------------------------

40 - CONSULTAR SQLS QUE MAIS CONSOMEM CPU

SELECT *
FROM ( SELECT ROUND ( ( (cpu_time / 1000000) / 60), 2) AS "Tempo total de CPU",
executions AS "Quant. exec.",
rows_processed AS "Quant. linhas proc.",
disk_reads AS "Leituras no disco",
first_load_time AS "Primeira utilização",
last_load_time AS "Última utilização",
parsing_schema_name AS "Usuário analisado",
sql_text AS "SQL exec."
FROM v$sqlarea
WHERE parsing_schema_name NOT IN ('SYS', 'SYSTEM', 'SYSMAN', 'DBSNMP')
ORDER BY 1 DESC)
WHERE ROWNUM <= 10;

Nesse caso, a seleção da consulta mais externa (cláusula where) faz com que o retorno sejam de apenas os 10 scripts com maior tempo total de CPU (garantido no sort da consulta interna), mas podemos alterar esse valor ou retirar a condição. Na seleção da consulta mais interna, retirei os usuários de controle do DBA e do próprio SGBD Oracle, para que a análise possa ser feita apenas por aplicações e pessoas.

Vou explicar rapidamente as informações da projeção (cláusula select):

"Tempo total de CPU" – nesse “campo” é retornado o tempo total de CPU gasto para executar todas as vezes o script em questão. Fiz uma continha para exibir o tempo em minutos;

"Quant. exec" – nesse “campo” é retornado a quantidade de vezes que o SQL em questão foi executado desde sua primeira vez que foi submetido;

"Quant. linhas proc." – nesse “campo” é exibido a quantidade total de linhas processadas em todas as execuções da SQL em questão;

"Leituras no disco" – nesse “campo” é retornado a quantidade total de leituras realizadas no disco;

"Primeira utilização" – informa a data e hora da primeira utilização da SQL em questão, ou pelo menos a mais recente das “primeiras vezes”;

"Última utilização" – informa a data e hora da última utilização da SQL em questão;

"Usuário analisado " – informa qual o usuário da instância Oracle que realizou a SQL;

"SQL exec." – informa o script SQL submetido.

---------------------------------------------------------

41 - CRIAR USUÁRIO NO ORACLE SOMENTE PARA CONSULTA

CREATE USER seu_usuario IDENTIFIED BY sua_senha;
GRANT CONNECT TO seu_usuario;
GRANT SELECT ANY TABLE TO seu_usuario;

---------------------------------------------------------

42 - CRIAR NOVO .DBF NO TABLESPACE SYSTEM

ALTER TABLESPACE SYSTEM
ADD DATAFILE 'C:\app\oradata\orcl\SYSTEM02.DBF' SIZE 1G;

*Conferir caminho do diretório ORADATA e o nome do arquivo .DBF

Backup e restore

EXP/IMP

exp ema/dbaaccesskey@orcl full=n consistent=y constraints=y statistics=none object_consistent=y file=C:\ema_backup\bkp-ema.dmp log=C:\ema_backup\export.log

exp ema/dbaaccesskey@zenthi full=y consistent=y constraints=y statistics=none object_consistent=y file=c:\backup_ema\backup_full.dmp log=c:\backup_ema\export_full.log

exp ema/dbaaccesskey@192.168.8.71/orcl full=n consistent=y constraints=y statistics=none object_consistent=y file=c:\ema.dmp log=c:\backup.log

exp user/password@ip:port/service_name

imp ema/dbaaccesskey@orcl file=D:\jean.dmp fromuser=ema touser=ema ignore=y STATISTICS=NONE log=D:\import.log

EXPDP/IMPDP

Configuração inicial:

CREATE OR REPLACE DIRECTORY datapump AS 'C:\Ema Software\Ema_Cloud_Bkp\';
GRANT READ, WRITE ON DIRECTORY datapump TO ema;
execute dbms_metadata_util.load_stylesheets


impdp system/dbaaccesskey directory=datapump dumpfile=bkp-ema.dmp schemas=ema remap_schema=ema:hml_ema

----OPÇÃO PARA QUANDO HOUVER ERROS ORA-31693, ORA-02354, ORA-39776, ORA-00600 DURANTE A IMPORTAÇÃO
impdp system/dbaaccesskey directory=datapump dumpfile=ema.dmp ACCESS_METHOD=CONVENTIONAL remap_schema=ema:ema remap_tablespace=users:users
-----

---- IMPORTAR SÓ TABELAS ESPECÍFICAS
impdp system/dbaaccesskey directory=datapump dumpfile=ema.dmp TABLES=EMA.CLIENTE ACCESS_METHOD=CONVENTIONAL remap_schema=ema:ema remap_tablespace=users:users
-----

---- IMPORTAR BASE SEM DROPAR (SÓ ATUALIZANDO AS TABELAS)
impdp system/dbaaccesskey directory=datapump dumpfile=bkp-ema.dmp remap_schema=ema:ecoville logfile=export.log full=y TABLE_EXISTS_ACTION=REPLACE
----

expdp system/dbaaccesskey directory=datapump dumpfile=ema.dmp schemas=EMA logfile=export.log

expdp system/dbaaccesskey directory=datapump dumpfile=full.dmp schemas=EMA_DESENV,TESTCOMPLETE,UNIEMA logfile=export.log

expdp system/dbaaccesskey directory=datapump dumpfile=table.dmp tables=ema.cliente logfile=export_table.log

**Backup Full
expdp system/dbaaccesskey directory=datapump dumpfile=bkp_full.dmp full=y logfile=backup_full.log

impdp system/dbaaccesskey directory=datapump dumpfile=ema.dmp schemas=ema remap_schema=ema:ema remap_tablespace=users:users

**Argumento para exclusão de tabelas no backup
EXCLUDE=TABLE:\"IN \(\'ITEM_FORMULA_FOTO\',\'ANEXO\',\'LOG\'\)\" nologfile=y

Outros comandos

Verificar o nº de processos: show parameter processes;
Verificar o nº de sessões: show parameter sessions;
Verificar o nº de transações: show parameter transactions;
Verificar informações sobre a memória: show parameter memory;
Verificar informações sobre a memória sga: show parameter sga;
Verificar informações sobre a memória pga: show parameter pga;

VERIFICAR SESSÕES, PROCESSOS E TRANSAÇÕES
select name, value
from v$parameter
where name in ('processes', 'sessions', 'transactions');

VERIFICAR SESSÕES EM USO E LIMITE CONFIGURADO
select current_utilization, limit_value
from v$resource_limit
where resource_name='sessions';

 

Bancos de dados

Portas de conexão do Bancos de Dados

Sempre que instalamos um banco de dados no computador local ou em servidores, os bancos vêm com suas configurações padrões para conexão, um ponto importante dessa configuração são as portas de conexões, que servem para que possamos realizar a comunicação das ferramentas da Ema ou de aplicativos usados para realizar consultas e manutenções no próprio banco.

 

Lista de de banco de dados e Portas utilizadas na Ema

 

Possíveis causas para falhas de conexão com o bando de dados e perda de comunicação

Em algumas situações, pode ocorrer algumas falhas de comunicação ou não conseguirmos conectar no banco de dados. São algumas delas:

Porta do banco não está liberada no firewall do Windows

Há casos em que não conseguimos conexão porque a porta do nosso banco de dados não está liberada no firewall do Windows, para verificarmos e termos certeza que não é por conta disso que não conseguimos a conexão com o BD, devemos:

clicar no menu iniciar -> pesquisar por "Firewall" -> selecionarmos a opção: Windows Defender Firewall com Segurança Avançada:

firewall.gif

Porta Já utilizada por outro processo ou aplicativo

Em situações que a porta está em uso por outro software/aplicativo ou processo, devemos tentar identificar qual o processo primeiro e depois avaliar se é possível alterar a porta ou até mesmo removê-lo do servidor ou computador se necessário, pois pode acabar impactando na comunicação com o banco de dados e gerando não-conformidades.

Para identificarmos podemos usar o comando pelo prompt de comando, ou CMD através do atalho image-1718111333499.png+ R e digitando o comando cmd para abrir a tela do terminal de consulta.

image-1718111382888.png

Depois na tela do terminal, digitamos o seguinte comando "netstat -aon", este comando irá listar os ip's e portas que estão em uso no Windows, auxiliando a identificar se a porta que precisamos para o banco de dados está livre ou não.

 

 

Porta do banco alterada ou redirecionada em acessos externos

Em casos bem específicos, podemos nos deparar com as portas convencionais não sendo utilizadas em alguns casos por definição internas da empresas ou nossos clientes. Nesse caso devemos primeiro confirmar com a equipe de TI do cliente caso houver.

 

Impressão

Impressão

Mapeamento de impressão (LPT)

O mapeamento será realizado nas seguintes situações:

  1. Quando houver necessidade de imprimir diretamente nas portas LPT, ao invés do caminho de impressão. 
  2. Quando a impressora de etiquetas estiver instalada na porta USB, mas o caminho necessário para impressão estiver configurado na porta LPT

Para que o mapeamento seja realizado, a impressora precisa estar compartilhada no Windows. Após tê-la compartilhado, é necessário obter o nome que ela recebeu no compartilhamento, para mapeá-la posteriormente.

O mapeamento é realizado no Prompt de Comandos do Windows, que pode ser chamado pelo conjunto de caracteres "cmd", na barra de pesquisa ou na opção "Executar" (Windows + R). Sempre que possível, executar o Prompt de Comandos como administrador.

Vejamos um exemplo de mapeamento da porta LPT1. Já no Prompt, essa é a sintaxe utilizada:

Para desfazer o compartilhamento:

No local do nome do computador, pode-se também utilizar o endereço IP do computador.

Caso o mapeamento seja concluído com sucesso, uma mensagem de confirmação seja emita no Prompt.

As sintaxes podem ser digitadas num arquivo texto, e salvas com a extensão ".bat", para que seja criado um pequeno script. Assim, o usuário poderá executá-lo sempre que for preciso, pois o mapeamento costuma falhar. Primeiro exclui-se o mapeamento, e depois ele é refeito.

Para que o mapeamento feito na máquina local, seja redirecionado para um servidor de acesso remoto externo, a opção "Portas" deverá estar marcada na aba "Recursos Locais", do cliente de conexão remota (Remote Desktop)

DOSPrint

De maneira alternativa também é possível utilizar o aplicativo DOSPrint para realizar o mapeamento de maneira mais simples. O DOSPrint pode ser baixado diretamente de nosso Drive

O DOSPrint não necessita de instalação. Basta executá-lo, ele será inicializado na barra de tarefas do Windows:

image-1698166680122.png

Com o DOSPrint iniciado, para prosseguir com a configuração do mapeamento é necessário clicar com o botão direito do mouse em cima do atalho e ir na opção "Configure". Será aberta a seguinte tela:

image-1698166751407.png

Com isso, basta seleciona a porta de conexão e clicar na opção "Set", informando o caminho de impressão. Feito isso, a impressora já estará mapeada na porta seleciona. Para que o mapeamento seja realizado sempre que o computador for iniciado, é preciso colocar o DOSPrint para inicializar junto do Windows:

 

 

 

 

 

Instalação do Sistema

Nesse capítulo vamos revisar as instruções para instalação/atualização de clientes e também de como tratar erros comuns no ambiente de produção.

Instalação do Sistema

Checklist para instalação/migração do sistema para outro servidor

Procedimentos

Se a instalação/migração for realizada o mesmo servidor

Caso a instalação/migração seja realizada para o mesmo servidor, é necessário ter alguns cuidados, sendo:

Se a instalação/migração for realizada para o servidor diferente

Caso a instalação/migração seja feita para um servidor diferente, é possível prosseguir com as atividades de maneira paralela, não é necessário aguardar o dia da migração para iniciar os procedimentos de instalação, pois o cliente pode disponibilizar um acesso antecipado para que as instalações sejam feitas com antecedência. Isso vale tanto para o instalação do banco de dados quanto do sistema.

Banco de dados

PostgreSQL

  1. Verificar a versão do banco de dados que está instalada no servidor atual. Recomenda-se que a mesma versão seja instalada no novo ambiente.

Sistema

Versão

  1. Recomenda-se manter a mesma versão do sistema que o cliente está utilizando, para o novo ambiente. 
  2. Recomenda-se manter a mesma porta de comunicação principal no Ema Configurador.

Homologação

  1. Verificar se no ambiente de homologação, há a necessidade de manter a mesma versão do ambiente de produção, ou se é necessário instalar uma versão diferente. É comum que em processos de homologação, o cliente faça algum teste em uma versão distinta, geralmente uma versão nova (acima da versão de produção) ou em uma versão personalizada.

Liberação de portas de comunicação de rede

Para que o sistema possa ser acessado pela rede local, algumas portas de comunicação de rede precisam ser liberadas no firewall do Windows:

  1. Portas do banco de dados:
    1. Portas padrões: Firebird (3050), Oracle (1521) e PostgreSQL (5432)
  2. Porta principal: É a porta informada no Ema Configurador
  3. Portas dos micro serviços: Recomendado liberar o intervalo(range) entre 8000-8030 

Para acesso externo do Ema PDV é necessário liberar as seguintes portas no roteador/firewall e também no firewall do Windows do servidor:

  1. Portas do banco de dados:
    1. Portas padrões: Firebird (3050), Oracle (1521) e PostgreSQL (5432)
  2. Porta principal: É a porta informada no Ema Configurador
  3. Intervalo de portas utilizadas pelo micro serviço do registro: 8000-8003

Infraestrutura

Sistema operacional

  1. Identificar se o sistema operacional do servidor atual é Desktop ou Server
    1. Caso for Desktop
    2. Caso for Server
      1. Verificar se existe a necessidade de manter o mesmo tipo de S.O. no ambiente novo
      2. Conferir como o cliente faz acesso ao sistema ERP/DOX. Se o acesso for via atalho local, será necessário liberar algumas portas de conexão para o sistema no firewall do Windows. Se o acesso for remoto via WTS, o servidor precisa ter o WTS configurado.
  2. Verificar endereço IP do servidor
    1. Fixar um endereço IP no servidor é muito importante

Acesso ao sistema

  1. Atalho na rede local: Caso o cliente utilize o sistema com atalho na rede local, é necessário compartilhar a pastas Contas ERP, localizada dentro da pasta Ema Software.
  2. Aplicar permissão de escrita na pasta Contas ERP para todos os usuários (tanto nas configurações do Compartilhamento quanto diretamente na pasta)
Instalação do Sistema

Como realizar a instalação das aplicações

Passos iniciais para instalação das aplicações

Acessar o servidor do cliente > entrar no Drive > e logar com o email da conta EMA. Após isso, o caminho abaixo deve ser acessado:

image-1663681350998.png

image-1663681365849.png

image-1663681382314.png

image-1663681395800.png

Feito isso, a página abaixo será aberta e de acordo com a licença de uso contratada pelo cliente, deverá ser baixada as aplicações.

image-1663681407696.png

No exemplo em questão vamos simular a instalação de um cliente que possui todas as aplicações.

Pode ser clicado com o botão direito em cima do arquivo > fazer download. 

image-1663681599993.png

Feito isso, as aplicações serão baixadas na pasta download. Conforme seguirá, vamos acessar a pasta > copiar os arquivos > criar uma pasta e jogar os executáveis no disco local do cliente.

 

image-1663681662868.png

image-1663681703677.png

 

image-1663681851250.png

 

image-1663682486423.png

Feito isso, é só instalar.

Instalação Serviços + ERP

O requisito mínimo para instalação do ERP é a instalação dos serviços junto ao executável do ERP. Então vamos selecionar os executáveis abaixo:

image-1663682636721.png

Feito isso, irá abrir a tela de execução do executável. Por padrão a instalação dos executáveis já trará a pasta DISCO LOCAL C > EMA SOFTWARE para instalação das aplicações. Porém, caso o cliente utilize outra unidade mapeada como disco, é necessário alterar esse caminho na instalação. No exemplo em questão, não vamos alterar.

image-1663682729844.png

Na tela em questão, selecionamos os micro serviços necessários para a utilização dos serviços. Atenção: Nessa documentação não vamos nos aprofundar na utilização de cada um, caso você queira se aprofundar, pode clicar aqui.

image-1663682804657.png

Feito a seleção, pode ser clicado em INSTALAR.

image-1663682982687.png

Aguarde terminar a instalação e prossiga com a instalação do ERP (é o mesmo processo).

image-1663683059054.png

image-1663683075452.png

image-1663683090698.png

image-1663683139151.png

Sobre o Ema Configurador

Feito a instalação é necessário configurar o EMA CONFIGURADOR. Em Disco Local > Ema Software > Contas ERP > Ema Configurador. Para que assim, esse possa se conectar com o banco de dados do cliente.

Firebird

Para clientes Firebird, o caminho configurado será exatamente o caminho referenciado no qual o banco se localiza. Exemplo abaixo onde o banco se localiza no caminho especificado.

image-1663683421955.png

Para o configurador, vamos acessar "nova configuração de ambiente"> registrar como firebird > na aba Servidor manter porta padrão e acessar aba banco de dados > setar endereço > testar conexão.

image-1663683681881.png

image-1663683871951.png

image-1663683721872.png

O usuário por padrão será: SYSDBA 

A senha por padrão será: dbaaccesskey

image-1663683982371.png

Feito isso, é só salvar.

Atenção: Caso você não saiba configurar o banco de dados FIREBIRD, acesse aqui

PostgreSQL

Será o mesmo caminho para realizar a configuração do Firebird. Porém para o postgreSQL, o caminho do banco de dados é apenas o IP da máquina onde ele está instalado. Segue exemplo onde o IP da máquina onde a base de dados é o 192.68.0.200.

Por sua vez, o nome de usuário será o nome da base de dados utilizada (do cliente) e a senha será a padrão: dbaaccesskey

No exemplo abaixo, estamos nos conectando na base do cliente realgems, que está no caminho 200.

image-1663684196836.png

Atenção: Caso você não saiba configurar o banco de dados POSTGRESQL, acesse aqui

Oracle

Como seguiu com os clientes Firebird e PostgreSQL, a configuração para cliente Oracle seguirá o mesmo formato da configuração postgreSQL, onde o usuário é o nome do banco e a senha é padrão: dbaaccesskey . Porém, para o oracle. O caminho de conexão é diferente, conforme segue:

image-1663684380672.png

No endereço banco está o caminho:

(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.100)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SID=orcl)))

Onde em:

image-1663684478535.png

Feito a validação, poderá ser salva a configuração.

Atenção: Caso você não saiba configurar o banco de dados ORACLE, acesse aqui

**Importante verificar se na aba serviços, todos os serviços que você marcou durante a instalação do SERVIÇOS estão marcados.

image-1663684539922.png

Instalação ERPx

Deve ser acessado o caminho onde o executável Instalador Ema ERPx está instalado e executar.

image-1663684654129.png

image-1663684665667.png

**A pasta padrão trazida é sempre o disco local C > Ema software conforme já falado em módulos anteriores.

image-1663684690219.png

image-1663684696910.png

Ao finalizar a instalação do ERPx, o configurador do ERPx já é instalado. Diferente do ERP que precisa ser instalado Serviços e ERP separadamente. Esse abrirá automaticamente para configuração após finalização da instalação.

image-1663684780194.png

A porta será preenchida por padrão e a única configuração que deverá ser feita é a do Banco de dados, de acordo com o visto anteriormente logo acima, separado por banco de dados. Feito isso, ao clicar em "salvar" os microserviços do ERPx subirão automaticamente.

 

image-1663684872062.png

image-1663684877798.png

image-1663684886497.png

image-1663684896403.png

Caso o Ema_Servidor não suba, é necessário testar a conexão do banco e verificar se o endereço está correto.

Instalação PDV

Para instalar o PDV, é necessário seguir com o passo a passo da documentação já existente no KB. Clique aqui para mais detalhes.

Instalação DOX Portal, DOX Estudio, Balcão e APS

Para instalar as aplicações acima, é importante acessar o caminho do arquivo > executar como administrador, como seguiu com qualquer instalação de executável acima e prosseguir. Visto que se serviços já estiver instalado na máquina, não haverá problemas para apenas executar os executáveis restantes.

 

Instalação do Sistema

Resolutiva de problemas pós instalação de aplicação - Cliente FIREBIRD

Como resolver o erro de banco após puxar o atalho do cliente FIREBIRD?

Existem duas opções para resolutiva de problemas na abertura do ERP de clientes Firebird quando aparecer a mensagem:

"Não foi possível conectar ao banco de dados!

Considere as ações sugeridas em 'Mostrar detalhes'.

Deseja tentar novamente?"

Opção 1

Quando acontece esse tipo de problema na abertura do sistema deve ser verificada a fbclient.dll na máquina do cliente que está com problema no acesso.

Deve ser acessado o Servidor > Ir na pasta Disco Local > Arquivos e Programas > Firebird > Firebird_3_0 > WOW64 > Copiar a fbclient.dll (64 bits).
Em seguida ir na máquina do cliente > Disco Local > Windows > SysWOW64 e colar essa dll.
Caso ainda sim o sistema não abrir deve ser copiada a fbclient.dll (32 bits) no Servidor novamente porém a dll que está diretamente na pasta Firebird_3_0 e colada na pasta Disco Local > Windows > System32.

Opção 2

Acessar o navegador e realizar a instalação do firebird na última versão disponível > Após isso baixar e executar o instalador.

Instalação do Firebird

Para iniciar a instalação do gerenciador de banco de dados Firebird, baixe o arquivo do mesmo e execute o instalador. Podes estar verificando a versão e sistema operacional aqui.

image-1646916741140.jpg

image-1646916767805.jpg

image-1646916876628.jpg

image-1646916904991.jpg

image-1646916953412.jpg

image-1646916987312.jpg

Pronto, o Firebird está devidamente instalado no seu computador, agora baixe o arquivo do IBexpert e descompacte na pasta de preferência.

Instalação e Configuração Oracle

Instalação do banco de dados Oracle, configuração da base de dados, ferramenta de banco, backup, etc...

Instalação e Configuração Oracle

Analisando o tamanho e espaço da tablespace

Algumas ferramentas de banco de dados não conseguem mostrar o consumo do tablespace do oracle, o que de certa forma é bem critico, pois quando o tablespace estoura o tamanho o funcionamento das aplicações fica comprometido.

Conectar no banco com um usuário que tenha os privilégios, ou como SYSDBA e executar o comando abaixo:

SELECT T.TABLESPACE,
         T.TOTALSPACE AS " TOTALSPACE(MB)",
         ROUND ( (T.TOTALSPACE - FS.FREESPACE), 2) AS "USED SPACE(MB)",
         FS.FREESPACE AS "FREESPACE(MB)",
         ROUND ( ( (T.TOTALSPACE - FS.FREESPACE) / T.TOTALSPACE) * 100, 2)
            AS "% USED",
         ROUND ( (FS.FREESPACE / T.TOTALSPACE) * 100, 2) AS "% FREE"
    FROM (  SELECT ROUND (SUM (D.BYTES) / (1024 * 1024)) AS TOTALSPACE,
                   D.TABLESPACE_NAME TABLESPACE
              FROM DBA_DATA_FILES D
          GROUP BY D.TABLESPACE_NAME) T,
         (  SELECT ROUND (SUM (F.BYTES) / (1024 * 1024)) AS FREESPACE,
                   F.TABLESPACE_NAME TABLESPACE
              FROM DBA_FREE_SPACE F
          GROUP BY F.TABLESPACE_NAME) FS
   WHERE T.TABLESPACE = FS.TABLESPACE
ORDER BY T.TABLESPACE;

Caso identifique alguma tablespace com o "Used Space(MB)" próximo a 32gb, pelos padrões, você poderá alertar a equipe responsável pela manutenção da base de dados.

Instalação e Configuração Oracle

Backup e Restauração da base de dados

Para soluções de backups automatizados fornecidos pela Ema Software, solicite ao nosso comercial orçamento do Ema Cloud Backup

Oracle 11G R2 Enterprise ou Standard

Data Pump

O Data Pump é um dos recursos de backup disponibilizados no Oracle.

Para realizar o backup utilizando o recurso EXPDP, do Data Pump, devem ser executados os seguintes procedimentos iniciais:

  1. Acessar o Prompt de Comando do Windows: Menu Iniciar -> Executar -> cmd.exe [Enter]
  2. Logar na linha de comando do Oracle utilizando a seguinte sintaxe: sqlplus sys as sysdba [Enter]
  3. Informe a senha do Oracle [Enter]
  4. Uma vez conectado na linha de comando do Oracle, é necessário criar o diretório onde será armazenado o arquivo de backup, utilizando a os seguintes comandos abaixo:
CREATE OR REPLACE DIRECTORY NOME AS 'CAMINHO_DO_DIRETÓRIO';
GRANT READ, WRITE ON DIRECTORY NOME TO USUÁRIO;
EXECUTE DBMS_METADATA_UTIL.LOAD_STYLESHEETS;

Eis um exemplo:

CREATE OR REPLACE DIRECTORY DATAPUMP AS 'C:\EMA SOFTWARE\FERRAMENTAS\';
GRANT READ, WRITE ON DIRECTORY DATAPUMP TO EMA;
EXECUTE DBMS_METADATA_UTIL.LOAD_STYLESHEETS;
EXPDP - Exportação de Base de Dados

O EXPDP realiza a exportação dos dados (backup) de usuários específicos no Oracle.

Após a realização dos procedimentos de configuração do Data Pump, é possível utilizar o EXPDP para realizar o backup do sistema. Esta é a sintaxe que deve ser executada no Prompt de Comando do Windows para iniciar o processo:

EXPDP USUARIO/SENHA SCHEMAS=USUARIO DIRECTORY=NOME_DIRETORIO DUMPFILE=NOME_BACKUP.DMP LOGFILE=NOME_LOG.LOG

As palavras em destaque devem ser substituídas pelas informações corretas.

Por fim, definimos o nome do arquivo de backup e do seu log. Segue um exemplo da sintaxe completa:

EXPDP EMA/123 SCHEMAS=EMA DIRECTORY=DATAPUMP DUMPFILE=BKP-EMA.DMP LOGFILE=EXPORT.LOG

Com esta sintaxe, estamos gerando o backup do usuário EMA, onde o arquivo de backup recebeu o nome de BKP-EMA.DMP, no diretório DATAPUMP, criado nas configurações iniciais, do qual irá salvar a exportação do backup em C:\EMA SOFTWARE\FERRAMENTAS\.

Para facilitar a execução do backup, disponibilizamos abaixo a sintaxe para criação de um script que irá realizar a exportação da base de dados, após as configurações iniciais terem sido realizadas conforme o exemplo. O script deve ser criado a partir do Bloco de Notas do Windows.

Após acessar o bloco de notas, é preciso informar os seguintes comandos para exportação, e posteriormente salvar o arquivo com a extensão .bat:

del "C:\Ema Software\Ferramentas\bkp-ema.dmp"

del "C:\Ema Software\Ferramentas\export.log"

expdp ema/senha directory=datapump dumpfile=bkp-ema.dmp schemas=EMA logfile=export.log

O script irá manter apenas a última cópia da base de dados. Ele também poderá ser utilizado pelo profissional responsável por sua infraestrutura de TI para criação de rotinas de backup automatizadas.

***OBSERVAÇÃO: A senha do banco de dados deve ser obtida através do setor responsável, geralmente o T.I. da sua empresa. É preciso editar o script de backup para informar a senha da base de dados, bem como para realizar as configurações iniciais. O EXPDP não está disponível para uso na versão Oracle 11G R2 XE. O script deve ser executado diretamente no servidor da base de dados.

IMPDP - Importação da Base de Dados

Permite importar usuários específicos (Schemas), tablespaces ou tabelas. Neste caso, o propósito é importar o usuário inteiro.

IMPDP USUARIO/SENHA DIRECTORY=NOME_DIRETORIO DUMPFILE=NOME_BACKUP.DMP REMAP_SCHEMA=SCHEMA_ORIGEM:SCHEMA_DESTINO EMAP_TABLESPACE=TABLESPACE_ORIGEM:TABLESPACE_DESTINO

Exemplo:

IMPDP EMA/123 DIRECTORY=DATAPUMP DUMPFILE=BACKUP.DMP REMAP_SCHEMA=EMA:CARLESSO REMAP_TABLESPACE=USERS:USERS2

 

Instalação e Configuração Oracle

Licenciamento Oracle

Guia prático de licenciamento da Oracle

Sabendo que os clientes têm dificuldades em entender as regras de licenciamento, a Oracle elaborou um manual de licenciamento, chamado Software Investment Guide (SIG), que contém as explanações básicas sobre as métricas de licenciamento para os diferentes tipos de produtos e cenários.

Regras bastantes polêmicas de licenciamento como failover, stand by, backup, quantidade de usuários e etc estão explicadas de forma detalhada e com exemplos de aplicações destas regras em cenários semelhantes ao mundo real.

Software Investment Guide: http://www.oracle.com/us/corporate/pricing/software-investment-guide/index.html

Principais pontos sobre licenciamento Oracle

A Oracle hoje possui uma gama muito vasta de produtos e serviços que vai muito além do banco de dados. Hoje a Oracle possui em seu portfólio produtos que vão desde a camada de aplicação, passando por middleware, banco de dados, virtualização, sistema operacional, servidores e até storage.

Por isso, quando vamos checar a forma de licenciar um produto, precisamos estar atentos que cada linha de produto possui uma forma específica de licenciamento, Como os pontos mais comuns do dia a dia são com relação ao licenciamento de banco de dados, é nesse tópico que eu vou focar, mas o SIG também possui informações sobre os demais produtos.

O primeiro ponto importante na escolha do software de banco de dados a ser licenciado é a escolha da funcionalidade desejada. Dependendo das necessidades da empresa, em termos de negócio, uma ou outra tecnologia pode ser mais adequada.

O banco de dados Oracle é comercializado de acordo com a disponibilidade destes recursos para atender necessidades específicas. A versão mais básica do banco de dados Oracle é a versão Express (também conhecida como XE).

A partir de dezembro de 2015, a Oracle parou de comercializar os produtos Oracle SE1 e Oracle SE e lançou um novo produto, o Oracle Database Standard 2 (SE2). O Oracle SE2 possui a mesma arquitetura dos produtos antecessores, porém com as seguintes características:

Na prática, isto significa que o SE2 funciona como era o antigo Oracle SE1, mas com a opção de usar o Oracle RAC. Isto permite ao cliente três possibilidades de instalação:

Note que a configuração duas máquinas com dois processadores já viola o limite de 2 processadores no cluster, e portanto, não é valida para o SE2.

Isto quer dizer que clientes que possuem a licença Standard Edition com configurações como esta (duas máquinas com dois processadores cada) devem tomar muito cuidado na hora de atualizar o ambiente, pois eventualmente vão cair no requisito de utilizar o banco de dados Enterprise.

Além disto, é importante destacar a limitação de threads simultâneas. Isto é um fato novo que não existia nos produtos anteriores. Na prática isto significa que não adianta comprar processadores com muitos cores (hoje temos processadores x86 com 16 cores, em alguns casos até mais) que o software não vai conseguir aproveitá-los.

Finalmente, o banco Oracle Enterprise Edition (EE) é o produto top de linha desta categoria, contendo inúmeras características que o torna ideal para negócios extremamente críticos e dinâmicos.

Ao contrário da crença popular de que as única diferenças entre as edições de banco de dados Oracle são as limitações de hardware (e o preço!), o Oracle EE possui muitas funcionalidades que não estão disponíveis nas versões mais simples.

Entre elas, podemos destacar recursos como o Data Guard, a ferramenta de continuidade de negócios do banco de dados, e o paralelismo, recurso que permite otimizar o uso de recursos de hardware.

O Oracle Enterprise Edition é adequado para empresas que não podem parar (operam 24x7) e também não podem correr risco de perder os seus dados, além de outras características como melhor performance, segurança e escalabilidade. Além dos recursos padrões, o Oracle EE também possui as chamadas options, que são produtos que podem ser adquiridos a parte para estender as funcionalidades do banco de dados.

Em termos de licenciamento, o Oracle Enterprise Edition possui uma métrica diferenciada. O processador do EE é calculado de acordo com o número de núcleos (cores) que a máquina possui, aplicado um fator de conversão que é tabelado.

Fica mais fácil de entender na prática. Vamos tomar como exemplo um servidor padrão de mercado hoje, com dois processadores x86 octa-core (8 cores cada, 16 cores no total).

O fator de conversão para x86 é 0,5. Logo, o número de processadores a serem licenciados de banco EE é:

Para conhecer todos os fatores de conversão, basta consultar a tabela Oracle Processor Core Factor Table. Hoje, os mais relevantes são: 0,5 para x86 e SPARC e 1,0 para processadores RISC não-Oracle.

Licenciamento por Usuários Nomeados (named User Plus)

Além do licenciamento por processador, algumas linhas de produtos podem ser licenciadas por usuários nomeados, os chamados Named User Plus. Para a linha de produtos de banco de dados, isto também é possível, desde que se considere as seguintes regras:

Considerando a máquina de referência do exemplo acima, 2 processadores físicos com 8 cores cada um, os mínimos respectivos são:

Tópicos Especiais de Licenciamento

Os cenários de licenciamento descritos acima vão cobrir a maioria dos casos que encontramos no dia-a-dia. No entanto, a medida que precisamos fazer usos mais avançados do software a complexidade da solução aumenta e as regras precisam ser estendidas para contemplar esta nova complexidade.

Dois tópicos muito quentes são o licenciamento de disaster recovery e o licenciamento de ambientes virtualizados. Com relação ao disaster recovery (DR), entendemos por isso um ambiente onde exista o banco de dados Oracle instalado pronto para assumir a carga do ambiente de produção caso ocorra um evento que indisponibilize o mesmo.

Ou seja, é um conjunto de hardware e software adicional que através de alguma forma de replicação mantém uma cópia do banco de dados para eventos de desastres ou outros tipos de paradas, sejam estas planejadas ou não planejadas.

Todo servidor onde houver o software da Oracle instalado precisa ser licenciado logo, sim, é preciso licenciar o site DR.

Uma pergunta muito comum é: posso licenciar o site de produção por processador e o DR por usuário? A resposta é NÃO. Independente do tipo de replicação utilizado, se a finalidade é DR, os servidores precisam obrigatoriamente seguir a mesma métrica.

Agora se estivéssemos falando de ambientes distintos, como por exemplo, produção e homologação ou QA, aí sim, neste caso pode ser licenciado produção por processador e homologação por usuários.

Para esclarecer de uma vez por todas as regras de licenciamento de sites de disaster recovery, backup, etc, incluindo esta e outras regras, o documento oficial é o Licensing Data Recovery Environments.

Sobre o tema de virtualização, gostaria de destacar que é preciso tomar muito cuidado com este tópico, em especial para não ficar irregular. Todo processador que roda o código Oracle precisa ser licenciado.

Em um servidor bare metal (não virtualizado), todo o processamento fica disponível para o banco de dados e, portanto, toda a máquina precisa ser licenciada.

Agora, em ambientes virtualizados, nem sempre temos o controle sobre quais processadores vão executar quais tarefas, podendo elas estar distribuídas em múltiplos servidores em momentos distintos - a exemplo da tecnologia de live migration.

Nestes casos, farms de VMs, onde o banco pode estar executando hora em uma máquina, hora em outra, é necessário licenciar TODA a farm de VMs. Sim, toda. Mesmo que você esteja usando só 2 processadores de cada vez.

Existem exceções a esta regra? Sim. Quando a tecnologia de virtualização tem a capacidade de fazer o chamado hard partitioning ou "CPU pin", ou seja, fixar a execução da VM em um determinado core ou grupo de cores, como se efetivamente estivéssemos "fatiando" uma máquina.

Note que não são todas as tecnologias de virtualização que suportam isso, e mesmo que as que suportam, precisam ser homologadas pela Oracle para que o licenciamento seja válido.

Esta regra pode ser vista na íntegra no documento Partitioning (não confundir com a option de banco Partitioning, este partitioning se refere a divisão de uma máquina física em máquinas virtuais menores). A documentação completa sobre os tópicos especiais (além dos dois previamente citados) pode ser encontrada no site da Oracle, na seção Specialty Topics.

Palavras Finais

O objetivo deste artigo era chamar a atenção para estes tópicos de licenciamento que são bastante polêmicos e muito comuns de encontrarmos no dia-a-dia.

Vale lembrar também que regras de licenciamento são muito dinâmicas e podem variar ao longo dos anos, então por este motivo fiz questão de apontar sempre as referências oficiais, assim mesmo que este texto algum dia fique desatualizado, aí estão os links para a consulta do material direto na fonte.

Fonte: https://pt.linkedin.com/pulse/tudo-que-voc%C3%AA-queria-saber-sobre-licenciamento-oracle-petruzalek

Preços

De acordo com o artigo supracitado, é evidente que o licenciamento do banco de dados Oracle é muito complexo e cheio de pegadinhas. O valor do investimento a ser realizado, depende principalmente do tipo de hardware que irá suportar o Oracle e do cenário que a empresa pretende implementar.

Para análise do tipo de licenciamento que irá se encaixar no seu ambiente, bem como no seu orçamento, é necessário o apoio de especialistas.

A Ema possui parceria com a empresa Seven Keys, especializada na comercialização e implementação de soluções Oracle. Mediante a situações que necessitem de análise, indicamos o contato com a Seven Keys.

Eis alguns valores de referência da versão Standard Edition 2, cotados no mês de janeiro de 2018:

Licenciamento por processador

Licenciamento por usuários nomeados

Para o licenciamento por usuário nomeado, é necessário adquirir no mínimo 10 licenças.

Instalação e Configuração Oracle

Limpar cache do Oracle (V$SQL)

O comando visa apoiar os programadores com os testes de desempenho. A descarga do cache do buffer de dados é uma ótima ferramenta de teste e evita que você precise devolver (parar e reiniciar) sua instância de banco de dados entre as execuções de teste. 

NÃO recomendamos que você limpe o cache do buffer de dados em um sistema de produção!

alter system flush buffer_cache;
alter system flush shared_pool;
OPCIONAL:
EXECUTE dbms_result_cache.flush;


Nota: A   liberação do cache do buffer de dados impõe uma sobrecarga séria de desempenho, especialmente nos bancos de dados RAC. O uso do cache do buffer de liberação foi destinado apenas ao sistema de teste.

Instalação e Configuração Oracle

Parâmetros de sessão

Quando os serviços da Ema são configurados em um ambiente com banco de dados Oracle, todas as execuções de scripts são executadas com alguns parâmetros de sessões definidos.

Para que seus testes no SQL Developer ou outro gerenciador de banco sejam equivalentes à execução do DOX, você deve rodar os scripts abaixo na sessão do banco logada (todas as vezes que for iniciado uma sessão no SGBD terá que ser executado).

ALTER SESSION SET NLS_NUMERIC_CHARACTERS = '.,';

ALTER SESSION SET NLS_DATE_FORMAT = 'RRRR-MM-DD HH24:MI:SS';

ALTER SESSION SET NLS_TIMESTAMP_FORMAT = 'RRRR-MM-DD HH24:MI:SS';

ALTER SESSION SET NLS_TIMESTAMP_TZ_FORMAT = 'RRRR-MM-DD HH24:MI:SS';

ALTER SESSION SET NLS_SORT=BINARY_AI;

ALTER SESSION SET NLS_COMP=LINGUISTIC;

Após ter executado estes scripts na sessão logada no SGBD, todos os comandos serão executados com os mesmos parâmetros que o DOX executa.

*** Importante verificar se os comandos acima são comitados. 

Instalação e Configuração Oracle

Realizando Backup no Oracle com EXP

Um dos modos de realizar a exportação de dados (backup) de uma base do Oracle, é utilizando o EXP, conforme exemplo abaixo.

Para iniciar, abra o prompt de comando, no Iniciar do Windows, e utilize a seguinte sintaxe:

exp usuario/senha@orcl file=c:\temp\teste.dmp full=y
Instalação e Configuração Oracle

SQL's que mais consomem o banco de dados

O SQL disponibilizado abaixo trará os SQL's que mais consomem o banco, desse modo fica mais simples de verificar se tem algum SQL processando sem necessidade, ou que possa ser arrumado. Copie esse SQL na sua ferramenta de banco Oracle e execute-o.

 SELECT "SQL_TEXT",
          "PARSING_SCHEMA_NAME",
          "SQL_ID",
          "ELAPSED_TIME_MIN",
          "PERC_ELAPSED_TIME_MIN",
          "EXECUTIONS",
          "FIRST_LOAD_TIME",
          "LAST_ACTIVE_TIME"
     FROM (  SELECT SQL_TEXT,
                    PARSING_SCHEMA_NAME,
                    SQL_ID,
                    CAST (ELAPSED_TIME / 1000000 / 60 AS NUMERIC (18, 2))
                       AS ELAPSED_TIME_MIN,
                    CAST (
                       (RATIO_TO_REPORT (ELAPSED_TIME) OVER ()) * 100 AS NUMERIC (18, 2))
                       PERC_ELAPSED_TIME_MIN,
                    EXECUTIONS,
                    FIRST_LOAD_TIME,
                    TO_CHAR (LAST_ACTIVE_TIME, 'DD/MM/YYYY HH24:MI:SS')
                       AS LAST_ACTIVE_TIME
               FROM V$SQL
              WHERE PARSING_SCHEMA_NAME IN ('EMA')
           ORDER BY CAST (ELAPSED_TIME / 1000000 / 60 AS NUMERIC (18, 2)) DESC)
    WHERE ROWNUM <= 100;

Instalação e Configuração PostgreSQL

Instalação do banco de dados PostgreSQL, configuração da base de dados, ferramenta de banco, backup, etc...

Instalação e Configuração PostgreSQL

Ajustando Horário / Timezone do Postgres

Olá, se você está enfrentando problemas com formato e/ou data hora errado em comandos retornados de sua base de dados postgres é necessário fazer esse ajuste:

Baixar o arquivo com o timezone atualizado: clique aqui

Logo após substitua o arquivo orignal que se encontra no seguinte caminho: C:\Program Files\PostgreSQL\10\share\timezone\America, assim que substituido, você deverá reiniciar o PostgreSQL. Depois de reiniciar o banco de dados com o novo arquivo baixado aplique as configurações abaixo: 

ALTER DATABASE EMA SET TIMEZONE TO 'AMERICA/SAO_PAULO';
ALTER SYSTEM SET TIMEZONE="GMT+3";
SELECT PG_RELOAD_CONF();

Podemos fixar GMT+3 por que não temos mais o conhecido horário de verão, se um dia ele voltar lembre-se de fazer essa alteração na data estipulada para GMT+2 garantindo assim a sincronia entre horários e conversão correta do horário UTC.

Instalação e Configuração PostgreSQL

Aumentar o número de sessões

** ATENÇÃO: Avalie com cuidado esta alteração para que não interfira no uso de memória total do servidor de banco de dados, 500 seções é um número médio usado em nossos clientes e está dentro de uma margem de segurança.

image-1646930837110.png

Para iniciar, parar ou reiniciar o serviço de banco de dados PostgreSQL, basta acessar a tela de Serviços do Windows, procurar pelo serviço "postgresql-..." e clicar na opção desejada.

image-1646930859997.png

Instalação e Configuração PostgreSQL

Configurar base PostgreSQL no PgAdmin

Com o PostgreSQL 10 instalado, pode-se configurar a base de dados no pgAdmin 4. Para isso, temos que criar um banco de dados e fazer o Restore de um arquivo de backup. Veja o exemplo a seguir.

Criação da base de dados:

image-1721742056524.png

Depois de informar o nome, vamos para a aba Definition, onde vamos preencher as seguintes informações:

image-1721742310550.png

Importando uma base, Restore:

 

image-1721742483981.png

Você pode acessar o Query Tool para executar scripts na base:

image-1721742538360.png

Instalação e Configuração PostgreSQL

Criar banco de dados/conectar/exportar via linha de comando (cmd)

Criar banco 

Siga os passos abaixo:

Você pode usar também o pgAdmin4 para, siga as instruções:

image-1646932260973.png

Conectar ao banco via PSQL:

Para conectar a instância princial

Para conectar em um usuário específico

Caso ao digitar psql apresente, você deverá inserir uma variável de ambiente no seu windows ou rodar os comandos acima, direto na basta: C:\Program Files\PostgreSQL\10\bin

Importar banco de dados:

image-1646932357327.png

Exportar base via linha de comando:

 

Instalação e Configuração PostgreSQL

Definições / Particularidades do PostgreSQL

Serviço/Processo no Windows

Para iniciar o banco de dados deve-se ser iniciado o serviço do postgres no gerenciador de serviços do Windows, ou configurá-lo como automático.

image-1656358069653.png

Para cada seção no banco ou thread é criado um registro postgres.exe no gerenciador de tarefas, este comportamento é normal, assim que as seções forem encerradas, o processo também será finalizado.

image-1656358102391.png

Cada PID do sistema operacional Windows poderá ser localizado dentro do banco de dados e sua seção monitorada.

Tuplas

Este é o tipo de dado da coluna do sistema, o identificador de tupla é um par (número do bloco, índice da tupla dentro do bloco) que identifica a posição física da linha dentro de sua tabela.

Transações - Locks e Bloqueios

Os Locks podem ser definidos como bloqueios executados em objetos ou dados no banco de dados. Esses bloqueios podem ser gerados automaticamente (em função do gerenciamento Multiversão/Multiusuário (MVCC) do PostgreSQL) e manualmente (com comandos ou operações que necessitem “travar” uma tabela ou alguns de seus registros).

O PostgreSQL trabalha com diversos tipos ou modos de bloqueios diretamente vinculados a ações específicas ao programa para controlar o acesso simultâneo aos dados e tabelas. 

Bloqueio Descrição Entra em conflito com
ACCESS SHARE O comando SELECT obtém um bloqueio deste modo nas tabelas referenciadas. Em geral, qualquer comando que apenas leia a tabela (sem modificá-la) obtém este modo de bloqueio. ACCESS EXCLUSIVE
ROW SHARE O comando SELECT FOR UPDATE obtém o bloqueio neste modo na(s) tabela(s) de destino. EXCLUSIVE e ACCESS EXCLUSIVE
ROW EXCLUSIVE Os comandos UPDATE, DELETE e INSERT obtêm este modo de bloqueio na tabela de destino (além do modo de bloqueio ACCESS SHARE nas outras tabelas referenciadas). Em geral, este modo de bloqueio é obtido por todos os comandos que modificam os dados da tabela. SHARE, SHARE ROW EXCLUSIVE, EXCLUSIVE, ACCESS EXCLUSIVE
SHARE UPDATE EXCLUSIVE Obtida pelo comando VACUUM (sem a opção FULL). Protege a tabela contra mudanças simultâneas no esquema durante a execução do comando VACUUM SHARE UPDATE EXCLUSIVE, SHARE, SHARE ROW EXCLUSIVE, EXCLUSIVE e ACCESS EXCLUSIVE.
SHARE Obtido pelo comando CREATE INDEX. ROW EXCLUSIVE, SHARE UPDATE EXCLUSIVE, SHARE ROW EXCLUSIVE, EXCLUSIVE e ACCESS EXCLUSIVE.
SHARE ROW EXCLUSIVE Este modo de bloqueio não é obtido automaticamente por nenhum comando do PostgreSQL. ROW EXCLUSIVE, SHARE UPDATE EXCLUSIVE, SHARE, SHARE ROW EXCLUSIVE, EXCLUSIVE e ACCESS EXCLUSIVE
EXCLUSIVE Este modo de bloqueio não é obtido automaticamente por nenhum comando do PostgreSQL. ROW SHARE, ROW EXCLUSIVE, SHARE UPDATE EXCLUSIVE, SHARE, SHARE ROW EXCLUSIVE, EXCLUSIVE e ACCESS EXCLUSIVE.
ACCESS EXCLUSIVE Obtido pelos comandos ALTER TABLE, DROP TABLE e VACUUM FULL. Este é também o modo de bloqueio padrão para o comando LOCK TABLE sem a especificação explícita do modo. Entra em conflito com todos os modos de bloqueio Este modo garante que a transação que o obteve seja a única que esteja acessando a tabela.

**Para ver o tipo de deadlock utilize o dashboard do pgAdmin 4 e vá até a coluna locks ou utilize o comando:

SELECT * 
  FROM PG_LOCKS
Instalação e Configuração PostgreSQL

Gerar Backup

Neste tópico veremos como gerar o backup via linha de comando ou manualmente de uma base PostgreSQL.

Backup gerado manualmente (PgAdmin)

image-1646922940108.png

**Não há necessidade de informar os outros campos, apenas o "Filename" com o caminho de onde o backup deve ser salvo, e o nome que deve dar para ele. 

Backup via Linha de Comando (CMD)

image-1646923029584.png

*** Este comando é responsável em acessar a pasta raiz, no caso fica na pasta C:\

image-1646923061266.png

pg_dump --file=C:\BackupPo

stgreSQL\arquivo.dmp -

F c -v -b --dbname=ema --host=127.0.0.1 --port=5432 --username=postgres

Obs: --file= neste comando é informado o caminho que vai ser salvo o arquivo .dmp, o nome pode ser alterado para outro como por exemplo:
C:\BackupPostgreSQL\backup.dmp
--dbaname= Nome da base cadastrada.
--username= Usuário para acessar o database.

**Caso não seja informado um caminho para o arquivo ele irá criar dentro de C:\ 

image-1646923495804.png

***A senha ao digitar não é mostrada, cuidado ao digitar a senha. 

***Este procedimento não pode ser executado com os serviços da Ema rodando, pois pode corromper o arquivo. 

Instalação e Configuração PostgreSQL

Gerenciar banco de dados (Commit, nova conexão)

Desativar Auto Commit

COMMIT consolida a transação, ou seja, executa os comandos em definitivo, seja um delete, update, etc. Já o ROLLBACK desfaz a transação inteira – nenhuma declaração SQL contida na transação é executada.

É uma ação importante pois imagine que você executa um update sem where e altera muitos dados importantes de forma errônea. Se o auto commit estiver desligado, você não precisa se preocupar pois esse comando não foi executado em definitivo. É possível fazer um commit manual, quando você ja tem certeza que o comando SQL está correto, ou pode escolher deixar automático, sempre que um comando foi executado, automaticamente já está consolidado a transação. 

Siga os passos abaixo: 

image-1646931260438.png

image-1646931420913.png

Nova conexão: 

image-1646931873181.png

image-1646931910412.png

image-1646931970602.png

Instalação e Configuração PostgreSQL

Identificar índices não utilizados (ou não eficientes)

with
table_scans as (
select
	tables.relid as relid,
	tables.schemaname as schemaname,
	tables.relname as tablename,
	tables.idx_scan as table_idx_scan_count,
	tables.idx_tup_fetch as table_idx_tup_fetch,
	tables.seq_scan as table_seq_scan_count,
	tables.seq_tup_read as table_seq_tup_read,
	tables.idx_scan + tables.seq_scan as table_sum_all_scans,
	tables.n_tup_ins as table_write_insert_count,
	tables.n_tup_upd as table_write_update_count,
	tables.n_tup_del as table_write_delete_count,
	tables.n_tup_ins + tables.n_tup_upd + tables.n_tup_del as table_sum_all_writes,
	tables.n_tup_hot_upd as table_tup_hot_upd_count,
	tables.n_live_tup as table_live_tup_count,
	pg_relation_size(relid) as table_bytes
from
	pg_stat_user_tables as tables
),
database_writes as (
select
	sum(table_sum_all_writes) as database_sum_all_writes
from
	table_scans
),
indexes as (
select
	idx_stat.relid as relid,
	idx_stat.indexrelid as indexrelid,
	idx_stat.schemaname as schemaname,
	idx_stat.relname as tablename,
	idx_stat.indexrelname as indexname,
	idx_stat.idx_scan as index_idx_scan_count,
	idx_stat.idx_tup_read as index_idx_tup_read,
	idx_stat.idx_tup_fetch as index_idx_tup_fetch,
	pg_relation_size(idx_stat.indexrelid) as index_bytes,
	indexes.indexdef ~* 'USING btree' as idx_is_btree
from
	pg_stat_user_indexes as idx_stat
join pg_index as pg_index
		using (indexrelid)
join pg_indexes as indexes
on
	idx_stat.schemaname = indexes.schemaname
	and idx_stat.relname = indexes.tablename
	and idx_stat.indexrelname = indexes.indexname
where
	pg_index.indisunique = false
),
index_ratios as (
select
	indexes.schemaname as schemaname,
	indexes.tablename as tablename,
	indexes.indexname as indexname,
	indexes.index_idx_scan_count as index_idx_scan_count,
	indexes.index_idx_tup_read as index_idx_tup_read,
	indexes.index_idx_tup_fetch as index_idx_tup_fetch,
	round(case when indexes.index_idx_scan_count = 0 or table_scans.table_live_tup_count = 0
then -1 :: numeric
  else indexes.index_idx_tup_fetch :: numeric / indexes.index_idx_scan_count / table_scans.table_live_tup_count * 100 end, 2) as idx_pct_table_fetched,
	table_scans.table_idx_scan_count as table_idx_scan_count,
	table_scans.table_seq_scan_count as table_seq_scan_count,
	table_scans.table_seq_tup_read as table_seq_tup_read,
	table_scans.table_sum_all_scans as table_sum_all_scans,
	round((case when table_scans.table_sum_all_scans = 0
then -1 :: numeric
   else indexes.index_idx_scan_count :: numeric / table_scans.table_sum_all_scans * 100 end), 2) as index_scan_pct,
	table_scans.table_write_insert_count as table_write_insert_count,
	table_scans.table_write_update_count as table_write_update_count,
	table_scans.table_write_delete_count as table_write_delete_count,
	table_scans.table_sum_all_writes as table_sum_all_writes,
	round((case when table_scans.table_sum_all_writes = 0
then indexes.index_idx_scan_count :: numeric
   else indexes.index_idx_scan_count :: numeric / table_scans.table_sum_all_writes end), 2) as scans_per_write,
	table_scans.table_tup_hot_upd_count as table_tup_hot_upd_count,
	table_scans.table_live_tup_count as table_live_tup_count,
	indexes.index_bytes as index_bytes,
	pg_size_pretty(indexes.index_bytes) as index_size,
	table_scans.table_bytes as table_bytes,
	pg_size_pretty(table_scans.table_bytes) as table_size,
	indexes.idx_is_btree as idx_is_btree
from
	indexes
join table_scans
		using (relid)
),
index_groups as (
select
	1 as grp,
	'Never Used Indexes' as reason,
	*
from
	index_ratios
where
	index_ratios.index_idx_scan_count = 0
	and index_ratios.idx_is_btree
union all
select
	2 as grp,
	'Low Scans, High Writes' as reason,
	*
from
	index_ratios
where
	scans_per_write <= 1
	and index_scan_pct < 10
	and index_idx_scan_count > 0
	and table_sum_all_writes > 100
	and idx_is_btree
union all
select
	3 as grp,
	'Seldom Used Large Indexes' as reason,
	*
from
	index_ratios
where
	index_scan_pct < 5
	and scans_per_write > 1
	and index_idx_scan_count > 0
	and idx_is_btree
	and index_bytes > 100000000
union all
select
	4 as grp,
	'High-Write Large Non-Btree' as reason,
	index_ratios.*
from
	index_ratios,
	database_writes
where
	(table_sum_all_writes :: numeric / coalesce(nullif(database_sum_all_writes, 0), 1)) > 0.02
		and not idx_is_btree
		and index_bytes > 100000000
union all
	select
		5 as grp,
		'(+) Sem Efetividade' as reason,
		index_ratios.*
	from
		index_ratios
	where
		idx_is_btree
		and index_idx_scan_count > 0
		and idx_pct_table_fetched > 20
union all
	select
		6 as grp,
		'(+) Índice Médio (100MB a 500MB)' as reason,
		index_ratios.*
	from
		index_ratios
	where
		index_bytes >= 100000000
		and index_bytes < 500000000
union all
	select
		7 as grp,
		'(+) Índice Grande (500MB a 1 GB)' as reason,
		index_ratios.*
	from
		index_ratios
	where
		index_bytes >= 500000000
		and index_bytes < 1000000000
union all
	select
		8 as grp,
		'(+) Índice Enorme (mais de 1 GB)' as reason,
		index_ratios.*
	from
		index_ratios
	where
		index_bytes >= 1000000000
	order by
		grp,
		index_bytes desc
)
select
	reason,
	schemaname,
	tablename,
	indexname,
	table_size,
	index_size
from
	index_groups
Instalação e Configuração PostgreSQL

Identificar tamanho do banco de dados

Como o PostgreSQL tem uma forma diferente de armazenar as informações, ou seja, não é um arquivo único, o comando abaixo auxilia na identificação do tamanho do banco de dados. 

SELECT
table_name nome_tabela,
pg_size_pretty(table_size)   || ' (' || CASE WHEN total_size = 0 THEN 0.00 ELSE round(table_size * 100 / total_size) END   || ' %)' AS tamanho_dados,
pg_size_pretty(indexes_size) || ' (' || CASE WHEN total_size = 0 THEN 0.00 ELSE round(indexes_size * 100 / total_size) END || ' %)' AS tamanho_indice,
pg_size_pretty(total_size)                                                                                                          AS tamanho_total
FROM (
(SELECT
table_name,
pg_table_size(table_name)          AS table_size,
pg_indexes_size(table_name)        AS indexes_size,
pg_total_relation_size(table_name) AS total_size
FROM (
SELECT ('"' || table_schema || '"."' || table_name || '"') AS table_name
FROM information_schema.tables
WHERE NOT table_schema IN ('pg_catalog', 'information_schema')
) AS all_tables
ORDER BY total_size DESC)
UNION ALL
(SELECT
'TOTAL',
sum(pg_table_size(table_name))          AS table_size,
sum(pg_indexes_size(table_name))        AS indexes_size,
sum(pg_total_relation_size(table_name)) AS total_size
FROM (
SELECT ('"' || table_schema || '"."' || table_name || '"') AS table_name
FROM information_schema.tables
WHERE NOT table_schema IN ('pg_catalog', 'information_schema')
) AS all_tables)
) AS pretty_sizes;
Instalação e Configuração PostgreSQL

Instalação PostgreSQL v10.6 - Windows

ATENÇÃO: Esta instrução é destinada à quem deseja utilizar com a ferramentas Ema Software.

Para fazer a instalação do banco de dados PostgreSQL v10.6, baixar o instalador e seguir os passos das imagem à seguir.

image-1646919921971.jpg

image-1646920058232.jpg

image-1646920073492.jpg

Instalação e Configuração PostgreSQL

Lições aprendidas

Aqui documentamos a evolução de aprendizado com a utilização do banco de dados em relação a nossos produtos. 

Incidentes na instalação: 

Permissões de administrador:

***OBSERVAÇÃO: Em alguns casos, você deverá instalar o PostgreSQL antes de inserir o servidor no domínio

DLL libpq faltando, ou erro de Firedac

Mensagem: [FireDAC][Phys][PG]-314. Cannot load vendor library [C:\EXE\libpq.dll]. Hint: check it is in the PATH or application EXE directories, and has x86 bitness.

Este erro poderá ser apresentado no momento de clicar em testar conexão no Ema configurador e não necessariamente é relacionado a falta da DLL libpq e sim a ausência do Microsoft Visual C++.

Ele também pode aparecer caso você tenha instalado o PostgreSQL 64bits com o Microsoft Visual C++ incluso.

O Ema Servidor é 32bits então vai precisar do Microsoft Visual C++ 32 bits, basta apenas baixar e instalar o Microsoft Visual C++ 32bits que o Ema Configurador já vai funcionar. Em resumo, você terá instalado:

- Acesse o site da microsoft
- Baixe a versão 32
- Pra Windows 10, versão 2015
- Para Windows 7, versão 2013
- Instale, feche o ema configurador e abra novamente e repita o teste de conexão
- Confira se a DLL libpq está localizada na pasta SysWow64 ou em Contas ERP

Caso as você faça as etapas acima e mesmo assim continue dando erro de [FireDAC][Phys][PG]-314. Cannot load vendor library [C:\EXE\libpq.dll], copie para a pasta Contas Erp acesse esse link: https://pt.stackoverflow.com/questions/166085/erro-dll-conex%C3%A3o-firedac-com-postgresql

invalid password packet size

Você não efetuou corretamente as configurações recomendadas neste página meu jovem!
Reveja estas configurações.

no pg_hba.conf entry for host

Este erro geralmente apresenta quando colocamos o ip do servidor no Ema configurador e clicamos em testar.

Para resolver:

Inicie o postgreSQL e refaça o teste

image-1646933006876.png

application server could not be contacted

Esse erro pode aparecer quando você está iniciando o PgAdmin V4.

Para resolver:

Instalação e Configuração PostgreSQL

Manutenção do PostgreSQL

Vacuum/analyze

Para garantir ainda mais performance em nosso banco e retirar toda sujeira de dados ,no momento em que o comando VACUUM é executado, é feita uma varredura em todo o banco a procura de registros inúteis, onde estes são fisicamente removidos diminuindo o tamanho físico do banco.

Mas além de apenas remover os registros, o comando VACUUM encarrega-se de organizar os registros que não foram deletados, garantindo que não fiquem espaços/lacunas em branco após a remoção dos registros inúteis.

**Opções: a função de vacuum possui 3 parâmetros básicos conforme abaixo:

Full

Quando o vacuum é utilizado em conjunto com este parâmetro, então é feita uma limpeza completa de todo o banco, em todas as tabelas e colunas. Este processo geralmente é demorado e evita que qualquer outra operação no banco seja realizada.

Freeze

Força o congelamento de qualquer entrada e saída do banco no momento de rodar o vacuum.

Analyze

Ao usar o ANALYSE junto ao seu comando VACUUM ele irá atualizar as estatística do banco de dados a fim de melhorar a performance das pesquisas.

Escolha a opção (Full, freeze ou analyse) conforme descrição acima. O comando também pode ser usado apenas em uma tabela, ou até uma coluna do banco.

Instalação e Configuração PostgreSQL

Obter informação sobre o banco de dados PostgreSQL - Tamanho / Enconding / Collate / Versao

Abaixo estamos compartilhando um comando para ter acesso a algumas informações sobre seu PostgreSQL e seu sistema.

Dados retornados:

SELECT DATNAME AS BANCO,
       PG_DATABASE_SIZE(DATNAME) AS TAMANHO,
       PG_SIZE_PRETTY(PG_DATABASE_SIZE(DATNAME)) AS TAMANHO_MB,
       PD."encoding" AS ENCONDING,
       PD.DATCOLLATE AS COLLATE,
       PD.DATDBA AS VERSAO_PG,
       V.VERSAO AS VERSAO_EMA,
       V.VERSAODB AS VERSAO_EMADB
  FROM PG_DATABASE PD
  JOIN VERSAODB V ON 1=1
 WHERE UPPER(DATNAME) = 'EMA';

*Lembre-se: O Enconding e o Collate são do banco de dados, seu 'cliente' de banco de dados pode estar configurado com outro Enconding por exemplo, causando problemas com acentuação ou caracteres especiais.

Instalação e Configuração PostgreSQL

pg_hba.config

Após a instalação do PostgreSQL  é necessário configurar o arquivo pg_hba.conf para mudar as opções de md5 para password.

O PostgreSQL, é configurado por padrão para não exigir senha de conexões locais com o banco. Porém devemos alterar para exigir sempre senha para conexão. Caso não façamos isso qualquer pessoa que utilizar a máquina em que o banco está instalado conseguirá acessar o banco sem informar a senha.

Portanto SEMPRE deve-se aplicar esta configuração.

O arquivo estará no caminho C:\Program Files\PostgreSQL\10\data.

image-1646930777511.png

Instalação e Configuração PostgreSQL

PostgreSQL - Verificar sessões ativas

O SQL abaixo é utilizado para identificar em banco de dados PostgreSQL todas as sessões que estão ativas no seu banco de dados, que eventualmente podem ocasionar em locks nas suas tabelas, travando assim as operações.

select datname,
       procpid,
       usename,
       application_name,
       client_addr,
       client_hostname,
       backend_start,
       query
  from pg_stat_activity

**OBSERVAÇÃO: Em versões acima da 9.2, a coluna procpid teve seu nome alterado para pid, basta renomea-la e seu SQL irá rodar corretamente.

Instalação PDV

Instalação PDV

Ativação do ECF

*** ATENÇÃO: Essa pagina descreve os procedimentos de registro das impressoras fiscais no Site da Receita Estadual. Todas as impressoras fiscais utilizadas em integração com o Ema PDV precisam ser registradas na Receita Estadual, pois entram nas regras do PAF-ECF para os estados que utilizam essas regras e legislação.

Os tópicos a seguir apresentam as formas de ativação e atualização dos dados na Receita Estadual de Santa Catarina.

Ativação de ECF no site da Receita Estadual

Para que os clientes da Ema pertencentes ao estado de Santa Catarina possam utilizar o sistema Ema PDV, é preciso que as impressoras fiscais (ECF) sejam habilitadas para uso com software da Ema. Este procedimento é realizado no site da Receita Estadual.

O Ema PDV é um software credenciado para emissão de cupons fiscais no estado de Santa Catarina. Deste modo, por questões fiscais, é necessário que os equipamentos (impressoras) emissores de cupons fiscais estejam vinculados a um software homologado para sua emissão.

No geral, existem duas situações onde a Ema deve participar durante o processo de habilitação de uso das impressoras:

Informações para empresas fornecedoras de ECF

Os dados cadastrais são padrão e podem ser preenchidos diretamente pela empresa que está lacrando a impressora, são os dados abaixo:

Dados cadastrais Ema Software

** ATENÇÃO: Os demais dados da ficha cadastral são de responsabilidade da empresa fornecedora da ECF e do cliente. Não nos responsabilizamos por métodos de pagamentos não cadastrados no ECF

​​Autorização de uso

Após dados acima validados, a empresa autorizada deve enviar para suporte@emasoftware.com.br:

​Uma tarefa em nome do cliente será aberta e o mesmo será comunicado quando a autorização no SEFAZ for efetuada. Possuímos um processo DOX Registro de ECF's para facilitar a centralização das informações, o mesmo poderá ser executado pelas unidades de negócio e pela Ema matriz.

 

Instalação PDV

Instalando PDV / Arquivos utilizados ECF

Este forum tem o intuito de demonstrar como executar a instalação do software do caixa Ema PDV. Siga as instruções abaixo:

image-1655490633590.png

Integrador.fdb no caminho C:\Ema Software\Banco de dados\ este guarda as configurações de integração entre PDV e ERP/ERPx. 

PAFECF.fdb no caminho C:\Ema Software\PDV\Integra\Dados\ este guarda os cupons emitidos no PDV localmente.

Arquivos utilizadores ECF 

Os arquivos utilizados podem depender:

Todos os arquivos abaixo são usados a partir do caminho: C:\Ema Software\PDV

Daruma

Todos os arquivos abaixo são usados a partir do caminho: C:\Ema Software\PDV

Epson

Todos os arquivos abaixo são usados a partir do caminho: C:\Ema Software\PDV

 

Instalação PDV

Procedimentos para impressoras fiscais (novas / já em uso)

Procedimento para novas impressoras fiscais

Preencher os dados cadastrais

Assim que o cliente adquire uma nova impressora fiscal, inicia-se o processo de lacração do equipamento. Este procedimento é realizado somente por empresas autorizadas para fornecimento e lacre de impressoras fiscais.

Nesta etapa é onde ocorre o primeiro contato com a Ema. A empresa responsável por realizar o lacre da impressora, nos envia um documento para preenchimento de dados cadastrais.

Geralmente a empresa envia o documento diretamente para a Ema, mas também ocorre dela enviar para o cliente, e depois o cliente nos enviar.

No momento não existe um meio padrão para recebimento destas solicitações. Algumas chegam por e-mails, outras por tarefas e algumas por telefone.

De qualquer modo, os dados que devemos preencher no documento que nos é enviado são:

Neste documento existem diversos outros dados, mas devemos preencher somente os dados relacionados a software house. Também é importante destacar para a empresa que solicitou os dados, que os meios de pagamento devem ser obtidos diretamente com o cliente. Os meios de pagamento também são solicitados neste documento que nos é enviado.

Caso, a solicitação seja de um cliente já da Ema (Nova impressora, novo caixa, troca de impressora), ajude o solicitante a conferir e encontrar os meios de pagamento dentro do Ema ERP e ERPx, porém faça-o registrar por e-mail formal a solicitação. Assim que o documento for preenchido, basta enviá-lo para a empresa autorizada ou para o cliente

Habilitar impressora no sistema da receita estadual.

Na segunda etapa nós realizamos a habilitação da impressora fiscal no site da Receita Estadual. Para isso, precisamos de apenas duas informações, que nos são enviadas pela empresa autorizada por meio de um documento chamado Autorização de Uso de ECF:

Em posse dessas informações, realizamos o acesso ao sistema da Receita Estadual através do seguinte endereço:

Nesta tela é onde realizamos a ativação da impressora, informando os seguintes dados:

O gif a seguir destaca os campos que devem ser preenchidos:

image-1655488081963.gif

Para finalizar o processo, basta clicar em Salvar.

A impressora estará habilitada. Por fim, basta retornar o e-mail para a empresa autorizada, comunicando que a impressora está habilitada e pronta para ser instalada. Assim a autorizada irá prosseguir com a instalação da impressora no cliente.

Procedimentos para impressoras fiscais já em uso (Transferência para Ema)

Como conseguir o número de credenciamento:

OBS: O número da inscrição coletada nesta tela está vinculado a cada CNPJ. Se você possui PDV's com Matriz e filiais, serão números de inscrição diferentes.

image-1655488226103.gif

Como atualizar o credenciamento do cliente:

image-1655488431336.gif

Esta segunda etapa também deverá ser realizada quando um novo cliente, que emitia cupons fiscais através de outro sistema, passa a utilizar os sistemas da Ema para emissão de cupons fiscais.

Ou seja, este processo deve ser realizado durante a implantação do Ema PDV em clientes que usavam outros softwares para esta finalidade.

 

Procedimentos em banco Oracle

Lentidão Ao abrir o ERP com mensagem ORA-04030

Em alguns casos onde há presença de lentidão ao efetuarmos login nas aplicações da Ema e apresentar a seguinte mensagem:

“ORA-04030: out of process memory when trying to allocate 600 bytes (kkqctdrvTD: co,ckydef:kkqcscpcky)”

Devemos seguir as seguintes orientações:

gerenciador de tarefas.gif

 

Windows Update.gif

 

Windows Update.gif

Outros pontos de validação

**Alguns passos podem deixar o cliente temporariamente sem sistema, confirmar antes caso seja em horário comercial!**