Nhiều trường hợp Oracle - đây có phải là một thực hành tốt?


9

Một trong những khách hàng của tôi đã triển khai db sản phẩm của chúng tôi vào máy Solaris đã có 3 phiên bản của Oracle. Vì vậy, ngay bây giờ có 4 phiên bản của Oracle đang chạy trên cùng một máy. Và bây giờ chúng tôi đang gặp vấn đề về hiệu suất.

Tôi không có quyền truy cập vào các phiên bản khác hoặc máy và tất cả các công cụ tôi có là alert.log, AWR và ADDM. Tôi biết có một cái gì đó liên quan đến nhiều trường hợp, nhưng tôi không thể chứng minh điều đó.

Vì vậy, câu hỏi của tôi là, bạn đã trải qua một tình huống tương tự? Làm thế nào tôi nên đối phó với nó? Làm cách nào để xác định nguyên nhân của các vấn đề về hiệu suất liên quan đến nhiều trường hợp?

Câu trả lời:


8

Isaac, tốt nhất là chúng tôi chạy một cá thể trên một máy chủ và triển khai các ứng dụng khác nhau dưới dạng lược đồ và dịch vụ trong cơ sở dữ liệu đơn lẻ đó. Nếu máy chủ có đủ bộ nhớ, sẽ không có vấn đề gì, nếu tất cả các ứng dụng hoạt động như những công dân tốt của Oracle. Ngay khi có một ứng dụng không sử dụng các biến liên kết, có một nỗi đau ngày càng tăng trên máy chủ. Điều tương tự đối với các ứng dụng tiếp tục tạo kết nối mới cứ sau vài giây, thay vì sử dụng lại các kết nối hiện có. Những thứ như cam kết tự động cũng không giúp cải thiện tình hình. Hành vi bình thường của ứng dụng của bạn là gì? Nó có cập nhật lớn không? Khi nào nó thực hiện một cam kết? Bao nhiêu làm lại được tạo ra / giờ? Ứng dụng của bạn có sử dụng các biến liên kết không? Trong nhiều trường hợp, vị trí của các tệp redolog trực tuyến là rất quan trọng. Nếu ứng dụng tạo ra nhiều bản làm lại (hoặc cạnh tranh với một ứng dụng khác làm điều này), logwriter sẽ làm chậm và gây ra sự suy giảm hiệu năng lớn vì phiên đang chờ quá trình ghi logfile hoàn tất. Cung cấp cho khách hàng của bạn một bố cục đĩa trong đó các redo nằm trên các đĩa raid-10 chuyên dụng và xem điều này giúp ích được bao nhiêu. Cũng tìm hiểu tình hình cấp phát bộ nhớ. Có thể cần phải phân phối lại công bằng bộ nhớ khả dụng.

Tôi hi vọng cái này giúp được


bạn nói đúng. Chúng tôi theo dõi trường hợp của chúng tôi và thực hiện tối ưu hóa bất cứ nơi nào chúng tôi có thể. Nhưng hiệu suất không ổn định, đôi khi nó giảm xuống mà không có lý do có thể giải thích được (từ phía chúng tôi)
Isaac A. Nugroho

Isaac, cơ sở dữ liệu được khởi động lại thường xuyên như thế nào, phiên bản nào và bạn có chương trình biểu đồ trên các cột, được tạo bởi quy trình thống kê tự động không? Bạn có sử dụng các biến ràng buộc và tối ưu hóa nhìn trộm trước?
ik_zelf

2

Chạy nhiều phiên bản trên cùng một máy chủ là có thể và trong một số trường hợp cần thiết. Oratab được thiết kế đặc biệt để xử lý việc quản lý nhiều trường hợp. Trong trường hợp bạn có nhiều ứng dụng độc lập, có thể nên có một ví dụ cho mỗi ứng dụng.

Có đủ bộ nhớ là rất quan trọng. Oracle xây dựng SGA trong bộ nhớ dùng chung. Nếu bạn không có đủ bộ nhớ, SGA hoặc các quy trình sẽ bắt đầu hoán đổi vào và ra. Điều này được gọi là đập, và dẫn đến một hình phạt hiệu suất đáng kể.

