MigraTI - Soluções em banco de dados

sexta-feira, 18 de agosto de 2023

Features do Oracle Flashback

 

No dia 12/08/2023, participei do meu primeiro evento sobre banco de dados. Ocorreu na cidade de São Paulo a 12ª edição do evento GUOB Tech Day, no qual proporciona um grande encontro de profissionais Oracle.

Irei abordar nesse blog a palestra que mais me chamou atenção, sobre as features do Oracle Flashback. A palestra foi passada pelo profissional Tércio Costa e demonstra um método alternativo para recuperação de dados.

As features do Oracle Flashback nos permitem visualizar como os dados eram antes de um determinado tempo, antes de serem modificados, podendo nos salvar em possíveis corrupções ou perca de dados.

Todos os valores que as features do Oracle Falshback buscam, são consultados da tablespace Undo e do Redo Log. Ambos armazenam os arquivos modificados de seu banco de dados.

Tendo isso em mente, devemos nos atentar em efetuar a manutenção corretamente da tablespace Undo, pois quanto maior ela for, mais registros que podem ser recuperados estaram disponíveis.

terça-feira, 15 de agosto de 2023

GUOB Tech Day 2023 - Melhorando o Desempenho no Oracle Database

Dicas e Insights da Palestra


Na palestra sobre Oracle Database e otimização de desempenho que participei, adquiri insights valiosos sobre como abordar problemas de lentidão do sistema e melhorar a eficiência do banco de dados. Neste blog, compartilharei as principais abordagens e dicas discutidas na palestra para ajudar você a enfrentar desafios semelhantes.

Um dos pontos-chave abordados foi a importância de identificar a origem do problema de desempenho. Muitas vezes, os usuários relatam que o sistema está lento e culpam o banco de dados. No entanto, é essencial investigar mais a fundo. Perguntas como "Quando começou a lentidão?" e "Que parte específica está afetada?" podem fornecer pistas importantes para resolver o problema.


quarta-feira, 12 de maio de 2021

ORA-00604: error occurred at recursive SQL level 1 | ORA-00942: table or view does not exist

 Cliente estava com problemas em sua atualização, a atualização travava em uma tabela padrão do sistema onde ele adicionava duas colunas e depois apagava outras.

Ao tentar dropar uma coluna o erro abaixo aparecia, conforme:


SQL> ALTER TABLE R152PEN DROP(DTHTRA, CODERR);
ALTER TABLE R152PEN DROP(DTHTRA, CODERR)
*
ERROR at line 1:
ORA-00604: error occurred at recursive SQL level 1
ORA-00942: table or view does not exist

A tabela estava certa, com as colunas, meu primeiro teste foi verificar o case sensitive, mas também não resolveu.

quinta-feira, 9 de julho de 2020

0x851A001A - Wait on the Database Engine recovery handle failed

Servidor: Windows server 2012 R2 Foundation
Controlador de dominio - SQL-Server Express Edition (2014, 2017)

Ao instalar o SQL-Server o mesmo apresenta o erro abaixo:


Wait on the Database Engine recovery handle failed. Check the SQL Server error log for potential causes.

No Erro ele vai te dar uma pasta de logs para entrar, abra essa pasta e veja o arquivo summary.txt.

Nele você encontrará a linha:
SQLSVCACCOUNT: NT Service\MSSQLSERVER

Para resolver, desisntale o SQL-Server e recomece a instalação, siga todos os passos normalmente até chegar em "server configuration"


Troque o usuário para "NT AUTHORITY\NETWORK SERVICE" e siga com os proximos passos da instalação normalmente.

Só trocar o usuário nos services não irá funcionar.

Grato.


Burlando o restart inicial da instalação do SQL-Server (qualquer edição)

    É muito comum termos de instalar um sql-server em um ambiente que já esta em produção e ja logo de cara ele pede um restart, ai precisamos solicitar ao cliente um horário para restartar.

    Muitas vezes o cliente libera sem problemas, mas algumas vezes só depois das 18, atrapalhando o projeto.

Nesse caso o que fazer? Tem como burlarmos este restart? - Tem sim.

Tela que solicita o restart.


Pos então vamos a Mágica.

Abra o regedit, e navegue pelos seguintes diretórios:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager 
Abra esta pastinha e procure o item "PendingFileRenameOperations" ele é um item REG_Multi_SZ.

