Db2-databases

提供:Dev Guides
移動先:案内検索

DB2-データベース

この章では、関連する構文を使用したデータベースの作成、アクティブ化、非アクティブ化について説明します。

データベースのアーキテクチャ

データベースアーキテクチャ

データベースは、データベース操作を効率的に処理するために連携して動作するテーブル、スキーマ、バッファプール、ログ、ストレージグループ、およびテーブルスペースの集合です。

データベースディレクトリ

データベースディレクトリは、データベースの整理されたリポジトリです。 データベースを作成すると、デフォルトのストレージデバイス、構成ファイル、一時テーブルリストなどの詳細など、データベースに関するすべての詳細がデータベースディレクトリに保存されます。

パーティショングローバルディレクトリは、インスタンスフォルダーに作成されます。 このディレクトリには、データベースに関連するすべてのグローバル情報が含まれています。 このパーティションのグローバルディレクトリには、NODExxxx/SQLyyyという名前が付けられます。ここで、xxxxはデータパーティション番号、yyyはデータベーストークンです。

パーティショングローバルディレクトリに、メンバー固有のディレクトリが作成されます。 このディレクトリには、ローカルデータベース情報が含まれています。 メンバー固有のディレクトリの名前はMEMBERxxxxで、xxxxはメンバー番号です。 DB2 Enterprise Server Edition環境は単一のメンバーで実行され、メンバー固有のディレクトリは1つだけです。 このメンバー固有のディレクトリには、MEMBER0000という一意の名前が付けられます。

パーティション化されたグローバルディレクトリ

ディレクトリの場所:<インスタンス>/NODExxx/SQLxxx

