<?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/"
	
	xmlns:georss="http://www.georss.org/georss"
	xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
	>

<channel>
	<title>oracle19c; &#8211; Blog DBA Dutra</title>
	<atom:link href="https://www.dbadutra.com/tag/oracle19c/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.dbadutra.com</link>
	<description></description>
	<lastBuildDate>Wed, 08 Jan 2020 19:59:11 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.6.2</generator>
<site xmlns="com-wordpress:feed-additions:1">170494511</site>	<item>
		<title>Convertendo Dictionary Managed Tablespaces (DMT) para Local Managed Tablespaces (LMT)</title>
		<link>https://www.dbadutra.com/2020/01/convertendo-dictionary-managed-tablespaces-dmt-para-local-managed-tablespaces-lmt/</link>
					<comments>https://www.dbadutra.com/2020/01/convertendo-dictionary-managed-tablespaces-dmt-para-local-managed-tablespaces-lmt/#respond</comments>
		
		<dc:creator><![CDATA[André Luiz Dutra Ontalba]]></dc:creator>
		<pubDate>Wed, 08 Jan 2020 19:55:14 +0000</pubDate>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[oracle19c;]]></category>
		<guid isPermaLink="false">https://www.dbadutra.com/?p=5748</guid>

					<description><![CDATA[Hoje, encontramos um banco de dados muito antigo usando alocação de espaços de tabela muito antiga. Em outra vida, quando comecei com o banco de dados Oracle e costumávamos chamar MOSC como Metalink (@ludodba), havia uma maneira de gerenciar as extensões no banco de dados denominadas DMT (DICTIONARY MANAGED TABLESPACES), devido principalmente a problemas de [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Hoje, encontramos um banco de dados muito antigo usando alocação de espaços de tabela muito antiga. Em outra vida, quando comecei com o banco de dados Oracle e costumávamos chamar MOSC como Metalink (@ludodba), havia uma maneira de gerenciar as extensões no banco de dados denominadas DMT (DICTIONARY MANAGED TABLESPACES), devido principalmente a problemas de desempenho, a Oracle decidiu altere esse gerenciamento das extensões para residir no dicionário de dados (SYSTEM tbs), para ser armazenado em bitmaps no espaço de tabela local, por isso eles o chamaram LOCAL MANAGED TABLESPACE (LMT). </p>



<p>Esse recurso foi introduzido no Oracle 9i em 2001, quase 20 anos atrás, e ainda vemos coisas antigas por aí.</p>



<p><br> As etapas que executaremos são muito rápidas e simples, mas, como estamos mudando algumas coisas principais no banco de dados, certifique-se de ter um backup completo e confiável antes.</p>



<p><br> Aqui está uma nota importante, um pouco confusa, leia-a antes de prosseguir. </p>



<p>Continuando, após converter SYSTEM, você não poderá mais colocar o DMT no modo de leitura e gravação.</p>



<p>*** NOTA IMPORTANTE ***<br> Nota: Depois que o espaço de tabela SYSTEM for migrado para gerenciado localmente, nenhum espaço de tabela gerenciado por dicionário no banco de dados poderá ser lido / gravado.</p>



<p><br> Se você deseja usar os espaços de tabela gerenciados por dicionário no modo de leitura / gravação, a Oracle recomenda<br> que você migre primeiro esses espaços de tabela para gerenciados localmente antes de migrar o espaço de tabela SYSTEM.</p>



<p> <strong>***********************************</strong> </p>



<hr class="wp-block-separator"/>



<p><strong>1) Coloque o DATABASE em restricted session</strong></p>



<pre class="wp-block-preformatted">SQL&gt; ALTER SYSTEM ENABLE RESTRICTED SESSION;<br><br>System altered.<br><br>SELECT logins FROM v$instance;<br><br>LOGINS<br>---------<br>RESTRICTED</pre>



<p></p>



<p> <strong>2) Defina a default temporary tablespace no banco de dados.</strong></p>



<pre class="wp-block-preformatted">SQL&gt; col PROPERTY_NAME form a30<br>SQL&gt; col PROPERTY_VALUE form a30<br>SQL&gt; col DESCRIPTION form a50<br>SQL&gt; select * from database_properties where PROPERTY_NAME = 'DEFAULT_TEMP_TABLESPACE';<br><br>PROPERTY_NAME PROPERTY_VALUE DESCRIPTION<br>------------------------------ ------------------------------ --------------------------------------------------<br>DEFAULT_TEMP_TABLESPACE SYSTEM ID of default temporary tablespace</pre>



<p>Obs .: Muito ruim, usando o espaço da system tablespace para armazenar segmentos temporários, alguns DBAs aqui não fizeram sua lição de casa … De fato, seu trabalho.</p>



<pre class="wp-block-preformatted">SQL&gt; ALTER DATABASE DEFAULT TEMPORARY TABLESPACE TEMPTBS01;<br><br>Database altered.</pre>



<p>Obs .: Verifique se o temp é gerenciado pelo dicionário, se sim, recrie-o antes para prosseguir com os outros.</p>



<p><strong>3) Migre todos os outros Tablespaces gerenciados pelo DICIONÁRIO antes de MIGRAR a system</strong>.</p>



