<?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>CETURK &#187; oracle backup</title>
	<atom:link href="http://www.ceturk.com/etiket/oracle-backup/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ceturk.com</link>
	<description>Türkiye&#039;nin Bilişim Platformu</description>
	<lastBuildDate>Tue, 07 Feb 2012 18:02:52 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Rman İle Bir Database’ i Farklı Bir Sunucu Üzerine Taşımak</title>
		<link>http://www.ceturk.com/rman-ile-bir-database%e2%80%99-i-farkli-bir-sunucu-uzerine-tasimak/</link>
		<comments>http://www.ceturk.com/rman-ile-bir-database%e2%80%99-i-farkli-bir-sunucu-uzerine-tasimak/#comments</comments>
		<pubDate>Tue, 15 Mar 2011 11:29:47 +0000</pubDate>
		<dc:creator>kamil.turkyilmaz</dc:creator>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Flash Recovery Area]]></category>
		<category><![CDATA[FRA]]></category>
		<category><![CDATA[Kamil Türkyılmaz]]></category>
		<category><![CDATA[oracle backup]]></category>
		<category><![CDATA[oracle restore]]></category>
		<category><![CDATA[Oracle Veritabanı taşıma]]></category>
		<category><![CDATA[RMAN]]></category>

		<guid isPermaLink="false">http://www.ceturk.com/?p=7332</guid>
		<description><![CDATA[Aşağıdaki örnek aslında küçük veya orta ölçekli database’ ler için uygulanabilir bir yöntemdir. Büyük ölçekli database’ ler için tape backuplar üzerinden restore daha optimum bir yöntemdir. Konuyu iyi anlatabilmek için önce varsayımlarımızı ortaya koyalım; - Kaynak sunucumuz A , - Restore yapılacak sunucumuz Sunucumuz B, - B sunucusunun ’ nin directory yapısı A ‘dan farklı, [...]]]></description>
			<content:encoded><![CDATA[<p>Aşağıdaki örnek aslında küçük veya orta ölçekli database’ ler için uygulanabilir bir yöntemdir. Büyük ölçekli database’ ler için tape backuplar üzerinden restore daha optimum bir yöntemdir.</p>
<p>Konuyu iyi anlatabilmek için önce varsayımlarımızı ortaya koyalım;</p>
<p>- Kaynak sunucumuz A ,<br />
- Restore yapılacak sunucumuz Sunucumuz B,<br />
- B sunucusunun ’ nin directory yapısı A ‘dan farklı,<br />
- Bu örnek için oracle versiyonumuz 10gR1,<br />
- ORACLE_SID değişmeyecek (instance name’ imiz PRDTEST olsun),<br />
- Sunucularımızın Linux tabanlı (windows makinalarda kimi komutlarda ufak farklılıklar olabilir)</p>
<p>Not :<br />
Kaynak database ile hedef database’ inin versiyonlarının aynı olması gerekiyor. (Rman ile control file’ lerinde backupı taşınacağı için restore aşamasında compatible parametresinde uyumsuzluk olmaması için)</p>
<p>B sunucusu üzerinde sadece oracle software kurulu olması yeterlidir.</p>
<p>Bu işlemler için rman catalog database’ i oluşturulmasına gerek yoktur. (Catalog üzerinde de yapılabilir)</p>
<p>İşlemlerYapılacak işlemler üzerinden sırayla gitmeye çalışalım ;</p>
<p>1. PRDTEST database’ inin rman ile backupı alınır.</p>
<p>Sunucu A üzerinde rman’ e bağlanılır ;</p>
<p>Database’ in full backupı alınır,</p>
<p>- rman target /</p>
<p>Database’ in backupı;</p>
<p>backup tag whole_database_open format &#8217;/data/backup/df_%u&#8217; database;</p>
<p>archivelog ların backupı;</p>
<p>sql &#8217;alter system archive log current&#8217;;<br />
backup archivelog all format &#8217;/data/backup/arc_%u&#8217;;</p>
<p>Controlfile’ ın backupı;</p>
<p>backup current controlfile tag = cf1 format &#8217;/data/backup/ctlf_%u&#8217;;</p>
<p>veya bütün bu işlemleri tek seferde yapmak isterseniz aşağıdaki komutu kullanabilirsiniz;</p>
<pre>
run {
allocate channel t1 type disk;
allocate channel t2 type disk;
allocate channel t3 type disk;
backup tag whole_database_open format '/data/backup/df_%u' database;
sql 'alter system archive log current';
backup archivelog all format '/data/backup/arc_%u';
backup current controlfile tag = cf1 format '/data/backup/ctlf_%u';
}
</pre>
<p>2. A sunucusu üzerindeki datafile’ lerin ve redologların pathlerini ve isimlerini (B sunucu üzerinde farklı directory’ lerde olacağından dolayı) almamız gerekiyor. Sonrasında bunları B sunucusu için düzenleyeceğiz.</p>
<pre>
Select file#, name from v$datafile;
</pre>
<pre>
select group#, member from v$logfile;
</pre>
<p>3. A sunucusundan almış olduğumuz backupları B sunucusu üzerine kopyalamamız gerekiyor.</p>
<p>4. Software kurulu olan B sunucuna, A sunucusu ora, pfile, initfile’ ler kopyalanır. Bdump, adump vs … dizinleri create edilir. Tnsnames.ora, listener.ora,sqlnet.ora dosyalarıda kopyalanır ve bunlar içerisindeki alanlar güncellenir (örneğin ORACLE_HOME path’i)</p>
<p>İnit.ora dosyası edit edilerek gerekli parametre değişiklikleri yapılır. Örneğin bdump, udump, cdump path’ leri değiştirilir. Sga ve pga parametreleri gerekiyorsa değiştirilir. (2 sunucuya ait ram ler farklılık gösterebilir) Control file’ in path’ i set edilir. Gereken tüm değişiklikler yapılır.</p>
<p>5. B sunucu üzerine pawd file create edilir.</p>
<p>orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=password force=Y</p>
<p>6. B sunucusu üzerinden sqlplus’ a bağlanılır ;</p>
<p>Database pfile kullanılarak nomount moda alınır.</p>
<p>startup nomount pfile=</p>
<p>7. B sunucusu üzerinde control file restore edilir.</p>
<p>A sunucusu üzerindeki backupları, B sunucusu üzerinde aşağıdaki dizine kopyaladığım için bu path’ i kullandım.</p>
<p>- Rman target /</p>
<p>restore controlfile from &#8217;/data/flash_recovery_area/PRDTEST/AUTOBACKUP/ctlf_1ulr3bhd&#8217;;</p>
<p>8. B sunucusu üzerindeki database mount moda alınır.</p>
<pre>
alter database mount;
</pre>
<p>9. A sunucusu üzerinden rman backup ile alınan datafile’ ler önce rename sonra restore edilir.</p>
<p>Rename ve restore işi tek tek yapılabileceği gibi aşağıdaki gibi tek seferde de yapılabilir.</p>
<pre>
run {
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
set NEWNAME for datafile 1 to '/yeni_path/system01.dbf';
set NEWNAME for datafile 2 to '/yeni_path/undotbs01.dbf';
set NEWNAME for datafile 3 to '/yeni_path/sysaux01.dbf';
set NEWNAME for datafile 4 to '/yeni_path/users01.dbf';
set NEWNAME for datafile 5 to '/yeni_path/deneme01.dbf';
set NEWNAME for datafile 6 to '/yeni_path/prdtest01.dbf';
restore database;
switch datafile all;
}
</pre>
<p>10. Redologlar rename edilirek yeni pathleri tanımlanır. Restore işlemine ilk control file dan başlamıştık. Datafile ve redologlara ait tüm bilgiler control file içerisinde yer almaktadır. Datafile’ lerin pathlerini değiştirerek yeni lokasyonlarına restore ettik. Şimdi ise redologlar için aynı işlemi yapmamız gerekiyor.</p>
<p>Değişiklik önce redologlar hakkında bilgi edinmek için aşağıdaki scripti kullanabiliriz ;</p>
<pre>
SELECT V1.MEMBER, V2.*
FROM V$LOGFILE V1, V$LOG V2
WHERE V1.GROUP# = V2.GROUP#
ORDER BY 3;
</pre>
<p>Bu script sonucunda A sunucusu üzerinde tanımlamış olan 3 adet redo logun pathlerinin B sunucundaki directory yapısına göre (nerde olmasını istiyorsak) güncellenmesi gerektiğini görürüz.</p>
<p>Bunun için önce kendi redologlarımızı create edip,</p>
<pre>
ALTER DATABASE ADD LOGFILE GROUP 4 ('/data/oradata/redo04.log') SIZE 50M;
</pre>
<pre>
ALTER DATABASE ADD LOGFILE GROUP 5 ('/data/oradata/redo05.log') SIZE 50M;
</pre>
<pre>
ALTER DATABASE ADD LOGFILE GROUP 6 ('/data/oradata/redo06.log') SIZE 50M;
</pre>
<p>Yeni create edilen bu redologların</p>
<pre>
Alter system switch logfile;
</pre>
<p>İle kullanılmasını sağlayıp (drop edileceklerin durumunun active olmaması gerektiğinden) eski redologları drop edebiliriz.</p>
<pre>
ALTER DATABASE DROP LOGFILE GROUP 1;
</pre>
<pre>
ALTER DATABASE DROP LOGFILE GROUP 2;
</pre>
<pre>
ALTER DATABASE DROP LOGFILE GROUP 3;
</pre>
<p>Böylelikle A sunucusu üzerindeki bir database’ inizi B sunucu üzerine aynı SID ile taşımış olduk.</p>
<p>Kamil Türkyılmaz</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ceturk.com/rman-ile-bir-database%e2%80%99-i-farkli-bir-sunucu-uzerine-tasimak/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oracle Veritabanına Kuşbakışı – 5.Ders</title>
		<link>http://www.ceturk.com/oracle-veritabanina-kusbakisi-ders-5/</link>
		<comments>http://www.ceturk.com/oracle-veritabanina-kusbakisi-ders-5/#comments</comments>
		<pubDate>Thu, 21 Jan 2010 12:27:30 +0000</pubDate>
		<dc:creator>hayrullah ayan</dc:creator>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Veri Tabanı]]></category>
		<category><![CDATA[Hayrullah Ayan]]></category>
		<category><![CDATA[oracle backup]]></category>
		<category><![CDATA[oracle db export]]></category>
		<category><![CDATA[oracle db import]]></category>
		<category><![CDATA[Oracle Veritabanına Kuşbakışı Ders Serisi]]></category>
		<category><![CDATA[oracle yedek alma]]></category>

		<guid isPermaLink="false">http://www.ceturk.com/?p=5290</guid>
		<description><![CDATA[ORACLE’DA YEDEK ALMA VE GERİ GETİRME Oracle, verileri her ne kadar güvenli tutsa da, fiziksel sebeplerden(disk hataları), kullanıcı hatalarından veya benzer durumlardan dolayı yedeklere ihtiyaç duyulmaktadır. Yedek alma, veritabanı yöneticisinin yapacağı önemli işlerden birisidir. Oracle’da, yedek almayla ilgili değişik yöntemler vardır. Veritabanı yöneticisi, kendi veritabanının durumuna göre, yedek almayla ilgili bir veya birden fazla yöntemi [...]]]></description>
			<content:encoded><![CDATA[<h2>ORACLE’DA YEDEK ALMA VE GERİ GETİRME</h2>
<p><strong> </strong>Oracle, verileri her ne kadar güvenli tutsa da, fiziksel sebeplerden(disk hataları), kullanıcı hatalarından veya benzer durumlardan dolayı yedeklere ihtiyaç duyulmaktadır. Yedek alma, veritabanı yöneticisinin yapacağı önemli işlerden birisidir.</p>
<p>Oracle’da, yedek almayla ilgili değişik yöntemler vardır. Veritabanı yöneticisi, kendi veritabanının durumuna göre, yedek almayla ilgili bir veya birden fazla yöntemi kullanmaya karar vermelidir. Bu kararı vermede, yönetici, yedeği kimin alacağı, hangi tür depolama ünitesine alınacağı, ne kadar sıklıkla alınacağı, alınan yedeklerin büyüklüğü, veritabanında küçük de olsa bir kayıba tahammül olup olmadığı gibi çok değişik sebepleri gözönünde bulundurmak zorundadır.<span id="more-5290"></span></p>
<h3>Fiziksel Yedek Alma</h3>
<p><strong> </strong>Fiziksel yedek alma veri dosyalarının, redo log dosyalarının ve kontrol dosyalarının yedeklerinin alınması işlemidir. Bir veritabanı ARCHIVELOG ve NOARCHIVELOG olmak üzere iki farklı modda çalışabilir. ARCHIVELOG modunda yapılan tüm işlemler redo log dosyalarına otomatik olarak kaydedilir. Bunun anlamı veritabanındaki değişikliklerin sürekli dosyalara kaydedilmesidir. Kaydedilen bu dosyaların hangileri olduğu ve nerede bulundukları gibi bilgiler init&lt;SID&gt;.ora dosyası içerisinde yer alır. ARCHIVELOG modda çalışan bir veritabanında veri kaybı söz konusu değildir. Eğer veritabanı NOARCHIVELOG modda çalışıyorsa yapılan değişiklikler bir yere kaydedilmeyecektir. Bu yüzden sistemin bozulması durumunda ancak son alınan yedekler geri getirilebilir. Yani son alınan yedekten sonra yapılan değişiklikler kaybolur. İşletim sistemi yedeği alma olarak ta bilinen fiziksel yedek alma işleminin dezavantajı, yedek alma işlemi boyunca veritabanının kapatılması gereğidir.</p>
<h4>NOARCHIVELOG Modunda Yedek Alma</h4>
<p>Bu modda yedek almak için komut moduna geçilerek aşağıdaki işlemleri yapmak gerekir. Bundan önce SQL*Plus içerisinde yedeği alınacak dosyaların tespiti yapılmalıdır.</p>
<p><strong> </strong>Burada kullanılan V$LOGFILE, V$CONTROLFILE ve DBA_DATFILES dosyaları veri sözlüğündeki görüntülerdir. Bu görüntüleri sorgulayarak yedeklememiz gereken dosyaları ve bunların nerede bulunduklarını öğreniyoruz. Burada yapacağımız iş veritabanı oturumunu kapattıktan sonra, bu dosyaları bir başka depolama ünitesine kopyalamak. Veritabanını Windows NT veya Windows 2000 içerisinde, Denetim Masası’na girip “Sevices” simgesine çift tıkladıktan sonra burada “Oracle” ile başlayan tüm servisleri durdurarak kapatabiliriz. Bu işlemler komut modundan da yapılabilir. Bunun için veritabanı yüklenirken belirtilen dizin içerisindeki “Svrmgrl” programı çalıştırılır. Eğer varsayılan dizini seçtiyseniz bu “c:\oracle\ora81\bin” dizinidir. Komut modunda şu adımlar gerçekleştirilir:</p>
<pre class="brush:csharp">
svrmgr&gt;connect internal

svrmgr&gt;shutdown immediate

svrmgr&gt;exit

&gt;lsnrctl stop</pre>
<p>Buradaki işlemlerde önce sunucu yöneticisine(server manager) bağlanılıyor  ve sonra da veritabaını kapatılıyor. En sonda da Dinleyici(Listener) durduruluyor. İlgili dosyalar kopyalandıktan sonra :</p>
<pre class="brush:csharp">svrmgr&gt;connect internal

svrmgr&gt;startup</pre>
<p>Bu dosyları bir bozulma anında tekrar geri yüklemek için veritabanını kapatıp dosyaları geriye kopyalamak ve sonra yeniden veritabanını açmak gerekir. İşte burada son yapılan değişiklikler kaybolur.</p>
<h4>ARCHIVELOG Modunda Yedek Alma</h4>
<p>Bu modda yapılan değişiklikler otomatik olarak redo log dosyalarına yazıldığı için dosyaları tek tek kopyalamak gerekmez. Fakat bu değişikliklerin kaydedildiği dosyaları yedeklemek yararlı olabilir. Veritabanında bir bozukluk durumunda yapacağımız iş veritabanını kapatıp “Recover Database” komutunu kullanmak ve sonra veritabanını yeniden açmak. “Recover Database” komutunu kullanmak için veritabanı “Mount” modunda açılır.</p>
<pre class="brush:csharp">
svrmgr&gt;connect internal

svrmgr&gt;shutdown immediate

&gt;exit

&gt;lsnrctl stop

&gt;svrmgr

svrmgr&gt;connect internal

svrmgr&gt;startup mount

svrmgr&gt;recover database</pre>
<h3>Mantıksal Yedek Alma</h3>
<p><strong> </strong>Oracle’da mantıksal yedek alma denince Export ve Import anlaşılır. Bunlar Oracle firmasının geliştirdiği komut modunda çalışan yardımcı programlardır. Bu tür yedek alma veritabanı nesnelerinin yedeklenmesi olduğu için mantıksal yedek olarak adlandırılır. Yani export ile log dosyalarının ya da kontrol dosyalarının yedeği alınmaz.</p>
<h4>Export</h4>
<p><strong> </strong>Export Oracle’ın mantıksal yedek alma işlemleri için geliştirdiği bir üründür. Mantıksal yedek alma veritabanının kapatılmaması gerektiği zaman kullanılan bir yedek alma türüdür. Bu yöntemle farklı modlarda yedek alınabilir. Bunlar aşağıda açıklanacaktır. Export ile alınan yedekler ancak Import ile geri yüklenebilir. Export kullanılarak bir veritabanının yapısı veriler olmadan yedeklenebilir, belli tablolar verilerle birlikte ya da sadece yapıları ile yedeklenebilir, yani yedeklenecek veritabanı nesnelerinin seçimi yapılabilir.</p>
<p>Export almada 4 mod vardır: Birincisi Tablo Modu(Table Mode)’dur. Bu modda kullanıcılar kendi tablolarının yedeklerini alabilirler ya da hakkı olan kullanıcı bir başka kullanıcnın tablolarının yedeklerini alabilir. İkincisi Kullanıcı Modu(User Mode)’dur. Bu modda bir kullanıcının nesnelerinin yedeği alınabilir. Üçüncüsü Tam Veritabanı Modu’dur(Full Database Mode). Bu modda tüm veri tabanının yedeği alınabilir. Bu modu gerçekleştirmek için kullanıcının bazı özel haklara sahip olması gerekir. EXP_FULL_DATABASE rolüne sahip olan kullanıcı ya da DBA rolüne sahip olan kullanıcılar bu modu kullanabilir. Dördüncüsü Tablo Uzayı Modu’dur. Bu modda da tablo uzaylarının yedeği alınır.</p>
<p>Export yardımcı programını çalıştırmak için komut moduna geçilmelidir. Exp.exe dosyası Oracle8i kurulurken varsayılan dizin adı kabul edildiyse “c:\oracle\ora81\bin” dizini içerisinde bulunabilir. Aşağıdaki örnekler bu dizine geçip komut modunda yazılarak çalıştırılabilir.</p>
<p><strong>Tam Veritabanı Modu örnekleri:</strong></p>
<p>&gt;exp system/manager full=Y file=deneme.dmp</p>
<p>Yukarıdaki komut tüm veritabanının yedeğini alır. Eğer tüm veritabanı içerisinde istenilen belli özelliklerin yedeği alınmak istenirse etkileşimli metod kullanılır(aşağıdaki gibi).</p>
<p>&gt;exp system/manager</p>
<p>&#8230;&#8230;..</p>
<p>Enter array buffer size:4096&gt;(return)    ‘veri tamponunun büyüklüğü</p>
<p>Export file:EXPDAT.DMP&gt;deneme.dmp   ‘varsayılan yedekleme dosyası ismi EXPDAT.dmp</p>
<p>E(ntire databese), U(sers), T(ables):U&gt;e ‘tüm veritabanı mı? Kullanıcı ya da Tablo yedeği mi?</p>
<p>Export grants(Y/N):Y&gt;y               ‘kullanıcı haklarının yedeği alınsın mı?</p>
<p>Export Table Data(Y/N):Y&gt;y    ‘ veriler kopyalansın mı?</p>
<p>&#8230;&#8230;.</p>
<p><strong>Kullanıcı Modu Örnekleri:</strong></p>
<p><strong> </strong>&gt;exp scott/tiger file=scott.dmp</p>
<p><strong> </strong>Scott kullanıcısının tüm nesneleri ve verileri scott.dmp dosyasına yedeklenir. Etkileşimli mod için yine “&gt;exp scott/tiger”   şeklinde komut girilir.</p>
<p><strong>Tablo Modu Örnekleri:</strong></p>
<p><strong> </strong>&gt;exp system/manager tables(a,scott.b,ahmet.d) rows=n</p>
<p>System kullanıcısı kendisine ait olan a tablosunu, scott kullanıcısına ait olan b tablosunu ve ahmet kullanıcısına ait olan d tablosunu yedekliyor. “rows=n” bildirisiyle tablo verilerinin alınmamasını sadece tablonun yapılarının kopyalanmasını sağlıyor.</p>
<h4>Import</h4>
<p><strong> </strong>Export ile yedeklenen veriler Import yardımcı programıyla geri getirilebilir. Yedeklenmiş dosyanın tamamı ya da bir kısmı yedekleyen kullanıcı için geri getirilebildiği gibi bir başka kullanıcıya da aktarılabilir.</p>
<p>&gt;imp system/manager file=deneme.dmp fromuser=usr_esef  tables=(isci,bolum)</p>
<p>usr_esef kullanıcısının dneme.dmp tablosuna yedeklediği  isci ve bolum tabloları geri getirlir.</p>
<p>&gt;imp system/manager file=scott.dmp fromuser=scott touser=esef tables=(*)</p>
<p>scott kullanıcısının scott.dmp ismli yedek dosyasındaki tüm tablolar esef kullanıcısına aktarılır. Tüm tablolar için “*” işareti kullanılır</p>
<p>Hayrullah AYAN</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ceturk.com/oracle-veritabanina-kusbakisi-ders-5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<enclosure url="http://www.ceturk.com/images/oracle-logo4.gif" length="5831" type="image/jpg" />	</item>
	</channel>
</rss>

