Oracle 18c 新機能 スキーマ限定アカウントを作成する

 2018.12.25  株式会社システムインテグレータ

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での作成方法を見ていきましょう。上部ツールバーのユーザーアイコン からユーザー情報へ遷移し、新規ボタンを押します。

Oracle 18c 新機能 スキーマ限定アカウントを作成する 1
ユーザーを新規作成する

展開されたユーザー画面で、「スキーマ限定アカウント」にチェックを入れるだけで作成可能です。

Oracle 18c 新機能 スキーマ限定アカウントを作成する 2
ユーザー作成画面

生成されるSQLを見てみましょう。スキーマ限定となる「NO AUTHENTICATION」が付加されています。なお、スキーマ限定アカウントにはパスワードがないため作成画面でパスワードを入力していても無視されます。

Oracle 18c 新機能 スキーマ限定アカウントを作成する 3
生成されたSQL

このスキーマは通常通りテーブルなどのオブジェクトで利用できます。

Oracle 18c 新機能 スキーマ限定アカウントを作成する 4
スキーマ限定アカウントを指定

生成されたテーブルのCREATE文にも、当然ではありますが当スキーマが使用されます。

Oracle 18c 新機能 スキーマ限定アカウントを作成する 5
スキーマ限定アカウントが使用されたCREATE文

作成されたスキーマ限定アカウントでログインを試みると、「ORA-01017:ユーザー名/パスワードが無効です。~」が発生します。

Oracle 18c 新機能 スキーマ限定アカウントを作成する 6
ORA-01017

アカウントロックを設定したユーザーでログインを試みた場合は、「ORA-28000:アカウントがロックされています。」となり、明確に区別されていることがわかります。

Oracle 18c 新機能 スキーマ限定アカウントを作成する 7
ORA-28000

スキーマ限定アカウント設定を解除するには、パスワードを新たに設定します。OBで操作する場合はスキーマ限定アカウントのチェックを外し、パスワード欄に新しいパスワードを入力、作成すればOKです。

[RELATED_POSTS]

スキーマ限定アカウント まとめ

いかがでしたか。Oracleでも、ほかのデータベースと同じくログインユーザーとスキーマを切り離した管理が可能になりました。もちろん今までのようにアカウントロック設定するなど擬似的に表現しても問題はありませんが、不必要なログイン機能を持たせてからアカウントロック処理をするのも気持ちが悪いですし、設定もこちらのほうが簡単です。せっかく追加された新機能、使ってみてはいかがでしょうか。


RELATED POST関連記事


RECENT POST「【OBトコ】DBの勉強」の最新記事


【OBトコ】DBの勉強

データベースのスキーマを理解する

【OBトコ】DBの勉強

データベース別インスタンスの関係性

【OBトコ】DBの勉強

ビューとマテリアライズド・ビューの違いを理解する

【OBトコ】DBの勉強

Oracle 表領域を拡張してみよう

Oracle 18c 新機能 スキーマ限定アカウントを作成する
新規CTA