Qui Truong

Ngày Đăng:

05/04/2023 20:37

Ngày Cập Nhật:

05/04/2023 20:37

Tác giả: Qui Truong
Ngày đăng: 05/04/2023 20:37

DEDICATED SERVER & SHARED SERVER CONFIGURATION ORACLE DATABASE

Trong cấu hình máy chủ riêng(Dedicated server), một server process xử lý các yêu cầu cho một User process duy nhất. Trong cấu hình máy chủ chia sẻ(Shared Server), nhiều User process có thể chia sẻ một số ít Server process. Thông tin chi tiết về cấu hình từng loại sẽ được trình bày trong bài học này.

DEDICATED SERVER CONFIGURATION

Với dedicate server process, mỗi server process được sử dụng để xử lý yêu cầu cho user process. Mỗi server process sử dụng tài nguyên hệ thống, bao gồm chu kỳ CPU và bộ nhớ.


Trong một hệ thống đang chạy tải nặng, tài nguyên bộ nhớ và CPU được sử dụng bởi các dedicates server process có thể gây khó khăn và ảnh hưởng tiêu cực đến khả năng mở rộng của hệ thống.


Nếu hệ thống của bạn bị ảnh hưởng tiêu cực bởi yêu cầu tài nguyên của kiến trúc dedicated server, từ đó bạn sẽ có các tùy chọn sau đây:

  • Tăng tài nguyên hệ thống bằng cách thêm bộ nhớ và khả năng CPU bổ sung
  • Sử dụng kiến trúc shared server process của Oracle

SHARED SERVER CONFIGURATION

user session shared server process of oracle database

Mỗi service tham gia trong kiến trúc shared server process có ít nhất một tiến trình bộ phân phối (dispatcher process) (thường là nhiều hơn). Khi có yêu cầu kết nối đến, listener không tạo một dedicated server process. Thay vào đó, listener duy trì một danh sách các dispatcher có sẵn cho mỗi service name, cùng với tải kết nối (số kết nối đồng thời) cho mỗi bộ phân phối.


Yêu cầu kết nối được định tuyến đến bộ phân phối có tải nhẹ nhất đang phục vụ một tên dịch vụ cụ thể. Người dùng vẫn kết nối với cùng một bộ phân phối trong suốt phiên làm việc.


Khác với dedicated server process, một bộ phân phối đơn(Single dispatcher) có thể quản lý hàng trăm User session.
Bộ phân phối không xử lý công việc của yêu cầu người dùng. Thay vào đó, chúng chuyển yêu cầu người dùng đến một hàng đợi chung nằm trong phần shared pool của SGA.


Các shared server process tiếp quản hầu hết công việc của các dedicated server process, lấy các yêu cầu từ hàng đợi và xử lý chúng cho đến khi chúng hoàn tất.


Do user session có thể có yêu cầu được xử lý bởi nhiều tiến trình máy chủ chia sẻ, hầu hết các cấu trúc bộ nhớ thường được lưu trữ trong PGA phải được lưu trữ trong vị trí bộ nhớ chia sẻ (mặc định là trong shared pool).


Tuy nhiên, nếu large pool được cấu hình hoặc nếu SGA_TARGET được thiết lập cho quản lý bộ nhớ tự động, các cấu trúc bộ nhớ này sẽ được lưu trữ trong phần large pool của SGA.

SGA and PGA with Shared server processes of oracle database

Nội dung của SGAPGA khác nhau khi sử dụng máy chủ dành riêng (dedicated servers) hoặc máy chủ được chia sẻ (shared servers):

  • Các Text và các biểu thức trong câu SQL được phân tích và được lưu trữ trong SGA
  • Trạng thái con trỏ chứa các giá trị bộ nhớ về thời gian chạy cho câu lệnh SQL, chẳng hạn như số dòng được truy xuất.
  • Dữ liệu user session bao gồm thông tin bảo mật và sử dụng tài nguyên.
  • Không gian ngăn xếp chứa các biến cục bộ cho các processes.

Chú ý:


Thay đổi trong SGA và PGA là trong suốt đối với người dùng. Tuy nhiên, nếu bạn hỗ trợ nhiều người dùng, bạn cần tăng tham số khởi tạo LARGE_POOL_SIZE. Mỗi Shared server processes phải truy cập vào các không gian dữ liệu của tất cả các phiên để bất kỳ máy chủ nào cũng có thể xử lý các yêu cầu từ bất kỳ session nào. 


Không gian được phân bổ trong SGA được cấp cho mỗi session. Bạn có giới hạn số lượng không gian mà một session có thể được phân bổ bằng cách đặt tài nguyên PRIVATE_SGA.


CÂN NHẮC CẤU HÌNH SHARED SERVER TRONG ORACLE DATABASE

Shared server configuration considerration

