Local Index vs. Global Index em tabela particionada
Mar 31, 2010 SQL
A maioria das pessoas tem essas perguntas sobre Index Partition:
- O que é um Local Index?
- O que é um Global Index?
- Quando você forçaria a criação de um Global Index em uma partition table?
- Quando você recomendaria criar um Global Index em vez de um Local Index?
Para responder a essas perguntas….
1. O que é um Local Index?
Local Indexes particionados são mais fáceis de gerenciar, cada partição do Local Index está associado a uma partição. Eles também oferecem maior disponibilidade e são comuns em ambientes de DSS. Quando tomamos qualquer ação (MERGE, SPLIT,EXCHANGE etc) em um Local Index, isso impacta apenas aquela partição e as outras estarão disponíveis. Nós não podemos adicionar explicitamente um Local Index para uma nova partição. O Local Index será adicionado implicitamente a nova partição, quando for criada uma nova partição na tabela. Da mesma forma, não podemos dropar o índice local em uma partição específica. Ele pode ser dropado automaticamente quando nós dropamos a partição da tabela subjacente. Local Indexes podem ser UNIQUE quando a chave da partição é parte do índice composto. Unique Local Indexes são úteis para o ambiente OLTP. Podemos também criar bitmap indexes em tabelas, com a restrição de que os índices de bitmap deve ser local para a tabela particionada. Eles não podem ser Global Indexes.
SQL> CREATE TABLE employees 2 (employee_id NUMBER(4) NOT NULL, 3 last_name VARCHAR2(10), 4 department_id NUMBER(2)) 5 PARTITION BY RANGE (department_id) 6 (PARTITION employees_part1 VALUES LESS THAN (10) TABLESPACE ODS_STAGE_DATA, 7 PARTITION employees_part2 VALUES LESS THAN (20) TABLESPACE ODS_STAGE_DATA, 8 PARTITION employees_part3 VALUES LESS THAN (30) TABLESPACE ODS_STAGE_DATA); Table created. SQL> declare 2 v_no number :=1; 3 begin 4 delete employees; 5 for i in 1..10 loop 6 insert into employees values(v_no,'name...',v_no); 7 v_no := v_no+1; 8 end loop; 9 end; 10 / PL/SQL procedure successfully completed. SQL> SQL> create index idx_local on employees(last_name) local; Index created. SQL>
Tags: Index, Oracle 10g, Oracle 11g, Partition, Tuning
Melhorias nos EXTERNAL TABLES do 10g
Jan 13, 2009 SQL
A partir do Oracle 9i foi criado o conceito de EXTERNAL TABLES, ou seja, você cria uma tabela baseado num arquivo texto no sistema operacional e pode fazer consultas SQL nessa tabela (ou seja, diretamente no arquivo texto como se fosse uma tabela) Read the rest of this entry »
Agora a partir do oracle 10g é possível também criar um arquivo texto baseado numa tabela do banco usando o novo driver de Data Pump existente.
Tags: External Table, Oracle 10g, SQL
Novas funcionalidades com CONNECT BY
Jan 12, 2009 SQL
A partir do Oracle 10g temos mais algumas funcionalidades no uso da cláusula CONNECT BY dentro dos comandos SELECT. Essas mudanças se aplicam a queries hiearquicas permitindo o retorno de não apenas PAIS, FILHOS mas também “ancestrais”. São 3 as novas cláusulas disponíveis com CONNECT BY.
Read the rest of this entry »
Tags: Connect By, Oracle 10g, SQL
Cláusula RETURNING com funções somatórias
Jan 9, 2009 SQL
Oracle 10g agora permite o uso de funções somatórias na cláusula RETURNING. O seguinte exemplo faz um UPDATE no salário de todos empregados e retorna a média salarial resultante para as linhas afetadas.
Read the rest of this entry »
Tags: Oracle 10g, SQL
Ignorando Acentos e Maiúsculas/Minúsculas no 10g
Jan 8, 2009 SQL
O Oracle 10g agora permite fazer consultas considerando ou não acentos e maiúsculas/minúsculas. Isso é feito pelo uso do parâmetro NLS_SORT. Vamos aos exemplos.
Read the rest of this entry »
Tags: Acentuação, Oracle 10g, SQL