Dividindo uma string usando regexp_substr 

Olá amigos,

Neste post vou falar sobre separação (Split) de uma variável SQL (Oracle) em mais de uma parte.

Diante de um problema, onde todos os arquivos estavam em uma mesma pasta(fisicamente) no servidor, tínhamos a necessidade de identificar e separar estes arquivos por módulo do sistema. Mas como?

No sistema, tínhamos armazenado o nome destes arquivos, por módulos e em tabelas diversas.

O desafio surgiu, porque havia mais de 20.000 (vinte mil) arquivos na pasta, misturados com arquivos temporais e com arquivos que não podíamos perder.

E se o servidor fosse reiniciado, tudo se perderia, pois estavam armazenados em uma pasta temporária.

Então, cheguei a uma solução de criar um script (comand) para executarmos no linux e fazer a separação dos arquivos.

Para explicar melhor, havia a seguinte situação:

Nome do armazenamento de arquivos, mesclado com o nome do módulo, com o nome do arquivo fisicamente e nome do arquivo original.

servidor-stogare://MODULO.c0206646-08dfs-4174-9c17-b88ddfs/3l8apU-5e275ed5-Aarquivo 20940093.pdf?nomereal 20940093.pdf

Precisávamos separar o nome do arquivo.

Com comando abaixo, obtive apenas o nome do arquivo.

