スリムになったCONNECTロール
Oracle Database 10g Release 2から、代表的なロールであるCONNECTロールに含まれる権限が変更されました。どのように変更されたか、データベースのディクショナリ情報を確認してみましょう。 10g Release 1以前では、以下のように多くの権限がCONNECTロールに含まれていました。
SQL> CONNECT / AS SYSDBA 接続されました。 SQL> COLUMN PRIVILEGE FORMAT A30 SQL> SQL> SELECT PRIVILEGE 2 FROM DBA_SYS_PRIVS 3 WHERE GRANTEE = 'CONNECT' 4 ORDER BY PRIVILEGE; PRIVILEGE ------------------------------ ALTER SESSION CREATE CLUSTER CREATE DATABASE LINK CREATE SEQUENCE CREATE SESSION CREATE SYNONYM CREATE TABLE CREATE VIEW
ところが、10g Release 2以降のCONNECTロールにはCREATE SESSION権限しかありません。
SQL> CONNECT / AS SYSDBA 接続されました。 SQL> COLUMN PRIVILEGE FORMAT A30 SQL> SQL> SELECT PRIVILEGE 2 FROM DBA_SYS_PRIVS 3 WHERE GRANTEE = 'CONNECT' 4 ORDER BY PRIVILEGE; PRIVILEGE ------------------------------ CREATE SESSION
CONNECTロールは、Oracle Databaseで新規アカウントを用意する際の最低限のロールとして、RESOURCEロールとともに頻繁に使用されてきました。CONNECTロールはその名前が示すとおりデータベース接続のために作られたロールですが、10g Release 1以前では初期に付与するロールとして便利なように多くの権限を含んでいました。
しかし、本来の目的であるデータベースの接続に関係のない権限も含まれていることは、セキュリティ上好ましくありません。そういった理由から、CONNECTロールは10g Release 2からCREATE SESSION権限のみを含むロールに変更されました。既存のOracle Databaseを10g Release 2以降にアップグレードすると、CONNECTロールはCREATE SESSION権限のみを含むように自動的に変更されます。
既存アプリケーションにはオブジェクトがすでに存在しており新しいオブジェクト(表、ビュー、順序、シノニム、クラスタ、データベース・リンク)を作成する必要はないため、アップグレードによる影響はほとんどないと思ってよいでしょう。しかし、オブジェクトを新たに作成したりALTER SESSIONコマンドを動的に発行するようなアプリケーションでは、権限が不十分なためにエラーとなる場合があります。CREATE SESSION権限以外にも必要な権限がある場合は、直接または別のロールを介して付与する必要があります。
◆◆◆
第7回目となる今回は、前バージョンであるOracle Database 10gでの変更点について解説しました。次回は、Oracle Database 11gから新たに追加された初期化パラメータについて解説する予定です。
それでは、最後に津島博士のワンポイントアドバイスです。津島博士、よろしくお願いいたします。
みなさんこんにちは。日本オラクルの津島と申します。
今回は、”今は昔”(!?)となった10gからの変更点について白砂さんに紹介いただきました。
取り上げられた二つのトピックについては、より詳しい情報を製品マニュアルで確認することができます。
(1) SHARED_POOL_SIZEの内部オーバーヘッド
Oracle Databaseアップグレード・ガイド 11g リリース2(11.2)
「SHARED_POOL_SIZEの動作変更」
(3) CONNECTロール
「非推奨のCONNECTロール」
アーキテクチャや周辺情報の理解度は、エンジニアスキルの物差しになりますので、マニュアルを読むことは非常に重要です。とはいえ、Oracle Databaseのマニュアルも多岐にわたるので、「DBAに必要なスキルを身につけるための3冊」「ここぞというときに手元に置いておきたい3冊」をそれぞれピックアップしてみました。一度は目を通しておくと、いざというときに役に立つはずです。
Oracleマニュアル(11gR2)の読み方~DB技術者、必読・必携のマニュアルはコレだ!
最後は、(2) GROUP BYの結果についてです。これはOracle Database 10gがリリースされた頃、ちょくちょく話題になりました。
皆様は”暗黙ソート”という言葉をお聞きになったことはありますか?おそらく「SQL入門」といったコースで習った「はず」です。その名の通り、特に指定していないけれどもソートされている状態を意味します。
Oracle Databaseに限らず、暗黙ソートには頼らずにGROUP BY句やDISTICT句を使用する場合は”明示的に”ソート順序を指定することが、SQLプログラミングの基本中の基本です。
「マニュアルを読む」、「正しいSQLを書く」、基本って大事ですよね。それでは、次回もお楽しみに。
◆◆◆
【津島博士プロフィール】
長年に渡りデータベースの構築やパフォーマンスチューニングなどに従事し、最近では若手エンジニアの育成および大規模データベース案件などの支援に従事。
「津島博士のパフォーマンス講座」を連載中です。
【関連情報】「好奇心が、エンジニア人生を豊かにする。」