Oracle veritabanının SID'sini değiştirebilir miyim?


18

Sunucu Oracle Database 11g Enterprise Edition Sürüm 11.1.0.7.0 - 64bit

Sunucudaki test veritabanlarının SID'lerini değiştirmenin kolay ve hızlı bir yolu var mı?

Veritabanının düşürülmesi ve yeniden oluşturulması benim için bir seçenek. Ama daha az zaman gerektiren bir şey arıyorum.

İstemcilere ad atamanın diğer seçeneği tnsnames.ora, merkezi olarak yönetilmedikleri için hatalara eğilimlidir.

SQL Server'da bir veritabanı bırakma ve oluşturma süresiyle karşılaştırıldığında, yeni bir Oracle veritabanı oluşturmak için gereken süre aşırı derecede fazladır. SQL-Server'da ayrıca SQL-Server örneklerini yeniden adlandırabilirsiniz. [Genellikle SQL Server'ın çalıştığı sunucuyu yeniden adlandırırsınız ve siz de sunucuyu yeniden adlandırana kadar bazı sorunlar yaşarsınız].


Veritabanlarını bırakıp yeniden oluşturabileceğinizden bahsediyorsunuz. Üretim veritabanına ve yedeklerine erişiminiz var mı? Veritabanını yeniden oluşturmak ve SID'yi aynı anda değiştirmek için RMAN ve yinelenen komutu kullanabilirsiniz.
Sumnibot

Hayır, geliştirme ve bazı Oracle veritabanları için DBA olarak çalışıyorum.
bernd_k

2
SQL Server'da bir veritabanı kullandığınızda, genellikle Oracle'da bir Şema (= kullanıcı) kullanırsınız. Aynı isim, bu iki dünyadaki aynı anlama gelmez
a_horse_with_no_name

Yanıtlar:


13

9i dbnewid yardımcı programı (nid) veritabanı adını (ve gerekirse DBID) değiştirmek için kullanılabilir. Veritabanı adı yalnızca değiştiriliyorsa sıfırlama günlükleri gerekli değildir:

  • Bağlama modunda 1 başlangıç ​​veritabanı

    shutdown immediate
    startup mount
  • Veritabanı adını değiştirmek için 2 nid çalıştırma:

    nid target=sys/syspassword@dbtns dbname=newname setname=YES
  • Bağlama modunda 3 kapatma ve başlatma veritabanı:

    shutdown immediate
    startup mount
  • 4 db_namespfile değişikliği (veya dosyayı düzenleyen pfile):

    alter system set db_name=newname scope=spfile;
  • 5 yeniden şifre dosyası:

    orapwd file=orapwnewname password=syspassword
  • 6 Veritabanını başlatma

    startup
  • 7 gönderi yeniden adlandırma adımı:

    change SID in listener.ora
    correct tnsnames.ora
    remove old trace directories
    change /etc/oratab (UNIX) or rename windows service using oradim

1
Bir Windows Server'da 4 oracle veritabanını bu şekilde yeniden adlandırdım. Dbnewid yardımcı programı arama Bazı ek açıklamalar veren oracle-base.com/articles/9i/DBNEWID.php buldum .
bernd_k

1
soru şu olduğunda iyi bir cevaptır: bir veritabanını yeniden adlandırma. Soru şu: SID nasıl değiştirilir.
ik_zelf

17

Kontrol dosyasını yeniden oluşturmanız gerekir

Kaunain Ahmed'in bu yazısında gerekli adımlar açıklanmaktadır:

  1. do: izlemek için veritabanı yedekleme controlfile değiştirmek;
  2. background-dump-destination tracefile dosyasından "create controlfile" komutunu çıkartın.
  3. DB'yi kapatın.
  4. İnit.ora dosyanızdaki DB-Adını değiştirin ve init.ora dosyasını değiştirin
  5. / Etc / oratab veya / var / opt / oracle / oratab içindeki SID'yi değiştirme
  6. Ortamınızdaki SID'yi değiştirin ve kaynaklayın
  7. Bağlama durumu başlangıç ​​bağlamaya veritabanını başlatma
  8. Denetim dosyasını 2. konumdaki ifadeyle yeniden oluşturun.
  9. Global_name adını 10 olarak yeniden adlandırın. TNS-Configuration'ı $ ORACLE_HOME / network / admin / * olarak değiştirin. O SID ve GLOBAL_NAME arayın

İş parçacığında başvurulan başka araçlar da var.

İşte AskTom'un bu sürece daha detaylı bir gönderme yapan bir gönderi . 10g için olsa da, yine de çalışmalıdır.


5
Windows kullanıcıları için dikkat edilmesi gereken nokta, yeni hizmeti kurmak için "oradim" yardımcı programını da kullanmanız gerekir.
REW

9

Evet, yapabilirsiniz ve oldukça kolaydır.

Oracle'da, ORACLE_SID yalnızca Oracle Eşgörünümünün adıdır ve DBNAME ile pek bir ilgisi yoktur. PROD adında bir veritabanı, geçerli herhangi bir ada sahip Örnekler kullanılarak sunulabilir. SID ile DBNAME arasında doğrudan bir bağlantı yoktur. Bu bağlantı parametreler kullanılarak yapılır.

Parametre dosyası init $ {ORACLE_SID} .ora veya spfile $ {ORACLE_SID} .ora olarak tanımlanır. Parametre dosyasında db_name parametresi bulunur. Oracle Örneği ve veritabanı arasındaki bağlantı burada yapılır.

Bu nedenle, bir denetim dosyasını yeniden oluşturmanız gerekmez, nid kullanmanıza gerek yoktur, sadece parametre dosyanızın doğru ada sahip olduğundan emin olun, eski Oracle Örneğini indirin ve ORACLE_SID ayarladıktan sonra yeni Oracle Örneğini başlatın yeni Oracle Eşgörünüm adı. Parametre dosyası ve parola dosyası, adlarının bir parçası olarak $ {ORACLE_SID} kullanılarak bulunur.

Denetim dosyasını yeniden oluşturmak yalnızca DBNAME değiştiğinde gerekir. nid, kaynak veritabanının yedeklemelerine zarar verebilecek kazaları önlemek için DBID'yi değiştirmeniz gereken bir klonlama işleminden sonra gereklidir.


+1 Ancak DB_NAME'yi de değiştirmek isteyip istemediğimden hala emin değilim.
bernd_k

İsterseniz: emin olabilirsiniz, diğer cevaplar bunun nasıl yapılacağını doğru bir şekilde açıkladı. Hangi nedenle yaparsın? Db_name çok fiziksel. Db_name'i bilmek bir dba için iyidir, ancak çoğu için önemsizdir. Normal birleştirilmiş yaklaşımda, birçok hizmet sunan bir veritabanınız vardır. Bir hizmet uygulamasının hangi veritabanında çalıştığına dikkat etmesi gerekmez.
ik_zelf
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.