Чи можна змінити SID бази даних Oracle?


18

Сервер - це Oracle Database 11g Enterprise Edition, випуск 11.1.0.7.0 - 64 біт

Чи є простий та швидкий спосіб змінити SID тестових баз даних на сервері?

Видалення та відтворення бази даних - це варіант для мене. Але я шукаю щось, що вимагає менше часу.

Інший варіант присвоєння імен клієнтам tnsnames.ora схильний до помилок, оскільки вони не адмініструються централізовано.

Порівняно з часом скидання та створення бази даних на SQL-сервері, кількість часу, необхідного для створення нової бази даних Oracle, надмірно більша. Далі на SQL-сервері ви можете перейменувати екземпляри SQL-Server. [Зазвичай ви перейменовуєте сервер, на якому працює SQL-сервер, і виникають певні проблеми, поки ви також не перейменовуєте сервер].


Ви згадуєте, що можете скидати та відтворювати бази даних. Чи маєте ви доступ до виробничої бази даних, і це резервне копіювання? Ви можете використовувати RMAN та команду-дублікат для того, щоб відтворити базу даних і змінити SID одночасно.
Сумнібот

Ні, я працюю як DBA для розробки та деяких тестових баз даних Oracle.
bernd_k

2
Коли ви використовуєте базу даних на SQL Server, ви зазвичай використовуєте схему (= користувач) в Oracle. Те саме ім’я не означає те саме, що в цих двох світах
a_horse_with_no_name

Відповіді:


13

Оскільки утиліту 9i dbnewid (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 (або редагування файлу у файлі):

    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

Потрібно відтворити керуючий файл

Цей пост Каунаїна Ахмеда описує необхідні кроки:

  1. робити: змінити файл керування резервним копією бази даних для відстеження;
  2. витягнути команду "створити контрольний файл" з траєкторії background-dump-призначення.
  3. закриття БД.
  4. Змініть Ім'я DB у вашому init.ora та змініть init.ora
  5. Змініть SID у / etc / oratab або / var / opt / oracle / oratab
  6. Змініть SID у своєму оточенні та джерело його
  7. Запустіть базу даних для встановлення стану монтажу в стані
  8. Заново створіть файл керування з висловом із позиції 2.
  9. Зробіть перейменування бази даних перейменувати global_name на 10.Замініть відповідно конфігурацію TNS $ ORACLE_HOME / network / admin / *. Ora Шукайте SID та GLOBAL_NAME

Є інші інструменти, на які посилається нитка.

Ось допис від AskTom, в якому детальніше посилається на процес. Хоча це за 10 г, він все одно повинен працювати.


5
Зверніть увагу на користувачів Windows, вам також знадобиться скористатися утилітою "oradim" для налаштування нової послуги.
REW

9

Так, ви можете, і це досить просто.

В Oracle ORACLE_SID - це лише ім'я екземпляра Oracle і не має великого відношення до DBNAME. База даних з іменем PROD може обслуговуватися за допомогою інстанцій з будь-яким дійсним іменем. Немає прямого зв'язку між SID та DBNAME. Це з'єднання здійснюється за допомогою параметрів.

Файл параметра ідентифікується як init $ {ORACLE_SID} .ora або spfile $ {ORACLE_SID} .ora У файлі параметра є параметр db_name. Тут відбувається з'єднання між інстанцією Oracle і базою даних.

Отже, вам не потрібно заново створювати файл керування, вам не потрібно використовувати nid, просто переконайтеся, що у вашому файлі параметрів потрібне ім’я, зберіть старий екземпляр Oracle і запустіть новий екземпляр Oracle після встановлення ORACLE_SID до нового імені інстанції Oracle. Файл параметрів та файл пароля знаходять, використовуючи $ {ORACLE_SID} як частину свого імені.

Повторне створення файлу управління потрібно лише тоді, коли DBNAME має змінитися. nid потрібен після операції з клонуванням, де потрібно змінити DBID, щоб запобігти нещасним випадкам, які можуть зашкодити резервні копії вихідної бази даних.


+1 Але я все ще не впевнений, чи хочу я також змінити DB_NAME.
bernd_k

Якщо ви хочете: впевнено, можете, інші відповіді пояснюють правильно, як це зробити. З якої причини ти це зробив би? Ім'я db_name дуже фізичне. Знання db_name добре для dba, але для більшості інших це не має значення. При звичайному консолідованому підході у вас є база даних, яка обслуговує багато служб. Сервіс - додаток - не повинен дбати про те, в якій базі даних він працює.
ik_zelf
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.