Histórico da Página
...
O processo de migração do banco de dados tem como objetivo principal viabilizar a transferência dos dados atualmente armazenados no ambiente Nimbus NIMBVS (TCloudT-Cloud), no formato Database, para a plataforma T-Cloud, no formato Database Schema.
O foco específico deste processo é alterar a base do TOTVS Agro Multicultivo, que atualmente está no nível de database com um schema padrão denominado dbo, para um schema personalizado, que será nomeado nesse artigo como MULTICULTIVO. Esse Este processo permitirá alterar, de forma simples, a estrutura que está em um schema padrão (dbo) para um schema customizado. Além disso, a mudança possibilitará que o database receba novos produtos a nível de schema, garantindo maior organização e flexibilidade.schema customizado (MULTICULTIVO). Além disso, a mudança também permite que o database receba novos produtos a nível de schema, garantindo maior organização e flexibilidade, por exemplo, PIMS Connector, TOTVS Agro Connector Client (TCC), TOTVS Agro Conecta Dados (Agro Data Client), TOTVS Agro LGPD e TOTVS Agro T-Provider (provedor de segurança para Smart View e Multicultivo).
| Aviso | ||
|---|---|---|
| ||
|
...
|
A seguir, descreveremos as etapas necessárias para alterar o schema dbo para um novo schema. O processo é dividido em duas partes: a primeira será realizada no ambiente Nimbus NIMBVS, e a segunda, no ambiente do T-Cloud.
...
1. Preparação no Ambiente NimbusNIMBVS
- Realizar um backup (export) da base do TOTVS Agro Multicultivo do ambiente atual no NimbusNIMBVS, que será importada para o ambiente do T-Cloud;
2. Implementação no TCloudT-Cloud
- Ao realizar a importação dessa base de dados no ambiente do T-Cloud, ela já deve ser importada com um novo nome para a Database, refletindo as características de uma estrutura que passará a suportar múltiplos produtos a nível de schema.;
- Após a importação da base de dados, é necessário realizar os procedimentos abaixo, que incluem a criação de um novo schema e a concessão das permissões adequadas ao usuário para acessá-lo. O usuário e o schema serão denominados como MULTICULTIVO, e o banco de dados será o TOTVS. No entanto, esses valores podem ser personalizados conforme a necessidade.;
| Bloco de código | ||||||
|---|---|---|---|---|---|---|
| ||||||
-- Criação do Usuário do MULTICULTIVO CREATE LOGIN MULTICULTIVO WITH PASSWORD = 'TOTVS@123'; -- Utilizando o Banco de Dados TOTVS USE [TOTVS]; GO -- Criar Usuário no Banco de Dados TOTVS CREATE USER MULTICULTIVO FOR LOGIN MULTICULTIVO; -- Concedendo as Permissões ao Usuário MULTICULTIVO GRANT SELECT, INSERT, UPDATE, DELETE TO MULTICULTIVO; GRANT CREATE TABLE TO MULTICULTIVO; GRANT EXECUTE TO MULTICULTIVO; GRANT CONNECT TO MULTICULTIVO; GRANT ALTER TO MULTICULTIVO; GRANT VIEW DEFINITION TO MULTICULTIVO; GRANT CREATE SYNONYM TO MULTICULTIVO; GRANT CREATE PROCEDURE TO MULTICULTIVO; GRANT CREATE VIEW TO MULTICULTIVO; GRANT CREATE FUNCTION TO MULTICULTIVO; GRANT CREATE SCHEMA TO MULTICULTIVO; --Criando o Schema e definindo o Schema Default USE [TOTVS] GO CREATE SCHEMA [MULTICULTIVO] AUTHORIZATION [MULTICULTIVO] GO ALTER USER [MULTICULTIVO] WITH DEFAULT_SCHEMA=[MULTICULTIVO] GO |
Precisaremos ajustar alguns objetos antes de executar a alteração do Schema, uma vez que alguns objetos precisam ser ajustados;
...
Será necessário realizar ajustes na View EVENTO_EMBALAGEM. Para isso, precisaremos recriá-la, utilizando o comando abaixo. A alteração consiste na remoção da instrução WITH SCHEMABINDING, pois ela impede a modificação do schema padrão desse objeto. Essa restrição impacta diretamente na mudança de outras entidades que estão vinculadas a essa Viewview.
| Bloco de código | ||||
|---|---|---|---|---|
| ||||
USE [TOTVS]
GO
DROP VIEW [dbo].[EVENTO_EMBALAGEM];
GO
CREATE VIEW [dbo].[EVENTO_EMBALAGEM]
AS
SELECT EM.ID_UNIDADEADM, EVT.ID_APEMBALAGEM,EVT.DT_EVENTO, EM.ID_INSUMO, EVT.ID_EVENTO_EMB,
INS.ID_GRPINSUMO, INS.ID_PRINCATIVO, EVT.ID_PERIODOSAFRA, PS.ID_SAFRA,
EQ.ID_EQUIPE, EQ.CD_EQUIPE,
APOS.ID_APORDSERVICO,
CC.ID_CCUSTO, OP.ID_OPERACAO, EVT.ID_APEMBALAGEM_EVT
FROM dbo.APEMBALAGEM_EVT EVT
JOIN dbo.APEMBALAGEM EM ON (EVT.ID_APEMBALAGEM = EM.ID_APEMBALAGEM)
JOIN dbo.EVENTO_EMB EVTEMB ON (EVT.ID_EVENTO_EMB = EVTEMB.ID_EVENTO_EMB)
JOIN dbo.INSUMO INS ON (EM.ID_INSUMO = INS.ID_INSUMO)
JOIN dbo.GRPINSUMO GRP ON (INS.ID_GRPINSUMO = GRP.ID_GRPINSUMO)
LEFT JOIN dbo.PRINCATIVO PATIV ON (INS.ID_PRINCATIVO = PATIV.ID_PRINCATIVO)
LEFT JOIN
( SELECT DISTINCT D.ID_PERIODOSAFRA, D.ID_APEMBALAGEM
FROM dbo.APEMBALAGEM_EVT D
JOIN
(SELECT D1.ID_APEMBALAGEM, MAX(D1.DT_EVENTO) DT_EVENTO
FROM dbo.APEMBALAGEM_EVT D1
WHERE D1.ID_PERIODOSAFRA IS NOT NULL
GROUP BY D1.ID_APEMBALAGEM
) D1 ON (D.ID_APEMBALAGEM = D1.ID_APEMBALAGEM AND D.DT_EVENTO = D1.DT_EVENTO)
) EVT_PERIODOSAFRA ON (EVT_PERIODOSAFRA.ID_APEMBALAGEM = EVT.ID_APEMBALAGEM)
LEFT JOIN dbo.PERIODOSAFRA PS ON (EVT_PERIODOSAFRA.ID_PERIODOSAFRA= PS.ID_PERIODOSAFRA)
LEFT JOIN dbo.SAFRA S ON (PS.ID_SAFRA = S.ID_SAFRA)
LEFT JOIN
( SELECT DISTINCT D.ID_APORDSERVICO, D.ID_APEMBALAGEM FROM dbo.APEMBALAGEM_EVT D
JOIN
(SELECT D1.ID_APEMBALAGEM, MAX(D1.DT_EVENTO) DT_EVENTO
FROM dbo.APEMBALAGEM_EVT D1
WHERE D1.ID_APORDSERVICO IS NOT NULL
GROUP BY D1.ID_APEMBALAGEM
) D1 ON (D.ID_APEMBALAGEM = D1.ID_APEMBALAGEM AND D.DT_EVENTO = D1.DT_EVENTO)
) EVT_APOS ON (EVT_APOS.ID_APEMBALAGEM = EVT.ID_APEMBALAGEM)
LEFT JOIN dbo.APORDSERVICO APOS ON (EVT_APOS.ID_APORDSERVICO= APOS.ID_APORDSERVICO)
LEFT JOIN
( SELECT DISTINCT D.ID_CCUSTO, D.ID_APEMBALAGEM FROM dbo.APEMBALAGEM_EVT D
JOIN
(SELECT D1.ID_APEMBALAGEM, MAX(D1.DT_EVENTO) DT_EVENTO
FROM dbo.APEMBALAGEM_EVT D1
WHERE D1.ID_CCUSTO IS NOT NULL
GROUP BY D1.ID_APEMBALAGEM
) D1 ON (D.ID_APEMBALAGEM = D1.ID_APEMBALAGEM AND D.DT_EVENTO = D1.DT_EVENTO)
) EVT_CCUSTO ON (EVT_CCUSTO.ID_APEMBALAGEM = EVT.ID_APEMBALAGEM)
LEFT JOIN dbo.CCUSTO CC ON (ISNULL(EVT_CCUSTO.ID_CCUSTO, APOS.ID_CCUSTO) = CC.ID_CCUSTO)
LEFT JOIN
( SELECT DISTINCT D.ID_OPERACAO, D.ID_APEMBALAGEM FROM dbo.APEMBALAGEM_EVT D
JOIN
(SELECT D1.ID_APEMBALAGEM, MAX(D1.DT_EVENTO) DT_EVENTO
FROM dbo.APEMBALAGEM_EVT D1
WHERE D1.ID_OPERACAO IS NOT NULL
GROUP BY D1.ID_APEMBALAGEM
) D1 ON (D.ID_APEMBALAGEM = D1.ID_APEMBALAGEM AND D.DT_EVENTO = D1.DT_EVENTO)
) EVT_OPERACAO ON (EVT_OPERACAO.ID_APEMBALAGEM = EVT.ID_APEMBALAGEM)
LEFT JOIN dbo.OPERACAO OP ON (ISNULL(EVT_OPERACAO.ID_OPERACAO, APOS.ID_OPERACAO) = OP.ID_OPERACAO)
LEFT JOIN
( SELECT DISTINCT D.ID_EQUIPE, D.ID_APEMBALAGEM FROM dbo.APEMBALAGEM_EVT D
JOIN
(SELECT D1.ID_APEMBALAGEM, MAX(D1.DT_EVENTO) DT_EVENTO
FROM dbo.APEMBALAGEM_EVT D1
WHERE D1.ID_EQUIPE IS NOT NULL
GROUP BY D1.ID_APEMBALAGEM
) D1 ON (D.ID_APEMBALAGEM = D1.ID_APEMBALAGEM AND D.DT_EVENTO = D1.DT_EVENTO)
) EQ_EVT ON (EQ_EVT.ID_APEMBALAGEM = EVT.ID_APEMBALAGEM)
LEFT JOIN dbo.EQUIPE EQ ON (EQ.ID_EQUIPE= ISNULL(EQ_EVT.ID_EQUIPE,APOS.ID_EQUIPE) );
GO |
...
| Bloco de código | ||||
|---|---|---|---|---|
| ||||
ALTER TABLE [MULTICULTIVO].[APABASTEC_TMP] ADD CONSTRAINT [DF_APABASTEC_TMP_CD_APABASTEC_TMP] DEFAULT (NEXT VALUE FOR [MULTICULTIVO].[SEQ_CD_APABASTEC_TMP]) FOR [CD_APABASTEC_TMP]
GO
ALTER TABLE [MULTICULTIVO].[APLUBRIF_TMP] ADD CONSTRAINT [DF_APLUBRIF_TMP_CD_APLUBRIF_TMP] DEFAULT (NEXT VALUE FOR [MULTICULTIVO].[SEQ_CD_APLUBRIF_TMP]) FOR [CD_APLUBRIF_TMP]
GO
|
Precisaremos nessa etapa criar a estrutura do schema SSMA_ORACLE (também conhecido como SYSDB), é necessário substituir a propriedade {{DB_NAME}} pelo nome do banco de dados que será utilizado no ambiente. O script está disponível no arquivo totvs-agro-template_ssma_oracle.sql.
...
| Bloco de código | ||||
|---|---|---|---|---|
| ||||
USE [TOTVS]
GO
ALTER AUTHORIZATION ON SCHEMA::[ssma_oracle] TO [MULTICULTIVO]
|