<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>dm_maniacs</title>
	<atom:link href="http://sumeetanand.net/blog/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://sumeetanand.net/blog</link>
	<description>Everyone's Invited</description>
	<lastBuildDate>Sat, 18 Feb 2012 03:43:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>EMC/Enterprise Search Server (ESS)</title>
		<link>http://sumeetanand.net/blog/?p=112</link>
		<comments>http://sumeetanand.net/blog/?p=112#comments</comments>
		<pubDate>Wed, 17 Jun 2009 01:04:41 +0000</pubDate>
		<dc:creator>Sumeet</dc:creator>
				<category><![CDATA[Documentum]]></category>

		<guid isPermaLink="false">http://sumeetanand.net/blog/?p=112</guid>
		<description><![CDATA[I&#8217;m extremely anxious to see ESS in action.  However, ESS is expected to make its debut early next year (beta testing is expected to start towards the end of 2009). It is built upon xDB with Apache Lucene as the underlying indices. ESS will have the ability to scale both vertically and horizontally. That&#8217;s a [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m extremely anxious to see ESS in action.  However, ESS is expected to make its debut early next year (beta testing is expected to start towards the end <em></em>of 2009<em></em>). It is built upon xDB with Apache Lucene as the underlying indices.</p>
<p>ESS will have the ability to scale both vertically and horizontally. That&#8217;s a big plus.  Single-node and multi-node installation will be supported out of the box! According to EMC, you can deploy 2 nodes in less than 20  mins.</p>
<p><span id="more-112"></span>With great power comes great administration! New admin framework,admin console, new admin processes for monitoring, auditing and reporting on each node. (System Snapshot, Diagnostic Console, Single &amp; Multinode configuration, Data Management, Reporting, etc)</p>
<p>Enhancements in search results like sorting them based on relevance, number of hits on the document, etc. ESS would enable both structured and unstructured search and it supports VMware &amp; NAS! Other features include Advance Data Management (control placement of data on disk)</p>
<p>ESS has the ability to backup and restore at the sub-index level and supports multiple options for HA. Unlike FAST, that only supports Active/Active HA with duplicate systems and data, ESS will support :<br />
- Active/Active shared data<br />
- Active/Passive with clusters<br />
- n+1 server based</p>
<p>By the way, ESS is built as a standalone search infrastructure i.e. no DCTM dependencies. It can be used in products across EMC.</p>
<p>Great going EMC!</p>
]]></content:encoded>
			<wfw:commentRss>http://sumeetanand.net/blog/?feed=rss2&#038;p=112</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>EMC World 2009</title>
		<link>http://sumeetanand.net/blog/?p=105</link>
		<comments>http://sumeetanand.net/blog/?p=105#comments</comments>
		<pubDate>Tue, 16 Jun 2009 23:43:34 +0000</pubDate>
		<dc:creator>Sumeet</dc:creator>
				<category><![CDATA[Documentum]]></category>

		<guid isPermaLink="false">http://sumeetanand.net/blog/?p=105</guid>
		<description><![CDATA[I had the privilege of speaking at the EMC World 2009 conference.  It was great fun. Met loads of experts and exchanged knowledge.  Overall the conference was good. Although the weather was not that friendly. Sessions were good and few of them overly crowed, specially of Victor&#8217;s (as always). By the way, the EMC&#8217;s appreciation [...]]]></description>
			<content:encoded><![CDATA[<p>I had the privilege of speaking at the EMC World 2009 conference.  It was great fun. Met loads of experts and exchanged knowledge.  Overall the conference was good. Although the weather was not that friendly. Sessions were good and few of them overly crowed, specially of Victor&#8217;s (as always). By the way, the EMC&#8217;s appreciation party at Universal Studio was awesome. <span id="more-105"></span><img class="aligncenter size-medium wp-image-106" title="EMCWorld09a" src="http://sumeetanand.net/blog/wp-content/uploads/2009/06/EMCWorld09a-300x168.jpg" alt="EMCWorld09a" width="300" height="168" /></p>
<p><img class="aligncenter size-medium wp-image-110" title="EMCWorld09e" src="http://sumeetanand.net/blog/wp-content/uploads/2009/06/EMCWorld09e-168x300.jpg" alt="EMCWorld09e" width="168" height="300" /><img class="aligncenter size-medium wp-image-107" title="EMCWorld09b" src="http://sumeetanand.net/blog/wp-content/uploads/2009/06/EMCWorld09b-300x168.jpg" alt="EMCWorld09b" width="300" height="168" /></p>
]]></content:encoded>
			<wfw:commentRss>http://sumeetanand.net/blog/?feed=rss2&#038;p=105</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Long Time No Blog!</title>
		<link>http://sumeetanand.net/blog/?p=98</link>
		<comments>http://sumeetanand.net/blog/?p=98#comments</comments>
		<pubDate>Tue, 16 Jun 2009 23:05:31 +0000</pubDate>
		<dc:creator>Sumeet</dc:creator>
				<category><![CDATA[Documentum]]></category>

		<guid isPermaLink="false">http://sumeetanand.net/blog/?p=98</guid>
		<description><![CDATA[I know, I know.. been 2 yrs. I was very very very busy with the projects in hand and ..guess what&#8230; GOT MARRIED!!!!!!! Here&#8217;s one of our marriage pics : Simran has just completed her PhD in microbiology and is a travel freak. In the past 6 months, we&#8217;ve been to India (got married there), [...]]]></description>
			<content:encoded><![CDATA[<p>I know, I know.. been 2 yrs.</p>
<p>I was very very very busy with the projects in hand and ..guess what&#8230; GOT MARRIED!!!!!!!<br />
Here&#8217;s one of our marriage pics :</p>
<p><span id="more-98"></span><img class="aligncenter size-medium wp-image-100" title="Marriage" src="http://sumeetanand.net/blog/wp-content/uploads/2009/06/Marriage1-300x190.jpg" alt="Marriage" width="300" height="190" /></p>
<p>Simran has just completed her PhD in microbiology and is a travel freak. In the past 6 months, we&#8217;ve been to India (got married there), Canada, France, Germany &amp; Switzerland. Next stop, Egypt.</p>
<p>That being said, I will try to be regular here and at PowerLink.</p>
<p>Have a nice evening!</p>
]]></content:encoded>
			<wfw:commentRss>http://sumeetanand.net/blog/?feed=rss2&#038;p=98</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DQL Hints &#8211; Part 1</title>
		<link>http://sumeetanand.net/blog/?p=90</link>
		<comments>http://sumeetanand.net/blog/?p=90#comments</comments>
		<pubDate>Mon, 29 Oct 2007 17:29:03 +0000</pubDate>
		<dc:creator>Sumeet</dc:creator>
				<category><![CDATA[Documentum]]></category>

		<guid isPermaLink="false">http://sumeetanand.net/blog/?p=90</guid>
		<description><![CDATA[DQL hints are handled differently by different RDBMS. Hence, * Measure performance before and after using the hint. * Turn on SQL tracing on the server. This will write the underlying SQL queries to the trace log which may then enable you to debug problems. * Check “Show the SQL” in the DQL utility. This [...]]]></description>
			<content:encoded><![CDATA[<p>DQL hints are handled differently by different RDBMS. Hence,</p>
<p>* Measure performance before and after using the hint.<br />
* Turn on SQL tracing on the server. This will write the underlying SQL queries to the trace log which may then enable you to debug problems.<br />
* Check “Show the SQL” in the DQL utility. This will also help you view the underlying SQL queries<br />
<span id="more-90"></span><br />
Efficient Queries- Indexing<br />
Underlying databases tend to search quickly on both the single-valued and repeating-valued tables because their rows (even in the repeating-valued) table are relatively unique.<br />
While querying repeating attributes, use<br />
select object_name from dm_document<br />
where any (keywords = ‘anand’) or<br />
any (authors = ‘Sumeet’)</p>
<p>instead of</p>
<p>select object_name from dm_document<br />
where any (keywords = ‘anand’ or authors = ‘Sumeet’)</p>
<p>* Querying over non-indexed columns can be slow<br />
* Indexing frees memory in a production environment<br />
* Custom attributes with a high degree of uniqueness and often searched by users make good indexes<br />
* System-defined indexes are created on some object type tables<br />
* User-defined indexes are created using Documentum Administrator or by executing the DQL administrative method MAKE_INDEX<br />
* Indexes are represented in the Docbase by objects of type dmi_index</p>
<p>Improve response time and resource use depending on RDBMS<br />
SELECT object_name<br />
FROM dm_document<br />
ENABLE(RETURN_TOP 5)</p>
<p>Other Hints</p>
<p>* OPTIMIZE_TOP N hint directs the underlying database to return the first N rows returned by a query quickly. The remaining rows are returned at the normal speed.<br />
* FORCE_ORDER hint controls the order in which the tables referenced in the query’s FROM clause are joined. The tables may be database tables or object type tables.<br />
* Passthrough hints are passed on directly to a specific database. In DQL, you identify the database and then specify the hint meant for that database.</p>
<p>For example, here is a DQL query with a hint for Oracle that will cause the query to execute to begin returning rows as soon as possible.<br />
SELECT r_object_id FROM dm_document<br />
ENABLE (ORACLE(’all_rows’))</p>
<p>Refer to the Content Server DQL Reference Manual for a detailed description and the recommended usage of hints.</p>
]]></content:encoded>
			<wfw:commentRss>http://sumeetanand.net/blog/?feed=rss2&#038;p=90</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What’s my Full Text Index Size??</title>
		<link>http://sumeetanand.net/blog/?p=88</link>
		<comments>http://sumeetanand.net/blog/?p=88#comments</comments>
		<pubDate>Wed, 24 Oct 2007 17:28:05 +0000</pubDate>
		<dc:creator>Sumeet</dc:creator>
				<category><![CDATA[Documentum]]></category>

		<guid isPermaLink="false">http://sumeetanand.net/blog/?p=88</guid>
		<description><![CDATA[The attached fixml sizing program can be used to estimate the size of a Fulltext Index. Please only use this program in conjunction with the Sizing Documentum 5.3 Full Text white paper available on Powerlink. Step #1: Suspend FAST indexing rtsadmin localhost 16099 webcluster 0 0 suspendindexing Step #2: Suspend the fixml defragmentation process http://indexhost:15900/docapi?op=defragfixml&#038;value=false [...]]]></description>
			<content:encoded><![CDATA[<p>The attached fixml sizing program can be used to estimate the size of a Fulltext Index. Please only use this program in conjunction with the Sizing Documentum 5.3 Full Text white paper available on Powerlink.</p>
<p>Step #1: Suspend FAST indexing</p>
<p>rtsadmin localhost 16099 webcluster 0 0 suspendindexing<br />
<span id="more-88"></span><br />
Step #2: Suspend the fixml defragmentation process</p>
<p>http://indexhost:15900/docapi?op=defragfixml&#038;value=false</p>
<p>where indexhost is the name of the index server host.</p>
<p>Step #3: Run analysis scripts</p>
<p>cobra DCTMAnalyze.py -f fixml_file_path &gt; outputfile</p>
<p>Step #4: Resume the defragmentation process</p>
<p>http://indexhost:15900/docapi?op=defragfixml&#038;value=true</p>
<p>Step #5: resume indexing</p>
<p>tsadmin localhost 16099 webcluster 0 0 resumeindexing</p>
<p>Attached File: scripts.zip</p>
<p>Source: http://solutions.emc.com/nsepn/webapps/stqv768481dmts46655278/emcsolutionview.asp?id=esg81605</p>
]]></content:encoded>
			<wfw:commentRss>http://sumeetanand.net/blog/?feed=rss2&#038;p=88</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Custom Obj Type * Templates</title>
		<link>http://sumeetanand.net/blog/?p=86</link>
		<comments>http://sumeetanand.net/blog/?p=86#comments</comments>
		<pubDate>Sun, 14 Oct 2007 17:27:02 +0000</pubDate>
		<dc:creator>Sumeet</dc:creator>
				<category><![CDATA[Documentum]]></category>

		<guid isPermaLink="false">http://sumeetanand.net/blog/?p=86</guid>
		<description><![CDATA[OK you’ve created a custom object type, now its time to load it with templates! The simple and quick way to do would be creating a new folder , lets say ‘&#60;custom-obj-type&#62;_template’ , under the cabinet ‘Templates’. You can either copy the objects you wish under /Templates and place them into the new folder you [...]]]></description>
			<content:encoded><![CDATA[<p>OK you’ve created a custom object type, now its time to load it with templates!</p>
<p>The simple and quick way to do would be creating a new folder , lets say ‘&lt;custom-obj-type&gt;_template’ , under the cabinet ‘Templates’. You can either copy the objects you wish under /Templates and place them into the new folder you created, or you may do it for all objects via the ‘Add to Clipboard’. You can choose whichever way you’re comfortable.<br />
<span id="more-86"></span><br />
Now once this is done, execute the following DQL</p>
<p>change dm_document object to &lt;custom-obj-type&gt; where folder(&#8216;/Templates/&lt;custom-obj-type&gt;_templates&#8217;);</p>
<p>Reinitiate the docbase via the API,</p>
<p>reinit,c</p>
<p>and finally restart the App Server to get rid of the cache. That’s it! You’re good to go !</p>
]]></content:encoded>
			<wfw:commentRss>http://sumeetanand.net/blog/?feed=rss2&#038;p=86</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>LDAP via IAPI</title>
		<link>http://sumeetanand.net/blog/?p=84</link>
		<comments>http://sumeetanand.net/blog/?p=84#comments</comments>
		<pubDate>Sun, 07 Oct 2007 17:26:11 +0000</pubDate>
		<dc:creator>Sumeet</dc:creator>
				<category><![CDATA[Documentum]]></category>

		<guid isPermaLink="false">http://sumeetanand.net/blog/?p=84</guid>
		<description><![CDATA[IAPI should not be used to create LDAP config objects. LDAP config objects need to be created using Documentum Administrator (DA) due to the following reasons: 1. DA creates the LDAP password file in the file system which is needed to bind to the LDAP server 2. DA runs the LDAP validation class and makes [...]]]></description>
			<content:encoded><![CDATA[<p>IAPI should not be used to create LDAP config objects. LDAP config objects need to be created using Documentum Administrator (DA) due to the following reasons:</p>
<p>1. DA creates the LDAP password file in the file system which is needed to bind to the LDAP server</p>
<p>2. DA runs the LDAP validation class and makes sure that the attributes entered are valid.<br />
<span id="more-84"></span><br />
3. With Server 5.1, DA also runs a class named Getattrs which makes a connection to the LDAP server to get the required attrs to populate the 2nd page when configuring LDAP.</p>
]]></content:encoded>
			<wfw:commentRss>http://sumeetanand.net/blog/?feed=rss2&#038;p=84</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>When to use External Pwd Chk in LDAP config</title>
		<link>http://sumeetanand.net/blog/?p=82</link>
		<comments>http://sumeetanand.net/blog/?p=82#comments</comments>
		<pubDate>Sat, 06 Oct 2007 17:24:49 +0000</pubDate>
		<dc:creator>Sumeet</dc:creator>
				<category><![CDATA[Documentum]]></category>

		<guid isPermaLink="false">http://sumeetanand.net/blog/?p=82</guid>
		<description><![CDATA[The following is a list of options for the user authentication options in Content Server (CS) : 1. OS Authentication mode 2. LDAP Authentication mode 3. OS-integrated LADP Authenticated mode Each of the options uses different methods for the authentication as below: 1. OS Authentication mode uses dm_check_password binary 2. LDAP Authentication mode uses LDAP [...]]]></description>
			<content:encoded><![CDATA[<p>The following is a list of options for the user authentication options in Content Server (CS) :</p>
<p>1. OS Authentication mode</p>
<p>2. LDAP Authentication mode</p>
<p>3. OS-integrated LADP Authenticated mode<br />
<span id="more-82"></span><br />
Each of the options uses different methods for the authentication as below:</p>
<p>1. OS Authentication mode uses dm_check_password binary</p>
<p>2. LDAP Authentication mode uses LDAP server directly.</p>
<p>3. OS-integrated LADP Authenticated mode uses LDAP server but indirectly through dm_check_password which recompiled with LDAP option.</p>
<p>You can specify which mode can be used for a specific user through dm_user attribute configuration (mode 1 and mode 2). However, you cannot mix with mode 3.</p>
<p>To make sure you are using mode 3 or not, please check use_ext_auth_prog LDAP config object attribute. If it is checked, it indicates CS server is configured to use a LDAP enabled dm_check_password.</p>
<p>In case, a machine is configured to use mode 1 and 2, EXTERNAL PASSWORD CHECKING (use_ext_auth_prog) in LDAP config object box shouldn’t be checked.</p>
<p>If you plan to use LDAP enabled dm_check_password, it is required a re-compiled dm_check_password with LDAP option (proper permission set + owner to ROOT) and tick the use_ext_auth_prog option in LDAP config section.</p>
]]></content:encoded>
			<wfw:commentRss>http://sumeetanand.net/blog/?feed=rss2&#038;p=82</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DCTM Admin ‘Best Practices’</title>
		<link>http://sumeetanand.net/blog/?p=80</link>
		<comments>http://sumeetanand.net/blog/?p=80#comments</comments>
		<pubDate>Mon, 01 Oct 2007 17:23:59 +0000</pubDate>
		<dc:creator>Sumeet</dc:creator>
				<category><![CDATA[Documentum]]></category>

		<guid isPermaLink="false">http://sumeetanand.net/blog/?p=80</guid>
		<description><![CDATA[1. API collections are used to loop through a set of object instances. While the collections are open, database cursors are open and thus locks are held in the database. Therefore, do not keep the collections open longer than necessary so that the cursors and locks will be released. Do not perform any extraneous operations [...]]]></description>
			<content:encoded><![CDATA[<p>1. API collections are used to loop through a set of object instances. While the collections are open, database cursors are open and thus locks are held in the database. Therefore, do not keep the collections open longer than necessary so that the cursors and locks will be released. Do not perform any extraneous operations within a collection that could be performed after or before the collection is opened. Consider retrieving and storing attributes being returned in a collection in local variables or an array first, and then processing them later in order to close the collection earlier. For example, an application may retrieve attributes within a collection and perform a “getfile” API (which could have a sizeable impact on elapsed time due to the transfer of the content) within the collection. It is best to store the attributes necessary to do the “getfile” in a local array, close the collection and then perform the “getfiles” afterwards, releasing the locks on the database.<br />
<span id="more-80"></span><br />
2. With “begintran” statements do not make any extraneous API calls or other programming logic within the transaction loop if at all possible. Assuming that API collections, and hence database cursors are opened with the transaction, then locks are held in the database.</p>
<p>3. The combination of “begintran,” “commit” and “abort” API calls are used to open a explicit database transaction in order to commit or abort a set of transactions as one. If no saves or changes are done within the confines of a transaction, then there is no reason to use these APIs. Keep the duration of the transaction short, as all locks acquired during the transaction will be held until the transaction has either explicitly committed or aborted the transaction. The “assemble” method also establishes an explicit transaction. This transaction is open the locks held until the collection created by the “assemble” method is closed.</p>
<p>4. Documentum provides a system administration tool, “Queue Management,” to delete “dequeued” Inbox items. By default, when an item is removed from an Inbox, the item is marked as “dequeued” but it is not physically removed from the underlying “dmi_queue_item” object in the Docbase. If these items are not removed the “dmi_queue_item” object and the underlying database tables continue to grow and may cause performance degradations. For applications with heavy use of routers, notifications, and events, it is advisable to execute this tool on an automated, scheduled basis. The tool will remove “dequeued” items from the “dmi_queue_item” object to prevent the tables from growing with a number of parameters to configure how and what gets deleted. If a large number of deletes are performed, then running Sybase statistics on the underlying “dmi_queue_item” tables is recommended.</p>
<p>5. Repeating attributes have their own set of APIs to handle the specific definition and characteristics of repeating attributes. Using the APIs; “append, count, locate, insert, remove, repeating, truncate and values” will simplify the code and possibly improve performance.</p>
<p>6. There are some APIs and attributes to aid the programmer when working with routers. The “anyevents” method checks the current user’s Inbox to see if any new items have been placed in the Inbox and the “getevents” method returns a collection of all items contained within the Inbox of the current user. It may prevent having to formulate otherwise complex queries. These methods and more information about managing an Inbox are described in more detail in Chapter 9 of the Documentum’s “Server User’s Guide.”</p>
<p>7. With a router, the “package_id” attribute contains the object ID of the document that is being routed. While the document is being routed, it may be versioned. When the user forwards the router to the next user, the next user receives the old version of the document unless the “package_id” has been updated explicitly by the application or unless the “package_label” attribute has been defined. If the “package_label” is defined, when the user checks out the document, the server will search the version tree of the document for a version matching the version label specified in the “package_label,” such as “CURRENT.” Using this feature will ensure that users always get the most current version of a document being routed. This is described in Chapter 8 of the Documentum Server User’s Guide. Once again, it is encouraged to explore this feature to maintain simplicity, manage the routers via the attributes and possibly improve performance. Depending on how your application is used, it may eliminate the need for queries to determine if a particular object is the most current version.</p>
<p>8. While on the subject of determining the most current version. Rather than have one complex query, it may be more beneficial to simply retrieve the most current object ID first with the API call, “id,c,dm_document where I_chronicle_id_I = ID(”).” This will return the current version for the object id passed in the where clause. If the object ID is different, perform a “fetch” command, such as “fetch,c,(”)” to return the attributes. If they are the same, the ID is the most current version and the application may already have the attributes it needs to continue processing. These are two simple queries with a predictable response in terms of performance and network trips.</p>
<p>9. The “dm_sysobject” attribute, “i_latest_flag” indicates whether a version is the most recent version of the object on a particular branch in a version tree. While this can be used to determine if an object is the most recent version, it comes with one caveat. If the application uses branching version trees, as opposed to linear which is the default, then the “i_latest_flag” will not necessarily represent the most current version as denoted by the version label of “CURRENT.” If branching is not used, then this attribute can be used in confidence.</p>
<p>10. The use of the “id_i” integer attribute, which is indexed, in “where” clauses should be used in all instances of the application. This will have a significant effect on database performance.</p>
<p>11. For DQL “selects,” where the objects are not being updated, use the “readquery” API or the “execquery” API with the “read_only” flag set to “true.” For DML statements, where the objects are being updated, use the “query” or “execquery” API with the “read_only” flag set to the value of “false.”</p>
<p>12. Do not use the “order by” clause in “select” statements unless it is necessary to have the returned collection sorted.</p>
<p>13. For custom sub types, strongly consider indexing some of the custom attributes based on how the objects are queried in the “where” clause. This is not as important during the pilot phase when not many instances are created. But, as the Docbase grows in size, creating an index on the appropriate attribute will spawn significant performance gains.</p>
<p>14. Utilize the “ALL” key word in “select” statements wisely. For DQL “selects,” the “ALL” key word directs the server to search all versions of each object. For example, if the current version of a document is desired in a query, the statement, “select r_object_id from dm_document(all) where any r_version_label = ‘CURRENT’” can be more efficiently written as “select r_ r_object_id from dm_document,” which will return only the current version.</p>
<p>15. Sybase uses a statistical-based optimizer, which incorporates statistics of the record distribution in the database. These statistics are not dynamically updated. Keep the Sybase statistics updated. Assuming that the database will be very dynamic in the beginning (as far as record distribution is concerned) and the time to run statistics will therefore not be long, run them frequently. This will improve the Sybase optimizer.</p>
<p>16. Take advantage of the “run_as_server” argument when running external, custom procedures using the “DO_METHOD”. This directs the server to run the method under its own account (the installation account which is typically “dmadmin”). This eliminates the need for password validation logic in the code.</p>
]]></content:encoded>
			<wfw:commentRss>http://sumeetanand.net/blog/?feed=rss2&#038;p=80</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>You Got Empty Folders!</title>
		<link>http://sumeetanand.net/blog/?p=78</link>
		<comments>http://sumeetanand.net/blog/?p=78#comments</comments>
		<pubDate>Sat, 29 Sep 2007 17:22:48 +0000</pubDate>
		<dc:creator>Sumeet</dc:creator>
				<category><![CDATA[Documentum]]></category>

		<guid isPermaLink="false">http://sumeetanand.net/blog/?p=78</guid>
		<description><![CDATA[How to find empty folders in the entire docbase? SELECT r_object_id, object_name, r_object_type, r_folder_path FROM dm_folder f WHERE r_object_id NOT IN(SELECT distinct i_folder_id FROM dm_sysobject WHERE any i_folder_id = f.r_object_id) How to find just empty folders in a cabinet? SELECT r_object_id, object_name, r_object_type FROM dm_folder f WHERE r_object_id NOT IN(SELECT distinct i_folder_id FROM dm_sysobject WHERE [...]]]></description>
			<content:encoded><![CDATA[<p>How to find empty folders in the entire docbase?</p>
<p>SELECT r_object_id, object_name, r_object_type, r_folder_path</p>
<p>FROM dm_folder f<br />
<span id="more-78"></span><br />
WHERE r_object_id NOT IN(SELECT distinct i_folder_id</p>
<p>FROM dm_sysobject</p>
<p>WHERE any i_folder_id = f.r_object_id)</p>
<p>How to find just empty folders in a cabinet?</p>
<p>SELECT r_object_id, object_name, r_object_type</p>
<p>FROM dm_folder f</p>
<p>WHERE r_object_id NOT IN(SELECT distinct i_folder_id</p>
<p>FROM dm_sysobject</p>
<p>WHERE any i_folder_id = f.r_object_id</p>
<p>AND FOLDER(&#8216;/cabinet_name&#8217;, DESCEND))</p>
<p>AND FOLDER(&#8216;/cabinet_name&#8217;, DESCEND)</p>
]]></content:encoded>
			<wfw:commentRss>http://sumeetanand.net/blog/?feed=rss2&#038;p=78</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

