Oracle Database 18c をサポート
2018/11/29付でリリースされました、SI Object Browser for Oracle 18(以下OB)は、Oracleの最新バージョンであるOracle Database 18c(以下Oracle 18c)を動作環境に加えました。OBでは、Oracle 18cで新規追加されたいくつかの機能を実装しております。本日はその中の一つである「スキーマ限定アカウント」についてご紹介していきます。
Oracleのスキーマ、その他DBのスキーマ
テーブル、ビューなどのデータベースオブジェクトは、スキーマごとにまとめることが可能です。SQL ServerやPostgreSQLなどではスキーマを単独で作成できますが、Oracleは「ログインユーザー≒スキーマ」となり、ログインユーザーはスキーマとしても使用されます。つまり、他のデータベースのようにオブジェクトグループとしてのみスキーマを使用したい場合は、アカウントをロックしてログインできなくするという、なんとも手間のかかる作業が必要でした。
スキーマ限定アカウント
Oracle 18cより実装された「スキーマ限定アカウント」は、その名の通りスキーマ機能のみのアカウント(ユーザー)を作成する機能です。ユーザーとスキーマが一体であることは変わりありませんが、そのログイン機能を制限することによって他のデータベースと同じようなスキーマの扱いができるようになります。
では、早速OBでの作成方法を見ていきましょう。上部ツールバーのユーザーアイコン からユーザー情報へ遷移し、新規ボタンを押します。
ユーザーを新規作成する
展開されたユーザー画面で、「スキーマ限定アカウント」にチェックを入れるだけで作成可能です。
ユーザー作成画面
生成されるSQLを見てみましょう。スキーマ限定となる「NO AUTHENTICATION」が付加されています。なお、スキーマ限定アカウントにはパスワードがないため作成画面でパスワードを入力していても無視されます。
生成されたSQL
このスキーマは通常通りテーブルなどのオブジェクトで利用できます。
スキーマ限定アカウントを指定
生成されたテーブルのCREATE文にも、当然ではありますが当スキーマが使用されます。
スキーマ限定アカウントが使用されたCREATE文
作成されたスキーマ限定アカウントでログインを試みると、「ORA-01017:ユーザー名/パスワードが無効です。~」が発生します。
ORA-01017
アカウントロックを設定したユーザーでログインを試みた場合は、「ORA-28000:アカウントがロックされています。」となり、明確に区別されていることがわかります。
ORA-28000
スキーマ限定アカウント設定を解除するには、パスワードを新たに設定します。OBで操作する場合はスキーマ限定アカウントのチェックを外し、パスワード欄に新しいパスワードを入力、作成すればOKです。
[RELATED_POSTS]
スキーマ限定アカウント まとめ
いかがでしたか。Oracleでも、ほかのデータベースと同じくログインユーザーとスキーマを切り離した管理が可能になりました。もちろん今までのようにアカウントロック設定するなど擬似的に表現しても問題はありませんが、不必要なログイン機能を持たせてからアカウントロック処理をするのも気持ちが悪いですし、設定もこちらのほうが簡単です。せっかく追加された新機能、使ってみてはいかがでしょうか。
- カテゴリ:
- キーワード: