今日、私はユーザーの最終ログイン時刻を照会する機能を検討していました。 12cより前は、ログオントリガーを作成してログオン時間をテーブルに保存するか、監査を設定してログインの成功を監査する必要がありました。現在、Oracle 12cには、デフォルトで、誰かが最後にログインした時刻を判別する方法が含まれています。
SQL> show userUSER is "SYS" SQL> select username、last_login from dba_users2 where last_login not null; USERNAME LAST_LOGIN ----------------------- -----------------------------------------------システム30- JUL-13 01.57.19.000000000 PM -05:00PEASLAND 31-JUL-13 02.15.38.000000000 PM -05:00
ご覧のとおり、データベースにログインした2人のユーザーと、最後にログインした日時があります。私が気付いたのは、SYSユーザーとして接続しているにもかかわらず、この列にSYSが入力されていないことです。
DBA_USERSビューを調べていると、LAST_LOGIN列に加えて、データディクショナリビューに3つの新しい列があり、そのうちの1つだけがORACLE_MAINTAINEDであることがわかります。ユーザーがOracleとそのさまざまなスクリプトによって作成された場合、ORACLE_MAINTAINED列はY値を示します。現在、私のテストデータベースには、そのようなユーザーは1人しかいません。
SQL> oracle_maintained <>'Y'; USERNAME ------------------------------PEASLAND<であるdba_usersからユーザー名を選択します/ pre> 以前に読んだことがなかった新しい列の1つは、PROXY_ONLY_CONNECTユーザーでした。このビューでは、ユーザーがプロキシ接続を許可するかどうかを確認できます。プロキシ接続に慣れていない場合は、これが説明に役立つ場合があります。詳細については、ALTER USERのSQLリファレンスガイドにアクセスして、「proxy_clause」を検索してください。DBA_USERSの最後の新しい列はCOMMONです。この列の目的がわからなかったので、最初に立ち寄ったのはDBA_USERSのリファレンスガイドでした。列の説明は、「特定のユーザーが一般的であるかどうかを示します」です。わかりました…。それはどういう意味ですか?一般的なユーザーを定義するものは何ですか?テストデータベースにクエリを実行すると、次の出力が得られます。SQL> select username、common、oracle_maintained from 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 YES YSYSTEM YES YOUTLN YES Yでは、オラクルが管理している「一般的な」ユーザーですか?その場合、COMMON列とORACLE_MAINTAINED列は冗長ではありませんか? Oracleに同じことを意味する2つの列が含まれるとは思えません。そこで、答えを見つけるために検索を開始しました…管理者ガイドには、「一般ユーザーとローカルユーザー」というタイトルの小さなセクションがあります。 Commonユーザーは、Oracle 12cの新しいマルチテナントデータベースアーキテクチャのコンテナデータベースと、既存および将来のすべてのプラガブルデータベースに共通のユーザーです。それは今では理にかなっています。