<?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-4092304359380397372</id><updated>2012-01-28T16:52:22.739+05:30</updated><category term='ORA-14323'/><category term='translate'/><category term='hash'/><category term='subpartition'/><category term='new'/><category term='nid'/><category term='onsctl'/><category term='Voting Disk'/><category term='isd code'/><category term='service'/><category term='dop'/><category term='UPDATEXML'/><category term='andamans'/><category term='dbnewid'/><category term='merge partition'/><category term='daily'/><category term='multiple column partition'/><category term='list hash'/><category term='not'/><category term='music station'/><category term='11g'/><category term='alter mview'/><category term='with reduced precision'/><category term='multi'/><category term='create_plan'/><category term='ONS'/><category term='like'/><category term='user managed cache group'/><category term='ORA-16795'/><category term='Oracle Private Interconnect Configuration Assistant'/><category term='libasm.so'/><category term='apun'/><category term='exchange'/><category term='OCR'/><category term='TRANSPORTABLE DATABASE'/><category term='oraconfig'/><category term='securefile'/><category term='deduplication'/><category term='table'/><category term='ASMlib'/><category term='CSS'/><category term='srvctl'/><category term='in'/><category term='IMP-00032 IMP-00008 oracle buffer imp exp'/><category term='example'/><category term='timesten'/><category term='RECOVERY'/><category term='impdp'/><category term='memory'/><category term='get_ddl'/><category term='ASM'/><category term='online'/><category term='ocrcheck'/><category term='ORA-29740'/><category term='crs_unregister'/><category term='ORA-12154'/><category term='Oracle 11gR2 Grid Infrastructure Installation'/><category term='raw'/><category term='broker'/><category term='Himalayan Odsessy'/><category term='MANAGER'/><category term='CRS'/><category term='syndrome'/><category term='step by step'/><category term='interval'/><category term='OUI-67212'/><category term='ORA-15031'/><category term='list'/><category term='add'/><category term='alter table'/><category term='gadget'/><category term='drop mview'/><category term='hiran'/><category term='ORA-16573'/><category term='generate_replication_support'/><category term='grid'/><category term='Failed to initialize GPnP'/><category term='blob'/><category term='composite'/><category term='ORA-14400'/><category term='materialized view'/><category term='cache administrator'/><category term='PASSWORD_LIFE_TIME'/><category term='subpartitions'/><category term='prefixed local'/><category term='dataguard'/><category term='range list'/><category term='NLS_CHARACTERSET'/><category term='country code'/><category term='UTLPWDMG.sql'/><category term='PRKP-1029'/><category term='administrator'/><category term='reference parition'/><category term='XMLTYPE.createXML'/><category term='prebuilt table'/><category term='add partition'/><category term='dbms_redefinition'/><category term='create'/><category term='replace'/><category term='scuba diving'/><category term='non-prefixed local'/><category term='failover'/><category term='oifcfg setif'/><category term='PASSWORD_REUSE_MAX'/><category term='multi-master'/><category term='online music'/><category term='ORA-16570'/><category term='ORA-31603'/><category term='ORA-12545'/><category term='parallelism'/><category term='apunhiran'/><category term='EXTRACTVALUE'/><category term='DATABASE MIGRATION'/><category term='wait for unread message on broadcast channel'/><category term='country ISO code country name'/><category term='SCHEDULE_PUSH'/><category term='replication'/><category term='master'/><category term='local index'/><category term='virtual column'/><category term='report_tuning_task'/><category term='ORA-16664'/><category term='install'/><category term='interval partitioning'/><category term='TRANSPORTABLE'/><category term='XMLTYPE'/><category term='Securefiles'/><category term='ORA-14211'/><category term='installation'/><category term='in-memory'/><category term='fast start'/><category term='list list'/><category term='disk'/><category term='oracle tuning'/><category term='ORA-06553'/><category term='range hash'/><category term='APPENDCHILDXML'/><category term='10g'/><category term='rename database'/><category term='CLOB'/><category term='exclude'/><category term='archivelog'/><category term='opatch'/><category term='raw device'/><category term='archive log'/><category term='crsctl'/><category term='ref partition'/><category term='RAC'/><category term='dbms_repcat'/><category term='11gr2'/><category term='group'/><category term='khardungla'/><category term='cpu'/><category term='PASSWORD_REUSE_TIME'/><category term='PLS-553'/><category term='ORA-06552'/><category term='exchange partition'/><category term='ORA-14291'/><category term='PADI'/><category term='ORA-15183'/><category term='security'/><category term='ORA-16608'/><category term='schema'/><category term='XML'/><category term='advanced'/><category term='move'/><category term='CHARACTERSET'/><category term='oracle'/><category term='NetApps'/><category term='charater set conversion'/><category term='global index'/><category term='split'/><category term='ORA-16826'/><category term='fast start failover'/><category term='DBMS_DEFER_SYS'/><category term='cache group'/><category term='range range'/><category term='ocrconfig'/><category term='node eviction'/><category term='ORA-16607'/><category term='reference'/><category term='ORA-12514'/><category term='partition'/><category term='lcdprm'/><category term='expdp'/><category term='split partition'/><category term='CREATE_TUNING_TASK'/><category term='ORA-12060'/><category term='setup'/><category term='list range'/><category term='ORA-14074'/><category term='enable'/><category term='songs'/><category term='ORA-02097'/><category term='CONVERT DATABASE'/><category term='complex'/><category term='cache'/><category term='create_plan_directive'/><category term='change'/><category term='dbms_sqltune'/><category term='V$TRANSPORTABLE_PLATFORM'/><category term='partitioning'/><category term='create_consumer_group'/><category term='dbms_resource_manager'/><category term='mview'/><category term='split brain'/><category term='switch over'/><category term='BasicFiles'/><category term='dbms_metadata'/><category term='ttIsql'/><category term='drop partition'/><category term='ORA-16179'/><category term='verify_function'/><category term='range'/><category term='parallel'/><category term='windows'/><category term='10.2.0.1'/><category term='bike ride'/><category term='execute_tuning_task'/><category term='database'/><category term='merge'/><category term='motorcycle ride'/><category term='ORA-16627'/><category term='linux'/><category term='ORA-15018'/><category term='translation'/><category term='CRS-0211'/><category term='steps'/><category term='stream'/><category term='Music'/><category term='REMOTE_MAKE_FAILED'/><category term='oracleasm'/><category term='ORA-16817'/><category term='ORA-32017'/><category term='rename'/><category term='verify_function_11G'/><category term='disk setup'/><category term='resouce manager'/><category term='gets'/><category term='blog'/><category term='ORA-01408'/><category term='lob'/><category term='ORA-14038'/><category term='mode'/><category term='feature'/><category term='languages'/><category term='log_archive_dest_1'/><category term='weekly'/><category term='rman'/><category term='dgmgrl'/><category term='virtual column based partitioning'/><category term='password'/><category term='356363.1'/><category term='data guard'/><category term='barefoot'/><category term='profile'/><title type='text'>Apun's Weblog</title><subtitle type='html'>My Belief - 
Life should NOT be a journey to the grave with the intention of arriving safely in an attractive and well preserved body, but rather to skid in sideways, strawberries in one hand, champagne in the other, body thoroughly used up, totally worn out and screaming "WOO HOO what a ride!"</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://apunhiran.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://apunhiran.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Apun Hiran</name><uri>http://www.blogger.com/profile/04745021360458270341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_viek7Sw5RrM/R_yAZoPGqYI/AAAAAAAAAIM/eS3VxJ7S2Pc/S220/IMG_0042.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>69</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4092304359380397372.post-8671180010495522449</id><published>2011-12-01T06:24:00.002+05:30</published><updated>2011-12-01T06:26:06.610+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='get_ddl'/><category scheme='http://www.blogger.com/atom/ns#' term='dbms_metadata'/><category scheme='http://www.blogger.com/atom/ns#' term='ORA-31603'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>dbms_metadata.get_ddl &amp; ORA-31603</title><content type='html'>I wanted to allow a database user/schema called TEST (other than user with SYSDBA privileges) to have privileges to run dbms_metadata.get_ddl for any object in the database. Basically for other schemas in the database. Even though I provided execute privileges on the package and even DBA privilege to the user it still gave:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;16:37:39 SQL&gt; select dbms_metadata.get_ddl('PACKAGE','PACK1','SCOTT') from dual;&lt;br /&gt;ERROR:&lt;br /&gt;ORA-31603: object "PACK1" of type PACKAGE not found in schema "SCOTT"&lt;br /&gt;ORA-06512: at "SYS.DBMS_SYS_ERROR", line 105&lt;br /&gt;ORA-06512: at "SYS.DBMS_METADATA", line 3912&lt;br /&gt;ORA-06512: at "SYS.DBMS_METADATA", line 5678&lt;br /&gt;ORA-06512: at line 1&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;The privileges required to allow a user/schema (TEST) to be able to run the package are:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;grant SELECT_CATALOG_ROLE to TEST;&lt;br /&gt;The most important steps is:&lt;br /&gt;ALTER USER TEST DEFAULT ROLE SELECT_CATALOG_ROLE;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Just by granting SELECT_CATALOG_ROLE to the user/schema you would still get ORA-31603.&lt;br /&gt;So we must alter the user and make SELECT_CATALOG_ROLE as its default role.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4092304359380397372-8671180010495522449?l=apunhiran.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apunhiran.blogspot.com/feeds/8671180010495522449/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4092304359380397372&amp;postID=8671180010495522449' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/8671180010495522449'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/8671180010495522449'/><link rel='alternate' type='text/html' href='http://apunhiran.blogspot.com/2011/12/dbmsmetadatagetddl-ora-31603.html' title='dbms_metadata.get_ddl &amp; ORA-31603'/><author><name>Apun Hiran</name><uri>http://www.blogger.com/profile/04745021360458270341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_viek7Sw5RrM/R_yAZoPGqYI/AAAAAAAAAIM/eS3VxJ7S2Pc/S220/IMG_0042.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4092304359380397372.post-3884497112936216069</id><published>2011-09-01T02:49:00.000+05:30</published><updated>2011-09-01T02:49:28.382+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='11gr2'/><category scheme='http://www.blogger.com/atom/ns#' term='OCR'/><category scheme='http://www.blogger.com/atom/ns#' term='Voting Disk'/><category scheme='http://www.blogger.com/atom/ns#' term='ocrconfig'/><category scheme='http://www.blogger.com/atom/ns#' term='move'/><category scheme='http://www.blogger.com/atom/ns#' term='ASM'/><title type='text'>How to Move OCR and Voting Disk to ASM Diskgroup in 11gR2</title><content type='html'>&lt;b&gt;Case:&lt;/b&gt; Moving to Redhat Linux 5/Oracle Enterprise Linux 5, which does not support Raw filesytem.Steps: (these steps can be performanced on 11gR2)&lt;b&gt;1.) Check the current location of ocr file:&lt;/b&gt;&lt;pre&gt;&lt;br /&gt;[root@host1 bin]# ocrcheck&lt;br /&gt;Status of Oracle Cluster Registry is as follows :&lt;br /&gt;	 Version                  :          3&lt;br /&gt;	 Total space (kbytes)     :     262120&lt;br /&gt;	 Used space (kbytes)      :       3004&lt;br /&gt;	 Available space (kbytes) :     259116&lt;br /&gt;	 ID                       :  798462606&lt;br /&gt;	 Device/File Name         : /mnt/cludata/ocrfile&lt;br /&gt;                                    Device/File integrity check succeeded&lt;br /&gt;                                    Device/File not configured&lt;br /&gt;                                    Device/File not configured&lt;br /&gt;                                    Device/File not configured&lt;br /&gt;                                    Device/File not configured&lt;br /&gt;	 Cluster registry integrity check succeeded&lt;br /&gt;	 Logical corruption check succeeded&lt;br /&gt;&lt;/pre&gt;2.) &lt;b&gt;Add a Mirror OCR location&lt;/b&gt; else you might encounter error :PROT-28: Cannot delete or replace the only configured Oracle Cluster Registry location	&lt;br&gt;&lt;b&gt;i.) Create the file (as root) &lt;/b&gt; &lt;br&gt;&lt;pre&gt;&lt;br /&gt;cp /dev/null /mnt/cludata/ocrmirror &lt;br /&gt;chown root:dba /mnt/cludata/ocrmirror &lt;br /&gt;chmod 640 /mnt/cludata/ocrmirror&lt;br /&gt;[root@host1 cludata]# pwd&lt;br /&gt;/rmanbkp1/cludata&lt;br /&gt;[root@host1 cludata]# ls -lrt&lt;br /&gt;total 23784&lt;br /&gt;-rw-r----- 1 root   dba 272756736 Aug 31 12:37 ocrfile&lt;br /&gt;-rw-r----- 1 root   dba         0 Aug 31 13:12 ocrmirror&lt;br /&gt;-rw-r----- 1 oracle dba  21004288 Aug 31 13:12 cssfile&lt;br /&gt;&lt;/pre&gt; &lt;br&gt;&lt;b&gt;ii.) Add the mirror OCR file&lt;/b&gt;&lt;br&gt;&lt;pre&gt;&lt;br /&gt;[root@host1 cludata]# ocrconfig -add /rmanbkp1/cludata/ocrmirror&lt;br /&gt;[root@host1 cludata]# ocrcheck&lt;br /&gt;Status of Oracle Cluster Registry is as follows :&lt;br /&gt;	 Version                  :          3&lt;br /&gt;	 Total space (kbytes)     :     262120&lt;br /&gt;	 Used space (kbytes)      :       3004&lt;br /&gt;	 Available space (kbytes) :     259116&lt;br /&gt;	 ID                       :  798462606&lt;br /&gt;	 Device/File Name         : /mnt/cludata/ocrfile&lt;br /&gt;                                    Device/File integrity check succeeded&lt;br /&gt;	 Device/File Name         : /mnt/cludata/ocrmirror&lt;br /&gt;                                    Device/File integrity check succeeded&lt;br /&gt;                                    Device/File not configured&lt;br /&gt;                                    Device/File not configured&lt;br /&gt;                                    Device/File not configured&lt;br /&gt;	 Cluster registry integrity check succeeded&lt;br /&gt;	 Logical corruption check succeeded&lt;br /&gt;&lt;/pre&gt;&lt;b&gt;3.) Check ASM Diskgroup compatibility (login as sqlplus / as sysasm)&lt;/b&gt;&lt;pre&gt;&lt;br /&gt;col name format a10&lt;br /&gt;col COMPATIBILITY format a20&lt;br /&gt;col DATABASE_COMPATIBILITY format a20&lt;br /&gt;select name,COMPATIBILITY,DATABASE_COMPATIBILITY from v$asm_diskgroup;&lt;br /&gt;&lt;br /&gt;NAME	   COMPATIBILITY	DATABASE_COMPATIBILI&lt;br /&gt;---------- -------------------- --------------------&lt;br /&gt;DG_ARCH01  10.1.0.0.0		10.1.0.0.0&lt;br /&gt;DG_SYS01   10.1.0.0.0		10.1.0.0.0&lt;br /&gt;DG_TEMP01  10.1.0.0.0		10.1.0.0.0&lt;br /&gt;DG_DATA01 10.1.0.0.0		10.1.0.0.0&lt;br /&gt;&lt;/pre&gt;&lt;b&gt;4.) Upgrade the compatibility to 11.2&lt;/b&gt;compatible.asm&lt;pre&gt;&lt;br /&gt;SQL&gt; alter diskgroup DG_ARCH01 set attribute 'compatible.asm'='11.2';&lt;br /&gt;Diskgroup altered.&lt;br /&gt;SQL&gt; alter diskgroup DG_SYS01 set attribute 'compatible.asm'='11.2';&lt;br /&gt;Diskgroup altered.&lt;br /&gt;SQL&gt; alter diskgroup DG_TEMP01 set attribute 'compatible.asm'='11.2';&lt;br /&gt;Diskgroup altered.&lt;br /&gt;SQL&gt; alter diskgroup DG_DATA01 set attribute 'compatible.asm'='11.2';&lt;br /&gt;Diskgroup altered.&lt;br /&gt;&lt;br /&gt;SQL&gt; select name,COMPATIBILITY,DATABASE_COMPATIBILITY from v$asm_diskgroup;&lt;br /&gt;NAME	   COMPATIBILITY	DATABASE_COMPATIBILI&lt;br /&gt;---------- -------------------- --------------------&lt;br /&gt;DG_ARCH01  11.2.0.0.0		10.1.0.0.0&lt;br /&gt;DG_SYS01   11.2.0.0.0		10.1.0.0.0&lt;br /&gt;DG_TEMP01  11.2.0.0.0		10.1.0.0.0&lt;br /&gt;DG_DATA01 11.2.0.0.0		10.1.0.0.0&lt;br /&gt;&lt;/pre&gt;Update compatible.rdbms&lt;pre&gt;&lt;br /&gt;SQL&gt; alter diskgroup DG_ARCH01 set attribute 'compatible.rdbms'='11.2';&lt;br /&gt;Diskgroup altered.&lt;br /&gt;SQL&gt; alter diskgroup DG_SYS01 set attribute 'compatible.rdbms'='11.2';&lt;br /&gt;Diskgroup altered.&lt;br /&gt;SQL&gt; alter diskgroup DG_TEMP01 set attribute 'compatible.rdbms'='11.2';&lt;br /&gt;Diskgroup altered.&lt;br /&gt;SQL&gt; alter diskgroup DG_DATA01 set attribute 'compatible.rdbms'='11.2';&lt;br /&gt;Diskgroup altered.&lt;br /&gt;&lt;br /&gt;SQL&gt; select name,COMPATIBILITY,DATABASE_COMPATIBILITY from v$asm_diskgroup;&lt;br /&gt;NAME	   COMPATIBILITY	DATABASE_COMPATIBILI&lt;br /&gt;---------- -------------------- --------------------&lt;br /&gt;DG_ARCH01  11.2.0.0.0		11.2.0.0.0&lt;br /&gt;DG_SYS01   11.2.0.0.0		11.2.0.0.0&lt;br /&gt;DG_TEMP01  11.2.0.0.0		11.2.0.0.0&lt;br /&gt;DG_DATA01 11.2.0.0.0		11.2.0.0.0&lt;br /&gt;&lt;/pre&gt;&lt;b&gt;5.) Move OCR file to ASM:&lt;/b&gt;&lt;pre&gt;&lt;br /&gt;ocrconfig -replace /rmanbkp1/cludata/ocrfile -replacement +DG_ARCH01&lt;br /&gt;ocrconfig -replace /rmanbkp1/cludata/ocrmirror -replacement +DG_SYS01&lt;br /&gt;&lt;/pre&gt;&lt;b&gt;6.) Check OCR:&lt;/b&gt;&lt;pre&gt;&lt;br /&gt;[root@host1 cludata]# ocrcheck&lt;br /&gt;Status of Oracle Cluster Registry is as follows :&lt;br /&gt;	 Version                  :          3&lt;br /&gt;	 Total space (kbytes)     :     262120&lt;br /&gt;	 Used space (kbytes)      :       3004&lt;br /&gt;	 Available space (kbytes) :     259116&lt;br /&gt;	 ID                       :  798462606&lt;br /&gt;	 Device/File Name         : +DG_ARCH01&lt;br /&gt;                                    Device/File integrity check succeeded&lt;br /&gt;	 Device/File Name         :  +DG_SYS01&lt;br /&gt;                                    Device/File integrity check succeeded&lt;br /&gt;                                    Device/File not configured&lt;br /&gt;                                    Device/File not configured&lt;br /&gt;                                    Device/File not configured&lt;br /&gt;	 Cluster registry integrity check succeeded&lt;br /&gt;	 Logical corruption check succeeded&lt;br /&gt;&lt;/pre&gt;&lt;b&gt;7.) Restart CRS to check if it comes back fine.&lt;/b&gt;&lt;br&gt;NOTE: You will not be able to stop just ASM now, as the OCR file is in ASM&lt;br&gt;&lt;b&gt;8.) Check OCR:( as oracle user )&lt;/b&gt;&lt;pre&gt;&lt;br /&gt;[oracle@host1]~% /home/oragrid/product/11.2/bin/cluvfy comp ocr -n all -verbose&lt;br /&gt;&lt;br /&gt;Verifying OCR integrity &lt;br /&gt;&lt;br /&gt;Checking OCR integrity...&lt;br /&gt;&lt;br /&gt;Checking the absence of a non-clustered configuration...&lt;br /&gt;All nodes free of non-clustered, local-only configurations&lt;br /&gt;&lt;br /&gt;ASM Running check passed. ASM is running on all cluster nodes&lt;br /&gt;&lt;br /&gt;Checking OCR config file "/etc/oracle/ocr.loc"...&lt;br /&gt;&lt;br /&gt;OCR config file "/etc/oracle/ocr.loc" check successful&lt;br /&gt;&lt;br /&gt;Disk group for ocr location "+DG_SYS01" available on all the nodes&lt;br /&gt;&lt;br /&gt;Disk group for ocr location "+DG_ARCH01" available on all the nodes&lt;br /&gt;&lt;br /&gt;Checking size of the OCR location "+DG_SYS01" ...&lt;br /&gt;&lt;br /&gt;Size check for OCR location "+DG_SYS01" successful...&lt;br /&gt;Size check for OCR location "+DG_SYS01" successful...&lt;br /&gt;Size check for OCR location "+DG_SYS01" successful...&lt;br /&gt;Size check for OCR location "+DG_SYS01" successful...&lt;br /&gt;&lt;br /&gt;Checking size of the OCR location "+DG_ARCH01" ...&lt;br /&gt;&lt;br /&gt;Size check for OCR location "+DG_ARCH01" successful...&lt;br /&gt;Size check for OCR location "+DG_ARCH01" successful...&lt;br /&gt;Size check for OCR location "+DG_ARCH01" successful...&lt;br /&gt;Size check for OCR location "+DG_ARCH01" successful...&lt;br /&gt;&lt;br /&gt;WARNING: &lt;br /&gt;This check does not verify the integrity of the OCR contents. Execute 'ocrcheck' as a privileged user to verify the contents of OCR.&lt;br /&gt;&lt;br /&gt;OCR integrity check passed&lt;br /&gt;&lt;br /&gt;Verification of OCR integrity was successful. &lt;br /&gt;&lt;/pre&gt;&lt;b&gt;9.) Move Voting disk now&lt;/b&gt;&lt;pre&gt;&lt;br /&gt;[root@host1 cludata]# crsctl replace votedisk +DG_ARCH01&lt;br /&gt;CRS-4256: Updating the profile&lt;br /&gt;Successful addition of voting disk aa5d2a1024384faebf3f2c108e6b203a                                                                                                                                                                                                                                .&lt;br /&gt;Successful deletion of voting disk 253472991d324fb9bfab1f1301385697.&lt;br /&gt;Successfully replaced voting disk group with +DG_ARCH01.&lt;br /&gt;CRS-4256: Updating the profile&lt;br /&gt;CRS-4266: Voting file(s) successfully replaced&lt;br /&gt;&lt;/pre&gt;&lt;b&gt;10.) Check Voting Disk:&lt;/b&gt;&lt;pre&gt;&lt;br /&gt;[root@host1 cludata]# crsctl query css votedisk&lt;br /&gt;##  STATE    File Universal Id                File Name Disk group&lt;br /&gt;--  -----    -----------------                --------- ---------&lt;br /&gt; 1. ONLINE   aa5d2a1024384faebf3f2c108e6b203a (ORCL:DISK2) [DG_ARCH01]&lt;br /&gt;Located 1 voting disk(s).&lt;br /&gt;[root@host1 cludata]# crsctl check crs&lt;br /&gt;CRS-4638: Oracle High Availability Services is online&lt;br /&gt;CRS-4537: Cluster Ready Services is online&lt;br /&gt;CRS-4529: Cluster Synchronization Services is online&lt;br /&gt;CRS-4533: Event Manager is online&lt;br /&gt;&lt;/pre&gt;&lt;b&gt;11.) Check contents of ocr.loc file&lt;/b&gt;&lt;pre&gt;&lt;br /&gt;[root@host1 cludata]# more /etc/oracle/ocr.loc&lt;br /&gt;#Device/file /mnt/cludata/ocrmirror getting replaced by device +DG_SYS01 &lt;br /&gt;ocrconfig_loc=+DG_ARCH01&lt;br /&gt;ocrmirrorconfig_loc=+DG_SYS01&lt;br /&gt;local_only=false&lt;br /&gt;&lt;/pre&gt;ALL LOOKS GOOD NOW !!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4092304359380397372-3884497112936216069?l=apunhiran.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apunhiran.blogspot.com/feeds/3884497112936216069/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4092304359380397372&amp;postID=3884497112936216069' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/3884497112936216069'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/3884497112936216069'/><link rel='alternate' type='text/html' href='http://apunhiran.blogspot.com/2011/09/how-to-move-ocr-and-voting-disk-to-asm.html' title='How to Move OCR and Voting Disk to ASM Diskgroup in 11gR2'/><author><name>Apun Hiran</name><uri>http://www.blogger.com/profile/04745021360458270341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_viek7Sw5RrM/R_yAZoPGqYI/AAAAAAAAAIM/eS3VxJ7S2Pc/S220/IMG_0042.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4092304359380397372.post-6662689588535106857</id><published>2011-07-21T07:07:00.003+05:30</published><updated>2011-07-21T07:12:10.143+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='dbnewid'/><category scheme='http://www.blogger.com/atom/ns#' term='nid'/><category scheme='http://www.blogger.com/atom/ns#' term='rename database'/><category scheme='http://www.blogger.com/atom/ns#' term='rename'/><category scheme='http://www.blogger.com/atom/ns#' term='change'/><category scheme='http://www.blogger.com/atom/ns#' term='RAC'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Oracle: Rename single/RAC Database</title><content type='html'>&lt;span style="font-weight:bold;"&gt;Method 1:&lt;/span&gt; Recreate control file with the new DB name, the old tried and tested method.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Method 2:&lt;/span&gt; Use new utility called NID&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Steps to rename Databases using the new NID utility:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;1.) Stop database&lt;/span&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;[oracle@testing1]~% srvctl status database -d test&lt;br /&gt;Instance test1 is running on node testing1&lt;br /&gt;Instance test2 is running on node testing2&lt;br /&gt;&lt;br /&gt;srvctl stop database -d test&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;2.) startup mount the database:&lt;/span&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;[oracle@testing1]~% sqlplus / as sysdba&lt;br /&gt;&lt;br /&gt;SQL*Plus: Release 11.2.0.2.0 Production on Thu Jul 21 00:50:44 2011&lt;br /&gt;Copyright (c) 1982, 2010, Oracle.  All rights reserved.&lt;br /&gt;Connected to an idle instance.&lt;br /&gt;SQL&gt; startup mount&lt;br /&gt;ORACLE instance started.&lt;br /&gt;&lt;br /&gt;Total System Global Area 1.2527E+10 bytes&lt;br /&gt;Fixed Size      2238104 bytes&lt;br /&gt;Variable Size   8120174952 bytes&lt;br /&gt;Database Buffers  4294967296 bytes&lt;br /&gt;Redo Buffers    109346816 bytes&lt;br /&gt;Database mounted.&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;3.) Exit and run the "nid" utility&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;nid sys/oracle@test DBNAME=new&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;[oracle@testing1]~% nid sys/m4gent4 DBNAME=new   &lt;br /&gt;&lt;br /&gt;DBNEWID: Release 11.2.0.2.0 - Production on Thu Jul 21 00:55:12 2011&lt;br /&gt;&lt;br /&gt;Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.&lt;br /&gt;&lt;br /&gt;NID-00002: Parse error: LRM-00108: invalid positional parameter value 'sys/m4gent4'&lt;br /&gt;&lt;br /&gt;Change of database ID failed during validation - database is intact.&lt;br /&gt;DBNEWID - Completed with validation errors.&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Correct the syntax:&lt;br /&gt;nid target=sys/oracle@test DBNAME=new&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;[oracle@testing1]~% nid target=sys/m4gent4 DBNAME=new&lt;br /&gt;&lt;br /&gt;DBNEWID: Release 11.2.0.2.0 - Production on Thu Jul 21 00:56:04 2011&lt;br /&gt;&lt;br /&gt;Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.&lt;br /&gt;&lt;br /&gt;Connected to database test (DBID=3952648861)&lt;br /&gt;&lt;br /&gt;NID-00120: Database should be mounted exclusively&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Change of database name failed during validation - database is intact.&lt;br /&gt;DBNEWID - Completed with validation errors.&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Incase of RAC, we need to set cluster_database=FALSE to change DB name. Then stop and mount the DB again.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;SQL&gt; alter system set cluster_database=FALSE scope=spfile;&lt;br /&gt;&lt;br /&gt;System altered.&lt;br /&gt;&lt;br /&gt;SQL&gt; shutdown immediate;&lt;br /&gt;ORA-01109: database not open&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Database dismounted.&lt;br /&gt;ORACLE instance shut down.&lt;br /&gt;SQL&gt; startup mount&lt;br /&gt;ORACLE instance started.&lt;br /&gt;&lt;br /&gt;Total System Global Area 1.2527E+10 bytes&lt;br /&gt;Fixed Size      2238104 bytes&lt;br /&gt;Variable Size   8120174952 bytes&lt;br /&gt;Database Buffers  4294967296 bytes&lt;br /&gt;Redo Buffers    109346816 bytes&lt;br /&gt;Database mounted.&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;nid target=sys/oracle@test DBNAME=new&lt;/span&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;[oracle@testing1]~% nid target=sys/m4gent4 DBNAME=new&lt;br /&gt;&lt;br /&gt;DBNEWID: Release 11.2.0.2.0 - Production on Thu Jul 21 00:59:54 2011&lt;br /&gt;&lt;br /&gt;Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.&lt;br /&gt;&lt;br /&gt;Connected to database test (DBID=3952648861)&lt;br /&gt;&lt;br /&gt;Connected to server version 11.2.0&lt;br /&gt;&lt;br /&gt;Control Files in database:&lt;br /&gt;    +DG_SYS01/test/control01.ctl&lt;br /&gt;    +DG_DATA01/test/control02.ctl&lt;br /&gt;&lt;br /&gt;Change database ID and database name test to NEW? (Y/[N]) =&gt; Y&lt;br /&gt;&lt;br /&gt;Proceeding with operation&lt;br /&gt;Changing database ID from 3952648861 to 388598347&lt;br /&gt;Changing database name from test to NEW&lt;br /&gt;    Control File +DG_SYS01/test/control01.ctl - modified&lt;br /&gt;    Control File +DG_DATA01/test/control02.ctl - modified&lt;br /&gt;    Datafile +DG_SYS01/test/datafile/system.261.75517911 - dbid changed, wrote new name&lt;br /&gt;    Datafile +DG_SYS01/test/datafile/sysaux.262.75517911 - dbid changed, wrote new name&lt;br /&gt;    Datafile +DG_DATA01/test/datafile/undotbs1.258.75518469 - dbid changed, wrote new name&lt;br /&gt;    Datafile +DG_DATA01/test/datafile/undotbs2.260.75518577 - dbid changed, wrote new name&lt;br /&gt;    Datafile +DG_DATA01/test/datafile/users.257.75518565 - dbid changed, wrote new name&lt;br /&gt;    Control File +DG_SYS01/test/control01.ctl - dbid changed, wrote new name&lt;br /&gt;    Control File +DG_DATA01/test/control02.ctl - dbid changed, wrote new name&lt;br /&gt;    Instance shut down&lt;br /&gt;&lt;br /&gt;Database name changed to NEW.&lt;br /&gt;Modify parameter file and generate a new password file before restarting.&lt;br /&gt;Database ID for database NEW changed to 388598347.&lt;br /&gt;All previous backups and archived redo logs for this database are unusable.&lt;br /&gt;Database has been shutdown, open database with RESETLOGS option.&lt;br /&gt;Succesfully changed database name and ID.&lt;br /&gt;DBNEWID - Completed succesfully.&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;4.) Copy the old inittest1.ora as initnew1.ora, update the DB_NAME, instance_name parameter to reflect the new name.&lt;br /&gt;Then startup mount&lt;/span&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;SQL&gt; startup mount pfile='/home/oracle/software/dbcreate/test/inittest1.ora' &lt;br /&gt;ORACLE instance started.&lt;br /&gt;&lt;br /&gt;Total System Global Area 1.2527E+10 bytes&lt;br /&gt;Fixed Size      2238104 bytes&lt;br /&gt;Variable Size   8120174952 bytes&lt;br /&gt;Database Buffers  4294967296 bytes&lt;br /&gt;Redo Buffers    109346816 bytes&lt;br /&gt;Database mounted.&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;5.) Resetlog open the database. &lt;/span&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;SQL&gt; ALTER DATABASE OPEN RESETLOGS;&lt;br /&gt;Database altered.&lt;br /&gt;&lt;br /&gt;SQL&gt; select open_mode from v$database;&lt;br /&gt;&lt;br /&gt;OPEN_MODE&lt;br /&gt;--------------------&lt;br /&gt;READ WRITE&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;6.) Create spfile&lt;/span&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;SQL&gt; create spfile='+DG_SYS01/NEW/spfileNEW.ora' from pfile='/home/oracle/software/dbcreate/test/inittest1.ora';&lt;br /&gt;&lt;br /&gt;File created.&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;NOTE: For single node DB, steps are over. Step 7 for RAC only.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;7.) Add DB to the cluster&lt;/span&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;[oracle@testing1]~/software/dbcreate/test% srvctl add database -d NEW -o /home/oracle/product/11.2 -r primary -s OPEN -p +DG_SYS01/NEW/spfileNEW.ora&lt;br /&gt;[oracle@testing1]~/software/dbcreate/test% srvctl add instance -d NEW -i NEW1 -n testing1&lt;br /&gt;[oracle@testing1]~/software/dbcreate/test% srvctl add instance -d NEW -i NEW2 -n testing2&lt;br /&gt;[oracle@testing1]~/software/dbcreate/test% srvctl config database -d NEW -a&lt;br /&gt;Database unique name: NEW&lt;br /&gt;Database name: &lt;br /&gt;Oracle home: /home/oracle/product/11.2&lt;br /&gt;Oracle user: oracle&lt;br /&gt;Spfile: +DG_SYS01/NEW/spfileNEW.ora&lt;br /&gt;Domain: &lt;br /&gt;Start options: open&lt;br /&gt;Stop options: immediate&lt;br /&gt;Database role: PRIMARY&lt;br /&gt;Management policy: AUTOMATIC&lt;br /&gt;Server pools: NEW&lt;br /&gt;Database instances: NEW1,NEW2&lt;br /&gt;Disk Groups: &lt;br /&gt;Mount point paths: &lt;br /&gt;Services: &lt;br /&gt;Type: RAC&lt;br /&gt;Database is enabled&lt;br /&gt;Database is administrator managed&lt;br /&gt;[oracle@testing1]~/software/dbcreate/test% vi inittest1.ora &lt;br /&gt;[oracle@testing1]~/software/dbcreate/test% srvctl start database -d NEW&lt;br /&gt;[oracle@testing1]~/software/dbcreate/test% srvctl status database -d NEW&lt;br /&gt;Instance NEW1 is running on node testing1&lt;br /&gt;Instance NEW2 is running on node testing2&lt;br /&gt;&lt;br /&gt; INST_ID INSTANCE_NAM      HOST_NAME  STATUS     STARTED     VERSION&lt;br /&gt;-------- ------------------------- ----------------------------------- ---------- &lt;br /&gt;   1     new1         testing1   OPEN       20 Jul 18:25:20    11.2.0.2.0&lt;br /&gt;   2     new2         testing2   OPEN       20 Jul 18:25:22    11.2.0.2.0&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4092304359380397372-6662689588535106857?l=apunhiran.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apunhiran.blogspot.com/feeds/6662689588535106857/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4092304359380397372&amp;postID=6662689588535106857' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/6662689588535106857'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/6662689588535106857'/><link rel='alternate' type='text/html' href='http://apunhiran.blogspot.com/2011/07/oracle-rename-singlerac-database.html' title='Oracle: Rename single/RAC Database'/><author><name>Apun Hiran</name><uri>http://www.blogger.com/profile/04745021360458270341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_viek7Sw5RrM/R_yAZoPGqYI/AAAAAAAAAIM/eS3VxJ7S2Pc/S220/IMG_0042.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4092304359380397372.post-108738353914468544</id><published>2011-05-19T05:13:00.001+05:30</published><updated>2011-05-19T05:15:16.281+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='wait for unread message on broadcast channel'/><category scheme='http://www.blogger.com/atom/ns#' term='impdp'/><title type='text'>IMPDP Stuck with wait event - "wait for unread message on broadcast channel"</title><content type='html'>I was trying to run data import using impdp and the job was stuck with wait event "wait for unread message on broadcast channel".&lt;br /&gt;This is an idle wait event as per oracle, that means oracle is waiting for something to happen for the session to proceed.&lt;br /&gt;&lt;br /&gt;I googled and checked metalink but couldn't really find a solution and my job was stuck indefinitely.&lt;br /&gt;From one of the forums online I figured out an old defunct job in the DB can cause new impdp sessions to be stuck.&lt;br /&gt;&lt;br /&gt;Hence I queried dba_datapump_jobs and found out that I have an old job in "NOT RUNNING" state:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;SQL&gt; select * from dba_datapump_jobs;&lt;br /&gt;&lt;br /&gt;OWNER_NAME   JOB_NAME                       OPERATION    JOB_MODE     STATE                     DEGREE ATTACHED_SESSIONS DATAPUMP_SESSIONS&lt;br /&gt;------------ ------------------------------ ------------ ------------ ------------------- ------------ ----------------- -----------------&lt;br /&gt;SYSTEM       NEW1                           IMPORT       TABLE        EXECUTING                      4                 1                 3&lt;br /&gt;SYSTEM       SYS_IMPORT_FULL_01             IMPORT       FULL         NOT RUNNING                    0                 0                 0&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Checked to find the underlying object:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;SQL&gt; SELECT a.object_id, a.object_type, a.owner, a.object_name, a.status&lt;br /&gt;  FROM dba_objects a, dba_datapump_jobs j&lt;br /&gt; WHERE a.owner=j.owner_name AND a.object_name=j.job_name&lt;br /&gt; and j.job_name='SYS_IMPORT_FULL_01';&lt;br /&gt;&lt;br /&gt;    OBJECT_ID OBJECT_TYPE         OWNER                OBJECT_NAME            STATUS&lt;br /&gt;------------ ------------------- -------------------- ---------------------- -------&lt;br /&gt;     984119  TABLE               SYSTEM               SYS_IMPORT_FULL_01      VALID&lt;br /&gt;&lt;br /&gt;15:02:47 SQL&gt; select owner,object_name,subobject_name, object_type,last_ddl_time from dba_objects where object_id=984119&lt;br /&gt;/&lt;br /&gt;&lt;br /&gt;OWNER                OBJECT_NAME                              SUBOBJECT_NAME                 OBJECT_TYPE         LAST_DDL_TIME&lt;br /&gt;-------------------- ---------------------------------------- ------------------------------ ------------------- -------------------&lt;br /&gt;SYSTEM               SYS_IMPORT_FULL_01                                                      TABLE               13-08-2010 19:59:50&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Dropped the datapump job table:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;15:02:59 SQL&gt; drop table SYSTEM.SYS_IMPORT_FULL_01;&lt;br /&gt;&lt;br /&gt;Table dropped.&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;And then my impdp job "NEW1" started progressing:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;15:04:03 SQL&gt; select * from dba_datapump_jobs;&lt;br /&gt;&lt;br /&gt;OWNER_NAME   JOB_NAME                       OPERATION    JOB_MODE     STATE                     DEGREE ATTACHED_SESSIONS DATAPUMP_SESSIONS&lt;br /&gt;------------ ------------------------------ ------------ ------------ ------------------- ------------ ----------------- -----------------&lt;br /&gt;SYSTEM       NEW1                           IMPORT       TABLE        EXECUTING                      4                 1                 6&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;NOTE:&lt;/span&gt; Please make sure that the old job is NOT RUNNING.&lt;br /&gt;Secondly, if its a known job you can also try to:&lt;br /&gt;impdp username/password attach=JOB_NAME&lt;br /&gt;and then at the IMPDP prompt do a kill_job. This should also clear the jobs status from dba_datapump_jobs.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4092304359380397372-108738353914468544?l=apunhiran.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apunhiran.blogspot.com/feeds/108738353914468544/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4092304359380397372&amp;postID=108738353914468544' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/108738353914468544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/108738353914468544'/><link rel='alternate' type='text/html' href='http://apunhiran.blogspot.com/2011/05/impdp-stuck-with-wait-event-wait-for.html' title='IMPDP Stuck with wait event - &quot;wait for unread message on broadcast channel&quot;'/><author><name>Apun Hiran</name><uri>http://www.blogger.com/profile/04745021360458270341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_viek7Sw5RrM/R_yAZoPGqYI/AAAAAAAAAIM/eS3VxJ7S2Pc/S220/IMG_0042.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4092304359380397372.post-4379803848333173882</id><published>2011-01-27T00:47:00.007+05:30</published><updated>2011-02-09T05:06:06.941+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='drop mview'/><category scheme='http://www.blogger.com/atom/ns#' term='materialized view'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Drop Materialized View takes a long time</title><content type='html'>Recently I had to drop a couple of large Materialized View.&lt;br /&gt;And dropping them was taking a long time, as it tries to drop the data in both source and destination DB. In Source DB it tries to purge the mview log and at destination mview itself.&lt;br /&gt;To accelerate the process I tried truncating the mview tables at destination and also the mview log table at source.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;At destination (mview site):&lt;/span&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;truncate table mview_to_drop;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;At source (mview log site):&lt;/span&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;select master,log_table from dba_mview_logs where master='MVIEW_TO_DROP';&lt;br /&gt;LOG_OWNER     MASTER                    LOG_TABLE&lt;br /&gt;------------ ------------------------------ ------------------------------&lt;br /&gt;SCOTT         MVIEW_TO_DROP             MLOG$_MVIEW_TO_DROP&lt;br /&gt;&lt;br /&gt;truncate table SCOTT.MLOG$_MVIEW_TO_DROP;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Now back at destination site:&lt;/span&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;drop materialized view SCOTT.MVIEW_TO_DROP;&lt;br /&gt;&lt;br /&gt;Materialized view dropped.&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;This is the fastest way I could find, please let me know if anyone else has any ideas.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4092304359380397372-4379803848333173882?l=apunhiran.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apunhiran.blogspot.com/feeds/4379803848333173882/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4092304359380397372&amp;postID=4379803848333173882' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/4379803848333173882'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/4379803848333173882'/><link rel='alternate' type='text/html' href='http://apunhiran.blogspot.com/2011/01/drop-materialized-view-takes-long-time.html' title='Drop Materialized View takes a long time'/><author><name>Apun Hiran</name><uri>http://www.blogger.com/profile/04745021360458270341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_viek7Sw5RrM/R_yAZoPGqYI/AAAAAAAAAIM/eS3VxJ7S2Pc/S220/IMG_0042.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4092304359380397372.post-5212694521006390732</id><published>2011-01-14T04:41:00.002+05:30</published><updated>2011-01-14T04:46:42.662+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='cpu'/><category scheme='http://www.blogger.com/atom/ns#' term='create_plan_directive'/><category scheme='http://www.blogger.com/atom/ns#' term='create_plan'/><category scheme='http://www.blogger.com/atom/ns#' term='resouce manager'/><category scheme='http://www.blogger.com/atom/ns#' term='dop'/><category scheme='http://www.blogger.com/atom/ns#' term='dbms_resource_manager'/><category scheme='http://www.blogger.com/atom/ns#' term='create_consumer_group'/><category scheme='http://www.blogger.com/atom/ns#' term='setup'/><category scheme='http://www.blogger.com/atom/ns#' term='parallel'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>How to Setup Resource Manager to Control DB Resources</title><content type='html'>Step By Step Setup:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Step 1: Create a work area for creation/modification of resource manager objects.&lt;/span&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;SQL&gt; exec dbms_resource_manager.create_pending_area();  &lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Step 2: Create Resource Manager PLAN&lt;/span&gt;&lt;br /&gt;&lt;code&gt; &lt;br /&gt;SQL&gt; exec dbms_resource_manager.create_plan(plan =&gt; 'PLAN_NAME', comment =&gt; 'Comments abt the plan');  &lt;br /&gt;e.g.&lt;br /&gt;SQL&gt; exec dbms_resource_manager.create_plan( plan =&gt; 'ETL_PLAN', comment =&gt; 'PLAN for ETL processes');  &lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Step 3: Create a consumer group which to which the PLAN details would be assigned&lt;/span&gt;&lt;br /&gt;&lt;code&gt; &lt;br /&gt;SQL&gt; exec dbms_resource_manager.create_consumer_group ( consumer_group =&gt; 'COUNSUMER_GROUP_NAME' , comment =&gt;'Comments abt the consumer_group'); &lt;br /&gt;&lt;br /&gt;e.g.&lt;br /&gt;SQL&gt; exec dbms_resource_manager.create_consumer_group ( consumer_group =&gt; 'ETL_GROUP' , comment =&gt;'Check Max Degree of parallelism for ETL process'); &lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Step 4: Assign the Consumer group to the Resource Plan created and define the resource limits&lt;br /&gt;&lt;/span&gt;&lt;code&gt; &lt;br /&gt;SQL&gt; exec dbms_resource_manager.create_plan_directive( plan =&gt; 'ETL_PLAN',      &lt;br /&gt;              group_or_subplan =&gt; 'ETL_GROUP',&lt;br /&gt;              comment =&gt; '',&lt;br /&gt;              cpu_p1 =&gt; NULL,&lt;br /&gt;              cpu_p2 =&gt; NULL,&lt;br /&gt;              cpu_p3 =&gt; NULL,&lt;br /&gt;              cpu_p4 =&gt; NULL,&lt;br /&gt;              cpu_p5 =&gt; NULL,&lt;br /&gt;              cpu_p6 =&gt; NULL,&lt;br /&gt;              cpu_p7 =&gt; NULL,&lt;br /&gt;              cpu_p8 =&gt; NULL,&lt;br /&gt;              parallel_degree_limit_p1 =&gt; 1,&lt;br /&gt;              active_sess_pool_p1 =&gt; NULL,&lt;br /&gt;              queueing_p1 =&gt; NULL,&lt;br /&gt;              switch_group =&gt; NULL,&lt;br /&gt;              switch_time =&gt; NULL,&lt;br /&gt;              switch_estimate =&gt; false,&lt;br /&gt;              max_est_exec_time =&gt; NULL,&lt;br /&gt;              undo_pool =&gt; NULL,&lt;br /&gt;              max_idle_time =&gt; NULL,&lt;br /&gt;              max_idle_blocker_time =&gt; NULL,&lt;br /&gt;              switch_time_in_call =&gt; NULL);   &lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Examples:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;1.) Limit max parallelism&lt;/span&gt;&lt;br /&gt;&lt;code&gt; &lt;br /&gt;SQL&gt; exec dbms_resource_manager.create_plan_directive ( plan =&gt; 'ETL_PLAN', &lt;br /&gt;              group_or_subplan =&gt;'ETL_GROUP',&lt;br /&gt;              comment =&gt; 'Limit CPU resource', &lt;br /&gt;              parallel_degree_limit_p1 =&gt; 4 );   &lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;2.) Disconnect Idle Users after a Predetermined time&lt;/span&gt;&lt;br /&gt;&lt;code&gt; &lt;br /&gt;SQL&gt; exec dbms_resource_manager.create_plan_directive(plan =&gt; 'ETL_PLAN', &lt;br /&gt;           group_or_subplan =&gt; 'ETL_GROUP', &lt;br /&gt;           comment =&gt; 'Limit idle time', &lt;br /&gt;           max_idle_time =&gt; 300);&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;3.) Control CPU Resources &lt;/span&gt;&lt;br /&gt;&lt;code&gt; &lt;br /&gt;SQL&gt; exec dbms_resource_manager.create_plan_directive ( plan =&gt; 'ETL_PLAN', &lt;br /&gt;              group_or_subplan =&gt;'ETL_GROUP',&lt;br /&gt;              comment =&gt; 'Limit CPU resource', &lt;br /&gt;              cpu_p1 =&gt; 80 );        &lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;4.) Limit max number of concurrently active sessions &lt;/span&gt;&lt;br /&gt;&lt;code&gt; &lt;br /&gt;SQL&gt; exec DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE ( plan =&gt; 'ETL_PLAN',&lt;br /&gt;              group_or_subplan =&gt;'ETL_GROUP', &lt;br /&gt;              comment =&gt; 'Max 10 Active Sessions with 20 in queue, rest to timeout', &lt;br /&gt;              active_sess_pool_p1=&gt;10, &lt;br /&gt;              queueing_p1=&gt;20);&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Step 5: Validate the PLAN &lt;/span&gt;setting.              &lt;br /&gt;&lt;code&gt; &lt;br /&gt;SQL&gt; exec dbms_resource_manager.validate_pending_area();  &lt;br /&gt;&lt;/code&gt;&lt;br /&gt;You will encounter the below error:&lt;br /&gt;&lt;code&gt; &lt;br /&gt;ERROR at line 1:&lt;br /&gt;ORA-29382: validation of pending area failed&lt;br /&gt;ORA-29377: consumer group OTHER_GROUPS is not part of top-plan ETL_PLAN&lt;br /&gt;ORA-06512: at "SYS.DBMS_RMIN", line 437&lt;br /&gt;ORA-06512: at "SYS.DBMS_RESOURCE_MANAGER", line 798&lt;br /&gt;ORA-06512: at line 2&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Basically for each plan we need to define the plan directives for the OTHER_GROUPS also, what that means is determine limits for all other sessions other than those bound by the consumer group ETL_GROUP.&lt;br /&gt;&lt;code&gt; &lt;br /&gt;SQL&gt; exec dbms_resource_manager.create_plan_directive ( plan =&gt; 'ETL_PLAN', &lt;br /&gt;              group_or_subplan =&gt;'OTHER_GROUPS',&lt;br /&gt;              comment =&gt; 'Limit CPU resource', &lt;br /&gt;              parallel_degree_limit_p1 =&gt; 2);   &lt;br /&gt;&lt;br /&gt;SQL&gt; exec dbms_resource_manager.validate_pending_area(); &lt;br /&gt;&lt;/code&gt;            &lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Step 6: Submit the changes/pending area that was created&lt;/span&gt;&lt;br /&gt;&lt;code&gt; &lt;br /&gt;SQL&gt; exec dbms_resource_manager.submit_pending_area();  &lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Step 7: Switch the consumer group of the schema/user&lt;/span&gt;&lt;br /&gt;&lt;code&gt; &lt;br /&gt;SQL&gt; exec dbms_resource_manager.create_pending_area();  &lt;br /&gt;SQL&gt; exec dbms_resource_manager_privs.grant_switch_consumer_group(grantee_name=&gt;'SCOTT',consumer_group=&gt;'ETL_GROUP',grant_option=&gt;FALSE); &lt;br /&gt;&lt;br /&gt;Make is the default/initial consumer group for the user.&lt;br /&gt;SQL&gt; exec dbms_resource_manager.set_initial_consumer_group(user =&gt; 'SCOTT',consumer_group =&gt;'ETL_GROUP'); &lt;br /&gt;&lt;br /&gt;SQL&gt; exec dbms_resource_manager.submit_pending_area();  &lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Others:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Modify Consumer Group:&lt;/span&gt;&lt;br /&gt;&lt;code&gt; &lt;br /&gt;exec dbms_resource_manager.UPDATE_PLAN_DIRECTIVE( plan =&gt; 'ETL_PLAN', group_or_subplan =&gt; 'ETL_GROUP', new_comment =&gt; 'ETL_GROUP Change the DOP to 8', new_parallel_degree_limit_p1 =&gt; 8);&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4092304359380397372-5212694521006390732?l=apunhiran.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apunhiran.blogspot.com/feeds/5212694521006390732/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4092304359380397372&amp;postID=5212694521006390732' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/5212694521006390732'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/5212694521006390732'/><link rel='alternate' type='text/html' href='http://apunhiran.blogspot.com/2011/01/how-to-setup-resource-manager-to_14.html' title='How to Setup Resource Manager to Control DB Resources'/><author><name>Apun Hiran</name><uri>http://www.blogger.com/profile/04745021360458270341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_viek7Sw5RrM/R_yAZoPGqYI/AAAAAAAAAIM/eS3VxJ7S2Pc/S220/IMG_0042.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4092304359380397372.post-5837189869243758013</id><published>2010-11-30T07:33:00.002+05:30</published><updated>2010-11-30T07:36:40.921+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='alter table'/><category scheme='http://www.blogger.com/atom/ns#' term='parallelism'/><category scheme='http://www.blogger.com/atom/ns#' term='alter mview'/><category scheme='http://www.blogger.com/atom/ns#' term='parallel'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><category scheme='http://www.blogger.com/atom/ns#' term='mview'/><title type='text'>How to refresh MVIEW in parallel</title><content type='html'>Refresh TYPES are COMPLETE/FAST/ON COMMIT/ON DEMAND&lt;br /&gt;Couple of things you should do to make a mview to refresh in parallel:&lt;br /&gt;1.) Alter the master table to make sure it allows parallelism:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;alter table &lt;table_name&gt; parallel (degree 4);&lt;br /&gt;To check&lt;br /&gt;select degree from dba_tables where table_name='&lt;table_name&gt;';&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;2.) When you create the mview log (incase of FAST refresh mviews), create it with a parallel clause:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;create materialized view log on &lt;table_name&gt; parallel (degree 4);&lt;br /&gt;OR&lt;br /&gt;Incase of existing mviews:&lt;br /&gt;alter materialized view log on &lt;table_name&gt; parallel (degree 4);&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;3.) When you create the mview, create it with a parallel clause:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;create materialized view &lt;mview_name&gt; REFRESH COMPLETE ON DEMAND  as select /*+ PARALLEL (table_name,4) */ * from &lt;table_name&gt;@dblink;&lt;br /&gt;OR&lt;br /&gt;create materialized view &lt;mview_name&gt; REFRESH COMPLETE ON DEMAND  parallel 4 as select * from &lt;table_name&gt;@dblink;&lt;br /&gt;Or&lt;br /&gt;Incase of existing mviews:&lt;br /&gt;alter table &lt;mview_name&gt; parallel (degree 4);&lt;br /&gt;alter materialized view &lt;mview_name&gt; parallel (degree 4);&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Lastly while executing the refresh:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;EXECUTE DBMS_MVIEW.REFRESH(LIST=&gt;'&lt;mview_name&gt;',PARALLELISM=&gt;4);&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;This should make your mview refresh in parallel. With the above example the mview should run with parallel degree 4.&lt;br /&gt;&lt;br /&gt;PS: Make sure that parallel is enabled for your database, check parameters:&lt;br /&gt;&lt;br /&gt;PARALLEL_MAX_SERVERS &lt;br /&gt;PARALLEL_EXECUTION_MESSAGE_SIZE &lt;br /&gt;PARALLEL_ADAPTIVE_MULTI_USER &lt;br /&gt;PARALLEL_AUTOMATIC_TUNING &lt;br /&gt;&lt;br /&gt;Make sure that the above parameter are set to allow any parallelism to work.&lt;br /&gt;Sample values for these parameters:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;SQL&gt; show parameter PARALLEL_MAX_SERVERS&lt;br /&gt;NAME                                 TYPE        VALUE&lt;br /&gt;------------------------------------ ----------- ------------------------------&lt;br /&gt;parallel_max_servers                 integer     120&lt;br /&gt;SQL&gt; show parameter PARALLEL_EXECUTION_MESSAGE_SIZE&lt;br /&gt;NAME                                 TYPE        VALUE&lt;br /&gt;------------------------------------ ----------- ------------------------------&lt;br /&gt;parallel_execution_message_size      integer     16384&lt;br /&gt;SQL&gt; show parameter PARALLEL_ADAPTIVE_MULTI_USER&lt;br /&gt;NAME                                 TYPE        VALUE&lt;br /&gt;------------------------------------ ----------- ------------------------------&lt;br /&gt;parallel_adaptive_multi_user         boolean     TRUE&lt;br /&gt;SQL&gt;  show parameter PARALLEL_AUTOMATIC_TUNING&lt;br /&gt;NAME                                 TYPE        VALUE&lt;br /&gt;------------------------------------ ----------- ------------------------------&lt;br /&gt;parallel_automatic_tuning            boolean     FALSE&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Note: &lt;br /&gt;1.) Replace &lt;table_name&gt; with the table name.&lt;br /&gt;2.) Replace &lt;mview_name&gt; with materialized view name.&lt;br /&gt;3.) Replacedblink with the name of the database link.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4092304359380397372-5837189869243758013?l=apunhiran.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apunhiran.blogspot.com/feeds/5837189869243758013/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4092304359380397372&amp;postID=5837189869243758013' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/5837189869243758013'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/5837189869243758013'/><link rel='alternate' type='text/html' href='http://apunhiran.blogspot.com/2010/11/how-to-refresh-mview-in-parallel.html' title='How to refresh MVIEW in parallel'/><author><name>Apun Hiran</name><uri>http://www.blogger.com/profile/04745021360458270341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_viek7Sw5RrM/R_yAZoPGqYI/AAAAAAAAAIM/eS3VxJ7S2Pc/S220/IMG_0042.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4092304359380397372.post-7476548259546326696</id><published>2010-11-17T00:06:00.004+05:30</published><updated>2010-11-17T00:18:15.591+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='IMP-00032 IMP-00008 oracle buffer imp exp'/><title type='text'>Import Error: IMP-00032: SQL statement exceeded buffer length</title><content type='html'>While trying to import a big table with 1000s of partitions I got error:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;IMP-00032: SQL statement exceeded buffer length&lt;br /&gt;IMP-00008: unrecognized statement in the export file:&lt;br /&gt;  MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "TEST_PART_1" NOLOGGING COMPRESS, PARTITION "TEST_NOV_1" VALUES LESS THAN (2010112806)  PCTFREE 0 PCTUSED 40...&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;The table was exported simiply with:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;exp system/oracle file=tab.dmp tables=table_part&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;While run import:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;imp system/oracle file=tab.dmp fromuser=scott touser=tiger&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;I got the above error.&lt;br /&gt;I tried various combination of parameter buffer i.e.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;imp system/oracle file=tab.dmp fromuser=scott touser=tiger buffer=1000000 commit=y&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;etc, but still got the error. So I wanted to know whats the value required for buffer.&lt;br /&gt;&lt;br /&gt;Solution:&lt;br /&gt;In the source database we need to run:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;SQL&gt; select dbms_lob.getlength (dbms_metadata.get_ddl('TABLE','table_part','SCOTT')) "SQL_LENGTH" from dual;&lt;br /&gt;&lt;br /&gt;SQL_LENGTH&lt;br /&gt;----------&lt;br /&gt;   3886502&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;The above output gives the value of buffer we need to have atleast to run the import, so I used:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;imp system/o1ympic file=tabs.dmp log=tabs.log fromuser=SCOTT touser=TIGER  commit=y ignore=Y buffer=44886502&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;This solved the problem.&lt;br /&gt;Metalink Note: 846397.1&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4092304359380397372-7476548259546326696?l=apunhiran.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apunhiran.blogspot.com/feeds/7476548259546326696/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4092304359380397372&amp;postID=7476548259546326696' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/7476548259546326696'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/7476548259546326696'/><link rel='alternate' type='text/html' href='http://apunhiran.blogspot.com/2010/11/import-err-imp-00032-sql-statement.html' title='Import Error: IMP-00032: SQL statement exceeded buffer length'/><author><name>Apun Hiran</name><uri>http://www.blogger.com/profile/04745021360458270341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_viek7Sw5RrM/R_yAZoPGqYI/AAAAAAAAAIM/eS3VxJ7S2Pc/S220/IMG_0042.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4092304359380397372.post-6628745654905340669</id><published>2010-09-09T06:05:00.003+05:30</published><updated>2010-09-09T06:11:14.997+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='11gr2'/><category scheme='http://www.blogger.com/atom/ns#' term='ORA-15031'/><category scheme='http://www.blogger.com/atom/ns#' term='oracleasm'/><category scheme='http://www.blogger.com/atom/ns#' term='ORA-15018'/><category scheme='http://www.blogger.com/atom/ns#' term='libasm.so'/><category scheme='http://www.blogger.com/atom/ns#' term='ORA-15183'/><category scheme='http://www.blogger.com/atom/ns#' term='grid'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Oracle 11gr2 Grid: root.sh fails on node2, asmlib issue</title><content type='html'>A very interesting problem which took me quite a while to resolve.&lt;br /&gt;Issue while running root.sh on node 2 during 11gr2 grid software installation i was receiving the following error:&lt;br /&gt;Error in root.sh:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;DiskGroup DG_SYS01 creation failed with the following message:&lt;br /&gt;ORA-15018: diskgroup cannot be created&lt;br /&gt;ORA-15031: disk specification 'ORCL:DISK0' matches no disks&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Configuration of ASM failed, see logs for details&lt;br /&gt;Did not succssfully configure and start ASM&lt;br /&gt;CRS-2500: Cannot stop resource 'ora.crsd' as it is not running&lt;br /&gt;CRS-4000: Command Stop failed, or completed with errors.&lt;br /&gt;Command return code of 1 (256) from command: /oragrid/product/11.2/bin/crsctl stop resource ora.crsd -init&lt;br /&gt;Stop of resource "ora.crsd -init" failed&lt;br /&gt;Failed to stop CRSD&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Error in ASM alert log:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;ORA-15183: ASMLIB initialization error [driver/agent not installed]&lt;br /&gt;WARNING: FAILED to load library: /opt/oracle/extapi/64/asm/orcl/1/libasm.so&lt;br /&gt;ERROR: diskgroup DG_SYS01 was not mounted&lt;br /&gt;NOTE: cache deleting context for group DG_SYS01 1/-239075992&lt;br /&gt;WARNING: Disk Group DG_SYS01 containing configured OCR is not mounted&lt;br /&gt;ORA-15032: not all alterations performed&lt;br /&gt;ORA-15017: diskgroup "DG_SYS01" cannot be mounted&lt;br /&gt;ORA-15063: ASM discovered an insufficient number of disks for diskgroup "DG_SYS01"&lt;br /&gt;ERROR: ALTER DISKGROUP ALL MOUNT&lt;br /&gt;Wed Sep 08 22:09:42 2010&lt;br /&gt;SQL&gt; CREATE DISKGROUP DG_SYS01 EXTERNAL REDUNDANCY  DISK 'ORCL:DISK0' ATTRIBUTE 'compatible.asm'='11.2.0.0.0' /* ASMCA */&lt;br /&gt;ORA-15018: diskgroup cannot be created&lt;br /&gt;ORA-15031: disk specification 'ORCL:DISK0' matches no disks&lt;br /&gt;ERROR: CREATE DISKGROUP DG_SYS01 EXTERNAL REDUNDANCY  DISK 'ORCL:DISK0' ATTRIBUTE 'compatible.asm'='11.2.0.0.0' /* ASMCA */&lt;br /&gt;kfdp_dismount(): 3&lt;br /&gt;kfdp_dismountBg(): 3&lt;br /&gt;ERROR: diskgroup DG_SYS01 was not created&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;What was puzzling was that why is node2 trying to run CREATE diskgroup, while node1 has run successfully and created the diskgroup.&lt;br /&gt;Other errors in cssd.log&lt;br /&gt;&lt;code&gt;&lt;br /&gt;2010-09-08 20:06:14.856: [   SKGFD][1151920448]ERROR: -14(asmlib /opt/oracle/extapi/64/asm/orcl/1/libasm.so version failed with 2)&lt;br /&gt;...&lt;br /&gt;2010-09-08 20:06:14.856: [   SKGFD][1151920448]Discovery skipping bad asmlib :ASM:/opt/oracle/extapi/64/asm/orcl/1/libasm.so:&lt;br /&gt;&lt;br /&gt;2010-09-08 20:06:14.856: [    CSSD][1151920448]clssnmvDiskVerify: Successful discovery of 0 disks&lt;br /&gt;2010-09-08 20:06:14.856: [    CSSD][1151920448]clssnmCompleteInitVFDiscovery: Completing initial voting file discovery&lt;br /&gt;2010-09-08 20:06:14.857: [    CSSD][1151920448]clssnmvFindInitialConfigs: No voting files found&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;This showed that it looked like an issue with the oracleasm library.&lt;br /&gt;But I was able to execute all /etc/init.d/oracleasm commands without any problems.&lt;br /&gt;e.g /etc/init.d/oracleasm listdisks --&gt; this showed all the disk correctly.&lt;br /&gt;&lt;br /&gt;I tried rerunning /etc/init.d/oracleasm configure. But still continued to get the error.&lt;br /&gt;&lt;br /&gt;I used steps mentioned in http://jarneil.wordpress.com/2008/07/07/asmlib-troubleshooting/ to make sure the libraries were installed properly. This note was really helpful, I would like to thank the author.&lt;br /&gt;The libraries were installed properly.&lt;br /&gt;&lt;br /&gt;I had actually reinstalled the oracleasm libraries also:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;[oracle@node2]/% rpm -qa |grep oracleasm&lt;br /&gt;oracleasm-support-2.1.3-1.el5&lt;br /&gt;oracleasm-2.6.18-128.el5debug-2.0.5-1.el5&lt;br /&gt;oracleasm-2.6.18-128.el5-2.0.5-1.el5&lt;br /&gt;oracleasm-2.6.18-128.el5xen-2.0.5-1.el5&lt;br /&gt;oracleasm-2.6.18-128.el5-debuginfo-2.0.5-1.el5&lt;br /&gt;oracleasmlib-2.0.4-1.el5&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Finally after a lot of searching (google, metalink..etc...etc).&lt;br /&gt;I found metalink note "FAQ ASMLIB CONFIGURE,VERIFY, TROUBLESHOOT [ID 359266.1]" on metalink and started with all the checks mentioned.&lt;br /&gt;Finally I figured out that there was problem with my /etc/sysconfig/oracleasm file. This file on other servers is a sym link:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;[oracle@node1]/% ls -lrt /etc/sysconfig/oracle*&lt;br /&gt;-rw-r--r-- 1 root root 774 Sep  8 23:32 /etc/sysconfig/oracleasm-_dev_oracleasm&lt;br /&gt;lrwxrwxrwx 1 root root  24 Sep  8 23:36 /etc/sysconfig/oracleasm -&gt; oracleasm-_dev_oracleasm&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;But in my case it was:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;[root@node2 sysconfig]# ls -lrt oracle*&lt;br /&gt;-rw-r--r-- 1 root root 574 Mar 18  2009 oracleasm&lt;br /&gt;lrwxrwxrwx 1 root root  24 Sep  7 23:30 oracleasm.rpmsave -&gt; oracleasm-_dev_oracleasm&lt;br /&gt;-rw-r--r-- 1 root root 774 Sep  8 23:32 oracleasm-_dev_oracleasm&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;And all the parameters were blank inside oracleasm. What I understood is that libasm.so used oracleasm file.&lt;br /&gt;So I:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;[root@node2 sysconfig]# ln -s oracleasm-_dev_oracleasm oracleasm&lt;br /&gt;[root@node2 sysconfig]# ls -lrt oracle*&lt;br /&gt;lrwxrwxrwx 1 root root  24 Sep  7 23:30 oracleasm.rpmsave -&gt; oracleasm-_dev_oracleasm&lt;br /&gt;-rw-r--r-- 1 root root 774 Sep  8 23:32 oracleasm-_dev_oracleasm&lt;br /&gt;lrwxrwxrwx 1 root root  24 Sep  8 23:36 oracleasm -&gt; oracleasm-_dev_oracleasm&lt;br /&gt;[root@node2 sysconfig]# rm oracleasm.rpmsave&lt;br /&gt;rm: remove symbolic link `oracleasm.rpmsave'? y&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Now as I had already run root.sh and it had failed, i was unable to run it again:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;[root@node2 11.2]# ./root.sh&lt;br /&gt;Running Oracle 11g root.sh script...&lt;br /&gt;&lt;br /&gt;The following environment variables are set as:&lt;br /&gt;    ORACLE_OWNER= oracle&lt;br /&gt;    ORACLE_HOME=  /oragrid/product/11.2&lt;br /&gt;&lt;br /&gt;Enter the full pathname of the local bin directory: [/usr/local/bin]:&lt;br /&gt;The file "dbhome" already exists in /usr/local/bin.  Overwrite it? (y/n)&lt;br /&gt;[n]: y&lt;br /&gt;   Copying dbhome to /usr/local/bin ...&lt;br /&gt;The file "oraenv" already exists in /usr/local/bin.  Overwrite it? (y/n)&lt;br /&gt;[n]: y&lt;br /&gt;   Copying oraenv to /usr/local/bin ...&lt;br /&gt;The file "coraenv" already exists in /usr/local/bin.  Overwrite it? (y/n)&lt;br /&gt;[n]: y&lt;br /&gt;   Copying coraenv to /usr/local/bin ...&lt;br /&gt;&lt;br /&gt;Entries will be added to the /etc/oratab file as needed by&lt;br /&gt;Database Configuration Assistant when a database is created&lt;br /&gt;Finished running generic part of root.sh script.&lt;br /&gt;Now product-specific root actions will be performed.&lt;br /&gt;2010-09-08 23:37:12: Parsing the host name&lt;br /&gt;2010-09-08 23:37:12: Checking for super user privileges&lt;br /&gt;2010-09-08 23:37:12: User has super user privileges&lt;br /&gt;Using configuration parameter file: /oragrid/product/11.2/crs/install/crsconfig_params&lt;br /&gt;CRS is already configured on this node for crshome=0&lt;br /&gt;Cannot configure two CRS instances on the same cluster.&lt;br /&gt;Please deconfigure before proceeding with the configuration of new home.&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;So first we have to deconfigure the previous run of root.sh:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;[root@node2 11.2]# crs/install/rootcrs.pl -verbose -deconfig -force&lt;br /&gt;2010-09-08 23:37:48: Parsing the host name&lt;br /&gt;2010-09-08 23:37:48: Checking for super user privileges&lt;br /&gt;2010-09-08 23:37:48: User has super user privileges&lt;br /&gt;Using configuration parameter file: crs/install/crsconfig_params&lt;br /&gt;PRCR-1035 : Failed to look up CRS resource ora.cluster_vip.type for 1&lt;br /&gt;PRCR-1068 : Failed to query resources&lt;br /&gt;Cannot communicate with crsd&lt;br /&gt;PRCR-1070 : Failed to check if resource ora.gsd is registered&lt;br /&gt;Cannot communicate with crsd&lt;br /&gt;PRCR-1070 : Failed to check if resource ora.ons is registered&lt;br /&gt;Cannot communicate with crsd&lt;br /&gt;PRCR-1070 : Failed to check if resource ora.eons is registered&lt;br /&gt;Cannot communicate with crsd&lt;br /&gt;&lt;br /&gt;ACFS-9200: Supported&lt;br /&gt;CRS-4535: Cannot communicate with Cluster Ready Services&lt;br /&gt;CRS-4000: Command Stop failed, or completed with errors.&lt;br /&gt;CRS-2791: Starting shutdown of Oracle High Availability Services-managed resources on 'node2'&lt;br /&gt;CRS-2673: Attempting to stop 'ora.drivers.acfs' on 'node2'&lt;br /&gt;CRS-2677: Stop of 'ora.drivers.acfs' on 'node2' succeeded&lt;br /&gt;CRS-2793: Shutdown of Oracle High Availability Services-managed resources on 'node2' has completed&lt;br /&gt;CRS-4133: Oracle High Availability Services has been stopped.&lt;br /&gt;error: package cvuqdisk is not installed&lt;br /&gt;Successfully deconfigured Oracle clusterware stack on this node&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;After this I restart oracleasm:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;[root@node2 11.2]# /etc/init.d/oracleasm stop&lt;br /&gt;Dropping Oracle ASMLib disks:                              [  OK  ]&lt;br /&gt;Shutting down the Oracle ASMLib driver:                    [  OK  ]&lt;br /&gt;[root@node2 11.2]# /etc/init.d/oracleasm start&lt;br /&gt;Initializing the Oracle ASMLib driver:                     [  OK  ]&lt;br /&gt;Scanning the system for Oracle ASMLib disks:               [  OK  ]&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Check that the sym link is also in place, basically to see if restarting oracleasm changed anything:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;lrwxrwxrwx 1 root root   24 Sep  8 23:36 oracleasm -&gt; oracleasm-_dev_oracleasm&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;All looking fine i reran root.sh and it went through fine.&lt;br /&gt;&lt;br /&gt;Some command that I ran in the pursuit to find the problem:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;/etc/init.d/oracleasm listdisks&lt;br /&gt;/etc/init.d/oracleasm start&lt;br /&gt;/etc/init.d/oracleasm status&lt;br /&gt;ls -rlt /dev/oracleasm/disks/&lt;br /&gt;/etc/init.d/oracleasm querydisk DISK0&lt;br /&gt;rpm -ql oracleasm-support&lt;br /&gt;df -ha |grep asm&lt;br /&gt;rpm -ql oracleasmlib&lt;br /&gt;/usr/sbin/oracleasm-discover&lt;br /&gt;/usr/sbin/oracleasm-discover 'ORCL:*'&lt;br /&gt;/usr/sbin/oracleasm-discover 'ORCL:*'&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4092304359380397372-6628745654905340669?l=apunhiran.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apunhiran.blogspot.com/feeds/6628745654905340669/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4092304359380397372&amp;postID=6628745654905340669' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/6628745654905340669'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/6628745654905340669'/><link rel='alternate' type='text/html' href='http://apunhiran.blogspot.com/2010/09/oracle-11gr2-grid-rootsh-fails-on-node2.html' title='Oracle 11gr2 Grid: root.sh fails on node2, asmlib issue'/><author><name>Apun Hiran</name><uri>http://www.blogger.com/profile/04745021360458270341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_viek7Sw5RrM/R_yAZoPGqYI/AAAAAAAAAIM/eS3VxJ7S2Pc/S220/IMG_0042.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4092304359380397372.post-2237115764688476227</id><published>2010-08-28T05:57:00.005+05:30</published><updated>2010-09-02T02:39:37.778+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='11gr2'/><category scheme='http://www.blogger.com/atom/ns#' term='installation'/><category scheme='http://www.blogger.com/atom/ns#' term='steps'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle 11gR2 Grid Infrastructure Installation'/><category scheme='http://www.blogger.com/atom/ns#' term='grid'/><category scheme='http://www.blogger.com/atom/ns#' term='RAC'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Oracle 11gR2 Grid Infrastructure Installation Steps</title><content type='html'>Step By Step Installation 11gR2 Non ASM&lt;br /&gt;========================================&lt;br /&gt;Connect as root user:&lt;br /&gt;1.) groupadd dba&lt;br /&gt;2.) useradd -d /home/oracle -g dba -G dba oracle&lt;br /&gt;3.) Create directories for oracle grid installation, the directory path should not be same as $ORACLE_BASE. Assuming $ORACLE_BASE=/oracle.&lt;br /&gt; mkdir /oragrid&lt;br /&gt; Make sure the directory as atleast 5GB free space.&lt;br /&gt;4.) Change the owner of the directory to oracle:dba&lt;br /&gt; chown -R oracle:dba /oragrid&lt;br /&gt;5.) RPM requirements (From Metalink note# 880989.1:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;        1.) binutils-2.17.50.0.6-6.el5 (x86_64) &lt;br /&gt;        2.) compat-libstdc++-33-3.2.3-61 (x86_64) &lt;&lt;&lt; both ARCH's are required. See next line. &lt;br /&gt;        3.) compat-libstdc++-33-3.2.3-61 (i386) &lt;&lt;&lt; both ARCH's are required. See previous line. &lt;br /&gt;        4.) elfutils-libelf-0.125-3.el5 (x86_64) &lt;br /&gt;        5.) glibc-2.5-24 (x86_64) &lt;&lt;&lt; both ARCH's are required. See next line. &lt;br /&gt;        6.) glibc-2.5-24 (i686) &lt;&lt;&lt; both ARCH's are required. See previous line. &lt;br /&gt;        7.) glibc-common-2.5-24 (x86_64) &lt;br /&gt;        8.) ksh-20060214-1.7 (x86_64) &lt;br /&gt;        9.) libaio-0.3.106-3.2 (x86_64) &lt;&lt;&lt; both ARCH's are required. See next line. &lt;br /&gt;        10.) libaio-0.3.106-3.2 (i386) &lt;&lt;&lt; both ARCH's are required. See previous line. &lt;br /&gt;        11.) libgcc-4.1.2-42.el5 (i386) &lt;&lt;&lt; both ARCH's are required. See next line. &lt;br /&gt;        12.) libgcc-4.1.2-42.el5 (x86_64) &lt;&lt;&lt; both ARCH's are required. See previous line. &lt;br /&gt;        13.) libstdc++-4.1.2-42.el5 (x86_64) &lt;&lt;&lt; both ARCH's are required. See next line. &lt;br /&gt;        14.) libstdc++-4.1.2-42.el5 (i386) &lt;&lt;&lt; both ARCH's are required. See previous line. &lt;br /&gt;        15.) make-3.81-3.el5 (x86_64) &lt;br /&gt;     16.) elfutils-libelf-devel-0.125-3.el5.x86_64.rpm &lt;br /&gt;            a.) requires elfutils-libelf-devel-static-0.125-3.el5.x86_64.rpm as a prerequisite, as listed below. &lt;br /&gt;            b.) elfutils-libelf-devel and elfutils-libelf-devel-static each depend upon the other. Therefore, they must be installed together, in one (1) "rpm -ivh" command as follows: &lt;br /&gt;                 rpm -ivh elfutils-libelf-devel-0.125-3.el5.x86_64.rpm elfutils-libelf-devel-static-0.125-3.el5.x86_64.rpm &lt;br /&gt;        17.) glibc-headers-2.5-24.x86_64.rpm &lt;br /&gt;            a.) requires kernel-headers-2.6.18-92.el5.x86_64.rpm as a prerequisite, as listed below &lt;br /&gt;        18.) glibc-devel-2.5-24.x86_64.rpm &lt;&lt;&lt; both ARCH's are required. See next item. &lt;br /&gt;        19.) glibc-devel-2.5-24.i386.rpm &lt;&lt;&lt; both ARCH's are required. See previous item. &lt;br /&gt;        20.) gcc-4.1.2-42.el5.x86_64.rpm &lt;br /&gt;            a.) requires libgomp-4.1.2-42.el5.x86_64.rpm as a prerequisite, as listed below &lt;br /&gt;        21.) libstdc++-devel-4.1.2-42.el5.x86_64.rpm &lt;br /&gt;        22.) gcc-c++-4.1.2-42.el5.x86_64.rpm &lt;br /&gt;        23.) libaio-devel-0.3.106-3.2.x86_64.rpm &lt;&lt;&lt; both ARCH's are required. See next item &lt;br /&gt;        24.) libaio-devel-0.3.106-3.2.i386.rpm &lt;&lt;&lt; both ARCH's are required. See previous item. &lt;br /&gt;        25.) sysstat-7.0.2-1.el5.x86_64.rpm &lt;br /&gt;        26.) unixODBC-2.2.11-7.1.x86_64.rpm &lt;&lt;&lt; both ARCH's are required. See next item &lt;br /&gt;        27.) unixODBC-2.2.11-7.1.i386.rpm &lt;&lt;&lt; both ARCH's are required. See previous item. &lt;br /&gt;        28.) unixODBC-devel-2.2.11-7.1.x86_64.rpm &lt;&lt;&lt; both ARCH's are required. See next item &lt;br /&gt;        29.) unixODBC-devel-2.2.11-7.1.i386.rpm &lt;&lt;&lt; both ARCH's are required. See previous item. &lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Command to check:&lt;br /&gt;&lt;code&gt;&lt;br /&gt; rpm -qa |grep -E "binutils|compat-libstdc++|elfutils-libelf-|glibc-|glibc-common-|ksh-|libaio-|libgcc-|libstdc++|make|gcc|sysstat|unixODBC"&lt;br /&gt;&lt;/code&gt; &lt;br /&gt;6.) Values for /etc/sysctl.conf (these are suggested, these values should be calculated with respect to the memory/cpu/processes of the server.)&lt;br /&gt;&lt;code&gt; &lt;br /&gt;    kernel.shmall = physical RAM size / pagesize For most systems&lt;br /&gt;    kernel.shmmax = 1/2 of physical RAM eg. for 32g ram it should be 17179869184.&lt;br /&gt;    kernel.shmmni = 4096 &lt;br /&gt;    kernel.sem = 250 32000 100 128 &lt;br /&gt;    fs.file-max = 409200&lt;br /&gt;    fs.aio-max-nr = 1048576&lt;br /&gt;    net.ipv4.ip_local_port_range = 9000 65500 &lt;br /&gt;    net.core.rmem_default = 262144 &lt;br /&gt;    net.core.rmem_max = 4194304 &lt;br /&gt;    net.core.wmem_default = 262144 &lt;br /&gt;    net.core.wmem_max = 1048576 &lt;br /&gt;&lt;/code&gt;&lt;br /&gt;7.) Make sure u have configured a scan IP, for more details on what is scan IP please refer to: http://www.oracle.com/technetwork/database/clustering/overview/scan-129069.pdf&lt;br /&gt;Make sure your /etc/hosts file has entries or hostname, host IP address, Interconnect name, Interconnect IP address, virtual hostname, virtual host IP address for all RAC nodes and on all RAC nodes.&lt;br /&gt;&lt;br /&gt;8a.) Since we are using Network Time Protocol (NTP) for synchronization of time across all the servers in the cluster, a mandatory requirement with 11gR2 is to enable the slewing option by adding ‘-x’ argument in the ntp configuration file as seen below: -&lt;br /&gt;# vi /etc/sysconfig/ntpd&lt;br /&gt;&lt;code&gt;&lt;br /&gt;# Drop root to id 'ntp:ntp' by default.&lt;br /&gt;OPTIONS="-x -u ntp:ntp -p /var/run/ntpd.pid" #add -x in the options string.&lt;br /&gt;# Set to 'yes' to sync hw clock after successful ntpdate&lt;br /&gt;SYNC_HWCLOCK=no&lt;br /&gt;# Additional options for ntpdate&lt;br /&gt;NTPDATE_OPTIONS="" &lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Restart ntpd daemon.&lt;/span&gt;&lt;br /&gt;[root@node1 oracle]# /etc/init.d/ntpd stop&lt;br /&gt;Shutting down ntpd:                                        [  OK  ]&lt;br /&gt;[root@node1 oracle]# /etc/init.d/ntpd start&lt;br /&gt;ntpd: Synchronizing with time server:                      [  OK  ]&lt;br /&gt;Starting ntpd:                                             [  OK  ]&lt;br /&gt;&lt;br /&gt;8b.) Update /etc/security/limits.conf with:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;         oracle soft nproc 2047 &lt;br /&gt;         oracle hard nproc 16384 &lt;br /&gt;         oracle soft nofile 1024 &lt;br /&gt;         oracle hard nofile 65536&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;9.) Add following line in the /etc/pam.d/login file:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;         session required pam_limits.so &lt;br /&gt;&lt;/code&gt;&lt;br /&gt;10.) Add the following lines to /etc/profile: &lt;br /&gt;&lt;code&gt;&lt;br /&gt;         if [ $USER = "oracle" ]; then &lt;br /&gt;            if [ $SHELL = "/bin/ksh" ]; then &lt;br /&gt;                ulimit -u 16384 &lt;br /&gt;                ulimit -n 65536 &lt;br /&gt;            else &lt;br /&gt;                ulimit -u 16384 -n 65536 &lt;br /&gt;            fi &lt;br /&gt;         fi &lt;br /&gt;&lt;/code&gt;   &lt;br /&gt;11.) Setup user equivalence between the oracle user of the rac nodes.&lt;br /&gt;12.) Run Cluverify (change directory where you have copied and unzipped the oracle 11gr2 grid software)&lt;br /&gt;#./runcluvfy.sh stage -pre crsinst -n node1,node2 -verbose&lt;br /&gt;&lt;br /&gt;--Fix any error you see.&lt;br /&gt;&lt;br /&gt;13.) Start ./runInstaller&lt;br /&gt;Screenshots:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/Gl0jWFlCt4VsY5Vj9_J4qw?feat=embedwebsite"&gt;&lt;img src="http://lh4.ggpht.com/_viek7Sw5RrM/THhhnftqAJI/AAAAAAAABNA/jTqWzRGMQRM/s400/1.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Welcome Screen&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;14.) &lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/ePREUMEqMBhT55UqmeyBLg?feat=embedwebsite"&gt;&lt;img src="http://lh5.ggpht.com/_viek7Sw5RrM/THhTwMgQ1nI/AAAAAAAABLU/Ip5MdpAnbeU/s400/2.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Select Advanced Installation&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;15.)&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/u_LQfdTSkJqxEHFWf3f5Kg?feat=embedwebsite"&gt;&lt;img src="http://lh5.ggpht.com/_viek7Sw5RrM/THhTwNMcNxI/AAAAAAAABLY/PCotkjCb6dE/s400/3.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Select all required languages, I have selected only English&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;16.)&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/AxIXPOFycc9vW5E5ldBPZA?feat=embedwebsite"&gt;&lt;img src="http://lh4.ggpht.com/_viek7Sw5RrM/THhTwa1iunI/AAAAAAAABLc/fMQsNs7YnjE/s400/4.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Specify scan name, cluster name, and scan listener port.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;17.) &lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/3f_Sm36Q5j9Q4Ttyy1O24A?feat=embedwebsite"&gt;&lt;img src="http://lh5.ggpht.com/_viek7Sw5RrM/THhTwXyLkoI/AAAAAAAABLg/w8432XZBKdo/s400/5.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Provide RAC node information, along with virtual name.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;18.)&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/SzH5UQ2G8PDVWK2fjEbJNg?feat=embedwebsite"&gt;&lt;img src="http://lh3.ggpht.com/_viek7Sw5RrM/THhT3tzgIII/AAAAAAAABLk/983iy4pl_fY/s400/6.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Review is the the interfaces, subnet mask are correct and select the public/private accordingly.(private is for interconnect).&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;19.) &lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/nB7nJEt7dqkysDYe26EacQ?feat=embedwebsite"&gt;&lt;img src="http://lh3.ggpht.com/_viek7Sw5RrM/THhT3newobI/AAAAAAAABLo/dh5xHJze0i8/s400/7.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Oracle will do some validation checks&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;20.)&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/q6HFDcBCfZN9DGYkYShgDg?feat=embedwebsite"&gt;&lt;img src="http://lh6.ggpht.com/_viek7Sw5RrM/THhT3wtaQSI/AAAAAAAABLs/Uzoqhs7YcQk/s400/8.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Select ASM/shared file system, depending on what u are using. I am using shared file system.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;21.)&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/AVCSnhrOTexTjsLmdyQ1GQ?feat=embedwebsite"&gt;&lt;img src="http://lh6.ggpht.com/_viek7Sw5RrM/THhT32gCP0I/AAAAAAAABLw/QNsuM6c-fqA/s400/9.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Select location for OCR.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;22.)&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/Q8FLwbZp977YpzoIc5A4CQ?feat=embedwebsite"&gt;&lt;img src="http://lh6.ggpht.com/_viek7Sw5RrM/THhbUZwMxsI/AAAAAAAABM0/bRki_UUD47s/s400/10.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Select location of voting disks.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;23.)&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/uxOiDCreCQeN67-MktXiCQ?feat=embedwebsite"&gt;&lt;img src="http://lh5.ggpht.com/_viek7Sw5RrM/THhT-2Q5TNI/AAAAAAAABL4/oIdFiYyKN-0/s400/11.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Failure Support, I dont plan to use this.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;24.)&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/eimpYMqzmqdnf9Uf7JNZ3Q?feat=embedwebsite"&gt;&lt;img src="http://lh4.ggpht.com/_viek7Sw5RrM/THhT--oQtCI/AAAAAAAABL8/gzy5HddMgPk/s400/12.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Select the OS groups.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;25.) &lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/XaxZvuWmVa6Iwbz_3EvIZg?feat=embedwebsite"&gt;&lt;img src="http://lh6.ggpht.com/_viek7Sw5RrM/THhT_G8BLAI/AAAAAAAABMA/BHy9nQtYTOA/s400/13.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Warning message, ignore it&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;26.)&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/VZJmeQo2bt-BYiR2n5zd2w?feat=embedwebsite"&gt;&lt;img src="http://lh3.ggpht.com/_viek7Sw5RrM/THhT_OKm0AI/AAAAAAAABME/SgE20aASqSo/s400/14.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Specify oracle_base and grid installation folder.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;27.)&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/-8PALzJzbvU0Bc1gRf94Ig?feat=embedwebsite"&gt;&lt;img src="http://lh4.ggpht.com/_viek7Sw5RrM/THhT_INLsMI/AAAAAAAABMI/a1HOS99bYlA/s400/15.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Specify Oracle Inventory Location.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;28.)&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/KumAV6KZgZckckDyxKm5ww?feat=embedwebsite"&gt;&lt;img src="http://lh4.ggpht.com/_viek7Sw5RrM/THhUGL33E9I/AAAAAAAABMM/EXfBQk72iYI/s400/16.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Oracle perform pre-checks. I am ignoring swap space issue.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;29.)&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/Dw_1YuNnwjIFOqLLTdXj6A?feat=embedwebsite"&gt;&lt;img src="http://lh3.ggpht.com/_viek7Sw5RrM/THhUGCEup_I/AAAAAAAABMQ/ne29cwrDBvc/s400/17.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Final summary page!!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;30.)&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/RsUdLwT-d8LKvS-LAxp0wA?feat=embedwebsite"&gt;&lt;img src="http://lh4.ggpht.com/_viek7Sw5RrM/THhUGd9ii-I/AAAAAAAABMU/JjwE8lK2nAk/s400/18.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Ignore this warning&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;31.)&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/GvvFljpxDhn3yKoY6bNXHw?feat=embedwebsite"&gt;&lt;img src="http://lh6.ggpht.com/_viek7Sw5RrM/THhUGcyEOyI/AAAAAAAABMY/iNLtPs3ENPI/s400/19.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Shows installation Progress&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;32.)&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/Qqgf1njrWCHFGrz_ibCyrg?feat=embedwebsite"&gt;&lt;img src="http://lh4.ggpht.com/_viek7Sw5RrM/THhUGYJeqOI/AAAAAAAABMc/K1hWZaV3_3E/s400/20.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Run the scripts&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;33.) Run &lt;span style="font-weight:bold;"&gt;/oracle/oraInventory/orainstRoot.sh&lt;/span&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;[root@node1 oraInventory]# ./orainstRoot.sh&lt;br /&gt;Changing permissions of /oracle/oraInventory.&lt;br /&gt;Adding read,write permissions for group.&lt;br /&gt;Removing read,write,execute permissions for world.&lt;br /&gt;&lt;br /&gt;Changing groupname of /oracle/oraInventory to dba.&lt;br /&gt;The execution of the script is complete.&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;34.) &lt;span style="font-weight:bold;"&gt;Run $GRID_HOME/root.sh&lt;/span&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;[root@node1 11.2]# ./root.sh&lt;br /&gt;Running Oracle 11g root.sh script...&lt;br /&gt;&lt;br /&gt;The following environment variables are set as:&lt;br /&gt;    ORACLE_OWNER= oracle&lt;br /&gt;    ORACLE_HOME=  /oragrid/product/11.2&lt;br /&gt;&lt;br /&gt;Enter the full pathname of the local bin directory: [/usr/local/bin]:&lt;br /&gt;   Copying dbhome to /usr/local/bin ...&lt;br /&gt;   Copying oraenv to /usr/local/bin ...&lt;br /&gt;   Copying coraenv to /usr/local/bin ...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Creating /etc/oratab file...&lt;br /&gt;Entries will be added to the /etc/oratab file as needed by&lt;br /&gt;Database Configuration Assistant when a database is created&lt;br /&gt;Finished running generic part of root.sh script.&lt;br /&gt;Now product-specific root actions will be performed.&lt;br /&gt;2010-08-27 23:25:19: Parsing the host name&lt;br /&gt;2010-08-27 23:25:19: Checking for super user privileges&lt;br /&gt;2010-08-27 23:25:19: User has super user privileges&lt;br /&gt;Using configuration parameter file: /oragrid/product/11.2/crs/install/crsconfig_params&lt;br /&gt;Creating trace directory&lt;br /&gt;LOCAL ADD MODE&lt;br /&gt;Creating OCR keys for user 'root', privgrp 'root'..&lt;br /&gt;Operation successful.&lt;br /&gt;  root wallet&lt;br /&gt;  root wallet cert&lt;br /&gt;  root cert export&lt;br /&gt;  peer wallet&lt;br /&gt;  profile reader wallet&lt;br /&gt;  pa wallet&lt;br /&gt;  peer wallet keys&lt;br /&gt;  pa wallet keys&lt;br /&gt;  peer cert request&lt;br /&gt;  pa cert request&lt;br /&gt;  peer cert&lt;br /&gt;  pa cert&lt;br /&gt;  peer root cert TP&lt;br /&gt;  profile reader root cert TP&lt;br /&gt;  pa root cert TP&lt;br /&gt;  peer pa cert TP&lt;br /&gt;  pa peer cert TP&lt;br /&gt;  profile reader pa cert TP&lt;br /&gt;  profile reader peer cert TP&lt;br /&gt;  peer user cert&lt;br /&gt;  pa user cert&lt;br /&gt;Adding daemon to inittab&lt;br /&gt;CRS-4123: Oracle High Availability Services has been started.&lt;br /&gt;ohasd is starting&lt;br /&gt;CRS-2672: Attempting to start 'ora.gipcd' on 'node1'&lt;br /&gt;CRS-2672: Attempting to start 'ora.mdnsd' on 'node1'&lt;br /&gt;CRS-2676: Start of 'ora.gipcd' on 'node1' succeeded&lt;br /&gt;CRS-2676: Start of 'ora.mdnsd' on 'node1' succeeded&lt;br /&gt;CRS-2672: Attempting to start 'ora.gpnpd' on 'node1'&lt;br /&gt;CRS-2676: Start of 'ora.gpnpd' on 'node1' succeeded&lt;br /&gt;CRS-2672: Attempting to start 'ora.cssdmonitor' on 'node1'&lt;br /&gt;CRS-2676: Start of 'ora.cssdmonitor' on 'node1' succeeded&lt;br /&gt;CRS-2672: Attempting to start 'ora.cssd' on 'node1'&lt;br /&gt;CRS-2672: Attempting to start 'ora.diskmon' on 'node1'&lt;br /&gt;CRS-2676: Start of 'ora.diskmon' on 'node1' succeeded&lt;br /&gt;CRS-2676: Start of 'ora.cssd' on 'node1' succeeded&lt;br /&gt;CRS-2672: Attempting to start 'ora.ctssd' on 'node1'&lt;br /&gt;CRS-2676: Start of 'ora.ctssd' on 'node1' succeeded&lt;br /&gt;clscfg: -install mode specified&lt;br /&gt;Successfully accumulated necessary OCR keys.&lt;br /&gt;Creating OCR keys for user 'root', privgrp 'root'..&lt;br /&gt;Operation successful.&lt;br /&gt;CRS-2672: Attempting to start 'ora.crsd' on 'node1'&lt;br /&gt;CRS-2676: Start of 'ora.crsd' on 'node1' succeeded&lt;br /&gt;Now formatting voting disk: /u05/cludata/votedisk1.&lt;br /&gt;Now formatting voting disk: /u01/oradata/orcl/cludata/votedisk2.&lt;br /&gt;Now formatting voting disk: /u02/oradata/orcl/cludata/votedisk3.&lt;br /&gt;CRS-4603: Successful addition of voting disk /u05/cludata/votedisk1.&lt;br /&gt;CRS-4603: Successful addition of voting disk /u01/oradata/orcl/cludata/votedisk2.&lt;br /&gt;CRS-4603: Successful addition of voting disk /u02/oradata/orcl/cludata/votedisk3.&lt;br /&gt;##  STATE    File Universal Id                File Name Disk group&lt;br /&gt;--  -----    -----------------                --------- ---------&lt;br /&gt; 1. ONLINE   a893117617e74ffebfd7a379396f281d (/u05/cludata/votedisk1) []&lt;br /&gt; 2. ONLINE   018eafc00dfd4fa9bf568fa245581dcf (/u01/oradata/orcl/cludata/votedisk2) []&lt;br /&gt; 3. ONLINE   0460f0a8560d4f0abf624c47870654fd (/u02/oradata/orcl/cludata/votedisk3) []&lt;br /&gt;Located 3 voting disk(s).&lt;br /&gt;CRS-2673: Attempting to stop 'ora.crsd' on 'node1'&lt;br /&gt;CRS-2677: Stop of 'ora.crsd' on 'node1' succeeded&lt;br /&gt;CRS-2673: Attempting to stop 'ora.ctssd' on 'node1'&lt;br /&gt;CRS-2677: Stop of 'ora.ctssd' on 'node1' succeeded&lt;br /&gt;CRS-2673: Attempting to stop 'ora.cssdmonitor' on 'node1'&lt;br /&gt;CRS-2677: Stop of 'ora.cssdmonitor' on 'node1' succeeded&lt;br /&gt;CRS-2673: Attempting to stop 'ora.cssd' on 'node1'&lt;br /&gt;CRS-2677: Stop of 'ora.cssd' on 'node1' succeeded&lt;br /&gt;CRS-2673: Attempting to stop 'ora.gpnpd' on 'node1'&lt;br /&gt;CRS-2677: Stop of 'ora.gpnpd' on 'node1' succeeded&lt;br /&gt;CRS-2673: Attempting to stop 'ora.gipcd' on 'node1'&lt;br /&gt;CRS-2677: Stop of 'ora.gipcd' on 'node1' succeeded&lt;br /&gt;CRS-2673: Attempting to stop 'ora.mdnsd' on 'node1'&lt;br /&gt;CRS-2677: Stop of 'ora.mdnsd' on 'node1' succeeded&lt;br /&gt;CRS-2672: Attempting to start 'ora.mdnsd' on 'node1'&lt;br /&gt;CRS-2676: Start of 'ora.mdnsd' on 'node1' succeeded&lt;br /&gt;CRS-2672: Attempting to start 'ora.gipcd' on 'node1'&lt;br /&gt;CRS-2676: Start of 'ora.gipcd' on 'node1' succeeded&lt;br /&gt;CRS-2672: Attempting to start 'ora.gpnpd' on 'node1'&lt;br /&gt;CRS-2676: Start of 'ora.gpnpd' on 'node1' succeeded&lt;br /&gt;CRS-2672: Attempting to start 'ora.cssdmonitor' on 'node1'&lt;br /&gt;CRS-2676: Start of 'ora.cssdmonitor' on 'node1' succeeded&lt;br /&gt;CRS-2672: Attempting to start 'ora.cssd' on 'node1'&lt;br /&gt;CRS-2672: Attempting to start 'ora.diskmon' on 'node1'&lt;br /&gt;CRS-2676: Start of 'ora.diskmon' on 'node1' succeeded&lt;br /&gt;CRS-2676: Start of 'ora.cssd' on 'node1' succeeded&lt;br /&gt;CRS-2672: Attempting to start 'ora.ctssd' on 'node1'&lt;br /&gt;CRS-2676: Start of 'ora.ctssd' on 'node1' succeeded&lt;br /&gt;CRS-2672: Attempting to start 'ora.crsd' on 'node1'&lt;br /&gt;CRS-2676: Start of 'ora.crsd' on 'node1' succeeded&lt;br /&gt;CRS-2672: Attempting to start 'ora.evmd' on 'node1'&lt;br /&gt;CRS-2676: Start of 'ora.evmd' on 'node1' succeeded&lt;br /&gt;&lt;br /&gt;node1     2010/08/27 23:36:53     /oragrid/product/11.2/cdata/node1/backup_20100827_233653.olr&lt;br /&gt;Preparing packages for installation...&lt;br /&gt;cvuqdisk-1.0.7-1&lt;br /&gt;Configure Oracle Grid Infrastructure for a Cluster ... succeeded&lt;br /&gt;Updating inventory properties for clusterware&lt;br /&gt;Starting Oracle Universal Installer...&lt;br /&gt;&lt;br /&gt;Checking swap space: must be greater than 500 MB.   Actual 12287 MB    Passed&lt;br /&gt;The inventory pointer is located at /etc/oraInst.loc&lt;br /&gt;The inventory is located at /oracle/oraInventory&lt;br /&gt;'UpdateNodeList' was successful.&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Run the same on node2&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;[root@node2 11.2]# ./root.sh&lt;br /&gt;Running Oracle 11g root.sh script...&lt;br /&gt;&lt;br /&gt;The following environment variables are set as:&lt;br /&gt;    ORACLE_OWNER= oracle&lt;br /&gt;    ORACLE_HOME=  /oragrid/product/11.2&lt;br /&gt;&lt;br /&gt;Enter the full pathname of the local bin directory: [/usr/local/bin]:&lt;br /&gt;   Copying dbhome to /usr/local/bin ...&lt;br /&gt;   Copying oraenv to /usr/local/bin ...&lt;br /&gt;   Copying coraenv to /usr/local/bin ...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Creating /etc/oratab file...&lt;br /&gt;Entries will be added to the /etc/oratab file as needed by&lt;br /&gt;Database Configuration Assistant when a database is created&lt;br /&gt;Finished running generic part of root.sh script.&lt;br /&gt;Now product-specific root actions will be performed.&lt;br /&gt;2010-08-27 23:44:15: Parsing the host name&lt;br /&gt;2010-08-27 23:44:15: Checking for super user privileges&lt;br /&gt;2010-08-27 23:44:15: User has super user privileges&lt;br /&gt;Using configuration parameter file: /oragrid/product/11.2/crs/install/crsconfig_params&lt;br /&gt;Creating trace directory&lt;br /&gt;LOCAL ADD MODE&lt;br /&gt;Creating OCR keys for user 'root', privgrp 'root'..&lt;br /&gt;Operation successful.&lt;br /&gt;Adding daemon to inittab&lt;br /&gt;CRS-4123: Oracle High Availability Services has been started.&lt;br /&gt;ohasd is starting&lt;br /&gt;CRS-4402: The CSS daemon was started in exclusive mode but found an active CSS daemon on node node1, number 1, and is terminating&lt;br /&gt;An active cluster was found during exclusive startup, restarting to join the cluster&lt;br /&gt;CRS-2672: Attempting to start 'ora.mdnsd' on 'node2'&lt;br /&gt;CRS-2676: Start of 'ora.mdnsd' on 'node2' succeeded&lt;br /&gt;CRS-2672: Attempting to start 'ora.gipcd' on 'node2'&lt;br /&gt;CRS-2676: Start of 'ora.gipcd' on 'node2' succeeded&lt;br /&gt;CRS-2672: Attempting to start 'ora.gpnpd' on 'node2'&lt;br /&gt;CRS-2676: Start of 'ora.gpnpd' on 'node2' succeeded&lt;br /&gt;CRS-2672: Attempting to start 'ora.cssdmonitor' on 'node2'&lt;br /&gt;CRS-2676: Start of 'ora.cssdmonitor' on 'node2' succeeded&lt;br /&gt;CRS-2672: Attempting to start 'ora.cssd' on 'node2'&lt;br /&gt;CRS-2672: Attempting to start 'ora.diskmon' on 'node2'&lt;br /&gt;CRS-2676: Start of 'ora.diskmon' on 'node2' succeeded&lt;br /&gt;CRS-2676: Start of 'ora.cssd' on 'node2' succeeded&lt;br /&gt;CRS-2672: Attempting to start 'ora.ctssd' on 'node2'&lt;br /&gt;CRS-2676: Start of 'ora.ctssd' on 'node2' succeeded&lt;br /&gt;CRS-2672: Attempting to start 'ora.crsd' on 'node2'&lt;br /&gt;CRS-2676: Start of 'ora.crsd' on 'node2' succeeded&lt;br /&gt;CRS-2672: Attempting to start 'ora.evmd' on 'node2'&lt;br /&gt;CRS-2676: Start of 'ora.evmd' on 'node2' succeeded&lt;br /&gt;&lt;br /&gt;node2     2010/08/27 23:47:32     /oragrid/product/11.2/cdata/node2/backup_20100827_234732.olr&lt;br /&gt;Preparing packages for installation...&lt;br /&gt;cvuqdisk-1.0.7-1&lt;br /&gt;Configure Oracle Grid Infrastructure for a Cluster ... succeeded&lt;br /&gt;Updating inventory properties for clusterware&lt;br /&gt;Starting Oracle Universal Installer...&lt;br /&gt;&lt;br /&gt;Checking swap space: must be greater than 500 MB.   Actual 12287 MB    Passed&lt;br /&gt;The inventory pointer is located at /etc/oraInst.loc&lt;br /&gt;The inventory is located at /oracle/oraInventory&lt;br /&gt;'UpdateNodeList' was successful.&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Press "OK" after running all the scripts on all the nodes.&lt;br /&gt;&lt;br /&gt;35.)&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/PTVAL9VA7Ftwdgbt9ovuKQ?feat=embedwebsite"&gt;&lt;img src="http://lh3.ggpht.com/_viek7Sw5RrM/THhUKXOhAVI/AAAAAAAABMg/1egbZn4Ej3M/s400/21.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I received the above error, this can be fixed later. Refer to the post&lt;br /&gt;&lt;a href="http://apunhiran.blogspot.com/2010/08/oracle-failed-to-initialize-gpnp.html"&gt;Oracle: Failed to initialize GPnP&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Pres "OK" and then press "Skip" on the original screen.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/sfpWH_bAvR4G4k2I8tYqzA?feat=embedwebsite"&gt;&lt;img src="http://lh5.ggpht.com/_viek7Sw5RrM/THhUKtpuBGI/AAAAAAAABMk/GpNhfwCMjRY/s400/22.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;36.)&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/S0wJill5pHpEzVgQD5Eq1A?feat=embedwebsite"&gt;&lt;img src="http://lh5.ggpht.com/_viek7Sw5RrM/THhUKsF256I/AAAAAAAABMo/xYyGYFis8CM/s400/23.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Oracle 11gr2 Grid Infrastructure for a 2 Node RAC has completed successfully.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4092304359380397372-2237115764688476227?l=apunhiran.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apunhiran.blogspot.com/feeds/2237115764688476227/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4092304359380397372&amp;postID=2237115764688476227' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/2237115764688476227'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/2237115764688476227'/><link rel='alternate' type='text/html' href='http://apunhiran.blogspot.com/2010/08/oracle-11gr2-grid-infrastructure.html' title='Oracle 11gR2 Grid Infrastructure Installation Steps'/><author><name>Apun Hiran</name><uri>http://www.blogger.com/profile/04745021360458270341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_viek7Sw5RrM/R_yAZoPGqYI/AAAAAAAAAIM/eS3VxJ7S2Pc/S220/IMG_0042.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_viek7Sw5RrM/THhhnftqAJI/AAAAAAAABNA/jTqWzRGMQRM/s72-c/1.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4092304359380397372.post-6519765269400331614</id><published>2010-08-28T05:44:00.006+05:30</published><updated>2010-08-28T05:56:56.993+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='11gr2'/><category scheme='http://www.blogger.com/atom/ns#' term='install'/><category scheme='http://www.blogger.com/atom/ns#' term='oifcfg setif'/><category scheme='http://www.blogger.com/atom/ns#' term='Failed to initialize GPnP'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Private Interconnect Configuration Assistant'/><category scheme='http://www.blogger.com/atom/ns#' term='grid'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Oracle: Failed to initialize GPnP</title><content type='html'>Received error: Failed to initialize GPnP, during Oracle 11gR2 Grid installation.&lt;br /&gt;This failure occurred in the step after running the root.sh, "Oracle Private Interconnect Configuration Assistant".&lt;br /&gt;This error occurs when oracle tries to execute "oifcfg setif".&lt;br /&gt;Error Stack:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;INFO: Started Plugin named: Oracle Private Interconnect Configuration Assistant&lt;br /&gt;INFO: Found associated job&lt;br /&gt;INFO: Starting 'Oracle Private Interconnect Configuration Assistant'&lt;br /&gt;INFO: Starting 'Oracle Private Interconnect Configuration Assistant'&lt;br /&gt;INFO:  Failed to initialize GPnP&lt;br /&gt;WARNING:&lt;br /&gt;INFO:&lt;br /&gt;INFO: Completed Plugin named: Oracle Private Interconnect Configuration Assistant&lt;br /&gt;INFO: Oracle Private Interconnect Configuration Assistant failed.&lt;br /&gt;INFO: Oracle Private Interconnect Configuration Assistant failed.&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/PTVAL9VA7Ftwdgbt9ovuKQ?feat=embedwebsite"&gt;&lt;img src="http://lh3.ggpht.com/_viek7Sw5RrM/THhUKXOhAVI/AAAAAAAABMg/1egbZn4Ej3M/s400/21.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The issue occurs when we start installation with a wrong ORA_NLS10 environment parameter. Best is to unset the variable before installation or change it to point to $GRID_HOME/nls/data:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;unset ORA_NLS10&lt;br /&gt;or &lt;br /&gt;export ORA_NLS10=$GRID_HOME/nls/data&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;After doing that run the command:&lt;br /&gt;[root@node1 oracle]# oifcfg setif -global eth1/10.100.3.0:cluster_interconnect&lt;br /&gt;[root@node2 oracle]# oifcfg setif -global eth1/10.100.3.0:cluster_interconnect&lt;br /&gt;&lt;br /&gt;Here eth1 is interconnect interface, 10.100.3.0 is the subnet for the interconnect IP address.&lt;br /&gt;&lt;br /&gt;Syntax details for oifcfg command:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;Name:&lt;br /&gt;        oifcfg - Oracle Interface Configuration Tool.&lt;br /&gt;&lt;br /&gt;Usage:  oifcfg iflist [-p [-n]]&lt;br /&gt;        oifcfg setif {-node &lt;nodename&gt; | -global} {&lt;if_name&gt;/&lt;subnet&gt;:&lt;if_type&gt;}...&lt;br /&gt;        oifcfg getif [-node &lt;nodename&gt; | -global] [ -if &lt;if_name&gt;[/&lt;subnet&gt;] [-type &lt;if_type&gt;] ]&lt;br /&gt;        oifcfg delif [{-node &lt;nodename&gt; | -global} [&lt;if_name&gt;[/&lt;subnet&gt;]]]&lt;br /&gt;        oifcfg [-help]&lt;br /&gt;&lt;br /&gt;        &lt;nodename&gt; - name of the host, as known to a communications network&lt;br /&gt;        &lt;if_name&gt;  - name by which the interface is configured in the system&lt;br /&gt;        &lt;subnet&gt;   - subnet address of the interface&lt;br /&gt;        &lt;if_type&gt;  - type of the interface { cluster_interconnect | public }&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4092304359380397372-6519765269400331614?l=apunhiran.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apunhiran.blogspot.com/feeds/6519765269400331614/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4092304359380397372&amp;postID=6519765269400331614' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/6519765269400331614'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/6519765269400331614'/><link rel='alternate' type='text/html' href='http://apunhiran.blogspot.com/2010/08/oracle-failed-to-initialize-gpnp.html' title='Oracle: Failed to initialize GPnP'/><author><name>Apun Hiran</name><uri>http://www.blogger.com/profile/04745021360458270341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_viek7Sw5RrM/R_yAZoPGqYI/AAAAAAAAAIM/eS3VxJ7S2Pc/S220/IMG_0042.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_viek7Sw5RrM/THhUKXOhAVI/AAAAAAAABMg/1egbZn4Ej3M/s72-c/21.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4092304359380397372.post-5660554921710995722</id><published>2010-08-18T05:05:00.009+05:30</published><updated>2010-08-26T04:15:51.723+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ORA-12060'/><category scheme='http://www.blogger.com/atom/ns#' term='with reduced precision'/><category scheme='http://www.blogger.com/atom/ns#' term='prebuilt table'/><category scheme='http://www.blogger.com/atom/ns#' term='materialized view'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><category scheme='http://www.blogger.com/atom/ns#' term='mview'/><title type='text'>ORA-12060: During Mview Creation</title><content type='html'>Well I had racked my brains a lot to create an mview on a large table across geographies, and it failed a few times.&lt;br /&gt;Plus to increase my problem the character set was also different between the two DBs.:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Master Site:&lt;/span&gt;&lt;br /&gt;SQL&gt; select * from nls_database_parameters@link1 where PARAMETER='NLS_CHARACTERSET';&lt;br /&gt;PARAMETER                      VALUE&lt;br /&gt;------------------------------ ------------------------------&lt;br /&gt;NLS_CHARACTERSET               WE8MSWIN1252&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Mview Site:&lt;/span&gt;&lt;br /&gt;SQL&gt; select * from nls_database_parameters where PARAMETER='NLS_CHARACTERSET';&lt;br /&gt;PARAMETER                      VALUE&lt;br /&gt;------------------------------ ------------------------------&lt;br /&gt;NLS_CHARACTERSET               AL32UTF8&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;I started by creating the mview directly:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;create materialized view user.test1&lt;br /&gt;ORGANIZATION HEAP PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING&lt;br /&gt;STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645&lt;br /&gt;PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)&lt;br /&gt;TABLESPACE "users"&lt;br /&gt;PARALLEL 4&lt;br /&gt;BUILD IMMEDIATE&lt;br /&gt;REFRESH FAST ON DEMAND&lt;br /&gt;WITH PRIMARY KEY&lt;br /&gt;START WITH sysdate+0 NEXT SYSDATE+6/24&lt;br /&gt;USING DEFAULT LOCAL ROLLBACK SEGMENT&lt;br /&gt;DISABLE QUERY REWRITE&lt;br /&gt;AS  select  * from user.test1@link1;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;This ran for ever and finally failed with &lt;span style="font-weight:bold;"&gt;ORA-01555&lt;/span&gt;, as expected, as it ran for almost a day.&lt;br /&gt;To give a background the size of the table is 1G.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Then I finally decided to use the PREBUILT Table option:&lt;/span&gt;&lt;br /&gt;So I took an export backup of that table in the master site and imported it in mview site.&lt;br /&gt;And then tried to recreate the mview with PREBUILT TABLE option:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;create materialized view user.test1 ON PREBUILT TABLE&lt;br /&gt;refresh fast with primary key for update&lt;br /&gt;as&lt;br /&gt;select col1,col2 from user.test1@link1;&lt;br /&gt;&lt;br /&gt;Which failed with:&lt;br /&gt;Col1,&lt;br /&gt;*&lt;br /&gt;ERROR at line 6:&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;ORA-12060: shape of prebuilt table does not match definition query&lt;/span&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Well I checked the table structure and realized that the col size for char data type had become 2 folds as during import, due to character set conversion this happens.&lt;br /&gt;&lt;br /&gt;Then I searched metalink, etc, and found an options called "WITH REDUCED PRECISION", to be used when there is col mis-match.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;create materialized view user.test1 ON PREBUILT TABLE WITH REDUCED PRECISION&lt;br /&gt;refresh fast with primary key for update&lt;br /&gt;as&lt;br /&gt;select col1,col2 from user.test1@link1;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;But it still failed:&lt;br /&gt;&lt;br /&gt;create materialized view user.test1 ON PREBUILT TABLE WITH REDUCED PRECISION&lt;br /&gt;            *&lt;br /&gt;ERROR at line 1:&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;ORA-12060: shape of prebuilt table does not match definition query&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;What resolved the problem is removing &lt;span style="font-weight:bold;"&gt;"with primary key for update"&lt;/span&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;create materialized view user.test1 ON PREBUILT TABLE WITH REDUCED PRECISION&lt;br /&gt;refresh fast on demand&lt;br /&gt;as&lt;br /&gt;select col1,col2 from user.test1@link1;&lt;br /&gt;&lt;br /&gt;Materialized view created.&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4092304359380397372-5660554921710995722?l=apunhiran.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apunhiran.blogspot.com/feeds/5660554921710995722/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4092304359380397372&amp;postID=5660554921710995722' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/5660554921710995722'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/5660554921710995722'/><link rel='alternate' type='text/html' href='http://apunhiran.blogspot.com/2010/08/ora-12060-during-mview-creation.html' title='ORA-12060: During Mview Creation'/><author><name>Apun Hiran</name><uri>http://www.blogger.com/profile/04745021360458270341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_viek7Sw5RrM/R_yAZoPGqYI/AAAAAAAAAIM/eS3VxJ7S2Pc/S220/IMG_0042.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4092304359380397372.post-8231898035174356499</id><published>2009-09-23T16:43:00.000+05:30</published><updated>2009-09-23T16:45:31.695+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ONS'/><category scheme='http://www.blogger.com/atom/ns#' term='10g'/><category scheme='http://www.blogger.com/atom/ns#' term='onsctl'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Configuring and starting ons daemon in non RAC DB</title><content type='html'>&lt;span style="font-weight:bold;"&gt;&lt;span style="font-style:italic;"&gt;Mostly used in case of Data Guard.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;1.) Change directory to $ORACLE_HOME/opmn/conf&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[oracle@TEST conf]$ pwd&lt;br /&gt;/opt/app/oracle/10.2/opmn/conf&lt;br /&gt;[oracle@TEST conf]$ ls -lrt&lt;br /&gt;total 12&lt;br /&gt;-rw-r--r--  1 oracle oinstall 71 Feb 21  2006 ons.config.tmp&lt;br /&gt;-rw-------  1 oracle oinstall 44 Oct  8  2008 ons.config.backup.10203&lt;br /&gt;-rw-------  1 oracle oinstall 44 Oct  8  2008 ons.config&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;2.) Update the ons configuration file. (ons.config)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;[oracle@TEST conf]$ more ons.config&lt;br /&gt;localport=6100&lt;br /&gt;remoteport=4200&lt;br /&gt;loglevel=3&lt;br /&gt;nodes=10.224.57.68:6200,10.224.56.38:6200  --&gt; Mention the primary and standby servers with their ons ports&lt;br /&gt;walletfile=$ORACLE_HOME/opmn/conf/ssl.wlt/default --&gt; To enable SSL access between the ons services.&lt;br /&gt;&lt;br /&gt;---The nodes parameter points to the primary and standby hosts followed by the remote port for the ONS daemon running on that port.&lt;br /&gt;---The walletfile parameters point to the walletfile name. A wallet file is used by the Oracle Secure Sockets Layer (SSL) to store SSL certificates. If a wallet file is specified to ONS, it will use SSL when communicating with other ONS instances and require SSL certificate authentication from all ONS instances that try to connect to it. This means that if you want to turn on SSL for one ONS instance, then you must turn it on for all instances that are connected. Oracle recommends using SSL for all ONS communications.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;3.) Start ONS&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;[oracle@TEST conf]$ onsctl start&lt;br /&gt;onsctl: ons started&lt;br /&gt;&lt;br /&gt;Configure and start ONS on both primary and standby.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4092304359380397372-8231898035174356499?l=apunhiran.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apunhiran.blogspot.com/feeds/8231898035174356499/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4092304359380397372&amp;postID=8231898035174356499' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/8231898035174356499'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/8231898035174356499'/><link rel='alternate' type='text/html' href='http://apunhiran.blogspot.com/2009/09/configuring-and-starting-ons-daemon-in.html' title='Configuring and starting ons daemon in non RAC DB'/><author><name>Apun Hiran</name><uri>http://www.blogger.com/profile/04745021360458270341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_viek7Sw5RrM/R_yAZoPGqYI/AAAAAAAAAIM/eS3VxJ7S2Pc/S220/IMG_0042.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4092304359380397372.post-49265461078836211</id><published>2009-09-19T20:46:00.003+05:30</published><updated>2009-09-19T21:07:43.282+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ORA-16817'/><category scheme='http://www.blogger.com/atom/ns#' term='fast start'/><category scheme='http://www.blogger.com/atom/ns#' term='ORA-16570'/><category scheme='http://www.blogger.com/atom/ns#' term='failover'/><category scheme='http://www.blogger.com/atom/ns#' term='ORA-16627'/><category scheme='http://www.blogger.com/atom/ns#' term='11g'/><category scheme='http://www.blogger.com/atom/ns#' term='data guard'/><category scheme='http://www.blogger.com/atom/ns#' term='ORA-12514'/><category scheme='http://www.blogger.com/atom/ns#' term='switch over'/><category scheme='http://www.blogger.com/atom/ns#' term='10g'/><category scheme='http://www.blogger.com/atom/ns#' term='ORA-16608'/><category scheme='http://www.blogger.com/atom/ns#' term='ORA-16573'/><category scheme='http://www.blogger.com/atom/ns#' term='ORA-16826'/><category scheme='http://www.blogger.com/atom/ns#' term='dataguard'/><category scheme='http://www.blogger.com/atom/ns#' term='ORA-02097'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><category scheme='http://www.blogger.com/atom/ns#' term='ORA-16795'/><category scheme='http://www.blogger.com/atom/ns#' term='fast start failover'/><title type='text'>How To: Configure Data Guard Fast-Start Failover Step By Step</title><content type='html'>&lt;span style="font-weight:bold;"&gt;Note: Physcial Standby should be working fine and Data Guard Broker has already been configured and working fine.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://apunhiran.blogspot.com/2009/09/step-by-step-data-guard-setup-for.html"&gt;How to Setup Data Guard&lt;/a&gt;&lt;br /&gt;&lt;a href="http://apunhiran.blogspot.com/2009/09/how-to-configure-data-guard-broker.html"&gt;How To: Configure Data Guard Broker&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;1.) Set Local_Listener (Primary):&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;For the database to register with the data guard listener we need to get the local_listener parameter.&lt;br /&gt;SQL&gt; show parameter local_listener&lt;br /&gt;NAME                                 TYPE        VALUE&lt;br /&gt;------------------------------------ ----------- ------------------------------&lt;br /&gt;local_listener                       string&lt;br /&gt;&lt;br /&gt;SQL&gt; alter system set local_listener='(ADDRESS = (PROTOCOL = TCP)(HOST = 10.224.56.38)(PORT = 1521))';&lt;br /&gt;System altered.&lt;br /&gt;&lt;br /&gt;SQL&gt; alter system register;&lt;br /&gt;System altered.&lt;br /&gt;&lt;br /&gt;SQL&gt; show parameter local_listener&lt;br /&gt;NAME                                 TYPE        VALUE&lt;br /&gt;------------------------------------ ----------- ------------------------------&lt;br /&gt;local_listener                       string      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.224.56.38)(PORT = 1521))&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;2.) Verify force logging:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;SQL&gt; select force_logging from v$database;&lt;br /&gt;FOR&lt;br /&gt;---&lt;br /&gt;YES&lt;br /&gt;&lt;br /&gt;Should be YES.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;3.) Should use spfile:&lt;/span&gt;&lt;br /&gt;SQL&gt; show parameter spfile;&lt;br /&gt;NAME                                 TYPE        VALUE&lt;br /&gt;------------------------------------ ----------- ------------------------------&lt;br /&gt;spfile                               string      /opt/app/oracle/10.2/dbs/spfileorcl.ora&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;4.) Should use a password file:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;SQL&gt; select * from v$pwfile_users;&lt;br /&gt;USERNAME                   SYSDB SYSOP&lt;br /&gt;----------------------------------------&lt;br /&gt;SYS                            TRUE  TRUE&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;5.) Remote login should be enabled:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;SQL&gt; show parameter remote_login_passwordfile&lt;br /&gt;NAME                                 TYPE        VALUE&lt;br /&gt;-------------------------------------------------&lt;br /&gt;remote_login_passwordfile      string      EXCLUSIVE&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;6.) DB_UNIQUE_NAME should be set:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;SQL&gt; show parameter db_unique_name&lt;br /&gt;NAME                                 TYPE        VALUE&lt;br /&gt;-------------------------------------------------&lt;br /&gt;db_unique_name                   string      orcl&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;7.) Flash Recovery Ares should be set:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;SQL&gt; show parameter db_recovery_file&lt;br /&gt;NAME                                 TYPE         VALUE&lt;br /&gt;-----------------------------------------------------------------------------&lt;br /&gt;db_recovery_file_dest            string        /opt/app/oracle/flash_recovery_area&lt;br /&gt;db_recovery_file_dest_size      big integer  2G&lt;br /&gt;&lt;br /&gt;To set it, use the following commands:&lt;br /&gt;&lt;br /&gt;alter system set db_recovery_file_dest_size = 2g scope=both;&lt;br /&gt;alter system set db_recovery_file_dest = '&lt;directory_location&gt;' scope=both;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;8.) Standby file management should be AUTO:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;SQL&gt; show parameter standby_file_management&lt;br /&gt;NAME                                 TYPE        VALUE&lt;br /&gt;--------------------------------------------------&lt;br /&gt;standby_file_management       string      MANUAL&lt;br /&gt;&lt;br /&gt;SQL&gt; alter system set standby_file_management=auto;&lt;br /&gt;System altered.&lt;br /&gt;&lt;br /&gt;SQL&gt; show parameter standby_file_management&lt;br /&gt;NAME                                 TYPE        VALUE&lt;br /&gt;-------------------------------------------------------&lt;br /&gt;standby_file_management       string      AUTO&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;9.) log_archive_config should be set:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;SQL&gt; show parameter log_archive_config&lt;br /&gt;NAME                                 TYPE        VALUE&lt;br /&gt;-----------------------------------------------------------------------------&lt;br /&gt;log_archive_config                string      DG_CONFIG=(orcl,orcl1)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;10.) Standby Redo logs should be created:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;SQL&gt; select group#, type, member from v$logfile where type = 'STANDBY';&lt;br /&gt;GROUP#    TYPE    MEMBER&lt;br /&gt;-------------------------------------------------------------------------------------&lt;br /&gt;3        STANDBY /opt/app/oracle/flash_recovery_area/orcl/onlinelog/o1_mf_3_5bvzkzgs_.log&lt;br /&gt;4        STANDBY /opt/app/oracle/flash_recovery_area/orcl/onlinelog/o1_mf_4_5bvzl8hf_.log&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;10.) Enable flash back database:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;alter database flashback on&lt;br /&gt;*&lt;br /&gt;ERROR at line 1:&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;ORA-38759: Database must be mounted by only one instance and not open.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Well need to mount the database to run this command.&lt;br /&gt;&lt;br /&gt;SQL&gt; shutdown immediate;&lt;br /&gt;Database closed.&lt;br /&gt;Database dismounted.&lt;br /&gt;ORACLE instance shut down.&lt;br /&gt;SQL&gt; startup mount&lt;br /&gt;ORACLE instance started.&lt;br /&gt;&lt;br /&gt;Total System Global Area 2684354560 bytes&lt;br /&gt;Fixed Size                  2086352 bytes&lt;br /&gt;Variable Size             570427952 bytes&lt;br /&gt;Database Buffers         2097152000 bytes&lt;br /&gt;Redo Buffers               14688256 bytes&lt;br /&gt;Database mounted.&lt;br /&gt;SQL&gt; alter database flashback on;&lt;br /&gt;Database altered.&lt;br /&gt;&lt;br /&gt;SQL&gt; alter system set db_flashback_retention_target = 60 scope=both;&lt;br /&gt;System altered.&lt;br /&gt;&lt;br /&gt;SQL&gt; select flashback_on from v$database;&lt;br /&gt;FLASHBACK_ON&lt;br /&gt;------------------&lt;br /&gt;YES&lt;br /&gt;&lt;br /&gt;SQL&gt; show parameter db_flashback_retention_target&lt;br /&gt;NAME                                 TYPE        VALUE&lt;br /&gt;------------------------------------ ----------- ------------------------------&lt;br /&gt;db_flashback_retention_target        integer     60&lt;br /&gt;&lt;br /&gt;SQL&gt; alter database set standby database to maximize availability;&lt;br /&gt;Database altered.&lt;br /&gt;&lt;br /&gt;SQL&gt; select protection_mode from v$database;&lt;br /&gt;PROTECTION_MODE&lt;br /&gt;--------------------&lt;br /&gt;MAXIMUM AVAILABILITY&lt;br /&gt;&lt;br /&gt;Enable Flashback DB on Standby also.&lt;br /&gt;SQL&gt; alter database recover managed standby database cancel;&lt;br /&gt;Database altered.&lt;br /&gt;&lt;br /&gt;SQL&gt; alter database flashback on;&lt;br /&gt;Database altered.&lt;br /&gt;&lt;br /&gt;SQL&gt; alter system set db_flashback_retention_target = 60 scope=both;&lt;br /&gt;System altered.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;11.) Muliplex the data broker configuration files in 2 different disk, for protection.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;SQL&gt; show parameter dg_broker_config_file&lt;br /&gt;NAME                                 TYPE        VALUE&lt;br /&gt;------------------------------------ ----------- ------------------------------&lt;br /&gt;dg_broker_config_file1               string      /opt/app/oracle/10.2/dbs/dr1orcl.dat&lt;br /&gt;dg_broker_config_file2               string      /opt/app/oracle/10.2/dbs/dr2orcl.dat&lt;br /&gt;&lt;br /&gt;SQL&gt; alter system set dg_broker_config_file2='/opt/app/oracle/oradata/orcl/dr2orcl.dat';&lt;br /&gt;alter system set dg_broker_config_file2='/opt/app/oracle/oradata/orcl/dr2orcl.dat'&lt;br /&gt;*&lt;br /&gt;ERROR at line 1:&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;ORA-02097: parameter cannot be modified because specified value is invalid&lt;br /&gt;ORA-16573: attempt to change configuration file for an enabled broker configuration&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Well looks like the above problem is not easy to resolve. We need to disable the configuration, and also stop DMON process by doing alter system set dg_broker_start='false';  &lt;br /&gt;&lt;br /&gt;And then we can change the location of these files. Well I am not doing that right now. As I saw a bug filed on metalink that there are errors in restarting DMON after change in the file location. (BUG:5955795).&lt;br /&gt;&lt;br /&gt;Well now doing the change of location.&lt;br /&gt;SQL&gt; ALTER SYSTEM SET DG_BROKER_START=FALSE;&lt;br /&gt;&lt;br /&gt;System altered.&lt;br /&gt;[oracle@APP3 dbs]$ mv dr2orcl.dat old.dr2orcl.dat&lt;br /&gt;[oracle@APP3 dbs]$ mv dr1orcl.dat old.dr1orcl.dat&lt;br /&gt;&lt;br /&gt;SQL&gt; alter system set dg_broker_config_file2='/opt/app/oracle/oradata/orcl/dr2orcl.dat';&lt;br /&gt;System altered.&lt;br /&gt;&lt;br /&gt;SQL&gt; ALTER SYSTEM SET DG_BROKER_START=TRUE;&lt;br /&gt;System altered.&lt;br /&gt;&lt;br /&gt;SQL&gt; show parameter dg_broker_config_file&lt;br /&gt;NAME                                 TYPE        VALUE&lt;br /&gt;-----------------------------------------------------------------------------&lt;br /&gt;dg_broker_config_file1           string      /opt/app/oracle/10.2/dbs/dr1regdb.dat&lt;br /&gt;dg_broker_config_file2           string      /opt/app/oracle/oradata/orcl/dr2orcl.dat&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;DGMGRL&gt; create configuration 'DBTEST' as primary database is 'orcl' connect identifier is 'orcl';&lt;br /&gt;Configuration "DBTEST" created with primary database "orcl"&lt;br /&gt;DGMGRL&gt; show configuration&lt;br /&gt;&lt;br /&gt;Configuration&lt;br /&gt;Name:                DBTEST&lt;br /&gt;Enabled:             NO&lt;br /&gt;Protection Mode:     MaxPerformance&lt;br /&gt;Fast-Start Failover: DISABLED&lt;br /&gt;Databases:&lt;br /&gt;orcl - Primary database&lt;br /&gt;&lt;br /&gt;Current status for "DBTEST":&lt;br /&gt;DISABLED&lt;br /&gt;&lt;br /&gt;DGMGRL&gt; ALTER CONFIGURATION SET PROTECTION MODE AS MAXAVAILABILITY ;&lt;br /&gt;Succeeded.&lt;br /&gt;DGMGRL&gt; show configuration&lt;br /&gt;&lt;br /&gt;Configuration&lt;br /&gt;Name:                DBTEST&lt;br /&gt;Enabled:             NO&lt;br /&gt;Protection Mode:     MaxAvailability&lt;br /&gt;Fast-Start Failover: DISABLED&lt;br /&gt;Databases:&lt;br /&gt;orcl - Primary database&lt;br /&gt;&lt;br /&gt;Current status for "DBTEST":&lt;br /&gt;DISABLED&lt;br /&gt;&lt;br /&gt;FYI very useful metalink 808783.1 (Step By Step How to Recreate Dataguard Broker Configuration)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;12.) Edit database setting in data guard like&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;DGMGRL&gt; edit database orcl set property LogXptMode='SYNC';&lt;br /&gt;Property "logxptmode" updated&lt;br /&gt;DGMGRL&gt; edit database orcl set property NetTimeout=10;&lt;br /&gt;Property "nettimeout" updated&lt;br /&gt;DGMGRL&gt;  edit database orcl1 set property NetTimeout=10;&lt;br /&gt;Property "nettimeout" updated&lt;br /&gt;DGMGRL&gt; enable configuration&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Error: ORA-16627: operation disallowed since no standby databases would remain to support protection mode&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Enable the LogXptMode to SYNC for standby also.&lt;br /&gt;DGMGRL&gt; edit database orcl1 set property LogXptMode='SYNC';&lt;br /&gt;Property "logxptmode" updated&lt;br /&gt;&lt;br /&gt;DGMGRL&gt; enable configuration&lt;br /&gt;Operation requires shutdown of instance "orcl" on database "orcl"&lt;br /&gt;Shutting down instance "orcl"...&lt;br /&gt;Database closed.&lt;br /&gt;Database dismounted.&lt;br /&gt;ORACLE instance shut down.&lt;br /&gt;Operation requires startup of instance "orcl" on database "orcl"&lt;br /&gt;&lt;br /&gt;Startup the DB manually.&lt;br /&gt;&lt;br /&gt;We I had some more errors:&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Warning: ORA-16608: one or more databases have warnings&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Error: ORA-16795: database resource guard detects that database re-creation is required&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;i did&lt;br /&gt;DGMGRL&gt; enable resource orcl1&lt;br /&gt;Enabled.&lt;br /&gt;&lt;br /&gt;Well did not help. I problem was grave, I needed standby redo log files in the standby DB also.&lt;br /&gt;SQL&gt; alter database recover managed standby database cancel;&lt;br /&gt;Database altered.&lt;br /&gt;&lt;br /&gt;SQL&gt; alter database add standby logfile group 3 size 50M;&lt;br /&gt;Database altered.&lt;br /&gt;&lt;br /&gt;SQL&gt; alter database add standby logfile group 4  size 50M;&lt;br /&gt;Database altered.&lt;br /&gt;&lt;br /&gt;GROUP# STATUS  TYPE MEMBER                 IS_&lt;br /&gt;--------------------------------------------------------------------------------- ---&lt;br /&gt;1         ONLINE  /home/oracle/oradata/orcl/redo01.log                          NO&lt;br /&gt;2         ONLINE  /home/oracle/oradata/orcl/redo02.log                          NO&lt;br /&gt;3         STANDBY /home/oracle/oradata/flash_recovery_area/orcl/orcl1/onlinelog/o1_mf_3_5c3kdj01_.log   YES&lt;br /&gt;4         STANDBY /home/oracle/oradata/flash_recovery_area/orcl/orcl1/onlinelog/o1_mf_4_5c3kdw63_.log  YES&lt;br /&gt;&lt;br /&gt;I decide to start redo apply !!&lt;br /&gt;SQL&gt; ALTER DATABASE RECOVER  MANAGED STANDBY DATABASE USING CURRENT LOGFILE disconnect;&lt;br /&gt;&lt;br /&gt;Database altered.&lt;br /&gt;&lt;br /&gt;Well some more errors: in data guard log.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;RSM0: HEALTH CHECK WARNING: ORA-16826: apply service state is inconsistent with the DelayMins property&lt;br /&gt;&lt;/span&gt;DGMGRL&gt; show site verbose orcl&lt;br /&gt;Site&lt;br /&gt;Name:                          'orcl'&lt;br /&gt;Hostname:                      'APP3'&lt;br /&gt;Instance name:                 'orcl'&lt;br /&gt;Service Name:                  'orcl'&lt;br /&gt;Standby Type:                  'physical'&lt;br /&gt;Enabled:                       'yes'&lt;br /&gt;Required:                      'yes'&lt;br /&gt;Default state:                 'PRIMARY'&lt;br /&gt;Intended state:                'PRIMARY'&lt;br /&gt;PFILE:                         ''&lt;br /&gt;Number of resources:  1&lt;br /&gt;Resources:&lt;br /&gt;Name: orcl (default) (verbose name='orcl')&lt;br /&gt;Current status for "orcl":&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Warning: ORA-16570: operation requires restart of database "orcl"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Need to restart the primary DB.&lt;br /&gt;Whenever you see any error in the "show configuration" output. Check "show site verbose &lt;sitename&gt;" to find which site has what error.&lt;br /&gt;Well after the restart of the primary database:&lt;br /&gt;DGMGRL&gt; show configuration&lt;br /&gt;&lt;br /&gt;Configuration&lt;br /&gt;Name:                DBTEST&lt;br /&gt;Enabled:             YES&lt;br /&gt;Protection Mode:     MaxAvailability&lt;br /&gt;Fast-Start Failover: ENABLED&lt;br /&gt;Databases:&lt;br /&gt;orcl    - Primary database&lt;br /&gt;orcl1 - Physical standby database&lt;br /&gt;- Fast-Start Failover target&lt;br /&gt;&lt;br /&gt;Current status for "DBTEST":&lt;br /&gt;SUCCESS&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;13.) Enable Fast-start failover:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;DGMGRL&gt; enable fast_start failover;&lt;br /&gt;Enabled.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;14.) Start Observer:&lt;/span&gt;&lt;br /&gt;Idealy observer should be started on another host, to observe the primary, as if the host goes down it can monitor the outage and do specify actions.&lt;br /&gt;DGMGRL&gt; start observer;&lt;br /&gt;Observer started&lt;br /&gt;The session will seem to hang. You can do a control C. Or create and run the script as nohup.&lt;br /&gt;eg.&lt;br /&gt;#!/bin/sh&lt;br /&gt;&lt;br /&gt;dgmgrl sys/oracle &lt;&lt;!&lt;br /&gt;start observer;&lt;br /&gt;!&lt;br /&gt;Another Way:&lt;br /&gt;CentOS4.4-64:wrpws:oracle &gt; nohup dgmgrl sys/oracle@orcl  "start observer file='$ORACLE_HOME/dbs/fsfo.dat'" -logfile $HOME/observer.log &amp;&lt;br /&gt;&lt;br /&gt;And another way to start:&lt;br /&gt;[oracle@APP3 scripts]$ dgmgrl -logfile $HOME/observer.log sys/oracle@orcl "start observer" &amp;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;15. Lets test the configuration:&lt;/span&gt;&lt;br /&gt;SQL&gt; select FS_FAILOVER_STATUS,FS_FAILOVER_CURRENT_TARGET,FS_FAILOVER_THRESHOLD,FS_FAILOVER_OBSERVER_PRESENT,FS_FAILOVER_OBSERVER_HOST from v$database;&lt;br /&gt;&lt;br /&gt;FS_FAILOVER_STATUS    FS_FAILOVER_CURRENT_TARGET     FS_FAILOVER_THRESHOLD FS_FAIL FS_FAILOVER_OBSERVER_HOST&lt;br /&gt;--------------------- ------------------------------ --------------------- ------- ------------------------------&lt;br /&gt;SYNCHRONIZED          orcl1                                          30 YES     wrpws&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Switchover in both directions:&lt;br /&gt;DGMGRL for Linux: Version 10.2.0.4.0 - 64bit Production&lt;br /&gt;&lt;br /&gt;Copyright (c) 2000, 2005, Oracle. All rights reserved.&lt;br /&gt;&lt;br /&gt;Welcome to DGMGRL, type "help" for information.&lt;br /&gt;Connected.&lt;br /&gt;DGMGRL&gt; show configuration&lt;br /&gt;&lt;br /&gt;Configuration&lt;br /&gt;Name:                DBTEST&lt;br /&gt;Enabled:             YES&lt;br /&gt;Protection Mode:     MaxAvailability&lt;br /&gt;Fast-Start Failover: ENABLED&lt;br /&gt;Databases:&lt;br /&gt;orcl    - Primary database&lt;br /&gt;orcl1 - Physical standby database&lt;br /&gt;- Fast-Start Failover target&lt;br /&gt;&lt;br /&gt;Current status for "DBTEST":&lt;br /&gt;SUCCESS&lt;br /&gt;&lt;br /&gt;DGMGRL&gt; switchover to orcl1;&lt;br /&gt;Performing switchover NOW, please wait...&lt;br /&gt;Operation requires shutdown of instance "orcl" on database "orcl"&lt;br /&gt;Shutting down instance "orcl"...&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;ORA-01109: database not open&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Database dismounted.&lt;br /&gt;ORACLE instance shut down.&lt;br /&gt;Operation requires shutdown of instance "orcl" on database "orcl1"&lt;br /&gt;Shutting down instance "orcl"...&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;ORA-01109: database not open&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Database dismounted.&lt;br /&gt;ORACLE instance shut down.&lt;br /&gt;Operation requires startup of instance "orcl" on database "orcl"&lt;br /&gt;Starting instance "orcl"...&lt;br /&gt;Unable to connect to database&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;ORA-12514: TNS:listener does not currently know of service requested in connect descriptor&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Failed.&lt;br /&gt;You are no longer connected to ORACLE&lt;br /&gt;Please connect again.&lt;br /&gt;Unable to start instance "orcl"&lt;br /&gt;You must start instance "orcl" manually&lt;br /&gt;Operation requires startup of instance "orcl" on database "orcl1"&lt;br /&gt;You must start instance "orcl" manually&lt;br /&gt;Switchover succeeded, new primary is "orcl1"&lt;br /&gt;&lt;br /&gt;I had to manually start up the databases to see if they switched well. They did reverse the roles both sides.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Checked metalink note:    308943.1 to resolve the above problem.&lt;/span&gt;&lt;br /&gt;The listener.ora entries:&lt;br /&gt;SID_LIST_LISTENER =&lt;br /&gt;(SID_LIST =&lt;br /&gt;(SID_DESC =&lt;br /&gt;(GLOBAL_DBNAME = orcl)&lt;br /&gt;(ORACLE_HOME = /home/oracle/10.2)&lt;br /&gt;(SID_NAME = orcl)&lt;br /&gt;(SERVICE_NAME = orcl1)&lt;br /&gt;)&lt;br /&gt;(SID_DESC =&lt;br /&gt;(GLOBAL_DBNAME = orcl1_DGMGRL) ##---&gt;Should be db_unique_name_DGMGRL.db_domain&lt;br /&gt;(ORACLE_HOME = /home/oracle/10.2)&lt;br /&gt;(SID_NAME = orcl)&lt;br /&gt;(SERVICE_NAME = orcl1)&lt;br /&gt;)&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;After fixing the listener issue, the error was rectified and the switchover was working seemlessly.&lt;br /&gt;DGMGRL&gt; switchover to orcl1;&lt;br /&gt;Performing switchover NOW, please wait...&lt;br /&gt;Operation requires shutdown of instance "orcl" on database "orcl"&lt;br /&gt;Shutting down instance "orcl"...&lt;br /&gt;ORA-01109: database not open&lt;br /&gt;&lt;br /&gt;Database dismounted.&lt;br /&gt;ORACLE instance shut down.&lt;br /&gt;Operation requires shutdown of instance "orcl" on database "orcl1"&lt;br /&gt;Shutting down instance "orcl"...&lt;br /&gt;ORA-01109: database not open&lt;br /&gt;&lt;br /&gt;Database dismounted.&lt;br /&gt;ORACLE instance shut down.&lt;br /&gt;Operation requires startup of instance "orcl" on database "orcl"&lt;br /&gt;Starting instance "orcl"...&lt;br /&gt;ORACLE instance started.&lt;br /&gt;Database mounted.&lt;br /&gt;Operation requires startup of instance "orcl" on database "orcl1"&lt;br /&gt;Starting instance "orcl"...&lt;br /&gt;ORACLE instance started.&lt;br /&gt;Database mounted.&lt;br /&gt;Switchover succeeded, new primary is "orcl1"&lt;br /&gt;DGMGRL&gt; show configuration&lt;br /&gt;&lt;br /&gt;Configuration&lt;br /&gt;Name:                DBTEST&lt;br /&gt;Enabled:             YES&lt;br /&gt;Protection Mode:     MaxAvailability&lt;br /&gt;Fast-Start Failover: ENABLED&lt;br /&gt;Databases:&lt;br /&gt;orcl    - Physical standby database&lt;br /&gt;- Fast-Start Failover target&lt;br /&gt;orcl1 - Primary database&lt;br /&gt;&lt;br /&gt;Current status for "DBTEST":&lt;br /&gt;SUCCESS&lt;br /&gt;&lt;br /&gt;Switchover Back to the Primary:&lt;br /&gt;&lt;br /&gt;DGMGRL&gt; switchover to orcl;&lt;br /&gt;Performing switchover NOW, please wait...&lt;br /&gt;Operation requires shutdown of instance "orcl" on database "orcl1"&lt;br /&gt;Shutting down instance "orcl"...&lt;br /&gt;ORA-01109: database not open&lt;br /&gt;&lt;br /&gt;Database dismounted.&lt;br /&gt;ORACLE instance shut down.&lt;br /&gt;Operation requires shutdown of instance "orcl" on database "orcl"&lt;br /&gt;Shutting down instance "orcl"...&lt;br /&gt;ORA-01109: database not open&lt;br /&gt;&lt;br /&gt;Database dismounted.&lt;br /&gt;ORACLE instance shut down.&lt;br /&gt;Operation requires startup of instance "orcl" on database "orcl1"&lt;br /&gt;Starting instance "orcl"...&lt;br /&gt;ORACLE instance started.&lt;br /&gt;Database mounted.&lt;br /&gt;Operation requires startup of instance "orcl" on database "orcl"&lt;br /&gt;Starting instance "orcl"...&lt;br /&gt;ORACLE instance started.&lt;br /&gt;Database mounted.&lt;br /&gt;Switchover succeeded, new primary is "orcl"&lt;br /&gt;DGMGRL&gt;&lt;br /&gt;&lt;br /&gt;This completes the testing for switchover.&lt;br /&gt;Its takes about 2.5 mins to switchover.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;span style="font-style:italic;"&gt;Now the testing for Failover:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Check that there is enough flashback data available in the primary database, atleast 30-40 mins.&lt;br /&gt;&lt;br /&gt;SQL&gt; select (sysdate - oldest_flashback_time)*24*60 as history from v$flashback_database_log;&lt;br /&gt;&lt;br /&gt;HISTORY&lt;br /&gt;----------&lt;br /&gt;486.133333&lt;br /&gt;&lt;br /&gt;Lets create a table and put some data to see if there is any data loss in the failover.&lt;br /&gt;&lt;br /&gt;SQL&gt; create table x as select * from all_objects;&lt;br /&gt;&lt;br /&gt;Table created.&lt;br /&gt;&lt;br /&gt;SQL&gt; select count(*) from x;&lt;br /&gt;&lt;br /&gt;COUNT(*)&lt;br /&gt;----------&lt;br /&gt;9915&lt;br /&gt;&lt;br /&gt;SQL&gt; shutdown abort;&lt;br /&gt;ORACLE instance shut down.&lt;br /&gt;SQL&gt; exit&lt;br /&gt;&lt;br /&gt;Observer Log:&lt;br /&gt;&lt;br /&gt;[W000 09/17 09:53:56.79] Failed to start the Observer.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Error: ORA-16647: could not start more than one observer&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Failed.&lt;br /&gt;&lt;br /&gt;[W000 09/17 10:02:22.38] Failed to start the Observer.&lt;br /&gt;Observer started&lt;br /&gt;[W000 09/17 10:02:53.82] Observer started.&lt;br /&gt;Observer stopped&lt;br /&gt;Observer started&lt;br /&gt;[W000 09/17 10:15:42.88] Observer started.&lt;br /&gt;&lt;br /&gt;15:14:04.26  Friday, September 18, 2009&lt;br /&gt;Initiating fast-start failover to database "orcl1"...&lt;br /&gt;Performing failover NOW, please wait...&lt;br /&gt;Failover succeeded, new primary is "orcl1"&lt;br /&gt;15:14:13.79  Friday, September 18, 2009&lt;br /&gt;&lt;br /&gt;Status from dgmgrl on the new primary:&lt;br /&gt;CentOS4.4-64:wrpws:oracle &gt; dgmgrl sys/oracle&lt;br /&gt;DGMGRL for Linux: Version 10.2.0.4.0 - 64bit Production&lt;br /&gt;&lt;br /&gt;Copyright (c) 2000, 2005, Oracle. All rights reserved.&lt;br /&gt;&lt;br /&gt;Welcome to DGMGRL, type "help" for information.&lt;br /&gt;Connected.&lt;br /&gt;DGMGRL&gt; show configuration&lt;br /&gt;&lt;br /&gt;Configuration&lt;br /&gt;Name:                DBTEST&lt;br /&gt;Enabled:             YES&lt;br /&gt;Protection Mode:     MaxAvailability&lt;br /&gt;Fast-Start Failover: ENABLED&lt;br /&gt;Databases:&lt;br /&gt;orcl    - Physical standby database (disabled)&lt;br /&gt;- Fast-Start Failover target&lt;br /&gt;orcl1 - Primary database&lt;br /&gt;&lt;br /&gt;Current status for "DBTEST":&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Warning: ORA-16608: one or more databases have warnings&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Record count from the new primary:&lt;br /&gt;CentOS4.4-64:wrpws:oracle &gt; sqlplus sys as sysdba&lt;br /&gt;&lt;br /&gt;SQL*Plus: Release 10.2.0.4.0 - Production on Fri Sep 18 15:17:32 2009&lt;br /&gt;&lt;br /&gt;Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.&lt;br /&gt;&lt;br /&gt;Enter password:&lt;br /&gt;&lt;br /&gt;Connected to:&lt;br /&gt;Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production&lt;br /&gt;With the Partitioning, OLAP, Data Mining and Real Application Testing options&lt;br /&gt;&lt;br /&gt;SQL&gt; select count(*) from x;&lt;br /&gt;&lt;br /&gt;COUNT(*)&lt;br /&gt;----------&lt;br /&gt;9915&lt;br /&gt;&lt;br /&gt;Now to reinstate the old primary as standby:&lt;br /&gt;I started the old primary in mount mode, after about 30 sec I see activity in the observer.log&lt;br /&gt;15:25:27.74  Friday, September 18, 2009&lt;br /&gt;Initiating reinstatement for database "orcl"...&lt;br /&gt;Reinstating database "orcl", please wait...&lt;br /&gt;Operation requires shutdown of instance "orcl" on database "orcl"&lt;br /&gt;Shutting down instance "orcl"...&lt;br /&gt;ORA-01109: database not open&lt;br /&gt;&lt;br /&gt;Database dismounted.&lt;br /&gt;ORACLE instance shut down.&lt;br /&gt;Operation requires startup of instance "orcl" on database "orcl"&lt;br /&gt;Starting instance "orcl"...&lt;br /&gt;ORACLE instance started.&lt;br /&gt;Database mounted.&lt;br /&gt;Continuing to reinstate database "orcl" ...&lt;br /&gt;Reinstatement of database "orcl" succeeded&lt;br /&gt;15:26:27.32  Friday, September 18, 2009&lt;br /&gt;&lt;br /&gt;When you do show configuration in dgmgrl you will get the following error:&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Warning: ORA-16817: unsynchronized Fast-Start Failover configuration&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Just switch a couple fo logfile (alter system switch logfile;) in sqlplus and then check the output of dgmgrl, it should be fine:&lt;br /&gt;CentOS4.4-64:wrpws:oracle &gt; dgmgrl sys/oracle&lt;br /&gt;DGMGRL for Linux: Version 10.2.0.4.0 - 64bit Production&lt;br /&gt;&lt;br /&gt;Copyright (c) 2000, 2005, Oracle. All rights reserved.&lt;br /&gt;&lt;br /&gt;Welcome to DGMGRL, type "help" for information.&lt;br /&gt;Connected.&lt;br /&gt;DGMGRL&gt; show configuration&lt;br /&gt;&lt;br /&gt;Configuration&lt;br /&gt;Name:                DBTEST&lt;br /&gt;Enabled:             YES&lt;br /&gt;Protection Mode:     MaxAvailability&lt;br /&gt;Fast-Start Failover: ENABLED&lt;br /&gt;Databases:&lt;br /&gt;orcl    - Physical standby database&lt;br /&gt;- Fast-Start Failover target&lt;br /&gt;orcl1 - Primary database&lt;br /&gt;&lt;br /&gt;Current status for "DBTEST":&lt;br /&gt;SUCCESS&lt;br /&gt;&lt;br /&gt;DGMGRL&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Well this completes my testing and implementation of Fast-Start Failover!!!&lt;br /&gt;I hope this helps.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4092304359380397372-49265461078836211?l=apunhiran.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apunhiran.blogspot.com/feeds/49265461078836211/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4092304359380397372&amp;postID=49265461078836211' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/49265461078836211'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/49265461078836211'/><link rel='alternate' type='text/html' href='http://apunhiran.blogspot.com/2009/09/how-to-configure-data-guard-fast-start.html' title='How To: Configure Data Guard Fast-Start Failover Step By Step'/><author><name>Apun Hiran</name><uri>http://www.blogger.com/profile/04745021360458270341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_viek7Sw5RrM/R_yAZoPGqYI/AAAAAAAAAIM/eS3VxJ7S2Pc/S220/IMG_0042.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4092304359380397372.post-7857583512557039369</id><published>2009-09-19T20:34:00.003+05:30</published><updated>2009-09-19T20:45:45.073+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ORA-16607'/><category scheme='http://www.blogger.com/atom/ns#' term='dgmgrl'/><category scheme='http://www.blogger.com/atom/ns#' term='data guard'/><category scheme='http://www.blogger.com/atom/ns#' term='ORA-12545'/><category scheme='http://www.blogger.com/atom/ns#' term='broker'/><category scheme='http://www.blogger.com/atom/ns#' term='ORA-16664'/><category scheme='http://www.blogger.com/atom/ns#' term='dataguard'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>How To: Configure Data Guard Broker</title><content type='html'>Configuring Data Guard Broker:&lt;br /&gt;NOTE: You should have your physical standby already setup.&lt;br /&gt;&lt;a href="http://apunhiran.blogspot.com/2009/09/step-by-step-data-guard-setup-for.html"&gt;How to Setup Data Guard&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;1.) Check parameter DG_BROKER_START on primary:&lt;/span&gt;&lt;br /&gt;SQL&gt; show parameter DG_BROKER_START&lt;br /&gt;&lt;br /&gt;NAME                                 TYPE        VALUE&lt;br /&gt;------------------------------------ ----------- ------------------------------&lt;br /&gt;dg_broker_start                      boolean     FALSE&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;2.) Set DG_BROKER_START to true on primary:&lt;/span&gt;&lt;br /&gt;SQL&gt; alter system set DG_BROKER_START=true scope=both;&lt;br /&gt;&lt;br /&gt;System altered.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;3.)Check DG_BROKER_START on standby side:&lt;/span&gt;&lt;br /&gt;SQL&gt; show parameter DG_BROKER_START&lt;br /&gt;&lt;br /&gt;NAME                                 TYPE        VALUE&lt;br /&gt;------------------------------------ ----------- ------------------------------&lt;br /&gt;dg_broker_start                      boolean     FALSE&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;4.) Set DG_BROKER_START to true on standby:&lt;/span&gt;&lt;br /&gt;SQL&gt; alter system set DG_BROKER_START=true scope=both;&lt;br /&gt;&lt;br /&gt;System altered.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;5.) Define a service for the listener that includes the db_unique_name_DGMGRL.db_domain values for the GLOBAL_DBNAME:&lt;/span&gt;&lt;br /&gt;Update the listener.ora file on primary and standby&lt;br /&gt;SID_LIST_LISTENER =&lt;br /&gt;    (SID_LIST =&lt;br /&gt;    (SID_DESC =&lt;br /&gt;      (GLOBAL_DBNAME = orcl.abc.com)&lt;br /&gt;      (ORACLE_HOME = /opt/app/oracle/10.2)&lt;br /&gt;      (SID_NAME = orcl)&lt;br /&gt;    )&lt;br /&gt;   (SID_DESC =&lt;br /&gt;     (GLOBAL_DBNAME = orcl_DGMGRL.abc.com) --&gt;&lt;db_unique_name&gt;_DGMGRL.&lt;db_domain&gt;&lt;br /&gt;     (ORACLE_HOME = /opt/app/oracle/10.2)&lt;br /&gt;     (SID_NAME = orcl)&lt;br /&gt;   )&lt;br /&gt;  )&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;6.) Now to create the data guard broker configurations:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;[oracle@APP3 admin]$ dgmgrl&lt;br /&gt;DGMGRL for Linux: Version 10.2.0.4.0 - 64bit Production&lt;br /&gt;&lt;br /&gt;Copyright (c) 2000, 2005, Oracle. All rights reserved.&lt;br /&gt;&lt;br /&gt;Welcome to DGMGRL, type "help" for information.&lt;br /&gt;DGMGRL&gt; connect sys/oracle&lt;br /&gt;Connected.&lt;br /&gt;DGMGRL&gt; create configuration 'DBTEST'&lt;br /&gt;&gt; as primary database is 'orcl'&lt;br /&gt;&gt; connect identifier is orcl;&lt;br /&gt;Configuration "DBTEST" created with primary database "orcl"&lt;br /&gt;DGMGRL&gt;&lt;br /&gt;&lt;br /&gt;DGMGRL&gt; show configuration&lt;br /&gt;&lt;br /&gt;Configuration&lt;br /&gt;  Name:                DBTEST&lt;br /&gt;  Enabled:             NO&lt;br /&gt;  Protection Mode:     MaxPerformance&lt;br /&gt;  Fast-Start Failover: DISABLED&lt;br /&gt;  Databases:&lt;br /&gt;    orcl - Primary database&lt;br /&gt;&lt;br /&gt;Current status for "DBTEST":&lt;br /&gt;DISABLED&lt;br /&gt;&lt;br /&gt;DGMGRL&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;7.) Now add standby DB to the data broker configuration:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;DGMGRL&gt; add database 'orcl1' as&lt;br /&gt;&gt; connect identifier is orcl1&lt;br /&gt;&gt; maintained as physical;&lt;br /&gt;Database "orcl1" added&lt;br /&gt;DGMGRL&gt;&lt;br /&gt;DGMGRL&gt; show configuration&lt;br /&gt;&lt;br /&gt;Configuration&lt;br /&gt;  Name:                DBTEST&lt;br /&gt;  Enabled:             NO&lt;br /&gt;  Protection Mode:     MaxPerformance&lt;br /&gt;  Fast-Start Failover: DISABLED&lt;br /&gt;  Databases:&lt;br /&gt;    orcl    - Primary database&lt;br /&gt;    orcl1 - Physical standby database&lt;br /&gt;&lt;br /&gt;Current status for "DBTEST":&lt;br /&gt;DISABLED&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;8.) Now enable the configurations:&lt;/span&gt;&lt;br /&gt;DGMGRL&gt; enable configuration&lt;br /&gt;Enabled.&lt;br /&gt;DGMGRL&gt; show configuration&lt;br /&gt;&lt;br /&gt;Configuration&lt;br /&gt;  Name:                DBTEST&lt;br /&gt;  Enabled:             YES&lt;br /&gt;  Protection Mode:     MaxPerformance&lt;br /&gt;  Fast-Start Failover: DISABLED&lt;br /&gt;  Databases:&lt;br /&gt;    orcl    - Primary database&lt;br /&gt;    orcl1 - Physical standby database&lt;br /&gt;&lt;br /&gt;Current status for "DBTEST":&lt;br /&gt;Warning: ORA-16607: one or more databases have failed&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;DGMGRL&gt; show database verbose orcl1&lt;br /&gt;&lt;br /&gt;Database&lt;br /&gt;  Name:            orcl1&lt;br /&gt;  Role:            PHYSICAL STANDBY&lt;br /&gt;  Enabled:         YES&lt;br /&gt;  Intended State:  ONLINE&lt;br /&gt;  Instance(s):&lt;br /&gt;    orcl&lt;br /&gt;&lt;br /&gt;  Properties:&lt;br /&gt;    InitialConnectIdentifier        = 'orcl1'&lt;br /&gt;    ObserverConnectIdentifier       = ''&lt;br /&gt;    LogXptMode                      = 'ARCH'&lt;br /&gt;    Dependency                      = ''&lt;br /&gt;    DelayMins                       = '0'&lt;br /&gt;    Binding                         = 'OPTIONAL'&lt;br /&gt;    MaxFailure                      = '0'&lt;br /&gt;    MaxConnections                  = '1'&lt;br /&gt;    ReopenSecs                      = '300'&lt;br /&gt;    NetTimeout                      = '180'&lt;br /&gt;    LogShipping                     = 'ON'&lt;br /&gt;    PreferredApplyInstance          = ''&lt;br /&gt;    ApplyInstanceTimeout            = '0'&lt;br /&gt;    ApplyParallel                   = 'AUTO'&lt;br /&gt;    StandbyFileManagement           = 'MANUAL'&lt;br /&gt;    ArchiveLagTarget                = '0'&lt;br /&gt;    LogArchiveMaxProcesses          = '3'&lt;br /&gt;    LogArchiveMinSucceedDest        = '1'&lt;br /&gt;    DbFileNameConvert               = '/opt/app/oracle/oradata/orcl, /home/oracle/oradata/orcl'&lt;br /&gt;    LogFileNameConvert              = '/opt/app/oracle/oradata/orcl, /home/oracle/oradata/orcl, /opt/app/oracle/flash_recovery_area/orcl/onlinelog, /home/oracle/oradata/flash_recovery_area/orcl'&lt;br /&gt;    FastStartFailoverTarget         = ''&lt;br /&gt;    StatusReport                    = '(monitor)'&lt;br /&gt;    InconsistentProperties          = '(monitor)'&lt;br /&gt;    InconsistentLogXptProps         = '(monitor)'&lt;br /&gt;    SendQEntries                    = '(monitor)'&lt;br /&gt;    LogXptStatus                    = '(monitor)'&lt;br /&gt;    RecvQEntries                    = '(monitor)'&lt;br /&gt;    HostName                        = 'wrpws'&lt;br /&gt;    SidName                         = 'orcl'&lt;br /&gt;    LocalListenerAddress            = '(ADDRESS=(PROTOCOL=tcp)(HOST=wrpws)(PORT=1521))'&lt;br /&gt;    StandbyArchiveLocation          = '/home/oracle/oradata/orcl/archive'&lt;br /&gt;    AlternateLocation               = ''&lt;br /&gt;    LogArchiveTrace                 = '0'&lt;br /&gt;    LogArchiveFormat                = '%t_%s_%r.arc'&lt;br /&gt;    LatestLog                       = '(monitor)'&lt;br /&gt;    TopWaitEvents                   = '(monitor)'&lt;br /&gt;&lt;br /&gt;Current status for "orcl1":&lt;br /&gt;Error: ORA-12545: Connect failed because target host or object does not exist&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;DGMGRL&gt;&lt;br /&gt;&lt;br /&gt;Well the problem in my case was that the hostname was not getting resolved. I added the hostname to the host file and it started working.&lt;br /&gt;&lt;br /&gt;After this error I got error:&lt;br /&gt;Current status for "orcl1":&lt;br /&gt;Error: ORA-16664: unable to receive the result from a remote database&lt;br /&gt;&lt;br /&gt;Well same problem, communication between the 2 database. Make sure that the /etc/hosts files have entries of all other servers, with name and IP address.&lt;br /&gt;Always review the log_archive_dest_2 parameter, to have the right entries and service is accessible.&lt;br /&gt;&lt;br /&gt;DGMGRL&gt; enable configuration&lt;br /&gt;Enabled.&lt;br /&gt;DGMGRL&gt; show configuration&lt;br /&gt;&lt;br /&gt;Configuration&lt;br /&gt;  Name:                DBTEST&lt;br /&gt;  Enabled:             YES&lt;br /&gt;  Protection Mode:     MaxPerformance&lt;br /&gt;  Fast-Start Failover: DISABLED&lt;br /&gt;  Databases:&lt;br /&gt;    orcl    - Primary database&lt;br /&gt;    orcl1 - Physical standby database&lt;br /&gt;&lt;br /&gt;Current status for "DBTEST":&lt;br /&gt;SUCCESS&lt;br /&gt;&lt;br /&gt;DGMGRL&gt;&lt;br /&gt;&lt;br /&gt;This should setup Data Guard Broker.&lt;br /&gt;&lt;br /&gt;COMMANDS Available in DGMGRL:&lt;br /&gt;&lt;br /&gt;DGMGRL&gt; help&lt;br /&gt;&lt;br /&gt;The following commands are available:&lt;br /&gt;&lt;br /&gt;add            Add a standby database to the broker configuration&lt;br /&gt;connect        Connect to an Oracle instance&lt;br /&gt;create         Create a broker configuration&lt;br /&gt;disable        Disable a configuration, a database, or Fast-Start Failover&lt;br /&gt;edit           Edit a configuration, database, or instance&lt;br /&gt;enable         Enable a configuration, a database, or Fast-Start Failover&lt;br /&gt;exit           Exit the program&lt;br /&gt;failover       Change a standby database to be the primary database&lt;br /&gt;help           Display description and syntax for a command&lt;br /&gt;quit           Exit the program&lt;br /&gt;reinstate      Change a disabled database into a viable standby database&lt;br /&gt;rem            Comment to be ignored by DGMGRL&lt;br /&gt;remove         Remove a configuration, database, or instance&lt;br /&gt;show           Display information about a configuration, database, or instance&lt;br /&gt;shutdown       Shutdown a currently running Oracle instance&lt;br /&gt;start          Start Fast-Start Failover observer&lt;br /&gt;startup        Start an Oracle database instance&lt;br /&gt;stop           Stop Fast-Start Failover observer&lt;br /&gt;switchover     Switch roles between the primary database and a standby database&lt;br /&gt;&lt;br /&gt;Use "help &lt;command&gt;" to see syntax for individual commands&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4092304359380397372-7857583512557039369?l=apunhiran.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apunhiran.blogspot.com/feeds/7857583512557039369/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4092304359380397372&amp;postID=7857583512557039369' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/7857583512557039369'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/7857583512557039369'/><link rel='alternate' type='text/html' href='http://apunhiran.blogspot.com/2009/09/how-to-configure-data-guard-broker.html' title='How To: Configure Data Guard Broker'/><author><name>Apun Hiran</name><uri>http://www.blogger.com/profile/04745021360458270341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_viek7Sw5RrM/R_yAZoPGqYI/AAAAAAAAAIM/eS3VxJ7S2Pc/S220/IMG_0042.JPG'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4092304359380397372.post-11374665026494346</id><published>2009-09-15T15:54:00.003+05:30</published><updated>2009-09-17T18:28:27.287+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='data guard'/><category scheme='http://www.blogger.com/atom/ns#' term='10g'/><category scheme='http://www.blogger.com/atom/ns#' term='step by step'/><category scheme='http://www.blogger.com/atom/ns#' term='steps'/><category scheme='http://www.blogger.com/atom/ns#' term='setup'/><category scheme='http://www.blogger.com/atom/ns#' term='dataguard'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Step by Step Data Guard Setup for Oracle 10g</title><content type='html'>&lt;span style="font-weight:bold;"&gt;Steps:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;1.) Make sure archive log mode is enabled on your database:&lt;/span&gt;&lt;br /&gt;SQL&gt; archive log list&lt;br /&gt;Database log mode              Archive Mode&lt;br /&gt;Automatic archival             Enabled&lt;br /&gt;Archive destination            /opt/app/oracle/oradata/orcl/archive&lt;br /&gt;Oldest online log sequence     108&lt;br /&gt;Next log sequence to archive   109&lt;br /&gt;Current log sequence           109&lt;br /&gt;&lt;br /&gt;SQL&gt; select name, log_mode from v$database;&lt;br /&gt;&lt;br /&gt;NAME      LOG_MODE&lt;br /&gt;--------- ------------&lt;br /&gt;ORCL      ARCHIVELOG&lt;br /&gt;&lt;br /&gt;If archive log mode is not enabled. Please enable it using the following link.&lt;br /&gt;&lt;a href="http://apunhiran.blogspot.com/2009/03/how-to-enabling-archivelog-mode-in.html"&gt;How to enable archivelog mode in Oracle 11g database&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;2.) Enable force logging on the database, so that there is no problems with no logging operations in the future.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;SQL&gt; alter database force logging;&lt;br /&gt;&lt;br /&gt;Database altered.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;3.) Create password file, if you do not have one already.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;[oracle@APP3 dbs]$ cd $ORACLE_HOME/dbs&lt;br /&gt;[oracle@APP3 dbs]$ orapwd file=orapworcl password=oracle force=y&lt;br /&gt;[oracle@APP3 dbs]$ ls -lrt orapworcl&lt;br /&gt;-rw-r-----  1 oracle oinstall 1536 Sep 14 08:21 orapworcl&lt;br /&gt;&lt;br /&gt;SQL&gt; select * from v$pwfile_users;&lt;br /&gt;&lt;br /&gt;USERNAME                       SYSDB SYSOP&lt;br /&gt;------------------------------ ----- -----&lt;br /&gt;SYS                            TRUE  TRUE&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;4.) Create Standby Redo Logfiles on primary DB.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Current logfile:&lt;br /&gt;SQL&gt; col member a40&lt;br /&gt;SQL&gt; select a.group#,a.status,a.member,b.bytes/1024/1024 from v$logfile a,v$log b&lt;br /&gt;  2  where a.group#=b.group#;&lt;br /&gt;&lt;br /&gt;    GROUP# STATUS  MEMBER                                   B.BYTES/1024/1024&lt;br /&gt;---------- ------- ---------------------------------------- -----------------&lt;br /&gt;         1         /opt/app/oracle/oradata/orcl/redo01.log                50&lt;br /&gt;         2         /opt/app/oracle/oradata/orcl/redo02.log                50&lt;br /&gt;&lt;br /&gt;Add standby redo log groups:&lt;br /&gt;&lt;br /&gt;SQL&gt; alter database add standby logfile group 3 size 50M;&lt;br /&gt;&lt;br /&gt;Database altered.&lt;br /&gt;&lt;br /&gt;SQL&gt; alter database add standby logfile group 4  size 50M;&lt;br /&gt;&lt;br /&gt;Database altered.&lt;br /&gt;&lt;br /&gt;SQL&gt; select * from v$logfile;&lt;br /&gt;&lt;br /&gt;    GROUP# STATUS  TYPE    MEMBER                                                                      IS_&lt;br /&gt;---------- ------- ------- --------------------------------------------------------------------------- ---&lt;br /&gt;         1         ONLINE  /opt/app/oracle/oradata/ORCL/redo01.log                                    NO&lt;br /&gt;         2         ONLINE  /opt/app/oracle/oradata/ORCL/redo02.log                                    NO&lt;br /&gt;         3         STANDBY /opt/app/oracle/flash_recovery_area/ORCL/onlinelog/o1_mf_3_5bvzkzgs_.log   YES&lt;br /&gt;         4         STANDBY /opt/app/oracle/flash_recovery_area/ORCL/onlinelog/o1_mf_4_5bvzl8hf_.log   YES&lt;br /&gt;&lt;br /&gt;SQL&gt; select * from v$standby_log;&lt;br /&gt;&lt;br /&gt;GROUP# DBID       THREAD# SEQUENCE#  BYTES       USED ARC   STATUS     FIRST_CHANGE# FIRST_TIM LAST_CHANGE# LAST_TIME&lt;br /&gt;----------------------------------------------------------------------------------------------------------------------&lt;br /&gt;    3 UNASSIGNED   0         0       52428800    512   YES  UNASSIGNED    0                      0&lt;br /&gt;    4 UNASSIGNED   0         0       52428800    512   YES  UNASSIGNED    0                      0&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;5.) Check parameter db_unique_name&lt;/span&gt;&lt;br /&gt;SQL&gt; show parameters unique&lt;br /&gt;&lt;br /&gt;NAME                                 TYPE        VALUE&lt;br /&gt;------------------------------------ ----------- ------------------------------&lt;br /&gt;db_unique_name                       string      orcl&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;6.) Add standby related entried to Primary database:&lt;/span&gt;&lt;br /&gt;SQL&gt; create pfile='/home/oracle/initprim.ora' from spfile;&lt;br /&gt;&lt;br /&gt;Sample init.ora from Primary:&lt;br /&gt;orcl.__db_cache_size=2097152000&lt;br /&gt;orcl.__java_pool_size=16777216&lt;br /&gt;orcl.__large_pool_size=16777216&lt;br /&gt;orcl.__shared_pool_size=536870912&lt;br /&gt;orcl.__streams_pool_size=0&lt;br /&gt;*.audit_file_dest='/opt/app/oracle/admin/orcl/adump'&lt;br /&gt;*.background_dump_dest='/opt/app/oracle/admin/orcl/bdump'&lt;br /&gt;*.compatible='10.2.0.3.0'&lt;br /&gt;*.control_files='/opt/app/oracle/oradata/orcl/control01.ctl','/opt/app/oracle/oradata/orcl/control02.ctl','/opt/app/oracle/oradata/orcl/control03.ctl'&lt;br /&gt;*.core_dump_dest='/opt/app/oracle/admin/orcl/cdump'&lt;br /&gt;*.db_block_size=8192&lt;br /&gt;*.db_domain=''&lt;br /&gt;*.db_file_multiblock_read_count=16&lt;br /&gt;*.db_name='orcl'&lt;br /&gt;*.db_recovery_file_dest='/opt/app/oracle/flash_recovery_area'&lt;br /&gt;*.db_recovery_file_dest_size=2147483648&lt;br /&gt;*.db_unique_name='orcl'&lt;br /&gt;*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'&lt;br /&gt;*.job_queue_processes=10&lt;br /&gt;*.log_archive_dest_1='location=/opt/app/oracle/oradata/orcl/archive VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orcl'&lt;br /&gt;*.open_cursors=300&lt;br /&gt;*.pga_aggregate_target=823132160&lt;br /&gt;*.processes=500&lt;br /&gt;*.remote_login_passwordfile='EXCLUSIVE'&lt;br /&gt;*.sga_target=2684354560&lt;br /&gt;*.undo_management='AUTO'&lt;br /&gt;*.undo_tablespace='UNDOTBS1'&lt;br /&gt;*.user_dump_dest='/opt/app/oracle/admin/orcl/udump'&lt;br /&gt;db_unique_name=orcl&lt;br /&gt;LOG_ARCHIVE_CONFIG='DG_CONFIG=(orcl,orcl1)'&lt;br /&gt;*.LOG_ARCHIVE_DEST_2='SERVICE=ORCL1 LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcl1'&lt;br /&gt;LOG_ARCHIVE_DEST_STATE_1=ENABLE&lt;br /&gt;LOG_ARCHIVE_DEST_STATE_2=ENABLE&lt;br /&gt;LOG_ARCHIVE_FORMAT=%t_%s_%r.arc&lt;br /&gt;LOG_ARCHIVE_MAX_PROCESSES=3&lt;br /&gt;DB_FILE_NAME_CONVERT='/u01/oradata/orcl','/opt/app/oracle/oradata/orcl'&lt;br /&gt;LOG_FILE_NAME_CONVERT='/u01/oradata/orcl/archive',/opt/app/oracle/oradata/orcl/archive','/u01/oradata/flash_recovery_area/orcl','/opt/app/oracle/flash_recovery_area/orcl/onlinelog'&lt;br /&gt;FAL_SERVER=orcl1&lt;br /&gt;FAL_CLIENT=orcl&lt;br /&gt;&lt;br /&gt;Copy the init.ora and make necessary changes to the file to be used at standby side. Changes like location of various files, FAL_SERVER, FAL_CLIENT etc.&lt;br /&gt;&lt;br /&gt;Sample init.ora in Standby DB:&lt;br /&gt;orcl.__db_cache_size=2097152000&lt;br /&gt;orcl.__java_pool_size=16777216&lt;br /&gt;orcl.__large_pool_size=16777216&lt;br /&gt;orcl.__shared_pool_size=536870912&lt;br /&gt;orcl.__streams_pool_size=0&lt;br /&gt;*.audit_file_dest='/u01/oradata/orcl/adump'&lt;br /&gt;*.background_dump_dest='/u01/oradata/orcl/bdump'&lt;br /&gt;*.compatible='10.2.0.3.0'&lt;br /&gt;*.control_files='/u01/oradata/orcl/control01.ctl','/u01/oradata/orcl/control02.ctl','/u01/oradata/orcl/control03.ctl'&lt;br /&gt;*.core_dump_dest='/u01/oradata/orcl/cdump'&lt;br /&gt;*.db_block_size=8192&lt;br /&gt;*.db_domain=''&lt;br /&gt;*.db_file_multiblock_read_count=16&lt;br /&gt;*.db_name='orcl'&lt;br /&gt;*.db_recovery_file_dest='/u01/oradata/flash_recovery_area/orcl'&lt;br /&gt;*.db_recovery_file_dest_size=2147483648&lt;br /&gt;*.db_unique_name='orcl1'&lt;br /&gt;*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'&lt;br /&gt;*.job_queue_processes=10&lt;br /&gt;*.log_archive_dest_1='location=/u01/oradata/orcl/archive VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orcl'&lt;br /&gt;*.open_cursors=300&lt;br /&gt;*.pga_aggregate_target=823132160&lt;br /&gt;*.processes=500&lt;br /&gt;*.remote_login_passwordfile='EXCLUSIVE'&lt;br /&gt;*.sga_target=2684354560&lt;br /&gt;*.undo_management='AUTO'&lt;br /&gt;*.undo_tablespace='UNDOTBS1'&lt;br /&gt;*.user_dump_dest='/u01/oradata/orcl/udump'&lt;br /&gt;LOG_ARCHIVE_CONFIG='DG_CONFIG=(orcl,orcl1)'&lt;br /&gt;*.LOG_ARCHIVE_DEST_2='SERVICE=ORCL LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcl'&lt;br /&gt;LOG_ARCHIVE_DEST_STATE_1=ENABLE&lt;br /&gt;LOG_ARCHIVE_DEST_STATE_2=ENABLE&lt;br /&gt;LOG_ARCHIVE_FORMAT=%t_%s_%r.arc&lt;br /&gt;LOG_ARCHIVE_MAX_PROCESSES=3&lt;br /&gt;DB_FILE_NAME_CONVERT='/opt/app/oracle/oradata/orcl','/u01/oradata/orcl'&lt;br /&gt;LOG_FILE_NAME_CONVERT='/opt/app/oracle/oradata/orcl/archive','/u01/oradata/orcl/archive','/opt/app/oracle/flash_recovery_area/orcl/onlinelog','/u01/oradata/flash_recovery_area/orcl'&lt;br /&gt;FAL_SERVER=orcl&lt;br /&gt;FAL_CLIENT=orcl1&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;7.) Shutdown the primary database. Use the newly created pfile to startup nomount the database. Then create a spfile for the database. Mount the database and create a standby controlfile.&lt;/span&gt;&lt;br /&gt;Shutdown the database and take a cold back of the database, all files including the redo log files. You can also create a standby DB from hot backup.&lt;br /&gt;&lt;br /&gt;SQL&gt; shutdown immediate;&lt;br /&gt;Database closed.&lt;br /&gt;Database dismounted.&lt;br /&gt;ORACLE instance shut down.&lt;br /&gt;&lt;br /&gt;SQL&gt; startup nomount pfile='/home/oracle/pfileorcl.ora'&lt;br /&gt;ORACLE instance started.&lt;br /&gt;&lt;br /&gt;Total System Global Area 2684354560 bytes&lt;br /&gt;Fixed Size                  2086352 bytes&lt;br /&gt;Variable Size             570427952 bytes&lt;br /&gt;Database Buffers         2097152000 bytes&lt;br /&gt;Redo Buffers               14688256 bytes&lt;br /&gt;SQL&gt; create spfile from pfile='/home/oracle/pfileorcl.ora';&lt;br /&gt;&lt;br /&gt;File created.&lt;br /&gt;Meanwhile I also received the error:&lt;br /&gt;create spfile from pfile='/home/oracle/pfileregdb.ora'&lt;br /&gt;*&lt;br /&gt;ERROR at line 1:&lt;br /&gt;ORA-00600: internal error code, arguments: [kspsetpao1], [1753], [1700], [*],&lt;br /&gt;[user_dump_dest], [33], [], []&lt;br /&gt;&lt;br /&gt;Note: This error usually comes when the syntax of the pfile is wrong somewhere, please fix the pfile and try again. It worked for me.&lt;br /&gt;&lt;br /&gt;SQL&gt; shutdown immediate;&lt;br /&gt;ORA-01507: database not mounted&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ORACLE instance shut down.&lt;br /&gt;SQL&gt; startup&lt;br /&gt;ORACLE instance started.&lt;br /&gt;&lt;br /&gt;Total System Global Area 2684354560 bytes&lt;br /&gt;Fixed Size                  2086352 bytes&lt;br /&gt;Variable Size             570427952 bytes&lt;br /&gt;Database Buffers         2097152000 bytes&lt;br /&gt;Redo Buffers               14688256 bytes&lt;br /&gt;Database mounted.&lt;br /&gt;Database opened.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;8.) Shutdown the database again and take a cold backup of all files.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;9.) Create standby control file.&lt;/span&gt;&lt;br /&gt;SQL&gt; startup mount&lt;br /&gt;ORACLE instance started.&lt;br /&gt;Total System Global Area 2684354560 bytes&lt;br /&gt;Fixed Size                  2086352 bytes&lt;br /&gt;Variable Size             570427952 bytes&lt;br /&gt;Database Buffers         2097152000 bytes&lt;br /&gt;Redo Buffers               14688256 bytes&lt;br /&gt;Database mounted.&lt;br /&gt;&lt;br /&gt;--Then mount and create a standby controlfile.&lt;br /&gt;SQL&gt; alter database create standby controlfile as 'standby.ctl';&lt;br /&gt;Database altered.&lt;br /&gt;&lt;br /&gt;-- Open the primary read write.&lt;br /&gt;SQL&gt; alter database open;&lt;br /&gt;Database altered.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;10.) Transfer all the file from the cold backup from Primary to Standby server. Also copy the password file from primary to standby.&lt;/span&gt;&lt;br /&gt;Also copy the standby controlfile created in step 9 and copy if with the right name and location on standby server.&lt;br /&gt;I use SFTP for transferring the files.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;11.) Add entries for the primary db and standby DB in both primary and standby servers. i.e. primary server should have its own (orcl) and standby server (orcl1) tns entry.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;12.) Copy the pfile from step 6 for standby DB.&lt;/span&gt;&lt;br /&gt;Now try to nomount the standby database with the new pfile.&lt;br /&gt;&lt;br /&gt;[oracle@dbtest dbs]$  sqlplus / as sysdba&lt;br /&gt;&lt;br /&gt;SQL*Plus: Release 10.2.0.1.0 - Production on Tue Sep 15 04:57:32 2009&lt;br /&gt;&lt;br /&gt;Copyright (c) 1982, 2005, Oracle.  All rights reserved.&lt;br /&gt;&lt;br /&gt;Connected to an idle instance.&lt;br /&gt;&lt;br /&gt;SQL&gt; startup nomount pfile='/home/oracle/oracle/product/10.2.0/db_1/dbs/pfilestbregdb.ora';&lt;br /&gt;ORACLE instance started.&lt;br /&gt;&lt;br /&gt;Total System Global Area 1694498816 bytes&lt;br /&gt;Fixed Size                  1219784 bytes&lt;br /&gt;Variable Size             402654008 bytes&lt;br /&gt;Database Buffers         1275068416 bytes&lt;br /&gt;Redo Buffers               15556608 bytes&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;13.) Create spfile from pfile.&lt;/span&gt;&lt;br /&gt;SQL&gt; create spfile from pfile='/home/oracle/oracle/product/10.2.0/db_1/dbs/pfilestbregdb.ora';&lt;br /&gt;&lt;br /&gt;File created.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;14.) Shutdown the DB and do a startup mount.&lt;/span&gt;&lt;br /&gt;SQL&gt;startup mount;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;15.) Start REDO apply process:&lt;/span&gt;&lt;br /&gt;SQL&gt; alter database recover managed standby database disconnect from session;&lt;br /&gt;OR&lt;br /&gt;SQL&gt; alter database recover managed standby database nodelay disconnect parallel 8;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;16.) Verification.&lt;/span&gt;&lt;br /&gt;SQL&gt; SELECT PROCESS, STATUS, THREAD#, SEQUENCE#, BLOCK#, BLOCKS FROM V$MANAGED_STANDBY;&lt;br /&gt;&lt;br /&gt;To check archive gap:&lt;br /&gt;SELECT thread#, low_sequence#, high_sequence# from V$archive_gap;&lt;br /&gt;for RAC&lt;br /&gt;SELECT thread#, low_sequence#, high_sequence# from gv$archive_gap;&lt;br /&gt;&lt;br /&gt;To stop redo apply:&lt;br /&gt;alter database recover managed standby database cancel;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;17.) Check alert log files and verify that you did not receive any error.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;18.) Switch some logfiles on the Primary and check if the same are getting applied to the standby.&lt;/span&gt;&lt;br /&gt;on Primary:&lt;br /&gt;SQL&gt; alter system switch logfile;&lt;br /&gt;&lt;br /&gt;on standby:&lt;br /&gt;SQL&gt; SELECT PROCESS, STATUS, THREAD#, SEQUENCE#, BLOCK#, BLOCKS FROM V$MANAGED_STANDBY;&lt;br /&gt;&lt;br /&gt;Thanks should be it, your Physical Standby DB should be working fine.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4092304359380397372-11374665026494346?l=apunhiran.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apunhiran.blogspot.com/feeds/11374665026494346/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4092304359380397372&amp;postID=11374665026494346' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/11374665026494346'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/11374665026494346'/><link rel='alternate' type='text/html' href='http://apunhiran.blogspot.com/2009/09/step-by-step-data-guard-setup-for.html' title='Step by Step Data Guard Setup for Oracle 10g'/><author><name>Apun Hiran</name><uri>http://www.blogger.com/profile/04745021360458270341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_viek7Sw5RrM/R_yAZoPGqYI/AAAAAAAAAIM/eS3VxJ7S2Pc/S220/IMG_0042.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4092304359380397372.post-1460675959247939224</id><published>2009-08-12T11:15:00.003+05:30</published><updated>2009-08-14T18:11:12.613+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='country code'/><category scheme='http://www.blogger.com/atom/ns#' term='country ISO code country name'/><category scheme='http://www.blogger.com/atom/ns#' term='isd code'/><category scheme='http://www.blogger.com/atom/ns#' term='table'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><title type='text'>Country ISO Code with Calling Code Data</title><content type='html'>Recently was required to populate Country Name, Country ISO Code and Country Calling Code data in a table in the database.&lt;br /&gt;Compiled data from various sources and finally came to the below data. Please use it for reference, this data is correct to best of my knowledge.&lt;br /&gt;Incase you find that there is any problem please let me know.&lt;br /&gt;Incase you need insert statement for database, please ask for them I will send them to you.&lt;br /&gt;&lt;br /&gt;&lt;iframe width='700' height='600' frameborder='0' src='http://spreadsheets.google.com/pub?key=tcVW-A-lqjSWMjfs62pvSFA&amp;single=true&amp;gid=0&amp;output=html&amp;widget=true'&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I hope this is useful!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4092304359380397372-1460675959247939224?l=apunhiran.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apunhiran.blogspot.com/feeds/1460675959247939224/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4092304359380397372&amp;postID=1460675959247939224' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/1460675959247939224'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/1460675959247939224'/><link rel='alternate' type='text/html' href='http://apunhiran.blogspot.com/2009/08/country-iso-code-with-calling-code-data.html' title='Country ISO Code with Calling Code Data'/><author><name>Apun Hiran</name><uri>http://www.blogger.com/profile/04745021360458270341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_viek7Sw5RrM/R_yAZoPGqYI/AAAAAAAAAIM/eS3VxJ7S2Pc/S220/IMG_0042.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4092304359380397372.post-2620187562861428325</id><published>2009-08-04T16:17:00.008+05:30</published><updated>2009-08-04T17:17:36.361+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='UPDATEXML'/><category scheme='http://www.blogger.com/atom/ns#' term='CLOB'/><category scheme='http://www.blogger.com/atom/ns#' term='XMLTYPE.createXML'/><category scheme='http://www.blogger.com/atom/ns#' term='XML'/><category scheme='http://www.blogger.com/atom/ns#' term='EXTRACTVALUE'/><category scheme='http://www.blogger.com/atom/ns#' term='XMLTYPE'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><category scheme='http://www.blogger.com/atom/ns#' term='APPENDCHILDXML'/><title type='text'>Insert/Update XML data stored in CLOB Column</title><content type='html'>Recently I had a requirement to insert/update XML data stored directly in CLOB column of a table by the application.&lt;br /&gt;There was a requirement to update the XML node values directly by-passing the application. I had no experience with using XML function provided by oracle, plus the column is a normal CLOB column, as part of the many columns the table has. Let me give you an example for such a table:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Columns Name               Data Type&lt;/span&gt;&lt;br /&gt;--------------------------------------------------------------------------------&lt;br /&gt;ID                                                               Number&lt;br /&gt;First_Name                                      VARCHAR2(128)&lt;br /&gt;Last_Name                                       VARCHAR2(128)&lt;br /&gt;DETAILS                                            CLOB ---&gt; This column stores the XML information.&lt;br /&gt;&lt;br /&gt;The process that we need to follow:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Convert the CLOB column to XMLTYPE using XMLTYPE.createXML(column_name)&lt;/span&gt;&lt;br /&gt;e.g. XMLTYPE.createXML(details)&lt;br /&gt;The important thing is to know the XML pattern in the column. eg.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;details&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;profile&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;websiteurl&amp;gt;&amp;lt;![CDATA[www.yahoo.com]]&amp;gt;&amp;lt;/websiteurl&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;companyname&amp;gt;&amp;lt;![CDATA[Google]]&amp;gt;&amp;lt;/companyname&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;jobtitle&amp;gt;&amp;lt;![CDATA[DBA]]&amp;gt;&amp;lt;/jobtitle&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;addresses&amp;gt;&lt;br /&gt;&lt;br /&gt;     &amp;lt;address find="addressType"&amp;gt;&lt;br /&gt;&lt;br /&gt;     &amp;lt;addresstype&amp;gt;Address1&amp;lt;/addresstype&amp;gt;&lt;br /&gt;&lt;br /&gt;     &amp;lt;streetline1&amp;gt;&amp;lt;![CDATA[123 XYZ 1111]]&amp;gt;&amp;lt;/streetline1&amp;gt;&lt;br /&gt;&lt;br /&gt;     &amp;lt;/address&amp;gt;&lt;br /&gt;&lt;br /&gt;     &amp;lt;address find="addressType"&amp;gt;&lt;br /&gt;&lt;br /&gt;     &amp;lt;addresstype&amp;gt;Address2&amp;lt;/addresstype&amp;gt;&lt;br /&gt;&lt;br /&gt;     &amp;lt;streetline1&amp;gt;&amp;lt;![CDATA[890 abc 2222]]&amp;gt;&amp;lt;/streetline1&amp;gt;&lt;br /&gt;&lt;br /&gt;     &amp;lt;/address&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;/addresses&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;phonenumbers&amp;gt;&lt;br /&gt;&lt;br /&gt;     &amp;lt;phonenumber find="phoneType"&amp;gt;&lt;br /&gt;&lt;br /&gt;     &amp;lt;phonetype&amp;gt;Phone1&amp;lt;/phonetype&amp;gt;&lt;br /&gt;&lt;br /&gt;     &amp;lt;number&amp;gt;&amp;lt;![CDATA[+1-111-111-1111]]&amp;gt;&amp;lt;/number&amp;gt;&lt;br /&gt;&lt;br /&gt;     &amp;lt;/phonenumber&amp;gt;&lt;br /&gt;&lt;br /&gt;     &amp;lt;phonenumber find="phoneType"&amp;gt;&lt;br /&gt;&lt;br /&gt;     &amp;lt;phonetype&amp;gt;Fax1&amp;lt;/phonetype&amp;gt;&lt;br /&gt;&lt;br /&gt;     &amp;lt;number&amp;gt;&amp;lt;![CDATA[222-222-2222]]&amp;gt;&amp;lt;/number&amp;gt;&lt;br /&gt;&lt;br /&gt;     &amp;lt;/phonenumber&amp;gt;&lt;br /&gt;&lt;br /&gt;     &amp;lt;phonenumber find="phoneType"&amp;gt;&lt;br /&gt;&lt;br /&gt;     &amp;lt;phonetype&amp;gt;Mobile1&amp;lt;/phonetype&amp;gt;&lt;br /&gt;&lt;br /&gt;     &amp;lt;number&amp;gt;&amp;lt;![CDATA[+1-333-333-3333]]&amp;gt;&amp;lt;/number&amp;gt;&lt;br /&gt;&lt;br /&gt;     &amp;lt;/phonenumber&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;/phonenumbers&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;emails&amp;gt;&lt;br /&gt;&lt;br /&gt;     &amp;lt;email find="emailType"&amp;gt;&lt;br /&gt;&lt;br /&gt;     &amp;lt;emailtype&amp;gt;Email1&amp;lt;/emailtype&amp;gt;&lt;br /&gt;&lt;br /&gt;     &amp;lt;email&amp;gt;&amp;lt;![CDATA[hero@abc.com]]&amp;gt;&amp;lt;/email&amp;gt;&lt;br /&gt;&lt;br /&gt;     &amp;lt;/email&amp;gt;&lt;br /&gt;&lt;br /&gt;     &amp;lt;email find="emailType"&amp;gt;&lt;br /&gt;&lt;br /&gt;     &amp;lt;emailtype&amp;gt;Email2&amp;lt;/emailtype&amp;gt;&lt;br /&gt;&lt;br /&gt;     &amp;lt;email&amp;gt;&amp;lt;![CDATA[hero1@abc.com]]&amp;gt;&amp;lt;/email&amp;gt;&lt;br /&gt;&lt;br /&gt;     &amp;lt;/email&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;/emails&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/profile&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/details&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Now queries to SELECT data from the XML column:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;SQL&gt; SELECT EXTRACTVALUE(XMLTYPE.createXML(details),'/details/profile/companyName/text()') XMLSrc FROM usera WHERE id='1';&lt;br /&gt;XMLSRC&lt;br /&gt;--------------------------------------------------------------------------------&lt;br /&gt;Google&lt;br /&gt;The above query will give you the extact value of the company.&lt;br /&gt;&lt;br /&gt;SQL&gt; SELECT EXTRACT(XMLTYPE.createXML(details),'/details/profile/companyName/text()') XMLSrc FROM usera WHERE id='1';&lt;br /&gt;XMLSRC&lt;br /&gt;--------------------------------------------------------------------------------&lt;br /&gt;&lt;!--[CDATA[Google]]--&gt;&lt;br /&gt;The above query returns the complete of the node.&lt;br /&gt;&lt;br /&gt;SQL&gt; SELECT EXTRACTVALUE(XMLTYPE.createXML(details),'/details/profile/addresses/address[addressType=''Address1'']/streetLine1/text()') XMLSrc FROM usera WHERE id='1';&lt;br /&gt;XMLSRC&lt;br /&gt;--------------------------------------------------------------------------------&lt;br /&gt;123 XYZ 1111&lt;br /&gt;&lt;br /&gt;The above example shows how to query data inside a nested node. For me it was easy to query any node directly, but I had to really dig in to find out how to query a node which is for a particular type of a parent node.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Now to Update some data:&lt;/span&gt;&lt;br /&gt;SQL&gt; UPDATE usera set details = UPDATEXML(XMLTYPE.createXML(details),'/details/profile/addresses/address[addressType=''Address1'']/streetLine1/text()','The World is Great').getClobVal() WHERE id=1;&lt;br /&gt;&lt;br /&gt;1 row updated.&lt;br /&gt;&lt;br /&gt;SQL&gt; SELECT EXTRACTVALUE(XMLTYPE.createXML(details),'/details/profile/addresses/address[addressType=''Address1'']/streetLine1/text()') XMLSrc FROM usera WHERE id='1';&lt;br /&gt;XMLSRC&lt;br /&gt;--------------------------------------------------------------------------------&lt;br /&gt;The World is Great&lt;br /&gt;&lt;br /&gt;If you look at the above update, the details column was first converted into XMLTYPE and then the node updated and then returned back as CLOB using getClobVal() function as the column is CLOB type not XMLTYPE. If you do not use the getClobVal() function you would get the following error:&lt;br /&gt;&lt;br /&gt;SQL&gt; UPDATE usera set details = UPDATEXML(XMLTYPE.createXML(details),'/details/profile/addresses/address[addressType=''Address1'']/streetLine1/text()','The World is Great') WHERE id=1;&lt;br /&gt;UPDATE usera set details = UPDATEXML(XMLTYPE.createXML(details),'/details/profile/addresses/address[&lt;br /&gt;                        *&lt;br /&gt;ERROR at line 1:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;ORA-00932&lt;/span&gt;: inconsistent datatypes: expected CLOB got -&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Now to add data into the XML:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;SQL&gt; UPDATE usera set details = APPENDCHILDXML(XMLTYPE.createXML(details),'/details/profile/addresses/address[addressType=''Address1'']',XMLTYPE ('&lt;streetline2&gt;xyz garbage&lt;/streetline2&gt;')).getClobVal() WHERE id=1;&lt;br /&gt;&lt;br /&gt;1 row updated.&lt;br /&gt;&lt;br /&gt;SQL&gt; SELECT EXTRACTVALUE(XMLTYPE.createXML(details),'/details/profile/addresses/address[addressType=''Address1'']/streetLine2/text()') XMLSrc FROM usera WHERE id='1';&lt;br /&gt;XMLSRC&lt;br /&gt;--------------------------------------------------------------------------------&lt;br /&gt;xyz garbage&lt;br /&gt;&lt;br /&gt;In the append data section, we need to provide the path and then the XML value to add.&lt;br /&gt;&lt;br /&gt;A small test procedure to check if the value exists or not and then append.&lt;br /&gt;declare&lt;br /&gt;var1 clob;&lt;br /&gt;begin&lt;br /&gt;SELECT EXTRACTVALUE(XMLTYPE.createXML(details),'/details/profile/addresses/address[addressType=''Address1'']/streetLine2/text()') into var1 FROM usera WHERE id=1;&lt;br /&gt;IF var1 is NULL then&lt;br /&gt;UPDATE usera set details = APPENDCHILDXML(XMLTYPE.createXML(details),'/details/profile/addresses/address[addressType=''Address1'']',XMLTYPE ('&lt;streetline2&gt;xyz garbage&lt;/streetline2&gt;')).getClobVal() WHERE id=1;&lt;br /&gt;END IF;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;To look for more XML functions please refer to page &lt;a href="http://www.morganslibrary.com/reference/xml_functions.html"&gt;Oracle XML Functions&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4092304359380397372-2620187562861428325?l=apunhiran.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apunhiran.blogspot.com/feeds/2620187562861428325/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4092304359380397372&amp;postID=2620187562861428325' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/2620187562861428325'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/2620187562861428325'/><link rel='alternate' type='text/html' href='http://apunhiran.blogspot.com/2009/08/insertupdate-xml-data-stored-in-clob.html' title='Insert/Update XML data stored in CLOB Column'/><author><name>Apun Hiran</name><uri>http://www.blogger.com/profile/04745021360458270341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_viek7Sw5RrM/R_yAZoPGqYI/AAAAAAAAAIM/eS3VxJ7S2Pc/S220/IMG_0042.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4092304359380397372.post-153166394582417325</id><published>2009-07-20T15:34:00.002+05:30</published><updated>2009-07-20T15:39:32.770+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='replication'/><category scheme='http://www.blogger.com/atom/ns#' term='10g'/><category scheme='http://www.blogger.com/atom/ns#' term='stream'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>How To: Setup up of Oracle Streams Replication</title><content type='html'>Note: I have started using TOAD  now, so you wont see the statement complication output.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Step 1:&lt;/span&gt; Create stream administration user in both databases.&lt;br /&gt;&lt;br /&gt;create user streamadmin identified by streamadmin default tablespace users;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Step 2:&lt;/span&gt; Required grants to the user streamadmin.&lt;br /&gt;&lt;br /&gt;grant dba,select_catalog_role to streamadmin;&lt;br /&gt;exec dbms_streams_auth.grant_admin_privilege('streamadmin',true);&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Step 3:&lt;/span&gt; We will use default SCOTT schema for seting up this replication.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Step 4:&lt;/span&gt; Check database paramters required for setting up stream replication&lt;br /&gt;&lt;br /&gt;For our example:&lt;br /&gt;DB 1:&lt;br /&gt;Name: TEST1&lt;br /&gt;Global Name should be true&lt;br /&gt;SQL&gt; show parameter global_name&lt;br /&gt;NAME                                 TYPE        VALUE&lt;br /&gt;------------------------------------ ----------- --------------------------&lt;br /&gt;global_names                         boolean     TRUE&lt;br /&gt;&lt;br /&gt;SQL&gt; select * from global_name;&lt;br /&gt;GLOBAL_NAME&lt;br /&gt;-----------------------------------------------&lt;br /&gt;TEST1.REGRESS.RDBMS.DEV.US.ORACLE.COM&lt;br /&gt;&lt;br /&gt;SQL&gt; show parameter job_queue&lt;br /&gt;&lt;br /&gt;NAME                                 TYPE        VALUE&lt;br /&gt;------------------------------------ ----------- ------&lt;br /&gt;job_queue_processes                  integer     10&lt;br /&gt;&lt;br /&gt;SQL&gt; show parameter db_recovery_file_dest_size&lt;br /&gt;NAME                                 TYPE        VALUE&lt;br /&gt;------------------------------------ ----------- -----------&lt;br /&gt;db_recovery_file_dest_size           big integer 2G&lt;br /&gt;&lt;br /&gt;SQL&gt; show parameter db_recovery_file_dest&lt;br /&gt;&lt;br /&gt;NAME                                 TYPE        VALUE&lt;br /&gt;------------------------------------ ----------- -------------------------------------&lt;br /&gt;db_recovery_file_dest                string      D:\oracle\product/flash_recovery_area&lt;br /&gt;&lt;br /&gt;DB 2:&lt;br /&gt;Name: TEST&lt;br /&gt;Global Name should be true.&lt;br /&gt;SQL&gt; show parameter global_name&lt;br /&gt;NAME                                 TYPE        VALUE&lt;br /&gt;------------------------------------ ----------- -------&lt;br /&gt;global_names                         boolean     TRUE&lt;br /&gt;&lt;br /&gt;SQL&gt; select * from global_name;&lt;br /&gt;GLOBAL_NAME&lt;br /&gt;--------------------------------------&lt;br /&gt;TEST.REGRESS.RDBMS.DEV.US.ORACLE.COM&lt;br /&gt;&lt;br /&gt;SQL&gt; show parameter job_queue&lt;br /&gt;NAME                                 TYPE        VALUE&lt;br /&gt;------------------------------------ ----------- ------&lt;br /&gt;job_queue_processes                  integer     10&lt;br /&gt;&lt;br /&gt;SQL&gt; show parameter db_recovery_file_dest_size&lt;br /&gt;&lt;br /&gt;NAME                                 TYPE        VALUE&lt;br /&gt;------------------------------------ ----------- --------&lt;br /&gt;db_recovery_file_dest_size           big integer 2G&lt;br /&gt;&lt;br /&gt;SQL&gt; show parameter db_recovery_file_dest&lt;br /&gt;&lt;br /&gt;NAME                                 TYPE        VALUE&lt;br /&gt;------------------------------------ ----------- ------------------------------&lt;br /&gt;db_recovery_file_dest                string      D:\oracle\product\10.2.0/flash_recovery_area&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Step 5:&lt;/span&gt; Enable supplemental logging on the tables of the scott user in both the databases:&lt;br /&gt;&lt;br /&gt;Oracle has two types of supplimental logging options:&lt;br /&gt;1.) Unconditional Supplemental Logging: Logs the before images of specified columns any time the table is updated, regardless of whether the update affected any of the specified columns. This is sometimes referred to as an ALWAYS log group. &lt;br /&gt;2.) Conditional Supplemental Log Groups: Logs the before images of all specified columns only if at least one of the columns in the log group is updated.&lt;br /&gt;(From Oracle Documentation)&lt;br /&gt;&lt;br /&gt;Login to the SCOTT schema to start conditional supplemental logging:&lt;br /&gt;SQL&gt; alter table emp add supplemental log group supp_log_emp (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO);&lt;br /&gt;Table altered.&lt;br /&gt;SQL&gt; alter table dept add supplemental log group supp_log_dept (deptno,dname,loc);&lt;br /&gt;Table altered.&lt;br /&gt;SQL&gt; alter table bonus add supplemental log group supp_log_bonus (ename,job,sal,comm);&lt;br /&gt;Table altered.&lt;br /&gt;SQL&gt; alter table salgrade  add supplemental log group supp_log_sal (grade,losal,hisal);&lt;br /&gt;Table altered.&lt;br /&gt;&lt;br /&gt;The same needs to be done on the other database also.&lt;br /&gt;&lt;br /&gt;SQL&gt; select log_group_name, table_name from dba_log_groups where owner='SCOTT';&lt;br /&gt;LOG_GROUP_NAME                 TABLE_NAME&lt;br /&gt;------------------------------ ------------------------------&lt;br /&gt;SUPP_LOG_EMP                   EMP&lt;br /&gt;SUPP_LOG_DEPT                  DEPT&lt;br /&gt;SUPP_LOG_BONUS                 BONUS&lt;br /&gt;SUPP_LOG_SAL                   SALGRADE&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Step 6:&lt;/span&gt; Create Database Links between the stream administrator users in the 2 databases. &lt;br /&gt;SQL&gt; CREATE DATABASE LINK TEST.REGRESS.RDBMS.DEV.US.ORACLE.COM CONNECT TO STREAMADMIN IDENTIFIED BY streamadmin USING 'TEST_REP2';&lt;br /&gt;Database link created.&lt;br /&gt;&lt;br /&gt;SQL&gt; CREATE DATABASE LINK TEST1.REGRESS.RDBMS.DEV.US.ORACLE.COM CONNECT TO STREAMADMIN IDENTIFIED BY streamadmin USING 'TEST_REP1';&lt;br /&gt;Database link created.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Step 7:&lt;/span&gt; Create Stream Queues under the streamadmin user to apply and capture the database changes to be replicated.&lt;br /&gt;This also needs to run on both the databases as streamadmin.&lt;br /&gt;&lt;br /&gt;SQL&gt; show user&lt;br /&gt;USER is "STREAMADMIN"&lt;br /&gt;SQL&gt; exec dbms_streams_adm.set_up_queue(queue_table =&gt; 'apply_q', queue_name  =&gt; 'apply_q', queue_user  =&gt; 'streamadmin');&lt;br /&gt;PL/SQL procedure successfully completed.&lt;br /&gt;&lt;br /&gt;SQL&gt; exec dbms_streams_adm.set_up_queue(queue_table =&gt; 'capture_q',queue_name  =&gt; 'capture_q',queue_user  =&gt; 'streamadmin');&lt;br /&gt;PL/SQL procedure successfully completed.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Step 8:&lt;/span&gt; Setup data capture on both the databases:&lt;br /&gt;Procedure dbms_streams_adm is the administration package for setting up capture process when using streams, like dbms_repcat when using normal replication.&lt;br /&gt;http://www.psoug.org/reference/dbms_streams_adm.html for details reference of this package.&lt;br /&gt;&lt;br /&gt;Views sys.streams$_process_params, sys.streams$_capture_process&lt;br /&gt;&lt;br /&gt;SQL&gt; BEGIN&lt;br /&gt;   DBMS_STREAMS_ADM.ADD_SCHEMA_RULES (&lt;br /&gt;   SCHEMA_NAME                =&gt; 'SCOTT',&lt;br /&gt;     STREAMS_TYPE     =&gt; 'CAPTURE',&lt;br /&gt;     STREAMS_NAME     =&gt; 'CAPTURE_STREAM',&lt;br /&gt;     QUEUE_NAME               =&gt; 'CAPTURE_Q',&lt;br /&gt;     INCLUDE_DML      =&gt; TRUE,&lt;br /&gt;     INCLUDE_DDL      =&gt; TRUE,&lt;br /&gt;     INCLUSION_RULE =&gt; TRUE);&lt;br /&gt;   END;&lt;br /&gt;   /&lt;br /&gt;PL/SQL procedure successfully completed.&lt;br /&gt;&lt;br /&gt;The above procedure need to run on both the databases.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Step 9:&lt;/span&gt; Setup data apply on both the databases:&lt;br /&gt;SQL&gt; BEGIN&lt;br /&gt;     DBMS_STREAMS_ADM.ADD_SCHEMA_RULES (&lt;br /&gt;     SCHEMA_NAME                =&gt; 'SCOTT',&lt;br /&gt;     STREAMS_TYPE     =&gt; 'APPLY',&lt;br /&gt;     STREAMS_NAME     =&gt; 'APPLY_STREAM',&lt;br /&gt;     QUEUE_NAME               =&gt; 'APPLY_Q',&lt;br /&gt;     INCLUDE_DML      =&gt; TRUE,&lt;br /&gt;     INCLUDE_DDL      =&gt; TRUE,&lt;br /&gt;     SOURCE_DATABASE  =&gt; 'TEST.REGRESS.RDBMS.DEV.US.ORACLE.COM');&lt;br /&gt;     END;&lt;br /&gt;     /&lt;br /&gt;PL/SQL procedure successfully completed.&lt;br /&gt;&lt;br /&gt;SQL&gt; BEGIN&lt;br /&gt;     DBMS_STREAMS_ADM.ADD_SCHEMA_RULES (&lt;br /&gt;     SCHEMA_NAME                =&gt; 'SCOTT',&lt;br /&gt;     STREAMS_TYPE     =&gt; 'APPLY',&lt;br /&gt;     STREAMS_NAME     =&gt; 'APPLY_STREAM',&lt;br /&gt;     QUEUE_NAME               =&gt; 'APPLY_Q',&lt;br /&gt;     INCLUDE_DML      =&gt; TRUE,&lt;br /&gt;     INCLUDE_DDL      =&gt; TRUE,&lt;br /&gt;     SOURCE_DATABASE  =&gt; 'TEST1.REGRESS.RDBMS.DEV.US.ORACLE.COM');&lt;br /&gt;     END;&lt;br /&gt;     /&lt;br /&gt;PL/SQL procedure successfully completed.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Step 10:&lt;/span&gt; Setup propogation process on both the databases:&lt;br /&gt;Its basically setting up related between the capture process on one database and apply process on the other database.&lt;br /&gt;Thes need to run as streamadmin user.&lt;br /&gt;DB 1:&lt;br /&gt;&lt;br /&gt;SQL&gt; BEGIN&lt;br /&gt;   DBMS_STREAMS_ADM.ADD_SCHEMA_PROPAGATION_RULES (&lt;br /&gt;   SCHEMA_NAME                        =&gt; 'SCOTT',&lt;br /&gt;   STREAMS_NAME                       =&gt; 'TEST1_TO_TEST',&lt;br /&gt;   SOURCE_QUEUE_NAME          =&gt; 'CAPTURE_Q',&lt;br /&gt;   DESTINATION_QUEUE_NAME             =&gt; 'APPLY_Q@TEST.REGRESS.RDBMS.DEV.US.ORACLE.COM',&lt;br /&gt;   INCLUDE_DML                        =&gt; TRUE,&lt;br /&gt;   INCLUDE_DDL                        =&gt; TRUE,&lt;br /&gt;   SOURCE_DATABASE            =&gt; 'TEST1.REGRESS.RDBMS.DEV.US.ORACLE.COM');&lt;br /&gt;   END;&lt;br /&gt;   /&lt;br /&gt;PL/SQL procedure successfully completed.&lt;br /&gt;&lt;br /&gt;DB 2:&lt;br /&gt;SQL&gt; BEGIN&lt;br /&gt;     DBMS_STREAMS_ADM.ADD_SCHEMA_PROPAGATION_RULES (&lt;br /&gt;     SCHEMA_NAME                        =&gt; 'SCOTT',&lt;br /&gt;     STREAMS_NAME                       =&gt; 'TEST_TO_TEST1',&lt;br /&gt;     SOURCE_QUEUE_NAME          =&gt; 'CAPTURE_Q',&lt;br /&gt;     DESTINATION_QUEUE_NAME             =&gt; 'APPLY_Q@TEST1.REGRESS.RDBMS.DEV.US.ORACLE.COM',&lt;br /&gt;     INCLUDE_DML                        =&gt; TRUE,&lt;br /&gt;     INCLUDE_DDL                        =&gt; TRUE,&lt;br /&gt;     SOURCE_DATABASE            =&gt; 'TEST.REGRESS.RDBMS.DEV.US.ORACLE.COM');&lt;br /&gt;     END;&lt;br /&gt;     /&lt;br /&gt;PL/SQL procedure successfully completed.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Step 11:&lt;/span&gt; Setup schema instantiation SCN on DB 2 (TEST) &amp; DB 1 (TEST1):&lt;br /&gt;&lt;br /&gt;SQL&gt; DECLARE&lt;br /&gt;       ISCN    NUMBER;&lt;br /&gt;    BEGIN&lt;br /&gt;       ISCN := DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER();&lt;br /&gt;       DBMS_APPLY_ADM.SET_SCHEMA_INSTANTIATION_SCN@TEST.REGRESS.RDBMS.DEV.US.ORACLE.COM (&lt;br /&gt;       SOURCE_SCHEMA_NAME      =&gt; 'SCOTT',&lt;br /&gt;       SOURCE_DATABASE_NAME    =&gt; 'TEST1.REGRESS.RDBMS.DEV.US.ORACLE.COM',&lt;br /&gt;       INSTANTIATION_SCN       =&gt; ISCN,&lt;br /&gt;       RECURSIVE               =&gt; TRUE);&lt;br /&gt;    END;&lt;br /&gt;    /&lt;br /&gt;PL/SQL procedure successfully completed.&lt;br /&gt;&lt;br /&gt;DECLARE&lt;br /&gt; ISCN NUMBER;&lt;br /&gt;BEGIN&lt;br /&gt; ISCN := DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER();&lt;br /&gt; DBMS_APPLY_ADM.SET_SCHEMA_INSTANTIATION_SCN@TEST1.REGRESS.RDBMS.DEV.US.ORACLE.COM (&lt;br /&gt; SOURCE_SCHEMA_NAME =&gt; 'SCOTT',&lt;br /&gt; SOURCE_DATABASE_NAME =&gt; 'TEST.REGRESS.RDBMS.DEV.US.ORACLE.COM',&lt;br /&gt; INSTANTIATION_SCN =&gt; ISCN,&lt;br /&gt; RECURSIVE             =&gt; TRUE);    &lt;br /&gt;END;&lt;br /&gt;/&lt;br /&gt;PL/SQL procedure successfully completed.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Step 12:&lt;/span&gt; Start capture and apply process:&lt;br /&gt;Setting the disable_on_error parameter to ‘N’ allows the apply process to continue applying row LCRs even when it encounters errors. The default value is ‘Y’ which disables the apply process automatically on the first error encountered. &lt;br /&gt;DB 1 (TEST1):&lt;br /&gt;&lt;br /&gt;SQL&gt; EXEC DBMS_APPLY_ADM.SET_PARAMETER (APPLY_NAME =&gt; 'APPLY_STREAM', PARAMETER =&gt; 'DISABLE_ON_ERROR', VALUE    =&gt; 'N');&lt;br /&gt;PL/SQL procedure successfully completed.&lt;br /&gt;&lt;br /&gt;SQL&gt; EXEC DBMS_APPLY_ADM.START_APPLY (APPLY_NAME =&gt; 'APPLY_STREAM');&lt;br /&gt;PL/SQL procedure successfully completed.&lt;br /&gt;&lt;br /&gt;SQL&gt; EXEC DBMS_CAPTURE_ADM.START_CAPTURE (CAPTURE_NAME =&gt; 'CAPTURE_STREAM');&lt;br /&gt;PL/SQL procedure successfully completed.&lt;br /&gt;&lt;br /&gt;Same steps for the other DB also.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Steps 13:&lt;/span&gt; Test the setup. I just realized that its "Step 13" for testing, not good not good, not number 13.&lt;br /&gt;Actually I faced a few problems with the test.&lt;br /&gt;1.) The AQ_TM_PROCESSES parameter in my case was 0, but the data was not getting transferred.&lt;br /&gt;2.) I had not set the instantiation SCN for the second DB.&lt;br /&gt;&lt;br /&gt;I found the above errors from the below query:&lt;br /&gt;SELECT APPLY_NAME, &lt;br /&gt;       SOURCE_DATABASE, &lt;br /&gt;       LOCAL_TRANSACTION_ID, &lt;br /&gt;       ERROR_NUMBER,&lt;br /&gt;       ERROR_MESSAGE,&lt;br /&gt;       MESSAGE_COUNT&lt;br /&gt;  FROM DBA_APPLY_ERROR;&lt;br /&gt;&lt;br /&gt;  After rectifying the error, to apply the failed transaction:&lt;br /&gt; BEGIN&lt;br /&gt;  DBMS_APPLY_ADM.EXECUTE_ERROR(&lt;br /&gt;    local_transaction_id =&gt; '4.30.434',&lt;br /&gt;    execute_as_user      =&gt; false);&lt;br /&gt; END;&lt;br /&gt; You ge the local_transaction_id from the above query.&lt;br /&gt;&lt;br /&gt; Anyway lets test the setup once again:&lt;br /&gt;Insert test:&lt;br /&gt;------------&lt;br /&gt;SQL&gt; connect scott/tiger@test_rep1&lt;br /&gt;Connected.&lt;br /&gt;SQL&gt; insert into dept values (50,'RESEARCH','MEMPHIS');&lt;br /&gt;&lt;br /&gt;1 row created.&lt;br /&gt;&lt;br /&gt;SQL&gt; commit;&lt;br /&gt;&lt;br /&gt;Commit complete.&lt;br /&gt;&lt;br /&gt;SQL&gt; select * from dept@TEST.REGRESS.RDBMS.DEV.US.ORACLE.COM;&lt;br /&gt;&lt;br /&gt;    DEPTNO DNAME          LOC&lt;br /&gt;---------- -------------- -------------&lt;br /&gt;        50 RESEARCH       MEMPHIS&lt;br /&gt;        10 ACCOUNTING     NEW YORK&lt;br /&gt;        20 RESEARCH       DALLAS&lt;br /&gt;        30 SALES          CHICAGO&lt;br /&gt;        40 OPERATIONS     BOSTON&lt;br /&gt;&lt;br /&gt;Update Test:&lt;br /&gt;------------&lt;br /&gt;SQL&gt; connect scott/tiger@test_rep2&lt;br /&gt;Connected.&lt;br /&gt;SQL&gt; update dept set loc='DELHI' where deptno=50;&lt;br /&gt;&lt;br /&gt;1 row updated.&lt;br /&gt;&lt;br /&gt;SQL&gt; commit;&lt;br /&gt;&lt;br /&gt;Commit complete.&lt;br /&gt;&lt;br /&gt;SQL&gt; select * from dept@TEST1.REGRESS.RDBMS.DEV.US.ORACLE.COM;&lt;br /&gt;&lt;br /&gt;    DEPTNO DNAME          LOC&lt;br /&gt;---------- -------------- -------------&lt;br /&gt;        50 RESEARCH       DELHI&lt;br /&gt;        10 ACCOUNTING     NEW YORK&lt;br /&gt;        20 RESEARCH       DALLAS&lt;br /&gt;        30 SALES          CHICAGO&lt;br /&gt;        40 OPERATIONS     BOSTON&lt;br /&gt;&lt;br /&gt;Finally u can see that basic steps of replication is working.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4092304359380397372-153166394582417325?l=apunhiran.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apunhiran.blogspot.com/feeds/153166394582417325/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4092304359380397372&amp;postID=153166394582417325' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/153166394582417325'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/153166394582417325'/><link rel='alternate' type='text/html' href='http://apunhiran.blogspot.com/2009/07/how-to-setup-up-of-oracle-streams.html' title='How To: Setup up of Oracle Streams Replication'/><author><name>Apun Hiran</name><uri>http://www.blogger.com/profile/04745021360458270341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_viek7Sw5RrM/R_yAZoPGqYI/AAAAAAAAAIM/eS3VxJ7S2Pc/S220/IMG_0042.JPG'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4092304359380397372.post-7048671696215706508</id><published>2009-07-20T15:28:00.005+05:30</published><updated>2009-07-20T15:34:20.915+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ORA-06553'/><category scheme='http://www.blogger.com/atom/ns#' term='charater set conversion'/><category scheme='http://www.blogger.com/atom/ns#' term='ORA-06552'/><category scheme='http://www.blogger.com/atom/ns#' term='PLS-553'/><category scheme='http://www.blogger.com/atom/ns#' term='NLS_CHARACTERSET'/><category scheme='http://www.blogger.com/atom/ns#' term='CHARACTERSET'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>How TO: Check for Charater Set Conversion Problems &amp; Fix Them</title><content type='html'>Character set conversion was done without using the csscan to verify if its possible.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;ORA-06552: PL/SQL: Compilation unit analysis terminated&lt;br /&gt;ORA-06553: PLS-553: character set name is not recognized&lt;/span&gt;&lt;br /&gt;Character set was converted from WE8ISO8859P1 to AL32UTF8.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Helpful metalink note: 286964.1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Below query is used to see if there is a mismatch in character set in the database.&lt;br /&gt;SQL&gt; select distinct(nls_charset_name(charsetid)) CHARACTERSET,&lt;br /&gt;           decode(type#, 1, decode(charsetform, 1, 'VARCHAR2', 2, 'NVARCHAR2','UNKOWN'),&lt;br /&gt;                         9, decode(charsetform, 1, 'VARCHAR', 2, 'NCHAR VARYING', 'UNKOWN'),&lt;br /&gt;                        96, decode(charsetform, 1, 'CHAR', 2, 'NCHAR', 'UNKOWN'),&lt;br /&gt;                       112, decode(charsetform, 1, 'CLOB', 2, 'NCLOB', 'UNKOWN')) TYPES_USED_IN&lt;br /&gt;       from sys.col$ where charsetform in (1,2) and type# in (1, 9, 96, 112) order by CHARACTERSET;&lt;br /&gt;&lt;br /&gt;CHARACTERSET                             TYPES_USED_IN&lt;br /&gt;---------------------------------------- -------------&lt;br /&gt;AL16UTF16                                NCHAR&lt;br /&gt;AL16UTF16                                NCLOB&lt;br /&gt;AL16UTF16                                NVARCHAR2&lt;br /&gt;AL32UTF8                                 CLOB&lt;br /&gt;AL32UTF8                                 VARCHAR2&lt;br /&gt;WE8ISO8859P1                             CHAR&lt;br /&gt;WE8ISO8859P1                             CLOB&lt;br /&gt;WE8ISO8859P1                             VARCHAR2&lt;br /&gt;&lt;br /&gt;So we can see that the above query also returns the old character set along with the new character set. It should ideally not show any record of the old character.&lt;br /&gt;Here you can see that there are 2 different character sets returned for VARCHAR2, CLOB &amp; CHAR data, which indicates a mixup in the database character set setup, which is the cause for this PLS-553 error.&lt;br /&gt;&lt;br /&gt;I had to work on this problem as in a new development database, someone accidently changed the charaterset and then we started getting all sorts of issues. Now lets find out which tables &amp; columns are having problems:&lt;br /&gt;For CHAR,VARCHAR2 and CLOB columns: I have mentioned the old or problem character set in the below query, you are replace it with the one you are facing problem with.&lt;br /&gt;SQL&gt; set lines 199&lt;br /&gt;SQL&gt; col owner format a10&lt;br /&gt;SQL&gt; col table_name format a20&lt;br /&gt;SQL&gt; col column_name format a20&lt;br /&gt;SQL&gt; select OWNER, TABLE_NAME, COLUMN_NAME from DBA_TAB_COLS where COLUMN_ID in (select unique COL#&lt;br /&gt;    from sys.col$ where CHARSETID=NLS_CHARSET_ID('WE8ISO8859P1') and charsetform ='1')&lt;br /&gt;order by OWNER, TABLE_NAME, COLUMN_NAME;  2    3&lt;br /&gt;&lt;br /&gt;OWNER      TABLE_NAME           COLUMN_NAME&lt;br /&gt;---------- -------------------- --------------------&lt;br /&gt;TEST   TEST_TABLE1       CODE&lt;br /&gt;TEST   TEST_TABLE1       CREATETIME&lt;br /&gt;TEST   TEST_TABLE1       LASTMODIFIEDTIME&lt;br /&gt;TEST   TEST_TABLE1       TYPEID&lt;br /&gt;TEST   TEST_TABLE2       ACTIONTYPE&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;49692 rows selected.&lt;br /&gt;&lt;br /&gt;In my case almost all schemas in the database are affected including sys and system.&lt;br /&gt;&lt;br /&gt;For Nchar, Nvarchar2 and Nclob:&lt;br /&gt;SQL&gt; set lines 199&lt;br /&gt;SQL&gt; col owner format a10&lt;br /&gt;SQL&gt; col table_name format a20&lt;br /&gt;SQL&gt; col column_name format a20&lt;br /&gt;SQL&gt; select OWNER, TABLE_NAME, COLUMN_NAME from DBA_TAB_COLS where COLUMN_ID in (select unique COL#&lt;br /&gt;    from sys.col$ where CHARSETID=NLS_CHARSET_ID('WE8ISO8859P1') and charsetform ='2')&lt;br /&gt;order by OWNER, TABLE_NAME, COLUMN_NAME; &lt;br /&gt;&lt;br /&gt; no rows selected&lt;br /&gt;&lt;br /&gt;Oracle note suggests that if the character set conversion has happened between a 7/8 bit character set like WE8ISO8859P1, US7ASCII etc to a mutibyte character set like UTF8, AL32UTF8 etc, then there will be data loss for clob columns which display the old character set. So it is best to take a full back of the database, preferably using the tradional export utility. &lt;br /&gt;&lt;br /&gt;Check the following things:&lt;br /&gt;SQL&gt; sho parameter CLUSTER_DATABASE&lt;br /&gt;NAME                                 TYPE        VALUE&lt;br /&gt;------------------------------------ ----------- ------------------------------&lt;br /&gt;cluster_database                     boolean     FALSE&lt;br /&gt;cluster_database_instances           integer     1&lt;br /&gt;SQL&gt; sho parameter PARALLEL_SERVER&lt;br /&gt;NAME                                 TYPE        VALUE&lt;br /&gt;------------------------------------ ----------- ------------------------------&lt;br /&gt;parallel_server                      boolean     FALSE&lt;br /&gt;parallel_server_instances            integer     1&lt;br /&gt;&lt;br /&gt;The parameters CLUSTER_DATABASE &amp; parallel_server should be false.&lt;br /&gt;&lt;br /&gt;Save the values for;&lt;br /&gt;SQL&gt; show parameter JOB_QUEUE_PROCESSES&lt;br /&gt;NAME                                 TYPE        VALUE&lt;br /&gt;------------------------------------ ----------- ------------------------------&lt;br /&gt;job_queue_processes                  integer     10&lt;br /&gt;SQL&gt; show parameter AQ_TM_PROCESSES&lt;br /&gt;NAME                                 TYPE        VALUE&lt;br /&gt;------------------------------------ ----------- ------------------------------&lt;br /&gt;aq_tm_processes                      integer     2&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;To start the fix:&lt;/span&gt;&lt;br /&gt;Shutdown listener, make sure there are not connections to the database.&lt;br /&gt;SQL&gt; shutdown immediate;&lt;br /&gt;SQL&gt; STARTUP MOUNT;&lt;br /&gt;ORACLE instance started.&lt;br /&gt;&lt;br /&gt;Total System Global Area  926941184 bytes&lt;br /&gt;Fixed Size                  1222648 bytes&lt;br /&gt;Variable Size             276826120 bytes&lt;br /&gt;Database Buffers          641728512 bytes&lt;br /&gt;Redo Buffers                7163904 bytes&lt;br /&gt;Database mounted.&lt;br /&gt;SQL&gt; ALTER SYSTEM ENABLE RESTRICTED SESSION;&lt;br /&gt;System altered.&lt;br /&gt;&lt;br /&gt;SQL&gt; ALTER DATABASE OPEN;&lt;br /&gt;Database altered.&lt;br /&gt;SQL&gt; COL VALUE NEW_VALUE CHARSET&lt;br /&gt;SQL&gt; SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_CHARACTERSET';&lt;br /&gt;VALUE&lt;br /&gt;--------------------------------------------------------------------------------&lt;br /&gt;AL32UTF8&lt;br /&gt;&lt;br /&gt;SQL&gt; COL VALUE NEW_VALUE NCHARSET&lt;br /&gt;SQL&gt; SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_NCHAR_CHARACTERSET';&lt;br /&gt;VALUE&lt;br /&gt;--------------------------------------------------------------------------------&lt;br /&gt;AL16UTF16&lt;br /&gt;&lt;br /&gt;SQL&gt; ALTER DATABASE CHARACTER SET INTERNAL_USE &amp;CHARSET;&lt;br /&gt;old   1: ALTER DATABASE CHARACTER SET INTERNAL_USE &amp;CHARSET&lt;br /&gt;new   1: ALTER DATABASE CHARACTER SET INTERNAL_USE AL32UTF8&lt;br /&gt;Database altered.&lt;br /&gt;SQL&gt; ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE &amp;NCHARSET;&lt;br /&gt;old   1: ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE &amp;NCHARSET&lt;br /&gt;new   1: ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE AL16UTF16&lt;br /&gt;Database altered.&lt;br /&gt;SQL&gt; SHUTDOWN IMMEDIATE;&lt;br /&gt;Database closed.&lt;br /&gt;Database dismounted.&lt;br /&gt;ORACLE instance shut down.&lt;br /&gt;SQL&gt; STARTUP;&lt;br /&gt;ORACLE instance started.&lt;br /&gt;Total System Global Area  926941184 bytes&lt;br /&gt;Fixed Size                  1222648 bytes&lt;br /&gt;Variable Size             276826120 bytes&lt;br /&gt;Database Buffers          641728512 bytes&lt;br /&gt;Redo Buffers                7163904 bytes&lt;br /&gt;Database mounted.&lt;br /&gt;Database opened.&lt;br /&gt;SQL&gt; SHUTDOWN IMMEDIATE;&lt;br /&gt;Database closed.&lt;br /&gt;Database dismounted.&lt;br /&gt;ORACLE instance shut down.&lt;br /&gt;SQL&gt; startup&lt;br /&gt;ORACLE instance started.&lt;br /&gt;Total System Global Area  926941184 bytes&lt;br /&gt;Fixed Size                  1222648 bytes&lt;br /&gt;Variable Size             276826120 bytes&lt;br /&gt;Database Buffers          641728512 bytes&lt;br /&gt;Redo Buffers                7163904 bytes&lt;br /&gt;Database mounted.&lt;br /&gt;Database opened.&lt;br /&gt;&lt;br /&gt;Need to restart the database twice.&lt;br /&gt;&lt;br /&gt;Check the database to see if there are any problems:&lt;br /&gt;SQL&gt; SQL&gt; SQL&gt; select distinct(nls_charset_name(charsetid)) CHARACTERSET,&lt;br /&gt;           decode(type#, 1, decode(charsetform, 1, 'VARCHAR2', 2, 'NVARCHAR2','UNKOWN'),&lt;br /&gt;                         9, decode(charsetform, 1, 'VARCHAR', 2, 'NCHAR VARYING', 'UNKOWN'),&lt;br /&gt;                        96, decode(charsetform, 1, 'CHAR', 2, 'NCHAR', 'UNKOWN'),&lt;br /&gt;                       112, decode(charsetform, 1, 'CLOB', 2, 'NCLOB', 'UNKOWN')) TYPES_USED_IN&lt;br /&gt;       from sys.col$ where charsetform in (1,2) and type# in (1, 9, 96, 112);&lt;br /&gt;&lt;br /&gt;CHARACTERSET                             TYPES_USED_IN&lt;br /&gt;---------------------------------------- -------------&lt;br /&gt;AL32UTF8                                 VARCHAR2&lt;br /&gt;AL16UTF16                                NCLOB&lt;br /&gt;AL16UTF16                                NVARCHAR2&lt;br /&gt;AL32UTF8                                 CHAR&lt;br /&gt;AL32UTF8                                 CLOB&lt;br /&gt;AL16UTF16                                NCHAR&lt;br /&gt;&lt;br /&gt;6 rows selected.&lt;br /&gt;&lt;br /&gt;SQL&gt; select OWNER, TABLE_NAME, COLUMN_NAME from DBA_TAB_COLS where COLUMN_ID in (select unique COL#&lt;br /&gt;    from sys.col$ where CHARSETID=NLS_CHARSET_ID('WE8ISO8859P1') and charsetform ='1')&lt;br /&gt;    order by OWNER, TABLE_NAME, COLUMN_NAME;&lt;br /&gt;&lt;br /&gt;no rows selected&lt;br /&gt;&lt;br /&gt;SQL&gt; ALTER SYSTEM SET JOB_QUEUE_PROCESSES=10;&lt;br /&gt;System altered.&lt;br /&gt;&lt;br /&gt;SQL&gt; ALTER SYSTEM SET AQ_TM_PROCESSES=2;&lt;br /&gt;System altered.&lt;br /&gt;&lt;br /&gt;This procedure doesn't fix any data, it cannot get back the lost data due to character set changes. That will need to be restored from backup.&lt;br /&gt;All it does is fixes the references the tables are having to the old character set. Hence this is just the solution to fix the data dictionary not the data, or the loss that has happened.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4092304359380397372-7048671696215706508?l=apunhiran.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apunhiran.blogspot.com/feeds/7048671696215706508/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4092304359380397372&amp;postID=7048671696215706508' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/7048671696215706508'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/7048671696215706508'/><link rel='alternate' type='text/html' href='http://apunhiran.blogspot.com/2009/07/how-to-check-for-charater-set.html' title='How TO: Check for Charater Set Conversion Problems &amp; Fix Them'/><author><name>Apun Hiran</name><uri>http://www.blogger.com/profile/04745021360458270341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_viek7Sw5RrM/R_yAZoPGqYI/AAAAAAAAAIM/eS3VxJ7S2Pc/S220/IMG_0042.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4092304359380397372.post-378722451583279659</id><published>2009-05-14T14:18:00.005+05:30</published><updated>2009-05-14T14:32:34.786+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='prefixed local'/><category scheme='http://www.blogger.com/atom/ns#' term='partitioning'/><category scheme='http://www.blogger.com/atom/ns#' term='local index'/><category scheme='http://www.blogger.com/atom/ns#' term='partition'/><category scheme='http://www.blogger.com/atom/ns#' term='global index'/><category scheme='http://www.blogger.com/atom/ns#' term='non-prefixed local'/><category scheme='http://www.blogger.com/atom/ns#' term='ORA-01408'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><category scheme='http://www.blogger.com/atom/ns#' term='ORA-14038'/><title type='text'>Oracle Partitioning VIII - Partition Indexes</title><content type='html'>&lt;span style="font-weight:bold;"&gt;Indexing on Partitoned Tables:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Local Indexes:&lt;/span&gt;&lt;br /&gt;A local index on a partition table will have the same partition schema as the table. Each partition in a local index will have similar entries like the corresponding data in the table partition. &lt;br /&gt;eg.:&lt;br /&gt;Creating a table first:&lt;br /&gt;SQL&gt; CREATE TABLE DATA_LOAD&lt;br /&gt;            ( DATA_id     NUMBER(6),&lt;br /&gt;             source_id    NUMBER,&lt;br /&gt;             load_date    DATE,&lt;br /&gt;             data_size    NUMBER,&lt;br /&gt;             state           VARCHAR2(20))&lt;br /&gt;           PARTITION BY RANGE (load_date)&lt;br /&gt;           SUBPARTITION BY LIST (state)&lt;br /&gt;           SUBPARTITION TEMPLATE (&lt;br /&gt;            SUBPARTITION NORTH_01 VALUES ('DELHI', 'JAMMU KASHMIR', 'PUNJAB', 'HARYANA') TABLESPACE DATA_01,&lt;br /&gt;            SUBPARTITION WEST_01 VALUES ('RAJASTHAN', 'GUJRAT', 'MAHARASTRA') TABLESPACE DATA_02,&lt;br /&gt;            SUBPARTITION SOUTH_01 VALUES  ('TAMIL NADU', 'KERELA', 'KARNATAKA') TABLESPACE DATA_03,&lt;br /&gt;            SUBPARTITION EAST_01 VALUES ('ASSAM', 'WEST BENGAL', 'NAGALAND') TABLESPACE DATA_04,&lt;br /&gt;            SUBPARTITION NO_REGION VALUES (NULL) TABLESPACE USERS,&lt;br /&gt;            SUBPARTITION OTHER VALUES (DEFAULT) TABLESPACE USERS&lt;br /&gt;            )&lt;br /&gt;         ( PARTITION data_2006 VALUES LESS THAN (TO_DATE('01-JAN-2007','DD-MON-YYYY')) ,&lt;br /&gt;           PARTITION data_2007 VALUES LESS THAN (TO_DATE('01-JAN-2008','DD-MON-YYYY')) ,&lt;br /&gt;           PARTITION data_2008 VALUES LESS THAN (TO_DATE('01-JAN-2009','DD-MON-YYYY')) ,&lt;br /&gt;           PARTITION data_2009 VALUES LESS THAN (TO_DATE('01-JAN-2010','DD-MON-YYYY'))&lt;br /&gt;         );&lt;br /&gt;Table created.&lt;br /&gt;&lt;br /&gt;SQL&gt; create index DATA_LOAD_LOCAL1 on DATA_LOAD (load_date) LOCAL;&lt;br /&gt;Index created.&lt;br /&gt;&lt;br /&gt;SQL&gt; insert into DATA_LOAD values (1,1,sysdate-1200,10,'DELHI');&lt;br /&gt;1 row created.&lt;br /&gt;SQL&gt; insert into DATA_LOAD values (2,2,sysdate-1100,20,'RAJASTHAN');&lt;br /&gt;1 row created.&lt;br /&gt;SQL&gt; insert into DATA_LOAD values (3,3,sysdate-1000,30,'KERELA');&lt;br /&gt;1 row created.&lt;br /&gt;SQL&gt; insert into DATA_LOAD values (4,4,sysdate-1300,40,'ASSAM');&lt;br /&gt;1 row created.&lt;br /&gt;SQL&gt; insert into DATA_LOAD values (5,5,sysdate-900,50,'NAGALAND');&lt;br /&gt;1 row created.&lt;br /&gt;SQL&gt; insert into DATA_LOAD values (6,6,sysdate-300,60,'PUNJAB');&lt;br /&gt;1 row created.&lt;br /&gt;SQL&gt; insert into DATA_LOAD values (7,7,sysdate,70,'HARYANA');&lt;br /&gt;1 row created.&lt;br /&gt;SQL&gt; commit;&lt;br /&gt;Commit complete.&lt;br /&gt;SQL&gt; analyze table DATA_LOAD compute statistics;&lt;br /&gt;Table analyzed.&lt;br /&gt;&lt;br /&gt;SQL&gt; analyze index DATA_LOAD_LOCAL1 compute statistics ;&lt;br /&gt;Index analyzed.&lt;br /&gt;&lt;br /&gt;SQL&gt; select INDEX_NAME,COMPOSITE,PARTITION_NAME,SUBPARTITION_COUNT,NUM_ROWS from user_ind_partitions where index_name='DATA_LOAD_LOCAL1';&lt;br /&gt;&lt;br /&gt;INDEX_NAME                     COM PARTITION_NAME  SUBPARTITION_COUNT   NUM_ROWS&lt;br /&gt;------------------------------ --- --------------- ------------------ ----------&lt;br /&gt;DATA_LOAD_LOCAL1               YES DATA_2006                        6          5&lt;br /&gt;DATA_LOAD_LOCAL1               YES DATA_2007                        6          0&lt;br /&gt;DATA_LOAD_LOCAL1               YES DATA_2008                        6          1&lt;br /&gt;DATA_LOAD_LOCAL1               YES DATA_2009                        6          1&lt;br /&gt;&lt;br /&gt;SO we can see the index partitions were created the same way as the table partition, same subpartitions also.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Prefixed LOCAL Index:&lt;/span&gt;&lt;br /&gt;A prefixed local index is an index in which the left most column used in the index definition is the same as the table partitioning key. The above example is a local prefixed index.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;LOCAL NON-Prefixed Index:&lt;/span&gt;&lt;br /&gt;As the name suggests its opposite to the prefixed local index. In this index the left most key is not the partition key column.&lt;br /&gt;&lt;br /&gt;SQL&gt; create index DATA_LOAD_LOCAL2 on DATA_LOAD (source_id)  LOCAL;&lt;br /&gt;Index created.&lt;br /&gt;&lt;br /&gt;SQL&gt; analyze index DATA_LOAD_LOCAL2 compute statistics;&lt;br /&gt;Index analyzed.&lt;br /&gt;&lt;br /&gt;SQL&gt; select INDEX_NAME,COMPOSITE,PARTITION_NAME,SUBPARTITION_COUNT,NUM_ROWS from user_ind_partitions where index_name='DATA_LOAD_LOCAL2';&lt;br /&gt;INDEX_NAME                     COM PARTITION_NAME  SUBPARTITION_COUNT   NUM_ROWS&lt;br /&gt;------------------------------ --- --------------- ------------------ ----------&lt;br /&gt;DATA_LOAD_LOCAL2               YES DATA_2006                        6          5&lt;br /&gt;DATA_LOAD_LOCAL2               YES DATA_2007                        6          0&lt;br /&gt;DATA_LOAD_LOCAL2               YES DATA_2008                        6          1&lt;br /&gt;DATA_LOAD_LOCAL2               YES DATA_2009                        6          1&lt;br /&gt;&lt;br /&gt;We can see that even in the NON-Prefixed index has the same partitioning scheme as the partition table.&lt;br /&gt;Each partition of the NON-Prefixed Local index will contain the whole range of possible partition key values, so this might we inefficient at time if we are not using parallel option while selecting. As here the partitions for the index are created like the that of the table using the partition key, but the index key is something else.  &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;GLOBAL INDEXES:&lt;/span&gt;&lt;br /&gt;Basically Global Indexes are indexes on which we can define the parition scheme, we define how many partitions we want of the index using which ever table column we would like to use. A global index can be created with the table partition key as the leftmost column or with any other column and in the create statement we can define the partition values for the key.&lt;br /&gt;&lt;br /&gt;SQL&gt; CREATE INDEX DATA_LOAD_GLOBAL ON DATA_LOAD (load_date,data_size)&lt;br /&gt;    GLOBAL PARTITION BY RANGE (load_date)&lt;br /&gt;    (PARTITION p1 VALUES LESS THAN (TO_DATE('01-JAN-2008','DD-MON-YYYY')),&lt;br /&gt;    PARTITION p2 VALUES LESS THAN (MAXVALUE)&lt;br /&gt;    ); &lt;br /&gt;Index created.&lt;br /&gt;&lt;br /&gt;SQL&gt;  select INDEX_NAME,COMPOSITE,PARTITION_NAME,SUBPARTITION_COUNT,NUM_ROWS from user_ind_partitions where index_name='DATA_LOAD_GLOBAL';&lt;br /&gt;INDEX_NAME                     COM PARTITION_NAME  SUBPARTITION_COUNT   NUM_ROWS&lt;br /&gt;------------------------------ --- --------------- ------------------ ----------&lt;br /&gt;DATA_LOAD_GLOBAL               NO  P1                               0          5&lt;br /&gt;DATA_LOAD_GLOBAL               NO  P2                               0          2&lt;br /&gt;&lt;br /&gt;We can see that the partition definition of the index is different from the table.&lt;br /&gt;&lt;br /&gt;Actually the Global indexes are more useful when using other column for indexing the table rather than the partition key column of the table. As in our case the partitions are done on the basic on load_date, what if we use the column data_size more often to query than the load_date. In this case if we create a local index on data_size (non-prefixed local index) than its partition defination doesn't help the query as it is partitions are based on the table partitioning.&lt;br /&gt;In our case:&lt;br /&gt;Every partition based on load_date can have all the values of data_size. Say the data size column has values from 1 to 100.&lt;br /&gt;Then DATA_2006 can have values 1 to 100, DATA_2007 can have values 1 to 100 and so on. So this does not help quering this index so much.&lt;br /&gt;&lt;br /&gt;Instead we can create a global index on this column and define the correct partition scheme for the index using data_size as the partition key for the index.&lt;br /&gt;SQL&gt; CREATE INDEX DATA_LOAD_GLOBAL2 on DATA_LOAD (data_size)&lt;br /&gt; GLOBAL PARTITION BY RANGE (data_size)&lt;br /&gt; (PARTITION p1 VALUES LESS THAN (30),&lt;br /&gt; PARTITION p2 VALUES LESS THAN (50),&lt;br /&gt; PARTITION p3 VALUES LESS THAN (80),&lt;br /&gt; PARTITION p4 VALUES LESS THAN (MAXVALUE)&lt;br /&gt; ); &lt;br /&gt;Index created.&lt;br /&gt;&lt;br /&gt;SQL&gt; select INDEX_NAME,COMPOSITE,PARTITION_NAME,SUBPARTITION_COUNT,NUM_ROWS from user_ind_partitions where index_name='DATA_LOAD_GLOBAL2';&lt;br /&gt;INDEX_NAME                     COM PARTITION_NAME  SUBPARTITION_COUNT   NUM_ROWS&lt;br /&gt;------------------------------ --- --------------- ------------------ ----------&lt;br /&gt;DATA_LOAD_GLOBAL2              NO  P2                               0          2&lt;br /&gt;DATA_LOAD_GLOBAL2              NO  P3                               0          3&lt;br /&gt;DATA_LOAD_GLOBAL2              NO  P4                               0          0&lt;br /&gt;DATA_LOAD_GLOBAL2              NO  P1                               0          2&lt;br /&gt;&lt;br /&gt;Note: Global indexed should have same left most index key and the index partition key, they cannot be different.&lt;br /&gt;Else we will receive the below error. They are different from the non-prefixed local partition in this context.&lt;br /&gt;&lt;br /&gt;SQL&gt; CREATE INDEX DATA_LOAD_GLOBAL2 on DATA_LOAD (data_size)&lt;br /&gt;        GLOBAL PARTITION BY RANGE (source_id)&lt;br /&gt;        (PARTITION p1 VALUES LESS THAN (30),&lt;br /&gt;        PARTITION p2 VALUES LESS THAN (50),&lt;br /&gt;        PARTITION p3 VALUES LESS THAN (80),&lt;br /&gt;        PARTITION p4 VALUES LESS THAN (MAXVALUE)&lt;br /&gt;        );   2    3    4    5    6    7&lt;br /&gt;        GLOBAL PARTITION BY RANGE (source_id)&lt;br /&gt;                                            *&lt;br /&gt;ERROR at line 2:&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;ORA-14038&lt;/span&gt;: GLOBAL partitioned index must be prefixed&lt;br /&gt;&lt;br /&gt;Similarly we can have hash and list partition Global indexes:&lt;br /&gt;&lt;br /&gt;SQL&gt; CREATE INDEX DATA_LOAD_GLOBAL3 on DATA_LOAD (data_size) GLOBAL PARTITION BY HASH (data_size) PARTITIONS 4;&lt;br /&gt;CREATE INDEX DATA_LOAD_GLOBAL3 on DATA_LOAD (data_size) GLOBAL PARTITION BY HASH (data_size) PARTITIONS 4&lt;br /&gt;                                             *&lt;br /&gt;ERROR at line 1:&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;ORA-01408&lt;/span&gt;: such column list already indexed&lt;br /&gt;We received the above error as we already create an index with the above column.&lt;br /&gt;&lt;br /&gt;SQL&gt; CREATE INDEX DATA_LOAD_GLOBAL3 on DATA_LOAD (data_size,source_id) GLOBAL PARTITION BY HASH (data_size) PARTITIONS 4;&lt;br /&gt;Index created.&lt;br /&gt;&lt;br /&gt;And so on....&lt;br /&gt;&lt;br /&gt;&lt;a href="http://apunhiran.blogspot.com/2009/05/oracle-partitioning-types-1.html"&gt;&lt;span style="font-weight:bold;"&gt;Details about Oracle Partition Methods/Types&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4092304359380397372-378722451583279659?l=apunhiran.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apunhiran.blogspot.com/feeds/378722451583279659/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4092304359380397372&amp;postID=378722451583279659' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/378722451583279659'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/378722451583279659'/><link rel='alternate' type='text/html' href='http://apunhiran.blogspot.com/2009/05/oracle-partitioning-viii-partition.html' title='Oracle Partitioning VIII - Partition Indexes'/><author><name>Apun Hiran</name><uri>http://www.blogger.com/profile/04745021360458270341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_viek7Sw5RrM/R_yAZoPGqYI/AAAAAAAAAIM/eS3VxJ7S2Pc/S220/IMG_0042.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4092304359380397372.post-2835460745512101575</id><published>2009-05-14T07:58:00.007+05:30</published><updated>2009-05-14T08:28:39.763+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='partitioning'/><category scheme='http://www.blogger.com/atom/ns#' term='partition'/><category scheme='http://www.blogger.com/atom/ns#' term='exchange'/><category scheme='http://www.blogger.com/atom/ns#' term='exchange partition'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><category scheme='http://www.blogger.com/atom/ns#' term='ORA-14291'/><title type='text'>Oracle Partitioning - Exchange Partition</title><content type='html'>&lt;span style="font-weight:bold;"&gt;The need and use of exchange partitions:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I have used exchange partition to archive old data from an existing partition table. As we have a lot of very large partition tables which store data for past years, we exchange older partitions which don't need to be part of the existing table to a new table and then export it and save it on to a tape device as archive data. This way we are able to store the data out of the database and keep it on tapes for any future use. We can import this data whenever we need. We see that exchange partition is widely used in data warehousing environments to keep the tables in a manageable size, achieve adequate performance apart from data archiving. As using exchange partition we can restore this data back into the old table whenever we need it.&lt;br /&gt;We can use exchange partition to convert a non partitioned table into a partitioned table also.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Syntax and example:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;SQL&gt; CREATE TABLE DATA_LOAD&lt;br /&gt;    ( DATA_id     NUMBER(6),&lt;br /&gt;         source_id    NUMBER,&lt;br /&gt;         load_date    DATE,&lt;br /&gt;         data_size    NUMBER,&lt;br /&gt;         state           VARCHAR2(20))&lt;br /&gt;       PARTITION BY RANGE (load_date)&lt;br /&gt;       ( PARTITION data_2006 VALUES LESS THAN (TO_DATE('01-Jan-2007','DD-MON-YYYY')) TABLESPACE DATA_01,&lt;br /&gt;         PARTITION data_2007 VALUES LESS THAN (TO_DATE('01-Jan-2008','DD-MON-YYYY')) TABLESPACE DATA_02,&lt;br /&gt;        PARTITION data_2008 VALUES LESS THAN (TO_DATE('01-Jan-2009','DD-MON-YYYY')) TABLESPACE DATA_03,&lt;br /&gt;        PARTITION data_2009 VALUES LESS THAN (TO_DATE('01-Jan-2010','DD-MON-YYYY')) TABLESPACE DATA_04&lt;br /&gt;      );&lt;br /&gt;Table created.&lt;br /&gt;&lt;br /&gt;SQL&gt; insert into DATA_LOAD values (1,1,sysdate-1200,1,'CA');&lt;br /&gt;1 row created.&lt;br /&gt;SQL&gt; insert into DATA_LOAD values (2,2,sysdate-1100,1,'LA');&lt;br /&gt;1 row created.&lt;br /&gt;SQL&gt; insert into DATA_LOAD values (3,3,sysdate-1000,1,'FA');&lt;br /&gt;1 row created.&lt;br /&gt;SQL&gt; insert into DATA_LOAD values (4,4,sysdate-1300,1,'GA');&lt;br /&gt;1 row created.&lt;br /&gt;SQL&gt; insert into DATA_LOAD values (5,5,sysdate-900,1,'BA');&lt;br /&gt;1 row created.&lt;br /&gt;SQL&gt; insert into DATA_LOAD values (6,6,sysdate-300,1,'RA');&lt;br /&gt;1 row created.&lt;br /&gt;SQL&gt; insert into DATA_LOAD values (7,7,sysdate,1,'TA');&lt;br /&gt;1 row created.&lt;br /&gt;SQL&gt; commit;&lt;br /&gt;Commit complete.&lt;br /&gt;&lt;br /&gt;SQL&gt; set lines 300&lt;br /&gt;SQL&gt; select * from DATA_LOAD;&lt;br /&gt;   DATA_ID  SOURCE_ID LOAD_DATE  DATA_SIZE STATE&lt;br /&gt;---------- ---------- --------- ---------- --------------------&lt;br /&gt;         1          1 30-JAN-06          1 CA&lt;br /&gt;         2          2 10-MAY-06          1 LA&lt;br /&gt;         3          3 18-AUG-06          1 FA&lt;br /&gt;         4          4 22-OCT-05          1 GA&lt;br /&gt;         5          5 26-NOV-06          1 BA&lt;br /&gt;         6          6 18-JUL-08          1 RA&lt;br /&gt;         7          7 14-MAY-09          1 TA&lt;br /&gt;7 rows selected.&lt;br /&gt;&lt;br /&gt;SQL&gt; analyze table DATA_LOAD compute statistics;&lt;br /&gt;Table analyzed.&lt;br /&gt;&lt;br /&gt;SQL&gt; select TABLE_NAME,PARTITION_NAME,num_rows from user_tab_partitions where TABLE_NAME='DATA_LOAD';&lt;br /&gt;TABLE_NAME      PARTITION_NAME    NUM_ROWS&lt;br /&gt;--------------- --------------- ----------&lt;br /&gt;DATA_LOAD       DATA_2006                5&lt;br /&gt;DATA_LOAD       DATA_2007                0&lt;br /&gt;DATA_LOAD       DATA_2008                1&lt;br /&gt;DATA_LOAD       DATA_2009                1&lt;br /&gt;&lt;br /&gt;Now lets try and move the DATA_2006 to a new table, lets create the table to exchange the partition with:&lt;br /&gt;SQL&gt; create table DATA_2006 as select * from DATA_LOAD where 1=2;&lt;br /&gt;Table created.&lt;br /&gt;&lt;br /&gt;SQL&gt; select TABLE_NAME,PARTITION_NAME,num_rows from user_tab_partitions where TABLE_NAME='DATA_2006';&lt;br /&gt;no rows selected&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;SQL&gt; alter table DATA_LOAD EXCHANGE PARTITION DATA_2006 with table DATA_2006 without validation update global indexes;&lt;/span&gt;&lt;br /&gt;Table altered.&lt;br /&gt;&lt;br /&gt;SQL&gt; select * from DATA_2006;&lt;br /&gt;   DATA_ID  SOURCE_ID LOAD_DATE  DATA_SIZE STATE&lt;br /&gt;---------- ---------- --------- ---------- --------------------&lt;br /&gt;         1          1 30-JAN-06          1 CA&lt;br /&gt;         2          2 10-MAY-06          1 LA&lt;br /&gt;         3          3 18-AUG-06          1 FA&lt;br /&gt;         4          4 22-OCT-05          1 GA&lt;br /&gt;         5          5 26-NOV-06          1 BA&lt;br /&gt;&lt;br /&gt;SQL&gt; select * from DATA_LOAD;&lt;br /&gt;   DATA_ID  SOURCE_ID LOAD_DATE  DATA_SIZE STATE&lt;br /&gt;---------- ---------- --------- ---------- --------------------&lt;br /&gt;         6          6 18-JUL-08          1 RA&lt;br /&gt;         7          7 14-MAY-09          1 TA&lt;br /&gt;&lt;br /&gt;This was an example of single level partition, lets try a table with composite partitions:&lt;br /&gt;&lt;br /&gt;SQL&gt; drop table DATA_LOAD;&lt;br /&gt;Table dropped.&lt;br /&gt;SQL&gt; drop table DATA_2006;&lt;br /&gt;Table dropped.&lt;br /&gt;&lt;br /&gt;SQL&gt; CREATE TABLE DATA_LOAD&lt;br /&gt;        ( DATA_id     NUMBER(6),&lt;br /&gt;         source_id    NUMBER,&lt;br /&gt;         load_date    DATE,&lt;br /&gt;         data_size    NUMBER,&lt;br /&gt;         state           VARCHAR2(20))&lt;br /&gt;       PARTITION BY RANGE (load_date)&lt;br /&gt;       SUBPARTITION BY LIST (state)&lt;br /&gt;       SUBPARTITION TEMPLATE (&lt;br /&gt;         SUBPARTITION NORTH_01 VALUES ('DELHI', 'JAMMU KASHMIR', 'PUNJAB', 'HARYANA') TABLESPACE DATA_01,&lt;br /&gt;         SUBPARTITION WEST_01 VALUES ('RAJASTHAN', 'GUJRAT', 'MAHARASTRA') TABLESPACE DATA_02,&lt;br /&gt;         SUBPARTITION SOUTH_01 VALUES  ('TAMIL NADU', 'KERELA', 'KARNATAKA') TABLESPACE DATA_03,&lt;br /&gt;         SUBPARTITION EAST_01 VALUES ('ASSAM', 'WEST BENGAL', 'NAGALAND') TABLESPACE DATA_04,&lt;br /&gt;         SUBPARTITION NO_REGION VALUES (NULL) TABLESPACE USERS,&lt;br /&gt;         SUBPARTITION OTHER VALUES (DEFAULT) TABLESPACE USERS&lt;br /&gt;         )&lt;br /&gt;      ( PARTITION data_2006 VALUES LESS THAN (TO_DATE('01-JAN-2007','DD-MON-YYYY')) ,&lt;br /&gt;        PARTITION data_2007 VALUES LESS THAN (TO_DATE('01-JAN-2008','DD-MON-YYYY')) ,&lt;br /&gt;        PARTITION data_2008 VALUES LESS THAN (TO_DATE('01-JAN-2009','DD-MON-YYYY')) ,&lt;br /&gt;        PARTITION data_2009 VALUES LESS THAN (TO_DATE('01-JAN-2010','DD-MON-YYYY'))&lt;br /&gt;      );&lt;br /&gt;Table created.&lt;br /&gt;&lt;br /&gt;SQL&gt; insert into DATA_LOAD values (1,1,sysdate-1200,1,'DELHI');&lt;br /&gt;1 row created.&lt;br /&gt;SQL&gt; insert into DATA_LOAD values (2,2,sysdate-1100,1,'RAJASTHAN');&lt;br /&gt;1 row created.&lt;br /&gt;SQL&gt; insert into DATA_LOAD values (3,3,sysdate-1000,1,'KERELA');&lt;br /&gt;1 row created.&lt;br /&gt;SQL&gt; insert into DATA_LOAD values (4,4,sysdate-1300,1,'ASSAM');&lt;br /&gt;1 row created.&lt;br /&gt;SQL&gt; insert into DATA_LOAD values (5,5,sysdate-900,1,'NAGALAND');&lt;br /&gt;1 row created.&lt;br /&gt;SQL&gt; insert into DATA_LOAD values (6,6,sysdate-300,1,'PUNJAB');&lt;br /&gt;1 row created.&lt;br /&gt;SQL&gt; insert into DATA_LOAD values (7,7,sysdate,1,'HARYANA');&lt;br /&gt;1 row created.&lt;br /&gt;SQL&gt; commit;&lt;br /&gt;Commit complete.&lt;br /&gt;SQL&gt; analyze table DATA_LOAD compute statistics;&lt;br /&gt;Table analyzed.&lt;br /&gt;&lt;br /&gt;SQL&gt; select TABLE_NAME,PARTITION_NAME,num_rows,SUBPARTITION_COUNT from user_tab_partitions where TABLE_NAME='DATA_LOAD';&lt;br /&gt;TABLE_NAME      PARTITION_NAME    NUM_ROWS SUBPARTITION_COUNT&lt;br /&gt;--------------- --------------- ---------- ------------------&lt;br /&gt;DATA_LOAD       DATA_2006                5                  6&lt;br /&gt;DATA_LOAD       DATA_2007                0                  6&lt;br /&gt;DATA_LOAD       DATA_2008                1                  6&lt;br /&gt;DATA_LOAD       DATA_2009                1                  6&lt;br /&gt;&lt;br /&gt;SQL&gt; select TABLE_NAME,PARTITION_NAME,SUBPARTITION_NAME,num_rows from user_tab_subpartitions where TABLE_NAME='DATA_LOAD';&lt;br /&gt;TABLE_NAME      PARTITION_NAME  SUBPARTITION_NAME                NUM_ROWS&lt;br /&gt;--------------- --------------- ------------------------------ ----------&lt;br /&gt;DATA_LOAD       DATA_2006       DATA_2006_OTHER                         0&lt;br /&gt;DATA_LOAD       DATA_2006       DATA_2006_NO_REGION                     0&lt;br /&gt;DATA_LOAD       DATA_2006       DATA_2006_EAST_01                       2&lt;br /&gt;DATA_LOAD       DATA_2006       DATA_2006_SOUTH_01                      1&lt;br /&gt;DATA_LOAD       DATA_2006       DATA_2006_WEST_01                       1&lt;br /&gt;DATA_LOAD       DATA_2006       DATA_2006_NORTH_01                      1&lt;br /&gt;DATA_LOAD       DATA_2007       DATA_2007_OTHER                         0&lt;br /&gt;DATA_LOAD       DATA_2007       DATA_2007_NO_REGION                     0&lt;br /&gt;DATA_LOAD       DATA_2007       DATA_2007_EAST_01                       0&lt;br /&gt;DATA_LOAD       DATA_2007       DATA_2007_SOUTH_01                      0&lt;br /&gt;DATA_LOAD       DATA_2007       DATA_2007_WEST_01                       0&lt;br /&gt;DATA_LOAD       DATA_2007       DATA_2007_NORTH_01                      0&lt;br /&gt;DATA_LOAD       DATA_2008       DATA_2008_OTHER                         0&lt;br /&gt;DATA_LOAD       DATA_2008       DATA_2008_NO_REGION                     0&lt;br /&gt;DATA_LOAD       DATA_2008       DATA_2008_EAST_01                       0&lt;br /&gt;DATA_LOAD       DATA_2008       DATA_2008_SOUTH_01                      0&lt;br /&gt;DATA_LOAD       DATA_2008       DATA_2008_WEST_01                       0&lt;br /&gt;DATA_LOAD       DATA_2008       DATA_2008_NORTH_01                      1&lt;br /&gt;DATA_LOAD       DATA_2009       DATA_2009_OTHER                         0&lt;br /&gt;DATA_LOAD       DATA_2009       DATA_2009_NO_REGION                     0&lt;br /&gt;DATA_LOAD       DATA_2009       DATA_2009_EAST_01                       0&lt;br /&gt;DATA_LOAD       DATA_2009       DATA_2009_SOUTH_01                      0&lt;br /&gt;DATA_LOAD       DATA_2009       DATA_2009_WEST_01                       0&lt;br /&gt;DATA_LOAD       DATA_2009       DATA_2009_NORTH_01                      1&lt;br /&gt;24 rows selected.&lt;br /&gt;&lt;br /&gt;Now lets create the table to exchange the partition with:&lt;br /&gt;&lt;br /&gt;SQL&gt; create table DATA_2006 as select * from DATA_LOAD where 1=2;&lt;br /&gt;Table created.&lt;br /&gt;Now to exchange the partition DATA_2006, with the table DATA_2006:&lt;br /&gt;&lt;br /&gt;SQL&gt; alter table DATA_LOAD EXCHANGE PARTITION DATA_2006 with table DATA_2006 without validation update global indexes;&lt;br /&gt;alter table DATA_LOAD EXCHANGE PARTITION DATA_2006 with table DATA_2006 without validation update global indexes&lt;br /&gt;                                                              *&lt;br /&gt;ERROR at line 1:&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;ORA-14291&lt;/span&gt;: cannot EXCHANGE a composite partition with a non-partitioned table&lt;br /&gt;&lt;br /&gt;SQL&gt; !oerr ora 14291&lt;br /&gt;14291, 00000, "cannot EXCHANGE a composite partition with a non-partitioned table"&lt;br /&gt;// *Cause:  A composite partition can only be exchanged with a partitioned&lt;br /&gt;//          table.&lt;br /&gt;// *Action: Ensure that the table being exchanged is partitioned or that&lt;br /&gt;//          that the partition being exchanged is non-composite.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This should that we cannot exchange partition with a normal table like we did the last time, now lets create the correct table:&lt;br /&gt;&lt;br /&gt;SQL&gt; drop table DATA_2006;&lt;br /&gt;Table dropped.&lt;br /&gt;&lt;br /&gt;We need to create a table with the partition scheme as the subpartition scheme of the main/big table, to be able to exchange its partition with a new table:&lt;br /&gt;&lt;br /&gt;SQL&gt; CREATE TABLE DATA_2006&lt;br /&gt;  2       ( DATA_id     NUMBER(6),&lt;br /&gt;  3        source_id    NUMBER,&lt;br /&gt;  4        load_date    DATE,&lt;br /&gt;  5        data_size    NUMBER,&lt;br /&gt;  6        state           VARCHAR2(20))&lt;br /&gt;  7      PARTITION BY LIST (state)&lt;br /&gt;  8       (PARTITION NORTH_01 VALUES ('DELHI', 'JAMMU KASHMIR', 'PUNJAB', 'HARYANA') TABLESPACE DATA_01,&lt;br /&gt;  9        PARTITION WEST_01 VALUES ('RAJASTHAN', 'GUJRAT', 'MAHARASTRA') TABLESPACE DATA_02,&lt;br /&gt; 10       PARTITION SOUTH_01 VALUES  ('TAMIL NADU', 'KERELA', 'KARNATAKA') TABLESPACE DATA_03,&lt;br /&gt; 11       PARTITION EAST_01 VALUES ('ASSAM', 'WEST BENGAL', 'NAGALAND') TABLESPACE DATA_04,&lt;br /&gt; 12       PARTITION NO_REGION VALUES (NULL) TABLESPACE USERS,&lt;br /&gt; 13       PARTITION OTHER VALUES (DEFAULT) TABLESPACE USERS&lt;br /&gt; 14       );&lt;br /&gt;Table created.&lt;br /&gt;&lt;br /&gt;SQL&gt; alter table DATA_LOAD EXCHANGE PARTITION DATA_2006 with table DATA_2006 without validation update global indexes;&lt;br /&gt;Table altered.&lt;br /&gt;&lt;br /&gt;Just to check how the partitions are laid out on the new table. You can see that the subpartition data has moved to the respective partitions of the exchanged table.&lt;br /&gt;&lt;br /&gt;SQL&gt; select * from DATA_2006;&lt;br /&gt;   DATA_ID  SOURCE_ID LOAD_DATE  DATA_SIZE STATE&lt;br /&gt;---------- ---------- --------- ---------- --------------------&lt;br /&gt;         1          1 30-JAN-06          1 DELHI&lt;br /&gt;         2          2 10-MAY-06          1 RAJASTHAN&lt;br /&gt;         3          3 18-AUG-06          1 KERELA&lt;br /&gt;         4          4 22-OCT-05          1 ASSAM&lt;br /&gt;         5          5 26-NOV-06          1 NAGALAND&lt;br /&gt;&lt;br /&gt;SQL&gt; select * from DATA_LOAD;&lt;br /&gt;   DATA_ID  SOURCE_ID LOAD_DATE  DATA_SIZE STATE&lt;br /&gt;---------- ---------- --------- ---------- --------------------&lt;br /&gt;         6          6 18-JUL-08          1 PUNJAB&lt;br /&gt;         7          7 14-MAY-09          1 HARYANA&lt;br /&gt;&lt;br /&gt;SQL&gt; select TABLE_NAME,PARTITION_NAME,num_rows,SUBPARTITION_COUNT from user_tab_partitions where TABLE_NAME='DATA_2006';&lt;br /&gt;TABLE_NAME      PARTITION_NAME    NUM_ROWS SUBPARTITION_COUNT&lt;br /&gt;--------------- --------------- ---------- ------------------&lt;br /&gt;DATA_2006       NORTH_01                 1                  0&lt;br /&gt;DATA_2006       WEST_01                  1                  0&lt;br /&gt;DATA_2006       SOUTH_01                 1                  0&lt;br /&gt;DATA_2006       EAST_01                  2                  0&lt;br /&gt;DATA_2006       NO_REGION                0                  0&lt;br /&gt;DATA_2006       OTHER                    0                  0&lt;br /&gt;6 rows selected.&lt;br /&gt;&lt;br /&gt;The main/big table will still have the partition defination but with no rows after we analyze the table. Now we can either leave this empty partition or drop the same.&lt;br /&gt;&lt;br /&gt;SQL&gt;  select TABLE_NAME,PARTITION_NAME,num_rows,SUBPARTITION_COUNT from user_tab_partitions where TABLE_NAME='DATA_LOAD';&lt;br /&gt;TABLE_NAME      PARTITION_NAME    NUM_ROWS SUBPARTITION_COUNT&lt;br /&gt;--------------- --------------- ---------- ------------------&lt;br /&gt;DATA_LOAD       DATA_2006                0                  6&lt;br /&gt;DATA_LOAD       DATA_2007                0                  6&lt;br /&gt;DATA_LOAD       DATA_2008                1                  6&lt;br /&gt;DATA_LOAD       DATA_2009                1                  6&lt;br /&gt;&lt;br /&gt;We can restore the data back into the main table also. We can exchange the this newly created table with the empty partition in the big/main table back, incase we ever need the data back into the main table. Hence if we archive data by exchange partition we can restore them back into the main table if we ever need it. Another thing is if we might need to restore we should not drop the empty partitions as its easier to restore the data, else we would need to do a &lt;a href="http://apunhiran.blogspot.com/2009/05/oracle-partitioning-split-partition.html"&gt;split partition&lt;/a&gt; to create the partitions again.&lt;br /&gt;&lt;br /&gt;SQL&gt; alter table DATA_LOAD EXCHANGE PARTITION DATA_2006 with table DATA_2006 without validation update global indexes;&lt;br /&gt;Table altered.&lt;br /&gt;&lt;br /&gt;SQL&gt; select * from DATA_2006;&lt;br /&gt;no rows selected&lt;br /&gt;&lt;br /&gt;SQL&gt; select * from DATA_LOAD;&lt;br /&gt;   DATA_ID  SOURCE_ID LOAD_DATE  DATA_SIZE STATE&lt;br /&gt;---------- ---------- --------- ---------- --------------------&lt;br /&gt;         1          1 30-JAN-06          1 DELHI&lt;br /&gt;         2          2 10-MAY-06          1 RAJASTHAN&lt;br /&gt;         3          3 18-AUG-06          1 KERELA&lt;br /&gt;         4          4 22-OCT-05          1 ASSAM&lt;br /&gt;         5          5 26-NOV-06          1 NAGALAND&lt;br /&gt;         6          6 18-JUL-08          1 PUNJAB&lt;br /&gt;         7          7 14-MAY-09          1 HARYANA&lt;br /&gt;7 rows selected.&lt;br /&gt;&lt;br /&gt;SQL&gt; select TABLE_NAME,PARTITION_NAME,num_rows,SUBPARTITION_COUNT from user_tab_partitions where TABLE_NAME='DATA_LOAD';&lt;br /&gt;TABLE_NAME      PARTITION_NAME    NUM_ROWS SUBPARTITION_COUNT&lt;br /&gt;--------------- --------------- ---------- ------------------&lt;br /&gt;DATA_LOAD       DATA_2006                5                  6&lt;br /&gt;DATA_LOAD       DATA_2007                0                  6&lt;br /&gt;DATA_LOAD       DATA_2008                1                  6&lt;br /&gt;DATA_LOAD       DATA_2009                1                  6&lt;br /&gt;&lt;br /&gt;Useful metalink notes: &lt;br /&gt;&lt;a href="https://metalink.oracle.com/CSP/ui/flash.html#tab=KBHome(page=KBHome&amp;id=()),(page=KBNavigator&amp;id=(viewingMode=1143&amp;bmDocID=198120.1&amp;from=BOOKMARK&amp;bmDocType=BULLETIN&amp;bmDocDsrc=KB&amp;bmDocTitle=%3Cb%3EExchange%3C/b%3E%20%3Cb%3EPartitions%3C/b%3E%20-%20Common%20Problems))"&gt;Exchange Partitions - Common Problems, Doc ID: 198120.1&lt;/a&gt;&lt;/br&gt;&lt;br /&gt;&lt;a href="https://metalink.oracle.com/CSP/ui/flash.html#tab=KBHome(page=KBHome&amp;id=()),(page=KBNavigator&amp;id=(viewingMode=1143&amp;bmDocID=100701.1&amp;from=BOOKMARK&amp;bmDocType=SCRIPT&amp;bmDocDsrc=KB&amp;bmDocTitle=SCRIPT:%20To%20Automate%20the%20Composite-%3Cb%3EPartitioned%3C/b%3E%20Table%20%3Cb%3EExchange%3C/b%3E))"&gt;SCRIPT: To Automate the Composite-Partitioned Table Exchange, Doc ID: 100701.1&lt;/a&gt;&lt;/br&gt;&lt;br /&gt;&lt;a href="https://metalink.oracle.com/CSP/ui/flash.html#tab=KBHome(page=KBHome&amp;id=()),(page=KBNavigator&amp;id=(viewingMode=1143&amp;bmDocID=419505.1&amp;from=BOOKMARK&amp;bmDocType=HOWTO&amp;bmDocDsrc=KB&amp;bmDocTitle=%3Cb%3EExchange%3C/b%3E%20%3Cb%3EPartition%3C/b%3E%20Having%20%3Cb%3EGlobal%3C/b%3E%20%3Cb%3EIndex%3C/b%3E%20with%20Non%20-%20%3Cb%3EPartitioned%3C/b%3E%20...))"&gt;Exchange Partition Having Global Index with Non - Partitioned Table, Doc ID: 419505.1&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Note:&lt;/span&gt; When we do exchange partition the local indexes become invalid, hence we would need to rebuild the same. If we provide the update global indexes, the global indexes don't become invalid and hence no need to rebuild them.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4092304359380397372-2835460745512101575?l=apunhiran.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apunhiran.blogspot.com/feeds/2835460745512101575/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4092304359380397372&amp;postID=2835460745512101575' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/2835460745512101575'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/2835460745512101575'/><link rel='alternate' type='text/html' href='http://apunhiran.blogspot.com/2009/05/oracle-partitioning-exchange-partition.html' title='Oracle Partitioning - Exchange Partition'/><author><name>Apun Hiran</name><uri>http://www.blogger.com/profile/04745021360458270341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_viek7Sw5RrM/R_yAZoPGqYI/AAAAAAAAAIM/eS3VxJ7S2Pc/S220/IMG_0042.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4092304359380397372.post-3377696026559705225</id><published>2009-05-13T11:11:00.001+05:30</published><updated>2009-05-13T11:13:29.329+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='partitioning'/><category scheme='http://www.blogger.com/atom/ns#' term='merge'/><category scheme='http://www.blogger.com/atom/ns#' term='partition'/><category scheme='http://www.blogger.com/atom/ns#' term='merge partition'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Oracle Partitioning - Merge Partition</title><content type='html'>Oracle allows us to merge 2 partitions into one new partition.&lt;br /&gt;SQL&gt; CREATE TABLE DATA_LOAD&lt;br /&gt;             ( DATA_id     NUMBER(6),&lt;br /&gt;              source_id    NUMBER,&lt;br /&gt;              load_date    DATE,&lt;br /&gt;              data_size    NUMBER,&lt;br /&gt;              state           VARCHAR2(20))&lt;br /&gt;            PARTITION BY RANGE (data_size)&lt;br /&gt;            ( PARTITION data_01_2009 VALUES LESS THAN (10) TABLESPACE DATA_01,&lt;br /&gt;              PARTITION data_02_2009 VALUES LESS THAN (20) TABLESPACE DATA_02,&lt;br /&gt;           PARTITION data_03_2009 VALUES LESS THAN (30) TABLESPACE DATA_03,&lt;br /&gt;           PARTITION data_04_2009 VALUES LESS THAN (40) TABLESPACE DATA_04&lt;br /&gt;         );&lt;br /&gt;Table created.&lt;br /&gt;&lt;br /&gt;SQL&gt; alter table DATA_LOAD merge partitions data_01_2009,data_02_2009 into partition data_01_02_2009 TABLESPACE DATA_02;&lt;br /&gt;Table altered.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Merging Subpartitions:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;SQL&gt; CREATE TABLE DATA_LOAD&lt;br /&gt;    ( DATA_id     NUMBER(6),&lt;br /&gt;        source_id    NUMBER,&lt;br /&gt;        load_date    DATE,&lt;br /&gt;        target_date  DATE,&lt;br /&gt;        data_size    NUMBER,&lt;br /&gt;        state           VARCHAR2(20)&lt;br /&gt;        )&lt;br /&gt;      PARTITION BY RANGE (load_date)&lt;br /&gt;      SUBPARTITION BY RANGE (target_date)&lt;br /&gt;      ( PARTITION data_01_2009 VALUES LESS THAN (TO_DATE('01-FEB-2009','DD-MON-YYYY')) TABLESPACE DATA_01&lt;br /&gt;          (SUBPARTITION data_01_2009_1 VALUES LESS THAN (TO_DATE('15-JAN-2009','DD-MON-YYYY')),&lt;br /&gt;           SUBPARTITION data_01_2009_2 VALUES LESS THAN (TO_DATE('25-JAN-2009','DD-MON-YYYY'))&lt;br /&gt;           ) ,&lt;br /&gt;        PARTITION data_02_2009 VALUES LESS THAN (TO_DATE('01-MAR-2009','DD-MON-YYYY')) TABLESPACE DATA_02&lt;br /&gt;          (SUBPARTITION data_02_2009_1 VALUES LESS THAN (TO_DATE('15-FEB-2009','DD-MON-YYYY')),&lt;br /&gt;           SUBPARTITION data_02_2009_2 VALUES LESS THAN (TO_DATE('25-FEB-2009','DD-MON-YYYY'))&lt;br /&gt;           ) ,&lt;br /&gt;        PARTITION data_03_2009 VALUES LESS THAN (TO_DATE('01-APR-2009','DD-MON-YYYY')) TABLESPACE DATA_03&lt;br /&gt;          (SUBPARTITION data_03_2009_1 VALUES LESS THAN (TO_DATE('15-MAR-2009','DD-MON-YYYY')),&lt;br /&gt;           SUBPARTITION data_03_2009_2 VALUES LESS THAN (TO_DATE('25-MAR-2009','DD-MON-YYYY')),&lt;br /&gt;           SUBPARTITION data_03_2009_3 VALUES LESS THAN (MAXVALUE)&lt;br /&gt;           ) ,&lt;br /&gt;        PARTITION data_04_2009 VALUES LESS THAN (TO_DATE('01-MAY-2009','DD-MON-YYYY'))  TABLESPACE DATA_04&lt;br /&gt;          (SUBPARTITION data_04_2009_1 VALUES LESS THAN (TO_DATE('15-APR-2009','DD-MON-YYYY')),&lt;br /&gt;           SUBPARTITION data_04_2009_2 VALUES LESS THAN (TO_DATE('25-APR-2009','DD-MON-YYYY')),&lt;br /&gt;           SUBPARTITION data_04_2009_3 VALUES LESS THAN (MAXVALUE)&lt;br /&gt;           )&lt;br /&gt;      );&lt;br /&gt;&lt;br /&gt;SQL&gt; alter table DATA_LOAD merge subpartitions data_03_2009_1,data_03_2009_2 into subpartition data_03_2009_1_2;&lt;br /&gt;Table altered.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://apunhiran.blogspot.com/2009/05/oracle-partitioning-types-1.html"&gt;&lt;span style="font-weight:bold;"&gt;Details about Oracle Partition Methods/Types&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4092304359380397372-3377696026559705225?l=apunhiran.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apunhiran.blogspot.com/feeds/3377696026559705225/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4092304359380397372&amp;postID=3377696026559705225' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/3377696026559705225'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/3377696026559705225'/><link rel='alternate' type='text/html' href='http://apunhiran.blogspot.com/2009/05/oracle-partitioning-merge-partition.html' title='Oracle Partitioning - Merge Partition'/><author><name>Apun Hiran</name><uri>http://www.blogger.com/profile/04745021360458270341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_viek7Sw5RrM/R_yAZoPGqYI/AAAAAAAAAIM/eS3VxJ7S2Pc/S220/IMG_0042.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4092304359380397372.post-7741895484337217257</id><published>2009-05-13T06:58:00.003+05:30</published><updated>2009-05-13T07:24:50.751+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='partitioning'/><category scheme='http://www.blogger.com/atom/ns#' term='partition'/><category scheme='http://www.blogger.com/atom/ns#' term='drop partition'/><category scheme='http://www.blogger.com/atom/ns#' term='ORA-14400'/><category scheme='http://www.blogger.com/atom/ns#' term='ORA-14323'/><category scheme='http://www.blogger.com/atom/ns#' term='ORA-14211'/><category scheme='http://www.blogger.com/atom/ns#' term='add'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><category scheme='http://www.blogger.com/atom/ns#' term='add partition'/><title type='text'>Oracle Partitioning - Add Partition</title><content type='html'>We can also add partitions to an already created partition table. Creating a partition table.&lt;br /&gt;SQL&gt; CREATE TABLE DATA_LOAD&lt;br /&gt;         ( DATA_id     NUMBER(6),&lt;br /&gt;          source_id    NUMBER,&lt;br /&gt;          load_date    DATE,&lt;br /&gt;          data_size    NUMBER,&lt;br /&gt;          state           VARCHAR2(20))&lt;br /&gt;        PARTITION BY RANGE (data_size)&lt;br /&gt;        ( PARTITION data_01_2009 VALUES LESS THAN (10) TABLESPACE DATA_01,&lt;br /&gt;          PARTITION data_02_2009 VALUES LESS THAN (20) TABLESPACE DATA_02,&lt;br /&gt;        PARTITION data_03_2009 VALUES LESS THAN (30) TABLESPACE DATA_03,&lt;br /&gt;        PARTITION data_04_2009 VALUES LESS THAN (40) TABLESPACE DATA_04&lt;br /&gt;      );&lt;br /&gt;Table created.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Note:&lt;/span&gt; The table should not have a max value partition, else you will need to use split partition instead of add partition. Partition can be added only in the end not in between.&lt;br /&gt;&lt;br /&gt;SQL&gt; insert into DATA_LOAD values (1,1,sysdate-20,9,'DL');&lt;br /&gt;1 row created.&lt;br /&gt;SQL&gt; insert into DATA_LOAD values (2,2,sysdate-9,20,'RJ');&lt;br /&gt;1 row created.&lt;br /&gt;SQL&gt; insert into DATA_LOAD values (2,2,sysdate-9,35,'LL');&lt;br /&gt;1 row created.&lt;br /&gt;SQL&gt; commit;&lt;br /&gt;Commit complete.&lt;br /&gt;SQL&gt; insert into DATA_LOAD values (2,2,sysdate-3,50,'LL');&lt;br /&gt;insert into DATA_LOAD values (2,2,sysdate-3,50,'LL')&lt;br /&gt;            *&lt;br /&gt;ERROR at line 1:&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;ORA-14400&lt;/span&gt;: inserted partition key does not map to any partition&lt;br /&gt;&lt;br /&gt;Now when we tried to insert a value higher than the partition bound value we get this error.&lt;br /&gt;Now lets add partition to accomodate this insert statement.&lt;br /&gt;&lt;br /&gt;SQL&gt; alter table DATA_LOAD add partition data_05_2009 VALUES LESS THAN (50) TABLESPACE DATA_01;&lt;br /&gt;Table altered.&lt;br /&gt;&lt;br /&gt;SQL&gt; alter table DATA_LOAD add partition data_06_2009 VALUES LESS THAN (60) TABLESPACE DATA_02;&lt;br /&gt;Table altered.&lt;br /&gt;&lt;br /&gt;SQL&gt; insert into DATA_LOAD values (2,2,sysdate-3,50,'LL');&lt;br /&gt;1 row created.&lt;br /&gt;&lt;br /&gt;Same way the partitions can be added for list or hash partition:&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Hash partition:&lt;/span&gt; SQL&gt; CREATE TABLE DATA_LOAD&lt;br /&gt;        ( DATA_id     NUMBER(6),&lt;br /&gt;         source_id    NUMBER,&lt;br /&gt;         load_date    DATE,&lt;br /&gt;         data_size    NUMBER,&lt;br /&gt;         state           VARCHAR2(20))&lt;br /&gt;       PARTITION BY HASH (source_id)&lt;br /&gt;       ( PARTITION data_01_2009 TABLESPACE DATA_01,&lt;br /&gt;         PARTITION data_02_2009 TABLESPACE DATA_02,&lt;br /&gt;        PARTITION data_03_2009 TABLESPACE DATA_03,&lt;br /&gt;        PARTITION data_04_2009 TABLESPACE DATA_04&lt;br /&gt;      );&lt;br /&gt;Table created.&lt;br /&gt;&lt;br /&gt;SQL&gt; alter table DATA_LOAD add partition data_05_2009 TABLESPACE DATA_01;&lt;br /&gt;Table altered.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;List Partition:&lt;/span&gt; SQL&gt; CREATE TABLE DATA_LOAD&lt;br /&gt;    ( DATA_id     NUMBER(6),&lt;br /&gt;         source_id    NUMBER,&lt;br /&gt;         load_date    DATE,&lt;br /&gt;         data_size    NUMBER,&lt;br /&gt;         state           VARCHAR2(20))&lt;br /&gt;       PARTITION BY LIST (state)&lt;br /&gt;        (PARTITION NORTH_01 VALUES ('DELHI', 'JAMMU KASHMIR', 'PUNJAB', 'HARYANA'),&lt;br /&gt;         PARTITION WEST_01 VALUES ('RAJASTHAN', 'GUJRAT', 'MAHARASTRA'),&lt;br /&gt;        PARTITION SOUTH_01 VALUES  ('TAMIL NADU', 'KERELA', 'KARNATAKA'),&lt;br /&gt;        PARTITION EAST_01 VALUES ('ASSAM', 'WEST BENGAL', 'NAGALAND'),&lt;br /&gt;        PARTITION NO_REGION VALUES (NULL),&lt;br /&gt;        PARTITION OTHER VALUES (DEFAULT)&lt;br /&gt;        );&lt;br /&gt;Table created.&lt;br /&gt;&lt;br /&gt;Its important that the table does not have a DEFAULT value partition.&lt;br /&gt;&lt;br /&gt;SQL&gt; alter table DATA_LOAD add partition NORTH_EAST_01 VALUES ('ARUNACHAL PRADESH','MIZORAM','TRIPURA');&lt;br /&gt;alter table DATA_LOAD add partition NORTH_EAST_01 VALUES ('ARUNACHAL PRADESH','MIZORAM','TRIPURA')&lt;br /&gt;            *&lt;br /&gt;ERROR at line 1:&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;ORA-14323&lt;/span&gt;: cannot add partition when DEFAULT partition exists&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SQL&gt; drop table DATA_LOAD&lt;br /&gt;  2  /&lt;br /&gt;Table dropped.&lt;br /&gt;Alternately, you cn also drop the partition, make sure that the partition does not have any data, rows:&lt;br /&gt;&lt;br /&gt;SQL&gt; alter table DATA_LOAD drop partition OTHER;&lt;br /&gt;Table altered.&lt;br /&gt;&lt;br /&gt;SQL&gt; CREATE TABLE DATA_LOAD&lt;br /&gt;        ( DATA_id     NUMBER(6),&lt;br /&gt;         source_id    NUMBER,&lt;br /&gt;         load_date    DATE,&lt;br /&gt;         data_size    NUMBER,&lt;br /&gt;         state           VARCHAR2(20))&lt;br /&gt;       PARTITION BY LIST (state)&lt;br /&gt;        (PARTITION NORTH_01 VALUES ('DELHI', 'JAMMU KASHMIR', 'PUNJAB', 'HARYANA'),&lt;br /&gt;         PARTITION WEST_01 VALUES ('RAJASTHAN', 'GUJRAT', 'MAHARASTRA'),&lt;br /&gt;        PARTITION SOUTH_01 VALUES  ('TAMIL NADU', 'KERELA', 'KARNATAKA'),&lt;br /&gt;        PARTITION EAST_01 VALUES ('ASSAM', 'WEST BENGAL', 'NAGALAND'),&lt;br /&gt;        PARTITION NO_REGION VALUES (NULL)&lt;br /&gt;         );&lt;br /&gt;Table created.&lt;br /&gt;&lt;br /&gt;SQL&gt; alter table DATA_LOAD add partition NORTH_EAST_01 VALUES ('ARUNACHAL PRADESH','MIZORAM','TRIPURA');&lt;br /&gt;Table altered.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Add subpartition:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Create table first:&lt;br /&gt;SQL&gt; CREATE TABLE DATA_LOAD&lt;br /&gt;    ( DATA_id     NUMBER(6),&lt;br /&gt;        source_id    NUMBER,&lt;br /&gt;        load_date    DATE,&lt;br /&gt;        target_date  DATE,&lt;br /&gt;        data_size    NUMBER,&lt;br /&gt;        state           VARCHAR2(20)&lt;br /&gt;        )&lt;br /&gt;      PARTITION BY RANGE (load_date)&lt;br /&gt;      SUBPARTITION BY RANGE (target_date)&lt;br /&gt;      ( PARTITION data_01_2009 VALUES LESS THAN (TO_DATE('01-FEB-2009','DD-MON-YYYY')) TABLESPACE DATA_01&lt;br /&gt;          (SUBPARTITION data_01_2009_1 VALUES LESS THAN (TO_DATE('15-JAN-2009','DD-MON-YYYY')),&lt;br /&gt;           SUBPARTITION data_01_2009_2 VALUES LESS THAN (TO_DATE('25-JAN-2009','DD-MON-YYYY'))&lt;br /&gt;           ) ,&lt;br /&gt;        PARTITION data_02_2009 VALUES LESS THAN (TO_DATE('01-MAR-2009','DD-MON-YYYY')) TABLESPACE DATA_02&lt;br /&gt;          (SUBPARTITION data_02_2009_1 VALUES LESS THAN (TO_DATE('15-FEB-2009','DD-MON-YYYY')),&lt;br /&gt;           SUBPARTITION data_02_2009_2 VALUES LESS THAN (TO_DATE('25-FEB-2009','DD-MON-YYYY'))&lt;br /&gt;           ) ,&lt;br /&gt;        PARTITION data_03_2009 VALUES LESS THAN (TO_DATE('01-APR-2009','DD-MON-YYYY')) TABLESPACE DATA_03&lt;br /&gt;          (SUBPARTITION data_03_2009_1 VALUES LESS THAN (TO_DATE('15-MAR-2009','DD-MON-YYYY')),&lt;br /&gt;           SUBPARTITION data_03_2009_2 VALUES LESS THAN (TO_DATE('25-MAR-2009','DD-MON-YYYY')),&lt;br /&gt;           SUBPARTITION data_03_2009_3 VALUES LESS THAN (MAXVALUE)&lt;br /&gt;           ) ,&lt;br /&gt;        PARTITION data_04_2009 VALUES LESS THAN (TO_DATE('01-MAY-2009','DD-MON-YYYY'))  TABLESPACE DATA_04&lt;br /&gt;          (SUBPARTITION data_04_2009_1 VALUES LESS THAN (TO_DATE('15-APR-2009','DD-MON-YYYY')),&lt;br /&gt;           SUBPARTITION data_04_2009_2 VALUES LESS THAN (TO_DATE('25-APR-2009','DD-MON-YYYY')),&lt;br /&gt;           SUBPARTITION data_04_2009_3 VALUES LESS THAN (MAXVALUE)&lt;br /&gt;           )&lt;br /&gt;      );&lt;br /&gt;Table created.&lt;br /&gt;&lt;br /&gt;SQL&gt; alter table DATA_LOAD modify PARTITION data_01_2009 add SUBPARTITION data_01_2009_3 VALUES LESS THAN (TO_DATE('28-JAN-2009','DD-MON-YYYY'));&lt;br /&gt;Table altered.&lt;br /&gt;&lt;br /&gt;SQL&gt; alter table DATA_LOAD modify PARTITION data_03_2009 add SUBPARTITION data_03_2009_4 VALUES LESS THAN (TO_DATE('28-MAR-2009','DD-MON-YYYY'));&lt;br /&gt;alter table DATA_LOAD modify PARTITION data_03_2009 add SUBPARTITION data_03_2009_4 VALUES LESS THAN (TO_DATE('28-MAR-2009','DD-MON-YYYY'))&lt;br /&gt;                                                                     *&lt;br /&gt;ERROR at line 1:&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;ORA-14211&lt;/span&gt;: subpartition bound must collate higher than that of the last subpartition&lt;br /&gt;&lt;br /&gt;Cant add partition if there is a maxvalye partition. Please make sure there is no rows before dropping.&lt;br /&gt;&lt;br /&gt;SQL&gt; alter table DATA_LOAD drop SUBPARTITION data_03_2009_3;&lt;br /&gt;Table altered.&lt;br /&gt;&lt;br /&gt;SQL&gt; alter table DATA_LOAD modify PARTITION data_03_2009 add SUBPARTITION data_03_2009_4 VALUES LESS THAN (TO_DATE('28-MAR-2009','DD-MON-YYYY'));&lt;br /&gt;Table altered.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://apunhiran.blogspot.com/2009/05/oracle-partitioning-types-1.html"&gt;&lt;span style="font-weight:bold;"&gt;Details about Oracle Partition Methods/Types&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4092304359380397372-7741895484337217257?l=apunhiran.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apunhiran.blogspot.com/feeds/7741895484337217257/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4092304359380397372&amp;postID=7741895484337217257' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/7741895484337217257'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/7741895484337217257'/><link rel='alternate' type='text/html' href='http://apunhiran.blogspot.com/2009/05/oracle-partitioning-add-partition.html' title='Oracle Partitioning - Add Partition'/><author><name>Apun Hiran</name><uri>http://www.blogger.com/profile/04745021360458270341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_viek7Sw5RrM/R_yAZoPGqYI/AAAAAAAAAIM/eS3VxJ7S2Pc/S220/IMG_0042.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4092304359380397372.post-6042334855152709420</id><published>2009-05-13T06:25:00.002+05:30</published><updated>2009-05-13T06:29:21.876+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='split partition'/><category scheme='http://www.blogger.com/atom/ns#' term='partitioning'/><category scheme='http://www.blogger.com/atom/ns#' term='split'/><category scheme='http://www.blogger.com/atom/ns#' term='partition'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Oracle Partitioning - Split Partition</title><content type='html'>At times when we initially create partitions we make them with a certain data load in mind. But after sometime/years we realize that the partition scheme is becoming a problem and there are certain partitions with more data and this can create performance problems. Here is how we can split the partitions to create smaller partitions or to say create partitions between already existing partitions.&lt;br /&gt;Lets create a partition table first:&lt;br /&gt;&lt;br /&gt;SQL&gt; CREATE TABLE DATA_LOAD&lt;br /&gt;  2       ( DATA_id     NUMBER(6),&lt;br /&gt;  3        source_id    NUMBER,&lt;br /&gt;  4        load_date    DATE,&lt;br /&gt;  5        data_size    NUMBER,&lt;br /&gt;  6        state           VARCHAR2(20))&lt;br /&gt;  7      PARTITION BY RANGE (data_size)&lt;br /&gt;  8      ( PARTITION data_01_2009 VALUES LESS THAN (10) TABLESPACE DATA_01,&lt;br /&gt;  9        PARTITION data_02_2009 VALUES LESS THAN (20) TABLESPACE DATA_02,&lt;br /&gt; 10       PARTITION data_03_2009 VALUES LESS THAN (30) TABLESPACE DATA_03,&lt;br /&gt; 11       PARTITION data_04_2009 VALUES LESS THAN (MAXVALUE) TABLESPACE DATA_04&lt;br /&gt; 12     );&lt;br /&gt;Table created.&lt;br /&gt;&lt;br /&gt;Inserting some data into the table:&lt;br /&gt;&lt;br /&gt;SQL&gt; insert into DATA_LOAD values (1,1,sysdate-20,9,'DL');&lt;br /&gt;1 row created.&lt;br /&gt;SQL&gt; insert into DATA_LOAD values (2,2,sysdate-9,35,'RJ');&lt;br /&gt;1 row created.&lt;br /&gt;SQL&gt; insert into DATA_LOAD values (3,3,sysdate-8,45,'LL');&lt;br /&gt;1 row created.&lt;br /&gt;SQL&gt; insert into DATA_LOAD values (4,4,sysdate-7,100,'KK');&lt;br /&gt;1 row created.&lt;br /&gt;SQL&gt; insert into DATA_LOAD values (5,5,sysdate-6,200,'JJ');&lt;br /&gt;1 row created.&lt;br /&gt;SQL&gt; commit;&lt;br /&gt;Commit complete.&lt;br /&gt;SQL&gt; analyze table DATA_LOAD compute statistics;&lt;br /&gt;Table analyzed.&lt;br /&gt;SQL&gt; select TABLE_NAME,PARTITION_NAME,HIGH_VALUE,num_rows from user_tab_partitions where TABLE_NAME='DATA_LOAD';&lt;br /&gt;TABLE_NAME      PARTITION_NAME  HIGH_VALUE        NUM_ROWS&lt;br /&gt;--------------- --------------- --------------- ----------&lt;br /&gt;DATA_LOAD       DATA_01_2009    10                       1&lt;br /&gt;DATA_LOAD       DATA_02_2009    20                       0&lt;br /&gt;DATA_LOAD       DATA_03_2009    30                       0&lt;br /&gt;DATA_LOAD       DATA_04_2009    MAXVALUE                 4&lt;br /&gt;&lt;br /&gt;Now we can see that the 4th partition has more rows than the the others, so lets try and split the partition in to 2. And lets make a partition from value 30 to 100.&lt;br /&gt;&lt;br /&gt;SQL&gt; alter table DATA_LOAD split partition data_04_2009 at (100) into (PARTITION data_04_2009_a, PARTITION data_04_2009_b);&lt;br /&gt;Table altered.&lt;br /&gt;&lt;br /&gt;SQL&gt; analyze table DATA_LOAD compute statistics;&lt;br /&gt;Table analyzed.&lt;br /&gt;&lt;br /&gt;SQL&gt; select TABLE_NAME,PARTITION_NAME,HIGH_VALUE,num_rows from user_tab_partitions where TABLE_NAME='DATA_LOAD';&lt;br /&gt;TABLE_NAME      PARTITION_NAME  HIGH_VALUE        NUM_ROWS&lt;br /&gt;--------------- --------------- --------------- ----------&lt;br /&gt;DATA_LOAD       DATA_01_2009    10                       1&lt;br /&gt;DATA_LOAD       DATA_02_2009    20                       0&lt;br /&gt;DATA_LOAD       DATA_03_2009    30                       0&lt;br /&gt;DATA_LOAD       DATA_04_2009_A  100                      2&lt;br /&gt;DATA_LOAD       DATA_04_2009_B  MAXVALUE                 2&lt;br /&gt;&lt;br /&gt;So you can see the last partition got split into 2 parts.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Some important things to keep in mind before doing a split partition:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1.) SPLIT PARTITION cannot be used for hash partitions or subpartitions.&lt;br /&gt;2.) Partition cannot be split along the already specified high boundry of the partition you are trying to split.&lt;br /&gt;&lt;br /&gt;A good metalink note: &lt;a href="https://metalink.oracle.com/CSP/ui/flash.html#tab=KBHome(page=KBHome&amp;id=()),(page=KBNavigator&amp;id=(viewingMode=1143&amp;bmDocID=199623.1&amp;from=BOOKMARK&amp;bmDocType=BULLETIN&amp;bmDocDsrc=KB&amp;bmDocTitle=Top%20Issues%20Encountered%20Regarding%20%3Cb%3ESplit%3C/b%3E%20%3Cb%3EPartition%3C/b%3E))"&gt;&lt;span style="font-weight:bold;"&gt;199623.1&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://apunhiran.blogspot.com/2009/05/oracle-partitioning-types-1.html"&gt;&lt;span style="font-weight:bold;"&gt;Details about Oracle Partition Methods/Types&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4092304359380397372-6042334855152709420?l=apunhiran.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apunhiran.blogspot.com/feeds/6042334855152709420/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4092304359380397372&amp;postID=6042334855152709420' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/6042334855152709420'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/6042334855152709420'/><link rel='alternate' type='text/html' href='http://apunhiran.blogspot.com/2009/05/oracle-partitioning-split-partition.html' title='Oracle Partitioning - Split Partition'/><author><name>Apun Hiran</name><uri>http://www.blogger.com/profile/04745021360458270341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_viek7Sw5RrM/R_yAZoPGqYI/AAAAAAAAAIM/eS3VxJ7S2Pc/S220/IMG_0042.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4092304359380397372.post-5543134981591240660</id><published>2009-05-08T08:47:00.003+05:30</published><updated>2009-05-08T08:52:48.822+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='partitioning'/><category scheme='http://www.blogger.com/atom/ns#' term='partition'/><category scheme='http://www.blogger.com/atom/ns#' term='11g'/><category scheme='http://www.blogger.com/atom/ns#' term='list range'/><category scheme='http://www.blogger.com/atom/ns#' term='subpartition'/><category scheme='http://www.blogger.com/atom/ns#' term='virtual column based partitioning'/><category scheme='http://www.blogger.com/atom/ns#' term='subpartitions'/><category scheme='http://www.blogger.com/atom/ns#' term='virtual column'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Oracle Partitioning Types - VII (Virtual Column Based Partitioning)</title><content type='html'>&lt;span style="font-weight:bold;"&gt;&lt;a name="virtual_part"&gt;Virtual Column Based Partitioning&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;As the name suggest oracle allows us to define partitions based on a virtual column of a table. All types of partitioning methods are allowed for virtual columns. The only thing that is not allowed is if the virtual column uses a PL\SQL function in its definition.&lt;br /&gt;&lt;br /&gt;SQL&gt; drop table DATA_LOAD;&lt;br /&gt;Table dropped.&lt;br /&gt;&lt;br /&gt;SQL&gt; CREATE TABLE DATA_LOAD&lt;br /&gt;    ( DATA_id     NUMBER(6),&lt;br /&gt;         source_id    NUMBER,&lt;br /&gt;         load_date    DATE,&lt;br /&gt;         target_date  DATE,&lt;br /&gt;         data_size    NUMBER,&lt;br /&gt;         state           VARCHAR2(20),&lt;br /&gt;         diff_date NUMBER GENERATED ALWAYS AS (target_date-load_date) VIRTUAL&lt;br /&gt;         )&lt;br /&gt;       PARTITION BY RANGE (load_date)&lt;br /&gt;      SUBPARTITION BY RANGE (diff_date)&lt;br /&gt;      ( PARTITION data_01_2009 VALUES LESS THAN (TO_DATE('01-FEB-2009','DD-MON-YYYY')) TABLESPACE DATA_01&lt;br /&gt;          (SUBPARTITION data_01_2009_1 VALUES LESS THAN (10),&lt;br /&gt;           SUBPARTITION data_01_2009_2 VALUES LESS THAN (20),&lt;br /&gt;           SUBPARTITION data_01_2009_3 VALUES LESS THAN (MAXVALUE)&lt;br /&gt;           ) ,&lt;br /&gt;        PARTITION data_02_2009 VALUES LESS THAN (TO_DATE('01-MAR-2009','DD-MON-YYYY')) TABLESPACE DATA_02&lt;br /&gt;          (SUBPARTITION data_02_2009_1 VALUES LESS THAN (10),&lt;br /&gt;           SUBPARTITION data_02_2009_2 VALUES LESS THAN (20),&lt;br /&gt;           SUBPARTITION data_02_2009_3 VALUES LESS THAN (MAXVALUE)&lt;br /&gt;           ) ,&lt;br /&gt;        PARTITION data_03_2009 VALUES LESS THAN (TO_DATE('01-APR-2009','DD-MON-YYYY')) TABLESPACE DATA_03&lt;br /&gt;          (SUBPARTITION data_03_2009_1 VALUES LESS THAN (10),&lt;br /&gt;           SUBPARTITION data_03_2009_2 VALUES LESS THAN (20),&lt;br /&gt;           SUBPARTITION data_03_2009_3 VALUES LESS THAN (MAXVALUE)&lt;br /&gt;           ) ,&lt;br /&gt;        PARTITION data_04_2009 VALUES LESS THAN (TO_DATE('01-MAY-2009','DD-MON-YYYY'))  TABLESPACE DATA_04&lt;br /&gt;          (SUBPARTITION data_04_2009_1 VALUES LESS THAN (10),&lt;br /&gt;           SUBPARTITION data_04_2009_2 VALUES LESS THAN (20),&lt;br /&gt;           SUBPARTITION data_04_2009_3 VALUES LESS THAN (MAXVALUE)&lt;br /&gt;           )&lt;br /&gt;      );&lt;br /&gt;Table created.&lt;br /&gt;&lt;br /&gt;SQL&gt; insert into DATA_LOAD values (1,2,sysdate-60,sysdate-50,1,'DELHI',DEFAULT);&lt;br /&gt;1 row created.&lt;br /&gt;&lt;br /&gt;SQL&gt; insert into DATA_LOAD values (2,3,sysdate-50,sysdate-35,2,'RAJASTHAN',DEFAULT);&lt;br /&gt;1 row created.&lt;br /&gt;&lt;br /&gt;SQL&gt; select * from DATA_LOAD;&lt;br /&gt;   DATA_ID  SOURCE_ID LOAD_DATE TARGET_DA  DATA_SIZE STATE                 DIFF_DATE&lt;br /&gt;---------- ---------- --------- --------- ---------- -------------------- ----------&lt;br /&gt;         1          2 09-MAR-09 19-MAR-09          1 DELHI                        10&lt;br /&gt;         2          3 19-MAR-09 03-APR-09          2 RAJASTHAN                    15&lt;br /&gt;         3          4 08-APR-09 13-APR-09          3 RAJASTHAN                     5&lt;br /&gt;SQL&gt; select TABLE_NAME,COMPOSITE,PARTITION_NAME,NUM_ROWS,subpartition_count from user_tab_partitions where TABLE_NAME='DATA_LOAD';&lt;br /&gt;&lt;br /&gt;TABLE_NAME      COM PARTITION_NAME    NUM_ROWS SUBPARTITION_COUNT&lt;br /&gt;--------------- --- --------------- ---------- ------------------&lt;br /&gt;DATA_LOAD       YES DATA_01_2009             0                  3&lt;br /&gt;DATA_LOAD       YES DATA_02_2009             0                  3&lt;br /&gt;DATA_LOAD       YES DATA_03_2009             2                  3&lt;br /&gt;DATA_LOAD       YES DATA_04_2009             1                  3&lt;br /&gt;&lt;br /&gt;SQL&gt; select TABLE_NAME,PARTITION_NAME,SUBPARTITION_NAME,NUM_ROWS from USER_TAB_SUBPARTITIONS where TABLE_NAME='DATA_LOAD';&lt;br /&gt;TABLE_NAME      PARTITION_NAME  SUBPARTITION_NAME                NUM_ROWS&lt;br /&gt;--------------- --------------- ------------------------------ ----------&lt;br /&gt;DATA_LOAD       DATA_01_2009    DATA_01_2009_3                          0&lt;br /&gt;DATA_LOAD       DATA_01_2009    DATA_01_2009_2                          0&lt;br /&gt;DATA_LOAD       DATA_01_2009    DATA_01_2009_1                          0&lt;br /&gt;DATA_LOAD       DATA_02_2009    DATA_02_2009_3                          0&lt;br /&gt;DATA_LOAD       DATA_02_2009    DATA_02_2009_2                          0&lt;br /&gt;DATA_LOAD       DATA_02_2009    DATA_02_2009_1                          0&lt;br /&gt;DATA_LOAD       DATA_03_2009    DATA_03_2009_3                          0&lt;br /&gt;DATA_LOAD       DATA_03_2009    DATA_03_2009_2                          2&lt;br /&gt;DATA_LOAD       DATA_03_2009    DATA_03_2009_1                          0&lt;br /&gt;DATA_LOAD       DATA_04_2009    DATA_04_2009_3                          0&lt;br /&gt;DATA_LOAD       DATA_04_2009    DATA_04_2009_2                          0&lt;br /&gt;DATA_LOAD       DATA_04_2009    DATA_04_2009_1                          1&lt;br /&gt;&lt;br /&gt;So we can see that the data has been sub partitioned based on virtual column.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Another example of normal range partition using the virtual column:&lt;/span&gt;&lt;br /&gt;SQL&gt; CREATE TABLE DATA_LOAD&lt;br /&gt;            ( DATA_id     NUMBER(6),&lt;br /&gt;             source_id    NUMBER,&lt;br /&gt;             load_date    DATE,&lt;br /&gt;             target_date  DATE,&lt;br /&gt;             data_size    NUMBER,&lt;br /&gt;             state           VARCHAR2(20),&lt;br /&gt;             diff_date NUMBER GENERATED ALWAYS AS (target_date-load_date) VIRTUAL)&lt;br /&gt;           PARTITION BY RANGE (diff_date)&lt;br /&gt;         ( PARTITION data_01_2009 VALUES LESS THAN (10) TABLESPACE DATA_01,&lt;br /&gt;           PARTITION data_02_2009 VALUES LESS THAN (20) TABLESPACE DATA_02,&lt;br /&gt;           PARTITION data_03_2009 VALUES LESS THAN (30) TABLESPACE DATA_03,&lt;br /&gt;           PARTITION data_04_2009 VALUES LESS THAN (MAXVALUE) TABLESPACE DATA_04&lt;br /&gt;         );&lt;br /&gt;Table created.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;To see what error we get while using PL\SQL function while creating virtual column and using it as paritioning key:&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;The Funtion:&lt;br /&gt;SQL&gt; create or replace function add_test (a in number,b in number)&lt;br /&gt;return number&lt;br /&gt;is&lt;br /&gt;c number;&lt;br /&gt;begin&lt;br /&gt;c:=a+b;&lt;br /&gt;RETURN c;&lt;br /&gt;end;&lt;br /&gt;/&lt;br /&gt;Function created.&lt;br /&gt;&lt;br /&gt;SQL&gt; CREATE TABLE DATA_LOAD&lt;br /&gt;        ( DATA_id     NUMBER(6),&lt;br /&gt;         source_id    NUMBER,&lt;br /&gt;         load_date    DATE,&lt;br /&gt;         target_date  DATE,&lt;br /&gt;         data_size    NUMBER,&lt;br /&gt;         state        VARCHAR2(20),&lt;br /&gt;         sum_up       NUMBER GENERATED ALWAYS AS (add_test(source_id,data_size)) VIRTUAL)&lt;br /&gt;       PARTITION BY RANGE (sum_up)&lt;br /&gt;      ( PARTITION data_01_2009 VALUES LESS THAN (10) TABLESPACE DATA_01,&lt;br /&gt;        PARTITION data_02_2009 VALUES LESS THAN (20) TABLESPACE DATA_02,&lt;br /&gt;        PARTITION data_03_2009 VALUES LESS THAN (30) TABLESPACE DATA_03,&lt;br /&gt;        PARTITION data_04_2009 VALUES LESS THAN (MAXVALUE) TABLESPACE DATA_04&lt;br /&gt;      );&lt;br /&gt;     sum_up       NUMBER GENERATED ALWAYS AS (add_test(source_id,data_size)) VIRTUAL)&lt;br /&gt;                                              *&lt;br /&gt;ERROR at line 8:&lt;br /&gt;ORA-54021: Cannot use PL/SQL expressions in partitioning or subpartitioning columns&lt;br /&gt;&lt;br /&gt;SQL&gt; !oerr ora 54021&lt;br /&gt;54021, 0000, "Cannot use PL/SQL expressions in partitioning or subpartitioning columns"&lt;br /&gt;// *Cause:  Attempted to partition a table on a virtual column that contained&lt;br /&gt;//          PL/SQL expressions.&lt;br /&gt;// *Action: This is not supported.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://apunhiran.blogspot.com/2009/05/oracle-partitioning-types-1.html"&gt;Part I&lt;/a&gt;&lt;br /&gt;&lt;a href="http://apunhiran.blogspot.com/2009/05/oracle-partitioning-types-ii.html"&gt;Part II&lt;/a&gt;&lt;br /&gt;&lt;a href="http://apunhiran.blogspot.com/2009/05/oracle-partitioning-types-iii.html"&gt;Part III&lt;/a&gt;&lt;br /&gt;&lt;a href="http://apunhiran.blogspot.com/2009/05/oracle-partitioning-types-iii-interval.html"&gt;Part IV&lt;/a&gt;&lt;br /&gt;&lt;a href="http://apunhiran.blogspot.com/2009/05/oracle-partitioning-types-v-reference.html"&gt;Part V&lt;/a&gt;&lt;br /&gt;&lt;a href="http://apunhiran.blogspot.com/2009/05/oracle-partitioning-types-vi-multiple.html"&gt;Part VI&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4092304359380397372-5543134981591240660?l=apunhiran.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apunhiran.blogspot.com/feeds/5543134981591240660/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4092304359380397372&amp;postID=5543134981591240660' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/5543134981591240660'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/5543134981591240660'/><link rel='alternate' type='text/html' href='http://apunhiran.blogspot.com/2009/05/oracle-partitioning-types-vii-virtual.html' title='Oracle Partitioning Types - VII (Virtual Column Based Partitioning)'/><author><name>Apun Hiran</name><uri>http://www.blogger.com/profile/04745021360458270341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_viek7Sw5RrM/R_yAZoPGqYI/AAAAAAAAAIM/eS3VxJ7S2Pc/S220/IMG_0042.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4092304359380397372.post-7121254775717270409</id><published>2009-05-07T06:52:00.002+05:30</published><updated>2009-05-08T08:53:37.551+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='partitioning'/><category scheme='http://www.blogger.com/atom/ns#' term='partition'/><category scheme='http://www.blogger.com/atom/ns#' term='11g'/><category scheme='http://www.blogger.com/atom/ns#' term='multiple column partition'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Oracle Partitioning Types - VI (Multiple Column Partition)</title><content type='html'>&lt;a name="multi_part"&gt;&lt;span style="font-weight:bold;"&gt;Multiple Column Partitioning&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;As the name suggests we can define the partition key using multiple column in the table.&lt;br /&gt;So basically if there are two columns which you would like to use to define partitioning to facilitate related data to be stored in the same partition. There are be more than 2 columns for defining column keys. The idea is if using the first column key oracle is not able to ascertain which partition it has to go into, it used the second key and like-wise. The reason why oracle is not able to define the correct partition could be because the partition bound values are overlapping, between partitions.&lt;br /&gt;&lt;br /&gt;SQL&gt; CREATE TABLE DATA_LOAD&lt;br /&gt;  2   ( DATA_id     NUMBER(6),&lt;br /&gt;  3    source_id    NUMBER,&lt;br /&gt;  4    load_date    DATE,&lt;br /&gt;  5    data_size    NUMBER,&lt;br /&gt;  6    state           VARCHAR2(20))&lt;br /&gt;  7  PARTITION BY RANGE (data_id,source_id)&lt;br /&gt;  8  ( PARTITION data_01_2009 VALUES LESS THAN (10,10) TABLESPACE DATA_01,&lt;br /&gt;  9    PARTITION data_02_2009 VALUES LESS THAN (10,20) TABLESPACE DATA_02,&lt;br /&gt; 10    PARTITION data_03_2009 VALUES LESS THAN (20,30) TABLESPACE DATA_03,&lt;br /&gt; 11    PARTITION data_04_2009 VALUES LESS THAN (30,40) TABLESPACE DATA_04&lt;br /&gt; 12  );&lt;br /&gt;Table created.&lt;br /&gt;&lt;br /&gt;SQL&gt; select TABLE_NAME,COMPOSITE,PARTITION_NAME,SUBPARTITION_COUNT from user_tab_partitions where TABLE_NAME='DATA_LOAD';&lt;br /&gt;TABLE_NAME      COM PARTITION_NAME  SUBPARTITION_COUNT&lt;br /&gt;--------------- --- --------------- ------------------&lt;br /&gt;DATA_LOAD       NO  DATA_01_2009                     0&lt;br /&gt;DATA_LOAD       NO  DATA_02_2009                     0&lt;br /&gt;DATA_LOAD       NO  DATA_03_2009                     0&lt;br /&gt;DATA_LOAD       NO  DATA_04_2009                     0&lt;br /&gt;&lt;br /&gt;SQL&gt; insert into DATA_LOAD values (1,1,sysdate-20,10,'DELHI');&lt;br /&gt;1 row created.&lt;br /&gt;&lt;br /&gt;SQL&gt; insert into DATA_LOAD values (1,15,sysdate-10,11,'KERELA');&lt;br /&gt;1 row created.&lt;br /&gt;&lt;br /&gt;SQL&gt; insert into DATA_LOAD values (15,19,sysdate-10,11,'KERELA');&lt;br /&gt;1 row created.&lt;br /&gt;&lt;br /&gt;SQL&gt; insert into DATA_LOAD values (25,25,sysdate-20,10,'DELHI');&lt;br /&gt;1 row created.&lt;br /&gt;&lt;br /&gt;SQL&gt; insert into DATA_LOAD values (29,36,sysdate-20,10,'DELHI');&lt;br /&gt;1 row created.&lt;br /&gt;&lt;br /&gt;SQL&gt; insert into DATA_LOAD values (10,12,sysdate-10,11,'KERELA');&lt;br /&gt;1 row created.&lt;br /&gt;&lt;br /&gt;SQL&gt; commit;&lt;br /&gt;Commit complete.&lt;br /&gt;&lt;br /&gt;SQL&gt; analyze table DATA_LOAD compute statistics;&lt;br /&gt;Table analyzed.&lt;br /&gt;&lt;br /&gt;SQL&gt; select TABLE_NAME,COMPOSITE,PARTITION_NAME,NUM_ROWS from user_tab_partitions where TABLE_NAME='DATA_LOAD';&lt;br /&gt;TABLE_NAME      COM PARTITION_NAME    NUM_ROWS&lt;br /&gt;--------------- --- --------------- ----------&lt;br /&gt;DATA_LOAD       NO  DATA_01_2009             2&lt;br /&gt;DATA_LOAD       NO  DATA_02_2009             1&lt;br /&gt;DATA_LOAD       NO  DATA_03_2009             1&lt;br /&gt;DATA_LOAD       NO  DATA_04_2009             2&lt;br /&gt;&lt;br /&gt;So you can see that the insert statement no. 2, had the second value as 15, but it went into partition 1, as it was table to decide using the first value. But the last insert statement had the first value as 10, which is the partition bound value for 1st and 2nd partition, so the row used the second value i.e. 12, and inserted the row in partition 2.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://apunhiran.blogspot.com/2009/05/oracle-partitioning-types-1.html"&gt;Part I&lt;/a&gt;&lt;br /&gt;&lt;a href="http://apunhiran.blogspot.com/2009/05/oracle-partitioning-types-ii.html"&gt;Part II&lt;/a&gt;&lt;br /&gt;&lt;a href="http://apunhiran.blogspot.com/2009/05/oracle-partitioning-types-iii.html"&gt;Part III&lt;/a&gt;&lt;br /&gt;&lt;a href="http://apunhiran.blogspot.com/2009/05/oracle-partitioning-types-iii-interval.html"&gt;Part IV&lt;/a&gt;&lt;br /&gt;&lt;a href="http://apunhiran.blogspot.com/2009/05/oracle-partitioning-types-v-reference.html"&gt;Part V&lt;/a&gt;&lt;br /&gt;&lt;a href="http://apunhiran.blogspot.com/2009/05/oracle-partitioning-types-vii-virtual.html"&gt;Part VII&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4092304359380397372-7121254775717270409?l=apunhiran.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apunhiran.blogspot.com/feeds/7121254775717270409/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4092304359380397372&amp;postID=7121254775717270409' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/7121254775717270409'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/7121254775717270409'/><link rel='alternate' type='text/html' href='http://apunhiran.blogspot.com/2009/05/oracle-partitioning-types-vi-multiple.html' title='Oracle Partitioning Types - VI (Multiple Column Partition)'/><author><name>Apun Hiran</name><uri>http://www.blogger.com/profile/04745021360458270341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_viek7Sw5RrM/R_yAZoPGqYI/AAAAAAAAAIM/eS3VxJ7S2Pc/S220/IMG_0042.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4092304359380397372.post-8632674812092183249</id><published>2009-05-06T10:41:00.004+05:30</published><updated>2009-05-08T08:53:58.857+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='reference parition'/><category scheme='http://www.blogger.com/atom/ns#' term='partitioning'/><category scheme='http://www.blogger.com/atom/ns#' term='partition'/><category scheme='http://www.blogger.com/atom/ns#' term='11g'/><category scheme='http://www.blogger.com/atom/ns#' term='reference'/><category scheme='http://www.blogger.com/atom/ns#' term='ref partition'/><category scheme='http://www.blogger.com/atom/ns#' term='range'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Oracle Partitioning Types - V (Reference Partition)</title><content type='html'>&lt;span style="font-weight:bold;"&gt;&lt;a name="ref_part"&gt;Reference Partitioning:&lt;/a&gt;&lt;/span&gt;&lt;br&gt;&lt;br /&gt;As the name suggests, this has got to do with parent child relations between tables or rather primary key and foreign key relations between two tables. The table is partitioned by reference when the partition key value in a foreign key constraint of that table. The table with the primary key should be partition table, single level or composite partitioned. Fo example we will first use a single level partition table.&lt;br /&gt;&lt;br /&gt;SQL&gt; CREATE TABLE DATA_LOAD&lt;br /&gt;    ( DATA_id     NUMBER(6),&lt;br /&gt;     source_id    NUMBER,&lt;br /&gt;     load_date    DATE,&lt;br /&gt;     data_size    NUMBER,&lt;br /&gt;     state           VARCHAR2(20),&lt;br /&gt;     CONSTRAINT data_pk PRIMARY KEY(DATA_id))&lt;br /&gt;   PARTITION BY RANGE (load_date)&lt;br /&gt;   ( PARTITION data_01_2009 VALUES LESS THAN (TO_DATE('01-FEB-2009','DD-MON-YYYY')) TABLESPACE DATA_01,&lt;br /&gt;     PARTITION data_02_2009 VALUES LESS THAN (TO_DATE('01-MAR-2009','DD-MON-YYYY')) TABLESPACE DATA_02,&lt;br /&gt;     PARTITION data_03_2009 VALUES LESS THAN (TO_DATE('01-APR-2009','DD-MON-YYYY')) TABLESPACE DATA_03,&lt;br /&gt;     PARTITION data_04_2009 VALUES LESS THAN (TO_DATE('01-MAY-2009','DD-MON-YYYY')) TABLESPACE DATA_04&lt;br /&gt;   );&lt;br /&gt;Table created.&lt;br /&gt;&lt;br /&gt;Now we will create a child table with for our DATA_LOAD table.&lt;br /&gt;&lt;br /&gt; SQL&gt; CREATE TABLE DATA_LOAD_FK&lt;br /&gt; ( DATA_id       NUMBER(6),&lt;br /&gt;      source_name    VARCHAR2(20),&lt;br /&gt;      timestamp      DATE,&lt;br /&gt;      data_size      NUMBER,&lt;br /&gt;      state          VARCHAR2(20),&lt;br /&gt;      CONSTRAINT data_load_fk FOREIGN KEY(DATA_id) REFERENCES DATA_LOAD(DATA_id)&lt;br /&gt;     ) PARTITION BY REFERENCE(data_load_fk);&lt;br /&gt; ) PARTITION BY REFERENCE(data_load_fk)&lt;br /&gt;                          *&lt;br /&gt;ERROR at line 8:&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;ORA-14652&lt;/span&gt;: reference partitioning foreign key is not supported&lt;br /&gt;&lt;br /&gt;SQL&gt; !oerr ora 14652&lt;br /&gt;14652, 00000, "reference partitioning foreign key is not supported"&lt;br /&gt;// *Cause:  The specified partitioning foreign key was not supported&lt;br /&gt;//          for reference-partitioned tables. All columns of the&lt;br /&gt;//          partitioning foreign key must be constrained NOT NULL with&lt;br /&gt;//          enabled, validated, and not deferrable constraints. Furthermore,&lt;br /&gt;//          a virtual column cannot be part of the partitioning foreign key.&lt;br /&gt;//* Action: Correct the statement to specify a supported&lt;br /&gt;//          partitioning foreign key.&lt;br /&gt;&lt;br /&gt;I realsized that the referencing column should be not null as its referencing a primary key column. The error can we misleading.&lt;br /&gt;&lt;br /&gt;SQL&gt; CREATE TABLE DATA_LOAD_FK&lt;br /&gt; ( DATA_id       NUMBER(6) NOT NULL,&lt;br /&gt;      source_name    VARCHAR2(20),&lt;br /&gt;      timestamp      DATE,&lt;br /&gt;      data_size      NUMBER,&lt;br /&gt;      state          VARCHAR2(20),&lt;br /&gt;      CONSTRAINT data_load_fk FOREIGN KEY(DATA_id) REFERENCES DATA_LOAD(DATA_id)&lt;br /&gt;     ) PARTITION BY REFERENCE(data_load_fk);&lt;br /&gt;Table created.&lt;br /&gt;&lt;br /&gt;Lets check the partitions for this referenced partition table.&lt;br /&gt;&lt;br /&gt;SQL&gt; col TABLE_NAME format a15&lt;br /&gt;SQL&gt; col PARTITION_NAME format a15&lt;br /&gt;SQL&gt; col HIGH_VALUE format a80&lt;br /&gt;SQL&gt; set lines 300&lt;br /&gt;SQL&gt; select TABLE_NAME,COMPOSITE,PARTITION_NAME,HIGH_VALUE from user_tab_partitions where TABLE_NAME='DATA_LOAD';&lt;br /&gt;&lt;br /&gt;TABLE_NAME      COM PARTITION_NAME  HIGH_VALUE&lt;br /&gt;--------------- --- --------------- --------------------------------------------------------------------------------&lt;br /&gt;DATA_LOAD       NO  DATA_01_2009    TO_DATE(' 2009-02-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA&lt;br /&gt;DATA_LOAD       NO  DATA_02_2009    TO_DATE(' 2009-03-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA&lt;br /&gt;DATA_LOAD       NO  DATA_03_2009    TO_DATE(' 2009-04-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA&lt;br /&gt;DATA_LOAD       NO  DATA_04_2009    TO_DATE(' 2009-05-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA&lt;br /&gt;&lt;br /&gt;SQL&gt; select TABLE_NAME,COMPOSITE,PARTITION_NAME,HIGH_VALUE from user_tab_partitions where TABLE_NAME='DATA_LOAD_FK';&lt;br /&gt;&lt;br /&gt;TABLE_NAME      COM PARTITION_NAME  HIGH_VALUE&lt;br /&gt;--------------- --- --------------- --------------------------------------------------------------------------------&lt;br /&gt;DATA_LOAD_FK    NO  DATA_01_2009&lt;br /&gt;DATA_LOAD_FK    NO  DATA_02_2009&lt;br /&gt;DATA_LOAD_FK    NO  DATA_03_2009&lt;br /&gt;DATA_LOAD_FK    NO  DATA_04_2009&lt;br /&gt;&lt;br /&gt;So we can see that four partitions were created with the same name as the primary table. And no high value is available as the data will be stored on the basis on the data stored in the primary table.&lt;br /&gt;Lets test that also, by adding a row.&lt;br /&gt;&lt;br /&gt;SQL&gt; insert into DATA_LOAD values (1,1,sysdate-90,1,'DELHI');&lt;br /&gt;1 row created.&lt;br /&gt;&lt;br /&gt;SQL&gt; commit;&lt;br /&gt;Commit complete.&lt;br /&gt;&lt;br /&gt;SQL&gt; insert into DATA_LOAD_FK values (1,'TEST',sysdate-90,1,'DELHI');&lt;br /&gt;1 row created.&lt;br /&gt;&lt;br /&gt;SQL&gt; commit;&lt;br /&gt;Commit complete.&lt;br /&gt;&lt;br /&gt;SQL&gt; analyze table DATA_LOAD compute statistics;&lt;br /&gt;Table analyzed.&lt;br /&gt;&lt;br /&gt;SQL&gt;  analyze table DATA_LOAD_FK compute statistics;&lt;br /&gt;Table analyzed.&lt;br /&gt;&lt;br /&gt;SQL&gt; select TABLE_NAME,COMPOSITE,PARTITION_NAME,NUM_ROWS from user_tab_partitions where TABLE_NAME='DATA_LOAD';&lt;br /&gt;TABLE_NAME      COM PARTITION_NAME    NUM_ROWS&lt;br /&gt;--------------- --- --------------- ----------&lt;br /&gt;DATA_LOAD       NO  DATA_01_2009             0&lt;br /&gt;DATA_LOAD       NO  DATA_02_2009             1&lt;br /&gt;DATA_LOAD       NO  DATA_03_2009             0&lt;br /&gt;DATA_LOAD       NO  DATA_04_2009             0&lt;br /&gt;&lt;br /&gt;SQL&gt; select TABLE_NAME,COMPOSITE,PARTITION_NAME,NUM_ROWS from user_tab_partitions where TABLE_NAME='DATA_LOAD_FK';&lt;br /&gt;TABLE_NAME      COM PARTITION_NAME    NUM_ROWS&lt;br /&gt;--------------- --- --------------- ----------&lt;br /&gt;DATA_LOAD_FK    NO  DATA_01_2009             0&lt;br /&gt;DATA_LOAD_FK    NO  DATA_02_2009             1&lt;br /&gt;DATA_LOAD_FK    NO  DATA_03_2009             0&lt;br /&gt;DATA_LOAD_FK    NO  DATA_04_2009             0&lt;br /&gt;&lt;br /&gt;So we can see that the partition in which the row goes in the reference partitioned table is the same as the primary table.&lt;br /&gt;&lt;br /&gt;Now let us see the affect of composite partition table as the primary table.&lt;br /&gt;&lt;br /&gt;SQL&gt; drop table DATA_LOAD_FK;&lt;br /&gt;Table dropped.&lt;br /&gt;&lt;br /&gt;SQL&gt; drop table DATA_LOAD;&lt;br /&gt;Table dropped.&lt;br /&gt;&lt;br /&gt;SQL&gt; CREATE TABLE DATA_LOAD&lt;br /&gt;    ( DATA_id     NUMBER(6),&lt;br /&gt;      source_id    NUMBER,&lt;br /&gt;      load_date    DATE,&lt;br /&gt;      target_date  DATE,&lt;br /&gt;      data_size    NUMBER,&lt;br /&gt;      state           VARCHAR2(20),&lt;br /&gt;      CONSTRAINT data_pk PRIMARY KEY(DATA_id)&lt;br /&gt;      )&lt;br /&gt;    PARTITION BY RANGE (load_date)&lt;br /&gt;   SUBPARTITION BY RANGE (target_date)&lt;br /&gt;   ( PARTITION data_01_2009 VALUES LESS THAN (TO_DATE('01-FEB-2009','DD-MON-YYYY')) TABLESPACE DATA_01&lt;br /&gt;       (SUBPARTITION data_01_2009_1 VALUES LESS THAN (TO_DATE('15-JAN-2009','DD-MON-YYYY')),&lt;br /&gt;        SUBPARTITION data_01_2009_2 VALUES LESS THAN (TO_DATE('25-JAN-2009','DD-MON-YYYY')),&lt;br /&gt;        SUBPARTITION data_01_2009_3 VALUES LESS THAN (MAXVALUE)&lt;br /&gt;        ) ,&lt;br /&gt;     PARTITION data_02_2009 VALUES LESS THAN (TO_DATE('01-MAR-2009','DD-MON-YYYY')) TABLESPACE DATA_02&lt;br /&gt;       (SUBPARTITION data_02_2009_1 VALUES LESS THAN (TO_DATE('15-FEB-2009','DD-MON-YYYY')),&lt;br /&gt;        SUBPARTITION data_02_2009_2 VALUES LESS THAN (TO_DATE('25-FEB-2009','DD-MON-YYYY')),&lt;br /&gt;        SUBPARTITION data_02_2009_3 VALUES LESS THAN (MAXVALUE)&lt;br /&gt;        ) ,&lt;br /&gt;     PARTITION data_03_2009 VALUES LESS THAN (TO_DATE('01-APR-2009','DD-MON-YYYY')) TABLESPACE DATA_03&lt;br /&gt;       (SUBPARTITION data_03_2009_1 VALUES LESS THAN (TO_DATE('15-MAR-2009','DD-MON-YYYY')),&lt;br /&gt;        SUBPARTITION data_03_2009_2 VALUES LESS THAN (TO_DATE('25-MAR-2009','DD-MON-YYYY')),&lt;br /&gt;        SUBPARTITION data_03_2009_3 VALUES LESS THAN (MAXVALUE)&lt;br /&gt;        ) ,&lt;br /&gt;     PARTITION data_04_2009 VALUES LESS THAN (TO_DATE('01-MAY-2009','DD-MON-YYYY'))  TABLESPACE DATA_04&lt;br /&gt;       (SUBPARTITION data_04_2009_1 VALUES LESS THAN (TO_DATE('15-APR-2009','DD-MON-YYYY')),&lt;br /&gt;        SUBPARTITION data_04_2009_2 VALUES LESS THAN (TO_DATE('25-APR-2009','DD-MON-YYYY')),&lt;br /&gt;        SUBPARTITION data_04_2009_3 VALUES LESS THAN (MAXVALUE)&lt;br /&gt;        )&lt;br /&gt;   );&lt;br /&gt;Table created.&lt;br /&gt;&lt;br /&gt;SQL&gt; CREATE TABLE DATA_LOAD_FK&lt;br /&gt; ( DATA_id       NUMBER(6) NOT NULL,&lt;br /&gt;      source_name    VARCHAR2(20),&lt;br /&gt;      timestamp      DATE,&lt;br /&gt;      data_size      NUMBER,&lt;br /&gt;      state          VARCHAR2(20),&lt;br /&gt;      CONSTRAINT data_load_fk FOREIGN KEY(DATA_id) REFERENCES DATA_LOAD(DATA_id)&lt;br /&gt;     ) PARTITION BY REFERENCE(data_load_fk);&lt;br /&gt;Table created.&lt;br /&gt;&lt;br /&gt;SQL&gt; select TABLE_NAME,COMPOSITE,PARTITION_NAME,SUBPARTITION_COUNT from user_tab_partitions where TABLE_NAME='DATA_LOAD';&lt;br /&gt;TABLE_NAME      COM PARTITION_NAME  SUBPARTITION_COUNT&lt;br /&gt;--------------- --- --------------- ------------------&lt;br /&gt;DATA_LOAD       YES DATA_01_2009                     3&lt;br /&gt;DATA_LOAD       YES DATA_02_2009                     3&lt;br /&gt;DATA_LOAD       YES DATA_03_2009                     3&lt;br /&gt;DATA_LOAD       YES DATA_04_2009                     3&lt;br /&gt;&lt;br /&gt;SQL&gt; select TABLE_NAME,COMPOSITE,PARTITION_NAME,SUBPARTITION_COUNT from user_tab_partitions where TABLE_NAME='DATA_LOAD_FK';&lt;br /&gt;TABLE_NAME      COM PARTITION_NAME  SUBPARTITION_COUNT&lt;br /&gt;--------------- --- --------------- ------------------&lt;br /&gt;DATA_LOAD_FK    NO  DATA_03_2009_2                   0&lt;br /&gt;DATA_LOAD_FK    NO  DATA_03_2009_3                   0&lt;br /&gt;DATA_LOAD_FK    NO  DATA_04_2009_1                   0&lt;br /&gt;DATA_LOAD_FK    NO  DATA_04_2009_2                   0&lt;br /&gt;DATA_LOAD_FK    NO  DATA_01_2009_1                   0&lt;br /&gt;DATA_LOAD_FK    NO  DATA_01_2009_2                   0&lt;br /&gt;DATA_LOAD_FK    NO  DATA_01_2009_3                   0&lt;br /&gt;DATA_LOAD_FK    NO  DATA_02_2009_1                   0&lt;br /&gt;DATA_LOAD_FK    NO  DATA_02_2009_2                   0&lt;br /&gt;DATA_LOAD_FK    NO  DATA_02_2009_3                   0&lt;br /&gt;DATA_LOAD_FK    NO  DATA_03_2009_1                   0&lt;br /&gt;&lt;br /&gt;TABLE_NAME      COM PARTITION_NAME  SUBPARTITION_COUNT&lt;br /&gt;--------------- --- --------------- ------------------&lt;br /&gt;DATA_LOAD_FK    NO  DATA_04_2009_3                   0&lt;br /&gt;12 rows selected.&lt;br /&gt;&lt;br /&gt;So you can see that the subpartitions have become individual partitions in the reference partition table.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Partitions limits cannot be specified in a reference partition table.&lt;/span&gt;&lt;br&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;The partitions take the same name as the parent table partitions.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://apunhiran.blogspot.com/2009/05/oracle-partitioning-types-1.html"&gt;Part I&lt;/a&gt;&lt;br /&gt;&lt;a href="http://apunhiran.blogspot.com/2009/05/oracle-partitioning-types-ii.html"&gt;Part II&lt;/a&gt;&lt;br /&gt;&lt;a href="http://apunhiran.blogspot.com/2009/05/oracle-partitioning-types-iii.html"&gt;Part III&lt;/a&gt;&lt;br /&gt;&lt;a href="http://apunhiran.blogspot.com/2009/05/oracle-partitioning-types-iii-interval.html"&gt;Part IV&lt;/a&gt;&lt;br /&gt;&lt;a href="http://apunhiran.blogspot.com/2009/05/oracle-partitioning-types-vi-multiple.html"&gt;Part VI&lt;/a&gt;&lt;br /&gt;&lt;a href="http://apunhiran.blogspot.com/2009/05/oracle-partitioning-types-vii-virtual.html"&gt;Part VII&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4092304359380397372-8632674812092183249?l=apunhiran.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apunhiran.blogspot.com/feeds/8632674812092183249/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4092304359380397372&amp;postID=8632674812092183249' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/8632674812092183249'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/8632674812092183249'/><link rel='alternate' type='text/html' href='http://apunhiran.blogspot.com/2009/05/oracle-partitioning-types-v-reference.html' title='Oracle Partitioning Types - V (Reference Partition)'/><author><name>Apun Hiran</name><uri>http://www.blogger.com/profile/04745021360458270341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_viek7Sw5RrM/R_yAZoPGqYI/AAAAAAAAAIM/eS3VxJ7S2Pc/S220/IMG_0042.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4092304359380397372.post-5460660911969036723</id><published>2009-05-05T13:35:00.007+05:30</published><updated>2009-05-08T08:54:15.760+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='partition'/><category scheme='http://www.blogger.com/atom/ns#' term='11g'/><category scheme='http://www.blogger.com/atom/ns#' term='interval partitioning'/><category scheme='http://www.blogger.com/atom/ns#' term='interval'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Oracle Partitioning Types - IV (Interval Partition)</title><content type='html'>&lt;a name="interval_part"&gt;1.) Interval-Partitioned Tables (11g)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://download.oracle.com/docs/cd/B28359_01/server.111/b32024/part_admin.htm#i1108745"&gt;Extract from Oracle Documentation &lt;/a&gt;&lt;br /&gt;-----------------------------------------------------------------------------------------&lt;br /&gt;The INTERVAL clause of the CREATE TABLE statement establishes interval partitioning for the table. You must specify at least one range partition using the PARTITION clause. The range partitioning key value determines the high value of the range partitions, which is called the transition point, and the database automatically creates interval partitions for data beyond that transition point. The lower boundary of every interval partition is the non-inclusive upper boundary of the previous range or interval partition.&lt;br /&gt;-----------------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;SQL&gt; DROP TABLE DATA_LOAD;&lt;br /&gt;Table dropped.&lt;br /&gt;&lt;br /&gt;SQL&gt; CREATE TABLE DATA_LOAD&lt;br /&gt;     ( DATA_id     NUMBER(6),&lt;br /&gt;      source_id    NUMBER,&lt;br /&gt;      load_date    DATE,&lt;br /&gt;      data_size    NUMBER,&lt;br /&gt;      state           VARCHAR2(20))&lt;br /&gt;    PARTITION BY RANGE (load_date)&lt;br /&gt;    INTERVAL(NUMTOYMINTERVAL(1, 'MONTH'))&lt;br /&gt;    ( PARTITION data_01_2006 VALUES LESS THAN (TO_DATE('01-01-2006','DD-MM-YYYY')) TABLESPACE DATA_01,&lt;br /&gt;     PARTITION data_01_2007 VALUES LESS THAN (TO_DATE('01-01-2007','DD-MM-YYYY')) TABLESPACE DATA_02,&lt;br /&gt;     PARTITION data_01_2008 VALUES LESS THAN (TO_DATE('01-01-2008','DD-MM-YYYY')) TABLESPACE DATA_03,&lt;br /&gt;     PARTITION data_01_2009 VALUES LESS THAN (TO_DATE('01-01-2009','DD-MM-YYYY')) TABLESPACE DATA_04&lt;br /&gt;   );&lt;br /&gt;&lt;br /&gt;Table created.&lt;br /&gt;Before data insert:&lt;br /&gt;SQL&gt; col TABLE_NAME format a15&lt;br /&gt;SQL&gt; col PARTITION_NAME format a15&lt;br /&gt;SQL&gt; col HIGH_VALUE format a80&lt;br /&gt;SQL&gt; set lines 300&lt;br /&gt;SQL&gt; select TABLE_NAME,COMPOSITE,PARTITION_NAME,HIGH_VALUE from user_tab_partitions where TABLE_NAME='DATA_LOAD';&lt;br /&gt;TABLE_NAME  COM PARTITION_NAME   HIGH_VALUE&lt;br /&gt;------------------------------------------------------------&lt;br /&gt;DATA_LOAD   NO  DATA_01_2006    TO_DATE(' 2006-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA     &lt;br /&gt;DATA_LOAD   NO  DATA_01_2007    TO_DATE(' 2007-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA &lt;br /&gt;DATA_LOAD   NO  DATA_01_2008    TO_DATE(' 2008-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA&lt;br /&gt;DATA_LOAD   NO  DATA_01_2009    TO_DATE(' 2009-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA&lt;br /&gt;&lt;br /&gt;Now we insert data in this table:&lt;br /&gt;&lt;br /&gt;insert into DATA_LOAD values (1,1,sysdate,1,'DELHI');&lt;br /&gt;insert into DATA_LOAD values (2,2,sysdate-30,2,'KERELA');&lt;br /&gt;insert into DATA_LOAD values (3,3,sysdate-300,3,'RAJASTHAN');&lt;br /&gt;insert into DATA_LOAD values (4,4,sysdate-600,4,'PUNJAB');&lt;br /&gt;insert into DATA_LOAD values (5,5,sysdate-60,5,'HARYANA');&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SQL&gt; select TABLE_NAME,COMPOSITE,PARTITION_NAME,HIGH_VALUE from user_tab_partitions where TABLE_NAME='DATA_LOAD';&lt;br /&gt;&lt;br /&gt;TABLE_NAME      COM PARTITION_NAME  HIGH_VALUE&lt;br /&gt;--------------- --- --------------- --------------------------------------------------------------------------------&lt;br /&gt;DATA_LOAD       NO  DATA_01_2006    TO_DATE(' 2006-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA&lt;br /&gt;DATA_LOAD       NO  DATA_01_2007    TO_DATE(' 2007-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA&lt;br /&gt;DATA_LOAD       NO  DATA_01_2008    TO_DATE(' 2008-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA&lt;br /&gt;DATA_LOAD       NO  DATA_01_2009    TO_DATE(' 2009-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA&lt;br /&gt;DATA_LOAD       NO  SYS_P81         TO_DATE(' 2009-06-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA&lt;br /&gt;DATA_LOAD       NO  SYS_P82         TO_DATE(' 2009-05-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA&lt;br /&gt;DATA_LOAD       NO  SYS_P83         TO_DATE(' 2009-04-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA&lt;br /&gt;&lt;br /&gt;Adding future rows:&lt;br /&gt;&lt;br /&gt;SQL&gt; insert into DATA_LOAD values (6,6,sysdate+300,6,'HARYANA');&lt;br /&gt;&lt;br /&gt;1 row created.&lt;br /&gt;&lt;br /&gt;SQL&gt; commit;&lt;br /&gt;&lt;br /&gt;Commit complete.&lt;br /&gt;&lt;br /&gt;SQL&gt; select TABLE_NAME,COMPOSITE,PARTITION_NAME,HIGH_VALUE from user_tab_partitions where TABLE_NAME='DATA_LOAD';&lt;br /&gt;&lt;br /&gt;TABLE_NAME      COM PARTITION_NAME  HIGH_VALUE&lt;br /&gt;--------------- --- --------------- --------------------------------------------------------------------------------&lt;br /&gt;DATA_LOAD       NO  DATA_01_2006    TO_DATE(' 2006-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA&lt;br /&gt;DATA_LOAD       NO  DATA_01_2007    TO_DATE(' 2007-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA&lt;br /&gt;DATA_LOAD       NO  DATA_01_2008    TO_DATE(' 2008-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA&lt;br /&gt;DATA_LOAD       NO  DATA_01_2009    TO_DATE(' 2009-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA&lt;br /&gt;DATA_LOAD       NO  SYS_P81         TO_DATE(' 2009-06-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA&lt;br /&gt;DATA_LOAD       NO  SYS_P82         TO_DATE(' 2009-05-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA&lt;br /&gt;DATA_LOAD       NO  SYS_P83         TO_DATE(' 2009-04-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA&lt;br /&gt;DATA_LOAD       NO  SYS_P84         TO_DATE(' 2010-04-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA&lt;br /&gt;&lt;br /&gt;8 rows selected.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So we see that the new INTERVAL PARTITIONS are being created for future dates and dates beyond the high value of the last range partition.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://apunhiran.blogspot.com/2009/05/oracle-partitioning-types-1.html"&gt;Part I&lt;/a&gt;&lt;br /&gt;&lt;a href="http://apunhiran.blogspot.com/2009/05/oracle-partitioning-types-ii.html"&gt;Part II&lt;/a&gt;&lt;br /&gt;&lt;a href="http://apunhiran.blogspot.com/2009/05/oracle-partitioning-types-iii.html"&gt;Part III&lt;/a&gt;&lt;br /&gt;&lt;a href="http://apunhiran.blogspot.com/2009/05/oracle-partitioning-types-v-reference.html"&gt;Part V&lt;/a&gt;&lt;br /&gt;&lt;a href="http://apunhiran.blogspot.com/2009/05/oracle-partitioning-types-vi-multiple.html"&gt;Part VI&lt;/a&gt;&lt;br /&gt;&lt;a href="http://apunhiran.blogspot.com/2009/05/oracle-partitioning-types-vii-virtual.html"&gt;Part VII&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4092304359380397372-5460660911969036723?l=apunhiran.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apunhiran.blogspot.com/feeds/5460660911969036723/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4092304359380397372&amp;postID=5460660911969036723' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/5460660911969036723'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/5460660911969036723'/><link rel='alternate' type='text/html' href='http://apunhiran.blogspot.com/2009/05/oracle-partitioning-types-iii-interval.html' title='Oracle Partitioning Types - IV (Interval Partition)'/><author><name>Apun Hiran</name><uri>http://www.blogger.com/profile/04745021360458270341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_viek7Sw5RrM/R_yAZoPGqYI/AAAAAAAAAIM/eS3VxJ7S2Pc/S220/IMG_0042.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4092304359380397372.post-5568819092703444749</id><published>2009-05-05T12:38:00.009+05:30</published><updated>2009-05-08T08:54:29.505+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='range hash'/><category scheme='http://www.blogger.com/atom/ns#' term='list hash'/><category scheme='http://www.blogger.com/atom/ns#' term='list range'/><category scheme='http://www.blogger.com/atom/ns#' term='composite'/><category scheme='http://www.blogger.com/atom/ns#' term='range range'/><category scheme='http://www.blogger.com/atom/ns#' term='hash'/><category scheme='http://www.blogger.com/atom/ns#' term='list list'/><category scheme='http://www.blogger.com/atom/ns#' term='list'/><category scheme='http://www.blogger.com/atom/ns#' term='range list'/><category scheme='http://www.blogger.com/atom/ns#' term='range'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Oracle Partitioning Types - III (Composite Partitions)</title><content type='html'>&lt;span style="font-weight:bold;"&gt;Composite Partitions:&lt;/span&gt;&lt;br /&gt;&lt;a name="range_range"&gt;1.) Composite Range-Range Partitioning&lt;/a&gt; &lt;br /&gt;(Available in 11g. Oracle 10g would give error: ORA-14151)&lt;br /&gt;&lt;br /&gt;SQL&gt; DROP TABLE DATA_LOAD;&lt;br /&gt;Table dropped.&lt;br /&gt;&lt;br /&gt;SQL&gt; CREATE TABLE DATA_LOAD&lt;br /&gt; ( DATA_id     NUMBER(6),&lt;br /&gt;      source_id    NUMBER,&lt;br /&gt;      load_date    DATE,&lt;br /&gt;      target_date  DATE,&lt;br /&gt;      data_size    NUMBER,&lt;br /&gt;      state           VARCHAR2(20)&lt;br /&gt;      )&lt;br /&gt;    PARTITION BY RANGE (load_date)&lt;br /&gt;   SUBPARTITION BY RANGE (target_date)&lt;br /&gt;   ( PARTITION data_01_2009 VALUES LESS THAN (TO_DATE('01-FEB-2009','DD-MON-YYYY')) TABLESPACE DATA_01&lt;br /&gt;       (SUBPARTITION data_01_2009_1 VALUES LESS THAN (TO_DATE('15-JAN-2009','DD-MON-YYYY')),&lt;br /&gt;        SUBPARTITION data_01_2009_2 VALUES LESS THAN (TO_DATE('25-JAN-2009','DD-MON-YYYY')),&lt;br /&gt;        SUBPARTITION data_01_2009_3 VALUES LESS THAN (MAXVALUE)&lt;br /&gt;        ) ,&lt;br /&gt;     PARTITION data_02_2009 VALUES LESS THAN (TO_DATE('01-MAR-2009','DD-MON-YYYY')) TABLESPACE DATA_02&lt;br /&gt;       (SUBPARTITION data_02_2009_1 VALUES LESS THAN (TO_DATE('15-FEB-2009','DD-MON-YYYY')),&lt;br /&gt;        SUBPARTITION data_02_2009_2 VALUES LESS THAN (TO_DATE('25-FEB-2009','DD-MON-YYYY')),&lt;br /&gt;        SUBPARTITION data_02_2009_3 VALUES LESS THAN (MAXVALUE)&lt;br /&gt;        ) ,&lt;br /&gt;     PARTITION data_03_2009 VALUES LESS THAN (TO_DATE('01-APR-2009','DD-MON-YYYY')) TABLESPACE DATA_03&lt;br /&gt;       (SUBPARTITION data_03_2009_1 VALUES LESS THAN (TO_DATE('15-MAR-2009','DD-MON-YYYY')),&lt;br /&gt;        SUBPARTITION data_03_2009_2 VALUES LESS THAN (TO_DATE('25-MAR-2009','DD-MON-YYYY')),&lt;br /&gt;        SUBPARTITION data_03_2009_3 VALUES LESS THAN (MAXVALUE)&lt;br /&gt;        ) ,&lt;br /&gt;     PARTITION data_04_2009 VALUES LESS THAN (TO_DATE('01-MAY-2009','DD-MON-YYYY'))  TABLESPACE DATA_04&lt;br /&gt;       (SUBPARTITION data_04_2009_1 VALUES LESS THAN (TO_DATE('15-APR-2009','DD-MON-YYYY')),&lt;br /&gt;        SUBPARTITION data_04_2009_2 VALUES LESS THAN (TO_DATE('25-APR-2009','DD-MON-YYYY')),&lt;br /&gt;        SUBPARTITION data_04_2009_3 VALUES LESS THAN (MAXVALUE)&lt;br /&gt;        )&lt;br /&gt;   );&lt;br /&gt;Table created.&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&lt;a name="range_hash"&gt;2.) Composite Range-Hash Partitioning&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;SQL&gt; DROP TABLE DATA_LOAD;&lt;br /&gt;Table dropped.&lt;br /&gt;&lt;br /&gt;SQL&gt; CREATE TABLE DATA_LOAD&lt;br /&gt;     ( DATA_id     NUMBER(6),&lt;br /&gt;      source_id    NUMBER,&lt;br /&gt;      load_date    DATE,&lt;br /&gt;      target_date  DATE,&lt;br /&gt;      data_size    NUMBER,&lt;br /&gt;      state           VARCHAR2(20))&lt;br /&gt;    PARTITION BY RANGE (load_date)&lt;br /&gt;    SUBPARTITION BY HASH (source_id)&lt;br /&gt;   SUBPARTITIONS 4 STORE IN (DATA_01, DATA_02, DATA_03, DATA_04)&lt;br /&gt;   ( PARTITION data_01_2009 VALUES LESS THAN (TO_DATE('01-FEB-2009','DD-MON-YYYY')) TABLESPACE DATA_01,&lt;br /&gt;     PARTITION data_02_2009 VALUES LESS THAN (TO_DATE('01-MAR-2009','DD-MON-YYYY')) TABLESPACE DATA_02,&lt;br /&gt;     PARTITION data_03_2009 VALUES LESS THAN (TO_DATE('01-APR-2009','DD-MON-YYYY')) TABLESPACE DATA_03,&lt;br /&gt;     PARTITION data_04_2009 VALUES LESS THAN (TO_DATE('01-MAY-2009','DD-MON-YYYY')) TABLESPACE DATA_04&lt;br /&gt;   );&lt;br /&gt;Table created.&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&lt;a name="range_list"&gt;3.) Composite Range-List Partitioning&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;SQL&gt; DROP TABLE DATA_LOAD;&lt;br /&gt;Table dropped.&lt;br /&gt;&lt;br /&gt;SQL&gt; CREATE TABLE DATA_LOAD&lt;br /&gt;     ( DATA_id     NUMBER(6),&lt;br /&gt;      source_id    NUMBER,&lt;br /&gt;      load_date    DATE,&lt;br /&gt;      target_date  DATE,&lt;br /&gt;      data_size    NUMBER,&lt;br /&gt;      state           VARCHAR2(20))&lt;br /&gt;    PARTITION BY RANGE (load_date)&lt;br /&gt;    SUBPARTITION BY LIST (state)&lt;br /&gt;   SUBPARTITION TEMPLATE (&lt;br /&gt;      SUBPARTITION NORTH_01 VALUES ('DELHI', 'JAMMU KASHMIR', 'PUNJAB', 'HARYANA') TABLESPACE DATA_01,&lt;br /&gt;      SUBPARTITION WEST_01 VALUES ('RAJASTHAN', 'GUJRAT', 'MAHARASTRA') TABLESPACE DATA_02,&lt;br /&gt;      SUBPARTITION SOUTH_01 VALUES  ('TAMIL NADU', 'KERELA', 'KARNATAKA') TABLESPACE DATA_03,&lt;br /&gt;      SUBPARTITION EAST_01 VALUES ('ASSAM', 'WEST BENGAL', 'NAGALAND') TABLESPACE DATA_04,&lt;br /&gt;      SUBPARTITION NO_REGION VALUES (NULL) TABLESPACE USERS,&lt;br /&gt;      SUBPARTITION OTHER VALUES (DEFAULT) TABLESPACE USERS&lt;br /&gt;      )&lt;br /&gt;   ( PARTITION data_01_2009 VALUES LESS THAN (TO_DATE('01-FEB-2009','DD-MON-YYYY')) ,&lt;br /&gt;     PARTITION data_02_2009 VALUES LESS THAN (TO_DATE('01-MAR-2009','DD-MON-YYYY')) ,&lt;br /&gt;     PARTITION data_03_2009 VALUES LESS THAN (TO_DATE('01-APR-2009','DD-MON-YYYY')) ,&lt;br /&gt;     PARTITION data_04_2009 VALUES LESS THAN (TO_DATE('01-MAY-2009','DD-MON-YYYY'))&lt;br /&gt;   );&lt;br /&gt;Table created.&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&lt;a name="list_range"&gt;4.) Composite List-Range Partitioning&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;SQL&gt; DROP TABLE DATA_LOAD;&lt;br /&gt;Table dropped.&lt;br /&gt;&lt;br /&gt;SQL&gt; CREATE TABLE DATA_LOAD&lt;br /&gt;      ( DATA_id     NUMBER(6),&lt;br /&gt;       source_id    NUMBER,&lt;br /&gt;       load_date    DATE,&lt;br /&gt;       target_date  DATE,&lt;br /&gt;       data_size    NUMBER,&lt;br /&gt;       state           VARCHAR2(20))&lt;br /&gt;     PARTITION BY LIST (state)&lt;br /&gt;     SUBPARTITION BY RANGE (load_date)&lt;br /&gt;     (&lt;br /&gt;      PARTITION NORTH_01 VALUES ('DELHI', 'JAMMU KASHMIR', 'PUNJAB', 'HARYANA')&lt;br /&gt;        ( SUBPARTITION n_data_01_2009 VALUES LESS THAN (TO_DATE('01-FEB-2009','DD-MON-YYYY')) TABLESPACE DATA_01,&lt;br /&gt;          SUBPARTITION n_data_02_2009 VALUES LESS THAN (TO_DATE('01-MAR-2009','DD-MON-YYYY')) TABLESPACE DATA_02,&lt;br /&gt;          SUBPARTITION n_data_03_2009 VALUES LESS THAN (TO_DATE('01-APR-2009','DD-MON-YYYY')) TABLESPACE DATA_03,&lt;br /&gt;          SUBPARTITION n_data_04_2009 VALUES LESS THAN (TO_DATE('01-MAY-2009','DD-MON-YYYY')) TABLESPACE DATA_04&lt;br /&gt;        ),&lt;br /&gt;      PARTITION WEST_01 VALUES ('RAJASTHAN', 'GUJRAT', 'MAHARASTRA')&lt;br /&gt;        ( SUBPARTITION w_data_01_2009 VALUES LESS THAN (TO_DATE('01-FEB-2009','DD-MON-YYYY')) TABLESPACE DATA_01,&lt;br /&gt;          SUBPARTITION w_data_02_2009 VALUES LESS THAN (TO_DATE('01-MAR-2009','DD-MON-YYYY')) TABLESPACE DATA_02,&lt;br /&gt;          SUBPARTITION w_data_03_2009 VALUES LESS THAN (TO_DATE('01-APR-2009','DD-MON-YYYY')) TABLESPACE DATA_03,&lt;br /&gt;          SUBPARTITION w_data_04_2009 VALUES LESS THAN (TO_DATE('01-MAY-2009','DD-MON-YYYY')) TABLESPACE DATA_04&lt;br /&gt;        ),&lt;br /&gt;      PARTITION SOUTH_01 VALUES  ('TAMIL NADU', 'KERELA', 'KARNATAKA')&lt;br /&gt;        ( SUBPARTITION s_data_01_2009 VALUES LESS THAN (TO_DATE('01-FEB-2009','DD-MON-YYYY')) TABLESPACE DATA_01,&lt;br /&gt;          SUBPARTITION s_data_02_2009 VALUES LESS THAN (TO_DATE('01-MAR-2009','DD-MON-YYYY')) TABLESPACE DATA_02,&lt;br /&gt;          SUBPARTITION s_data_03_2009 VALUES LESS THAN (TO_DATE('01-APR-2009','DD-MON-YYYY')) TABLESPACE DATA_03,&lt;br /&gt;          SUBPARTITION s_data_04_2009 VALUES LESS THAN (TO_DATE('01-MAY-2009','DD-MON-YYYY')) TABLESPACE DATA_04&lt;br /&gt;        ),&lt;br /&gt;      PARTITION EAST_01 VALUES ('ASSAM', 'WEST BENGAL', 'NAGALAND')&lt;br /&gt;        ( SUBPARTITION e_data_01_2009 VALUES LESS THAN (TO_DATE('01-FEB-2009','DD-MON-YYYY')) TABLESPACE DATA_01,&lt;br /&gt;          SUBPARTITION e_data_02_2009 VALUES LESS THAN (TO_DATE('01-MAR-2009','DD-MON-YYYY')) TABLESPACE DATA_02,&lt;br /&gt;          SUBPARTITION e_data_03_2009 VALUES LESS THAN (TO_DATE('01-APR-2009','DD-MON-YYYY')) TABLESPACE DATA_03,&lt;br /&gt;          SUBPARTITION e_data_04_2009 VALUES LESS THAN (TO_DATE('01-MAY-2009','DD-MON-YYYY')) TABLESPACE DATA_04&lt;br /&gt;        ),&lt;br /&gt;      PARTITION NO_REGION VALUES (NULL)&lt;br /&gt;        ( SUBPARTITION no_data_01_2009 VALUES LESS THAN (TO_DATE('01-FEB-2009','DD-MON-YYYY')) TABLESPACE DATA_01,&lt;br /&gt;          SUBPARTITION no_data_02_2009 VALUES LESS THAN (TO_DATE('01-MAR-2009','DD-MON-YYYY')) TABLESPACE DATA_02,&lt;br /&gt;          SUBPARTITION no_data_03_2009 VALUES LESS THAN (TO_DATE('01-APR-2009','DD-MON-YYYY')) TABLESPACE DATA_03,&lt;br /&gt;          SUBPARTITION no_data_04_2009 VALUES LESS THAN (TO_DATE('01-MAY-2009','DD-MON-YYYY')) TABLESPACE DATA_04&lt;br /&gt;        ),&lt;br /&gt;      PARTITION OTHER VALUES (DEFAULT)&lt;br /&gt;        ( SUBPARTITION o_data_01_2009 VALUES LESS THAN (TO_DATE('01-FEB-2009','DD-MON-YYYY')) TABLESPACE DATA_01,&lt;br /&gt;          SUBPARTITION o_data_02_2009 VALUES LESS THAN (TO_DATE('01-MAR-2009','DD-MON-YYYY')) TABLESPACE DATA_02,&lt;br /&gt;          SUBPARTITION o_data_03_2009 VALUES LESS THAN (TO_DATE('01-APR-2009','DD-MON-YYYY')) TABLESPACE DATA_03,&lt;br /&gt;          SUBPARTITION o_data_04_2009 VALUES LESS THAN (TO_DATE('01-MAY-2009','DD-MON-YYYY')) TABLESPACE DATA_04&lt;br /&gt;        )&lt;br /&gt;     );&lt;br /&gt;Table created.&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&lt;a name="list_hash"&gt;5.) Composite List-Hash Partitioning&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;SQL&gt; DROP TABLE DATA_LOAD;&lt;br /&gt;Table dropped.&lt;br /&gt;&lt;br /&gt;SQL&gt; CREATE TABLE DATA_LOAD&lt;br /&gt;     ( DATA_id     NUMBER(6),&lt;br /&gt;      source_id    NUMBER,&lt;br /&gt;      load_date    DATE,&lt;br /&gt;      target_date  DATE,&lt;br /&gt;      data_size    NUMBER,&lt;br /&gt;      state           VARCHAR2(20))&lt;br /&gt;    PARTITION BY LIST (state)&lt;br /&gt;    SUBPARTITION BY HASH (load_date) SUBPARTITIONS 4&lt;br /&gt;    (PARTITION NORTH_01 VALUES ('DELHI', 'JAMMU KASHMIR', 'PUNJAB', 'HARYANA'),&lt;br /&gt;     PARTITION WEST_01 VALUES ('RAJASTHAN', 'GUJRAT', 'MAHARASTRA'),&lt;br /&gt;     PARTITION SOUTH_01 VALUES  ('TAMIL NADU', 'KERELA', 'KARNATAKA'),&lt;br /&gt;     PARTITION EAST_01 VALUES ('ASSAM', 'WEST BENGAL', 'NAGALAND'),&lt;br /&gt;     PARTITION NO_REGION VALUES (NULL),&lt;br /&gt;     PARTITION OTHER VALUES (DEFAULT)&lt;br /&gt;     );&lt;br /&gt;Table created.&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&lt;a name="list_list"&gt;6.) Composite List-List Partitioning&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;SQL&gt; DROP TABLE DATA_LOAD;&lt;br /&gt;Table dropped.&lt;br /&gt;&lt;br /&gt;SQL&gt; CREATE TABLE DATA_LOAD&lt;br /&gt; ( DATA_id     NUMBER(6),&lt;br /&gt;      source_id    NUMBER,&lt;br /&gt;      load_date    DATE,&lt;br /&gt;      target_date  DATE,&lt;br /&gt;      data_size    NUMBER,&lt;br /&gt;      status       VARCHAR2(1),&lt;br /&gt;      state        VARCHAR2(20))&lt;br /&gt;    PARTITION BY LIST (state)&lt;br /&gt;   SUBPARTITION BY LIST (status)&lt;br /&gt;    (&lt;br /&gt;     PARTITION NORTH_01 VALUES ('DELHI', 'JAMMU KASHMIR', 'PUNJAB', 'HARYANA')&lt;br /&gt;       (SUBPARTITION a_NORTH_01 VALUES ('A'),&lt;br /&gt;        SUBPARTITION b_NORTH_01 VALUES ('B'),&lt;br /&gt;        SUBPARTITION c_NORTH_01 VALUES ('C')&lt;br /&gt;       ),&lt;br /&gt;     PARTITION WEST_01 VALUES ('RAJASTHAN', 'GUJRAT', 'MAHARASTRA')&lt;br /&gt;       (SUBPARTITION a_WEST_01 VALUES ('A'),&lt;br /&gt;        SUBPARTITION b_WEST_01 VALUES ('B'),&lt;br /&gt;        SUBPARTITION c_WEST_01 VALUES ('C')&lt;br /&gt;       ),&lt;br /&gt;     PARTITION SOUTH_01 VALUES  ('TAMIL NADU', 'KERELA', 'KARNATAKA')&lt;br /&gt;       (SUBPARTITION a_SOUTH_01 VALUES ('A'),&lt;br /&gt;        SUBPARTITION b_SOUTH_01 VALUES ('B'),&lt;br /&gt;        SUBPARTITION c_SOUTH_01 VALUES ('C')&lt;br /&gt;       ),&lt;br /&gt;     PARTITION EAST_01 VALUES ('ASSAM', 'WEST BENGAL', 'NAGALAND')&lt;br /&gt;       (SUBPARTITION a_EAST_01 VALUES ('A'),&lt;br /&gt;        SUBPARTITION b_EAST_01 VALUES ('B'),&lt;br /&gt;        SUBPARTITION c_EAST_01 VALUES ('C')&lt;br /&gt;       ),&lt;br /&gt;     PARTITION NO_REGION VALUES (NULL)&lt;br /&gt;       (SUBPARTITION a_NO_REGION_01 VALUES ('A'),&lt;br /&gt;        SUBPARTITION b_NO_REGION_01 VALUES ('B'),&lt;br /&gt;        SUBPARTITION c_NO_REGION_01 VALUES ('C')&lt;br /&gt;       ),&lt;br /&gt;     PARTITION OTHER VALUES (DEFAULT)&lt;br /&gt;       (SUBPARTITION a_OTHER_01 VALUES ('A'),&lt;br /&gt;        SUBPARTITION b_OTHER_01 VALUES ('B'),&lt;br /&gt;        SUBPARTITION c_OTHER_01 VALUES ('C')&lt;br /&gt;       )&lt;br /&gt;    );&lt;br /&gt;Table created.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://apunhiran.blogspot.com/2009/05/oracle-partitioning-types-1.html"&gt;Part I&lt;/a&gt;&lt;br /&gt;&lt;a href="http://apunhiran.blogspot.com/2009/05/oracle-partitioning-types-ii.html"&gt;Part II&lt;/a&gt;&lt;br /&gt;&lt;a href="http://apunhiran.blogspot.com/2009/05/oracle-partitioning-types-iii-interval.html"&gt;Part IV&lt;/a&gt;&lt;br /&gt;&lt;a href="http://apunhiran.blogspot.com/2009/05/oracle-partitioning-types-v-reference.html"&gt;Part V&lt;/a&gt;&lt;br /&gt;&lt;a href="http://apunhiran.blogspot.com/2009/05/oracle-partitioning-types-vi-multiple.html"&gt;Part VI&lt;/a&gt;&lt;br /&gt;&lt;a href="http://apunhiran.blogspot.com/2009/05/oracle-partitioning-types-vii-virtual.html"&gt;Part VII&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4092304359380397372-5568819092703444749?l=apunhiran.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apunhiran.blogspot.com/feeds/5568819092703444749/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4092304359380397372&amp;postID=5568819092703444749' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/5568819092703444749'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/5568819092703444749'/><link rel='alternate' type='text/html' href='http://apunhiran.blogspot.com/2009/05/oracle-partitioning-types-iii.html' title='Oracle Partitioning Types - III (Composite Partitions)'/><author><name>Apun Hiran</name><uri>http://www.blogger.com/profile/04745021360458270341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_viek7Sw5RrM/R_yAZoPGqYI/AAAAAAAAAIM/eS3VxJ7S2Pc/S220/IMG_0042.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4092304359380397372.post-2969439904152976852</id><published>2009-05-05T12:26:00.009+05:30</published><updated>2009-05-08T08:54:46.285+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='partitioning'/><category scheme='http://www.blogger.com/atom/ns#' term='partition'/><category scheme='http://www.blogger.com/atom/ns#' term='11g'/><category scheme='http://www.blogger.com/atom/ns#' term='hash'/><category scheme='http://www.blogger.com/atom/ns#' term='list'/><category scheme='http://www.blogger.com/atom/ns#' term='range'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Oracle Partitioning Types - II (Single Level Partitions)</title><content type='html'>&lt;span style="font-weight:bold;"&gt;Syntax examples on how to create partition tables:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;a name="range_part1"&gt;1.) Range Partitioning:&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;SQL&gt; CREATE TABLE DATA_LOAD&lt;br /&gt;     ( DATA_id     NUMBER(6),&lt;br /&gt;      source_id    NUMBER,&lt;br /&gt;      load_date    DATE,&lt;br /&gt;      data_size    NUMBER,&lt;br /&gt;      state           VARCHAR2(20))&lt;br /&gt;    PARTITION BY RANGE (load_date)&lt;br /&gt;    ( PARTITION data_01_2009 VALUES LESS THAN (TO_DATE('01-FEB-2009','DD-MON-YYYY')) TABLESPACE DATA_01,&lt;br /&gt;      PARTITION data_02_2009 VALUES LESS THAN (TO_DATE('01-MAR-2009','DD-MON-YYYY')) TABLESPACE DATA_02,&lt;br /&gt;     PARTITION data_03_2009 VALUES LESS THAN (TO_DATE('01-APR-2009','DD-MON-YYYY')) TABLESPACE DATA_03,&lt;br /&gt;     PARTITION data_04_2009 VALUES LESS THAN (TO_DATE('01-MAY-2009','DD-MON-YYYY')) TABLESPACE DATA_04&lt;br /&gt;   );&lt;br /&gt;&lt;br /&gt;Table created.&lt;br /&gt;&lt;br /&gt;This create Date range based partition each for the month of JAN, FEB, MAR &amp; APR 2009.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;a name="hash_part1"&gt;2.) Hash Partitioning&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Oracle apply's a hashing algorithm to the column selected on partitions, we can provide the number of partitions we want or also the names of partitions.&lt;br /&gt;&lt;br /&gt;SQL&gt; DROP TABLE DATA_LOAD;&lt;br /&gt;Table dropped.&lt;br /&gt;&lt;br /&gt;SQL&gt; CREATE TABLE DATA_LOAD&lt;br /&gt;     ( DATA_id     NUMBER(6),&lt;br /&gt;      source_id    NUMBER,&lt;br /&gt;      load_date    DATE,&lt;br /&gt;      data_size    NUMBER,&lt;br /&gt;      state           VARCHAR2(20))&lt;br /&gt;    PARTITION BY HASH (source_id)&lt;br /&gt;    ( PARTITION data_01_2009 TABLESPACE DATA_01,&lt;br /&gt;      PARTITION data_02_2009 TABLESPACE DATA_02,&lt;br /&gt;     PARTITION data_03_2009 TABLESPACE DATA_03,&lt;br /&gt;     PARTITION data_04_2009 TABLESPACE DATA_04&lt;br /&gt;   );&lt;br /&gt;Table created.&lt;br /&gt;&lt;br /&gt;Alternatively,&lt;br /&gt;SQL&gt; DROP TABLE DATA_LOAD;&lt;br /&gt;Table dropped.&lt;br /&gt;&lt;br /&gt;SQL&gt; CREATE TABLE DATA_LOAD&lt;br /&gt; ( DATA_id     NUMBER(6),&lt;br /&gt;  source_id    NUMBER,&lt;br /&gt;  load_date    DATE,&lt;br /&gt;  data_size    NUMBER,&lt;br /&gt;  state           VARCHAR2(20))&lt;br /&gt;PARTITION BY HASH (source_id) PARTITIONS 4;&lt;br /&gt;Table created.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;a name="list_part1"&gt;3.) List Partitioning&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;SQL&gt; DROP TABLE DATA_LOAD;&lt;br /&gt;Table dropped.&lt;br /&gt;&lt;br /&gt;SQL&gt; CREATE TABLE DATA_LOAD&lt;br /&gt;     ( DATA_id     NUMBER(6),&lt;br /&gt;      source_id    NUMBER,&lt;br /&gt;      load_date    DATE,&lt;br /&gt;      data_size    NUMBER,&lt;br /&gt;      state           VARCHAR2(20))&lt;br /&gt;    PARTITION BY LIST (state)&lt;br /&gt;     (PARTITION NORTH_01 VALUES ('DELHI', 'JAMMU KASHMIR', 'PUNJAB', 'HARYANA'),&lt;br /&gt;      PARTITION WEST_01 VALUES ('RAJASTHAN', 'GUJRAT', 'MAHARASTRA'),&lt;br /&gt;     PARTITION SOUTH_01 VALUES  ('TAMIL NADU', 'KERELA', 'KARNATAKA'),&lt;br /&gt;     PARTITION EAST_01 VALUES ('ASSAM', 'WEST BENGAL', 'NAGALAND'),&lt;br /&gt;     PARTITION NO_REGION VALUES (NULL),&lt;br /&gt;     PARTITION OTHER VALUES (DEFAULT)&lt;br /&gt;     );&lt;br /&gt;Table created.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://apunhiran.blogspot.com/2009/05/oracle-partitioning-types-1.html"&gt;Part I&lt;/a&gt;&lt;br /&gt;&lt;a href="http://apunhiran.blogspot.com/2009/05/oracle-partitioning-types-iii.html"&gt;Part III&lt;/a&gt;&lt;br /&gt;&lt;a href="http://apunhiran.blogspot.com/2009/05/oracle-partitioning-types-iii-interval.html"&gt;Part IV&lt;/a&gt;&lt;br /&gt;&lt;a href="http://apunhiran.blogspot.com/2009/05/oracle-partitioning-types-v-reference.html"&gt;Part V&lt;/a&gt;&lt;br /&gt;&lt;a href="http://apunhiran.blogspot.com/2009/05/oracle-partitioning-types-vi-multiple.html"&gt;Part VI&lt;/a&gt;&lt;br /&gt;&lt;a href="http://apunhiran.blogspot.com/2009/05/oracle-partitioning-types-vii-virtual.html"&gt;Part VII&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4092304359380397372-2969439904152976852?l=apunhiran.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apunhiran.blogspot.com/feeds/2969439904152976852/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4092304359380397372&amp;postID=2969439904152976852' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/2969439904152976852'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/2969439904152976852'/><link rel='alternate' type='text/html' href='http://apunhiran.blogspot.com/2009/05/oracle-partitioning-types-ii.html' title='Oracle Partitioning Types - II (Single Level Partitions)'/><author><name>Apun Hiran</name><uri>http://www.blogger.com/profile/04745021360458270341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_viek7Sw5RrM/R_yAZoPGqYI/AAAAAAAAAIM/eS3VxJ7S2Pc/S220/IMG_0042.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4092304359380397372.post-5435073321562657174</id><published>2009-05-05T12:23:00.019+05:30</published><updated>2009-05-08T08:58:29.904+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='partitioning'/><category scheme='http://www.blogger.com/atom/ns#' term='partition'/><category scheme='http://www.blogger.com/atom/ns#' term='11g'/><category scheme='http://www.blogger.com/atom/ns#' term='composite'/><category scheme='http://www.blogger.com/atom/ns#' term='hash'/><category scheme='http://www.blogger.com/atom/ns#' term='list'/><category scheme='http://www.blogger.com/atom/ns#' term='range'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Oracle Partitioning Types - I (Index)</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Types of Oracle partitions:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;a href="http://apunhiran.blogspot.com/2009/05/oracle-partitioning-types-ii.html"&gt;&lt;font color="#990000"&gt;Single Level Partitions:&lt;/font&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://apunhiran.blogspot.com/2009/05/oracle-partitioning-types-ii.html#range_part1"&gt;&lt;font color="#0000CD"&gt;Range Partitioning&lt;/font&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://apunhiran.blogspot.com/2009/05/oracle-partitioning-types-ii.html#hash_part1"&gt;&lt;font color="#0000CD"&gt;Hash Partitioning&lt;/font&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://apunhiran.blogspot.com/2009/05/oracle-partitioning-types-ii.html#list_part1"&gt;&lt;font color="#0000CD"&gt;List Partitioning&lt;/font&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;a href="http://apunhiran.blogspot.com/2009/05/oracle-partitioning-types-iii.html"&gt;&lt;font color="#990000"&gt;Composite Partitions:&lt;/font&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://apunhiran.blogspot.com/2009/05/oracle-partitioning-types-iii.html#range_range"&gt;&lt;font color="#0000CD"&gt;Composite Range-Range Partitioning&lt;/font&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://apunhiran.blogspot.com/2009/05/oracle-partitioning-types-iii.html#range_hash"&gt;&lt;font color="#0000CD"&gt;Composite Range-Hash Partitioning&lt;/font&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://apunhiran.blogspot.com/2009/05/oracle-partitioning-types-iii.html#range_list"&gt;&lt;font color="#0000CD"&gt;Composite Range-List Partitioning&lt;/font&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://apunhiran.blogspot.com/2009/05/oracle-partitioning-types-iii.html#list_range"&gt;&lt;font color="#0000CD"&gt;Composite List-Range Partitioning&lt;/font&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://apunhiran.blogspot.com/2009/05/oracle-partitioning-types-iii.html#list_hash"&gt;&lt;font color="#0000CD"&gt;Composite List-Hash Partitioning&lt;/font&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://apunhiran.blogspot.com/2009/05/oracle-partitioning-types-iii.html#list_list"&gt;&lt;font color="#0000CD"&gt;Composite List-List Partitioning&lt;/font&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Enhancements in 11g:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://apunhiran.blogspot.com/2009/05/oracle-partitioning-types-iii-interval.html#interval_part"&gt;&lt;font color="#0000CD"&gt;Interval Partitioning&lt;/font&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://apunhiran.blogspot.com/2009/05/oracle-partitioning-types-v-reference.html#ref_part"&gt;&lt;font color="#0000CD"&gt;Reference Partitioning&lt;/font&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://apunhiran.blogspot.com/2009/05/oracle-partitioning-types-vi-multiple.html#multi_part"&gt;&lt;font color="#0000CD"&gt;Multiple Column Partitioning&lt;/font&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://apunhiran.blogspot.com/2009/05/oracle-partitioning-types-vii-virtual.html#virtual_part"&gt;&lt;font color="#0000CD"&gt;Virtual column-based Partitioning&lt;/font&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Partition Advisor&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Reasons for Partitioning od Data:&lt;/span&gt;&lt;br /&gt;1.) Large amount of data in a table, oracle suggests that table size of over 2G are good candidates for partitioning.&lt;br /&gt;2.) Historical data and current data reside in the table at the same time.&lt;br /&gt;3.) When the disk space is limited and you want to span a table across different storage types.&lt;br /&gt;4.) Partition is good for inproving performance, as the data related to different regions, dates etc can be stored seperately and can be queries faster. For example, data for last 2-3 yrs reside in the same table, older data is moreover read-only and the current data is queries more than the other, always good to have partitions like monthly etc. another example would be data of different states of a country reside in the same table, they can be seperated stored state-wise.&lt;br /&gt;&lt;br /&gt;For details on the syntax of these partitioning types:&lt;br /&gt;&lt;a href="http://apunhiran.blogspot.com/2009/05/oracle-partitioning-types-ii.html"&gt;Single Level Partitions, Part II&lt;/a&gt;&lt;br /&gt;&lt;a href="http://apunhiran.blogspot.com/2009/05/oracle-partitioning-types-iii.html"&gt;Composite Partitions, Part III&lt;/a&gt;&lt;br /&gt;&lt;a href="http://apunhiran.blogspot.com/2009/05/oracle-partitioning-types-iii-interval.html"&gt;Interval Partitions, Part IV&lt;/a&gt;&lt;br /&gt;&lt;a href="http://apunhiran.blogspot.com/2009/05/oracle-partitioning-types-v-reference.html"&gt;Reference Partitions, Part V&lt;/a&gt;&lt;br /&gt;&lt;a href="http://apunhiran.blogspot.com/2009/05/oracle-partitioning-types-vi-multiple.html"&gt;Multicolumn Partitioning, Part VI&lt;/a&gt;&lt;br /&gt;&lt;a href="http://apunhiran.blogspot.com/2009/05/oracle-partitioning-types-vii-virtual.html"&gt;Virtual Column Based Partitioning, Part VII&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4092304359380397372-5435073321562657174?l=apunhiran.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apunhiran.blogspot.com/feeds/5435073321562657174/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4092304359380397372&amp;postID=5435073321562657174' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/5435073321562657174'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/5435073321562657174'/><link rel='alternate' type='text/html' href='http://apunhiran.blogspot.com/2009/05/oracle-partitioning-types-1.html' title='Oracle Partitioning Types - I (Index)'/><author><name>Apun Hiran</name><uri>http://www.blogger.com/profile/04745021360458270341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_viek7Sw5RrM/R_yAZoPGqYI/AAAAAAAAAIM/eS3VxJ7S2Pc/S220/IMG_0042.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4092304359380397372.post-1174654618626881980</id><published>2009-04-15T12:02:00.009+05:30</published><updated>2009-04-20T09:20:51.506+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='replication'/><category scheme='http://www.blogger.com/atom/ns#' term='generate_replication_support'/><category scheme='http://www.blogger.com/atom/ns#' term='example'/><category scheme='http://www.blogger.com/atom/ns#' term='master'/><category scheme='http://www.blogger.com/atom/ns#' term='11g'/><category scheme='http://www.blogger.com/atom/ns#' term='DBMS_DEFER_SYS'/><category scheme='http://www.blogger.com/atom/ns#' term='multi-master'/><category scheme='http://www.blogger.com/atom/ns#' term='dbms_repcat'/><category scheme='http://www.blogger.com/atom/ns#' term='advanced'/><category scheme='http://www.blogger.com/atom/ns#' term='10g'/><category scheme='http://www.blogger.com/atom/ns#' term='multi'/><category scheme='http://www.blogger.com/atom/ns#' term='SCHEDULE_PUSH'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>How TO: Setup Multi-Master\Advanced Replication with Oracle 10g, 11g</title><content type='html'>As per the &lt;a href='http://tahiti.oracle.com/'&gt;oracle documentation&lt;/a&gt; there are 3 main processes involved in replication between masters:&lt;br /&gt;1.) &lt;span style="font-weight:bold;"&gt;Replication Administration&lt;/span&gt;: Create replication groups, defines replication objects and other replication administrative functions.&lt;br /&gt;2.) &lt;span style="font-weight:bold;"&gt;Replication Propagation&lt;/span&gt;: Makes sure that the changes are sent from the database in which they have happened to all the other masters.&lt;br /&gt;3.) &lt;span style="font-weight:bold;"&gt;Replication Receiver&lt;/span&gt;: Applies all the received changes to the destination master databases.&lt;br /&gt;&lt;br /&gt;These three functions can be assigned to 3 different schema in the oracle database, or can be done by one schema.&lt;br /&gt;I am going to use the same schema to perform all the above functions. The name of the schema, used most popularly is REPADMIN.&lt;br /&gt;&lt;br /&gt;Init parameter JOB_QUEUE_PROCESSES should have a non zero value.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Enable GLOBAL_NAMES&lt;/span&gt;&lt;br /&gt;SQL&gt; show parameter global_names&lt;br /&gt;NAME                                 TYPE        VALUE&lt;br /&gt;------------------------------------ ----------- ------------------------------&lt;br /&gt;global_names                         boolean     FALSE&lt;br /&gt;SQL&gt; alter system set global_names=TRUE;&lt;br /&gt;&lt;br /&gt;(Master 1)&lt;br /&gt;SQL&gt; select * from global_name;&lt;br /&gt;GLOBAL_NAME&lt;br /&gt;-----------------&lt;br /&gt;TEST.ORACLE.COM&lt;br /&gt;&lt;br /&gt;(Master 2)&lt;br /&gt;SQL&gt; select * from global_name;&lt;br /&gt;GLOBAL_NAME&lt;br /&gt;----------------&lt;br /&gt;ORCL.ORACLE.COM&lt;br /&gt;&lt;br /&gt;Incase you want to change the global name:&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;alter database rename global_name to &lt;NAME&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In my case the name of the database are test (Linux) and orcl (windows) and the setup is replication between 2 databases, one is a Linux installation and the other is windows.&lt;br /&gt;&lt;br /&gt;In a multi-master replication setup, one DB acts as the master definition database. This database is used for running administration and maintenance tasks. In our case we will use TEST DB as the master definition database.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Step 1:&lt;/span&gt;&lt;br /&gt;Create REPADMIN schema in all the master databases.&lt;br /&gt;&lt;br /&gt;SQL&gt; &lt;span style="font-weight:bold;"&gt;CREATE USER REPADMIN IDENTIFIED BY REPADMIN DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;User created.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Step 2:&lt;/span&gt;&lt;br /&gt;Granting admin permissions to REPADMIN schema. DBMS_REPCAT_ADMIN package is used to perform any administrative activity related to replication.&lt;br /&gt;&lt;br /&gt;SQL&gt; &lt;span style="font-weight:bold;"&gt;EXEC DBMS_REPCAT_ADMIN.GRANT_ADMIN_ANY_SCHEMA('REPADMIN');&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;PL/SQL procedure successfully completed.&lt;br /&gt;&lt;br /&gt;Permission to allow REPADMIN to propogate changes.&lt;br /&gt;&lt;br /&gt;SQL&gt; &lt;span style="font-weight:bold;"&gt;EXEC DBMS_DEFER_SYS.REGISTER_PROPAGATOR('REPADMIN');&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;PL/SQL procedure successfully completed.&lt;br /&gt;&lt;br /&gt;Permission to allow REPADMIN to be a receiver.&lt;br /&gt;&lt;br /&gt;SQL&gt; &lt;span style="font-weight:bold;"&gt;EXEC DBMS_REPCAT_ADMIN.REGISTER_USER_REPGROUP (USERNAME =&gt; 'REPADMIN', PRIVILEGE_TYPE =&gt; 'RECEIVER', LIST_OF_GNAMES =&gt;  NULL);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;PL/SQL procedure successfully completed.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Step 3:&lt;/span&gt;&lt;br /&gt;Create database links between the various master sites. &lt;span style="font-weight:bold;"&gt;The name of the DB Link should be same as the global name of the target database.&lt;/span&gt;&lt;br /&gt;Need to create a public database link first:&lt;br /&gt;&lt;br /&gt;(Master 1)&lt;br /&gt;SQL&gt; &lt;span style="font-weight:bold;"&gt;CREATE PUBLIC DATABASE LINK ORCL.ORACLE.COM USING 'ORCL';&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Database link created.&lt;br /&gt;(Master 2)&lt;br /&gt;SQL&gt; &lt;span style="font-weight:bold;"&gt;CREATE PUBLIC DATABASE LINK TEST.ORACLE.COM USING 'TEST';&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Database link created.&lt;br /&gt;&lt;br /&gt;Now create a private database link in REPADMIN schema.&lt;br /&gt;&lt;br /&gt;(Master 1)&lt;br /&gt;SQL&gt; conn repadmin/repadmin&lt;br /&gt;Connected.&lt;br /&gt;SQL&gt; &lt;span style="font-weight:bold;"&gt;CREATE DATABASE LINK ORCL.ORACLE.COM CONNECT TO REPADMIN IDENTIFIED BY repadmin USING 'ORCL';&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Database link created.&lt;br /&gt;&lt;br /&gt;(Master 2)&lt;br /&gt;SQL&gt; conn repadmin/repadmin&lt;br /&gt;Connected.&lt;br /&gt;SQL&gt; &lt;span style="font-weight:bold;"&gt;CREATE DATABASE LINK TEST.ORACLE.COM CONNECT TO REPADMIN IDENTIFIED BY repadmin USING 'TEST';&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Database link created.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Step 4:&lt;/span&gt;&lt;br /&gt;Defining or creating replication objects.&lt;br /&gt;I am using the HR schema and the tables present under it for replication purpose.&lt;br /&gt;SQL&gt; &lt;span style="font-weight:bold;"&gt;SELECT TABLE_NAME FROM USER_TABLES;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;TABLE_NAME&lt;br /&gt;------------------------------&lt;br /&gt;LOCATIONS&lt;br /&gt;BLOB_TEST&lt;br /&gt;EMPLOYEES&lt;br /&gt;REGIONS&lt;br /&gt;JOBS&lt;br /&gt;JOB_HISTORY&lt;br /&gt;DEPARTMENTS&lt;br /&gt;&lt;br /&gt;7 rows selected.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Step 5:&lt;/span&gt;&lt;br /&gt;Creation of replication group.&lt;br /&gt;We need to create this group in the master definition DB or test DB in our case as REPADMIN.&lt;br /&gt;&lt;br /&gt;SQL&gt; CONN REPADMIN/REPADMIN&lt;br /&gt;Connected.&lt;br /&gt;SQL&gt; &lt;span style="font-weight:bold;"&gt;EXEC DBMS_REPCAT.CREATE_MASTER_REPGROUP('REP2');&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;PL/SQL procedure successfully completed.&lt;br /&gt;&lt;br /&gt;You can create multiple replication groups depending on our requirement, for different objects or set of objects.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Step 6:&lt;/span&gt;&lt;br /&gt;Add objects/tables to the replication group REP2. Need to be executed only at the master definition DB (test).&lt;br /&gt;&lt;br /&gt;SQL&gt; &lt;span style="font-weight:bold;"&gt;EXEC DBMS_REPCAT.CREATE_MASTER_REPOBJECT('HR', 'BLOB_TEST', 'TABLE', GNAME=&gt;'REP2');&lt;br /&gt;EXEC DBMS_REPCAT.CREATE_MASTER_REPOBJECT('HR', 'DEPARTMENTS', 'TABLE', GNAME=&gt;'REP2');&lt;br /&gt;EXEC DBMS_REPCAT.CREATE_MASTER_REPOBJECT('HR', 'EMPLOYEES', 'TABLE', GNAME=&gt;'REP2');&lt;br /&gt;EXEC DBMS_REPCAT.CREATE_MASTER_REPOBJECT('HR', 'JOBS', 'TABLE', GNAME=&gt;'REP2');&lt;br /&gt;EXEC DBMS_REPCAT.CREATE_MASTER_REPOBJECT('HR', 'JOB_HISTORY', 'TABLE', GNAME=&gt;'REP2');&lt;br /&gt;EXEC DBMS_REPCAT.CREATE_MASTER_REPOBJECT('HR', 'LOCATIONS', 'TABLE', GNAME=&gt;'REP2');&lt;br /&gt;EXEC DBMS_REPCAT.CREATE_MASTER_REPOBJECT('HR', 'REGIONS', 'TABLE', GNAME=&gt;'REP2');&lt;/span&gt;&lt;br /&gt;PL/SQL procedure successfully completed.&lt;br /&gt;SQL&gt;&lt;br /&gt;PL/SQL procedure successfully completed.&lt;br /&gt;SQL&gt;&lt;br /&gt;PL/SQL procedure successfully completed.&lt;br /&gt;SQL&gt;&lt;br /&gt;PL/SQL procedure successfully completed.&lt;br /&gt;SQL&gt;&lt;br /&gt;PL/SQL procedure successfully completed.&lt;br /&gt;SQL&gt;&lt;br /&gt;PL/SQL procedure successfully completed.&lt;br /&gt;SQL&gt;&lt;br /&gt;PL/SQL procedure successfully completed.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Step 7:&lt;/span&gt;&lt;br /&gt;Define the other master database in the replication setup at the master definition database i.e. add ORCL database as the other master in the replication.&lt;br /&gt;Need to be executed only at the master definition DB (test). Run this as REPADMIN.&lt;br /&gt;&lt;br /&gt;SQL&gt; &lt;span style="font-weight:bold;"&gt;EXEC DBMS_REPCAT.ADD_MASTER_DATABASE (GNAME=&gt; 'REP2', MASTER=&gt;'ORCL.ORACLE.COM',USE_EXISTING_OBJECTS =&gt; TRUE,COPY_ROWS=&gt; FALSE, PROPAGATION_MODE=&gt; 'ASYNCHRONOUS');&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;PL/SQL procedure successfully completed.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Step 8:&lt;/span&gt;&lt;br /&gt;Setup replication support for the tables marked for replication in the Step 6.&lt;br /&gt;Need to be executed only at the master definition DB (test). Run this as REPADMIN.&lt;br /&gt;&lt;br /&gt;SQL&gt; &lt;span style="font-weight:bold;"&gt;show user&lt;/span&gt;&lt;br /&gt;USER is "REPADMIN"&lt;br /&gt;SQL&gt; &lt;span style="font-weight:bold;"&gt;exec dbms_repcat.generate_replication_support('HR','BLOB_TEST','TABLE');&lt;br /&gt;exec dbms_repcat.generate_replication_support('HR','DEPARTMENTS','TABLE');&lt;br /&gt;exec dbms_repcat.generate_replication_support('HR','EMPLOYEES','TABLE');&lt;br /&gt;exec dbms_repcat.generate_replication_support('HR','JOBS','TABLE');&lt;br /&gt;exec dbms_repcat.generate_replication_support('HR','JOB_HISTORY','TABLE');&lt;br /&gt;exec dbms_repcat.generate_replication_support('HR','LOCATIONS','TABLE');&lt;br /&gt;exec dbms_repcat.generate_replication_support('HR','REGIONS','TABLE');&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;PL/SQL procedure successfully completed.&lt;br /&gt;SQL&gt;&lt;br /&gt;PL/SQL procedure successfully completed.&lt;br /&gt;SQL&gt;&lt;br /&gt;PL/SQL procedure successfully completed.&lt;br /&gt;SQL&gt;&lt;br /&gt;PL/SQL procedure successfully completed.&lt;br /&gt;SQL&gt;&lt;br /&gt;PL/SQL procedure successfully completed.&lt;br /&gt;SQL&gt;&lt;br /&gt;PL/SQL procedure successfully completed.&lt;br /&gt;SQL&gt;&lt;br /&gt;PL/SQL procedure successfully completed.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;Step 9:&lt;/span&gt;&lt;br /&gt;Enable replication between these databases. &lt;br /&gt;Need to be executed only at the master definition DB (test). Run this as REPADMIN.&lt;br /&gt;&lt;br /&gt;SQL&gt; &lt;span style="font-weight:bold;"&gt;EXEC DBMS_REPCAT.RESUME_MASTER_ACTIVITY('REP2');&lt;/span&gt;&lt;br /&gt;PL/SQL procedure successfully completed.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Step 10:&lt;/span&gt;&lt;br /&gt;Start/create the data push job from all the master databases.&lt;br /&gt;Define the time delay in the replication, what oracle needs to do when it encounters an error, do you need trace files for error, and the degree of parallelism.&lt;br /&gt;&lt;br /&gt;(Master 1)&lt;br /&gt;SQL&gt; &lt;span style="font-weight:bold;"&gt;EXEC DBMS_DEFER_SYS.SCHEDULE_PUSH(DESTINATION =&gt;'ORCL.ORACLE.COM', INTERVAL=&gt;'SYSDATE + 1/60/24',NEXT_DATE=&gt; SYSDATE,STOP_ON_ERROR =&gt; FALSE, DELAY_SECONDS =&gt; 0, WRITE_TRACE=&gt;TRUE, PARALLELISM =&gt; 2);&lt;/span&gt;&lt;br /&gt;PL/SQL procedure successfully completed.&lt;br /&gt;&lt;br /&gt;(Master 2)&lt;br /&gt;SQL&gt; &lt;span style="font-weight:bold;"&gt;EXEC DBMS_DEFER_SYS.SCHEDULE_PUSH(DESTINATION =&gt;'TEST.ORACLE.COM', INTERVAL=&gt;'SYSDATE + 1/60/24',NEXT_DATE=&gt; SYSDATE,STOP_ON_ERROR =&gt; FALSE, DELAY_SECONDS =&gt; 0, WRITE_TRACE=&gt;TRUE, PARALLELISM =&gt; 2);&lt;/span&gt;&lt;br /&gt;PL/SQL procedure successfully completed.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Step 11:&lt;/span&gt;&lt;br /&gt;Define purge job, this purges the data\transaction which has been replicated. Need to run on all the masters.&lt;br /&gt;&lt;br /&gt;SQL&gt; &lt;span style="font-weight:bold;"&gt;EXEC DBMS_DEFER_SYS.SCHEDULE_PURGE(NEXT_DATE =&gt; SYSDATE,INTERVAL=&gt;'SYSDATE + 1/24',DELAY_SECONDS=&gt;0, ROLLBACK_SEGMENT =&gt; ''); &lt;/span&gt;&lt;br /&gt;PL/SQL procedure successfully completed.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;Step 12:&lt;/span&gt;&lt;br /&gt;Do checks:&lt;br /&gt;Check for DBMS_JOBS in both masters:&lt;br /&gt;SQL&gt; @jobs&lt;br /&gt;Job         User       Schema     Last Date        Next Date        B    F What&lt;br /&gt;----------- ---------- ---------- ---------------- ---------------- ---- - -----------------------------------------------------------------&lt;br /&gt;0: 66       REPADMIN   REPADMIN   15.04.2009 09:18 15.04.2009 09:28 N    0 dbms_repcat.do_deferred_repcat_admin('"REP2"', FALSE);&lt;br /&gt;0: 67       REPADMIN   REPADMIN   15.04.2009 09:25 15.04.2009 09:26 N    0 declare rc binary_integer; begin rc := sys.dbms_defer_sys.pu&lt;br /&gt;0: 68       REPADMIN   REPADMIN   15.04.2009 09:25 15.04.2009 09:26 N    0 declare rc binary_integer; begin rc := sys.dbms_defer_sys.pu&lt;br /&gt;&lt;br /&gt;Queries that can we used to check for the replication setup:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;SELECT SNAME,ONAME,STATUS,GENERATION_STATUS FROM ALL_REPOBJECT; --&gt; Status and other details of the replicating objects.&lt;br /&gt;COL SOURCE FORMAT A10&lt;br /&gt;COL SNAME FORMAT A10&lt;br /&gt;COL ONAME FORMAT A10&lt;br /&gt;SELECT ID,SOURCE,STATUS,TIMESTAMP,SNAME,ONAME,ERRNUM,MESSAGE FROM DBA_REPCATLOG; --&gt; Status, any error details of the replication objects.&lt;br /&gt;SELECT * FROM DBA_REPSITES; --&gt; Master and Slaves site details.&lt;br /&gt;SELECT * FROM DBA_REPSCHEMA; --&gt; Schema's being replicated.&lt;br /&gt;SELECT * FROM DBA_REPGROUP; --&gt; The details of the replication groups.&lt;br /&gt;SELECT * FROM DBA_REPGENERATED;&lt;br /&gt;SELECT * FROM DBA_REPDDL; --&gt; DDL of the changes that need to be sent to the other masters and slaves.&lt;br /&gt;SELECT * FROM DBA_REPCONFLICT; --&gt; Details of any replication conflicts.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Test to see if the replication is working fine:&lt;br /&gt;(Master 1)&lt;br /&gt;SQL&gt; SELECT * FROM REGIONS;&lt;br /&gt;   REGION_ID REGION_NAME&lt;br /&gt;------------ -------------------------&lt;br /&gt;           5 Antartica&lt;br /&gt;           6 Artic&lt;br /&gt;           1 Europe&lt;br /&gt;           2 Americas&lt;br /&gt;           3 Asia&lt;br /&gt;           4 Middle East and Africa&lt;br /&gt;&lt;br /&gt;SQL&gt; INSERT INTO REGIONS VALUES (7,'CHINA');&lt;br /&gt;1 row created.&lt;br /&gt;&lt;br /&gt;SQL&gt; commit;&lt;br /&gt;Commit complete.&lt;br /&gt;&lt;br /&gt;SQL&gt; SELECT * FROM REGIONS@ORCL.ORACLE.COM;&lt;br /&gt;   REGION_ID REGION_NAME&lt;br /&gt;------------ -------------------------&lt;br /&gt;           5 Antartica&lt;br /&gt;           6 Artic&lt;br /&gt;           7 China&lt;br /&gt;           1 Europe&lt;br /&gt;           2 Americas&lt;br /&gt;           3 Asia&lt;br /&gt;           4 Middle East and Africa&lt;br /&gt;&lt;br /&gt;You can see that the replicaiton works fine from one master to other. Lets try the other way around also.&lt;br /&gt;(Master 2)&lt;br /&gt;SQL&gt; SELECT * FROM REGIONS;&lt;br /&gt; REGION_ID REGION_NAME&lt;br /&gt;---------- -------------------------&lt;br /&gt;         5 Antartica&lt;br /&gt;         6 Artic&lt;br /&gt;         7 China&lt;br /&gt;         1 Europe&lt;br /&gt;         2 Americas&lt;br /&gt;         3 Asia&lt;br /&gt;         4 Middle East and Africa&lt;br /&gt;7 rows selected.&lt;br /&gt;&lt;br /&gt;SQL&gt; INSERT INTO REGIONS VALUES (8,'US');&lt;br /&gt;1 row created.&lt;br /&gt;&lt;br /&gt;SQL&gt; commit;&lt;br /&gt;Commit complete.&lt;br /&gt;&lt;br /&gt;SQL&gt; SELECT * FROM REGIONS@TEST.ORACLE.COM;&lt;br /&gt; REGION_ID REGION_NAME&lt;br /&gt;---------- -------------------------&lt;br /&gt;         5 Antartica&lt;br /&gt;         6 Artic&lt;br /&gt;         7 China&lt;br /&gt;         8 US&lt;br /&gt;         1 Europe&lt;br /&gt;         2 Americas&lt;br /&gt;         3 Asia&lt;br /&gt;         4 Middle East and Africa&lt;br /&gt;8 rows selected.&lt;br /&gt;&lt;br /&gt;While trying to setup this replication setup, I came across some other weblinks also. Please refer to them too as they have a lot of great information.&lt;br /&gt;&lt;a href='http://www.akadia.com/services/ora_replication_guide.html#Example%20for%20a%20Multimaster%20Site'&gt;Setup Multi-master Replication with Oracle&lt;/a&gt;&lt;br&gt;&lt;br /&gt;&lt;a href='http://www.adp-gmbh.ch/ora/admin/replication/multi_master_replication.html'&gt;Multimaster replication in Oracle&lt;/a&gt;&lt;br&gt;&lt;br /&gt;&lt;a href='http://www.orafaq.com/wiki/Advanced_Replication_FAQ'&gt;Advanced Replication FAQ&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4092304359380397372-1174654618626881980?l=apunhiran.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apunhiran.blogspot.com/feeds/1174654618626881980/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4092304359380397372&amp;postID=1174654618626881980' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/1174654618626881980'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/1174654618626881980'/><link rel='alternate' type='text/html' href='http://apunhiran.blogspot.com/2009/04/how-to-setup-multi-masteradvanced.html' title='How TO: Setup Multi-Master\Advanced Replication with Oracle 10g, 11g'/><author><name>Apun Hiran</name><uri>http://www.blogger.com/profile/04745021360458270341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_viek7Sw5RrM/R_yAZoPGqYI/AAAAAAAAAIM/eS3VxJ7S2Pc/S220/IMG_0042.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4092304359380397372.post-8354798875075296361</id><published>2009-04-01T09:33:00.003+05:30</published><updated>2009-04-01T09:40:58.435+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='split brain'/><category scheme='http://www.blogger.com/atom/ns#' term='Voting Disk'/><category scheme='http://www.blogger.com/atom/ns#' term='ORA-29740'/><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><category scheme='http://www.blogger.com/atom/ns#' term='RAC'/><category scheme='http://www.blogger.com/atom/ns#' term='syndrome'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><category scheme='http://www.blogger.com/atom/ns#' term='node eviction'/><title type='text'>What is Voting Disk &amp; Split Brain Syndrome in RAC</title><content type='html'>&lt;span style="font-weight: bold; font-family: verdana;"&gt;Voting Disk&lt;/span&gt;&lt;br&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: verdana;"&gt;Oracle Clusterware uses the voting disk to determine which instances are members of a cluster. The voting disk must reside on a shared disk. Basically all nodes in the RAC cluster register their heart-beat information on thes voting disks. The number decides the number of active nodes in the RAC cluster. These are also used for checking the availability of instances in RAC and remove the unavailable nodes out of the cluster. It helps in preventing split-brain condition and keeps database information intact. The split brain syndrome and its affects and how it has been managed in oracle is mentioned below.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;For high availability, Oracle recommends that you have a minimum of three voting disks. If you configure a single voting disk, then you should use external mirroring to provide redundancy. You can have up to 32 voting disks in your cluster. What I could understand about the odd value of the number of voting disks is that a noe should see maximun number of voting disk to continue to function, so with 2, if it can see only 1, its not the maximum value but a half value of voting disk. I am still trying to search more on this concept.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-family: verdana;"&gt;Split Brain Syndrome:&lt;/span&gt;&lt;br&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: verdana;"&gt;In a Oracle RAC environment all the instances/servers communicate with each other using high-speed interconnects on the private network. This private network interface or interconnect are redundant and are only used for inter-instance oracle data block transfers. Now talking about split-brain concept with respect to oracle rac systems, it occurs when the instance members in a RAC fail to ping/connect to each other via this private interconnect, but the servers are all pysically up and running and the database instance on each of these servers is also running. These individual nodes are running fine and can conceptually accept user connections and work independently. So basically due to lack of commincation the instance thinks that the other instance that it is not able to connect is down and it needs to do something about the situation. The problem is if we leave these instance running, the sane block might get read, updated in these individual instances and there would be data integrity issue, as the blocks changed in one instance, will not be locked and could be over-written by another instance. Oracle has efficiently implemented check for the split brain syndrome. &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-family: verdana;"&gt;What does RAC do incase node becomes inactive:&lt;/span&gt;&lt;br&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: verdana;"&gt;In RAC if any node becomes inactive, or if other nodes are unable to ping/connect to a node in the RAC, then the node which first detects that one of the node is not accessible, it will evict that node from the RAC group. e.g. there are 4 nodes in a rac instance, and node 3 becomes unavailable, and node 1 tries to connect to node 3 and finds it not responding, then node 1 will evict node 3 out of the RAC groups and will leave only Node1, Node2 &amp;amp; Node4 in the RAC group to continue functioning.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;The split brain concepts can become more complicated in large RAC setups. For example there are 10 RAC nodes in a cluster. And say 4 nodes are not able to communicate with the other 6. So there are 2 groups formed in this 10 node RAC cluster ( one group of 4 nodes and other of 6 nodes). Now the nodes will quickly try to affirm their membership by locking controlfile, then the node that lock the controlfile will try to check the votes of the other nodes. The group with the most number of active nodes gets the preference and the others are evicted. Moreover, I have seen this node eviction issue with only 1 node getting evicted and the rest function fine, so I cannot really testify that if thats how it work by experience, but this is the theory behind it.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;When we see that the node is evicted, usually oracle rac will reboot that node and try to do a cluster reconfiguration to include back the evicted node.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;You will see oracle error: ORA-29740, when there is a node eviction in RAC. There are many reasons for a node eviction like heart beat not received by the controlfile, unable to communicate with the clusterware etc.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;A good metalink note on understanding node eviction and how to address is &lt;/span&gt;&lt;a style="font-family: verdana;" href="https://metalink2.oracle.com/metalink/plsql/f?p=130:14:5126893690425370120::::p14_database_id,p14_docid,p14_show_header,p14_show_help,p14_black_frame,p14_font:NOT,219361.1,1,1,1,helvetica"&gt;Note ID: 219361.1&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;The CSS (Cluster Synchronization Service) daemon in the clusterware maintains the heart beat to the voting disk.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4092304359380397372-8354798875075296361?l=apunhiran.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apunhiran.blogspot.com/feeds/8354798875075296361/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4092304359380397372&amp;postID=8354798875075296361' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/8354798875075296361'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/8354798875075296361'/><link rel='alternate' type='text/html' href='http://apunhiran.blogspot.com/2009/04/what-is-voting-disk-split-brain.html' title='What is Voting Disk &amp; Split Brain Syndrome in RAC'/><author><name>Apun Hiran</name><uri>http://www.blogger.com/profile/04745021360458270341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_viek7Sw5RrM/R_yAZoPGqYI/AAAAAAAAAIM/eS3VxJ7S2Pc/S220/IMG_0042.JPG'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4092304359380397372.post-4994948652360435005</id><published>2009-03-27T06:48:00.006+05:30</published><updated>2009-03-30T07:39:51.502+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='apunhiran'/><category scheme='http://www.blogger.com/atom/ns#' term='PASSWORD_REUSE_TIME'/><category scheme='http://www.blogger.com/atom/ns#' term='PASSWORD_REUSE_MAX'/><category scheme='http://www.blogger.com/atom/ns#' term='PASSWORD_LIFE_TIME'/><category scheme='http://www.blogger.com/atom/ns#' term='profile'/><category scheme='http://www.blogger.com/atom/ns#' term='password'/><category scheme='http://www.blogger.com/atom/ns#' term='hiran'/><category scheme='http://www.blogger.com/atom/ns#' term='complex'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><category scheme='http://www.blogger.com/atom/ns#' term='verify_function'/><category scheme='http://www.blogger.com/atom/ns#' term='apun'/><category scheme='http://www.blogger.com/atom/ns#' term='11g'/><category scheme='http://www.blogger.com/atom/ns#' term='verify_function_11G'/><category scheme='http://www.blogger.com/atom/ns#' term='10g'/><category scheme='http://www.blogger.com/atom/ns#' term='UTLPWDMG.sql'/><title type='text'>How To: Enable Password Security/Complexity Check</title><content type='html'>We need to make the password of Oracle user more robust and make sure that the password are complex enough so that the chance of breaking them is minimized.&lt;br /&gt;&lt;br /&gt;Oracle provides a script called &lt;span style="font-weight: bold;"&gt;UTLPWDMG.sql&lt;/span&gt; located in $ORACLE_HOME/rdbms/admin which can be used to manage the complexity of database password.&lt;br /&gt;&lt;br /&gt;This script basically creates to functions verify_function_11G (new in 11g) and verify_function (older version).&lt;br /&gt;&lt;br /&gt;Lets see what verify_function_11G function does, its input parameters are username, new password and old password.&lt;br /&gt;&lt;br /&gt;Checks that this scripts enforces on passwords:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Makes sure that the length of the password is more than 8.&lt;/li&gt;&lt;li&gt;Makes sure that the username and password are not same e.g. username is SCOTT and the password is SCOTT. This check involves that the password can be in any case (UPPER CASE/LOWER CASE/Combination of Both) of the username, it will still reject the password. It basically compares lower(username)=lower(new_password).&lt;/li&gt;&lt;li&gt;Makes sure that the password is not the reverse of the username. Checks for the case also, same as above.&lt;/li&gt;&lt;li&gt;Makes sure that the password is not the same as the database name.&lt;/li&gt;&lt;li&gt;Checks for the simplicity of the password, but I think this check is not so robust, as oracle just checks it against some pre-defined keywords: ('welcome1', 'database1', 'account1', 'user1234', 'password1', 'oracle123', 'computer1', 'abcdefg1', 'change_on_install'). Can't complain also, as its not really possible to compare it with the dictionary. These are some very common 8 letter passwords, people use.&lt;/li&gt;&lt;li&gt;Makes sure that the password is not "oracle". This is a seperate check in the function, it could have been part of the above check.&lt;/li&gt;&lt;li&gt;Makes sure that the combination is alpha numeric, basically atleast 1 character and 1 number.&lt;/li&gt;&lt;li&gt;Makes sure that the new password differs from the new password by atleast 3 characters.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;I believe these are great checks to make sure that the new password are complex enough. we can also add more check if required, like add more keywords we dont want as password, check for upper case and lower case characters, and enforce that the password should have Upper case characters, make sure that teh password also has special characters like !,@,#,$,% etc etc.&lt;br /&gt;&lt;br /&gt;After this function get compiled, the script alters the default profile to start using this function:&lt;br /&gt;ALTER PROFILE DEFAULT LIMIT&lt;br /&gt;PASSWORD_LIFE_TIME 180&lt;br /&gt;PASSWORD_GRACE_TIME 7&lt;br /&gt;PASSWORD_REUSE_TIME UNLIMITED&lt;br /&gt;PASSWORD_REUSE_MAX UNLIMITED&lt;br /&gt;FAILED_LOGIN_ATTEMPTS 10&lt;br /&gt;PASSWORD_LOCK_TIME 1&lt;br /&gt;PASSWORD_VERIFY_FUNCTION verify_function_11G;&lt;br /&gt;&lt;br /&gt;PASSWORD_LIFE_TIME 180 --&gt; Days after which you need to change password.&lt;br /&gt;PASSWORD_GRACE_TIME 7 --&gt; The time in days allowed after password expire, grace time.&lt;br /&gt;PASSWORD_REUSE_TIME UNLIMITED --&gt; This parameter makes sure that you cannot use the same password again.&lt;br /&gt;PASSWORD_REUSE_MAX UNLIMITED --&gt; This parameter makes sure that you cannot use the same password again.&lt;br /&gt;FAILED_LOGIN_ATTEMPTS 10 --&gt; Allowed password retries in case of entering wrong password.&lt;br /&gt;PASSWORD_LOCK_TIME 1 --&gt; Lock the user for 1 Day if it makes 10 failed password attempts.&lt;br /&gt;PASSWORD_VERIFY_FUNCTION verify_function_11G; --&gt; Set the password managment function.&lt;br /&gt;&lt;br /&gt;Now talking about verify_function, or the older password management function provided by oracle:&lt;br /&gt;&lt;br /&gt;Checks that this scripts enforces on passwords:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Makes sure that the username and password are not same e.g. username is SCOTT and the password is SCOTT. This check involves that the password can be in any case (UPPER CASE/LOWER CASE/Combination of Both) of the username, it will still reject the password. It basically compares lower(username)=lower(new_password).&lt;/li&gt;&lt;li&gt;Makes sure that the length of the password is more than 4.&lt;/li&gt;&lt;li&gt;Checks for the simplicity of the password, oracle just checks it against some pre-defined keywords:('welcome', 'database', 'account', 'user', 'password', 'oracle', 'computer', 'abcd')&lt;/li&gt;&lt;li&gt;Makes sure that the combination is alpha numeric with special character, basically atleast 1 character, 1 number and 1 special character. Special characters allowed: '!"#$%&amp;amp;()``*+,-/:;&lt;=&gt;?_'&lt;/li&gt;&lt;li&gt;Makes sure that the new password differs from the new password by atleast 3 characters.&lt;/li&gt;&lt;/ul&gt;ALTER PROFILE DEFAULT LIMIT&lt;br /&gt;PASSWORD_LIFE_TIME 60&lt;br /&gt;PASSWORD_GRACE_TIME 10&lt;br /&gt;PASSWORD_REUSE_TIME 60&lt;br /&gt;PASSWORD_REUSE_MAX 10&lt;br /&gt;FAILED_LOGIN_ATTEMPTS 3&lt;br /&gt;PASSWORD_LOCK_TIME 1/1440&lt;br /&gt;PASSWORD_VERIFY_FUNCTION verify_function;&lt;br /&gt;&lt;br /&gt;PASSWORD_REUSE_TIME 60 --&gt; Can you the same password after 60 days.&lt;br /&gt;PASSWORD_REUSE_MAX 10 --&gt; Can use the same password after using 10 different passwords after 60 days.&lt;br /&gt;&lt;br /&gt;After running the above script the default profile is set to verify_function_11G. The alter profile with verify_function is commented.&lt;br /&gt;But incase you want to revert to verify_function, you can do an alter profile as above.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4092304359380397372-4994948652360435005?l=apunhiran.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apunhiran.blogspot.com/feeds/4994948652360435005/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4092304359380397372&amp;postID=4994948652360435005' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/4994948652360435005'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/4994948652360435005'/><link rel='alternate' type='text/html' href='http://apunhiran.blogspot.com/2009/03/how-to-enable-password.html' title='How To: Enable Password Security/Complexity Check'/><author><name>Apun Hiran</name><uri>http://www.blogger.com/profile/04745021360458270341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_viek7Sw5RrM/R_yAZoPGqYI/AAAAAAAAAIM/eS3VxJ7S2Pc/S220/IMG_0042.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4092304359380397372.post-1648545264535885643</id><published>2009-03-24T12:17:00.004+05:30</published><updated>2009-03-30T07:39:13.823+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='apunhiran'/><category scheme='http://www.blogger.com/atom/ns#' term='hiran'/><category scheme='http://www.blogger.com/atom/ns#' term='rman'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='DATABASE MIGRATION'/><category scheme='http://www.blogger.com/atom/ns#' term='V$TRANSPORTABLE_PLATFORM'/><category scheme='http://www.blogger.com/atom/ns#' term='apun'/><category scheme='http://www.blogger.com/atom/ns#' term='CONVERT DATABASE'/><category scheme='http://www.blogger.com/atom/ns#' term='11g'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='MANAGER'/><category scheme='http://www.blogger.com/atom/ns#' term='RECOVERY'/><category scheme='http://www.blogger.com/atom/ns#' term='TRANSPORTABLE DATABASE'/><category scheme='http://www.blogger.com/atom/ns#' term='TRANSPORTABLE'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>How to: Move/Convert Database from Linux to Windows</title><content type='html'>There are two basic methods to achieve this.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Method 1&lt;br /&gt;========&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Steps 1:&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Check the ENDIAN format of the platforms. Both Windows and linux should have the same format.&lt;br /&gt;In our case we are moving from Linux 32-bit to Windows 32-bit:&lt;br /&gt;col PLATFORM_NAME format a40&lt;br /&gt;select PLATFORM_NAME, ENDIAN_FORMAT from V$TRANSPORTABLE_PLATFORM;&lt;br /&gt;PLATFORM_NAME                            ENDIAN_FORMAT&lt;br /&gt;---------------------------------------- --------------&lt;br /&gt;Microsoft Windows IA (32-bit)            Little&lt;br /&gt;Linux IA (32-bit)                        Little&lt;br /&gt;Linux IA (64-bit)                        Little&lt;br /&gt;Microsoft Windows IA (64-bit)            Little&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 2:&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Check if the database can be transported. We need to use DBMS_TDB.CHECK_DB, to check if our database can be&lt;br /&gt;transported to the target OS, in the way it is currently.&lt;br /&gt;Need to start the database in READ ONLY mode:&lt;br /&gt;SQL&gt; shutdown immediate;&lt;br /&gt;Database closed.&lt;br /&gt;Database dismounted.&lt;br /&gt;ORACLE instance shut down.&lt;br /&gt;SQL&gt; startup mount;&lt;br /&gt;ORA-32004: obsolete and/or deprecated parameter(s) specified&lt;br /&gt;ORACLE instance started.&lt;br /&gt;&lt;br /&gt;Total System Global Area  422670336 bytes&lt;br /&gt;Fixed Size                  1300352 bytes&lt;br /&gt;Variable Size             310380672 bytes&lt;br /&gt;Database Buffers          104857600 bytes&lt;br /&gt;Redo Buffers                6131712 bytes&lt;br /&gt;Database mounted.&lt;br /&gt;SQL&gt; alter database open read only;&lt;br /&gt;&lt;br /&gt;Database altered.&lt;br /&gt;SQL&gt; set serveroutput on&lt;br /&gt;SQL&gt; declare&lt;br /&gt; 2  check_db boolean;&lt;br /&gt; 3  begin&lt;br /&gt; 4  check_db:=dbms_tdb.check_db('Microsoft Windows IA (32-bit)');&lt;br /&gt; 5  end;&lt;br /&gt; 6  /&lt;br /&gt;&lt;br /&gt;PL/SQL procedure successfully completed.&lt;br /&gt;&lt;br /&gt;As we see no errors or message, so our database is ready to be transported to Windows 32-bit.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 3:&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Check if there are any external files associated with the database, they will not be transported using RMAN.&lt;br /&gt;SQL&gt; set serveroutput on&lt;br /&gt;SQL&gt; declare&lt;br /&gt; 2  chk boolean;&lt;br /&gt; 3  begin&lt;br /&gt; 4  chk:=dbms_tdb.check_external;&lt;br /&gt; 5  end;&lt;br /&gt; 6  /&lt;br /&gt;The following external tables exist in the database:&lt;br /&gt;SH.SALES_TRANSACTIONS_EXT&lt;br /&gt;The following directories exist in the database:&lt;br /&gt;SYS.FOR_HR, SYS.BLOB_TEST, SYS.IDR_DIR, SYS.SUBDIR, SYS.XMLDIR, SYS.MEDIA_DIR,&lt;br /&gt;SYS.LOG_FILE_DIR, SYS.DATA_FILE_DIR, SYS.AUDIT_DIR, SYS.DATA_PUMP_DIR,&lt;br /&gt;SYS.ORACLE_OCM_CONFIG_DIR&lt;br /&gt;The following BFILEs exist in the database:&lt;br /&gt;PM.PRINT_MEDIA&lt;br /&gt;&lt;br /&gt;PL/SQL procedure successfully completed.&lt;br /&gt;The above directories exists in the database, we will need to recreate them with new locations once we complete the move.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 4:&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Now we need to use RMAN convert database command to convert the source database to windows 32-bit.&lt;br /&gt;The source database must be in read only mode.&lt;br /&gt;&lt;br /&gt;RMAN&gt; convert database new database 'ORCL'&lt;br /&gt;2&gt; transport script '/home/oracle/transport1.sql'&lt;br /&gt;3&gt; to platform 'Microsoft Windows IA (32-bit)'&lt;br /&gt;4&gt; db_file_name_convert '/home/oracle/product/oradata/test' '/home/oracle/con_dbf';&lt;br /&gt;&lt;br /&gt;Starting conversion at source at 23-MAR-09&lt;br /&gt;using channel ORA_DISK_1&lt;br /&gt;&lt;br /&gt;External table SH.SALES_TRANSACTIONS_EXT found in the database&lt;br /&gt;&lt;br /&gt;Directory SYS.FOR_HR found in the database&lt;br /&gt;Directory SYS.BLOB_TEST found in the database&lt;br /&gt;Directory SYS.IDR_DIR found in the database&lt;br /&gt;Directory SYS.SUBDIR found in the database&lt;br /&gt;Directory SYS.XMLDIR found in the database&lt;br /&gt;Directory SYS.MEDIA_DIR found in the database&lt;br /&gt;Directory SYS.LOG_FILE_DIR found in the database&lt;br /&gt;Directory SYS.DATA_FILE_DIR found in the database&lt;br /&gt;Directory SYS.AUDIT_DIR found in the database&lt;br /&gt;Directory SYS.DATA_PUMP_DIR found in the database&lt;br /&gt;Directory SYS.ORACLE_OCM_CONFIG_DIR found in the database&lt;br /&gt;&lt;br /&gt;BFILE PM.PRINT_MEDIA found in the database&lt;br /&gt;&lt;br /&gt;User SYS with SYSDBA and SYSOPER privilege found in password file&lt;br /&gt;channel ORA_DISK_1: starting datafile conversion&lt;br /&gt;input datafile file number=00004 name=/home/oracle/product/oradata/test/users01.dbf&lt;br /&gt;converted datafile=/home/oracle/con_dbf/users01.dbf&lt;br /&gt;channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:05:21&lt;br /&gt;channel ORA_DISK_1: starting datafile conversion&lt;br /&gt;input datafile file number=00002 name=/home/oracle/product/oradata/test/sysaux01.dbf&lt;br /&gt;converted datafile=/home/oracle/con_dbf/sysaux01.dbf&lt;br /&gt;channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:00:55&lt;br /&gt;channel ORA_DISK_1: starting datafile conversion&lt;br /&gt;input datafile file number=00001 name=/home/oracle/product/oradata/test/system01.dbf&lt;br /&gt;converted datafile=/home/oracle/con_dbf/system01.dbf&lt;br /&gt;channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:00:45&lt;br /&gt;channel ORA_DISK_1: starting datafile conversion&lt;br /&gt;input datafile file number=00005 name=/home/oracle/product/oradata/test/example01.dbf&lt;br /&gt;converted datafile=/home/oracle/con_dbf/example01.dbf&lt;br /&gt;channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:00:07&lt;br /&gt;channel ORA_DISK_1: starting datafile conversion&lt;br /&gt;input datafile file number=00003 name=/home/oracle/product/oradata/test/undotbs01.dbf&lt;br /&gt;converted datafile=/home/oracle/con_dbf/undotbs01.dbf&lt;br /&gt;channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:00:07&lt;br /&gt;Edit init.ora file /home/oracle/product/11g/db/dbs/init_00kal9vi_1_0.ora. This PFILE will be used to create the database on the target platform&lt;br /&gt;Run SQL script /home/oracle/transport1.sql on the target platform to create database&lt;br /&gt;To recompile all PL/SQL modules, run utlirp.sql and utlrp.sql on the target platform&lt;br /&gt;To change the internal database identifier, use DBNEWID Utility&lt;br /&gt;Finished conversion at source at 23-MAR-09&lt;br /&gt;&lt;br /&gt;RMAN&gt;&lt;br /&gt;&lt;br /&gt;Below are our converted database files:&lt;br /&gt;&lt;br /&gt;oracle@oracle:~/con_dbf$ pwd&lt;br /&gt;/home/oracle/con_dbf&lt;br /&gt;oracle@oracle:~/con_dbf$ ls -lrt&lt;br /&gt;total 7267080&lt;br /&gt;-rw-r----- 1 oracle oracle 5608382464 2009-03-23 16:17 users01.dbf&lt;br /&gt;-rw-r----- 1 oracle oracle  882057216 2009-03-23 16:18 sysaux01.dbf&lt;br /&gt;-rw-r----- 1 oracle oracle  744497152 2009-03-23 16:19 system01.dbf&lt;br /&gt;-rw-r----- 1 oracle oracle  104865792 2009-03-23 16:20 example01.dbf&lt;br /&gt;-rw-r----- 1 oracle oracle   94380032 2009-03-23 16:20 undotbs01.dbf&lt;br /&gt;-rw-r--r-- 1 oracle oracle       1710 2009-03-23 17:01 init_00kal9vi_1_0.ora&lt;br /&gt;-rw-r--r-- 1 oracle oracle       2698 2009-03-23 17:01 transport1.sql&lt;br /&gt;Screen shot of the transport1.sql file:&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/UsgBBYXNAhppZtuFl9pZ5A?authkey=Gv1sRgCKL9yeGLxuqy_gE&amp;amp;feat=embedwebsite"&gt;&lt;img src="http://lh3.ggpht.com/_viek7Sw5RrM/SciDXcot-rI/AAAAAAAAAw8/HLwb9zW0SVw/s800/db_convert_1.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 5:&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;FTP the files to the windows server. I have used filezilla to copy the files to the windows server.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 6:&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Use oradim to create the service:&lt;br /&gt;C:\Documents and Settings\Administrator&gt;oradim -new -sid orcl -intpwd oracle -s&lt;br /&gt;artmode manual -pfile C:\oracle\11g\product\11.1.0\db_1\dbs\init_orcl.ora&lt;br /&gt;Instance created.&lt;br /&gt;&lt;br /&gt;Use the init file (init_00kal9vi_1_0.ora) to startup nomount the db on the windows machine:&lt;br /&gt;Make required changes to the paths in the init ora file.&lt;br /&gt;Screen shot of the init.ora file:&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/7Oi4-rXAZiW_-9YXi-4hQg?authkey=Gv1sRgCKL9yeGLxuqy_gE&amp;amp;feat=embedwebsite"&gt;&lt;img src="http://lh5.ggpht.com/_viek7Sw5RrM/SciDXetP-aI/AAAAAAAAAxE/vVcvp5XIjBk/s800/db_convert_2.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;C:\Documents and Settings\Administrator&gt;sqlplus sys as sysdba&lt;br /&gt;&lt;br /&gt;SQL*Plus: Release 11.1.0.6.0 - Production on Mon Mar 23 17:31:25 2009&lt;br /&gt;&lt;br /&gt;Copyright (c) 1982, 2007, Oracle.  All rights reserved.&lt;br /&gt;&lt;br /&gt;Enter password:&lt;br /&gt;Connected to an idle instance.&lt;br /&gt;&lt;br /&gt;SQL&gt; startup nomount;&lt;br /&gt;ORACLE instance started.&lt;br /&gt;&lt;br /&gt;Total System Global Area  422670336 bytes&lt;br /&gt;Fixed Size                  1333620 bytes&lt;br /&gt;Variable Size             310380172 bytes&lt;br /&gt;Database Buffers          104857600 bytes&lt;br /&gt;Redo Buffers                6098944 bytes&lt;br /&gt;SQL&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 7:&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Create the control file:&lt;br /&gt;SQL&gt; CREATE CONTROLFILE REUSE SET DATABASE "ORCL" RESETLOGS  ARCHIVELOG&lt;br /&gt; 2      MAXLOGFILES 16&lt;br /&gt; 3      MAXLOGMEMBERS 3&lt;br /&gt; 4      MAXDATAFILES 100&lt;br /&gt; 5      MAXINSTANCES 8&lt;br /&gt; 6      MAXLOGHISTORY 292&lt;br /&gt; 7  LOGFILE&lt;br /&gt; 8    GROUP 1 'C:\oracle\oradata\ORCL\log1.rdo'  SIZE 50M,&lt;br /&gt; 9    GROUP 2 'C:\oracle\oradata\ORCL\log2.rdo'  SIZE 50M,&lt;br /&gt;10    GROUP 3 'C:\oracle\oradata\ORCL\log3.rdo'  SIZE 50M&lt;br /&gt;11  DATAFILE&lt;br /&gt;12    'C:\oracle\oradata\ORCL\system01.dbf',&lt;br /&gt;13    'C:\oracle\oradata\ORCL\sysaux01.dbf',&lt;br /&gt;14    'C:\oracle\oradata\ORCL\undotbs01.dbf',&lt;br /&gt;15    'C:\oracle\oradata\ORCL\users01.dbf',&lt;br /&gt;16    'C:\oracle\oradata\ORCL\example01.dbf'&lt;br /&gt;17  CHARACTER SET AL32UTF8;&lt;br /&gt;&lt;br /&gt;Control file created.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 8:&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Open the database.&lt;br /&gt;SQL&gt; alter database open resetlogs;&lt;br /&gt;alter database open resetlogs&lt;br /&gt;*&lt;br /&gt;ERROR at line 1:&lt;br /&gt;ORA-00028: your session has been killed&lt;br /&gt;&lt;br /&gt;SQL&gt; select name from v$database;&lt;br /&gt;ERROR:&lt;br /&gt;ORA-03114: not connected to ORACLE&lt;br /&gt;&lt;br /&gt;Meanwhile and checked if the redo log files were created, Saw that they were created. Logged in again and:&lt;br /&gt;&lt;br /&gt;SQL&gt;  select name from v$database;&lt;br /&gt;NAME&lt;br /&gt;---------&lt;br /&gt;ORCL&lt;br /&gt;&lt;br /&gt;SQL&gt; select open_mode from v$database;&lt;br /&gt;OPEN_MODE&lt;br /&gt;----------&lt;br /&gt;MOUNTED&lt;br /&gt;&lt;br /&gt;SQL&gt; alter database open;&lt;br /&gt;&lt;br /&gt;Database altered.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 9:&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Add the tempfile.&lt;br /&gt;&lt;br /&gt;SQL&gt; ALTER TABLESPACE TEMP ADD TEMPFILE 'C:\oracle\oradata\ORCL\temp01.dbf' SIZE&lt;br /&gt;54525952  AUTOEXTEND ON NEXT 655360  MAXSIZE 32767M;&lt;br /&gt;&lt;br /&gt;Tablespace altered.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 10:&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Do a sanity check of the database.&lt;br /&gt;Run $ORACLE_HOME\rdbms\admin\utlrp.sql&lt;br /&gt;&lt;br /&gt;SQL&gt; @utlrp&lt;br /&gt;&lt;br /&gt;TIMESTAMP&lt;br /&gt;--------------------------------------------------------------------------------&lt;br /&gt;COMP_TIMESTAMP UTLRP_BGN  2009-03-24 14:43:54&lt;br /&gt;PL/SQL procedure successfully completed.&lt;br /&gt;TIMESTAMP&lt;br /&gt;-------------------------------------------------------------------------------&lt;br /&gt;COMP_TIMESTAMP UTLRP_END  2009-03-24 14:43:56&lt;br /&gt;PL/SQL procedure successfully completed.&lt;br /&gt;OBJECTS WITH ERRORS&lt;br /&gt;-------------------&lt;br /&gt;                 0&lt;br /&gt;ERRORS DURING RECOMPILATION&lt;br /&gt;---------------------------&lt;br /&gt;                         0&lt;br /&gt;PL/SQL procedure successfully completed.&lt;br /&gt;Invoking Ultra Search Install/Upgrade validation procedure VALIDATE_WK&lt;br /&gt;Ultra Search VALIDATE_WK done with no error&lt;br /&gt;PL/SQL procedure successfully completed.&lt;br /&gt;&lt;br /&gt;SQL&gt; select name, open_mode from v$database;&lt;br /&gt;&lt;br /&gt;NAME      OPEN_MODE&lt;br /&gt;--------- ----------&lt;br /&gt;ORCL      READ WRITE&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Database moved from linux to windows machine!!!!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Method 2&lt;br /&gt;========&lt;/span&gt;&lt;br /&gt;There another way to do the datafile conversion, we can convert the datafiles on the destination server also.&lt;br /&gt;The rman script changes a little in that case.&lt;br /&gt;RMAN&gt; convert database on target platform&lt;br /&gt;2&gt; convert script '/home/oracle/convert.sql'&lt;br /&gt;3&gt; transport script '/home/oracle/transport.sql'&lt;br /&gt;4&gt; new database 'orcl'&lt;br /&gt;5&gt; format '/home/oracle/%U_%d';&lt;br /&gt;&lt;br /&gt;The datafiles create by the above rman command should be copied to a temp directory on the destination server.&lt;br /&gt;This will create a transport script to create the database instance on the destination server.&lt;br /&gt;It will also create a rman script to convert the datafiles on the destination server.&lt;br /&gt;It will look like:&lt;br /&gt;run  {&lt;br /&gt;CONVERT DATAFILE 'C:\oracle\oradata\ORCL\SYSTEM.DBF'&lt;br /&gt;FROM PLATFORM 'Linux IA (32-bit)'&lt;br /&gt;FORMAT 'c:\temp\SYSTEM.DBF';&lt;br /&gt;    } ;&lt;br /&gt;In the above case the files copied from the linux server were kept in c:\temp and then they would be converted to&lt;br /&gt;C:\oracle\oradata\ORCL location.&lt;br /&gt;After the conversion, run the transport.sql script after making the required changes.&lt;br /&gt;After you have opened the database the rest of the steps are the same.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4092304359380397372-1648545264535885643?l=apunhiran.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apunhiran.blogspot.com/feeds/1648545264535885643/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4092304359380397372&amp;postID=1648545264535885643' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/1648545264535885643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/1648545264535885643'/><link rel='alternate' type='text/html' href='http://apunhiran.blogspot.com/2009/03/how-to-moveconvert-database-from-linux.html' title='How to: Move/Convert Database from Linux to Windows'/><author><name>Apun Hiran</name><uri>http://www.blogger.com/profile/04745021360458270341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_viek7Sw5RrM/R_yAZoPGqYI/AAAAAAAAAIM/eS3VxJ7S2Pc/S220/IMG_0042.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_viek7Sw5RrM/SciDXcot-rI/AAAAAAAAAw8/HLwb9zW0SVw/s72-c/db_convert_1.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4092304359380397372.post-5179287386693569226</id><published>2009-03-23T12:08:00.003+05:30</published><updated>2009-03-30T07:38:54.180+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='apunhiran'/><category scheme='http://www.blogger.com/atom/ns#' term='11g'/><category scheme='http://www.blogger.com/atom/ns#' term='installation'/><category scheme='http://www.blogger.com/atom/ns#' term='hiran'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><category scheme='http://www.blogger.com/atom/ns#' term='apun'/><title type='text'>How To: Install 11g DB on Windows</title><content type='html'>Screen Shots and Steps to Install 11g on Windows:&lt;br /&gt;1. Download the software from &lt;a href="http://www.oracle.com/technology/software/products/database/index.html"&gt;www.oracle.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2. Unzip the download and click on setup.exe.&lt;br /&gt;&lt;br /&gt;Screen 1:&lt;br /&gt;Select the basic installation of advanced. For our installation I am choosing advanced (Select Advanced and press next).&lt;br /&gt;&lt;table style="width: auto;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/FUuefSvPOR51RToWrOI9pQ?authkey=Gv1sRgCKL9yeGLxuqy_gE&amp;amp;feat=embedwebsite"&gt;&lt;img src="http://lh3.ggpht.com/_viek7Sw5RrM/Sccy1nm9YMI/AAAAAAAAAvQ/w5CfGvupGiI/s400/11g-win-1.jpg" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family: arial,sans-serif; font-size: 11px; text-align: right;"&gt;From &lt;a href="http://picasaweb.google.com/apunhiran/ApunSWeblog?authkey=Gv1sRgCKL9yeGLxuqy_gE&amp;amp;feat=embedwebsite"&gt;Apun's Weblog&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Screen 2:&lt;br /&gt;Select the installation type, we are installing Enterprise Edition (Press next):&lt;br /&gt;&lt;table style="width: auto;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/EqtbpaUf-oK9OU7Xz8nNWw?authkey=Gv1sRgCKL9yeGLxuqy_gE&amp;amp;feat=embedwebsite"&gt;&lt;img src="http://lh3.ggpht.com/_viek7Sw5RrM/Sccy2csO-LI/AAAAAAAAAvY/iR6tgzu8Rh8/s400/11g-win-2.jpg" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family: arial,sans-serif; font-size: 11px; text-align: right;"&gt;From &lt;a href="http://picasaweb.google.com/apunhiran/ApunSWeblog?authkey=Gv1sRgCKL9yeGLxuqy_gE&amp;amp;feat=embedwebsite"&gt;Apun's Weblog&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Screen 3:&lt;br /&gt;Set the installation location. It takes about 2.77 GB of disk space (Set the installation location and press next).&lt;br /&gt;&lt;table style="width: auto;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/1EhJgDTzdEeiOCSAD4b5FA?authkey=Gv1sRgCKL9yeGLxuqy_gE&amp;amp;feat=embedwebsite"&gt;&lt;img src="http://lh6.ggpht.com/_viek7Sw5RrM/Sccy26ebYCI/AAAAAAAAAvg/Rp986Ih5rk4/s400/11g-win-3.jpg" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family: arial,sans-serif; font-size: 11px; text-align: right;"&gt;From &lt;a href="http://picasaweb.google.com/apunhiran/ApunSWeblog?authkey=Gv1sRgCKL9yeGLxuqy_gE&amp;amp;feat=embedwebsite"&gt;Apun's Weblog&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Screen 4:&lt;br /&gt;Oracle does some product specific prerequisite check (press next, fix if there are any issues).&lt;br /&gt;&lt;table style="width: auto;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/cN2mhN95B2FYhW7G5-1UVA?authkey=Gv1sRgCKL9yeGLxuqy_gE&amp;amp;feat=embedwebsite"&gt;&lt;img src="http://lh4.ggpht.com/_viek7Sw5RrM/Sccy3pASq3I/AAAAAAAAAvo/Qp2HL5S4GUg/s400/11g-win-4.jpg" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family: arial,sans-serif; font-size: 11px; text-align: right;"&gt;From &lt;a href="http://picasaweb.google.com/apunhiran/ApunSWeblog?authkey=Gv1sRgCKL9yeGLxuqy_gE&amp;amp;feat=embedwebsite"&gt;Apun's Weblog&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Screen 5:&lt;br /&gt;Select the database options you would like/need to install. I have selected all the options(Press Select all and press next).&lt;br /&gt;&lt;table style="width: auto;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/EPcN3g3oA23rnrs-s-qBlg?authkey=Gv1sRgCKL9yeGLxuqy_gE&amp;amp;feat=embedwebsite"&gt;&lt;img src="http://lh4.ggpht.com/_viek7Sw5RrM/Sccy3-VhMHI/AAAAAAAAAvw/MOjrjXKgXwM/s400/11g-win-5.jpg" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family: arial,sans-serif; font-size: 11px; text-align: right;"&gt;From &lt;a href="http://picasaweb.google.com/apunhiran/ApunSWeblog?authkey=Gv1sRgCKL9yeGLxuqy_gE&amp;amp;feat=embedwebsite"&gt;Apun's Weblog&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Screen 6:&lt;br /&gt;Ask if you want to create a database or an asm instance. I will create DB and asm instance later(Select software install only and press next).&lt;br /&gt;&lt;table style="width: auto;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/M6Dd26b8bFP58gzfIstvrw?authkey=Gv1sRgCKL9yeGLxuqy_gE&amp;amp;feat=embedwebsite"&gt;&lt;img src="http://lh3.ggpht.com/_viek7Sw5RrM/Scc3dVmaiJI/AAAAAAAAAv8/moexrs_vb3A/s400/11g-win-6.jpg" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family: arial,sans-serif; font-size: 11px; text-align: right;"&gt;From &lt;a href="http://picasaweb.google.com/apunhiran/ApunSWeblog?authkey=Gv1sRgCKL9yeGLxuqy_gE&amp;amp;feat=embedwebsite"&gt;Apun's Weblog&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Screen 7:&lt;br /&gt;Information to connect to Oracle Configuration Manager. Requires information like the Oracle CSI number, metalink username etc (Press Next).&lt;br /&gt;&lt;table style="width: auto;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/r5uXxKa9gHgi-nWTu_AApQ?authkey=Gv1sRgCKL9yeGLxuqy_gE&amp;amp;feat=embedwebsite"&gt;&lt;img src="http://lh3.ggpht.com/_viek7Sw5RrM/Scc3eDu3tGI/AAAAAAAAAwE/25vkHiGvk8I/s400/11g-win-7.jpg" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family: arial,sans-serif; font-size: 11px; text-align: right;"&gt;From &lt;a href="http://picasaweb.google.com/apunhiran/ApunSWeblog?authkey=Gv1sRgCKL9yeGLxuqy_gE&amp;amp;feat=embedwebsite"&gt;Apun's Weblog&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Screen 8:&lt;br /&gt;Installation Summary Page (Press Install):&lt;br /&gt;&lt;table style="width: auto;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/PR9tpODP9eWKK_Ra3Lj6Sw?authkey=Gv1sRgCKL9yeGLxuqy_gE&amp;amp;feat=embedwebsite"&gt;&lt;img src="http://lh5.ggpht.com/_viek7Sw5RrM/Scc3ein3mlI/AAAAAAAAAwM/tyz_kqQNufM/s400/11g-win-8.jpg" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family: arial,sans-serif; font-size: 11px; text-align: right;"&gt;From &lt;a href="http://picasaweb.google.com/apunhiran/ApunSWeblog?authkey=Gv1sRgCKL9yeGLxuqy_gE&amp;amp;feat=embedwebsite"&gt;Apun's Weblog&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Screen 9:&lt;br /&gt;Installation progress.&lt;br /&gt;&lt;table style="width: auto;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/ixzyeZ2om99e7KfSEL6MoA?authkey=Gv1sRgCKL9yeGLxuqy_gE&amp;amp;feat=embedwebsite"&gt;&lt;img src="http://lh5.ggpht.com/_viek7Sw5RrM/Scc3e4O-KGI/AAAAAAAAAwU/uBjW1k-enRs/s400/11g-win-9.jpg" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family: arial,sans-serif; font-size: 11px; text-align: right;"&gt;From &lt;a href="http://picasaweb.google.com/apunhiran/ApunSWeblog?authkey=Gv1sRgCKL9yeGLxuqy_gE&amp;amp;feat=embedwebsite"&gt;Apun's Weblog&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Screen 10:&lt;br /&gt;End of successful install (Press Exit).&lt;br /&gt;&lt;table style="width: auto;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/fQ8Vz_LyxVmiMqvP8vD6rw?authkey=Gv1sRgCKL9yeGLxuqy_gE&amp;amp;feat=embedwebsite"&gt;&lt;img src="http://lh3.ggpht.com/_viek7Sw5RrM/Scc3fbyS0HI/AAAAAAAAAwc/GqN-FeelkAw/s400/11g-win-10.jpg" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family: arial,sans-serif; font-size: 11px; text-align: right;"&gt;From &lt;a href="http://picasaweb.google.com/apunhiran/ApunSWeblog?authkey=Gv1sRgCKL9yeGLxuqy_gE&amp;amp;feat=embedwebsite"&gt;Apun's Weblog&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4092304359380397372-5179287386693569226?l=apunhiran.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apunhiran.blogspot.com/feeds/5179287386693569226/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4092304359380397372&amp;postID=5179287386693569226' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/5179287386693569226'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/5179287386693569226'/><link rel='alternate' type='text/html' href='http://apunhiran.blogspot.com/2009/03/how-to-install-11g-db-on-windows.html' title='How To: Install 11g DB on Windows'/><author><name>Apun Hiran</name><uri>http://www.blogger.com/profile/04745021360458270341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_viek7Sw5RrM/R_yAZoPGqYI/AAAAAAAAAIM/eS3VxJ7S2Pc/S220/IMG_0042.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_viek7Sw5RrM/Sccy1nm9YMI/AAAAAAAAAvQ/w5CfGvupGiI/s72-c/11g-win-1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4092304359380397372.post-5622558093915478498</id><published>2009-03-20T12:22:00.003+05:30</published><updated>2009-03-30T07:38:31.772+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='archivelog'/><category scheme='http://www.blogger.com/atom/ns#' term='apunhiran'/><category scheme='http://www.blogger.com/atom/ns#' term='11g'/><category scheme='http://www.blogger.com/atom/ns#' term='archive log'/><category scheme='http://www.blogger.com/atom/ns#' term='mode'/><category scheme='http://www.blogger.com/atom/ns#' term='ORA-16179'/><category scheme='http://www.blogger.com/atom/ns#' term='log_archive_dest_1'/><category scheme='http://www.blogger.com/atom/ns#' term='hiran'/><category scheme='http://www.blogger.com/atom/ns#' term='enable'/><category scheme='http://www.blogger.com/atom/ns#' term='ORA-32017'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><category scheme='http://www.blogger.com/atom/ns#' term='apun'/><title type='text'>How to enable archivelog mode in Oracle 11g database</title><content type='html'>First lets check the current log mode:&lt;br /&gt;SQL*Plus: Release 11.1.0.6.0 - Production on Fri Mar 20 14:33:05 2009&lt;br /&gt;Copyright (c) 1982, 2007, Oracle.  All rights reserved.&lt;br /&gt;Connected to:&lt;br /&gt;Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production&lt;br /&gt;With the Partitioning, Oracle Label Security, OLAP, Data Mining,&lt;br /&gt;Oracle Database Vault and Real Application Testing options&lt;br /&gt;&lt;br /&gt;SQL&gt; archive log list&lt;br /&gt;Database log mode              No Archive Mode&lt;br /&gt;Automatic archival             Disabled&lt;br /&gt;Archive destination            USE_DB_RECOVERY_FILE_DEST&lt;br /&gt;Oldest online log sequence     165&lt;br /&gt;Current log sequence           167&lt;br /&gt;&lt;br /&gt;SQL&gt; select name, log_mode from v$database;&lt;br /&gt;&lt;br /&gt;NAME      LOG_MODE&lt;br /&gt;--------- ------------&lt;br /&gt;TEST      NOARCHIVELOG&lt;br /&gt;&lt;br /&gt;SQL&gt; show parameter spfile&lt;br /&gt;&lt;br /&gt;NAME                                 TYPE        VALUE&lt;br /&gt;------------------------------------ ----------- ------------------------------&lt;br /&gt;spfile                               string      /home/oracle/product/11g/db/db&lt;br /&gt;                                                s/spfiletest.ora&lt;br /&gt;Now lets try to set the archive log destination:&lt;br /&gt;&lt;br /&gt;SQL&gt; alter system set log_archive_dest_1='/home/oracle/archivelog' scope=spfile;&lt;br /&gt;alter system set log_archive_dest_1='/home/oracle/archivelog' scope=spfile&lt;br /&gt;*&lt;br /&gt;ERROR at line 1:&lt;br /&gt;ORA-32017: failure in updating SPFILE&lt;br /&gt;ORA-16179: incremental changes to "log_archive_dest_1" not allowed with SPFILE&lt;br /&gt;&lt;br /&gt;I faced the above error, thought need to enable archiving first:&lt;br /&gt;&lt;br /&gt;SQL&gt; alter system set log_archive_start=TRUE&lt;br /&gt; 2  scope=spfile;&lt;br /&gt;&lt;br /&gt;System altered.&lt;br /&gt;&lt;br /&gt;But I received the error again.&lt;br /&gt;&lt;br /&gt;SQL&gt; alter system set log_archive_dest_1='/home/oracle/archivelog' scope=spfile;&lt;br /&gt;alter system set log_archive_dest_1='/home/oracle/archivelog' scope=spfile&lt;br /&gt;*&lt;br /&gt;ERROR at line 1:&lt;br /&gt;ORA-32017: failure in updating SPFILE&lt;br /&gt;ORA-16179: incremental changes to "log_archive_dest_1" not allowed with SPFILE&lt;br /&gt;&lt;br /&gt;Checked the error description:&lt;br /&gt;SQL&gt; !oerr ora 16179&lt;br /&gt;16179, 00000, "incremental changes to \"%s\" not allowed with SPFILE"&lt;br /&gt;// *Cause:  Incremental changes to a log_archive_dest_n parameter cannot&lt;br /&gt;//          be made when using an SPFILE.&lt;br /&gt;// *Action: Specify either LOCATION or SERVICE plus all other attributes&lt;br /&gt;//          to be set in one ALTER SYSTEM/SESSION SET command.&lt;br /&gt;&lt;br /&gt;So I did some research and found that when using spfile and trying to set a parameter like log_archive_dest_1, we need to give&lt;br /&gt;complete format of the parameter like:&lt;br /&gt;&lt;br /&gt;SQL&gt; alter system set log_archive_dest_1='location=/home/oracle/archivelog' scope=spfile;&lt;br /&gt;&lt;br /&gt;System altered.&lt;br /&gt;(Optionally we can also give other parameters in this statement like optional, reopen etc.)&lt;br /&gt;&lt;br /&gt;Now let shutdown the database and do a startup mount:&lt;br /&gt;&lt;br /&gt;SQL&gt; shutdown immediate&lt;br /&gt;Database closed.&lt;br /&gt;Database dismounted.&lt;br /&gt;ORACLE instance shut down.&lt;br /&gt;&lt;br /&gt;SQL&gt; startup mount;&lt;br /&gt;ORACLE instance started.&lt;br /&gt;&lt;br /&gt;Total System Global Area  422670336 bytes&lt;br /&gt;Fixed Size                  1300352 bytes&lt;br /&gt;Variable Size             310380672 bytes&lt;br /&gt;Database Buffers          104857600 bytes&lt;br /&gt;Redo Buffers                6131712 bytes&lt;br /&gt;Database mounted.&lt;br /&gt;&lt;br /&gt;Enabling archivelog mode&lt;br /&gt;&lt;br /&gt;SQL&gt; alter database archivelog;&lt;br /&gt;&lt;br /&gt;Database altered.&lt;br /&gt;&lt;br /&gt;Open the database:&lt;br /&gt;&lt;br /&gt;SQL&gt; alter database open;&lt;br /&gt;&lt;br /&gt;Database altered.&lt;br /&gt;&lt;br /&gt;Test if archivelog is set properly:&lt;br /&gt;&lt;br /&gt;SQL&gt; archive log list&lt;br /&gt;Database log mode              Archive Mode&lt;br /&gt;Automatic archival             Enabled&lt;br /&gt;Archive destination            /home/oracle/archivelog&lt;br /&gt;Oldest online log sequence     165&lt;br /&gt;Next log sequence to archive   167&lt;br /&gt;Current log sequence           167&lt;br /&gt;SQL&gt; select name, log_mode from v$database;&lt;br /&gt;&lt;br /&gt;NAME      LOG_MODE&lt;br /&gt;--------- ------------&lt;br /&gt;TEST      ARCHIVELOG&lt;br /&gt;&lt;br /&gt;SQL&gt; alter system switch logfile;&lt;br /&gt;&lt;br /&gt;System altered.&lt;br /&gt;&lt;br /&gt;SQL&gt; /&lt;br /&gt;&lt;br /&gt;System altered.&lt;br /&gt;&lt;br /&gt;SQL&gt; !ls -lrt /home/oracle/archivelog&lt;br /&gt;total 44496&lt;br /&gt;-rw-r----- 1 oracle oracle 45509632 2009-03-20 14:43 1_167_677948664.dbf&lt;br /&gt;-rw-r----- 1 oracle oracle     1024 2009-03-20 14:43 1_168_677948664.dbf&lt;br /&gt;&lt;br /&gt;So now we have enabled archivelog mode and have some archivelog file also!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4092304359380397372-5622558093915478498?l=apunhiran.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apunhiran.blogspot.com/feeds/5622558093915478498/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4092304359380397372&amp;postID=5622558093915478498' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/5622558093915478498'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/5622558093915478498'/><link rel='alternate' type='text/html' href='http://apunhiran.blogspot.com/2009/03/how-to-enabling-archivelog-mode-in.html' title='How to enable archivelog mode in Oracle 11g database'/><author><name>Apun Hiran</name><uri>http://www.blogger.com/profile/04745021360458270341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_viek7Sw5RrM/R_yAZoPGqYI/AAAAAAAAAIM/eS3VxJ7S2Pc/S220/IMG_0042.JPG'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4092304359380397372.post-1380239586522580896</id><published>2009-03-17T13:29:00.003+05:30</published><updated>2009-03-30T07:38:05.166+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='apunhiran'/><category scheme='http://www.blogger.com/atom/ns#' term='lob'/><category scheme='http://www.blogger.com/atom/ns#' term='11g'/><category scheme='http://www.blogger.com/atom/ns#' term='hiran'/><category scheme='http://www.blogger.com/atom/ns#' term='securefile'/><category scheme='http://www.blogger.com/atom/ns#' term='deduplication'/><category scheme='http://www.blogger.com/atom/ns#' term='Securefiles'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><category scheme='http://www.blogger.com/atom/ns#' term='blob'/><category scheme='http://www.blogger.com/atom/ns#' term='apun'/><title type='text'>Deduplication Using SecureFile for LOBS in 11g</title><content type='html'>In my previous blog, I had moved a lob from basicfile to securefile. I will use the same table for the dedupication example.&lt;br /&gt;I had five rows in that table, 3 had similar lob data.&lt;br /&gt;&lt;br /&gt;Storage Stats of the table:&lt;br /&gt;SQL&gt; select owner,table_name,COLUMN_NAME,SEGMENT_NAME from dba_lobs where table_name='BLOB_TEST';&lt;br /&gt;&lt;br /&gt;OWNER      TABLE_NAME COLUMN_NAME     SEGMENT_NAME&lt;br /&gt;---------- ---------- --------------- --------------------------------------------------&lt;br /&gt;HR         BLOB_TEST  DATA            SYS_LOB0000073688C00002$$&lt;br /&gt;&lt;br /&gt;The below plsql block is courtesy &lt;a href="http://www.blogger.com/www.oracle.com"&gt;oracle&lt;/a&gt;&lt;br /&gt;declare &lt;br /&gt;   l_segment_size_blocks   number;&lt;br /&gt;   l_segment_size_bytes    number;&lt;br /&gt;   l_used_blocks           number; &lt;br /&gt;   l_used_bytes            number; &lt;br /&gt;   l_expired_blocks        number; &lt;br /&gt;   l_expired_bytes         number; &lt;br /&gt;   l_unexpired_blocks      number; &lt;br /&gt;   l_unexpired_bytes       number; &lt;br /&gt;&lt;br /&gt;begin&lt;br /&gt;       dbms_space.space_usage(&lt;br /&gt;       segment_owner           =&gt; 'HR', &lt;br /&gt;       segment_name            =&gt; 'SYS_LOB0000073688C00002$$',&lt;br /&gt;       segment_type            =&gt; 'LOB',&lt;br /&gt;       partition_name          =&gt; NULL,&lt;br /&gt;       segment_size_blocks     =&gt; l_segment_size_blocks,&lt;br /&gt;       segment_size_bytes      =&gt; l_segment_size_bytes,&lt;br /&gt;       used_blocks             =&gt; l_used_blocks,&lt;br /&gt;       used_bytes              =&gt; l_used_bytes,&lt;br /&gt;       expired_blocks          =&gt; l_expired_blocks,&lt;br /&gt;       expired_bytes           =&gt; l_expired_bytes,&lt;br /&gt;       unexpired_blocks        =&gt; l_unexpired_blocks,&lt;br /&gt;       unexpired_bytes         =&gt; l_unexpired_bytes&lt;br /&gt;   );  &lt;br /&gt;   dbms_output.put_line('Segment Size in Blocks       =&gt; '||  l_segment_size_blocks);&lt;br /&gt;   dbms_output.put_line('Segment Size in Bytes        =&gt; '||  l_segment_size_bytes);&lt;br /&gt;   dbms_output.put_line('Used Blocks               =&gt; '||  l_used_blocks);&lt;br /&gt;   dbms_output.put_line('Used Bytes                =&gt; '||  l_used_bytes);&lt;br /&gt;   dbms_output.put_line('Expired Blocks            =&gt; '||  l_expired_blocks);&lt;br /&gt;   dbms_output.put_line('Expired Bytes             =&gt; '||  l_expired_bytes);&lt;br /&gt;   dbms_output.put_line('Unexpired Blocks          =&gt; '||  l_unexpired_blocks);&lt;br /&gt;   dbms_output.put_line('Unexpired Bytes           =&gt; '||  l_unexpired_bytes);&lt;br /&gt;end;&lt;br /&gt;/&lt;br /&gt;============================================&lt;br /&gt;Segment Size in Blocks      =&gt; 189848&lt;br /&gt;Segment Size in Bytes       =&gt; 1555234816&lt;br /&gt;Used Blocks                 =&gt; 167392&lt;br /&gt;Used Bytes                  =&gt; 1371275264 (1307.75 MB)&lt;br /&gt;Expired Blocks              =&gt; 22246&lt;br /&gt;Expired Bytes               =&gt; 182239232&lt;br /&gt;Unexpired Blocks            =&gt; 0&lt;br /&gt;Unexpired Bytes             =&gt; 0&lt;br /&gt;============================================&lt;br /&gt;SQL&gt; alter table blob_test modify lob(data) (deduplicate);&lt;br /&gt;Table altered.&lt;br /&gt;&lt;br /&gt;This command takes some time to run.&lt;br /&gt;Storage Stats after the deduplication.&lt;br /&gt;============================================&lt;br /&gt;Segment Size in Blocks    =&gt; 416408&lt;br /&gt;Segment Size in Bytes     =&gt; 3411214336&lt;br /&gt;Used Blocks               =&gt; 55799&lt;br /&gt;Used Bytes                =&gt; 457105408 (435.93 MB)&lt;br /&gt;Expired Blocks            =&gt; 80882&lt;br /&gt;Expired Bytes             =&gt; 662585344&lt;br /&gt;Unexpired Blocks          =&gt; 279292&lt;br /&gt;Unexpired Bytes           =&gt; 2287960064&lt;br /&gt;============================================&lt;br /&gt;&lt;br /&gt;You can see that the Used Bytes column has come down visibly. As I had mentioned that there were 3 LOBs of the same size, which shows that the size has come down to 1/3rd.&lt;br /&gt;The blob stored was:&lt;br /&gt;a.dmp, b.dmp and c.dmp the same ones with size 428.88&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4092304359380397372-1380239586522580896?l=apunhiran.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apunhiran.blogspot.com/feeds/1380239586522580896/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4092304359380397372&amp;postID=1380239586522580896' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/1380239586522580896'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/1380239586522580896'/><link rel='alternate' type='text/html' href='http://apunhiran.blogspot.com/2009/03/deduplication-using-securefile-for-lobs.html' title='Deduplication Using SecureFile for LOBS in 11g'/><author><name>Apun Hiran</name><uri>http://www.blogger.com/profile/04745021360458270341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_viek7Sw5RrM/R_yAZoPGqYI/AAAAAAAAAIM/eS3VxJ7S2Pc/S220/IMG_0042.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4092304359380397372.post-8697049414091935545</id><published>2009-03-17T12:39:00.006+05:30</published><updated>2009-03-30T07:37:48.222+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='apunhiran'/><category scheme='http://www.blogger.com/atom/ns#' term='11g'/><category scheme='http://www.blogger.com/atom/ns#' term='BasicFiles'/><category scheme='http://www.blogger.com/atom/ns#' term='hiran'/><category scheme='http://www.blogger.com/atom/ns#' term='securefile'/><category scheme='http://www.blogger.com/atom/ns#' term='dbms_redefinition'/><category scheme='http://www.blogger.com/atom/ns#' term='Securefiles'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><category scheme='http://www.blogger.com/atom/ns#' term='blob'/><category scheme='http://www.blogger.com/atom/ns#' term='apun'/><title type='text'>Move from BasicFiles to Securefiles 11g</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Let do the change from a BasicFile to SecureFile in 11g using a very basic example.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Lets create a table with BLOB using BasicFile.&lt;br /&gt;&lt;br /&gt;SQL&gt; create table BLOB_test (name varchar2(20),data BLOB);&lt;br /&gt;Table created.&lt;br /&gt;&lt;br /&gt;Lets load some data into the table.&lt;br /&gt;&lt;br /&gt;SQL&gt; create directory FOR_HR as '/home/oracle/';&lt;br /&gt;Directory created.&lt;br /&gt;&lt;br /&gt;SQL&gt; grant read,write on directory FOR_HR to hr;&lt;br /&gt;Grant succeeded.&lt;br /&gt;&lt;br /&gt;I am using the below procedure to quickly load a few files:&lt;br /&gt;&lt;br /&gt;CREATE OR REPLACE PROCEDURE blob_load (name IN BLOB_test.name%TYPE)&lt;br /&gt;IS&lt;br /&gt;b_data BFILE;&lt;br /&gt;e_blob BLOB;&lt;br /&gt;BEGIN&lt;br /&gt;insert into BLOB_test values (name,EMPTY_BLOB() ) returning data into e_blob;&lt;br /&gt;b_data := bfilename( 'FOR_HR', name);&lt;br /&gt;Dbms_Lob.Fileopen(b_data, Dbms_Lob.File_Readonly);&lt;br /&gt;Dbms_Lob.Loadfromfile(e_blob, b_data, Dbms_Lob.Getlength(b_data));&lt;br /&gt;Dbms_Lob.Fileclose(b_data);&lt;br /&gt;COMMIT;&lt;br /&gt;END;&lt;br /&gt;/&lt;br /&gt;&lt;br /&gt;SQL&gt; exec blob_load('a.dmp');&lt;br /&gt;PL/SQL procedure successfully completed.&lt;br /&gt;&lt;br /&gt;......&lt;br /&gt;SQL&gt; select count(*) from blob_test;&lt;br /&gt;&lt;br /&gt; COUNT(*)&lt;br /&gt;----------&lt;br /&gt;        5&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Now lets try to migrate to SecureFiles in 11g:&lt;/span&gt;&lt;br /&gt;First check the system parameter db_securefile:&lt;br /&gt;SQL&gt; show parameter db_securefile&lt;br /&gt;&lt;br /&gt;NAME                                 TYPE        VALUE&lt;br /&gt;------------------------------------ ----------- ------------------------------&lt;br /&gt;db_securefile                        string      PERMITTED&lt;br /&gt;&lt;br /&gt;Lets create a new table with SecureFile feature.&lt;br /&gt;&lt;br /&gt;SQL&gt; create table blob_test_1 (name varchar2(20),data blob)&lt;br /&gt;lob (data) store as securefile;  2&lt;br /&gt;Table created.&lt;br /&gt;&lt;br /&gt;Now we need to use the &lt;span style="font-weight: bold;"&gt;dbms_redefinition&lt;/span&gt; package to define the column mappings:&lt;br /&gt;&lt;br /&gt;SQL&gt; exec dbms_redefinition.start_redef_table('HR','BLOB_TEST','BLOB_TEST_1','name name ,'||'data data');&lt;br /&gt;BEGIN dbms_redefinition.start_redef_table('HR','BLOB_TEST','BLOB_TEST_1','name name ,'||'data data'); END;&lt;br /&gt;*&lt;br /&gt;ERROR at line 1:&lt;br /&gt;ORA-12089: cannot online redefine table "HR"."BLOB_TEST" with no primary key&lt;br /&gt;ORA-06512: at "SYS.DBMS_REDEFINITION", line 52&lt;br /&gt;ORA-06512: at "SYS.DBMS_REDEFINITION", line 1631&lt;br /&gt;ORA-06512: at line 1&lt;br /&gt;&lt;br /&gt;SQL&gt; alter table blob_test add primary key (name);&lt;br /&gt;Table altered.&lt;br /&gt;&lt;br /&gt;SQL&gt; alter table blob_test_1 add primary key (name);&lt;br /&gt;Table altered.&lt;br /&gt;&lt;br /&gt;SQL&gt; exec dbms_redefinition.start_redef_table('HR','BLOB_TEST','BLOB_TEST_1','name name ,'||'data data');&lt;br /&gt;PL/SQL procedure successfully completed.&lt;br /&gt;&lt;br /&gt;Details of activity from v$sesstat, where 122 is our session id.&lt;br /&gt;&lt;br /&gt;122 securefile allocation bytes                       1,371,267,072&lt;br /&gt;122 securefile allocation chunks                      1,255&lt;br /&gt;122 securefile direct write bytes                     1,371,267,072&lt;br /&gt;122 securefile direct write ops                       1,809&lt;br /&gt;122 securefile bytes non-transformed                  1,349,152,270&lt;br /&gt;122 securefile number of non-transformed flushes      326&lt;br /&gt;&lt;br /&gt;SQL&gt; select name from blob_test;&lt;br /&gt;NAME&lt;br /&gt;--------------------&lt;br /&gt;a.dmp&lt;br /&gt;b.dmp&lt;br /&gt;c.dmp&lt;br /&gt;d.log&lt;br /&gt;e.log&lt;br /&gt;&lt;br /&gt;SQL&gt; select name from blob_test_1;&lt;br /&gt;NAME&lt;br /&gt;--------------------&lt;br /&gt;a.dmp&lt;br /&gt;b.dmp&lt;br /&gt;c.dmp&lt;br /&gt;d.log&lt;br /&gt;e.log&lt;br /&gt;&lt;br /&gt;SQL&gt; exec dbms_redefinition.finish_redef_table ('HR','BLOB_TEST','BLOB_TEST_1');&lt;br /&gt;PL/SQL procedure successfully completed.&lt;br /&gt;&lt;br /&gt;SQL&gt; select owner,table_name,COLUMN_NAME,SECUREFILE from dba_lobs where table_name='BLOB_TEST';&lt;br /&gt;&lt;br /&gt;OWNER      TABLE_NAME COLUMN_NAME     SEC&lt;br /&gt;---------- ---------- --------------- ---&lt;br /&gt;HR         BLOB_TEST  DATA            YES&lt;br /&gt;&lt;br /&gt;SQL&gt; drop table blob_test_1;&lt;br /&gt;drop table blob_test_1&lt;br /&gt;          *&lt;br /&gt;ERROR at line 1:&lt;br /&gt;ORA-00942: table or view does not exist&lt;br /&gt;(The temporary table got removed automatically)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4092304359380397372-8697049414091935545?l=apunhiran.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apunhiran.blogspot.com/feeds/8697049414091935545/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4092304359380397372&amp;postID=8697049414091935545' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/8697049414091935545'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/8697049414091935545'/><link rel='alternate' type='text/html' href='http://apunhiran.blogspot.com/2009/03/move-from-basicfiles-to-securefiles-11g.html' title='Move from BasicFiles to Securefiles 11g'/><author><name>Apun Hiran</name><uri>http://www.blogger.com/profile/04745021360458270341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_viek7Sw5RrM/R_yAZoPGqYI/AAAAAAAAAIM/eS3VxJ7S2Pc/S220/IMG_0042.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4092304359380397372.post-260952904624543296</id><published>2009-03-17T07:02:00.003+05:30</published><updated>2009-03-30T07:37:33.156+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='songs'/><category scheme='http://www.blogger.com/atom/ns#' term='Music'/><category scheme='http://www.blogger.com/atom/ns#' term='apunhiran'/><category scheme='http://www.blogger.com/atom/ns#' term='music station'/><category scheme='http://www.blogger.com/atom/ns#' term='online'/><category scheme='http://www.blogger.com/atom/ns#' term='hiran'/><category scheme='http://www.blogger.com/atom/ns#' term='online music'/><category scheme='http://www.blogger.com/atom/ns#' term='apun'/><title type='text'>My Music Station - The Best Of Best</title><content type='html'>&lt;object type="application/x-shockwave-flash" allowscriptaccess="never" allownetworking="internal" data="http://player.play.it/player/CBSRadio_Player_small.swf?R20Station=15336&amp;amp;UseRoll=false&amp;amp;UseShare=false&amp;amp;PartnerSource=PLAYIT&amp;amp;UseDCTrack=false&amp;amp;EmbeddedPlayer=true" width="294" height="411"&gt;&lt;param name="allowScriptAccess" value="never"&gt;&lt;param name="allowNetworking" value="internal"&gt;&lt;param name="movie" value="http://player.play.it/player/CBSRadio_Player_small.swf?R20Station=15336&amp;amp;UseRoll=false&amp;amp;UseShare=false&amp;amp;PartnerSource=PLAYIT&amp;amp;UseDCTrack=false&amp;amp;EmbeddedPlayer=true"&gt;&lt;param name="quality" value="high"&gt;&lt;param name="salign" value="lt"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4092304359380397372-260952904624543296?l=apunhiran.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://play.it/stations/The%20Best%20of%20Best' title='My Music Station - The Best Of Best'/><link rel='replies' type='application/atom+xml' href='http://apunhiran.blogspot.com/feeds/260952904624543296/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4092304359380397372&amp;postID=260952904624543296' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/260952904624543296'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/260952904624543296'/><link rel='alternate' type='text/html' href='http://apunhiran.blogspot.com/2009/03/my-music-station-best-of-best.html' title='My Music Station - The Best Of Best'/><author><name>Apun Hiran</name><uri>http://www.blogger.com/profile/04745021360458270341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_viek7Sw5RrM/R_yAZoPGqYI/AAAAAAAAAIM/eS3VxJ7S2Pc/S220/IMG_0042.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4092304359380397372.post-762422533783926802</id><published>2009-03-16T07:51:00.006+05:30</published><updated>2009-03-30T07:37:07.590+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='apunhiran'/><category scheme='http://www.blogger.com/atom/ns#' term='administrator'/><category scheme='http://www.blogger.com/atom/ns#' term='create'/><category scheme='http://www.blogger.com/atom/ns#' term='cache group'/><category scheme='http://www.blogger.com/atom/ns#' term='hiran'/><category scheme='http://www.blogger.com/atom/ns#' term='user managed cache group'/><category scheme='http://www.blogger.com/atom/ns#' term='cache'/><category scheme='http://www.blogger.com/atom/ns#' term='cache administrator'/><category scheme='http://www.blogger.com/atom/ns#' term='timesten'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><category scheme='http://www.blogger.com/atom/ns#' term='apun'/><title type='text'>How To: Creation fo Cache Group Using Cache Administrator:</title><content type='html'>&lt;span style="font-weight: bold;"&gt;http://localhost:17004/cache/&lt;/span&gt;&lt;br /&gt;Login Page:&lt;br /&gt;&lt;table style="width: auto;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/GIeHRPhBUBKtw_ifIFQd-Q?feat=embedwebsite"&gt;&lt;img src="http://lh5.ggpht.com/_viek7Sw5RrM/Sb20Y8ugmmI/AAAAAAAAAsk/-o-69zmLJs8/s400/1.png" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family: arial,sans-serif; font-size: 11px; text-align: right;"&gt;From &lt;a href="http://picasaweb.google.com/apunhiran/Timesten?feat=embedwebsite"&gt;Timesten&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;In our case:&lt;br /&gt;TimesTen DSN: myDSN&lt;br /&gt;Oracle Username: hr&lt;br /&gt;Oracle Password: hr&lt;br /&gt;TimesTen Password: hr&lt;br /&gt;&lt;br /&gt;Welcome Page:&lt;br /&gt;&lt;table style="width: auto;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/3Ah_EgI4kdaEJX_7s-FpPg?feat=embedwebsite"&gt;&lt;img src="http://lh4.ggpht.com/_viek7Sw5RrM/Sb20Y7FbrqI/AAAAAAAAAss/mjBJYpPIPnE/s400/2.png" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family: arial,sans-serif; font-size: 11px; text-align: right;"&gt;From &lt;a href="http://picasaweb.google.com/apunhiran/Timesten?feat=embedwebsite"&gt;Timesten&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Select Create under Create Cache Group Definitions.&lt;br /&gt;&lt;br /&gt;Shows the creation Page:&lt;br /&gt;&lt;table style="width: auto;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/stXMH8ZXmBUnbn6Qp-DS6A?feat=embedwebsite"&gt;&lt;img src="http://lh5.ggpht.com/_viek7Sw5RrM/Sb20ZNHvxVI/AAAAAAAAAs0/AMTEmOQtKJ4/s400/3.png" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family: arial,sans-serif; font-size: 11px; text-align: right;"&gt;From &lt;a href="http://picasaweb.google.com/apunhiran/Timesten?feat=embedwebsite"&gt;Timesten&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;We will be creating a User Managed Cache Group Definition.&lt;br /&gt;&lt;br /&gt;&lt;table style="width: auto;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/QqnqiDXbl09-opiWewRhow?feat=embedwebsite"&gt;&lt;img src="http://lh3.ggpht.com/_viek7Sw5RrM/Sb20ZG3d4oI/AAAAAAAAAs8/WgUENlADX08/s400/4.png" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family: arial,sans-serif; font-size: 11px; text-align: right;"&gt;From &lt;a href="http://picasaweb.google.com/apunhiran/Timesten?feat=embedwebsite"&gt;Timesten&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;We select User Managed, propogate all tables (from the attributes section), Autorefresh every 5 seconds(from the autorefresh definitions).&lt;br /&gt;Our Root table would be HR. REGIONS, child tables would be HR.COUNTRIES and HR.LOCATIONS.&lt;br /&gt;&lt;br /&gt;Edit the table setting, by selecting the columns we need and defining the foreign key relations in the tables:&lt;br /&gt;&lt;br /&gt;&lt;table style="width: auto;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/mISvaGG8CORICSoNdwml8w?feat=embedwebsite"&gt;&lt;img src="http://lh4.ggpht.com/_viek7Sw5RrM/Sb20ZbxRmOI/AAAAAAAAAtE/w56bafl7g8k/s400/5.png" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family: arial,sans-serif; font-size: 11px; text-align: right;"&gt;From &lt;a href="http://picasaweb.google.com/apunhiran/Timesten?feat=embedwebsite"&gt;Timesten&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Defining foreign key for the table countries and regions:&lt;br /&gt;&lt;table style="width: auto;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/yho0W0r4dR0v43x5OnwhsA?feat=embedwebsite"&gt;&lt;img src="http://lh5.ggpht.com/_viek7Sw5RrM/Sb206UZOM-I/AAAAAAAAAtM/pB7TQXxCAZ8/s400/6.png" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family: arial,sans-serif; font-size: 11px; text-align: right;"&gt;From &lt;a href="http://picasaweb.google.com/apunhiran/Timesten?feat=embedwebsite"&gt;Timesten&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Select required columns and attributes for the countries table:&lt;br /&gt;&lt;table style="width: auto;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/GF9VAtCQaR23JvpwOWmvdA?feat=embedwebsite"&gt;&lt;img src="http://lh5.ggpht.com/_viek7Sw5RrM/Sb206kSxAII/AAAAAAAAAtU/8_1txmrIxJ8/s400/7.png" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family: arial,sans-serif; font-size: 11px; text-align: right;"&gt;From &lt;a href="http://picasaweb.google.com/apunhiran/Timesten?feat=embedwebsite"&gt;Timesten&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Define foreign key relation between countries and locations table:&lt;br /&gt;&lt;br /&gt;&lt;table style="width: auto;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/xcdD60kzFRyN2kEVrxeuLA?feat=embedwebsite"&gt;&lt;img src="http://lh3.ggpht.com/_viek7Sw5RrM/Sb2063cqHyI/AAAAAAAAAtc/YLbHHi8RWKs/s400/8.png" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family: arial,sans-serif; font-size: 11px; text-align: right;"&gt;From &lt;a href="http://picasaweb.google.com/apunhiran/Timesten?feat=embedwebsite"&gt;Timesten&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;table style="width: auto;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/fmo95yASWQup_lTXONWKsA?feat=embedwebsite"&gt;&lt;img src="http://lh3.ggpht.com/_viek7Sw5RrM/Sb207H_lguI/AAAAAAAAAtk/cf_YdKAkhiM/s400/9.png" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family: arial,sans-serif; font-size: 11px; text-align: right;"&gt;From &lt;a href="http://picasaweb.google.com/apunhiran/Timesten?feat=embedwebsite"&gt;Timesten&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Define required columns and attributes for the locations table:&lt;br /&gt;&lt;br /&gt;&lt;table style="width: auto;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/j4xPMVJo9L8m-qzKjXfmtw?feat=embedwebsite"&gt;&lt;img src="http://lh3.ggpht.com/_viek7Sw5RrM/Sb207oGXAsI/AAAAAAAAAts/R-CRC7hiRLs/s400/10.png" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family: arial,sans-serif; font-size: 11px; text-align: right;"&gt;From &lt;a href="http://picasaweb.google.com/apunhiran/Timesten?feat=embedwebsite"&gt;Timesten&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Press Save definition and it will take you to the Definition Summary Page:&lt;br /&gt;&lt;br /&gt;&lt;table style="width: auto;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/N61j0h_78zW1JHYo8DgOhg?feat=embedwebsite"&gt;&lt;img src="http://lh5.ggpht.com/_viek7Sw5RrM/Sb21H3lg92I/AAAAAAAAAt0/IMiFiDMr9FQ/s400/11.png" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family: arial,sans-serif; font-size: 11px; text-align: right;"&gt;From &lt;a href="http://picasaweb.google.com/apunhiran/Timesten?feat=embedwebsite"&gt;Timesten&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Now click on create under the Cache Group section in the menu on the left:&lt;br /&gt;&lt;br /&gt;&lt;table style="width: auto;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/aG6AgQP9W_5odolYicf6DA?feat=embedwebsite"&gt;&lt;img src="http://lh4.ggpht.com/_viek7Sw5RrM/Sb21IIhaQbI/AAAAAAAAAt8/1wem5AHy5D0/s400/12.png" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family: arial,sans-serif; font-size: 11px; text-align: right;"&gt;From &lt;a href="http://picasaweb.google.com/apunhiran/Timesten?feat=embedwebsite"&gt;Timesten&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Press Create Cache Group:&lt;br /&gt;&lt;br /&gt;&lt;table style="width: auto;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/wSsW8pW5IC1sQWwrsGYjKQ?feat=embedwebsite"&gt;&lt;img src="http://lh3.ggpht.com/_viek7Sw5RrM/Sb21IfjQFaI/AAAAAAAAAuE/lK1O6y7ilsg/s400/13.png" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family: arial,sans-serif; font-size: 11px; text-align: right;"&gt;From &lt;a href="http://picasaweb.google.com/apunhiran/Timesten?feat=embedwebsite"&gt;Timesten&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;This will create the cache group called OUR_TEST.&lt;br /&gt;&lt;br /&gt;Below is the SQL to create the same group manually (ttIsql myDSN):&lt;br /&gt;&lt;br /&gt;SQL Code for creating the same user managed cache group:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-style: italic;"&gt;CREATE USERMANAGED CACHE GROUP "OUR_TEST"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; AUTOREFRESH MODE INCREMENTAL INTERVAL 5 SECONDS &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; STATE ON &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; FROM&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  "HR"."REGIONS" (&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    "REGION_ID" NUMBER NOT NULL,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    "REGION_NAME" VARCHAR2(25 BYTE),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    PRIMARY KEY("REGION_ID"), PROPAGATE&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  ),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  "HR"."COUNTRIES" (&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    "COUNTRY_ID" CHAR(2 BYTE) NOT NULL,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    "COUNTRY_NAME" VARCHAR2(40 BYTE),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    "REGION_ID" NUMBER,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    PRIMARY KEY("COUNTRY_ID"),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    FOREIGN KEY("REGION_ID")&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;      REFERENCES "HR"."REGIONS"("REGION_ID"), PROPAGATE&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  ),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  "HR"."LOCATIONS" (&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    "LOCATION_ID" NUMBER(4) NOT NULL,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    "STREET_ADDRESS" VARCHAR2(40 BYTE),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    "POSTAL_CODE" VARCHAR2(12 BYTE),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    "CITY" VARCHAR2(30 BYTE) NOT NULL,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    "STATE_PROVINCE" VARCHAR2(25 BYTE),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    "COUNTRY_ID" CHAR(2 BYTE),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    PRIMARY KEY("LOCATION_ID"),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    FOREIGN KEY("COUNTRY_ID")&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;      REFERENCES "HR"."COUNTRIES"("COUNTRY_ID"), PROPAGATE&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  );&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Lets check the cache group we created using the cache administrator.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;oracle@oracle:~/TimesTen/timesten/startup$ ttIsql myDSN&lt;br /&gt;&lt;br /&gt;Copyright (c) 1996-2008, Oracle.  All rights reserved.&lt;br /&gt;Type ? or "help" for help, type "exit" to quit ttIsql.&lt;br /&gt;All commands must end with a semicolon character.&lt;br /&gt;&lt;br /&gt;connect "DSN=myDSN";&lt;br /&gt;Enter password for 'hr':&lt;br /&gt;Connection successful: DSN=myDSN;UID=hr;DataStore=/home/oracle/TimesTen/data;DatabaseCharacterSet=AL32UTF8;ConnectionCharacterSet=US7ASCII;DRIVER=/home/oracle/TimesTen/timesten/lib/libtten.so;OracleId=test;PermSize=16;TempSize=16;TypeMode=0;&lt;br /&gt;(Default setting AutoCommit=1)&lt;br /&gt;Command&gt; cachegroups;&lt;br /&gt;&lt;br /&gt;Cache Group HR.EMP_IN_MEM:&lt;br /&gt;&lt;br /&gt;Cache Group Type: Read Only&lt;br /&gt;Autorefresh: Yes&lt;br /&gt;Autorefresh Mode: Incremental&lt;br /&gt;Autorefresh State: On&lt;br /&gt;Autorefresh Interval: 5 Seconds&lt;br /&gt;&lt;br /&gt;Root Table: HR.EMPLOYEES&lt;br /&gt;Table Type: Read Only&lt;br /&gt;&lt;br /&gt;Cache Group HR.OUR_TEST:&lt;br /&gt;&lt;br /&gt;Cache Group Type: User Managed&lt;br /&gt;Autorefresh: Yes&lt;br /&gt;Autorefresh Mode: Incremental&lt;br /&gt;Autorefresh State: On&lt;br /&gt;Autorefresh Interval: 5 Minutes&lt;br /&gt;&lt;br /&gt;Root Table: HR.REGIONS&lt;br /&gt;Table Type: Propagate&lt;br /&gt;&lt;br /&gt;Child Table: HR.COUNTRIES&lt;br /&gt;Table Type: Propagate&lt;br /&gt;&lt;br /&gt;Child Table: HR.LOCATIONS&lt;br /&gt;Table Type: Propagate&lt;br /&gt;&lt;br /&gt;2 cache groups found.&lt;br /&gt;Command&gt;&lt;br /&gt;Lets check the record count:&lt;br /&gt;Command&gt; select * from regions;&lt;br /&gt;0 rows found.&lt;br /&gt;Oops no rows show up....we still need to create a cache agent.&lt;br /&gt;&lt;br /&gt;Command&gt; load cache group our_test commit every 20 rows;&lt;br /&gt;8289: Manual LOAD/REFRESH of cache group requires AUTOREFRESH STATE to be PAUSED, but the STATE of HR.OUR_TEST is ON. The LOAD is not allowed&lt;br /&gt;The command failed.&lt;br /&gt;Command&gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;We need to use ttAdmin to create a cache agent, this is to set the password for the cache agent:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;oracle@oracle:~/TimesTen/timesten/bin$ ttAdmin -cacheUidPwdSet -cacheUid hr -cachePwd hr myDSN&lt;br /&gt;Enter password for 'hr':&lt;br /&gt;Cache User Id                   : hr&lt;br /&gt;RAM Residence Policy            : inUse&lt;br /&gt;Replication Agent Policy        : manual&lt;br /&gt;Replication Manually Started    : False&lt;br /&gt;Cache Agent Policy              : manual&lt;br /&gt;Cache Agent Manually Started    : False&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now start the cache agent:&lt;br /&gt;&lt;span style="font-size:78%;"&gt;oracle@oracle:~/TimesTen/timesten/bin$ ttAdmin -cacheStart myDSN&lt;br /&gt;Enter password for 'hr':&lt;br /&gt;RAM Residence Policy            : inUse&lt;br /&gt;Replication Agent Policy        : manual&lt;br /&gt;Replication Manually Started    : False&lt;br /&gt;Cache Agent Policy              : manual&lt;br /&gt;Cache Agent Manually Started    : True&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now lets check the record count again.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;oracle@oracle:~/TimesTen/timesten/bin$ ttIsql myDSN&lt;br /&gt;Copyright (c) 1996-2008, Oracle.  All rights reserved.&lt;br /&gt;Type ? or "help" for help, type "exit" to quit ttIsql.&lt;br /&gt;All commands must end with a semicolon character.&lt;br /&gt;connect "DSN=myDSN";&lt;br /&gt;Enter password for 'hr':&lt;br /&gt;Connection successful: DSN=myDSN;UID=hr;DataStore=/home/oracle/TimesTen/data;DatabaseCharacterSet=AL32UTF8;ConnectionCharacterSet=US7ASCII;DRIVER=/home/oracle/TimesTen/timesten/lib/libtten.so;OracleId=test;PermSize=16;TempSize=16;TypeMode=0;&lt;br /&gt;(Default setting AutoCommit=1)&lt;br /&gt;Command&gt; select * from regions;&lt;br /&gt;1, Europe       &lt;br /&gt;2, Americas&lt;br /&gt;3, Asia      &lt;br /&gt;4, Middle East and Africa&lt;br /&gt;4 rows found.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;We got the rows this time!!!!&lt;br /&gt;Check the Cache agent policy, by default its manual that means the agent will not start automatically when the timesten daemon restarts.&lt;br /&gt;&lt;span style="font-size:78%;"&gt;Command&gt; call ttCachePolicyGet;&lt;br /&gt;manual&lt;br /&gt;1 row found.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Lets change it to auto start:&lt;br /&gt;&lt;span style="font-size:78%;"&gt;Command&gt; call ttCachePolicySet ('always');&lt;br /&gt;Command&gt;  call ttCachePolicyGet;&lt;br /&gt;always&lt;br /&gt;1 row found.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Lets check the status of our TimesTen daemon:&lt;br /&gt;&lt;span style="font-size:78%;"&gt;oracle@oracle:~/TimesTen/timesten/bin$ ttstatus&lt;br /&gt;TimesTen status report as of Mon Mar 16 09:51:10 2009&lt;br /&gt;&lt;br /&gt;Daemon pid 6427 port 17000 instance timesten&lt;br /&gt;TimesTen server pid 6436 started on port 17002&lt;br /&gt;TimesTen webserver pid 6434 started on port 17004&lt;br /&gt;&lt;br /&gt;------------------------------------------------------------------------&lt;br /&gt;Data store /home/oracle/TimesTen/data&lt;br /&gt;There are 11 connections to the data store&lt;br /&gt;Data store is in shared mode&lt;br /&gt;Shared Memory KEY 0x4d0148ad ID 2752530&lt;br /&gt;Type            PID     Context     Connection Name              ConnID&lt;br /&gt;Cache Agent     7276    0x081e2758  Handler                           2&lt;br /&gt;Cache Agent     7276    0x0826b710  Timer                             3&lt;br /&gt;Cache Agent     7276    0x082dce30  Aging                             4&lt;br /&gt;Cache Agent     7276    0x0839d710  timestenorad                      6&lt;br /&gt;Cache Agent     7276    0x0841b1e0  timestenorad                      7&lt;br /&gt;Subdaemon       6431    0x08098e38  Worker                         2042&lt;br /&gt;Subdaemon       6431    0x0810f020  HistGC                         2046&lt;br /&gt;Subdaemon       6431    0x0816e4c0  Checkpoint                     2044&lt;br /&gt;Subdaemon       6431    0x081ad950  Flusher                        2043&lt;br /&gt;Subdaemon       6431    0x0820cdf0  Aging                          2045&lt;br /&gt;Subdaemon       6431    0x0824c280  Monitor                        2047&lt;br /&gt;Replication policy  : Manual&lt;br /&gt;Cache agent policy  : Always&lt;br /&gt;TimesTen's Cache agent is running for this data store&lt;br /&gt;------------------------------------------------------------------------&lt;br /&gt;Data store /home/oracle/TimesTen/timesten/info/TT_timesten&lt;br /&gt;There are no connections to the data store&lt;br /&gt;Replication policy  : Manual&lt;br /&gt;Cache agent policy  : Manual&lt;br /&gt;------------------------------------------------------------------------&lt;br /&gt;Access control enabled.&lt;br /&gt;End of report&lt;br /&gt;oracle@oracle:~/TimesTen/timesten/bin$ &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;To check the success of our configuration, lets try adding rows:&lt;br /&gt;Adding row from oracle:&lt;br /&gt;&lt;span style="font-size:78%;"&gt;SQL&gt; select * from regions;&lt;br /&gt;&lt;br /&gt;REGION_ID REGION_NAME&lt;br /&gt;---------- -------------------------&lt;br /&gt;      1 Europe&lt;br /&gt;      2 Americas&lt;br /&gt;      3 Asia&lt;br /&gt;      4 Middle East and Africa&lt;br /&gt;&lt;br /&gt;SQL&gt; insert into regions values (5,'Antartica');&lt;br /&gt;1 row created.&lt;br /&gt;SQL&gt; commit;&lt;br /&gt;Commit complete.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Checking Timesten:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;oracle@oracle:~$ ttIsql myDSN&lt;br /&gt;Copyright (c) 1996-2008, Oracle.  All rights reserved.&lt;br /&gt;Type ? or "help" for help, type "exit" to quit ttIsql.&lt;br /&gt;All commands must end with a semicolon character.&lt;br /&gt;connect "DSN=myDSN";&lt;br /&gt;Enter password for 'hr':&lt;br /&gt;Connection successful: DSN=myDSN;UID=hr;DataStore=/home/oracle/TimesTen/data;DatabaseCharacterSet=AL32UTF8;ConnectionCharacterSet=US7ASCII;DRIVER=/home/oracle/TimesTen/timesten/lib/libtten.so;OracleId=test;PermSize=16;TempSize=16;TypeMode=0;&lt;br /&gt;(Default setting AutoCommit=1)&lt;br /&gt;Command&gt; select * from regions;&lt;br /&gt;1, Europe     &lt;br /&gt;2, Americas&lt;br /&gt;3, Asia        &lt;br /&gt;4, Middle East and Africa&lt;br /&gt;5, Antartica&lt;br /&gt;5 rows found.&lt;br /&gt;&lt;br /&gt;Command&gt;&lt;br /&gt;&lt;br /&gt;Row updated.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now adding row from TimeTen:&lt;br /&gt;&lt;span style="font-size:78%;"&gt;Command&gt; insert into regions values (6,'Artic');&lt;br /&gt;1 row inserted.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Checking Oracle DB:&lt;br /&gt;&lt;span style="font-size:78%;"&gt;SQL&gt; select * from regions;&lt;br /&gt;REGION_ID REGION_NAME&lt;br /&gt;---------- -------------------------&lt;br /&gt;      5 Antartica&lt;br /&gt;      6 Artic&lt;br /&gt;      1 Europe&lt;br /&gt;      2 Americas&lt;br /&gt;      3 Asia&lt;br /&gt;      4 Middle East and Africa&lt;br /&gt;6 rows selected.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Working both ways. Now lets check the foreign key definitions we made:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;Command&gt; insert into countries values ('AT','MYCOUNTRY',10);&lt;br /&gt;3001: Foreign key violation [REGIONS]: the row in child table HR.COUNTRIES has no key in the parent table HR.REGIONS&lt;br /&gt;The command failed.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Well the definitions works well!!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4092304359380397372-762422533783926802?l=apunhiran.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apunhiran.blogspot.com/feeds/762422533783926802/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4092304359380397372&amp;postID=762422533783926802' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/762422533783926802'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/762422533783926802'/><link rel='alternate' type='text/html' href='http://apunhiran.blogspot.com/2009/03/how-to-creation-fo-cache-group-using.html' title='How To: Creation fo Cache Group Using Cache Administrator:'/><author><name>Apun Hiran</name><uri>http://www.blogger.com/profile/04745021360458270341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_viek7Sw5RrM/R_yAZoPGqYI/AAAAAAAAAIM/eS3VxJ7S2Pc/S220/IMG_0042.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_viek7Sw5RrM/Sb20Y8ugmmI/AAAAAAAAAsk/-o-69zmLJs8/s72-c/1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4092304359380397372.post-6296056705482318704</id><published>2009-03-10T13:17:00.008+05:30</published><updated>2009-03-30T07:36:46.313+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='apunhiran'/><category scheme='http://www.blogger.com/atom/ns#' term='in-memory'/><category scheme='http://www.blogger.com/atom/ns#' term='hiran'/><category scheme='http://www.blogger.com/atom/ns#' term='ORA-12154'/><category scheme='http://www.blogger.com/atom/ns#' term='cache'/><category scheme='http://www.blogger.com/atom/ns#' term='group'/><category scheme='http://www.blogger.com/atom/ns#' term='memory'/><category scheme='http://www.blogger.com/atom/ns#' term='apun'/><category scheme='http://www.blogger.com/atom/ns#' term='11g'/><category scheme='http://www.blogger.com/atom/ns#' term='cache group'/><category scheme='http://www.blogger.com/atom/ns#' term='ttIsql'/><category scheme='http://www.blogger.com/atom/ns#' term='in'/><category scheme='http://www.blogger.com/atom/ns#' term='timesten'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>How To Create Cache Group in TimesTen</title><content type='html'>&lt;span style="font-size:85%;"&gt;Cache groups are used to cache oracle database data in TimesTen in-memory system.&lt;br /&gt;You can either cache the whole table, or part of it by defining the columns.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;You cannot cache LOB datatypes as of now in TimesTen, the biggest available chumk is LONG RAW.&lt;/span&gt;&lt;br /&gt;You can create a cache group of multiple tables or single table as per your requirement.&lt;br /&gt;If you have multiple tables in a cache group you can define parent child relations.&lt;br /&gt;Though the tables in a cache group must be joined by foreign key constraints in TimesTen,&lt;br /&gt;the tables do not necessarily need to be joined in the Oracle instance .&lt;br /&gt;There can be different types of cache group configurations, depending upon the requirements.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Types of cache groups:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;--&gt;READONLY - enforces a caching behavior in which updates on Oracle tables are applied to TimesTen through the AUTOREFRESH mechanism.&lt;br /&gt;--&gt;SYNCHRONOUS WRITETHROUGH - enforces a caching behavior in which cached data is updated in TimesTen and propagated to Oracle. Updates to a SWT cache group are committed synchronously.&lt;br /&gt;--&gt;ASYNCHRONOUS WRITETHROUGH (AWT) cache groups - enforces caching behavior in which cached data is updated in TimesTen and propagated to Oracle. Updates to an AWT cache group are committed asynchronously.&lt;br /&gt;--&gt;USERMANAGED - Customizable/user defined cache group.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Setting up Oracle:&lt;/span&gt;&lt;br /&gt;Create the schema to be used for caching. I am using the oracle provide "HR" sample schema on the oracle side.&lt;br /&gt;&lt;br /&gt;Setting up TimesTen:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1.) Create user on TimeTen:&lt;/span&gt;&lt;br /&gt;oracle@oracle:~/TimesTen/timesten/bin$ ./ttIsql tt_timesten&lt;br /&gt;&lt;br /&gt;Copyright (c) 1996-2008, Oracle.  All rights reserved.&lt;br /&gt;Type ? or "help" for help, type "exit" to quit ttIsql.&lt;br /&gt;All commands must end with a semicolon character.&lt;br /&gt;connect "DSN=tt_timesten";&lt;br /&gt;Connection successful: DSN=TT_timesten;UID=oracle;DataStore=/home/oracle/TimesTen/timesten/info/TT_timesten;DatabaseCharacterSet=US7ASCII;ConnectionCharacterSet=US7ASCII;DRIVER=/home/oracle/TimesTen/timesten/lib/libtten.so;TypeMode=0;&lt;br /&gt;(Default setting AutoCommit=1)&lt;br /&gt;&lt;br /&gt;Command&gt; create user hr identified by 'hr';&lt;br /&gt;Command&gt; grant admin,ddl to hr;&lt;br /&gt;Command&gt; exit&lt;br /&gt;Disconnecting...&lt;br /&gt;Done.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2.) Create TimesTen DSN:&lt;/span&gt;&lt;br /&gt;Need to add the entry of the dsn in the sys.odbc.ini file on the TimesTen server and sys.ttconnect.ini on the TimesTen client.&lt;br /&gt;The file is located at $TIMESTEN_HOME/info&lt;br /&gt;Parameters to be defined:&lt;br /&gt;[myDSN]&lt;br /&gt;Driver=/TimesTen/timesten/lib/libtten.so ##See the default one in the file and use the same path.&lt;br /&gt;Datastore=/TimesTen/data    ##Defined the place where TimesTen can store the cache data.&lt;br /&gt;PermSize=16                ##Defines permanent size of the data store.&lt;br /&gt;TempSize=16                ##Temporary size&lt;br /&gt;UID=hr                    ##TimesTen user you created.&lt;br /&gt;OracleId=hr                ##DB name/tnsnames.ora entry.&lt;br /&gt;OraclePwd=hr                ##Oracle password&lt;br /&gt;DatabaseCharacterSet=AL32UTF8        ##Should be same as the oracle database&lt;br /&gt;&lt;br /&gt;oracle@oracle:~/TimesTen$ sqlplus / as sysdba&lt;br /&gt;SQL*Plus: Release 11.1.0.6.0 - Production on Tue Mar 10 14:18:09 2009&lt;br /&gt;Copyright (c) 1982, 2007, Oracle.  All rights reserved.&lt;br /&gt;Connected to:&lt;br /&gt;Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production&lt;br /&gt;With the Partitioning, Oracle Label Security, OLAP, Data Mining,&lt;br /&gt;Oracle Database Vault and Real Application Testing options&lt;br /&gt;&lt;br /&gt;SQL&gt; SELECT value FROM nls_database_parameters WHERE parameter='NLS_CHARACTERSET';&lt;br /&gt;VALUE&lt;br /&gt;--------------------------------------------------------------------------------&lt;br /&gt;AL32UTF8&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3.) Create oracle tables:&lt;/span&gt;&lt;br /&gt;As we are using the HR schema, we will use the following tables:&lt;br /&gt;COUNTRIES&lt;br /&gt;DEPARTMENTS&lt;br /&gt;EMPLOYEES&lt;br /&gt;EMP_DETAILS_VIEW&lt;br /&gt;JOBS&lt;br /&gt;JOB_HISTORY&lt;br /&gt;LOCATIONS&lt;br /&gt;REGIONS&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;4.) Create the cache group:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;VERY IMPORTANT THING TO REMEMBER:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;Make sure that your environment has the correct location of the TNS_ADMIN variable. That means it points to the correct tnsnames.ora.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;In my case I had both 10g and 11g installed and had a problem with the location and was receiving the following error(ORA-12154):&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt; 5220: Permanent Oracle connection failure error in OCIServerAttach(): ORA-12154: TNS:could not resolve the connect identifier specified rc = -1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt; 5935: Could not validate Oracle login: uid = hr, pwd = HIDDEN, oracleId = hr&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;oracle@oracle:~/product/11g/db$ ttIsql myDSN&lt;br /&gt;Copyright (c) 1996-2008, Oracle.  All rights reserved.&lt;br /&gt;Type ? or "help" for help, type "exit" to quit ttIsql.&lt;br /&gt;All commands must end with a semicolon character.&lt;br /&gt;connect "DSN=myDSN";&lt;br /&gt;Enter password for 'hr':&lt;br /&gt;Connection successful: DSN=myDSN;UID=hr;DataStore=/home/oracle/TimesTen/data;DatabaseCharacterSet=AL32UTF8;ConnectionCharacterSet=US7ASCII;DRIVER=/home/oracle/TimesTen/timesten/lib/libtten.so;OracleId=test;PermSize=16;TempSize=16;TypeMode=0;&lt;br /&gt;(Default setting AutoCommit=1)&lt;br /&gt;&lt;br /&gt;Command&gt; call ttCacheUidPwdSet('hr','hr');&lt;br /&gt;&lt;br /&gt;Command&gt; call ttCacheStart;&lt;br /&gt;&lt;br /&gt;Command&gt; CREATE READONLY CACHE GROUP EMP_IN_MEM&lt;br /&gt;&gt; AUTOREFRESH INTERVAL 5 SECONDS&lt;br /&gt;&gt; FROM EMPLOYEES&lt;br /&gt;&gt; (EMPLOYEE_ID NUMBER(6) NOT NULL PRIMARY KEY,FIRST_NAME VARCHAR2(20),LAST_NAME VARCHAR2(25) NOT NULL,EMAIL VARCHAR2(25) NOT NULL);&lt;br /&gt;&lt;br /&gt;Command&gt; LOAD CACHE GROUP EMP_IN_MEM COMMIT EVERY 256 ROWS;&lt;br /&gt;107 cache instances affected.&lt;br /&gt;&lt;br /&gt;Command&gt; cachegroups;&lt;br /&gt;&lt;br /&gt;Cache Group HR.EMP_IN_MEM:&lt;br /&gt;&lt;br /&gt;Cache Group Type: Read Only&lt;br /&gt;Autorefresh: Yes&lt;br /&gt;Autorefresh Mode: Incremental&lt;br /&gt;Autorefresh State: On&lt;br /&gt;Autorefresh Interval: 5 Seconds&lt;br /&gt;&lt;br /&gt;Root Table: HR.EMPLOYEES&lt;br /&gt;Table Type: Read Only&lt;br /&gt;&lt;br /&gt;1 cache group found.&lt;br /&gt;&lt;br /&gt;Command&gt; select count(*) from EMPLOYEES;&lt;br /&gt;107&lt;br /&gt;1 row found.&lt;br /&gt;Command&gt; select * from EMPLOYEES;&lt;br /&gt;100, Steven, King, SKING&lt;br /&gt;101, Neena, Kochhar, NKOCHHAR&lt;br /&gt;102, Lex, De Haan, LDEHAAN&lt;br /&gt;103, Alexander, Hunold, AHUNOLD&lt;br /&gt;104, Bruce, Ernst, BERNST&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;So we were successfully able to create a read only cache group.&lt;br /&gt;&lt;br /&gt;To test further, lets add data in the oracle database, as of now the table has 107 rows.&lt;br /&gt;&lt;br /&gt;SQL&gt; insert into employees values (500,'Apun','Hiran','me@me.com','1111111111','01-JAN-2007','AD_PRES',50000,NULL,NULL,NULL);&lt;br /&gt;1 row created.&lt;br /&gt;SQL&gt; insert into employees values (501,'Rick','Smith','ricksmith@me.com','1234567891','01-JAN-2007','AD_PRES',50000,NULL,NULL,NULL);&lt;br /&gt;1 row created.&lt;br /&gt;SQL&gt; commit;&lt;br /&gt;Commit complete.&lt;br /&gt;&lt;br /&gt;We added 2 rows. Lets see if the record count in TimesTen has changed.&lt;br /&gt;&lt;br /&gt;oracle@oracle:~/product/11g/db$ ttIsql myDSN&lt;br /&gt;Copyright (c) 1996-2008, Oracle.  All rights reserved.&lt;br /&gt;Type ? or "help" for help, type "exit" to quit ttIsql.&lt;br /&gt;All commands must end with a semicolon character.&lt;br /&gt;connect "DSN=myDSN";&lt;br /&gt;Enter password for 'hr':&lt;br /&gt;Connection successful: DSN=myDSN;UID=hr;DataStore=/home/oracle/TimesTen/data;DatabaseCharacterSet=AL32UTF8;ConnectionCharacterSet=US7ASCII;DRIVER=/home/oracle/TimesTen/timesten/lib/libtten.so;OracleId=test;PermSize=16;TempSize=16;TypeMode=0;&lt;br /&gt;(Default setting AutoCommit=1)&lt;br /&gt;&lt;br /&gt;Command&gt; select count(*) from EMPLOYEES;&lt;br /&gt;109&lt;br /&gt;1 row found.&lt;br /&gt;&lt;br /&gt;Command&gt; select * from EMPLOYEES where EMPLOYEE_ID in (500,501);&lt;br /&gt;500, Apun, Hiran, me@me.com&lt;br /&gt;501, Rick, Smith, ricksmith@me.com&lt;br /&gt;&lt;br /&gt;2 rows found.&lt;br /&gt;Command&gt;&lt;br /&gt;&lt;br /&gt;This completed the testing for our cache group!!!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4092304359380397372-6296056705482318704?l=apunhiran.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apunhiran.blogspot.com/feeds/6296056705482318704/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4092304359380397372&amp;postID=6296056705482318704' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/6296056705482318704'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/6296056705482318704'/><link rel='alternate' type='text/html' href='http://apunhiran.blogspot.com/2009/03/how-to-create-cache-group-in-timesten.html' title='How To Create Cache Group in TimesTen'/><author><name>Apun Hiran</name><uri>http://www.blogger.com/profile/04745021360458270341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_viek7Sw5RrM/R_yAZoPGqYI/AAAAAAAAAIM/eS3VxJ7S2Pc/S220/IMG_0042.JPG'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4092304359380397372.post-419835521449739685</id><published>2009-03-10T10:16:00.004+05:30</published><updated>2009-03-30T07:36:26.289+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='apunhiran'/><category scheme='http://www.blogger.com/atom/ns#' term='in-memory'/><category scheme='http://www.blogger.com/atom/ns#' term='install'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='hiran'/><category scheme='http://www.blogger.com/atom/ns#' term='cache'/><category scheme='http://www.blogger.com/atom/ns#' term='memory'/><category scheme='http://www.blogger.com/atom/ns#' term='in'/><category scheme='http://www.blogger.com/atom/ns#' term='timesten'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><category scheme='http://www.blogger.com/atom/ns#' term='apun'/><title type='text'>Start/Stop TimesTen</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;b&gt;To Start/Stop/Restart Timesten:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;oracle@oracle:~/TimesTen/timesten/startup$ ./tt_timesten&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;USAGE: ./tt_timesten { start | stop | restart }&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;oracle@oracle:~/TimesTen/timesten/startup$ ps -ef|grep times&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;oracle    8187     1  0 12:14 ?        00:00:00 /home/oracle/TimesTen/timesten/bin/timestend -initfd 13&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;oracle    8190  8187  0 12:14 ?        00:00:00 /timesten/bin/timestensubd -verbose -userlog tterrors.log -supportlog ttmesg.log -id 0 -facility user -accctl&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;oracle    8191  8187  0 12:14 ?        00:00:00 /timesten/bin/timestensubd -verbose -userlog tterrors.log -supportlog ttmesg.log -id 1 -facility user -accctl&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;oracle    8192  8187  0 12:14 ?        00:00:00 /timesten/bin/timestensubd -verbose -userlog tterrors.log -supportlog ttmesg.log -id 2 -facility user -accctl&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;oracle    8193  8187  0 12:14 ?        00:00:00 /timesten/bin/timestensubd -verbose -userlog tterrors.log -supportlog ttmesg.log -id 3 -facility user -accctl&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;oracle    8194  8187  0 12:14 ?        00:00:00 /timesten/bin/timestenws -verbose -userlog tterrors.log -supportlog ttmesg.log -id 4 -facility user -accctl&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;oracle    8196  8187  0 12:14 ?        00:00:00 /timesten/bin/ttcserver -verbose -userlog tterrors.log -supportlog ttmesg.log -id 5 -p 17002 -facility user -accctl&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;oracle   10252  7344  0 12:48 pts/2    00:00:00 grep times&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;&lt;br /&gt;oracle@oracle:~/TimesTen/timesten/startup$ ./tt_timesten stop&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Stopping TimesTen Daemon : [  OK  ]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;&lt;br /&gt;oracle@oracle:~/TimesTen/timesten/startup$ ps -ef|grep times&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;oracle   10322  7344  0 12:49 pts/2    00:00:00 grep times&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;&lt;br /&gt;oracle@oracle:~/TimesTen/timesten/startup$ ./tt_timesten start&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Starting TimesTen Daemon : [  OK  ]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;oracle@oracle:~/TimesTen/timesten/startup$ ps -ef|grep times&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;oracle   10338     1  0 12:49 ?        00:00:00 /timesten/bin/timestend -initfd 13&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;oracle   10341 10338  0 12:49 ?        00:00:00 /timesten/bin/timestensubd -verbose -userlog tterrors.log -supportlog ttmesg.log -id 0 -facility user -accctl&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;oracle   10342 10338  0 12:49 ?        00:00:00 /timesten/bin/timestensubd -verbose -userlog tterrors.log -supportlog ttmesg.log -id 1 -facility user -accctl&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;oracle   10343 10338  0 12:49 ?        00:00:00 /timesten/bin/timestensubd -verbose -userlog tterrors.log -supportlog ttmesg.log -id 2 -facility user -accctl&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;oracle   10346 10338  0 12:49 ?        00:00:00 /timesten/bin/timestensubd -verbose -userlog tterrors.log -supportlog ttmesg.log -id 3 -facility user -accctl&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;oracle   10352 10338  0 12:49 ?        00:00:00 /timesten/bin/timestenws -verbose -userlog tterrors.log -supportlog ttmesg.log -id 4 -facility user -accctl&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;oracle   10360 10338  0 12:49 ?        00:00:00 /timesten/bin/ttcserver -verbose -userlog tterrors.log -supportlog ttmesg.log -id 5 -p 17002 -facility user -accctl&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;oracle   10406  7344  0 12:49 pts/2    00:00:00 grep times&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;&lt;br /&gt;oracle@oracle:~/TimesTen/timesten/startup$ ./tt_timesten restart&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Stopping TimesTen Daemon : [  OK  ]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Starting TimesTen Daemon : [  OK  ]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4092304359380397372-419835521449739685?l=apunhiran.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apunhiran.blogspot.com/feeds/419835521449739685/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4092304359380397372&amp;postID=419835521449739685' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/419835521449739685'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/419835521449739685'/><link rel='alternate' type='text/html' href='http://apunhiran.blogspot.com/2009/03/startstop-timesten.html' title='Start/Stop TimesTen'/><author><name>Apun Hiran</name><uri>http://www.blogger.com/profile/04745021360458270341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_viek7Sw5RrM/R_yAZoPGqYI/AAAAAAAAAIM/eS3VxJ7S2Pc/S220/IMG_0042.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4092304359380397372.post-8975512049926202588</id><published>2009-03-10T09:48:00.005+05:30</published><updated>2009-03-30T07:36:06.098+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='apunhiran'/><category scheme='http://www.blogger.com/atom/ns#' term='in-memory'/><category scheme='http://www.blogger.com/atom/ns#' term='install'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='hiran'/><category scheme='http://www.blogger.com/atom/ns#' term='cache'/><category scheme='http://www.blogger.com/atom/ns#' term='memory'/><category scheme='http://www.blogger.com/atom/ns#' term='in'/><category scheme='http://www.blogger.com/atom/ns#' term='timesten'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><category scheme='http://www.blogger.com/atom/ns#' term='apun'/><title type='text'>Installation of TimesTen 7.0.5 - Oracle In-Memory Database Cache</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;You can download the latest version from &lt;a href="http://www.oracle.com/technology/software/products/timesten/index.html"&gt;TimesTen Download&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;unzip timesten70500.linux86.tar.zip&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;tar -xvf timesten70500.linux86.tar&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;oracle@oracle:~/software/linux86$ ls&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;3rdparty  behaviorchanges.txt  doc  install.pl  LINUX86  README.html  setup.sh  uninst.sh&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;oracle@oracle:~/software/linux86$&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;oracle@oracle:~/software/linux86$ ./setup.sh&lt;/span&gt;&lt;br /&gt;&lt;!-- google_ad_section_start --&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;NOTE: Each TimesTen installation is identified by a unique instance name.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;      The instance name must be a non-null alphanumeric string, not longer&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;      than 255 characters.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Please choose an instance name for this installation? [ tt70 ] timesten&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Instance name will be 'timesten'.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Is this correct? [ yes ] yes&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Please select a product :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  [1] Oracle TimesTen In-Memory Database&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  [2] Oracle In-Memory Database Cache&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Which product would you like to install? [ 1 ] 2&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Of the three components:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  [1] Client/Server and Data Manager&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  [2] Data Manager Only&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  [3] Client Only&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Which would you like to install? [ 1 ]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Where would you like to install the timesten instance of TimesTen? [ /home/oracle ] /home/oracle/TimesTen&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Where would you like to create the daemon home directory? [ /home/oracle/TimesTen/timesten/info ]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;The directory /home/oracle/TimesTen/timesten/info does not exist.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Do you want to create it? [ yes ]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Installing into /home/oracle/TimesTen/timesten ...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Uncompressing ...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;The TimesTen Demo applications can take up to 64 Mbytes of disk space.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Depending on how your system is configured, you may not want to create the&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;DemoDataStore directory in the default location,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;/home/oracle/TimesTen/timesten/info/DemoDataStore&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Where would you like to create the DemoDataStore directory? [ /home/oracle/TimesTen/timesten/info ]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Creating /home/oracle/TimesTen/timesten/info/DemoDataStore ...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;NOTE: All installations that replicate to each other must use the same daemon&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;      port number that is set at installation time. The daemon port number can&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;      be verified by running 'ttVersion'.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;The default port number is 17000.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Do you want to use the default port number for the TimesTen daemon? [ yes ]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;The daemon will run on the default port number (17000).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Processing /home/oracle/TimesTen/timesten/PERL/perl.tar ...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Would you like to enable datastore access control? [ no ] yes&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;The daemon logs will be located in /home/oracle/TimesTen/timesten/info&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Would you like to specify a different location for the daemon logs? [ no ]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;The following variables have been set in the file :&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;/home/oracle/TimesTen/timesten/bin/ttThunk&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;ORACLE_HOME=/home/oracle/product/10.2/db&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;LD_LIBRARY_PATH=/home/oracle/TimesTen/timesten/lib:/home/oracle/product/10.2/db/lib32:/home/oracle/product/10.2/db/network/lib32:/home/oracle/product/10.2/db/lib:/home/oracle/product/10.2/db/network/lib&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Would you like to enable the Cache Connect to Oracle Administrator? [ yes ]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;What TCP/IP port number would you like Cache Connect to Oracle Administrator to listen on? [ 17004 ]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;NOTE: To access the TimesTen Cache Connect to Oracle Administrator&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;      go to the url: http://localhost:17004/cache&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;NOTE: It appears that you are running version 4.1 of the g++&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;      compiler. TimesTen ships with multiple sets of client libraries and server&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;      binaries : one built with g++ 3.2.3, one with g++ 3.4.6, and one with&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;      g++ 4.1.0. The installer has created links to the 4.1.0 library in the&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;      &lt;install_dir&gt;/lib directory and to the 4.1.0 server binary in the&lt;/install_dir&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;      &lt;install_dir&gt;/bin directory. If you want to use a different compiler,&lt;/install_dir&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;      please modify the links to point to the desired library and server binary.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Installing server components ...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Would you like to log all server Connects/Disconnects? [ yes ]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;What is the TCP/IP port number that you want the TimesTen Server to listen on? [ 17002 ]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Starting the daemon ...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;TimesTen Daemon startup OK.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Installing client components ...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;What is the name of the host running the TimesTen server? [ oracle ]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;What is the TCP/IP port number that the TimesTen server is listening on? [ 17002 ]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;What is the name of the instance running the TimesTen server? [ timesten ]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Creating new /home/oracle/TimesTen/timesten/info/sys.ttconnect.ini&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Extracting 3rd party tools ...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Would you like to install the documentation? [ yes ]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Where would you like to create the doc directory (s=skip)? [ /home/oracle/TimesTen/timesten/doc ]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;The directory /home/oracle/TimesTen/timesten/doc does not exist.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Do you want to create it? [ yes ]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;NOTE: The TimesTen daemon startup/shutdown scripts have not been installed.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Run the script '/home/oracle/TimesTen/timesten/bin/setuproot' as root.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;This will move the TimesTen startup script into its appropriate location.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;The startup script is currently located here :&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;  '/home/oracle/TimesTen/timesten/startup/tt_timesten'.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;End of TimesTen installation.&lt;/span&gt;&lt;/span&gt;&lt;!-- google_ad_section_end --&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4092304359380397372-8975512049926202588?l=apunhiran.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://apunhiran.blogspot.com/feeds/8975512049926202588/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4092304359380397372&amp;postID=8975512049926202588' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/8975512049926202588'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4092304359380397372/posts/default/8975512049926202588'/><link rel='alternate' type='text/html' href='http://apunhiran.blogspot.com/2009/03/installation-of-timesten-705-oracle-in.html' title='Installation of TimesTen 7.0.5 - Oracle In-Memory Database Cache'/><author><name>Apun Hiran</name><uri>http://www.blogger.com/profile/04745021360458270341</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_viek7Sw5RrM/R_yAZoPGqYI/AAAAAAAAAIM/eS3VxJ7S2Pc/S220/IMG_0042.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4092304359380397372.post-8608055945632339916</id><published>2008-09-08T12:04:00.007+05:30</published><updated>2009-03-30T07:35:37.652+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='report_tuning_task'/><category scheme='http://www.blogger.com/atom/ns#' term='apunhiran'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle tuning'/><category scheme='http://www.blogger.com/atom/ns#' term='dbms_sqltune'/><category scheme='http://www.blogger.com/atom/ns#' term='execute_tuning_task'/><category scheme='http://www.blogger.com/atom/ns#' term='hiran'/><category scheme='http://www.blogger.com/atom/ns#' term='CREATE_TUNING_TASK'/><category scheme='http://www.blogger.com/atom/ns#' term='apun'/><title type='text'>dbms_sqltune usage example</title><content type='html'>1.) Find the SQL_ID from v$session.&lt;br /&gt;select sid,serial#,sql_id from v$session where username='THE USER U ARE USING TO RUN THE SQL';&lt;br /&gt;In our case it is d6w2vs1p33qrn.&lt;br /&gt;&lt;br /&gt;2.) Now create the tuning task:&lt;br /&gt;&lt;br /&gt;set serveroutput on&lt;br /&gt;set long 10000 longchunksize 5000&lt;br /&gt;DECLARE&lt;br /&gt; my_task_name VARCHAR2(30);&lt;br /&gt;BEGIN&lt;br /&gt; my_task_name := DBMS_SQLTUNE.CREATE_TUNING_TASK(&lt;br /&gt;                          sql_id =&gt; 'd6w2vs1p33qrn',&lt;br /&gt;                          scope =&gt; 'COMPREHENSIVE',&lt;br /&gt;                          time_limit =&gt; 3000,&lt;br /&gt;                          task_name =&gt; 'd6w2vs1p33qrn_tune',&lt;br /&gt;                          description =&gt; 'Task to tune a query');&lt;br /&gt;END;&lt;br /&gt;/&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Errors:DECLARE&lt;br /&gt;*&lt;br /&gt;ERROR at line 1:&lt;br /&gt;ORA-13616: The current user SCOTT has not been granted the ADVISOR privilege.&lt;br /&gt;ORA-06512: at "SYS.DBMS_SQLTUNE", line 791&lt;br /&gt;ORA-06512: at line 4&lt;br /&gt;&lt;br /&gt;3.) Grant advisor privilege to the user.&lt;br /&gt;&lt;br /&gt;4.) Now execute the sql tune task:&lt;br /&gt;&lt;br /&gt;exec dbms_sqltune.execute_tuning_task('d6w2vs1p33qrn_tune');&lt;br /&gt;This is take sometime to run.&lt;br /&gt;&lt;br /&gt;5.) Now check what the task has to say:&lt;br /&gt;set long 20000&lt;br /&gt;set longchunksize 20000&lt;br /&gt;set linesize 400&lt;br /&gt;select dbms_sqltune.report_tuning_task('d6w2vs1p33qrn_tune') from dual;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;DBMS_SQLTUNE.REPORT_TUNING_TASK('D6W2VS1P33QRN_TUNE')&lt;br /&gt;----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;GENERAL INFORMATION SECTION&lt;br /&gt;-------------------------------------------------------------------------------&lt;br /&gt;Tuning Task Name                  : d6w2vs1p33qrn_tune&lt;br /&gt;Tuning Task Owner                 : SCOTT&lt;br /&gt;Scope                             : COMPREHENSIVE&lt;br /&gt;Time Limit(seconds)               : 3000&lt;br /&gt;Completion Status                 : COMPLETED&lt;br /&gt;Started at                        : 09/07/2008 23:51:33&lt;br /&gt;Completed at                      : 09/08/2008 00:08:44&lt;br /&gt;Number of Statistic Findings      : 7&lt;br /&gt;Number of SQL Profile Findings    : 1&lt;br /&gt;&lt;br /&gt;-------------------------------------------------------------------------------&lt;br /&gt;Schema Name: SCOTT&lt;br /&gt;SQL ID     : d6w2vs1p33qrn&lt;br /&gt;SQL Text   : select  /*+ ordered INDEX(A,IDX_MV2_ACCT4) PARALLEL(a,2)&lt;br /&gt;            INDEX(C,IDX_TAB29) parallel(C,10) INDEX(U,IDX_TAB39)&lt;br /&gt;            PARALLEL(U,10) */&lt;br /&gt;            C.AD_GRP_ID,&lt;br /&gt;            C.ACCT_ID,&lt;br /&gt;            C.CRTV_ID,&lt;br /&gt;            C.SS_WEIGHT,&lt;br /&gt;            C.SS_RANK,&lt;br /&gt;            C.SS_ROTATION_FLG,&lt;br /&gt;            C.CM_WEIGHT,&lt;br /&gt;            C.CM_RANK,&lt;br /&gt;            C.CM_ROTATION_FLG,&lt;br /&gt;            C.TITLE,&lt;br /&gt;            C.DESCR,&lt;br /&gt;            C.SHORT_DESCR,&lt;br /&gt;            C.DISPLAY_URL,&lt;br /&gt;            C.CRTV_TMPLT_ID,&lt;br /&gt;            C.EXPLODED_FLG,&lt;br /&gt;            C.STATUS,&lt;br /&gt;            C.EDIT_STATUS,&lt;br /&gt;            C.LANG_ID C_LANG_ID,&lt;br /&gt;            C.CRTV_RATING,&lt;br /&gt;            pkg_distro_utils.cast_Unsigned(U.URL_ID) as URL_ID,&lt;br /&gt;            U.LANG_ID U_LANG_ID,&lt;br /&gt;            U.URL_RATING,&lt;br /&gt;            A.MARKET_ID,&lt;br /&gt;            pkg_distro_utils.get_unixtimestamp(C.LAST_UPD) as LAST_UPD&lt;br /&gt;            from am.TAB1 A&lt;br /&gt;            inner join TAB2 C on C.ACCT_ID = A.ACCT_ID&lt;br /&gt;            inner join TAB3 U&lt;br /&gt;            on U.ACCT_ID = C.ACCT_ID and U.URL_ID = C.URL_ID&lt;br /&gt;            and U.POD_ID = C.POD_ID --Ticket# 81628&lt;br /&gt;            where C.status &lt;&gt; 3&lt;br /&gt;            order by C.AD_GRP_ID&lt;br /&gt;&lt;br /&gt;-------------------------------------------------------------------------------&lt;br /&gt;FINDINGS SECTION (8 findings)&lt;br /&gt;-------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;1- Statistics Finding&lt;br /&gt;---------------------&lt;br /&gt; Optimizer statistics for index "SCOTT"."IDX_TAB39" are stale.&lt;br /&gt;&lt;br /&gt; Recommendation&lt;br /&gt; --------------&lt;br /&gt; - Consider collecting optimizer statistics for this index.&lt;br /&gt;   execute dbms_stats.gather_index_stats(ownname =&gt; 'SCOTT', indname =&gt;&lt;br /&gt;           'IDX_TAB39', estimate_percent =&gt; DBMS_STATS.AUTO_SAMPLE_SIZE);&lt;br /&gt;&lt;br /&gt; Rationale&lt;br /&gt; ---------&lt;br /&gt;   The optimizer requires up-to-date statistics for the index in order to&lt;br /&gt;   select a good execution plan.&lt;br /&gt;&lt;br /&gt;2- Statistics Finding&lt;br /&gt;---------------------&lt;br /&gt; Optimizer statistics for index "SCOTT"."IDX_TAB32" are stale.&lt;br /&gt;&lt;br /&gt; Recommendation&lt;br /&gt; --------------&lt;br /&gt; - Consider collecting optimizer statistics for this index.&lt;br /&gt;   execute dbms_stats.gather_index_stats(ownname =&gt; 'SCOTT', indname =&gt;&lt;br /&gt;           'IDX_TAB32', estimate_percent =&gt; DBMS_STATS.AUTO_SAMPLE_SIZE);&lt;br /&gt;&lt;br /&gt; Rationale&lt;br /&gt; ---------&lt;br /&gt;   The optimizer requires up-to-date statistics for the index in order to&lt;br /&gt;   select a good execution plan.&lt;br /&gt;&lt;br /&gt;3- Statistics Finding&lt;br /&gt;---------------------&lt;br /&gt; Optimizer statistics for index "SCOTT"."IDX_TAB35" are stale.&lt;br /&gt;&lt;br /&gt; Recommendation&lt;br /&gt; --------------&lt;br /&gt; - Consider collecting optimizer statistics for this index.&lt;br /&gt;   execute dbms_stats.gather_index_stats(ownname =&gt; 'SCOTT', indname =&gt;&lt;br /&gt;           'IDX_TAB35', estimate_percent =&gt; DBMS_STATS.AUTO_SAMPLE_SIZE);&lt;br /&gt;&lt;br /&gt; Rationale&lt;br /&gt; ---------&lt;br /&gt;   The optimizer requires up-to-date statistics for the index in order to&lt;br /&gt;   select a good execution plan.&lt;br /&gt;&lt;br /&gt;4- Statistics Finding&lt;br /&gt;---------------------&lt;br /&gt; Optimizer statistics for table "SCOTT"."TAB3" and its indices are stale.&lt;br /&gt;&lt;br /&gt; Recommendation&lt;br /&gt; --------------&lt;br /&gt; - Consider collecting optimizer statistics for this table.&lt;br /&gt;   execute dbms_stats.gather_table_stats(ownname =&gt; 'SCOTT', tabname =&gt;&lt;br /&gt;           'TAB3', estimate_percent =&gt; DBMS_STATS.AUTO_SAMPLE_SIZE,&lt;br /&gt;           method_opt =&gt; 'FOR ALL COLUMNS SIZE AUTO');&lt;br /&gt;&lt;br /&gt; Rationale&lt;br /&gt; ---------&lt;br /&gt;   The optimizer requires up-to-date statistics for the table in order to&lt;br /&gt;   select a good execution plan.&lt;br /&gt;&lt;br /&gt;5- Statistics Finding&lt;br /&gt;---------------------&lt;br /&gt; Optimizer statistics for index "SCOTT"."IDX_TAB27" are stale.&lt;br /&gt;&lt;br /&gt; Recommendation&lt;br /&gt; --------------&lt;br /&gt; - Consider collecting optimizer statistics for this index.&lt;br /&gt;   execute dbms_stats.gather_index_stats(ownname =&gt; 'SCOTT', indname =&gt;&lt;br /&gt;           'IDX_TAB27', estimate_percent =&gt; DBMS_STATS.AUTO_SAMPLE_SIZE);&lt;br /&gt;&lt;br /&gt; Rationale&lt;br /&gt; ---------&lt;br /&gt;   The optimizer requires up-to-date statistics for the index in order to&lt;br /&gt;   select a good execution plan.&lt;br /&gt;&lt;br /&gt;6- Statistics Finding&lt;br /&gt;---------------------&lt;br /&gt; Optimizer statistics for index "SCOTT"."IDX_TAB21" are stale.&lt;br /&gt;&lt;br /&gt; Recommendation&lt;br /&gt; --------------&lt;br /&gt; - Consider collecting optimizer statistics for this index.&lt;br /&gt;   execute dbms_stats.gather_index_stats(ownname =&gt; 'SCOTT', indname =&gt;&lt;br /&gt;           'IDX_TAB21', estimate_percent =&gt; DBMS_STATS.AUTO_SAMPLE_SIZE);&lt;br /&gt;&lt;br /&gt; Rationale&lt;br /&gt; ---------&lt;br /&gt;   The optimizer requires up-to-date statistics for the index in order to&lt;br /&gt;   select a good execution plan.&lt;br /&gt;&lt;br /&gt;7- Statistics Finding&lt;br /&gt;---------------------&lt;br /&gt; Optimizer statistics for table "SCOTT"."TAB2" and its indices are stale.&lt;br /&gt;&lt;br /&gt; Recommendation&lt;br /&gt; --------------&lt;br /&gt; - Consider collecting optimizer statistics for this table.&lt;br /&gt;   execute dbms_stats.gather_table_stats(ownname =&gt; 'SCOTT', tabname =&gt;&lt;br /&gt;           'TAB2', estimate_percent =&gt; DBMS_STATS.AUTO_SAMPLE_SIZE,&lt;br /&gt;           method_opt =&gt; 'FOR ALL COLUMNS SIZE AUTO');&lt;br /&gt;&lt;br /&gt; Rationale&lt;br /&gt; ---------&lt;br /&gt;   The optimizer requires up-to-date statistics for the table in order to&lt;br /&gt;   select a good execution plan.&lt;br /&gt;&lt;br /&gt;8- SQL Profile Finding (see explain plans section below)&lt;br /&gt;--------------------------------------------------------&lt;br /&gt; A potentially better execution plan was found for this statement.&lt;br /&gt;&lt;br /&gt; Recommendation (estimated benefit: 60.25%)&lt;br /&gt; ------------------------------------------&lt;br /&gt; - Consider accepting the recommended SQL profile.&lt;br /&gt;   execute dbms_sqltune.accept_sql_profile(task_name =&gt;&lt;br /&gt;           'd6w2vs1p33qrn_tune', replace =&gt; TRUE);&lt;br /&gt;&lt;br /&gt;-------------------------------------------------------------------------------&lt;br /&gt;EXPLAIN PLANS SECTION&lt;br /&gt;-------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;1- Original With Adjusted Cost&lt;br /&gt;------------------------------&lt;br /&gt;Plan hash value: 3106191583&lt;br /&gt;&lt;br /&gt;------------------------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;| Id  | Operation                                   | Name          | Rows  | Bytes |TempSpc| Cost (%CPU)| Time     | Pstart| Pstop |    TQ  |IN-OUT| PQ Distrib |&lt;br /&gt;------------------------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;|   0 | SELECT STATEMENT                            |               |    92M|    26G|       |  2812K  (1)| 09:22:35 |       |       |        |      |            |&lt;br /&gt;|   1 |  PX COORDINATOR FORCED SERIAL               |               |       |       |       |            |          |       |       |        |      |            |&lt;br /&gt;|   2 |   PX SEND QC (ORDER)                        | :TQ10004      |    92M|    26G|       |  2812K  (1)| 09:22:35 |       |       |  Q1,04 | P-&gt;S | QC (ORDER) |&lt;br /&gt;|   3 |    SORT ORDER BY                            |               |    92M|    26G|    56G|  2812K  (1)| 09:22:35 |       |       |  Q1,04 | PCWP |            |&lt;br /&gt;|   4 |     PX RECEIVE                              |               |    92M|    26G|       |  2068K  (1)| 06:53:37 |       |       |  Q1,04 | PCWP |            |&lt;br /&gt;|   5 |      PX SEND RANGE                          | :TQ10003      |    92M|    26G|       |  2068K  (1)| 06:53:37 |       |       |  Q1,03 | P-&gt;P | RANGE      |&lt;br /&gt;|*  6 |       HASH JOIN BUFFERED                    |               |    92M|    26G|  3266M|  2068K  (1)| 06:53:37 |       |       |  Q1,03 | PCWP |            |&lt;br /&gt;|   7 |        PX RECEIVE                           |               |   751M|    20G|       | 48486   (1)| 00:09:42 |       |       |  Q1,03 | PCWP |            |&lt;br /&gt;|   8 |         PX SEND HASH                        | :TQ10001      |   751M|    20G|       | 48486   (1)| 00:09:42 |       |       |  Q1,01 | P-&gt;P | HASH       |&lt;br /&gt;|   9 |          PX PARTITION HASH ALL              |               |   751M|    20G|       | 48486   (1)| 00:09:42 |     1 |     4 |  Q1,01 | PCWC |            |&lt;br /&gt;|  10 |           INDEX FULL SCAN                   | IDX_TAB39  |   751M|    20G|       | 48486   (1)| 00:09:42 |     1 |    36 |  Q1,01 | PCWP |            |&lt;br /&gt;|  11 |        PX RECEIVE                           |               |    92M|    23G|       |  1717K  (1)| 05:43:31 |       |       |  Q1,03 | PCWP |            |&lt;br /&gt;|  12 |         PX SEND HASH                        | :TQ10002      |    92M|    23G|       |  1717K  (1)| 05:43:31 |       |       |  Q1,02 | P-&gt;P | HASH       |&lt;br /&gt;|* 13 |          HASH JOIN                          |               |    92M|    23G|       |  1717K  (1)| 05:43:31 |       |       |  Q1,02 | PCWP |            |&lt;br /&gt;|  14 |           BUFFER SORT                       |               |       |       |       |            |          |       |       |  Q1,02 | PCWC |            |&lt;br /&gt;|  15 |            PX RECEIVE                       |               |  1915K|    20M|       |   573   (1)| 00:00:07 |       |       |  Q1,02 | PCWP |            |&lt;br /&gt;|  16 |             PX SEND BROADCAST               | :TQ10000      |  1915K|    20M|       |   573   (1)| 00:00:07 |       |       |        | S-&gt;P | BROADCAST  |&lt;br /&gt;|  17 |              INDEX FULL SCAN                | IDX_MV2_ACCT4 |  1915K|    20M|       |   573   (1)| 00:00:07 |       |       |        |      |            |&lt;br /&gt;|  18 |           PX PARTITION HASH ALL             |               |    92M|    22G|       |  1716K  (1)| 05:43:23 |     1 |     4 |  Q1,02 | PCWC |            |&lt;br /&gt;|* 19 |            TABLE ACCESS BY LOCAL INDEX ROWID| TAB2      |    92M|    22G|       |  1716K  (1)| 05:43:23 |     1 |    36 |  Q1,02 | PCWP |            |&lt;br /&gt;|  20 |             INDEX FULL SCAN                 | IDX_TAB29 |   139M|       |       | 15201   (1)| 00:03:03 |     1 |    36 |  Q1,02 | PCWP |            |&lt;br /&gt;------------------------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;Predicate Information (identified by operation id):&lt;br /&gt;---------------------------------------------------&lt;br /&gt;&lt;br /&gt;  6 - access("U"."ACCT_ID"="C"."ACCT_ID" AND "U"."URL_ID"="C"."URL_ID" AND "U"."POD_ID"="C"."POD_ID")&lt;br /&gt; 13 - access("C"."ACCT_ID"="A"."ACCT_ID")&lt;br /&gt; 19 - filter("C"."STATUS"&lt;&gt;3)&lt;br /&gt;&lt;br /&gt;2- Original With Adjusted Cost&lt;br /&gt;------------------------------&lt;br /&gt;Plan hash value: 4016845619&lt;br /&gt;&lt;br /&gt;------------------------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;| Id  | Operation                                   | Name          | Rows  | Bytes |TempSpc| Cost (%CPU)| Time     | Pstart| Pstop |    TQ  |IN-OUT| PQ Distrib |&lt;br /&gt;------------------------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;|   0 | SELECT STATEMENT                            |               |    92M|    26G|       |  2812K  (1)| 09:22:35 |       |       |        |      |            |&lt;br /&gt;|   1 |  PX COORDINATOR FORCED SERIAL               |               |       |       |       |            |          |       |       |        |      |            |&lt;br /&gt;|   2 |   PX SEND QC (ORDER)                        | :TQ10004      |    92M|    26G|       |  2812K  (1)| 09:22:35 |       |       |  Q1,04 | P-&gt;S | QC (ORDER) |&lt;br /&gt;|   3 |    SORT ORDER BY                            |               |    92M|    26G|    56G|  2812K  (1)| 09:22:35 |       |       |  Q1,04 | PCWP |            |&lt;br /&gt;|   4 |     PX RECEIVE                              |               |    92M|    26G|       |  2068K  (1)| 06:53:37 |       |       |  Q1,04 | PCWP |            |&lt;br /&gt;|   5 |      PX SEND RANGE                          | :TQ10003      |    92M|    26G|       |  2068K  (1)| 06:53:37 |       |       |  Q1,03 | P-&gt;P | RANGE      |&lt;br /&gt;|*  6 |       HASH JOIN BUFFERED                    |               |    92M|    26G|  3266M|  2068K  (1)| 06:53:37 |       |       |  Q1,03 | PCWP |            |&lt;br /&gt;|   7 |        PX RECEIVE                           |               |   751M|    20G|       | 48486   (1)| 00:09:42 |       |       |  Q1,03 | PCWP |            |&lt;br /&gt;|   8 |         PX SEND HASH                        | :TQ10001      |   751M|    20G|       | 48486   (1)| 00:09:42 |       |       |  Q1,01 | P-&gt;P | HASH       |&lt;br /&gt;|   9 |          PX PARTITION HASH ALL              |               |   751M|    20G|       | 48486   (1)| 00:09:42 |     1 |     4 |  Q1,01 | PCWC |            |&lt;br /&gt;|  10 |           INDEX FULL SCAN                   | IDX_TAB39  |   751M|    20G|       | 48486   (1)| 00:09:42 |     1 |    36 |  Q1,01 | PCWP |            |&lt;br /&gt;|  11 |        PX RECEIVE                           |               |    92M|    23G|       |  1717K  (1)| 05:43:31 |       |       |  Q1,03 | PCWP |            |&lt;br /&gt;|  12 |         PX SEND HASH                        | :TQ10002      |    92M|    23G|       |  1717K  (1)| 05:43:31 |       |       |  Q1,02 | P-&gt;P | HASH       |&lt;br /&gt;|* 13 |          HASH JOIN                          |               |    92M|    23G|       |  1717K  (1)| 05:43:31 |       |       |  Q1,02 | PCWP |            |&lt;br /&gt;|  14 |           BUFFER SORT                       |               |       |       |       |            |          |       |       |  Q1,02 | PCWC |            |&lt;br /&gt;|  15 |            PX RECEIVE                       |               |  1915K|    20M|       |   573   (1)| 00:00:07 |       |       |  Q1,02 | PCWP |            |&lt;br /&gt;|  16 |             PX SEND BROADCAST               | :TQ10000      |  1915K|    20M|       |   573   (1)| 00:00:07 |       |       |        | S-&gt;P | BROADCAST  |&lt;br /&gt;|  17 |              INDEX FULL SCAN                | IDX_MV2_ACCT4 |  1915K|    20M|       |   573   (1)| 00:00:07 |       |       |        |      |            |&lt;br /&gt;|  18 |           PX PARTITION HASH ALL             |               |    92M|    22G|       |  1716