パーティショングローバルディレクトリには、以下に示すデータベース関連ファイルが含まれています。

  • グローバルデッドロックファイルへの書き込みイベント監視ファイル
  • 表スペース情報ファイル[SQLSPCS.1、SQLSPCS.2]
  • ストレージグループ制御ファイル[SQLSGF.1、SQLSGF.2]
  • 一時表スペースコンテナーファイル。 [/storage path//T0000011/C000000.TMP/SQL00002.MEMBER0001.TDA]
  • グローバル構成ファイル[SQLDBCONF]
  • 履歴ファイル[DB2RHIST.ASC、DB2RHIST.BAK、DB2TSCHG.HIS、DB2TSCHG.HIS]
  • ロギング関連ファイル[SQLOGCTL.GLFH.1、SQLOGCTL.GLFH.2]
  • ファイルのロック[SQLINSLK、SQLTMPLK]
  • 自動保管コンテナ

メンバー固有のディレクトリ

ディレクトリの場所:/NODExxxx/SQLxxxx/MEMBER0000

このディレクトリには以下が含まれます。

  • データベースに関連付けられたオブジェクト
  • バッファプール情報ファイル[SQLBP.1、SQLBP.2]
  • ローカルイベント監視ファイル
  • ロギング関連ファイル[SQLOGCTL.LFH.1、SQLOGCTL.LFH.2、SQLOGMIR.LFH]。
  • ローカル構成ファイル
  • デッドロックイベントモニターファイル。 詳細なデッドロックイベントモニターファイルは、ESEおよびパーティションデータベース環境の場合、カタログノードのデータベースディレクトリに保存されます。

データベース作成

「CREATE DATABASE」コマンドを使用して、インスタンスにデータベースを作成できます。 すべてのデータベースは、インスタンスの作成時に作成されるデフォルトのストレージグループ「IBMSTOGROUP」で作成されます。 DB2では、すべてのデータベーステーブルは「テーブルスペース」に格納され、それぞれのストレージグループを使用します。

データベースの特権はPUBLIC [CREATETAB、BINDADD、CONNECT、IMPLICIT_SCHEMA、およびSELECT]として自動的に設定されますが、RESTRICTIVEオプションが存在する場合、特権はPUBLICとして付与されません。

非制限的なデータベースの作成

このコマンドは、制限のないデータベースを作成するために使用されます。

構文:[新しいデータベースを作成します。 「database_name」は、作成する新しいデータベース名を示します。]

db2 create database <database name>

:[名前 'one’の新しい非制限的なデータベースを作成するには]

db2 create database one

出力:

DB20000I The CREATE DATABASE command completed successfully.

制限的なデータベースの作成

このコマンドを呼び出すと、制限データベースが作成されます。

構文:[以下の構文では、「db_name」はデータベース名を示します。]

db2 create database <db_name> restrictive

:[「two」という名前の新しい制限付きデータベースを作成するには]

db2 create database two restrictive

異なるユーザー定義の場所でデータベースを作成する

別のパスにデフォルトのストレージグループ「IBMSTOGROUP」でデータベースを作成します。 以前は、特定の場所にデータベースを保存または作成するために、ユーザー定義の場所なしでコマンド「データベースの作成」を呼び出しました。 ユーザー定義のデータベースの場所を使用してデータベースを作成するには、次の手順に従います。

構文:[以下の構文では、「db_name」は「データベース名」を示し、「data_location」はデータをフォルダーに保存する場所を示し、「db_path_location」はドライバーの「data_location」の場所を示します。

db2 create database '<db_name>' on '<data location>' dbpath on '<db_path_location>'

:[データが「data1」に保存され、このフォルダーが「dbpath1」に保存される「four」という名前のデータベースを作成するには]

db2 create database four on '/data1' dbpath on '/dbpath1'

ローカルまたはシステムデータベースディレクトリファイルの表示

このコマンドを実行して、現在のインスタンスで使用可能なディレクトリのリストを表示します。

構文:

db2 list database directory

例:

db2 list database directory

出力:

 System Database Directory
 Number of entries in the directory = 6
 Database 1 entry:
 Database alias                       = FOUR
 Database name                        = FOUR
 Local database directory             =
/home/db2inst4/Desktop/dbpath
 Database release level               = f.00
 Comment                              =
 Directory entry type                 = Indirect
 Catalog database partition number    = 0
 Alternate server hostname            =
 Alternate server port number         =
Database 2 entry:
Database alias                       = SIX
Database name                        = SIX
Local database directory             =/home/db2inst4
Database release level               = f.00
Comment                              =
Directory entry type                 = Indirect
Catalog database partition number    = 0
Alternate server hostname            =
Alternate server port number         =

データベースのアクティブ化

このコマンドは、特定のデータベースに必要なすべてのサービスを起動して、データベースをアプリケーションで使用できるようにします。

構文:[「db_name」はデータベース名を示します]

db2 activate db <db_name>

:[データベース 'one’のアクティブ化]

db2 activate db one

データベースの非アクティブ化

このコマンドを使用すると、データベースサービスを停止できます。

構文:

db2 deactivate db <db_name>

:[データベース「one」を非アクティブ化するには]

db2 deactivate db one

データベースへの接続

データベースを作成して使用するには、データベースに接続または起動する必要があります。

構文:

db2 connect to <database name>

:[データベース1を現在のCLIに接続するには]

db2 connect to one

出力:

 Database Connection Information
 Database server        = DB2/LINUXX8664 10.1.0
 SQL authorization ID   = DB2INST4
 Local database alias   = ONE

データベースが制限されているかどうかを確認する

このデータベースが制限されているかどうかを確認するための構文は次のとおりです。

構文:[次の構文では、「db」はデータベースを示し、「cfg」は構成を示し、「db_name」はデータベース名を示します]

db2 get db cfg for <db_name> | grep -i restrict

:['one’データベースが制限されているかどうかを確認するには]

db2 get db cfg for one | grep -i restrict

出力:

Restrict access                       = NO

データベースマネージャーとデータベースの構成

インスタンス構成(データベースマネージャー構成)は「db2system」という名前のファイルに保存され、データベース関連の構成は「SQLDBCON」という名前のファイルに保存されます。 これらのファイルは直接編集できません。 これらのファイルは、APIを呼び出すツールを使用して編集できます。 コマンドラインプロセッサを使用すると、これらのコマンドを使用できます。

データベースマネージャーの構成パラメーター

構文:[インスタンスデータベースマネージャーの情報を取得するには]

db2 get database manager configuration
db2 get dbm cfg

構文:[インスタンスデータベースマネージャーを更新するには]

db2 update database manager configuration
db2 update dbm cfg

構文:[以前の構成をリセットするには]

db2 reset database manager configuration
db2 reset dbm cfg

データベース構成パラメーター

構文:[データベースの情報を取得するには]

db2 get database configuration
db2 get db cfg

構文:[データベース構成を更新するには]

db2 update database configuration
db2 update db cfg

構文:[データベース構成で以前に構成された値をリセットするには

db2 reset database configuration
db2 reset db cfg

構文:[現在のアクティブデータベースのサイズを確認するには]

db2 "call get_dbsize_info(?,?,?,-1)"

:[現在アクティブ化されているデータベースのサイズを確認するには]

db2 "call get_dbsize_info(?,?,?,-1)"

出力:

Value of output parameters
--------------------------
Parameter Name  : SNAPSHOTTIMESTAMP
Parameter Value : 2014-07-02-10.27.15.556775
Parameter Name  : DATABASESIZE
Parameter Value : 105795584
Parameter Name  : DATABASECAPACITY
Parameter Value : 396784705536
Return Status = 0

データベースに必要なスペースの見積もり

データベースのサイズを推定するには、次の要因の寄与を考慮する必要があります。

  • システムカタログ表
  • ユーザーテーブルデータ
  • ロングフィールドデータ
  • ラージオブジェクト(LOB)データ
  • インデックススペース
  • 一時的な作業スペース
  • XMLデータ
  • ログファイルスペース
  • ローカルデータベースディレクトリ
  • システムファイル

データベース権限の確認

以下の構文を使用して、非制限データベース上のPUBLICに付与されているデータベース権限を確認できます。

  • ステップ1 *:インスタンスの認証ユーザーIDとパスワードを使用してデータベースに接続します。

構文:[ユーザー名とパスワードでデータベースに接続するには]

db2 connect to <db_name> user <userid> using <password>

:[ユーザーID「db2inst4」およびパスワード「db2inst4」で「1」個のデータベースを接続するには]

db2 connect to one user db2inst4 using db2inst4

出力:

 Database Connection Information
 Database server        = DB2/LINUXX8664 10.1.0
 SQL authorization ID   = DB2INST4
 Local database alias   = ONE
  • ステップ2 *:データベースの権限を確認します。

構文:[以下の構文は、現在のデータベースの権限サービスの結果を示しています]

db2 "select substr(authority,1,25) as authority, d_user, d_group,
d_public, role_user, role_group, role_public,d_role from table(
sysproc.auth_list_authorities_for_authid ('public','g'))as t
order by authority"

例:

db2 "select substr(authority,1,25) as authority, d_user, d_group,
d_public, role_user, role_group, role_public,d_role from table(
sysproc.auth_list_authorities_for_authid ('PUBLIC','G'))as t
order by authority"
  • 出力: *
AUTHORITY                 D_USER D_GROUP D_PUBLIC ROLE_USER ROLE_GROUP ROLE_PUBLIC D_ROLE
------------------------- ------ ------- -------- --------- ---------- ----------- ------
ACCESSCTRL               *  *N       *  *N          *
BINDADD ** Y ** N *
CONNECT                  *  *Y       *  *N          *
CREATETAB ** Y ** N *
CREATE_EXTERNAL_ROUTINE  *  *N       *  *N          *
CREATE_NOT_FENCED_ROUTINE ** N ** N *
CREATE_SECURE_OBJECT     *  *N       *  *N          *
DATAACCESS ** N ** N *
DBADM                    *  *N       *  *N          *
EXPLAIN ** N ** N *
IMPLICIT_SCHEMA          *  *Y       *  *N          *
LOAD ** N ** N *
QUIESCE_CONNECT          *  *N       *  *N          *
SECADM ** N ** N *
SQLADM                   *  *N       *  *N          *
SYSADM **  **  **  *
SYSCTRL                  *  **  **  **
SYSMAINT **  **  **  *
SYSMON                   *  **  **  **
WLMADM ** N ** N           *
20 record(s) selected.

データベースの削除

Dropコマンドを使用して、インスタンスデータベースディレクトリからデータベースを削除できます。 このコマンドは、すべてのオブジェクト、テーブル、スペース、コンテナ、および関連ファイルを削除できます。

構文:[データベースをインスタンスから削除するには]

db2 drop database <db_name>

:[インスタンスから「6」データベースを削除するには]

db2  drop database six

出力:

DB20000I The DROP DATABASE command completed successfully