Có thể điều chỉnh các thể hiện để chạy với SGA nhỏ hơn. Oracle cung cấp các công cụ để giúp điều chỉnh kích thước SGA. Nếu bất kỳ trường hợp nào có SGA quá lớn, nó sẽ phạt tất cả các trường hợp.

Một cách sử dụng khác cho bộ nhớ rất quan trọng là không gian bộ đệm. Điều này hoạt động như bộ đệm thứ cấp và có thể loại bỏ I / O đọc đáng kể.

Chạy sar(giả sử O / S cơ sở Unix) có thể cung cấp cho bạn chẩn đoán tốt về vấn đề đang ở đâu. Các vấn đề có thể là hoán đổi hoặc bão hòa I / O đĩa. Thêm RAM có thể sẽ giải quyết một trong những vấn đề này.

Độ bão hòa I / O của đĩa cũng có thể được xử lý bằng cách di chuyển một số không gian bảng sang các đĩa khác. Tôi thường cấu hình Oracle để I / O được phân phối trên càng nhiều đĩa càng tốt.

EDIT: Đây là một vài trường hợp có thể yêu cầu các trường hợp riêng biệt.

  • Luôn luôn cần thiết nếu bạn chạy các phiên bản khác nhau của Oracle trên cùng một máy chủ. Các ứng dụng không phải lúc nào cũng được chứng nhận hoặc có khả năng làm việc với phiên bản mới nhất.
  • Bạn có thể muốn một trường hợp có thể tự động quay ngược về thời điểm. (Mặc dù tôi không khuyến khích điều đó nhưng tôi đã sử dụng điều này cho môi trường thử nghiệm tự động.)
  • Nếu bạn có tham chiếu lược đồ được mã hóa cứng trong các ứng dụng, bạn có thể cần các trường hợp khác nhau để xử lý các xung đột không gian tên.
  • Yêu cầu bảo mật có thể dễ dàng hơn để xử lý bằng cách sử dụng các trường hợp riêng biệt. Nó có thể thích hợp để sử dụng các máy chủ khác nhau trong trường hợp này.
  • Chạy các phiên bản khác nhau của cùng một cơ sở dữ liệu (phát triển, thử nghiệm, chấp nhận người dùng, đào tạo và sản xuất) trên cùng một máy chủ sẽ an toàn hơn với các phiên bản riêng biệt. Tôi sẽ không chạy tất cả các môi trường này trên cùng một máy chủ, nhưng thường chạy hai hoặc nhiều hơn trên cùng một máy chủ.

Bạn có thể cung cấp các ví dụ khi cần thiết để chạy nhiều phiên bản không?
ScottCher

1
@ScottCher Tôi đã chỉnh sửa trả lời của mình để cung cấp một số trường hợp.
BillThor

1

Tài nguyên quan trọng nhất là RAM.

Mỗi phiên bản Oracle đang chạy sẽ phân bổ một số RAM cho riêng nó, khi chỉ mới bắt đầu và không tải.

Chúng tôi đang chạy 10g với 10 và 11g với 8 trường hợp, nhưng đây là các máy chủ phát triển. Sau khi khởi động lại hệ điều hành, một số dịch vụ của Oracle không tự động khởi động và phải được khởi động thủ công: Oradim -startup -sid xxx.

Chúng tôi mới bắt đầu sử dụng Quản lý bộ nhớ tự động, nhưng tình huống khác với SQL Server, nơi bạn có thể thêm cơ sở dữ liệu nhiều như dung lượng đĩa mang lại.

Tôi là trường hợp của bạn, với nhiều phiên bản trên một máy, SGA cho mỗi phiên bản trở nên nhỏ hơn, sql được biên dịch trước ít hơn có thể được lưu vào bộ đệm và máy phải thực hiện biên dịch sql nhiều hơn, làm giảm hiệu suất.

Thêm RAM có thể giúp ích trong tình huống của bạn.


2
Lý do bạn nói máy chủ SQL là khác nhau nhiều hơn là một danh pháp. Một nhóm các quy trình và bộ nhớ chuyên dụng của nó là một ví dụ. Nếu bạn thêm cơ sở dữ liệu SQL Server và nó không thêm quy trình mới, đó không phải là một trường hợp. Trong trường hợp đó, nó gần hơn với việc thêm một lược đồ.
Stephanie Trang
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.