Conectando MATLAB a Bancos de Dados Oracle Utilizando ODBC

Este guia detalha o processo de estabelecer uma conexão entre o MATLAB e um banco de dados Oracle, empregando o driver ODBC (Open Database Connectivity) para facilitar a comunicação.

Configuração do Ambiente do Banco de Dados Oracle

A primeira etapa envolve a preparação do seu ambiente Oracle. Se o seu banco de dados já estiver configurado e operacional, você pode pular para a seção de configuração do ODBC.

Criação de Usuário e Concessão de Permissões

Acesse o banco de dados Oracle via linha de comando (cmd) e execute os seguintes coamndos SQL para criar um novo usuário e atribuir as permissões necessárias:

-- Conecta como usuário sys
sqlplus sys as sysdba

-- Cria um novo usuário chamado 'user_matlab' com a senha 'senha_segura'
CREATE USER user_matlab IDENTIFIED BY senha_segura;

-- Concede as permissões de conexão e recursos ao novo usuário
GRANT CONNECT, RESOURCE TO user_matlab;

Criação e População de Tabelas de Exemplo

Para fins de demonstração e teste, crie tabelas e insira dados. Isso garante que o MATLAB tenha dados para consultar.

-- Criação da tabela 'Departamentos'
CREATE TABLE Departamentos (
    id_departamento NUMBER(2) CONSTRAINT PK_DEPARTAMENTOS PRIMARY KEY,
    nome_departamento VARCHAR2(14),
    localizacao VARCHAR2(13)
);

-- Criação da tabela 'Funcionarios'
CREATE TABLE Funcionarios (
    id_funcionario NUMBER(4) CONSTRAINT PK_FUNCIONARIOS PRIMARY KEY,
    nome_funcionario VARCHAR2(10),
    cargo VARCHAR2(9),
    id_gerente NUMBER(4),
    data_contratacao DATE,
    salario NUMBER(7,2),
    comissao NUMBER(7,2),
    id_departamento NUMBER(2) CONSTRAINT FK_ID_DEPARTAMENTO REFERENCES Departamentos
);

-- Criação da tabela 'Bonus' (exemplo adicional)
CREATE TABLE Bonus (
    nome VARCHAR2(10),
    cargo VARCHAR2(9),
    salario NUMBER,
    comissao NUMBER
);

-- Criação da tabela 'FaixasSalarial'
CREATE TABLE FaixasSalarial (
    faixa NUMBER,
    salario_minimo NUMBER,
    salario_maximo NUMBER
);

-- Inserção de dados de exemplo na tabela 'Departamentos'
INSERT INTO Departamentos VALUES (10,'FINANCEIRO','NOVA YORK');
INSERT INTO Departamentos VALUES (20,'PESQUISA','DALLAS');
INSERT INTO Departamentos VALUES (30,'VENDAS','CHICAGO');
INSERT INTO Departamentos VALUES (40,'OPERACOES','BOSTON');

-- Inserção de dados de exemplo na tabela 'Funcionarios'
INSERT INTO Funcionarios VALUES (7369,'SILVA','ANALISTA',7902,TO_DATE('17-12-1980','DD-MM-YYYY'),800,NULL,20);
INSERT INTO Funcionarios VALUES (7499,'SOUZA','VENDEDOR',7698,TO_DATE('20-02-1981','DD-MM-YYYY'),1600,300,30);
INSERT INTO Funcionarios VALUES (7521,'PEREIRA','VENDEDOR',7698,TO_DATE('22-02-1981','DD-MM-YYYY'),1250,500,30);
INSERT INTO Funcionarios VALUES (7566,'OLIVEIRA','GERENTE',7839,TO_DATE('02-04-1981','DD-MM-YYYY'),2975,NULL,20);
INSERT INTO Funcionarios VALUES (7654,'COSTA','VENDEDOR',7698,TO_DATE('28-09-1981','DD-MM-YYYY'),1250,1400,30);
INSERT INTO Funcionarios VALUES (7698,'RODRIGUES','GERENTE',7839,TO_DATE('01-05-1981','DD-MM-YYYY'),2850,NULL,30);
INSERT INTO Funcionarios VALUES (7782,'ALMEIDA','GERENTE',7839,TO_DATE('09-06-1981','DD-MM-YYYY'),2450,NULL,10);
INSERT INTO Funcionarios VALUES (7788,'FERREIRA','ANALISTA',7566,TO_DATE('19-04-1987','DD-MM-YYYY')-85,3000,NULL,20);
INSERT INTO Funcionarios VALUES (7839,'GOMES','PRESIDENTE',NULL,TO_DATE('17-11-1981','DD-MM-YYYY'),5000,NULL,10);
INSERT INTO Funcionarios VALUES (7844,'MARTINS','VENDEDOR',7698,TO_DATE('08-09-1981','DD-MM-YYYY'),1500,0,30);
INSERT INTO Funcionarios VALUES (7876,'RIBEIRO','ANALISTA',7788,TO_DATE('23-05-1987','DD-MM-YYYY')-51,1100,NULL,20);
INSERT INTO Funcionarios VALUES (7900,'ALVES','ANALISTA',7698,TO_DATE('03-12-1981','DD-MM-YYYY'),950,NULL,30);
INSERT INTO Funcionarios VALUES (7902,'BARROS','ANALISTA',7566,TO_DATE('03-12-1981','DD-MM-YYYY'),3000,NULL,20);
INSERT INTO Funcionarios VALUES (7934,'PINHEIRO','ANALISTA',7782,TO_DATE('23-01-1982','DD-MM-YYYY'),1300,NULL,10);