<pre class="wp-block-preformatted">select tablespace_name, status, extent_management <br>from dba_tablespaces <br>where extent_management = 'DICTIONARY';</pre>



<p> <strong>4) Execute a migração</strong></p>



<pre class="wp-block-preformatted">select 'execute DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_TO_LOCAL ('''||tablespace_name||''');' cmd <br>from dba_tablespaces where extent_management = 'DICTIONARY'<br>and tablespace_name &lt;&gt; 'SYSTEM';<br><br>CMD<br>----------------------------------------------------------------------------------------<br>execute DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_TO_LOCAL ('INDX');<br>execute DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_TO_LOCAL ('TOOLS');<br>execute DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_TO_LOCAL ('TESTTBS1');<br>execute DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_TO_LOCAL ('TESTTBS2');<br>execute DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_TO_LOCAL ('USERS');<br><br>SQL&gt; execute DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_TO_LOCAL ('INDX');<br><br>PL/SQL procedure successfully completed.<br><br>SQL&gt; execute DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_TO_LOCAL ('TOOLS');<br><br>PL/SQL procedure successfully completed.<br><br>SQL&gt; execute DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_TO_LOCAL ('TESTTBS1');<br><br>PL/SQL procedure successfully completed.<br><br>SQL&gt; execute DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_TO_LOCAL ('TESTTBS2');<br><br>PL/SQL procedure successfully completed.<br><br>SQL&gt; execute DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_TO_LOCAL ('USERS');<br><br>PL/SQL procedure successfully completed.</pre>



<p><strong>5) Verifique se todos os Tablespace, exceto SYSTEM, foram migrados para o LMT, após executar a migração do SYSTEM para o LMT, se você deixou algum DMT (espaço de tabela gerenciado por dicionário), não poderá mais colocá-los para leitura e gravação.</strong></p>



<pre class="wp-block-preformatted">select tablespace_name, status, extent_management <br>from dba_tablespaces <br>where extent_management = 'DICTIONARY'<br>and tablespace_name &lt;&gt; 'SYSTEM';<br><br>no rows selected</pre>



<p><strong>6) Coloque todos os TABLESPACE que não sejam UNDO, TEMP e SYSAUX no modo somente leitura.</strong></p>



<pre class="wp-block-preformatted">select 'ALTER TABLESPACE '||tablespace_name||' READ ONLY;' CMD<br>from dba_tablespaces <br>where tablespace_name NOT in ('SYSTEM','SYSAUX') <br>and contents not in ('UNDO','TEMPORARY');<br><br>CMD<br>----------------------------------------------------------<br>ALTER TABLESPACE INDX READ ONLY;<br>ALTER TABLESPACE TOOLS READ ONLY;<br>ALTER TABLESPACE TESTTBS1 READ ONLY;<br>ALTER TABLESPACE TESTTBS2 READ ONLY;<br>ALTER TABLESPACE USERS READ ONLY;</pre>



<p><strong>7) Verifique o status da Tablespaces</strong></p>



<pre class="wp-block-preformatted">SQL&gt; select tablespace_name, status from dba_tablespaces;<br><br>TABLESPACE_NAME STATUS<br>------------------------------ ---------<br>SYSTEM ONLINE<br>INDX READ ONLY<br>TOOLS READ ONLY<br>TESTTBS1 READ ONLY<br>TESTTBS2 READ ONLY<br>USERS READ ONLY<br>UNDOTBS01 ONLINE<br>TEMPTBS01 ONLINE<br>SYSAUX ONLINE</pre>



<p> <strong>8) Coloque SYSAUX tablespace offline</strong></p>



<pre class="wp-block-preformatted">SQL&gt; alter tablespace SYSAUX offline;<br><br>Tablespace altered.</pre>



<p>  <strong>9) Check o status do tablespaces novamente, somente UNDO, TEMP e SYSTEM deve estar online.</strong></p>



<pre class="wp-block-preformatted">SQL&gt; select tablespace_name, status from dba_tablespaces;<br><br>TABLESPACE_NAME STATUS<br>------------------------------ ---------<br>SYSTEM ONLINE<br>INDX READ ONLY<br>TOOLS READ ONLY<br>TESTTBS1 READ ONLY<br>TESTTBS2 READ ONLY<br>USERS READ ONLY<br>UNDOTBS01 ONLINE<br>TEMPTBS01 ONLINE<br>SYSAUX OFFLINE</pre>



<p> <strong>10) Agora podemo migrar a SYSTEM tablespaces</strong>  </p>



<pre class="wp-block-preformatted">SQL&gt; execute DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_TO_LOCAL ('SYSTEM');<br><br>PL/SQL procedure successfully completed.</pre>



<p> <strong>11) Coloque as tablespaces novamente em read write e online mode</strong> </p>



<pre class="wp-block-preformatted">select 'ALTER TABLESPACE '||tablespace_name||' READ WRITE;' CMD<br>from dba_tablespaces <br>where tablespace_name NOT in ('SYSTEM','SYSAUX') <br>and contents not in ('UNDO','TEMPORARY');<br><br>CMD<br>-----------------------------------------------------------<br>ALTER TABLESPACE INDX READ WRITE;<br>ALTER TABLESPACE TOOLS READ WRITE;<br>ALTER TABLESPACE USR READ WRITE;<br>ALTER TABLESPACE TESTTBS2 READ WRITE;<br>ALTER TABLESPACE USERS READ WRITE;<br><br>SQL&gt; ALTER TABLESPACE INDX READ WRITE;<br><br>Tablespace altered.<br><br>SQL&gt; ALTER TABLESPACE TOOLS READ WRITE;<br><br>Tablespace altered.<br><br>SQL&gt; ALTER TABLESPACE USR READ WRITE;<br><br>Tablespace altered.<br><br>SQL&gt; ALTER TABLESPACE TESTTBS2 READ WRITE;<br><br>Tablespace altered.<br><br>SQL&gt; ALTER TABLESPACE USERS READ WRITE;<br><br>Tablespace altered.</pre>



<p> <strong>12) Coloque a SYSAUX novamente online</strong></p>



<pre class="wp-block-preformatted">SQL&gt; ALTER TABLESPACE SYSAUX ONLINE;<br><br>Tablespace altered.</pre>



<p> <strong>13) Check o status das tablespaces, mais uma vez.</strong> </p>



<pre class="wp-block-preformatted">SQL&gt; select tablespace_name, status, extent_management from dba_tablespaces;<br><br>TABLESPACE_NAME STATUS EXTENT_MAN<br>------------------------------ --------- ----------<br>SYSTEM ONLINE LOCAL<br>INDX ONLINE LOCAL<br>TOOLS ONLINE LOCAL<br>TESTTBS1 ONLINE LOCAL<br>TESTTBS2 ONLINE LOCAL<br>USERS ONLINE LOCAL<br>UNDOTBS01 ONLINE LOCAL<br>TEMPTBS01 ONLINE LOCAL<br>SYSAUX ONLINE LOCAL</pre>



<p> <strong>14) Desabilite o restricted session do banco de dados</strong> </p>



<pre class="wp-block-preformatted">SQL&gt; ALTER SYSTEM DISABLE RESTRICTED SESSION;<br><br>System altered.<br><br>SELECT logins FROM v$instance;<br><br>LOGINS<br>---------<br>ALLOWED</pre>



<p>Se você não seguir todas as etapas cuidadosamente, poderá encontrar alguns problemas como estes abaixo</p>



<pre class="wp-block-preformatted">SQL&gt; execute DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_TO_LOCAL ('SYSTEM');<br><br>ERROR at line 1:<br>ORA-10644: SYSTEM tablespace cannot be default temporary tablespace<br>ORA-06512: at "SYS.DBMS_SPACE_ADMIN", line 227<br>ORA-06512: at line 1<br><br>SQL&gt; execute DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_TO_LOCAL ('SYSTEM');<br><br>ERROR at line 1:<br>ORA-10647: Tablespace other than SYSTEM, UNDO, TEMP not<br>found in read only mode<br>ORA-06512: at "SYS.DBMS_SPACE_ADMIN", line 227<br>ORA-06512: at line 1<br><br>SQL&gt; select tablespace_name from dba_tablespaces;<br><br>TABLESPACE_NAME<br>------------------------------<br>SYSTEM<br>TEMP<br>USERS<br>IDX<br>SYSAUX<br>UNDO<br><br>SQL&gt; alter tablespace USERS read only;<br>SQL&gt; alter tablespace IDX read only;<br><br>SQL&gt; execute DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_TO_LOCAL ('SYSTEM');<br><br>ERROR at line 1:<br>ORA-10648: Tablespace SYSAUX is not offline<br>ORA-06512: at "SYS.DBMS_SPACE_ADMIN", line 227<br>ORA-06512: at line 1</pre>



<p>Esperamos que isso ajude vocês!!!</p>



<p> <strong>Rodrigo Mufalani e Andre Luiz Dutra Ontalba</strong></p>



<p class="has-small-font-size"> <strong>Disclaimer:&nbsp;</strong>“The postings on this site are my own and don’t necessarily represent may actual employer positions, strategies or opinions. The information here was edited&nbsp; to be useful for general purpose, specific data and identifications was removed to allow reach generic audience and to be useful.”  </p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbadutra.com/2020/01/convertendo-dictionary-managed-tablespaces-dmt-para-local-managed-tablespaces-lmt/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">5748</post-id>	</item>
	</channel>
</rss>
