Tôi có thể thay đổi SID của cơ sở dữ liệu Oracle không?


18

Máy chủ là Cơ sở dữ liệu Oracle Phiên bản doanh nghiệp 11g Phiên bản 11.1.0.7.0 - 64 bit

Có cách nào dễ dàng và nhanh chóng để thay đổi SID của cơ sở dữ liệu thử nghiệm trên máy chủ không?

Thả và tạo lại cơ sở dữ liệu là một lựa chọn cho tôi. Nhưng tôi đang tìm kiếm một cái gì đó đòi hỏi ít thời gian hơn.

Tùy chọn khác để gán tên trong máy khách tnsnames.ora dễ bị lỗi, vì chúng không được quản trị tập trung.

So với thời gian bỏ và tạo cơ sở dữ liệu trên SQL-Server, lượng thời gian cần thiết để tạo cơ sở dữ liệu Oracle mới là quá lớn. Hơn nữa trên SQL-Server, bạn có thể đổi tên các phiên bản SQL-Server. [Thông thường bạn đổi tên máy chủ nơi SQL-Server đang chạy và có một số vấn đề cho đến khi bạn đổi tên máy chủ].


Bạn đề cập rằng bạn có thể thả và tạo lại cơ sở dữ liệu. Bạn có quyền truy cập vào cơ sở dữ liệu sản xuất và nó sao lưu? Bạn có thể sử dụng RMAN và lệnh trùng lặp để tạo lại cơ sở dữ liệu và thay đổi SID cùng một lúc.
Sumnibot

Không, tôi làm DBA cho việc phát triển và một số cơ sở dữ liệu thử nghiệm của Oracle.
bernd_k

2
Khi bạn sử dụng cơ sở dữ liệu trong SQL Server, bạn thường sử dụng Schema (= user) trong Oracle. Tên giống nhau không có nghĩa giống nhau ở hai thế giới đó
a_horse_with_no_name

Câu trả lời:


13

Vì tiện ích dbnewid 9i (nid) có thể được sử dụng để thay đổi tên cơ sở dữ liệu (và DBID nếu được yêu cầu). Nếu tên cơ sở dữ liệu chỉ được thay đổi thì không cần thiết lập lại:

  • 1 cơ sở dữ liệu khởi động ở chế độ gắn kết

    shutdown immediate
    startup mount
  • 2 chạy nid để thay đổi tên cơ sở dữ liệu:

    nid target=sys/syspassword@dbtns dbname=newname setname=YES
  • 3 tắt máy và khởi động cơ sở dữ liệu ở chế độ gắn kết:

    shutdown immediate
    startup mount
  • 4 thay đổi db_nametrong spfile (hoặc trong pfile chỉnh sửa tệp):

    alter system set db_name=newname scope=spfile;
  • 5 tạo lại tập tin mật khẩu:

    orapwd file=orapwnewname password=syspassword
  • 6 khởi động cơ sở dữ liệu

    startup
  • 7 bước đổi tên bài:

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

1
Tôi đã đổi tên 4 cơ sở dữ liệu oracle trên Windows Server theo cách này. Tìm kiếm tiện ích dbnewid tôi tìm thấy oracle-base.com/articles/9i/DBNEWID.php đã đưa ra một số giải thích bổ sung.
bernd_k

1
Đây là một câu trả lời hay khi câu hỏi là: làm thế nào để đổi tên cơ sở dữ liệu. Câu hỏi là: làm thế nào để thay đổi SID.
ik_zelf

17

Bạn cần tạo lại tập tin điều khiển

Bài đăng này của Kaunain Ahmed mô tả các bước cần thiết:

  1. làm: thay đổi cơ sở dữ liệu sao lưu controlfile để theo dõi;
  2. trích xuất lệnh "tạo controlfile" từ trackfile nền-dump-Destination.
  3. tắt máy DB.
  4. Thay đổi tên DB trong init.ora của bạn và thay đổi init.ora
  5. Thay đổi SID trong / etc / oratab hoặc / var / opt / oracle / oratab
  6. Thay đổi SID trong môi trường của bạn và cung cấp nó
  7. Khởi động cơ sở dữ liệu để gắn kết trạng thái khởi động gắn kết
  8. Tạo lại tệp điều khiển với câu lệnh từ vị trí 2.
  9. Thực hiện thay đổi cơ sở dữ liệu đổi tên global_name thành 10. Thay đổi cấu hình TNS tương ứng $ ORACLE_HOME / network / admin / *. Ora Hãy tìm SID và GLOBAL_NAME

Có các công cụ khác được tham chiếu trong chuỗi.

Đây là một bài đăng của AskTom tham khảo quá trình chi tiết hơn. Trong khi nó cho 10g, nó vẫn hoạt động.


5
Lưu ý cho người dùng windows, bạn cũng sẽ cần sử dụng tiện ích "oradim" để thiết lập dịch vụ mới.
REW

9

Vâng, bạn có thể và nó cũng khá dễ dàng.

Trong Oracle, ORACLE_SID chỉ là tên của Trường hợp Oracle và không liên quan nhiều đến DBNAME. Một cơ sở dữ liệu có tên SẢN XUẤT, có thể được phục vụ bằng cách sử dụng Trường hợp với bất kỳ tên hợp lệ nào. Không có kết nối trực tiếp giữa SID và DBNAME. Kết nối này được thực hiện bằng cách sử dụng các tham số.

Tệp tham số được xác định là init $ {ORACLE_SID} .ora hoặc spfile $ {ORACLE_SID} .ora Trong tệp tham số là tham số db_name. Đây là nơi kết nối giữa Oracle Instance và cơ sở dữ liệu được thực hiện.

Vì vậy, bạn không cần phải tạo lại controlfile, bạn không cần sử dụng nid, chỉ cần đảm bảo rằng tham số của bạn có đúng tên, đưa xuống Instance Oracle cũ và khởi động Instance mới của Oracle sau khi đã đặt ORACLE_SID với tên Oracle Instance mới. Cả tham số và tệp mật khẩu đều được tìm thấy bằng cách sử dụng $ {ORACLE_SID} như một phần của tên của chúng.

Tạo lại tệp điều khiển chỉ cần thiết khi DBNAME phải thay đổi. nid là cần thiết sau một hoạt động nhân bản mà bạn cần thay đổi DBID để ngăn ngừa các tai nạn có thể làm tổn thương các bản sao lưu của cơ sở dữ liệu nguồn.


+1 Nhưng tôi vẫn không chắc chắn liệu mình có muốn thay đổi DB_NAME hay không.
bernd_k

Nếu bạn muốn: chắc chắn, bạn có thể, các câu trả lời khác giải thích chính xác làm thế nào để làm điều đó. Vì lý do gì bạn sẽ làm điều đó? Db_name rất vật lý Biết db_name là tốt cho một dba nhưng đối với hầu hết những người khác thì điều đó không liên quan. Theo cách tiếp cận hợp nhất thông thường, bạn có một cơ sở dữ liệu phục vụ nhiều dịch vụ. Một dịch vụ - ứng dụng - không cần phải quan tâm đến cơ sở dữ liệu nào nó đang chạy.
ik_zelf
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.