ÿþ<html> <head> <meta http-equiv="Content-Language" content="en-us"> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> <title>Oracle DBA - Automatic Segment Management for 10g DBA </title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <link href="style.css" rel="stylesheet" type="text/css"> <META NAME="description" content="This section will discuss Automatic Segment Management for 10g DBA. Read on to know more about oracle dba and Automatic Segment Management . "> <META NAME="keywords" content="Automatic Segment Management, oracle dba,Oracle 10g, 10g dba, oracle dba tutorial"> <script type="text/javascript" language="javascript" src="includes/sniffer.js"></script><script type="text/javascript" language="javascript1.2" src="includes/custom.js"></script><script type="text/javascript" language="javascript1.2" src="includes/style.js"></script></head> <body link = "black" topmargin=0 leftmargin=0><script type="text/javascript" language="javascript1.2" src="includes/menu.js"></script> <script src="http://www.google-analytics.com/urchin.js" type="text/javascript"> </script> <script type="text/javascript"> _uacct = "UA-4671442-1"; urchinTracker(); </script> <table align=left border="1" width="100%" id="table1" height="503" cellspacing="1" cellpadding="0"> <tr> <td height="60" bgcolor="E7EFE7" colspan="3" align="Left" valign="top"> <IMG SRC="learn-oracle-header/learn-oracle.jpg" WIDTH="1000" HEIGHT="91" BORDER="0" ALT="learn-oracle"> </tr> <tr> <td width="160" align="left" valign="top" bgcolor="E7EFE7" > <font face="arial" size='2'><a href="oracle_dba_step_1.html">free <B>Oracle DBA</B> tutorial</a> <font size="2" align="right"> <a href="http://oracleonline.info/oracle_jobs.html">Oracle Jobs </a><BR> <a href="http://faq.sparklit.com/main.spark?faqID=1665">Ask A Question </a><BR> <a href="http://oracleonline.info/sql_statement_tuning.html">SQL Statement Tuning </a><br> <a href="http://oracleonline.info/backup_recovery_dba.html">Backup and Recovery Concepts </a><br> <a href="http://oracleonline.info/oracle_11g_new_features.html">Oracle 11g New Features </a><br> <a href="http://oracleonline.info/oracle_e_suite_others.html">Oracle E Suite & Others </a><br> <a href="http://oracleonline.info/Oracle_data_guard_index.html">Oracle Data Guard </a><br> <a href="http://oracleonline.info/faq_for_oracle_dba.html">Oracle DBA FAQ </a><br> <script type="text/javascript"><!-- google_ad_client = "pub-4228419744604469"; google_ad_width = 160; google_ad_height = 600; google_ad_format = "160x600_as"; google_ad_type = "text"; google_ad_channel =""; google_color_border = "E7EFE7"; google_color_bg = "E7EFE7"; google_color_link = "0000ff"; google_color_url = "000000"; google_color_text = "000000"; //--></script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> <BR><BR> <B> <!--%2Chttp%3A%2F%2Fwww.sdparanormal.com%2Ff%2FParanormal_News_Feed.xml --> <!-- RSS News End --> </td> <td align="left" valign="top" bgcolor="E7EFE7" bordercolor="#99CCFF"style="border-style: solid; border-width: 1px; padding-left: 8px; padding-right: 4px; padding-top: 1px; padding-bottom: 1px> <div id="wrapper"> <div id="body"> <div> <div> <div> <div class="inner"> <div class="indent"> <p align="center"></B> <font face="Tahoma" size="2" color="#435C7D"> <BR><BR><BR> <h1 align="center"> Automatic Segment Management </h1><BR></font > <font face="tahoma" size="2"> Manage <B>storage in segments</B> efficiently with Oracle Database 10g by reclaiming wasted space, reorganizing tables online, and estimating growth trends<p> During the vendor's presentation, the feature that registered the biggest "wow" factor in the audience was its support for online reorganizations the product can relocate data blocks to make the equivalent of segments more compact online, without affecting current users. <p> At that time, Oracle did not offer such a capability in Oracle9i Database. But now, with Oracle Database 10g, you can easily reclaim wasted space and compact objects online just for starters. <p> Before examining the feature, however, let's take a look at the "traditional" approach to this task. <p> <H5>Current Practices </H5> Consider a <B>segment</B>, such as a table, where the blocks are filled up as shown in Figure 1. During normal operation, some rows are deleted, as shown in Figure 2. Now we have a lot of wasted space: (i) between the previous end of the table and the existing block and (ii) inside the blocks where some of the rows have not been deleted. <p> <table> <tr> <td> <script type="text/javascript"><!-- google_ad_client = "pub-4228419744604469"; google_ad_width = 200; google_ad_height = 200; google_ad_format = "200x200_as"; google_ad_type = "text_image"; google_ad_channel =""; google_color_border = "E7EFE7"; google_color_bg = "E7EFE7"; google_color_link = "000000"; google_color_url = "000000"; google_color_text = "000000"; //--></script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> <br><br> </td> <td> <IMG SRC="automatic segment 10g/nanda_seg_f1.gif" WIDTH="430" HEIGHT="81" BORDER="0" ALT=""> </td> </tr> </table> Oracle does not release that space for use by other objects for a simple reason: because that space is reserved for new inserts and to accommodate the growth of existing rows. The highest space occupied is known as a High Water Mark (HWM), as shown in Figure 2. <CENTER><IMG SRC="automatic segment 10g/nanda_seg_f2.gif" WIDTH="430" HEIGHT="109" BORDER="0" ALT=""><p> </CENTER> There are two main problems with this approach, however: <p> When a user issues a full table scan, Oracle must scan the <B>segment </B>all the way up to the HWM, even though it does not find anything. This task extends full table scan time. <p> When rows are inserted with direct path for example, through Direct Load Insert (insert with the APPEND hint) or through the SQL*Loader direct path the data blocks are placed directly above the HWM. The space below it remains wasted. In Oracle9i and below, you can reclaim space by dropping the table, recreating it, and then reloading the data; or by moving the table to a different tablespace using the ALTER TABLE MOVE command. Both these processes must occur offline. Alternatively, you can use the online table reorganization feature, but that requires at least double the space of the existing table.<p> In 10g, this task has become trivial; you can now shrink segments, tables, and indexes to reclaim free blocks and give them to the database for other uses, provided that Automatic <B>Segment Space Management (ASSM)</b> is enabled in your tablespace. Let's see how. <p> <H5>Segment Management the 10g Way </H5> Suppose you have a table BOOKINGS, which holds online bookings from the website. After the booking is confirmed, it's stored in an archival table BOOKINGS_HIST and the row is deleted from BOOKINGS. The time between booking and confirmation varies widely among customers, so a lot of rows are inserted above the HWM of the table because sufficient space is not available from the deleted rows.<p> Now you need to reclaim wasted space. First, find out exactly how much space is wasted in that <B>segment </B>that can be reclaimed. Because this is in an ASSM-enabled tablespace, you have to use the procedure SPACE_USAGE of the package DBMS_SPACE, as shown below. <p> declare<br> l_fs1_bytes number;<br> l_fs2_bytes number;<br> l_fs3_bytes number;<br> l_fs4_bytes number;<br> l_fs1_blocks number;<br> l_fs2_blocks number;<br> l_fs3_blocks number;<br> l_fs4_blocks number;<br> l_full_bytes number;<br> l_full_blocks number;<br> l_unformatted_bytes number;<br> l_unformatted_blocks number;<br> begin<br> dbms_space.space_usage(<br> segment_owner => user,<br> segment_name => 'BOOKINGS',<br> segment_type => 'TABLE',<br> fs1_bytes => l_fs1_bytes,<br> fs1_blocks => l_fs1_blocks,<br> fs2_bytes => l_fs2_bytes,<br> fs2_blocks => l_fs2_blocks,<br> fs3_bytes => l_fs3_bytes,<br> fs3_blocks => l_fs3_blocks,<br> fs4_bytes => l_fs4_bytes,<br> fs4_blocks => l_fs4_blocks,<br> full_bytes => l_full_bytes,<br> full_blocks => l_full_blocks,<br> unformatted_blocks => l_unformatted_blocks,<br> unformatted_bytes => l_unformatted_bytes<br> );<br> dbms_output.put_line(' FS1 Blocks = '||l_fs1_blocks||' Bytes = '||l_fs1_bytes);<br> dbms_output.put_line(' FS2 Blocks = '||l_fs2_blocks||' Bytes = '||l_fs2_bytes);<br> dbms_output.put_line(' FS3 Blocks = '||l_fs3_blocks||' Bytes = '||l_fs3_bytes);<br> dbms_output.put_line(' FS4 Blocks = '||l_fs4_blocks||' Bytes = '||l_fs4_bytes);<br> dbms_output.put_line('Full Blocks = '||l_full_blocks||' Bytes = '||l_full_bytes);<br> end;<br> /<br> The output is:<br> FS1 Blocks = 0 Bytes = 0<br> FS2 Blocks = 0 Bytes = 0<br> FS3 Blocks = 0 Bytes = 0<br> FS4 Blocks = 4148 Bytes = 0<br> Full Blocks = 2 Bytes = 16384<br><br> The output shows that there are 4,148 blocks with 75-100% free space (FS4); no other free blocks are available. There are only 2 full blocks. The 4,148 blocks can be recovered. <br><br> Next, you must ensure that the table is row-movement enabled. If it's not, you can enable it with: <br><br> alter table bookings enable row movement;<br><br> or via Enterprise Manager 10g, on the Administration page. You should also ensure that all rowid-based triggers are disabled on this table because the rows are moved and the rowids could change. <br><br> Finally, you can reorganize the existing rows of the table with: <br><br> alter table bookings shrink space compact;<br><br> This command re-distributes the rows inside the blocks as shown in Figure 3, resulting in more free blocks under the HWM but the HWM itself is not disturbed. <br><br> <CENTER><IMG SRC="automatic segment 10g/nanda_seg_f3.gif" WIDTH="430" HEIGHT="109" BORDER="0" ALT=""><br><br> </CENTER> After the operation, let's see the change in space utilization. Using the PL/SQL block shown in the first step, you can see how the blocks are organized now: <br><br> FS1 Blocks = 0 Bytes = 0<br> FS2 Blocks = 0 Bytes = 0<br> FS3 Blocks = 1 Bytes = 0<br> FS4 Blocks = 0 Bytes = 0<br> Full Blocks = 2 Bytes = 16384<br><br> Note the important change here: the number of FS4 blocks (with 75-100% free space) is now 0, down from 4,148. We also see an increase in FS3 blocks (50-75% free space) from 0 to 1. However, because the HWM has not been reset, the total space utilization remains the same. We can check the space used with: <br><br> SQL> select blocks from user_segments where segment_name = 'BOOKINGS';<br><br> BLOCKS<br> ---------<br> 4224<br><br> The number of blocks occupied by the table 4,224 remains the same because the HWM has not moved from its original position. You can move the HWM to a lower position and reclaim the space with alter table bookings shrink space;<br><br> Note that the clause COMPACT is not present. This operation will return the unused blocks to the database and reset the HWM. You can test it by checking the space allocated to the table: <br><br> SQL> select blocks from user_segments where segment_name = 'BOOKINGS';<br><br> BLOCKS<br> ----------<br> 8<br> The number of blocks is down from 4,224 to 8; all the unused space inside the table was returned to the tablespace for use in other segments, as shown in Figure 4. <br><br> <CENTER><IMG SRC="automatic segment 10g/nanda_seg_f4.gif" WIDTH="430" HEIGHT="109" BORDER="0" ALT=""><br><br> </CENTER> This shrink operation occurs completely online and does not affect users. <br><br> You can also compact the indexes of the table in one statement: <br><br> alter table bookings shrink space cascade;<br><br> The online shrink command is a powerful feature for reclaiming wasted space and resetting the HWM. I consider the latter resetting of the HWM the most useful result of this command because it improves the performance of full table scans. <br><br> <H5>Finding Candidates for Shrinking </H5> Before performing an online shrink, you may want to find out the biggest bang-for-the-buck by identifying the segments that can be most fully compressed. Simply use the built-in function verify_shrink_candidate in the package dbms_space. Execute this PL/SQL code to test if the <B>segment </B>can be shrunk to 1,300,000 bytes: <br><br> begin<br> if (dbms_space.verify_shrink_candidate<br> ('ARUP','BOOKINGS','TABLE',1300000)<br> ) then<br> :x := 'T';<br> else<br> :x := 'F';<br> end if;<br> end;<br> /<br><br> PL/SQL procedure successfully completed.<br><br> SQL> print x<br><br> X<br> --------------------------------<br> T<br><br> If you use a low number for the target shrinkage, say 3,000: <br> begin<br> if (dbms_space.verify_shrink_candidate<br> ('ARUP','BOOKINGS','TABLE',30000)<br> ) then<br> :x := 'T';<br> else<br> :x := 'F';<br> end if;<br> end;<br><br> the value of the variable x is set to 'F', meaning the table cannot be shrunk to 3,000 bytes. <br><br> <H5>Taking the Guesswork Out of Index Space Requirements </H5> Now let's say you are about to embark on the task of creating an index on a table, or perhaps a set of tables. Besides the usual structural elements such as columns and uniqueness, the most important thing you have to consider is the expected size of the index you must ensure that the tablespace has enough space to hold the new index. <br><br> With Oracle9i Database and below, many DBAs use tools ranging from spreadsheets to standalone programs to estimate the size of the future index. In 10g, this task has become extremely trivial through the use of the DBMS_SPACE package. Let's see it in action. <br><br> We are asked to create an index on the columns booking_id and cust_name of the table BOOKINGS. How much space does the proposed index need? All you do is execute the following PL/SQL script. <br><br> declare<br> l_used_bytes number;<br> l_alloc_bytes number;<br> begin<br> dbms_space.create_index_cost (<br> ddl => 'create index in_bookings_hist_01 on bookings_hist '||<br> '(booking_id, cust_name) tablespace users',<br> used_bytes => l_used_bytes,<br> alloc_bytes => l_alloc_bytes<br> );<br> dbms_output.put_line ('Used Bytes = '||l_used_bytes);<br> dbms_output.put_line ('Allocated Bytes = '||l_alloc_bytes);<br> end;<br> / <br><br> The output is:<br> Used Bytes = 7501128<br> Allocated Bytes = 12582912<br> Suppose you want to use some parameters that will potentially increase the size of the index for example, specifying an INITRANS parameter of 10. <br><br> declare<br> l_used_bytes number;<br> l_alloc_bytes number;<br> begin<br> dbms_space.create_index_cost (<br> ddl => 'create index in_bookings_hist_01 on bookings_hist '||<br> '(booking_id, cust_name) tablespace users initrans 10',<br> used_bytes => l_used_bytes,<br> alloc_bytes => l_alloc_bytes<br> );<br> dbms_output.put_line ('Used Bytes = '||l_used_bytes);<br> dbms_output.put_line ('Allocated Bytes = '||l_alloc_bytes);<br> end;<br> /<br><br> The output is: <br> Used Bytes = 7501128<br> Allocated Bytes = 13631488<br><br> Note the increase in the allocated bytes from specifying a higher INITRANS. Using this approach you can easily determine the impact of the index on storage space. <br><br> You should be aware of two important caveats, however. First, this process applies only to tablespaces with <B>SEGMENT SPACE MANAGEMENT AUTO</B> turned on. Second, the package calculates the estimated size of the index from the statistics on the table. Hence it's very important to have relatively fresh statistics on the tables. But beware: the absence of statistics on the table will not result in an error in the use of the package, but will yield a wrong result. <br><br> <H5> Estimating Table Size </H5> Suppose there is a table named BOOKINGS_HIST, which has the average row length of 30,000 rows and the PCTFREE parameter of 20. What if you wanted to increase the parameter PCT_FREE to 3 by what amount will the table increase in size? Because 30 is a 10% increase over 20, will the size go up by 10%? Instead of asking your psychic, ask the procedure CREATE_TABLE_COST inside the package DBMS_SPACE. Here is how you can estimate the size: <br><br> declare<br> l_used_bytes number;<br> l_alloc_bytes number;<br> begin<br> dbms_space.create_table_cost (<br> tablespace_name => 'USERS',<br> avg_row_size => 30,<br> row_count => 30000,<br> pct_free => 20,<br> used_bytes => l_used_bytes,<br> alloc_bytes => l_alloc_bytes<br> );<br> dbms_output.put_line('Used: '||l_used_bytes);<br> dbms_output.put_line('Allocated: '||l_alloc_bytes);<br> end;<br> /<br><br> The output is: <br> Used: 1261568<br> Allocated: 2097152<br> Changing the table's PCT_FREE parameter to 30 from 20, by specifying <br> pct_free => 30<br><br> we get the output: <br> Used: 1441792<br> Allocated: 2097152<br><br> Note how the used space has increased from 1,261,568 to 1,441,792 because the PCT_FREE parameter conserves less room in the data block for user data. The increase is about 14%, not 10%, as expected. Using this package you can easily calculate the impact of parameters such as PCT_FREE on the size of the table, or of moving the table to a different tablespace. <br><br> <H5>Predicting the Growth of a Segment</H5> It's holiday weekend and Acme Hotels is expecting a surge in demand. As a DBA, you are trying to understand the demand so that you can ensure there is enough space available. How do you predict the space utilization of the table? <br><br> Just ask 10g; you will be surprised how accurately and intelligently it can make that prediction for you. You simply issue this query: <br> select * from <br> table(dbms_space.OBJECT_GROWTH_TREND <br> ('ARUP','BOOKINGS','TABLE'));<br> The function dbms_space.object_growth_trend() returns record in PIPELINEd format, which can be displayed by the TABLE() casting. Here is the output: <br><br> <pre><font face="tahoma" size="2"> TIMEPOINT SPACE_USAGE SPACE_ALLOC QUALITY ------------------------------ ----------- ----------- ------------ 05-MAR-04 08.51.24.421081 PM 8586959 39124992 INTERPOLATED 06-MAR-04 08.51.24.421081 PM 8586959 39124992 INTERPOLATED 07-MAR-04 08.51.24.421081 PM 8586959 39124992 INTERPOLATED 08-MAR-04 08.51.24.421081 PM 126190859 1033483971 INTERPOLATED 09-MAR-04 08.51.24.421081 PM 4517094 4587520 GOOD 10-MAR-04 08.51.24.421081 PM 127469413 1044292813 PROJECTED 11-MAR-04 08.51.24.421081 PM 128108689 1049697234 PROJECTED 12-MAR-04 08.51.24.421081 PM 128747966 1055101654 PROJECTED 13-MAR-04 08.51.24.421081 PM 129387243 1060506075 PROJECTED 14-MAR-04 08.51.24.421081 PM 130026520 1065910496 PROJECTED </font></pre> The output clearly shows the size of the table BOOKINGS at various times as shown in the column TIMEPOINT, in the TIMESTAMP datatype. The SPACE_ALLOC column shows the bytes allocated to the table and the SPACE_USAGE column shows how many of those bytes have been used. This information is collected by the Automatic Workload Repository, or AWR (see Week 6 of this series), every day. In the above output, the data was collected well on March 9, 2004, as indicated by the value of the column QUALITY - "GOOD." The space allocated and usage figures are accurate for that day. However, for all subsequent days, the value of this column is PROJECTED, indicating that the space calculations are projected from the data collected by the AWR facility not collected directly from the segment. <br><br> Note the values in this column prior to March 9 they are all INTERPOLATED. In other words, the value was not really collected or projected, but simply interpolated from the usage pattern for whatever data is available. Most likely the data was not available at that time and hence the values had to be interpolated. <br><br> <H5>Conclusion </H5> With the availability of <B>segment </B>level manipulations you now have fine-grained control over how space is used inside a segment, which can be exploited to reclaim free space inside a table, reorganize the table rows to make it more compact online, and much more. These facilities help DBAs free themselves from the routine and mundane tasks like table reorganization. The online <B>segment </B>shrink feature is especially helpful in eliminating internal fragmentation and lowering the high water mark of the segment, which can significantly reduce the cost of a full table scan. <br><br> <script type="text/javascript"><!-- google_ad_client = "pub-4228419744604469"; google_ad_width = 200; google_ad_height = 200; google_ad_format = "200x200_as"; google_ad_type = "text_image"; google_ad_channel =""; google_color_border = "E7EFE7"; google_color_bg = "E7EFE7"; google_color_link = "000000"; google_color_url = "000000"; google_color_text = "000000"; //--></script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> <br><br> In Oracle Database 10g, VPD has grown into a very powerful feature with the ability to support a variety of requirements, such as masking columns selectively based on the policy and applying the policy only when certain columns are accessed. The performance of the policy can also be increased through multiple types of policy by exploiting the nature of the application, making the feature applicable to multiple situations. <p> </font> </b><font face="tahoma" size="2"> <P> <A HREF="http://oracleonline.info"> <B>More Tutorials on Oracle dba ...</B></FONT></A> <BR> <BR> Source : <A HREF="http://www.oracle.com/technology/pub/articles/10gdba/week15_10gdba.html" target="_blank">http://www.oracle.com/technology/pub/articles/10gdba/week15_10gdba.html</a> <BR><BR> <!-- Social Bookmarking code starts here --> <!-- * Social Bookmark Script * @ Version 1.9 * @ Copyright (C) 2006-2008 by Alexander Hadj Hassine - All rights reserved * @ Website http://www.social-bookmark-script.com/ * @ * @ By using our script <b> Oracle DBA </b> must leave our copyright notices and the links * @ in the script untouched. The links doesn't be removed, converted, hidden * @ or made invisible. If <b> Oracle DBA </b> set a backlink to http://www.social bookmark script.com/ * @ (at least 1 time "search machines friendly" from the starting side of your web page) * @ <b> Oracle DBA </b> can be adapt the script to <b> Oracle DBA </b> for your purpose changes. --> <a target="_blank" style="text-decoration:none; font-size:11px; font-family:Arial; color: #2A4956;" href="http://www.social-bookmark-script.com/">Liked it ? Want to share it ? Social Bookmarking</a><br> <div style="border-top-style:solid; padding-top:3px; border-top-width: 1px; border-top-color: #2A4956; float: left;"> <script language="JavaScript" type="text/JavaScript"> <!-- function Social_Load() { var d=document; if(d.images){ if(!d.Social) d.Social=new Array(); var i,j=d.Social.length,a=Social_Load.arguments; for(i=0; i<a.length; i++) if (a[i].indexOf("#")!=0){ d.Social[j]=new Image; d.Social[j++].src=a[i];}} } Social_Load('http://www.social-bookmark-script.de/img/bookmarks/wong_trans_ani.gif','http://www.social-bookmark-script.de/img/bookmarks/boni_trans_ani.gif','http://www.social-bookmark-script.de/img/bookmarks/newsider_trans_ani.gif','http://www.social-bookmark-script.de/img/bookmarks/digg_trans_ani.gif','http://www.social-bookmark-script.de/img/bookmarks/del_trans_ani.gif','http://www.social-bookmark-script.de/img/bookmarks/reddit_trans_ani.gif','http://www.social-bookmark-script.de/img/bookmarks/jumptags_trans_ani.gif','http://www.social-bookmark-script.de/img/bookmarks/stumbleupon_trans_ani.gif','http://www.social-bookmark-script.de/img/bookmarks/slashdot_trans_ani.gif','http://www.social-bookmark-script.de/img/bookmarks/netscape_trans_ani.gif','http://www.social-bookmark-script.de/img/bookmarks/furl_trans_ani.gif','http://www.social-bookmark-script.de/img/bookmarks/yahoo_trans_ani.gif','http://www.social-bookmark-script.de/img/bookmarks/spurl_trans_ani.gif','http://www.social-bookmark-script.de/img/bookmarks/google_trans_ani.gif','http://www.social-bookmark-script.de/img/bookmarks/blinklist_trans_ani.gif','http://www.social-bookmark-script.de/img/bookmarks/technorati_trans_ani.gif','http://www.social-bookmark-script.de/img/bookmarks/newsvine_trans_ani.gif','http://www.social-bookmark-script.de/img/bookmarks/what_trans_ani.gif','http://www.social-bookmark-script.de/load.gif') function schnipp() { var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc; } function schnupp(n, d) { var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) { d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);} if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n]; for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=schnupp(n,d.layers[i].document); if(!x && d.getElementById) x=d.getElementById(n); return x; } function schnapp() { var i,j=0,x,a=schnapp.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3) if ((x=schnupp(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];} } //--> </script> <a rel="nofollow" style="text-decoration:none;" href="http://www.mister-wong.de/" onclick="window.open('http://www.mister-wong.de/index.php?action=addurl&amp;bm_url='+encodeURIComponent(location.href)+'&amp;bm_notice=&amp;bm_description='+encodeURIComponent(document.title)+'&amp;bm_tags=');return false;" title="Add to: Mr. Wong" onmouseover="schnapp('wong','','http://www.social-bookmark-script.de/img/bookmarks/wong_trans_ani.gif',1)" onmouseout="schnipp()" > <img style="padding-bottom:1px;" src="http://www.social-bookmark-script.de/img/bookmarks/wong_trans.gif" alt="Add to: Mr. Wong" name="wong" border="0" id="wong"> </a> <a rel="nofollow" style="text-decoration:none;" href="http://www.bonitrust.de/" onclick="window.open('http://www.bonitrust.de/account/bookmark/?bookmark_url='+ unescape(location.href));return false;" title="Add to: BoniTrust" onmouseover="schnapp('Boni','','http://www.social-bookmark-script.de/img/bookmarks/boni_trans_ani.gif',1)" onmouseout="schnipp()" > <img style="padding-bottom:1px;" src="http://www.social-bookmark-script.de/img/bookmarks/boni_trans.gif" alt="Add to: BoniTrust" name="Boni" border="0" id="Boni"> </a> <a rel="nofollow" style="text-decoration:none;" href="http://www.newsider.de/" onclick="window.open('http://www.newsider.de/submit.php?url='+(document.location.href));return false;" title="Add to: Newsider" onmouseover="schnapp('Newsider','','http://www.social-bookmark-script.de/img/bookmarks/newsider_trans_ani.gif',1)" onmouseout="schnipp()" > <img style="padding-bottom:1px;" src="http://www.social-bookmark-script.de/img/bookmarks/newsider_trans.gif" alt="Add to: Newsider" name="Newsider" border="0" id="Newsider"> </a> <a rel="nofollow" style="text-decoration:none;" href="http://digg.com/" onclick="window.open('http://digg.com/submit?phase=2&amp;url='+encodeURIComponent(location.href)+'&amp;bodytext=&amp;tags=&amp;title='+encodeURIComponent(document.title));return false;" title="Add to: Digg" onmouseover="schnapp('Digg','','http://www.social-bookmark-script.de/img/bookmarks/digg_trans_ani.gif',1)" onmouseout="schnipp()" > <img style="padding-bottom:1px;" src="http://www.social-bookmark-script.de/img/bookmarks/digg_trans.gif" alt="Add to: Digg" name="Digg" border="0" id="Digg"> </a> <a rel="nofollow" style="text-decoration:none;" href="http://del.icio.us/" onclick="window.open('http://del.icio.us/post?v=2&amp;url='+encodeURIComponent(location.href)+'&amp;notes=&amp;tags=&amp;title='+encodeURIComponent(document.title));return false;" title="Add to: Del.icio.us" onmouseover="schnapp('Delicious','','http://www.social-bookmark-script.de/img/bookmarks/del_trans_ani.gif',1)" onmouseout="schnipp()" > <img style="padding-bottom:1px;" src="http://www.social-bookmark-script.de/img/bookmarks/del_trans.gif" alt="Add to: Del.icio.us" name="Delicious" border="0" id="Delicious"> </a> <a rel="nofollow" style="text-decoration:none;" href="http://reddit.com/" onclick="window.open('http://reddit.com/submit?url='+encodeURIComponent(location.href)+'&amp;title='+encodeURIComponent(document.title));return false;" title="Add to: Reddit" onmouseover="schnapp('Reddit','','http://www.social-bookmark-script.de/img/bookmarks/reddit_trans_ani.gif',1)" onmouseout="schnipp()" > <img style="padding-bottom:1px;" src="http://www.social-bookmark-script.de/img/bookmarks/reddit_trans.gif" alt="Add to: Reddit" name="Reddit" border="0" id="Reddit"> </a> <a rel="nofollow" style="text-decoration:none;" href="http://www.jumptags.com/" onclick="window.open('http://www.jumptags.com/add/?url='+encodeURIComponent(location.href)+'&amp;title='+encodeURIComponent(document.title));return false;" title="Add to: Jumptags" onmouseover="schnapp('Jumptags','','http://www.social-bookmark-script.de/img/bookmarks/jumptags_trans_ani.gif',1)" onmouseout="schnipp()" > <img style="padding-bottom:1px;" src="http://www.social-bookmark-script.de/img/bookmarks/jumptags_trans.gif" alt="Add to: Jumptags" name="Jumptags" border="0" id="Jumptags"> </a> <a rel="nofollow" style="text-decoration:none;" href="http://www.stumbleupon.com/" onclick="window.open('http://www.stumbleupon.com/submit?url='+encodeURIComponent(location.href)+'&amp;title='+encodeURIComponent(document.title));return false;" title="Add to: StumbleUpon" onmouseover="schnapp('StumbleUpon','','http://www.social-bookmark-script.de/img/bookmarks/stumbleupon_trans_ani.gif',1)" onmouseout="schnipp()" > <img style="padding-bottom:1px;" src="http://www.social-bookmark-script.de/img/bookmarks/stumbleupon_trans.gif" alt="Add to: StumbleUpon" name="StumbleUpon" border="0" id="StumbleUpon"> </a> <a rel="nofollow" style="text-decoration:none;" href="http://slashdot.org/" onclick="window.open('http://slashdot.org/bookmark.pl?url='+encodeURIComponent(location.href)+'&amp;title='+encodeURIComponent(document.title));return false;" title="Add to: Slashdot" onmouseover="schnapp('Slashdot','','http://www.social-bookmark-script.de/img/bookmarks/slashdot_trans_ani.gif',1)" onmouseout="schnipp()" > <img style="padding-bottom:1px;" src="http://www.social-bookmark-script.de/img/bookmarks/slashdot_trans.gif" alt="Add to: Slashdot" name="Slashdot" border="0" id="Slashdot"> </a> <a rel="nofollow" style="text-decoration:none;" href="http://www.netscape.com/" onclick="window.open('http://www.netscape.com/submit/?U='+encodeURIComponent(location.href)+'&amp;T='+encodeURIComponent(document.title));return false;" title="Add to: Netscape" onmouseover="schnapp('Netscape','','http://www.social-bookmark-script.de/img/bookmarks/netscape_trans_ani.gif',1)" onmouseout="schnipp()" > <img style="padding-bottom:1px;" src="http://www.social-bookmark-script.de/img/bookmarks/netscape_trans.gif" alt="Add to: Netscape" name="Netscape" border="0" id="Netscape"> </a> <a rel="nofollow" style="text-decoration:none;" href="http://www.furl.net/" onclick="window.open('http://www.furl.net/storeIt.jsp?u='+encodeURIComponent(location.href)+'&amp;keywords=&amp;t='+encodeURIComponent(document.title));return false;" title="Add to: Furl" onmouseover="schnapp('Furl','','http://www.social-bookmark-script.de/img/bookmarks/furl_trans_ani.gif',1)" onmouseout="schnipp()" > <img style="padding-bottom:1px;" src="http://www.social-bookmark-script.de/img/bookmarks/furl_trans.gif" alt="Add to: Furl" name="Furl" border="0" id="Furl"> </a> <a rel="nofollow" style="text-decoration:none;" href="http://www.yahoo.com/" onclick="window.open('http://myweb2.search.yahoo.com/myresults/bookmarklet?t='+encodeURIComponent(document.title)+'&amp;d=&amp;tag=&amp;u='+encodeURIComponent(location.href));return false;" title="Add to: Yahoo" onmouseover="schnapp('Yahoo','','http://www.social-bookmark-script.de/img/bookmarks/yahoo_trans_ani.gif',1)" onmouseout="schnipp()" > <img style="padding-bottom:1px;" src="http://www.social-bookmark-script.de/img/bookmarks/yahoo_trans.gif" alt="Add to: Yahoo" name="Yahoo" border="0" id="Yahoo"> </a> <a rel="nofollow" style="text-decoration:none;" href="http://www.spurl.net/" onclick="window.open('http://www.spurl.net/spurl.php?v=3&amp;tags=&amp;title='+encodeURIComponent(document.title)+'&amp;url='+encodeURIComponent(document.location.href));return false;" title="Add to: Spurl" onmouseover="schnapp('Spurl','','http://www.social-bookmark-script.de/img/bookmarks/spurl_trans_ani.gif',1)" onmouseout="schnipp()" > <img style="padding-bottom:1px;" src="http://www.social-bookmark-script.de/img/bookmarks/spurl_trans.gif" alt="Add to: Spurl" name="Spurl" border="0" id="Spurl"> </a> <a rel="nofollow" style="text-decoration:none;" href="http://www.google.com/" onclick="window.open('http://www.google.com/bookmarks/mark?op=add&amp;hl=de&amp;bkmk='+encodeURIComponent(location.href)+'&amp;annotation=&amp;labels=&amp;title='+encodeURIComponent(document.title));return false;" title="Add to: Google" onmouseover="schnapp('Google','','http://www.social-bookmark-script.de/img/bookmarks/google_trans_ani.gif',1)" onmouseout="schnipp()" > <img style="padding-bottom:1px;" src="http://www.social-bookmark-script.de/img/bookmarks/google_trans.gif" alt="Add to: Google" name="Google" border="0" id="Google"> </a> <a rel="nofollow" style="text-decoration:none;" href="http://www.blinklist.com/" onclick="window.open('http://www.blinklist.com/index.php?Action=Blink/addblink.php&amp;Description=&amp;Tag=&amp;Url='+encodeURIComponent(location.href)+'&amp;Title='+encodeURIComponent(document.title));return false;" title="Add to: Blinklist" onmouseover="schnapp('Blinklist','','http://www.social-bookmark-script.de/img/bookmarks/blinklist_trans_ani.gif',1)" onmouseout="schnipp()" > <img style="padding-bottom:1px;" src="http://www.social-bookmark-script.de/img/bookmarks/blinklist_trans.gif" alt="Add to: Blinklist" name="Blinklist" border="0" id="Blinklist"> </a> <a rel="nofollow" style="text-decoration:none;" href="http://www.technorati.com/" onclick="window.open('http://technorati.com/faves?add='+encodeURIComponent(location.href)+'&amp;tag=');return false;" title="Add to: Technorati" onmouseover="schnapp('Technorati','','http://www.social-bookmark-script.de/img/bookmarks/technorati_trans_ani.gif',1)" onmouseout="schnipp()" > <img style="padding-bottom:1px;" src="http://www.social-bookmark-script.de/img/bookmarks/technorati_trans.gif" alt="Add to: Technorati" name="Technorati" border="0" id="Technorati"> </a> <a rel="nofollow" style="text-decoration:none;" href="http://www.newsvine.com/" onclick="window.open('http://www.newsvine.com/_wine/save?popoff=1&amp;u='+encodeURIComponent(location.href)+'&amp;tags=&amp;blurb='+encodeURIComponent(document.title));return false;" title="Add to: Newsvine" onmouseover="schnapp('Newsvine','','http://www.social-bookmark-script.de/img/bookmarks/newsvine_trans_ani.gif',1)" onmouseout="schnipp()" > <img style="padding-bottom:1px;" src="http://www.social-bookmark-script.de/img/bookmarks/newsvine_trans.gif" alt="Add to: Newsvine" name="Newsvine" border="0" id="Newsvine"> </a> <a rel="nofollow" style="text-decoration:none;" href="http://en.wikipedia.org/wiki/Social_bookmarking" target="" title="Information" onmouseover="schnapp('Information','','http://www.social-bookmark-script.de/img/bookmarks/what_trans_ani.gif',1)" onmouseout="schnipp()" > <img style="padding-bottom:1px;" src="http://www.social-bookmark-script.de/img/bookmarks/what_trans.gif" alt="Information" name="Information" border="0" id="Information"> </a> </div> <!-- Social Bookmarking code ends here --> <BR><BR> <BR><BR> <p align="center"> <font face="Tahoma" size="2">Want to share or request <B>Oracle Tutorial</B> articles to become a <B>Oracle DBA</B>. Direct your requests to<a href="mailto:webmaster@oracleonline.info" alt='Learn oracle sql plan'> webmaster@oracleonline.info</a></font></p> </td> </tr> </table> </div> </div> </div> </div> </div> </div> </div> </th> </tr> </table> </body> </html>