<?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>dbsnaps</title>
	<atom:link href="http://www.dbsnaps.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.dbsnaps.com</link>
	<description>database video tutorials</description>
	<lastBuildDate>Sun, 05 May 2013 20:57:50 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Oracle Identity Manager 11R2 Installation &#8211; OIM Configuration</title>
		<link>http://www.dbsnaps.com/videos/oracle-identity-manager-11r2-installation-oim-configuration/</link>
		<comments>http://www.dbsnaps.com/videos/oracle-identity-manager-11r2-installation-oim-configuration/#comments</comments>
		<pubDate>Sun, 14 Apr 2013 20:48:20 +0000</pubDate>
		<dc:creator>Oded Raz</dc:creator>
				<category><![CDATA[Oracle - Latest Articles]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Videos]]></category>

		<guid isPermaLink="false">http://www.dbsnaps.com/?p=806</guid>
		<description><![CDATA[In this video we will go over the configuration of OIM just after software installation is done.]]></description>
			<content:encoded><![CDATA[<p>Hi,</p>
<p>Oracle Identity Manager is the leading identity management solution for the past few years.<br />
After Oracle acquired SUN who have it&#8217;s own identity management solution   a big question was what Oracle is going to do with two  Identity   management solutions. Few month ago Oracle announced Oracle Identity   Manager 11g Release 2 who is a hybrid between Oracle and Sun identity   management solution.</p>
<p>This is the Third in a series of tutorial videos that will show you how to install and configure Oracle Identity Manager 11gR2.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dbsnaps.com/videos/oracle-identity-manager-11r2-installation-oim-configuration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oracle Identity Manager 11R2 Installation &#8211; Software Installation</title>
		<link>http://www.dbsnaps.com/oracle/oracle-identity-manager-11r2-installation-software-installation/</link>
		<comments>http://www.dbsnaps.com/oracle/oracle-identity-manager-11r2-installation-software-installation/#comments</comments>
		<pubDate>Fri, 01 Mar 2013 20:33:44 +0000</pubDate>
		<dc:creator>Oded Raz</dc:creator>
				<category><![CDATA[Feature Video]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Oracle - Latest Articles]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Videos]]></category>

		<guid isPermaLink="false">http://www.dbsnaps.com/?p=794</guid>
		<description><![CDATA[This is the second in a series of tutorial videos that will show you how to install and configure Oracle Identity Manager 11gR2.]]></description>
			<content:encoded><![CDATA[<p>Hi,</p>
<p>Oracle Identity Manager is the leading identity management solution for the past few years.<br />
After Oracle acquired SUN who have it&#8217;s own identity management solution  a big question was what Oracle is going to do with two  Identity  management solutions. Few month ago Oracle announced Oracle Identity  Manager 11g Release 2 who is a hybrid between Oracle and Sun identity  management solution.</p>
<p>This is the second in a series of tutorial videos that will show you how to install and configure Oracle Identity Manager 11gR2.</p>
<p>After we have prepared the database for our OIM (Oracle Identity Manager) installation we can now install :</p>
<ul>
<li>Java</li>
</ul>
<ul>
<li>Weblogic</li>
</ul>
<ul>
<li>Oracle Identity Manager</li>
</ul>
<ul>
<li>SOA</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.dbsnaps.com/oracle/oracle-identity-manager-11r2-installation-software-installation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oracle Identity Manager 11R2 Installation &#8211; RCU</title>
		<link>http://www.dbsnaps.com/videos/oracle-identity-manager-11r2-installation-rcu/</link>
		<comments>http://www.dbsnaps.com/videos/oracle-identity-manager-11r2-installation-rcu/#comments</comments>
		<pubDate>Tue, 05 Feb 2013 19:56:41 +0000</pubDate>
		<dc:creator>Oded Raz</dc:creator>
				<category><![CDATA[Oracle - Latest Articles]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Videos]]></category>

		<guid isPermaLink="false">http://www.dbsnaps.com/?p=782</guid>
		<description><![CDATA[This is the first in a series of tutorial videos that will show you how to install and configure Oracle Identity Manager 11gR2.]]></description>
			<content:encoded><![CDATA[<p>Hi,</p>
<p>Oracle Identity Manager is the leading identity management solution for the past few years.<br />
After Oracle acquired SUN who have it&#8217;s own identity management solution a big question was what Oracle is going to do with two  Identity management solutions. Few month ago Oracle announced Oracle Identity Manager 11g Release 2 who is a hybrid between Oracle and Sun identity management solution.</p>
<p>This is the first in a series of tutorial videos that will show you how to install and configure Oracle Identity Manager 11gR2.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dbsnaps.com/videos/oracle-identity-manager-11r2-installation-rcu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Data Masking &#8211; JumbleDB</title>
		<link>http://www.dbsnaps.com/oracle/security/data-masking-jumbledb/</link>
		<comments>http://www.dbsnaps.com/oracle/security/data-masking-jumbledb/#comments</comments>
		<pubDate>Thu, 05 Apr 2012 21:05:21 +0000</pubDate>
		<dc:creator>Oded Raz</dc:creator>
				<category><![CDATA[Main-Security]]></category>
		<category><![CDATA[Oracle - Latest Articles]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://www.dbsnaps.com/?p=752</guid>
		<description><![CDATA[JumbleDB is a simple to use yet very powerful and complete data masking suite. See how it works]]></description>
			<content:encoded><![CDATA[<p>In the past few year organizations invested large amount of money protecting organization&#8217;s sensitive data in production databases,<br />
but when those databases where copied for development and QA usage the sensitive data was copied also to a none secured environments. Now days organization understand that they should prevent sensitive data from reaching non-production environments.</p>
<p>In order to prevent sensitive data  from reaching non production environments all of the sensitive data should be masked  before the copied environment is accessible.</p>
<p>JumbleDB is a simple to use yet very powerful and complete data masking suite.  JumbleDB is based on a unique, 3-tier approach:</p>
<ol>
<li><strong><em>Detect -&gt; Automatically locate your sensitive data</em></strong></li>
<li><strong><em>Protect -&gt; Mask sensitive data using JumbleDB powerful masking engine.</em></strong></li>
<li><strong><em>Alert -&gt; Scan for sensitive data that have migrated into your already masked environments.</em></strong></li>
</ol>
<p>JumbleDB unique data masking project approach reduce total project cost buy simplifying masking process.</p>
<p>Lets see how it works in the following video :</p>
<p><iframe width="504" height="378" src="http://www.youtube.com/embed/FqT6W7vCbqU?fs=1&#038;feature=oembed" frameborder="0" allowfullscreen></iframe></p>
<p><a title="Learn More about JumbleDB" href="http://www.orbiumsoftware.com" target="_blank">learn more about jumbleDB.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.dbsnaps.com/oracle/security/data-masking-jumbledb/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installing Oracle ASM 11gR2</title>
		<link>http://www.dbsnaps.com/oracle/installing-oracle-asm-11gr2/</link>
		<comments>http://www.dbsnaps.com/oracle/installing-oracle-asm-11gr2/#comments</comments>
		<pubDate>Sun, 13 Nov 2011 12:46:45 +0000</pubDate>
		<dc:creator>Alon Spiegel</dc:creator>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Oracle - Latest Articles]]></category>
		<category><![CDATA[Videos]]></category>
		<category><![CDATA[ASM]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://www.dbsnaps.com/?p=733</guid>
		<description><![CDATA[In this movie-clip we will show you how to install oracle 11g ASM filesystem
]]></description>
			<content:encoded><![CDATA[<div>In this Tutorial Alon Spiegel will demonstrate how to install oracle 11gR2 ASM on Linux RH 5.</div>
]]></content:encoded>
			<wfw:commentRss>http://www.dbsnaps.com/oracle/installing-oracle-asm-11gr2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oracle 11gR2 New Feature &#8211; Deferred Segment Creation</title>
		<link>http://www.dbsnaps.com/oracle/oracle-deferred-segment-creation/</link>
		<comments>http://www.dbsnaps.com/oracle/oracle-deferred-segment-creation/#comments</comments>
		<pubDate>Mon, 06 Dec 2010 12:00:12 +0000</pubDate>
		<dc:creator>Roni Vered</dc:creator>
				<category><![CDATA[Administration]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Oracle - Latest Articles]]></category>
		<category><![CDATA[Videos]]></category>
		<category><![CDATA[11g2r new features]]></category>
		<category><![CDATA[Deferred Segment Creation]]></category>

		<guid isPermaLink="false">http://www.dbsnaps.com/?p=634</guid>
		<description><![CDATA[In this DBSNAPS tutorial video we will present you a new feature of Oracle database 11gR2: Deferred segment creation.
]]></description>
			<content:encoded><![CDATA[<p>In this DBSNAPS tutorial video we will present you a new feature of Oracle database 11gR2: <strong>Deferred segment creation</strong>.</p>
<p>The script for the demonstration from the tutorial can be downloaded here:<a href="http://www.dbsnaps.com/wp-content/uploads/2010/12/seg_demo.txt">seg_demo</a></p>
<p>Until 11gR2, if you create a table, Oracle database allocates space for initial segment.</p>
<p>The new feature allows you to defer creation of this initial segment until the first row of data is inserted into the table.</p>
<p>In addition to deferring the table’s segment, it also defers the segment creation for LOB columns of the table, indexes created implicitly as part of table creation, and indexes subsequently explicitly created on the table.</p>
<p>By using this feature, large amount of disk space can be saved in case of many unpopulated tables.</p>
<p>A new parameter DEFERRED_SEGMENT_CREATION is created to control the feature. It can be enabled/disabled it at the <strong>session</strong> or <strong>system </strong>level (doesn’t require Instance restart).</p>
<pre class="brush: sql;">
Alter session set deferred_segment_creation=true;

Alter system set deferred_segment_creation=true;
  </pre>
<p>Deferred segment creation is enabled by default. It’s also possible to enable/disable it for <strong>a single table</strong> by specifying the deferred segment creation clause.</p>
<pre class="brush: sql;">
CREATE TABLE.... SEGMENT CREATION IMMEDIATE

CREATE TABLE... SEGMENT CREATION DEFERRED
 </pre>
<p>* A table with deferred segment won’t exist in the *_EXTENTS System view before inserting into it data (as no extent is created)<br />
* A new column was added to the *_TABLES,  *_INDEXES and *_LOBS System views &#8211; SEGMENT_CREATED, whichindicates whether the initial segment was created or not. Its values are ‘YES’ / ’NO’.</p>
<p><strong>One important note</strong> &#8211; All segments related to a table are created when the first row is inserted into it. And that, even if they are not used to store data</p>
<p>Following is a short demo that demonstrates the new features.</p>
<pre class="brush: sql;">
SQL&gt; @c:\seg_demo
====================================================================
Creating a user for the demonstration and granting it privileges:
====================================================================

SQL&gt; CREATE USER seg_demo identified by seg_demo
User created.
SQL&gt; GRANT RESOURCE , CONNECT TO seg_demo
Grant succeeded.
SQL&gt; GRANT SELECT ON V_$PARAMETER TO seg_demo
Grant succeeded.
SQL&gt; CONNECT seg_demo/seg_demo
Connected.

====================================================================
Displaying relevant parameters
====================================================================

SQL&gt; SHOW PARAMETER def
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
deferred_segment_creation            boolean     TRUE
SQL&gt; SHOW PARAMETER compatible
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
compatible                           string      11.2.0.0.0

=========================================================================================
Creating a table. The table will be created without segments for all its related objects
=========================================================================================

SQL&gt; CREATE TABLE test_seg (id number CONSTRAINT id_pk primary key,
2				email VARCHAR2(50)  CONSTRAINT  email_uk unique,
3				name VARCHAR2(30),
4				data CLOB)
5			lob(data) STORE AS TEST_SEG_DATA_LOB
6			(index test_seg_data_lob_ix)
Table created.

=========================================================================================
Displaying relevant information FROM the System views.
=========================================================================================

SQL&gt; SELECT segment_name ,SEGMENT_TYPE
2	FROM user_segments
3 	WHERE segment_name = 'TEST_SEG'

no rows selected

SQL&gt; SELECT segment_name, extent_id, bytes
2 	FROM user_extents

no rows selected

SQL&gt; SELECT table_name, SEGMENT_CREATED
2 	FROM user_tables

TABLE_NAME                     SEGMENT_CREATED
------------------------------ ---------------
TEST_SEG                       NO

SQL&gt; SELECT table_name, index_name, SEGMENT_CREATED
2 	FROM user_indexes

TABLE_NAME                     INDEX_NAME                     SEGMENT_CREATED
------------------------------ ------------------------------ ---------------
TEST_SEG                       ID_PK                          NO
TEST_SEG                       TEST_SEG_DATA_LOB_IX           NO
TEST_SEG                       EMAIL_UK                       NO

SQL&gt; SELECT  TABLE_NAME ,segment_name, SEGMENT_CREATED
2 	FROM user_lobs

TABLE_NAME                     SEGMENT_NAME         SEGMENT_CREATED
------------------------------ -------------------- ---------------
TEST_SEG                       TEST_SEG_DATA_LOB    NO

=========================================================================================
Inserting the first row to the table.
=========================================================================================

SQL&gt; INSERT INTO TEST_SEG VALUES (1,'Roni@@dbsnaps.com','DBSNAPS','Deferred Segment Creation')

1 row created.

SQL&gt; commit

Commit complete.

=========================================================================================
All the relevant segments will be created.
Displaying relevant information FROM the System views.
=========================================================================================

SQL&gt; SELECT segment_name ,SEGMENT_TYPE
2 FROM user_segments

SEGMENT_NAME         SEGMENT_TYPE
-------------------- ------------------
TEST_SEG             TABLE
TEST_SEG_DATA_LOB_IX LOBINDEX
ID_PK                INDEX
EMAIL_UK             INDEX
TEST_SEG_DATA_LOB    LOBSEGMENT

SQL&gt; SELECT segment_name, extent_id, bytes
2 	FROM user_extents

SEGMENT_NAME          EXTENT_ID      BYTES
-------------------- ---------- ----------
TEST_SEG                      0      65536
TEST_SEG_DATA_LOB_IX          0      65536
ID_PK                         0      65536
EMAIL_UK                      0      65536
TEST_SEG_DATA_LOB             0      65536
SQL&gt; SELECT table_name, SEGMENT_CREATED
2 	FROM user_tables

TABLE_NAME                     SEGMENT_CREATED
------------------------------ ---------------
TEST_SEG                       YES

SQL&gt; SELECT table_name, index_name, SEGMENT_CREATED
2 	FROM user_indexes
TABLE_NAME                     INDEX_NAME                     SEGMENT_CREATED
------------------------------ ------------------------------ ---------------
TEST_SEG                       ID_PK                          YES
TEST_SEG                       TEST_SEG_DATA_LOB_IX           YES
TEST_SEG                       EMAIL_UK                       YES
SQL&gt; SELECT  TABLE_NAME ,segment_name, SEGMENT_CREATED
2 	FROM user_lobs

TABLE_NAME                     SEGMENT_NAME         SEGMENT_CREATED
------------------------------ -------------------- ---------------
TEST_SEG                       TEST_SEG_DATA_LOB    YES

=========================================================================================
The parameter can be changed in the System/Session level.
Changing the session settings to deferred_segment_creation=FALSE.
=========================================================================================

ALTER SESSION SET deferred_segment_creation=FALSE

Session altered.

=========================================================================================
While this parameter is set to FALSE, tables will be created with all their segments.
=========================================================================================
prompt
SQL&gt; CREATE TABLE test_seg2 (id number CONSTRAINT id2_pk primary key,
2    			name VARCHAR2(30))

Table created.

=========================================================================================
Displaying relevant information FROM the System views.
=========================================================================================

SQL&gt; SELECT segment_name ,SEGMENT_TYPE
2 	FROM user_segments
3 	WHERE segment_name = 'TEST_SEG2'

SEGMENT_NAME         SEGMENT_TYPE
-------------------- ------------------
TEST_SEG2            TABLE
SQL&gt; SELECT segment_name, extent_id, bytes
2 	FROM user_extents
3 	WHERE segment_name = 'TEST_SEG2'

SEGMENT_NAME          EXTENT_ID      BYTES
-------------------- ---------- ----------
TEST_SEG2                     0      65536

SQL&gt; SELECT table_name, SEGMENT_CREATED
2 	FROM user_tables
3 	WHERE table_name = 'TEST_SEG2'

TABLE_NAME                     SEGMENT_CREATED
------------------------------ ---------------
TEST_SEG2                      YES

SQL&gt; SELECT table_name, index_name, SEGMENT_CREATED
2 	FROM user_indexes
3 	WHERE table_name = 'TEST_SEG2'

TABLE_NAME                     INDEX_NAME                     SEGMENT_CREATED
------------------------------ ------------------------------ ---------------
TEST_SEG2                      ID2_PK                         YES

=========================================================================================
In addition, the feature can be enabled/Disabled for a Single table.
While the parameter is set to TRUE, we will disable the deferred segment creation for a single table .
=========================================================================================

ALTER SESSION SET deferred_segment_creation=TRUE

Session altered.

SQL&gt; CREATE TABLE test_seg3 (id number CONSTRAINT id3_pk primary key,
2	    			name VARCHAR2(30))
3				SEGMENT CREATION IMMEDIATE

Table created.

=========================================================================================
Displaying relevant information FROM the System views.
=========================================================================================

SQL&gt; SELECT segment_name ,SEGMENT_TYPE
2 	FROM user_segments
3 	WHERE segment_name = 'TEST_SEG3'

SEGMENT_NAME         SEGMENT_TYPE
-------------------- ------------------
TEST_SEG3            TABLE

SQL&gt; SELECT segment_name, extent_id, bytes
2 	FROM user_extents
3	WHERE segment_name = 'TEST_SEG3'

SEGMENT_NAME          EXTENT_ID      BYTES
-------------------- ---------- ----------
TEST_SEG3                     0      65536

SQL&gt; SELECT table_name, SEGMENT_CREATED
2 	FROM user_tables
3 	WHERE table_name = 'TEST_SEG3'

TABLE_NAME                     SEGMENT_CREATED
------------------------------ ---------------
TEST_SEG3                      YES

SQL&gt; SELECT table_name, index_name, SEGMENT_CREATED
2 	FROM user_indexes
3 	WHERE table_name = 'TEST_SEG3'

TABLE_NAME                     INDEX_NAME                     SEGMENT_CREATED
------------------------------ ------------------------------ ---------------
TEST_SEG3                      ID3_PK                         YES

=========================================================================================
While the parameter is set to FALSE, we will Enable the deferred segment creation for a single table .
=========================================================================================

SQL&gt; ALTER SESSION SET deferred_segment_creation=FALSE

Session altered.

SQL&gt; CREATE TABLE test_seg4 (id number CONSTRAINT id4_pk primary key,
2         			name VARCHAR2(30))
3  	SEGMENT CREATION DEFERRED

Table created.

=========================================================================================
Displaying relevant information FROM the System views.
=========================================================================================

SQL&gt; SELECT segment_name ,SEGMENT_TYPE
2	FROM user_segments
3 	WHERE segment_name = 'TEST_SEG4'

no rows selected

SQL&gt; SELECT segment_name, extent_id, bytes
2 	FROM user_extents
3 	WHERE segment_name = 'TEST_SEG4'

no rows selected

SQL&gt; SELECT table_name, SEGMENT_CREATED
2 FROM user_tables
3 WHERE table_name = 'TEST_SEG4'

TABLE_NAME                     SEGMENT_CREATED
------------------------------ ---------------
TEST_SEG4                      NO

SQL&gt; SELECT table_name, index_name, SEGMENT_CREATED
2 	FROM user_indexes
3 	WHERE table_name = 'TEST_SEG4'

TABLE_NAME                     INDEX_NAME                     SEGMENT_CREATED
------------------------------ ------------------------------ ---------------
TEST_SEG4                      ID4_PK                         NO

=========================================================================================
The END. Dropping the demonstration user
=========================================================================================

SQL&gt; CONNECT / as sysdba

Connected.

DROP USER seg_demo CASCADE

User dropped.
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.dbsnaps.com/oracle/oracle-deferred-segment-creation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Parallel New Features in Oracle 11gR2</title>
		<link>http://www.dbsnaps.com/oracle/parallel-new-features-in-oracle-11gr2/</link>
		<comments>http://www.dbsnaps.com/oracle/parallel-new-features-in-oracle-11gr2/#comments</comments>
		<pubDate>Mon, 06 Dec 2010 10:14:40 +0000</pubDate>
		<dc:creator>Oded Raz</dc:creator>
				<category><![CDATA[Administration]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Oracle - Latest Articles]]></category>

		<guid isPermaLink="false">http://www.dbsnaps.com/?p=690</guid>
		<description><![CDATA[Oracle 11gR2 brings us new features related to parallelism. 
The new features are controlled by the PARALLEL_DEGREE_POLICY initialization parameter. Learn how to use these new features to leverage your needs.]]></description>
			<content:encoded><![CDATA[<p>Oracle 11gR2 brings us new features related to parallelism.The new features are controlled by the PARALLEL_DEGREE_POLICY initialization parameter. Learn how to use these new features to leverage your needs.</p>
<h2>Automatic Parallel Degree</h2>
<p>When PARALLEL_DEGREE_POLICY is set to AUTO, automatic parallel degree is enabled. Oracle will evaluate the execution time of the statement, and if it exceeds the value of PARALLEL_MIN_TIME_THRESHOLD parameter (10 seconds by default) Oracle will calculate an automatic degree of parallelism (DOP) for this statement.</p>
<p>Oracle calculates the DOP based on the statement requirements and the load on the server. The DOP can be limited by the parameter PARALLEL_DEGREE_LIMIT:</p>
<ul>
<li>CPU (default) &#8211; will set the maximum DOP to the value of PARALLEL_THREADS_PER_CPU * CPU_COUNT * # of instances.</li>
<li>IO  - will limit the DOP according to the I/O of the system (available only after running DBMS_RESOURCE_MANAGER.CALIBRATE_IO).</li>
<li>Integer value &#8211; will limit the DOP to this integer.</li>
</ul>
<p>When PARALLEL_DEGREE_POLICY is set to LIMITED, Oracle will automatically determine the DOP for the statements. However, statements that are not specified to run in parallel, will run in serial.</p>
<h2>Statement Queuing</h2>
<p>When a statement is executed, Oracle determines the DOP for this statement. If creating the calculated number of parallel processes will cause the total number of active parallel processes in the system to exceed the PARALLEL_SERVERS_TARGET, this statement will be queued.</p>
<p>The queue of statements is based on the simple “first in first out” mechanism. Once there are enough parallel processes available, the statement will start executing.</p>
<p>Using resource manager, we can set priority in the statement queue, timeout for statements and manage the amount of parallel processes for statements.</p>
<h2>In Memory Parallel Execution</h2>
<p>When running a parallel operation, the server process is reading the data from the file using direct operation into its PGA. The data blocks are not cached in the SGA and are not read from it. The in memory parallel execution feature enables the server processes to load the blocks to the SGA and read them from the SGA.</p>
<p>If the object is too large to fit in the buffer cache, Oracle will still use direct read.</p>
<h2>Disable Automatic Parallel Features</h2>
<p>Enabling and disabling the automatic parallel features is made using the PARALLEL_DEGREE_POLICY parameter:</p>
<ul>
<li>AUTO &#8211; all of the above features are enabled.</li>
<li>LIMITED &#8211; in memory parallel execution and statement queuing will be disabled, the automatic DOP will be enabled only for queries that were set to run in parallel.</li>
<li>MANUAL &#8211; disable all the automatic parallel features and revert parallel behavior to pre-11gR2</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.dbsnaps.com/oracle/parallel-new-features-in-oracle-11gr2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SQL Server 2008 &#8211; Using Query Hashes and Query Plan Hashes</title>
		<link>http://www.dbsnaps.com/sql-server/sql-server-query-hashes/</link>
		<comments>http://www.dbsnaps.com/sql-server/sql-server-query-hashes/#comments</comments>
		<pubDate>Sun, 05 Dec 2010 11:05:06 +0000</pubDate>
		<dc:creator>Danny Ravid</dc:creator>
				<category><![CDATA[Main-Performance]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[SQL Server - Latest Articles]]></category>
		<category><![CDATA[DMV]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[Query Hashes]]></category>
		<category><![CDATA[Query Plan Hashes]]></category>
		<category><![CDATA[SQL Server 2008]]></category>
		<category><![CDATA[sys.dm_exec_query_plan]]></category>
		<category><![CDATA[sys.dm_exec_query_stats]]></category>
		<category><![CDATA[sys.dm_exec_requests]]></category>

		<guid isPermaLink="false">http://www.dbsnaps.com/?p=643</guid>
		<description><![CDATA[In this post we will discuss SQL tuning methods by using DMV (sys.dm_exec_query_stats and sys.dm_exec_requests) and how to use Query Hashes and Query Plan Hashes in SQL Server 2008.]]></description>
			<content:encoded><![CDATA[<p><strong> </strong></p>
<p>When searching for resource-intensive queries, we can use the sys.dm_exec_query_stats and sys.dm_exec_requests.</p>
<p>These dynamic management views already where introduced in SQL server 2005.<br />
In SQL Server 2008 there are a couple of columns added to the sys.dm_exec_query_stats and sys.dm_exec_requests - <strong>The query_hash and the query_plan_hash </strong>column.</p>
<p>By using these columns we can find and tune similar queries that collectively consume significant system resources, and help determine the aggregate resource usage for similar queries and similar query execution plans.</p>
<p>First let&#8217;s look at the following queries:</p>
<pre class="brush: sql;">
use AdventureWorks
go
SELECT SOD.ProductID ,
sum((UnitPrice * OrderQty ) - (UnitPriceDiscount * OrderQty ) ) TotalSaleAmount
FROM Sales.SalesOrderHeader SOH
JOIN Sales.SalesOrderDetail SOD
   ON SOH.SalesOrderID = SOD.SalesOrderID
JOIN Production.Product P
   ON P.ProductID = SOD.ProductID
WHERE SOH.CustomerID = 520
AND SOD.OrderQty &gt; 10
GROUP BY SOD.ProductID;
go

SELECT SOD.ProductID ,sum((UnitPrice * OrderQty ) - (UnitPriceDiscount * OrderQty ) ) TotalSaleAmount
FROM Sales.SalesOrderHeader SOH
JOIN Sales.SalesOrderDetail SOD
   ON SOH.SalesOrderID = SOD.SalesOrderID
JOIN Production.Product P
   ON P.ProductID = SOD.ProductID
WHERE SOH.CustomerID = 523
AND SOD.OrderQty &gt; 10
GROUP BY SOD.ProductID;
go
</pre>
<p><strong> </strong></p>
<p>These queries are only different in the constant value supplied for the CustomerID column; Now let&#8217;s look at the Query_Hash values of this both queries:</p>
<pre class="brush: sql;">
SELECT st.text AS &quot;Query Text&quot;, qs.query_hash AS &quot;Query Hash&quot;
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text (qs.sql_handle) st
WHERE st.text ='SELECT SOD.ProductID ,sum((UnitPrice * OrderQty ) - (UnitPriceDiscount * OrderQty ) ) TotalSaleAmount FROM Sales.SalesOrderHeader SOH JOIN Sales.SalesOrderDetail SOD    ON SOH.SalesOrderID = SOD.SalesOrderID JOIN Production.Product P    ON P.ProductID = SOD.ProductID WHERE SOH.CustomerID = 520 AND SOD.OrderQty &gt; 10 GROUP BY SOD.ProductID;'
OR st.text = ' SELECT SOD.ProductID ,sum((UnitPrice * OrderQty ) - (UnitPriceDiscount * OrderQty ) ) TotalSaleAmount FROM Sales.SalesOrderHeader SOH JOIN Sales.SalesOrderDetail SOD    ON SOH.SalesOrderID = SOD.SalesOrderID JOIN Production.Product P    ON P.ProductID = SOD.ProductID WHERE SOH.CustomerID = 523 AND SOD.OrderQty &gt; 10 GROUP BY SOD.ProductID;'
</pre>
<p>We can see that although these queries&#8217; text does not exactly match, sql server 2008 identifies these queries as having the same structure and therefore have the same hash values.  This gives a significant advantage to help us identifying similar queries.  We can for instance use this information to find which queries would benefit from using parameterization to improve performance.  For example, let&#8217;s change the logic of the queries:</p>
<pre class="brush: sql;">
use AdventureWorks
go
SELECT SOD.ProductID , sum((UnitPrice * OrderQty ) - (UnitPriceDiscount * OrderQty ) ) TotalSaleAmount
FROM Sales.SalesOrderHeader SOH
JOIN Sales.SalesOrderDetail SOD
   ON SOH.SalesOrderID = SOD.SalesOrderID
JOIN Production.Product P
   on P.ProductID = SOD.ProductID
WHERE SOH.CustomerID = 520
AND SOD.OrderQty &gt; 10
GROUP BY SOD.ProductID;
go
SELECT  SOD.ProductID , sum((UnitPrice * OrderQty ) - (UnitPriceDiscount * OrderQty ) ) TotalSaleAmount
from Sales.SalesOrderHeader SOH
join Sales.SalesOrderDetail SOD
   on SOH.SalesOrderID = SOD.SalesOrderID
Join Production.Product P
   on P.ProductID = SOD.ProductID
where SOH.CustomerID = 523
OR SOD.OrderQty &gt; 10
GROUP BY SOD.ProductID;

go
</pre>
<p>Now, let&#8217;s find out the query hash for these two queries:</p>
<pre class="brush: sql;">
SELECT st.text AS &quot;Query Text&quot;, qs.query_hash AS &quot;Query Hash&quot;
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text (qs.sql_handle) st
WHERE st.text ='SELECT SOD.ProductID , sum((UnitPrice * OrderQty ) - (UnitPriceDiscount * OrderQty ) ) TotalSaleAmount FROM Sales.SalesOrderHeader SOH JOIN Sales.SalesOrderDetail SOD    ON SOH.SalesOrderID = SOD.SalesOrderID JOIN Production.Product P    ON P.ProductID = SOD.ProductID WHERE SOH.CustomerID = 520 AND SOD.OrderQty &gt; 10 GROUP BY SOD.ProductID;'
OR st.text = 'SELECT SOD.ProductID , sum((UnitPrice * OrderQty ) - (UnitPriceDiscount * OrderQty ) ) TotalSaleAmount from Sales.SalesOrderHeader SOH join Sales.SalesOrderDetail SOD    ON SOH.SalesOrderID = SOD.SalesOrderID JOIN Production.Product P    ON P.ProductID = SOD.ProductID WHERE SOH.CustomerID = 523 OR SOD.OrderQty &gt; 10 GROUP BY SOD.ProductID;' </pre>
<p><strong> </strong>We see that these 2 queries has different query hashes, so they to do not share the same logic.  Now let us examine the query plan hash column, how can we use this column to find performance issues?  Consider that you have similar queries like we have seen, but somehow they do not have the same query plan, this sometimes indicates a performance problem;  Let&#8217;s examine the following example (from SQL 2008 BOL):</p>
<pre class="brush: sql;">
USE AdventureWorks;
GO
SET STATISTICS XML ON;

SELECT T.TransactionID, T.TransactionDate, P.ProductID, P.Name
FROM Production.TransactionHistory T
JOIN Production.Product P
   ON T.ProductID = P.ProductID
WHERE P.ProductID = 1;
GO

SELECT T.TransactionID, T.TransactionDate, P.ProductID, P.Name
FROM Production.TransactionHistory T
JOIN Production.Product P
   ON T.ProductID = P.ProductID
WHERE P.ProductID = 3;
GO

SET STATISTICS XML OFF;
GO </pre>
<p><strong> </strong>If you examine the query&#8217;s plan you will see that they are different, although the query hashes are the same because we just changed the value for the ProductID column.</p>
<pre class="brush: sql;">
SELECT ST.text AS &quot;Query Text&quot;,QS.query_plan_hash ,QP.query_plan
FROM sys.dm_exec_query_stats QS
CROSS APPLY sys.dm_exec_sql_text (QS.sql_handle) ST
CROSS APPLY sys.dm_exec_query_plan(QS.plan_handle) QP
WHERE ST.text = 'SELECT T.TransactionID, T.TransactionDate, P.ProductID, P.Name FROM Production.TransactionHistory T JOIN Production.Product P ON T.ProductID = P.ProductID WHERE P.ProductID = 1;'
OR ST.text = 'SELECT T.TransactionID, T.TransactionDate, P.ProductID, P.Name FROM Production.TransactionHistory T JOIN Production.Product P    ON T.ProductID = P.ProductID WHERE P.ProductID = 3;'; </pre>
<p><strong> </strong>Below you can find a query to find similar queries with differnat query plans, in order to find the cost of each distinct query plan,we will use Xquery on the Query Plan Xml Column :</p>
<pre class="brush: sql;">
SELECT max([QueryText]) QueryText , max(SimilarQueries.query_plan.value('(//@StatementSubTreeCost)[1]','float')) QueryCost
FROM (SELECT QS1.*,ST.text AS QueryText,QP1.query_plan
      FROM sys.dm_exec_query_stats QS1
      CROSS APPLY sys.dm_exec_sql_text (QS1.sql_handle) ST
      CROSS APPLY sys.dm_exec_query_plan(QS1.plan_handle) QP1
      JOIN sys.dm_exec_query_stats QS2
         ON QS1.query_hash = QS2.query_hash
      WHERE QS1.query_plan_hash &lt;&gt; QS2.query_plan_hash ) as SimilarQueries
GROUP BY SimilarQueries.query_plan_hash
ORDER BY 1 </pre>
<p>We can determine that the second query plan is more costly. it will be much nicer if we can get in the same result set the Xml Query Plan itself; this requires some TSQL juggling around, since the XML data type cannot be used in a group by or with an aggregation function.</p>
<pre class="brush: sql;">
SELECT QueryText ,QueryCost,QP.query_plan QueryPlan
FROM (select max(QueryText) QueryText ,max(SimilarQueries.query_plan.value('(//@StatementSubTreeCost)[1]','float')) QueryCost ,max(plan_handle) plan_handle
      FROM  (SELECT QS1.*,ST.text AS QueryText,QP1.query_plan
             FROM sys.dm_exec_query_stats QS1
             CROSS APPLY sys.dm_exec_sql_text (QS1.sql_handle) ST
             CROSS APPLY sys.dm_exec_query_plan(QS1.plan_handle) QP1
             JOIN sys.dm_exec_query_stats QS2
                on QS1.query_hash = QS2.query_hash
             WHERE where QS1.query_plan_hash &lt;&gt; QS2.query_plan_hash ) as SimilarQueries
     GROUP BY SimilarQueries.query_plan_hash) SimilarQueriesCost
CROSS APPLY sys.dm_exec_query_plan(plan_handle) QP
ORDER BY 1
</pre>
<p><strong> </strong>In SQL 2008 Management Studio when we will click the Query Plan Xml Column you will immediately get the graphical representation of the query plan, this enables us to examine immediately the execution plan of the costly query plans.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dbsnaps.com/sql-server/sql-server-query-hashes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oracle 11g Performance Features</title>
		<link>http://www.dbsnaps.com/oracle/oracle-11g-performance-features/</link>
		<comments>http://www.dbsnaps.com/oracle/oracle-11g-performance-features/#comments</comments>
		<pubDate>Sat, 13 Nov 2010 13:42:24 +0000</pubDate>
		<dc:creator>Oded Raz</dc:creator>
				<category><![CDATA[Main-Performance]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Oracle - Latest Articles]]></category>
		<category><![CDATA[Tips & Tricks]]></category>
		<category><![CDATA[instance caging]]></category>
		<category><![CDATA[invisible indexes]]></category>
		<category><![CDATA[parallel]]></category>
		<category><![CDATA[pending statistics]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[real application testing]]></category>
		<category><![CDATA[sql plan management]]></category>

		<guid isPermaLink="false">http://www.dbsnaps.com/?p=631</guid>
		<description><![CDATA[Oracle 11g brings us many performance related features. In this article we will cover several of these features.]]></description>
			<content:encoded><![CDATA[<h3>Pending Statistics (11.1)</h3>
<p>Starting in Oracle 11.1, we have the option to gather statistics without publishing them to the optimizer. When using pending statistics we can allow the optimizer to use these statistics by setting the parameter OPTIMIZER_USE_PENDING_STATISTICS to true. After checking the new statistics we can publish or delete them.</p>
<h3>SQL Plan Management (11.1)</h3>
<p>SQL Plan Management allows the optimizer to maintain execution plan history for repeating SQL statements. Using this history, the optimizer can prevent plan changes for these SQL statements. The optimizer will save the new plan and will verify that the performance of the new plan is better than the old ones. After the verification, the optimizer can accept the plan and start using it.</p>
<h3>Invisible Indexes (11.1)</h3>
<p>Invisible indexes are regular indexes that are not used by the optimizer. We can create invisible indexes (or change indexes to be invisible) to verify how a new index or the deletion of an index will change the SQL plans. An index can be set to visible or invisible using the “create index” or “alter index” commands. To allow the optimizer to use invisible indexes, set the OPTIMIZER_USE_INVISIBLE_INDEXES parameter to true.</p>
<h3>Real Application Testing (11.1)</h3>
<p>Oracle Real Application Testing option contains two components, Database Replay and SQL Performance Analyzer. These features help us to identify performance issues before hardware and software changes.</p>
<ul>
<li>Database Replay: Database replay allows us to capture the real workload of the production system and replay it on a test environment. The test environment can have different hardware, Oracle version, parameters, etc. This way we can assess the impact of these changes on our production database.</li>
<li>SQL Performance Analyzer (SPA): the SPA allows us to identify SQL performance changes between the production and test environments. Using SPA we run the same SQL statements on both environments and see the actual improvement or degradation of these statements in the new environment.</li>
</ul>
<h3>Instance Caging (11.2)</h3>
<p>Instance caging in 11.2 allows us to limit the amount of CPUs the instance can use. To use instance caging, we set the CPU_COUNT parameter to the desired amount of CPUs. This feature allows us to have better load sharing when having several instances running on the same server.</p>
<h3>Automatic Parallelism (11.2)</h3>
<p>Automatic parallelism in 11.2 consists of three features:</p>
<ul>
<li>Automatic degree of parallelism: Oracle will decide which statements to run in parallel and the parallel degree</li>
<li>Statement queuing: long statements that can’t get enough parallel slaves will not be executed in serial, but will be queued until they can get the desired parallel degree</li>
<li>In memory parallel execution: enables the parallel slaves to use the buffer cache when accessing data blocks, instead of performing direct read from the physical disks.</li>
</ul>
<p>To fully enable this feature the PARALLEL_DEGREE_POLICY parameter should be set to AUTO. When the parameter is set to LIMITED, only the automatic parallel degree is enabled, and only for queries that we set to run in parallel.</p>
<p>To entirely disable this feature and revert to pre 11.2 behavior, set the PARALLEL_DEGREE_POLICY to MANUAL.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dbsnaps.com/oracle/oracle-11g-performance-features/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oracle &#8211; Writing into the Alert.log file</title>
		<link>http://www.dbsnaps.com/oracle/oracle-writing-into-the-alert-log-file/</link>
		<comments>http://www.dbsnaps.com/oracle/oracle-writing-into-the-alert-log-file/#comments</comments>
		<pubDate>Wed, 29 Sep 2010 16:28:54 +0000</pubDate>
		<dc:creator>Roni Vered</dc:creator>
				<category><![CDATA[Administration]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Oracle - Latest Articles]]></category>
		<category><![CDATA[Alert.log]]></category>
		<category><![CDATA[dbms_system.ksdwrt]]></category>

		<guid isPermaLink="false">http://www.dbsnaps.com/?p=551</guid>
		<description><![CDATA[The Alert.log file is a log that chronological records important information about error messages and exceptions during daily database operations, learn how to insert a manual records into this useful file.]]></description>
			<content:encoded><![CDATA[<p>The Alert.log file is a log that chronological records important information about error messages and exceptions during daily database operations.</p>
<p>In this log file you can find various messages such as: Database Startup and Shutdown, different ORA errors, log switches, pointers to trace files and dump files and more.</p>
<p><span style="font-size: 13.3333px;">The Alert.log is the first place a DBA will go to look for errors in the database.<br />
As many organizations monitor the Alert.log file for errors and exceptions it would have been nice if we could have entered our own errors and messages into the Alert.log. </span></p>
<p><span style="font-size: 13.3333px;">Oracle gives us the option to insert a manual record to the Alert.log and/or to the trace files themselves. </span></p>
<p><span style="font-size: 13.3333px;">The procedure <strong>kdswrt</strong> in <strong>dbms_system </strong>package<strong> </strong>allows us to write own messages in the alert log / trace files or both.<br />
It receives two parameters:</span></p>
<p><span style="font-size: 13.3333px;">-   A number that indicates where do we want to write our message:</span></p>
<ul>
<li>1 &#8211; Writing to a TRACE file.</li>
<li>2 &#8211; Writing to the Alert.log file.</li>
<li>3 &#8211; Writing to both of them.</li>
</ul>
<p><span style="font-size: 13.3333px;"> </span></p>
<p><span style="font-size: 13.3333px;">-   A text string (the message itself).</span></p>
<p><span style="font-size: 13.3333px;"><span style="text-decoration: underline;">USAGE:</span></span><span style="font-family: Consolas, Monaco, 'Courier New', Courier, monospace; line-height: 25px; font-size: 11.6667px; white-space: pre;"> </span></p>
<pre class="brush: sql;">exec dbms_system.ksdwrt(2, 'ORA-9999: Procedure TEST has ended successfully.);</pre>
<p><span style="font-size: 13.3333px;">The entry in the Alert.log will look like the following:</span><span style="font-family: Consolas, Monaco, 'Courier New', Courier, monospace; line-height: 25px; font-size: 8.33333px; white-space: pre;"> </span></p>
<pre class="brush: sql;">
Wed Sep 29 10:00:57 2010
Thread 1 advanced to log sequence 7615 (LGWR switch)
Current log# 1 seq# 7615 mem# 0: C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG
Wed Sep 29 11:10:15 2010
ORA-9999: Procedure TEST has ended successfully.
Wed Sep 29 11:10:15 2010
Thread 1 advanced to log sequence 7616 (LGWR switch)
Current log# 2 seq# 7616 mem# 0: C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG
Wed Sep 29 10:00:57 2010
Thread 1 advanced to log sequence 7615 (LGWR switch)
Current log# 1 seq# 7615 mem# 0: C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG
</pre>
<p><span style="font-size: 13.3333px;">It is a very useful feature, as we can use it in our PL/SQL procedures inside the exception handling section or to indicate the procedure’s progression.<br />
Moreover, it can be used inside Unix/Linux shell scripts &#8211; to insert Alert.log messages from various OS scripts.<br />
</span><span style="font-size: 13.3333px;">To see how to run SQL statements from SQLPLUS inside bash scripts, visit our post: <a title="oracle-running-sqlplus-from-unix-bash-scripts" href="http://www.dbsnaps.com/oracle/oracle-running-sqlplus-from-unix-bash-scripts/">oracle-running-sqlplus-from-unix-bash-scripts</a></span></p>
<p>In addition, in Oracle 11g and beyond we are able to directly query the Alert.log file with an SQL statement via the table <strong>X$DBGALERTEXT.</strong></p>
<p>For Example:<span style="font-family: Consolas, Monaco, 'Courier New', Courier, monospace; line-height: 21px; font-size: 11.6667px; white-space: pre;"> </span></p>
<pre class="brush: sql;">SELECT message_text FROM X$DBGALERTEXT WHERE rownum &lt; 20;</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.dbsnaps.com/oracle/oracle-writing-into-the-alert-log-file/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