select
ds_arquivo,
‘cp “‘ ||REGEXP_SUBSTR(replace(ds_arquivo, ‘servidor-stogare://MODULO.csss6646ss-8dfs-4174-9c17-b88ddfs/’,”), ‘[^?]+’, 1, 1) || ‘” pasta-backup’
from tabela_banco_dados

 

Resultado:

3l8apU-5e275ed5-Aarquivo 20940093.pdf

 

Então, concatenei com o comando de copia de arquivos do linux (CentOS) + nome do arquivo + nome do diretório de destino, para a copia e backup dos arquivos.

cp “3l8apU-5e275ed5-Aarquivo 20940093.pdf” pasta-backup

A partir deste exemplo, gerei uma lista (txt) de todos os arquivos anexados ao módulo do sistema, e executamos no servidor para os copiar para uma nova pasta.

 

 

Com o PLSQL Aberto, pressione as teclas CTRL + E, será aberta uma tela com o histórico de todos os comandos executados recentemente.

Este histórico é com base em arquivos arquivos que são gerados em uma pasta temporária e é dali que são mostrados.

Também existe uma tabela no Oracle que grava todos os comandos executados.

A partir dos comandos abaixo é possível consultar, é necessário que usuário tenha privilégios SYS.

SELECT * FROM v$sql
ou
select * from dba_hist_sqltext

Localize o arquivo de configuração do MySQL e altere a linha para ficar conforme exemplo

default-time-zone = America/Sao_Paulo

Se a linha não existir inclua a linha e reinicie o serviço.

Outra de forma de alterar e digitar o comando

SET time_zone=’America/Sao_Paulo’;

Para confirmar a alteração digite o comando;

select @@time_zone;

Você devera ter um retorno, conforme abaixo.

Para mais informações consulte o site oficial do MySQL.

https://dev.mysql.com/doc/refman/8.0/en/time-zone-support.html

Caso o comando SET apresente uma mensagem de erro, quer dizer que você não tem os dados na tabela interna do MySQL.

SELECT COUNT(*) FROM mysql.time_zone_name;

SELECT COUNT(*) FROM mysql.time_zone;

SELECT COUNT(*) FROM mysql.time_zone_transition;

SELECT COUNT(*) FROM mysql.time_zone_transition_type;

Para popular essas tabelas importe a tabela a ser obtida no link

Instalando o Firebird 1.5 no Windows 10

Recentemente precisei fazer a instalação dos aplicativos SUS AIH, SUS BPA, onde necessita da instalação do Firebird 1.5, mas ao executar o arquivo de instalação é retornado uma mensagem que o aplicativo não é compatível com a versão do S.O.

Firebird-1.5.5.4926-3-Win32.exe

Para resolver basta renomear o arquivo para qualquer nome, exemplo: (setup.exe) e executar novamente o instalador.

php artisan migrate

[Illuminate\Database\QueryException] SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 1000 bytes (SQL: alter table users add unique users_email_unique(email))

Este erro ocorre devido a capacidade de armazenamento do engine (charset) do banco de dados;

Inclua a linha $table->engine = ‘InnoDB’; nos arquivos [migrations] para evitar o erro.

Caso queira manter como MyISAM edite o arquivo Builder.php, conforme descrito abaixo.

Correção rápida: Edite o arquivo; vendor\laravel\framework\src\Illuminate\Database\Schema\Builder.php

Alterando a variável $ defaultStringLength = 255;, para $defaultStringLength = 250;. Conforme o exemplo abaixo;

Exemplo:
public static $defaultStringLength = 255;

public static $defaultStringLength = 250;

Resolvendo o erro:

Error Code: 1415
Not allowed to return a result set from a function

Este erro ocorre devido a ausência do comando INTO

DELIMITER $$

CREATE
FUNCTION obter_nome_(cd_pessoa INT(11))
RETURNS VARCHAR(150) CHARSET latin1

DETERMINISTIC

BEGIN

DECLARE nm_pessoa_r VARCHAR(150);

IF (cd_pessoa_e IS NOT NULL) THEN

    SELECT
    p.nm_pessoa
    INTO
    nm_pessoa_r
    FROM
        pessoa p
    WHERE p.cd_pessoa = cd_pessoa_e
    ;
END IF;

RETURN  nm_pessoa_r;
END$$

DELIMITER ;

Neste artigo estarei demonstrando como instalar o Banco de Dados Oracle 12c no Windows, incluindo a criação de um banco padrão.

Antes de instalar o software, o OUI (Oracle Universal Installer), fará algumas verificações automatizadas para garantir que o computador atenda aos requisitos básicos de hardware e software para a instalação do banco de Dados Oracle. Caso o computador não atenda aos requisitos, uma mensagem será apresentada.

Alguns requisitos básicos são:

Mínimo de 2GB de memória física
Pelo menos 10 GB de espaço em disco

Para começar é necessário fazer o download do Oracle 12c pelo link https://www.oracle.com/database/technologies/oracle-database-software-downloads.html

Após o download você deve descompactar os arquivos baixados;


Neste seção, você iniciará a instalação do Banco de Dados Oracle, acesse a pasta database que você extraiu na etapa anterior e clique duas vezes sobre setup, pode ser necessário permitir a execução do arquivo na UAC.

Na janela que será aberta digite seu endereço de e-mail e a senha do login no site da oracle para receber as notificações dos problemas de segurança por e-mail. Se você não quiser as notificações por e-mail desmarque a opção e clique em próximo.
Nesta Janela selecione uma das opções, em nosso tutorial Criamos e configuramos um banco de dados, então marque a primeira opção.
Escolha a opção de acordo a arquitetura da instalação, sendo; Classe Desktop/Laptop ou servidor.
Neste tutorial utilizaremos a opção Classe Desktop.
Segu
indo a recomendação, iremos marcar a opção para a criar um novo usuário no Windows com apenas os privilégios necessários para a execução da instância do banco de dados.
Nesta janela é realizado a configuração do local de instalação, observe que por padrão é criado um banco de dados chamado pdborcl. Na minha instalação estou alterando para “bento”, você pode deixar com o padrão ou alterar.
Digite a senha para a administração do Banco de Dados Oracle. Essa senha será utilizados posteriormente para login de administrador SYS e SYSTEM.
O instalador fará as verificações de pré requisitos.
Após as verificações de pré-requisito a janela com o resumo será apresentada, revisa todas as configurações e clique em instalar.
A janela de status será exibida. Esta etapa leva cerca de 15 minutos dependendo da configuração do computador.

Em seguida será aberta a tela do Assistente de Configuração do Banco de Dados.

Ao chegar em 100% será exibida a janela abaixo informando que terminou, caso queira abrir o gerenciamento de senhas para desbloquear outras contas clique no botão.
Após a

Ao terminar você poderá abrir o gerenciador e navegar a partir do endereço https://localhost:5500/em com o usuário SYS.

Após concluir clique em “Fechar”

https://localhost:5500/em

Agora você poderá analisar e verificar a partir dos serviços do Windows a execução dos serviço do Banco de Dados Oracle.

Abra o executar no menu iniciar ou com a tela de atalho Windows + R, e digite Services.msc

Caso reinicie o computador e não consiga acessar o banco de dados, verifique se os serviços estão ativos e funcionando.

Caso queira acessar de outros computadores será necessário liberar a porta 1521 ou 1522 no firewall, instalar o client do Oracle no outro computador e configurar o arquivo TNSNAMES.ora, que normalmente fica localizado em C:\app\OracleHomeUser\product\12.1.0\dbhome_1\NETWORK\ADMIN
Este é o arquivo da instalação do servidor, nas estações de trabalho é necessário ajustar o nome do HOST com o IP ou nome do computador.

Estarei ensinando como conectar ao banco de dados MySQL a partir do seu computador utilizando um SGBD.

A maioria das hospagens disponibilizam o PhpMyAdmin, que auxilia na criação e manutenção do banco de dados.

Mas por ser on-line, acaba por não ser muito útil na criação de querys e rotinas devido as opções para salvar os arquivos, debug nas rotinas e principalmente os testes.

O Cpanel possui o recurso Remote MySQL que permite liberar a conexão remota de hosts(servidores e computadores) ao banco de dados.

Vamos lá!
1º Passo – Acessar o Cpanel

Após conectar ao Cpanel localize o recurso MySQL Remoto.

2º Passo – Adicionar o IP/Host para conexão.

No campo Host, digite o IP ou nome do servidor no qual irá conceder a permissão de acesso, mas é recomendado usar um endereço IP.

Exemplos:

IP: 127.0.0.1
Host/Server: server1.fabianobento.com.br

Também pode ser utilizado o caractere %(porcentagem), como coringa, para permitir o acesso de qualquer lugar e computador.
Para delimitar uma subnet, utilize parte do IP com o caractere %.

Exemplo: 127.0.0.%

3º Remover permissão de acesso

Para remover a permissão de acesso, basta clicar sobre a opção Excluir, do item a ser removido a permissão de acesso.