ฉันสามารถเปลี่ยน SID ของฐานข้อมูล Oracle ได้หรือไม่


18

เซิร์ฟเวอร์คือ Oracle Database 11g Enterprise Edition รีลีส 11.1.0.7.0 - 64 บิต

มีวิธีที่ง่ายและรวดเร็วในการเปลี่ยน SID ของฐานข้อมูลทดสอบบนเซิร์ฟเวอร์หรือไม่

การปล่อย & สร้างฐานข้อมูลใหม่เป็นตัวเลือกสำหรับฉัน แต่ฉันกำลังมองหาบางสิ่งที่ต้องใช้เวลาน้อยลง

ตัวเลือกอื่น ๆ ในการกำหนดชื่อในไคลเอนต์ tnsnames.ora มีแนวโน้มที่จะเกิดข้อผิดพลาดเนื่องจากไม่ได้รับการดูแลจากส่วนกลาง

เมื่อเทียบกับเวลาที่จะวางและสร้างฐานข้อมูลบน SQL-Server ระยะเวลาที่ต้องใช้ในการสร้างฐานข้อมูล Oracle ใหม่นั้นมากเกินความจำเป็น เพิ่มเติมเกี่ยวกับ SQL-Server คุณสามารถเปลี่ยนชื่ออินสแตนซ์ของ SQL-Server ได้ [โดยปกติคุณจะเปลี่ยนชื่อเซิร์ฟเวอร์ที่ SQL-Server กำลังทำงานและมีปัญหาบางอย่างจนกว่าคุณจะเปลี่ยนชื่อเซิร์ฟเวอร์ด้วย]


คุณพูดถึงว่าคุณสามารถวางและสร้างฐานข้อมูลใหม่ คุณสามารถเข้าถึงฐานข้อมูลการผลิตและมีการสำรองข้อมูลหรือไม่ คุณสามารถใช้ RMAN และคำสั่งที่ซ้ำกันเพื่อสร้างฐานข้อมูลและเปลี่ยน SID ในเวลาเดียวกัน
Sumnibot

ไม่ฉันทำงานเป็น DBA สำหรับการพัฒนาและทดสอบฐานข้อมูล Oracle
bernd_k

2
เมื่อคุณจะใช้ฐานข้อมูลใน SQL Server คุณมักจะใช้ Schema (= ผู้ใช้) ใน Oracle ชื่อเดียวกันไม่ได้หมายถึงสิ่งเดียวกันในสองภพ
a_horse_with_no_name

คำตอบ:


13

เนื่องจาก 9i dbnewid utility (nid) สามารถใช้เพื่อเปลี่ยนชื่อฐานข้อมูล (และ DBID หากจำเป็น) หากชื่อฐานข้อมูลที่ถูกเปลี่ยนแปลงเท่านั้นไม่จำเป็นต้องรีเซ็ตการล็อก:

  • 1 ฐานข้อมูลเริ่มต้นในโหมดเมาท์

    shutdown immediate
    startup mount
    
  • 2 รัน nid เพื่อเปลี่ยนชื่อฐานข้อมูล:

    nid target=sys/syspassword@dbtns dbname=newname setname=YES
  • 3 ปิดและเริ่มฐานข้อมูลในโหมดเมานต์:

    shutdown immediate
    startup mount
    
  • 4 การเปลี่ยนแปลงdb_nameใน spfile (หรือในการแก้ไขไฟล์ pfile):

    alter system set db_name=newname scope=spfile;
  • 5 ไฟล์สร้างรหัสผ่านใหม่:

    orapwd file=orapwnewname password=syspassword
  • 6 เริ่มต้นฐานข้อมูล

    startup
  • 7 ขั้นตอนการเปลี่ยนชื่อโพสต์:

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

1
ฉันเปลี่ยนชื่อ 4 ฐานข้อมูล Oracle ใน Windows Server ด้วยวิธีนี้ กำลังค้นหายูทิลิตี dbnewidฉันพบoracle-base.com/articles/9i/DBNEWID.phpซึ่งให้คำอธิบายเพิ่มเติม
bernd_k

1
นี่เป็นคำตอบที่ดีเมื่อคำถามคือวิธีการเปลี่ยนชื่อฐานข้อมูล คำถามคือวิธีการเปลี่ยน SID
ik_zelf

17

คุณต้องสร้างไฟล์ควบคุมอีกครั้ง

