<?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>Bugra Canbakal&#039;s Oracle Blog</title>
	<atom:link href="http://blog.canbakal.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.canbakal.com</link>
	<description></description>
	<lastBuildDate>Wed, 22 May 2013 11:25:45 +0000</lastBuildDate>
	<language>tr-TR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>User managed backup ve restore</title>
		<link>http://blog.canbakal.com/2013/03/31/user-managed-backup-ve-restore/</link>
		<comments>http://blog.canbakal.com/2013/03/31/user-managed-backup-ve-restore/#comments</comments>
		<pubDate>Sun, 31 Mar 2013 08:37:53 +0000</pubDate>
		<dc:creator>Bugra Canbakal</dc:creator>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[resetlog]]></category>
		<category><![CDATA[user managed backup]]></category>
		<category><![CDATA[user managed restore]]></category>

		<guid isPermaLink="false">http://blog.canbakal.com/?p=575</guid>
		<description><![CDATA[<p>1.AMAÇ VE KAPSAM Bu yazıda user managed backup alıp , bu almış olduğumuz backup&#8217;ı restore  işlemi uygulayacağız. 2.UYGULAMA 2.1. Tablespacelerin backuplarını cp le alabilmemiz için öncelikle database üstünde tablespacelerin statusunu değiştirmemiz gerekmekte. Tek tek tablespaceleri backup moduna almak yerine &#8220;ALTER DATABASE BEGIN BACKUP;&#8221; komutunuda kullanabilirsiniz. [oracle@sb]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.2.0 Production on [...]</p><p>The post <a href="http://blog.canbakal.com/2013/03/31/user-managed-backup-ve-restore/">User managed backup ve restore</a> appeared first on <a href="http://blog.canbakal.com">Bugra Canbakal&#039;s Oracle Blog</a>.</p>]]></description>
				<content:encoded><![CDATA[<p><img title="More..." alt="" src="http://i2.wp.com/blog.canbakal.com/wp-includes/js/tinymce/plugins/wordpress/img/trans.gif?w=660" data-recalc-dims="1" /><strong>1.<strong>AMAÇ VE KAPSAM</strong></strong></p>
<p>Bu yazıda user managed backup alıp , bu almış olduğumuz backup&#8217;ı restore  işlemi uygulayacağız.</p>
<p><img title="More..." alt="" src="http://i2.wp.com/blog.canbakal.com/wp-includes/js/tinymce/plugins/wordpress/img/trans.gif?w=660" data-recalc-dims="1" /><img title="More..." alt="" src="http://i2.wp.com/blog.canbakal.com/wp-includes/js/tinymce/plugins/wordpress/img/trans.gif?w=660" data-recalc-dims="1" /></p>
<p><strong><strong>2.UYGULAMA</strong></strong></p>
<p><strong>2.1.</strong> Tablespacelerin backuplarını cp le alabilmemiz için öncelikle database üstünde tablespacelerin statusunu değiştirmemiz gerekmekte. Tek tek tablespaceleri backup moduna almak yerine &#8220;ALTER DATABASE BEGIN BACKUP;&#8221; komutunuda kullanabilirsiniz.</p>
<p><img title="More..." alt="" src="http://i2.wp.com/blog.canbakal.com/wp-includes/js/tinymce/plugins/wordpress/img/trans.gif?w=660" data-recalc-dims="1" /></p>
<pre class="brush: sql; gutter: true">[oracle@sb]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.2.0 Production on Fri Jan 18 10:21:38 2013
Copyright (c) 1982, 2010, Oracle. All rights reserved.
SQL&gt; select &#039;alter tablespace &#039;||TABLESPACE_NAME||&#039; begin backup;&#039; from SYS.DBA_DATA_FILES;
&#039;ALTERTABLESPACE&#039;||TABLESPACE_NAME||&#039;BEGINBACKUP;&#039;
-------------------------------------------------------------
alter tablespace USERS begin backup;
alter tablespace UNDOTBS1 begin backup;
alter tablespace SYSAUX begin backup;
alter tablespace SYSTEM begin backup;
alter tablespace EXAMPLE begin backup;
alter tablespace MGMT_ECM_DEPOT_TS begin backup;
alter tablespace MGMT_TABLESPACE begin backup;
alter tablespace MGMT_AD4J_TS begin backup;

8 rows selected.

SQL&gt; alter tablespace USERS begin backup; 
Database altered.
SQL&gt; alter tablespace UNDOTBS1 begin backup; 
Database altered.
SQL&gt; alter tablespace SYSAUX begin backup; 
Database altered.
SQL&gt; alter tablespace SYSTEM begin backup; 
Database altered.
SQL&gt; alter tablespace EXAMPLE begin backup; 
Database altered.
SQL&gt; alter tablespace MGMT_ECM_DEPOT_TS begin backup; 
Database altered.
SQL&gt; alter tablespace MGMT_TABLESPACE begin backup; 
Database altered.
SQL&gt; alter tablespace MGMT_AD4J_TS begin backup;
Database altered.</pre>
<p><span id="more-575"></span></p>
<p><strong>2.2. </strong>Şimdide cp scriptimizi hazırlayalım.</p>
<pre class="brush: sql; gutter: true">SQL&gt; select &#039;cp &#039;|| FILE_NAME || &#039; /cloud/backup&#039;||FILE_NAME from SYS.DBA_DATA_FILES;
&#039;CP&#039;||FILE_NAME||&#039;/CLOUD/BACKUP&#039;||FILE_NAME
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
cp /oracle/app/oracle/oradata/dbf12c/users01.dbf /cloud/backup/oracle/app/oracle/oradata/dbf12c/users01.dbf
cp /oracle/app/oracle/oradata/dbf12c/undotbs01.dbf /cloud/backup/oracle/app/oracle/oradata/dbf12c/undotbs01.dbf
cp /oracle/app/oracle/oradata/dbf12c/sysaux01.dbf /cloud/backup/oracle/app/oracle/oradata/dbf12c/sysaux01.dbf
cp /oracle/app/oracle/oradata/dbf12c/system01.dbf /cloud/backup/oracle/app/oracle/oradata/dbf12c/system01.dbf
cp /oracle/app/oracle/oradata/dbf12c/example01.dbf /cloud/backup/oracle/app/oracle/oradata/dbf12c/example01.dbf
cp /oracle/app/oracle/oradata/dbf12c/mgmt_depot.dbf /cloud/backup/oracle/app/oracle/oradata/dbf12c/mgmt_depot.dbf
cp /oracle/app/oracle/oradata/dbf12c/mgmt.dbf /cloud/backup/oracle/app/oracle/oradata/dbf12c/mgmt.dbf
cp /oracle/app/oracle/oradata/dbf12c/mgmt_ad4j.dbf /cloud/backup/oracle/app/oracle/oradata/dbf12c/mgmt_ad4j.dbf</pre>
<p><strong>2.3.</strong> Yukarda oluşturduğumuz scripti çalıştırıyorum böylelikle tablespacelerin yedeklerini başka bir klasöre almış olacağım.</p>
<pre class="brush: sql; gutter: true">[oracle@sb]$ cp /oracle/app/oracle/oradata/dbf12c/users01.dbf /cloud/backup/oracle/app/oracle/oradata/dbf12c/users01.dbf
[oracle@sb]$ cp /oracle/app/oracle/oradata/dbf12c/undotbs01.dbf /cloud/backup/oracle/app/oracle/oradata/dbf12c/undotbs01.dbf
[oracle@sb]$ cp /oracle/app/oracle/oradata/dbf12c/sysaux01.dbf /cloud/backup/oracle/app/oracle/oradata/dbf12c/sysaux01.dbf
[oracle@sb]$ cp /oracle/app/oracle/oradata/dbf12c/system01.dbf /cloud/backup/oracle/app/oracle/oradata/dbf12c/system01.dbf
[oracle@sb]$ cp /oracle/app/oracle/oradata/dbf12c/example01.dbf /cloud/backup/oracle/app/oracle/oradata/dbf12c/example01.dbf
[oracle@sb]$ cp /oracle/app/oracle/oradata/dbf12c/mgmt_depot.dbf /cloud/backup/oracle/app/oracle/oradata/dbf12c/mgmt_depot.dbf
[oracle@sb]$ cp /oracle/app/oracle/oradata/dbf12c/mgmt.dbf /cloud/backup/oracle/app/oracle/oradata/dbf12c/mgmt.dbf
[oracle@sb]$ cp /oracle/app/oracle/oradata/dbf12c/mgmt_ad4j.dbf /cloud/backup/oracle/app/oracle/oradata/dbf12c/mgmt_ad4j.dbf</pre>
<p><strong>2.4.</strong> Tablespacelerin yedeklerini aldığımıza göre backup modu kapatabilirim.</p>
<pre class="brush: sql; gutter: true">SQL&gt; select &#039;alter tablespace &#039;||TABLESPACE_NAME||&#039; end backup;&#039; from SYS.DBA_DATA_FILES;
&#039;ALTER TABLESPACE&#039;||TABLESPACE_NAME||&#039; end backup;&#039;
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
alter tablespace USERS end backup;
alter tablespace UNDOTBS1 end backup;
alter tablespace SYSAUX end backup;
alter tablespace SYSTEM end backup;
alter tablespace EXAMPLE end backup;
alter tablespace MGMT_ECM_DEPOT_TS end backup;
alter tablespace MGMT_TABLESPACE end backup;
alter tablespace MGMT_AD4J_TS end backup;
8 rows selected.

SQL&gt; alter tablespace USERS end backup;
Database altered.
SQL&gt; alter tablespace UNDOTBS1 end backup;
Database altered.
SQL&gt; alter tablespace SYSAUX end backup;
Database altered.
SQL&gt; alter tablespace SYSTEM end backup;
Database altered.
SQL&gt; alter tablespace EXAMPLE end backup;
Database altered.
SQL&gt; alter tablespace MGMT_ECM_DEPOT_TS end backup;
Database altered.
SQL&gt; alter tablespace MGMT_TABLESPACE end backup;
Database altered.
SQL&gt; alter tablespace MGMT_AD4J_TS end backup;
Database altered.</pre>
<p><strong>2.5.</strong> Hali hazırda archivelog&#8217;a cevrilmemiş redo logları archivelog a  çevirip redo logları boşaltmamız gerekiyor.</p>
<pre class="brush: sql; gutter: true">SQL&gt; alter system archive log current ;
System altered.</pre>
<p><strong>2.6. </strong>Control file backupını alıp backup işlemini bitiriyoruz, controlfile&#8217;larınızın lokasyonlarını bilmiyorsanız onuda veritabanından sorgulamanız gerekmekte</p>
<pre class="brush: sql; gutter: true">SQL&gt; alter database backup controlfile to &#039;/cloud/backup/oracle/app/oracle/oradata/dbf12c/control.ctl&#039;;
Database altered.</pre>
<p><strong>2.7.</strong> Veritabanını kapatmadan önce restore işleminde kolaylık sağlaması için bir script daha calıstırıyorum.</p>
<pre class="brush: sql; gutter: true">SQL&gt; select &#039;cp /cloud/backup&#039;|| FILE_NAME || &#039; &#039;||FILE_NAME from SYS.DBA_DATA_FILES;
&#039;CP /CLOUD/BACKUP &#039;||FILE_NAME||&#039; &#039;||FILE_NAME
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
cp /cloud/backup/oracle/app/oracle/oradata/dbf12c/users01.dbf /oracle/app/oracle/oradata/dbf12c/users01.dbf
cp /cloud/backup/oracle/app/oracle/oradata/dbf12c/undotbs01.dbf /oracle/app/oracle/oradata/dbf12c/undotbs01.dbf
cp /cloud/backup/oracle/app/oracle/oradata/dbf12c/sysaux01.dbf /oracle/app/oracle/oradata/dbf12c/sysaux01.dbf
cp /cloud/backup/oracle/app/oracle/oradata/dbf12c/system01.dbf /oracle/app/oracle/oradata/dbf12c/system01.dbf
cp /cloud/backup/oracle/app/oracle/oradata/dbf12c/example01.dbf /oracle/app/oracle/oradata/dbf12c/example01.dbf
cp /cloud/backup/oracle/app/oracle/oradata/dbf12c/mgmt_depot.dbf /oracle/app/oracle/oradata/dbf12c/mgmt_depot.dbf
cp /cloud/backup/oracle/app/oracle/oradata/dbf12c/mgmt.dbf /oracle/app/oracle/oradata/dbf12c/mgmt.dbf
cp /cloud/backup/oracle/app/oracle/oradata/dbf12c/mgmt_ad4j.dbf /oracle/app/oracle/oradata/dbf12c/mgmt_ad4j.dbf</pre>
<p><strong>2.8.</strong> Artık restore işlemine başlayabiliriz. Veritabanını kapatıyorum,mevcut tablespace&amp;controlfile siliyorum ve backupını almış olduğum tablespace&amp;controlfile ları original lokasyonlarına kopyalıyorum.</p>
<pre class="brush: sql; gutter: true">SQL&gt; Shutdown abort;
ORACLE instance shut down.
SQL&gt;exit;
[oracle@sb]$ rm -f /oracle/app/oracle/oradata/dbf12c/*
[oracle@sb]$ cp /cloud/backup/oracle/app/oracle/oradata/dbf12c/users01.dbf /oracle/app/oracle/oradata/dbf12c/users01.dbf
[oracle@sb]$ cp /cloud/backup/oracle/app/oracle/oradata/dbf12c/undotbs01.dbf /oracle/app/oracle/oradata/dbf12c/undotbs01.dbf
[oracle@sb]$ cp /cloud/backup/oracle/app/oracle/oradata/dbf12c/sysaux01.dbf /oracle/app/oracle/oradata/dbf12c/sysaux01.dbf
[oracle@sb]$ cp /cloud/backup/oracle/app/oracle/oradata/dbf12c/system01.dbf /oracle/app/oracle/oradata/dbf12c/system01.dbf
[oracle@sb]$ cp /cloud/backup/oracle/app/oracle/oradata/dbf12c/example01.dbf /oracle/app/oracle/oradata/dbf12c/example01.dbf
[oracle@sb]$ cp /cloud/backup/oracle/app/oracle/oradata/dbf12c/mgmt_depot.dbf /oracle/app/oracle/oradata/dbf12c/mgmt_depot.dbf
[oracle@sb]$ cp /cloud/backup/oracle/app/oracle/oradata/dbf12c/mgmt.dbf /oracle/app/oracle/oradata/dbf12c/mgmt.dbf
[oracle@sb]$ cp /cloud/backup/oracle/app/oracle/oradata/dbf12c/mgmt_ad4j.dbf /oracle/app/oracle/oradata/dbf12c/mgmt_ad4j.dbf
[oracle@sb]$ cp /cloud/backup/oracle/app/oracle/oradata/dbf12c/control.ctl /oracle/app/oracle/oradata/dbf12c/control01.ctl
[oracle@sb]$ cp /cloud/backup/oracle/app/oracle/oradata/dbf12c/control.ctl /oracle/app/oracle/oradata/dbf12c/control02.ctl</pre>
<p><strong>2.9.</strong> Veritabanını açmayı deniyelim.</p>
<pre class="brush: sql; gutter: true">SQL&gt; startup
ORACLE instance started.
Total System Global Area 2142679040 bytes
Fixed Size 1337720 bytes
Variable Size 671090312 bytes
Database Buffers 1442840576 bytes
Redo Buffers 27410432 bytes
Database mounted.
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open
SQL&gt; alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-01195: online backup of file 1 needs more recovery to be consistent
ORA-01110: data file 1: &#039;/oracle/app/oracle/oradata/dbf12c/system01.dbf&#039;</pre>
<p><strong>2.10.</strong> Veritabanını açmamıza izin vermedi, zaten bende belli bir zaman dilimine kadar restore yapmak istiyordum buyüzden backup&#8217;ını almıs oldugumuz controlfile kullanarak restore işlemini yapıyoruz.</p>
<pre class="brush: sql; gutter: true">SQL&gt; recover database using backup controlfile until time &#039;2013-03-16:10:00:00&#039;;
ORA-00279: change 1237645 generated at 03/16/2013 9:25:27 needed for thread 1
ORA-00289: suggestion :
/oracle/app/oracle/flash_recovery_area/DBF12C/archivelog/2013_03_16/o1_mf_1_60_8
o06tyom_.arc
ORA-00280: change 1237645 for thread 1 is in sequence #60
Specify log: {=suggested | filename | AUTO | CANCEL}
auto
ORA-00279: change 1239277 generated at 03/16/2013 9:39:42 needed for thread 1
ORA-00289: suggestion :
/oracle/app/oracle/flash_recovery_area/DBF12C/archivelog/2013_03_16/o1_mf_1_61_8
o071fh4_.arc
ORA-00280: change 1239277 for thread 1 is in sequence #61
ORA-00278: log file
&#039;/oracle/app/oracle/flash_recovery_area/DBF12C/archivelog/2013_03_16/o1_mf_1_60_
8o06tyom_.arc&#039; no longer needed for this recovery
ORA-00308: cannot open archived log
&#039;/oracle/app/oracle/flash_recovery_area/DBF12C/archivelog/2013_03_16/o1_mf_1_62_
%u_.arc&#039;
ORA-27037: unable to obtain file status
Linux Error: 2: No such file or directory
Additional information: 3</pre>
<p><strong>2.11.</strong> Ve şimdi veritabanını resetlog kullanarak tekrardan açmaya çalışalım.</p>
<pre class="brush: sql; gutter: true">SQL&gt; alter database open resetlogs;
Database altered.
SQL&gt; select status from gv$instance ;
STATUS
 ------------
 OPEN</pre>
<p>The post <a href="http://blog.canbakal.com/2013/03/31/user-managed-backup-ve-restore/">User managed backup ve restore</a> appeared first on <a href="http://blog.canbakal.com">Bugra Canbakal&#039;s Oracle Blog</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.canbakal.com/2013/03/31/user-managed-backup-ve-restore/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flashback database</title>
		<link>http://blog.canbakal.com/2013/01/18/flashback-database/</link>
		<comments>http://blog.canbakal.com/2013/01/18/flashback-database/#comments</comments>
		<pubDate>Fri, 18 Jan 2013 12:04:35 +0000</pubDate>
		<dc:creator>Bugra Canbakal</dc:creator>
				<category><![CDATA[RMAN]]></category>
		<category><![CDATA[Single Node]]></category>
		<category><![CDATA[flashback]]></category>
		<category><![CDATA[oracle flashback]]></category>
		<category><![CDATA[resetlogs]]></category>

		<guid isPermaLink="false">http://blog.canbakal.com/?p=543</guid>
		<description><![CDATA[<p>1.AMAÇ VE KAPSAM Flashback database teknolojisi sayesinde mantiksal yapilmiş olan hataları belirtmiş olduğumuz  flashback süresi boyutunda düzeltmemiz mümkün.Flashback database de dönüş işlemini gerçekleştirirken zaman,log sequence veya scn kullanabiliriz. Not: Disk hatalari veya datafile/redo/controlfile dosyalarin silinmesi gibi fiziksel hatalarda ise bu teknolojiyi kullanamayız. 2.UYGULAMA 2.1. Kapalı olan veritabanıma bağlanıp flashback database özelliğini açıyoruz. [oracle@sb trace]$ sqlplus [...]</p><p>The post <a href="http://blog.canbakal.com/2013/01/18/flashback-database/">Flashback database</a> appeared first on <a href="http://blog.canbakal.com">Bugra Canbakal&#039;s Oracle Blog</a>.</p>]]></description>
				<content:encoded><![CDATA[<p><strong>1.AMAÇ VE KAPSAM</strong><br />
Flashback database teknolojisi sayesinde mantiksal yapilmiş olan hataları belirtmiş olduğumuz  flashback süresi boyutunda düzeltmemiz mümkün.Flashback database de dönüş işlemini gerçekleştirirken zaman,log sequence veya scn kullanabiliriz.</p>
<p>Not: Disk hatalari veya datafile/redo/controlfile dosyalarin silinmesi gibi fiziksel hatalarda ise bu teknolojiyi kullanamayız.</p>
<p><img title="More..." alt="" src="http://i2.wp.com/blog.canbakal.com/wp-includes/js/tinymce/plugins/wordpress/img/trans.gif?w=660" data-recalc-dims="1" /><img title="More..." alt="" src="http://i2.wp.com/blog.canbakal.com/wp-includes/js/tinymce/plugins/wordpress/img/trans.gif?w=660" data-recalc-dims="1" /></p>
<p><strong>2.UYGULAMA</strong></p>
<p><strong>2.1.</strong> Kapalı olan veritabanıma bağlanıp flashback database özelliğini açıyoruz.</p>
<p><span id="more-543"></span></p>
<pre class="brush: sql; gutter: true">[oracle@sb trace]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.2.0 Production on Fri Jan 18 10:21:38 2013

Copyright (c) 1982, 2010, Oracle.  All rights reserved.

Connected to an idle instance.

SQL&gt; startup mount
ORACLE instance started.

Total System Global Area 4.0353E+10 bytes
Fixed Size            2235176 bytes
Variable Size         2.1072E+10 bytes
Database Buffers     1.9193E+10 bytes
Redo Buffers           85233664 bytes
Database mounted.
SQL&gt; alter database flashback on;
Database altered.</pre>
<p><strong>2.2.  </strong>Db_flashback_retention_target süresine bakmamız gerekiyor ,bu parametre default olarak 1140 dk ya ayarlidir bunu 2 gune cekip veritabanını açık posizyona getiriyoruz.</p>
<pre class="brush: sql; gutter: true">SQL&gt; show parameter flashback

NAME                                 TYPE             VALUE
------------------------------------ ---------------- --------------
db_flashback_retention_target         integer         1440

SQL&gt; alter system set db_flashback_retention_target=2880;

System altered.

SQL&gt; alter database open;

Database altered.</pre>
<p><strong>2.3.</strong> 1000 row lu dummy bir tablo oluşturuyorum.</p>
<pre class="brush: sql; gutter: true"> CREATE TABLE bcanbakal.table_x 
as select * from dba_objects where rownum &lt; 1001;    Table created. SQL&gt; select count(1) from bcanbakal.table_x;

  COUNT(1)
----------
      1000</pre>
<p><strong>2.4.</strong> Oluşturmuş olduğum bu tabloya truncate işlemini gerçekleştirecem, bu işlemi gerçekleştirmeden önce tablo dolu haldeyken ki database scn numarasini alıyorum.</p>
<pre class="brush: sql; gutter: true">SQL&gt; select a.oldest_flashback_scn,(select scn_to_timestamp(a.oldest_flashback_scn) from dual) oldest_flashback_time,(select &#039;Current scn: &#039;|| current_scn||&#039; .Current scn to date: &#039;|| scn_to_timestamp(current_scn) from v$database) current_scn,a.retention_target,a.flashback_size,a.estimated_flashback_size from v$flashback_database_log a;

OLDEST_FLASHBACK_SCN     OLDEST_FLASHBACK_TIME                 CURRENT_SCN                                                                       RETENTION_TARGET   FLASHBACK_SIZE  ESTIMATED_FLASHBACK_SIZE
--------------------     ----------------------------------   --------------------------------------------------------------                    ----------------    --------------  ------------------------
         4363163         30-OCT-12 11.03.32.000000000 AM         Current scn: 5243411 .Current scn to date: 18-JAN-13 11.03.47.000000000 AM         2880            100687872       5256462336     

SQL&gt; truncate table bcanbakal.table_x;

Table truncated.      

SQL&gt; select count(1) from bcanbakal.table_x;

  COUNT(1)
----------
     0</pre>
<p><strong>2.5.</strong> Veritabanı kapatıp ,tablomuzu truncate yapmadan önceki scn numarasına flashback database teknolojisiyle dönüş yapıyorum.</p>
<pre class="brush: sql; gutter: true">SQL&gt; shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL&gt; startup mount;
ORACLE instance started.

Total System Global Area 4.0353E+10 bytes
Fixed Size            2235176 bytes
Variable Size         2.1072E+10 bytes
Database Buffers     1.9193E+10 bytes
Redo Buffers           85233664 bytes
Database mounted.
SQL&gt; flashback database to scn 5243411;

Flashback complete.</pre>
<p><strong>2.6. </strong>Veritabanını resetlogs la açıyoruz bu işlemden sonra yeni bir fullback almanızı öneririm, çünkü artık eski backupların bir özelliği kalmıyacak.</p>
<pre class="brush: sql; gutter: true">SQL&gt; alter database open resetlogs;

Database altered.</pre>
<p><strong>2.7.</strong>  Flashback islemi bittigine gore tablomuzu tekrardan kontrol edebiliriz.</p>
<pre class="brush: sql; gutter: true">SQL&gt; select count(1) from bcanbakal.table_x;

  COUNT(1)
----------
      1000</pre>
<p>The post <a href="http://blog.canbakal.com/2013/01/18/flashback-database/">Flashback database</a> appeared first on <a href="http://blog.canbakal.com">Bugra Canbakal&#039;s Oracle Blog</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.canbakal.com/2013/01/18/flashback-database/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>UTL MAIL: Veritabanina email gönderme package&#8217;ın kurulması</title>
		<link>http://blog.canbakal.com/2012/12/31/utl-mail-veritabanina-email-gonderme-packagein-kurulmasi/</link>
		<comments>http://blog.canbakal.com/2012/12/31/utl-mail-veritabanina-email-gonderme-packagein-kurulmasi/#comments</comments>
		<pubDate>Mon, 31 Dec 2012 08:45:40 +0000</pubDate>
		<dc:creator>Bugra Canbakal</dc:creator>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Single Node]]></category>
		<category><![CDATA[CES]]></category>
		<category><![CDATA[database email]]></category>
		<category><![CDATA[ORA-06502]]></category>
		<category><![CDATA[ORA-06512]]></category>
		<category><![CDATA[UTL_MAIL]]></category>

		<guid isPermaLink="false">http://blog.canbakal.com/?p=503</guid>
		<description><![CDATA[<p>1.AMAÇ VE KAPSAM Veritabanı üstünden mail gönderebilmek için utlmail ve prvtmail scriptlerini çalıştırmamız gerekiyor, script sayesinde bazı packagelar  ve synonymler oluşturacağız.Script kurulumunu tamamladıktan sonra smtp server ve gerekli hakları verdiğimiz taktirde veritabanı üstünden mail gönderebilir hale gelicez. 2.UYGULAMA 2.1. Veritabanına sqlplus üstünden sysdba olarak bağlanıyoruz ve utlmail.sql scriptini çalıştırıyoruz. 2.1.1.Utlmail.sql içeriği -bash-3.2$ cat $ORACLE_HOME/rdbms/admin/utlmail.sql REM [...]</p><p>The post <a href="http://blog.canbakal.com/2012/12/31/utl-mail-veritabanina-email-gonderme-packagein-kurulmasi/">UTL MAIL: Veritabanina email gönderme package&#8217;ın kurulması</a> appeared first on <a href="http://blog.canbakal.com">Bugra Canbakal&#039;s Oracle Blog</a>.</p>]]></description>
				<content:encoded><![CDATA[<p><strong>1.AMAÇ VE KAPSAM</strong><br />
Veritabanı üstünden mail gönderebilmek için utlmail ve prvtmail scriptlerini çalıştırmamız gerekiyor, script sayesinde bazı packagelar  ve synonymler oluşturacağız.Script kurulumunu tamamladıktan sonra smtp server ve gerekli hakları verdiğimiz taktirde veritabanı üstünden mail gönderebilir hale gelicez.</p>
<p><img title="More..." alt="" src="http://i2.wp.com/blog.canbakal.com/wp-includes/js/tinymce/plugins/wordpress/img/trans.gif?w=660" data-recalc-dims="1" /><img title="More..." alt="" src="http://i2.wp.com/blog.canbakal.com/wp-includes/js/tinymce/plugins/wordpress/img/trans.gif?w=660" data-recalc-dims="1" /></p>
<p><strong>2.UYGULAMA</strong></p>
<p><strong>2.1.</strong> Veritabanına sqlplus üstünden sysdba olarak bağlanıyoruz ve utlmail.sql scriptini çalıştırıyoruz.</p>
<p><strong>2.1.1.</strong>Utlmail.sql içeriği<span id="more-503"></span></p>
<pre class="brush: sql; gutter: true">-bash-3.2$ cat $ORACLE_HOME/rdbms/admin/utlmail.sql
REM
REM $Header: plsql/admin/utlmail.sql /main/6 2009/01/06 14:20:27 traney Exp $
REM
REM utlmail.sql
REM
REM Copyright (c) 2002, 2008, Oracle and/or its affiliates.
REM All rights reserved. 
REM
REM    NAME
REM      utlmail.sql - PL/SQL Package for sending email messages (UTL_MAIL)
REM
REM    DESCRIPTION
REM      
REM
REM    NOTES
REM      PL/SQL package to send email messages.
REM    This package by default is not granted to anyone. Users
REM    who want to send email should contact their DBA
REM    to obtain the necessary execute privilege for this package.
REM
REM    MODIFIED   (MM/DD/YY)
REM    traney      12/29/08 - add reply-to
REM    rpang       05/04/06 - Made invoker rights routine
REM    lvbcheng    02/21/05 - 2801081
REM    lvbcheng    12/11/03 - Remove grant of UTL_MAIL to public 
REM    lvbcheng    02/25/03 - define priority levels
REM    eehrsam     10/07/02 - eehrsam_utl_mail_new_pkg
REM    eehrsam     05/01/02 - Created
REM

CREATE OR REPLACE PACKAGE utl_mail AUTHID CURRENT_USER AS

  -------------
  --  CONSTANTS
  --
  invalid_argument EXCEPTION;
  invalid_priority EXCEPTION;
  invalid_argument_errcode CONSTANT PLS_INTEGER:= -29261;
  PRAGMA EXCEPTION_INIT(invalid_argument, -29261);
  PRAGMA EXCEPTION_INIT(INVALID_PRIORITY, -44101);
  /*----------------------------------------------------------------
  **
  ** SEND - send an email message
  **
  ** This procedure packages and delivers an email message to the 
  ** SMTP server specified by the following configuration parameters:
  **
  **   SMTP_SERVER=my_server.my_company.com
  **   SMTP_DOMAIN=my_company.com
  **
  ** SEND PROCEDURE
  ** IN
  **   sender       - sender address
  **   recipients   - address(es) of 1 or more recipients, comma delimited
  **   cc           - CC (carbon copy) recipient(s)), 1 or more addresses,
  **                    comma delimited, default=NULL
  **   bcc          - BCC (blind carbon copy) recipient(s), 1 or more 
  **                    addresses, comma delimited, default=NULL
  **   subject      - subject string, default=NULL
  **   message      - message text, default=NULL
  **   mime_type    - mime type, default=&#039;text/plain&#039;
  **   priority     - message priority, default=3, valid values are [1..5]
  **
  ** SEND_ATTACH_VARCHAR2 PROCEDURE
  ** IN
  **   sender       - sender address
  **   recipients   - address(es) of 1 or more recipients, comma delimited
  **   cc           - CC (carbon copy) recipient(s)), 1 or more addresses,
  **                    comma delimited, default=NULL
  **   bcc          - BCC (blind carbon copy) recipient(s), 1 or more 
  **                    addresses, comma delimited, default=NULL
  **   subject      - subject string, default=NULL
  **   message      - message text, default=NULL
  **   mime_type    - mime type, default=&#039;text/plain&#039;
  **   priority     - message priority, default=3, valid values are [1..5]
  **   att_txt_inline - boolean specifying whether the attachment is viewable 
  **                    inline with the message body text, default=TRUE
  **   attachment   - attachment text data
  **   att_mime_type- attachment mime_type, default=&#039;text/plain&#039;
  **   att_filename - filename to be offered as a default upon saving the
  **                    attachment to disk
  **
  ** SEND_ATTACH_RAW PROCEDURE
  ** IN
  **   sender       - sender address
  **   recipients   - address(es) of 1 or more recipients, comma delimited
  **   cc           - CC (carbon copy) recipient(s)), 1 or more addresses,
  **                    comma delimited, default=NULL
  **   bcc          - BCC (blind carbon copy) recipient(s), 1 or more 
  **                    addresses, comma delimited, default=NULL
  **   subject      - subject string, default=NULL
  **   message      - message text, default=NULL
  **   mime_type    - mime type, default=&#039;text/plain&#039;
  **   priority     - message priority, default=3, valid values are [1..5]
  **   att_raw_inline - boolean specifying whether the attachment is viewable 
  **                    inline with the message body text, default=TRUE
  **   attachment   - attachment RAW data
  **   att_mime_type- attachment mime_type, default=&#039;application/octet&#039;
  **   att_filename - filename to be offered as a default upon saving the
  **                    attachment to disk
  **
  */

  PROCEDURE send(sender         IN VARCHAR2 CHARACTER SET ANY_CS,
                 recipients     IN VARCHAR2 CHARACTER SET ANY_CS,
                 cc             IN VARCHAR2 CHARACTER SET ANY_CS DEFAULT NULL,
                 bcc            IN VARCHAR2 CHARACTER SET ANY_CS DEFAULT NULL,
                 subject        IN VARCHAR2 CHARACTER SET ANY_CS DEFAULT NULL,
                 message        IN VARCHAR2 CHARACTER SET ANY_CS DEFAULT NULL,
                 mime_type      IN VARCHAR2 CHARACTER SET ANY_CS 
                                   DEFAULT &#039;text/plain; charset=us-ascii&#039;,
                 priority       IN PLS_INTEGER DEFAULT 3,
                 replyto        IN VARCHAR2 CHARACTER SET ANY_CS DEFAULT NULL);

  PROCEDURE send_attach_varchar2(
                 sender         IN VARCHAR2 CHARACTER SET ANY_CS,
                 recipients     IN VARCHAR2 CHARACTER SET ANY_CS,
                 cc             IN VARCHAR2 CHARACTER SET ANY_CS DEFAULT NULL,
                 bcc            IN VARCHAR2 CHARACTER SET ANY_CS DEFAULT NULL,
                 subject        IN VARCHAR2 CHARACTER SET ANY_CS DEFAULT NULL,
                 message        IN VARCHAR2 CHARACTER SET ANY_CS DEFAULT NULL,
                 mime_type      IN VARCHAR2 CHARACTER SET ANY_CS 
                                   DEFAULT &#039;text/plain; charset=us-ascii&#039;,
                 priority       IN PLS_INTEGER DEFAULT 3,
                 attachment     IN VARCHAR2 CHARACTER SET ANY_CS,
                 att_inline     IN BOOLEAN  DEFAULT TRUE,
                 att_mime_type  IN VARCHAR2 CHARACTER SET ANY_CS 
                                   DEFAULT &#039;text/plain; charset=us-ascii&#039;,
                 att_filename   IN VARCHAR2 CHARACTER SET ANY_CS DEFAULT NULL,
                 replyto        IN VARCHAR2 CHARACTER SET ANY_CS DEFAULT NULL);

  PROCEDURE send_attach_raw(
                 sender         IN VARCHAR2 CHARACTER SET ANY_CS,
                 recipients     IN VARCHAR2 CHARACTER SET ANY_CS,
                 cc             IN VARCHAR2 CHARACTER SET ANY_CS DEFAULT NULL,
                 bcc            IN VARCHAR2 CHARACTER SET ANY_CS DEFAULT NULL,
                 subject        IN VARCHAR2 CHARACTER SET ANY_CS DEFAULT NULL,
                 message        IN VARCHAR2 CHARACTER SET ANY_CS DEFAULT NULL,
                 mime_type      IN VARCHAR2 CHARACTER SET ANY_CS 
                                   DEFAULT &#039;text/plain; charset=us-ascii&#039;,
                 priority       IN PLS_INTEGER DEFAULT 3,
                 attachment     IN RAW,
                 att_inline     IN BOOLEAN  DEFAULT TRUE,
                 att_mime_type  IN VARCHAR2 CHARACTER SET ANY_CS 
                                   DEFAULT &#039;application/octet&#039;,
                 att_filename   IN VARCHAR2 CHARACTER SET ANY_CS DEFAULT NULL,
                 replyto        IN VARCHAR2 CHARACTER SET ANY_CS DEFAULT NULL);

END;
/

CREATE OR REPLACE PUBLIC SYNONYM utl_mail FOR sys.utl_mail;</pre>
<p><strong>2.1.2.  </strong>Utlmail.sql sqlplus üstünden sysdba olarak çalıştırıyoruz.<strong><br />
</strong></p>
<pre class="brush: sql; gutter: true">SQL&gt; @$ORACLE_HOME/rdbms/admin/utlmail.sql

Package created.

Synonym created.</pre>
<p><strong>2.2.</strong> Veritabanına sqlplus üstünden sysdba olarak bağlanıyoruz ve prvtmail.plb scriptini çalıştırıyoruz.</p>
<p><strong>2.2.1.</strong> Prvtmail.plb scriptin içeriği</p>
<pre class="brush: sql; gutter: true">-bash-3.2$  cat $ORACLE_HOME/rdbms/admin/utlmail.sql
REM
REM $Header: plsql/admin/utlmail.sql /main/6 2009/01/06 14:20:27 traney Exp $
REM
REM utlmail.sql
REM
REM Copyright (c) 2002, 2008, Oracle and/or its affiliates.
REM All rights reserved. 
REM
REM    NAME
REM      utlmail.sql - PL/SQL Package for sending email messages (UTL_MAIL)
REM
REM    DESCRIPTION
REM      
REM
REM    NOTES
REM      PL/SQL package to send email messages.
REM    This package by default is not granted to anyone. Users
REM    who want to send email should contact their DBA
REM    to obtain the necessary execute privilege for this package.
REM
REM    MODIFIED   (MM/DD/YY)
REM    traney      12/29/08 - add reply-to
REM    rpang       05/04/06 - Made invoker rights routine
REM    lvbcheng    02/21/05 - 2801081
REM    lvbcheng    12/11/03 - Remove grant of UTL_MAIL to public 
REM    lvbcheng    02/25/03 - define priority levels
REM    eehrsam     10/07/02 - eehrsam_utl_mail_new_pkg
REM    eehrsam     05/01/02 - Created
REM

CREATE OR REPLACE PACKAGE utl_mail AUTHID CURRENT_USER AS

  -------------
  --  CONSTANTS
  --
  invalid_argument EXCEPTION;
  invalid_priority EXCEPTION;
  invalid_argument_errcode CONSTANT PLS_INTEGER:= -29261;
  PRAGMA EXCEPTION_INIT(invalid_argument, -29261);
  PRAGMA EXCEPTION_INIT(INVALID_PRIORITY, -44101);
  /*----------------------------------------------------------------
  **
  ** SEND - send an email message
  **
  ** This procedure packages and delivers an email message to the 
  ** SMTP server specified by the following configuration parameters:
  **
  **   SMTP_SERVER=my_server.my_company.com
  **   SMTP_DOMAIN=my_company.com
  **
  ** SEND PROCEDURE
  ** IN
  **   sender       - sender address
  **   recipients   - address(es) of 1 or more recipients, comma delimited
  **   cc           - CC (carbon copy) recipient(s)), 1 or more addresses,
  **                    comma delimited, default=NULL
  **   bcc          - BCC (blind carbon copy) recipient(s), 1 or more 
  **                    addresses, comma delimited, default=NULL
  **   subject      - subject string, default=NULL
  **   message      - message text, default=NULL
  **   mime_type    - mime type, default=&#039;text/plain&#039;
  **   priority     - message priority, default=3, valid values are [1..5]
  **
  ** SEND_ATTACH_VARCHAR2 PROCEDURE
  ** IN
  **   sender       - sender address
  **   recipients   - address(es) of 1 or more recipients, comma delimited
  **   cc           - CC (carbon copy) recipient(s)), 1 or more addresses,
  **                    comma delimited, default=NULL
  **   bcc          - BCC (blind carbon copy) recipient(s), 1 or more 
  **                    addresses, comma delimited, default=NULL
  **   subject      - subject string, default=NULL
  **   message      - message text, default=NULL
  **   mime_type    - mime type, default=&#039;text/plain&#039;
  **   priority     - message priority, default=3, valid values are [1..5]
  **   att_txt_inline - boolean specifying whether the attachment is viewable 
  **                    inline with the message body text, default=TRUE
  **   attachment   - attachment text data
  **   att_mime_type- attachment mime_type, default=&#039;text/plain&#039;
  **   att_filename - filename to be offered as a default upon saving the
  **                    attachment to disk
  **
  ** SEND_ATTACH_RAW PROCEDURE
  ** IN
  **   sender       - sender address
  **   recipients   - address(es) of 1 or more recipients, comma delimited
  **   cc           - CC (carbon copy) recipient(s)), 1 or more addresses,
  **                    comma delimited, default=NULL
  **   bcc          - BCC (blind carbon copy) recipient(s), 1 or more 
  **                    addresses, comma delimited, default=NULL
  **   subject      - subject string, default=NULL
  **   message      - message text, default=NULL
  **   mime_type    - mime type, default=&#039;text/plain&#039;
  **   priority     - message priority, default=3, valid values are [1..5]
  **   att_raw_inline - boolean specifying whether the attachment is viewable 
  **                    inline with the message body text, default=TRUE
  **   attachment   - attachment RAW data
  **   att_mime_type- attachment mime_type, default=&#039;application/octet&#039;
  **   att_filename - filename to be offered as a default upon saving the
  **                    attachment to disk
  **
  */

  PROCEDURE send(sender         IN VARCHAR2 CHARACTER SET ANY_CS,
                 recipients     IN VARCHAR2 CHARACTER SET ANY_CS,
                 cc             IN VARCHAR2 CHARACTER SET ANY_CS DEFAULT NULL,
                 bcc            IN VARCHAR2 CHARACTER SET ANY_CS DEFAULT NULL,
                 subject        IN VARCHAR2 CHARACTER SET ANY_CS DEFAULT NULL,
                 message        IN VARCHAR2 CHARACTER SET ANY_CS DEFAULT NULL,
                 mime_type      IN VARCHAR2 CHARACTER SET ANY_CS 
                                   DEFAULT &#039;text/plain; charset=us-ascii&#039;,
                 priority       IN PLS_INTEGER DEFAULT 3,
                 replyto        IN VARCHAR2 CHARACTER SET ANY_CS DEFAULT NULL);

  PROCEDURE send_attach_varchar2(
                 sender         IN VARCHAR2 CHARACTER SET ANY_CS,
                 recipients     IN VARCHAR2 CHARACTER SET ANY_CS,
                 cc             IN VARCHAR2 CHARACTER SET ANY_CS DEFAULT NULL,
                 bcc            IN VARCHAR2 CHARACTER SET ANY_CS DEFAULT NULL,
                 subject        IN VARCHAR2 CHARACTER SET ANY_CS DEFAULT NULL,
                 message        IN VARCHAR2 CHARACTER SET ANY_CS DEFAULT NULL,
                 mime_type      IN VARCHAR2 CHARACTER SET ANY_CS 
                                   DEFAULT &#039;text/plain; charset=us-ascii&#039;,
                 priority       IN PLS_INTEGER DEFAULT 3,
                 attachment     IN VARCHAR2 CHARACTER SET ANY_CS,
                 att_inline     IN BOOLEAN  DEFAULT TRUE,
                 att_mime_type  IN VARCHAR2 CHARACTER SET ANY_CS 
                                   DEFAULT &#039;text/plain; charset=us-ascii&#039;,
                 att_filename   IN VARCHAR2 CHARACTER SET ANY_CS DEFAULT NULL,
                 replyto        IN VARCHAR2 CHARACTER SET ANY_CS DEFAULT NULL);

  PROCEDURE send_attach_raw(
                 sender         IN VARCHAR2 CHARACTER SET ANY_CS,
                 recipients     IN VARCHAR2 CHARACTER SET ANY_CS,
                 cc             IN VARCHAR2 CHARACTER SET ANY_CS DEFAULT NULL,
                 bcc            IN VARCHAR2 CHARACTER SET ANY_CS DEFAULT NULL,
                 subject        IN VARCHAR2 CHARACTER SET ANY_CS DEFAULT NULL,
                 message        IN VARCHAR2 CHARACTER SET ANY_CS DEFAULT NULL,
                 mime_type      IN VARCHAR2 CHARACTER SET ANY_CS 
                                   DEFAULT &#039;text/plain; charset=us-ascii&#039;,
                 priority       IN PLS_INTEGER DEFAULT 3,
                 attachment     IN RAW,
                 att_inline     IN BOOLEAN  DEFAULT TRUE,
                 att_mime_type  IN VARCHAR2 CHARACTER SET ANY_CS 
                                   DEFAULT &#039;application/octet&#039;,
                 att_filename   IN VARCHAR2 CHARACTER SET ANY_CS DEFAULT NULL,
                 replyto        IN VARCHAR2 CHARACTER SET ANY_CS DEFAULT NULL);

END;
/

CREATE OR REPLACE PUBLIC SYNONYM utl_mail FOR sys.utl_mail;</pre>
<p><strong>2.2.2.</strong> Prvtmail.plb scriptini sqlplus üstünden sysdba olarak çalıştırıyoruz.</p>
<pre class="brush: sql; gutter: true">SQL&gt; @$ORACLE_HOME/rdbms/admin/prvtmail.plb

Package created.

Package body created.

Grant succeeded.

Package body created.

No errors.</pre>
<p><strong>2.3.</strong> Smtp serverı set edip ,kullanıcımıza utl_mail package&#8217;ını çalıştırma hakkını vermemiz gerekiyor.</p>
<pre class="brush: sql; gutter: true">SQL&gt; alter system set smtp_out_server= &#039;172.20.100.100&#039; scope=both;

System altered.

SQL&gt;  GRANT EXECUTE ON UTL_MAIL TO bcanbakal;

Grant succeeded.</pre>
<p><strong>2.4. </strong>Aşağıdaki tarz bir sorguylapackage çalışıp çalışmadığını test edebilirsiniz.</p>
<pre class="brush: sql; gutter: true">SQL&gt; exec UTL_MAIL.SEND (&#039;gonderen@mail_adresi.com&#039;,&#039;alici_1@mail_adresi.com;alici_2@mail_adresi.com&#039;,NULL,NULL,&#039;Mailin subject kismi&#039;,&#039;Mailin body kismi&#039; , &#039;text/html; charset=us-ascii&#039;,NULL);

PL/SQL procedure successfully completed.</pre>
<p><strong>2.6.</strong>  Aşağıdaki tarz <strong>ORA-06502,ORA-06512</strong> hatalarını alırsanız smtp serverınızda sorun var demektir.</p>
<pre class="brush: sql; gutter: true">ORA-06502: PL/SQL: numeric or value error
ORA-06512: at &quot;SYS.UTL_MAIL&quot;, line 654
ORA-06512: at &quot;SYS.UTL_MAIL&quot;, line 671</pre>
<p><strong>2.7.</strong> UTL_MAIL package büyük mailler gönderirken sorun çıkartabiliyor, bu tarz durumlarda daha profosyonel bir çözüm olan CES i kullanmanızı öneririm.</p>
<p>CES package scripti: <a href="http://www.oracletips.info/ces_email_files.sql">http://www.oracletips.info/ces_email_files.sql</a></p>
<p>CES package email gönderme örnekleri: <a href="http://www.uaex.edu/bknox/Using_CES.email_files.htm">http://www.uaex.edu/bknox/Using_CES.email_files.htm</a></p>
<p>The post <a href="http://blog.canbakal.com/2012/12/31/utl-mail-veritabanina-email-gonderme-packagein-kurulmasi/">UTL MAIL: Veritabanina email gönderme package&#8217;ın kurulması</a> appeared first on <a href="http://blog.canbakal.com">Bugra Canbakal&#039;s Oracle Blog</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.canbakal.com/2012/12/31/utl-mail-veritabanina-email-gonderme-packagein-kurulmasi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Logical Standby Kurulumu</title>
		<link>http://blog.canbakal.com/2012/11/28/logical-standby-kurulumu/</link>
		<comments>http://blog.canbakal.com/2012/11/28/logical-standby-kurulumu/#comments</comments>
		<pubDate>Wed, 28 Nov 2012 11:46:49 +0000</pubDate>
		<dc:creator>Bugra Canbakal</dc:creator>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Standby - Dataguard]]></category>
		<category><![CDATA[dataguard]]></category>
		<category><![CDATA[logical dataguard]]></category>
		<category><![CDATA[logical standby]]></category>

		<guid isPermaLink="false">http://blog.canbakal.com/?p=487</guid>
		<description><![CDATA[<p>1.AMAÇ VE KAPSAM Başka bir yazımda Physical standby veritabanı kurulumunu anlatmıştım, bu yazımda ise kurmuş olduğumuz physical standby database&#8217;i logical standby&#8217;a çevireceğiz. 2.UYGULAMA 2.1. Primary database üstünde asagidaki SQL sorgusunu yaziyoruz, Sorgular sonucu  veritabaninda hangi tablolar logical standbyda desteklenmiyor onlari buluyoruz. SQL&#62; Select * from dba_logstdby_unsupported;  OWNER                 TABLE_NAME                    COLUMN_NAME         DATA_TYPE           --------------------- --------------------------    ----------------    --------------- [...]</p><p>The post <a href="http://blog.canbakal.com/2012/11/28/logical-standby-kurulumu/">Logical Standby Kurulumu</a> appeared first on <a href="http://blog.canbakal.com">Bugra Canbakal&#039;s Oracle Blog</a>.</p>]]></description>
				<content:encoded><![CDATA[<p><strong>1.AMAÇ VE KAPSAM</strong><br />
Başka bir yazımda Physical standby veritabanı kurulumunu anlatmıştım, bu yazımda ise kurmuş olduğumuz physical standby database&#8217;i <a href="http://blog.canbakal.com/tag/logical-standby/" class="st_tag internal_tag" rel="tag" title="Posts tagged with logical standby">logical standby</a>&#8217;a çevireceğiz.</p>
<p><img title="More..." alt="" src="http://i2.wp.com/blog.canbakal.com/wp-includes/js/tinymce/plugins/wordpress/img/trans.gif?w=660" data-recalc-dims="1" /><img title="More..." alt="" src="http://i2.wp.com/blog.canbakal.com/wp-includes/js/tinymce/plugins/wordpress/img/trans.gif?w=660" data-recalc-dims="1" /></p>
<p><strong>2.UYGULAMA</strong></p>
<p><strong>2.1.</strong> Primary database üstünde asagidaki SQL sorgusunu yaziyoruz, Sorgular sonucu  veritabaninda hangi tablolar logical standbyda desteklenmiyor onlari buluyoruz.</p>
<p><span id="more-487"></span></p>
<pre class="brush: sql; gutter: true">SQL&gt; Select * from dba_logstdby_unsupported;

 OWNER                 TABLE_NAME                    COLUMN_NAME         DATA_TYPE          
--------------------- --------------------------    ----------------    --------------- 
OE    CATEGORIES_TAB    CATEGORY_ID                    Object Table        NUMBER
OE    CATEGORIES_TAB    PARENT_CATEGORY_ID            Object Table

OWNER                 TABLE_NAME                    COLUMN_NAME         DATA_TYPE          
--------------------- --------------------------    ----------------    --------------- 
WMSYS                 WM$UDTRIG_INFO                TRIG_CODE           LONG
WMSYS                 WM$VERSIONED_TABLES           UNDO_CODE           WM$ED_UNDO_CODE_TABLE_TYPE</pre>
<p><strong>2.2.</strong> Primary key veya non-null unique indexes bulunmayan tablolari asagidaki sorguyla bulabiliyoruz.<br />
N = Logical standby için tablo içinde yeterli sayida column bilgisine ulasabildigini söylüyor<br />
Y = LONG, CLOB veya BLOB gibi birbirine bagli olmayan datatypelari bulmaniza yariyor.Supplemental loggingi açarak bu kisimlarida tanimlanabilir yapabiliriz.</p>
<pre class="brush: sql; gutter: true">SQL&gt;  SELECT OWNER, TABLE_NAME,BAD_COLUMN FROM DBA_LOGSTDBY_NOT_UNIQUE
     WHERE TABLE_NAME NOT IN (SELECT TABLE_NAME FROM DBA_LOGSTDBY_UNSUPPORTED);

OWNER                          TABLE_NAME                     B
------------------------------ ------------------------------ -
SCOTT                          BONUS                          N
SCOTT                          SALGRADE                       N
SH                             SALES                          N
SH                             COSTS                          N
SH                             SUPPLEMENTARY_DEMOGRAPHICS     N</pre>
<p><strong>2.3.</strong> Supplemental log açikmi diye bakiyoruz.</p>
<pre class="brush: sql; gutter: true">SQL&gt; select supplemental_log_data_pk,supplemental_log_data_ui from v$database;

SUP SUP
--- ---
NO  NO</pre>
<p><strong>2.4.</strong>Eger açik degilse primary key ve unique <a href="http://blog.canbakal.com/tag/index/" class="st_tag internal_tag" rel="tag" title="Posts tagged with index">index</a> için supplemental loggingi açiyoruz ve yeni bir log üretmesini sagliyoruz.</p>
<pre class="brush: sql; gutter: true">SQL&gt; ALTER  DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY,UNIQUE INDEX) COLUMNS;

Database altered.

SQL&gt; ALTER SYSTEM SWITCH LOGFILE;

System altered.</pre>
<p><strong>2.5.</strong> Paralizim açik degilse açiyoruz. // her dbde gerekmiyor.</p>
<pre class="brush: sql; gutter: true">SQL&gt; ALTER SYSTEM SET LOG_PARALLELISM=1 SCOPE=BOTH;</pre>
<p><strong>2.6.</strong>  Physcal standby database’in loglari islemesini engelliyoruz.</p>
<pre class="brush: sql; gutter: true">SQL&gt; ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

Database altered.</pre>
<p><strong>2.7. </strong>Primary database&#8217;in log archive dest 1 All_LOGFILES ve ALL_ROLES diye tanimli bunu ONLINE_LOGFILES ve ALL_ROLES diye degistiriyoruz. Log_archive_dest_3 e ise tamamen yeniden yapilandirip aktif yapiyorum ve  3 parametresi üstünde bazi oynamalar yapmamiz gerekiyor.</p>
<pre class="brush: sql; gutter: true">SQL&gt; show parameter log

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_1                   string      LOCATION=/u01/app/<a href="http://blog.canbakal.com/tag/oracle/" class="st_tag internal_tag" rel="tag" title="Posts tagged with oracle">oracle</a>/datab
                                                 ases/prim/redo/
                                                 VALID_FOR=(ALL_LOGFILES,ALL_RO
                                                 LES)
                                                 DB_UNIQUE_NAME=bugra
log_archive_dest_2                   string      service=stdby lgwr async noaff
                                                 irm valid_for=(online_logfiles
                                                 ,primary_role) db_unique_name=
                                                 stdby
log_archive_dest_3                   string
log_archive_dest_state_1             string      ENABLE
log_archive_dest_state_2             string      enable
log_archive_dest_state_3             string      enable
remote_login_passwordfile            string      EXCLUSIVE
sec_case_sensitive_logon             boolean     TRUE
sec_max_failed_login_attempts        integer     10

SQL&gt; alter system set LOG_ARCHIVE_DEST_1=&#039;LOCATION=/u01/app/<a href="http://blog.canbakal.com/tag/oracle/" class="st_tag internal_tag" rel="tag" title="Posts tagged with oracle">oracle</a>/databases/prim/redo/ VALID_FOR=(ONLINE_LOGFILES,ALL_ROLES)  DB_UNIQUE_NAME=bugra&#039;
scope=both;

System altered.

SQL&gt; Alter system set LOG_ARCHIVE_DEST_3=&#039;LOCATION=/u01/app/<a href="http://blog.canbakal.com/tag/oracle/" class="st_tag internal_tag" rel="tag" title="Posts tagged with oracle">oracle</a>/databases/prim/redo2/ VALID_FOR=(STANDBY_LOGFILES,STANDBY_ROLE) DB_UNIQUE_NAME=bugra&#039; scope=both;

System altered.

SQL&gt; alter system set LOG_ARCHIVE_DEST_STATE_3=ENABLE scope=both;

System altered.</pre>
<p><strong>2.8.</strong> Redo log sözlügünü olusturmamiz gerekiyor böylelikle LOG_ARCHIVE_DEST_1 e tanimladigimiz ONLINE_LOGFILE çalisabilecek. Bunun için LogMiner sözlügünü yaratiyoruz.</p>
<pre class="brush: sql; gutter: true">SQL&gt; EXECUTE DBMS_LOGSTDBY.BUILD;  

PL/SQL procedure successfully completed.</pre>
<p><strong>2.9.</strong>Redo loglar artik Logical standby kurulumu için uygun hale geldi.Physical standby makinasina gidip logical standby içni recover islemini baslatiyoruz.<strong></strong></p>
<pre class="brush: sql; gutter: true">SQL&gt; ALTER DATABASE RECOVER TO LOGICAL STANDBY stdby;

Standby Alertloglari

Media Recovery Complete (stdby)
tkcrrxms: Killing 4 processes (all RFS)
<a href="http://blog.canbakal.com/tag/resetlogs/" class="st_tag internal_tag" rel="tag" title="Posts tagged with resetlogs">RESETLOGS</a> after incomplete recovery UNTIL CHANGE 904454
Resetting <a href="http://blog.canbakal.com/tag/resetlogs/" class="st_tag internal_tag" rel="tag" title="Posts tagged with resetlogs">resetlogs</a> activation ID 772557144 (0x2e0c4958)
Online log /u01/app/oracle/product/11.1.0/oradata/stdby/redogroup_1.262.720476831: Thread 1 Group 1 was previously cleared
Online log /u01/app/oracle/product/11.1.0/oradata/stdby/redogroup_1.263.720476839: Thread 1 Group 1 was previously cleared
Online log /u01/app/oracle/product/11.1.0/oradata/stdby/redogroup_2.264.720476843: Thread 1 Group 2 was previously cleared
Online log /u01/app/oracle/product/11.1.0/oradata/stdby/redogroup_2.265.720476851: Thread 1 Group 2 was previously cleared
Standby became primary SCN: 904452
Sat Sep 18 02:28:01 2010
Setting recovery target incarnation to 3
Converting standby mount to primary mount.
ACTIVATE STANDBY: Complete - Database mounted as primary (stdby)
*** DBNEWID utility started ***
DBID will be changed from 772585308 to new DBID of 1331092977 for database BUGRA
DBNAME will be changed from BUGRA to new DBNAME of STDBY
Starting datafile conversion
Setting recovery target incarnation to 1
Datafile conversion complete
Failed to find temporary file: /u01/app/oracle/product/11.1.0/oradata/stdby/data/temp.268.720476923
Database name changed to STDBY.
Modify parameter file and generate a new password file before restarting.
Database ID for database STDBY changed to 1331092977.
All previous backups and archived redo logs for this database are unusable.
Database has been shutdown, open with <a href="http://blog.canbakal.com/tag/resetlogs/" class="st_tag internal_tag" rel="tag" title="Posts tagged with resetlogs">RESETLOGS</a> option.
Succesfully changed database name and ID.
*** DBNEWID utility finished succesfully ***
Completed: ALTER DATABASE RECOVER TO LOGICAL STANDBY stdby
Sat Sep 18 02:28:14 2010
destination database instance is &#039;started&#039; not &#039;mounted&#039;</pre>
<p><strong>2.10.</strong> Logical standbyimiz nomount posizyonunda açilmis oldu simdi 1,2 ve 3. log_archive_dest parametrelerini değiştireceğiz.</p>
<pre class="brush: sql; gutter: true">SQL&gt; Show parameter log

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_1                   string      location=/u01/app/oracle/produ
                                                 ct/11.1.0/oradata/stdby/arc1/
                                                 valid_for=(all_logfiles,all_ro
                                                 les) db_unique_name=stdby
log_archive_dest_2                   string      service=bugra lgwr async noaff
                                                 irm valid_for=(online_logfiles
                                                 ,primary_role) db_unique_name=
                                                 bugra
log_archive_dest_3                   string
log_archive_dest_state_1             string      enable
log_archive_dest_state_2             string      ENABLE
log_archive_dest_state_3             string      enable

SQL&gt; alter system set LOG_ARCHIVE_DEST_1=
  &#039;LOCATION=/u01/app/oracle/product/11.1.0/oradata/stdby/arc1/
   VALID_FOR=(ONLINE_LOGFILES,ALL_ROLES)
   DB_UNIQUE_NAME=stdby&#039;scope=both;

System altered.

SQL&gt; Alter system set LOG_ARCHIVE_DEST_2=
  &#039;SERVICE=bugra ASYNC
   VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
   DB_UNIQUE_NAME=bugra&#039; scope=both;

System altered.

SQL&gt; Alter system set LOG_ARCHIVE_DEST_3=
  &#039;LOCATION=/u01/app/oracle/product/11.1.0/oradata/stdby/arc2/
   VALID_FOR=(STANDBY_LOGFILES,STANDBY_ROLE)
   DB_UNIQUE_NAME=stdby&#039; scope=both;

System altered.

SQL&gt; Alter system set LOG_ARCHIVE_DEST_STATE_1=ENABLE scope=both;

System altered.

SQL&gt; Alter system set LOG_ARCHIVE_DEST_STATE_2=ENABLE scope=both;

System altered.

SQL&gt; Alter system set LOG_ARCHIVE_DEST_STATE_3=ENABLE scope=both;

System altered.</pre>
<p><strong>2.11.</strong>  Database’i kapatip mount posizyonunda açiyoruz sonrada resetlogs yapip databasei open hale getiriyoruz.Start logical standby apply immediate dedikten sonra redolar islenmeye basliyacaktir.</p>
<pre class="brush: sql; gutter: true">SQL&gt; shutdown immediate;
ORA-01507: database not mounted

ORACLE instance shut down.
SQL&gt; startup mount;
ORA-32004: obsolete and/or deprecated parameter(s) specified
ORACLE instance started.

Total System Global Area  146472960 bytes
Fixed Size                  1298472 bytes
Variable Size              92278744 bytes
Database Buffers           50331648 bytes
Redo Buffers                2564096 bytes
Database mounted.
SQL&gt; ALTER DATABASE OPEN RESETLOGS;

Database altered.

SQL&gt; ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATE;

Database altered.</pre>
<p><strong>2.12.</strong>  Standby Alert Loglarına bakalım.</p>
<pre class="brush: sql; gutter: true">Completed: alter database open
ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATE
ALTER DATABASE START LOGICAL STANDBY APPLY (stdby)
with optional part
IMMEDIATE
Attempt to start background Logical Standby process
Sat Sep 18 03:32:48 2010
LSP0 started with pid=24, OS id=32724 
Completed: ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATE
LOGMINER: Parameters summary for session# = 1
LOGMINER: Number of processes = 3, Transaction Chunk Size = 201
LOGMINER: Memory Size = 30M, Checkpoint interval = 150M
LOGMINER: SpillScn 0, ResetLogScn 522753
Sat Sep 18 03:33:12 2010
LOGMINER: session#=1, reader MS00 pid=28 OS id=32739 sid=82 started
Sat Sep 18 03:33:14 2010
LOGMINER: session#=1, builder MS01 pid=29 OS id=32741 sid=79 started
Sat Sep 18 03:33:14 2010
LOGMINER: session#=1, preparer MS02 pid=30 OS id=32743 sid=78 started
LOGMINER: Begin mining logfile during dictionary load for session 1 thread 1 sequence 41, /u01/app/oracle/product/11.1.0/oradata/stdby/arc1/1_41_720476831.dbf
LOGMINER: Turning ON Log Auto Delete</pre>
<p><strong>2.13.</strong> Son olarak V$database sorgu çekip database&#8217;in çalışma şeklini görebiliriz.</p>
<pre class="brush: sql; gutter: true"> 
SQL&gt; select log_mode,open_mode , database_role from v$database;

LOG_MODE     OPEN_MODE  DATABASE_ROLE
------------ ---------- ----------------
ARCHIVELOG   READ WRITE LOGICAL STANDBY</pre>
<p>The post <a href="http://blog.canbakal.com/2012/11/28/logical-standby-kurulumu/">Logical Standby Kurulumu</a> appeared first on <a href="http://blog.canbakal.com">Bugra Canbakal&#039;s Oracle Blog</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.canbakal.com/2012/11/28/logical-standby-kurulumu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Asm diskgroup içine yeni bir disk eklemek</title>
		<link>http://blog.canbakal.com/2012/11/26/asm-diskgroup-icine-yeni-bir-disk-eklemek/</link>
		<comments>http://blog.canbakal.com/2012/11/26/asm-diskgroup-icine-yeni-bir-disk-eklemek/#comments</comments>
		<pubDate>Mon, 26 Nov 2012 12:43:23 +0000</pubDate>
		<dc:creator>Bugra Canbakal</dc:creator>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[RAC - Real Application Cluster]]></category>
		<category><![CDATA[Single Node]]></category>
		<category><![CDATA[asm]]></category>
		<category><![CDATA[disk]]></category>
		<category><![CDATA[diskgroup]]></category>
		<category><![CDATA[new diskgroup]]></category>

		<guid isPermaLink="false">http://blog.canbakal.com/?p=455</guid>
		<description><![CDATA[<p>1.AMAÇ VE KAPSAM Kullanılan bir asm diskgroup içine yeni bir disk ekleyip diskgroup büyüteme çalışmasını anlatacağım.Bu çalışmayı yapmadan önce adımlar hakkında genel bir bilgi vermek istiyorum.Elimde DISK4 isminde hiçbir diskgroupa ayit olmayan bir asm diskim var bu diskin öncelikle sağlamlığını kontrol edicem, bu çalışma bittikten sonra production ortama zarar vermemesi için yeni bir diskgroup oluşturup [...]</p><p>The post <a href="http://blog.canbakal.com/2012/11/26/asm-diskgroup-icine-yeni-bir-disk-eklemek/">Asm diskgroup içine yeni bir disk eklemek</a> appeared first on <a href="http://blog.canbakal.com">Bugra Canbakal&#039;s Oracle Blog</a>.</p>]]></description>
				<content:encoded><![CDATA[<p><strong>1.AMAÇ VE KAPSAM</strong></p>
<p>Kullanılan bir asm diskgroup içine yeni bir disk ekleyip diskgroup büyüteme çalışmasını anlatacağım.Bu çalışmayı yapmadan önce adımlar hakkında genel bir bilgi vermek istiyorum.Elimde DISK4 isminde hiçbir diskgroupa ayit olmayan bir asm diskim var bu diskin öncelikle sağlamlığını kontrol edicem, bu çalışma bittikten sonra production ortama zarar vermemesi için yeni bir diskgroup oluşturup bu diski bu groupa ekliyecem eğer bu aşamaları geçtiysem production diskgroup&#8217;a diskimizi ekliyeceğim.</p>
<p><img title="More..." alt="" src="http://i2.wp.com/blog.canbakal.com/wp-includes/js/tinymce/plugins/wordpress/img/trans.gif?w=660" data-recalc-dims="1" /></p>
<p><strong>2.UYGULAMA</strong></p>
<p lang="tr"><strong>2.1.</strong>Boşta olan DISK4 diskini asm üstünden kontrol edicez. (RAC ortamında bu calısma 2 node üstündede yapılır)</p>
<p lang="tr"><span id="more-455"></span></p>
<pre class="brush: sql; gutter: true">[root@oracle ~]# /etc/init.d/oracleasm  scandisks

Scanning the system for Oracle ASMLib disks:               [  OK  ]

[root@oracle ~]# /etc/init.d/oracleasm  listdisks

DISK1

DISK2

DISK3

DISK4

[root@oracle ~]# /etc/init.d/oracleasm  querydisk DISK4

Disk &quot;DISK4&quot; is a valid ASM disk

[root@oracle ~]# ls -l /dev/oracleasm/disks/DISK4

brw-rw---- 1 oracle dba 8, 34 Jun 23 23:40 /dev/oracleasm/disks/DISK4</pre>
<p><strong>2.2.</strong>  Şimdi asm headerları düzgün mü diye kontrol etmemiz gerekiyor.Bunun için ASM metadata editor kfed&#8217; i kullanıcaz. Çıktısında &#8220;<strong>kfbh.type</strong>: 1 ; 0&#215;002: <strong>KFBTYP_DISKHEAD</strong>&#8221; görürsek asm&#8217;nin headerları düzgün diyebiliriz.</p>
<pre class="brush: sql; gutter: true">[root@oracle ~]# kfed read /dev/oracleasm/disks/DISK4
 kfbh.endian: 1 ; 0x000: 0x01
 kfbh.hard: 130 ; 0x001: 0x82
 kfbh.type: 1 ; 0x002: KFBTYP_DISKHEAD
 ...
 kfbh.check: 1539641569 ; 0x00c: 0x5bc510e1
 ...
 kfdhdb.driver.provstr: ORCLDISKDISK4 ; 0x000: length=13
 ...
 kfdhdb.dsknum: 0 ; 0x024: 0x0000
 kfdhdb.grptyp: 2 ; 0x026: KFDGTP_NORMAL
 kfdhdb.hdrsts: 3 ; 0x027: KFDHDR_MEMBER
 kfdhdb.dskname: PLAY0 ; 0x028: length=5
 kfdhdb.grpname: PLAY ; 0x048: length=4
 kfdhdb.fgname: P1 ; 0x068: length=2
 ...
 kfdhdb.blksize: 4096 ; 0x0ba: 0x1000
 kfdhdb.ausize: 4194304 ; 0x0bc: 0x00400000
 ...
 kfdhdb.dsksize: 1221 ; 0x0c4: 0x000004c5
 ...</pre>
<p><strong>2.3</strong>.<strong>1.</strong> ASM instance baglaniyoruz.  (RAC ortamında aşağıdaki çalışmaları tek node üstünde yapıyoruz)</p>
<pre class="brush: sql; gutter: true">[oracle@oracle ~]$ export ORACLE_SID=+ASM

[oracle@oracle ~]$ sqlplus /  as sysdba

SQL*Plus: Release 11.1.0.6.0 - Production on Fri Jun 24 00:11:02 2011

Copyright (c) 1982, 2007, Oracle.  All rights reserved.

Connected to:

Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options</pre>
<p lang="en-AU"><strong>2.3</strong>.<strong>2</strong>. DISK4 ü test amaçlı yeni diskgroup oluşturup bu gruop&#8217;a ekliyoruz..</p>
<p lang="en-AU"><strong>P.S.</strong>: Çalışma esnasında asm_diskstring le ilgili hata aldım, aynı hatayı alan başka arkadaşlarımda olmuştu bu yüzden hatayı ve gerekli çalışmayıda ekliyorum.</p>
<pre class="brush: sql; gutter: true">SQL&gt; CREATE DISKGROUP TEST EXTERNAL REDUNDANCY DISK &#039;/dev/oracleasm/disks/DISK4&#039;;

CREATE DISKGROUP TEST EXTERNAL REDUNDANCY DISK &#039;/dev/oracleasm/disks/DISK4&#039;

*

ERROR at line 1:

ORA-15018: diskgroup cannot be created

ORA-15031: disk specification &#039;/dev/oracleasm/disks/DISK4&#039; matches no disks

ORA-15014: path &#039;/dev/oracleasm/disks/DISK4&#039; is not in the discovery set

SQL&gt; show parameter disk

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

asm_diskgroups                       string      DATA1, DATA2

asm_diskstring                       string

disk_asynch_io                       boolean     TRUE

SQL&gt; alter system set asm_diskstring=&#039;/dev/oracleasm/disks/DISK*&#039;;

alter system set asm_diskstring=&#039;/dev/oracleasm/disks/DISK*&#039;

*

ERROR at line 1:

ORA-02097: parameter cannot be modified because specified value is invalid

ORA-15014: path &#039;ORCL:DISK1&#039; is not in the discovery s

SQL&gt; alter system set asm_diskstring=&#039;ORCL:DISK*&#039;;

System altered.

SQL&gt; CREATE DISKGROUP TEST EXTERNAL REDUNDANCY DISK &#039;ORCL:DISK4&#039;;

Diskgroup created.</pre>
<p><strong>2.4</strong>. TEST diskgroup&#8217;unu oluşturduk aşağıdaki sorguyu çalıştırdıgınızda TEST diskgroupunu görmeniz gerekiyor.</p>
<pre class="brush: sql; gutter: true">SQL&gt; SELECT STATE, NAME FROM V$ASM_DISKGROUP;

STATE       NAME
----------- ------------------------------
MOUNTED     DATA1
MOUNTED     DATA2
MOUNTED     TEST</pre>
<p><strong>2.5.</strong> TEST diskgroup&#8217;unu mount görüyorsanız  asmye yeni eklemiş oldugunuz disk düzgün calısıyor demektir.Şimdi gerçek amacımız olan DISK4 ü DATA1 groupuna ekliyecez.Bunun için önce TEST diskgroup&#8217;unu drop edip DISK4 boşa çıkartıyoruz.</p>
<pre class="brush: sql; gutter: true">SQL&gt; drop diskgroup test;

Diskgroup dropped.</pre>
<p><strong>2.6.</strong> Diski eklemeden önce veirtabaninin instanceina sysdba olarak baglanip suanki disk durumumuza bakalim</p>
<pre class="brush: sql; gutter: true">SQL&gt; COL % FORMAT 99.0
SQL&gt; SELECT name, free_mb, total_mb, free_mb/total_mb*100 &quot;%&quot; FROM v$asm_diskgroup;
NAME                              FREE_MB   TOTAL_MB     %
------------------------------ ---------- ---------- -----
DATA1                                8554      10196  83.9
DATA2                                4902       5137  95.4</pre>
<p><strong>2.7.</strong> ASM Simdi tekrardan +ASM  instance girelim ve yeni diskimizi DATA1 diskgroupuna ekleyelim.</p>
<pre class="brush: sql; gutter: true">SQL&gt;  ALTER DISKGROUP DATA1 ADD DISK &#039;ORCL:DISK4&#039;;

Diskgroup altered.</pre>
<p><strong>2.8.</strong> Normal instanceda asagidaki sorguyu tekrardan calistirip diskimizin yeni diskgroupa eklendigini görelim.</p>
<pre class="brush: sql; gutter: true"> 
SQL&gt; SELECT name, free_mb, total_mb, free_mb/total_mb*100 &quot;%&quot; FROM v$asm_diskgroup;

NAME                              FREE_MB   TOTAL_MB     %
------------------------------ ---------- ---------- -----
DATA1                               13689      15333  89.3
DATA2                                4902       5137  95.4

SQL&gt;</pre>
<p>The post <a href="http://blog.canbakal.com/2012/11/26/asm-diskgroup-icine-yeni-bir-disk-eklemek/">Asm diskgroup içine yeni bir disk eklemek</a> appeared first on <a href="http://blog.canbakal.com">Bugra Canbakal&#039;s Oracle Blog</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.canbakal.com/2012/11/26/asm-diskgroup-icine-yeni-bir-disk-eklemek/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lokal disk üstünde açılmış olan bir datafile&#8217;ı ASM üstüne taşımak</title>
		<link>http://blog.canbakal.com/2012/07/04/lokal-disk-ustunde-acilmis-olan-bir-datafilei-asm-ustune-tasimak/</link>
		<comments>http://blog.canbakal.com/2012/07/04/lokal-disk-ustunde-acilmis-olan-bir-datafilei-asm-ustune-tasimak/#comments</comments>
		<pubDate>Wed, 04 Jul 2012 11:36:03 +0000</pubDate>
		<dc:creator>Bugra Canbakal</dc:creator>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[RAC - Real Application Cluster]]></category>
		<category><![CDATA[Single Node]]></category>
		<category><![CDATA[asm]]></category>
		<category><![CDATA[move local datafile to asm]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[rman]]></category>

		<guid isPermaLink="false">http://blog.canbakal.com/?p=437</guid>
		<description><![CDATA[<p>1.AMAÇ VE KAPSAM Bazı durumlarda yanlışlıkla veya rac sistem üstüne çalışıldığı unutulup lokal disk üstünde datafile  oluşturulabiliyor. Aşağıdaki yazımda lokal disk üstüne oluşturduğumuz bu datafileları nasıl ortak alan olan ASM üstüne taşıyacağımızı anlatacağım. 2.UYGULAMA 2.1. 2 node RAC sistem üstünde 2 tane tablespace 1. node&#8217;un lokal disk&#8217;i üstünde oluşturdum. SQL&#62; select file_name,tablespace_name from dba_data_files where [...]</p><p>The post <a href="http://blog.canbakal.com/2012/07/04/lokal-disk-ustunde-acilmis-olan-bir-datafilei-asm-ustune-tasimak/">Lokal disk üstünde açılmış olan bir datafile&#8217;ı ASM üstüne taşımak</a> appeared first on <a href="http://blog.canbakal.com">Bugra Canbakal&#039;s Oracle Blog</a>.</p>]]></description>
				<content:encoded><![CDATA[<p><strong>1.AMAÇ VE KAPSAM</strong><br />
Bazı durumlarda yanlışlıkla veya rac sistem üstüne çalışıldığı unutulup lokal disk üstünde datafile  oluşturulabiliyor. Aşağıdaki yazımda lokal disk üstüne oluşturduğumuz bu datafileları nasıl ortak alan olan ASM üstüne taşıyacağımızı anlatacağım.</p>
<p><img title="More..." alt="" src="http://i2.wp.com/blog.canbakal.com/wp-includes/js/tinymce/plugins/wordpress/img/trans.gif?w=660" data-recalc-dims="1" /><img title="More..." alt="" src="http://i2.wp.com/blog.canbakal.com/wp-includes/js/tinymce/plugins/wordpress/img/trans.gif?w=660" data-recalc-dims="1" /></p>
<p><strong>2.UYGULAMA</strong></p>
<p><strong>2.1.</strong> 2 node RAC sistem üstünde 2 tane tablespace 1. node&#8217;un lokal disk&#8217;i üstünde oluşturdum.</p>
<p><span id="more-437"></span></p>
<pre class="brush: sql; gutter: true">SQL&gt; select file_name,tablespace_name from dba_data_files where tablespace_name like &#039;AHBS%&#039;;

FILE_NAME        TABLESPACE_NAME
--------------------------------------------------------------------------------

/u01/app/oracle/product/11.2.0.2/dbhome_1/dbs/ahbs_data_ts     AHBS_DATA_TS

/u01/app/oracle/product/11.2.0.2/dbhome_1/dbs/AHBS_INDEX_TS01.dbf    AHBS_INDEX_TS

2 rows selected.</pre>
<p>&nbsp;</p>
<p><strong>2.2.</strong> Bu tablespaceler üstünde çalışma yapabilmemiz için öncelikle tablespaceleri offline çekmemiz gerekmekte.</p>
<pre class="brush: sql; gutter: true">SQL&gt; alter tablespace AHBS_INDEX_TS offline;
Tablespace altered.
SQL&gt; alter tablespace AHBS_DATA_TS offline;
Tablespace altered.</pre>
<p>&nbsp;</p>
<p><strong>2.3.</strong> Tablespaceleri offline çektiğimize göre ASM ye kopyama işlemine başlayabiliriz.Bunun için rman&#8217;e girip copy datafile komutu kullanıyoruz.</p>
<pre class="brush: sql; gutter: true">[oracle@sba5db07 ~]$ rman

Recovery Manager: Release 11.2.0.2.0 - Production on Sat Jun 30 18:10:00 2012

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

RMAN&gt; connect target;

connected to target database: MERGE (DBID=3048845705)

RMAN&gt; copy datafile &#039;/u01/app/oracle/product/11.2.0.2/dbhome_1/dbs/ahbs_data_ts&#039; to  &#039;+DATA_SBA5/merge/datafile/ahbs_data_ts_01.dbf&#039;;

Starting backup at 30-JUN-12
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=201 instance=MERGE1 device type=DISK
channel ORA_DISK_1: starting datafile copy
input datafile file number=00017 name=/u01/app/oracle/product/11.2.0.2/dbhome_1/dbs/ahbs_data_ts
output file name=+DATA_SBA5/merge/datafile/ahbs_data_ts_01.dbf tag=TAG20120630T182127 RECID=4 STAMP=787342893
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:07
Finished backup at 30-JUN-12

RMAN&gt; copy datafile  &#039;/u01/app/oracle/product/11.2.0.2/dbhome_1/dbs/AHBS_INDEX_TS01.dbf&#039;  to  &#039;+DATA_SBA5/merge/datafile/AHBS_INDEX_TS01.dbf&#039; ;

Starting backup at 30-JUN-12
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile copy
input datafile file number=00018 name=/u01/app/oracle/product/11.2.0.2/dbhome_1/dbs/AHBS_INDEX_TS01.dbf
output file name=+DATA_SBA5/merge/datafile/ahbs_index_ts01.dbf tag=TAG20120630T182136 RECID=5 STAMP=787342896
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01
Finished backup at 30-JUN-12</pre>
<p>&nbsp;</p>
<p><strong>2.4.</strong> Datafile&#8217;larımızı ortak ASM alan üstüne taşıdık ,veritabanına bu tablespaceleri artık ASM üstünden çalıştıracaksın dememiz gerekiyor.Bu işlem için rename file komutunu kullanmamız gerekiyor.</p>
<pre class="brush: sql; gutter: true">SQL&gt; alter database rename file   &#039;/u01/app/oracle/product/11.2.0.2/dbhome_1/dbs/ahbs_data_ts&#039; to  &#039;+DATA_SBA5/merge/datafile/ahbs_data_ts_01.dbf&#039; ;

Database altered.

SQL&gt; alter database rename file  &#039;/u01/app/oracle/product/11.2.0.2/dbhome_1/dbs/AHBS_INDEX_TS01.dbf&#039;  to  &#039;+DATA_SBA5/merge/datafile/AHBS_INDEX_TS01.dbf&#039; ;

Database altered.</pre>
<p>&nbsp;</p>
<p><strong>2.5.</strong> Artık tablespacelerimizi online&#8217;a çekebiliriz.</p>
<pre class="brush: sql; gutter: true">SQL&gt; alter tablespace AHBS_INDEX_TS online;

Tablespace altered.

SQL&gt; alter tablespace AHBS_DATA_TS online;

Tablespace altered.</pre>
<p>&nbsp;</p>
<p><strong>2.6.</strong> Değiştirmiş olduğumuz tablespaceleri veritabanından kontrol edelim.</p>
<pre class="brush: sql; gutter: true">SQL&gt; select file_name,tablespace_name from dba_data_files where tablespace_name like &#039;AHBS%&#039;;

FILE_NAME        TABLESPACE_NAME
--------------------------------------------------------------------------------

+DATA_SBA5/merge/datafile/ahbs_data_ts_01.dbf     AHBS_DATA_TS

+DATA_SBA5/merge/datafile/AHBS_INDEX_TS01.dbf    AHBS_INDEX_TS</pre>
<p>The post <a href="http://blog.canbakal.com/2012/07/04/lokal-disk-ustunde-acilmis-olan-bir-datafilei-asm-ustune-tasimak/">Lokal disk üstünde açılmış olan bir datafile&#8217;ı ASM üstüne taşımak</a> appeared first on <a href="http://blog.canbakal.com">Bugra Canbakal&#039;s Oracle Blog</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.canbakal.com/2012/07/04/lokal-disk-ustunde-acilmis-olan-bir-datafilei-asm-ustune-tasimak/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Oracle RMAN Catalog Kurulumu</title>
		<link>http://blog.canbakal.com/2012/06/29/oracle-rman-catalog-kurulumu/</link>
		<comments>http://blog.canbakal.com/2012/06/29/oracle-rman-catalog-kurulumu/#comments</comments>
		<pubDate>Fri, 29 Jun 2012 07:52:18 +0000</pubDate>
		<dc:creator>Bugra Canbakal</dc:creator>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[RMAN]]></category>
		<category><![CDATA[catalog]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[rman]]></category>
		<category><![CDATA[rman catalog]]></category>

		<guid isPermaLink="false">http://blog.canbakal.com/?p=427</guid>
		<description><![CDATA[<p>1.AMAÇ VE KAPSAM Rman üstünde yapılan backup işlemleri veritabanın controlfile&#8217;ına kaydedilir,bu controlfile&#8217;ın kaybolma olasılığına karşılık oracle bize rman catalog özelliğini önermekte,bu özellik sayesinde controlfile kaydedilen rman bilgileri başka bir veritabanında saklanır.Catalog bunun dışında rman scriptleri ve alınan backupların bilgilerini saklamak içinde kullanılabilir.Bu özelliği kullanabilmemiz için product veritabanımız dışında catalog&#8217;ların tutulacağı başka bir veritabanımızda olmalı. Aşağıdaki [...]</p><p>The post <a href="http://blog.canbakal.com/2012/06/29/oracle-rman-catalog-kurulumu/">Oracle RMAN Catalog Kurulumu</a> appeared first on <a href="http://blog.canbakal.com">Bugra Canbakal&#039;s Oracle Blog</a>.</p>]]></description>
				<content:encoded><![CDATA[<p><strong>1.AMAÇ VE KAPSAM</strong><br />
<a href="http://blog.canbakal.com/tag/rman/" class="st_tag internal_tag" rel="tag" title="Posts tagged with rman">Rman</a> üstünde yapılan backup işlemleri veritabanın controlfile&#8217;ına kaydedilir,bu controlfile&#8217;ın kaybolma olasılığına karşılık <a href="http://blog.canbakal.com/tag/oracle/" class="st_tag internal_tag" rel="tag" title="Posts tagged with oracle">oracle</a> bize <a href="http://blog.canbakal.com/tag/rman-catalog/" class="st_tag internal_tag" rel="tag" title="Posts tagged with rman catalog">rman catalog</a> özelliğini önermekte,bu özellik sayesinde controlfile kaydedilen rman bilgileri başka bir veritabanında saklanır.<a href="http://blog.canbakal.com/tag/catalog/" class="st_tag internal_tag" rel="tag" title="Posts tagged with catalog">Catalog</a> bunun dışında rman scriptleri ve alınan backupların bilgilerini saklamak içinde kullanılabilir.Bu özelliği kullanabilmemiz için product veritabanımız dışında <a href="http://blog.canbakal.com/tag/catalog/" class="st_tag internal_tag" rel="tag" title="Posts tagged with catalog">catalog</a>&#8217;ların tutulacağı başka bir veritabanımızda olmalı.<br />
Aşağıdaki yazımda oracle rman catalog&#8217;un nasil kurulacagini, source veritabanin catalogdb ye nasıl register edileceğini ve bunu nasıl kontrol edeceğinizi anlatacağım.</p>
<p><img title="More..." alt="" src="http://i2.wp.com/blog.canbakal.com/wp-includes/js/tinymce/plugins/wordpress/img/trans.gif?w=660" data-recalc-dims="1" /><span id="more-427"></span></p>
<p><strong>2.UYGULAMA</strong></p>
<p><strong>2.1.</strong> Veritabanlarımız hakkında kısa bilgiler.</p>
<p>192.168.166.128 sourcesrv (production olacak veritabanımız)<br />
192.168.166.129 targetsrv (catalogdb olacak veritabanımız)</p>
<p><strong>2.2.</strong> Targetsrv veritabanımızda catalog kullanıcımızı oluşturup gerekli hakları veriyoruz.</p>
<pre class="brush: sql; gutter: true">[oracle@targetsrv ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.2.0 Production on Thu Jun 28 14:10:05 2012

Copyright (c) 1982, 2010, Oracle.  All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL&gt; create user catalog identified by catalog;

User created.

SQL&gt; grant recovery_catalog_owner to catalog;

Grant succeeded.

SQL&gt; alter user catalog quota unlimited on users;

User altered.</pre>
<p>&nbsp;</p>
<p><strong>2.3.</strong> Catalog kullanıcısıyla TARGET veritabanın rman &#8216;ine bağlanıp catalogu oluşturuyoruz.</p>
<pre class="brush: sql; gutter: true">[oracle@targetsrv ~]$ rman

Recovery Manager: Release 11.2.0.2.0 - Production on Thu Jun 28 14:13:23 2012

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

RMAN&gt; connect catalog catalog/catalog@TARGET

connected to recovery catalog database

RMAN&gt; create catalog

recovery catalog created</pre>
<p>&nbsp;</p>
<p><strong>2.4.</strong> Şimdi product sistemimize gidip TARGET veritabanımıza register yaptıracağız.</p>
<pre class="brush: sql; gutter: true">[oracle@sourcesrv ~]$ rman

Recovery Manager: Release 11.2.0.2.0 - Production on Thu Jun 28 14:19:32 2012

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

RMAN&gt; connect target sys/sys@SOURCE

connected to target database: SOURCE (DBID=2888707862)

RMAN&gt; connect catalog catalog/catalog@TARGET

connected to recovery catalog database

RMAN&gt; register database;

database registered in recovery catalog
starting full resync of recovery catalog
full resync complete</pre>
<p>&nbsp;</p>
<p><strong>2.5.</strong> Veritabanımızın cataloga register olup olmaduğını görmek için &#8220;report schema&#8221; komutunu çalıştırıyoruz.</p>
<pre class="brush: sql; gutter: true">RMAN&gt; report schema;

Report of database schema for database with db_unique_name SOURCE

List of Permanent Datafiles
===========================
File Size(MB) Tablespace           RB segs Datafile Name
---- -------- -------------------- ------- ------------------------
1    700      SYSTEM               YES     /oracle/app/oradata/source/system01.dbf
2    510      SYSAUX               NO      /oracle/app/oradata/source/sysaux01.dbf
3    60       UNDOTBS1             YES     /oracle/app/oradata/source/undotbs01.dbf
4    10       USERS                NO      /oracle/app/oradata/source/users01.dbf
5    313      EXAMPLE              NO      /oracle/app/oradata/source/example01.dbf

List of Temporary Files
=======================
File Size(MB) Tablespace           Maxsize(MB) Tempfile Name
---- -------- -------------------- ----------- --------------------
1    20       TEMP                 32767       /oracle/app/oradata/source/temp01.dbf</pre>
<p>&nbsp;</p>
<p><strong>2.6.</strong> SOURCE veritabanında bugune kadar backup alınmamıştı, TARGET veritabanına gidip catalogda birşey varmı  diye kontrol ediyoruz.</p>
<pre class="brush: sql; gutter: true">[oracle@targetsrv ~]$ sqlplus catalog/catalog
SQL*Plus: Release 11.2.0.2.0 Production on Thu Jun 28 14:40:06 2012
Copyright (c) 1982, 2010, Oracle.  All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - Production
SQL&gt; SELECT BS_KEY, BACKUP_TYPE, COMPLETION_TIME
FROM   RC_DATABASE_INCARNATION i, RC_BACKUP_SET b
WHERE  i.DB_KEY = 1
AND    i.DB_KEY = b.DB_KEY
AND    i.CURRENT_INCARNATION = &#039;YES&#039;;  2    3    4    5  

no rows selected</pre>
<p>&nbsp;</p>
<p><strong>2.7.</strong> Kayıt bulunamadı, SOURCE veritabanına gidip backup&#8217;ı başlatıyorum.</p>
<pre class="brush: sql; gutter: true">[oracle@sourcesrv ~]$ rman 

Recovery Manager: Release 11.2.0.2.0 - Production on Thu Jun 28 14:19:32 2012 
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved. 

RMAN&gt; connect target sys/sys@SOURCE 
connected to target database: SOURCE (DBID=2888707862) 

RMAN&gt; connect catalog catalog/catalog@TARGET 
connected to recovery catalog database

RMAN&gt; backup database;

Starting backup at 28-JUN-12
allocated channel: ORA_<a href="http://blog.canbakal.com/tag/disk/" class="st_tag internal_tag" rel="tag" title="Posts tagged with disk">DISK</a>_1
channel ORA_<a href="http://blog.canbakal.com/tag/disk/" class="st_tag internal_tag" rel="tag" title="Posts tagged with disk">DISK</a>_1: SID=40 device type=<a href="http://blog.canbakal.com/tag/disk/" class="st_tag internal_tag" rel="tag" title="Posts tagged with disk">DISK</a>
channel ORA_<a href="http://blog.canbakal.com/tag/disk/" class="st_tag internal_tag" rel="tag" title="Posts tagged with disk">DISK</a>_1: starting full datafile backup set
channel ORA_<a href="http://blog.canbakal.com/tag/disk/" class="st_tag internal_tag" rel="tag" title="Posts tagged with disk">DISK</a>_1: specifying datafile(s) in backup set
input datafile file number=00001 name=/oracle/app/oradata/source/system01.dbf
input datafile file number=00002 name=/oracle/app/oradata/source/sysaux01.dbf
input datafile file number=00005 name=/oracle/app/oradata/source/example01.dbf
input datafile file number=00003 name=/oracle/app/oradata/source/undotbs01.dbf
input datafile file number=00004 name=/oracle/app/oradata/source/users01.dbf
channel ORA_<a href="http://blog.canbakal.com/tag/disk/" class="st_tag internal_tag" rel="tag" title="Posts tagged with disk">DISK</a>_1: starting piece 1 at 28-JUN-12
channel ORA_<a href="http://blog.canbakal.com/tag/disk/" class="st_tag internal_tag" rel="tag" title="Posts tagged with disk">DISK</a>_1: finished piece 1 at 28-JUN-12
piece handle=/oracle/app/fast_recovery_area/SOURCE/backupset/2012_06_28/o1_mf_nnndf_TAG20120628T143335_7yrj8kg6_.bkp tag=TAG20120628T143335 comment=NONE
channel ORA_<a href="http://blog.canbakal.com/tag/disk/" class="st_tag internal_tag" rel="tag" title="Posts tagged with disk">DISK</a>_1: backup set complete, elapsed time: 00:01:37
channel ORA_<a href="http://blog.canbakal.com/tag/disk/" class="st_tag internal_tag" rel="tag" title="Posts tagged with disk">DISK</a>_1: starting full datafile backup set
channel ORA_<a href="http://blog.canbakal.com/tag/disk/" class="st_tag internal_tag" rel="tag" title="Posts tagged with disk">DISK</a>_1: specifying datafile(s) in backup set
including current control file in backup set
including current SPFILE in backup set
channel ORA_<a href="http://blog.canbakal.com/tag/disk/" class="st_tag internal_tag" rel="tag" title="Posts tagged with disk">DISK</a>_1: starting piece 1 at 28-JUN-12
channel ORA_<a href="http://blog.canbakal.com/tag/disk/" class="st_tag internal_tag" rel="tag" title="Posts tagged with disk">DISK</a>_1: finished piece 1 at 28-JUN-12
piece handle=/oracle/app/fast_recovery_area/SOURCE/backupset/2012_06_28/o1_mf_ncsnf_TAG20120628T143335_7yrjcnnz_.bkp tag=TAG20120628T143335 comment=NONE
channel ORA_<a href="http://blog.canbakal.com/tag/disk/" class="st_tag internal_tag" rel="tag" title="Posts tagged with disk">DISK</a>_1: backup set complete, elapsed time: 00:00:01
Finished backup at 28-JUN-12</pre>
<p>&nbsp;</p>
<p><strong>2.8.</strong> Backup başarılı şekilde alındı, şimdi TARGET veritabanına gidip aynı sorguyu tekrardan çalıştırıyoruz.</p>
<pre class="brush: sql; gutter: true">[oracle@targetsrv ~]$ sqlplus catalog/catalog
SQL*Plus: Release 11.2.0.2.0 Production on Thu Jun 28 14:40:06 2012
Copyright (c) 1982, 2010, Oracle.  All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - Production
SQL&gt; SELECT BS_KEY, BACKUP_TYPE, COMPLETION_TIME
FROM   RC_DATABASE_INCARNATION i, RC_BACKUP_SET b
WHERE  i.DB_KEY = 1
AND    i.DB_KEY = b.DB_KEY
AND    i.CURRENT_INCARNATION = &#039;YES&#039;;  

    BS_KEY B COMPLETIO
---------- - ---------
        33 D 28-JUN-12
        34 D 28-JUN-12</pre>
<p>&nbsp;</p>
<p><strong>2.9.</strong> Almış olduğumuz backup catalogda gözüktü.Catalogda bulunan veritabanını catalogdan çıkarmak için aşağıdaki işlemleri yapmamız gerekiyor.</p>
<pre class="brush: sql; gutter: true">[oracle@sourcesrv ~]$ rman
Recovery Manager: Release 11.2.0.2.0 - Production on Thu Jun 28 14:45:46 2012
Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

RMAN&gt; connect catalog catalog/catalog@TARGET

connected to recovery catalog database

RMAN&gt; connect target sys/sys@SOURCE

connected to target database: SOURCE (DBID=2888707862)

RMAN&gt; unregister database;

database name is &quot;SOURCE&quot; and DBID is 2888707862

Do you really want to unregister the database (enter YES or NO)? yes
database unregistered from the recovery catalog

RMAN&gt; report schema
2&gt; ;

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of report command at 06/28/2012 14:46:46
RMAN-06004: ORACLE error from recovery catalog database: RMAN-20001: target database not found in recovery catalog

RMAN&gt;</pre>
<p>&nbsp;</p>
<p><strong>2.10.</strong> Veritabanın registerını kaldırdık şimdide TARGET veritabanına gidip catalog&#8217;u kaldıracam.</p>
<pre class="brush: sql; gutter: true">[oracle@targetsrv ~]$ rman 

Recovery Manager: Release 11.2.0.2.0 - Production on Thu Jun 28 14:49:15 2012
Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

RMAN&gt; connect catalog catalog/catalog@TARGET

connected to recovery catalog database

RMAN&gt; drop catalog;

recovery catalog owner is CATALOG
enter DROP CATALOG command again to confirm catalog removal

RMAN&gt; drop catalog;

recovery catalog dropped</pre>
<p>The post <a href="http://blog.canbakal.com/2012/06/29/oracle-rman-catalog-kurulumu/">Oracle RMAN Catalog Kurulumu</a> appeared first on <a href="http://blog.canbakal.com">Bugra Canbakal&#039;s Oracle Blog</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.canbakal.com/2012/06/29/oracle-rman-catalog-kurulumu/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>RAC Impdp ORA-31693, ORA-29913, ORA-31640, ORA-19505, ORA-27037 hatalarının çözümü</title>
		<link>http://blog.canbakal.com/2012/06/05/rac-impdp-ora-31693-ora-29913-ora-31640-ora-19505-ora-27037-hatalarinin-cozumu/</link>
		<comments>http://blog.canbakal.com/2012/06/05/rac-impdp-ora-31693-ora-29913-ora-31640-ora-19505-ora-27037-hatalarinin-cozumu/#comments</comments>
		<pubDate>Tue, 05 Jun 2012 06:42:02 +0000</pubDate>
		<dc:creator>Bugra Canbakal</dc:creator>
				<category><![CDATA[RAC - Real Application Cluster]]></category>
		<category><![CDATA[cluster=n]]></category>
		<category><![CDATA[impdp]]></category>
		<category><![CDATA[ORA-19505]]></category>
		<category><![CDATA[ORA-27037]]></category>
		<category><![CDATA[ORA-29913]]></category>
		<category><![CDATA[ORA-31640]]></category>
		<category><![CDATA[ORA-31693]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[parallel]]></category>
		<category><![CDATA[rac]]></category>

		<guid isPermaLink="false">http://blog.canbakal.com/?p=399</guid>
		<description><![CDATA[<p>1.AMAÇ VE KAPSAM Oracle Rac 11gR2 versionlu veritabanında dump dosyanız shared olmayan bir alan üstündeyken parallel parametresini kullanıp  impdp yaparsanız ORA-31693, ORA-29913, ORA-31640, ORA-19505, ORA-27037 hatasını alırsınız.Bunun sebebi RAC veritabanı import işlemini bütün nodelar üstünden yapmaya çalışıp paralellendirmesidir , dumpınız 1. sunucuda shared olmayan bir alanda bulunuyorsa 2. node buna erişemiyeceğinden dolayı hatayı alacaksınız. 2.UYGULAMA [...]</p><p>The post <a href="http://blog.canbakal.com/2012/06/05/rac-impdp-ora-31693-ora-29913-ora-31640-ora-19505-ora-27037-hatalarinin-cozumu/">RAC Impdp ORA-31693, ORA-29913, ORA-31640, ORA-19505, ORA-27037 hatalarının çözümü</a> appeared first on <a href="http://blog.canbakal.com">Bugra Canbakal&#039;s Oracle Blog</a>.</p>]]></description>
				<content:encoded><![CDATA[<p><strong>1.AMAÇ VE KAPSAM</strong></p>
<p><a href="http://blog.canbakal.com/tag/oracle/" class="st_tag internal_tag" rel="tag" title="Posts tagged with oracle">Oracle</a> <a href="http://blog.canbakal.com/tag/rac/" class="st_tag internal_tag" rel="tag" title="Posts tagged with rac">Rac</a> 11gR2 versionlu veritabanında dump dosyanız shared olmayan bir alan üstündeyken <a href="http://blog.canbakal.com/tag/parallel/" class="st_tag internal_tag" rel="tag" title="Posts tagged with parallel">parallel</a> parametresini kullanıp  <a href="http://blog.canbakal.com/tag/impdp/" class="st_tag internal_tag" rel="tag" title="Posts tagged with impdp">impdp</a> yaparsanız <strong><a href="http://blog.canbakal.com/tag/ora-31693/" class="st_tag internal_tag" rel="tag" title="Posts tagged with ORA-31693">ORA-31693</a>, <a href="http://blog.canbakal.com/tag/ora-29913/" class="st_tag internal_tag" rel="tag" title="Posts tagged with ORA-29913">ORA-29913</a>, <a href="http://blog.canbakal.com/tag/ora-31640/" class="st_tag internal_tag" rel="tag" title="Posts tagged with ORA-31640">ORA-31640</a>, <a href="http://blog.canbakal.com/tag/ora-19505/" class="st_tag internal_tag" rel="tag" title="Posts tagged with ORA-19505">ORA-19505</a>, <a href="http://blog.canbakal.com/tag/ora-27037/" class="st_tag internal_tag" rel="tag" title="Posts tagged with ORA-27037">ORA-27037</a></strong> hatasını alırsınız.Bunun sebebi RAC veritabanı import işlemini bütün nodelar üstünden yapmaya çalışıp paralellendirmesidir , dumpınız 1. sunucuda shared olmayan bir alanda bulunuyorsa 2. node buna erişemiyeceğinden dolayı hatayı alacaksınız.</p>
<p><img title="More..." src="http://i2.wp.com/blog.canbakal.com/wp-includes/js/tinymce/plugins/wordpress/img/trans.gif?w=660" alt="" data-recalc-dims="1" /><span id="more-399"></span></p>
<p><strong>2.UYGULAMA</strong></p>
<p><strong>2.1.</strong> Impdp işlemini yapalım.</p>
<pre class="brush: sql; gutter: true">$ impdp bcanbakal/bcanbakal directory=exp parallel=8 dumpfile=schmedump_%U.dmp logfile=log:impdp.log full=y 

ORA-31693: Table data object &quot;ESK&quot;.&quot;FPP_WALT_MATCH&quot; failed to load/unload and is being skipped due to error:
ORA-31640: unable to open dump file &quot;/u01/app/exp/schmedump_08.dmp&quot; for read
ORA-19505: failed to identify file &quot;/u01/app/exp/schmedump_08.dmp&quot;
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3</pre>
<p>&nbsp;</p>
<p><strong>2.2.</strong> Almış olduğumuz bu hatayı 3 şekilde çözebiliriz.</p>
<p>&nbsp;</p>
<p><strong>2.2.1</strong>. Dump dosyasını shared bir alana taşıyabiliriz.(<a href="http://blog.canbakal.com/tag/asm/" class="st_tag internal_tag" rel="tag" title="Posts tagged with asm">ASM</a> gibi)</p>
<p>&nbsp;</p>
<p><strong>2.2.2</strong>. impdp işlemini yaparken <a href="http://blog.canbakal.com/tag/clustern/" class="st_tag internal_tag" rel="tag" title="Posts tagged with cluster=n">CLUSTER=N</a> parametresini koyarak import işleminin sadece o node&#8217;da çalışmasını sağlayabiliriz.</p>
<pre class="brush: sql; gutter: true">$ impdp bcanbakal/bcanbakal directory=exp parallel=8 dumpfile=schmedump_%U.dmp logfile=log:impdp.log full=y CLUSTER=N</pre>
<p><strong>2.2.3.</strong> impdp işleminde paralelliği kullandığımızda oracle arka tarafta CLUSTER=YES olarak algılar, paralelliği kaldırırsanız hatasız import yapabilirsiniz.</p>
<pre class="brush: sql; gutter: true">$ impdp bcanbakal/bcanbakal directory=exp  dumpfile=schmedump_%U.dmp logfile=log:impdp.log full=y</pre>
<p>The post <a href="http://blog.canbakal.com/2012/06/05/rac-impdp-ora-31693-ora-29913-ora-31640-ora-19505-ora-27037-hatalarinin-cozumu/">RAC Impdp ORA-31693, ORA-29913, ORA-31640, ORA-19505, ORA-27037 hatalarının çözümü</a> appeared first on <a href="http://blog.canbakal.com">Bugra Canbakal&#039;s Oracle Blog</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.canbakal.com/2012/06/05/rac-impdp-ora-31693-ora-29913-ora-31640-ora-19505-ora-27037-hatalarinin-cozumu/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Virtual Indexes</title>
		<link>http://blog.canbakal.com/2012/05/29/virtual-index/</link>
		<comments>http://blog.canbakal.com/2012/05/29/virtual-index/#comments</comments>
		<pubDate>Tue, 29 May 2012 10:51:47 +0000</pubDate>
		<dc:creator>Bugra Canbakal</dc:creator>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[index]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[virtual index]]></category>

		<guid isPermaLink="false">http://blog.canbakal.com/?p=390</guid>
		<description><![CDATA[<p>1.AMAÇ VE KAPSAM Productıon olarak çalışan veritabanlarında querylere göre index oluşturup performans testleri yapmak oldukça riskli bir çalışmadır, bundan dolayı oracle bize virtual index özelliğini sağlamış. Bu özellik sayesinde index oluşturmadan querylerinizin performanslarını kontrol edebilirsiniz ve  bu esnada  uygulamadan gelen quer ylerin execution planları bozulmayıp eski çalışmalarına devam edicektir. 2.UYGULAMA 2.1. Tablomuzu oluşturalım. SQL&#62; CREATE [...]</p><p>The post <a href="http://blog.canbakal.com/2012/05/29/virtual-index/">Virtual Indexes</a> appeared first on <a href="http://blog.canbakal.com">Bugra Canbakal&#039;s Oracle Blog</a>.</p>]]></description>
				<content:encoded><![CDATA[<p><strong>1.AMAÇ VE KAPSAM</strong></p>
<p>Productıon olarak çalışan veritabanlarında querylere göre <a href="http://blog.canbakal.com/tag/index/" class="st_tag internal_tag" rel="tag" title="Posts tagged with index">index</a> oluşturup performans testleri yapmak oldukça riskli bir çalışmadır, bundan dolayı <a href="http://blog.canbakal.com/tag/oracle/" class="st_tag internal_tag" rel="tag" title="Posts tagged with oracle">oracle</a> bize <a href="http://blog.canbakal.com/tag/virtual-index/" class="st_tag internal_tag" rel="tag" title="Posts tagged with virtual index">virtual index</a> özelliğini sağlamış. Bu özellik sayesinde index oluşturmadan querylerinizin performanslarını kontrol edebilirsiniz ve  bu esnada  uygulamadan gelen quer</p>
<p><span id="more-390"></span></p>
<p>ylerin execution planları bozulmayıp eski çalışmalarına devam edicektir.</p>
<p><strong>2.UYGULAMA</strong></p>
<p><strong>2.1.</strong> Tablomuzu oluşturalım.</p>
<pre class="brush: sql; gutter: true">SQL&gt; CREATE TABLE BCANBAKAL.ISLEM_LOG_02
(
  LOG_ID               VARCHAR2(40 BYTE)        NOT NULL,
  LOG_YAPAN            VARCHAR2(40 BYTE),
  LOG_YAPILAN          VARCHAR2(40 BYTE),
  LOG_ISLEM_KATEGORI   VARCHAR2(25 BYTE),
  LOG_ISLEM            VARCHAR2(255 BYTE),
  LOG_ISLEM_SONUC      CHAR(1 BYTE),
  LOG_ACIKLAMA         VARCHAR2(1000 BYTE),
  LOG_SON_ISLEM_DAMGA  VARCHAR2(20 BYTE),
  LOG_IP               VARCHAR2(15 BYTE)
)
TABLESPACE USERS
PCTUSED    0
PCTFREE    10
INITRANS   1
MAXTRANS   255
STORAGE    (
            INITIAL          64K
            NEXT             1M
            MINEXTENTS       1
            MAXEXTENTS       UNLIMITED
            PCTINCREASE      0
            BUFFER_POOL      DEFAULT
           )
LOGGING
NOCOMPRESS
NOCACHE
NOPARALLEL
MONITORING;</pre>
<p>&nbsp;</p>
<p><strong>2.2.</strong> Cost değeri yüksek olsun diye tablomun içine biraz data gömdüm.</p>
<pre class="brush: sql; gutter: true">SQL&gt; select count(*) from bcanbakal.islem_log_02;

  COUNT(*)
----------
    632053
1 row selected.</pre>
<p><img title="More..." src="http://i2.wp.com/blog.canbakal.com/wp-includes/js/tinymce/plugins/wordpress/img/trans.gif?w=660" alt="" data-recalc-dims="1" /></p>
<p><strong>2.3.</strong> Simdi LOG_IP kolonu üstünden bir sorgu çekip costunu görelim.</p>
<pre class="brush: sql; gutter: true">SQL&gt; SQL&gt; SET AUTOTRACE TRACEONLY explain statistics

SQL&gt; SELECT * FROM bcanbakal.ISLEM_LOG_02 WHERE LOG_IP =&#039;95.9.29.232&#039;;

293 rows selected.

Execution Plan
----------------------------------------------------------
   0       SELECT STATEMENT Optimizer Mode=ALL_ROWS (Cost=28769 Card=87 Bytes=94 K)
   1    0    TABLE ACCESS STORAGE FULL BCANBAKAL.ISLEM_LOG_02 (Cost=28769 Card=87 Bytes=94 K)</pre>
<p>&nbsp;</p>
<p><strong>2.4.</strong> Nosegment opsiyonuylan ISLEM_LOG_02 tablosu üstünde bir virtual index olusturalim.</p>
<pre class="brush: sql; gutter: true">SQL&gt; CREATE INDEX IDX_ISLEM_LOG_02_LOGIP ON ISLEM_LOG_02(LOG_IP) NOSEGMENT;

Index Created</pre>
<p>&nbsp;</p>
<p><strong>2.5.</strong> Olusturmus oldugumuz virtual indexi kullanabilmek için Oracle&#8217;ın underscore parametrelerinden biri olan _use_nosegment_indexes aktif hale getirmemiz gerekiyor.</p>
<pre class="brush: sql; gutter: true">SQL&gt; ALTER SESSION SET &quot;_use_nosegment_indexes&quot; = TRUE;

SET AUTOTRACE TRACEONLY explain statistics

SELECT * FROM bcanbakal.ISLEM_LOG_02 WHERE LOG_IP =&#039;95.9.29.232&#039;;

Execution Plan
----------------------------------------------------------
   0       SELECT STATEMENT Optimizer Mode=ALL_ROWS (Cost=2 Card=87 Bytes=94 K)
   1    0    TABLE ACCESS BY INDEX ROWID BCANBAKAL.ISLEM_LOG_02 (Cost=2 Card=87 Bytes=94 K)
   2    1      INDEX RANGE SCAN BCANBAKAL.IDX_ISLEM_LOG_02_LOGIP (Cost=1 Card=87)</pre>
<p>&nbsp;</p>
<p><strong>2.6.</strong> Virtual indeximiz gerçek olmaya hak kazandı, sql sorgusunun costu 28769 dan 2 ye düştü.Son olarak indeximizi oluşturuyoruz..</p>
<pre class="brush: sql; gutter: true">SQL&gt; CREATE INDEX IDX_ISLEM_LOG_02_LOGIP_r ON ISLEM_LOG_02(LOG_IP);</pre>
<p><strong><br />
</strong></p>
<p>The post <a href="http://blog.canbakal.com/2012/05/29/virtual-index/">Virtual Indexes</a> appeared first on <a href="http://blog.canbakal.com">Bugra Canbakal&#039;s Oracle Blog</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.canbakal.com/2012/05/29/virtual-index/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Oracle Table Redefinition</title>
		<link>http://blog.canbakal.com/2012/05/20/oracle-table-redefinition/</link>
		<comments>http://blog.canbakal.com/2012/05/20/oracle-table-redefinition/#comments</comments>
		<pubDate>Sun, 20 May 2012 09:44:49 +0000</pubDate>
		<dc:creator>Bugra Canbakal</dc:creator>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[redefinition]]></category>
		<category><![CDATA[table redefinition]]></category>

		<guid isPermaLink="false">http://blog.canbakal.com/?p=356</guid>
		<description><![CDATA[<p>1.AMAÇ VE KAPSAM Redefinition production ortamlarda veritabaninda kesinti yaratmadan tablo&#8217;nun storage parametrelerini degiştirmek,farkli bir tablespace taşimak veya yeni kolonlar eklemek,silmek ve degiştirmek için kullanilabilir. Aşağıdaki çalışmamda bir tabloyu partition&#8217;li hale getirip 2009,2010,2011 yıllarına ayit partition&#8217;larını exadatanin özelliği olan &#8220;archive high&#8221; compress&#8217;liyecem,2012 yılının aylarınıda OLTP compress yapicam.Bu esnada veritabanı operasyonel olarak çalişmaya devam edicek. Kisaca redefinition [...]</p><p>The post <a href="http://blog.canbakal.com/2012/05/20/oracle-table-redefinition/">Oracle Table Redefinition</a> appeared first on <a href="http://blog.canbakal.com">Bugra Canbakal&#039;s Oracle Blog</a>.</p>]]></description>
				<content:encoded><![CDATA[<p><strong>1.AMAÇ VE KAPSAM</strong></p>
<p><a href="http://blog.canbakal.com/tag/redefinition/" class="st_tag internal_tag" rel="tag" title="Posts tagged with redefinition">Redefinition</a> production ortamlarda veritabaninda kesinti yaratmadan tablo&#8217;nun storage parametrelerini degiştirmek,farkli bir tablespace taşimak veya yeni kolonlar eklemek,silmek ve degiştirmek için kullanilabilir.<br />
Aşağıdaki çalışmamda bir tabloyu partition&#8217;li hale getirip 2009,2010,2011 yıllarına ayit partition&#8217;larını exadatanin özelliği olan &#8220;archive high&#8221; compress&#8217;liyecem,2012 yılının aylarınıda OLTP compress yapicam.Bu esnada veritabanı operasyonel olarak çalişmaya devam edicek.<br />
Kisaca redefinition nasil çalıştığını anlatayım: yeni tablonuzu redefinitiona tanımladığınızda redef. bu tablonuzu materialized view çeviriyor ve datayı bu mv&#8217;un içine aktarıyor bu esnada orjinal tablonuzda da materialized view log olusturup tablonuza gelen insert,delete ve update işlemlerini kayit altina aliyor.</p>
<p><span id="more-356"></span></p>
<p><strong>2.UYGULAMA</strong></p>
<p><strong>2.1.</strong> Tablonuz redefinition yapıp yapmamaya uygun olup olmadığımızı aşağıdaki sorgularla görebiliriz.</p>
<p><strong>PK üstünden redefinition yapmak için.</strong></p>
<pre class="brush: sql; gutter: true">SQL&gt; EXEC DBMS_REDEFINITION.CAN_REDEF_TABLE(&#039;MVS&#039;, &#039;ISLEM_LOG&#039;,1);</pre>
<p><strong>ROWNUM üstünden redefinition yapmak için.</strong></p>
<pre class="brush: sql; gutter: true">SQL&gt; EXEC DBMS_REDEFINITION.CAN_REDEF_TABLE(&#039;MVS&#039;, &#039;ISLEM_LOG&#039;,2);</pre>
<p><strong>2.2.</strong> Tablonuz büyükse parallelliği açmanızı öneririm.</p>
<pre class="brush: sql; gutter: true">SQL&gt; alter session force <a href="http://blog.canbakal.com/tag/parallel/" class="st_tag internal_tag" rel="tag" title="Posts tagged with parallel">parallel</a> dml <a href="http://blog.canbakal.com/tag/parallel/" class="st_tag internal_tag" rel="tag" title="Posts tagged with parallel">parallel</a> 32;
SQL&gt; alter session force <a href="http://blog.canbakal.com/tag/parallel/" class="st_tag internal_tag" rel="tag" title="Posts tagged with parallel">parallel</a> query <a href="http://blog.canbakal.com/tag/parallel/" class="st_tag internal_tag" rel="tag" title="Posts tagged with parallel">parallel</a> 32;</pre>
<p><img title="More..." src="http://i2.wp.com/blog.canbakal.com/wp-includes/js/tinymce/plugins/wordpress/img/trans.gif?w=660" alt="" data-recalc-dims="1" /></p>
<p><strong>2.3.</strong>  Yeni tablomuzu orjinal tablodan farklı olarak partition ve compress özelliği ekleyerek oluşturuyoruz.</p>
<pre class="brush: sql; gutter: true">SQL&gt; CREATE TABLE MVS.ISLEM_LOG_OLD
(
  LOG_ID               VARCHAR2(40 BYTE)        NOT NULL,
  LOG_YAPAN            VARCHAR2(40 BYTE),
  LOG_YAPILAN          VARCHAR2(40 BYTE),
  LOG_ISLEM_KATEGORI   VARCHAR2(25 BYTE),
  LOG_ISLEM            VARCHAR2(255 BYTE),
  LOG_ISLEM_SONUC      CHAR(1 BYTE),
  LOG_ACIKLAMA         VARCHAR2(1000 BYTE),
  LOG_SON_ISLEM_DAMGA  VARCHAR2(20 BYTE),
  LOG_IP               VARCHAR2(15 BYTE)
)
TABLESPACE AHBS_DATA_TS
PCTUSED    0
PCTFREE    10
INITRANS   1
MAXTRANS   255
STORAGE    (
            INITIAL          64K
            NEXT             1M
            MINEXTENTS       1
            MAXEXTENTS       UNLIMITED
            PCTINCREASE      0
            BUFFER_POOL      DEFAULT
           )
NOLOGGING
PARTITION BY RANGE (LOG_SON_ISLEM_DAMGA)
(  
  PARTITION ISLEMLOG_2009 VALUES LESS THAN (&#039;20100101000000000&#039;)
    LOGGING
    COMPRESS FOR ARCHIVE HIGH  
    TABLESPACE LOG_TS
    PCTFREE    10
    INITRANS   1
    MAXTRANS   255
    STORAGE    (
                INITIAL          64K
                NEXT             1M
                MINEXTENTS       1
                MAXEXTENTS       UNLIMITED
                BUFFER_POOL      DEFAULT
               ),  
  PARTITION ISLEMLOG_2010 VALUES LESS THAN (&#039;20110101000000000&#039;)
    LOGGING
    COMPRESS FOR  ARCHIVE HIGH
    TABLESPACE LOG_TS
    PCTFREE    10
    INITRANS   1
    MAXTRANS   255
    STORAGE    (
                INITIAL          64K
                NEXT             1M
                MINEXTENTS       1
                MAXEXTENTS       UNLIMITED
                BUFFER_POOL      DEFAULT
               ),  
  PARTITION ISLEMLOG_2011 VALUES LESS THAN (&#039;20120101000000000&#039;)
    LOGGING
    COMPRESS FOR ARCHIVE HIGH
    TABLESPACE LOG_TS
    PCTFREE    10
    INITRANS   1
    MAXTRANS   255
    STORAGE    (
                INITIAL          64K
                NEXT             1M
                MINEXTENTS       1
                MAXEXTENTS       UNLIMITED
                BUFFER_POOL      DEFAULT
               ),  
  PARTITION ISLEMLOG_201201 VALUES LESS THAN (&#039;20120201000000000&#039;)
    LOGGING
    COMPRESS FOR OLTP
    TABLESPACE LOG_TS
    PCTFREE    10
    INITRANS   1
    MAXTRANS   255
    STORAGE    (
                INITIAL          64K
                NEXT             1M
                MINEXTENTS       1
                MAXEXTENTS       UNLIMITED
                BUFFER_POOL      DEFAULT
               ),  
  PARTITION ISLEMLOG_201202 VALUES LESS THAN (&#039;20120301000000000&#039;)
    LOGGING
    COMPRESS FOR OLTP
    TABLESPACE LOG_TS
    PCTFREE    10
    INITRANS   1
    MAXTRANS   255
    STORAGE    (
                INITIAL          64K
                NEXT             1M
                MINEXTENTS       1
                MAXEXTENTS       UNLIMITED
                BUFFER_POOL      DEFAULT
               ),  
  PARTITION ISLEMLOG_201203 VALUES LESS THAN (&#039;20120401000000000&#039;)
    LOGGING
    COMPRESS FOR OLTP
    TABLESPACE LOG_TS
    PCTFREE    10
    INITRANS   1
    MAXTRANS   255
    STORAGE    (
                INITIAL          64K
                NEXT             1M
                MINEXTENTS       1
                MAXEXTENTS       UNLIMITED
                BUFFER_POOL      DEFAULT
               ),  
  PARTITION ISLEMLOG_201204 VALUES LESS THAN (&#039;20120501000000000&#039;)
    LOGGING
    COMPRESS FOR OLTP
    TABLESPACE LOG_TS
    PCTFREE    10
    INITRANS   1
    MAXTRANS   255
    STORAGE    (
                INITIAL          64K
                NEXT             1M
                MINEXTENTS       1
                MAXEXTENTS       UNLIMITED
                BUFFER_POOL      DEFAULT
               ),  
  PARTITION ISLEMLOG_201205 VALUES LESS THAN (&#039;20120601000000000&#039;)
    LOGGING
    COMPRESS FOR OLTP
    TABLESPACE LOG_TS
    PCTFREE    10
    INITRANS   1
    MAXTRANS   255
    STORAGE    (
                INITIAL          64K
                NEXT             1M
                MINEXTENTS       1
                MAXEXTENTS       UNLIMITED
                BUFFER_POOL      DEFAULT
               ),  
  PARTITION ISLEMLOG_201206 VALUES LESS THAN (&#039;20120701000000000&#039;)
    LOGGING
    COMPRESS FOR OLTP
    TABLESPACE LOG_TS
    PCTFREE    10
    INITRANS   1
    MAXTRANS   255
    STORAGE    (
                INITIAL          64K
                NEXT             1M
                MINEXTENTS       1
                MAXEXTENTS       UNLIMITED
                BUFFER_POOL      DEFAULT
               ),  
  PARTITION ISLEMLOG_201207 VALUES LESS THAN (&#039;20120801000000000&#039;)
    LOGGING
    COMPRESS FOR OLTP
    TABLESPACE LOG_TS
    PCTFREE    10
    INITRANS   1
    MAXTRANS   255
    STORAGE    (
                INITIAL          64K
                NEXT             1M
                MINEXTENTS       1
                MAXEXTENTS       UNLIMITED
                BUFFER_POOL      DEFAULT
               ),  
)
COMPRESS FOR OLTP  
NOCACHE
NOPARALLEL
MONITORING;</pre>
<p><strong>2.4.</strong> Artık redefinition işlemine başlayabiliriz.Start_redef_table tanımları sırasıyla şu şekilde (&#8216;schema_ismi&#8217;,'orjinal_tablo&#8217;,'yeni_tablo&#8217;,'orjinal_tablo_kolon1 yeni_tablo_kolon1,orjinal_tablo_kolon2 yeni_tablo_kolon2, &#8230;..) diye gitmekte.Bu işlem bittiğinde var olan datalar yeni tablonuza aktarılmış olacak,aktarılmamış olanlarda materilized view log da saklanıcaklar.Eğer tablonuzda Pk bulunmuyorsa ROWNUM üstünden redef işinizi tamamlamanız gerekir.</p>
<p><strong>PK</strong> <strong>üstünden redefinition başlatmak için.</strong></p>
<pre class="brush: sql; gutter: true">SQL&gt; exec dbms_redefinition.start_redef_table(&#039;MVS&#039;,&#039;ISLEM_LOG&#039;,&#039;ISLEM_LOG_OLD&#039;,&#039;LOG_ID LOG_ID, LOG_YAPAN LOG_YAPAN, LOG_YAPILAN LOG_YAPILAN,LOG_ISLEM_KATEGORI LOG_ISLEM_KATEGORI,LOG_ISLEM LOG_ISLEM,LOG_ISLEM_SONUC LOG_ISLEM_SONUC,LOG_ACIKLAMA LOG_ACIKLAMA,LOG_SON_ISLEM_DAMGA LOG_SON_ISLEM_DAMGA,LOG_IP LOG_IP&#039;);</pre>
<p><strong>ROWNUM <strong>üstünden redefinition başlatmak için.</strong></strong></p>
<pre class="brush: sql; gutter: true">SQL&gt; exec dbms_redefinition.start_redef_table(&#039;MVS&#039;,&#039;ISLEM_LOG&#039;,&#039;ISLEM_LOG_OLD&#039;,&#039;LOG_ID LOG_ID, LOG_YAPAN LOG_YAPAN, LOG_YAPILAN LOG_YAPILAN,LOG_ISLEM_KATEGORI LOG_ISLEM_KATEGORI,LOG_ISLEM LOG_ISLEM,LOG_ISLEM_SONUC LOG_ISLEM_SONUC,LOG_ACIKLAMA LOG_ACIKLAMA,LOG_SON_ISLEM_DAMGA LOG_SON_ISLEM_DAMGA,LOG_IP LOG_IP&#039;,2);

</pre>
<p><strong>2.5.</strong> Data taşıma işlemini bitirdiğimize göre orjinal tablodaki <a href="http://blog.canbakal.com/tag/index/" class="st_tag internal_tag" rel="tag" title="Posts tagged with index">index</a>,trigger,cons. ve grant gibi özellikleride yeni tablomuza taşıyabiliriz.Bu işlemi aşağıdaki gibi yada manuel olarak yapabilirsiniz.</p>
<pre class="brush: sql; gutter: true">SQL&gt; DECLARE
num_errors PLS_INTEGER;
BEGIN
DBMS_REDEFINITION.COPY_TABLE_DEPENDENTS(&#039;MVS&#039;,&#039;ISLEM_LOG&#039;,&#039;ISLEM_LOG_OLD&#039;,DBMS_REDEFINITION.CONS_ORIG_PARAMS,TRUE, TRUE, TRUE, FALSE, num_errors, TRUE);
END;
/</pre>
<p><strong>2.6.</strong> Redefinition işlemini uzun tutup bitirmemeniz gereken durumlar oluşabiliyor eğer aradaki süre çok açılırsa son adım olan finish_redef_table uzun sürebiliyor bu tarz durumlarda sync işlemini yapmanızda yarar var.</p>
<pre class="brush: sql; gutter: true">SQL&gt; BEGIN
DBMS_REDEFINITION.SYNC_INTERIM_TABLE(&#039;MVS&#039;,&#039;ISLEM_LOG&#039;,&#039;ISLEM_LOG_OLD&#039;);
END;
/</pre>
<p><strong>2.7.</strong> Redef. işlemini artık bitirebiliriz. Bu komuttan sonra orjinal tablonuzla yeni tablonuz rename yapıp birbirlerinin yerine geçiceklerdir.</p>
<pre class="brush: sql; gutter: true">SQL&gt; BEGIN
DBMS_REDEFINITION.FINISH_REDEF_TABLE(&#039;MVS&#039;,&#039;ISLEM_LOG&#039;,&#039;ISLEM_LOG_OLD&#039;);
END;
/</pre>
<p><strong>2.8.</strong> Redefinition işlemini iptal etmek için aşağıdaki komutu kullanabilirsiniz.</p>
<pre class="brush: sql; gutter: true">SQL&gt; exec DBMS_REDEFINITION.ABORT_REDEF_TABLE(&#039;MVS&#039;, &#039;ISLEM_LOG&#039;, &#039;ISLEM_LOG_OLD&#039;)</pre>
<p>The post <a href="http://blog.canbakal.com/2012/05/20/oracle-table-redefinition/">Oracle Table Redefinition</a> appeared first on <a href="http://blog.canbakal.com">Bugra Canbakal&#039;s Oracle Blog</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.canbakal.com/2012/05/20/oracle-table-redefinition/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
