Qui Truong

Ngày Đăng:

02/04/2023 09:38

Ngày Cập Nhật:

02/04/2023 09:39

Tác giả: Qui Truong
Ngày đăng: 02/04/2023 09:38

Giới thiệu Data Dictionary trong Oracle Database

Oracle Data Dictionary là một loại siêu dữ liệu(Metadata) của cơ sở dữ liệu và chứa tên và thuộc tính của tất cả các đối tượng trong cơ sở dữ liệu. Việc tạo hoặc sửa đổi bất kỳ đối tượng nào đều sẽ được cập nhật vào Data Dictionary của Oracle để phản ánh những thay đổi đó.

Thông tin này lưu trữ trong các bảng gốc(base table) và được bảo trì bởi máy chủ cơ sở dữ liệu Oracle, bạn có thể truy cập vào các bảng này thông qua việc sử dụng các view được định nghĩa trước đó thay vì đọc trực tiếp các bảng này.


Data Dictionary:

  • Được sử dụng bởi máy chủ cơ sở dữ liệu Oracle để tìm thông tin về Users, Objects, constraints và storage
  • Được bảo trì bởi máy chủ cơ sở dữ liệu Oracle khi cấu trúc hoặc định nghĩa về một đối tượng nào đó được sửa đổi
  • Luôn có sẵn để sử dụng bởi bất kỳ người dùng nào cũng có thể truy vấn thông tin về cơ sở dữ liệu
  • Thuộc sở hữu của User SYS
  • Không bao giờ được sửa đổi trực tiếp bằng SQL

Lưu ý: View data dictionary “DICTIONARY” (hoặc synonym DICT) chứa các tên và mô tả của các tables và view data dictionay. Sử dụng view DICT_COLUMNS để xem các cột của view và định nghĩa của chúng. Để xem định nghĩa đầy đủ của mỗi view, hãy xem tham khảo Cơ sở dữ liệu Oracle. Có hơn 1000 view tham chiếu đến hàng trăm bảng gốc.

Data Dictionary Views

Oracle database - data dictionary

Các tiền tố của view cho biết dữ liệu (và số lượng dữ liệu đó) mà người dùng được xem là gì. Một view global truy xuất về tất cả mọi thứ chỉ được truy cập bởi người dùng có quyền DBA, sử dụng tiền tố DBA_.


Cấp độ quyền tiếp theo là cấp độ tiền tố ALL_, đại diện cho tất cả các đối tượng mà người dùng truy vấn được cấp quyền xem, cho dù người dùng sở hữu chúng hay không. Ví dụ, nếu USER_A đã được cấp quyền truy cập vào một bảng được sở hữu bởi USER_B, thì USER_A sẽ thấy bảng đó được liệt kê trong bất kỳ ALL_ view nào có liên quan đến tên bảng đó của USER_B.


Tiền tố USER_ đại diện cho phạm vi nhìn thấp nhất. Loại view này chỉ hiển thị các đối tượng mà người dùng truy vấn sở hữu (nghĩa là các đối tượng đó có mặt trong schema của người dùng).


Nói chung, mỗi bộ view là một tập hợp con của bộ view có quyền cao hơn, theo cột và dòng. Không phải tất cả các view trong một bộ view nhất định đều có một view tương ứng trong các bộ view khác. Điều này phụ thuộc vào tính chất của thông tin trong view. Ví dụ, có một view DBA_LOCK, nhưng không có view ALL_LOCK.


Điều này là vì chỉ có DBA mới quan tâm đến dữ liệu về khóa. Hãy chọn bộ view phù hợp để đáp ứng nhu cầu của bạn. Nếu bạn có quyền truy cập vào các view DBA, bạn vẫn có thể truy vấn phiên bản USER của view vì kết quả hiển thị thông tin về các đối tượng mà bạn sở hữu.


Các view DBA_ chỉ có thể được truy vấn bởi người dùng có quyền SYSDBA, SELECT ANY DICTIONARY hoặc SELECT_CATALOG_ROLE.


Không phải tất cả các view từ điển bắt đầu bằng tiền tố DBA_, ALL_ và USER_. Các view hoặc đồng nghĩa với view sau đây là ngoại lệ của điều này:

•AUDIT_ACTIONS
• CAT
• CHANGE_PROPAGATIONS
• CHANGE_PROPAGATION_SETS
• CHANGE_SETS
• CHANGE_SOURCES
• CHANGE_TABLES
• CLIENT_RESULT_CACHE_STATS$
• CLU
• COLS
• COLUMN_PRIVILEGES
• DATABASE_COMPATIBLE_LEVEL
• DBMS_ALERT_INFO
• DBMS_LOCK_ALLOCATED
• DICT
• DICTIONARY
• DICT_COLUMNS
• DUAL
• GLOBAL_NAME
• IND
• INDEX_HISTOGRAM
• INDEX_STATS
• LOGSTDBY_UNSUPPORTED_TABLES
• NLS_DATABASE_PARAMETERS
• NLS_INSTANCE_PARAMETERS
• NLS_SESSION_PARAMETERS
• OBJ
• RECYCLEBIN
• RESOURCE_COST
• ROLE_ROLE_PRIVS
• ROLE_SYS_PRIVS
• ROLE_TAB_PRIVS
• SEQ
• SESSION_PRIVS
• SESSION_ROLES
• SM$VERSION
• SYN
• TABLE_PRIVILEGES
 • TABS

Ví dụ hữu ích về Data Dictionary  trong Oracle Database

Oracle database - data dictionary

Các truy vấn ví dụ trong hình trên trả lời các câu hỏi sau đây:

  1. Tên của các bảng (cùng với tên của tablespace mà chúng nằm trong) đã được tạo ra trong schema của bạn là gì?
  2. Thông tin quan trọng về các chuỗi số trong cơ sở dữ liệu mà bạn có quyền truy cập là gì?
  3. Những người dùng trong cơ sở dữ liệu này hiện đang có thể đăng nhập là ai?
  4. Những cột của DBA_INDEXES view là gì? Điều này cho bạn thấy thông tin bạn có thể xem về tất cả các chỉ mục trong cơ sở dữ liệu. Dưới đây là một phần kết quả của lệnh này:

SQL> DESCRIBE dba_indexes
Name                        Null?                 Type
--------------------  --------             -------------
OWNER                    NOT NULL        VARCHAR2(30)
INDEX_NAME           NOT NULL       VARCHAR2(30)
INDEX_TYPE                                       VARCHAR2(27)
TABLE_OWNER       NOT NULL       VARCHAR2(30)
TABLE_NAME           NOT NULL       VARCHAR2(30)


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]

>