sexta-feira, 16 de maio de 2008

ASM - Como Mudar Nomes de Arquivos de Dados

Nomes de arquivos de banco de dados podem ser modificados como qualquer outro tipo de arquivo. Em ASM, esta modificação é realizada através da criação de apelidos.

Mudança de nomes em arquivos de banco de dados é necessário quando há migrações de estrutura ou mudança no padrão de nomenclaturas.


Para mudar nomes de dadtafiles, utilize o procedimento abaixo.

Instância ASM:

1- Crie nomes de diretórios dentro de grupo de discos.

alter diskgroup dg_name
add directory '+dg_name/new_dir_name';

alter diskgroup
dg_name
add directory '+dg_name/new_dir_name/datafile';


2- Crie os novos apelidos dos arquivos de dados.

alter diskgroup dg_name
add alias 'fully_qualified_new_data_file_name'
for 'fully_qualified_old_data_file_name';


Instância de banco:

3- Inicie o banco no modo monta e modifique o nome do arquivo de dados. Para realizar alterações em aquivos de dados, permanentes ou temporário, é necessário que o banco tenha sido iniciado no modo monta. O banco também pode ser iniciado no modo abre, mas os arquivos de dados a serem renomeados tem que estar no modo desligado.

startup mount

alter database rename
file 'fully_qualified_old_data_file_name'
for 'fully_qualified_new_data_file_name';


Nota: Não é possível modificar nomes de arquivos gerados pelo ASM. A única alternativa é alterar ou criar apelidos para os arquivos de dados.

alter diskgroup
dg_name rename
alias '+
dg_name/db_name/datafile/old_data_file_name'
to '+
dg_name/db_name/datafile/new_data_file_name';

sexta-feira, 9 de maio de 2008

Importando Tabelas Com Tipo de Dados LONG

Um dos principais problemas enfrentados pelo DBA é importar conteúdo de tabelas com colunas do tipo LONG. Normalmente utilizamos o Oracle Datapump. Acontece que, se a tabela tiver sido criada antes da importação dos dados, esse utilitário apresenta o erro ORA-31693: Table data object "ESQUEMA"."NOME_DA_TABELA" failed to load/unload and is being skipped due to error: ORA-00936: missing expression. Quando este erro acontecer elimine a tabela ou utilize o parametro TABLE_EXISTS_ACTION=REPLACE.

domingo, 20 de abril de 2008

Lentidão ao Habilitar Chaves Estrangeiras

O DBA recebe a reclamação de que a habilitação de chaves estrangeiras de algumas tabelas recém importadas via Oracle Datapump está demorando mais do que deveria, embora o banco não apresente problemas de desempenho.

Este comportamento é experado na versão 10.2.0. As informações de estatística são bloqueadas durante uma importação via Datapump, se os metadados forem importados. Isto acontece porque no Oracle 10g, por definição, estatísticas realizadas automaticamente. Consequentemente, as estatísticas importadas, se não bloqueadas, poderiam ser perdidas na proxima coleta.

A solução para o incidente em questão, consiste em desbloquear o acesso as estatíticas de tabela executando o procedimento DBMS_STATS.UNLOCK_TABLE_STATS('DONO','TABELA') ou não importar estatísticas de tabelas.

quinta-feira, 31 de janeiro de 2008

Recriar objetos e manter privilégios

O desenvolvedor liga para o DBA e informa que sua aplicação, de uma hora para outra, passou a exibir o erro ORA-00942.

A causa deste incidente está na inexistência de uma tabela, de um sinônimo ou de privilégios. A falta de privilégios de acesso a um objeto pode ocorrer quando utilizamos "DROP/CREATE" ao invés de "CREATE OR REPLACE" para atualizar versões de objetos.

quarta-feira, 9 de janeiro de 2008

Tabelas Temporárias - Oracle

Tabelas Temporárias são úteis em aplicações onde os dados necessitam ser preservados durante uma ou diversas transações dentro de uma sessão.

Uma tabela temporária possui praticamente as mesmas caracteristicas de uma tabela permanente. A diferença é que os dados são vistos somente pelo usuário dono da sessa que inseriu os dados. Esse dados são descartados ao encerrar a sessão do usuário.

Utilize o comando CREATE GLOBAL TEMPORARY TABLE para criar tabelas temporárias. A cláusula ON COMMIT define se os dados da tabela são exclusivos da transação (CREATE GLOBAL TEMPORARY TABLE … ON COMMIT DELETE ROWS) ou da sessão (CREATE GLOBAL TEMPORARY TABLE … ON COMMIT PRESERVE ROWS).

Podem ser criados em tabelas temporárias e a duração dos dados do índice depende da duração dos dados da tabela temporária.

Por definição, tabelas temporárias são criadas em tablespaces temporárias. Entretanto o DBA pode definir uma tablespace. Utilize este recurso se os segmentos da tabela temporária tiverem um crescimento não compatível os da tablespace temporária.

Os dados de uma tabela temporária, por definição, são temporários. Backups e recuperação de dados dessas tabelas são estão disponíveis em uma eventual falha de sistema.

terça-feira, 2 de outubro de 2007

Uso do EMCLI

Para DBA que prefere executar comandos ao invés de clicar prá lá e prá cá, sem saber exatamente o que está acontecendo. O EMCLI é um excelente recurso que pode até certo ponto substituir funções do Oracle Enterprise Manager. Veja o exemplo a seguir:

Neste exemplo o dba submete um script a partir da console do OMS.

emcli execute_sql \
-sql="FILE" \
-input_file="FILE:/u01/app/oracle/admin/scripts/script.sql"\
-credential_set_name=set_name="DBCredsNormal"\
-targets="nome_do_banco:oracle_database"

Vale a pena consultar documentação do produto e testar.

terça-feira, 18 de setembro de 2007

Obtenção de Patches Oracle

A Oracle possui um servidor exclusivo para obtenção de patches. A acesso a este site está limitado ao usuários do Oracle Metalink.

Para obter os patches, deve-se executar o procedimento a seguir:
  1. Executar no prompt do unix o comando ftp updates.oracle.com
  2. Logar-se utilizando sua conta Oracle Metalink
  3. Exibir instruções de download executando o comando "quote site help"
O exemplo abaixo ilustra o procedimento de obtenção de patches

# su - oracle
$ cd $TMP # Certifique-se de há espaço suficiente para downloads
$ ftp updates.oracle.com
Connected to bigip-aru.oracle.com.
220 FTP server ready.
Name (updates.oracle.com:oracle): ze.maneh@empresa.com.br
331 Username OK, please send password.
Password:
230-
230- Welcome to the Oracle Patch Download FTP Server
230-
230- For detailed help, use command "quote site help".
230
ftp> quote site help

(...) Será exibida uma tonelada de instruções.

ftp> cd 5674779
250 Changed directory OK.
ftp> ls
200 PORT command OK.
150 Opening data connection for file listing.
p5674779_10203_GENERIC.zip
226 Listing complete. Data connection has been closed.
ftp> bin
200 TYPE changed to I.
ftp> get p5674779_10203_GENERIC.zip
200 PORT command OK.
150 Opening BINARY mode data connection for file p5674779_10203_GENERIC.zip.
226 File retrieval complete. Data connection has been closed.
211732374 bytes received in 749.8 seconds (275.8 Kbytes/s)
local: p5674779_10203_GENERIC.zip remote: p5674779_10203_GENERIC.zip
ftp> quit
221 Goodbye. Service closing connection.