โพสต์นี้โดย Kaunain Ahmed อธิบายขั้นตอนที่จำเป็น:

  1. ทำ: แก้ไข controlfile สำรองฐานข้อมูลเพื่อติดตาม;
  2. แตกคำสั่ง "create controlfile" จาก tracefile background-dump-ปลายทาง
  3. ปิดฐานข้อมูล
  4. เปลี่ยน DB-Name ใน init.ora ของคุณและเปลี่ยน init.ora
  5. เปลี่ยน SID ใน / etc / oratab หรือ / var / opt / oracle / oratab
  6. เปลี่ยน SID ในสภาพแวดล้อมของคุณและแหล่งที่มา
  7. เริ่มต้นฐานข้อมูลเพื่อเมานต์สถานะเริ่มต้นเมานต์
  8. สร้างไฟล์ควบคุมขึ้นใหม่ด้วยคำสั่งจากตำแหน่ง 2
  9. ทำการเปลี่ยนแปลงฐานข้อมูลเปลี่ยนชื่อ global_name เป็น 10. เปลี่ยน TNS-Configuration ตาม $ ORACLE_HOME / network / admin / *. ora ค้นหา SID และ GLOBAL_NAME

มีเครื่องมืออื่น ๆ ที่อ้างอิงในเธรด

ที่นี่โพสต์โดย AskTom ซึ่งอ้างอิงกระบวนการโดยละเอียด ในขณะที่มันมีค่า 10 กรัม แต่ก็ควรใช้งานได้


5
หมายเหตุสำหรับผู้ใช้ windows คุณจะต้องใช้ยูทิลิตี้ "oradim" เพื่อติดตั้งบริการใหม่
REW

9

ใช่คุณทำได้และมันก็ค่อนข้างง่ายเช่นกัน

ใน Oracle ORACLE_SID เป็นเพียงชื่อของ Oracle Instance และมีส่วนเกี่ยวข้องกับ DBNAME ไม่มากนัก ฐานข้อมูลที่มีชื่อ PROD สามารถให้บริการโดยใช้อินสแตนซ์ที่มีชื่อที่ถูกต้อง ไม่มีการเชื่อมต่อโดยตรงระหว่าง SID และ DBNAME การเชื่อมต่อนี้ทำโดยใช้พารามิเตอร์

ไฟล์พารามิเตอร์ถูกระบุว่าเป็น init $ {ORACLE_SID} .ora หรือ spfile $ {ORACLE_SID} .ora ในไฟล์พารามิเตอร์คือพารามิเตอร์ db_name นี่คือจุดเชื่อมต่อระหว่าง Oracle Instance และฐานข้อมูล

ดังนั้นคุณไม่จำเป็นต้องสร้างไฟล์ควบคุมขึ้นมาอีกครั้งคุณไม่จำเป็นต้องใช้ nid ตรวจสอบให้แน่ใจว่าพารามิเตอร์ไฟล์ของคุณมีชื่อที่ถูกต้องนำออราเคิลอินสแตนซ์เก่ามาใช้และเริ่มต้นอินสแตนซ์ใหม่ของ Oracle หลังจากตั้ง ORACLE_SID เป็นชื่อใหม่ของ Oracle Instance ทั้งพารามิเตอร์ไฟล์และไฟล์รหัสผ่านนั้นใช้ $ {ORACLE_SID} เป็นส่วนหนึ่งของชื่อ

การสร้าง controlfile ขึ้นใหม่นั้นต้องการเฉพาะเมื่อ DBNAME ต้องเปลี่ยน nid ต้องการหลังจากการดำเนินการโคลนที่คุณต้องการเปลี่ยน DBID เพื่อป้องกันอุบัติเหตุที่อาจทำให้การสำรองข้อมูลของฐานข้อมูลต้นทางเสียหาย


+1 แต่ฉันก็ยังไม่แน่ใจว่าต้องการเปลี่ยน DB_NAME ด้วยหรือไม่
bernd_k

ถ้าคุณต้องการ: แน่นอนคุณสามารถคำตอบอื่น ๆ อธิบายอย่างถูกต้องว่าจะทำอย่างไร คุณจะทำด้วยเหตุผลอะไร db_name นั้นมีอยู่จริง การรู้จัก db_name นั้นดีสำหรับ dba แต่สำหรับคนอื่น ๆ ส่วนใหญ่จะไม่เกี่ยวข้อง ในวิธีการรวมปกติคุณมีฐานข้อมูลที่ให้บริการมากมาย บริการ - แอปพลิเคชัน - ไม่จำเป็นต้องใส่ใจในฐานข้อมูลใดที่กำลังทำงานอยู่
ik_zelf
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.