Днес разглеждах възможността за запитване на времето за последно влизане на потребителя. Преди 12c трябваше да се създаде тригер за влизане, за да се съхранява времето за влизане в таблица или да се настрои одит и одит на успешни влизания. Сега Oracle 12c включва по подразбиране начин за определяне на последния път, когато някой е влязъл.
SQL> show userUSER е "SYS"SQL> изберете потребителско име,last_login от dba_users2 където last_login не е null;USERNAME LAST_LOGIN----------------------- ------- ----------------------------------------- СИСТЕМА 30- 13 ЮЛ 01.57.19.000000000 PM -05:00PEASLAND 31-ЮЛ-13 02.15.38.000000000 PM -05:00
Както можете да видите, имам двама потребители, които са влезли в базата данни и датата/часа на последното им влизане. Едно нещо, което забелязах е, че въпреки че съм свързан като потребител на SYS, тази колона не се попълва за SYS.
Докато изследвам изгледа DBA_USERS, виждам, че в допълнение към колоната LAST_LOGIN, има и 3 други нови колони към изгледа на речника на данните, само за една от които бях чел по-рано, ORACLE_MAINTAINED. Колоната ORACLE_MAINTAINED ще посочи Y стойност, ако потребителят е създаден от Oracle и неговите различни скриптове. В момента в моята тестова база данни имам само един такъв потребител.
SQL> изберете потребителско име от dba_users, където oracle_maintained<>'Y';USERNAME------------------------------PEASLANDпредварително> Една нова колона, за която не бях чел преди, беше потребителят PROXY_ONLY_CONNECT. Този изглед ви позволява да видите дали даден потребител ще разреши прокси връзки. В случай, че не сте запознати с прокси връзките, това може да ви помогне да го обясните. За повече информация посетете Справочното ръководство за SQL за ALTER USER и потърсете „proxy_clause“. Последната нова колона в DBA_USERS е COMMON. Нямах представа за какво е тази колона, така че първата ми спирка беше Справочното ръководство за DBA_USERS. Описанието на колоната е „Показва дали даден потребител е общ“. Добре...какво означава това? Какво определя обикновения потребител? Ако направя заявка за моята тестова база данни, получавам следния изход:SQL> изберете потребителско име,общ,oracle_maintained от dba_users;USERNAME COM O------------------- ---------- --- -PEASLAND NO NAUDSYS YES YGSMUSER YES YSYSKM YES YXS$NULL YES YOJVMSYS YES YORACLE_OCM YES YSYSDG YES YDIP YES YSYSBACKUP YES YGSMCATUSER YES YGSMADMIN_INTERNAL YES YAPPQOSSYS YES YXDB YES YWMSYS YES YDBSNMP YES YANONYMOUS YES YSYS ДА СИСТЕМА ДА МЛАДИ Така че поддържа ли се „обикновен“ потребител, който се поддържа от Oracle? Ако е така, колоните COMMON и ORACLE_MAINTAINED не са ли излишни? Съмнявам се, че Oracle ще включва две колони, които означават едно и също нещо. Така че започнах търсене, за да намеря отговора... В ръководството на администратора има малък раздел, озаглавен „Общи потребители и местни потребители“. Общият потребител е този, който е общ за контейнерна база данни и всички съществуващи и бъдещи включващи се бази данни в новата архитектура на база данни с много наематели на Oracle 12c. Това вече има смисъл.