Ao encontra-lo, apague-o.

Feche o REGEDIT e clique em Re-Run no seu instalador do SQL-Server.

Qualquer duvida deixe seu comentário. 


quarta-feira, 27 de dezembro de 2017

Valor Inválido especificado para o parâmetro EXPIREDATE. (SQL-SERVER)

   Estávamos recebendo alguns erros no backup de um cliente e ao efetuar um backup manual recebemos o seguinte erro:


Pois bem, nosso primeiro passo é verificar a data do servidor e a data do SQL-Server.

Para coletar a data do SQL-Server:

SELECT GETDATE();

Visto que neste caso o cliente estava com 10 a 15 minutos atrasados do horário padrão.

Alteramos o tempo de expiração do backup, conforme:


   Para corrigir o problema, podemos usar duas soluções. Corrigir o horário do servidor, que resolveria o problema na raiz, ou aumentar o valor de tempo de expiração.

Como neste caso não era possível alterar a data do servidor, apenas aumentamos o EXPIREDATE para "1"


terça-feira, 29 de agosto de 2017

Guob Tech Day 2017



No sábado, dia 5 de agosto de 2017, ocorreu em São Paulo, capital, o 8º. GOUB Tech Day, também conhecido como OTN TOUR Latin America.
Evento realizado pela comunidade Oracle em toda a América Latina, onde Brasil, Argentina, México entre outros países, participam.
Com o objetivo de compartilhar conhecimento, os maiores e mais renomados profissionais da área, apresentaram suas experiências, trazendo conteúdo teórico e prático.
Entre os nomes que se apresentaram no dia estão Alex Zaballa, Mike Dietrich e Craig Shallahamer.
Zaballa com suas inúmeras certificações, apresentou aos participantes um dos assuntos mais importantes do momento: Cloud.
Mostrando algumas das principais formas de migração de bancos On-Premisses para a Oracle Cloud.
Mike com sua experiencia como gerente de produtos de upgrade e migração da Oracle, nos trouxe um excelente conteúdo sobre atualização de versão para Oracle 12.2 e uma das novidades mais inusitadas, não teremos mais versões com builds, ou seja, não teremos mais versões 12.3, 12.3.0.1, mas sim, teremos versões enumeradas como Oracle 18, Oracle 19.

O principal motivo da Oracle ter realizado esta alteração foi por crer que as corporações tendem a não atualizar seus databases para as versões de builds iniciais como 11.1, e deixando apenas para versões 11.2, por exemplo.
No novo conceito, não haverá versão inicial e versão final, e sim versões estáveis e prontas para uso.

Craig, diretor e fundador do OraPub, nos trouxe um exemplo pratico e complexo do uso do ASH, Active Session History, para identificar problemas de concorrência.

O que muitos chamaram de "O maior GUOB de todos os tempos", também trouxeram nomes novos como Franky Faust Weber (nosso amigo que veio de Blumenau e tem um grande futuro no mundo Oracle), Fernando Simon entre outros profissionais com assuntos diversos, que vão de rootkits à Grid Infrastructure.

Como conclusão, fica o sentimento de um excelente evento, com excelentes conteúdos que agregaram e muito para o conhecimento das tecnologias e novidades do mundo Oracle.
Também fica o sentimento de grandes profissionais unidos tentando disseminar conhecimento, sem a percepção de concorrência, mas sim de um conjunto agregando para um todo.

Que venham os próximos, com certeza estaremos lá.

Post Criado por Jone Jarouj

terça-feira, 20 de dezembro de 2016

Instalação do mssql-tools no linux

Ontem a tarde foi escrito como efetuar a instalação do SQL-Server no Cento 7.
Agora vamos descrever como efetuar a instalação do SQLCMD.

A instalação é muito parecida com a do SQL-Server, porem são outros pacotes e outro repositório. (coisas de microsoft)

A Instalação esta utilizando o mesmo servidor que foi instalado o SQL-Server Ontem. Veja aqui o post sobre isso.


Mãos a Massa:

Instalar o repositório

[root@localhost ~]#  curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/msprod.repo
Ou adicionar o repositório manualmente:

[root@localhost ~]# vi /etc/yum.repos.d/msprod.repo
[packages-microsoft-com-prod]
name=packages-microsoft-com-prod
baseurl=https://packages.microsoft.com/rhel/7/prod/
enabled=1
gpgcheck=1
gpgkey=https://packages.microsoft.com/keys/microsoft.asc

