<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Dbms_output on Oracle Scripts</title><link>https://www.oraclescripts.com/tags/dbms_output/</link><description>Recent content in Dbms_output on Oracle Scripts</description><generator>Hugo -- gohugo.io</generator><language>en</language><copyright>OracleScripts.com</copyright><lastBuildDate>Fri, 18 Sep 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://www.oraclescripts.com/tags/dbms_output/index.xml" rel="self" type="application/rss+xml"/><item><title>Redefine a Table Online with DBMS_REDEFINITION, No DML Blocking</title><link>https://www.oraclescripts.com/post/redefine-table-online-dbms-redefinition-no-dml-blocking/</link><pubDate>Fri, 18 Sep 2026 00:00:00 +0000</pubDate><guid>https://www.oraclescripts.com/post/redefine-table-online-dbms-redefinition-no-dml-blocking/</guid><description>
&lt;h2 id="redefine-a-table-online-with-dbms_redefinition-no-dml-blocking"&gt;Redefine a Table Online with DBMS_REDEFINITION, No DML Blocking&lt;/h2&gt;
&lt;h2 id="purpose"&gt;Purpose&lt;/h2&gt;
&lt;p&gt;A DBA moving a table to a new tablespace, adding compression, or rebuilding a badly fragmented segment has one hard requirement: users can't lose access to that table while the change is happening. For decades the available tools — &lt;code&gt;CREATE TABLE AS SELECT&lt;/code&gt; plus a rename, or a plain &lt;code&gt;ALTER TABLE MOVE&lt;/code&gt; — all lock the table for at least part of the operation, even if only briefly. &lt;strong&gt;&lt;a href="https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_REDEFINITION.html"&gt;DBMS_REDEFINITION&lt;/a&gt;&lt;/strong&gt; restructures a table while it stays fully readable and writable the entire time.&lt;/p&gt;</description></item><item><title>Oracle: Find Tables with Outdated Statistics via DBA_TABLES</title><link>https://www.oraclescripts.com/post/oracle-database-query-to-find-tables-with-outdated-statistics-monitor-analyze-progress/</link><pubDate>Tue, 01 Jul 2025 00:00:00 +0000</pubDate><guid>https://www.oraclescripts.com/post/oracle-database-query-to-find-tables-with-outdated-statistics-monitor-analyze-progress/</guid><description>
&lt;h2 id="oracle-database-query-find-tables-with-outdated-statistics"&gt;Oracle Database Query: Find Tables with Outdated Statistics&lt;/h2&gt;
&lt;h2 id="purpose"&gt;Purpose&lt;/h2&gt;
&lt;p&gt;This Oracle Database query helps &lt;strong&gt;database administrators monitor the progress of table statistics collection&lt;/strong&gt; by identifying tables that have analyze dates older than the current date. It's particularly useful when running large-scale &lt;code&gt;ANALYZE&lt;/code&gt; operations and you need to track how many tables still require statistics updates.
&lt;script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-1012089347386563"
crossorigin="anonymous"&gt;&lt;/script&gt;
&lt;ins class="adsbygoogle"
style="display:block"
data-ad-client="ca-pub-1012089347386563"
data-ad-slot="5317081938"
data-ad-format="auto"
data-full-width-responsive="true"&gt;&lt;/ins&gt;
&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;&lt;/p&gt;
&lt;p&gt;This is useful if you are running an analyze and want to see how much is left to do&lt;/p&gt;</description></item><item><title>Oracle Active SQL: Monitor Sessions with v$session</title><link>https://www.oraclescripts.com/post/oracle-query-all-active-sql/</link><pubDate>Sun, 31 Dec 2023 00:00:00 +0000</pubDate><guid>https://www.oraclescripts.com/post/oracle-query-all-active-sql/</guid><description>
&lt;h2 id="show-all-active-sql-for-sessions-using-vsession-and-vsqlarea"&gt;Show all Active SQL for Sessions using v$session and v$sqlarea&lt;/h2&gt;
&lt;p&gt;Gain real-time insights into currently active user sessions and the SQL statements they are executing to troubleshoot performance issues and optimize resources
&lt;script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-1012089347386563"
crossorigin="anonymous"&gt;&lt;/script&gt;
&lt;ins class="adsbygoogle"
style="display:block"
data-ad-client="ca-pub-1012089347386563"
data-ad-slot="5317081938"
data-ad-format="auto"
data-full-width-responsive="true"&gt;&lt;/ins&gt;
&lt;script&gt;
(adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;&lt;/p&gt;
&lt;h2 id="sql-code"&gt;SQL Code&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 1&lt;/span&gt;&lt;span class="cl"&gt;set feedback off
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 2&lt;/span&gt;&lt;span class="cl"&gt;set serveroutput on size 9999
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 3&lt;/span&gt;&lt;span class="cl"&gt;column username format a20
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 4&lt;/span&gt;&lt;span class="cl"&gt;column sql_text format a55 word_wrapped
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 5&lt;/span&gt;&lt;span class="cl"&gt;begin
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 6&lt;/span&gt;&lt;span class="cl"&gt; for x in
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 7&lt;/span&gt;&lt;span class="cl"&gt; (select username||&amp;#39;(&amp;#39;||sid||&amp;#39;,&amp;#39;||serial#||&amp;#39;) ospid = &amp;#39;|| process ||
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 8&lt;/span&gt;&lt;span class="cl"&gt; &amp;#39; program = &amp;#39; || program username,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 9&lt;/span&gt;&lt;span class="cl"&gt; to_char(LOGON_TIME,&amp;#39; Day HH24:MI&amp;#39;) logon_time,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;10&lt;/span&gt;&lt;span class="cl"&gt; to_char(sysdate,&amp;#39; Day HH24:MI&amp;#39;) current_time,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;11&lt;/span&gt;&lt;span class="cl"&gt; sql_address,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;12&lt;/span&gt;&lt;span class="cl"&gt; sql_hash_value
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;13&lt;/span&gt;&lt;span class="cl"&gt; from v$session
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;14&lt;/span&gt;&lt;span class="cl"&gt; where status = &amp;#39;ACTIVE&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;15&lt;/span&gt;&lt;span class="cl"&gt; and rawtohex(sql_address) &amp;lt;&amp;gt; &amp;#39;00&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;16&lt;/span&gt;&lt;span class="cl"&gt; and username is not null ) loop
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;17&lt;/span&gt;&lt;span class="cl"&gt; for y in (select sql_text
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;18&lt;/span&gt;&lt;span class="cl"&gt; from v$sqlarea
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;19&lt;/span&gt;&lt;span class="cl"&gt; where address = x.sql_address ) loop
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;20&lt;/span&gt;&lt;span class="cl"&gt; if ( y.sql_text not like &amp;#39;%listener.get_cmd%&amp;#39; and
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;21&lt;/span&gt;&lt;span class="cl"&gt; y.sql_text not like &amp;#39;%RAWTOHEX(SQL_ADDRESS)%&amp;#39; ) then
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;22&lt;/span&gt;&lt;span class="cl"&gt; dbms_output.put_line( &amp;#39;--------------------&amp;#39; );
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;23&lt;/span&gt;&lt;span class="cl"&gt; dbms_output.put_line( x.username );
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;24&lt;/span&gt;&lt;span class="cl"&gt; dbms_output.put_line( x.logon_time || &amp;#39; &amp;#39; || x.current_time || &amp;#39; SQL#=&amp;#39; || x.sql_hash_value);
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;25&lt;/span&gt;&lt;span class="cl"&gt; dbms_output.put_line( substr( y.sql_text, 1, 250 ) );
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;26&lt;/span&gt;&lt;span class="cl"&gt; end if;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;27&lt;/span&gt;&lt;span class="cl"&gt; end loop;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;28&lt;/span&gt;&lt;span class="cl"&gt; end loop;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;29&lt;/span&gt;&lt;span class="cl"&gt;end;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="sample-oracle-output"&gt;Sample Oracle Output&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;1&lt;/span&gt;&lt;span class="cl"&gt;no rows selected
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;2&lt;/span&gt;&lt;span class="cl"&gt;SQL&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Purpose:&lt;/strong&gt;&lt;/p&gt;</description></item></channel></rss>