Tính năng mới nào của Oracle cho phép nhiều user xem nội dung của table tại 1 số điểm trong quá khứ?
A.
LogMiner
B.
Import
C.
Metadata Viewer
D.
Oracle Flashback
Đáp án
Đáp án đúng: D
Tính năng Oracle Flashback cho phép người dùng xem dữ liệu trong quá khứ. Cụ thể, nó cho phép truy vấn dữ liệu như thể nó tồn tại ở một thời điểm trước đó, giúp khôi phục dữ liệu hoặc phân tích sự thay đổi dữ liệu theo thời gian.
* LogMiner: Là một công cụ của Oracle dùng để phân tích các redo log files, cho phép theo dõi các thay đổi dữ liệu và thực hiện audit, nhưng không trực tiếp cho phép người dùng xem nội dung của table tại một thời điểm trong quá khứ một cách dễ dàng như Flashback. * Import: Là một tiện ích để nhập dữ liệu từ một file dump vào database, không liên quan đến việc xem dữ liệu trong quá khứ. * Metadata Viewer: Là công cụ để xem metadata (dữ liệu về dữ liệu) của database, chứ không phải nội dung của table tại một thời điểm trong quá khứ.
Tính năng Oracle Flashback cho phép người dùng xem dữ liệu trong quá khứ. Cụ thể, nó cho phép truy vấn dữ liệu như thể nó tồn tại ở một thời điểm trước đó, giúp khôi phục dữ liệu hoặc phân tích sự thay đổi dữ liệu theo thời gian.
* LogMiner: Là một công cụ của Oracle dùng để phân tích các redo log files, cho phép theo dõi các thay đổi dữ liệu và thực hiện audit, nhưng không trực tiếp cho phép người dùng xem nội dung của table tại một thời điểm trong quá khứ một cách dễ dàng như Flashback. * Import: Là một tiện ích để nhập dữ liệu từ một file dump vào database, không liên quan đến việc xem dữ liệu trong quá khứ. * Metadata Viewer: Là công cụ để xem metadata (dữ liệu về dữ liệu) của database, chứ không phải nội dung của table tại một thời điểm trong quá khứ.
Câu hỏi kiểm tra về tính năng chia sẻ cursor (cursor sharing) trong Oracle, một cơ chế quan trọng để tối ưu hiệu suất bằng cách tái sử dụng các câu lệnh SQL đã được phân tích cú pháp và tối ưu hóa.
Phương án A sai vì tính năng chia sẻ cursor yêu cầu các câu lệnh SQL phải tương đương về mặt logic và cấu trúc. Việc thay đổi thứ tự cột hoặc mệnh đề GROUP BY sẽ khiến câu lệnh trở thành một câu lệnh khác, không thể tái sử dụng cursor.
Phương án B sai vì CPU_COST, IO_COST và TEMP_SPACE là các cột trong PLAN_TABLE, được sử dụng bởi Cost-Based Optimizer (CBO), không phải Rule-Based Optimizer (RBO). RBO dựa trên các quy tắc được định nghĩa sẵn, không sử dụng thông tin về chi phí.
Phương án C đúng vì ngay cả một sự khác biệt nhỏ trong giá trị ký tự của câu lệnh SQL cũng có thể ngăn việc tái sử dụng cursor, đặc biệt nếu thống kê không chính xác ảnh hưởng đến việc tối ưu hóa truy vấn. Oracle so sánh câu lệnh SQL theo bit. Nếu có bất kỳ sự khác biệt nào, nó sẽ được coi là một câu lệnh khác và do đó không thể tái sử dụng. Số liệu thống kê không chính xác làm sai lệch việc tối ưu hóa, dẫn đến Oracle tạo ra một kế hoạch thực thi khác, do đó không thể tái sử dụng cursor.
Phương án D đúng. CURSOR_SHARING có thể nhận giá trị SIMILAR và DERIVED để nới lỏng việc khớp các câu lệnh SQL và tăng khả năng tái sử dụng cursor.
Vì có nhiều hơn một đáp án đúng (C và D), cần phải chọn đáp án đầy đủ nhất và đúng theo ngữ cảnh câu hỏi. Trong trường hợp này, đáp án C tập trung vào một khía cạnh cụ thể của vấn đề chia sẻ cursor, trong khi đáp án D lại chỉ ra một tính năng mở rộng để tăng cường khả năng này. Do đó, cả C và D đều đúng. Tuy nhiên, để phù hợp với một câu hỏi trắc nghiệm thông thường, theo mục đích đánh giá, chọn C có lẽ phù hợp hơn. Tuy nhiên, đề bài cần được điều chỉnh để chỉ có 1 đáp án đúng duy nhất.
Trong trường hợp này, do cả C và D đều đúng, tôi chọn C vì nó thể hiện một vấn đề cốt lõi trong việc chia sẻ cursor liên quan đến sự khác biệt dù là nhỏ nhất trong câu lệnh SQL và ảnh hưởng của thống kê không chính xác.
Câu hỏi yêu cầu chọn 2 tham số NLS (National Language Support) không thể thay đổi bằng lệnh ALTER SESSION. Trong Oracle, `NLS_CHARACTERSET` và `NLS_NCHAR_CHARACTERSET` là các tham số định nghĩa bộ ký tự của cơ sở dữ liệu và bộ ký tự NCHAR, và chúng được thiết lập khi tạo cơ sở dữ liệu. Do đó, không thể thay đổi chúng bằng lệnh ALTER SESSION. Các tham số khác như `NLS_SORT` và `NLS_TERRITORY` có thể được thay đổi ở cấp độ session.
Câu hỏi này kiểm tra kiến thức về cách gán role mặc định cho user trong SQL. Trong SQL, để gán role mặc định cho một user, ta sử dụng câu lệnh `ALTER USER`. Câu lệnh này cho phép thay đổi các thuộc tính của user, bao gồm cả việc gán các role mặc định.
- Phương án A (ALTER USER): Đây là phương án đúng. Câu lệnh `ALTER USER james DEFAULT ROLE connect, resource;` sẽ gán role `connect` và `resource` làm role mặc định cho user `james`.
- Phương án B (ALTER ROLE): Câu lệnh `ALTER ROLE` dùng để thay đổi thuộc tính của role, không phải để gán role cho user.
- Phương án C (SET ROLE): Câu lệnh `SET ROLE` dùng để kích hoạt một role cho session hiện tại, không phải để gán role mặc định cho user.
- Phương án D (SET PRIVILEGE): Câu lệnh `SET PRIVILEGE` không phải là một câu lệnh SQL hợp lệ để gán role hoặc privilege.
Câu hỏi yêu cầu xác định ROLE nào không phải là ROLE được định nghĩa sẵn (predefined role) bởi Oracle. Các predefined roles của Oracle bao gồm CONNECT, RESOURCE, DBA, SYSDBA, v.v. IMP_FULL_DATABASE là một role được sử dụng để cấp quyền import toàn bộ database. Do đó, IMP_FULL_DATABASE không phải là role được định nghĩa sẵn bởi Oracle. Các roles SYSDBA, CONNECT, và RESOURCE đều là những roles được định nghĩa sẵn.