Hôm nay, tôi đã xem xét khả năng truy vấn thời gian đăng nhập cuối cùng của người dùng. Trước 12c, người ta phải tạo trình kích hoạt đăng nhập để lưu trữ thời gian đăng nhập trong bảng hoặc thiết lập kiểm tra và kiểm tra các lần đăng nhập thành công. Giờ đây, theo mặc định, Oracle 12c bao gồm một cách để xác định lần cuối cùng ai đó đăng nhập.
SQL> show user USER is "SYS" SQL> select username,last_login from dba_users 2 where last_login is not null; USERNAME LAST_LOGIN ------------------------------ ---------------------------------------- SYSTEM 30-JUL-13 01.57.19.000000000 PM -05:00 PEASLAND 31-JUL-13 02.15.38.000000000 PM -05:00
Như bạn có thể thấy, tôi có hai người dùng đã đăng nhập vào cơ sở dữ liệu và ngày / giờ họ đăng nhập lần cuối. Một điều tôi nhận thấy là mặc dù tôi được kết nối với tư cách là người dùng SYS, cột này không được điền cho SYS.
Trong khi điều tra chế độ xem DBA_USERS, tôi thấy rằng ngoài cột LAST_LOGIN, còn có 3 cột mới khác cho chế độ xem Từ điển Dữ liệu, chỉ một trong số đó tôi đã đọc trước đây, ORACLE_MAINTAINED. Cột ORACLE_MAINTAINED sẽ chỉ ra giá trị Y nếu người dùng được tạo bởi Oracle và các tập lệnh khác nhau của nó. Hiện trong cơ sở dữ liệu thử nghiệm của tôi, tôi chỉ có một người dùng như vậy.
SQL> select username from dba_users where oracle_maintained<>'Y'; USERNAME ------------------------------ PEASLANDMột cột mới mà tôi chưa từng đọc trước đây là người dùng PROXY_ONLY_CONNECT. Chế độ xem này cho phép bạn xem liệu người dùng có cho phép kết nối proxy hay không. Trong trường hợp bạn không quen với các kết nối proxy, điều này có thể giúp giải thích. Để biết thêm thông tin, hãy truy cập Hướng dẫn Tham chiếu SQL cho ALTER USER và tìm kiếm “proxy_clause”. Cột mới cuối cùng trong DBA_USERS là COMMON. Tôi không biết cột này dùng để làm gì nên điểm dừng đầu tiên của tôi là Hướng dẫn Tham khảo cho DBA_USERS. Mô tả cho cột là "Cho biết liệu một người dùng nhất định có phổ biến hay không". Ok…. Điều đó có nghĩa là gì? Điều gì xác định một người dùng phổ biến? Nếu tôi truy vấn cơ sở dữ liệu thử nghiệm của mình, tôi nhận được kết quả sau:
SQL> select username,common,oracle_maintained from dba_users; USERNAME COM O ------------------------------ --- - PEASLAND NO N AUDSYS YES Y GSMUSER YES Y SYSKM YES Y XS$NULL YES Y OJVMSYS YES Y ORACLE_OCM YES Y SYSDG YES Y DIP YES Y SYSBACKUP YES Y GSMCATUSER YES Y GSMADMIN_INTERNAL YES Y APPQOSSYS YES Y XDB YES Y WMSYS YES Y DBSNMP YES Y ANONYMOUS YES Y SYS YES Y SYSTEM YES Y OUTLN YES YVậy liệu một người dùng “thông thường” có được Oracle duy trì không? Nếu vậy, cột COMMON và ORACLE_MAINTAINED có thừa không? Tôi nghi ngờ rằng Oracle sẽ bao gồm hai cột có nghĩa giống nhau. Vì vậy, tôi đã bắt tay vào tìm kiếm để tìm ra câu trả lời… Trong Hướng dẫn dành cho quản trị viên, có một phần nhỏ có tiêu đề “Người dùng phổ biến và Người dùng cục bộ”. Người dùng chung là một người dùng chung cho cơ sở dữ liệu vùng chứa và tất cả cơ sở dữ liệu có thể cắm thêm hiện tại và trong tương lai trong kiến trúc cơ sở dữ liệu nhiều người thuê mới của Oracle 12c. Điều đó có ý nghĩa ngay bây giờ.