segunda-feira, 19 de dezembro de 2016

SQL-Server on Linux (Centos/Red Hat/Fedora)

A alguns meses atrás a Microsoft sacudiu o mundo do TI liberando o SQL-Server para Linux, diante dessas perspectivas muito se foi cogitado sobre essa nova forma de utilizar o SQL-Server.

Resolvi efetuar a instalação de um Linux e instalar o SQL-Server nele basicamente para comparar a instalação dele.

A Instalação foi baseada em um "Centos 7",  4Gb de Memória e 1 processador. (O SQL-Server precisa de no minimo 3,2Gb de memória para rodar)
No site da microsoft só existe referencias para o Linux 7, suse e ubunto. Não testei com o Linux 6, mas acredito que não funcionaria...

Então, mão a Obra:

Após instalar o Centos, é necessário configurar os repositórios da Microsoft para termos os pacotes mais atualizados possíveis.


[root@localhost ~]# curl https://packages.microsoft.com/config/rhel/7/mssql-server.repo > /etc/yum.repos.d/mssql-server.repo
Caso você desejar efetuar essa configuração na mão, basta ir na pasta dos pacotes e adicionar as linhas abaixo:

/etc/yum.repos.d/mssql-server.repo
[packages-microsoft-com-mssql-server]
name=packages-microsoft-com-mssql-server
baseurl=https://packages.microsoft.com/rhel/7/mssql-server/
enabled=1
gpgcheck=1
gpgkey=https://packages.microsoft.com/keys/microsoft.asc
Configurado o repositório, basta instalar o pacote:

[root@localhost ~]# yum install -y mssql-server
A opção "-y" é para efetuar a instalação automática, serve apenas para não parar no meio do processo solicitando o "yes" de aceite.

Após a instalação do seu SQL-Server, vamos configura-lo:

[root@localhost ~]# /opt/mssql/bin/sqlservr-setup
O Comando acima irá configurar o seu sql para a primeira conexão.

Observe abaixo:
[root@localhost ~]# /opt/mssql/bin/sqlservr-setup
Microsoft(R) SQL Server(R) Setup

You can abort setup at anytime by pressing Ctrl-C. Start this program
with the --help option for information about running it in unattended
mode.

Please enter a password for the system administrator (SA) account:
Please confirm the password for the system administrator (SA) account:

Setting system administrator (SA) account password...

Do you wish to start the SQL Server service now? [y/n]: y
Do you wish to enable SQL Server to start on boot? [y/n]: y
Created symlink from /etc/systemd/system/multi-user.target.wants/mssql-server.service to /usr/lib/systemd/system/mssql-server.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/mssql-server-telemetry.service to /usr/lib/systemd/system/mssql-server-telemetry.service.

Setup completed successfully.
O configurador solicitou senha e a confirmação dela, se eu desejo iniciar imediatamente o SQL-Server e se desejo configura-lo para iniciar automaticamente.

Após isso é só acessa-lo conforme abaixo:

Simples não?

sábado, 8 de outubro de 2016

Grant para usuário visualizar apenas databases especificas. (SQL-Server)

Bom dia, sempre me preocupei muito em escrever posts sobre Oracle, porem como o meu foco hoje em dia não é apenas Oracle e sim, Banco de dados em Geral, começarei a postar dicas de outros bancos de dados também, dito isso vamos dar uma dica bem bacana de SQL-Server.

Sabe quando você possui um usuário e não quer que ele consiga nem mesmo visualizar os databases que a instancia possui? Então, no SQL-Server é meio "chato" de fazer essa configuração na mão, então la vai os comandos que efetuam esse Grant.

Conecte com algum usuário que possua permissão sysadmin e efetue o processo abaixo:

USE <database_destino>

ALTER AUTHORIZATION ON DATABASE::<database_destino>to <usuário_destino>;


USE MASTER

DENY VIEW ANY DATABASE TO <database_destino>;

Caso o primeiro comando dê erro, verifique se o mesmo já não possui acesso ao database, é importante que ele ainda não possua acesso ao database.

Para você ver como ficaria o usuário seria assim...
Na aba "Mapeamento de Usuário":



Na aba "Protegíveis", vá para "Efetivas":




Boa diversão.