Trong hướng dẫn Oracle này, chúng tôi sẽ giải thích một cách hiểu đơn giản về việc làm lại nhóm nhật ký so với tệp và thành viên.
Hôm nay chúng ta sẽ tìm hiểu khái niệm làm lại bộ đệm nhật ký trong Oracle. Trong đó chúng ta sẽ biết, làm lại bộ đệm nhật ký là gì, cách thức hoạt động và vai trò của nó trong kiến trúc Oracle.
Nếu bạn muốn hiểu kiến trúc Oracle, điều thực sự quan trọng là phải hiểu hoạt động của bộ đệm nhật ký làm lại. Bài viết dưới đây cũng sẽ giúp bạn giải quyết các câu hỏi phỏng vấn.
Hiểu biết về làm lại nhóm nhật ký so với tệp và thành viên
Làm lại bộ đệm nhật ký là gì?
Nó là một phân bổ bộ nhớ nhỏ thường khoảng 14mb theo mặc định. Nó là một bộ đệm tuần hoàn. Sau khi đầy, nó lại bắt đầu ghi từ trên xuống, nó sẽ ghi đè lên dữ liệu khi đã đầy.
Làm lại mục nhập và thay đổi Vectơ là gì?
Cá thể cơ sở dữ liệu Oracle ghi lại tất cả các giao dịch DML / DDL vào bộ đệm nhật ký làm lại của SGA dưới dạng các mục nhập làm lại. Tuyên bố riêng lẻ trong một giao dịch sẽ dẫn đến một hoặc nhiều mục thực hiện lại. Tất cả các mục làm lại này được gọi chung là vectơ thay đổi hoặc vectơ làm lại.
Mỗi mục nhập làm lại bao gồm câu lệnh làm lại và câu lệnh hoàn tác, ví dụ:
BẢNG EMP
Không có | Tên | Deptno |
---|---|---|
1 | Jhon | 10 |
2 | Tony | 20 |
3 | Laura | 50 |
4 | Hổ | 10 |
5 | Scott | 10 |
sql>delete empno from emp where deptno=10;
Trong ví dụ trên, bảng emp có 3 bản ghi cho deptno =10. Vì vậy, Oracle sẽ tạo 3 mục làm lại cho câu lệnh trên và các mục này sẽ được ghi vào bộ đệm nhật ký làm lại. 3 mục làm lại này được gọi chung là vectơ thay đổi hoặc vectơ làm lại.
Vectơ thay đổi không là gì ngoài một số hàng bị ảnh hưởng bởi một thao tác duy nhất. Bộ đệm nhật ký làm lại ghi lại các giao dịch của người dùng và nó cũng ghi lại hiệu ứng vô hiệu hóa (câu lệnh hoàn tác) cho giao dịch đó.
Hoạt động của quy trình LGWR
Vì kích thước của bộ đệm nhật ký làm lại nhỏ nên không thể tự động phát triển, các mục nhập làm lại đã ghi này phải được ghi định kỳ vào đĩa thành tệp nhật ký làm lại trực tuyến. Điều này thường được gọi là xả bộ đệm nhật ký làm lại và công việc ghi các mục làm lại này vào đĩa được thực hiện bởi quy trình LGWR.
Khi LGWR ghi các mục nhập làm lại vào đĩa?
LGWR khá tích cực trong việc ghi các mục này vào đĩa. Dưới đây là các sự kiện khi LGWR ghi các mục nhập làm lại vào đĩa.
- Khi kích thước bộ đệm đầy 1/3
- Khi có 1 MB vectơ thay đổi có sẵn trong bộ đệm nhật ký làm lại đang chờ ghi
- 3 giây một lần
- Bất cứ khi nào một điểm kiểm tra xảy ra
- Khi người dùng thực hiện các giao dịch của mình
Một tham số để đặt kích thước của bộ đệm nhật ký làm lại
log_buffer =x byte
Cấu trúc của Redo Log Buffer
Kiến trúc làm lại bao gồm 3 thứ
- Làm lại chuỗi (logic)
- Nhóm nghiên cứu lại (Logic)
- Làm lại các tệp thành viên (Vật lý)
1. Chuỗi nhật ký làm lại là gì?
- Trong khi tạo tệp điều khiển, thông số "MAXINSTANCES" được cung cấp.
- Chuỗi làm lại được tạo thành từ các nhóm làm lại. Chuỗi làm lại phải được kích hoạt để hoạt động.
- Trong môi trường RAC, bạn có thể liên kết một chuỗi làm lại với phiên bản cụ thể bằng cách sử dụng tham số init.ora “chuỗi”.
Trong cơ sở dữ liệu không phải RAC, chủ yếu sẽ có một luồng (luồng =1)
2. Hiểu Nhóm nhật ký làm lại và trạng thái của nó?
-Trong khi tạo một tệp điều khiển, nó được cung cấp dưới dạng tham số “MAXLOGFILES”.
-Một nhóm nhật ký làm lại là một tập hợp các tệp thành viên nhật ký làm lại giống hệt nhau.
-Nhưng để có khả năng chịu lỗi tốt hơn, người ta thường giữ hai tệp thành viên làm lại nhật ký trong mỗi nhóm nhật ký làm lại.
-Nếu một cái bị mất, nó không ảnh hưởng. Các tệp thành viên nhật ký làm lại giống hệt nhau (bản sao chép)
LGWR viết song song cho tất cả các thành viên của một nhóm nhật ký làm lại nhất định
Tại bất kỳ thời điểm nào, quy trình LGWR chỉ ghi vào một nhóm nhật ký làm lại. Nhóm nhật ký làm lại được cố định có nghĩa là các tệp thành viên nhật ký làm lại không thể phát triển động.
Nhóm nhật ký làm lại mà quá trình LGWR hiện đang viết được nhìn thấy với trạng thái “hiện tại”
Khi nhóm nhật ký làm lại đã đầy thì quá trình LGWR sẽ chuyển nhóm nhật ký làm lại tiếp theo.
Nhóm trước đó sẽ hiển thị trạng thái “HOẠT ĐỘNG” và sau một thời gian trạng thái sẽ là “KHÔNG HOẠT ĐỘNG”
HIỆN TẠI => HOẠT ĐỘNG => TÁC ĐỘNG => HIỆN TẠI => HOẠT ĐỘNG => TÁC ĐỘNG …………………………………
HIỆN TẠI trạng thái có nghĩa là oracle hiện đang viết trong vùng đệm này
HOẠT ĐỘNG Điểm kiểm tra của các mục làm lại trong bộ đệm này đang chờ xử lý
KHÔNG TÁC ĐỘNG trạng thái có nghĩa là nhật ký làm lại đã được kiểm tra và có thể được ghi đè ngay lập tức.
Bạn không thể thay đổi kích thước của nhóm nhật ký làm lại khi đã tạo nhưng bạn luôn thả và tạo lại nhóm nhật ký làm lại với các kích thước khác nhau. Bạn không thể bỏ nhóm nhật ký làm lại với trạng thái “HIỆN TẠI” hoặc “HOẠT ĐỘNG”.
Làm cách nào để chuyển đổi một nhóm nhật ký làm lại?
Thông thường, LGWR tự động chuyển đổi giữa các nhóm nhật ký làm lại nhưng bạn có thể chuyển đổi thủ công từ nhóm nhật ký làm lại này sang nhóm nhật ký làm lại khác bằng lệnh.
sql>alter system switch logfile ;
Mỗi khi LGWR chọn một nhóm nhật ký làm lại mới và nó chỉ định một số tăng dần đều cho nhóm nhật ký làm lại đó được gọi là “Số thứ tự nhật ký” hoặc “dãy số”. Bạn có thể truy vấn siêu dữ liệu nhóm nhật ký làm lại bằng cách sử dụng dạng xem:- v $ log Nhóm nhật ký làm lại được ghi bằng kích thước khối đĩa vật lý (sector 512 byte)
Cách thêm nhóm nhật ký làm lại mới
sql>alter database add logfile group 3 ('/path/to/member1.log', '/path/to/member2.log') size 100m reuse;
Ở đây, ý nghĩa của việc sử dụng lại nói rằng, hãy sử dụng lại tệp member 1.log hoặc tệp member2.log nếu nó đã tồn tại trong cùng một đường dẫn.
Cách bỏ làm lại nhóm nhật ký
Bạn có thể bỏ làm lại các nhóm nhật ký với điều kiện trạng thái không phải là HIỆN TẠI hoặc HOẠT ĐỘNG. Ngoài ra sau khi áp dụng lệnh này, số lượng nhóm nhật ký làm lại có sẵn phải là 2 hoặc nhiều hơn.
sql>alter database drop logfile groups 3;
3. Làm lại các tệp thành viên Nhật ký (Vật lý)
Trong khi tạo một tệp điều khiển, nó được cung cấp bởi tham số “MAXLOGMEMBERS”. Các tệp thành viên nhật ký làm lại có sẵn trên thực tế ở cấp hệ điều hành. Kích thước của tệp được cố định tại thời điểm tạo lại nhóm nhật ký.
Tệp không thể phát triển động. LGWR viết song song cho tất cả các thành viên của một nhóm nhật ký làm lại đã cho.
Các tệp thành viên trong nhóm nhật ký làm lại giống hệt nhau. Bạn có thể truy vấn thông tin trạng thái từ chế độ xem v $ logfile
Làm cách nào để thêm thành viên mới vào nhóm hiện có?
sql>alter database add logfile member '/path/to/new/member1.log' to group 3;
Bạn có thể loại bỏ một thành viên khỏi nhóm miễn là vẫn còn một thành viên và trạng thái nhóm không hiện tại
sql>alter database drop logfile member '/path/to/member_to_be_deleted.log';
Để truy vấn chi tiết chuyển đổi nhật ký làm lại
bạn có thể truy vấn v $ log-history
sql>select count(*), trunc(first_time) from v$log_history;
nhóm để ghi đè các mục làm lại
Tại sao tôi thấy "trạm kiểm soát không hoàn thành" trong alert.log
Khi LGWR đến một nhóm nhật ký làm lại để ghi đè các mục làm lại và vào thời điểm đó nếu một điểm kiểm tra của nhóm đó đang chờ xử lý, bạn sẽ thấy thông báo trong nhật ký cảnh báo “điểm kiểm tra chưa hoàn thành” Vì điều này LGWR không thể ghi đè nhóm nhật ký làm lại ngay lập tức.
Do đó, Oracle sẽ kích hoạt “điểm kiểm tra” sẽ làm sạch các bộ đệm bẩn do thực hiện lại các mục vào đĩa. Chỉ sau LGWR này mới có thể ghi đè để làm lại bộ đệm. Nó có nghĩa là LGWR phải đợi một thời gian không tốt. Để khắc phục, hãy thêm nhiều nhóm nhật ký làm lại và / hoặc tăng kích thước của nhóm nhật ký làm lại.
Chúng tôi hy vọng các chi tiết trên của chúng tôi sẽ giúp bạn hiểu rõ hơn về bộ đệm nhật ký làm lại.
Đây là phần cuối của hướng dẫn, hiểu về làm lại log group vs file vs member.