BEM VINDO AO BLOG DO MARCOS CARRARO CRIADOR DO "CARRARO DASHBOARD". MUITO MAIS QUE UM SIMPLES BLOG.
Mostrando postagens com marcador oracle. Mostrar todas as postagens
Mostrando postagens com marcador oracle. Mostrar todas as postagens

segunda-feira, 25 de novembro de 2013

Oracle 11g Express + SQL Developer no Windows X64.

Buenas,

Para download do Oracle Express : http://www.oracle.com/technetwork/products/express-edition/downloads/index.html

para Download do SQL Developer : http://www.oracle.com/technetwork/developer-tools/sql-developer/downloads/index.html

Ao instalar o Oracle Express, ele vai retornar um erro que não foi possível acessar, pois ele não existe. Para resolver este  problema é batata!

O erro apresentando é este ali de cima.

para isto, entre no regedit.

Vá neste destino.


Altera a chave de numero 1. Nela insira o caminho da tela acima do erro, porém repare que no meu caso ficou c:\users\Marcos onde marcos é o nome da conta de usuário do meu notebook.


Feito isto, a instalação vai proceder normalmente.

Ao tentar abrir o atalho conceitos básicos do oracle, vai ter problemas.. como este.


Calma, mais um que vai ser batata de resolver.

Apenas altera o caminho...
Acesse: C:\oraclexe\app\oracle\product\11.2.0\server

Onde vai ter um atalho chamado "Get_Started" um atalho para um site, botão direito, e altera a url para:

http://127.0.0.1:8080/apex/f?p=4950

Aqui já esta tudo rodando perfeito...



Bora Instalar o SQL Developer.


Este é barabada, baixa a versão com JDK incluso, caso baixar não incluso, primeiro instala o JDK x32, e por ultimo inicie o sql-developer.

Forte quebra costelas,
marcos carraro.
Read More

quarta-feira, 13 de novembro de 2013

Consultas Avançadas SQL - group_concat if/else

Buenas,

Hoje vai algumas dicas de consultas em SQL, muitas dicas legais...

Primeiro de tudo vamos verificar o group_concat();

- A consulta normal retorna...

MariaDB [db_painel]> select * from tb_ips;
+-------+---------------+------------+-------------------+-----------------------+------+
| id_ip | range_ip      | mascara_ip | host              | descricao_ips         | tipo |
+-------+---------------+------------+-------------------+-----------------------+------+
|     2 | 192.168.1.0   |          7 | NULL              | Rede Interna          | r    |
|     6 | 10.0.0.1      |         14 | fw                | Firewall principal    | h    |
|    10 | 192.168.1.101 |         14 | oracle            | Servidor Oracle Focco | h    |
|    11 | 10.0.0.0      |         10 | NULL              | DMZ                   | r    |
|    12 | 172.16.1.0    |          8 | NULL              | EXTERNA               | r    |
|    13 | 192.168.1.120 |          8 | bkp               | Servidor de bkp       | h    |
|    14 | 0.0.0.0       |          1 | NULL              | QUALQUER REDE         | r    |
|    15 | 201.2.55.99   |         15 | NULL              | LINK 2                | r    |
|    16 | 172.16.1.1    |          8 | TS                | TS w2k8 SERVER2       | h    |
|    17 | 8.8.8.8       |          1 | google-dns        | google-dns            | h    |
|    18 | 8.8.4.4       |         15 | google-dns2-teste | google-dns2-teste     | h    |
+-------+---------------+------------+-------------------+-----------------------+------+
11 rows in set (0.00 sec)


Repare que os ips tem um tipo R para REDE e H para HOST, então vamos agrupar tudo que for HOST e tudo que for REDE.

MariaDB [db_painel]> select tipo,group_concat(descricao_ips,'=',range_ip,'  ') as grupos from tb_ips group by tipo;
+------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| tipo | grupos                                                                                                                                                                            |
+------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| h    | google-dns2-teste=8.8.4.4  ,google-dns=8.8.8.8  ,TS w2k8 SERVER2=172.16.1.1  ,Servidor de bkp=192.168.1.120  ,Servidor Oracle Focco=192.168.1.101  ,Firewall principal=10.0.0.1   |
| r    | EXTERNA=172.16.1.0  ,DMZ=10.0.0.0  ,QUALQUER REDE=0.0.0.0  ,LINK 2=201.2.55.99  ,Rede Interna=192.168.1.0                                                                         |
+------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

Então, repare que a query ficou assim.
> select tipo,group_concat(descricao_ips,'=',range_ip,'  ') as grupos from tb_ips group by tipo;