-- Inserção de dados de exemplo na tabela 'FaixasSalarial'
INSERT INTO FaixasSalarial VALUES (1,700,1200);
INSERT INTO FaixasSalarial VALUES (2,1201,1400);
INSERT INTO FaixasSalarial VALUES (3,1401,2000);
INSERT INTO FaixasSalarial VALUES (4,2001,3000);
INSERT INTO FaixasSalarial VALUES (5,3001,9999);

-- Confirmação das transações
COMMIT;

Configuração do Ambiente ODBC

O ODBC atua como uma ponte entre o MATLAB e o banco de dados Oracle. É necessário configurar um DSN (Data Source Name) no seu sistema.

  • Abra o Painel de Controle e navegue até Ferramentas Adimnistrativas.
  • Selecione "Fontes de Dados ODBC (64 bits)" (ou a versão correspondente ao seu sistema).
  • Na aba "DSN do Sistema" (ou "DSN do Usuário", dependendo da sua preferência), clique em "Adicionar...".
  • Escolha o driver Oracle apropriado na lista (pode ser necessário instalar o Oracle Instant Client com o driver ODBC).
  • Configure os detalhes da conexão:
    • Nome do DSN: Defina um nome descritivo para a sua conexão (ex: Oracle_MATLAB_DSN).
    • Descrição: Opcional.
    • Service Name: O nome do serviço do seu banco de dados Oracle (ex: ORCL).
    • User ID: O nome de usuário criado anteriormente (ex: user_matlab).
    • Password: A senha do usuário (ex: senha_segura).
  • Clique em "Test Connection" para verificar se as credenciais e os detalhes do serviço estão corretos. Uma mensagem de sucesso indicará que a configuração está correta.

Execução de Código no MATLAB

Com o ambiente Oracle e o DSN do ODBC configurados, você pode agora escrever código MATLAB para interagir com o banco de dados.

% Limpa o workspace e o Command Window
clear;
clc;

% Define as credenciais e os detalhes da conexão
dbConfig = struct(...
    'DataSourcename', 'Oracle_MATLAB_DSN', ... % Use o nome do DSN configurado
    'User', 'user_matlab', ...
    'Password', 'senha_segura');

% Estabelece a conexão com o banco de dados Oracle
try
    conn = database(dbConfig.DataSourcename, dbConfig.User, dbConfig.Password);
    
    % Verifica se a conexão foi bem-sucedida
    if isopen(conn)
        disp('Conexão com o banco de dados Oracle estabelecida com sucesso!');
        
        % Executa uma consulta SQL para buscar dados da tabela 'Departamentos'
        query = 'SELECT * FROM Departamentos';
        cursor = exec(conn, query);
        
        % Busca os dados retornados pela consulta
        cursor = fetch(cursor);
        
        % Exibe os dados recuperados
        if ~isempty(cursor.Data)
            disp('Dados da tabela Departamentos:');
            disp(cursor.Data);
        else
            disp('Nenhum dado encontrado na tabela Departamentos.');
        end
        
        % Fecha o cursor
        close(cursor);
        
    else
        disp('Falha ao estabelecer conexão com o banco de dados.');
    end
    
    % Fecha a conexão com o banco de dados
    close(conn);
    disp('Conexão com o banco de dados fechada.');
    
catch ME
    disp(['Erro ao conectar ou interagir com o banco de dados: ', ME.message]);
end

Este script estabelece a conexão, executa uma conuslta SQL simples para recuperar todos os dados da tabela 'Departamentos', exibe os resultados e, em seguida, fecha a conexão.

Tags: MATLAB Oracle ODBC SQL banco de dados

Publicado em 9-22 19:45