Mô hình Oracle Shared Server là một mô hình sử dụng các processes và Memory hiệu quả, nhưng nó không phù hợp cho tất cả các kết nối.

 
Bởi vì có hàng đợi yêu cầu chung và nhiều người dùng có thể chia sẻ hàng đợi phản hồi của bộ điều khiển, các shared server không hoạt động tốt với các hoạt động phải xử lý các files dữ liệu lớn, chẳng hạn như truy vấn kho dữ liệu hoặc xử lý hàng loạt.

 
Các session dùng cho mục đích sao lưu và khôi phục sử dụng Oracle Recovery Manager (được thảo luận trong các bài học sau) cũng xử lý các files dữ liệu rất lớn và phải sử dụng các kết nối riêng.

 
Nhiều tác vụ quản trị không được thực hiện (và không thể thực hiện) bằng các kết nối máy chủ chia sẻ. Chúng bao gồm các việc như khởi động và tắt instance, tạo tablespace và data files, duy trì chỉ mục và bảng, phân tích thống kê và nhiều tác vụ khác thường được thực hiện bởi DBA. Tất cả các session DBA phải chọn các máy chủ được dành riêng


CẤU HÌNH GIAO TIẾP GIỮA CÁC DATABASE - DATABASE LINK ORACLE DATABASE

configuration communication between database of oracle database system

Đối tượng liên kết cơ sở dữ liệu (database link) là một đối tượng schema trong cơ sở dữ liệu này cho phép bạn truy cập vào các đối tượng trong một cơ sở dữ liệu khác. Cơ sở dữ liệu khác không nhất thiết phải là hệ thống cơ sở dữ liệu Oracle.


Tuy nhiên, để truy cập vào các hệ thống không phải Oracle, bạn phải sử dụng Oracle Heterogeneous Services.


Để tạo một đối tượng liên kết cơ sở dữ liệu riêng, bạn phải có quyền hệ thống CREATE DATABASE LINK. Để tạo một đối tượng database link public, bạn phải có quyền hệ thống CREATE PUBLIC DATABASE LINK.


Khi một ứng dụng sử dụng database link để truy cập vào cơ sở dữ liệu từ xa, Oracle Database sẽ thiết lập một phiên làm việc trong cơ sở dữ liệu từ xa thay mặt cho yêu cầu từ Local. Mệnh đề CONNECT TO được sử dụng trong việc tạo database link xác định cách kết nối được thiết lập trên cơ sở dữ liệu từ xa.

 
Bạn có thể tạo các database link cho người dùng cố định (fixed user), người dùng hiện tại (current user) và người dùng đã kết nối (connected user). Các Link của người dùng hiện tại chỉ có sẵn thông qua tùy chọn Bảo mật Nâng cao (Oracle Advanced Security). Ví dụ trên hình trên đang trình bày cú pháp để tạo database link cho người dùng cố định.


Sau khi tạo một database link, bạn có thể sử dụng nó để tham chiếu đến các bảng và view trên cơ sở dữ liệu khác. Trong các câu lệnh SQL, bạn có thể tham chiếu đến bảng hoặc view trên cơ sở dữ liệu khác bằng cách đính thêm @dblink vào tên bảng hoặc chế độ xem.


Bạn có thể truy vấn một bảng hoặc view trên cơ sở dữ liệu khác hoặc sử dụng bất kỳ câu lệnh INSERT, UPDATE, DELETE hoặc LOCK TABLE nào cho bảng đó.

Usig database link to connecting to another database

Trong hình trên, đang hiển thị nội dung cần có tnsnames.ora trước khi tạo database link.


Ví dụ hiển thị một database link sử dụng tài khoản người dùng cố định được gọi là REMOTE, kết nối đến người dùng HR bằng chuỗi kết nối REMOTE_ORCL. 


Sau khi tạo database link, bạn có thể sử dụng nó để tham chiếu đến các bảng và view trên cơ sở dữ liệu khác.


Mô tả về view như sau:


SQL> DESC DBA_DB_LINKS
Name                        Null?                          Type
-------------------- --------                      ----------------------------
OWNER                   NOT NULL                VARCHAR2(30)
DB_LINK                  NOT NULL                VARCHAR2(128)
USERNAME                                               VARCHAR2(30)
HOST                                                          VARCHAR2(2000)
CREATED                NOT NULL                 DATE

 
SQL> select owner, db_link, username from dba_db_links;
OWNER         DB_LINK                                         USERNAME
-----------      -------------------                         ---------
HR                   REMOTE.EXAMPLE.COM             HR

Chia sẽ bài viết này

{"email":"Email address invalid","url":"Website address invalid","required":"Required field missing"}

Qui Truong

Thông tin tác giả:

Xin chào mọi người, mình là Qui Trương. Hiện tại, ngoài công việc là một DBA thì mình còn là một người sáng tạo nội dung trên trang blog caitrang.com. Mỗi ngày, mình luôn tìm kiếm cách để chia sẻ những nội dung độc đáo, ý nghĩa và mang tính cảm hứng tới mọi người. Mình tin rằng qua từng dòng viết, mình có thể kết nối và tạo dựng một cộng đồng đọc giả thú vị và ý nghĩa.

Page [tcb_pagination_current_page] of [tcb_pagination_total_pages]

>