<?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-7557095642298778684</id><updated>2012-01-09T07:24:45.285-08:00</updated><category term='Oracle GoldenGate'/><category term='database New'/><category term='Features'/><category term='Data Integration'/><category term='Replication'/><category term='Data Warehouse'/><category term='performance'/><category term='Oracle 11g'/><category term='Tips'/><category term='architecture'/><category term='Best Practices'/><category term='CDC'/><category term='Golden Gate'/><title type='text'>Oracle Notes</title><subtitle type='html'>A collection of knowledge and tips to Oracle technology problems focused on database management and architecture.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://decipherllc.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7557095642298778684/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://decipherllc.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Sam J. De Filippis</name><uri>http://www.blogger.com/profile/00914658152206462119</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_HYG9L23Ks_U/TSd4lfqe7QI/AAAAAAAAACA/d2pTy0vq1y0/S220/153726.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>16</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7557095642298778684.post-9002965139826847578</id><published>2011-05-08T09:33:00.000-07:00</published><updated>2011-05-08T09:49:54.508-07:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;Summary of Methods to Protect Archive Log Tapes&lt;br /&gt;&lt;/span&gt;&lt;br /&gt; I have a client who is concerned about losing archive logs in between full RMAN database and archive log backups, in the event of a loss. I was asked to provide options which I am sharing on this blog.  The environment is AIX 6.5 and Oracle 11.2 Standard Edition.  Please feel free to comment and share your suggestions.&lt;br /&gt;&lt;br /&gt; Options to protect archive log tapes (and the full database) are:&lt;br /&gt;&lt;br /&gt; I.  Have RMAN take more frequent backups, including archive logs.&lt;br /&gt;&lt;br /&gt;II. Oracle allows specification of an alternate destination for archive&lt;br /&gt;    logging that is additional to the primary destination. &lt;br /&gt;&lt;br /&gt;    So, NFS mount a directory on a remote server and use an alternate&lt;br /&gt;    “archive_log_dest_1” parameter to specify the NFS mounted remote &lt;br /&gt;    directory as the alternate log destination.&lt;br /&gt;&lt;br /&gt;III.  SFTP or rsynch a copy of the archive logs to a remote server through&lt;br /&gt;      a shell script. The shell script would have to:&lt;br /&gt;&lt;br /&gt;      1. check the V$ARCHIVED_LOG view to determine if each archive log&lt;br /&gt;         file in the archive log directory has completed the archiving&lt;br /&gt;         process&lt;br /&gt;      2. use the rsynch command, or SFTP, to synchronize the remote&lt;br /&gt;         archive log destination with the primary server archive log&lt;br /&gt;         destination&lt;br /&gt;      3. run this script every "nn" time intervals, leaving a window for&lt;br /&gt;         the RMAN backups&lt;br /&gt;&lt;br /&gt;IV. Use the pre-RMAN method of database backup. Copy the database user&lt;br /&gt;    datafiles, control files, archive logs and parameter file to a&lt;br /&gt;    directory on a remote server. This requires that an Oracle instance is&lt;br /&gt;    installed on the remote server to recover the database from these&lt;br /&gt;    files. &lt;br /&gt;&lt;br /&gt;V.  Use RMAN to rig a standby database, instead of using DataGuard or&lt;br /&gt;    GoldenGate. This involves another Oracle instance running on the&lt;br /&gt;    remote server, use of RMAN to clone the primary database, shipping&lt;br /&gt;    primary database RMAN backup files to a remote server and, finally,&lt;br /&gt;    running an RMAN recovery of the database on the remote server.&lt;br /&gt;&lt;br /&gt;VI. Create an Oracle RAC 2-node cluster with one cluster being on a&lt;br /&gt;    remote server. I believe that this is possible with even Oracle 11.2&lt;br /&gt;    Standard Edition, possibly with a relatively small license charge per&lt;br /&gt;    node.&lt;br /&gt;&lt;br /&gt;I recommended option “III” because it would not require another instance of Oracle on the remote server and it would not slow down the log writer Oracle process (LGWR) which would most likely result in a general database slowdown. In addition, the server OS/network resources used, if the script is not run very excessively, should not be sufficient to slowdown the Oracle database or the application.  My suggestion is to determine the average amount of time that the database takes to fully archive a log, decide how many logs you would like copied at the same time and use that average as a guideline to determine how frequently to schedule the script.&lt;div class="blogger-post-footer"&gt;Become a follower of this blog.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7557095642298778684-9002965139826847578?l=decipherllc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://decipherllc.blogspot.com/feeds/9002965139826847578/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://decipherllc.blogspot.com/2011/05/summary-of-methods-to-protect-archive.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7557095642298778684/posts/default/9002965139826847578'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7557095642298778684/posts/default/9002965139826847578'/><link rel='alternate' type='text/html' href='http://decipherllc.blogspot.com/2011/05/summary-of-methods-to-protect-archive.html' title=''/><author><name>Sam J. De Filippis</name><uri>http://www.blogger.com/profile/00914658152206462119</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_HYG9L23Ks_U/TSd4lfqe7QI/AAAAAAAAACA/d2pTy0vq1y0/S220/153726.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7557095642298778684.post-755992831355684474</id><published>2011-01-27T18:28:00.000-08:00</published><updated>2011-01-27T18:29:14.118-08:00</updated><title type='text'></title><content type='html'>ORACLE 11g HEALTH CHECK MONITOR&lt;br /&gt;&lt;br /&gt;The Oracle Health Check Monitor (HM) facility is new with Oracle 11.1 database.  It can run diagnostic checks that detect:&lt;br /&gt;&lt;br /&gt;&gt;   file corruptions – reports failures if these files are inaccessible, corrupt or inconsistent. If the database is in mount or open mode, this check examines the log files and data files listed in the control file. If the database is in NOMOUNT mode, only the control file is checked.&lt;br /&gt;&lt;br /&gt;&gt;   physical and logical block corruptions – detects disk image block corruptions such as checksum failures, head/tail mismatch, and logical inconsistencies within the block. Most corruptions can be repaired using Block Media Recovery. Corrupted block information is also captured in the V$DATABASE_BLOCK_CORRUPTION view. This check does not detect inter-block or inter-segment corruption.&lt;br /&gt;&lt;br /&gt;&gt; undo and redo corruptions -&lt;br /&gt;&lt;br /&gt;For redo, HM scans the contents of the redo log for accessibility and corruption, as well as the archive logs, if available. The Redo Integrity Check reports failures such as archive log or redo corruption.&lt;br /&gt;&lt;br /&gt;For undo, HM finds logical undo corruptions. After locating an undo corruption, this check uses PMON and SMON to try to recover the corrupted transaction. If this recovery fails, then Health Monitor stores information about the corruption in V$CORRUPT_XID_LIST. Most undo corruptions can be resolved by forcing a commit.&lt;br /&gt;&lt;br /&gt;&gt;   transaction integrity check – identical to the Undo Segment Integrity Check except that it checks only one&lt;br /&gt;&lt;br /&gt;specific transaction&lt;br /&gt;&lt;br /&gt;&gt;  data dictionary corruptions – examines the integrity of core dictionary objects, such as tab$ and col$. It  performs the following operations:&lt;br /&gt;&lt;br /&gt;    *&lt;br /&gt;          o Verifies the contents of dictionary entries for each dictionary object.&lt;br /&gt;          o Performs a cross-row level check, which verifies that logical constraints on rows in the dictionary are enforced.&lt;br /&gt;          o Performs an object relationship check, which verifies that parent-child relationships between dictionary objects are enforced.&lt;br /&gt;&lt;br /&gt;The Dictionary Integrity Check operates on the following dictionary objects:&lt;br /&gt;&lt;br /&gt;tab$, clu$, fet$, uet$, seg$, undo$, ts$, file$, obj$, ind$, icol$, col$, user$, con$, cdef$, ccol$, bootstrap$, objauth$, ugroup$, tsq$, syn$, view$, typed_view$, superobj$, seq$, lob$, coltype$, subcoltype$, ntab$, refcon$, opqtype$, dependency$, access$, viewcon$, icoldep$, dual$, sysauth$, objpriv$, defrole$, and ecol$.&lt;br /&gt;&lt;br /&gt;Each of the above checks can be used with parameters that provide specific subcategories of information.&lt;br /&gt;&lt;br /&gt;Run HM Checker Manually&lt;br /&gt;&lt;br /&gt;The Oracle Health Monitor (HM) can be run using the following syntax manually:&lt;br /&gt;&lt;br /&gt;BEGIN&lt;br /&gt;&lt;br /&gt;DBMS_HM.RUN_CHECK(‘type of check’, ‘name of HM check run’);&lt;br /&gt;&lt;br /&gt;END;&lt;br /&gt;&lt;br /&gt;Example:&lt;br /&gt;&lt;br /&gt;SQL&gt;&lt;br /&gt;BEGIN&lt;br /&gt;&lt;br /&gt;DBMS_HM.RUN_CHECK(‘Data Block Integrity Check’, ‘db_blk_integ_run’);&lt;br /&gt;&lt;br /&gt;END;&lt;br /&gt;SQL&gt; /&lt;br /&gt;&lt;br /&gt;The types of checks that can be obtained in this manner (in place of ‘type of check’ above) are:&lt;br /&gt;&lt;br /&gt;HM Test Check&lt;br /&gt;DB Structure Integrity Check&lt;br /&gt;CF Block Integrity Check&lt;br /&gt;Data Block Integrity Check&lt;br /&gt;Redo Integrity Check&lt;br /&gt;Logical Block Check&lt;br /&gt;Transaction Integrity Check&lt;br /&gt;Undo Segment Integrity Check&lt;br /&gt;No Mount CF Check&lt;br /&gt;Mount CF Check&lt;br /&gt;CF Member Check&lt;br /&gt;All Datafiles Check&lt;br /&gt;Single Datafile Check&lt;br /&gt;Tablespace Check Check&lt;br /&gt;Log Group Check&lt;br /&gt;Log Group Member Check&lt;br /&gt;Archived Log Check&lt;br /&gt;Redo Revalidation Check&lt;br /&gt;IO Revalidation Check&lt;br /&gt;Block IO Revalidation Check&lt;br /&gt;Txn Revalidation Check&lt;br /&gt;Failure Simulation Check&lt;br /&gt;Dictionary Integrity Check&lt;br /&gt;ASM Mount Check&lt;br /&gt;ASM Allocation Check&lt;br /&gt;ASM Disk Visibility Check&lt;br /&gt;ASM File Busy Check&lt;br /&gt;&lt;br /&gt;Most health checks accept input parameters. You can view parameter names and descriptions with the V$HM_CHECK_PARAM view. Some parameters are mandatory while others are optional. If optional parameters are omitted, defaults are used. The following query displays parameter information for all health checks:&lt;br /&gt;&lt;br /&gt;SELECT c.name check_name, p.name parameter_name, p.type,&lt;br /&gt;&lt;br /&gt;p.default_value, p.description&lt;br /&gt;&lt;br /&gt;FROM v$hm_check_param p, v$hm_check c&lt;br /&gt;&lt;br /&gt;WHERE p.check_id = c.id and c.internal_check = ‘N’&lt;br /&gt;&lt;br /&gt;ORDER BY c.name;&lt;br /&gt;&lt;br /&gt;Input parameters are passed in the input_params argument as name/value pairs separated by semicolons (;). The following example illustrates how to pass the transaction ID as a parameter to the Transaction Integrity Check:&lt;br /&gt;&lt;br /&gt;BEGIN&lt;br /&gt;&lt;br /&gt;DBMS_HM.RUN_CHECK (&lt;br /&gt;&lt;br /&gt;check_name   =&gt; ‘Transaction Integrity Check’,&lt;br /&gt;&lt;br /&gt;run_name     =&gt; ‘my_run’,&lt;br /&gt;&lt;br /&gt;input_params =&gt; ‘TXN_ID=7.33.2′);&lt;br /&gt;&lt;br /&gt;END;&lt;br /&gt;&lt;br /&gt;Running HM Checker using Enterprise Manager:&lt;br /&gt;&lt;br /&gt;1.      On the Database Home page, in the Related Links section, click Advisor Central.&lt;br /&gt;&lt;br /&gt;2.      Click Checkers to view the Checkers subpage.&lt;br /&gt;&lt;br /&gt;3.      In the Checkers section, click the checker you want to run.&lt;br /&gt;&lt;br /&gt;4.      Enter values for input parameters or, for optional parameters, leave them blank to accept the defaults.&lt;br /&gt;&lt;br /&gt;5.      Click Run, confirm your parameters, and click Run again.&lt;br /&gt;&lt;br /&gt;Viewing HM Checker Reports&lt;br /&gt;&lt;br /&gt;You can now view a report of a checker execution. The report contains findings, recommendations, and other information. You can view reports using Enterprise Manager, the ADRCI utility, or the DBMS_HM PL/SQL package. The following table indicates the report formats available with each viewing method.&lt;br /&gt;Report Viewing Method  Report Formats Available&lt;br /&gt;Enterprise Manager  HTML&lt;br /&gt;DBMS_HM PL/SQL package  HTML, XML, and text&lt;br /&gt;ADRCI utility  XML&lt;br /&gt;&lt;br /&gt;To view run findings using Enterprise Manager&lt;br /&gt;&lt;br /&gt;   1. Access the Database Home page.&lt;br /&gt;   2. In the Related Links section, click Advisor Central.&lt;br /&gt;   3. Click Checkers to view the Checkers subpage.&lt;br /&gt;   4. Click the run name for the checker run that you want to view.&lt;br /&gt;&lt;br /&gt;The Run Detail page appears, showing the findings for that checker run.&lt;br /&gt;&lt;br /&gt;   1. Click Runs to display the Runs subpage.&lt;br /&gt;&lt;br /&gt;Enterprise Manager displays more information about the checker run.&lt;br /&gt;&lt;br /&gt;   1. Click View Report to view the report for the checker run.&lt;br /&gt;&lt;br /&gt;The report is displayed in a new browser window.&lt;br /&gt;&lt;br /&gt;Viewing Reports Using DBMS_HM&lt;br /&gt;&lt;br /&gt;You can view Health Monitor checker reports with the DBMS_HM package function GET_RUN_REPORT. This function enables you to request HTML, XML, or text formatting. The default format is text, as shown in the following SQL*Plus example:&lt;br /&gt;&lt;br /&gt;SET LONG 100000&lt;br /&gt;&lt;br /&gt;SET LONGCHUNKSIZE 1000&lt;br /&gt;&lt;br /&gt;SET PAGESIZE 1000&lt;br /&gt;&lt;br /&gt;SET LINESIZE 512&lt;br /&gt;&lt;br /&gt;SELECT DBMS_HM.GET_RUN_REPORT(‘HM_RUN_1061′) FROM DUAL;&lt;br /&gt;&lt;br /&gt;DBMS_HM.GET_RUN_REPORT(‘HM_RUN_1061′)&lt;br /&gt;&lt;br /&gt;———————————————————————–&lt;br /&gt;&lt;br /&gt;Run Name                     : HM_RUN_1061&lt;br /&gt;&lt;br /&gt;Run Id                       : 1061&lt;br /&gt;&lt;br /&gt;Check Name                   : Data Block Integrity Check&lt;br /&gt;&lt;br /&gt;Mode                         : REACTIVE&lt;br /&gt;&lt;br /&gt;Status                       : COMPLETED&lt;br /&gt;&lt;br /&gt;Start Time                   : 2011-01-12 22:11:02.032292 -07:00&lt;br /&gt;&lt;br /&gt;End Time                     : 2011-01-12 22:11:20.835135 -07:00&lt;br /&gt;&lt;br /&gt;Error Encountered            : 0&lt;br /&gt;&lt;br /&gt;Source Incident Id           : 7418&lt;br /&gt;&lt;br /&gt;Number of Incidents Created  : 0&lt;br /&gt;&lt;br /&gt;Input Paramters for the Run&lt;br /&gt;&lt;br /&gt;BLC_DF_NUM=1&lt;br /&gt;&lt;br /&gt;BLC_BL_NUM=64349&lt;br /&gt;&lt;br /&gt;Run Findings And Recommendations&lt;br /&gt;&lt;br /&gt;Finding&lt;br /&gt;&lt;br /&gt;Finding Name  : Media Block Corruption&lt;br /&gt;&lt;br /&gt;Finding ID    : 1065&lt;br /&gt;&lt;br /&gt;Type          : FAILURE&lt;br /&gt;&lt;br /&gt;Status        : OPEN&lt;br /&gt;&lt;br /&gt;Priority      : HIGH&lt;br /&gt;&lt;br /&gt;Message       : Block 64349 in datafile 1:&lt;br /&gt;&lt;br /&gt;‘/ade/sfogel_emdb/oracle/dbs/t_db1.f’ is media corrupt&lt;br /&gt;&lt;br /&gt;Message       : Object BMRTEST1 owned by SYS might be unavailable&lt;br /&gt;&lt;br /&gt;Finding&lt;br /&gt;&lt;br /&gt;Finding Name  : Media Block Corruption&lt;br /&gt;&lt;br /&gt;Finding ID    : 1071&lt;br /&gt;&lt;br /&gt;Type          : FAILURE&lt;br /&gt;&lt;br /&gt;Status        : OPEN&lt;br /&gt;&lt;br /&gt;Priority      : HIGH&lt;br /&gt;&lt;br /&gt;Message       : Block 64351 in datafile 1:&lt;br /&gt;&lt;br /&gt;‘/ade/sfogel_emdb/oracle/dbs/t_db1.f’ is media corrupt&lt;br /&gt;&lt;br /&gt;Message       : Object BMRTEST2 owned by SYS might be unavailable&lt;br /&gt;&lt;br /&gt;Viewing Reports Using the ADRCI Utility&lt;br /&gt;&lt;br /&gt;You can create and view Health Monitor checker reports using the ADRCI utility.&lt;br /&gt;&lt;br /&gt;To create and view a checker report using ADRCI&lt;br /&gt;&lt;br /&gt;   1. Ensure that operating system environment variables (such as ORACLE_HOME) are set properly, and then enter the following command at the operating system command prompt:&lt;br /&gt;&lt;br /&gt;2.      ADRCI&lt;br /&gt;&lt;br /&gt;The utility starts and displays the following prompt:&lt;br /&gt;&lt;br /&gt;adrci&gt;&gt;&lt;br /&gt;&lt;br /&gt;Optionally, you can change the current ADR home. Use the SHOW HOMES command to list all ADR homes, and the SET HOMEPATH command to change the current ADR home. See Oracle Database Utilities for more information.&lt;br /&gt;&lt;br /&gt;3. Enter the following command:&lt;br /&gt;&lt;br /&gt;show hm_run&lt;br /&gt;&lt;br /&gt;This command lists all the checker runs (stored in V$HM_RUN) registered in the ADR repository.&lt;br /&gt;&lt;br /&gt;4. Locate the checker run for which you want to create a report and note the checker run name. The REPORT_FILE field contains a filename if a report already exists for this checker run. Otherwise, generate the report with the following command:&lt;br /&gt;&lt;br /&gt;5.      create report hm_run run_name&lt;br /&gt;&lt;br /&gt;6. To view the report, enter the following command:&lt;br /&gt;&lt;br /&gt;show report hm_run run_name&lt;br /&gt;&lt;br /&gt;**  For more details regarding HM views, parameters and more see&lt;br /&gt;&lt;br /&gt;http://download.oracle.com/docs/cd/B28359_01/server.111/b28310/diag007.htm&lt;br /&gt;&lt;br /&gt;*** Reference Oracle® Database Administrator’s Guide 11g Release 1 (11.1)&lt;br /&gt;&lt;br /&gt;Part Number B28310-04&lt;div class="blogger-post-footer"&gt;Become a follower of this blog.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7557095642298778684-755992831355684474?l=decipherllc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://decipherllc.blogspot.com/feeds/755992831355684474/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://decipherllc.blogspot.com/2011/01/oracle-11g-health-check-monitor-oracle.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7557095642298778684/posts/default/755992831355684474'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7557095642298778684/posts/default/755992831355684474'/><link rel='alternate' type='text/html' href='http://decipherllc.blogspot.com/2011/01/oracle-11g-health-check-monitor-oracle.html' title=''/><author><name>Sam J. De Filippis</name><uri>http://www.blogger.com/profile/00914658152206462119</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_HYG9L23Ks_U/TSd4lfqe7QI/AAAAAAAAACA/d2pTy0vq1y0/S220/153726.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7557095642298778684.post-6913151979845176849</id><published>2011-01-06T15:36:00.002-08:00</published><updated>2011-01-06T16:00:32.543-08:00</updated><title type='text'>Oracle GoldenGate and Compressed Tables</title><content type='html'>OGG does not support compressed tables or partitions, neither does it handle it well with proper error messages until OGG v10.4. The abends may or may not produce any error message and sometimes produce wrong messages.  &lt;br /&gt;&lt;br /&gt;From V11.1.1.0.0, Oracle has enhanced the error handling part in BugDB 9425542, which gives meaningful error message on the compressed record before Extract abend. It will list out the table name, rowid, etc &lt;br /&gt;&lt;br /&gt;Example : &lt;br /&gt;ERROR OGG-01028 Record on table QATEST1.TAB1 with rowid AAM4EkAAEAACBguAAA from transaction 5.24.270123 (0x0005.018.00041f2b) is compressed. Compression is not supported. &lt;br /&gt;&lt;br /&gt;However, due to bug 10063108, sometimes the error message on compressed tables are not entirely correct. This problem has been fixed in 11.1.1.0.3 and above &lt;br /&gt;&lt;br /&gt;A table created as compressed will cause all of the DML’s to go into compressed blocks on disk. If the user does an "alter table nocompress", every DML that goes into the table AFTER that point in time will be uncompressed. The query for compression will return "nocompress" now, but the simple "alter" does not change the already existing compressed blocks on disk that were created before the "alter". So to capture the records from a table which was compressed we need to do the following &lt;br /&gt;&lt;br /&gt;SQL&gt; alter table &lt;tablename&gt; move nocompress; &lt;br /&gt;&lt;br /&gt;This will touch every single block on disk and will uncompress everything thereby causing OGG to work properly and not abend.&lt;br /&gt;&lt;br /&gt;If there is even a single partition in a partitioned table that is compressed, it will cause an abend. Partition compression can be verified by getting the full DDL for the table by running the DBMS_METADATA.GET_DDL package. For table partitions that are compressed, run the below query and get the partition names &amp; tablespace names. &lt;br /&gt;&lt;br /&gt;SQL&gt; SELECT partition_name, subpartition_name, tablespace_name, high_value FROM user_tab_subpartitions WHERE table_name = 'table_name'; &lt;br /&gt;&lt;br /&gt;Alter statement for partition to move to nocompress: &lt;br /&gt;&lt;br /&gt;SQL&gt; ALTER TABLE &lt;Table_name&gt; MOVE PARTITION &lt;partition_name&gt; NOCOMPRESS TABLESPACE &lt;tablespace&gt;; &lt;br /&gt;&lt;br /&gt;Eensure that you have enough disk space within your tablespaces before running the ALTER statement. &lt;br /&gt;&lt;br /&gt;Support of compressed tables will be in future releases of OGG, however, in current V10.4 and V11.1.1.x, the only option, if a "move nocompress" is not possible, is to comment the compressed table or exclude them from the Extract.&lt;div class="blogger-post-footer"&gt;Become a follower of this blog.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7557095642298778684-6913151979845176849?l=decipherllc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://decipherllc.blogspot.com/feeds/6913151979845176849/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://decipherllc.blogspot.com/2011/01/oracle-goldengate-and-compressed-tables.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7557095642298778684/posts/default/6913151979845176849'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7557095642298778684/posts/default/6913151979845176849'/><link rel='alternate' type='text/html' href='http://decipherllc.blogspot.com/2011/01/oracle-goldengate-and-compressed-tables.html' title='Oracle GoldenGate and Compressed Tables'/><author><name>Sam J. De Filippis</name><uri>http://www.blogger.com/profile/00914658152206462119</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_HYG9L23Ks_U/TSd4lfqe7QI/AAAAAAAAACA/d2pTy0vq1y0/S220/153726.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7557095642298778684.post-392042599822553304</id><published>2010-09-18T08:04:00.000-07:00</published><updated>2010-09-18T08:28:20.843-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='performance'/><category scheme='http://www.blogger.com/atom/ns#' term='Features'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle 11g'/><category scheme='http://www.blogger.com/atom/ns#' term='architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='database New'/><title type='text'>A Useful Oracle 11g New Feature</title><content type='html'>&lt;strong&gt;Server Result Cache   &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt; * Enables query result to be cached in memory which can be used during future execution of a similar query by bypassing the regular processing thereby returning the results faster.&lt;br /&gt;&lt;br /&gt;    * Decreases the wait time for both physical and logical IO by directly fetching the results from the cached memory.&lt;br /&gt;&lt;br /&gt;    * Cached result set is completely shareable between the sessions and various statements as long as they share a common execution plan.&lt;br /&gt;&lt;br /&gt;    * Server result cache is the new component of SGA that caches results of queries and is managed by automatic memory management.&lt;br /&gt;&lt;br /&gt;    * New parameter RESULT_CACHE_MAX_SIZE is used to enable result cache by setting the maximum size of the cache.&lt;br /&gt;&lt;br /&gt;    * A new optimizer hint allows use of result cache at the query level.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Query execution without result cache hint.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_HYG9L23Ks_U/TJTXh4aT_XI/AAAAAAAAABk/qhnVzQ2SaoY/s1600/11g1.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 238px;" src="http://1.bp.blogspot.com/_HYG9L23Ks_U/TJTXh4aT_XI/AAAAAAAAABk/qhnVzQ2SaoY/s320/11g1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5518272420514102642" /&gt;&lt;/a&gt;&lt;br /&gt;Server Result Cache&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Query execution without result cache hint - Oracle 11gQuery execution without result cache hint – Oracle 11g&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Query execution with result cache hint.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_HYG9L23Ks_U/TJTYlWF3GwI/AAAAAAAAAB0/1E74EpZp_wc/s1600/11g2.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://3.bp.blogspot.com/_HYG9L23Ks_U/TJTYlWF3GwI/AAAAAAAAAB0/1E74EpZp_wc/s320/11g2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5518273579532622594" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Query execution with result cache hint - Oracle 11gQuery execution with result cache hint – Oracle 11g&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Parameters  related to Result Cache&lt;/strong&gt;&lt;br /&gt;RESULT_CACHE_MAX_RESULT  :  specifies the percentage of RESULT_CACHE_MAX_SIZE that any single result can use&lt;br /&gt;RESULT_CACHE_MAX_SIZE    :  specifies the maximum amount of SGA memory (in bytes) that can be used by the Result Cache.&lt;br /&gt;RESULT_CACHE_REMOTE_EXPIRATION   : specifies the number of minutes that a result using a remote object is allowed to remain valid&lt;br /&gt;RESULT_CACHE_MODE    : specifies when a ResultCache operator is spliced into a query’s execution plan.&lt;br /&gt;&lt;br /&gt;How to find result cache information:&lt;br /&gt;V$RESULT_CACHE_STATISTICS&lt;br /&gt;V$RESULT_CACHE_MEMORY&lt;br /&gt;V$RESULT_CACHE_OBJECTS&lt;br /&gt;V$RESULT_CACHE_DEPENDENCY&lt;br /&gt;&lt;br /&gt;DBMS_RESULT_CACHE – PL/SQL API for result cache management:&lt;br /&gt;Functions : Status – displays the current status of the result cache.&lt;br /&gt;&lt;br /&gt;SELECT DBMS_RESULT_CACHE.status FROM dual;&lt;br /&gt;STATUS&lt;br /&gt;—————————————————–&lt;br /&gt;ENABLED&lt;br /&gt;&lt;br /&gt;Flush: remove all objects from the result cache and release memory.&lt;br /&gt;&lt;br /&gt;I will cover some more features in next post . Keep reading&lt;strong&gt;&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;Become a follower of this blog.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7557095642298778684-392042599822553304?l=decipherllc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://decipherllc.blogspot.com/feeds/392042599822553304/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://decipherllc.blogspot.com/2010/09/useful-oracle-11g-new-feature.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7557095642298778684/posts/default/392042599822553304'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7557095642298778684/posts/default/392042599822553304'/><link rel='alternate' type='text/html' href='http://decipherllc.blogspot.com/2010/09/useful-oracle-11g-new-feature.html' title='A Useful Oracle 11g New Feature'/><author><name>Sam J. De Filippis</name><uri>http://www.blogger.com/profile/00914658152206462119</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_HYG9L23Ks_U/TSd4lfqe7QI/AAAAAAAAACA/d2pTy0vq1y0/S220/153726.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_HYG9L23Ks_U/TJTXh4aT_XI/AAAAAAAAABk/qhnVzQ2SaoY/s72-c/11g1.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7557095642298778684.post-8505456045869277065</id><published>2010-08-10T08:27:00.001-07:00</published><updated>2010-08-10T08:27:22.267-07:00</updated><title type='text'>Oracle WebLogic Server Basic Concepts</title><content type='html'>Check out this SlideShare Presentation: &lt;div style="width:425px" id="__ss_783771"&gt;&lt;strong style="display:block;margin:12px 0 4px"&gt;&lt;a href="http://www.slideshare.net/jambay/oracle-weblogic-server-basic-concepts-presentation" title="Oracle WebLogic Server Basic Concepts"&gt;Oracle WebLogic Server Basic Concepts&lt;/a&gt;&lt;/strong&gt;&lt;object id="__sse783771" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=weblogicserveroverviewtopologyconfigurationadministration-1227546826890714-9&amp;stripped_title=oracle-weblogic-server-basic-concepts-presentation" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed name="__sse783771" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=weblogicserveroverviewtopologyconfigurationadministration-1227546826890714-9&amp;stripped_title=oracle-weblogic-server-basic-concepts-presentation" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="padding:5px 0 12px"&gt;View more &lt;a href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/jambay"&gt;jambay&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Become a follower of this blog.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7557095642298778684-8505456045869277065?l=decipherllc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://decipherllc.blogspot.com/feeds/8505456045869277065/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://decipherllc.blogspot.com/2010/08/oracle-weblogic-server-basic-concepts.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7557095642298778684/posts/default/8505456045869277065'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7557095642298778684/posts/default/8505456045869277065'/><link rel='alternate' type='text/html' href='http://decipherllc.blogspot.com/2010/08/oracle-weblogic-server-basic-concepts.html' title='Oracle WebLogic Server Basic Concepts'/><author><name>Sam J. De Filippis</name><uri>http://www.blogger.com/profile/00914658152206462119</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_HYG9L23Ks_U/TSd4lfqe7QI/AAAAAAAAACA/d2pTy0vq1y0/S220/153726.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7557095642298778684.post-1911487725512777554</id><published>2010-08-01T16:20:00.000-07:00</published><updated>2010-08-01T16:20:38.847-07:00</updated><title type='text'>Oracle Notes: Oracle GoldenGate - Positioning a Read of Trail Files or Oracle Redo Log</title><content type='html'>&lt;a href="http://decipherllc.blogspot.com/2010/08/oracle-goldengate-positioning-read-of.html"&gt;Oracle Notes: Oracle GoldenGate - Positioning a Read of Trail Files or Oracle Redo Log&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;Become a follower of this blog.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7557095642298778684-1911487725512777554?l=decipherllc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://decipherllc.blogspot.com/2010/08/oracle-goldengate-positioning-read-of.html' title='Oracle Notes: Oracle GoldenGate - Positioning a Read of Trail Files or Oracle Redo Log'/><link rel='replies' type='application/atom+xml' href='http://decipherllc.blogspot.com/feeds/1911487725512777554/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://decipherllc.blogspot.com/2010/08/oracle-notes-oracle-goldengate.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7557095642298778684/posts/default/1911487725512777554'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7557095642298778684/posts/default/1911487725512777554'/><link rel='alternate' type='text/html' href='http://decipherllc.blogspot.com/2010/08/oracle-notes-oracle-goldengate.html' title='Oracle Notes: Oracle GoldenGate - Positioning a Read of Trail Files or Oracle Redo Log'/><author><name>Sam J. De Filippis</name><uri>http://www.blogger.com/profile/00914658152206462119</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_HYG9L23Ks_U/TSd4lfqe7QI/AAAAAAAAACA/d2pTy0vq1y0/S220/153726.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7557095642298778684.post-1294075393846544944</id><published>2010-08-01T16:12:00.000-07:00</published><updated>2010-08-01T16:19:31.750-07:00</updated><title type='text'>Oracle GoldenGate - Positioning a Read of Trail Files or Oracle Redo Log</title><content type='html'>&lt;strong&gt;Positioning in Extract / Replicat Trail and Log&lt;/strong&gt;&lt;br /&gt;In the event that there is ever a need to position an extract in the&lt;br /&gt;Transaction Log (aka redo log), extract trail file or replicat trail file,&lt;br /&gt;the following options can be used:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;INFO EXTRACT &lt;groupname&gt;,  DETAIL&lt;/strong&gt;&lt;br /&gt;This will name your current redo log along with the RBA and sequence number and your extract trail name along with the RBA. RBA is the relative byte address of the record in the trail file at which the checkpoint was made&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;INFO EXTRACT, SHOWCH&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Will show you your read checkpoint in the data source and write&lt;br /&gt;checkpoint in the trail files.&lt;br /&gt;&lt;br /&gt;Log Read Checkpoint File /orarac/oradata/racq/redo01.log  ß- Oracle redo&lt;br /&gt;2006-06-09 14:16:45 Thread 1, Seqno 47, RBA 68748800          info&lt;br /&gt;Log Read Checkpoint File /orarac/oradata/racq/redo04.log&lt;br /&gt;2006-06-09 14:16:19 Thread 2, Seqno 24, RBA 65657408&lt;br /&gt;Current Checkpoint Detail:&lt;br /&gt;Read Checkpoint #1&lt;br /&gt;Oracle RAC Redo Log&lt;br /&gt;Startup Checkpoint (starting position in data source):&lt;br /&gt;Sequence #: 47&lt;br /&gt;RBA: 68548112     ß– RBA offset of entry in redo log&lt;br /&gt;Timestamp: 2006-06-09 13:37:51.000000&lt;br /&gt;SCN: 0.8439720&lt;br /&gt;Redo File: /orarac/oradata/racq/redo01.log&lt;br /&gt;Recovery Checkpoint (position of oldest unprocessed transaction in&lt;br /&gt;data source):&lt;br /&gt;Sequence #: 47&lt;br /&gt;RBA: 68748304&lt;br /&gt;Timestamp: 2006-06-09 14:16:45.000000&lt;br /&gt;SCN: 0.8440969&lt;br /&gt;Redo File: /orarac/oradata/racq/redo01.log&lt;br /&gt;Current Checkpoint (position of last record read in&lt;br /&gt;the data source)&lt;br /&gt;&lt;br /&gt;Write Checkpoint #1&lt;br /&gt;GGS Log Trail       ß– start of GG Trail Information&lt;br /&gt;Current Checkpoint (current write position):&lt;br /&gt;Sequence #: 2&lt;br /&gt;RBA: 2142224       ß–  RBA offset of entry in Trail file&lt;br /&gt;Timestamp: 2006-06-09 14:16:50.567638&lt;br /&gt;Extract Trail: ./dirdat/eh&lt;br /&gt;Header:&lt;br /&gt;Version = 2&lt;br /&gt;Record Source = A&lt;br /&gt;Type = 6&lt;br /&gt;# Input Checkpoints = 2&lt;br /&gt;# Output Checkpoints = 1&lt;br /&gt;&lt;br /&gt;Once you have your checkpoint RBAs, you can use a few ggsci&lt;br /&gt;commands to help you debug:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;ADD EXTRACT &lt;groupname&gt;&lt;/strong&gt;Allows creation of an extract from a specific position in a trail file or&lt;br /&gt;transaction log.&lt;br /&gt;Some useful options are:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;EXTTRAILSOURCE &lt;trail name&gt;&lt;/strong&gt;Specifies a trail as the data source. For &lt;trail name&gt;, specify the&lt;br /&gt;fully qualified path name  of the trail, for example c:\ggs\dirdat\aa.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;BEGIN &lt;begin spec&gt; &lt;/strong&gt;&lt;br /&gt;Specifies a timestamp in the data source at which to begin&lt;br /&gt;processing.&lt;br /&gt;&lt;begin spec&gt;  value is either:&lt;br /&gt;□  NOW    -  the time at which the ADD EXTRACT command&lt;br /&gt;is issued.&lt;br /&gt;□   A date and time in the format of:&lt;br /&gt;yyyy-mm-dd [hh:mi:[ss[.cccccc]]]&lt;br /&gt;&lt;br /&gt;*** if you have a 4-node RAC cluster environment, use the&lt;br /&gt;“THREADS 4”  option to any command to which it applies.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;EXTRBA &lt;relative byte address&gt; &lt;/strong&gt;&lt;br /&gt;Specifies an RBA at which to start extracting.  This can be used to&lt;br /&gt;skip over a bad entry in a trail file.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;ALTER EXTRACT &lt;group name&gt;&lt;/strong&gt;&lt;br /&gt;Allows changing the attributes of an extract file created by the ADD EXTRACT&lt;br /&gt;command and allows the incrementing of an extract to the  next file in the sequence.&lt;br /&gt;&lt;br /&gt;***Always  “STOP EXTRACT &lt;group name&gt;”  before using this command.&lt;br /&gt;&lt;br /&gt;You can use this command to make any changes using any of the options to the ADD EXTRACT command (above).  So, for example, you can ALTER EXTRACT an extract file to begin at a specific RBA for skipping over an entry in the extract file.&lt;br /&gt;Ex.:   ALTER EXTRACT finance, EXTSEQNO 26, EXTRBA 338&lt;br /&gt;&lt;br /&gt;You can change any of the attributes specified with the ADD EXTRACT command, except for the following:&lt;br /&gt;□ Altering an Extract specified with the EXTTRAILSOURCE&lt;br /&gt;option.&lt;br /&gt;□ Altering the number of RAC threads specified with the THREADS&lt;br /&gt;option.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;SEND EXTRACT &lt;/strong&gt;Allows you to send commands to a running extract process.&lt;br /&gt;Some useful options are:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;GETLAG&lt;/strong&gt; shows lag time between the extract and the data source&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;LOGEND &lt;/strong&gt;shows whether or not extract has processed all record in&lt;br /&gt;the data source&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;ROLLOVER&lt;/strong&gt; makes extract increment to the next file in the trail upon&lt;br /&gt;startup&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;SHOWTRANS&lt;/strong&gt; shows information about current transactions:&lt;br /&gt;□   Process Checkpoint&lt;br /&gt;□   Transaction ID&lt;br /&gt;□    Extract Group Name&lt;br /&gt;□    Redo Thread Number&lt;br /&gt;□    Timestamp of first transaction of extract&lt;br /&gt;□     System Change Number  (SCN)&lt;br /&gt;□     RBA and Redo Log Number&lt;br /&gt;□     STATUS ( commit after it has been forced by FORCETRANS&lt;br /&gt;(Pending Commit) or “running”)&lt;div class="blogger-post-footer"&gt;Become a follower of this blog.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7557095642298778684-1294075393846544944?l=decipherllc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://decipherllc.blogspot.com/feeds/1294075393846544944/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://decipherllc.blogspot.com/2010/08/oracle-goldengate-positioning-read-of.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7557095642298778684/posts/default/1294075393846544944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7557095642298778684/posts/default/1294075393846544944'/><link rel='alternate' type='text/html' href='http://decipherllc.blogspot.com/2010/08/oracle-goldengate-positioning-read-of.html' title='Oracle GoldenGate - Positioning a Read of Trail Files or Oracle Redo Log'/><author><name>Sam J. De Filippis</name><uri>http://www.blogger.com/profile/00914658152206462119</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_HYG9L23Ks_U/TSd4lfqe7QI/AAAAAAAAACA/d2pTy0vq1y0/S220/153726.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7557095642298778684.post-7806363719881122370</id><published>2010-07-26T10:30:00.000-07:00</published><updated>2010-07-26T10:34:44.201-07:00</updated><title type='text'>Troubleshooting Oracle GoldenGate</title><content type='html'>&lt;span style="font-weight:bold;"&gt;Troubleshooting Commands&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Extract&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If there are any errors, the extract would appear as STOPPED. In this case, you have to investigate the errors.&lt;br /&gt;&lt;br /&gt;First, check the report file C:\OGG10G\dirrpt\EMP_EXT.rpt.&lt;br /&gt;&lt;br /&gt;Next, see if there are any indicative messages in the log files ggserr.log and sqlnet.log, which are in the main C:\OGG10G directory.&lt;br /&gt;&lt;br /&gt;The ggserr.log file contains event information such as:&lt;br /&gt;&lt;br /&gt;2009-12-02  14:53:26  GGS INFO        301   Oracle GoldenGate&lt;br /&gt;&lt;br /&gt;Manager for Oracle, mgr.prm:  Command received from GGSCI on host 10.10.10.10 (START EXTRACT  EMP_EXT ).&lt;br /&gt;&lt;br /&gt;2009-12-02  14:53:26  GGS INFO        302   Oracle GoldenGate Manager for Oracle, mgr.prm:&lt;br /&gt;&lt;br /&gt;EXTRACT EMP_EXT starting.&lt;br /&gt;&lt;br /&gt;These events can also be seen in the following way:&lt;br /&gt;&lt;br /&gt;GGSCI (AnonDB) 1&gt; VIEW GGSEVT&lt;br /&gt;&lt;br /&gt;…&lt;br /&gt;&lt;br /&gt;….&lt;br /&gt;&lt;br /&gt;2009-12-02 15:09:34  GGS INFO        302  Oracle GoldenGate Manager for Oracle,&lt;br /&gt;&lt;br /&gt;mgr.prm:  EXTRACT EMP_EXT starting.&lt;br /&gt;&lt;br /&gt;2009-12-02 15:13:26  GGS INFO        399  Oracle GoldenGate Command Interpreter&lt;br /&gt;&lt;br /&gt;for Oracle:  GGSCI command (AnonDB): EDIT PARAM emp_ext.&lt;br /&gt;&lt;br /&gt;The sqlnet.log file may show errors such as&lt;br /&gt;&lt;br /&gt;TNS-12557: TNS:protocol adapter not loadable&lt;br /&gt;&lt;br /&gt;This particular error indicates a database connection issue, so you need to explore at the listener level. Make sure the Path includes the Oracle Home bin subdirectory right at the start. There may be other TNS errors that may indicate other solutions.&lt;br /&gt;&lt;br /&gt;EMP_EXT.rpt may show an error such as the following:&lt;br /&gt;&lt;br /&gt;2009-12-08 13:01:27  GGS ERROR       182  OCI Error beginning&lt;br /&gt;&lt;br /&gt;session (status = 28009-ORA-28009: connection as SYS should be as SYSDBA or SYSOPER).&lt;br /&gt;&lt;br /&gt;2009-12-08 13:01:27  GGS ERROR       190  PROCESS ABENDING.&lt;br /&gt;&lt;br /&gt;This indicates that the Extract process is trying to log on as sys without being the SYSDBA. Simply change the login in the parameter file for the Extract to “system”.&lt;br /&gt;&lt;br /&gt;I should note here that specifying SYSDBA at the end of the login line in the Extract parameter file doesn’t work, although it does work with the DBLOGIN command in GGSCI that you will see next.&lt;br /&gt;&lt;br /&gt;The ggserr.log file may show similar errors:&lt;br /&gt;&lt;br /&gt;2009-12-03 00:43:16  GGS INFO        399  Oracle GoldenGate&lt;br /&gt;&lt;br /&gt;Command Interpreter for Oracle:  GGSCI command (AnonDB): start manager.&lt;br /&gt;&lt;br /&gt;2009-12-03 00:43:25  GGS ERROR       182  Oracle GoldenGate&lt;br /&gt;&lt;br /&gt;Manager for Oracle, mgr.prm:  OCI Error during OCIServerAttach&lt;br /&gt;&lt;br /&gt;(status = 12154-ORA-12154: TNS:could not resolve the connect identifier specified).&lt;br /&gt;&lt;br /&gt;2009-12-03 00:43:25  GGS ERROR       190  Oracle GoldenGate&lt;br /&gt;&lt;br /&gt;Manager for Oracle, mgr.prm:  PROCESS ABENDING.&lt;br /&gt;&lt;br /&gt;This indicates an issue with the login credentials supplied in the Manager parameter file, mgr.prm. The Manager has not started as a result.&lt;br /&gt;&lt;br /&gt;Another possible error can be seen in the Extract report file. For example, EMP_EXT.rpt can have this error:&lt;br /&gt;&lt;br /&gt;2009-12-07 16:40:08  GGS ERROR       190  No minimum supplemental&lt;br /&gt;&lt;br /&gt;logging is enabled. This may cause extract process to handle key&lt;br /&gt;&lt;br /&gt;update incorrectly if key column is not in first row piece.&lt;br /&gt;&lt;br /&gt;2009-12-07 16:40:08  GGS ERROR       190  PROCESS ABENDING.&lt;br /&gt;&lt;br /&gt;The solution to this is obviously to enable supplemental logging at the database level. C&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Replicat&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The first step is to use the GGSCI command DBLOGIN to connect to the database, so that other commands can be issued that will work on the database.&lt;br /&gt;&lt;br /&gt;Note that DBLOGIN works fine as follows:&lt;br /&gt;&lt;br /&gt;GGSCI ( AnonDB) 1&gt;&lt;br /&gt;&lt;br /&gt;DBLOGIN USERID system@localhost:1521/FIPRD3 PASSWORD fipassword1&lt;br /&gt;&lt;br /&gt;Successfully logged into database.&lt;br /&gt;&lt;br /&gt;Now you need to add a checkpoint table for the employees table that you are replicating:&lt;br /&gt;&lt;br /&gt;GGSCI ( AnonDB) 2&gt; ADD CHECKPOINTTABLE HR.EMPLOYEES_CHKPT&lt;br /&gt;&lt;br /&gt;Successfully created checkpoint table HR.EMPLOYEES_CHKPT.&lt;br /&gt;&lt;br /&gt;Checkpoints that are stored in this table refer to the current read and write positions of the Replicat process. This is used to prevent the loss of data in case the process needs to be restarted, or if there is any fault in the server or a hiccup in the network that would otherwise result in data loss. The other advantage is that multiple Extract or Replicat processes can be read from the same set of trails by using checkpoints.&lt;br /&gt;&lt;br /&gt;Checkpoints are optional in the sense that they are not required for Extract and Replicat processes that run in batch mode, because such processes can always be restarted. However, checkpoints are necessary in the case of continuously operating Extract and Replicat processes.. They are normally maintained as files in the dirchk subdirectory, but in the case of Replicat they can optionally be stored in the database in the checkpoint table.&lt;br /&gt;&lt;br /&gt;If you specify the checkpoint table in the GLOBALS parameter file, the above command can use that specification. In this scenario, the command could simply be&lt;br /&gt;&lt;br /&gt;GGSCI (AnonDB) 3&gt; ADD CHECKPOINTTABLE&lt;br /&gt;&lt;br /&gt;No checkpoint table specified, using GLOBALS specification (hr.employees_chkpt).&lt;br /&gt;&lt;br /&gt;Successfully created checkpoint table HR.EMPLOYEES_CHKPT.&lt;br /&gt;&lt;br /&gt;You can now add the Replicat group as follows, specifying the exact same EXTTRAIL that was used by the Extract group set up in the first database. So the Replicat group feeds on or consumes the trail created by the Extract group:&lt;br /&gt;&lt;br /&gt;GGSCI (AnonDB) 4&gt; ADD REPLICAT emp_rep, EXTTRAIL C:\OGG10G\dirdat\et, CHECKPOINTTABLE hr.employees_chkpt,&lt;br /&gt;&lt;br /&gt;REPLICAT added.&lt;br /&gt;&lt;br /&gt;Edit the parameter file for this Replicat group as follows:&lt;br /&gt;&lt;br /&gt;GGSCI (AnonDB) 5&gt; EDIT PARAM emp_rep&lt;br /&gt;&lt;br /&gt;In the new file, enter the following:&lt;br /&gt;&lt;br /&gt;REPLICAT emp_rep&lt;br /&gt;&lt;br /&gt;USERID system@localhost:1521/FIPRD3, PASSWORD fipassword1&lt;br /&gt;&lt;br /&gt;ASSUMETARGETDEFS&lt;br /&gt;&lt;br /&gt;MAP hr.employees, TARGET hr.employees;&lt;br /&gt;&lt;br /&gt;Because the tables have exactly the same DDL structure, you use the ASSUMETARGETDEFS parameter.&lt;br /&gt;&lt;br /&gt;Now you can start the Replicat group:&lt;br /&gt;&lt;br /&gt;GGSCI (AnonDB) 6&gt; start REPLICAT emp_rep&lt;br /&gt;&lt;br /&gt;Sending START request to MANAGER (‘GGSMGR’) …&lt;br /&gt;&lt;br /&gt;REPLICAT EMP_REP starting&lt;br /&gt;&lt;br /&gt;Wait a few seconds to see the status; if you try immediately, the status may say “stopped.” When you see the status as “running”, check the detailed information, and also issue an info all command to show all running processes:&lt;br /&gt;&lt;br /&gt;GGSCI (AnonDB) 7&gt; status REPLICAT emp_rep&lt;br /&gt;&lt;br /&gt;REPLICAT EMP_REP: STOPPED&lt;br /&gt;&lt;br /&gt;GGSCI (AnonDB) 8&gt; status REPLICAT emp_rep&lt;br /&gt;&lt;br /&gt;REPLICAT EMP_REP: RUNNING&lt;br /&gt;&lt;br /&gt;GGSCI (AnonDB) 11&gt; info REPLICAT emp_rep detail&lt;br /&gt;&lt;br /&gt;REPLICAT   EMP_REP   Last Started 2009-12-08 13:35   Status RUNNING&lt;br /&gt;&lt;br /&gt;Checkpoint Lag       00:00:00 (updated 00:00:01 ago)&lt;br /&gt;&lt;br /&gt;Log Read Checkpoint  File C:\OGG10G\dirdat\et000001&lt;br /&gt;&lt;br /&gt;2009-12-08 13:33:24.000000  RBA 985&lt;br /&gt;&lt;br /&gt;Extract Source                          Begin             End&lt;br /&gt;&lt;br /&gt;C:\OGG10G\dirdat\et000001               2009-12-08 13:33  2009-12-08 13:33&lt;br /&gt;&lt;br /&gt;C:\OGG10G\dirdat\et000000               * Initialized *   2009-12-08 13:33&lt;br /&gt;&lt;br /&gt;Current directory    C:\OGG10G&lt;br /&gt;&lt;br /&gt;Report file          C:\OGG10G\dirrpt\EMP_REP.rpt&lt;br /&gt;&lt;br /&gt;Parameter file       C:\OGG10G\dirprm\EMP_REP.prm&lt;br /&gt;&lt;br /&gt;Checkpoint file      C:\OGG10G\dirchk\EMP_REP.cpr&lt;br /&gt;&lt;br /&gt;Checkpoint table     HR.EMPLOYEES_CHKPT&lt;br /&gt;&lt;br /&gt;Process file         C:\OGG10G\dirpcs\EMP_REP.pcr&lt;br /&gt;&lt;br /&gt;Error log            C:\OGG10G\ggserr.log&lt;br /&gt;&lt;br /&gt;GGSCI (AnonDB) 12&gt; info all&lt;br /&gt;&lt;br /&gt;Program     Status      Group       Lag           Time Since Chkpt&lt;br /&gt;&lt;br /&gt;MANAGER     RUNNING&lt;br /&gt;&lt;br /&gt;EXTRACT     RUNNING     EMP_EXT     00:00:00      00:00:03&lt;br /&gt;&lt;br /&gt;REPLICAT    RUNNING     EMP_REP     00:00:00      00:00:06&lt;div class="blogger-post-footer"&gt;Become a follower of this blog.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7557095642298778684-7806363719881122370?l=decipherllc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://decipherllc.blogspot.com/feeds/7806363719881122370/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://decipherllc.blogspot.com/2010/07/troubleshooting-oracle-goldengate.html#comment-form' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7557095642298778684/posts/default/7806363719881122370'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7557095642298778684/posts/default/7806363719881122370'/><link rel='alternate' type='text/html' href='http://decipherllc.blogspot.com/2010/07/troubleshooting-oracle-goldengate.html' title='Troubleshooting Oracle GoldenGate'/><author><name>Sam J. De Filippis</name><uri>http://www.blogger.com/profile/00914658152206462119</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_HYG9L23Ks_U/TSd4lfqe7QI/AAAAAAAAACA/d2pTy0vq1y0/S220/153726.jpg'/></author><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7557095642298778684.post-2786001474152823800</id><published>2010-07-03T16:20:00.001-07:00</published><updated>2010-07-03T17:32:43.362-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Data Warehouse'/><category scheme='http://www.blogger.com/atom/ns#' term='Replication'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle GoldenGate'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips'/><category scheme='http://www.blogger.com/atom/ns#' term='Best Practices'/><category scheme='http://www.blogger.com/atom/ns#' term='Data Integration'/><category scheme='http://www.blogger.com/atom/ns#' term='Golden Gate'/><category scheme='http://www.blogger.com/atom/ns#' term='CDC'/><title type='text'>Oracle GoldenGate Best Practices and Tips</title><content type='html'>Lately I've been working, once again, with GoldenGate (now Oracle GoldenGate) data integration software. GoldenGate offers tremendously useful capabilities which include CDC (Change Data Capture), Data Warehouse ETL, efficient/low impact data replication from diverse database management systems, real time standby database maintenance (for high-availability, upgrades and patches, feeding Oracle Data Integrator (ODI) and data distribution.  So, I thought I'd offer some GoldenGate Best Practices and Tips that I've learned largely by making mistakes:&lt;br /&gt;&lt;br /&gt;I.  Best Practices&lt;br /&gt;&lt;br /&gt;PARALLEL PROCESSING&lt;br /&gt;&lt;br /&gt;Ensure the system has enough shared memory. GoldenGate runs as an Oracle process. Each Extract or Replicat process requires upwards of 25-50 MB of system shared memory. This means less memory for the Oracle DBMS, especially the SGA. &lt;br /&gt;&lt;br /&gt;Use parallel Replicat groups on the target system to reduce latency thru parallelism. Consider parallel Extract groups for tables that are fetch intensive (e.g., those that trigger SQL procedures).&lt;br /&gt;&lt;br /&gt;Group tables that have R.I. to each other in the same Extract-Replicat pair.&lt;br /&gt;&lt;br /&gt;Pair each Replicat with its own trail and corresponding Extract process.&lt;br /&gt;&lt;br /&gt;When using parallel Replicats, configure each one to process a different portion of the overall data.&lt;br /&gt; &lt;br /&gt;PASSTHRU PARAMETER&lt;br /&gt;&lt;br /&gt;Consider using this parameter if there is no filtering, conversion or mapping required and you’re using DATAPUMP.&lt;br /&gt;&lt;br /&gt;In pass-through mode, the Extract process does not look up table definitions, either from the database or from a data definitions file. Pass-through mode increases the throughput of the data pump, because all of the functionality that looks up object definitions is bypassed.&lt;br /&gt;This saves database fetches to improve performance.&lt;br /&gt;&lt;br /&gt;INSERTAPPEND&lt;br /&gt;&lt;br /&gt;A new GoldenGate 10.4 feature. &lt;br /&gt;&lt;br /&gt;Use for large transactions .&lt;br /&gt;&lt;br /&gt;Puts records at end of table rather than doing a more costly insert into other areas of table. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;DATAPUMP (not the Oracle DB utility)&lt;br /&gt;&lt;br /&gt;1.  Primary Extract group writes to a trail on the source system. &lt;br /&gt;&lt;br /&gt;2.  Reads this trail and sends the data across the network to a remote&lt;br /&gt;    trail on the target.&lt;br /&gt;&lt;br /&gt;3.  Adds storage flexibility and also serves to isolate the primary&lt;br /&gt;    Extract process from TCP/IP activity.&lt;br /&gt;&lt;br /&gt;4.  Can be configured for online or batch.&lt;br /&gt;&lt;br /&gt;5.  Can perform data filtering, mapping, and conversion, or it can be&lt;br /&gt;    configured in pass-through mode, where data is passively&lt;br /&gt;    transferred as-is, without manipulation.&lt;br /&gt;&lt;br /&gt;6.  Use to perform filtering thereby removing that processing overhead&lt;br /&gt;    from the primary extract group. &lt;br /&gt;&lt;br /&gt;7.  Use one or more pumps for each source and each target for &lt;br /&gt;    parallelism.  &lt;br /&gt;&lt;br /&gt;In most business cases, it is best practice to use a data pump. Some reasons for using a data pump include the following:&lt;br /&gt;&lt;br /&gt;● Protection against network and target failures: &lt;br /&gt;In a basic GoldenGate configuration, with only a trail on the target system, there is nowhere on the source system to store data that the Extract process continuously extracts into memory. If the network or the target system becomes unavailable, the primary Extract could run out of memory and abend. However, with a trail and data pump on the source system, captured data can be moved to disk, preventing the abend. When connectivity is restored, the data pump extracts the data from the source trail and sends it to the target system(s).&lt;br /&gt;&lt;br /&gt;● You are implementing several phases of data filtering or transformation. When using complex filtering or data transformation configurations, you can configure a data pump to perform the first transformation either on the source system or on the target system,&lt;br /&gt;and then use another data pump or the Replicat group to perform the second transformation.&lt;br /&gt;&lt;br /&gt;● Consolidating data from many sources to a central target. When synchronizing multiple source databases with a central target database, you can store extracted data on each source system and use data pumps on each of those systems to send the data to a trail&lt;br /&gt;on the target system. Dividing the storage load between the source and target systems reduces the need for massive amounts of space on the target system to accommodate data arriving from multiple sources.&lt;br /&gt;&lt;br /&gt;● Synchronizing one source with multiple targets. When sending data to multiple target systems, you can configure data pumps on the source system for each target. If network connectivity to any of the targets fails, data can still be sent to the other targets&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;STEP BY STEP Datapump Configuration&lt;br /&gt;&lt;br /&gt;ON THE SOURCE SYSTEM&lt;br /&gt;&lt;br /&gt;To configure the Manager process  . (Reference: Oracle GoldenGate Administration Guide, Version  10.4):&lt;br /&gt;&lt;br /&gt;1. On the source, configure the Manager process according to the instructions in Chapter 2.&lt;br /&gt;&lt;br /&gt;2. In the Manager parameter file, use the PURGEOLDEXTRACTS parameter to control the purging of files from the local trail.&lt;br /&gt;&lt;br /&gt;To configure the primary Extract group:&lt;br /&gt;&lt;br /&gt;3. On the source, use the ADD EXTRACT command to create a primary Extract group. For documentation purposes, this group is called ext.&lt;br /&gt;&lt;br /&gt;ADD EXTRACT &lt;ext&gt;, TRANLOG, BEGIN &lt;time&gt; [, THREADS &lt;n&gt;]&lt;br /&gt;&lt;br /&gt;❍ Use TRANLOG as the data source option. &lt;br /&gt;&lt;br /&gt;4. On the source, use the ADD EXTTRAIL command to create a local trail. The primary Extract writes to this trail, and the data-pump Extract reads it. &lt;br /&gt;&lt;br /&gt;ADD EXTTRAIL &lt;local_trail&gt;, EXTRACT &lt;ext&gt;&lt;br /&gt;&lt;br /&gt;❍ Use the EXTRACT argument to link this trail to the primary Extract group. The primary Extract group writes to this trail, and the data pump group reads it.&lt;br /&gt; &lt;br /&gt;5. On the source, use the EDIT PARAMS command to create a parameter file for the primary Extract group. Include the following parameters plus any others that apply to your database environment.&lt;br /&gt;&lt;br /&gt;-- Identify the Extract group:&lt;br /&gt;&lt;br /&gt;EXTRACT &lt;ext&gt;&lt;br /&gt;-- Specify database login information as needed for the database:&lt;br /&gt;[SOURCEDB &lt;dsn_1&gt;,][USERID &lt;user&gt;[, PASSWORD &lt;pw&gt;]]&lt;br /&gt;-- Specify the local trail that this Extract writes to:&lt;br /&gt;EXTTRAIL &lt;local_trail&gt;&lt;br /&gt;-- Specify tables to be captured:&lt;br /&gt;TABLE &lt;owner&gt;.&lt;table&gt;;&lt;br /&gt;&lt;br /&gt;To configure the data pump Extract group:&lt;br /&gt;&lt;br /&gt;6. On the source, use the ADD EXTRACT command to create a data pump group. For documentation purposes, this group is called pump.  In reality, I suggest naming this to match the extract name e.g., dpext1.&lt;br /&gt;&lt;br /&gt;ADD EXTRACT &lt;pump&gt;, EXTTRAILSOURCE &lt;local_trail&gt;, BEGIN &lt;time&gt;&lt;br /&gt;&lt;br /&gt;❍ Use EXTTRAILSOURCE as the data source option, and specify the name of the local trail.&lt;br /&gt;&lt;br /&gt;7. On the source, use the ADD RMTTRAIL command to specify a remote trail that will be created on the target system.&lt;br /&gt;&lt;br /&gt;ADD RMTTRAIL &lt;remote_trail&gt;, EXTRACT &lt;pump&gt;&lt;br /&gt;&lt;br /&gt;❍ Use the EXTRACT argument to link the remote trail to the data pump group. The linked data pump writes to this trail.&lt;br /&gt;&lt;br /&gt;8. On the source, use the EDIT PARAMS command to create a parameter file for the data pump. Include the following parameters plus any others that apply to your database environment.&lt;br /&gt;&lt;br /&gt;-- Identify the data pump group:&lt;br /&gt;&lt;br /&gt;EXTRACT &lt;pump&gt;&lt;br /&gt;-- Specify database login information as needed for the database:&lt;br /&gt;[SOURCEDB &lt;dsn_1&gt;,][USERID &lt;user&gt;[, PASSWORD &lt;pw&gt;]]&lt;br /&gt;-- Specify the name or IP address of the target system:&lt;br /&gt;RMTHOST &lt;target&gt;, MGRPORT &lt;portnumber&gt;&lt;br /&gt;-- Specify the remote trail on the target system:&lt;br /&gt;RMTTRAIL &lt;remote_trail&gt;&lt;br /&gt;-- Allow mapping, filtering, conversion or pass data through as-is:&lt;br /&gt;[PASSTHRU | NOPASSTHRU]&lt;br /&gt;-- Specify tables to be captured:&lt;br /&gt;TABLE &lt;owner&gt;.&lt;table&gt;;&lt;br /&gt;&lt;br /&gt;NOTE - To use PASSTHRU mode, the names of the source and target objects must be identical. No column mapping, filtering, SQLEXEC functions, transformation, or other functions that require data manipulation can be specified in the parameter file. You&lt;br /&gt;can combine normal processing with pass-through processing by pairing PASSTHRU and NOPASSTHRU with different TABLE statements.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ON THE TARGET SYSTEM&lt;br /&gt;&lt;br /&gt;To configure the Manager process:&lt;br /&gt;&lt;br /&gt;9. On the target, configure the Manager process according to the instructions in the Administration Guide, Chapter 2.&lt;br /&gt;&lt;br /&gt;10. In the Manager parameter file, use the PURGEOLDEXTRACTS parameter to control the purging of files from the local trail.&lt;br /&gt;&lt;br /&gt;To configure the Replicat group:&lt;br /&gt;&lt;br /&gt;11. On the target, create a Replicat checkpoint table. This is a best practice. For instructions, see “Creating a checkpoint table” on page 121 of Administration Guide.&lt;br /&gt;&lt;br /&gt;12. On the target, use the ADD REPLICAT command to create a Replicat group. For documentation purposes, this group is called rep.&lt;br /&gt;ADD REPLICAT &lt;rep&gt;, EXTTRAIL &lt;remote_trail&gt;, BEGIN &lt;time&gt;&lt;br /&gt;&lt;br /&gt;❍ Use the EXTTRAIL argument to link the Replicat group to the remote trail.&lt;br /&gt;&lt;br /&gt;13. On the target, use the EDIT PARAMS command to create a parameter file for the Replicat group. Include the following parameters plus any others that apply to your database environment.&lt;br /&gt;&lt;br /&gt;-- Identify the Replicat group:&lt;br /&gt;&lt;br /&gt;     REPLICAT &lt;rep&gt;&lt;br /&gt;&lt;br /&gt;-- State whether or not source and target definitions are identical:&lt;br /&gt;&lt;br /&gt;     SOURCEDEFS &lt;full_pathname&gt; | ASSUMETARGETDEFS&lt;br /&gt;&lt;br /&gt;-- Specify database login information as needed for the database:&lt;br /&gt;&lt;br /&gt;     [TARGETDB &lt;dsn_2&gt;,] [USERID &lt;user id&gt;[, PASSWORD &lt;pw&gt;]]&lt;br /&gt;&lt;br /&gt;-- Specify error handling rules:&lt;br /&gt;&lt;br /&gt;     REPERROR (&lt;error&gt;, &lt;response&gt;)&lt;br /&gt;&lt;br /&gt;-- Specify tables for delivery:&lt;br /&gt;&lt;br /&gt;      MAP &lt;owner&gt;.&lt;table&gt;, TARGET &lt;owner&gt;.&lt;table&gt;[, DEF &lt;template  &lt;br /&gt;        name&gt;];&lt;br /&gt; &lt;br /&gt;(Reference: Oracle GoldenGate Administration Guide, Version 10.4)&lt;br /&gt;&lt;br /&gt;REPLICAT CHECKPOINT TABLE&lt;br /&gt;&lt;br /&gt;  Create on target.&lt;br /&gt;&lt;br /&gt;  Can be used by all Replicat groups.&lt;br /&gt;&lt;br /&gt;  Prevents loss of data in case Replicat needs to be restarted.&lt;br /&gt;&lt;br /&gt;PRIMARY KEYS&lt;br /&gt;&lt;br /&gt;  Must have a unique, non-null identifier, even if not the primary key.&lt;br /&gt;  Option is to use KEYCOLS option of  MAP and TABLE  parameters to  &lt;br /&gt;  create a substitute key.  Otherwise, GG uses multiple columns from &lt;br /&gt;  the table; will usually degrade performance.  For data integrity,&lt;br /&gt;  the key used must contain the same values in corresponding rows of&lt;br /&gt;  all subject databases and  contain the same columns in databases &lt;br /&gt;  where key resides&lt;br /&gt;&lt;br /&gt;ADD TRACETABLE&lt;br /&gt;&lt;br /&gt;  Use default name of “GGS_TRACE”.&lt;br /&gt;&lt;br /&gt;FAULT TOLERANCE&lt;br /&gt;&lt;br /&gt;  In a data distribution configuration,  include a primary Extract&lt;br /&gt;  group and a data-pump Extract group in the source configuration, one&lt;br /&gt;  for each target.  &lt;br /&gt;&lt;br /&gt;  If network connectivity fails, data can still be sent to the target. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;II. PERFORMANCE&lt;br /&gt;&lt;br /&gt;This section will cover anything that is performance related that was not also in section “I. Best Practices”.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;A. MONITORING&lt;br /&gt;&lt;br /&gt;Run Status of Particular Process&lt;br /&gt;To find the run status of a particular process&lt;br /&gt;&lt;br /&gt;  GGSCI (development) 23&gt; status manager&lt;br /&gt;&lt;br /&gt;  Manager is running (IP port development.7809).&lt;br /&gt;&lt;br /&gt;  GGSCI (development) 24&gt; status extract ext1&lt;br /&gt;  EXTRACT EXT1: RUNNING&lt;br /&gt;&lt;br /&gt;Detailed information of a particular process:&lt;br /&gt;&lt;br /&gt;  GGSCI (development) 6&gt; info extract ext1, detail&lt;br /&gt;&lt;br /&gt;  EXTRACT    EXT1      Last Started 2010-01-23 11:19   Status RUNNING&lt;br /&gt;Checkpoint Lag       00:00:00 (updated 00:00:02 ago)&lt;br /&gt;Log Read Checkpoint  Oracle Redo Logs&lt;br /&gt;                     2010-01-23 10:45:18  Seqno 786, RBA 44710400&lt;br /&gt;&lt;br /&gt;  Target Extract Trails:&lt;br /&gt;&lt;br /&gt;  Remote Trail Name                           Seqno    RBA    Max MB&lt;br /&gt;  /u01/oracle/software/goldengate/dirdat/lt   55644     2      55644         10&lt;br /&gt;&lt;br /&gt;  Extract Source                          Begin             End&lt;br /&gt;&lt;br /&gt;  /u02/oradata/acme/redo03.log            2010-01-23 11:13  2010-01-23 10:45&lt;br /&gt;  /u02/oradata/acme/redo02.log            2010-01-23 11:04  2010-01-22 11:13&lt;br /&gt;  /u02/oradata/acme/redo02.log            2010-01-23 10:42  2010-01-21 11:04&lt;br /&gt;  Not Available                           * Initialized *   2010-01-20 10:42&lt;br /&gt;&lt;br /&gt;Current directory    /u01/oracle/software/goldengate&lt;br /&gt;&lt;br /&gt;Report file          /u01/oracle/software/goldengate/dirrpt/EXT1.rpt&lt;br /&gt;Parameter file       /u01/oracle/software/goldengate/dirprm/ext1.prm&lt;br /&gt;Checkpoint file      /u01/oracle/software/goldengate/dirchk/EXT1.cpe&lt;br /&gt;Process file         /u01/oracle/software/goldengate/dirpcs/EXT1.pce&lt;br /&gt;Stdout file          /u01/oracle/software/goldengate/dirout/EXT1.out&lt;br /&gt;Error log            /u01/oracle/software/goldengate/ggserr.log&lt;br /&gt;&lt;br /&gt;Detailed information of a particular process&lt;br /&gt;&lt;br /&gt;GGSCI (devu007) 6&gt; info extract ext1, detail&lt;br /&gt;&lt;br /&gt;  EXTRACT    EXT1      Last Started 2010-02-19 11:19   Status RUNNING&lt;br /&gt;  Checkpoint Lag       00:00:00 (updated 00:00:02 ago)&lt;br /&gt;  Log Read Checkpoint  Oracle Redo Logs&lt;br /&gt;                     2010-02-19 10:45:18  Seqno 786, RBA 44710400&lt;br /&gt;Target Extract Trails:&lt;br /&gt;&lt;br /&gt;  Remote Trail Name                                Seqno &lt;br /&gt; /u01/oracle/software/goldengate/dirdat/lt            2  &lt;br /&gt; RBA     Max MB&lt;br /&gt; 55644     10&lt;br /&gt;&lt;br /&gt;  Extract Source                          Begin             End&lt;br /&gt;&lt;br /&gt;  /u02/oradata/acme/redo03.log            2010-02-19 11:13  2010-02-26 10:45&lt;br /&gt;  /u02/oradata/acme/redo02.log            2010-02-19 11:04  2010-02-19 11:13&lt;br /&gt;  /u02/oradata/acme/redo02.log            2010-02-18 10:42  2010-02-19 11:04&lt;br /&gt;  Not Available                           * Initialized *   2010-02-18 10:42&lt;br /&gt;&lt;br /&gt;Current directory    /u01/oracle/software/goldengate&lt;br /&gt;&lt;br /&gt;Report file          /u01/oracle/software/goldengate/dirrpt/EXT1.rpt&lt;br /&gt;Parameter file       /u01/oracle/software/goldengate/dirprm/ext1.prm&lt;br /&gt;Checkpoint file      /u01/oracle/software/goldengate/dirchk/EXT1.cpe&lt;br /&gt;Process file         /u01/oracle/software/goldengate/dirpcs/EXT1.pce&lt;br /&gt;Stdout file          /u01/oracle/software/goldengate/dirout/EXT1.out&lt;br /&gt;Error log            /u01/oracle/software/goldengate/ggserr.log&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;View processing rate - can use 'hr','min' or 'sec' as a parameter&lt;br /&gt;&lt;br /&gt;  GGSCI (devu007) 37&gt; stats extract ext2 reportrate hr&lt;br /&gt;&lt;br /&gt;  Sending STATS request to EXTRACT EXT2 ...&lt;br /&gt;&lt;br /&gt;  Start of Statistics at 2010-02-19 10:04:46.&lt;br /&gt;&lt;br /&gt;  Output to /u01/oracle/ggs/dirdat/cc:&lt;br /&gt;&lt;br /&gt;  Extracting from SH.CUSTOMERS to SH.CUSTOMERS:&lt;br /&gt;&lt;br /&gt;  *** Total statistics since 2010-02-19 09:29:48 ***&lt;br /&gt;        Total inserts/hour:                          0.00&lt;br /&gt;        Total updates/hour:                      95258.62&lt;br /&gt;        Total deletes/hour:                          0.00&lt;br /&gt;        Total discards/hour:                         0.00&lt;br /&gt;        Total operations/hour:                   95258.62&lt;br /&gt;&lt;br /&gt;  *** Daily statistics since 2010-02-19 09:29:48 ***&lt;br /&gt;        Total inserts/hour:                          0.00&lt;br /&gt;        Total updates/hour:                      95258.62&lt;br /&gt;        Total deletes/hour:                          0.00&lt;br /&gt;        Total discards/hour:                         0.00&lt;br /&gt;        Total operations/hour:                   95258.62&lt;br /&gt;&lt;br /&gt;  *** Hourly statistics since 2010-02-19 10:00:00 ***&lt;br /&gt;&lt;br /&gt;        No database operations have been performed.&lt;br /&gt;&lt;br /&gt;  *** Latest statistics since 2010-02-19 09:29:48 ***&lt;br /&gt;        Total inserts/hour:                          0.00&lt;br /&gt;        Total updates/hour:                      95258.62&lt;br /&gt;        Total deletes/hour:                          0.00&lt;br /&gt;        Total discards/hour:                         0.00&lt;br /&gt;        Total operations/hour:                   95258.62&lt;br /&gt;&lt;br /&gt;  End of Statistics.&lt;br /&gt;&lt;br /&gt;View latency between the records processed by Goldengate and the timestamp in the data source:&lt;br /&gt;&lt;br /&gt;  GGSCI (development) 13&gt;  send extract ext2, getlag&lt;br /&gt;&lt;br /&gt;  Sending GETLAG request to EXTRACT EXT2 ...&lt;br /&gt;  Last record lag: 3 seconds.&lt;br /&gt;  At EOF, no more records to process.&lt;br /&gt;&lt;br /&gt;  GGSCI (development) 15&gt; lag extract ext*&lt;br /&gt;&lt;br /&gt;  Sending GETLAG request to EXTRACT EXT1 ...&lt;br /&gt;  Last record lag: 1 seconds.&lt;br /&gt;  At EOF, no more records to process.&lt;br /&gt;&lt;br /&gt;  Sending GETLAG request to EXTRACT EXT2 ...&lt;br /&gt;  Last record lag: 1 seconds.&lt;br /&gt;  At EOF, no more records to process.&lt;br /&gt;&lt;br /&gt;Viewing the GoldenGate error log as well as history of commands executed and other events:&lt;br /&gt;&lt;br /&gt;For UNIX:&lt;br /&gt; vi ggserr.log&lt;br /&gt;&lt;br /&gt; GGSCI command: VIEW GGSEVT&lt;br /&gt;  &lt;br /&gt;   View the process report&lt;br /&gt;  &lt;br /&gt;  GGSCI (development) 2&gt; view report ext1&lt;br /&gt;  GGSCI (development) 2&gt; view report rep1&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;B.  PERFORMANCE TIPS&lt;br /&gt;&lt;br /&gt;To reduce bandwidth requirements:&lt;br /&gt;&lt;br /&gt; Use compression options of the RMTHOST parameter to compress data&lt;br /&gt; before it is sent across the network. Weigh the benefits of&lt;br /&gt; compression against the CPU resources that are required to perform&lt;br /&gt; the compression.&lt;br /&gt;&lt;br /&gt;To increase the TCP/IP packet size:&lt;br /&gt;&lt;br /&gt; Use the TCPBUFSIZE option of the RMTHOST parameter to increase the&lt;br /&gt; size of the TCP socket buffer that Extract maintains. By increasing&lt;br /&gt; the size of the buffer, you can send larger packets to the target&lt;br /&gt; system. Consult with Network Support before setting TCPBUFSIZE.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Use SQL Arrays&lt;br /&gt;&lt;br /&gt;The BATCHSQL parameter will increase the performance of Replicat. BATCHSQL causes Replicat to create arrays for similar SQL statements and apply them at an accelerated rate. Normally, Replicat applies one SQL statement at a time.&lt;br /&gt;&lt;br /&gt;•	At 100 bytes of data per row change, BATCHSQL can&lt;br /&gt;       improve Replicat’s performance by up to 300 percent;  actual&lt;br /&gt;       performance benefits will vary, depending on the oeverall&lt;br /&gt;       demand on system resources. &lt;br /&gt;&lt;br /&gt;•	At around 5,000 bytes of data per row change, the benefits of &lt;br /&gt;       using BATCHSQL diminish.&lt;br /&gt;&lt;br /&gt;.       Improve I/O within the system configuration&lt;br /&gt;&lt;br /&gt;•	Place trail files on the fastest disk controller.&lt;br /&gt;&lt;br /&gt;•	Use RAID 0+1 disk configuration  because GoldenGate performs&lt;br /&gt;        sequential writes.&lt;br /&gt;&lt;br /&gt;*       Be careful with the following points.  Increasing the values of&lt;br /&gt;        these parameters will improve performance but take longer to&lt;br /&gt;        reprocess your data in case of process failure.&lt;br /&gt; &lt;br /&gt;•       Use the CHECKPOINTSECS in Extract or Replicat; if increased, &lt;br /&gt;        less frequent checkpoints; increases data to be reprocessed if&lt;br /&gt;        process fails; keep transaction logs available in case of&lt;br /&gt;        reprocessing &lt;br /&gt;&lt;br /&gt;•	Use the GROUPTRANSOPS; increases number of SQL operations in a&lt;br /&gt;        Replicat ; reduces I/O to checkpoint  file and checkpoint &lt;br /&gt;        table.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Data Filtering and Conversion:&lt;br /&gt;&lt;br /&gt; Use primary Extract for data capture only.  &lt;br /&gt;&lt;br /&gt; Use a data pump on the source to perform filtering and thereby send&lt;br /&gt; less data over the network.&lt;br /&gt;&lt;br /&gt; Alternatively, use Replicat for conversion and, if the network can&lt;br /&gt; handle large amounts of data, also for filtering. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt; **(Next Post - "Troubleshooting GoldenGate Extracts")&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;Become a follower of this blog.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7557095642298778684-2786001474152823800?l=decipherllc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://decipherllc.blogspot.com/feeds/2786001474152823800/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://decipherllc.blogspot.com/2010/07/oracle-goldengate-best-practices-and.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7557095642298778684/posts/default/2786001474152823800'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7557095642298778684/posts/default/2786001474152823800'/><link rel='alternate' type='text/html' href='http://decipherllc.blogspot.com/2010/07/oracle-goldengate-best-practices-and.html' title='Oracle GoldenGate Best Practices and Tips'/><author><name>Sam J. De Filippis</name><uri>http://www.blogger.com/profile/00914658152206462119</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_HYG9L23Ks_U/TSd4lfqe7QI/AAAAAAAAACA/d2pTy0vq1y0/S220/153726.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7557095642298778684.post-1535486658899979359</id><published>2010-04-14T13:52:00.000-07:00</published><updated>2010-04-14T14:31:25.141-07:00</updated><title type='text'>About Oracle 11g Clusters</title><content type='html'>A cluster provides an optional method of storing table data. A cluster is made up of a group of tables that share the same data blocks. The tables are grouped together because they share common columns and are often used together. For example, the emp and dept table share the deptno column. When you cluster the emp and dept tables (see Figure-1), Oracle Database physically stores all rows for each department from both the emp and dept tables in the same data blocks.&lt;br /&gt;&lt;br /&gt;Because clusters store related rows of different tables together in the same data blocks, properly used clusters offer two primary benefits:&lt;br /&gt;&lt;br /&gt;• Disk I/O is reduced and access time improves for joins of clustered tables.&lt;br /&gt;&lt;br /&gt;• The cluster key is the column, or group of columns, that the clustered&lt;br /&gt;        tables have in common. You specify the columns of the cluster key when&lt;br /&gt;        creating the cluster. You subsequently specify the same columns when&lt;br /&gt;        creating every table added to the cluster. Each cluster key value is stored&lt;br /&gt;        only once each in the cluster and the cluster index, no matter how many rows&lt;br /&gt;        of different tables contain the value.&lt;br /&gt;&lt;br /&gt;Therefore, less storage might be required to store related table and index data in a cluster than is necessary in non-clustered table format. For example, in Figure 1, notice how each cluster key (each deptno) is stored just once for many rows that contain the same value in both the emp and dept tables.&lt;br /&gt;&lt;br /&gt;After creating a cluster, you can create tables in the cluster. However, before any rows can be inserted into the clustered tables, a cluster index must be created. Using clusters does not affect the creation of additional indexes on the clustered tables; they can be created and dropped as usual.&lt;br /&gt;&lt;br /&gt;You should not use clusters for tables that are frequently accessed individually.&lt;br /&gt;&lt;br /&gt;Figure 1 Clustered Table Data&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_HYG9L23Ks_U/S8YyfjNwtCI/AAAAAAAAAAM/PImrGFpyjP8/s1600/admin021.gif"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 318px;" src="http://3.bp.blogspot.com/_HYG9L23Ks_U/S8YyfjNwtCI/AAAAAAAAAAM/PImrGFpyjP8/s320/admin021.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5460107115843597346" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;Become a follower of this blog.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7557095642298778684-1535486658899979359?l=decipherllc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://decipherllc.blogspot.com/feeds/1535486658899979359/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://decipherllc.blogspot.com/2010/04/about-oracle-11g-clusters.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7557095642298778684/posts/default/1535486658899979359'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7557095642298778684/posts/default/1535486658899979359'/><link rel='alternate' type='text/html' href='http://decipherllc.blogspot.com/2010/04/about-oracle-11g-clusters.html' title='About Oracle 11g Clusters'/><author><name>Sam J. De Filippis</name><uri>http://www.blogger.com/profile/00914658152206462119</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_HYG9L23Ks_U/TSd4lfqe7QI/AAAAAAAAACA/d2pTy0vq1y0/S220/153726.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_HYG9L23Ks_U/S8YyfjNwtCI/AAAAAAAAAAM/PImrGFpyjP8/s72-c/admin021.gif' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7557095642298778684.post-218982922581075388</id><published>2009-12-30T14:39:00.000-08:00</published><updated>2009-12-30T14:46:33.307-08:00</updated><title type='text'>SQL Injection ?</title><content type='html'>Ever heard of SQL Injection?  Sounds like something medical but unfortunately not as benign as that. &lt;br /&gt;&lt;br /&gt;Apparently it is a method used by hackers to redirect a website and mess with our data. I just read an interesting article about this on the eWeek Security Watch site and thought I'd share. Here's a link to the article:&lt;br /&gt;&lt;br /&gt;http://securitywatch.eweek.com/sql_injection/an_unpleasant_anniversary_eleven_years_of_sql_injection.html?kc=EWKNLDAT12242009STR2&lt;div class="blogger-post-footer"&gt;Become a follower of this blog.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7557095642298778684-218982922581075388?l=decipherllc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://decipherllc.blogspot.com/feeds/218982922581075388/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://decipherllc.blogspot.com/2009/12/sql-injection.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7557095642298778684/posts/default/218982922581075388'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7557095642298778684/posts/default/218982922581075388'/><link rel='alternate' type='text/html' href='http://decipherllc.blogspot.com/2009/12/sql-injection.html' title='SQL Injection ?'/><author><name>Sam J. De Filippis</name><uri>http://www.blogger.com/profile/00914658152206462119</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_HYG9L23Ks_U/TSd4lfqe7QI/AAAAAAAAACA/d2pTy0vq1y0/S220/153726.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7557095642298778684.post-6722788128501767349</id><published>2009-12-17T12:51:00.001-08:00</published><updated>2009-12-17T16:48:04.941-08:00</updated><title type='text'>How 11g Tries To Improve the Use of Bind Variables</title><content type='html'>I'm sure that all of us who have just about any Oracle experience have encountered the enigmatic SQL query that ran 2 seconds yesterday but 102 seconds today. What can cause this unpredictable behavior? &lt;br /&gt;&lt;br /&gt;The answer is that many factors can cause this degradation, but one of the most common causes is execution plan invalidation. When the optimizer peeks at the values of user-defined bind variables on the first invocation of a cursor, it is called "bind peeking". This usually has a positive effect on performance because it allows the optimizer to determine the selectivity of any "WHERE" clause condition as if literals have been used instead of bind variables, thus improving the quality of the execution plan generated for statements using bind variables. &lt;br /&gt;&lt;br /&gt;Bind peeking becomes a problem when a bind variable is used with a table column that has skewed data. For example, we have a table of 20000 rows that contains a "part_num" column. Part number "A110" occurs 3 times in our table (3 rows) but part number "B235" occurs only 8000 times (800 rows). An index is created on the part_num column and when statistics are gathered, the skew in the data distribution is detected and a histogram is generated. When a cursor that contains a select query using bind variables for a conditional statement is first invoked, the optimizer can peek at the value of the user defined bind variable and determine the execution plan which is then stored in the shared pool.  If the bind variable for part_num is set to "A110" at first cursor invocation, the optimizer peeks at the bind variable and sets the plan access accordingly. However, if the value of the bind variable is set to the value "B235" and the cursor is parsed again, the old plan will still be in place and will be used. Thus, an access plan not suited for optimal performance for the value of the bind variable is used, thereby degrading performance due to the difference in buffer gets that are required. Before 11g, one of the ways to take care of this was to flush the shared pool and cause the query to be reparsed with the new bind variable values.&lt;br /&gt;&lt;br /&gt;In 11g, Oracle has taken a step to address the above problem by introducing Adaptive Cursor Sharing. ACS allows for more cursors for the same query containing bind variables. In other words, the optimizer will allow multiple execution plans to be used for a single statement that uses bind variables. This ensures that the best execution plan will be used depending on the bind value. So, taking the example above, 11g would allow two plans to be generated for the difference in selectivity of the part_num column bind variable values.&lt;div class="blogger-post-footer"&gt;Become a follower of this blog.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7557095642298778684-6722788128501767349?l=decipherllc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://decipherllc.blogspot.com/feeds/6722788128501767349/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://decipherllc.blogspot.com/2009/12/how-11g-tries-to-improve-use-of-bind.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7557095642298778684/posts/default/6722788128501767349'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7557095642298778684/posts/default/6722788128501767349'/><link rel='alternate' type='text/html' href='http://decipherllc.blogspot.com/2009/12/how-11g-tries-to-improve-use-of-bind.html' title='How 11g Tries To Improve the Use of Bind Variables'/><author><name>Sam J. De Filippis</name><uri>http://www.blogger.com/profile/00914658152206462119</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_HYG9L23Ks_U/TSd4lfqe7QI/AAAAAAAAACA/d2pTy0vq1y0/S220/153726.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7557095642298778684.post-5735770451794215083</id><published>2009-11-13T15:02:00.000-08:00</published><updated>2009-11-13T15:49:34.553-08:00</updated><title type='text'>Oracle 11g and Automatic Memory Management (AMM)</title><content type='html'>I have been very busy for the last few months and haven't posted much on this blog but I thought I would share some notes on recent experiences installing and upgrading to Oracle 11gR1 and 11gR2 on Decipher,LLC projects. I plan to make this a series of postings.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Carrying forward the theme of improving and automating memory management that started with Oracle 9i, Oracle has included Automatic Memory Management (AMM) in 11g.&lt;br /&gt;The purpose of AMM is to provide dynamic management of the PGA and SGA. The method by which this is done is to allocate one large chunk of memory at database configuration using two new initialization parameters: MEMORY_TARGET and MEMORY_MAX_TARGET.  From Oracle 11g Documention:&lt;br /&gt;&lt;br /&gt;"you set only a target memory size initialization parameter (MEMORY_TARGET) and optionally a maximum memory size initialization parameter (MEMORY_MAX_TARGET). The instance then tunes to the target memory size, redistributing memory as needed between the system global area (SGA) and the instance program global area (instance PGA). Because the target memory initialization parameter is dynamic, you can change the target memory size at any time without restarting the database. The maximum memory size serves as an upper limit so that you cannot accidentally set the target memory size too high, and so that enough memory is set aside for the Oracle Database instance in case you do want to increase total instance memory in the future. Because certain SGA components either cannot easily shrink or must remain at a minimum size, the instance also prevents you from setting the target memory size too low."&lt;br /&gt;&lt;br /&gt;Before you configure your Oracle 11g instance, you should first make sure that you have enough shared memory on your server. On a Linux server, you do this by issuing:&lt;br /&gt;&lt;br /&gt;# df -k /dev/shm&lt;br /&gt;which will return the number of blocks in your shared memory filesystem, the number used, the usage percent, and the device on which it is mounted (/dev/shm).&lt;br /&gt;&lt;br /&gt;# umount tmpfs&lt;br /&gt;# mount -t tmpfs shmfs -o size=1200m /dev/shm&lt;br /&gt;will adjust the shared memory filesystem size to that required size. &lt;br /&gt;&lt;br /&gt;To make this change permanent you need to add the adjustment to the fstab file. To do this just edit the file /etc/fstab and add the line:&lt;br /&gt;&lt;br /&gt;none                    /dev/shm                tmpfs   size=3000m        0 0&lt;br /&gt;in this case, we set the size to 3GB&lt;br /&gt;&lt;br /&gt;The next step is to optimally set your MEMORY_TARGET and MEMORY_MAX_TARGET initialization parameters. &lt;br /&gt;&lt;br /&gt;The view V$MEMORY_TARGET_ADVICE provides tuning advice for the MEMORY_TARGET initialization parameter:&lt;br /&gt;&lt;br /&gt;SQL&gt;  select * from v$memory_target_advice order by memory_size;&lt;br /&gt; &lt;br /&gt;MEMORY_SIZE MEMORY_SIZE_FACTOR ESTD_DB_TIME ESTD_DB_TIME_FACTOR    VERSION&lt;br /&gt;----------- ------------------ ------------ ------------------- ----------&lt;br /&gt;        180                 .5          458               1.344          0&lt;br /&gt;        270                .75          367              1.0761          0&lt;br /&gt;        360                  1          341                   1          0&lt;br /&gt;        450               1.25          335               .9817          0&lt;br /&gt;        540                1.5          335               .9817          0&lt;br /&gt;        630               1.75          335               .9817          0&lt;br /&gt;        720                  2          335               .9817          0&lt;br /&gt;&lt;br /&gt;While installing Oracle 11g or using DBCA to create a new database, you have the option of using AMM or not.  &lt;br /&gt;&lt;br /&gt;The main point of this post is to inform you that Oracle 11g will require quite a bit more shared memory if you choose to use the new Automatic Memory Management feature.&lt;div class="blogger-post-footer"&gt;Become a follower of this blog.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7557095642298778684-5735770451794215083?l=decipherllc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://decipherllc.blogspot.com/feeds/5735770451794215083/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://decipherllc.blogspot.com/2009/11/oracle-11g-and-automatic-memory.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7557095642298778684/posts/default/5735770451794215083'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7557095642298778684/posts/default/5735770451794215083'/><link rel='alternate' type='text/html' href='http://decipherllc.blogspot.com/2009/11/oracle-11g-and-automatic-memory.html' title='Oracle 11g and Automatic Memory Management (AMM)'/><author><name>Sam J. De Filippis</name><uri>http://www.blogger.com/profile/00914658152206462119</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_HYG9L23Ks_U/TSd4lfqe7QI/AAAAAAAAACA/d2pTy0vq1y0/S220/153726.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7557095642298778684.post-3144578168493290250</id><published>2009-07-25T07:59:00.000-07:00</published><updated>2009-07-25T08:59:31.551-07:00</updated><title type='text'>ORA-01000: Too many open cursors</title><content type='html'>You are running a long process, such as an export/import or SQL*Loader script, and get the "ORA-01000: Too many open cursors" error from your Oracle database. &lt;br /&gt;&lt;br /&gt;This problem could be encountered because Oracle can keep closed cursors in cache which are included in the total open cursors count. One way to determine how many cursors are actually open in a database is to submit the following SQL:&lt;br /&gt;&lt;br /&gt;    "select value, name from v$sysstat where statistic# in (2,3);"&lt;br /&gt;&lt;br /&gt;The standard recommended solution to the ORA-01000 is to increase the OPEN_CURSORS database initialization parameter. However, there is a workaround:&lt;br /&gt;&lt;br /&gt; Break down your process into smaller pieces. An example is, instead of issuing a request for a full database export, do your export on a schema or table basis. You will have the inconvenience of having to execute more than one script or command, however, you will get around this error without having to change database initialization parameters and doing a shutdown/restart of your database.&lt;div class="blogger-post-footer"&gt;Become a follower of this blog.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7557095642298778684-3144578168493290250?l=decipherllc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://decipherllc.blogspot.com/feeds/3144578168493290250/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://decipherllc.blogspot.com/2009/07/ora-01000-too-many-open-cursors.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7557095642298778684/posts/default/3144578168493290250'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7557095642298778684/posts/default/3144578168493290250'/><link rel='alternate' type='text/html' href='http://decipherllc.blogspot.com/2009/07/ora-01000-too-many-open-cursors.html' title='ORA-01000: Too many open cursors'/><author><name>Sam J. De Filippis</name><uri>http://www.blogger.com/profile/00914658152206462119</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_HYG9L23Ks_U/TSd4lfqe7QI/AAAAAAAAACA/d2pTy0vq1y0/S220/153726.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7557095642298778684.post-1177244561558109799</id><published>2009-07-13T16:21:00.000-07:00</published><updated>2009-07-25T09:14:19.350-07:00</updated><title type='text'>ORA-06401 NETCMN: invalid driver designator</title><content type='html'>When recently issuing a command to connect to a remote database, the Oracle “ora-06401” error was encountered. &lt;br /&gt;&lt;br /&gt;Oracle documentation states the following cause, along with what it suggests to be the sole solution:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;ORA-06401 NETCMN: invalid driver designator&lt;/strong&gt;&lt;br /&gt;  &lt;br /&gt;&lt;strong&gt;Cause:&lt;/strong&gt; The login (connect) string contains an invalid driver designator. &lt;br /&gt;  &lt;br /&gt;&lt;strong&gt;Action:&lt;/strong&gt; Correct the string and re-submit. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This usually means that the command syntax is incorrect.  However, other causes exist:&lt;br /&gt;&lt;br /&gt;1. improper authorization for the user issuing the command&lt;br /&gt;2. invalid connection string for the target database version &lt;br /&gt;3. ^M  characters present in the file tnsnanes.ora file. These can be seen by       viewing the ascii file after it has been converted to binary or by editing the file in a UNIX/Linux editor, such as vi. These characters are usually created by editing the file with a non-Linux/Unix editor and then transferring it by FTP to the server.&lt;br /&gt;Use the following vi editor command to remove all of these characters from the file:&lt;br /&gt;      &lt;br /&gt;               :%s/.$// &lt;enter&gt;&lt;div class="blogger-post-footer"&gt;Become a follower of this blog.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7557095642298778684-1177244561558109799?l=decipherllc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://decipherllc.blogspot.com/feeds/1177244561558109799/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://decipherllc.blogspot.com/2009/07/ora-06401-netcmn-invalid-driver.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7557095642298778684/posts/default/1177244561558109799'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7557095642298778684/posts/default/1177244561558109799'/><link rel='alternate' type='text/html' href='http://decipherllc.blogspot.com/2009/07/ora-06401-netcmn-invalid-driver.html' title='ORA-06401 NETCMN: invalid driver designator'/><author><name>Sam J. De Filippis</name><uri>http://www.blogger.com/profile/00914658152206462119</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_HYG9L23Ks_U/TSd4lfqe7QI/AAAAAAAAACA/d2pTy0vq1y0/S220/153726.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7557095642298778684.post-715994792112708273</id><published>2009-07-09T17:52:00.000-07:00</published><updated>2009-07-09T18:00:54.746-07:00</updated><title type='text'>A Recovery Manager Setup Obscure Point</title><content type='html'>When granting privileges to the rman user account, make sure that you make the RECOVERY_CATALOG_OWNER privilege the default privilege.&lt;div class="blogger-post-footer"&gt;Become a follower of this blog.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7557095642298778684-715994792112708273?l=decipherllc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://decipherllc.blogspot.com/feeds/715994792112708273/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://decipherllc.blogspot.com/2009/07/recovery-manager-setup-obscure-point.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7557095642298778684/posts/default/715994792112708273'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7557095642298778684/posts/default/715994792112708273'/><link rel='alternate' type='text/html' href='http://decipherllc.blogspot.com/2009/07/recovery-manager-setup-obscure-point.html' title='A Recovery Manager Setup Obscure Point'/><author><name>Sam J. De Filippis</name><uri>http://www.blogger.com/profile/00914658152206462119</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_HYG9L23Ks_U/TSd4lfqe7QI/AAAAAAAAACA/d2pTy0vq1y0/S220/153726.jpg'/></author><thr:total>1</thr:total></entry></feed>
