OpenText Analytics Database 旧Vertica

技術情報サイト

Analytics Database

データベースユーザーの接続を制御する方法(8.0新機能)

公開日:
更新日:
基本操作
新バージョン/機能
#セッション

はじめに

Vertica8.0より、データベースユーザ単位で以下の制御ができるようになりました。

・接続セッションの最大数を設定
・接続セッションのアイドルタイムアウト時間を設定
・接続セッションを切断

本記事では、上記機能の利用方法についてご紹介します。

接続セッションの最大数を設定する

ユーザ毎のセッション最大数は、CREATE USER文やALTER USER文のオプションであるMAXCONNECTIONSにて設定するこができます。

構文
{ CREATE | ALTER } USER 'ユーザ名'
   MAXCONNECTIONS {'セッション数' | NONE} ON {NODE | DATABASE};

NONE:無制限(デフォルト)
ON NODE:クラスタ内の各ノードに適用
DATABASE:データベース全体に適用
実行例

u1という新規ユーザの最大接続数をデータベース全体で1に設定する

dbadmin=> CREATE USER u1 MAXCONNECTIONS 1 ON DATABASE ;
CREATE USER

MAXCONNECTIONSに設定した値を超えるセッション数で接続しようとしたときのエラー例

dbadmin=> \c - u1
FATAL 7470:  New session rejected because connection limit of 1 on database already met for u1
Previous connection kept

接続セッションのアイドルタイムアウト時間を設定する

ユーザ毎の接続セッションのアイドルタイムアウト時間は、CREATE USER文やALTER USER文のオプションであるIDLESESSIONTIMEOUTにて設定するこができます。

構文
{ CREATE | ALTER } USER 'ユーザ名'
   IDLESESSIONTIMEOUT {'タイムアウト時間' | NONE};

NONE:無制限(デフォルト)
タイムアウト時間:秒(seconds),分(minutes), 時間(hours), 日(days), 月(months), 年(year)で指定
実行例

u2という新規ユーザのセッションアイドルタイムアウトとなる時間を30秒に設定する

dbadmin=> CREATE USER u2 IDLESESSIONTIMEOUT '30 seconds';
CREATE USER

IDLESESSIONTIMEOUTに設定した値を超えるアイドルタイムが経過した後にクエリを実行しようとしたときのエラー例

u2=> SELECT * from test;
FATAL 7540:  Session idle for more than 30000 ms. Session Timed Out!
server closed the connection unexpectedly
        This probably means the server terminated abnormally
        before or while processing the request.
The connection to the server was lost. Attempting reset: Succeeded.

接続セッションを切断する

CLOSE_USER_SESSIONS関数は特定ユーザの接続セッションを切断できます。

構文
SELECT CLOSE_USER_SESSIONS ( 'ユーザ名' );
実行例

u1ユーザのセッションをすべて切断する

dbadmin=> SELECT CLOSE_USER_SESSIONS('u1');
                             CLOSE_USER_SESSIONS
-----------------------------------------------------------------------------
 Close all sessions for user u1 sent. Check v_monitor.sessions for progress.
(1 row)

参考情報

Managing Client Connections
https://my.vertica.com/docs/9.2.x/HTML/index.htm#Authoring/AdministratorsGuide/ManagingClientConnections/OverviewClientConnections.htm

CREATE USER
https://my.vertica.com/docs/9.2.x/HTML/index.htm#Authoring/SQLReferenceManual/Statements/CREATEUSER.htm

ALTER USER
https://www.vertica.com/docs/9.2.x/HTML/Content/Authoring/SQLReferenceManual/Statements/ALTERUSER.htm

CLOSE_USER_SESSION
https://www.vertica.com/docs/9.2.x/HTML/Content/Authoring/SQLReferenceManual/Functions/VerticaFunctions/CLOSE_USER_SESSIONS.htm

検証バージョンについて

この記事の内容はVertica 9.2で確認しています。

更新履歴

2019/04/15 検証バージョンを9.2に変更
2016/12/11 本記事を公開