thegoodfellas/blogset-br huggingface dataset:
seu afeto, estando perto ou longe. Nao se baseia na mentira, mas na verdade. Nao e esteril, da doces frutos. Nao deve ser ocioso, e sim laborioso, no bem de nos mesmos e de todos.Devemos nos querer bem, se nao gostarmos de nos mesmos, como querer bem o nosso proximo? Se nao nos amarmos por achar que temos muitos defeitos e somos desagradaveis, que mudemos, tornando-nos melhores para que outros passem a nos amar e admirar. Quando nos queremos bem, podemos tambem querer a outros. Mas que este amor nao nos afunde no egoismo e vaidade e sim no altruismo. Ele deve ser benevolo.Para que esse sentimento cresca em nos, o odio e rancor nao devem ser alimentados, antes devem ser extintos, para que essa plantinha meiga e fragil fortaleca e irradie em nos, de dentro para fora, toda sua beleza.O amor entre duas pessoas nao deve ser confundido com paixao. Paixao e um sentimento arrasador que passa logo e causa estragos. Esse sentimento nao deve ser so manifestacao fisica, deve ser uma uniao onde a felicidade e o bem-estar do outro e mais importante que a nossa propria. Amor... Sentimento forte que une, laca as pessoas, mantendo-as unidas mesmo quando distantes. O amor fortalece o espirito perpetuando unioes. E esse afeto sincero deve ser estendido a prole, aos pais, aos parentes e amigos. Aumentando o circulo, ate que amemos a todos como o Pai nos ama.O Pai ensinou-nos a amar como Jesus nos amou. Quando nos na Terra aprendermos a cultivar esse sentimento, seremos muito mais felizes, porque o amor anula nossos erros, leva-nos ao progresso e, consequentemente, a felicidade.Devemos exercitar para querer bem tudo, nossas tarefas, nossas licoes, nossos afetos e desafetos, nossas dificuldades e alegrias. Em tudo o que vamos fazer devemos primeiro amar, colocar o sentimento do amor em tudo. A tarefa nos sera mais suave e mais agradavel, os resultados surgirao num trabalho bem-feito. Nosso caminhada sera mais amena se amarmos os companheiros de jornada. Se amarmos o caminho, surgirao flores para enfeita-lo.Ser grato ja e sinal de que estamos aprendendo a amar. Sejamos gratos a tudo a todos e ao Pai. Cultivemos a gratidao sincera, sem nunca exigi-la para nos. Lembrar os beneficios recebidos e um dever, porem devemos esquecer sem cobranca os beneficios que julgamos ter feito. Ao receber agradecimentos, devemos aceitar sem afetacao, gostando a quem prestamos favor.Se amarmos a todos, tudo nos sera mais facil, porque so teremos amigos, seremos reciprocos ao carinho de outros.Se eu amar, farei esse sentimento expandir, levando outros a faze-lo tambem. Quando o amor verdadeiro for mais cultivado, a Terra, entao, sera uma morada fraterna e todos seremos beneficiados, porque o amor real e alegria e felicidade
GASTAR TEMPO COM A PESSOA ERRADA.......... "A vida e muito curta para gastar tempo com pessoas que sugam a sua felicidade. Se alguem quer voce em sua vida, essa pessoa vai arrumar algum espaco para voce. Voce nao deve lutar por esse espaco. Nunca, jamais, insista em alguem que nao reconheca seu valor. E lembre-se, nao sao as pessoas que estao ao seu lado quando voce esta no seu melhor, mas as que estao ao seu lado quando voce esta no seu pior, que sao seus verdadeiros amigos".NAO SEI O AUTOR Nao e tao simples viver a vida. As vezes, ela contem capitulos imprevisiveis e inevitaveis. Todo ser humano passa por turbulencias em sua vida. A alguns falta o pao na mesa; a outros, a alegria na alma. Uns lutam para sobreviver. Outros sao ricos e abastados, mas mendigam o pao da tranquilidade e da felicidade. Por isso ha miseraveis que moram em palacios e ricos que moram em casebres. A vida e belissima, mas nao e tao simples vive-la. As vezes, ela se parece com um imenso jardim. De repente, a paisagem muda e ela se apresenta arida como um deserto ou ingreme como as montanhas. Independentemente dos penhascos que temos de escalar, cada ser humano possui uma forca incrivel. E muitos desconhecem que a possuem . COMO E BOM SER VIDA LOUCATenho visto ultimamente inumeros adolescentes gritarem em alto e bom som a expressao acima, exaltando crime, desrespeito e rebeldia como trofeus dos quais alguem pode se orgulhar. A respeito disso, gostaria de fazer algumas observacoes: Vida louca, meu irmao, e o cara acordar as 6 da manha, tomar um cafe sem pao (o unico que resta sera dividido entre os irmaos menores), ir pra escola a pe (porque o dinheiro da passagem e usado pra comprar a pouca comida que tem em casa), quase nao assistir televisao, pois na casa so tem uma, na sala, que sempre e dominada pela vontade da maioria, nao ter internet, nem roupa de marca e, ainda assim, ser o melhor aluno da turma e o melhor amigo que alguem pode ter. Vida louca, "brother", e ter todo luxo, conforto e apoio da familia e aproveitar cada oportunidade que o dinheiro proporciona de viver bem, de amadurecer e se desenvolver intelectualmente, mais do que uma grande maioria nesse pais. Vida louca, meu amigo, e ter que parar de estudar aos 15 e comecar a trabalhar aos 16 e, ainda assim, retornar aos estudos a noite, porque tem garra e gana de buscar um futuro melhor. Vida louca e nao ter pai, nao ter mae, nao ter afeto nem referencias e, ainda assim, acreditar que a vida pode ser diferente quando se quer. Vida louca e o oposto de usar droga por modismo, desrespeitar as pessoas por falta de carater e ser rebelde, sem nem saber o que significa rebeldia. Vida louca, pra mim, e o cara que aproveita as oportunidades de ser melhor a cada dia, vivendo suas historias, sendo livre (nao confundido liberdade com libertinagem), independente da classe social. Aquele que aprendeu que
a melhor rebeldia que se pode ter e ser exatamente o contrario daquilo que o sistema espera de voce (comodismo, apatia e conformismo). Correr atras dos objetivos, batalhar pela realidade, isso pra mim e Vida louca. O resto, no meu humilde ponto de vista, tem um outro nome: Vida Burra!!
O DIA EM QUE EU MORRI... Estranho? Nem tanto. Se depois de ler esse texto voce achar que ainda esta vivo, otimo! Caso contrario, e bom repensar se ainda existe algum sopro de vida, ai dentro. Vou contar, como tudo aconteceu: A minha primeira parcela de morte aconteceu quando acreditei que existiam vidas mais importantes e preciosas do que a minha. O mais estranho e que eu chamava isso de humildade. Nunca pensei na possibilidade do auto abandono. Morri mais um pouquinho no dia em que acreditei em vida ideal, estavel, segura e confortavel. Passei a nao saber lidar com as mudancas. Elas me aterrorizavam. Depois vieram outras mortes. Recordo-me que comecei a perder goticulas de vida diaria, desde que passei a consultar os meus medos, ao inves do meu coracao. Dai em diante comecei a agonizar mais rapido e a ser possuida por uma sucessao de pequenas mortes. Morri, no dia em que meus labios disseram "nao", enquanto o meu coracao gritava "sim"! Morri, no dia em que abandonei um projeto pela metade por pura falta de disciplina. Morri, no dia em que me entreguei a preguica. No dia em que decidi ser ignorante, bulimica, cruel, egoista e desumana comigo mesma. Voce pensa que nao decide essas coisas? Lamento. Decide, sim! Sempre que voce troca uma vida saudavel por vicios, gulodice, sedentarismo, drogas e alienacao intelectual, emocional, espiritual, cultural ou financeira, voce esta fazendo uma escolha entre viver e morrer. Morri, no dia em que decidi ficar em um relacionamento ruim, apenas para nao ficar so. Mais tarde percebi que troquei afeto por comodismo e amor, por amargura. Morri outra vez, no dia em que abri mao dos meus sonhos por um suposto amor. Confundi relacionamento com posse e ciume, com zelo. Morri, no dia em que acreditei na critica de pessoas crueis. A pior delas? Eu mesma. Morri, no dia em que me tornei escrava das minhas indecisoes. No dia em que prestei mais atencao as minhas rugas do que aos meus sorrisos. Morri no dia que invejei , fofoquei e difamei. Sequer percebi o quanto havia me tornado uma vampira da felicidade alheia. Morri, no dia que acreditei que preco era mais importante do que valor. Morri, no dia em que me tornei competitiva e fiquei cega para a beleza da singularidade humana. Morri, no dia em que troquei o hoje pelo amanha. Quer saber o mais estranho? O amanha nao chegou. Ficou vazio... Sem historia, musica ou cor. Nao morri de causas naturais. Fui assassinada, todos os dias. As razoes desses abandonos foram uma sucessao de desculpas e equivocos. Mas ainda assim foram decisoes. O mais ironico de tudo isso? As pessoas que vivem bem nao tem medo da morte real. As que vivem mal e que padecem desse sofrimento, embora ja estejam mortas. E dessas que me despeco. Assinado, A Coragem (Texto de Ligia Guerra) "Quantos anos tenho?Tenho a idade em que as coisas sao vistas com mais calma, mas com o interesse de seguir crescendo.Tenho os anos em que os sonhos comecam a acariciar com os
dedos e as ilusoes se convertem em esperanca.Tenho os anos em que o amor, as vezes, e uma chama intensa, ansiosa por consumir-se no fogo de uma paixao desejada. E outras vezes e uma ressaca de paz, como o entardecer em uma praia. Quantos anos tenho? Nao preciso de um numero para marcar, pois meus anseios alcancados, as lagrimas que derramei pelo caminho ao ver minhas ilusoes despedacadas, valem muito mais que isso... O que importa se faco vinte, quarenta ou sessenta?! O que importa e a idade que sinto. Tenho os anos que necessito para viver livre e sem medos. Para seguir sem temor pela trilha, pois levo comigo a experiencia adquirida e a forca de meus anseios. Quantos anos tenho? Isso a quem importa? Tenho os anos necessarios para perder o medo e fazer o que quero e o que sinto...". [Jose Saramago
0 SELECT COD FROM T4 62 2 2 0 DELETE FROM T5 WHERE COD IN (SELECT COD FROM T3) Comoera de se esperar, a sessao 52 (a aberta pelo SSMS) e a sessao que esta no topoda cadeia de bloqueios. O interessante dessa ultima consulta e que nao somentefoi possivel visualizar a quantidade de bloqueios aberta, mas principalmente ocomando que proporcionou que a cadeia se formasse.Ouso das Recursive CTEs nao se limita apenas a descobrir qual e a sessao queimpoe mais bloqueios diretos e indiretos. Com o uso da CTE e possivel exibir ascadeias de bloqueios e visualizar o que acontecera em um primeiro momentoquando a sessao 52 for eliminada. A consulta abaixo mostra as cadeias debloqueio provocadas pela sessao 52 de forma indireta (exatamente 20 registrosconforme a tabela acima).;WITH Sessoes(Sessao, Bloqueadora) As ( SELECT Session_Id,Blocking_Session_Id FROM sys.dm_exec_requests As R WHERE blocking_session_id> 0 UNION ALL SELECT Session_Id, CAST(0 AsSMALLINT) FROM sys.dm_exec_sessions As S WHERE EXISTS( SELECT * FROM sys.dm_exec_requests As R WHERE S.Session_Id= R.Blocking_Session_Id) AND NOT EXISTS ( SELECT * FROM sys.dm_exec_requests As R WHERE S.Session_Id= R.Session_Id)),Bloqueios As ( SELECT CAST(Sessao As VARCHAR(200)) As Cadeia, Sessao, Bloqueadora, 1 As Nivel FROM Sessoes UNION ALL SELECT CAST(B.Cadeia+ -> + CAST(S.Sessao AsVARCHAR(5)) AsVARCHAR(200)), S.Sessao, B.Sessao, Nivel + 1 FROM Bloqueios As B INNER JOIN Sessoes As S ON B.Sessao= S.Bloqueadora)SELECT Cadeia FROM BloqueiosWHERE Nivel= (SELECT MAX(Nivel) FROM Bloqueios)ORDERBY CadeiaOresultado e obtido na tabela abaixo (a formatacao foi proposital): Linha Cadeia Linha Cadeia 01 52 -> 54 -> 63 11 52 -> 55 -> 74 02 52 -> 54 -> 65 12 52 -> 57 -> 58 03 52 -> 54 -> 69 13 52 -> 57 -> 61 04 52 -> 54 -> 70 14 52 -> 57 -> 71 05 52 -> 54 -> 73 15 52 -> 57 -> 72 06 52 -> 54 -> 75 16 52 -> 59 -> 64 07 52 -> 55 -> 56 17 52 -> 59 -> 76 08 52 -> 55 -> 60 18 52 -> 59 -> 77 09 52 -> 55 -> 66 19 52 -> 62 -> 67 10 52 -> 55 -> 68 20 52 -> 62 -> 78 Aexemplo da linha 01 pode-se ver claramente que a sessao 52 bloqueia a sessao 54que por sua vez bloqueia a sessao 63. A tabela exibe os 20 bloqueios indiretos.Eliminar por exemplo a sessao 52, ira liberar a sessao 54 que ira liberar asessao 63. A consulta mostra todas as liberacoes que irao ocorrer se a sessao52 for eliminada. Nao e necessario elimina-la ainda.Asconsultas anteriores juntamente com essa ultima mostram o poder que as CTEspodem realizar no monitoramento e resolucao dos bloqueios ja que esses saoapresentados em uma relacao hierarquica. Ainda assim, se o objetivo era apenasencontrar a sessao que mais promove bloqueios, ha uma maneira bem mais direta.O raciocinio e bem simples. A sessao que forma a hierarquia sera a primeira aefetuar um bloqueio. A sessao que e bloqueada primeiro ira naturalmente ser aque estara esperando por mais tempo, pois, a medida que ela e bloqueada e queos demais bloqueios se formam.
A consulta abaixo demonstra esse raciocinioSELECTTOP 10 Session_Id,Blocking_Session_IdFROM sys.dm_exec_requestsWHERE Blocking_Session_Id> 0ORDERBY Wait_Time DESCAconsulta exibe o seguinte resultado: Session_Id Blocking_Session_Id 54 52 55 52 56 55 57 52 58 57 59 52 60 55 61 57 62 52 63 54 Aconsulta retorna todas as requisicoes que nao estao bloqueadas(blocking_session_id > 0) e as ordena pelo maior tempo de espera. A sessao54 esta bloqueada pela sessao 52 e e a sessao que espera a mais tempo. Isso eum forte indicio de que a sessao 52 possui forte influencia na cadeia debloqueios. A resposta nao e tao precisa quanto o uso das CTEs, mas normalmenteessa alternativa e muito certeira por conta da logica.Aideia desse artigo e demonstrar como abordar longas cadeias de bloqueios emambientes de producao. Normalmente quando o bloqueio e formado nao ha um avisoformal ao responsavel pelo banco de dados. Isso e natural, pois, os bloqueiossao necessarios para garantir a integridade dos dados (principalmente na oticapessimista presenca na maioria dos bancos de dados). A demora no processo deresolucao desses bloqueios (seja por conexoes orfas, transacoes longas, etc)pode formar um situacao bem critica. Um bloqueio de 10ms talvez passedespercebido, mas uma cadeia de bloqueios formada por varias sessoes e impostaha alguns minutos provavelmente sera descoberta e o DBA nao tera tempo paratentar analisar qual a sessao que provoca tantos bloqueios. Abordei aqui asprincipais tecnicas que costumo utilizar para encontra-los.Oscodigos abordam um cenario muito simplista. Nem sempre ha uma unica cadeia debloqueios. E possivel que haja varios processos montado extensas cadeias. Epossivel tambem que as cadeias possuam mais de tres niveis de aninhamento eassim por diante. Os codigos mostram o caminho das pedras, mas certamente podemser otimizados. Espero que esse artigo sirva de subsidio para entender e lidarcom os bloqueios quando eles incomodarem. Por fim, matar a sessao 52, ira fazercom que todas as sessoes sejam liberadas e o SQL Server se resolva. Aoscuriosos, vale a pena efetuar um KILL e conferir o resultado das consultasrepassadas ate entao.
de IRRF, ISS Devido no Municipio do Cliente, dentre outros.TPRD_11.40A tabela TPRD_1140 sera criada automaticamente, com as informacoes da TPRD. Nesta tabela o campo IDPRD tera o IDPRD novo, recalculado apos a conversao. Foi criado o campo IDPRDOLD para registrar o IDPRD antigo, antes da conversao.TPARPRODUTOA tabela TPARPRODUTO sera criada automaticamente, com as informacoes de parametrizacao de produtos contidas na TPAR. Sera criado um registro para cada coligada.As informacoes transferidas para esta tabela, serao deletadas da TPAR.Compatibilidades: Como todos os Produtos terao seus IDPRD alterados (recalculado sequencialmente entre todas as coligadas), todas as tabelas que possuem referencia com a tabela TPRD atraves da chave estrangeira foram alteradas, sendo a chave refeita usando somente a nova chave primaria da tabela TPRODUTO, que e apenas o IDPRD. Ainda com relacao ao recalculo do IDPRD, foi criado um Wizard para verificacao de Consultas SQL e Formulas que possuem o IDPRD passados como parametros e valores fixos.Exemplo: Consulta SQL a Select * from TPRODUTO where IDPRD = 544Este Wizard ira percorrer todas as Consultas SQL e Formulas e apontar as que se encaixam nesta situacao. O usuario tera a opcao de verificar o contexto de cada registro apresentado e optar em alterar o IDPRD, que devera ser informado manualmente pelo usuario. Na interface desse wizard, existe a opcao de pesquisa do IDPRD novo. Com base na informacao do IDPRD antigo, o sistema apresenta o IDPRD novo (pesquisa na tabela TPRD_1140). Para que relatorios e consultas continuem funcionando normalmente, foi criada uma VIEW da tabela TPRD, lembrando que esta view, sera gerada com o IDPRD novo.Visualizacao e Edicao do Cadastro de Produto:NAO houve nenhuma alteracao na visualizacao e edicao do cadastro de produtos em funcao dessa alteracao estrutural.ATENCAO:Neste processo de migracao da estrutura de tabelas, identificamos alguns campos da antiga tabela TPRD que nao eram utilizados em nenhum processo interno do sistema. Esses campos NAO foram transferidos para nenhuma tabela. Sao eles:COLUNADESCRICAO------------------------------------------------------------------------------------CONCEITOABCConceito AbcCLCONTABILColigada ContabilDTULTIMOREAJUSTEData Ultimo ReajusteCODAREACod. AreaDTULTIMAVENDAAData Ultima Venda ADTULTIMAVENDABData Ultima Venda BIDFORMAIdentif. FormaPERCENTIMPORTADOPercentual ImportadoIDPRDRELAC2Id. do Produto Relacionado
'].[' + @FKTABLE_NAME + '] DROP CONSTRAINT [' + @FK_NAME + ']' PRINT @cmd -- criar processo DECLARE @FKCOLUMNS VARCHAR(1000), @PKCOLUMNS VARCHAR(1000), @COUNTER INT -- cria o cursor para pegar a coluna do FK DECLARE cursor_fkeyCols CURSOR FOR SELECT COL_NAME(Fk.parent_object_id, Fk_Cl.parent_column_id) AS Fk_col_name, COL_NAME(Fk.referenced_object_id, Fk_Cl.referenced_column_id) AS Pk_col_name FROM sys.foreign_keys Fk LEFT OUTER JOIN sys.tables TbR ON TbR.OBJECT_ID = Fk.referenced_object_id INNER JOIN sys.foreign_key_columns Fk_Cl ON Fk_Cl.constraint_object_id = Fk.OBJECT_ID WHERE TbR.name = @tableName AND schema_name(TbR.schema_id) = @schemaName AND Fk_Cl.constraint_object_id = @FK_OBJECTID ORDER BY Fk_Cl.constraint_column_id OPEN cursor_fkeyCols FETCH NEXT FROM cursor_fkeyCols INTO @FKCOLUMN_NAME,@PKCOLUMN_NAME SET @COUNTER = 1 SET @FKCOLUMNS = '' SET @PKCOLUMNS = '' WHILE @@FETCH_STATUS = 0 BEGIN IF @COUNTER > 1 BEGIN SET @FKCOLUMNS = @FKCOLUMNS + ',' SET @PKCOLUMNS = @PKCOLUMNS + ',' END SET @FKCOLUMNS = @FKCOLUMNS + '[' + @FKCOLUMN_NAME + ']' SET @PKCOLUMNS = @PKCOLUMNS + '[' + @PKCOLUMN_NAME + ']' SET @COUNTER = @COUNTER + 1 FETCH NEXT FROM cursor_fkeyCols INTO @FKCOLUMN_NAME,@PKCOLUMN_NAME END CLOSE cursor_fkeyCols DEALLOCATE cursor_fkeyCols -- gera o comando para criar o FK SET @cmd = 'ALTER TABLE [' + @FKTABLE_OWNER + '].[' + @FKTABLE_NAME + '] WITH ' + CASE @FK_DISABLED WHEN 0 THEN ' CHECK ' WHEN 1 THEN ' NOCHECK ' END + ' ADD CONSTRAINT [' + @FK_NAME + '] FOREIGN KEY (' + @FKCOLUMNS + ') REFERENCES [' + @PKTABLE_OWNER + '].[' + @PKTABLE_NAME + '] (' + @PKCOLUMNS + ') ON UPDATE ' + CASE @UPDATE_RULE WHEN 0 THEN ' NO ACTION ' WHEN 1 THEN ' CASCADE ' WHEN 2 THEN ' SET_NULL ' END + ' ON DELETE ' + CASE @DELETE_RULE WHEN 0 THEN ' NO ACTION ' WHEN 1 THEN ' CASCADE ' WHEN 2 THEN ' SET_NULL ' END + '' + CASE @FK_NOT_FOR_REPLICATION WHEN 0 THEN '' WHEN 1 THEN ' NOT FOR REPLICATION ' END PRINT @cmd END FETCH NEXT FROM cursor_fkeys INTO @FK_NAME,@FK_OBJECTID, @FK_DISABLED, @FK_NOT_FOR_REPLICATION, @DELETE_RULE, @UPDATE_RULE, @FKTABLE_NAME, @FKTABLE_OWNER, @PKTABLE_NAME, @PKTABLE_OWNER ENDCLOSE cursor_fkeysDEALLOCATE cursor_fkeys
dbNogare SET ALLOW_SNAPSHOT_ISOLATION ONGOUSE dbNogareGODepois de habilitar o SnapshotIsolation Level no banco de dados, e hora de ver os blocos de codigos quepossibilitam este nivel de isolamento./********* RODAR NA CONEXAO 1 *********/SET TRANSACTION ISOLATION LEVEL SNAPSHOTBEGIN TRAN SELECT * FROM tbIsolationLevel WAITFOR DELAY '00:00:10' SELECT * FROM tbIsolationLevel UPDATE tbIsolationLevel set Col1 = 'XXXXX' where id = 2 WAITFOR DELAY '00:00:10'COMMIT TRAN/********* RODAR NA CONEXAO 1 *********/UPDATE tbIsolationLevel set Col1 = 'NNNNNN' where id = 1SELECT * FROM tbIsolationLevelPor fim, o DEAD LOCK tambem causa um pouco de confusao comsua execucao. A causa de um DEAK LOCK e quando uma transacao espera umaliberacao para seguir em frente, mas a transacao que esta segurando o processo(causando LOCK) esta esperando a primeiratransacao terminar de processar alguma coisa. A grosso modo, eA esperando o B terminar e o B esperando o A terminar.Eles ficariam um esperando o outro ate alguem desistir. Para isso, o SQLServer escolhe uma vitima deacordo com o inicio do processo e o grau de severidade que aquele processo podeter. Normalmente a transacao que comecou por ultimo e a vitima, se desligandodo processo (o SQL faz isso automaticamente) e da um rollback nas alteracoes. Isso faz com que atransacao que ganhou o processo termine suas atividades.Para ver isso atraves de codigo,execute os blocos abaixo./********* RODAR NA CONEXAO 1 *********/SET TRANSACTION ISOLATION LEVEL READ COMMITTEDGOBEGIN TRAN UPDATE tbDeadlock SET id = 12 WHERE id = 2 WAITFOR DELAY '00:00:10' UPDATE tbDeadlock SET id = 11 WHERE id = 1ROLLBACK TRAN/********* RODARNA CONEXAO 2 *********/BEGIN TRAN UPDATE tbDeadlock SET id = 11 WHERE id = 1 WAITFOR DELAY '00:00:10' UPDATE tbDeadlock SET id = 12 WHERE id = 2ROLLBACK TRANQuando ocorre o dead lock, a mensagemde erro e assim:Msg 1205, Level 13, State 45, Line 2Transaction (Process ID 54) was deadlocked on lock resources with anotherprocess and has been chosen as the deadlock victim. Rerun the transaction.
[tamanho_do_bloco_do_banco_de_dados]Qual e o melhor? RMAN ou DBV? O RMAN pode ser executado com a opcao de paralelismo, tornando-o mais rapido que o DBV que nao pode ser executado em paralelo. O DBV verifica a existencia de blocos vazios. Entao levara mais tempo para fazer a varredura de arquivo de dados inteiro. Na versao do Oracle 10g o RMAN nao pode marcar blocos com extensoes livres quando estejam configuradas em LMT (Locally Managed Tablespaces). Na versao do Oracle 11g o RMAN verifica as extensoes usadas e livres. RMAN> VALIDATE DATAFILE 1 BLOCK 10 to 100;. DBV> start=10 end=100O RMAN mantem as informacoes de corrupcao no arquivo de control file (nas visoes: v$ database_block_corruption e v$ backup_corruption). O DBV nao grava as informacoes de corrupcao. As informacoes podem ser vistas utilizando a consulta abaixo. Select * from v$database_block_corruption; O RMAN nao grava detalhes de corrupcao como o que exatamente esta corrompido em um bloco relatado como uma logica bloco corrompido.O DBV relata os detalhes de corrupcao na tela ou em um arquivo de log.O DBV pode digitalizar blocos com um SCN mais elevado do que um determinado SCN.O DBV nao precisa de uma conexao com o banco de dados.select * from dba_extents where file_id = &DATA_FILE_ID and &CORRUPTED_BLOCK_ID between block_id AND block_id + blocks - 1;ouSELECT e.owner, e.segment_type, e.segment_name, e.partition_name, c.file# , greatest(e.block_id, c.block#) corr_start_block# , least(e.block_id+e.blocks-1, c.block#+c.blocks-1) corr_end_block# , least(e.block_id+e.blocks-1, c.block#+c.blocks-1) - greatest(e.block_id, c.block#) + 1 blocks_corrupted , null description FROM dba_extents e, v$database_block_corruption c WHERE e.file_id = c.file# AND e.block_id <= c.block# + c.blocks - 1 AND e.block_id + e.blocks - 1 >= c.block#UNIONSELECT s.owner, s.segment_type, s.segment_name, s.partition_name, c.file# , header_block corr_start_block# , header_block corr_end_block# , 1 blocks_corrupted , 'Segment Header' description FROM dba_segments s, v$database_block_corruption c WHERE s.header_file = c.file# AND s.header_block between c.block# and c.block# + c.blocks - 1UNIONSELECT null owner, null segment_type, null segment_name, null partition_name, c.file# , greatest(f.block_id, c.block#) corr_start_block# , least(f.block_id+f.blocks-1, c.block#+c.blocks-1) corr_end_block# , least(f.block_id+f.blocks-1, c.block#+c.blocks-1) - greatest(f.block_id, c.block#) + 1 blocks_corrupted , 'Free Block' description FROM dba_free_space f, v$database_block_corruption c WHERE f.file_id = c.file# AND f.block_id <= c.block# + c.blocks - 1 AND f.block_id + f.blocks - 1 >= c.block#order by file#, corr_start_block#;