Aqui vamos montar os grupos pelo seu tipo, então tudo que for do tipo 'H' vai concatenar pela descricao+IP, e dando um espaço.

Se for usar em alguma pagina php, ou html pode fazer a quebra 
> select tipo,group_concat(descricao_ips,'=',range_ip,'<br>') as grupos from tb_ips group by tipo;


-- if/else no sql
Na verdade aqui vamos utilizar o 'case' do mysql, ele fica mais fácil de entender em uma grande consulta.

Vamos fazer da seguinte maneira, se for do tipo H vai mostrar HOST, se for do tipo R vai mostrar REDE.

MariaDB [db_painel]> select (CASE WHEN tipo='r' then 'REDE' ELSE 'HOST' END) AS TIPO_DECODE,tipo from tb_ips;
+-------------+------+
| TIPO_DECODE | tipo |
+-------------+------+
| REDE        | r    |
| HOST        | h    |
| HOST        | h    |
| REDE        | r    |
| REDE        | r    |
| HOST        | h    |
| REDE        | r    |
| REDE        | r    |
| HOST        | h    |
| HOST        | h    |
| HOST        | h    |
+-------------+------+
11 rows in set (0.00 sec)

Então a clausula CASE funciona da seguinte maneira.
(CASE WHEN tipo='r' THEN 'REDE'   // Se tipo for igual a R então imprime REDE

ELSE 'HOST'  // Se não for do tipo R no caso vai ser do tipo H, então por sua vez imprime HOST

END) // Finaliza o bloco.

Você pode estar se pensando e se quero validar mais informações.... poderia implementar um case dentro do outro...


(CASE WHEN tipo='r' THEN 'REDE' 
ELSE (  (CASE WHEN tipo='h' THEN 'HOST' 
       ELSE 'TIPO DESCONHECIDO'  
       END)  )  
END) 

Repare que aqui já temos os dois CASE dentro um do outro, e assim pode fazer uma pilha....

SQL ainda tem muito mais funções, é espetacular...

Vale lembrar que quanto menos linhas de código o sistema tiver mais performático ele vai ser, pois são menos tratamentos na programação para validar os dados.

abraços
marcos carraro.

Read More

quinta-feira, 28 de fevereiro de 2013

Botando para funcionar PHP + Client Oracle 11G

Buenas,

Hoje, comecei um projeto novo que necessita trabalhar com oracle, e como todos sabem sou amante do PHP, para começar o php não da suporte nativo ao Oracle. Isso nos faz colocar a mão na massa e obter mais conhecimento.

Bora começar.

Cenário.
- Centos 6.3 x64 EN
- Apache 2.2.15
- PHP 5.3

Instalando dependências.

# yum install php php-devel php-pear gcc gcc-c++ autoconf -y

OBS:. Tem que fazer login em oracle.com para poder baixar.
http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html

Baixar o Basic e Devel para a sua versão do OracleDB.
OBS:. Se a sua versão do oracle for 11, desculpe-me, mas os clients não podem ser na mesma versão, vão ter que ser na versão 10.

Feito isso é hora de instalar o plugin no PHP.

# pecl install oci8

Saída....

Build process completed successfully
Installing '/usr/lib64/php/modules/oci8.so'
install ok: channel://pecl.php.net/oci8-1.4.9
configuration option "php_ini" is not set to php.ini location
You should add "extension=oci8.so" to php.ini



Temos que adicionar no php.ini o plugin. Para isso.

# echo "extension=oci8.so" >> /etc/php.ini

# /etc/init.d/httpd restart

# php -i | grep oci8

E ta não mão o php configurado para trabalhar com Oracle DB.

ATUALIZADO
Ao fazer a conexão com o DB e retornar um erro. "ORA-24408: could not generate unique server group name"

Exemplo de conexão com oracle utilizando php.

<?php

$usuario=" ";
$senha=" ";
$host=" ";
$db=" ";



$tns = "(DESCRIPTION = "
. " (ADDRESS = (PROTOCOL = TCP)(HOST = $host)(PORT = 1521))"
. " (CONNECT_DATA ="
. " (SERVER = DEDICATED)"
. " (SERVICE_NAME = $db)"
. " )"
. " )";


if ($c = @oci_connect($usuario, $senha, $tns)) {
    echo "Successfully connected to Oracle.";
    oci_close($c);
} else {
    $err = oci_error();
    $error = $err['message'] . "\n\n";
    print $error;
}


?>

Abraços
Marcos Carraro




Read More

Posts que a turma mais esta lendo...

Posts que a turma mais esta lendo...

Marcos Carraro