Conteúdo do cotidiano e gratuito de tecnologia em Banco de dados, Servidores Windows, Linux, BSD e Desenvolvimento em PL/SQL.
segunda-feira, 4 de novembro de 2013
[MySQL] - Verificando numero de tabelas por engines e schemas
Bom pessoal, essa é uma dica rápida para verficar o numero de tabelas que estejam utilizando engines diferentes no seu banco de dados MySQL.
-- Verificar o numero de tabelas por Engines em todo banco de dados
mysql> select count(*) as nrm_tabelas, a.engine as tipo_engine from information_schema.tables a group by a.engine;
-- Verifica o numero de tabelas por Engine e Schema
mysql> select count(*) as nrm_tabelas, a.engine as tipo_engine, a.table_schema as schemas_mysql from information_schema.tables a group by a.engine, a.table_schema;
Espero ajudar os desenvolvedores e DBAs MySQL que estejam fazendo levantamento dos objetos que utilizam engines diferentes dentro do seu banco de dados MySQL.
[Oracle] - DATA PUMP com REMAP_SCHEMA e REMAP_TABLESPACE
O REMAP_SCHEMA e o
REMAP_TABLESPACE se tornaram parte da minha rotina devido a clientes que
insistem em colocar ambiente de teste, homologação, produção,
desenvolvimento, etc, na mesma instância do banco de dados, fazendo esta
separação através de usuários do banco (schema) e tablespace distintas
para cada aplicação. Esta prática é altamente irrecomendável (rs), porém
é muito comum e temos que nos adaptar a ela.
Bom, por exemplo: Solicitam a atualização de um SCHEMA APP_TESTE (ambiente de teste), com base no SCHEMA APP_PROD (ambiente de produção), sendo que os 2 estão no mesmo banco de dados. Ai é que entra o nosso amigo (e acreditem, ainda pouco explorado) EXPDP:
1) Realizar o EXPORT do SCHEMA de produção usando EXPDP:
$ expdp system/senha schemas=APP_PROD directort=BACKUP dumpfile=APP_PROD.dmp logfile=APP_PROD.log
Obs: o diretório BACKUP deve já existir ou ser criado antes do início do processo:
SQL> create or replace directory BACKUP as '/tmp'; -- exemplo
2) Dropar objetos no SCHEMA APP_TESTE (ambiente de testes):
Antes da importação temos que nos certificar que o schema onde serão impostados os dados do APP_TESTE (exportados no item 1) está vazio. Para isso, uso os 3 SELECTS abaixo, que geram os scripts para dropar todos os objetos de um SCHEMA:
spool drop_fk.sql
select 'alter table '||owner||'."'||table_name||'" drop constraint "'||constraint_name||'"' cmd
from dba_constraints
where owner = 'APP_TESTE'
and constraint_type='R';
spool off
spool drop_tables.sql
select 'drop table '||owner||'."'||table_name||'"
' cmd
bulk collect into v_tabs
from dba_tables
where owner = 'APP_TESTE';
spool off
spool drop_objects.sql
select 'drop '||object_type||' '||owner||'."'||object_name||' "' cmd
bulk collect into v_objs
from dba_objects
where owner = 'APP_TESTE'
and object_type not in ('LOB')
order by object_type;
spool off
-- Executa scripts gerados
@drop_fk.sql
@drop_tables.sql
@drop_objects.sql
3) Realizar a importação dos dados do SCHEMA APP_PROD para o APP_TESTE, supondo:
- Tablespaces usadas por APP_PROD: APP_PROD_DT e APP_PROD_IX
- Tablespaces usadas por APP_TESTE: APP_TESTE_DT e APP_TESTE_IX
# impdp system/senha DIRECTORY=BACKUP dumpfile=APP_PROD.dmp logfile=impdpAPP_TESTE.log remap_schema=APP_PROD:APP_ TESTE
remap_tablespace=APP_PROD_DT: APP_TESTE_DT,APP_PROD_IX:APP_ TESTE_IX
No IMPDP acima estamos utilizando o DUMP (APP_PROD.dmp) gerado pelo EXPDP e 'informando' que os dados do schema APP_PROD devem ser importados no schema APP_TESTE. Destes dados, os que estiverem armazenados nas tablespaces APP_PROD_DT e APP_PROD_IX devem ser agora importados nas tablespaces APP_TESTE_DT e APP_TESTE_IX.
Obs: Antes de realizar a importação você deve saber em que tablespaces estão as tabelas/índices do schema APP_PROD, que você pode obter consultando as views DBA_TABLES e DBA_INDEXES.
Vale também ressaltar que para realizar o EXPDP e IMPDP, o usuário que realizará o processo (system nos exemplos acima) devem ter grant de DBA ou grant de CONNECT, RESOURCE, EXP_FULL_DATABASE e FLASHBACK ANY TABLE.
Fonte: http://oraclejunior.blogspot.com.br/2011/05/data-pump-com-remapschema-e.html
Bom, por exemplo: Solicitam a atualização de um SCHEMA APP_TESTE (ambiente de teste), com base no SCHEMA APP_PROD (ambiente de produção), sendo que os 2 estão no mesmo banco de dados. Ai é que entra o nosso amigo (e acreditem, ainda pouco explorado) EXPDP:
1) Realizar o EXPORT do SCHEMA de produção usando EXPDP:
$ expdp system/senha schemas=APP_PROD directort=BACKUP dumpfile=APP_PROD.dmp logfile=APP_PROD.log
Obs: o diretório BACKUP deve já existir ou ser criado antes do início do processo:
SQL> create or replace directory BACKUP as '/tmp'; -- exemplo
2) Dropar objetos no SCHEMA APP_TESTE (ambiente de testes):
Antes da importação temos que nos certificar que o schema onde serão impostados os dados do APP_TESTE (exportados no item 1) está vazio. Para isso, uso os 3 SELECTS abaixo, que geram os scripts para dropar todos os objetos de um SCHEMA:
spool drop_fk.sql
select 'alter table '||owner||'."'||table_name||'" drop constraint "'||constraint_name||'"' cmd
from dba_constraints
where owner = 'APP_TESTE'
and constraint_type='R';
spool off
spool drop_tables.sql
select 'drop table '||owner||'."'||table_name||'"
bulk collect into v_tabs
from dba_tables
where owner = 'APP_TESTE';
spool off
spool drop_objects.sql
select 'drop '||object_type||' '||owner||'."'||object_name||'
bulk collect into v_objs
from dba_objects
where owner = 'APP_TESTE'
and object_type not in ('LOB')
order by object_type;
spool off
-- Executa scripts gerados
@drop_fk.sql
@drop_tables.sql
@drop_objects.sql
3) Realizar a importação dos dados do SCHEMA APP_PROD para o APP_TESTE, supondo:
- Tablespaces usadas por APP_PROD: APP_PROD_DT e APP_PROD_IX
- Tablespaces usadas por APP_TESTE: APP_TESTE_DT e APP_TESTE_IX
# impdp system/senha DIRECTORY=BACKUP dumpfile=APP_PROD.dmp logfile=impdpAPP_TESTE.log remap_schema=APP_PROD:APP_
No IMPDP acima estamos utilizando o DUMP (APP_PROD.dmp) gerado pelo EXPDP e 'informando' que os dados do schema APP_PROD devem ser importados no schema APP_TESTE. Destes dados, os que estiverem armazenados nas tablespaces APP_PROD_DT e APP_PROD_IX devem ser agora importados nas tablespaces APP_TESTE_DT e APP_TESTE_IX.
Obs: Antes de realizar a importação você deve saber em que tablespaces estão as tabelas/índices do schema APP_PROD, que você pode obter consultando as views DBA_TABLES e DBA_INDEXES.
Vale também ressaltar que para realizar o EXPDP e IMPDP, o usuário que realizará o processo (system nos exemplos acima) devem ter grant de DBA ou grant de CONNECT, RESOURCE, EXP_FULL_DATABASE e FLASHBACK ANY TABLE.
Fonte: http://oraclejunior.blogspot.com.br/2011/05/data-pump-com-remapschema-e.html
[MS SQL Server] - Liberando Regra de Firewall no Windows pelo prompt
@echo ========= SQL Server Ports ===================
@echo Enabling SQLServer default instance port 1433
netsh firewall set portopening TCP 1433 "SQLServer"
@echo Enabling Dedicated Admin Connection port 1434
netsh firewall set portopening TCP 1434 "SQL Admin Connection"
@echo Enabling conventional SQL Server Service Broker port 4022
netsh firewall set portopening TCP 4022 "SQL Service Broker"
@echo Enabling Transact-SQL Debugger/RPC port 135
[Oracle] - Criando instância manualmente
Segue abaixo, exemplo de como criar uma intância Oracle manualmente:
Passo1:
Copie a estrutura de diretórios de uma instância já existente para utilizar na nova instância.
Passo 2:
Copie o arquivo init.ora de uma instância já existente e substitua o valor do parâmetro db_name pelo nome da instância que você irá criar.
Se estiver usando Windows, crie um serviço em services.msc para a instância.
oradim -new -sid TESTE
Passo 3:
Crie um arquivo de senhas:
orapwd file=C:\Oracle\product\10.2.0\db_1\database\pwdTESTE.ora password=oracle entries=10
Passo 4:
Inicie a instância em modo nomount:
set ORACLE_SID=TESTE
sqlplus / as sysdba
startup pfile=<caminho_novo_pfile> nomount;
Passo 5:
Crie o spfile da instância:
create spfile from pfile='<caminho_novo_pfile>';
Execute o comando abaixo:
create database TESTE
logfile group 1 ('C:\oracle\product\10.2.0\oradata\TESTE\redo1.log') size 10M,
group 2 ('C:\oracle\product\10.2.0\oradata\TESTE\redo2.log') size 10M,
group 3 ('C:\oracle\product\10.2.0\oradata\TESTE\redo3.log') size 10M
character set WE8ISO8859P15
national character set utf8
datafile 'C:\oracle\product\10.2.0\oradata\TESTE\system.dbf'
size 50M
autoextend on
next 10M maxsize unlimited
extent management local
sysaux datafile 'C:\oracle\product\10.2.0\oradata\TESTE\sysaux.dbf'
size 10M
autoextend on
next 10M maxsize unlimited
undo tablespace undotbs1
datafile 'C:\oracle\product\10.2.0\oradata\TESTE\undo.dbf'
size 2G
default temporary tablespace temp
tempfile 'C:\oracle\product\10.2.0\oradata\TESTE\temp.dbf' size 2G;
Passo 6:
Rode estes dois scripts:
@C:\oracle\product\10.2.0\db_1\rdbms\admin\catalog.sql;
@C:\oracle\product\10.2.0\db_1\rdbms\admin\catproc.sql;
Passo 7:
Recarregue o listener:
lsnrctl reload
*Lembrando que no exemplo foi utilizado a estrutura padrão de diretórios de uma instalação Oracle em ambiente Windows, e está estrutura pode ser trocada de acordo com a necessidade apresentada.
Fonte:
http://dicasdothales.blogspot. com.br/2012/08/oracle-criando- instancia-manualmente.html
Passo1:
Copie a estrutura de diretórios de uma instância já existente para utilizar na nova instância.
Passo 2:
Copie o arquivo init.ora de uma instância já existente e substitua o valor do parâmetro db_name pelo nome da instância que você irá criar.
Se estiver usando Windows, crie um serviço em services.msc para a instância.
oradim -new -sid TESTE
Passo 3:
Crie um arquivo de senhas:
orapwd file=C:\Oracle\product\10.2.0\db_1\database\pwdTESTE.ora password=oracle entries=10
Passo 4:
Inicie a instância em modo nomount:
set ORACLE_SID=TESTE
sqlplus / as sysdba
startup pfile=<caminho_novo_pfile> nomount;
Passo 5:
Crie o spfile da instância:
create spfile from pfile='<caminho_novo_pfile>';
Execute o comando abaixo:
create database TESTE
logfile group 1 ('C:\oracle\product\10.2.0\oradata\TESTE\redo1.log') size 10M,
group 2 ('C:\oracle\product\10.2.0\oradata\TESTE\redo2.log') size 10M,
group 3 ('C:\oracle\product\10.2.0\oradata\TESTE\redo3.log') size 10M
character set WE8ISO8859P15
national character set utf8
datafile 'C:\oracle\product\10.2.0\oradata\TESTE\system.dbf'
size 50M
autoextend on
next 10M maxsize unlimited
extent management local
sysaux datafile 'C:\oracle\product\10.2.0\oradata\TESTE\sysaux.dbf'
size 10M
autoextend on
next 10M maxsize unlimited
undo tablespace undotbs1
datafile 'C:\oracle\product\10.2.0\oradata\TESTE\undo.dbf'
size 2G
default temporary tablespace temp
tempfile 'C:\oracle\product\10.2.0\oradata\TESTE\temp.dbf' size 2G;
Passo 6:
Rode estes dois scripts:
@C:\oracle\product\10.2.0\db_1\rdbms\admin\catalog.sql;
@C:\oracle\product\10.2.0\db_1\rdbms\admin\catproc.sql;
Passo 7:
Recarregue o listener:
lsnrctl reload
*Lembrando que no exemplo foi utilizado a estrutura padrão de diretórios de uma instalação Oracle em ambiente Windows, e está estrutura pode ser trocada de acordo com a necessidade apresentada.
Fonte:
http://dicasdothales.blogspot.
[MySQL] - Mover armazenamento InnoDB no Linux
Passo 1:
Pare o MySQL Server:
# /etc/init.d/mysqld stop
Passo 2:
Através de comandos do sistema operacional, mova o arquivo ibdata1 para outro diretório ou partição (/ibdata).
Passo 3:
Edite o arquivo my.cnf e adicione a seguinte linha:
innodb_data_home_dir=/ibdata
Passo 4:
Inicie o MySQL Server:
# /etc/init.d/mysqld start
Pare o MySQL Server:
# /etc/init.d/mysqld stop
Passo 2:
Através de comandos do sistema operacional, mova o arquivo ibdata1 para outro diretório ou partição (/ibdata).
Passo 3:
Edite o arquivo my.cnf e adicione a seguinte linha:
innodb_data_home_dir=/ibdata
Passo 4:
Inicie o MySQL Server:
# /etc/init.d/mysqld start
Assinar:
Postagens (Atom)


