Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Hiểu hành vi ORA_ROWSCN trong Oracle

Theo mặc định, ORA_ROWSCN được lưu trữ ở cấp khối, không phải ở cấp hàng. Nó chỉ được lưu trữ ở cấp hàng nếu bảng ban đầu được tạo bằng ROWDEPENDENCIES được kích hoạt. Giả sử rằng bạn có thể phù hợp với nhiều hàng trong bảng của mình trong một khối duy nhất và bạn không sử dụng APPEND gợi ý để chèn dữ liệu mới trên mực nước cao hiện có của bảng, bạn có thể chèn dữ liệu mới vào các khối đã có một số dữ liệu hiện có trong đó. Theo mặc định, điều đó sẽ thay đổi ORA_ROWSCN của mọi hàng trong khối khiến truy vấn của bạn đếm nhiều hàng hơn thực tế đã được chèn.

Kể từ ORA_ROWSCN chỉ được đảm bảo là giới hạn trên vào lần cuối cùng có DML trên một hàng, việc xác định có bao nhiêu hàng được chèn vào ngày hôm nay sẽ phổ biến hơn nhiều bằng cách thêm CREATE_DATE cột vào bảng mặc định là SYSDATE hoặc dựa vào SQL%ROWCOUNT sau INSERT của bạn đã chạy (tất nhiên, giả sử rằng bạn đang sử dụng một INSERT duy nhất để chèn tất cả các hàng).

Nói chung, sử dụng ORA_ROWSCNSCN_TO_TIMESTAMP hàm sẽ là một cách có vấn đề để xác định khi nào một hàng được chèn ngay cả khi bảng được tạo bằng ROWDEPENDENCIES . ORA_ROWSCN trả về Oracle SCN là Số Thay đổi Hệ thống. Đây là số nhận dạng duy nhất cho một thay đổi cụ thể (tức là một giao dịch). Do đó, không có liên kết trực tiếp nào giữa SCN và thời gian - cơ sở dữ liệu của tôi có thể tạo ra SCN nhanh hơn của bạn một triệu lần và SCN 1 của tôi có thể khác SCN 1. Quy trình nền Oracle SMON duy trì một bảng ánh xạ các giá trị SCN đến các dấu thời gian gần đúng nhưng nó chỉ duy trì dữ liệu đó trong một khoảng thời gian giới hạn - nếu không, cơ sở dữ liệu của bạn sẽ kết thúc với một bảng nhiều tỷ hàng chỉ lưu trữ SCN thành ánh xạ dấu thời gian. Nếu hàng được chèn nhiều hơn, chẳng hạn như một tuần trước (và giới hạn chính xác phụ thuộc vào cơ sở dữ liệu và phiên bản cơ sở dữ liệu), SCN_TO_TIMESTAMP sẽ không thể chuyển đổi SCN thành dấu thời gian và sẽ trả về lỗi.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Số lượng và tham gia tự nhiên của Oracle (1)

  2. Con trỏ động Oracle

  3. Cách xóa tệp nhật ký lưu trữ trên phiên bản AWS RDS Oracle

  4. Cách tạo thư mục zip trong plsql (Oracle)

  5. 5 cách cập nhật dữ liệu bằng truy vấn con trong Oracle SQL