Informações do Ambiente:
* Versão do Oracle:10G
* Sistema Operacional:RedHat - Oralce Unbreakable
Boa tarde!
To com uma duvida.... alguém sabe dizer se é realmente possivel fazer leitura de blocos sujos (DIRTY READ - READ UNCOMMITED) no oracle...
não ficou muito claro para mim o conceito passado pela documentacao da oracle...
http://www.oracle.com/technology/oramag ... sktom.html
Obrigado!!!
Abraçoss!
ISOLATION LEVEL - DIRTY READ
-
- Rank: Programador Júnior
- Mensagens: 22
- Registrado em: Seg, 25 Ago 2008 11:18 am
- Localização: Nova Mutum-MT
Alexandre Costa
DBA Oracle
DBA Oracle
-
- Rank: DBA Júnior
- Mensagens: 181
- Registrado em: Qua, 09 Fev 2005 12:30 pm
- Localização: SÃO BERNARDO DO CAMPO - SP
No âmbito das bases de dados, isolamento é um propriedade que define quando e como uma mudança feita por uma transacção se torna visível para outras transacções concorrentes. O Isolamento é também uma das propriedades do ACID.
A maioria dos SGBD permitem definir o nível de isolamento das transacções, permitindo controlar o grau de concorrência da base de dados. Cabe ao programador decidir qual o nível de isolamento que mais se adequa a aplicação em causa, a maior parte das aplicações não requerem um nível de isolamento muito restritivo, permitindo assim uma grande concorrência e evitando a possibilidade de deadlocks, pois quanto mais alto o nível de isolamento, menos concorrência permite e mais probabilidade do sistema entrar em deadlock de recursos.
Existem quatro níveis de isolamento definidos no standard ANSI/ ISO SQL. São eles o Read Uncommitted, Read Committed, Repeatable Read e o Serializable, estes níveis são classificados de acordo com a possibilidade de ocorrência de determinados fenómenos indesejados, que podem ser “Dirty reads“, “non-repeatable reads” e “Phantons”, tanto os níveis como os fenómenos são de seguida devidamente explicados.
Dirty Read Non-Repeatable Read Phantom
Read Uncommitted Sim Sim Sim
Read Committed Não Sim Sim
Repeatable Read Não Não Sim
Serializable Não Não Não
Dirty Read (Read uncommitted)- Ocorre quando uma transacção (T1) modifica determinada informação e de seguida uma outra transacção (T2) lê a mesma informação antes que T1 faça commit dessa informação ou rollback. Caso T1 faça rollback, T2 leu informação que nunca chegou a existir oficialmente na base de dados.
Non-Repeatable Read- Quando uma transacção T1 está aceder a informação, e uma outra transacção T2 apaga ou modifica essa informação T1 não vai conseguir voltar a reler a informação caso seja necessário.
Phantom (Repeatable reads)- É quando uma transacção T1 lê um grupo de registos que satisfazem uma dada condição, de seguida uma transacção T2 modifica ou insere um registo que satisfaz essa condição e faz commit, de seguida se T1 voltar a a ler os registos nas mesmas condições irá obter um resultado diferente.
Níveis de isolamento
Read Uncommitted – Este é o primeiro e menos proibitivo nível de isolamento. Neste nível podem ocorrer os três fenómenos pois não é adquirido qualquer tipo de lock de dados.
Read Commited – Este nível é o usado por defeito no Oracle e no SQL Server. Neste nível os Dirty Reads não ocorrem pois são usados locks partilhados que asseguram que nenhuma informação corrompida ou alterada por outra transacção e que ainda não tenha sido commited é lida, no entanto não assegura que os dados não vão ser alterados antes do fim da transacção, permite portanto a ocorrência de non-repeatable reads.
Repetable Read - Neste nível são adquiridos locks de leitura, prevenindo a ocorrência de dirty reads e de non-repetable reads mas permite a ocorrência de Phantoms, pois não são adquiridos “range-locks“.
Serializable – No nível serializable todas as transacções ocorrem num meio fechado, isto é, são todas executadas de modo sequencial. O SGBD pode executar transacções concorrentemente apenas se a ilusão de seruação for mantida, ou seja, se uma transacção não partilhar qualquer tipo de dados com a outra. Neste nível são usados range locks, não permitindo portanto qualquer ocorrencia de pahntoms ou de outros fenomenos.
A maioria dos SGBD permitem definir o nível de isolamento das transacções, permitindo controlar o grau de concorrência da base de dados. Cabe ao programador decidir qual o nível de isolamento que mais se adequa a aplicação em causa, a maior parte das aplicações não requerem um nível de isolamento muito restritivo, permitindo assim uma grande concorrência e evitando a possibilidade de deadlocks, pois quanto mais alto o nível de isolamento, menos concorrência permite e mais probabilidade do sistema entrar em deadlock de recursos.
Existem quatro níveis de isolamento definidos no standard ANSI/ ISO SQL. São eles o Read Uncommitted, Read Committed, Repeatable Read e o Serializable, estes níveis são classificados de acordo com a possibilidade de ocorrência de determinados fenómenos indesejados, que podem ser “Dirty reads“, “non-repeatable reads” e “Phantons”, tanto os níveis como os fenómenos são de seguida devidamente explicados.
Dirty Read Non-Repeatable Read Phantom
Read Uncommitted Sim Sim Sim
Read Committed Não Sim Sim
Repeatable Read Não Não Sim
Serializable Não Não Não
Dirty Read (Read uncommitted)- Ocorre quando uma transacção (T1) modifica determinada informação e de seguida uma outra transacção (T2) lê a mesma informação antes que T1 faça commit dessa informação ou rollback. Caso T1 faça rollback, T2 leu informação que nunca chegou a existir oficialmente na base de dados.
Non-Repeatable Read- Quando uma transacção T1 está aceder a informação, e uma outra transacção T2 apaga ou modifica essa informação T1 não vai conseguir voltar a reler a informação caso seja necessário.
Phantom (Repeatable reads)- É quando uma transacção T1 lê um grupo de registos que satisfazem uma dada condição, de seguida uma transacção T2 modifica ou insere um registo que satisfaz essa condição e faz commit, de seguida se T1 voltar a a ler os registos nas mesmas condições irá obter um resultado diferente.
Níveis de isolamento
Read Uncommitted – Este é o primeiro e menos proibitivo nível de isolamento. Neste nível podem ocorrer os três fenómenos pois não é adquirido qualquer tipo de lock de dados.
Read Commited – Este nível é o usado por defeito no Oracle e no SQL Server. Neste nível os Dirty Reads não ocorrem pois são usados locks partilhados que asseguram que nenhuma informação corrompida ou alterada por outra transacção e que ainda não tenha sido commited é lida, no entanto não assegura que os dados não vão ser alterados antes do fim da transacção, permite portanto a ocorrência de non-repeatable reads.
Repetable Read - Neste nível são adquiridos locks de leitura, prevenindo a ocorrência de dirty reads e de non-repetable reads mas permite a ocorrência de Phantoms, pois não são adquiridos “range-locks“.
Serializable – No nível serializable todas as transacções ocorrem num meio fechado, isto é, são todas executadas de modo sequencial. O SGBD pode executar transacções concorrentemente apenas se a ilusão de seruação for mantida, ou seja, se uma transacção não partilhar qualquer tipo de dados com a outra. Neste nível são usados range locks, não permitindo portanto qualquer ocorrencia de pahntoms ou de outros fenomenos.
-
- Rank: Programador Júnior
- Mensagens: 22
- Registrado em: Seg, 25 Ago 2008 11:18 am
- Localização: Nova Mutum-MT
Alexandre Costa
DBA Oracle
DBA Oracle
Paulo!
Quanto ao conceito não tenho duvidas. Porem gostaria de saber se no ORACLE é possivel fazer leitura de blocos sujos, outros banco é possivel.
Obrigado!
Abraços!
Quanto ao conceito não tenho duvidas. Porem gostaria de saber se no ORACLE é possivel fazer leitura de blocos sujos, outros banco é possivel.
Obrigado!
Abraços!
-
- Rank: Programador Júnior
- Mensagens: 22
- Registrado em: Seg, 25 Ago 2008 11:18 am
- Localização: Nova Mutum-MT
Alexandre Costa
DBA Oracle
DBA Oracle
Paulo,
Qual parametro de sessao deve ser alterado para que seja possivel fazer leitura dos blocos sujos?
Obrigado
Abraços!
Qual parametro de sessao deve ser alterado para que seja possivel fazer leitura dos blocos sujos?
Obrigado
Abraços!
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante