ノンストップデータベース　HiRDB Version 9 構造型データベース機能

解説・手引・文法・操作書

3000-6-361-10

前書き

対象製品

●適用OS：Red Hat Enterprise Linux Server 6（64-bit x86_64），Red Hat Enterprise Linux Server 7（64-bit x86_64）

P-8462-C591 HiRDB Structured Data Access Facility Version 9 09-66

P-8462-AE91 HiRDB Structured Data Access Facility/Developer's Kit Version 9(64) 09-66

輸出時の注意

本製品を輸出される場合には、外国為替及び外国貿易法の規制並びに米国輸出管理規則など外国の輸出関連法規をご確認の上、必要な手続きをお取りください。

なお、不明な場合は、弊社担当営業にお問い合わせください。

商標類

HITACHI，Cosminexus，DABroker，DBPARTNER，DocumentBroker，HAモニタ，HiRDB，Job Management Partner 1，JP1，OpenTP1，uCosminexus，XDMは，株式会社日立製作所の商標または登録商標です。

ActiveXは，米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。

Linuxは，Linus Torvalds氏の日本およびその他の国における登録商標または商標です。

OracleとJavaは，Oracle Corporation及びその子会社，関連会社の米国及びその他の国における登録商標です。

Red Hatは，米国およびその他の国でRed Hat, Inc. の登録商標もしくは商標です。

UNIXは，The Open Groupの米国ならびに他の国における登録商標です。

その他記載の会社名，製品名などは，それぞれの会社の商標もしくは登録商標です。

発行

2018年4月　3000-6-361-10

著作権

All Rights Reserved. Copyright (C) 2016, 2018, Hitachi, Ltd.

変更内容

変更内容(3000-6-361-10)　HiRDB Structured Data Access Facility Version 9　09-66

追加・変更内容

変更個所

メインフレームの階層型モデルのデータベースに相当する構造型DBをサポートしました。

SDBデータベースを操作するDMLをサポートしました。

1.2.2，1.2.3，1.3，1.5，1.7.2(2)，2.5，2.5.2(1)，2.5.4(2)(a)，2.5.4(4)，2.5.4(5)，2.5.5，2.5.6，2.5.7，2.6.2，2.6.2(1)，2.7.2，2.7.2(1)，2.9.2(2)，2.9.2(4)，2.9.4，2.9.4(2)，2.9.5(3)，2.9.5(4)，2.9.5(5)，2.9.9，3.2.5(4)(c)，3.2.6(4)(c)，3.5.1(1)，3.5.1(2)，3.5.1(5)(c)，3.5.5(6)，3.8，3.8.2，3.8.2(1)(b)，3.8.6，5.7.3(6)，5.7.3(9)，5.7.7(8)，9.4，10.6.2，10.6.3，10.8.1，16.1，16.3.1(3)，16.3.1(4)，16.5.2，16.5.3，16.5.4，16.5.5，17章，付録A，付録K.2，付録L，付録O.1

SDBデータベース種別がSD FMBのSDBデータベースをサポートしました。

2.3.1，2.3.3，2.3.7，2.3.8，2.3.9，2.5，2.5.2，2.5.4，2.5.5，2.5.11(4)，2.6，2.7，2.9.2(2)，2.9.2(3)，2.9.2(4)(c)，2.9.4，2.9.5，2.9.5(1)，2.9.5(2)，2.9.5(3)，2.9.5(4)，2.9.5(5)，2.9.5(9)，2.9.8(1)，2.9.8(5)，2.9.8(6)，2.9.8(8)，2.9.9，3.2.4(1)，3.2.5(4)(a)，3.2.5(5)(b)，3.2.5(6)(a)，3.2.6(4)(a)，3.2.6(5)(b)，3.2.6(6)(a)，3.5.1(2)，3.5.5(1)，3.8.2，3.8.2(1)，3.8.2(2)(b)，4.3.3(2)(a)，4.7.1，5.6.2，5.6.3，5.6.3(3)，5.6.5，5.7，5.7.2，5.7.3，5.7.3(8)，5.7.3(12)，5.7.5，5.7.7，5.7.7(3)，5.7.7(7)，5.7.7(9)，5.9.3(1)，5.11.2(5)，5.15.2，5.15.3，9.4，10.1.2，10.7.3(2)(a)，11.4.3，11.4.7，11.7，11.11.3，12.1.1，12.1.1(7)，12.3.1，12.3.2，12.3.3，12.3.6，12.3.7，12.6.2(1)，12.8.3，12.10.4，12.10.6，12.10.9，13.3.1，13.3.2，13.3.3，13.3.4，13.6.2(1)，13.10.4，16.1，16.2，16.4，16.5.4，付録H.2，付録H.3，付録K.1，付録K.2，付録L，付録P

構成要素のデータ型にSMALLINTを定義できるようにしました。

2.3.4(1)，3.5.5(1)，3.5.5(8)，11.7.1(2)，11.7.1(4)(e)，11.7.1(4)(f)，11.7.2(3)(f)，付録B.2(6)

SDBデータベース定義のOCCURS句に，構成要素の繰り返し回数を指定できるようにしました。

2.3.4(2)(c)，3.4.2(2)(a)，3.6.2(1)，3.6.2(2)，3.5.1(4)(e)，3.5.2(1)，3.5.4(1)(a)，3.5.5(1)，3.8.3(11)，11.7.1(2)，11.7.1(4)(d)，11.7.1(4)(g)，付録B.2(5)，付録B.2(6)，付録D

SDBデータベースにアクセスするUAPの実行環境を定義するSDB用UAP環境定義を設定できるようにしました。

2.9.2(2)，2.9.4(1)，2.9.8(8)，2.12，4.2.1(1)，4.4.1，4.7.3(1)(a)，4.7.3(1)(b)，4.7.3(4)，4.9，5.1，5.10，5.26.1，9.3，9.5，9.6，16.3.1(4)，16.5.2(1)

DMLの実行時に監査証跡を取得できるようにしました。

3.5.3(2)，7.1.2，7.1.3(2)，7.1.3(3)，7.1.7，7.3.1(1)，7.3.2(1)，7.3.4(1)，7.4.2(2)，7.8.2，7.12.4，7.12.5，7.12.6，7.12.7

共用メモリの見積もり式を変更しました。

3.4.2(2)(a)

プロセス固有メモリの見積もり式を変更しました。

3.4.3

COBOLソースプログラム中にDMLを記述した埋込み型UAPのプリプロセスを実行できるDMLプリプロセサ（pdsdbcblコマンド）をサポートしました。

また，pdsdbcblコマンドをHiRDBクライアントで実行できるように，HiRDB Structured Data Access Facility/Developer's Kitをサポートしました。

3.6.1(6)，3.6.2(7)，4.7.2(2)，4.7.3(2)，15章，16.3，付録O.2

次の見積もり式を変更しました。

HiRDB/SDデータベース作成ユティリティ（pdsdblod）実行時のメモリ所要量

HiRDB/SDデータベース再編成ユティリティ（pdsdbrog）実行時のメモリ所要量

3.6.2(1)，3.6.2(2)

製品名を次のように変更しました。

統合版HiRDBの製品名をHiRDB/Parallel Server with Structured Data Access Facility Version 9からHiRDB Structured Data Access Facility/Parallel Server Version 9に変更しました。

HiRDBクライアントの製品名をHiRDB/Run Time with Structured Data Access FacilityからHiRDB Structured Data Access Facility/Run Timeに変更しました。

4.3.5，4.7.2(2)，4.7.3(2)，16.3

OSログインユーザの簡易認証機能についての注意事項を追加しました。

10.9.1(5)，11.8.1(6)，付録A

次に示す用語の説明を追加，修正しました。

FMBのデータベース

SDBデータベース種別

SDBデータベースを操作するためのインタフェース

SDB用UAP環境定義ファイル

アクセスパス情報

シーケンシャルインデクス

付録Q

単なる誤字・脱字などはお断りなく訂正しました。

はじめに

このマニュアルは，HiRDB Structured Data Access Facility Version 9（以降，HiRDB/SDと略します）の機能と使い方について説明したものです。

対象読者

HiRDB/SDを使って，構造型データベース（以降，構造型DBと略します）を設計する方，構造型DBシステムを構築および運用する方を対象としています。

このマニュアルの記述は，次に示す知識があることを前提にしています。

構造型DBの基礎的な知識

Linuxのシステム管理の基礎的な知識

HiRDBの導入，設計，および運用に関する基礎的な知識

マニュアルの構成

このマニュアルは，次に示す章と付録から構成されています。

第1章　HiRDB/SDの概要

HiRDB/SDの特長や構成などについて説明しています。

第2章　HiRDB/SDのアーキテクチャ

HiRDB/SDのアーキテクチャについて説明しています。

第3章　HiRDB/SDのデータベース設計

HiRDB/SDのデータベース設計について説明しています。

第4章　HiRDBシステムの構築

HiRDB/SDを使用する際のHiRDBシステムの構築について説明しています。

第5章　運用

構造型DB機能を使用するHiRDBの運用方法について説明しています。

第6章　高速系切り替え機能の設定と運用

高速系切り替え機能の設定方法と運用方法について説明しています。

第7章　セキュリティ監査機能の設定と運用

セキュリティ監査機能の設定方法と運用方法について説明しています。

第8章　ディザスタリカバリシステムの構築と運用【4V FMB，4V AFM】

ディザスタリカバリシステムの構築方法と運用方法について説明しています。

第9章　システム定義

システム共通定義，ユニット制御情報定義などについて説明しています。

第10章　コマンド

運用コマンドおよびユティリティについて，マニュアル「HiRDB Version 9 コマンドリファレンス」との差異を中心に説明しています。

第11章　HiRDB/SD定義ユティリティ（pdsdbdef）

HiRDB/SD定義ユティリティの機能と使い方について説明しています。

第12章　HiRDB/SDデータベース作成ユティリティ（pdsdblod）

HiRDB/SDデータベース作成ユティリティの機能と使い方について説明しています。

第13章　HiRDB/SDデータベース再編成ユティリティ（pdsdbrog）

HiRDB/SDデータベース再編成ユティリティの機能と使い方について説明しています。

第14章　HiRDB/SDデータベースアクセスユティリティ（pdsdbexe）【4V FMB，4V AFM】

HiRDB/SDデータベースアクセスユティリティの機能と使い方について説明しています。

第15章　DMLプリプロセサ（pdsdbcbl）【SD FMB】

DMLプリプロセサの機能と使い方について説明しています。

第16章　HiRDBクライアントの環境設定

インストールやUAPの作成と実行に必要な環境定義の方法などについて説明しています。

第17章　DMLリファレンス【SD FMB】

SD FMBのSDBデータベースを操作するDMLの機能と文法について説明しています。

第18章　メッセージ

HiRDBが出力するメッセージについて説明しています。

付録A　未サポート機能の一覧

HiRDBのマニュアルに記載している機能のうち，未サポートの機能，および機能制限がある機能について説明しています。

付録B　ディクショナリ表

ディクショナリ表について説明しています。

付録C　ユティリティの最大同時実行数およびコマンドの同時接続数

ユティリティの最大同時実行数，およびコマンドの同時接続数について説明しています。

付録D　HiRDB/SDの最大値・最小値

HiRDB/SDの最大値および最小値について説明しています。

付録E　HiRDB/SDで起動するプロセス

HiRDB/SDで起動するプロセスについて説明しています。

付録F　単調増加ファイル

HiRDB/SDの使用によって単調増加するファイルについて説明しています。

付録G　ユティリティが出力するファイル

次のユティリティが出力するファイルについて説明しています。

・HiRDB/SD定義ユティリティ（pdsdbdef）

・HiRDB/SDデータベース作成ユティリティ（pdsdblod）

・HiRDB/SDデータベース再編成ユティリティ（pdsdbrog）

付録H　ユティリティの排他制御モード

次のユティリティの排他制御モードについて説明しています。

・HiRDB/SD定義ユティリティ（pdsdbdef）

・HiRDB/SDデータベース作成ユティリティ（pdsdblod）

・HiRDB/SDデータベース再編成ユティリティ（pdsdbrog）

付録I　ユティリティ実行時の留意事項

次のユティリティ実行時の留意事項について説明しています。

・HiRDB/SD定義ユティリティ（pdsdbdef）

・HiRDB/SDデータベース作成ユティリティ（pdsdblod）

・HiRDB/SDデータベース再編成ユティリティ（pdsdbrog）

付録J　インナレプリカ機能使用時のHiRDB/SD定義ユティリティ（pdsdbdef）の実行【4V FMB，4V AFM】

インナレプリカ機能を使用する場合のHiRDB/SD定義ユティリティ（pdsdbdef）を実行するための条件，および注意事項について説明しています。

付録K　横分割時の検索範囲，検索範囲決定の契機，および入力情報とキーの定義の関係

横分割時の検索範囲，検索範囲決定の契機，および入力情報とキーの定義の関係について説明しています。

付録L　SDBデータベースを操作するAPIまたはDMLと，データページの排他解除の有無の関係

SDBデータベースを操作するAPIまたはDMLと，データページ（ページまたはサブページ）の排他解除の有無（排他自動解除機能の対象となるデータページ）の関係について説明しています。

付録M　複数レコードの検索時の，データ格納エリアに対するレコードの格納形式【4V FMB】

複数レコードの検索時の，データ格納エリアに対するレコードの格納形式について説明しています。

付録N　障害調査のために必要な情報

問題解決支援またはQ&Aのサポートサービスを御利用になる場合に必要となる情報について説明しています。

付録O　予約語の一覧

システムに登録されている予約語について説明しています。

付録P　4V FMBまたは4V AFMのSDBデータベースとSD FMBのSDBデータベースの機能差一覧

4V FMBまたは4V AFMのSDBデータベースと，SD FMBのSDBデータベースの機能差について説明しています。

付録Q　用語解説

このマニュアルで使用している用語について説明しています。

関連マニュアル

このマニュアルの関連マニュアルを次に示します。必要に応じてお読みください。

HiRDBマニュアル

HiRDB Version 9 構造型データベース機能（UAP開発編）（3000-6-362）

HiRDB Version 9 解説（3020-6-450）

HiRDB Version 9 システム導入・設計ガイド（UNIX(R)用）（3000-6-452）

HiRDB Version 9 システム定義（UNIX(R)用）（3000-6-453）

HiRDB Version 9 システム運用ガイド（UNIX(R)用）（3000-6-454）

HiRDB Version 9 コマンドリファレンス（UNIX(R)用）（3000-6-455）

インナレプリカ機能 HiRDB Staticizer Option Version 9（3000-6-463）

HiRDB Version 9 ディザスタリカバリシステム　構築・運用ガイド（3000-6-464）

HiRDB Version 9 UAP開発ガイド（3020-6-456）

HiRDB Version 9 SQLリファレンス（3020-6-457）

HiRDB Version 9 メッセージ（3020-6-458）

HiRDB Version 8 セキュリティガイド（3020-6-359）

以降，HiRDB Version 9のマニュアル名は，（UNIX(R)用）を省略して表記しています。

関連製品

TP1/Server Base Enterprise Option プログラム作成の手引（3000-3-983）

TP1/Financial Service Platform 使用の手引（3000-3-K01）

TP1/Financial Service Platform プログラム作成の手引（3000-3-K02）

OpenTP1 Version 7 分散トランザクション処理機能　OpenTP1　運用と操作（3000-3-D53）

高信頼化システム監視機能 HAモニタ Linux(R)編（3000-9-132）

以降，HAモニタのマニュアル名は，Linux(R)編を省略して表記しています。

利用者ごとの関連マニュアル

利用者ごとの関連マニュアルを次に示します。左側のマニュアルから順にお読みいただくことをお勧めします。

このマニュアルでの表記

このマニュアルでは製品名称および名称について次のように表記しています。ただし，それぞれのプログラムについての表記が必要な場合はそのまま表記しています。

製品名称または名称

表記

HiRDB Version 9

HiRDBまたはHiRDBサーバ

HiRDB Structured Data Access Facility/Run Time Version 9(64)

HiRDB Structured Data Access Facility/Run Time

HiRDBクライアント

HiRDB Structured Data Access Facility/Developer's Kit Version 9(64)

HiRDB Structured Data Access Facility/Developer's Kit

HiRDB/Run Time(64)

HiRDB/Run Time

HiRDB/Developer's Kit(64)

HiRDB/Developer's Kit

HiRDB Advanced High Availability Version 9

HiRDB Advanced High Availability

HiRDB Staticizer Option Version 9

HiRDB Staticizer Option

JP1/NETM/Audit - Manager

JP1/NETM/Audit

JP1/Performance Management

JP1/PFM

Linux(R)

Linux

Red Hat Enterprise Linux Server 6（64-bit x86_64）

Red Hat Enterprise Linux Server 7（64-bit x86_64）

OpenTP1/Server Base Enterprise Option

TP1/EE

uCosminexus TP1/Financial Service Platform

TP1/FSP

XDM/SD E2

XDM/SD

システムマネジャ

MGR

フロントエンドサーバ

FES

ディクショナリサーバ

DS

バックエンドサーバ

BES

HiRDB運用ディレクトリのパスを$PDDIRと表記します。

TCP/IPが規定するhostsファイル（/etc/hostsファイルも含む）をhostsファイルと表記します。

TP1/EEおよびTP1/FSPをまとめてTP1/FSPと表記します。

このマニュアルで使用する略語

このマニュアルで使用する英略語の一覧を次に示します。

英略語

英 字 の 表 記

ADO

ActiveX(R) Data Objects

AFM

Attached File Management Program

API

Application Programming Interface

BES

Back End Server

BOM

Byte Order Mark

COBOL

Common Business Oriented Language

CSV

Character-Separated Values

DAM

indexed Direct Access Method

DAT

Digital Audio Tape

DB

Database

DIC

Dictionary Server

DML

Data Manipulate Language

DS

Dictionary Server

EX

Exclusive

FES

Front End Server

FMB

File Manager for Banks

FTP

File Transfer Protocol

ID

Identification number

IP

Internet Protocol

JAR

Java Archive File

JDBC

Java Database Connectivity

JIS

Japanese Industrial Standard code

JP1

Job Management Partner 1

LOB

Large Object

LRU

Least Recently Used

MAM

Main memory Access Method

MGR

System Manager

MIB

Management Information Base

ODBC

Open Database Connectivity

OLE

Object Linking and Embedding

OLTP

On-Line Transaction Processing

OOCOBOL

Object Oriented COBOL

OS

Operating System

PP

Program Product

PR

Protected Retrieve

PU

Protected Update

RAID

Redundant Arrays of Inexpensive Disk

RD

Relational Database

SAM

Sequential Access Method

SJIS

Shift JIS

SR

Shared Retrieve

SU

Shared Update

TAM

Table Access Method

UAP

User Application Program

XDM/RD E2

Extensible Data Manager / Relational Database Extended Version 2

XDS

Extended Data Server

XML

Extensible Markup Language

ログの表記

OSのログをsyslogfileと表記します。syslogfileは，/etc/rsyslog.confでログ出力先に指定しているファイルです。一般的には，次のファイルがsyslogfileとなります。

OS

ファイル

Linux

/var/log/messages

図中で使用する記号

このマニュアルの図中で使用する記号を次のように定義します。

注※1

一部の図では，プログラムを単に四角で囲んで（影を付けないで）記載しています。

注※2

バックアップファイルには，磁気ディスク装置のほかに磁気テープ装置，カセット磁気テープ装置（CMT）およびデジタルオーディオテープ装置（DAT）が使用できますが，このマニュアルでは磁気ディスク装置だけを記載しています。

このマニュアルで使用する記号

形式および説明で使用する記号を次に示します。ここで説明する文法記述記号は，説明のための記号なので実際には記述しないでください。

文法記述記号

意味

〔　　〕

この記号で囲まれている項目は省略できます。

（例）pdfbkup 〔-y〕

これは，pdfbkupと指定するか，またはpdfbkup -yと指定できることを示します。

…

この記号直前の項目を繰り返して指定できます。

（例）pdclose -r RDエリア名 〔，RDエリア名〕…

これは，-rオプションのRDエリア名を繰り返し指定できることを示します。

｜

この記号で区切られた項目を選択できます。

（例）pdloginit -d sys｜spd

これは，-dオプションにsysかspdのどちらかを指定できることを示します。

｛　　｝

この記号で囲まれている複数の項目のうちから，1つを選択できます。

（例）pdstart 〔｛-x ホスト名｜-s サーバ名｝〕

これは，-x ホスト名，-s サーバ名の2つのオプションのうち，どちらか1つを指定することを示します。

（下線）

この記号で示す項目は，省略時の仮定値です。

（例）pdcat 〔-｛a｜b｜ab｝〕

これは，オプションの指定を省略した場合，-abオプションが仮定されることを示します。

｛｛　　｝｝

この記号で囲まれた複数の項目を1つの単位として，繰り返し指定できます。

（例）｛｛subschema -s SDBデータベース名｝｝

これは，「subschema -s SDBデータベース名」を繰り返し指定できることを示します。

〜

この記号のあとにユーザ指定値の属性を示します。

《　　》

ユーザが指定しなかった場合に仮定される値を示します。

＜　　＞

ユーザ指定値の構文要素記号を示します。

((　　))

ユーザ指定値の指定範囲を示します。

このマニュアルで使用する構文要素記号

このマニュアルで使用する構文要素記号を次に示します。

構文要素記号

意味

＜英字＞

アルファベット（A〜Z，a〜z）と下線（_）

＜英字記号＞

アルファベット（A〜Z，a〜z）と＃，＠，￥

＜英数字＞

英字と数字（0〜9）

＜英数字記号＞

英字記号と数字（0〜9）

＜符号なし整数＞

数字（0〜9）

＜16進数字＞

数字（0〜9）と（A〜F）

＜識別子＞

先頭がアルファベットの英数字

＜識別子＞

RDエリア名を指定する場合

先頭が英字記号で始まる英数字記号，下線（_），ハイフン（-），および空白

ハイフンおよび空白を含む場合は，引用符（"）で囲んでください。

ホスト名を指定する場合

アルファベット（A〜Z，a〜z），数字（0〜9），ピリオド（.），ハイフン（-），下線（_），および＠で構成される文字列

グローバルバッファ名またはパスワードを指定する場合

先頭が英字記号で始まる英数字記号

認可識別子を指定する場合

英数字記号

SDBデータベースで使用する名前（SDBデータベース名，レコード型名など）を指定する場合

指定できる文字の規則については，「11.4.1(1)　名前の規則」を参照してください。

＜記号名称＞

先頭が英字記号で始まる英数字記号

＜文字列＞

任意の文字の配列

＜パス名＞※

/，英数字，ピリオド（.），#，@で構成される文字列

＜HiRDBファイル名＞

アルファベット（A〜Z，a〜z），数字（0〜9），ピリオド（.），下線（_），および＠で構成される文字列（最大30文字）

注

すべて半角文字を使用してください。

注※

パス名は使用しているOSに依存します。

このマニュアルで使用する計算式の記号

このマニュアルで使用する計算式の記号の意味を次に示します。

記号

意味

↑↑

計算結果の値を小数点以下で切り上げることを示します。

（例）↑34÷3↑の計算結果は12となります。

↓↓

計算結果の値を小数点以下で切り捨てることを示します。

（例）↓34÷3↓の計算結果は11となります。

MAX

計算結果の最も大きい値を選ぶことを示します。

（例）MAX（3×6，4＋7）の計算結果は18となります。

MIN

計算結果の最も小さい値を選ぶことを示します。

（例）MIN（3×6，4＋7）の計算結果は11となります。

このマニュアルをお読みいただく際の留意事項

このマニュアルでは，構造型DB（SDBデータベース）の定義方法や運用方法について説明しています。このマニュアルで説明しているSDBデータベースには，次に示す3つの種類があります。

・4V FMB

メインフレームのTMS-4V/SPがサポートしているFMBのデータベースに相当します。

・4V AFM

メインフレームのTMS-4V/SPがサポートしているAFM（DAM，MAM，TAM，またはSAM）のデータベースに相当します。4V AFMは，4V DAM，4V MAM，4V TAM，および4V SAMのSDBデータベースの総称です。

・SD FMB

メインフレームのXDM/SD E2がサポートしている階層型モデルのデータベースに相当します。

章，節，項などのタイトルに次の表記がある場合，該当するSDBデータベースだけに関する説明であることを意味しています。

【4V FMB】

この表記がある個所の説明は，4V FMBのSDBデータベースを使用しているときに該当する記述であることを意味しています。

【4V AFM】

この表記がある個所の説明は，4V AFMのSDBデータベースを使用しているときに該当する記述であることを意味しています。

なお，【4V DAM】，【4V MAM】，【4V TAM】，【4V SAM】と表記されている場合は，それぞれ4V DAM，4V MAM，4V TAM，4V SAMのSDBデータベースを使用しているときに該当する記述であることを意味しています。

【SD FMB】

この表記がある個所の説明は，SD FMBのSDBデータベースを使用しているときに該当する記述であることを意味しています。

（例）

「2.3.10　二次インデクス【4V FMB，4V AFM】」

上記のように表記されている場合，4V FMBまたは4V AFMのSDBデータベースを使用しているときに，該当する記述であることを意味しています。そのため，SD FMBのSDBデータベースを使用している場合は，「2.3.10　二次インデクス」の説明をお読みいただく必要はありません。

KB（キロバイト）などの単位表記について

1KB（キロバイト），1MB（メガバイト），1GB（ギガバイト），1TB（テラバイト）はそれぞれ1,024バイト，1,024²バイト，1,024³バイト，1,024⁴バイトです。

1　HiRDB/SDの概要

この章では，HiRDB/SDの概要について説明します。

1.1　メインフレームのデータベース資産をオープン化するHiRDB/SD

HiRDB/SDは，構造型DBを管理します。構造型DBとは，データ間の関連を表形式ではなく，階層構造で管理するデータベースです。

近年，メインフレームに対する性能や信頼性が再認識される一方で，メインフレーム上で管理される構造型DBに対する，オープンシステムへの移行のニーズも高まっています。しかし，メインフレームからオープンシステムへの移行は進んでいません。その理由の1つとして，オープンシステムで管理されるデータベースの主流はリレーショナルDBであり，構造型DBとはデータベースのアーキテクチャが大きく異なっていることが挙げられます。

メインフレーム上の構造型DBをオープンシステム上のリレーショナルDBに移行することもできますが，移行のための費用や時間が多く掛かってしまいます。

HiRDB/SDは，メインフレーム上で稼働している構造型DBのアーキテクチャを踏襲しています。また，UAPのインタフェースの差異もほぼ変更しないでオープンシステムに移行できます。そのため，メインフレーム上の構造型DBをオープンシステム上に移行する際の負担を大きく軽減できます。

構造型DBのオープンシステムへの移行とHiRDB/SDの位置づけを次の図に示します。

図1‒1　構造型DBのオープンシステムへの移行とHiRDB/SDの位置づけ

メインフレームが蓄積してきたデータベース資産には，有効活用できるデータや今後も継続的な管理が必要なデータが数多く存在します。HiRDB/SDを使用して，メインフレームのデータベース資産をオープン化することによって，データベース資産のさらなる有効活用やユーザニーズに合わせたデータ管理，運用負荷の低減が期待できます。

1.2　HiRDB/SDの特長

HiRDB/SDの特長として，次の項目について説明します。

オープンシステムで稼働する構造型DB

メインフレーム上の構造型DBやUAPの移行負担を軽減できる

同一トランザクション内で構造型DBとリレーショナルDBの両方にアクセスできる

1.2.1　オープンシステムで稼働する構造型DB

HiRDB/SDは，オープンシステムで稼働する構造型DBを提供します。

構造型DBでは，レコードという単位でデータを管理します。レコード間の関連は階層構造（親子関係）で管理します。

一般的に，構造型DBを前提に設計されたUAPでは，親となるレコード（親レコード）を検索したあとに，そのレコードに関連づけられたレコード（子レコード）を検索するというように，データベースの構造に基づいてアクセス順序を決定します。このようなデータベースアクセス要求に対応するため，HiRDB/SDには次のような特長があります。

(1)　レコード同士を関連づけるデータ構造

レコードの順序性を意識したデータベースアクセスを実現するため，レコード同士をポインタによって関連づけるデータ構造になっています。

図1‒2　レコード同士をポインタによって関連づけるデータ構造

(2)　関連するレコードを近くに配置できる（近傍配置）

HiRDB/SDでは，同じルートレコード（レコードの階層構造で最上位のレコード）に連なるレコード群を，基準となるレコード（基準レコード）が格納されているページ（基準ページまたは基準サブページ）およびそのページの近傍に格納します。これを近傍配置といいます。近傍配置をすることで，親子関係にあるレコードが近くに格納されるようになります。これによって，アクセス時間が短縮され，データベースへのアクセス性能が向上します。

基準レコード，基準ページついては，「2.6.1(1)　基準レコード，基準ページ」を参照してください。

図1‒3　レコードの近傍配置の概要

1.2.2　メインフレーム上の構造型DBやUAPの移行負担を軽減できる

HiRDB/SDが提供する構造型DBは，メインフレーム上で稼働している構造型DBのアーキテクチャを踏襲しています。そのため，基本的にデータベース構造を変更することなく，メインフレームからオープンシステムに移行できます。これによって，移行に掛かる時間やコストを削減できます。

メインフレームのTMS-4V/SPの構造型DBにアクセスするインタフェース（API）については，メインフレームとの仕様差をHiRDB/SDおよび前提製品であるuCosminexus TP1/Financial Service Platformが吸収します。また，メインフレームのXDM/SDの階層型モデルのデータベースにアクセスするインタフェースを踏襲したDMLをHiRDB/SDが提供します。これによって，メインフレーム上で使用していたUAPをオープンシステムに容易に移行できます。

1.2.3　同一トランザクション内で構造型DBとリレーショナルDBの両方にアクセスできる

リレーショナルDBにアクセスするときはHiRDBが提供するSQLを使用します。また，構造型DBにアクセスするときはuCosminexus TP1/Financial Service Platformが提供するインタフェース（API），またはHiRDB/SDが提供するインタフェース（DML）を使用します。

上記のインタフェースを使用することで，同一トランザクション内で構造型DBとリレーショナルDBの両方にアクセスできます。データベースへの接続や切断，トランザクションに関連するインタフェースについては，構造型DBとリレーショナルDBで共通のインタフェースを使用します。

1.3　HiRDB/SDを使用する際のシステム構成

HiRDB/SDが管理する構造型DBには，次のどちらかのインタフェースを使用してアクセスします。

uCosminexus TP1/Financial Service Platformが提供するインタフェース（API）

HiRDB/SDが提供するインタフェース（DML）

使用するインタフェースによってシステム構成が異なります。それぞれのインタフェースを使用したときのシステム構成例の図を示します。

図1‒4　HiRDB/SDを使用する際のシステム構成例（uCosminexus TP1/Financial Service Platformが提供するインタフェース（API）を使用する場合）

図1‒5　HiRDB/SDを使用する際のシステム構成例（HiRDB/SDが提供するインタフェース（DML）を使用する場合）

1.4　動作条件

HiRDB/SDを使用する際の動作条件について説明します。

1.4.1　使用できるプラットフォーム

HiRDB/SDを使用できるプラットフォームを次に示します。

Red Hat Enterprise Linux Server 6（64-bit x86_64）

Red Hat Enterprise Linux Server 7（64-bit x86_64）

1.4.2　使用できる文字コード

HiRDB/SDで使用できる文字コードについて，次の点に注意してください。

HiRDB/SDで使用できる文字コードは，シフトJIS漢字コードまたはUnicode（UTF-8）です。

HiRDB/SDにアクセスするUAPから渡されるデータに対して，HiRDB/SDでは文字コード変換を行いません。このため，UAPが扱うデータの文字コードとHiRDB/SDが使用する文字コードは同じにしてください。

ユティリティ実行時に使用するデータの文字コードとHiRDB/SDで使用する文字コードは同じにしてください。

1.5　HiRDB/SDの関連プログラムプロダクト

HiRDB/SDの関連プログラムプロダクトを次に示します。詳細については，リリースノートを参照してください。

uCosminexus TP1/Financial Service Platform（TP1/FSP）

HiRDB/SDが管理する構造型DBにアクセスするインタフェースを提供します。

COBOL2002 Net Server Suite(64)

DMLを記述したUAPのコンパイルおよびリンケージをするために使用します。

COBOL2002 Net Server Runtime(64)

DMLを記述したUAPを実行するために使用します。

OpenTP1/Server Base

DMLを記述したUAPをOLTP環境下で実行する場合，UAPのトランザクション制御をするために使用します。

HAモニタ

系切り替え機能を実現するためのクラスタソフトウェアです。現用系サーバに障害が発生した場合，待機系サーバにサービスを引き継ぎます。

1.6　HiRDB/SDに関連する付加PP

ここでは，次に示すHiRDB/SDに関連する付加PPで実現できる機能および操作について説明します。

HiRDB Staticizer Option

HiRDB Advanced High Availability

1.6.1　HiRDB Staticizer Option

HiRDB Staticizer Optionを導入すると，インナレプリカ機能が使用できるようになります。

インナレプリカ機能については，マニュアル「HiRDB Version 9 解説」の「HiRDB Staticizer Option【UNIX版限定】」を参照してください。

1.6.2　HiRDB Advanced High Availability

HiRDB Advanced High Availabilityを導入すると，HiRDB/SDでも分割格納条件の変更機能が使用できるようになります。

分割格納条件の変更機能とは，SDBデータベース格納定義で定義済みの横分割したレコード型の格納RDエリア数を，HiRDB/SD定義ユティリティ（pdsdbdefコマンド）で変更できる機能です。

分割格納条件の変更機能を使うことで，追加，削除，変更対象外のRDエリアに格納したデータに影響を及ぼすことなく，横分割するRDエリア数の変更ができます。

1.7　HiRDB Structured Data Access Facility Version 9（HiRDB/SD）の位置づけ

ここでは，HiRDB Structured Data Access Facility Version 9（HiRDB/SD）とHiRDBの関係，およびこのマニュアルの記載範囲とHiRDBマニュアルとの関係について説明します。

1.7.1　HiRDB/SDを使用することで追加される機能範囲

HiRDB Structured Data Access Facility Version 9（HiRDB/SD）は，リレーショナルDBに加えて，HiRDBで構造型DBを管理するためのオプション製品です。

HiRDB/SDを使用する際の基本的な運用はHiRDBと同じです。コマンドも，構造型DB機能固有のコマンド以外は，HiRDBのコマンドを使用します。このため，マニュアルもHiRDBのマニュアルをご使用いただきます。

HiRDB/SDを使用することで追加される機能範囲を次の図に示します。

図1‒6　HiRDB/SDを使用することで追加される機能範囲

1.7.2　このマニュアルの記載範囲とHiRDBマニュアルとの関係

このマニュアルの記載範囲とHiRDBマニュアルとの関係について説明します。

(1)　このマニュアルの記載範囲

このマニュアルでは，HiRDB/SDを使用する際に必要となる，HiRDB/SD固有の機能や運用方法についてだけ記載しています。リレーショナルDBに関する機能やHiRDBの運用方法については，HiRDBのマニュアル（「はじめに」の「関連マニュアル」に記載しているHiRDBマニュアル）をご使用いただきます。

(2)　HiRDBのマニュアルをご使用いただく際の留意事項

構造型DB機能を使用する目的で，HiRDBのマニュアルをご使用いただく際の留意事項を次に示します。

HiRDB/パラレルサーバをHiRDB/SDに読み替えてください。

表はレコード型に読み替えてください。

SQLは次のように読み替えてください。

uCosminexus TP1/Financial Service Platformが提供するインタフェース（API）を使用する場合：SDBデータベースを操作するAPI

HiRDB/SDが提供するインタフェース（DML）を使用する場合：DML

その他，マニュアルの本文中に機能の読み替えの指示がある場合は，その指示に従ってください。

(3)　構造型DB機能を使用する際の制限事項

構造型DB機能を使用する場合，HiRDBのマニュアルに記載してある機能が使用できなかったり，使用する際に制限があったりすることがあります。詳細については，「付録A　未サポート機能の一覧」を参照してください。

2　HiRDB/SDのアーキテクチャ

この章では，HiRDB/SDのデータベースの論理構造，物理構造，および処理方式について説明します。

2.1　HiRDB/SDのアーキテクチャ

HiRDB/SDは，ネットワークで接続された複数のサーバマシンで構築されたHiRDB上で使用できます。

HiRDBのアーキテクチャについては，マニュアル「HiRDB Version 9 解説」を参照してください。

2.1.1　HiRDB/SDを使用するHiRDBのシステム構成

HiRDB/SDは，次に示すサーバから構成されたシステムで使用できます。

システムマネジャ（MGR）

ディクショナリサーバ（DS）

フロントエンドサーバ（FES）

バックエンドサーバ（BES）

サーバを管理する単位としてユニットという概念を使用します。

HiRDBのシステム構成とそれぞれのサーバの役割については，マニュアル「HiRDB Version 9 解説」の「HiRDB/パラレルサーバの構成」を参照してください。

2.2　データベースの格納構造

ここでは，HiRDB/SDが管理するデータベースが，物理的および論理的にどのように格納されるのかについて説明します。

2.2.1　HiRDBファイルとHiRDBファイルシステム領域

HiRDBファイルとHiRDBファイルシステム領域については，マニュアル「HiRDB Version 9 解説」の「HiRDBファイルシステム領域」を参照してください。

HiRDBファイルシステム領域の作成方法については，「4.4.2　HiRDBファイルシステム領域の作成」を参照してください。

2.2.2　RDエリア

RDエリアとは，構造型DBのデータ（レコードおよびインデクス）を格納する論理的な領域のことです。RDエリアは，HiRDBファイル上に作成します。

ここでは，構造型DB機能で利用できるRDエリアの種類，およびHiRDBファイルとRDエリアの関係について説明します。

(1)　RDエリアの種類

構造型DB機能で利用できるRDエリアの種類を次の表に示します。それぞれのRDエリアについては，以降で説明します。

表2‒1　RDエリアの種類

項番

RDエリアの種類

1

システム用RDエリア

マスタディレクトリ用RDエリア

2

データディクショナリ用RDエリア

3

データディレクトリ用RDエリア

4

ユーザ用RDエリア

(2)　マスタディレクトリ用RDエリア

マスタディレクトリ用RDエリアには，システムの内部情報を格納します。

(3)　データディクショナリ用RDエリア

データディクショナリ用RDエリアには，ディクショナリ表およびディクショナリ表のインデクスを格納します。ディクショナリ表は，HiRDBの利用者が検索できます。ディクショナリ表については，「付録B　ディクショナリ表」を参照してください。

(4)　データディレクトリ用RDエリア

データディレクトリ用RDエリアには，システムの内部情報を格納します。

(5)　ユーザ用RDエリア

ユーザ用RDエリアにはSDBデータベースを格納します。

ユーザ用RDエリアにSDBデータベースを格納する際，レコードとインデクスは別のユーザ用RDエリアに格納します。

1つのユーザ用RDエリアには，同一のSDBデータベースに属するレコードだけが格納できます。ただし，インデクスの場合は，異なるSDBデータベースのインデクスを1つのユーザ用RDエリアに格納できます。

なお，RDエリアに対するアクセス管理によって次のように分類されます。

公用RDエリア（HiRDBに登録されているすべてのユーザが使用できる）

私用RDエリア（権限があるユーザだけが使用できる）

SDBデータベースを格納するユーザ用RDエリアは，公用RDエリアとしてください。SDBデータベースについては，「2.3.3　SDBデータベース」を参照してください。

また，ユーザ用RDエリアには，更新可能なオンライン再編成，またはセキュリティ監査機能で使用する次の表およびインデクスも格納します。

追い付き反映キー対応表（更新可能なオンライン再編成）

追い付き反映キー対応表のインデクス（更新可能なオンライン再編成）

追い付き状態管理表（更新可能なオンライン再編成）

監査証跡表（セキュリティ監査機能）

更新可能なオンライン再編成機能で使用する表およびインデクスを格納するユーザ用RDエリアは，公用RDエリアとして定義してください。

監査証跡表を格納するユーザ用RDエリアについては，マニュアル「HiRDB Version 9 システム運用ガイド」の「監査人の登録，監査証跡表を格納するRDエリアの作成，および監査証跡表の作成」の「監査証跡表を格納するRDエリアの作成」の「RDエリアの作成」を参照して，格納できるRDエリアの種類を確認してください。

(6)　HiRDBファイルとRDエリアの関係

RDエリアは，HiRDBファイル上に作成します。1つのRDエリアに対して複数のHiRDBファイルを割り当てることができます。その際，異なるHiRDBファイルシステム領域のHiRDBファイルを割り当てることもできます。HiRDBファイルとRDエリアの関係を次の図に示します。

図2‒1　HiRDBファイルとRDエリアの関係

2.2.3　RDエリアの構造

RDエリアの構造を次の図に示します。

図2‒2　RDエリアの構造

(1)　セグメント

セグメントは，レコードおよびインデクスのデータをRDエリアに格納する最小単位です。セグメントは連続した複数ページから構成されています。

1セグメントには，同一のSDBデータベースのレコードまたは1つのインデクスのデータだけが格納されます。SDBデータベースについては，「2.3.3　SDBデータベース」を参照してください。

(2)　ページ

ページは，データベースの入出力処理の最小単位です。ページ長を大きくすると，関連するレコードを同一ページ内に格納できるため，データを連続して処理する場合に入出力回数を削減できます。逆に，ページを小さくすると，1ページ当たりに格納できるレコードの件数が少なくなり，データベースアクセスの同時実行性を高めることができます。また，データを格納する際にむだな領域が発生するのを抑えることができます。

ページには次の表に示す種類があります。

表2‒2　ページの種類

ページの種類

説明

データページ

レコードを格納するページです。

インデクスページ

インデクスのキー値を格納するページです。

ディレクトリページ

RDエリアの管理情報を格納するページです。

(3)　サブページ

ページのうち，データページ（レコードを格納するページ）は，さらに複数の領域に分割できます。この分割した1つの領域をサブページといい，ページを分割することをサブページ分割といいます。

サブページの構造を次の図に示します。

図2‒3　サブページの構造

［説明］

1データページは，2〜16のサブページに分割できます。

HiRDB/SDでは，データページにレコードを格納する際，ルートレコードが異なるレコードは別々のデータページに格納されます。そのため，ルートレコード下のレコード数が少ない場合など，レコードのサイズやレコードの配置制御によっては，レコードの格納効率が悪くなることがあります。このような場合，データページをサブページ分割すると，ルートレコードが異なるレコードを同じデータページ内の別々のサブページに格納できるため，レコードの格納効率が良くなります。

SDBデータベース格納定義のSTORAGE RECORD句のSUBPAGE NUMBERでサブページ分割数を指定すると，データページがサブページ分割されます。

(4)　ページの格納構造

ページの格納構造を，サブページ分割していない場合とサブページ分割している場合について，次の図に示します。

図2‒4　ページの格納構造

［説明］

レコード

レコードのデータを格納する領域です。

空きレコード領域

レコードの削除などによって，ページおよびサブページ内の使用領域の途中にできた未使用領域です。

空き領域

ページおよびサブページ中に格納されている最終レコード以降の未使用領域です。

制御情報

ページおよびサブページを管理するための情報を格納する領域です。

(5)　レコードの構造

レコードの構造を次の図に示します。

図2‒5　レコードの構造

［説明］

レコードデータ格納部

実際のデータを格納する領域です。

レコードデータ格納部の形式は，仮想ルートレコードとそれ以外のレコードで次のように異なります。

●仮想ルートレコードの場合

SDBデータベースの定義時にユーザが指定した構成要素が，定義した順に配置されます。それ以外に，HiRDB/SDが内部的に使用するシステム用構成要素が配置されます。レコードデータ格納部の長さが4の倍数でなければ，末尾に境界調整用の領域が付加されます。

●仮想ルートレコード以外のレコードの場合

SDBデータベースの定義時にユーザが指定した構成要素が，定義した順に配置されます。レコードデータ格納部の長さが4の倍数でなければ，末尾に境界調整用の領域が付加されます。

ポインタ管理領域

レコード間をつなぐポインタを管理する領域です。

ポインタ管理領域の予備領域

将来の親子集合の拡張に備えて，レコード内に設定しておく領域です。ポインタ管理領域の予備領域のサイズは，SDBデータベース格納定義のPOINTER AREA SIZE句で指定できます（省略時に仮定される値は0です）。

2.3　構造型DBの仕組み

構造型DBでは，レコードという単位でデータを管理します。また，レコード間の関連は階層構造（親子関係）で管理します。

2.3.1　HiRDB/SDがサポートしている構造型DBの種類

HiRDB/SDがサポートしている構造型DBには，階層構造を持つデータベースと，階層構造を持たないデータベースの2種類があります。それぞれのデータベースについて説明します。

■階層構造を持つデータベース（FMBのデータベース）

階層構造を持つデータベースを，FMBのデータベースといいます。

FMBのデータベースの場合，レコード間の関連が親子関係で管理されます。下位のレコード（子レコード）にアクセスする場合は，上位のレコード（親レコード）から階層順にアクセスします。FMBのデータベースでは，1つのレコード型は，複数の構成要素から構成されます。レコード型および構成要素については，「2.3.4　レコード」を参照してください。

参考

FMBのデータベースは，次のデータベースに相当します。

メインフレームのTMS-4V/SPがサポートしているFMBのデータベース

メインフレームのXDM/SDがサポートしている階層型モデルのデータベース

■階層構造を持たないデータベース（AFMのデータベース）

階層構造を持たないデータベースを，AFMのデータベースといいます。

AFMのデータベースの場合，1つのレコード型は，1つまたは複数の構成要素から構成されます。レコード型および構成要素については，「2.3.4　レコード」を参照してください。

参考

AFMのデータベースは，メインフレームのTMS-4V/SPがサポートしているDAM，MAM，TAM，またはSAMのデータベースに相当します。

2.3.2　スキーマ

HiRDB/SDにはスキーマという概念があります。スキーマとは，SDBデータベース，およびSDBデータベースを構成するレコード型およびインデクスなど，ユーザが所有するリソースを包括した概念です。

ユーザは，SDBデータベースを定義する前にスキーマを定義しておく必要があります。スキーマは定義系SQLのCREATE SCHEMAで定義します。1ユーザには1スキーマを定義できます。スキーマの概念を次の図に示します。

図2‒6　スキーマの概念

例えば，ユーザAのスキーマに含まれるSDBデータベースAは，ユーザAの所有となります。そのため，ユーザBはユーザAのSDBデータベースAの定義内容を変更することはできません。

2.3.3　SDBデータベース

SDBデータベースとは，レコード，インデクス，親子集合など構造型DBを構成するデータ群の総称です。HiRDB/SDではSDBデータベース単位にレコードやインデクスを定義したり削除したりします。

SDBデータベースは，HiRDB/SD定義ユティリティ（pdsdbdef）で定義します。HiRDB/SD定義ユティリティ（pdsdbdef）については，「11.　HiRDB/SD定義ユティリティ（pdsdbdef）」を参照してください。また，SDBデータベースの定義の概要については，「2.4　SDBデータベースの定義」を参照してください。

(1)　SDBデータベース種別

SDBデータベースには，次の表に示す種類（SDBデータベース種別）があります。

表2‒3　SDBデータベースの種類（SDBデータベース種別）

SDBデータベース種別

説明

4V FMB

階層構造を持つデータベースで，メインフレームのTMS-4V/SPがサポートしているFMBのデータベースに相当します。

4V AFM

階層構造を持たないデータベースで，メインフレームのTMS-4V/SPがサポートしているDAM，MAM，TAM，またはSAMのデータベースに相当します。

4V AFMのSDBデータベースは，さらに次のSDBデータベース種別に分けられます（4V AFMは次のSDBデータベース種別の総称です）。

4V DAM

4V MAM

4V TAM

4V SAM

SD FMB

階層構造を持つデータベースで，メインフレームのXDM/SDがサポートしている階層型モデルのデータベースに相当します。

SDBデータベースの定義時にSDBデータベース種別を指定します。

なお，SDBデータベース種別によって，HiRDB/SDの機能のうち，使用できる機能が異なります。詳細については，「付録P　4V FMBまたは4V AFMのSDBデータベースとSD FMBのSDBデータベースの機能差一覧」を参照してください。

注意事項

SDBデータベース種別が4V（4V FMBまたは4V AFM）のSDBデータベースとSD FMBのSDBデータベースをシステム内で混在して定義することはできません。

4V FMBと4V AFMのSDBデータベースをシステム内で混在して定義することはできますが，4V FMBとSD FMB（または4V AFMとSD FMB）のSDBデータベースをシステム内で混在して定義することはできません。

(2)　SDBデータベース種別の表記に関する留意事項

このマニュアルでは，基本的に「表2-3　SDBデータベースの種類（SDBデータベース種別）」に示すすべての種類のSDBデータベースを対象に説明しています。ただし，使用するSDBデータベースの種類によっては，使用できない機能があります。その場合には，マニュアル中の章，節，項などのタイトルに，その機能の対象となるSDBデータベース種別を示す表記をしています。

（例）

「2.3.10　二次インデクス【4V FMB，4V AFM】」

上記のように表記されている場合，4V FMBまたは4V AFMのSDBデータベースを使用しているときに，該当する記述であることを意味しています。そのため，SD FMBのSDBデータベースを使用している場合は，「2.3.10　二次インデクス」の説明をお読みいただく必要はありません。

SDBデータベース種別を示す表記については，「はじめに」の「このマニュアルをお読みいただく際の留意事項」を参照してください。

2.3.4　レコード

構造型DBでは，データベース中に存在する情報の基本単位をレコードといいます。レコードは情報の論理的な単位であると同時に，データを検索したり，更新したりするときの単位でもあります。

構造型DBでは，あるレコードをモデル化したものをレコード型といいます。レコード型はSDBデータベース定義で定義します。

レコード型に対応してデータベース中で，実際のデータ値を持って存在するものをレコード実現値といいます。レコード型とレコード実現値の関係を次の図に示します。

図2‒7　レコード型とレコード実現値の関係

データベース中の「品番」，「商品名」，「規格」などの各情報をこの順番に持つとき，これをモデル化したものがレコード型であり，実際にデータ値を持つ個々のものをレコード実現値といいます。

なお，このマニュアルでは，特に誤解を与えない場合にはレコード実現値を単にレコードといいます。

レコードは次の要素から構成されます。

(1)　データ項目

データ項目は，データベース中で取り扱える情報の最小単位です。1つのデータ項目はただ1つの値を持ちます。データ項目は格納するデータ種別ごとに属性を持ちます。これをデータ型といいます。

HiRDB/SDで指定できるデータ型を次の表に示します。

表2‒4　HiRDB/SDで指定できるデータ型

データ種別

データ型

文字列データ

CHARACTER

16進データ

XCHARACTER

符号付きパック形式10進データ※1

PACKED DECIMAL FIXED

整数データ

INTEGER

SMALLINT※2

注※1

符号付きパック形式の符号部の仕様を次に示します。

符号部

説明

正規化しない場合

正規化する場合（DECIMAL型の符号正規化機能を使用する場合）

X'A'

エラーになります。

正の値を意味するX'C'に変換されます。

X'B'

エラーになります。

負の値を意味するX'D'に変換されます。

X'C'

正の値を意味します。

X'D'

負の値を意味します。

X'E'

エラーになります。

正の値を意味するX'C'に変換されます。

X'F'

正の値を意味します。

X'0'〜X'9'

エラーになります。

DECIMAL型の符号正規化機能を使用する場合は，システム共通定義のpd_dec_sign_normalizeオペランドにYを指定します。詳細については，マニュアル「HiRDB Version 9 システム運用ガイド」の「DECIMAL型の符号部を変換する方法」を参照してください。

注※2

SMALLINTのデータ型は，SD FMBのSDBデータベースの場合に使用できます。

(2)　構成要素

データ項目を論理的な単位にまとめたものを構成要素といいます。構成要素には基本項目と集団項目の2種類があります。

(a)　基本項目

1つのデータ項目から成る構成要素です。

(b)　集団項目

階層構造を持ち，基本項目を含む構成要素です。関連する2つ以上のデータ項目をまとめて1つの構成要素となります。

(c)　構成要素の例

構成要素の例を次の図に示します。

図2‒8　1つのデータ項目から成る構成要素

［説明］

1つのデータ項目から成る構成要素の例です。Aは基本項目となります。

図2‒9　複数のデータ項目から成る構成要素（集団項目が集団項目を含まない場合）

［説明］

複数のデータ項目から成る構成要素の例です。Bは集団項目であり，CおよびDはそれぞれ基本項目となります。

図2‒10　複数のデータ項目から成る構成要素（集団項目が集団項目を含む場合）

［説明］

複数のデータ項目から成る構成要素の例です。EおよびFは集団項目であり，G，H，およびIはそれぞれ基本項目となります。

図2‒11　繰り返し指定をしたデータ項目から成る構成要素（OCCURS句に繰り返し回数3を指定している場合）

［説明］

繰り返し指定をしたデータ項目から成る構成要素の例です。A(0001)，A(0002)，およびA(0003)は，それぞれ基本項目となります。この場合，構成要素数は，SDBデータベース定義のOCCURS句で指定した繰り返し回数と同じになります。

(d)　基本項目の構成要素のデータ種別

基本項目の構成要素は，用途によって3種類に分けられます。基本項目の構成要素のデータ種別を次の表に示します。

表2‒5　基本項目の構成要素のデータ種別

データ種別

説明

データベースキー

HiRDB/SDが，SDBデータベース内でレコードを一意に識別するために使用する構成要素です。

ユーザデータ

ユーザが自由に設定できる構成要素です。

ユーザキー

ユーザデータのうち，レコードを一意に識別するために使用する構成要素です。

(3)　キー

SDBデータベースでは，SDBデータベース内でレコードを一意に識別するために，レコードごとにキーが設定されます。キーには，HiRDB/SDが管理するキー（データベースキー）とユーザが管理するキー（ユーザキー）があります。

データベースキー

HiRDB/SDが管理するキーです。キー値にはユーザが明示的に指定するキーと，HiRDB/SDが自動的に採番するキー（一連番号）があります。

ユーザキー

ユーザが管理するキーです。キー値はレコードの追加時にユーザが指定します。ユーザキーはレコード型ごとに1つ定義できます。

ユーザキーは，4V FMBまたは4V AFMのSDBデータベースの場合に定義できます。

論理キー

データベースキーを構成する個々の構成要素に対して，キーの属性を設定できます。これを論理キーと呼びます。論理キーの種類を次の表に示します。

表2‒6　論理キーの種類

論理キーの種類

説明

RDエリア分割キー

RDエリア分割に使用するキーです。

レコード分割キー

レコード分割に使用するキーです。

RDエリア分割キーでありレコード分割キーであるキー

RDエリア分割およびレコード分割に使用するキーです。

上記以外のキー

ユーザが任意に使用するキーです。

一連番号

HiRDB/SDがレコードの発生順に，自動的に採番して管理する番号（キー）です。

2.3.5　親子集合

構造型DBでは，各レコードは互いに関連を持ちます。レコード間の論理的な関連は親子の関係で表現されます。これを親子集合といいます。

ルートレコードを除く各レコードは，親レコードを1つだけ持ち，子レコードを複数個持つことができます。

(1)　親レコード

親子集合では，親に当たるレコードを親レコードといいます。親レコードのレコード型を親レコード型といいます。

(2)　子レコード

親子集合では，子に当たるレコードを子レコードといいます。子レコードのレコード型を子レコード型といいます。

(3)　親子集合型

親レコード型と子レコード型をモデル化したものを親子集合型といいます。親子集合型はSDBデータベース定義で定義します。親子集合型の例を次の図に示します。

図2‒12　親子集合型の例

この例の場合，「商品」レコードの商品（品番）に対応して，「売上」レコードと「仕入」レコードが存在します。そのため，「商品」レコードを親レコード，「売上」レコード，「仕入」レコードをそれぞれ子レコードとする，親子集合ができます。

(4)　ルートレコード

階層構造の最上位のレコードをルートレコードといいます。ルートレコードのレコード型をルートレコード型といいます。

ルートレコードは，親レコードを持つことはできません。子レコードを複数個持つことができます。

(5)　ファミリ

ルートレコード，およびそのルートレコードを親レコードとする子レコード（さらにその子レコードを親レコードとする子レコード）群をまとめてファミリといいます。

(6)　仮想ルートレコードと仮想親子集合【4V AFM】

親子集合を構成しない（階層構造を持たない）データベースを構築する場合，HiRDB/SDでは仮想のルートレコード（仮想ルートレコード）を親レコードとして設定し，仮想的な親子集合を構成します。これを仮想親子集合といいます。

TMS-4V/SPのAFMのデータベースは親子集合を持ちません。そのため，HiRDB/SDの4V AFMのSDBデータベースに移行する場合，仮想親子集合を構成します。

仮想親子集合の例を次の図に示します。

図2‒13　仮想親子集合の例

仮想ルートレコード型のレコード実現値は，通常のレコード実現値とは異なり，1つの子レコード型とだけ親子集合を構成します。つまり，仮想ルートレコード型の1つのレコード実現値に対する子レコード実現値はA，B，Cのどれかの子レコード型にしか存在しません。

2.3.6　ポインタによる親子集合の実現

親子集合で表現したレコード間の論理的な親子関係を，データベース中で関係づけます。これをポインタといいます。ポインタはSDBデータベース格納定義で定義できます。

次に示すポインタを親子集合を構成するレコード間に設定できます。ポインタの種類を次の表に示します。

表2‒7　ポインタの種類

ポインタの場所

種類

説明

親レコード

FIRSTポインタ

親レコードが子レコードを持つ場合，先頭の子レコードの位置情報を親レコードが管理するためにFIRSTポインタを持ちます。

FIRSTポインタは，親レコードに関係づけられた子レコードのレコード型ごとに設定されます。

LASTポインタ

親レコードが子レコードを持つ場合，最終の子レコードの位置情報を親レコードが管理するためにLASTポインタを持ちます。

LASTポインタは，親レコードに関係づけられた子レコードのレコード型ごとに設定されます。

USERポインタ

親レコードが子レコードを持つ場合，任意の子レコードの位置情報をレコード型ごとに1つだけ持つことができます。これをUSERポインタといいます。

USERポインタは，UAPの指示によって，設定・解除できます。USERポインタが設定されている場合は，UAPの指示によって，直接該当するレコードにアクセスできます。

4V FMBのSDBデータベースの場合に，USERポインタを設定できます。

子レコード

NEXTポインタ

同一レコード型の子レコードは，1つの親レコードに関連づけられたレコードの範囲内で，次のレコード（次の一連番号またはユーザキーを持つレコード）の位置情報を管理するために，NEXTポインタを持ちます。

最終レコードのNEXTポインタは親レコードを指します。

PRIORポインタ

同一レコード型の子レコードは，1つの親レコードに関連づけられたレコードの範囲内で，直前のレコード（1つ前の一連番号またはユーザキーを持つレコード）の位置情報を管理するために，PRIORポインタを持ちます。

先頭レコードのPRIORポインタは親レコードを指します。

レコードとポインタの関係を次の図に示します。

図2‒14　レコードとポインタの関係

2.3.7　SDBデータベースの横分割

SDBデータベースを複数のRDエリアに分割して格納することをSDBデータベースの横分割といいます。SDBデータベースの横分割をすると，ユーザ用RDエリア単位に，データロード，再編成，バックアップの取得などの運用ができます。

例えば，SDBデータベースを横分割してRDエリアに格納すると，バックアップの取得時にはバックアップ対象RDエリアにアクセスするUAPだけを停止すればよく，運用の操作性が向上します。

なお，横分割したレコードとインデクスを格納するRDエリアを同じバックエンドサーバに配置する必要があります。

SDBデータベースの横分割は，SDBデータベース格納定義で定義できます。SDBデータベースの横分割の例を次の図に示します。

図2‒15　SDBデータベースの横分割の例

［説明］

レコードとインデクスの横分割数は同じにする必要があります。

1つのバックエンドサーバ内でSDBデータベースを横分割する形態をサーバ内横分割といい，複数のバックエンドサーバにわたってSDBデータベースを横分割する形態をサーバ間横分割といいます。

SDBデータベースを横分割する方法には，格納条件を指定して横分割する方法と境界値を指定して横分割する方法があります。それぞれの方法について説明します。

(1)　格納条件指定による横分割

RDエリアにデータを格納する際，ルートレコードの構成要素の値を格納条件（RDエリア分割キー値）として指定します。HiRDB/SDは，ルートレコードを格納するときに，指定された格納条件に従って，該当するRDエリアにレコードを格納します。ルートレコードを親レコードとする子レコード群は，対応するルートレコードと同じRDエリアに格納されます。

図2‒16　格納条件指定の例

(2)　境界値指定による横分割【4V FMB，SD FMB】

RDエリアにデータを格納する際，ルートレコードの構成要素の値に対して境界値となる値（RDエリア分割キー値）を指定します。HiRDB/SDは，ルートレコードを格納するときに，指定された境界値に従って，該当するRDエリアにレコードを格納します。ルートレコードを親レコードとする子レコード群は，対応するルートレコードと同じRDエリアに格納されます。

境界値指定による横分割は，4V FMBまたはSD FMBのSDBデータベースの場合に使用できます。

図2‒17　境界値指定の例

(3)　分割格納条件の変更機能【4V FMB，4V AFM】

SDBデータベースの横分割数の変更が必要となった場合は，分割格納条件の変更機能で横分割数を変更できます。

分割格納条件を変更するには，HiRDB/SD定義ユティリティ（pdsdbdef）で*ALTER DICTIONARY文および*ALTER DIRECTORY文を実行します。

分割格納条件の変更の種類は，追加，分割，削除，統合の4種類があります。それぞれについて説明します。

なお，SD FMBのSDBデータベースの場合，*ALTER DICTIONARY文および*ALTER DIRECTORY文を実行できないため，分割格納条件の変更機能で横分割数を変更することはできません。

(a)　追加

新たな分割キー値を格納条件とするRDエリアを追加することです。

■格納条件指定

■境界値指定

該当しません。

(b)　分割

使用中の分割キー値を，既存のRDエリアと追加するRDエリアの両方で格納条件として使用する格納条件の変更です。

■格納条件指定

■境界値指定

(c)　削除

使用中の分割キー値を削除し，さらに削除したキー値を格納するRDエリア自体も削除する格納条件の変更です。

■格納条件指定

■境界値指定

該当しません。

(d)　統合

使用中の分割キー値をほかのRDエリアの格納条件とし，それまでそのキー値を格納していたRDエリアを削除する格納条件の変更です。

■格納条件指定

■境界値指定

2.3.8　インデクスの概要

HiRDB/SDでは，レコード実現値中の特定の構成要素の値に従ってデータを処理するために，該当する構成要素の値と，その値を持つレコード実現値の格納位置を管理します。この管理情報をインデクスと呼びます。インデクスを使用することで効率良くデータを検索できます。

HiRDB/SDが提供するインデクスには，シーケンシャルインデクスと二次インデクスがあります。それぞれのインデクスの概要を次の表に示します。

表2‒8　インデクスの概要

インデクス種別

用途

レコード型ごとの定義可否

4V FMBの場合

4V AFMの場合

SD FMBの場合

ルートレコード型

子レコード型

仮想ルートレコード型

子レコード型

ルートレコード型

子レコード型

シーケンシャルインデクス

ルートレコード，または仮想ルートレコードの検索※に使用します。

◎

×

◎

×

◎

×

二次インデクス

子レコードの検索や，子レコードを格納する際のレコード挿入位置の検索に使用します。

×

○

×

△

×

×

（凡例）

◎：必須で定義します。

○：任意で定義できます。

△：SDBデータベース種別やオペランドの指定によって定義有無が異なります。詳細については，「表11-62　二次インデクスの定義規則」を参照してください。

×：定義できません。

注※

4V AFMのSDBデータベースを検索する場合，シーケンシャルインデクスを使用して，HiRDB/SDが内部的に仮想ルートレコードを検索します。

シーケンシャルインデクスおよび二次インデクスとレコード実現値の対応の概要を，4V FMBのSDBデータベースの場合を例に次の図に示します。

図2‒18　シーケンシャルインデクスおよび二次インデクスとレコード実現値の対応の概要（4V FMBのSDBデータベースの場合）

2.3.9　シーケンシャルインデクス

シーケンシャルインデクスは，ルートレコード，または仮想ルートレコードの検索に使用するインデクスです。次の構成要素に必ず定義します。

4V FMBまたはSD FMBのSDBデータベースの場合

ルートレコード型の先頭の集団項目に定義したすべての基本項目の構成要素

4V AFMのSDBデータベースの場合

仮想ルートレコード型に定義したすべての基本項目の構成要素

シーケンシャルインデクスは指定した構成要素の値をキーとして，キーの昇順に作成されます。シーケンシャルインデクスはSDBデータベース格納定義のSEQUENTIAL句で定義します。

なお，仮想ルートレコード型に定義したシーケンシャルインデクスの場合，ほかのインデクス（4V FMBまたはSD FMBのSDBデータベースのルートレコード型に定義したシーケンシャルインデクス，または二次インデクス）とは次の点が異なります。

■仮想ルートレコード型に定義したシーケンシャルインデクスの場合

インデクスキーとレコード実現値の関係は，配下に有効な子レコード（一括削除後に無効な状態になる子レコードを除く）が存在する場合は2対1となり，配下に有効な子レコードが存在しない場合は1対1となります。

配下に有効な子レコードが存在する場合

2つのインデクスキー（システム用構成要素がX'0000'のインデクスキー，およびシステム用構成要素がX'0100'のインデクスキー）から仮想ルートレコード実現値に直接アクセスできる構造になります。

なお，システム用構成要素がX'0000'のインデクスキーは，ほかのインデクスと同様に，SDBデータベースを操作するAPIの実行時に仮想ルートレコードを検索するために使用されます。これに対し，システム用構成要素がX'0100'のインデクスキーは，HiRDB/SDが仮想ルートレコードの存在有無を判別するために使用されます。

仮想ルートレコード型に定義したシーケンシャルインデクスの物理構造（配下に有効な子レコードが存在する場合）を次の図に示します。

図2‒19　仮想ルートレコード型に定義したシーケンシャルインデクスの物理構造（配下に有効な子レコードが存在する場合）

配下に有効な子レコードが存在しない場合

1つのインデクスキー（システム用構成要素がX'0100'のインデクスキー）から，仮想ルートレコード実現値に直接アクセスできる構造になります。

仮想ルートレコード型に定義したシーケンシャルインデクスの物理構造（配下に有効な子レコードが存在しない場合）を次の図に示します。

図2‒20　仮想ルートレコード型に定義したシーケンシャルインデクスの物理構造（配下に有効な子レコードが存在しない場合）

■仮想ルートレコード型に定義したシーケンシャルインデクス以外のインデクスの場合

インデクスキーとレコード実現値の関係は，1対1固定となります。

仮想ルートレコード型に定義したシーケンシャルインデクス以外のインデクスの物理構造を次の図に示します。

図2‒21　仮想ルートレコード型に定義したシーケンシャルインデクス以外のインデクスの物理構造

2.3.10　二次インデクス【4V FMB，4V AFM】

二次インデクスは，子レコードの検索や，子レコードを格納する際のレコード挿入位置の検索に使用するインデクスです。SDBデータベースの子レコードの構成要素（一連番号，またはユーザキー）に定義します。

子レコードの数が多い場合，参照するレコード数が増えるため，NEXTポインタまたはPRIORポインタに従って順アクセスすると検索性能が低下するおそれがあります。

このように，NEXTポインタまたはPRIORポインタを使用した順アクセスによる検索では検索性能に問題がある場合は，二次インデクスを使用すると，特定の子レコードに直接アクセスできるので，検索性能を向上できます。

二次インデクスはSDBデータベース格納定義のSECONDARY INDEX句で定義します。

二次インデクスを使用した場合の検索について，NEXTポインタまたはPRIORポインタを使用して順アクセスで検索する場合との違いを次の図に示します。

なお，ポインタを使用した順アクセスによる検索をポインタ検索といいます。

図2‒22　二次インデクスを使用した検索（NEXTポインタまたはPRIORポインタを使用して順アクセスで検索する場合との違い）

二次インデクスが定義された子レコードの検索時や格納時に，二次インデクスを使用するかどうかは，HiRDB/SDが決定します。二次インデクスが使用される検索条件については，「(2)　子レコード検索時の二次インデクスの使用有無」および「(3)　子レコード格納時の二次インデクスの使用有無」を参照してください。

なお，二次インデクスは，4V FMBまたは4V AFMのSDBデータベースの場合に定義できます。

(1)　二次インデクスの効果が期待できるケース

二次インデクスの効果が期待できるケースについて，子レコードの検索時および子レコードの格納時について，それぞれ説明します。

(a)　子レコードの検索時

子レコードの検索時に二次インデクスの効果が期待できるケースについて，SDBデータベース種別ごとに説明します。

4V FMBのSDBデータベースの場合

子レコード実現値の数が多く，NEXTポインタまたはPRIORポインタを使用した順アクセスによる検索では検索性能に問題がある場合は，二次インデクスを使用することで検索性能を向上できます。

4V AFMのSDBデータベースの場合

子レコード実現値の数が多く，NEXTポインタまたはPRIORポインタを使用した順アクセスによる検索では検索性能に問題がある場合は，二次インデクスを使用することで検索性能を向上できます。

NEXTポインタまたはPRIORポインタを使用して順アクセスで検索するときに，検索経路上にほかのトランザクションによって更新された子レコードを格納するページが存在すると，排他処理待ちが発生して同時実行性が低下することがあります。

更新を含むトランザクションと参照だけのトランザクションを同時に実行するような場合，二次インデクスを使用すると，特定の子レコードに直接アクセスできるので，排他処理待ちの発生を軽減できます。

(b)　子レコードの格納時

4V FMBのSDBデータベースの場合，子レコードの格納時にレコードの挿入位置を検索します。この検索に二次インデクスを使用することで，検索性能を向上できます。また，二次インデクスを使用すると，レコード数やレコードの格納位置に依存しないでレコード挿入位置を検索できるので，子レコード格納時の性能が一定になります。子レコード格納時のレコード挿入位置の検索については，「2.5.6(2)　レコードの格納順序」を参照してください。

なお，二次インデクスが定義されていると，子レコード格納時にインデクスも更新されます。

(2)　子レコード検索時の二次インデクスの使用有無

子レコード検索時に二次インデクスを使用するかどうかは，親子集合位置指示子が指すレコードの一連番号またはユーザキーと，検索条件からHiRDB/SDが決定します。

なお，4V FMBのSDBデータベースでは，先頭のレコード（FIRSTポインタ）または最後のレコード（LASTポインタ）を基点とする検索の場合（SDBデータベースを操作するAPIの指示コードが'F'または'L'の場合）だけ二次インデクスが使用され，そのほかの検索では二次インデクスは使用されません（NEXTポインタまたはPRIORポインタを使用した順アクセスで検索されます）。

また，4V AFMのSDBデータベースでは，ユーザが指定した検索条件以外にも，検索範囲を絞り込める場合に，二次インデクスが使用されることがあります。

親子集合位置指示子については，「2.5.3　位置指示子」を参照してください。また，レコードの検索については，「2.5.4　レコードの検索」を参照してください。

レコード検索時の二次インデクスの使用有無を次の表に示します。

表2‒9　レコード検索時の二次インデクスの使用有無

項番

SDBデータベース種別

指示コード

検索条件※1

検索条件の有効/無効※3

二次インデクスの使用

1

4V FMB

F/L※2

あり

有効

○

2

無効

×

3

なし

−

4

上記以外

−

−

5

4V AFM

F/L/N/P

あり

有効

○

6

無効

×

7

なし

−

8

上記以外

−

−

（凡例）

F：先頭のレコード（親レコードのFIRSTポインタが指すレコード）を基点に，NEXTポインタに従って検索します。

N：位置づけされているレコードの次のレコード（NEXTポインタが指すレコード）を基点に，NEXTポインタに従って検索します。

L：最後のレコード（親レコードのLASTポインタが指すレコード）を基点に，PRIORポインタに従って検索します。

P：位置づけされているレコードの1つ前のレコード（PRIORポインタが指すレコード）を基点に，PRIORポインタに従って検索します。

○：二次インデクスが使用されます。

×：二次インデクスは使用されません。

−：該当しません。

注※1

二次インデクスの定義に指定した一連番号またはユーザキーを検索条件に指定している場合を「あり」，指定していない場合を「なし」とします。

注※2

親子集合位置指示子が位置づけられていない状態で，指示コード'N'，または'P'を指定して検索した場合も該当します。レコードの位置づけについては，「2.5.3(1)　レコードの位置づけ」を参照してください。

注※3

指定した検索条件が次に示す（a）〜（c）のどれかに該当する場合を「有効」，どれにも該当しない場合を「無効」とします。

次に示す（a）〜（c）のどれかに該当する場合，二次インデクスが使用されます。

(a) '='条件が指定されている場合

(b) 検索範囲に親子集合位置指示子が指すレコードが含まれない場合

(c) 検索範囲の基点を絞り込む条件が存在する場合

それぞれの検索条件の詳細について次に示します。

(a)　'='条件が指定されている場合

二次インデクスのキーを構成する一連番号またはユーザキーに対して，'='条件が指定されている場合，二次インデクスが使用されます。

'='条件が指定されている場合に，二次インデクスが使用される例を次の図に示します。

(b)　検索範囲に親子集合位置指示子が指すレコードが含まれない場合

4V AFMのSDBデータベースの場合，NEXTポインタまたはPRIORポインタに従って順アクセスする際に（SDBデータベースを操作するAPIの指示コードが'N'または'P'の場合に），二次インデクスの構成要素の一連番号またはユーザキーに対する条件によって決定される検索範囲に，親子集合位置指示子が指すレコードが含まれていなければ，二次インデクスが使用されます。

検索範囲に親子集合位置指示子が指すレコードが含まれないときに，二次インデクスが使用される例を次の図に示します。

(c)　検索範囲の基点を絞り込む条件が存在する場合

先頭のレコード（FIRSTポインタ）または最後のレコード（LASTポインタ）を基点とする検索の場合（SDBデータベースを操作するAPIの指示コードが'F'または'L'の場合），二次インデクスの構成要素の一連番号またはユーザキーに対する検索範囲の基点を絞り込む条件が存在すると，二次インデクスが使用されます。

二次インデクスの構成要素の一連番号またはユーザキーに対する検索範囲の基点を絞り込む条件が存在する場合に，二次インデクスが使用される例を次の図に示します。

(3)　子レコード格納時の二次インデクスの使用有無

次に示す条件をすべて満たしている場合，子レコード格納時のレコード挿入位置の検索に，二次インデクスが使用されます。

レコード実現値を格納するレコード型にユーザキーが定義されている。

レコード実現値を格納するレコード型に，上記のユーザキーを構成要素とする二次インデクスが定義されている。

二次インデクスを使用したレコード挿入位置の検索について，二次インデクスを使用しない場合と比較した例を次に示します。

二次インデクスを使用したレコード挿入位置の検索の例

ユーザキーの値が3であるレコードを格納するとします。

上記の条件を満たしていれば，二次インデクスを使用してレコードの挿入位置（格納するレコードのPRIORポインタに接続されるレコード）が検索されます。二次インデクスを使用することで，検索範囲を絞り込むことができるため，効率的にレコードの挿入位置が検索されます。

なお，上記の条件を満たしていない場合は，挿入位置が見つかるまでNEXTポインタまたはPRIORポインタを使用して順アクセスします。このため，レコードの挿入位置によって検索性能に差が出ます。

図2‒23　二次インデクスを使用したレコード挿入位置の検索の例

(4)　二次インデクスの使用有無の確認

HiRDB/SDが二次インデクスを使用して検索したかどうかは，次の方法で確認できます。

UAP統計レポートの出力結果

SDBデータベースへのアクセス時にTP1/FSPで使用するインタフェースエリアの，エントリ部の二次インデクス使用フラグ

UAP統計レポートについては，「16.5.5　UAP統計レポート機能」を参照してください。また，SDBデータベースへのアクセス時に使用するインタフェースエリアについては，マニュアル「TP1/Financial Service Platform 使用の手引」の「SDBハンドラ機能」の「インタフェースエリア構造」を参照してください。

(5)　二次インデクスに関する留意事項

一般的に，NEXTポインタまたはPRIORポインタに従って順アクセスするよりも，二次インデクスを使用した方が検索性能は向上します。ただし，次のような場合には，二次インデクスを使用した方が検索性能が低下することがあります。

検索の開始地点（親レコードのFIRSTポインタまたはLASTポインタ）の近傍に目的のレコードが存在する場合

二次インデクス中に無効なキーが多く存在する場合

レコードを削除した場合，対応するインデクスキーは物理的には削除されないで，無効なキーとなります。そのため，無効となっているキーを含む範囲を検索すると，二次インデクスを使用した方が検索性能が低下することがあります。

二次インデクスが定義されている場合，レコードの格納や削除に伴ってインデクスが更新されます。そのため，レコードの格納や削除が頻繁に繰り返されると，更新性能が低下することがあります。

2.4　SDBデータベースの定義

ここでは，SDBデータベースの定義と，SDBデータベースの定義を基に作成されるSDBディクショナリ情報およびSDBディレクトリ情報について説明します。

2.4.1　SDBデータベースの定義の種類

SDBデータベースの定義には，SDBデータベース定義とSDBデータベース格納定義の2つの定義があります。それぞれの定義内容を次の表に示します。

表2‒10　SDBデータベースの定義の種類と定義内容

SDBデータベースの定義の種類

定義内容

SDBデータベース定義

SDBデータベース定義には，SDBデータベースの論理構造を定義します。データ操作の対象となるレコードの構成やレコード間の親子関係などを定義します。

SDBデータベース定義の詳細については，「11．HiRDB/SD定義ユティリティ（pdsdbdef）」を参照してください。

SDBデータベース格納定義

SDBデータベース格納定義には，SDBデータベースの格納構造を定義します。インデクスの構成要素や親子関係を実現するためのポインタなどを定義します。

SDBデータベース格納定義の詳細については，「11．HiRDB/SD定義ユティリティ（pdsdbdef）」を参照してください。

上記の表に示す2つの定義を作成してHiRDB/SD定義ユティリティ（pdsdbdef）を実行すると，SDBデータベースが定義されます。このとき，次の表に示す2つの情報が作成され，ディクショナリ表に格納されます。HiRDB/SDはこれら2つの情報でSDBデータベースの定義情報を管理します。

表2‒11　HiRDB/SD定義ユティリティ（pdsdbdef）実行時に出力される情報

定義情報の種類

内容

SDBディクショナリ情報

ユーザが定義したSDBデータベースの定義情報を，ユーザが記述した形式に近い状態で保持したものです。

SDBディレクトリ情報

SDBデータベースのSDBディクショナリ情報を，HiRDB/SDが解釈しやすい形式に変換したものです。

ディクショナリ表に格納される情報の詳細については，「付録B　ディクショナリ表」を参照してください。

2.4.2　SDBディレクトリ情報の常駐化

HiRDB/SDでは，ディクショナリ表に格納されたSDBディレクトリ情報を，SDBディレクトリ情報ファイルに出力して使用します。SDBディレクトリ情報ファイルとは，SDBデータベースへのアクセスに必要な情報を出力したファイルです。

出力したSDBディレクトリ情報ファイルを全ユニットに配布し，ユニットの開始時にSDBディレクトリ情報を共用メモリ上に常駐化します。UAPおよび一部のコマンドは，共用メモリ上に常駐化されたSDBディレクトリ情報を使用してSDBデータベースにアクセスします。

SDBディレクトリ情報の共用メモリ上への常駐化（ユニットの開始時）を次の図に示します。

図2‒24　SDBディレクトリ情報の共用メモリ上への常駐化（ユニットの開始時）

［説明］

HiRDB/SD定義ユティリティ（pdsdbdef）を使用して，SDBディレクトリ情報をSDBディレクトリ情報ファイルに出力します。

1.で出力したSDBディレクトリ情報ファイルを全ユニットに配布します。

ユニットの開始時（ユニットの再開始時を含む），SDBディレクトリ情報が共用メモリ上に常駐化されます。SDBディレクトリ情報を格納する領域を常用常駐領域といいます。

上記の流れで，SDBディレクトリ情報が共用メモリ上に常駐化されます。

なお，1.と2.は，HiRDB/SD定義ユティリティ（pdsdbdef）の1回の操作で実行できます。

また，HiRDBの稼働中に，運用コマンドを使用して共用メモリ上のSDBディレクトリ情報を切り替えることもできます。これによって，HiRDBの稼働中にSDBデータベースの定義を追加したり，変更したりできます。

SDBディレクトリ情報の常駐化コマンド（pdsdbarcコマンド）によるSDBディレクトリ情報の共用メモリ上への常駐化を次の図に示します。

図2‒25　SDBディレクトリ情報の常駐化コマンド（pdsdbarcコマンド）によるSDBディレクトリ情報の共用メモリ上への常駐化

［説明］

HiRDB/SD定義ユティリティ（pdsdbdef）を使用して，SDBディレクトリ情報をSDBディレクトリ情報ファイルに出力します。

1.で出力したSDBディレクトリ情報ファイルを全ユニットに配布します。

SDBディレクトリ情報の常駐化コマンド（pdsdbarc -eコマンド）を実行すると，2.で配布したSDBディレクトリ情報ファイル中のSDBディレクトリ情報が，共用メモリ上の事前常駐領域に格納されます。

SDBディレクトリ情報の常駐化コマンド（pdsdbarc -w -qコマンド）を実行すると，事前常駐領域を常用常駐領域に切り替えられます。

上記の流れで，SDBディレクトリ情報が共用メモリ上に常駐化されます。

なお，1.と2.は，HiRDB/SD定義ユティリティ（pdsdbdef）の1回の操作で実行できます。

2.5　SDBデータベースの操作

ここでは，SDBデータベースを操作する際の基本的な考え方や仕組みについて説明します。

4V FMBまたは4V AFMのSDBデータベースを操作するには，TP1/FSPが提供するライブラリ関数を使用するか，またはHiRDB/SDデータベースアクセスユティリティ（pdsdbexe）を使用します。

SD FMBのSDBデータベースを操作するには，埋込み型UAPに記述したDMLを使用します。

TP1/FSPが提供するライブラリ関数を使用したSDBデータベースの具体的な操作方法や，TP1/FSPが提供するライブラリ関数については，次のマニュアルを参照してください。

「TP1/Financial Service Platform 使用の手引」

「TP1/Financial Service Platform プログラム作成の手引」

「TP1/Server Base Enterprise Option　プログラム作成の手引」

HiRDB/SDデータベースアクセスユティリティ（pdsdbexe）を使用したSDBデータベースの具体的な操作方法については，「14.　HiRDB/SDデータベースアクセスユティリティ（pdsdbexe）【4V FMB，4V AFM】」を参照してください。

DMLについては，「17．DMLリファレンス【SD FMB】」を，埋込み型UAPの作成方法については，マニュアル「HiRDB Version 9 構造型データベース機能（UAP開発編）」を参照してください。

2.5.1　SDBデータベースの操作の概要（4V FMBまたは4V AFMの場合）

(1)　SDBデータベースに対する操作（API）

4V FMBまたは4V AFMのSDBデータベースは，次の表に示すAPIを使用して操作します。これらのAPIを「SDBデータベースを操作するAPI」と表記します。

表2‒12　SDBデータベースに対する操作（API）

項目

説明

個別開始

SDBデータベースに対する操作を開始します。

SDBデータベースに対する操作の開始時に，位置指示子の生成を行います。

位置指示子については，「2.5.3　位置指示子」を参照してください。

個別終了

SDBデータベースに対する操作を終了します。

SDBデータベースに対する操作の終了時に，位置指示子の解放を行います。

レコードの検索（FETCH）

操作対象にしたいレコードを検索し，TP1/FSPが用意するデータ格納エリアにレコードを取り出します。

複数レコードの検索（FETCHDB ALL）

ルートレコード以下のレコードを一括して検索し，TP1/FSPが用意するデータ格納エリアに，レコードを取り出します。

複数レコードの検索は，ファミリ単位で行われます。

1ファミリの検索中であっても，データ格納エリアが満杯になると検索を中断します。この場合は，複数レコードの検索を複数回実行することで1ファミリのレコードを取得できます。

4V FMBのSDBデータベースの場合に，複数レコードの検索ができます。

レコードの格納（STORE）

1件のレコードを格納します。

レコードの更新（MODIFY）

1件のレコードの内容を更新します。

レコードの削除（ERASE）

1件以上のレコードを削除します。

削除するレコードが最下位のレコードである場合，そのレコードだけを削除します。

削除するレコードに子レコードが存在する場合，子レコードも同時に削除します。

4V FMBのSDBデータベースで，削除対象のレコードが最下位のレコードであれば，APIの一括オプションに'O'を指定することで，当該親レコード下のすべての子レコードを一括で削除できます。

レコードの一括削除

指定したキー（一連番号を除く）に対応したレコードを一括削除します。

4V DAMまたは4V SAMのSDBデータベースの場合に，レコードの一括削除ができます。

構成情報取得

指定したキーに対応したレコードの容量情報（割り当て済み一連番号）を取得します。

構成情報取得は，個別開始からSDBデータベースを操作する前までに実行してください。SDBデータベース操作後（レコードの検索など）に，構成情報取得はできません。

4V AFMのSDBデータベースの場合に，構成情報取得を実行できます。

(2)　データ格納エリア

データ格納エリアは，SDBデータベースに対する操作を実行する際，検索したレコードを取り出したり，格納するレコードを設定したりするために使用する領域です。

データ格納エリアはTP1/FSPが用意します。データ格納エリアのサイズはユーザが指定します。

通常，レコードの検索時は，データ格納エリアには1件のレコードが格納されますが，複数レコードの検索をする場合は，複数レコードを格納するため，レコードの格納形式が異なります。

複数レコードの検索時の，データ格納エリアに対するレコードの格納形式については，「付録M　複数レコードの検索時の，データ格納エリアに対するレコードの格納形式【4V FMB】」を参照してください。

2.5.2　SDBデータベースの操作の概要（SD FMBの場合）

(1)　SDBデータベースに対する操作（DML）

SD FMBのSDBデータベースは，次の表に示すDMLを使用して操作します。

表2‒13　SDBデータベースに対する操作（DML）

項目

説明

個別開始

SDBデータベースに対する操作を開始します。

SDBデータベースに対する操作の開始時に，位置指示子の生成を行います。位置指示子については，「2.5.3　位置指示子」を参照してください。

個別開始はDMLで要求するのではなく，各SDBデータベースに対する最初の操作要求時にシステムが自動的に実行します。

個別終了

SDBデータベースに対する操作を終了します。

SDBデータベースに対する操作の終了時に，位置指示子の解放を行います。

個別終了はDMLで要求するのではなく，トランザクションの終了時にシステムが自動的に実行します。

レコードの検索（FETCH）

操作対象にしたいレコードを検索し，埋込み変数にレコードを取り出します。埋込み変数については，「(2)　埋込み変数」を参照してください。

位置指示子の位置づけ（FIND）

1件のレコードに対して位置指示子の位置づけを行います。

レコードの格納（STORE）

1件のレコードを格納します。

レコードの更新（MODIFY）

1件のレコードの内容を更新します。

レコードの削除（ERASE）

1件以上のレコードを削除します。

削除するレコードが最下位のレコードの場合，そのレコードだけを削除します。

削除するレコードに子レコードが存在する場合，子レコードも同時に削除します。

(2)　埋込み変数

埋込み変数は，SDBデータベースに対する操作をする際，検索したレコードを取り出したり，格納するレコードを設定したりするために使用する領域です。

埋込み変数は，埋込み型UAPのソースプログラム中で宣言します。埋込み変数の宣言方法や使い方については，マニュアル「HiRDB Version 9 構造型データベース機能（UAP開発編）」の「埋込み変数の宣言 」を参照してください。

2.5.3　位置指示子

HiRDB/SDは，操作中のレコードや親子集合を識別するための情報を保持します。この情報を位置指示子といいます。HiRDB/SDでは，位置指示子を使用してレコードや親子集合に対する操作を行います。

(1)　レコードの位置づけ

レコードの検索や格納などを行うと，そのレコードの位置情報が位置指示子に保持されます。これをレコードの位置づけといいます。レコードの位置づけは，ルートレコードから開始して，操作対象とするレコードまで位置づけます。

SDBデータベースにアクセスする場合は，操作の基点となるレコードを検索し，レコードに位置指示子を位置づけます。操作の対象としたいレコードに位置指示子を位置づけることで，以後の操作で，そのレコードを基点にSDBデータベースを操作できます。

レコードの更新や削除をする場合は，直前に位置づけられたレコードを対象とします。そのため，レコードの位置づけを行わないで，レコードの更新やレコードの削除はできません。

また，4V FMBのSDBデータベースのルートレコードを削除する場合は，構成要素名にDBKEYを指定した＝条件の検索で位置づけを行う必要があります。

参考

レコードの一括削除や複数レコードの検索では，レコードの位置づけは不要です。

(2)　位置指示子の種類

位置指示子にはレコード位置指示子と親子集合位置指示子があります。

図2‒26　レコード位置指示子と親子集合位置指示子

(a)　レコード位置指示子

最後に操作したレコードの位置を示す位置指示子をレコード位置指示子といいます。

レコード位置指示子は，レコード型ごとに生成されます。

(b)　親子集合位置指示子

最後に操作した親レコード，および子レコードの位置を示す位置指示子を親子集合位置指示子といいます。

子レコードが削除された場合，削除されたレコードの，前後のレコードの位置情報を保持することがあります。そのため，親子集合位置指示子は，親レコードに対する位置指示子と，子レコードに対する2つの位置指示子で構成されます。

親子集合位置指示子は，親子集合型ごとに生成されます。

(3)　位置指示子の生成と消滅

位置指示子は個別開始時（SDBデータベース単位の操作開始時）にレコード型，親子集合型ごとに生成され，個別終了時（SDBデータベース単位の操作終了時）およびトランザクション終了時に消滅します。

(4)　位置指示子の状態

通常，位置指示子は操作中のレコードや親子集合を識別するための情報を保持します。ここでは位置指示子の特殊な状態について説明します。

(a)　空値

位置指示子がどのレコードも指していないか，または位置指示子に親子集合中のレコードを検索するために必要な情報が設定されていない状態を空値といいます。

個別開始時点の位置指示子は空値となります。個別開始後，SDBデータベースを操作することによって，レコードを識別するために必要な情報が位置指示子に設定されます。

(b)　親子集合位置指示子に設定されるレコード

親子集合位置指示子に設定されるレコードは，最後に操作したレコードが親レコードか子レコードかによって異なります。

最後に操作したレコードが親レコードの場合

親レコードが設定されます。子レコードに対する親子集合位置指示子は空値となります。

最後に操作したレコードが子レコードの場合

子レコード，およびその子レコードに関連づけられている親レコードが設定されます。

(c)　子レコード削除後の親子集合位置指示子の状態（複合状態）

子レコードを削除した場合，削除した子レコードの位置によって，子レコードの削除後に親子集合位置指示子が保持する情報が異なります。このときの親子集合位置指示子の状態を複合状態といいます。

中間のレコードを削除した場合，親子集合位置指示子では，削除した子レコードの前後のレコードの位置情報を保持します。ただし，先頭の子レコードを削除した場合は，削除した子レコードの次のレコードの位置情報だけを保持します。また，最後尾の子レコードを削除した場合は，削除した子レコードの前のレコードの位置情報だけを保持します。

子レコードを削除した場合の親子集合位置指示子の状態の例を次の図に示します。

図2‒27　子レコードを削除した場合の親子集合位置指示子の状態の例（複合状態の例）

(5)　エラー発生時の位置指示子の状態

SDBデータベースの操作でエラーが発生した場合，エラーが発生したレコード型のレコード位置指示子は次のどちらかの状態になります。

エラーが発生する前の状態

空値

また，親子集合位置指示子についても同様です。このため，エラー発生後も同一トランザクション内でSDBデータベースの操作を続ける場合は，必要に応じて位置指示子を位置づけ直してから，SDBデータベースの操作を行ってください。

2.5.4　レコードの検索

SDBデータベース中のレコードを検索し，データ格納エリアまたは埋込み変数にレコードを取り出します。検索されたレコードに対してはレコードの位置づけが行われます。

(1)　レコードのアクセス順序

レコードのアクセス順序について，SDBデータベース種別ごとに説明します。

(a)　4V FMBまたはSD FMBのSDBデータベースの場合

4V FMBまたはSD FMBのSDBデータベースの場合，データベースが階層構造を持つため，レコードへのアクセスもルートレコードから階層順に行う必要があります（「図2-28　4V FMBまたはSD FMBのSDBデータベースのアクセス順序の概要」の場合，レコードA1→C1の順にアクセスしたり，レコードC1に直接アクセスしたりすることはできません）。

レコードの検索，格納，および位置指示子の位置づけを行うと，レコードの位置づけが行われ，そのレコードの子レコードに対してアクセスができるようになります。

同一レコード型の別レコードに対してレコードの位置づけを行うと，前回アクセスしたレコードの子レコードに対してはアクセスできなくなり，今回アクセスしたレコードの子レコードに対してアクセスできるようになります。

4V FMBまたはSD FMBのSDBデータベースのアクセス順序の概要を次の図に示します。この図では，レコードA1→B1→B2→A1の順序で検索します。

図2‒28　4V FMBまたはSD FMBのSDBデータベースのアクセス順序の概要

注

SD FMBのSDBデータベースの場合，上記の図中の個別開始はシステムが内部的に実行します。

ポイント

HiRDB/SDでは，レコードの検索や格納などを行うと，そのレコードの位置情報を保持します。この情報を位置指示子といいます。HiRDB/SDは，位置指示子を使用してSDBデータベースにアクセスします。位置指示子については，「2.5.3　位置指示子」を参照してください。

(b)　4V AFMのSDBデータベースの場合

4V AFMのSDBデータベースの場合，データベースが階層構造を持たないため，指定したレコードに直接アクセスできます。

参考

4V AFMのSDBデータベースでは仮想ルートレコード型を定義して，仮想親子集合を構成しますが，レコードへのアクセス時に仮想ルートレコードを意識する必要はありません。

(2)　検索の基点となるレコードと検索の方向

SDBデータベースでは，レコードに設定されたポインタに従ってレコードの格納順にレコードを検索します。そのため，レコードを検索する場合は，検索の基点となるレコードと検索の方向を指定します。

(a)　検索の基点となるレコード

検索の基点となるレコードをAPIまたはDMLの指示コードで指定します。指定できる指示コードと検索の基点となるレコードを次の表に示します。

表2‒14　指示コードと検索の基点となるレコード

指示コード

検索の基点となるレコード

説明

APIの場合

DMLの場合

F

FIRST

先頭のレコード（FIRSTポインタ）

ルートレコードの場合は，シーケンシャルインデクスのキー値の最小値を持つレコードが検索の基点となります。

子レコードの場合は，親レコードのFIRSTポインタが指すレコードが検索の基点となります。

L

LAST

最後のレコード（LASTポインタ）

子レコードの場合は，親レコードのLASTポインタが指すレコードが検索の基点となります。

ルートレコードの場合は指定できません。

U

−

USERポインタが指すレコード

子レコードの場合は，親レコードのUSERポインタが指すレコードが検索の基点となります。

ルートレコードの場合は指定できません。

N

NEXT

位置づけされているレコードの次のレコード（NEXTポインタ）

ルートレコードの場合は，位置づけされたレコードの次のレコード（レコード位置指示子が指すレコードの，シーケンシャルインデクスのキー値の次のキー値を持つレコード）が検索の基点となります。

子レコードの場合は，位置づけされているレコードの次のレコード（親子集合位置指示子の子レコードが指すレコードの，NEXTポインタが指すレコード）が検索の基点となります。

なお，親子集合位置指示子が空値の場合は，親レコードのFIRSTポインタが指すレコードが検索の基点となります。

P

PRIOR

位置づけされているレコードの1つ前のレコード（PRIORポインタ）

子レコードの場合は，位置づけされているレコードの1つ前のレコード（親子集合位置指示子の子レコードが指すレコードの，PRIORポインタが指すレコード）が検索の基点となります。

なお，親子集合位置指示子が空値の場合は，親レコードのLASTポインタが指すレコードが検索の基点となります。

ルートレコードの場合は指定できません。

（凡例）

−：該当する指示コードはありません。

(b)　検索の方向

4V FMBのSDBデータベースを操作する場合，USERポインタを基点とした検索の方向を，APIの検索コードで指定します。昇順・降順の順序性は，ユーザキーを持つ場合はユーザキー，持たない場合は一連番号に従います。

表2‒15　検索コードと検索の方向

検索コード

説明

N

NEXTポインタに従って検索します。

P

PRIORポインタに従って検索します。

なお，4V AFMまたはSD FMBのSDBデータベースを操作する場合は，検索コードは指定できません。

(3)　レコードの検索範囲

検索の基点となるレコードと検索の方向の組み合わせによって，レコードの検索範囲が決定します。レコードと検索の方向の組み合わせを次の図に示します。

図2‒29　検索の基点となるレコードと検索の方向の組み合わせと検索範囲

注意事項

4V FMBまたは4V AFMのSDBデータベースの場合，SDBデータベース種別やルートレコード・子レコードによって実行できない組み合わせがあります。詳細については，マニュアル「TP1/Financial Service Platform 使用の手引」の「SDBハンドラ機能」の「レコード検索範囲」を参照してください。

また，レコードの特定方法によっては，レコードの検索範囲は無視されます。

(4)　レコードの特定方法

レコードの検索では，次のどれかの方法でレコードを特定します。

特定位置のレコード（FIRSTポインタ，LASTポインタ，またはUSERポインタが指すレコード）を対象とする。

検索条件（DMLの場合はキーの条件）に該当する最初のレコードを対象とする。

前回検索したレコードの前後のレコードを対象とする。

(5)　レコードの位置づけ

ルートレコードの検索（FETCH）時，または位置指示子の位置づけ（FIND）時は，レコードに位置指示子を位置づけておく必要はありません。

子レコードの検索時は，位置指示子を親レコードに位置づけておく必要があります。ただし，4V AFMのSDBデータベースの場合は，位置指示子を親レコードに位置づけておく必要はありません（親レコードになる仮想ルートレコードの検索と位置づけをHiRDB/SDが内部的に行います）。

レコードの位置づけについては，「2.5.3(1)　レコードの位置づけ」を参照してください。

(6)　個別開始/終了一括要求オプションを指定したレコードの検索

4V FMBまたは4V AFMのSDBデータベースを操作するAPIで個別開始/終了一括要求オプションを指定すると，UAPから個別開始および個別終了の要求を行わなくてもレコードを検索できます。個別開始/終了一括要求オプションの指定方法については，マニュアル「TP1/Financial Service Platform 使用の手引」の「SDBハンドラ機能」の「個別開始/終了一括要求」を参照してください。

なお，SD FMBのSDBデータベースを操作するDMLでは，個別開始/終了一括要求オプションは指定できません。

(a)　レコードの検索処理の流れ

個別開始/終了一括要求オプションを指定した場合のレコードの検索処理の流れを次の図に示します。

図2‒30　レコードの検索処理の流れ（個別開始/終了一括要求オプションを指定した場合）

個別開始/終了一括要求オプションを指定しない場合のレコードの検索処理の流れを次の図に示します。

図2‒31　レコードの検索処理の流れ（個別開始/終了一括要求オプションを指定しない場合）

(b)　個別開始/終了一括要求オプションの適用基準

個別開始後，レコードの検索を1回だけ実行して個別終了を要求するような場合，個別開始/終了一括要求オプションを指定すると，UAPからの個別開始および個別終了の要求が不要になるため，個別開始と個別終了によるUAPとHiRDB間の処理のオーバーヘッドがなくなり，性能が向上します。

ただし，個別開始/終了一括要求オプションを指定した場合，レコードの検索後に個別終了が実行されるため，次のようなレコードの位置づけを目的としたレコード検索はできません。

レコードの更新や削除をするためのレコードの検索

次のレコードの検索要求で，検索の基点とするためのレコードの検索

また，レコードの位置づけを目的としないレコードの検索の場合でも，同じSDBデータベースに対して複数回レコードの検索を行う際に，このオプションを指定すると，レコードの検索を行うごとに個別開始および個別終了処理が実行されるため，性能低下の原因になるおそれがあります。

(c)　留意事項

個別開始/終了一括要求オプションを指定した場合，UAPからの個別開始および個別終了の要求は不要になります。しかし，個別開始および個別終了の処理は実行されるため，個別開始および個別終了の要求を実行したものとしてメモリ所要量を見積もってください。

同一トランザクション内で，個別開始/終了一括要求オプションを指定したレコードの検索と，個別開始の要求を行うSDBデータベースの操作を混在して実行できます。

個別開始/終了一括要求オプションを指定した場合，オプションを指定しない場合に比べて次の点が異なります。

排他自動解除機能を使用している場合，検索したレコード実現値の格納ページに対する排他は解除されます。

個別開始/終了一括要求オプションを指定して検索したレコード実現値を，同一トランザクション内で再度検索したり，一括削除したりしてもアクセス競合のエラーは発生しません。

2.5.5　位置指示子の位置づけ【SD FMB】

SD FMBのSDBデータベース中のルートレコードを走査し，レコード実現値に対してレコードの位置づけを行います。

(1)　レコードの走査順序

ルートレコードをシーケンシャルインデクスのキー値の昇順に走査します。

(2)　走査の基点となるレコードと走査の方向

走査の基点となるレコードと走査の方向は，DMLの指示コードで指定します。DMLで指定できる指示コードと走査の基点となるレコードを次の表に示します。

表2‒16　DMLで指定できる指示コードと走査の基点となるレコード

DMLで指定できる指示コード

走査の基点となるレコード

説明

FIRST

先頭のレコード

シーケンシャルインデクスのキー値の最小値を持つレコードが走査の基点となります。

NEXT

位置づけされているレコードの次のレコード

位置づけされたレコードの次のレコード（レコード位置指示子が指すレコードの，シーケンシャルインデクスのキー値の次のキー値を持つレコード）が走査の基点となります。

(3)　レコードの走査範囲

走査の基点となるレコードと走査の方向を次の図に示します。

図2‒32　走査の基点となるレコードと走査の方向と走査範囲

(4)　レコードの特定方法

レコードの走査では，次のどれかの方法でレコードを特定します。

ルートレコードのデータベースキー値の最小値を持つレコードを対象とします。

キーの条件に該当する最初のレコードを対象とします。

位置づけられているルートレコードのデータベースキー値の，次のキー値を持つレコードを対象とします。

(5)　レコードの位置づけ

位置指示子の位置づけを行う場合は，レコードに位置指示子を位置づけておく必要はありません。

2.5.6　レコードの格納

SDBデータベースに，1件のレコードを格納します。TP1/FSPが提供するライブラリ関数を使用する場合，格納するデータはデータ格納エリアに設定します。DMLを使用する場合，格納するデータは埋込み変数に設定します。格納されたレコードに対しては，レコードの位置づけが行われます。

なお，ユーザキーが定義されている4V MAMまたは4V TAMのSDBデータベースにレコードを格納する場合，格納するユーザキーにはLASTポインタが示すレコードのユーザキーよりも，大きな値を設定する必要があります。

(1)　USERポインタの設定【4V FMB】

4V FMBのSDBデータベースの子レコードを格納する場合，親レコード型にUSERポインタの定義があれば（SDBデータベース格納定義のOWNER POINTER FOR句にFIRST LAST USERを指定していれば），USERポインタを設定できます。

(2)　レコードの格納順序

レコード格納時の格納順序は，レコードによって異なります。レコードの格納順序について，次に説明します。

なお，レコードの配置制御（具体的に，どのページにどのようにレコードを格納するか）については，次の項目を参照してください。

「2.6　レコードの配置制御（サブページ分割をしない場合）」

「2.7　レコードの配置制御（サブページ分割をする場合）」

(a)　ルートレコードの格納順序

ルートレコードに格納順序はありません。

なお，ルートレコードの検索に使用するシーケンシャルインデクスは，データベースキーの昇順に作成されます。そのため，ルートレコードは，データベースキーの昇順に検索されます。

(b)　子レコードの格納順序

子レコードは次のどちらかの方法で格納されます。子レコードの格納方法は，子レコード型の定義でユーザキーを定義しているかどうかで異なります。

キー順での格納（SDBデータベース定義のORDER SORTED DUPLICATES PROHIBITED指定）

子レコード型の定義でユーザキーを定義している場合，格納するレコード中のユーザキーの値に従って，HiRDB/SDがレコードの挿入位置を検索します。その検索結果に従って，キーの昇順または降順にレコードが格納されます。

子レコード群の最後尾への格納（SDBデータベース定義のORDER LAST指定）

子レコード型の定義でユーザキーを定義していない場合，HiRDB/SDがレコードの子レコード群の最後尾を検索します。その検索結果に従って，レコードが格納されます。

それぞれのレコードの格納方法を次の図に示します。

図2‒33　レコードの格納方法

(3)　レコードの位置づけ

ルートレコードの格納時は，レコードに位置指示子を位置づけておく必要はありません。

子レコードの格納時は，位置指示子を親レコードに位置づけておく必要があります。ただし，4V AFMのSDBデータベースの場合は，位置指示子を親レコードに位置づけておく必要はありません（親レコードになる仮想ルートレコードの位置づけをHiRDB/SDが内部的に行います）。

レコードの位置づけについては，「2.5.3(1)　レコードの位置づけ」を参照してください。

2.5.7　レコードの更新

SDBデータベースの，1件のレコードの内容を更新します。TP1/FSPが提供するライブラリ関数を使用する場合，更新するデータはデータ格納エリアに設定します。DMLを使用する場合，更新するデータは埋込み変数に設定します。

(1)　USERポインタの設定・解除【4V FMB】

4V FMBのSDBデータベースの子レコードを更新する場合，親レコード型にUSERポインタの定義があれば（SDBデータベース格納定義のOWNER POINTER FOR句にFIRST LAST USERを指定していれば），USERポインタの設定および解除もできます。このとき，レコード実現値を更新しないで，USERポインタだけを変更することもできます。

(2)　レコードの位置づけ

レコードを更新する場合は，位置指示子を対象のレコードに位置づけておく必要があります。

レコードの位置づけについては，「2.5.3(1)　レコードの位置づけ」を参照してください。

2.5.8　レコードの削除

SDBデータベースから，1件以上のレコードを削除します。

削除するレコードが最下位のレコードである場合，そのレコードだけを削除します。削除するレコードに子レコードが存在する場合，子レコードも同時に削除します。

4V FMBのSDBデータベースの場合，SDBデータベースを操作するAPIの一括オプションに'O'を指定することで，最下位のレコードをすべて削除することもできます。ただし，ルートレコードは最下層のレコードであっても，一括オプションに'O'を指定した削除はできません。ルートレコードを削除する場合には，一括オプションに'S'を指定してください。

(1)　USERポインタの解除【4V FMB】

USERポインタの指すレコードを削除した場合，USERポインタは解除されます。

(2)　レコードの位置づけ

レコードを削除する場合は，削除するレコードに位置指示子を位置づけておく必要があります。

なお，4V FMBのSDBデータベースで最下位のレコードをすべて削除する場合は，削除する最下位のレコードのどれかに位置指示子を位置づけておく必要があります。また，4V FMBのSDBデータベースでルートレコードを削除する場合は，構成要素名にDBKEYを指定した＝条件の検索で，削除対象のレコードに位置指示子を位置づけておく必要があります。

レコードの位置づけについては，「2.5.3(1)　レコードの位置づけ」を参照してください。

2.5.9　レコードの一括削除【4V DAM，4V SAM】

SDBデータベースから，指定したデータベースキー（一連番号を除く）に対応したレコードを一括して削除します。

レコードの一括削除は，4V DAMまたは4V SAMのSDBデータベースの場合に実行できます。

参考

レコードの一括削除では，レコードの管理情報を更新して，レコードが削除された状態にします。実際のレコード自体は削除されません。

(1)　レコードの位置づけ

レコードの一括削除をする場合は，削除するレコードに位置指示子を位置づけておく必要はありません。

レコードの位置づけについては，「2.5.3(1)　レコードの位置づけ」を参照してください。

2.5.10　複数レコードの検索【4V FMB】

複数レコードの検索とは，ルートレコード以下のすべてのレコードを検索し，データ格納エリアに一括して取得する機能です。レコードを一括して検索することによって，レコードを1件ずつ検索するよりも，検索時のオーバヘッドを抑えることができます。

複数レコードの検索は，4V FMBのSDBデータベースの場合に実行できます。

複数レコードの検索の概要を次の図に示します。

図2‒34　複数レコードの検索の概要

(1)　複数レコードの検索の詳細

複数レコードの検索の詳細を次に示します。

複数レコードの検索は，ルートレコードから開始し，レコード型を一筆書き順に検索します。レコード型の一筆書き順については，「11.5.1(3)　定義句の指定順序」の「図11-11　RECORD句およびSET句の指定順序（一筆書き順）の規則」を参照してください。

検索するルートレコードの条件を指定すると，検索する範囲を限定できます。

取得したレコードは，データ格納エリアにまとめて格納されます。

複数レコードの検索は，ファミリ単位で行われます。1ファミリの検索が完了すると，データ格納エリアに未使用領域があっても，検索を継続しないでUAPにリターンします。

1ファミリの検索中であっても，データ格納エリアが満杯になると検索を中断して，UAPにリターンします。

複数レコードの検索時は，データ格納エリアに対するレコードの格納形式が異なります。レコードを取り出す際には，複数レコードの検索時のレコードの格納形式に従って取り出します。複数レコードの検索時の，データ格納エリアに対するレコードの格納形式については，「付録M　複数レコードの検索時の，データ格納エリアに対するレコードの格納形式【4V FMB】」を参照してください。

(2)　検索時の動作と指示コードの指定

複数レコードを検索するAPIでは，検索時の動作を指示コードで指定できます。

複数レコードの検索で指定する指示コードと検索時の動作を次の表に示します。

表2‒17　複数レコードの検索で指定する指示コードと検索時の動作

項番

指示コード

検索時の動作

1

'F'

条件式で指定されたルートレコードから検索を開始します。

2

'N'

前回，複数レコードの検索で検索したレコードの，次のレコードから検索を開始します。

3

'S'

前回，複数レコードの検索で検索したファミリの，次のファミリ（次のルートレコード）から検索を開始します。

(3)　複数レコードの検索の流れ

複数レコードの検索の流れを次に示します。実際のAPIの指定方法については，マニュアル「TP1/Financial Service Platform プログラム作成の手引」を参照してください。

複数レコードの検索専用オプションを指定して，個別開始を実行します。

指示コードに'F'を指定して，複数レコードの検索を実行します。

検索するルートレコードの条件を指定すると，検索する範囲を限定できます。条件を指定しない場合はすべてのレコードが検索対象となります。

必要に応じて，データ格納エリアからデータを取り出します。

2.の複数レコードの検索の状態によって，次のどちらかの検索を実行します。

1ファミリのレコードをすべて検索した場合

指示コードに'N'，または'S'を指定して，再度複数レコードの検索を実行し，次のルートレコードのファミリを検索します。

1ファミリの検索の途中でデータ格納エリアが満杯になった場合

現在検索しているファミリを継続して検索する場合は，指示コードに'N'を指定して，再度複数レコードの検索を実行します。

現在検索しているファミリの検索を中断して，次のファミリを検索する場合は，指示コードに'S'を指定して，再度複数レコードの検索を実行します。

検索対象がなくなり，検索結果がNOT FOUNDになるまで4.を繰り返します。

(4)　レコードの位置づけ

複数レコードの検索時は，レコードに位置指示子を位置づけておく必要はありません。

レコードの位置づけについては，「2.5.3(1)　レコードの位置づけ」を参照してください。

(5)　複数レコード検索時の留意事項

複数レコード検索時の留意事項を次に示します。

(a)　データ格納エリアの領域長の指定

レコードを取得するデータ格納エリアのサイズは，SDBデータベースを操作するAPIでユーザが指定します。データ格納エリアが小さ過ぎると，ファミリの検索中に領域が満杯になります。そのため，1ファミリの取得に必要となる，複数レコード検索の実行回数が増加し，処理性能が低下するおそれがあります。

逆に，データ格納エリアが大き過ぎると，レコードの格納に使用されない余分な領域が確保されることによって，処理性能が低下するおそれがあります。

これらを回避するため，複数レコードの検索時のレコードの格納形式，およびUAP統計レポートに出力される「複数レコードの検索時のデータ格納エリアの余り領域長」の情報を参考にして，データ格納エリアのサイズに適切な領域長を指定してください。

複数レコードの検索時の，データ格納エリアに対するレコードの格納形式については，「付録M　複数レコードの検索時の，データ格納エリアに対するレコードの格納形式【4V FMB】」を参照してください。また，UAP統計レポートについては，「16.5.5　UAP統計レポート機能」を参照してください。

(b)　個別開始中の複数レコードの検索以外の，SDBデータベースの操作禁止

複数レコードの検索をする個別開始では，複数レコードの検索と個別終了しかできません（複数レコードの検索以外のSDBデータベースの操作はできません）。

(6)　複数レコードの検索例

複数レコードの検索例を次に示します。

なお，ここでは，ルートレコードA0のファミリをファミリA0と表記します。以降の例に使用するSDBデータベースには，ファミリA0，ファミリA1，ファミリA2，ファミリA3の4つのファミリがあるものとします。

(a)　検索例1（検索範囲の指定と指示コード'F'および'N'の指定）

［説明］

検索を開始するルートレコードを指定する条件を付加し，指示コードに'F'を指定して複数レコードの検索を実行します。

ファミリA1はデータ格納エリアより大きなデータで構成されているため，この場合，ファミリA1の検索の途中でデータ格納エリアが満杯になります。

データ格納エリアからデータを取り出します。

ファミリA1の残りのレコードを取得するため，指示コードに'N'を指定して複数レコードの検索を実行します。

参考

ファミリの検索途中で指示コードに'F'を再度指定すると，検索途中であっても，それまでの検索過程は無効となり，指定された条件に従って再度ルートレコードから検索を開始します。

データ格納エリアからファミリA1の残りのデータを取り出します。

次のファミリを検索するため，指示コードに'N'を指定して複数レコードの検索を実行します。

ファミリA2はデータ格納エリアにすべて格納できるため，1回の検索ですべてのレコードを取得できます。

データ格納エリアからデータを取り出します。

指示コードに'S'を指定して複数レコードの検索を実行します。

1つのファミリの検索が終了している状態で，指示コードに'S'を指定して複数レコードの検索を実行すると，次のファミリのルートレコードから検索を開始します。

なお，指示コードに'S'を指定して複数レコードの検索を実行すると，ファミリの検索途中であっても，次のファミリのルートレコードから検索を開始します。

ファミリA3はデータ格納エリアにすべて格納できるため，1回の検索ですべてのレコードを取得できます。

データ格納エリアからデータを取り出します。

次のファミリを検索するため，指示コードに'N'を指定して複数レコードの検索を実行します。

次のファミリは存在しないので，検索結果としてNOT FOUNDが返却され，検索が終了します。

(b)　検索例2（検索範囲の指定と指示コード'F'および'S'の指定）

［説明］

検索を開始するルートレコードを指定する条件を付加し，指示コードに'F'を指定して複数レコードの検索を実行します。

ファミリA1はデータ格納エリアより大きなデータで構成されているため，この場合，ファミリA1の検索の途中でデータ格納エリアが満杯になります。

データ格納エリアからデータを取り出します。

ファミリA1の残りのレコードの検索を中断して，次のファミリから検索を開始します（指示コードに'S'を指定して複数レコードの検索を実行します）。

ファミリA2はデータ格納エリアにすべて格納できるため，1回の検索ですべてのレコードを取得できます。

データ格納エリアからデータを取り出します。

検索条件を変更し，指示コードに'F'を指定して複数レコードの検索を実行します。

この場合，指定された条件に従って再度検索を開始するため，ルートレコードのレコード実現値がA0のファミリを検索します。

ファミリA0はデータ格納エリアにすべて格納できるため，1回の検索ですべてのレコードを取得できます。

データ格納エリアからデータを取り出します。

次のファミリを検索するため，指示コードに'N'を指定して複数レコードの検索を実行します。

検索条件に該当するファミリは存在しないので，検索結果としてNOT FOUNDが返却され，検索が終了します。

2.5.11　SDBデータベースの操作と位置指示子の関係

SDBデータベースの操作と位置指示子の関係を，それぞれの操作ごとに説明します。

以降の例で使用するSDBデータベースを次の図に示します。

図2‒35　SDBデータベースの操作と位置指示子の関係の説明で使用するSDBデータベース

(1)　個別開始

個別開始時（SDBデータベース単位の操作開始時）に，レコード型，親子集合型ごとに位置指示子が生成され，空値が設定されます。

この例では，レコード型A，レコード型B，および親子集合型ABに対して，位置指示子が生成されます。

図2‒36　個別開始

(2)　ルートレコードの検索

ルートレコードを検索する時点で，位置指示子にレコードが位置づけられている必要はありません。

ルートレコードA1を検索すると，次の位置指示子にルートレコードA1が位置づけられます（ルートレコードA1の位置が位置指示子に保持されます）。

レコード型Aのレコード位置指示子

親子集合型ABの親子集合位置指示子

ルートレコードA1を検索した場合の例を次に示します。

図2‒37　ルートレコードの検索

(3)　子レコードの検索

子レコードB2を検索する場合，次の位置指示子にルートレコードA1が位置づけられている必要があります。

親レコードであるレコード型Aのレコード位置指示子

親子集合型ABの親子集合位置指示子

つまり，子レコードB2を検索する前に，親レコードであるルートレコードA1を検索して，レコードを位置づけておく必要があります。

子レコードB2を検索すると，次の位置指示子に子レコードB2が位置づけられます。

レコード型Bのレコード位置指示子

親子集合型ABの親子集合位置指示子

子レコードB2を検索した場合の例を次に示します。

図2‒38　子レコードの検索

(4)　位置指示子の位置づけ【SD FMB】

位置指示子にレコードが位置づけられている必要はありません。

ルートレコードA1を走査し，レコードが特定されると，次の位置指示子にルートレコードA1が位置づけられます（ルートレコードA1の位置が位置指示子に保持されます）。

レコード型Aのレコード位置指示子

親子集合型ABの親子集合位置指示子

ルートレコードA1を検索した場合の例を次に示します。

図2‒39　ルートレコードの走査

(5)　ルートレコードの格納（ルートレコードの追加）

ルートレコードを格納する時点で，位置指示子にレコードが位置づけられている必要はありません。

ルートレコードA4を格納すると，次の位置指示子にルートレコードA4が位置づけられます。

レコード型Aのレコード位置指示子

親子集合型ABの親子集合位置指示子

ルートレコードA4を格納した場合の例を次に示します。

図2‒40　ルートレコードの格納（ルートレコードの追加）

(6)　子レコードの格納（子レコードの追加）

子レコードB4を格納する場合，次の位置指示子にルートレコードA1が位置づけられている必要があります。

親レコードであるレコード型Aのレコード位置指示子

親子集合型ABの親子集合位置指示子

つまり，子レコードB4を格納する前に，親レコードであるルートレコードA1を検索して，レコードを位置づけておく必要があります。

子レコードB4を格納すると，次の位置指示子に子レコードB4が位置づけられます。

レコード型Bのレコード位置指示子

親子集合型ABの親子集合位置指示子

子レコードB4を格納した場合の例を次に示します。

図2‒41　子レコードの格納（子レコードの追加）

(7)　子レコードの更新

子レコードB2の値を更新する場合，次の位置指示子にルートレコードA1が位置づけられている必要があります。

親レコードであるレコード型Aのレコード位置指示子

親子集合型ABの親子集合位置指示子

また，次の位置指示子に子レコードB2が位置づけられている必要があります。

レコード型Bのレコード位置指示子

親子集合型ABの親子集合位置指示子

つまり，子レコードB2の値を更新する前に，子レコードB2を検索して，レコードを位置づけておく必要があります。

子レコードB2のレコード実現値を更新した場合の例を次に示します。

図2‒42　子レコードの更新

(8)　ルートレコードの削除

ルートレコードA1を削除する場合，次の位置指示子にルートレコードA1が位置づけられている必要があります。

レコード型Aのレコード位置指示子

ルートレコードA1の値を削除する前に，ルートレコードA1を位置づけておく必要があります。

また，4V FMBのSDBデータベースの場合，検索条件にルートレコードA1の＝条件（構成要素名にDBKEYを指定した＝条件）を指定した検索で位置づけておく必要があります。

ルートレコードA1を削除すると，レコード位置指示子Aは空値となります。また，ルートレコード型Aの下位のレコード型のレコード位置指示子，親子集合位置指示子も空値となります。

ルートレコードA1を削除した場合の例を次に示します。

図2‒43　ルートレコードA1を削除した場合の例

(9)　子レコードの削除

子レコードB2を削除する場合，次の位置指示子にルートレコードA1が位置づけられている必要があります。

親レコードであるレコード型Aのレコード位置指示子

親子集合型ABの親子集合位置指示子

また，次の位置指示子に子レコードB2が位置づけられている必要があります。

レコード型Bのレコード位置指示子

親子集合型ABの親子集合位置指示子

つまり，子レコードB2の値を削除する前に，子レコードB2を検索して，レコードを位置づけておく必要があります。

子レコードB2を削除すると，親子集合位置指示子には，削除した子レコードB2の前後のレコードが位置づけられ，親子集合位置指示子は複合状態になります。また，レコード型Bのレコード位置指示子は空値となります。

子レコードB2を削除した場合の例を次に示します。

図2‒44　子レコードの削除

(10)　複数レコードの検索【4V FMB】

複数レコードの検索をする場合，検索時点で位置指示子にレコードが位置づけられている必要はありません。

指定したルートレコード以下のすべてのレコードを検索しても，位置指示子は空値のままとなります。

複数レコードの検索した場合の例を次に示します。

図2‒45　複数レコードの検索

(11)　個別終了およびトランザクションの終了

個別終了時（SDBデータベース単位の操作終了時）およびトランザクションの終了時に，位置指示子は消滅します。

図2‒46　個別終了およびトランザクションの終了

2.5.12　個別開始実行要求オプションを指定したSDBデータベースの操作【4V FMB，4V AFM】

4V FMBまたは4V AFMのSDBデータベースを操作するAPIで個別開始実行要求オプションを指定すると，UAPから個別開始の要求を行わなくてもSDBデータベースの操作ができます。

個別開始実行要求オプションは次に示すSDBデータベースの操作をする際に指定できます。

レコードの検索（FETCH）

複数レコードの検索（FETCHDB ALL）

レコードの格納（STORE）

レコードの一括削除

構成情報取得

個別開始実行要求オプションの指定方法については，マニュアル「TP1/Financial Service Platform 使用の手引」の「SDBハンドラ機能」の「個別開始実行要求オプション」を参照してください。

SD FMBのSDBデータベースを操作するDMLでは，個別開始実行要求オプションを指定できません。

(1)　個別開始実行要求オプション指定時の処理の流れ

個別開始実行要求オプションを指定する場合の処理の流れを次の図に示します。

図2‒47　SDBデータベースを操作する処理の流れ（個別開始実行要求オプションを指定する場合）

個別開始実行要求オプションを指定しない場合の処理の流れを次の図に示します。

図2‒48　SDBデータベースを操作する処理の流れ（個別開始実行要求オプションを指定しない場合）

(2)　留意事項

個別開始実行要求オプションを指定した場合，UAPからの個別開始の要求は不要になります。ただし，個別開始の処理は実行されるため，個別開始の要求を実行したものとしてメモリ所要量を見積もってください。

同一トランザクション内で，個別開始実行要求オプションを指定したSDBデータベースの操作と，個別開始の要求を行うSDBデータベースの操作を混在して実行できます。

トランザクション決着しない場合に要求する個別終了については，個別開始実行要求オプションの指定に関係なく要求できます。

2.6　レコードの配置制御（サブページ分割をしない場合）

HiRDB/SDのレコードの配置制御について説明します。HiRDB/SDはレコードを次の表に示すように格納します。

表2‒18　HiRDB/SDのレコードの配置制御（サブページ分割をしない場合）

レコードの配置制御

SDBデータベース種別

4V FMB

4V AFM

SD FMB

同一のルートレコード下のレコードを近傍に配置して格納する。

異なるルートレコード下のレコードをページ内に混在させない。

HiRDB/SDデータベース作成ユティリティ（pdsdblod）を使用したデータロード時に，ページ内の未使用領域，セグメント内の空きページを設定してレコードを格納できる。

○

○

○

レコード実現値ごとに格納するページを切り替え，空きページに格納できる。※

1つのレコード実現値でページを占有できる（1件/ページ）。※

SDBデータベースを操作するAPIによるレコード格納時に，ページ内の未使用領域の比率に従った格納ができる。※

○

○

×

ルートレコードの格納時に事前割り当てページをあらかじめ確保しておくことで，ルートレコード下のレコードの格納およびレコードの削除を繰り返し実行した場合でも，連続したデータページ内にレコードを配置できる（この機能を事前ページ割り当て機能といいます）。

○

×

×

（凡例）

○：レコードの配置制御が適用されます。

×：レコードの配置制御は適用されません。

注※

オプションの指定が必要になります。

参考

サブページ分割をする場合の配置制御については，「2.7　レコードの配置制御（サブページ分割をする場合）」を参照してください。

レコード格納時，およびデータロード時の空き領域の作成方法については，「3.2.5　レコード格納時の空き領域の作成（サブページ分割をしない場合）」を参照してください。

SD FMBのSDBデータベースの場合，DMLによるレコードの格納時に空き領域を作成することはできません。

2.6.1　親レコードと子レコードの近傍配置

ここでは親レコードと子レコードの近傍配置について説明します。

(1)　基準レコード，基準ページ

HiRDB/SDは，基準とするレコードから，レコードを格納する位置を決定します。基準とするレコードを基準レコードといいます。

基準レコードは，格納するレコードのPRIORポインタが指すレコードになります。親子集合の場合は，1件目の子レコードに対する基準レコードは，親レコードとなります。なお，ルートレコードは基準レコードを持ちません。

基準レコードの例を次の図に示します。

図2‒49　基準レコードの例

基準レコードが格納されているページを基準ページといいます。HiRDB/SDでは，基準ページおよびその近傍のページにレコードを格納することで，親子集合内のレコード群を近傍に配置して格納できます。基準ページへの格納の例を次の図に示します。

図2‒50　基準ページへの格納の例

(2)　ページ間の関連づけとファミリ内接続ページ

HiRDB/SDでは，同一のルートレコード下のレコードをファミリといい，ファミリを格納するページを関連づけて管理します。関連づけられたページをファミリ内接続ページといいます。ページ間の関連づけとファミリ内接続ページの例を次の図に示します。

図2‒51　ページ間の関連づけとファミリ内接続ページの例

HiRDB/SDは，確保した空きページにレコードを格納する際に，ページ間を関連づけることによって，基準ページとレコードを格納するページをファミリ内接続ページとして組み入れます。

なお，ファミリ内の事前割り当てページは，すべてファミリ内接続ページ群として管理されます。事前ページ割り当て機能を適用している場合の，ページ間の関連づけとファミリ内接続ページの例を次の図に示します。

図2‒52　事前ページ割り当て機能を適用している場合の，ページ間の関連づけとファミリ内接続ページの例

2.6.2　レコードを格納するページの決定方法

レコードを格納するには，次の2つの方法があります。

SDBデータベースを操作するAPIまたはDMLでレコードを格納する方法

HiRDB/SDデータベース作成ユティリティ（pdsdblod）でレコードを格納する方法

各方法でのレコードを格納するページの決定方法について説明します。

参考

SDBデータベースを操作するAPIについては，マニュアル「TP1/Financial Service Platform プログラム作成の手引」を参照してください。

DMLについては，「17．DMLリファレンス【SD FMB】」を参照してください。

(1)　SDBデータベースを操作するAPIまたはDMLでレコードをページに格納する場合

SDBデータベースを操作するAPIまたはDMLでレコードを格納する場合，そのファミリに事前ページ割り当て機能を適用しているかどうかによって，格納するページの使用順序が異なります。事前ページ割り当て機能については，「(4)　事前ページ割り当て機能【4V FMB】」を参照してください。

(a)　事前ページ割り当て機能を適用していない場合

事前ページ割り当て機能を適用していない場合，次の表に示す優先順位に従って格納するページを決定します。優先順位1〜5のページにレコードを格納できない場合，RDエリアのページ不足となります。

表2‒19　SDBデータベースを操作するAPIまたはDMLでレコードを格納する場合の優先順位（事前ページ割り当て機能を適用していない場合）

優先順位

レコード種別

ルートレコード

2階層以下のレコード

1

空きページ

基準ページ※

2

−

基準ページの前後のファミリ内接続ページ※

3

−

基準ページのセグメント，およびその直前のセグメント内の空きページ

4

−

優先順位3以外の空きページ

5

−

優先順位2以外の全ファミリ内接続ページ※

（凡例）

−：該当しません。

注※

ページ切り替えの指定がある場合，格納の対象になりません。ページ切り替えについては，「2.6.2(3)　レコード格納時のページ切り替え【4V FMB，4V AFM】」を参照してください。

優先順位に従った2階層以下のレコードの格納時の動作を次の図に示します。

図2‒53　優先順位に従った2階層以下のレコードの格納時の動作（事前ページ割り当て機能を適用していない場合）

(b)　事前ページ割り当て機能を適用している場合【4V FMB】

4V FMBのSDBデータベースのルートレコードを格納する場合，指定数分の事前割り当てページを確保し，最初に確保した事前割り当てページを使用します。また，2階層目以下のレコードを格納する場合，基本的には確保済みの事前割り当てページを使用します。ただし，確保済みの事前割り当てページ内にレコードを格納できる空き領域がない場合は，指定数分の事前割り当てページを追加で確保し，最初に確保した事前割り当てページを使用します。

事前ページ割り当て機能を適用している場合，次の表に示す優先順位に従って，格納するページを決定します。優先順位1〜5のページにレコードを格納できない場合，RDエリアのページ不足となります。

表2‒20　SDBデータベースを操作するAPIでレコードを格納する場合の優先順位（事前ページ割り当て機能を適用している場合）

優先順位

レコード種別

ルートレコード

2階層以下のレコード

1

空きページ※1

基準ページ

2

−

優先ページ※2

3

−

基準ページと優先ページ以外の事前割り当てページ

4

−

基準ページのセグメント，およびその直前のセグメント内の空きページ※1

5

−

優先順位4以外の空きページ※1

（凡例）

−：該当しません。

注※1

事前割り当てページとして確保します。

注※2

基準ページの次にHiRDB/SDが優先的に格納を試みる事前割り当てページです。

優先順位に従った2階層以下のレコードの格納時の動作を次の図に示します。

図2‒54　優先順位に従った2階層以下のレコードの格納時の動作（事前ページ割り当て機能を適用している場合）

(2)　HiRDB/SDデータベース作成ユティリティ（pdsdblod）でレコードをページに格納する場合

HiRDB/SDデータベース作成ユティリティ（pdsdblod）でレコードをページに格納する場合，次の表に示す優先順位に従って，格納するページを決定します。優先順位1〜2のページにレコードを格納できない場合，RDエリアのページ不足となります。

表2‒21　HiRDB/SDデータベース作成ユティリティ（pdsdblod）でレコードをページに格納する場合の優先順位

レコード種別

優先順位

1

2

ルートレコードの格納

空きページ

−

2階層以下のレコードの格納

直近でレコードを格納したページ※

空きページ

（凡例）

−：該当しません。

注※

ページ切り替えの指定がある場合，格納の対象になりません。ページ切り替えについては，「(3)　レコード格納時のページ切り替え【4V FMB，4V AFM】」を参照してください。

(3)　レコード格納時のページ切り替え【4V FMB，4V AFM】

レコード格納時のページ切り替えについて説明します。ページ切り替えは，4V FMBまたは4V AFMのSDBデータベースの場合に指定できます。

(a)　ページ切り替えの概要

4V FMBまたは4V AFMのSDBデータベースにレコードを格納する際，格納対象のページを切り替えて，空きページにレコードを格納できます。これをページ切り替えといいます。また，このとき，格納したレコードだけでそのページを占有し，ほかのレコードが格納されないようにすることもできます。格納対象のページを切り替えることによって，レコードに対するアクセスをページ単位に分散し，排他の競合を回避できます。

ページ切り替えの指定には，次の2つの指定があります。

切り替え指定

切り替えたページにほかのレコードも格納できる指定

占有指定

切り替えたページを格納するレコードで占有する指定（ほかのレコードは格納できない指定）

ページ切り替えの指定方法を次の表に示します。

表2‒22　ページ切り替えの指定方法

格納方法

指定方法

HiRDB/SDデータベース作成ユティリティ（pdsdblod）

フォーマットライト機能使用時

dbinf文のpagecflgでページ切り替えフラグを指定します。dbinf文については，「12.3.3　dbinf文【4V FMB，4V AFM】」を参照してください。

上記以外

入力データファイルのプレフィクス部のページ切り替えフラグを指定します。詳細については，「12.3.3　dbinf文【4V FMB，4V AFM】」を参照してください。

SDBデータベースを操作するAPIによるレコード格納

SDBデータベースを操作するAPIに，ページ切り替えオプションを指定することによって，レコードの格納時にページを切り替えることができます。

'C'指定（切り替え指定）

レコード格納時にページを切り替え，空きページを確保します。

確保したページにほかのレコードを格納できます。

'O'指定（占有指定）

レコード格納時にページを切り替え，空きページを確保します。

確保したページは格納したレコードで占有します。ほかのレコードは格納できません。

'N'または'△'（空白）指定

ページの切り替えを指定しません。

SDBデータベースを操作するAPIについては，マニュアル「TP1/Financial Service Platform プログラム作成の手引」を参照してください。

(b)　ページ切り替えに関する留意事項

4V AFMのSDBデータベースの場合，仮想ルートレコードの格納時に，SDBデータベース格納定義のOCCURRENCE NUMBER句の指定値が1以上のレコードでは，仮想ルートレコードにアクセスする際の排他と，同一仮想ルートレコード下の子レコードにアクセスする際の排他の競合を回避するため，ページ切り替えの指定が無視されます。このとき，'O'が指定されたと仮定してレコードが格納されます。

子レコードの格納時には，ページ切り替えの指定に従ってレコードが格納されます。

レコードの一括削除後にレコードを格納する場合，一括削除時に存在していたレコードの格納領域が再利用されます。そのため，一括削除時に存在していたレコード件数分のレコードを格納するときには，ページ切り替え指定は無視されます。

HiRDB/SDは，異なるルートレコード下のレコードをページ内に混在させないため，ルートレコードの格納時にページを切り替えます。そのため，ルートレコード格納時の'C'指定，または指定なしの場合については，動作に違いはありません。'O'指定の場合には，ルートレコードだけで格納ページを占有するため，ほかのレコードは格納されません。

ページ切り替え指定に従ってレコード格納時にページを切り替えた場合，確保したページと基準ページとの間で，ページ間の関連づけはされません。そのため，ページ切り替え指定以前に作成されていたページは，確保したページのファミリ内接続ページとはなりません。

同一ルートレコード下のレコード格納ページであっても，異なるファミリ内接続ページに分割された場合には，「表2-19　SDBデータベースを操作するAPIまたはDMLでレコードを格納する場合の優先順位（事前ページ割り当て機能を適用していない場合）」の優先順位2および5の対象ページとはなりません。ただし，ページの切り替え後にレコードを格納することによって作成されたページ間は関連づけられるので，新たなファミリ内接続ページとなります。ページ間の関連づけ，ファミリ内接続ページについては，「2.6.1(2)　ページ間の関連づけとファミリ内接続ページ」を参照してください。

基準レコードが'O'指定でページを占有しているレコードの場合であっても，ページ切り替え指定なしで空きページを確保できているときには，確保したページと基準ページとが関連づけられます。

事前ページ割り当て機能を適用しているファミリのレコードを格納する場合，ページ切り替え指定でページを切り替えることはできません。ページ切り替えの指定があるとエラーになります。事前ページ割り当て機能については，「(4)　事前ページ割り当て機能【4V FMB】」を参照してください。

(c)　ページ切り替えオプションによるレコードの格納例

4V FMBのSDBデータベースの場合

4V FMBのSDBデータベースに対するレコードの格納時の，ページ切り替えオプションによるレコードの格納例を次の図に示します。

図2‒55　ページ切り替えオプションによるレコードの格納例（4V FMBのSDBデータベースの場合）

OCCURRENCE NUMBER句に1以上を指定している4V AFMのSDBデータベースの場合

SDBデータベース格納定義のOCCURRENCE NUMBER句に1以上を指定している4V AFMのSDBデータベースに対するレコードの格納時の，ページ切り替えオプションによるレコードの格納例を次の図に示します。

図2‒56　ページ切り替えオプションによるレコードの格納例（OCCURRENCE NUMBER句に1以上を指定している4V AFMのSDBデータベースの場合）

OCCURRENCE NUMBER句に0を指定している4V AFMのSDBデータベースの場合

SDBデータベース格納定義のOCCURRENCE NUMBER句に0を指定している4V AFMのSDBデータベースに対するレコードの格納時の，ページ切り替えオプションによるレコードの格納例を次の図に示します。

図2‒57　ページ切り替えオプションによるレコードの格納例（OCCURRENCE NUMBER句に0を指定している4V AFMのSDBデータベースの場合）

(d)　適用基準

レコードに対するアクセス時の排他をページ単位で分散させたい場合，'O'指定または'C'指定を選択します。同時実行性は次の順に高くなります。

'O'指定（占有指定）（同時実行性がいちばん高い）

'C'指定（切り替え指定）

ページ切り替え指定なし

ただし，次の場合は指定による同時実行性の差異はありません。

4V FMBのSDBデータベースの場合（ルートレコードの格納ページの排他によって，ルートレコード下のレコード群のアクセスがシリアライズされるため）

4V AFMのSDBデータベースで，SDBデータベース格納定義のOCCURRENCE NUMBER句の指定が0の場合（仮想ルートレコード下に子レコードが最大1件しか存在しないため）

なお，ページ切り替えをすることによってデータベース容量が増大することがあるので注意してください。一般的に次の順でデータベース容量は増加します。

ページ切り替え指定なし（データベース容量がいちばん少ない）

'C'指定（切り替え指定）

'O'指定（占有指定）

SDBデータベース種別ごとに推奨する指定を次の表に示します。作成するデータベースや格納するレコードの特性に合わせて指定を決定してください。

表2‒23　SDBデータベース種別ごとに推奨する指定

SDBデータベース種別

ページ切り替えで推奨する指定※1

備考

4V FMB

指定なし

ルートレコードの格納ページの排他によって，ルートレコード下のレコードのアクセスがシリアライズされるため，'O'指定または'C'指定に同時実行性を向上させる効果はありません。

4V DAM

OCCURRENCE NUMBER句の指定が0

指定なし

仮想ルートレコード下に子レコードが最大1件しか存在しないため，'O'指定または'C'指定に同時実行性を向上させる効果はありません。

OCCURRENCE NUMBER句の指定が1以上

指定なし

または'O'指定（占有指定）※2

指定なしの場合，ページに格納するレコード件数を制限し，排他の影響範囲を局所化したいときには，SDBデータベース格納定義のPCTFREE句を指定します。

ページに1件だけレコードを格納する場合には'O'指定とします。

4V MAM

'O'指定（占有指定）※2

4V MAMのSDBデータベースは一般的に同時実行性が求められます。

4V TAM

'O'指定（占有指定）※2

4V TAMのSDBデータベースは一般的に同時実行性が求められます。

4V SAM

指定なし

4V SAMのSDBデータベースは一般的に同時実行性が求められません。

注※1

データベース単位で，すべてのレコードに一律同じ指定をする場合の推奨値です。格納するレコードの特性やレコードの件数などがわかっている場合は，レコード単位に指定を切り替えることで，格納配置をより詳細に制御できます。レコード単位の指定の切り替えによるレコードの配置例については，「(e)　ページ切り替え指定によるレコードの配置例」を参照してください。

注※2

参照しかしないデータベースの場合や，ほかのトランザクションが存在しない状態で，更新処理を単独で実行するような場合には，ページ排他での排他待ちが発生しないため，「指定なし」を推奨します。この場合，ページに格納するレコード件数を制限し，排他の影響範囲を局所化する目的でPCTFREE句を指定する必要はありません。

(e)　ページ切り替え指定によるレコードの配置例

アクセス頻度によってページ切り替え指定を使い分ける

4V DAMのSDBデータベースなどで，アクセス頻度が高く同時実行性が要求されるレコードに対してだけ'O'指定をするというように指定を使い分けると，同時実行性を確保しながらデータベース容量を小さく抑えるといった，データベース設計ができます。アクセス頻度によってページ切り替え指定を使い分ける例を次の図に示します。この例では仮想ルートレコード2下のレコードだけ'O'指定をしています。

図2‒58　アクセス頻度によってページ切り替え指定を使い分ける例

論理的に関連するレコードの格納位置をまとめる

4V FMBのSDBデータベースで，データベース初期作成後のレコードの格納に備えて'C'指定をしておくことで，論理的に関連するレコードを同一ページに格納するといった，データベース設計ができます。

論理的に関連するレコードの格納位置をまとめる例を次の図に示します。この例では孫レコードを格納するための領域をページ切り替え指定によって確保しておくことで，同一子レコード下の孫レコードを同一ページに格納しています。

図2‒59　論理的に関連するレコードの格納位置をまとめる例

(4)　事前ページ割り当て機能【4V FMB】

事前ページ割り当て機能について説明します。事前ページ割り当て機能は，4V FMBのSDBデータベースの場合に使用できます。

(a)　事前ページ割り当て機能の概要

HiRDB/SDデータベース作成ユティリティ（pdsdblod），またはSDBデータベースを操作するAPIで4V FMBのSDBデータベースにルートレコードを格納する場合，事前割り当てページ数を指定すると，指定したファミリにあらかじめ指定数分の連続したデータページ（事前割り当てページ）が確保されます。

HiRDB/SDデータベース作成ユティリティ（pdsdblod）での指定方法については，次の説明を参照してください。

「12.3.2　load文」のprefixオペランドの説明

「12.3.3　dbinf文【4V FMB，4V AFM】」のpagenumオペランドの説明

「12.6.1(3)　プリフィクス部【4V FMB，4V AFM】」の事前割り当てページ数の説明

SDBデータベースを操作するAPIによるレコードの格納（STORE）での，事前割り当てページ数の指定方法については，マニュアル「TP1/Financial Service Platform プログラム作成の手引」を参照してください。

SDBデータベースを操作するAPIの実行時には次の制御を行うため，2階層目以下のレコードの格納およびレコードの削除を繰り返し実行した場合でも，ファミリ単位に連続したデータページ内へのレコードの配置を維持できます。

2階層目以下のレコードの格納時に，事前割り当てページ内にレコードを格納できる空き領域がある場合，その空き領域にレコードが格納されます。

2階層目以下のレコードの削除によって，事前割り当てページ内のレコードがすべて削除された場合でも，事前割り当てページは解放されないで，2階層目以下のレコードの格納時に再利用されます。

この配置制御によって，特定のファミリに連続してアクセスする場合にI/O回数の削減が見込まれるため，SDBデータベースを操作するAPIを繰り返し実行しても，一定のアクセス性能を維持できます。

2階層目以下のレコードの格納時に，事前割り当てページ内にレコードを格納できる空き領域がない場合，追加で事前割り当てページが確保されます。このときに確保される事前割り当てページの数は，該当するレコードの格納時の事前割り当てページ数の指定に従います。事前割り当てページ不足が発生していない場合，または事前ページ割り当て機能を適用していない場合，その指定は無視されます。

なお，事前割り当てページ数に0を指定した場合は1を指定したときと同じく，格納対象のレコードを格納するページだけが確保されます。

(b)　事前割り当てページ数の引き継ぎ

確保済みの事前割り当てページの数は，次の表に示す機能で取得できます。

表2‒24　事前割り当てページ数を取得できる機能

事前割り当てページ数を取得できる機能

機能概要

HiRDB/SDデータベース再編成ユティリティ（pdsdbrog）

アンロード時，ファミリ単位に確保済みの事前割り当てページの数がアンロードデータファイルのプリフィクス部に設定されます。

事前割り当てページ数の取得方法については，次の説明を参照してください。

「13.3.2　unload文」のprefixオペランドの説明

「13.3.3　dbinf文【4V FMB】」のpagenumオペランドの説明

「13.6.1　レコードのデータ形式」のプリフィクス部の説明

レコードの検索（FETCH）

ルートレコードの検索時に確保済みの事前割り当てページの数が返却されます。2階層目以下のレコードだけを検索した場合は0が返却されます。また，事前ページ割り当て機能を適用していないファミリを検索した場合にも0が返却されます。

SDBデータベースを操作するAPIでの事前割り当てページ数の取得方法については，マニュアル「TP1/Financial Service Platform プログラム作成の手引」を参照してください。

複数レコードの検索（FETCHDB ALL）

これによって，次の場合に事前割り当てページ数を引き継ぐことができます。

SDBデータベースの再編成時

異なるSDBデータベース間のデータ移行時

事前割り当てページ数の引き継ぎ例を次の図に示します。

図2‒60　事前割り当てページ数の引き継ぎ例

(c)　事前ページ割り当て機能の適用条件

事前ページ割り当て機能は，次の機能と同時に適用できません。

ページ切り替え

SDBデータベース格納定義のPCTFREEオペランド，またはHiRDB/SDデータベース作成ユティリティ（pdsdblod）のenvironment文のrecfreeオペランドで指定する空き領域の作成

(d)　事前ページ割り当て機能に関する留意事項

確保できる事前割り当てページ数の上限値は，1ファミリ当たり2,147,483,647です。

HiRDB/SDデータベース作成ユティリティ（pdsdblod）でレコードを格納する場合，次のように動作します。

事前ページ割り当て機能を適用するファミリにページ切り替えの指定がある場合，論理エラーになります。

事前割り当てページを確保する際，セグメント内の空きページの比率の指定は無視されるため，事前割り当てページ間に空きページは確保されません。通常のページを確保する際に空きページは確保されますが，同じセグメント内に事前割り当てページが含まれる場合，通常は指定したセグメント内の空きページの比率にはなりません。この場合のセグメント内の空きページの比率については，「3.2.5(4)(b)　未使用領域および空きページの作成に関する留意事項」を参照してください。

事前割り当てページにレコードを格納する際，ページ内の未使用領域の比率は無視されるため，レコードが詰めて格納されます。

SDBデータベースを操作するAPIでレコードを格納する場合，次のように動作します。

事前ページ割り当て機能を適用しているファミリのレコードを格納する際に，ページ切り替えの指定があるとエラーになります。

事前ページ割り当て機能を適用しているファミリのレコードを格納する際に，PCTFREE有効化オプションを適用するとエラーになります。

データロード時にレコードを格納するために確保したページの数が，指定した事前割り当てページ数を超えた場合，該当するファミリを格納するために指定値を超えて確保したページも，事前割り当てページとして扱われます。

次のどれかの場合，事前ページ割り当て機能を適用しても非連続のデータページが確保されることがあります。

空きページが散在しているSDBデータベースに対して，追加データロードまたはSDBデータベースを操作するAPIによるルートレコードの格納を実行し，事前割り当てページが確保される場合

SDBデータベースを操作するAPIによる2階層目以下のレコードの格納時に，事前割り当てページ不足が発生し，追加で事前割り当てページが確保される場合

SDBデータベースを操作するAPIによるレコードの格納時の事前割り当てページの確保中に，ほかのトランザクションによるページの確保が割り込む場合

追加データロード時に，非連続のデータページが事前割り当てページとして確保される例（1.の例）を次の図に示します。この図では，初期データロード時に確保した空きページを事前割り当てページとして確保する例を示しています。

図2‒61　追加データロード時の非連続データページ（事前割り当てページ）の確保例

なお，SDBデータベースを操作するAPIのレコードの削除によってページが解放され，未使用ページが存在する状態で追加データロードを実行した場合でも，そのページが再利用されることで，同様に非連続のデータページが確保されることがあります。ただし，次の場合，この状態はpdsdblodコマンドまたはSDBデータベースを操作するAPIを実行する前の，使用中の最終セグメントでだけ発生します。

追加データロード時

新規にセグメントを確保できる状況での，SDBデータベースを操作するAPIによるルートレコードの格納時

事前割り当てページ不足発生時に，非連続のデータページが事前割り当てページとして確保される例（2.の例）を次の図に示します。

図2‒62　事前割り当てページ不足発生時の非連続データページ（事前割り当てページ）の確保例

この図では，1ページずつ追加しているため，データページの連続性が大きく損なわれています。この問題は，一定量の事前割り当てページを一括して確保することで緩和できます。

非連続のデータページが事前割り当てページとして確保されているかどうかは，データベース状態解析ユティリティ（pddbst）で確認できます。

この問題を解消するには，SDBデータベースを再編成する必要があります。

確保する事前割り当てページの数に比例して，レコードの格納性能は低下します。そのため，事前割り当てページの連続性とレコードの格納性能を考慮して，指定する事前割り当てページ数を決定する必要があります。ただし，ルートレコードを格納する際には，事前割り当てページの連続性を優先させ，ファミリ内のすべてのレコードを格納できるだけの事前割り当てページを一括して確保することを推奨します。

事前割り当てページを確保する際，基本的には使用中の最終セグメント，または新規に確保したセグメント内の空きページが使用されます。これらのセグメントから空きページを確保できなくなると，それ以外の使用中のセグメントから空きページが確保されます。このとき，次のようなケースでは，レコードの格納性能が大きく低下します。

空きページが散在している。

空きページを持たないセグメントが多数存在する。

空きページのサーチ例を次の図に示します。

図2‒63　空きページのサーチ例

このような場合，次のどちらかの対応が必要です。

HiRDB/SDデータベース再編成ユティリティ（pdsdbrog）とHiRDB/SDデータベース作成ユティリティ（pdsdblod）で，SDBデータベースを再編成します。

データベース構成変更ユティリティ（pdmod）で，レコード格納用RDエリアを拡張します。

「図2-63　空きページのサーチ例」に示した空きページのサーチが動作して，レコードの格納性能が低下する前に，上記の対応をすることを推奨します。そのためには，システム共通定義のpd_rdarea_warning_pointオペランドを指定します。これによって，次のメッセージが出力されるため，RDエリアの使用状況を監視できます。

・RDエリアのセグメント使用率通知メッセージ（KFPH00211-IまたはKFPA12300-I）

・増分するHiRDBファイルの領域使用率通知メッセージ（KFPH22037-W）

詳細については，マニュアル「HiRDB Version 9 システム定義」のpd_rdarea_warning_pointオペランドの説明を参照してください。

SDBデータベースを再編成する際に，事前割り当てページ数を変更したいときは，事前割り当てページ数を指定し直す必要があります。

更新可能なオンライン再編成時に，事前ページ割り当て機能の適用有無を変更した場合，ルートレコード下のレコードの格納（STORE）に対する更新追い付き反映処理は次のように動作します。

適用ありから適用なしに変更した場合

事前割り当てページ数の指定は無視し，0が指定されたものとして動作します。

適用なしから適用ありに変更した場合

事前割り当てページ不足発生時，事前割り当てページ数の指定値として0が指定されたものとして動作するため，1ページだけ確保されます。

次のオプションの指定は無視され，X'00'が指定されたものとして動作します。

・ページ切り替えオプション

・PCTFREE有効化オプション

更新可能なオンライン再編成時の追い付き反映処理では，SDBデータベースを操作するAPIによるレコードの格納時に指定した事前割り当てページ数の指定値を引き継ぎます。オンライン（レプリカRDエリア）側と再編成（オリジナルRDエリア）側では，ページの使用状況が異なるため，追い付き反映処理後に確保済みの事前割り当てページの数が一致しないことがあります。更新可能なオンライン再編成の追い付き反映処理での事前割り当てページ数の引き継ぎ例を次の図に示します。

図2‒64　更新可能なオンライン再編成の追い付き反映処理での事前割り当てページ数の引き継ぎ例

なお，上記と同様にページの使用状況が変わるため，SDBデータベースの再編成によって，確保済みの事前割り当てページの数が増加することがあります。

「図2-64　更新可能なオンライン再編成の追い付き反映処理での事前割り当てページ数の引き継ぎ例」で示したように，SDBデータベースを操作するAPIによるレコードの格納に対する追い付き反映処理によって，事前割り当てページが追加で確保された場合，オンライン（レプリカRDエリア）側のトランザクションがロールバックしても，追加で確保された事前割り当てページは解放されません。なお，SDBデータベースを操作するAPIによる，ルートレコードの格納時に確保された事前割り当てページの場合は解放されます。

(e)　事前ページ割り当て機能を適用したファミリの格納例

データロード時に事前ページ割り当て機能を適用したファミリと適用していないファミリの格納例を次の図に示します。

図2‒65　事前ページ割り当て機能の適用有無の違いによるファミリの格納例（サブページ分割をしない場合）

このように，事前ページ割り当て機能を適用しているファミリの場合は，事前割り当てページ内にレコードを格納できる空き領域があるときは，その空き領域を再利用してレコードが格納されます。事前ページ割り当て機能を適用していないファミリの場合は，確保済みのページ内にレコードを格納できる空き領域があっても，その空き領域を再利用しないで，空きページを確保してレコードが格納されることがあります。

なお，事前割り当てページ不足が発生し，追加で事前割り当てページが確保される場合の格納例については，「図2-62　事前割り当てページ不足発生時の非連続データページ（事前割り当てページ）の確保例」を参照してください。

(f)　適用基準

次のような場合に，事前ページ割り当て機能の適用を検討してください。

2階層目以下のレコードの格納およびレコードの削除を繰り返し実行するファミリへの連続したアクセスがあり，このとき一定のアクセス性能を維持したい場合（ページ切り替え指定や，PCTFREEオペランドまたはrecfreeオペランド指定で厳密な空き領域設計ができる場合を除く）

ほかの平均的なサイズのファミリと比べて，サイズが極端に大きいファミリであり，個別に格納領域の設計を行う必要がある場合

ページ切り替えを行うための厳密な見積もりが困難である場合

(g)　警告情報の出力

HiRDB/SDデータベース作成ユティリティ（pdsdblod）での警告情報の出力

データロードによるレコードの格納時，レコードを格納するために確保したページ数が，指定した事前割り当てページ数を超えた場合，ファミリ単位にKFPB63515-Wメッセージが出力されます（事前割り当てページ数の見積もりの誤り，または事前割り当てページ数の指定誤りが通知されます）。KFPB63515-Wメッセージについては，「12.7　実行結果ファイルの出力形式」を参照してください。

HiRDB/SDデータベース再編成ユティリティ（pdsdbrog）での警告情報の出力

アンロード時，事前ページ割り当て機能が適用されているファミリが存在するのに，アンロードデータファイル内にプリフィクス部が存在しないため，事前割り当てページ数が取得されなかった場合，KFPB63516-Wメッセージが出力されます（事前割り当てページ数の引き継ぎが行われなかったことが通知されます）。

SDBデータベースを操作するAPIによるレコードの格納（STORE）での警告情報の出力

SDBデータベースを操作するAPIによるレコードの格納時に，事前割り当てページが不足して，事前割り当てページが追加で確保された場合，レコード格納用RDエリア単位にKFPB32000-W〜KFPB32003-Wメッセージが出力されます（事前割り当てページ数の再見積もりの要否確認が必要であることが通知されます）。

なお，このメッセージは1回出力されると，次回以降の事前割り当てページの不足時に，事前割り当てページを追加で確保してもメッセージが出力されません。この場合，次のどれかの操作が行われるまでメッセージが出力されません。メッセージの出力抑止状態の解除条件，および出力対象となるRDエリアを次に示します。

出力抑止状態の解除条件

クローズ状態の該当するレコード格納用RDエリアをpdopenコマンド，またはpdrels -oコマンドでオープンしたとき

該当するレコード格納用RDエリアに対して初期データロードを実行したとき

HiRDBを再起動したとき

出力対象となるRDエリア

インナレプリカ機能を使用していないレコード格納用RDエリアの場合，出力対象となります。

レコード格納用RDエリアにインナレプリカ機能を使用している場合，オリジナルRDエリアが出力対象となります。

(5)　更新可能なオンライン再編成の追い付き反映処理でレコードをページに格納する場合【4V FMB】

更新可能なオンライン再編成の追い付き反映処理時に有効となる格納配置制御のオプションを次の表に示します。

表2‒25　追い付き反映処理時に有効となる格納配置制御のオプション

追い付き反映処理の種類

格納配置制御のオプション

ページ切り替えオプション

PCTFREE有効化オプション

事前割り当てページ数

レコードの格納（STORE）の更新追い付き反映処理

○

○

○

レコードの削除（ERASE）の回復追い付き反映処理

×

×

−

（凡例）

○：オンライン（レプリカRDエリア）側で，レコードの格納（STORE）時に指定した格納配置制御のオプションの指定を適用します。SDBデータベースの再編成時に，事前ページ割り当て機能の適用有無を変更した場合の動作については，「(4)(d)　事前ページ割り当て機能に関する留意事項」を参照してください。

×：格納配置制御のオプションの指定を適用しません。

ページを切り替えません。

SDBデータベース格納定義のPCTFREE句で指定したページ内の未使用領域の比率を適用しないで，レコード実現値を格納します。

−：該当しません。

(a)　レコードの格納（STORE）の更新追い付き反映処理時の格納配置制御

レコードの格納（STORE）の更新追い付き反映処理時の格納配置制御では，レコードを事前割り当てページに格納する場合を除いて，オンライン（レプリカRDエリア）側で指定した格納配置制御のオプションの指定が適用されます。

ページ切り替えオプションの指定の違いによる格納配置制御については，「図2-55　ページ切り替えオプションによるレコードの格納例（4V FMBのSDBデータベースの場合）」を参照してください。

PCTFREE有効化オプションを適用した場合の格納配置制御については，「図3-9　ページに格納するレコード件数を制限する例」を参照してください。

事前ページ割り当て機能の適用有無の違いによる格納配置制御については，「図2-65　事前ページ割り当て機能の適用有無の違いによるファミリの格納例（サブページ分割をしない場合）」を参照してください。なお，この図では，HiRDB/SDデータベース作成ユティリティ（pdsdblod）を実行する場合に，事前割り当てページ数を指定したときのファミリの格納例を示しています。SDBデータベースを操作するAPIでレコードの格納を実行する場合に，事前割り当てページ数を指定したときも同様の格納配置となります。

ルートレコード下のレコードの格納時に，事前割り当てページが不足した場合の格納配置制御については，「図2-62　事前割り当てページ不足発生時の非連続データページ（事前割り当てページ）の確保例」を参照してください。

(b)　レコードの削除（ERASE）の回復追い付き反映処理時の格納配置制御

レコードの削除（ERASE）の回復追い付き反映処理時の格納配置制御では，オンライン（レプリカRDエリア）側で指定した格納配置制御のオプションの指定が適用されません。

ページ切り替えオプションを指定し，PCTFREE有効化オプションを適用したときの回復追い付き反映処理時の格納配置制御を次の図に示します。

図2‒66　レコードの削除（ERASE）の回復追い付き反映処理時の格納配置制御

2.7　レコードの配置制御（サブページ分割をする場合）

ここでは，サブページ分割をする場合のレコードの配置制御について説明します。サブページ分割をするときの配置制御の仕組みは，サブページ分割をしないときの配置制御の仕組みと基本的には同じになります。ページをサブページに置き換えて考えてください。

レコード長が短いレコードを格納する場合にサブページ分割をすると，むだな領域の発生を抑えることができ，レコードの格納効率が向上します。

サブページ分割をしている場合，HiRDB/SDはレコードを次の表に示すように格納します。

表2‒26　HiRDB/SDのレコードの配置制御（サブページ分割をする場合）

レコードの配置制御

SDBデータベース種別

4V FMB

4V AFM

SD FMB

同一のルートレコード下のレコードを近傍に配置して格納する。

異なるルートレコード下のレコードをサブページ内に混在させない。

HiRDB/SDデータベース作成ユティリティ（pdsdblod）を使用したデータロード時に，サブページ内の未使用領域，セグメント内の空きページを設定してレコードを格納できる。

○

○

○

レコード実現値ごとに格納するサブページを切り替え，未使用サブページに格納できる。※

1つのレコード実現値でサブページを占有できる（1件/サブページ）。※

SDBデータベースを操作するAPIによるレコード格納時に，サブページ内の未使用領域の比率に従った格納ができる。※

○

○

×

ルートレコードの格納時に事前割り当てサブページをあらかじめ確保しておくことで，ルートレコード下のレコードの格納およびレコードの削除を繰り返し実行した場合でも，連続したデータページ内にレコードを配置できる（この機能を事前ページ割り当て機能といいます）。

○

×

×

（凡例）

○：レコードの配置制御が適用されます。

×：レコードの配置制御は適用されません。

注※

オプションの指定が必要になります。

レコード格納時，およびデータロード時の空き領域の作成方法については，「3.2.6　レコード格納時の空き領域の作成（サブページ分割をする場合）」を参照してください。

SD FMBのSDBデータベースの場合，DMLによるレコードの格納時に空き領域を作成することはできません。

2.7.1　親レコードと子レコードの近傍配置

ここでは親レコードと子レコードの近傍配置について説明します。

(1)　基準レコード，基準サブページ

HiRDB/SDは，基準とするレコードから，レコードを格納する位置を決定します。基準とするレコードを基準レコードといいます。

基準レコードは，格納するレコードのPRIORポインタが指すレコードになります。親子集合の場合は，1件目の子レコードに対する基準レコードは，親レコードとなります。なお，ルートレコードは基準レコードを持ちません。

基準レコードの例を次の図に示します。

図2‒67　基準レコードの例

基準レコードが格納されているサブページを基準サブページといいます。HiRDB/SDでは，基準サブページおよびその近傍のサブページにレコードを格納することで，親子集合内のレコード群を近傍に配置して格納できます。基準サブページへの格納の例を次の図に示します。

図2‒68　基準サブページへの格納の例

(2)　サブページ間の関連づけとファミリ内接続サブページ

HiRDB/SDでは，同一のルートレコード下のレコードをファミリといい，ファミリを格納するサブページを関連づけて管理します。関連づけられたサブページをファミリ内接続サブページといいます。サブページ間の関連づけとファミリ内接続サブページの例を次の図に示します。

図2‒69　サブページ間の関連づけとファミリ内接続サブページの例

HiRDB/SDは，確保した未使用サブページにレコードを格納する際に，サブページ間を関連づけることによって，基準サブページとレコードを格納するサブページをファミリ内接続サブページとして組み入れます。

なお，ファミリ内の事前割り当てサブページは，すべてファミリ内接続サブページ群として管理されます。事前ページ割り当て機能を適用している場合の，サブページ間の関連づけとファミリ内接続サブページの例を次の図に示します。

図2‒70　事前ページ割り当て機能を適用している場合の，サブページ間の関連づけとファミリ内接続サブページの例

2.7.2　レコードを格納するサブページの決定方法

レコードを格納するには，次の2つの方法があります。

SDBデータベースを操作するAPIまたはDMLでレコードを格納する方法

HiRDB/SDデータベース作成ユティリティ（pdsdblod）でレコードを格納する方法

各方法でのレコードを格納するサブページの決定方法について説明します。

参考

SDBデータベースを操作するAPIについては，マニュアル「TP1/Financial Service Platform プログラム作成の手引」を参照してください。

DMLについては，「17．DMLリファレンス【SD FMB】」を参照してください。

(1)　SDBデータベースを操作するAPIまたはDMLでレコードをサブページに格納する場合

SDBデータベースを操作するAPIまたはDMLでレコードを格納する場合，そのファミリに事前ページ割り当て機能を適用しているかどうかによって，格納するサブページの使用順序が異なります。事前ページ割り当て機能については，「(4)　事前ページ割り当て機能【4V FMB】」を参照してください。

(a)　事前ページ割り当て機能を適用していない場合

事前ページ割り当て機能を適用していない場合，次の表に示す優先順位に従って格納するサブページを決定します。優先順位1〜6のサブページにレコードを格納できない場合，RDエリアのページ不足となります。

表2‒27　SDBデータベースを操作するAPIまたはDMLでレコードを格納する場合の優先順位（事前ページ割り当て機能を適用していない場合）

優先順位

レコード種別

ルートレコード

2階層以下のレコード

1

未使用サブページ

基準サブページ※

2

−

基準サブページが属するページ内のファミリ内接続サブページ※

3

−

基準サブページが属するページ内の未使用サブページ※

4

−

基準サブページが属するページのセグメントおよびその直前のセグメント内の未使用サブページ

5

−

優先順位4以外の未使用サブページ

6

−

優先順位2以外の全ファミリ内接続サブページ※

（凡例）

−：該当しません。

注※

サブページ切り替えの指定がある場合，格納の対象になりません。サブページ切り替えについては，「2.7.2(3)　レコード格納時のサブページ切り替え【4V FMB，4V AFM】」を参照してください。

優先順位に従った2階層以下のレコードの格納時の動作を次の図に示します。

図2‒71　優先順位に従った2階層以下のレコードの格納時の動作（事前ページ割り当て機能を適用していない場合）

(b)　事前ページ割り当て機能を適用している場合【4V FMB】

4V FMBのSDBデータベースのルートレコードを格納する場合，指定数分の事前割り当てサブページを確保し，最初に確保した事前割り当てサブページを使用します。また，2階層目以下のレコードを格納する場合，基本的には確保済みの事前割り当てサブページを使用します。ただし，確保済みの事前割り当てサブページ内にレコードを格納できる空き領域がない場合は，指定数分の事前割り当てサブページを追加で確保し，最初に確保した事前割り当てサブページを使用します。

事前ページ割り当て機能を適用している場合，次の表に示す優先順位に従って，格納するサブページを決定します。優先順位1〜7のサブページにレコードを格納できない場合，RDエリアのページ不足となります。

表2‒28　SDBデータベースを操作するAPIでレコードを格納する場合の優先順位（事前ページ割り当て機能を適用している場合）

優先順位

レコード種別

ルートレコード

2階層以下のレコード

1

未使用サブページ※1

基準サブページ

2

−

基準サブページから関連づけられている，同一ページ内のファミリ内接続サブページ

3

−

優先サブページ※2

4

−

優先サブページから関連づけられている，同一ページ内の事前割り当てサブページ

5

−

優先順位1〜4以外の事前割り当てサブページ

6

−

最終事前割り当てサブページが属するページ内の未使用サブページ※1

7

−

基準サブページが属するページのセグメント，およびその直前のセグメント内の未使用サブページ※1

8

−

優先順位6および7以外の未使用サブページ※1

（凡例）

−：該当しません。

注※1

事前割り当てサブページとして確保します。

注※2

基準サブページが属するページの次にHiRDB/SDが優先的に格納を試みる事前割り当てサブページです。

優先順位に従った2階層以下のレコードの格納時の動作を次の図に示します。

図2‒72　優先順位に従った2階層以下のレコードの格納時の動作（事前ページ割り当て機能を適用している場合）

(2)　HiRDB/SDデータベース作成ユティリティ（pdsdblod）でレコードをサブページに格納する場合

HiRDB/SDデータベース作成ユティリティ（pdsdblod）でレコードをサブページに格納する場合，次の表に示す優先順位に従って，格納するサブページを決定します。優先順位1〜2のサブページにレコードを格納できない場合，RDエリアのページ不足となります。

表2‒29　HiRDB/SDデータベース作成ユティリティ（pdsdblod）でレコードをサブページに格納する場合の優先順位

レコード種別

優先順位

1

2

ルートレコードの格納

未使用サブページ

−

2階層以下のレコードの格納

直近でレコードを格納したサブページ※

未使用サブページ

（凡例）

−：該当しません。

注※

サブページ切り替えの指定がある場合，格納の対象になりません。サブページ切り替えについては，「(3)　レコード格納時のサブページ切り替え【4V FMB，4V AFM】」を参照してください。

(3)　レコード格納時のサブページ切り替え【4V FMB，4V AFM】

レコード格納時のサブページ切り替えについて説明します。サブページ切り替えは，4V FMBまたは4V AFMのSDBデータベースの場合に指定できます。

(a)　サブページ切り替えの概要

4V FMBまたは4V AFMのSDBデータベースにレコードを格納する際，格納対象のサブページを切り替えて，未使用サブページにレコードを格納できます。これをサブページ切り替えといいます。また，このとき，格納したレコードだけでそのサブページを占有し，ほかのレコードが格納されないようにすることもできます。格納対象のサブページを切り替えることによって，レコードに対するアクセスをサブページ単位に分散し，排他の競合を回避できます。

サブページ切り替えの指定には，次の2つの指定があります。

切り替え指定

切り替えたサブページにほかのレコードも格納できる指定

占有指定

切り替えたサブページを格納するレコードで占有する指定（ほかのレコードは格納できない指定）

サブページ切り替えの指定方法を次の表に示します。

表2‒30　サブページ切り替えの指定方法

格納方法

指定方法

HiRDB/SDデータベース作成ユティリティ（pdsdblod）

フォーマットライト機能使用時

dbinf文のpagecflgでページ切り替えフラグを指定します。dbinf文については，「12.3.3　dbinf文【4V FMB，4V AFM】」を参照してください。

上記以外

入力データファイルのプレフィクス部のページ切り替えフラグを指定します。詳細については，「12.3.3　dbinf文【4V FMB，4V AFM】」を参照してください。

SDBデータベースを操作するAPIによるレコード格納

SDBデータベースを操作するAPIに，ページ切り替えオプションを指定することによって，レコードの格納時にサブページを切り替えることができます。

'C'指定（切り替え指定）

レコード格納時にサブページを切り替え，未使用サブページを確保します。確保したサブページにほかのレコードを格納できます。

'O'指定（占有指定）

レコード格納時にサブページを切り替え，未使用サブページを確保します。確保したサブページは格納したレコードで占有します。ほかのレコードは格納できません。

'N'または'△'（空白）指定

サブページの切り替えを指定しません。

SDBデータベースを操作するAPIについては，マニュアル「TP1/Financial Service Platform プログラム作成の手引」を参照してください。

(b)　サブページ切り替えに関する留意事項

4V AFMのSDBデータベースの場合，仮想ルートレコードの格納時に，SDBデータベース格納定義のOCCURRENCE NUMBER句の指定値が1以上のレコードでは，仮想ルートレコードにアクセスする際の排他と，同一仮想ルートレコード下の子レコードにアクセスする際の排他の競合を回避するため，サブページ切り替えの指定が無視されます。このとき，'O'が指定されたと仮定してレコードが格納されます。

子レコードの格納時には，サブページ切り替えの指定に従ってレコードが格納されます。

レコードの一括削除後にレコードを格納する場合，一括削除時に存在していたレコードの格納領域が再利用されます。そのため，一括削除時に存在していたレコード件数分のレコードを格納するときには，ページ切り替え指定は無視されます。

HiRDB/SDは，異なるルートレコード下のレコードをサブページ内に混在させないため，ルートレコードの格納時にサブページを切り替えます。そのため，ルートレコード格納時の'C'指定，または指定なしの場合については，動作に違いはありません。'O'指定の場合には，ルートレコードだけで格納サブページを占有するため，ほかのレコードは格納されません。

ページ切り替え指定に従ってレコード格納時にサブページを切り替えた場合，確保したサブページと基準サブページとの間で，サブページ間の関連づけはされません。そのため，ページ切り替え指定以前に作成されていたサブページは，確保したサブページのファミリ内接続サブページとはなりません。

同一ルートレコード下のレコード格納サブページであっても，異なるファミリ内接続サブページに分割された場合には，「表2-27　SDBデータベースを操作するAPIまたはDMLでレコードを格納する場合の優先順位（事前ページ割り当て機能を適用していない場合）」の優先順位2および6の対象サブページとはなりません。ただし，サブページの切り替え後にレコードを格納することによって作成されたサブページ間は関連づけられるので，新たなファミリ内接続サブページとなります。サブページ間の関連づけ，ファミリ内接続サブページについては，「2.7.1(2)　サブページ間の関連づけとファミリ内接続サブページ」を参照してください。

基準レコードが'O'指定でサブページを占有しているレコードの場合であっても，ページ切り替え指定なしで未使用サブページを確保できているときには，確保したサブページと基準サブページとが関連づけられます。

事前ページ割り当て機能を適用しているファミリのレコードを格納する場合，サブページ切り替え指定でサブページを切り替えることはできません。サブページ切り替えの指定があるとエラーになります。事前ページ割り当て機能については，「(4)　事前ページ割り当て機能【4V FMB】」を参照してください。

(c)　ページ切り替えオプションによるレコードの格納例

4V FMBのSDBデータベースの場合

4V FMBのSDBデータベースに対するレコードの格納時の，ページ切り替えオプションによるレコードの格納例を次の図に示します。

図2‒73　ページ切り替えオプションによるレコードの格納例（4V FMBのSDBデータベースの場合）

OCCURRENCE NUMBER句に1以上を指定している4V AFMのSDBデータベースの場合

SDBデータベース格納定義のOCCURRENCE NUMBER句に1以上を指定している4V AFMのSDBデータベースに対するレコードの格納時の，ページ切り替えオプションによるレコードの格納例を次の図に示します。

図2‒74　ページ切り替えオプションによるレコードの格納例（OCCURRENCE NUMBER句に1以上を指定している4V AFMのSDBデータベースの場合）

OCCURRENCE NUMBER句に0を指定している4V AFMのSDBデータベースの場合

SDBデータベース格納定義のOCCURRENCE NUMBER句に0を指定している4V AFMのSDBデータベースに対するレコードの格納時の，ページ切り替えオプションによるレコードの格納例を次の図に示します。

図2‒75　ページ切り替えオプションによるレコードの格納例（OCCURRENCE NUMBER句に0を指定している4V AFMのSDBデータベースの場合）

(d)　適用基準

レコードに対するアクセス時の排他をサブページ単位で分散させたい場合，'O'指定または'C'指定を選択します。同時実行性は次の順に高くなります。

'O'指定（占有指定）（同時実行性がいちばん高い）

'C'指定（切り替え指定）

ページ切り替え指定なし

ただし，次の場合は指定による同時実行性の差異はありません。

4V FMBのSDBデータベースの場合（ルートレコードの格納サブページの排他によって，ルートレコード下のレコード群のアクセスがシリアライズされるため）

4V AFMのSDBデータベースで，SDBデータベース格納定義のOCCURRENCE NUMBER句の指定が0の場合（仮想ルートレコード下に子レコードが最大1件しか存在しないため）

なお，サブページ切り替えをすることによってデータベース容量が増大することがあるので注意してください。一般的に次の順でデータベース容量は増加します。

ページ切り替え指定なし（データベース容量がいちばん少ない）

'C'指定（切り替え指定）

'O'指定（占有指定）

SDBデータベース種別ごとに推奨する指定を次の表に示します。作成するデータベースや格納するレコードの特性に合わせて指定を決定してください。

表2‒31　SDBデータベース種別ごとに推奨する指定

SDBデータベース種別

サブページ切り替えで推奨する指定※1

備考

4V FMB

指定なし

ルートレコードの格納サブページの排他によって，ルートレコード下のレコードのアクセスがシリアライズされるため，'O'指定または'C'指定に同時実行性を向上させる効果はありません。

4V DAM

OCCURRENCE NUMBER句の指定が0

指定なし

仮想ルートレコード下に子レコードが最大1件しか存在しないため，'O'指定または'C'指定に同時実行性を向上させる効果はありません。

OCCURRENCE NUMBER句の指定が1以上

指定なし

または'O'指定（占有指定）※2

指定なしの場合，サブページに格納するレコード件数を制限し，排他の影響範囲を局所化したいときには，SDBデータベース格納定義のPCTFREE句を指定します。

サブページに1件だけレコードを格納する場合には'O'指定とします。

4V MAM

'O'指定（占有指定）※2

4V MAMのSDBデータベースは一般的に同時実行性が求められます。

4V TAM

'O'指定（占有指定）※2

4V TAMのSDBデータベースは一般的に同時実行性が求められます。

4V SAM

指定なし

4V SAMのSDBデータベースは一般的に同時実行性が求められません。

注※1

データベース単位で，すべてのレコードに一律同じ指定をする場合の推奨値です。格納するレコードの特性やレコードの件数などがわかっている場合は，レコード単位に指定を切り替えることで，格納配置をより詳細に制御できます。レコード単位の指定の切り替えによるレコードの配置例については，「(e)　ページ切り替え指定によるレコードの配置例」を参照してください。

注※2

参照しかしないデータベースの場合や，ほかのトランザクションが存在しない状態で，更新処理を単独で実行するような場合には，サブページ排他での排他待ちが発生しないため，「指定なし」を推奨します。この場合，サブページに格納するレコード件数を制限し，排他の影響範囲を局所化する目的でPCTFREE句を指定する必要はありません。

(e)　ページ切り替え指定によるレコードの配置例

アクセス頻度によってページ切り替え指定を使い分ける

4V DAMのSDBデータベースなどで，アクセス頻度が高く同時実行性が要求されるレコードに対してだけ'O'指定をするというように指定を使い分けると，同時実行性を確保しながらデータベース容量を小さく抑えるといった，データベース設計ができます。アクセス頻度によってページ切り替え指定を使い分ける例を次の図に示します。この例では仮想ルートレコード2下のレコードだけ'O'指定をしています。

図2‒76　アクセス頻度によってページ切り替え指定を使い分ける例

論理的に関連するレコードの格納位置をまとめる

4V FMBのSDBデータベースで，データベース初期作成後のレコードの格納に備えて'C'指定をしておくことで，論理的に関連するレコードを同一サブページに格納するといった，データベース設計ができます。

論理的に関連するレコードの格納位置をまとめる例を次の図に示します。この例では孫レコードを格納するための領域をページ切り替え指定によって確保しておくことで，同一子レコード下の孫レコードを同一サブページに格納しています。

図2‒77　論理的に関連するレコードの格納位置をまとめる例

(4)　事前ページ割り当て機能【4V FMB】

サブページ分割をする4V FMBのSDBデータベースのファミリに，事前ページ割り当て機能を適用すると，サブページが事前割り当てサブページとして確保されます。

事前ページ割り当て機能は，4V FMBのSDBデータベースの場合に使用できます。

(a)　事前ページ割り当て機能の概要

HiRDB/SDデータベース作成ユティリティ（pdsdblod），またはSDBデータベースを操作するAPIで4V FMBのSDBデータベースにルートレコードを格納する場合，事前割り当てサブページ数を指定すると，指定したファミリにあらかじめ指定数分の連続したデータページ（事前割り当てサブページ）が確保されます。

HiRDB/SDデータベース作成ユティリティ（pdsdblod）での指定方法については，次の説明を参照してください。

「12.3.2　load文」のprefixオペランドの説明

「12.3.3　dbinf文【4V FMB，4V AFM】」のpagenumオペランドの説明

「12.6.1(3)　プリフィクス部【4V FMB，4V AFM】」の事前割り当てページ数の説明

SDBデータベースを操作するAPIによるレコードの格納（STORE）での，事前割り当てサブページ数の指定方法については，マニュアル「TP1/Financial Service Platform プログラム作成の手引」を参照してください。

SDBデータベースを操作するAPIの実行時には次の制御を行うため，2階層目以下のレコードの格納およびレコードの削除を繰り返し実行した場合でも，ファミリ単位に連続したデータページ内へのレコードの配置を維持できます。

2階層目以下のレコードの格納時に，事前割り当てサブページ内にレコードを格納できる空き領域がある場合，その空き領域にレコードが格納されます。

2階層目以下のレコードの削除によって，事前割り当てサブページ内のレコードがすべて削除された場合でも，事前割り当てサブページは解放されないで，2階層目以下のレコードの格納時に再利用されます。

この配置制御によって，特定のファミリに連続してアクセスする場合にI/O回数の削減が見込まれるため，SDBデータベースを操作するAPIを繰り返し実行しても，一定のアクセス性能を維持できます。

2階層目以下のレコードの格納時に，事前割り当てサブページ内にレコードを格納できる空き領域がない場合，追加で事前割り当てサブページが確保されます。このときに確保される事前割り当てサブページの数は，該当するレコードの格納時の事前割り当てサブページ数の指定に従います。事前割り当てサブページ不足が発生していない場合，または事前ページ割り当て機能を適用していない場合，その指定は無視されます。

なお，事前割り当てサブページ数に0を指定した場合は1を指定したときと同じく，格納対象のレコードを格納するサブページだけが確保されます。

(b)　事前割り当てサブページ数の引き継ぎ

確保済みの事前割り当てサブページの数は，次の表に示す機能で取得できます。

表2‒32　事前割り当てサブページ数を取得できる機能

事前割り当てサブページ数を取得できる機能

機能概要

HiRDB/SDデータベース再編成ユティリティ（pdsdbrog）

アンロード時，ファミリ単位に確保済みの事前割り当てサブページの数がアンロードデータファイルのプリフィクス部に設定されます。

事前割り当てページ数の取得方法については，次の説明を参照してください。

「13.3.2　unload文」のprefixオペランドの説明

「13.3.3　dbinf文【4V FMB】」のpagenumオペランドの説明

「13.6.1　レコードのデータ形式」のプリフィクス部の説明

レコードの検索（FETCH）

ルートレコードの検索時に確保済みの事前割り当てサブページの数が返却されます。2階層目以下のレコードだけを検索した場合は0が返却されます。また，事前ページ割り当て機能を適用していないファミリを検索した場合にも0が返却されます。

SDBデータベースを操作するAPIでの事前割り当てページ数の取得方法については，マニュアル「TP1/Financial Service Platform プログラム作成の手引」を参照してください。

複数レコードの検索（FETCHDB ALL）

これによって，次の場合に事前割り当てサブページ数を引き継ぐことができます。

SDBデータベースの再編成時

異なるSDBデータベース間のデータ移行時

事前割り当てサブページ数の引き継ぎ例を次の図に示します。

図2‒78　事前割り当てサブページ数の引き継ぎ例

(c)　事前ページ割り当て機能の適用条件

事前ページ割り当て機能は，次の機能と同時に適用できません。

サブページ切り替え

SDBデータベース格納定義のPCTFREEオペランド，またはHiRDB/SDデータベース作成ユティリティ（pdsdblod）のenvironment文のrecfreeオペランドで指定する空き領域の作成

(d)　事前ページ割り当て機能に関する留意事項

確保できる事前割り当てサブページ数の上限値は，1ファミリ当たり2,147,483,647です。サブページ分割をしている場合，ファミリを格納するために必要な事前割り当てサブページ数がこの上限値を超える可能性があります。その場合はエラーになるため，次のどちらかの対応が必要です。

SDBデータベース格納定義のSTORAGE RECORD句で指定しているSUBPAGE NUMBER句の指定値を小さくします。これによって，1サブページ当たりに格納できるレコード件数を増やすことができます。その結果，該当するファミリを格納するために必要なサブページの数を上限値以下にできます。

SDBデータベース格納定義のSTORAGE RECORD句で指定しているSUBPAGE NUMBER句の指定を省略することで，サブページ分割をしないようにします。

HiRDB/SDデータベース作成ユティリティ（pdsdblod）でレコードを格納する場合，次のように動作します。

事前ページ割り当て機能を適用するファミリにサブページ切り替えの指定がある場合，論理エラーになります。

事前割り当てサブページが属するページを確保する際，セグメント内の空きページの比率の指定は無視されるため，事前割り当てサブページが属するページ間に空きページは確保されません。通常のサブページが属するページを確保する際に空きページは確保されますが，同じセグメント内に事前割り当てサブページが属するページが含まれる場合，通常は指定したセグメント内の空きページの比率にはなりません。この場合のセグメント内の空きページの比率については，「3.2.6(4)(b)　未使用領域および空きページの作成に関する留意事項」を参照してください。

事前割り当てサブページにレコードを格納する際，サブページ内の未使用領域の比率は無視されるため，レコードが詰めて格納されます。

SDBデータベースを操作するAPIでレコードを格納する場合，次のように動作します。

事前ページ割り当て機能を適用しているファミリのレコードを格納する際に，サブページ切り替えの指定があるとエラーになります。

事前ページ割り当て機能を適用しているファミリのレコードを格納する際に，PCTFREE有効化オプションを適用するとエラーになります。

データロード時にレコードを格納するために確保したサブページの数が，指定した事前割り当てサブページ数を超えた場合，該当するファミリを格納するために指定値を超えて確保したサブページも，事前割り当てサブページとして扱われます。

次のどれかの場合，事前ページ割り当て機能を適用しても非連続のデータページ，または非連続の事前割り当てサブページが確保されることがあります。

空きページが散在しているSDBデータベースに対して，追加データロードまたはSDBデータベースを操作するAPIによるルートレコードの格納を実行し，事前割り当てサブページが確保される場合

SDBデータベースを操作するAPIによる2階層目以下のレコードの格納時に，事前割り当てサブページ不足が発生し，追加で事前割り当てサブページが確保される場合

SDBデータベースを操作するAPIによるレコードの格納時の事前割り当てサブページの確保中に，ほかのトランザクションによるサブページの確保が割り込む場合

追加データロード時に，非連続のデータページ内のサブページが事前割り当てサブページとして確保される例（1.の例）を次の図に示します。この図では，初期データロード時に確保した空きページを事前割り当てサブページが属するページとして確保する例を示しています。

図2‒79　追加データロード時の非連続データページ（事前割り当てサブページが属するページ）の確保例

なお，SDBデータベースを操作するAPIのレコードの削除によってページが解放され，未使用ページが存在する状態で追加データロードを実行した場合でも，そのページが再利用されることで，同様に非連続のデータページが確保されることがあります。ただし，次の場合，この状態はpdsdblodコマンドまたはSDBデータベースを操作するAPIを実行する前の，使用中の最終セグメントでだけ発生します。

追加データロード時

新規にセグメントを確保できる状況での，SDBデータベースを操作するAPIによるルートレコードの格納時

事前割り当てサブページ不足発生時に，非連続の事前割り当てサブページが確保される例（2.の例）を次の図に示します。

図2‒80　事前割り当てサブページ不足発生時の非連続の事前割り当てサブページの確保例

この図では，データページは連続していますが，1サブページずつ追加しているため，本来は各ファミリが2ページずつに収まるところが，3ページにまたがっています。このような状況でファミリ内のレコードすべてにアクセスする場合，I/O回数が増加してしまいます。この問題は，一定量の事前割り当てサブページを一括して確保することで緩和できます。

非連続のデータページが事前割り当てサブページが属するページとして確保されているかどうかは，データベース状態解析ユティリティ（pddbst）で確認できます。

この問題を解消するには，SDBデータベースを再編成する必要があります。

確保する事前割り当てサブページの数に比例して，レコードの格納性能は低下します。そのため，事前割り当てサブページの連続性とレコードの格納性能を考慮して，指定する事前割り当てサブページ数を決定する必要があります。ただし，ルートレコードを格納する際には，事前割り当てサブページの連続性を優先させ，ファミリ内のすべてのレコードを格納できるだけの事前割り当てサブページを一括して確保することを推奨します。

事前割り当てサブページを確保する際，基本的には使用中の最終セグメント，または新規に確保したセグメント内の空きページが使用されます。これらのセグメントから空きページを確保できなくなると，それ以外の使用中のセグメントから空きページが確保されます。このとき，次のようなケースでは，レコードの格納性能が大きく低下します。

空きページが散在している。

空きページを持たないセグメントが多数存在する。

空きページのサーチ例については，「図2-63　空きページのサーチ例」を参照してください。

このような場合，次のどちらかの対応が必要です。

HiRDB/SDデータベース再編成ユティリティ（pdsdbrog）とHiRDB/SDデータベース作成ユティリティ（pdsdblod）で，SDBデータベースを再編成します。

データベース構成変更ユティリティ（pdmod）で，レコード格納用RDエリアを拡張します。

「図2-63　空きページのサーチ例」に示した空きページのサーチが動作して，レコードの格納性能が低下する前に，上記の対応をすることを推奨します。そのためには，システム共通定義のpd_rdarea_warning_pointオペランドを指定します。これによって，次のメッセージが出力されるため，RDエリアの使用状況を監視できます。

・RDエリアのセグメント使用率通知メッセージ（KFPH00211-IまたはKFPA12300-I）

・増分するHiRDBファイルの領域使用率通知メッセージ（KFPH22037-W）

詳細については，マニュアル「HiRDB Version 9 システム定義」のpd_rdarea_warning_pointオペランドの説明を参照してください。

SDBデータベースを再編成するときに，事前割り当てサブページ数を変更したい場合は，事前割り当てサブページ数を指定し直す必要があります。

更新可能なオンライン再編成時に，事前ページ割り当て機能の適用有無を変更した場合，ルートレコード配下のレコードの格納（STORE）に対する更新追い付き反映処理は次のように動作します。

適用ありから適用なしに変更した場合

事前割り当てサブページ数の指定は無視し，0が指定されたものとして動作します。

適用なしから適用ありに変更した場合

事前割り当てサブページ不足発生時，事前割り当てサブページ数の指定値として0が指定されたものとして動作するため，1サブページだけ確保されます。

次のオプションの指定は無視され，X'00'が指定されたものとして動作します。

・ページ切り替えオプション

・PCTFREE有効化オプション

更新可能なオンライン再編成時の追い付き反映処理では，SDBデータベースを操作するAPIによるレコードの格納時に指定した事前割り当てサブページ数の指定値を引き継ぎます。オンライン（レプリカRDエリア）側と再編成（オリジナルRDエリア）側では，サブページの使用状況が異なるため，追い付き反映処理後に確保済みの事前割り当てサブページの数が一致しないことがあります。更新可能なオンライン再編成の追い付き反映処理での事前割り当てサブページ数の引き継ぎ例を次の図に示します。

図2‒81　更新可能なオンライン再編成の追い付き反映処理での事前割り当てサブページ数の引き継ぎ例

なお，上記と同様にサブページの使用状況が変わるため，SDBデータベースの再編成によって，確保済みの事前割り当てサブページの数が増加することがあります。

「図2-81　更新可能なオンライン再編成の追い付き反映処理での事前割り当てサブページ数の引き継ぎ例」に示したように，SDBデータベースを操作するAPIによるレコードの格納に対する追い付き反映処理によって，事前割り当てサブページが追加で確保された場合，オンライン（レプリカRDエリア）側のトランザクションがロールバックしても，その追加された事前割り当てサブページは解放されません。なお，SDBデータベースを操作するAPIによるルートレコードの格納時に確保された事前割り当てサブページの場合は解放されます。

(e)　事前ページ割り当て機能を適用したファミリの格納例

データロード時に事前ページ割り当て機能を適用したファミリと適用していないファミリの格納例を次の図に示します。

図2‒82　事前ページ割り当て機能の適用有無の違いによるファミリの格納例（サブページ分割をする場合）

このように，事前ページ割り当て機能を適用しているファミリの場合は，事前割り当てサブページ内にレコードを格納できる空き領域があるときは，その空き領域を再利用してレコードが格納されます。事前ページ割り当て機能を適用していないファミリの場合は，確保済みのサブページ内にレコードを格納できる空き領域があっても，その空き領域を再利用しないで，未使用サブページを確保してレコードが格納されることがあります。

なお，事前割り当てサブページ不足が発生し，追加で事前割り当てサブページが確保される場合の格納例については，「図2-80　事前割り当てサブページ不足発生時の非連続の事前割り当てサブページの確保例」を参照してください。

(f)　適用基準

次のような場合に，事前ページ割り当て機能の適用を検討してください。

2階層目以下のレコードの格納およびレコードの削除を繰り返し実行するファミリへの連続したアクセスがあり，このとき一定のアクセス性能を維持したい場合（サブページ切り替え指定や，PCTFREEオペランドまたはrecfreeオペランド指定で厳密な空き領域設計ができる場合を除く）

ほかの平均的なサイズのファミリと比べて，サイズが極端に大きいファミリであり，個別に格納領域の設計を行う必要がある場合

サブページ切り替えを行うための厳密な見積もりが困難である場合

(g)　警告情報の出力

HiRDB/SDデータベース作成ユティリティ（pdsdblod）での警告情報の出力

データロードによるレコードの格納時，レコードを格納するために確保したサブページの数が，指定した事前割り当てサブページ数を超えた場合，ファミリ単位にKFPB63515-Wメッセージが出力されます（事前割り当てサブページ数の見積もりの誤り，または事前割り当てサブページ数の指定誤りが通知されます）。KFPB63515-Wメッセージについては，「12.7　実行結果ファイルの出力形式」を参照してください。

HiRDB/SDデータベース再編成ユティリティ（pdsdbrog）での警告情報の出力

アンロード時，事前ページ割り当て機能が適用されているファミリが存在するのに，アンロードデータファイル内にプリフィクス部が存在しないため，事前割り当てサブページ数が取得されなかった場合，KFPB63516-Wメッセージが出力されます（事前割り当てサブページ数の引き継ぎが行われなかったことが通知されます）。

SDBデータベースを操作するAPIによるレコードの格納（STORE）での警告情報の出力

SDBデータベースを操作するAPIによるレコードの格納時に，事前割り当てサブページが不足して事前割り当てサブページが追加で確保された場合，レコード格納用RDエリア単位にKFPB32000-W〜KFPB32003-Wメッセージが出力されます（事前割り当てサブページ数の再見積もりの要否確認が必要であることが通知されます）。

なお，このメッセージは1回出力されると，次回以降の事前割り当てサブページの不足時に，事前割り当てサブページを追加で確保してもメッセージが出力されません。この場合，次のどれかの操作が行われるまでメッセージが出力されません。メッセージの出力抑止状態の解除条件，および出力対象となるRDエリアを次に示します。

出力抑止状態の解除条件

クローズ状態の該当するレコード格納用RDエリアをpdopenコマンド，またはpdrels -oコマンドでオープンしたとき

該当するレコード格納用RDエリアに対して初期データロードを実行したとき

HiRDBを再起動したとき

出力対象となるRDエリア

インナレプリカ機能を使用していないレコード格納用RDエリアの場合，出力対象となります。

レコード格納用RDエリアにインナレプリカ機能を使用している場合，オリジナルRDエリアが出力対象となります。

(5)　更新可能なオンライン再編成の追い付き反映処理でレコードをサブページに格納する場合【4V FMB】

更新可能なオンライン再編成の追い付き反映処理時に有効となる格納配置制御のオプションを次の表に示します。

表2‒33　追い付き反映処理時に有効となる格納配置制御のオプション

追い付き反映処理の種類

格納配置制御のオプション

ページ切り替えオプション

PCTFREE有効化オプション

事前割り当てページ数

レコードの格納（STORE）の更新追い付き反映処理

○

○

○

レコードの削除（ERASE）の回復追い付き反映処理

×

×

−

（凡例）

○：オンライン（レプリカRDエリア）側で，レコードの格納（STORE）時に指定した格納配置制御のオプションの指定を適用します。SDBデータベースの再編成時に，事前ページ割り当て機能の適用有無を変更した場合の動作については，「(4)(d)　事前ページ割り当て機能に関する留意事項」を参照してください。

×：格納配置制御のオプションの指定を適用しません。

サブページを切り替えません。

SDBデータベース格納定義のPCTFREE句で指定したサブページ内の未使用領域の比率を適用しないで，レコード実現値を格納します。

−：該当しません。

(a)　レコードの格納（STORE）の更新追い付き反映処理時の格納配置制御

レコードの格納（STORE）の更新追い付き反映処理時の格納配置制御では，レコードを事前割り当てサブページに格納する場合を除き，オンライン（レプリカRDエリア）側で指定した格納配置制御のオプションの指定が適用されます。

ページ切り替えオプションの指定の違いによる格納配置制御については，「図2-73　ページ切り替えオプションによるレコードの格納例（4V FMBのSDBデータベースの場合）」を参照してください。

PCTFREE有効化オプションを適用した場合の格納配置制御については，「図3-15　サブページに格納するレコード件数を制限する例」を参照してください。

事前ページ割り当て機能の適用有無の違いによる格納配置制御については，「図2-82　事前ページ割り当て機能の適用有無の違いによるファミリの格納例（サブページ分割をする場合）」を参照してください。なお，この図では，HiRDB/SDデータベース作成ユティリティ（pdsdblod）を実行する場合に，事前割り当てサブページ数を指定したときのファミリの格納例を示しています。SDBデータベースを操作するAPIでレコードの格納を実行する場合に，事前割り当てサブページ数を指定したときも同様の格納配置となります。

ルートレコード下のレコードの格納時に，事前割り当てサブページが不足した場合の格納配置制御については，「図2-80　事前割り当てサブページ不足発生時の非連続の事前割り当てサブページの確保例」を参照してください。

(b)　レコードの削除（ERASE）の回復追い付き反映処理時の格納配置制御

レコードの削除（ERASE）の回復追い付き反映処理時の格納配置制御では，オンライン（レプリカRDエリア）側で指定した格納配置制御のオプションの指定が適用されません。

ページ切り替えオプションを指定し，PCTFREE有効化オプションを適用したときの回復追い付き反映処理時の格納配置制御を次の図に示します。

図2‒83　レコードの削除（ERASE）の回復追い付き反映処理時の格納配置制御

2.8　グローバルバッファ

グローバルバッファとは，ディスク上のRDエリアに格納されているデータを入出力するためのバッファのことで，共用メモリ上に確保されます。HiRDB/SDはデータベースの入出力処理にグローバルバッファを使用しています。

データを更新するためにバッファ上で更新され，データベースには未反映のバッファを更新バッファといいます。また，データを参照するためのバッファ，およびデータベースに反映済みのバッファを参照バッファといいます。

次に示すRDエリアには，必ずグローバルバッファを割り当ててください。

レコード型，またはレコード型のインデクスを格納するユーザ用RDエリア

システム用RDエリア

追い付き反映キー対応表を格納するユーザ用RDエリア

追い付き反映キー対応表のインデクスを格納するユーザ用RDエリア

追い付き状態管理表を格納するユーザ用RDエリア

監査証跡表を格納するユーザ用RDエリア

データ用グローバルバッファ

データの入出力に使用されるグローバルバッファです。データ用グローバルバッファはRDエリア単位に割り当てます。

グローバルバッファの概念を次の図に示します。

図2‒84　グローバルバッファの概念

なお，HiRDBの再起動を必要としないSDBデータベースの定義追加や変更でRDエリアを追加した場合，データベース構成変更ユティリティ（pdmod）で割り当てたグローバルバッファは一時的なものです。HiRDBを正常停止，または計画停止したときに，システム共通定義のpdbufferオペランドでグローバルバッファの割り当てを行う必要があります。

2.9　排他制御

HiRDB/SDの排他制御について説明します。

HiRDB/SDでは，複数のユーザ（トランザクション）がSDBデータベースに同時にアクセスしても，SDBデータベースの整合性を保つように排他制御を行っています。

2.9.1　排他制御の単位

SDBデータベースの排他制御の単位について説明します。

排他制御では，排他資源という単位で排他を掛けます。SDBデータベースでは，RDエリアやルートレコード型などが排他資源に該当します。

排他制御では排他資源の上位から下位へと順番に排他が掛けられます。また，排他資源には包含関係があります。

例えば，RDエリアとルートレコード型の関係では，RDエリアが上位，ルートレコード型が下位の排他資源となります。あるトランザクションが，上位の排他資源であるRDエリアに対して，排他資源を占有するモードで排他を掛けると，そのRDエリアに含まれる下位の排他資源（ルートレコード型，インデクス，ページ，サブページ）は，ほかのトランザクションで同時に使用できなくなります。排他制御のモードについては，「2.9.2　排他制御のモード」を参照してください。

SDBデータベースの排他資源とその包含関係を次の図に示します。

図2‒85　SDBデータベースの排他資源とその包含関係

注

上記の図に示した排他資源以外に，セグメントに対して排他制御を行う場合があります。例えば，SDBデータベースの削除を行う場合は，セグメント単位に排他制御を行います。

また，インデクスの一意性を保証するため，行に対して排他制御を行います。HiRDB/SDでの排他資源の行とは，レコード実現値のことです。

注※1

インナレプリカ機能使用時の最上位排他資源は，インナレプリカ構成管理情報，またはレプリカグループ構成管理情報となります。

インナレプリカ構成管理情報の排他を取得できない場合に，レプリカグループ構成管理情報の排他を取得します。レプリカRDエリアを定義していないRDエリアにアクセスする場合でも，排他が掛かります。これによって，業務実行中に通常RDエリアにレプリカRDエリアが定義されたり，インナレプリカグループ内の構成が変わったりすることを抑止します。

注※2

RDエリアは，ルートレコード型，インデクス，ページ，サブページの上位資源となります。

注※3

インナレプリカ機能を使用する場合，RDエリア，ルートレコード型，インデクス，ページ，サブページは，世代ごとの排他になります。

注※4

サブページ分割をする場合（SDBデータベース格納定義のSTORAGE RECORD句下にSUBPAGE NUMBER句を指定している場合），排他制御の単位はページではなく，サブページになります。

なお，サブページ分割をする場合は，「2.9.2　排他制御のモード」〜「2.9.9　コミットしていない削除データの排他制御」を読まれる際，レコードを格納するRDエリアのページ（データページ）をサブページに読み替えてください。

2.9.2　排他制御のモード

排他制御では，ルートレコード型，ページなどのそれぞれの排他資源に対して，次に示す5種類の排他制御モードがあります。

共用モード（PRモード：Protected Retrieve）

排他資源の参照だけが許されるモードです。ほかのトランザクションによる参照を許します。

排他モード（EXモード：Exclusive）

1つのトランザクションだけが排他資源を占有するモードです。ほかのトランザクションによる排他資源の参照，追加，更新および削除を許しません。

意図共用モード（SRモード：Shared Retrieve）

排他資源の参照だけが許されるモードです。ほかのトランザクションによる排他資源の参照，追加，更新および削除を許します（ただし，排他資源がページの場合は参照だけを許します）。

意図排他モード（SUモード：Shared Update）

排他資源の参照，追加，更新および削除が許されるモードです。ほかのトランザクションによる排他資源の参照，追加，更新および削除を許します。

共用意図排他モード（PUモード：Protected Update）

排他資源の参照，および更新が許されるモードです。ほかのトランザクションによる排他資源の参照だけを許します。

同一資源に対して2つのトランザクションが同時に排他を掛ける場合，排他制御モードによって，トランザクションを同時に実行できたりできなかったりします。排他制御モードとトランザクションの同時実行性を次の表に示します。

表2‒34　排他制御モードとトランザクションの同時実行性

排他制御モード

SR

PR

SU

PU

EX

SR

○

○

○

○

×

PR

○

○

×

×

×

SU

○

×

○

×

×

PU

○

×

×

×

×

EX

×

×

×

×

×

（凡例）

○：同時に実行できる。

×：同時に実行できない。

2つのトランザクションが同時に実行できない場合，一般的に，一方のトランザクションがもう一方のトランザクションの終了待ちとなります。

(1)　排他制御モードの遷移

同一トランザクションが同一資源に対して，異なる種類の排他制御モードで二重，三重に排他を掛けていくと，排他制御モードは強い方へと遷移していきます。例えば，一度，EXモードで排他を掛けると，後からPRモードで排他を掛けても，その資源はEXモードのままであり，PRモードにはなりません。

現在の排他制御モードに対して，さらに排他制御を掛けた場合の排他制御モードの遷移規則を次の表に示します。

表2‒35　排他制御モードの遷移規則

後から掛ける排他制御モード

現在の排他制御モード

SR

PR

SU

EX

PU

SR

−

−

−

−

−

PR

PR

−

PU※

−

−

SU

SU

PU※

−

−

−

EX

EX

EX

EX

−

EX

PU

PU

PU

PU

−

−

（凡例）

−：排他制御モードは遷移しません。

−以外：遷移後の排他制御モードを表します。

注※

排他制御モード遷移の結果として，PUモードになることがあります。このモードはSRモードとだけ同時実行できます。

詳細については，マニュアル「HiRDB Version 9 UAP開発ガイド」の「モードの遷移」も参照してください。

(2)　排他制御モードの組み合わせ

排他制御は，実行するAPIまたはDMLの種類，および実行条件などによって，モードの組み合わせが異なります。

実行するAPIまたはDMLの種類，および実行環境の違いによる排他制御のモードの組み合わせの例を説明します。

参考

SDBデータベースを操作するAPIについては，マニュアル「TP1/Financial Service Platform プログラム作成の手引」を参照してください。

DMLについては，「17.　DMLリファレンス【SD FMB】」を参照してください。

表2‒36　排他制御のモードの組み合わせの例（4V FMBのSDBデータベースの場合）

注

（凡例）と表中の※の説明は，「表2-38　排他制御のモードの組み合わせの例（SD FMBのSDBデータベースの場合）」の後ろで説明しています。

表2‒37　排他制御のモードの組み合わせの例（4V AFMのSDBデータベースの場合）

注

（凡例）と表中の※の説明は，「表2-38　排他制御のモードの組み合わせの例（SD FMBのSDBデータベースの場合）」の後ろで説明しています。

表2‒38　排他制御のモードの組み合わせの例（SD FMBのSDBデータベースの場合）

（凡例）

PU：共用意図排他モード

EX：排他モード

SR：意図共用モード

SU：意図排他モード

−：排他を掛けないことを示します。または，該当しません。

注※1

インナレプリカ機能使用時の最上位排他資源は，インナレプリカ構成管理情報，またはレプリカグループ構成管理情報となります。これらの排他資源を管理することで，インナレプリカ機能に関連する運用コマンドやユティリティとUAPの同時実行を抑止します。

インナレプリカ機能を使用しない場合，UAPを実行しても，インナレプリカ構成管理とレプリカグループ構成管理には排他を掛けません。

インナレプリカ機能を使用する場合，次に示す条件のうち，どちらかを満たすと，UAP実行時に排他を掛ける範囲が小さくなります。

UAP実行時の排他の単位が小さくなる条件

システム共通定義のpd_inner_replica_lock_shiftオペランドにYを指定する。

システム共通定義のpd_inner_replica_lock_shiftオペランドにNを指定（インナレプリカ機能の同時実行性を向上させない指定）し，かつ運用コマンドやユティリティが動作中である。

排他を掛ける範囲が小さくなった場合の排他範囲

インナレプリカ構成管理単位ではなく，レプリカグループ構成管理単位になる。

サーバ単位ではなく，インナレプリカグループ単位になる。

詳細については，マニュアル「HiRDB Version 9 システム定義」のpd_inner_replica_lock_shiftオペランドの説明を参照してください。

注※2

更新ログ取得方式がログレスモード指定の場合，SUモードはEXモードの排他になります。

注※3

インデクスの一意性を保証するためにHiRDB/SDが内部的に行に排他を掛けます。

注※4

SDBデータベースを操作するAPIで指定する排他モード1

'S'：共用モード

'E'：排他モード

'O'：占有モード

'N'：無排他モード

注※5

SDBデータベースを操作するAPIで指定するアクセスモード1

'R'：参照モード

'U'：更新モード

注※6

SDBデータベースを操作するAPIで指定するポインタオプション

'U'：親レコードのUSERポインタに対象レコードの格納位置を設定します。

'C'：親レコードのUSERポインタの設定を解除します。

注※7

自身がルートレコードの場合，またはルートレコードの格納ページと同一の場合は，EXモードになります。

注※8

親レコードの格納ページが，対象レコードの格納ページと同一の場合は，EXモードになります。

注※9

シーケンシャルインデクスの一意性を保証するために，排他を掛けます。

注※10

PRIORレコード（格納するレコードのPRIORポインタに接続されるレコード）がルートレコードの場合，またはPRIORレコードの格納ページがルートレコードか対象レコードの格納ページと同一の場合は，EXモードになります。

注※11

NEXTレコード（格納するレコードのNEXTポインタに接続されるレコード）がルートレコードの場合，またはNEXTレコードの格納ページがルートレコードか対象レコードの格納ページと同一の場合は，EXモードになります。

注※12

SDBデータベースを操作するAPIで指定する一括オプション

'O'：最下位レベルのレコードについて，すべてのレコードを削除します。

'S'：削除対象のレコードが，最下位レベルのときは位置づけしているレコードだけを削除します。削除対象のレコードが最下位レベルでないときは，位置づけしているレコードとその下位レベルのレコードを削除します。

注※13

対象となるレコード型に二次インデクスが定義されている場合だけ排他を掛けます。ただし，レコードの検索で，検索に二次インデクスを使用しない場合は排他を掛けません。また，排他資源が行の場合，追加または削除対象のレコードに関する排他を掛けます。

注※14

操作対象レコードのレコード型の，SDBデータベース格納定義のOCCURRENCE NUMBER句の指定値が0の場合は，SDBデータベースを操作するAPIで指定する排他モード1の指定によって，次のように排他制御モードが変更になります。

排他モード1の指定が'E'の場合：PUモード

排他モード1の指定が'O'の場合：EXモード

注※15

同一データベースキー値のレコードが1件も格納されていない場合，仮想ルートレコードを追加したあと，子レコードを追加します。ただし，レコードの削除によって当該データベースキー値を持つ子レコードが0件となる場合は，仮想ルートレコードは削除されないため，そのあとに実行する1件目のレコードの格納は該当しません。

注※16

シーケンシャルインデクス，および二次インデクスの一意性を保証するために，排他を掛けます。ただし，二次インデクスについては，対象となるレコード型に二次インデクスが定義されている場合だけ，排他を掛けます。

注※17

PRIORレコードの格納ページが，対象レコードの格納ページと同一の場合はEXモードになります。

注※18

NEXTレコードの格納ページが，対象レコードの格納ページと同一の場合はEXモードになります。なお，4V AFMのSDBデータベースは最後方への追加だけのため，NEXTレコードは必ずルートレコードとなります。

注※19

一括削除後のレコードの格納は，削除前の一連番号の最大値に達するまでは，内部的にレコードの更新（MODIFY）と同等の変更処理に置き換わります。

注※20

対象レコードの格納ページと同一の場合は，EXモードになります。

注※21

検索対象となるレコードに，ルートレコードが含まれる場合が対象となります。

注※22

検索対象となるレコードに，ルートレコードが含まれない場合が対象となります。

注※23

次に示すどちらかの場合は，HiRDB/SDが内部的にシーケンシャルインデクスを更新するため，SUモードで排他を掛けます。

レコードの削除，またはレコードの一括削除によって，当該データベースキー値を持つ子レコードが0件となったあとに実行する，1件目のレコードの格納の場合

レコードの削除によって，当該データベースキー値を持つ子レコードが0件となる場合

注※24

次に示すどちらかの場合は，HiRDB/SDが内部的にシーケンシャルインデクスを更新するため，仮想ルートレコードにEXモードで排他を掛けます。

レコードの削除，またはレコードの一括削除によって，当該データベースキー値を持つ子レコードが0件となったあとに実行する，1件目のレコードの格納の場合

レコードの削除，またはレコードの一括削除によって，当該データベースキー値を持つ子レコードが1件以上から0件となる場合

注※25

レコードの一括削除の実行前に当該データベースキー値を持つ子レコードが0件の場合，各排他資源の排他制御モードは次のようになります。

シーケンシャルインデクス格納用RDエリア：SR

行：−

注※26

TAMのデータベースの無排他検索機能で動作する場合は，排他を掛けません。

注※27

対象となるレコード型にインデクスが定義されている場合に限り，削除対象のレコードに排他を掛けます。

注※28

削除対象のファミリを事前割り当てページに格納している場合，SDBデータベースを操作するAPI（ERASE）実行時に子レコードが格納されていない事前割り当てページに対しても，ページを解放するために排他を掛けます。

注※29

SDBデータベースを操作するAPI（STORE）実行時に確保する事前割り当てページに対しても，EXモードで排他を掛けます。

注※30

SD排他モードは，SDB用UAP環境定義のsubschemaオペランドの-eオプションで指定します。-eオプションの指定値の意味は次のとおりです。

shared：ほかのUAP からの参照および更新を許します。

protected：ほかのUAP からの更新を許しません。

exclusive：ほかのUAP からの参照および更新を許しません。

注※31

アクセス目的は，SDB用UAP環境定義のsubschemaオペランドの-aオプションで指定します。-aオプションの指定値の意味は次のとおりです。

retrieve：レコードの参照だけを行います。

update：レコードの参照および更新を行います。

注※32

排他自動解除機能を使用し，かつレコードの検索（FETCH）または位置指示子の位置づけ（FIND）でルートレコードに位置づけた場合に限り，排他を掛けます。

なお，次の表には，SDBデータベースを操作するAPIまたはDMLがリターンした時点で確保している排他だけを記載しています。

「表2-36　排他制御のモードの組み合わせの例（4V FMBのSDBデータベースの場合）」

「表2-37　排他制御のモードの組み合わせの例（4V AFMのSDBデータベースの場合）」

「表2-38　排他制御のモードの組み合わせの例（SD FMBのSDBデータベースの場合）」

上記の表には，処理途中で一時的に確保する排他については記載していません。処理途中で一時的に確保する排他※には次のものがあります。

1つまたは複数のレコードの中から条件に合致するレコードを検索する場合，条件に合致しなかったレコードの格納ページ（排他制御モード：SR，PU，またはEX（条件に合致するレコードの格納ページと同じになります））

1つまたは複数のレコードの中からレコードの挿入位置を検索する場合，挿入位置とならなかったページ（排他制御モード：PU）

4V FMBまたは4V AFMのSDBデータベースで，終端検知（レコードの検索時に最終のレコードかどうかを判定する）のために検索する，LASTポインタが指すレコードの格納ページ，または終端検知のために検索するルートレコード，仮想ルートレコードの格納ページ（排他制御モード：SR）

4V AFMのSDBデータベースで，構成情報取得のために検索する仮想ルートレコードの格納ページ（排他制御モード：SR）

注※

ただし，次の場合には一時的な排他も確保しません。

4V FMBまたは4V AFMのSDBデータベースで，SDBデータベースを操作するAPIの排他モード1に'N'（無排他モード）を指定した場合

TAMのデータベースの無排他検索機能で動作する場合

(3)　同一レコード格納用RDエリアに対する，SDBデータベースへのアクセスの同時実行可否

■4V FMBまたは4V AFMのSDBデータベースの場合

「表2-36　排他制御のモードの組み合わせの例（4V FMBのSDBデータベースの場合）」と「表2-37　排他制御のモードの組み合わせの例（4V AFMのSDBデータベースの場合）」に示すように，4V FMBまたは4V AFMのSDBデータベースを操作するAPIの実行時，レコード格納用RDエリアには，SRモードまたはSU モードでしか排他が掛かりません。そのため，そのレコード格納用RDエリアに対して排他を掛けるほかのトランザクションからのSDBデータベースを操作するAPIの実行は，レコード格納用RDエリアの排他によって，待ち状態になることはありません（ただし，そのほかのページなどの排他によっては待ち状態になることはあります）。

■SD FMBのSDBデータベースの場合

「表2-38　排他制御のモードの組み合わせの例（SD FMBのSDBデータベースの場合）」に示すように，SD FMBのSDBデータベースに対するDMLの実行時，SD排他モードとアクセス目的の指定の組み合わせによっては，レコード格納用RDエリアにPRモード，PUモード，またはEXモードで排他が掛かります。そのため，そのレコード格納用RDエリアに対して排他を掛けるほかのトランザクションからのDMLの実行は，レコード格納用RDエリアに掛かっている排他によっては，トランザクション（レコード格納用RDエリアにPRモード，PUモード，またはEXモードで排他を掛けているトランザクション）が終了するまで待ち状態になることがあります。

同一レコード格納用RDエリアに対する，SDBデータベースへのアクセスの同時実行可否を次の表に示します。

表2‒39　同一レコード格納用RDエリアに対する，SDBデータベースへのアクセスの同時実行可否（SD FMBのSDBデータベースの場合）

SD排他モードとアクセス目的の指定の組み合わせ

SD排他モードとアクセス目的の指定の組み合わせ

sharedとretrieve

sharedとupdate

protectedとretrieve

protectedとupdate

exclusiveとretrieve

exclusiveとupdate

sharedとretrieve

○

○

○

○

×

×

sharedとupdate

○

○

×

×

×

×

protectedとretrieve

○

×

○

×

×

×

protectedとupdate

○

×

×

×

×

×

exclusiveとretrieve

×

×

×

×

×

×

exclusiveとupdate

×

×

×

×

×

×

（凡例）

○：同時実行できます。

×：同時実行できません。

(4)　同一ルートレコード下のレコード群に対する，SDBデータベースを操作するAPIまたはDMLの同時実行可否

同一ルートレコード下のレコード群に対する，SDBデータベースの操作の同時実行可否を，SDBデータベース種別ごとに説明します。

(a)　4V FMBのSDBデータベースの場合

「表2-36　排他制御のモードの組み合わせの例（4V FMBのSDBデータベースの場合）」に示すように，4V FMBのSDBデータベースに対する次の操作では，ルートレコードの格納ページにPUモードまたはEXモードで排他が掛かります。

4V FMBのSDBデータベースの更新系の操作（レコードの更新（MODIFY），レコードの格納（STORE），レコードの削除（ERASE））

SDBデータベースを操作するAPIの排他モード1に，'E'（排他モード）または'O'（占有モード）を指定したレコードの検索（レコードの検索（FETCH），複数レコードの検索（FETCHDB ALL））

そのため，ルートレコードに排他が掛かっている間は，そのルートレコードおよびそのルートレコード下のレコード群に対して，排他を掛けるほかのトランザクションからのアクセスは待ち状態になることがあります。

同一ルートレコード下のレコード群に対する，SDBデータベースを操作するAPIの同時実行可否を次の表に示します。なお，ルートレコードが異なるレコードについては，同時実行できます。

表2‒40　同一ルートレコード下のレコード群に対する，SDBデータベースを操作するAPIの同時実行可否（4V FMBのSDBデータベースの場合）

SDBデータベースを操作するAPIの種類

レコードの検索（FETCH）または複数レコードの検索（FETCHDB ALL）

レコードの更新（MODIFY）

レコードの格納（STORE）

レコードの削除（ERASE）

APIの排他モード1の指定

'S'

'E'

'O'

'N'※

レコードの検索（FETCH）

または複数レコードの検索（FETCHDB ALL）

APIの排他モード1の指定

'S'

○

○

×

○

×

×

×

'E'

○

×

×

○

×

×

×

'O'

×

×

×

○

×

×

×

'N'※

○

○

○

○

○

○

○

レコードの更新（MODIFY）

×

×

×

○

×

×

×

レコードの格納（STORE）

×

×

×

○

×

×

×

レコードの削除（ERASE）

×

×

×

○

×

×

×

（凡例）

○：同時実行できます。

×：同時実行できません。

注※

レコードの検索（FETCH）の場合に限り，SDBデータベースを操作するAPIの排他モード1に'N'（無排他モード）を指定できます。

(b)　4V AFMのSDBデータベースの場合

「表2-37　排他制御のモードの組み合わせの例（4V AFMのSDBデータベースの場合）」に示すように，4V AFMのSDBデータベースでは同一仮想ルートレコード下のレコードの同時アクセスを可能とするため，レコードの検索（FETCH）およびレコードの更新（MODIFY）では仮想ルートレコードの格納ページにSRモードで排他を掛けます。※

注※

SDBデータベースを操作するAPIの排他制御モード1の指定によって，SRモード以外の排他となることがあります。詳細については，「表2-37　排他制御のモードの組み合わせの例（4V AFMのSDBデータベースの場合）」を参照してください。

同一仮想ルートレコード下のレコード群に対する，SDBデータベースを操作するAPIの同時実行可否を次の表に示します。なお，仮想ルートレコードが異なるレコードについては，同時実行できます。

表2‒41　同一仮想ルートレコード下のレコード群に対する，SDBデータベースを操作するAPIの同時実行可否（4V AFMのSDBデータベースの場合）

SDBデータベースを操作するAPIの種類

レコードの検索（FETCH）

レコードの更新（MODIFY）

レコードの格納（STORE）

レコードの削除（ERASE）

レコードの一括削除※4

構成情報取得※4，※7

APIの排他モード1の指定

APIの排他モード1の指定

'S'

'E'

'O'

'N'

'S'/'E'/'O'

'N'

レコードの検索（FETCH）

APIの排他モード1の指定

'S'

○

○

○※6

○

○※6

○※1

×

×

○

○

'E'

○

○※1

○※1

○

○※1

○※1，※2

×

×

○

○

'O'

○※6

○※1

○※1

○

○※1

○※1，※2

×

×

○※5

○

'N'

○

○

○

○

○

○

○

○

○

○

レコードの更新（MODIFY）

○※6

○※1

○※1

○

○※1

○※1，※2

×

×

○※5

○

レコードの格納（STORE）

○※1

○※1，※2

○※1，※2

○

○※1，※2

×

×

×

○※3，※5

○

レコードの削除（ERASE）

×

×

×

○

×

×

×

−

×

○

レコードの一括削除※4

×

×

×

○

×

×

−

×

×

○

構成情報取得※4，※7

APIの排他モード1の指定

'S'/'E'/'O'

○

○

○※5

○

○※5

○※5

×

×

○

○

'N'

○

○

○

○

○

○

○

○

○

○

（凡例）

○：同時実行できます。

×：同時実行できません。

−：該当しません。

注※1

同一レコード（ページ）に対するアクセスは同時に実行できません。

注※2

レコードの格納時（STORE）には，対象となるレコードのNEXTレコードおよびPRIORレコードの格納ページにPUモードで排他を掛けます。そのため，レコードの格納と次の操作との間で排他待ちが発生します。

SDBデータベースを操作するAPIの排他モード1に'E'（排他モード）または'O'（占有モード）が指定されたレコードの検索（FETCH）

レコードの更新（MODIFY）

なお，レコードの一括削除後にレコードの格納をする場合，削除前の一連番号の最大値に達するまで，レコードの格納処理は，内部的にレコードの更新と同等の変更処理に置き換わります。この場合のレコードの格納は，上記に該当しません。

注※3

仮想ルートレコードの追加を伴う1件目のレコードの格納（STORE）とは同時に実行できません。

注※4

内部的に仮想ルートレコードにアクセスします。

注※5

次に示す条件をすべて満たす場合は，同時に実行できません。

SDBデータベース定義のOCCURRENCE NUMBER句の指定値が0である。

次の操作のうちのどれかを，構成情報取得よりも先行して実行する。

・SDBデータベースを操作するAPIの排他モード1に'O'（占有モード）が指定されたレコードの検索（FETCH）

・レコードの更新（MODIFY）

・レコードの格納（STORE）

注※6

同一レコード（ページ）に対するアクセスは同時に実行できません。ただし，TAMのデータベースの無排他検索機能が動作する場合は，同一レコード（ページ）に対するアクセスが同時に実行できます。TAMのデータベースの無排他検索機能については，「2.9.6　TAMのデータベースの無排他検索機能【4V TAM】」を参照してください。

注※7

TAMのデータベースの無排他検索機能を適用する場合，SDBデータベースを操作するAPIの排他モード1に’N’（無排他モード）を指定したときと同様の同時実行性となります。

(c)　SD FMBのSDBデータベースの場合

「表2-38　排他制御のモードの組み合わせの例（SD FMBのSDBデータベースの場合）」に示すように，SD FMBのSDBデータベースに対して次の操作を実行した場合，ルートレコードの格納ページにPUモードまたはEXモードで排他が掛かります。

SD FMBのSDBデータベースの更新系の操作（レコードの更新（MODIFY），レコードの格納（STORE），レコードの削除（ERASE））

FOR UPDATEオペランドを指定するか，または2階層以上のSD FMBのSDBデータベースに対する，レコードの参照系の操作（レコードの検索（FETCH），位置指示子の位置づけ（FIND））

そのため，ルートレコードに排他が掛かっている間は，そのルートレコードおよびそのルートレコード下のレコード群に対して，排他を掛けるほかのトランザクションからのアクセスは，待ち状態になることがあります。

同一ルートレコード下のレコード群に対する，DMLの同時実行可否を次の表に示します。

なお，ルートレコードが異なるレコードについては，同時実行できます。

表2‒42　同一ルートレコード下のレコード群に対する，DMLの同時実行可否（SD FMBのSDBデータベースの場合）

DMLの種類

レコードの検索（FETCH）または位置指示子の位置づけ（FIND）

レコードの更新（MODIFY）

レコードの格納（STORE）

レコードの削除（ERASE）

アクセス目的

retrieve

update

レコードの検索（FETCH）または位置指示子の位置づけ（FIND）

アクセス目的

retrieve

○

×

×

×

×

update

×

×

×

×

×

レコードの更新（MODIFY）

×

×

×

×

×

レコードの格納（STORE）

×

×

×

×

×

レコードの削除（ERASE）

×

×

×

×

×

（凡例）

○：同時実行できます。

×：同時実行できません。

2.9.3　排他の期間

トランザクションがある資源に対して掛けた排他は，一般にコミット，またはロールバックされるまで解除されません。例えば，あるページに対して排他が競合した場合，トランザクションがコミット，またはロールバックされるまで，ほかのトランザクション処理が待ち状態になることがあります。

ただし，排他自動解除機能を使用している場合は，トランザクションの終了を待たないで，ページの排他を解除できます。排他自動解除機能の対象となるデータページ（ページまたはサブページ）については，「付録L　SDBデータベースを操作するAPIまたはDMLと，データページの排他解除の有無の関係」を参照してください。

2.9.4　排他自動解除機能

排他自動解除機能とは，SDBデータベースを操作するAPIまたはDMLで，SDBデータベースを操作した結果，レコード位置指示子が指さなくなったレコード実現値を格納するページに対する排他を，APIまたはDMLの操作完了時に解除する機能です。

なお，複数レコードの検索時に排他自動解除機能を適用すると，複数レコードの検索の結果，検索対象のファミリが移動した場合に，移動元のファミリのルートレコード実現値を格納するページに対する排他を解除する機能となります。

排他自動解除機能を使用しない場合は，トランザクション内で一度確保された排他は，トランザクションが終了するまで保持されます。

排他自動解除機能の選択基準を次の表に示します。

表2‒43　排他自動解除機能の選択基準

排他自動解除機能

選択基準

使用する

トランザクション内でデータの一貫性を保証する必要はなく，検索したレコード実現値を更新するほかのトランザクションとの同時実行性能を重視する場合

更新を前提とする検索の結果，検索したレコード実現値に対する更新が不要となることがあり，そのレコード実現値を操作するほかのトランザクションとの同時実行性能を重視する場合

使用しない

■4V FMBまたは4V AFMのSDBデータベースの場合

トランザクション内でデータの一貫性を保証する必要があり，一度検索したレコード実現値がほかのトランザクションによって更新されるのをトランザクション終了まで抑止したい場合

SDBデータベースを操作するAPIの排他モード1に排他モードを指定した2つの検索で，一方のトランザクションが検索したレコード実現値を，もう一方のトランザクションが参照するのを，トランザクション終了まで抑止したい場合

SDBデータベースを操作するAPIの排他モード1に'O'（占有モード）を指定した検索で，自トランザクションが検索したレコード実現値をほかのトランザクションが参照するのを，トランザクション終了まで抑止したい場合

■SD FMBのSDBデータベースの場合

トランザクション内でデータの一貫性を保証する必要があり，一度検索したレコード実現値がほかのトランザクションによって更新されるのをトランザクション終了まで抑止したい場合

FOR UPDATEオペランドを指定した2つの検索で，一方のトランザクションが検索したレコード実現値を，もう一方のトランザクションが参照するのを，トランザクション終了まで抑止したい場合

(1)　適用方法

4V FMBまたは4V AFMのSDBデータベースに対して排他自動解除機能を適用する場合は，マニュアル「TP1/Financial Service Platform 使用の手引」の「SDBハンドラ機能」の「排他制御」を参照してください。排他自動解除機能は，TP1/FSPの個別開始時に指定する排他パラメタの排他モード2で指定します。

SD FMBのSDBデータベースに対して排他自動解除機能を適用する場合は，SDB用UAP環境定義にlockrangeオペランドを指定します。SDB用UAP環境定義については，「9.3　SDB用UAP環境定義【SD FMB】」を参照してください。

(2)　SDBデータベースを操作するAPIまたはDMLと，データページの排他解除の有無の関係

SDBデータベースを操作するAPIまたはDMLと，データページ（ページまたはサブページ）の排他解除の有無（排他自動解除機能の対象となるデータページ）の関係については，「付録L　SDBデータベースを操作するAPIまたはDMLと，データページの排他解除の有無の関係」を参照してください。

(3)　注意事項

■4V FMBまたは4V AFMのSDBデータベースの場合

個別開始から個別終了までの間に，SDBデータベースを操作するAPIで，排他自動解除機能の適用の有無を一致させる必要があります。

排他自動解除機能の対象となるかどうかは，SDBデータベースを操作するAPIの排他モード1の指定（'S'（共用モード），'E'（排他モード），および'O'（占有モード））に依存しません。

次の場合，排他自動解除機能は適用されません。

TAMのデータベースの無排他検索機能が適用される検索（FETCH），および構成情報取得

SDBデータベースを操作するAPIの排他モード1に'N'（無排他モード）を指定している検索（FETCH），および構成情報取得

■SD FMBのSDBデータベースの場合

排他自動解除機能の対象となるかどうかは，レコードの検索（FETCH）または位置指示子の位置づけ（FIND）のFOR UPDATEオペランドの指定に依存しません。

2.9.5　排他自動解除機能を使用したレコードの検索例

排他自動解除機能を使用したレコードの検索例を次に示します。

排他自動解除機能を使用して，4V FMBまたはSD FMBのSDBデータベースを階層順に検索する場合の例は，「2.9.5(1)例1　排他自動解除機能を使用する場合のSDBデータベースの階層順検索【4V FMB，SD FMB】」を参照してください。

また，排他自動解除機能を使用しない場合の例については，「2.9.5(2)例2　排他自動解除機能を使用しない場合のSDBデータベースの階層順検索【4V FMB，SD FMB】」を参照してください。

参考

例1は，4V FMBのSDBデータベースの場合は，SDBデータベースを操作するAPIの排他モード1に'S'（共用モード）を指定したときの検索例です。SD FMBのSDBデータベースの場合は，FOR UPDATEオペランドの指定を省略したときの検索例です。

排他自動解除機能を使用して各APIまたはDMLを実行したあと，別のルートレコードのレコード実現値を検索してレコード位置指示子が移動する場合の例については，次の項目を参照してください。

「2.9.5(3)例3　排他自動解除機能を使用してレコードの格納（STORE）を実行する場合の動作【4V FMB，SD FMB】」

「2.9.5(4)例4　排他自動解除機能を使用してレコードの更新（MODIFY）を実行する場合の動作【4V FMB，SD FMB】」

「2.9.5(5)例5　排他自動解除機能を使用してレコードの削除（ERASE）を実行する場合の動作【4V FMB，SD FMB】」

「2.9.5(6)例6　排他自動解除機能を使用して一括削除を実行する場合の動作【4V DAM，4V SAM】」

「2.9.5(7)例7　構成情報取得を実行する場合の動作【4V AFM】」

排他自動解除機能を使用して複数レコードの検索（FETCHDB ALL）を実行した場合の例については，「2.9.5(8)例8　排他自動解除機能を使用して複数レコードの検索（FETCHDB ALL）を実行する場合の動作【4V FMB】」を参照してください。

4V AFMのSDBデータベースでも仮想ルートレコードのレコード実現値を操作して検索するため，基本的には4V FMBのSDBデータベースの例と同様の動作となります。

なお，上記の例の中で使用している記号の凡例については，「2.9.5(1)例1　排他自動解除機能を使用する場合のSDBデータベースの階層順検索【4V FMB，SD FMB】」の1.にある図の凡例を参照してください。

(1)　例1　排他自動解除機能を使用する場合のSDBデータベースの階層順検索【4V FMB，SD FMB】

ルートレコードのレコード実現値A，2階層目のレコード実現値A1，および3階層目のレコード実現値A1-1の順にレコードを検索（FETCH）します。

これによって，検索したレコード実現値が格納されているデータページP1，P2，およびP3に排他（SRモード）が掛かります。

3階層目のレコード実現値A1-2を検索（FETCH）します。

この場合，レコード位置指示子R3が指すレコード実現値は，A1-1からA1-2となりますが，これらのレコード実現値は同一データページに格納されているため，データページP3は排他（SRモード）が掛かった状態のままです。

3階層目のレコード実現値A1-3を検索（FETCH）します。

この場合，レコード位置指示子R3が指すレコード実現値は，A1-2からA1-3となります。これらのレコード実現値は異なるデータページに格納されているため，データページP6に排他（SRモード）が掛かり，データページP3の排他（SRモード）は解除されます。

2階層目のレコードA2を検索（FETCH）します。

この場合，レコード位置指示子R2が指すレコード実現値はA1からA2となります。これらのレコード実現値は異なるデータページに格納されているため，データページP8に排他（SRモード）が掛かり，データページP2の排他（SRモード）は解除されます。同時に，レコード位置指示子R3が空値となるため，3階層目のレコード実現値A1-3が格納されているデータページP6の排他（SRモード）も解除されます。

3階層目のレコード実現値A2-1を検索（FETCH）します。

この場合，レコード位置指示子R3がレコード実現値A2-1を指すので，レコード実現値A2-1が格納されているデータページP9に排他（SRモード）が掛かります。

ルートレコードのレコード実現値Bを検索（FETCH）します。

この場合，レコード位置指示子R1が指すレコード実現値はAからBとなるので，データページP10に排他（SRモード）が掛かり，データページP1の排他（SRモード）は解除されます。同時に，レコード位置指示子R2およびR3が空値となるので，それまでレコード位置指示子が指していたレコード実現値を格納しているデータページP8およびP9の排他（SRモード）も解除されます。

(2)　例2　排他自動解除機能を使用しない場合のSDBデータベースの階層順検索【4V FMB，SD FMB】

排他自動解除機能を使用しないで「2.9.5(1)例1　排他自動解除機能を使用する場合のSDBデータベースの階層順検索【4V FMB，SD FMB】」の1.〜6.で示した検索（FETCH）を実行すると，一度検索したレコード実現値を格納しているデータページP1，P2，P3，P6，P8，およびP9の排他（SRモード）は解除されないで，トランザクションが終了するまで保持されます。

(3)　例3　排他自動解除機能を使用してレコードの格納（STORE）を実行する場合の動作【4V FMB，SD FMB】

次の順序でSDBデータベースを操作するAPIまたはDMLを実行します。

a.　ルートレコードのレコード実現値Aを検索（FETCH）します。

b.　2階層目のレコード実現値A1を検索（FETCH）します。

c.　3階層目のレコード実現値A1-1を検索（FETCH）します。

d.　4階層目のレコード実現値A1-1-3を格納（STORE）します。

APIまたはDMLを実行すると，次の図のように排他が掛かります。

ルートレコードのレコード実現値Bを検索（FETCH）します。

この場合，ルートレコードのレコード実現値Bが格納されているデータページP5に排他（PUモード）が掛かり，ルートレコードのレコード実現値Aが格納されているデータページP1を除き，更新されていないデータページP2の排他（PUモード）だけが解除されます。なお，データページP3，P4，P12については，レコード間ポインタなどの制御情報が更新されるため，排他が掛かった状態のままとなります。

(4)　例4　排他自動解除機能を使用してレコードの更新（MODIFY）を実行する場合の動作【4V FMB，SD FMB】

次の順序でSDBデータベースを操作するAPIまたはDMLを実行します。

a.　ルートレコードのレコード実現値Aを検索（FETCH）します。

b.　2階層目のレコード実現値A1を検索（FETCH）します。

c.　3階層目のレコード実現値A1-1を検索（FETCH）します。

d.　3階層目のレコード実現値A1-1を更新（MODIFY）します。

APIまたはDMLを実行すると，次の図のように排他が掛かります。

ルートレコードのレコード実現値Bを検索（FETCH）します。

この場合，ルートレコードのレコード実現値Bが格納されているデータページP4に排他（PUモード）が掛かり，ルートレコードのレコード実現値Aが格納されているデータページP1を除き，更新されていないデータページP2の排他（PUモード）だけが解除されます。

(5)　例5　排他自動解除機能を使用してレコードの削除（ERASE）を実行する場合の動作【4V FMB，SD FMB】

次の順序でSDBデータベースを操作するAPIまたはDMLを実行します。

a.　ルートレコードのレコード実現値Aを検索（FETCH）します。

b.　2階層目のレコード実現値A1を検索（FETCH）します。

c.　3階層目のレコード実現値A1-1を検索（FETCH）します。

d.　4階層目のレコード実現値A1-1-2を検索（FETCH）します。

e.　4階層目のレコード実現値A1-1-2を削除（ERASE）します（位置づけしたレコード実現値（その配下の子レコード実現値も含む）を削除します）。

APIまたはDMLを実行すると，次の図のように排他が掛かります。

ルートレコードのレコード実現値Bを検索（FETCH）します。

この場合，ルートレコードのレコード実現値Bが格納されているデータページP6に排他（PU）が掛かり，ルートレコードのレコード実現値Aが格納されているデータページP1と削除対象のレコード実現値A1-1-2の親レコード実現値A1-1が格納されているデータページP3を除いて，更新されていないデータページP2の排他（PUモード）だけが解除されます。なお，データページP4，P14については，レコード間ポインタの制御情報が変更されるため，排他が掛かった状態のままとなります。

(6)　例6　排他自動解除機能を使用して一括削除を実行する場合の動作【4V DAM，4V SAM】

仮想ルートレコードのレコード実現値A下のすべてのレコード実現値に対して一括削除を実行します。

一括削除の結果，仮想ルートレコードのレコード実現値Aが格納されているデータページP1に排他（EXモード）が掛かります。

2階層目のレコード実現値B1-1を検索（FETCH）します。

この場合，仮想ルートレコードのレコード実現値Bが格納されているデータページP5，2階層目のレコード実現値B1-1が格納されているデータページP6にそれぞれ排他（SRモード，PUモード）が掛かりますが，排他確保済みページの中で更新されていないページは存在しないため，排他は解除されません。

(7)　例7　構成情報取得を実行する場合の動作【4V AFM】

構成情報取得については，排他自動解除機能を適用しない場合の動作がこれまでのAPIと異なります。

仮想ルートレコードのレコード実現値AおよびB下のレコード実現値の構成情報取得を実行します。

この場合，仮想ルートレコードのレコード実現値AからBの順に操作しますが，排他自動解除機能の適用有無に関係なく，排他自動解除機能が適用された場合の動作となります。

APIが終了したときには，最後に操作した仮想ルートレコードのレコード実現値Bが格納されているデータページP3の排他（SRモード）も解除されます。

(8)　例8　排他自動解除機能を使用して複数レコードの検索（FETCHDB ALL）を実行する場合の動作【4V FMB】

指示コードに'F'を指定して，複数レコードの検索（FETCHDB ALL）を実行することで，ルートレコードのレコード実現値A，2階層目のレコード実現値A1，および3階層目のレコード実現値A1-1を検索します。

複数レコードの検索では，ルートレコード実現値が格納されているデータページ以外のページに排他を掛けないため，データページP1にだけ排他（SRモード）が掛かります。

指示コードに'N'を指定して，複数レコードの検索（FETCHDB ALL）を実行することで，4階層目のレコード実現値A1-1-1，A1-1-2，A1-1-3を検索します。

この場合，ファミリの移動はないため，データページP1にだけ排他（SRモード）が掛かった状態のままとなります。

指示コードに'N'を指定して，複数レコードの検索（FETCHDB ALL）でルートレコードのレコード実現値B，2階層目のレコード実現値B1，および3階層目のレコード実現値B1-1を検索します。

この場合，ファミリが移動したため，ルートレコード実現値Bが格納されているデータページP5にだけ排他（SRモード）が掛かり，データページP1の排他は解除されます。

指示コードに'N'を指定して，複数レコードの検索（FETCHDB ALL）でルートレコードのレコード実現値C，2階層目のレコード実現値C1，および3階層目のレコード実現値C1-1を検索します。

ファミリが移動したため，ルートレコード実現値Cが格納されているデータページP9にだけ排他（SRモード）が掛かり，データページP5の排他は解除されます。

なお，排他自動解除機能を使用しないで1.から4.に示した検索を実行すると，一度検索したルートレコード実現値を格納しているデータページP1，P5およびP9の排他（SRモード）は解除されないで，トランザクション終了まで保持されます。

(9)　排他自動解除機能の使用時に排他が解除されないケース

■4V FMBまたは4V AFMのSDBデータベースの場合

次に示す場合は，排他自動解除機能を使用したときでも，データの完全性を保証するために排他解除の対象外となります。

更新したレコード実現値が格納されている場合（SDBデータベースを操作するAPIの排他モード1に'E'（排他モード）または'O'（占有モード）を指定して，検索しただけのレコード実現値が格納されているページは排他解除の対象となります）

レコード実現値が1つでも更新されているファミリのルートレコードのレコード実現値が格納されている場合

なお，4V FMBのSDBデータベースで，USERポインタが設定されていない中間レコード（FIRSTポインタ，LASTポインタのどちらからも指されていないレコード実現値）を削除する場合，削除対象となるレコード実現値の親レコード実現値は更新されませんが，例外的に排他は解除されません。

■SD FMBのSDBデータベースの場合

次に示す場合は，排他自動解除機能を使用したときでも，データの完全性を保証するために排他解除の対象外となります。

更新したレコード実現値が格納されている場合（FOR UPDATEオペランドを指定して，検索しただけのレコード実現値が格納されているページは排他解除の対象となります）

レコード実現値が1つでも更新されているファミリのルートレコードのレコード実現値が格納されている場合

なお，中間レコード（FIRSTポインタ，LASTポインタのどちらからも指されていないレコード実現値）を削除する場合，削除対象となるレコード実現値の親レコード実現値は更新されませんが，例外的に排他は解除されません。

2.9.6　TAMのデータベースの無排他検索機能【4V TAM】

SDBデータベースを操作するAPIの指定とSDBデータベース定義のTAMMODE句の指定によって，ページまたはサブページに排他を掛けないで4V TAMのSDBデータベースのレコードの検索，および構成情報取得を実行できます。この機能をTAMのデータベースの無排他検索機能といいます。

TAMのデータベースの無排他検索機能は，次の指定でレコードの検索，または構成情報取得を実行した場合に適用されます。

4V TAMのSDBデータベースで，SDBデータベース定義のTAMMODE句を省略するか，またはNONPROTECTED RETRIEVEを指定する。

個別開始時に指定するSDBデータベースを操作するAPIで，排他モード1に'S'（共用モード）を指定する。

TAMのデータベースの無排他検索機能が適用されると，データページ（ページまたはサブページ）に対して排他を掛けないでレコードの検索，または構成情報取得が実行されます。データページ（ページまたはサブページ）に対して排他を掛けないので，排他自動解除機能は適用されません。

なお，個別開始時に指定するSDBデータベースを操作するAPIで，排他モード1に'N'（無排他モード）を指定する場合は，SDBデータベース定義のTAMMODE句の指定に関係なく，排他モード指定による無排他検索機能が適用されます。

排他モード指定による無排他検索機能については，「2.9.7　排他モード指定による無排他検索機能【4V FMB，4V AFM】」を参照してください。

(1)　TAMのデータベースの無排他検索機能の適用条件

TAMのデータベースの無排他検索機能は，レコードを参照した時点での，データの整合性を重視しない検索で使用するようにしてください。

TAMのデータベースの無排他検索機能を使用すると，ほかのユーザが更新中（または排他モード1で'E'（排他モード）もしくは'O'（占有モード）を指定中）のデータでも，更新の完了またはトランザクションの終了を待たないで参照できます。一方で，同一トランザクション内で同じレコードを2度検索しても，結果が同じにならないことがあります。また，レコードを更新したユーザがそのトランザクションを取り消すと，データの整合性が取れていない状態のレコードを参照したことになります。

終端検知の結果が，ほかのトランザクションとの同時実行タイミングによっては，TAMのデータベースの無排他検索機能を適用しない場合の終端検知の結果とは異なることがあります。

(2)　TAMのデータベースの無排他検索機能で排他を掛けない資源

TAMのデータベースの無排他検索機能で排他を掛けない資源は，レコードを格納するデータページ（ページまたはサブページ）だけです。それ以外の上位の排他資源については，「表2-37　排他制御のモードの組み合わせの例（4V AFMのSDBデータベースの場合）」に従って排他が掛けられます。そのため，更新ログ取得方式がログレスモード指定で，4V TAMのSDBデータベースを更新するトランザクションが実行中の場合は，TAMのデータベースの無排他検索機能が適用される条件を満たしていても，排他待ちになります。

2.9.7　排他モード指定による無排他検索機能【4V FMB，4V AFM】

SDBデータベースを操作するAPIの排他モードの指定によって，ページまたはサブページに排他を掛けないでレコードの検索および構成情報取得を実行できます。この機能を排他モード指定による無排他検索機能といいます。

排他モード指定による無排他検索機能は，次の指定でレコードの検索，または構成情報取得を実行した場合に適用されます。

個別開始時に指定するSDBデータベースを操作するAPIで，排他モード1に'N'（無排他モード）を指定した場合

排他モード指定による無排他検索機能が適用されると，データページ（ページまたはサブページ）に対して排他を掛けないでレコードの検索，または構成情報取得が実行されます。データページ（ページまたはサブページ）に対して排他を掛けないため，排他自動解除機能は適用されません。

排他モード指定による無排他検索機能は，4V FMBまたは4V AFMのSDBデータベースの場合に適用されます。

(1)　排他モード指定による無排他検索機能の適用条件

排他モード指定による無排他検索は，レコードを参照した時点での，データの整合性を重視しない検索で使用するようにしてください。

排他モード指定による無排他検索機能を使用した場合，ほかのユーザが占有しているデータでも，排他解除を待たないで参照できます。一方で，同一トランザクション内で同じレコードを2度検索しても，結果が同じにならないことがあります。また，レコードを更新したユーザがそのトランザクションを取り消すと，データの整合性が取れていない状態のレコードを参照したことになります。

ほかのトランザクションによるデータの更新との同時実行タイミングによっては，検索の続行ができなくなり，ロールバックされることがあります。この場合，このトランザクションを再実行するか，またはこのトランザクション中の個別開始時に指定するSDBデータベースを操作するAPIで，排他モード1に'N'（無排他モード）以外を指定して，トランザクションを実行してください。

システム共通定義のpd_lock_uncommited_delete_dataオペランドにWAITを指定した場合でも，NOWAIT（省略値）を指定した場合と同様の動作となります。

子レコードを検索した際に返却されるUSERポインタの情報は，親レコード検索時点のものです。

親レコードの検索以降にほかのトランザクションがUSERポインタを更新した場合，実態とは異なるUSERポインタの情報が返却されることがあります。

この不整合は，USERポインタを使用した検索を実施した際，検知されます。その場合はロールバックされます。

終端検知の結果が，ほかのトランザクションとの同時実行タイミングによっては，SDBデータベースを操作するAPIの排他モード1に'N'（無排他モード）以外を指定した場合の終端検知の結果とは異なることがあります。

(2)　排他モード指定による無排他検索機能で排他を掛けない資源

排他モード指定による無排他検索機能で排他を掛けない資源は，レコードを格納するデータページ（ページまたはサブページ）だけです。それ以外の上位の排他資源については，「表2-36　排他制御のモードの組み合わせの例（4V FMBのSDBデータベースの場合）」，または「表2-37　排他制御のモードの組み合わせの例（4V AFMのSDBデータベースの場合）」に従って排他が掛けられます。そのため，更新ログ取得方式がログレスモードで，操作対象データベースを更新するトランザクションが実行中の場合は，排他モード指定による無排他検索機能が適用される条件を満たしていても，排他待ちになります。

2.9.8　デッドロック

2つのトランザクションが2つ以上の資源の確保をめぐって互いに相手を待つ状態となり，そこから先へ処理が進まなくなることをデッドロックといいます。

詳細については，マニュアル「HiRDB Version 9 UAP開発ガイド」の「デッドロックと回避策」を参照してください。

デッドロックの例を次に示します。

(1)　ルートレコードを格納しているページ間のデッドロックの例

4V FMBまたはSD FMBのSDBデータベースでは，2つのトランザクションが複数のルートレコードに対して同時に逆順にアクセスした場合，デッドロックが発生するおそれがあります。4V AFMのSDBデータベースでは，異なる仮想ルートレコード下の子レコードを逆順にアクセスした場合も同様にデッドロックが発生するおそれがあります。

複数のルートレコードを逆順にアクセスした場合のデッドロックの例を，次の図に示します。

図2‒86　ルートレコードを格納しているページ間のデッドロックの例

［説明］

参照トランザクションがルートレコードAの格納ページにSRモードで排他を掛けて，レコードを参照します。

更新トランザクションがルートレコードBの格納ページにEXモードで排他を掛けて，レコードを更新します。

参照トランザクションがルートレコードBの格納ページにSRモードで排他を掛けようとしますが，更新トランザクションがEXモードで排他を掛けているため，ページの排他解除待ちとなります。

更新トランザクションがルートレコードAの格納ページにEXモードで排他を掛けようとしますが，参照トランザクションがSRモードで排他を掛けているため，ページの排他解除待ちとなり，デッドロックが検知されます。

ここでは，同一のレコード型内の複数のルートレコードに対する例を挙げましたが，レコード型が異なる複数のルートレコードを逆順にアクセスした場合にもデッドロックが発生するおそれがあります。

(2)　子レコードを格納しているページ間のデッドロックの例【4V AFM】

4V AFMのSDBデータベースでは，2つのトランザクションが複数のデータベースキー値のレコードを同時に逆順にアクセスした場合，デッドロックが発生するおそれがあります。デッドロックの例を次の図に示します。

図2‒87　子レコードを格納しているページ間のデッドロックの例

［説明］

上記の図は，複数のデータベースキー値のレコードを逆順にアクセスした場合のデッドロックの例です。

参照トランザクションがデータベースキー値A(1)のレコードの格納ページにSRモードで排他を掛けて，レコードを参照します。

更新トランザクションがデータベースキー値A(2)のレコードの格納ページにEXモードで排他を掛けて，レコードを更新します。

参照トランザクションがデータベースキー値A(2)のレコードの格納ページにSRモードで排他を掛けようとしますが，更新トランザクションがEXモードで排他を掛けているため，ページの排他解除待ちとなります。

更新トランザクションがデータベースキー値A(1)のレコードの格納ページにEXモードで排他を掛けようとしますが，参照トランザクションがSRモードで排他を掛けているため，ページの排他解除待ちとなり，デッドロックが検知されます。

ここでは，同一のレコード型内の複数のデータベースキー値に対する例を挙げましたが，レコード型が異なる複数のデータベースキー値のレコードを逆順にアクセスした場合もデッドロックが発生するおそれがあります。

なお，レコードの格納時には，格納位置を決めるために発生する検索の方向を指定する検索コードに従って子レコードの挿入位置を検索します。HiRDB/SDは指定された検索コードによってレコード間をNEXT方向またはPRIOR方向に，子レコードが格納されているページに順次アクセスする場合があります。このように直接子レコードを操作しなくても，上記のデッドロックが発生するおそれがあるため，検索方向にも注意してください。

(3)　仮想ルートレコードを格納しているページと子レコードを格納しているページ間のデッドロックの例【4V AFM】

4V AFMのSDBデータベースに対するアクセスでは，HiRDB/SDが内部的に仮想ルートレコードにアクセスすることがあるため，仮想ルートレコードを格納しているページと子レコードを格納しているページとの間でデッドロックが発生するおそれがあります。デッドロックの例を次の図に示します。

図2‒88　仮想ルートレコードを格納しているページと子レコードを格納しているページ間のデッドロックの例

［説明］

上記の図は，仮想ルートレコードを格納しているページと子レコードを格納しているページ間のデッドロックの例です。

トランザクション1が，データベースキー値A(1)を参照するため，仮想ルートレコードの格納ページにSRモードで排他を掛けます。

トランザクション1が，データベースキー値A(1)を参照するため，子レコードの格納ページにPUモードで排他を掛けて，子レコードを参照します。

トランザクション2が，データベースキー値A(1)を参照するため，仮想ルートレコードの格納ページにSRモードで排他を掛けます。

トランザクション1が，データベースキー値A(1)を削除するため，仮想ルートレコードの格納ページにEXモードで排他を掛けようとしますが，トランザクション2がSRモードで排他を掛けているため，ページの排他解除待ちとなります。

トランザクション2が，データベースキー値A(1)を参照するため，子レコードの格納ページにPUモードで排他を掛けようとしますが，トランザクション1がPUモードで排他を掛けているため，ページの排他解除待ちとなり，デッドロックが検知されます。

ここでは，レコードの削除とレコードの検索が競合した場合の例を挙げましたが，このほかにも次のSDBデータベースを操作するAPIの競合時にも同じようにデッドロックが発生するおそれがあります。

レコードの削除とレコードの格納

レコードの削除とレコードの削除

また，異なるレコード型の間（例えば，4V FMBのSDBデータベースのルートレコードを格納しているページと，4V AFMのSDBデータベースの子レコードを格納しているページの間）でも，同じようにデッドロックが発生するおそれがあります。

(4)　排他モード1の指定が異なる検索が混在するトランザクションと，ほかのトランザクションが同じレコードに対してアクセスした場合のデッドロックの例【4V FMB，4V AFM】

4V FMBまたは4V AFMのSDBデータベースでは，SDBデータベースを操作するAPIの，排他モード1の指定が異なる検索が混在するトランザクションと，ほかのトランザクションが同じレコードに対してアクセスした場合，デッドロックが発生するおそれがあります。デッドロックの例を次の図に示します。

図2‒89　排他モード1の指定が異なる検索が混在するトランザクションと，ほかのトランザクションが同じレコード（同じページ）に対してアクセスした場合の，デッドロックの例

［説明］

上記の図は，排他モード1の指定が異なる検索が混在するトランザクションと，ほかのトランザクションが同じレコード（同じページ）に対してアクセスした場合の，デッドロックの例です。

トランザクション1（個別開始X）が，データベースキー値Aを参照するため，レコードの格納ページにSRモードで排他を掛けます。

トランザクション1（個別開始X）が，個別終了を行います（個別終了処理では排他制御は行いません）。

トランザクション2が，データベースキー値Aを参照するため，レコードの格納ページにPUモードで排他を掛けます。

トランザクション2が，データベースキー値Aを更新するため，レコードの格納ページにEXモードで排他を掛けようとしますが，トランザクション1（個別開始X）がSRモードで排他を掛けているため，ページの排他解除待ちとなります。

トランザクション1（個別開始Y）が，データベースキー値Aを参照するため，レコードの格納ページにPUモードで排他を掛けようとしますが，トランザクション2がPUモードで排他を掛けているため，ページの排他解除待ちとなり，デッドロックが検知されます。

ここでは，同じページに格納された同じレコードに対するアクセスが競合した場合の例を挙げましたが，このほかに次の場合にも，同じようにデッドロックが発生するおそれがあります。

同じページに格納された異なるレコードに対するアクセス

異なるページ間でのアクセス

(5)　FOR UPDATEオペランドの指定の有無が異なる検索が混在するトランザクションと，ほかのトランザクションが同じレコードに対してアクセスした場合のデッドロックの例【SD FMB】

SD FMBのSDBデータベースでは，FOR UPDATEオペランドの指定の有無が異なる検索が混在するトランザクションと，ほかのトランザクションが，同じレコードに対してアクセスをすると，デッドロックが発生するおそれがあります。デッドロックの例を次の図に示します。

図2‒90　FOR UPDATEオペランドの指定の有無が異なる検索が混在するトランザクションと，ほかのトランザクションが同じレコード（同じページ）に対してアクセスした場合の，デッドロックの例

［説明］

上記の図は，FOR UPDATEオペランドの指定の有無が異なる検索が混在するトランザクションと，ほかのトランザクションが，同じレコード（同じページ）に対してアクセスした場合の，デッドロックの例です。

トランザクション1が，参照目的（FOR UPDATEオペランドの指定なし）でルートレコードAを参照するため，レコードの格納ページにSRモードで排他を掛けます。

トランザクション2が，更新目的（FOR UPDATEオペランドの指定あり）でルートレコードAを参照するため，レコードの格納ページにPUモードで排他を掛けます。

トランザクション1が，更新目的（FOR UPDATEオペランドの指定あり）でルートレコードAを参照するため，レコードの格納ページにPUモードで排他を掛けようとしますが，トランザクション2がPUモードで排他を掛けているため，ページの排他解除待ちとなります。

トランザクション2が，ルートレコードAを更新するため，レコードの格納ページにEXモードで排他を掛けようとしますが，トランザクション1がSRモードで排他を掛けているため，ページの排他解除待ちとなり，デッドロックが検知されます。

ここでは，同じページに格納された同じレコードに対するアクセスが競合した場合の例を挙げましたが，このほかに次の場合にも，同じようにデッドロックが発生するおそれがあります。

同じページに格納された異なるレコードに対するアクセス

異なるページ間でのアクセス

(6)　レコード格納用RDエリア間のデッドロックの例【SD FMB】

SD FMBのSDBデータベースでは，「表2-39　同一レコード格納用RDエリアに対する，SDBデータベースへのアクセスの同時実行可否（SD FMBのSDBデータベースの場合）」で説明しているように，レコード格納用RDエリアの排他によって待ち状態になることがあります。そのため，レコード格納用RDエリアにPRモード，PUモード，またはEXモードで排他を掛けるトランザクションと，ほかのトランザクションが，複数のレコード格納用RDエリアに対して同時に逆順にアクセスした場合，デッドロックが発生するおそれがあります。デッドロックの例を次の図に示します。

図2‒91　レコード格納用RDエリア間のデッドロックの例

［説明］

上記の図は，複数のレコード格納用RDエリアに逆順にアクセスした場合の，レコード格納用RDエリア間のデッドロックの例です。

トランザクション1（SD排他モード：exclusive，アクセス目的：retrieve）が，ルートレコードAを参照するため，レコード格納用RDエリア1にEXモードで排他を掛けます。

トランザクション2（SD排他モード：shared，アクセス目的：retrieve）が，ルートレコードBを参照するため，レコード格納用RDエリア2にSRモードで排他を掛けます。

トランザクション1（SD排他モード：exclusive，アクセス目的：retrieve）が，ルートレコードBを参照するため，レコード格納用RDエリア2にEXモードで排他を掛けようとしますが，トランザクション2がSRモードで排他を掛けているため，レコード格納用RDエリアの排他解除待ちとなります。

トランザクション2（SD排他モード：shared，アクセス目的：retrieve）が，ルートレコードAを参照するため，レコード格納用RDエリア1にSRモードで排他を掛けようとしますが，トランザクション1がEXモードで排他を掛けているため，レコード格納用RD エリアの排他解除待ちとなり，デッドロックが検知されます。

(7)　デッドロックプライオリティ値による排他制御

デッドロックが発生した場合，どのトランザクションをエラーとするかをデッドロックプライオリティ値で制御できます。

この機能を使用する場合，システム共通定義のpd_deadlock_priority_useオペランドにYを指定してください。クライアント環境定義などからプログラム単位にHiRDB/SDがデッドロック優先順位を決定します。

デッドロックプライオリティ値が小さい方が処理の優先度が高く，値が大きくなるほどエラーになってロールバックされる可能性が高くなります。値が同じときは，後発のトランザクションの方がエラーとなって暗黙的にロールバックされます。

なお，この機能を使用しない場合は，後発のトランザクションがエラーとなり，暗黙的にロールバックされます。

(8)　デッドロックの回避策

デッドロックは排他の範囲を広くすることで発生頻度を低減できますが，同時実行性は低下します。排他の範囲を狭くすると同時実行性は向上しますが，デッドロックの発生率が増加します。

デッドロックを回避するために，例えば次のような対策があります。

2つ以上のレコード型のレコードにアクセスする場合，またはSD FMBのSDBデータベースで2つ以上のレコード格納用RDエリアにアクセスする場合，アクセス順序を統一します。また，A，Bの順でアクセスした場合，再度Aをアクセスしないようにします（Aの値は保存しておきます）。

SD FMBのSDBデータベースの場合で，2つ以上のレコード格納用RDエリアにアクセスするときは，SDB用UAP環境定義のsubschemaオペランドの-eオプション（SD排他モード）にsharedを指定します。

2つ以上のルートレコード（4V AFMのSDBデータベースの場合，データベースキー値のレコード）にアクセスする場合，アクセス順序を統一します。また，A→Bの順でアクセスしたら，再度Aはアクセスしないようにします（Aの値は保存しておきます）。

検索の方向※を指定する検索コードに，NEXT方向の検索とPRIOR方向の検索が混在している場合，アクセス順序が統一されていないため，混在しないように指定します。

注※

レコードの検索（FETCH）では，検索する方向のことです。レコードの格納（STORE）では，格納位置を決定するための検索の方向のことです。

検索トランザクションの場合，排他自動解除機能を使用すると，排他保持期間を短くできるため，排他待ちの発生を低減できます。

排他自動解除機能については，「2.9.4　排他自動解除機能」を参照してください。

SDBデータベース格納定義でSUBPAGE NUMBER句を指定し，サブページ分割機能を適用します。サブページ分割をすると，複数レコードを異なる排他資源（サブページ）に格納できるため，排他待ちの発生を低減できます。

検索時のSDBデータベースを操作するAPIの，排他モード1の指定を'O'（占有モード）に変更します。同時実行性は低下しますが，SDBデータベース定義でのSUBPAGE NUMBER句の指定の変更やSDBデータベースを操作するAPIの実行順序の変更をすることなく，デッドロックの発生率を低下させることができます。

SD FMBのSDBデータベースの場合，検索時にFOR UPDATEオペランドを指定します。同時実行性は低下しますが，SDBデータベース定義でのSUBPAGE NUMBER句の指定の変更や，DMLの実行順序の変更をしなくても，デッドロックの発生率を低下させることができます。

業務要件に適合する場合，次のように無排他検索を適用してください。これによって，SDBデータベースを操作するAPIの実行順序を変更することなく，デッドロックの発生率を低下させることができます。

SDBデータベースを操作するAPIの排他モード1の指定値を'N'（無排他モード）に変更する。

操作対象が4V TAMのSDBデータベースの場合，TAMのデータベースの無排他検索機能を適用する。

デッドロックが発生する原因と対策を次の表に示します。

表2‒44　デッドロックが発生する原因と対策

排他資源

発生原因

対策

レコード型とレコード型

レコード型のアクセス順序の不定

回避方法

UAPのアクセス順序を統一する。

対処

デッドロック発生後にUAPを再実行する。

レコード格納用RDエリア（SD FMBのSDBデータベースの場合）

レコード格納用RDエリアのアクセス順序の不定

回避方法

UAPのアクセス順序を統一する。

SD排他モードの指定をsharedに変更する。

対処

デッドロック発生後にUAPを再実行する。

ページ

複数ページ

4V FMBまたはSD FMBのSDBデータベースのルートレコードアクセス順序の不定

4V AFMのSDBデータベースの同一データベースキー値へのアクセス順序の不定

回避方法（4V FMBまたは4V AFMのSDBデータベースの場合）

UAPのアクセス順序を統一する。

排他自動解除機能を適用する。

SDBデータベースを操作するAPIの排他モード1の指定を'N'（無排他モード）に変更する。

TAMのデータベースの無排他検索機能を適用する。

回避方法（SD FMBのSDBデータベースの場合）

UAPのアクセス順序を統一する。

排他自動解除機能を適用する。

対処

デッドロック発生後にUAPを再実行する。

単一ページ※1

■4V FMBまたは4V AFMのSDBデータベースの場合

同一トランザクション内で，同一ページに対する検索を，次の順序で実行※2する。

SDBデータベースを操作するAPIの排他モード1に'S'（共用モード）を指定する。

SDBデータベースを操作するAPIの排他モード1に'E'（排他モード）を指定する。

回避方法

排他自動解除機能を適用する。

SDBデータベースを操作するAPIの排他モード1の指定を'O'（占有モード），または'N'（無排他モード）に変更する。

TAMのデータベースの無排他検索機能を適用する。

対処

デッドロック発生後にUAPを再実行する。

■SD FMBのSDBデータベースの場合

同一トランザクション内で，同一ページに対する検索を，次の順序で実行する。

FOR UPDATEオペランドを指定しないで検索する。

FOR UPDATEオペランドを指定して検索する。

回避方法

排他自動解除機能を適用する。

FOR UPDATEオペランドを指定する。

対処

デッドロック発生後にUAPを再実行する。

注※1

複数ページでも，同様のデッドロックが発生することがあります。

注※2

1トランザクション中で複数の個別開始をすることで，実行できます。

デッドロックが発生すると，自動的にHiRDB/SDがデッドロックとなったトランザクションのどれかをエラーにしてロールバックさせます。デッドロックによって暗黙的にロールバックされたUAPは，ROLLBACK文，またはDISCONNECT文でトランザクションを終了させないと，SDBデータベースを操作するAPIを実行してもエラーとなります。また，OLTP環境でX/Openに従ったアプリケーションプログラムをクライアントとした場合に，実行したアプリケーションプログラムがデッドロックとなったときもトランザクションの終了が必要です。

なお，デッドロック発生時にデッドロック情報を出力したい場合，システム共通定義またはユニット制御情報定義のpd_lck_deadlock_infoオペランドにYを指定する必要があります。pd_lck_deadlock_infoオペランドについては，マニュアル「HiRDB Version 9 システム定義」を参照してください。

2.9.9　コミットしていない削除データの排他制御

SDBデータベースを操作するAPIまたはDML（FETCH，FIND，またはFETCHDB ALL）で，4V FMBまたはSD FMBのSDBデータベースのルートレコードを検索する際に，SDBデータベースを操作するAPIまたはDML（ERASE）でルートレコードを削除するほかのトランザクションと競合する場合，シーケンシャルインデクス上で削除ルートレコードのインデクスキーを読み飛ばします。そのため，通常は削除中のルートレコードを検索することはできません。

しかし，ルートレコードを削除したトランザクションがロールバックした場合，そのルートレコードの内容が回復されるため，検索トランザクションでは，結果的にそのルートレコードを読み飛ばしたことになります。

この問題は，検索トランザクションで削除中のルートレコードのインデクスキーを参照したときに，ルートレコード格納ページ（コミットしていない削除データ）に排他を掛けることで回避できます。

(1)　適用基準

次の場合に，コミットしていない削除データに排他を掛けることを推奨します。それ以外の場合は，コミットしていない削除データに排他を掛けない運用を推奨します。

4V FMBまたはSD FMBのSDBデータベースに対して，次のSDBデータベースを操作するAPIまたはDMLを同時実行する可能性があり，検索トランザクションで削除中のルートレコードを読み飛ばすことができない業務がある場合

ルートレコードを削除対象とするレコードの削除（ERASE）

レコードの検索（FETCH），位置指示子の位置づけ（FIND），または複数レコードの検索（FETCHDB ALL）

(2)　指定方法

システム共通定義のpd_lock_uncommited_delete_dataオペランドにWAITを指定すると，コミットしていない削除データに排他を掛けることができます。詳細については，マニュアル「HiRDB Version 9 システム定義」のpd_lock_uncommited_delete_dataオペランドの説明を参照してください。pd_lock_uncommited_delete_dataオペランドの説明を参照する際の注意点を次に示します。

「DELETE文」を「SDBデータベースを操作するAPI（ERASE）によるルートレコードの削除」，または「DML（ERASE）によるルートレコードの削除」に読み替えてください。

「UPDATE文」に関する説明は無視してください。

このオペランドの指定に関係なく，「一意性制約」に関しては次のとおりに動作します。

同一キーを持つ，4V FMBまたはSD FMBのSDBデータベースのルートレコードのインデクスキーエントリが見つかった場合，そのインデクスキーを操作している相手トランザクションが未決着状態で，ロールバックする可能性があったとしても，排他制御でのチェックをしないでエラーとなります。

なお，HiRDB/SDが内部的に発行する，4V AFMのSDBデータベースの仮想ルートレコードの検索では，このオペランドの指定値に関係なく，WAITが指定されたものとして動作します。このオペランドにNOWAIT（省略値）を指定して4V AFMのSDBデータベースを操作する場合，マニュアル「HiRDB Version 9 システム定義」のpd_lock_uncommited_delete_dataオペランドの説明に記載されているHiRDBファイルの使用可能サイズの制限はありません。

(3)　コミットしていない削除データに排他を掛けた場合の効果

コミットしていない削除データに排他を掛けた場合の効果を次に示します。

4V FMBまたはSD FMBのSDBデータベースのルートレコードを検索中に，コミットする前の削除データを検知した場合，検索トランザクションは，削除トランザクションのコミットまたはロールバックの決着を待ってから検索処理を行います。これによって，削除トランザクションでロールバックが発生した場合でも，検索トランザクションからの検索読み飛ばしを防止します。

(4)　インデクス検索時の排他制御

システム共通定義のpd_lock_uncommited_delete_dataオペランドにWAITを指定した場合，インデクス検索時に削除中または削除済みのレコードを格納していたページにも排他を掛けます。

pd_lock_uncommited_delete_dataオペランドにWAITを指定した場合と，NOWAIT（省略値）を指定した場合のインデクス検索の動作の違いを次の図に示します。

図2‒92　pd_lock_uncommited_delete_dataオペランド指定によるインデクス検索の動作の違い

注※1

削除中または削除済みのレコードのインデクスキーも含みます。

注※2

排他制御モードについては，次の個所を参照してください。

「表2-36　排他制御のモードの組み合わせの例（4V FMBのSDBデータベースの場合）」

「表2-37　排他制御のモードの組み合わせの例（4V AFMのSDBデータベースの場合）」

「表2-38　排他制御のモードの組み合わせの例（SD FMBのSDBデータベースの場合）」

注※3

削除中または削除済みのレコードのインデクスキーは含みません。

注※4

排他待ちが発生した場合に削除されていることがあります。

(5)　注意事項

(a)　インデクスの残存エントリ

SDBデータベースを操作するAPIまたはDMLで次のどちらかの操作を行った場合，インデクスキーエントリは削除されません。残存エントリとしてインデクス内に残ります。

レコードの削除（ERASE）によってインデクスが定義されたレコード型のレコードを削除した場合（この場合，削除レコードのインデクスキーエントリが残存エントリとして残ります）

レコードの削除（ERASE）またはレコードの一括削除によって仮想ルートレコード配下の子レコードをすべて削除した場合（この場合，仮想ルートレコードのシステム用構成要素がX'0000'のインデクスキーエントリが残存エントリとして残ります）

インデクスの残存エントリの注意事項については，マニュアル「HiRDB Version 9 UAP開発ガイド」の「コミットしていない削除データの排他制御」のインデクスの残存エントリの注意事項を参照してください。インデクスの残存エントリの注意事項を参照する際の注意点を次に示します。

残存エントリの発生条件については，前述したとおりです。

インデクスキーの更新に関する説明は無視してください。

「pdrorg」を「pdsdbrogおよびpdsdblod」に読み替えてください。

回避策2はSDBデータベースには適用できないため，無視してください。

「表の残存エントリ」の説明は無視してください。

2.10　データベースの更新ログの取得方式

HiRDB/SDは，UAPまたはユティリティ※1によって更新されたデータベースの履歴情報（システムログ中のデータベースの更新ログ）をシステムログファイルに取得しています。また，データベースの更新ログを取得しないこともできます。※2データベースの更新ログを取得しないと，その分の処理時間が短縮されます。したがって，UAP（またはユティリティ）の実行時間を短縮できます。

注※1

次のユティリティが該当します。

HiRDB/SD定義ユティリティ（pdsdbdef）

HiRDB/SDデータベース作成ユティリティ（pdsdblod）

HiRDB/SDデータベースアクセスユティリティ（pdsdbexe）

注※2

HiRDB/SD定義ユティリティ（pdsdbdef）によって更新されたデータベースのログは，常時取得しています。システムログ中のデータベースの更新ログを取得しない運用はできません。

このため，分割格納条件の変更機能を使用して格納RDエリアの変更を行う場合は，SDBデータベース定義の更新に必要なシステムログだけでなく，格納条件が変更されたことによって，変更対象のRDエリアに格納できなくなったデータの削除処理に必要なデータベースの更新ログを格納済みのデータ量に応じて出力します。

2.10.1　データベースの更新ログ取得方式の種類

UAP（またはHiRDB/SDデータベース作成ユティリティ（pdsdblod））を実行するときのデータベースの更新ログ取得方式には，次の表に示す2種類のモードがあります。

表2‒45　データベースの更新ログ取得方式

データベースの更新ログ取得方式

説明

ログ取得モード

ロールバックおよびロールフォワードに必要なデータベース更新ログを取得します。通常はログ取得モードで更新ログを取得します。

ログレスモード

データベース更新ログを取得しません。

2.10.2　データベースの更新ログ取得方式の指定方法

データベースの更新ログ取得方式の指定方法を次の表に示します。

表2‒46　データベースの更新ログ取得方式の指定方法

データベースの更新ログ取得方式の指定方法

説明

UAPの場合

クライアント環境定義のPDDBLOGオペランドで，データベースの更新ログ取得方式を指定します。PDDBLOGオペランドでは，ログ取得モードまたはログレスモードを指定できます。

HiRDB/SDデータベース作成ユティリティ（pdsdblod）の場合

HiRDB/SDデータベース作成ユティリティ（pdsdblod）のenvironment文のlogmodeオペランドで，データベースの更新ログ取得方式を指定します。

HiRDB/SDデータベース作成ユティリティについては「12.　HiRDB/SDデータベース作成ユティリティ（pdsdblod）」を参照してください。

2.10.3　データベースの更新ログ取得方式による運用方法の違い

データベースの更新ログ取得方式が異なると，次に示す運用方法が異なります。

UAPが異常終了したときのHiRDB/SDの処理とユーザの処置

データベースを回復できる時点

(1)　UAPが異常終了したときのHiRDB/SDの処理とユーザの処置

UAPが異常終了したときのHiRDB/SDの処理とユーザの処置を次の表に示します。

表2‒47　UAPが異常終了したときのHiRDB/SDの処理とユーザの処置

データベースの更新ログ取得方式

HiRDB/SDの処理

ユーザの処置

ログ取得モード

更新したRDエリアの状態をUAP実行前の状態または異常終了直前に取得した同期点までロールバックします。

UAP実行前の状態にロールバックされた場合は，UAPを再実行してください。異常終了直前に取得した同期点までロールバックされた場合は，同期点以降の処理を実行してください。

ログレスモード

ロールバックしません。更新したRDエリアを障害閉塞（ログレス閉塞）します。RDエリアの内容は破壊されます。

UAP実行前に取得したバックアップを入力情報として，データベース回復ユティリティ（pdrstr）でRDエリアを回復してください。その後，UAPを再実行してください。

(2)　データベースを回復できる時点

データベース回復ユティリティ（pdrstr）を使用してデータベースを回復できる時点を次の表に示します。

表2‒48　データベースを回復できる時点

データベースの更新ログ取得方式

データベースを回復できる時点

ログ取得モード

バックアップ取得時点またはバックアップ取得時点以降の任意の同期点

ログレスモード

バックアップ取得時点

2.10.4　バックアップについての注意（重要）

ログレスモードまたは更新前ログ取得モードのUAP（またはユティリティ）の実行中に，更新可能モード（-M s指定）でバックアップを取得しないでください。

ログレスモードまたは更新前ログ取得モードのUAP（またはユティリティ）の実行後は，次に示すモードでバックアップを取得してください。

参照・更新不可能モード（-M ｘ指定）

参照可能モード（-M ｒ指定）

2.11　システムファイル

障害時にシステムの状況を回復するための情報などを格納するファイルをシステムファイルといいます。システムファイルは次に示すファイルの総称です。

システムログファイル

シンクポイントダンプファイル

ステータスファイル

各システムファイルについては，マニュアル「HiRDB Version 9 解説」の「システムファイル」を参照してください。

2.11.1　作業表用ファイル

ユティリティを実行するとき，およびHiRDBのディクショナリ表に格納されているHiRDBの定義情報を検索するときに必要となる一時的な情報を格納するためのファイルを作業表用ファイルといいます。作業表用ファイルはHiRDB/SDが自動的に作成します。HiRDB管理者は，作業表用ファイル用のHiRDBファイルシステム領域を作成してください。

作業表用ファイルの構成

次に示すサーバに作業表用ファイルが必要になります。

ディクショナリサーバ

バックエンドサーバ

作業表用ファイルを使用するユティリティ

次に示すユティリティで作業表用ファイルを使用します。

HiRDB/SD定義ユティリティ（pdsdbdef）

HiRDB/SDデータベース作成ユティリティ（pdsdblod）

2.12　HiRDBシステム定義

HiRDBの稼働環境をHiRDBシステム定義で設定します。HiRDBシステム定義を格納するファイルをHiRDBシステム定義ファイルといいます。

HiRDBシステム定義ファイルについては，マニュアル「HiRDB Version 9 解説」の「HiRDB/パラレルサーバのHiRDBシステム定義の体系」を参照してください。

■SDB用UAP環境定義

HiRDBシステム定義には，マニュアル「HiRDB Version 9 解説」の「HiRDB/パラレルサーバのHiRDBシステム定義の体系」で説明されているHiRDBシステム定義以外に，SDB用UAP環境定義があります。

SDB用UAP環境定義には，SD FMBのSDBデータベースにアクセスするUAPの実行環境を定義します。

SDB用UAP環境定義を指定したファイル（SDB用UAP環境定義ファイル）は，フロントエンドサーバがあるサーバマシンに配置します。マルチフロントエンドサーバの場合は，SDB用UAP環境定義を適用したいフロントエンドサーバのサーバマシンに配置します。

SDB用UAP環境定義ファイルを含めたHiRDBシステム定義の構成例については，「4.9.2　SDB用UAP環境定義ファイルを配置するサーバマシンの検討」を参照してください。

2.13　HiRDBの開始・終了

HiRDBの開始・終了の詳細については，マニュアル「HiRDB Version 9解説」の「HiRDBの開始・終了」を参照してください。

注意事項

HiRDB/SDデータベース作成ユティリティ（pdsdblod）をログレスモードで実行中，またはHiRDB/SDデータベース再編成ユティリティ（pdsdbrog）を実行中にHiRDBが強制終了，または異常終了すると次回再開始時に当該トランザクションはロールバック対象となりません。

2.14　系切り替え機能

HiRDBとHAモニタが連携することによって，システムの信頼性向上，稼働率向上を目的とした系切り替え機能が使用できるようになります。HiRDB/SDで使用できる系切り替え機能は次のとおりです。

モニタモード

高速系切り替え機能

ここでは，これらの系切り替え機能の概要について説明します。

なお，HAモニタについては，マニュアル「高信頼化システム監視機能 HA モニタ」を参照してください。

2.14.1　高速系切り替え機能とは

HiRDBの高速系切り替え機能については，マニュアル「HiRDB Version 9 解説」の「系切り替え機能とは」，および「系の切り替え時間を短縮する機能」を参照してください。

2.14.2　系切り替え機能の形態

系切り替え機能の形態については，マニュアル「HiRDB Version 9 解説」の「系切り替え機能の形態」を参照してください。

2.14.3　モニタモードとサーバモード

モニタモードとサーバモードについては，マニュアル「HiRDB Version 9 解説」の「系切り替え機能の運用方法」を参照してください。

モニタモード，サーバモードのどちらも使用できるクラスタソフトウェアはHAモニタだけです。

2.15　機密保護機能

データベースを外部の人にアクセスされないようにする機能として，機密保護機能があります。機密保護機能ではユーザ権限という概念を使用していて，必要な権限を持っていないとデータベースにアクセスできないようになっています。

ここでは，機密保護機能の概要について説明します。機密保護機能の運用方法については，「5.16　セキュリティに関する運用」を参照してください。

2.15.1　ユーザ権限の種類

ここでは，ユーザ権限の種類について説明します。ユーザ権限の種類を次の図に示します。

図2‒93　ユーザ権限の種類

詳細については，マニュアル「HiRDB Version 9 解説」の「ユーザ権限の種類」を参照してください。

2.15.2　機密保護機能の運用方法

HiRDB管理者，またはDBA権限保持者が，HiRDBのユーザに必要なユーザ権限を与えて，機密保護機能を運用します。権限の与え方については，「5.16.1　構造型DB機能に関するユーザ権限の設定」を参照してください。

3　HiRDB/SDのデータベース設計

この章では，HiRDB/SDのデータベース設計について説明します。

3.1　HiRDB/SDの設計

ここでは，HiRDB/SDの設計方針について説明します。

3.1.1　システム設計

HiRDBのシステム設計については，マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「HiRDB/パラレルサーバのシステム設計」を参照してください。

3.1.2　HiRDBファイルシステム領域の設計

HiRDBのシステム構築時に，HiRDBファイルを作成するHiRDBファイルシステム領域を作成します。ここでは，HiRDBファイルシステム領域を作成するときの設計方針について説明します。

(1)　HiRDBファイルシステム領域に使用するファイル

HiRDBファイルシステム領域に使用するファイルについては，マニュアル「HiRDB Version 9 解説」の「HiRDBファイルシステム領域」を参照してください。

(2)　HiRDBファイルシステム領域の種類

HiRDBファイルシステム領域の種類については，マニュアル「HiRDB Version 9 解説」の「HiRDBファイルシステム領域」を参照してください。

(3)　RDエリア用のHiRDBファイルシステム領域の設計

RDエリア用のHiRDBファイルシステム領域の設計方針については，マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「RDエリア用のHiRDBファイルシステム領域の設計」を参照してください。

(4)　システムファイル用のHiRDBファイルシステム領域の設計

システムファイル用のHiRDBファイルシステム領域の設計方針については，マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「システムファイル用のHiRDBファイルシステム領域の設計」を参照してください。

(5)　作業表用ファイル用のHiRDBファイルシステム領域の設計

作業表用ファイルとは，HiRDB/SD定義ユティリティ（pdsdbdef）またはHiRDB/SDデータベース作成ユティリティ（pdsdblod）の実行時に作成される一時的な情報を格納するファイルです。

作業表用ファイル用のHiRDBファイルシステム領域の設計方針については，マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「作業表用ファイル用のHiRDBファイルシステム領域の設計」を参照してください。

(6)　ユティリティ用のHiRDBファイルシステム領域の設計

ユティリティ用のHiRDBファイルシステム領域の設計方針については，マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「ユティリティ用のHiRDBファイルシステム領域の設計」を参照してください。

(7)　HiRDBファイルシステム領域の最大長

HiRDBファイルシステム領域の最大長は，マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「HiRDBファイルシステム領域の最大長」を参照してください。

3.1.3　システムファイルの設計

ここでは，システムファイルの設計について説明します。

(1)　システムログファイルの設計

システムログが出力されているファイルの容量いっぱいにシステムログが出力されると，システムログの出力先がほかのシステムログファイルに変更されます。これをシステムログファイルのスワップといいます。

システムログファイルのスワップ時に，スワップ先にできる状態のシステムログファイルがないとHiRDB（ユニット）は異常終了します。このため，システムログファイルの容量を適切に見積もっておく必要があります。

システムログファイルの設計については，マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「システムファイルの設計」の「システムログファイルの設計」を参照してください。なお，システムログ量を見積もる際には，「3.5.1　システムログ量の見積もり」で算出した値を加算してください。

HiRDBにはシステムログファイルの空き容量を監視する機能（システムログファイルの空き容量監視機能）があります。詳細については，マニュアル「HiRDB Version 9 システム運用ガイド」の「システムログファイルの空き容量監視機能の運用方法」を参照してください。

(2)　シンクポイントダンプファイルの設計

シンクポイントダンプファイルはシステムマネジャを除いた各サーバに必要です。シンクポイントダンプファイルの容量が不足すると，HiRDBを開始できません。

シンクポイントダンプファイルの設計については，マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「システムファイルの設計」の「シンクポイントダンプファイルの設計」を参照してください。

(3)　ステータスファイルの設計

システムマネジャを除いた各サーバにサーバ用ステータスファイルが必要です。また，各サーバマシンにユニット用ステータスファイルが必要です。ステータスファイルが容量不足になるとHiRDBが異常終了します。

ステータスファイルの設計については，マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「システムファイルの設計」の「ステータスファイルの設計」を参照してください。

3.1.4　RDエリアの配置

ここでは，次に示すRDエリアを配置するときの考慮点について説明します。

システム用RDエリア

ユーザ用RDエリア

HiRDBでは，RDエリアを作成するサーバを意識する必要があります。RDエリアを作成するサーバマシンを次の表に示します。

表3‒1　RDエリアを作成するサーバマシン

RDエリアの種類

RDエリアを作成するサーバマシン

マスタディレクトリ用RDエリア

ディクショナリサーバがあるサーバマシンに作成します。

データディクショナリ用RDエリア

データディレクトリ用RDエリア

ユーザ用RDエリア

バックエンドサーバがあるサーバマシンに作成します。

注意事項

pd_max_rdarea_noオペランドの値に注意してください。このオペランドにはRDエリアの最大数を指定します。RDエリアの数がこのオペランドの値を超えている場合はHiRDBを正常開始できません。

(1)　システム用RDエリアの配置

システム用RDエリアは，ユーザ用RDエリアの配置を考慮して配置します。システム用RDエリアを配置するときの考慮点を次に示します。

システム用RDエリアはディクショナリサーバに配置します。

ディクショナリサーバとバックエンドサーバが同一のサーバマシンにある場合は，ユーザ用RDエリアを配置するディスクとは異なるディスクにシステム用RDエリアを配置するようにします。

システム用RDエリアの配置例を次の図に示します。

図3‒1　システム用RDエリアの配置例

(2)　ユーザ用RDエリアの配置

(a)　システムログファイルとの関連

システムログファイルを配置したディスクとは異なるディスクに，ユーザ用RDエリアを配置するようにします。このようにすることで，シンクポイント時のシステムログファイルとユーザ用RDエリアを構成するHiRDBファイルへの入出力処理を複数のディスクに分散できるため，シンクポイントでの処理時間を削減できます。

(b)　システム用RDエリアとの関連

システム用RDエリアを配置したディスクとは異なるディスクにユーザ用RDエリアを配置するようにします。

(c)　SDBデータベースを横分割した場合

SDBデータベースを横分割した場合，横分割したSDBデータベースを格納するRDエリアを異なるバックエンドサーバに配置します。また，横分割したSDBデータベースを格納するRDエリアを異なるディスクに配置します。ユーザ用RDエリアの配置例を次の図に示します。

図3‒2　ユーザ用RDエリアの配置例

3.1.5　ユニット数またはサーバ数が多いシステムを構築する場合の考慮点

ユニット数またはサーバ数が多いシステムを構築および運用する場合，HiRDBで使用するポートを固定して通信負荷を軽減するシステム定義の設定，ユニット名を付けて実行するコマンドの種類などについての考慮が必要です。

目安として，10ユニット以上，または10サーバ（フロントエンドサーバ，ディクショナリサーバ，およびバックエンドサーバ）以上のシステムを構築して運用する場合，マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「ユニット数またはサーバ数が多いシステムを構築する場合の考慮点」を参照してください。

3.2　RDエリアの設計

ここでは，RDエリアの設計するときの考慮点について説明します。

RDエリアを設計するときに考慮する点については，マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「RDエリアを設計するときの検討項目」も参照してください。また，RDエリアの配置については，「3.1.4　RDエリアの配置」を参照してください。

3.2.1　ユーザ用RDエリアを設計する際の考慮点

ユーザ用RDエリアを設計する際の考慮点を次に示します。

SDBデータベースを格納するユーザ用RDエリアを定義する際，create rdarea文のdata modelオペランドにstructuredを必ず指定してください。

次の表またはインデクスを格納するユーザ用RDエリアを定義する際，create rdarea文のdata modelオペランドにrelationalを指定するか，またはdata modelオペランドの指定を省略してください。

追い付き反映キー対応表

追い付き反映キー対応表のインデクス

追い付き状態管理表

監査証跡表

ユーザ用RDエリアは，公用RDエリアとして定義してください。ただし，監査証跡表を格納するユーザ用RDエリアについては，マニュアル「HiRDB Version 9 システム運用ガイド」の「監査人の登録，監査証跡表を格納するRDエリアの作成，および監査証跡表の作成」の「監査証跡表を格納するRDエリアの作成」の「RDエリアの作成」を参照して，格納できるRDエリアの種類を確認してください。

レコード型とインデクスを同じユーザ用RDエリアに格納できません。

複数のSDBデータベースを同じユーザ用RDエリアに格納できません。

SDBデータベースを横分割する場合，レコード型とインデクスの横分割数を同じにする必要があります。また，横分割したレコード型とインデクスを格納するユーザ用RDエリアを同じバックエンドサーバに配置する必要があります。詳細については，「2.3.7　SDBデータベースの横分割」を参照してください。

上記以外のRDエリアを設計するときに考慮する点については，マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「RDエリアを設計するときの検討項目」を参照してください。

3.2.2　セグメントの設計

ここでは，セグメントの設計をするために必要な情報について説明します。

(1)　セグメントの状態

セグメントには次の表に示す状態があります。

表3‒2　セグメントの状態

セグメントの状態

説明

使用中セグメント

レコードまたはインデクスのデータを格納しているセグメントです。特に，データが満杯でセグメント内にデータを追加できないセグメントを満杯セグメントといい，データの削除でセグメント内の全ページが空きページ（未使用ページ）のセグメントを使用中空きセグメントといいます。

未使用セグメント

使用されたことがないセグメントです。このセグメントはRDエリア内のすべてのレコード（またはインデクス）が使用できます。

なお，データが格納されていないセグメントを空きセグメントといいます。使用中空きセグメントと未使用セグメントは，空きセグメントに分類されます。

(2)　セグメント内の空きページの比率

HiRDB/SDデータベース作成ユティリティ（pdsdblod）によるレコード格納時に，使用中セグメント内に空きページを確保できます。どれだけの空きページを確保するかは，セグメント内の空きページの比率で指定します。

セグメント内の空きページの比率を次の図に示します。

図3‒3　セグメント内の空きページの比率

［説明］

この例ではセグメント内の空きページの比率を30％としています。したがって，10ページ中3ページが空きページになります。

セグメント内の空きページの比率は，SDBデータベース格納定義のPCTFREE句で指定します。セグメント内の空きページの比率は0〜50％の範囲で指定でき，省略値は10％となります。また，HiRDB/SDデータベース作成ユティリティ（pdsdblod）のenvironment文のrecfreeオペランドで，セグメント内の空きページの比率を指定することもできます。両方を指定した場合，recfreeオペランドの指定値が優先されます。

なお，セグメント内の空きページの比率の設定は性能に影響を及ぼします。詳細については，「3.2.5　レコード格納時の空き領域の作成（サブページ分割をしない場合）」または「3.2.6　レコード格納時の空き領域の作成（サブページ分割をする場合）」を参照してください。

(3)　セグメントの確保と解放

RDエリアにレコードを格納する際，必要に応じてセグメントが確保されます。データの追加と削除を繰り返した場合，データ量が増えていないのにRDエリアが容量不足になることがあります。これを防ぐにはHiRDB/SDデータベース再編成ユティリティ（pdsdbrog）によるSDBデータベースの再編成を定期的に行ってセグメントを解放してください。

SDBデータベースの再編成については，次のどれかを参照してください。

「5.11　SDBデータベースの再編成（インナレプリカ機能を使用しない場合）」

「5.12　SDBデータベースの再編成（インナレプリカ機能を使用したオンライン再編成）【4V FMB，4V AFM】」

「5.13　SDBデータベースの再編成（インナレプリカ機能を使用した更新可能なオンライン再編成）【4V FMB】」

なお，次に示す操作をした場合にもセグメントが解放されます。

RDエリアの再初期化

SDBデータベースの削除

HiRDB/SDデータベース作成ユティリティ（pdsdblod）のenvironment文のpurgeオペランドにyesを指定したデータロードまたはフォーマットライト

(4)　セグメントサイズの設計方針

セグメントサイズはデータの入出力時間およびディスク所要量に影響を与えるため，綿密に設計する必要があります。HiRDB/SDでは，レコードの近傍配置やデータのアクセス性能（同時実行性能）を考慮して，あらかじめレコードを格納しない領域（セグメント内の空きページの比率）を設計しておく必要があります。

セグメントサイズについては，「3.5.5(4)　平均的なファミリが使用するページ数またはサブページ数の算出」で算出したサイズにすることを推奨します。

3.2.3　ページの設計

ここでは，ページの設計をするために必要な情報について説明します。

なお，1ファミリのトータルのレコード長とページ長によっては，レコードを格納する際の配置制御との関係からレコードの格納効率が低下することがあります。「3.2.4　サブページの設計」で説明しているサブページの適用基準を参照して，該当する場合はサブページ分割の適用を検討してください。

ここでの説明は，サブページ分割をしないことを前提としています。

(1)　ページの状態

ページには次の表に示す状態があります。

表3‒3　ページの状態

ページの状態

説明

未使用ページ

まだ割り当てられていないページ，またはレコードの削除によって解放されたページです。

使用中ページ

次のどちらかの条件を満たすページです。

レコードが格納されていて，レコードを追加できる空き領域がある，通常のページまたは事前割り当てページ

レコードが格納されていない事前割り当てページ

使用中満杯ページ

次のどちらかの条件を満たすページです。

レコードが格納されていて，レコードを追加できる空き領域がないページ

ページ切り替えオプションに'O'が指定されたレコードが格納されているページ

(2)　ページ内の未使用領域の比率

HiRDB/SDデータベース作成ユティリティ（pdsdblod）によるレコード格納時に，使用中ページ内に未使用領域を確保できます※。どれだけの未使用領域を確保するかは，ページ内の未使用領域の比率で指定します。

注※

4V FMBまたは4V AFMのSDBデータベースを操作するAPIで，PCTFREE有効化オプションを指定したレコードの格納時にも，使用中ページ内に未使用領域を確保できます。SDBデータベースを操作するAPIについては，マニュアル「TP1/Financial Service Platform プログラム作成の手引」を参照してください。

ページ内の未使用領域の比率を次の図に示します。

図3‒4　ページ内の未使用領域の比率

［説明］

ページ内の未使用領域の比率は，SDBデータベース格納定義のPCTFREE句で指定します。ページ内の未使用領域の比率は0〜99％の範囲で指定でき，省略値は30％となります。また，HiRDB/SDデータベース作成ユティリティ（pdsdblod）のenvironment文のrecfreeオペランドで，ページ内の未使用領域の比率を指定することもできます。両方を指定した場合，recfreeオペランドの指定値が優先されます。

なお，ページ内の未使用領域の比率の設定は性能に影響を及ぼします。詳細については，「3.2.5　レコード格納時の空き領域の作成（サブページ分割をしない場合）」を参照してください。

(3)　ページの確保と解放

ページの確保

RDエリアにレコードを格納する際，必要に応じてページが確保されます。一度確保されたページ（一度使用したページ）はそのページが解放されないかぎり，再利用できません。

ページの解放

次のどれかの条件を満たす場合にページは解放されます。

セグメントが解放された場合

事前割り当てページであり，ルートレコード実現値が削除された場合

この場合，該当するファミリを格納するために確保している事前割り当てページがすべて解放されます。

通常のページであり，ページ内のレコード実現値がすべて削除された場合

なお，レコードの一括削除の場合は，レコードの管理情報を更新して，レコードが削除された状態にします。実際のレコード自体は削除されません。そのため，ページ内のレコード実現値がすべて削除された状態となっても，ページは解放されません。

(4)　ページ長の設計方針

ページ長は，データの入出力時間およびディスク所要量に影響を与えるため，次の項目を考慮して設計する必要があります。

ページ長は，対象となるSDBデータベースの最大のレコード長よりも大きくなければなりません。次に示す計算式を満たすように設計してください。

ページ長≧mrl＋88（単位：バイト）

（凡例）

mrl：対象となるSDBデータベースの最大のレコード長

ページは入出力の単位であるため，ページ長を大きくすると入出力回数を軽減できます。逆にページ長が小さいと入出力回数が増加します。

ページは排他制御の単位であるため，ページ長を小さくして格納するレコード数を制限することで同時実行性を向上させることができます。逆にページ長を大きくして同一ページに多くのレコードを格納すると同時実行性が低下します。

ルートレコードが異なるレコードは別ページに格納されるため，1ファミリのトータルのレコード長が小さい場合，不当に大きなページ長を設定すると格納効率が悪くなります。

HiRDB/SDでは，レコードの近傍配置やデータのアクセス性能（同時実行性能）を考慮する必要があります。そのため，あらかじめレコードを格納しない領域（ページ内の未使用領域の比率）も含めて設計します。

3.2.4　サブページの設計

ここでは，サブページの設計をするために必要な情報について説明します。

サブページ分割する場合には，同時実行性とデータベース容量を考慮して設計してください。サブページ分割を適用した場合の配置制御については，「2.7　レコードの配置制御（サブページ分割をする場合）」を参照してください。

(1)　サブページの使用目的と適用基準

HiRDB/SDでは，レコードを格納する際の配置制御によって，ルートレコードが異なるレコード（異なるファミリのレコード）は同じページに格納されません。そのため，1ファミリに対して最低1ページの領域が必ず確保されます。1ファミリのトータルのレコード長がページ長より小さい場合，ページ内に未使用領域ができてしまうため，レコードの格納効率が低下し，データベース容量が増加します。

このような場合，ページをサブページ分割すると，ページ内の未使用領域の発生を抑えることができます。ページ内の未使用領域の発生を抑えることで，レコードの格納効率が向上し，データベース容量の削減を図ることができます。

次の表に示す適用基準を満たす場合は，サブページの使用を検討してください。

表3‒4　サブページの適用基準

項番

SDBデータベース種別

適用基準

1

4V FMBまたはSD FMBの場合

階層構造がなく（親レコードだけ），レコード長が1,982バイト以下の場合

2

1ファミリ内のレコードが少なく，1ファミリのトータルのレコード長が（1,992−10×格納レコード件数）バイト以下の場合

3

4V AFMの場合

1ファミリ内のレコードが少なく，1ファミリのトータルのレコード長が（1,992−10×格納レコード件数）バイト以下の場合

4

排他が競合したときの影響を局所化するために，1ページに格納するレコード件数を制限した結果，1ページに格納されるレコードの合計長の最大値が（1,992−10×格納レコード件数）バイト以下になった場合

5

次に示す2つの条件を満たす場合

レコード長の最大値が1,982バイト以下の場合

アクセス頻度が高いSDBデータベースの同時実行性を向上させるために，ページ切り替え指定で1ページに1件のレコードを格納しようとしている場合

注

レコード長の計算方法については，「3.5.5(1)　レコード長の算出」を参照してください。

(2)　サブページの状態

サブページには次の表に示す状態があります。

表3‒5　サブページの状態

サブページの状態

説明

未使用サブページ

まだ割り当てられていないサブページ，またはレコードの削除によって解放されたサブページです。

使用中サブページ

次のどちらかの条件を満たすサブページです。

レコードが格納されていて，レコードを追加できる空き領域がある，通常のサブページまたは事前割り当てサブページ

レコードが格納されていない事前割り当てサブページ

使用中満杯サブページ

次のどちらかの条件を満たすサブページです。

レコードが格納されていて，レコードを追加できる空き領域がないサブページ

ページ切り替えオプションに'O'が指定されたレコードが格納されているサブページ

(3)　サブページ分割しているときのページの状態

サブページ分割しているときのページの状態を次の表に示します。

表3‒6　サブページ分割しているときのページの状態

ページの状態

説明

未使用ページ

まだ割り当てられていないページです。

使用中空きページ

レコードの削除によって，ページ内の全サブページが未使用サブページとなったページです。

使用中ページ

ページ内に使用中サブページまたは使用中満杯サブページがあり，かつ未使用サブページがあるページです。

使用中満杯ページ

ページ内の全サブページが使用中サブページまたは使用中満杯サブページであり，未使用サブページがないページです。

(4)　サブページ内の未使用領域の比率

HiRDB/SDデータベース作成ユティリティ（pdsdblod）によるレコード格納時に，使用中サブページ内に未使用領域を確保できます※。どれだけの未使用領域を確保するかは，サブページ内の未使用領域の比率で指定します。

注※

4V FMBまたは4V AFMのSDBデータベースを操作するAPIで，PCTFREE有効化オプションを指定したレコードの格納時にも，使用中サブページ内に未使用領域を確保できます。SDBデータベースを操作するAPIについては，マニュアル「TP1/Financial Service Platform プログラム作成の手引」を参照してください。

サブページ内の未使用領域の比率を次の図に示します。

図3‒5　サブページ内の未使用領域の比率

［説明］

サブページ内の未使用領域の比率は，SDBデータベース格納定義のPCTFREE句で指定します。サブページ内の未使用領域の比率は0〜99％の範囲で指定でき，省略値は30％となります。また，HiRDB/SDデータベース作成ユティリティ（pdsdblod）のenvironment文のrecfreeオペランドで，サブページ内の未使用領域の比率を指定することもできます。両方を指定した場合，recfreeオペランドの指定値が優先されます。

なお，サブページ内の未使用領域の比率の設定は性能に影響を及ぼします。詳細については，「3.2.6　レコード格納時の空き領域の作成（サブページ分割をする場合）」を参照してください。

(5)　サブページの確保と解放

サブページの確保

レコードを格納する際，必要に応じてサブページが確保されます。一度確保されたサブページはそのサブページが解放されないかぎり再利用できません。

サブページの解放

セグメントが解放されたときに，セグメント内のページに属するサブページが解放されます。

事前割り当てサブページの場合，ルートレコードが削除されたときに，該当するファミリを格納するために確保している事前割り当てサブページがすべて解放されます。

通常のサブページの場合，サブページ内のレコードがすべて削除されたときに，サブページが解放されます。なお，レコードの一括削除の場合は，レコードの管理情報を更新して，レコードが削除された状態にします。実際のレコード自体は削除されません。そのため，サブページ内のレコードがすべて削除された状態となっても，サブページは解放されません。

(6)　サブページ分割しているときのページの確保と解放

サブページ分割しているときのページの確保

レコードを格納する際，必要に応じてページが確保されます。一度確保されたページはそのページが解放されないかぎり再利用できません。

サブページ分割しているときのページの解放

セグメントが解放されたときに，セグメント内の全ページが解放されます。

ログレスモードのUAPによるレコードの削除で，ページ内の全サブページが未使用サブページになった場合に，そのページが解放されます。

(7)　サブページ長（サブページ分割数）の設計方針

サブページ分割するページのページ長は4,096バイト固定になります。そのため，サブページ分割数（SDBデータベース格納定義のSTORAGE RECORD句下のSUBPAGE NUMBER句の指定値）によって，次の表に示すようにサブページ長が決まります。

表3‒7　サブページ分割数とサブページ長

サブページ分割数

サブページ長（単位：バイト）

2

2,028

3

1,352

4

1,012

5

808

6

676

7

576

8

504

9

448

10

404

11

368

12

336

13

312

14

288

15

268

16

252

■サブページ長（サブページ分割数）を決定する際の考慮点

性能（同時実行性）や，データベース容量を考慮してサブページ長（サブページ分割数）を決定します。また，次に示す点にも考慮してください。

サブページ長は，対象となるSDBデータベースの最大レコード長よりも大きくする必要があります。次に示す計算式を満たすように設計してください。

サブページ長≧mrl＋48（単位：バイト）

（凡例）

　mrl：対象となるSDBデータベースの最大のレコード長

ファミリが異なるレコードは別々のサブページに格納されます。そのため，1ファミリのトータルのレコード長が小さい場合，サブページ分割数を小さくしてサブページ長を大きくすると，レコードの格納効率が悪くなります。

サブページは排他制御の単位であるため，4V AFMのSDBデータベースの場合は，サブページ分割数を大きくしてサブページ長を小さくすると，同一サブページに格納されるレコード数が少なくなり，同時実行性が向上します。逆に，サブページ分割数を小さくしてサブページ長を大きくすると，同一サブページに格納されるレコード数が多くなり，同時実行性が低下します。

■サブページ長（サブページ分割数）の設計

次に示す計算式からサブページ内の未使用領域長を計算し，サブページ内の未使用領域長ができるだけ小さい値になるようにサブページ分割数を決めてください。サブページ内の未使用領域長が小さいほど，レコードの格納効率が良くなります。

サブページ内の未使用領域長は，次に示す計算式から求められます。

サブページ内の未使用領域長＝spl−36−N×（L＋10）（単位：バイト）

（凡例）

　spl：サブページ長

　N：1サブページに格納するレコード件数

　L：レコード長

なお，計算結果が負の値となる場合は，サブページ長が不足しているため，レコードが格納できません。この場合は，次に示す対処を行ってください。

サブページ分割数を小さくしてサブページ長を大きくする。

1サブページに格納するレコード件数を少なくする。

サブページに格納するレコードのレコード長を小さくする。

レコード長の求め方については，「3.5.5(1)　レコード長の算出」を参照してください。

(8)　留意事項

サブページ分割するページのページ長は4,096バイト固定になります。そのため，RDエリアの再初期化でページ長を4,096バイトから変更した場合，RDエリアの再初期化後のレコードの格納時や検索時などにエラーとなります。

サブページ分割を適用した場合，排他制御の単位がページからサブページに変わるため，サブページ分割を適用しないときに比べて，排他制御によるメモリ使用量や処理時間が増加することがあります。例えば，1ページに格納される複数のレコードが，サブページ分割を適用したことによって複数のサブページに分かれて格納されるような場合は，確保する排他資源数が増加するため，排他制御によるメモリ使用量や処理時間が増加します。

サブページ分割を適用したRDエリアのバックアップファイルの容量は，サブページ分割を適用しない場合に比べて大きくなります。

データベース状態解析ユティリティ（pddbst）の物理的解析では，RDエリア内の全セグメントおよび全ページの格納状態を解析します。この場合，解析結果の「満杯ページ」は，「(3)　サブページ分割しているときのページの状態」で説明している「使用中満杯ページ」のことを指します。

3.2.5　レコード格納時の空き領域の作成（サブページ分割をしない場合）

HiRDB/SDデータベース作成ユティリティ（pdsdblod）でのレコード格納時に，ページ内にレコードを格納しない領域（未使用領域）を作成したり，セグメント内に使用しない空きページ（セグメント内の空きページ）を作成したりできます。

また，SDBデータベースを操作するAPIによるレコード格納時に，PCTFREE有効化オプションを指定すると，SDBデータベース格納定義のPCTFREE句で指定したページ内の未使用領域の比率を有効にしてレコードを格納できます。PCTFREE有効化オプションは，4V FMBまたは4V AFMのSDBデータベースの場合に指定できます。

ページ内の未使用領域の比率やセグメント内の空きページの比率は，次の個所で指定できます。

SDBデータベース格納定義のPCTFREE句

PCTFREE句については，次の個所を参照してください。

4V FMBのSDBデータベースの場合：「11.5.2(3)(j)　PCTFREE」

4V AFMのSDBデータベースの場合：「11.6.2(3)(j)　PCTFREE」

SD FMBのSDBデータベースの場合：「11.7.2(3)(j)　PCTFREE」

HiRDB/SDデータベース作成ユティリティ（pdsdblod）のenvironment文recfreeオペランド

environment文のrecfreeオペランドについては，「12.3.1　environment文」を参照してください。

PCTFREE句とrecfreeオペランドの使い分けについては，「(3)　PCTFREE句とrecfreeオペランドの使い分け」を参照してください。

空き領域の作成イメージを次の図に示します。

図3‒6　空き領域の作成イメージ

なお，この項の説明中の「データロード」については，HiRDB/SDデータベース作成ユティリティ（pdsdblod）によるフォーマットライト機能を使用したレコードの格納も含みます。

(1)　空き領域を作成する目的

空き領域を作成する目的を次に示します。

(a)　データロード後のレコード格納に備えて空き領域を確保する

データロードしたあとに，子レコードを格納する場合，データロード時に作成したページ内の未使用領域，セグメント内の空きページを使用することで，同一ルートレコード下のレコードの近傍に子レコードを格納できます。

ページ内の未使用領域は，次の場合に使用されます。

SDBデータベース定義のSET句下のORDER句でSORTED DUPLICATES PROHIBITEDを指定し，格納済みのレコードが持つユーザキーの中間のキーを持つレコードを格納する場合

SDBデータベース定義のSET句下のORDER句でLASTを指定した場合や，ORDER句でSORTED DUPLICATES PROHIBITEDを指定して，最大のユーザキーを持つレコードを格納する場合で，基準ページおよびそのファミリ内接続ページに未使用領域があるとき

ファミリ内接続ページについては，「2.6.1(2)　ページ間の関連づけとファミリ内接続ページ」を参照してください。

セグメント内の空きページは，次の場合に使用されます。

基準ページおよびその前後のファミリ内接続ページに未使用領域がない場合

データロードしたあとに，格納するレコードにページ切り替え（'O'または'C'）を指定した場合

基準レコードがページ切り替えの'O'指定をされたレコードのため，基準ページへの格納ができない場合

事前割り当てページ内にレコードを格納できる空き領域がないため，事前割り当てページへの格納ができない場合

データロードをしたあとのレコード格納による空き領域の使用例（SDBデータベース定義のSET句下のORDER句でSORTED DUPLICATES PROHIBITEDを指定した場合）を次の図に示します。

図3‒7　データロードしたあとのレコード格納による空き領域の使用例（SDBデータベース定義のSET句下のORDER句でSORTED DUPLICATES PROHIBITEDを指定した場合）

データロードしたあとのレコード格納による空き領域の使用例（SDBデータベース定義のSET句下のORDER句でLASTを指定した場合）を次の図に示します。

図3‒8　データロードしたあとのレコード格納による空き領域の使用例（SDBデータベース定義のSET句下のORDER句でLASTを指定した場合）

(b)　ページに格納するレコード件数を制限する【4V AFM】

HiRDB/SDでは，複数のトランザクション間の整合性を保つために，ページ単位で排他制御をしています。そのため，1ページ内に格納されるレコード件数が多いほど，排他の競合が発生しやすくなります。そこで，ページ内の未使用領域の比率を指定して1ページ内に格納するレコード件数を制限することで，排他の競合を抑えることができます。

ページ内の未使用領域の比率の指定によって，ページに格納するレコード件数を制限する例を次の図に示します。なお，ページに格納するレコード件数を制限する場合は，SDBデータベースを操作するAPIによるレコード格納時に，PCTFREE有効化オプションを指定する必要があります。SDBデータベースを操作するAPIについては，マニュアル「TP1/Financial Service Platform プログラム作成の手引」を参照してください。

図3‒9　ページに格納するレコード件数を制限する例

(2)　ページ内の未使用領域の比率，セグメント内の空きページの比率の適用基準

ページ内の未使用領域の比率，セグメント内の空きページの比率の適用基準を次に示します。

(a)　ページ内の未使用領域の比率の適用基準

次のような場合は，ページ内の未使用領域の比率の設定を検討してください。

SDBデータベース定義のSET句下のORDER句でSORTED DUPLICATES PROHIBITEDを指定している場合で，データロード後に格納するレコードに，格納済みのレコードが持つユーザキーの中間のキーを持つレコードがあるとき

ページ内に格納するレコード件数を制限して，ページによる排他の影響範囲を限定したいとき（4V AFMのSDBデータベースの場合）

上記の条件に該当しないときは，ページ内の未使用領域の比率に0を指定してください。

(b)　セグメント内の空きページの比率の適用基準

次のような場合は，セグメント内の空きページの比率の設定を検討してください。

SDBデータベース定義のSET句下のORDER句でLASTを指定した場合，またはORDER句でSORTED DUPLICATES PROHIBITEDを指定しても，ユーザキーの昇順にレコードを格納することがわかっているとき

データロード後に格納する子レコードが，ページ内の未使用領域だけでは格納しきれないとき

データロード時にページ切り替えを指定していて，ページを占有したレコードがあるとき

データロード後に，ページ切り替え指定（'C'指定または'O'指定）で格納するレコードがあるとき

上記の条件に該当しないときは，セグメント内の空きページの比率に0を指定してください。

(3)　PCTFREE句とrecfreeオペランドの使い分け

HiRDB/SDデータベース作成ユティリティ（pdsdblod）のenvironment文でrecfreeオペランドを指定すると，SDBデータベース格納定義のPCTFREE句で指定したページ内の未使用領域の比率，およびセグメント内の空きページの比率は無視され，recfreeオペランドの指定値に従って空き領域が作成されます。

そのため，ページ内の未使用領域の比率，およびセグメント内の空きページの比率の指定は次のように指定してください。

データロード時に，データロード後のレコード格納に備えて空き領域を確保する場合

recfreeオペランドで指定してください。

4V AFMのSDBデータベースで，ページに格納するレコード件数を制限する場合（PCTFREE有効化オプションを指定して，SDBデータベースを操作するAPIによるレコード格納時にレコード件数を制限する場合）

SDBデータベース格納定義のPCTFREE句を指定してください。

4V AFMのSDBデータベースのデータロード時に，データロード後のレコード格納に備えて空き領域を確保し，かつSDBデータベースを操作するAPIによるレコード格納時にレコード件数を制限したい場合は，それぞれの目的に合わせてrecfreeオペランド，PCTFREE句の指定値を見積もってください。

(4)　ページ内の未使用領域の比率，およびセグメント内の空きページの比率に関する留意事項

ページ内の未使用領域の比率，およびセグメント内の空きページの比率に関する留意事項を次に示します。

(a)　未使用領域の比率および空きページの比率の指定に関する留意事項

セグメント内の空きページの比率には，50％を超える値を指定できません。レコード格納時にセグメント内の空きページを使い切った場合，HiRDB/SDは，ほかのセグメント内の空きページを割り当ててレコードを格納します。そのため，ファミリ単位の近傍配置ができないことがあります。

4V FMBまたはSD FMBのSDBデータベースでは，ルートレコードの格納ページの排他によって，ルートレコード下のレコードへのアクセスをシリアライズするため，レコード件数の制限による同時実行性が向上する効果はありません。このため，レコード件数を制限する目的でのページ内の未使用領域の比率には0を指定してください。

フォーマットライトを行うSDBデータベースの場合，ページ内の未使用領域の比率，およびセグメント内の空きページの比率に0を指定してください。ただし，ページに格納するレコード件数を制限したい場合は，ページ内の未使用領域の比率を指定してください。

4V AFMのSDBデータベースでOCCURRENCE NUMBER句の指定が0の場合，仮想ルートレコード下には最大1件の子レコードしか存在しません。そのため，ページ内の未使用領域の比率には0を指定してください。

(b)　未使用領域および空きページの作成に関する留意事項

ページ内の未使用領域の比率に関係なく，ページには最低1件のレコードが格納されます。このため，指定した比率の未使用領域が作成されないことがあります。

HiRDB/SDデータベース作成ユティリティ（pdsdblod）で事前割り当てページにレコードを格納する場合，ページ内の未使用領域の比率の指定は無視され，0%が指定されたものとして動作します。このため，指定した比率の未使用領域は作成されません。また，レコードは詰めて格納されます。

HiRDB/SDデータベース作成ユティリティ（pdsdblod）の実行時に，事前割り当てページを確保する際，セグメント内の空きページの比率の指定は無視され，0%が指定されたものとして動作します。このため，事前割り当てページを含むセグメント内の空きページの比率は，指定値より小さい値になることがあります。

SDBデータベースを操作するAPIで事前割り当てページにレコードを格納する際，PCTFREE有効化オプションの指定によって，ページ内に未使用領域を作成することはできません。PCTFREE有効化オプションを適用すると，SDBデータベースを操作するAPIによるレコードの格納がエラーになります。

(c)　未使用領域へのレコード格納方法に関する留意事項

ページ内の未使用領域へのレコード格納方法は，レコード格納契機によって異なります。レコード格納契機ごとの差異を次の表に示します。

表3‒8　レコード格納契機によるレコード格納の差異

レコード格納契機

ページ内の未使用領域

レコード格納前

レコード格納後

指定比率以上の未使用領域あり

指定比率以上の未使用領域なし

指定比率以上の未使用領域あり

指定比率以上の未使用領域なし

HiRDB/SDデータベース作成ユティリティ（pdsdblod）の実行時

○

×

−

−

SDBデータベースを操作するAPIによるレコードの格納時

−

−

○

×

DMLによるレコードの格納時

−

−

○※

○※

（凡例）

○：当該ページにレコードが格納されます。

×：当該ページにレコードは格納されません。

−：レコード格納の有無に関係しません。

注※

レコードを格納できるだけの未使用領域がある場合は，PCTFREEの指定に関係なくそのページにレコードが格納されます。

HiRDB/SDデータベース作成ユティリティ（pdsdblod）実行時には，レコード格納前のページに指定した比率の未使用領域が存在すれば，そのページにレコードを格納するため，指定した比率で未使用領域が作成されないことがあります。

(5)　データロード後のレコード格納に備えて空き領域を確保する場合の見積もり例

(a)　基本的な考え方

事前割り当てページに格納するファミリについては，除外して考えます。事前割り当てページに格納するファミリの容量の見積もりについては，「3.5.5(3)　事前割り当てページ数または事前割り当てサブページ数の算出【4V FMB】」を参照してください。

作成するSDBデータベースの特性を考慮して，平均的なファミリを想定します。データロード時に作成した空き領域に，データロード後に格納するレコードがすべて格納できる状態とします。この状態を次の図に示します。

図3‒10　見積もりで想定するレコード格納状態

(b)　見積もりの進め方

作成するSDBデータベースの特性から平均的なファミリを想定して，次の表に示す項目を見積もってください。レコード長の見積もりについては，「3.5.5(1)　レコード長の算出」を参照してください。

見積もり時の留意事項を次に示します。

4V AFMのSDBデータベースで，SDBデータベース定義のOCCURRENCE NUMBER句の指定値が1以上のレコードについては，ページ切り替え指定が'O'指定の仮想ルートレコードとして見積もってください。

SD FMBのSDBデータベースの場合は，ページ切り替えの指定はなしとして見積もってください。

表3‒9　見積もりに必要な項目

項番

項目

レコードの格納契機

ページ切り替え指定

空き領域の種別

見積もり式で使用する変数

備考

1

レコードを格納するRDエリアのページ長

−

−

−

b

−

2

レコード長

−

−

−

L

レコード型ごとに見積もります。

3

レコード件数

データロード時に格納するレコード件数

'O'指定

−

t1

平均的なファミリまたは事前割り当てページに格納するファミリについて，レコード型ごとに見積もります。

4

'C'指定

−

c1

5

指定なし

−

n1

6

データロード後に格納するレコード件数

'O'指定

−

t2

7

'C'指定

−

c2

8

指定なし

ページ内の未使用領域を使用するレコード件数

u2

9

セグメント内の空きページを使用するレコード件数

s2

（凡例）

−：該当しません。

「表3-9　見積もりに必要な項目」の「空き領域の種別」で，データロード後に格納するレコードをページ内の未使用領域，およびセグメント内の空きページのどちらに見積もるかは，次の表に従って決定してください。

表3‒10　見積もり対象とする空き領域種別の決定方針

SDBデータベース定義のSET句下の指定

格納するレコードの特性

見積もり対象とする空き領域の種別

ORDER句にSORTED DUPLICATES PROHIBITED指定

格納するレコードが持つユーザキーの中間のキーを持つレコード

ページ内の未使用領域

最大のユーザキーを持つレコード

セグメント内の空きページ

ORDER句にLAST指定

−

セグメント内の空きページ

（凡例）

−：該当しません。

「表3-9　見積もりに必要な項目」に従った見積もり項目のレコード長，およびレコード件数について，見積もり例を次の表に示します。

表3‒11　レコード長，およびレコード件数の見積もり例

レコード型

レコード長（バイト）

データロード時に格納するレコード

データロード後に格納するレコード

'O'指定（件数）

'C'指定（件数）

指定なし（件数）

'O'指定（件数）

'C'指定（件数）

指定なし

ページ内の未使用領域を使用するレコード（件数）

セグメント内の空きページを使用するレコード（件数）

REC1（親）

40

0

0

1

0

0

0

0

REC2（子）

100

5

5

40

1

1

8

8

REC3（孫）

200

0

0

150

0

0

40

20

「表3-11　レコード長，およびレコード件数の見積もり例」に従った格納状態のイメージを次の図に示します。

図3‒11　見積もり例に従った格納状態のイメージ

(c)　注意事項

セグメント内の空きページの比率には，50%を超える値を指定できないため，想定したファミリの格納イメージで，セグメント内の空きページの比率が50%を超える場合には，データロード後に格納するレコードの一部をページ内の未使用領域を使用するものとして見積もるようにしてください。ただし，ページ切り替え（'O'指定，'C'指定）をするレコードは格納時にページ内の未使用領域を使用しないため，ページ内の未使用領域を使用するものとして見積もることはできません。

(d)　見積もり式の前提

見積もり式では，「表3-9　見積もりに必要な項目」の「見積もり式で使用する変数」で示した変数を使用します。また，「表3-9　見積もりに必要な項目」の項番2〜9については，レコード型ごとに見積もるため，ファミリ単位の件数の場合には，すべてのレコード型について総和が必要です。すべてのレコード型についての総和は，総和記号を使って次のように表記します。

(e)　ページ内の未使用領域の比率の見積もり

ページ内の未使用領域の比率の見積もりで，すべてのレコードに対してページ切り替えを指定する場合には，見積もり値を0としてください。

ページ内の未使用領域の比率を見積もる場合，「表3-9　見積もりに必要な項目」の項番1，2，5，8を使用します。項番5，8については，次の式でレコード型が使用する総領域長を計算してください。

また，項番5，8を使用して，次のように平均領域長を計算してください。

上記で計算した結果を基に，次のR，A，Bを計算してください。

R：ページ内の領域に対するデータロード時の未使用領域の比率

A：データロード時とデータロード後の総レコード長に対する，データロード時の総レコード長の比率

B：ページ内の領域に対するデータロード時の使用可能領域の比率

ページ内の未使用領域の比率を次の式で見積もってください。

(f)　ページ内の未使用領域の比率の見積もり例

「表3-11　レコード長，およびレコード件数の見積もり例」に示す値を基に，ページ内の未使用領域の比率を見積もった例を次に示します。この例では，レコードを格納するRDエリアのページ長を4,096バイトとして計算します。

(g)　セグメント内の空きページの比率の見積もり

セグメント内の空きページの比率を見積もる場合，「表3-9　見積もりに必要な項目」の項番1〜7および9を使用して計算してください。ページ内の未使用領域の比率をCとすると，セグメント内の空きページの比率は，ファミリが使用するページ数と，データロード後に格納するレコードが使用するページ数の比率として見積もります。

項番5，9について，次に示す式を使用してレコード型が使用する総領域長を計算します。

また，それぞれについて，次のように平均領域長を計算してください。

次の計算式に従って，平均的なファミリが使用するページ数を計算してください。

次の計算式に従って，データロード後に格納するレコードが使用する空きページ数を計算してください。

以上を基に，セグメント内の空きページの比率を計算してください。

(h)　セグメント内の空きページの比率の見積もり例

「表3-11　レコード長，およびレコード件数の見積もり例」の表に示す値を基に見積もり計算の例を次に示します。レコードを格納するRDエリアのページ長を4,096バイト，ページ内の未使用領域の比率を24%として計算します。

(6)　ページに格納するレコード件数を制限する場合のページ内の未使用領域の比率の見積もり【4V FMB，4V AFM】

(a)　見積もりの前提

事前割り当てページに格納するファミリについては，ページ内の未使用領域を確保しないで詰めて格納していくため，対象外とします。

4V AFMのSDBデータベースでOCCURRENCE NUMBER句の指定が1以上の場合を前提にします。4V FMBのSDBデータベースの場合，または4V AFMのSDBデータベースでOCCURRENCE NUMBER句の指定が0の場合は，レコード件数の制限による同時実行性の向上に効果がないため，対象外とします。

SD FMBのSDBデータベースの場合，ページに格納するレコード件数を制限できないため，対象外とします。

(b)　見積もりの進め方

作成するデータベースの中で，格納件数を制限する対象のレコード型を，次の表に従って決定してください。

表3‒12　格納件数を制限する対象のレコード型の決定

項番

親子集合の定義数

格納件数の制限対象とするレコード型

備考

1

1

子レコードのレコード型

−

2

2以上

同時実行性が最も要求される子レコードのレコード型

SDBデータベースを操作するAPIによるレコード格納時，対象外のレコード型に対してページ内の未使用領域を作成したくない場合は，制限対象のレコード型のレコード格納時だけPCTFREE句の指定を有効にしてください。

なお，HiRDB/SDデータベース作成ユティリティ（pdsdblod）のrecfreeオペランドでは，レコード型ごとにページ内の未使用領域の比率を設定することはできません。

（凡例）

−：該当しません。

ページに格納するレコード件数を制限する場合のページ内の未使用領域の比率は次の計算式で見積もってください。レコード長の見積もりについては，「3.5.5(1)　レコード長の算出」を参照してください。

なお，見積もり式では，Nは255以下にする必要があります。また，計算結果が負となる場合は，ページにN件のレコードを格納できないため，レコード件数を見直してください。

(c)　留意事項

レコードを格納するRDエリアのページ内には，HiRDB/SDがシステムで使用する制御情報が格納されています。レコードの格納，または削除による制御情報長の変化や，レコードの格納状況によっては，見積もったレコード件数よりも少ないレコードしか格納できない場合があります。

レコード長の異なる複数のレコード型をページに格納する場合，レコードの格納状況によって，見積もったレコード件数より少ないレコードしか格納できなかったり，逆に多くのレコードが格納できたりすることがあります。

SDBデータベースを操作するAPI実行時，またはHiRDB/SDデータベース作成ユティリティ（pdsdblod）実行時では，見積もりの計算式が異なります。そのため，同じレコード件数に制限したい場合は，それぞれで見積もる必要があります。

見積もり結果が異なる場合は，SDBデータベース格納定義のPCTFREE句，およびHiRDB/SDデータベース作成ユティリティ（pdsdblod）のenvironment文のrecfreeオペランドにそれぞれの見積もり結果を指定してください。

(d)　見積もりの計算例

レコード長が120バイト，レコードを格納するRDエリアのページ長を4,096バイトとして，SDBデータベースを操作するAPI実行時にページに格納するレコード件数を20件としたい場合の見積もりの計算例を次に示します。

3.2.6　レコード格納時の空き領域の作成（サブページ分割をする場合）

HiRDB/SDデータベース作成ユティリティ（pdsdblod）でのレコード格納時に，サブページ内にレコードを格納しない領域（サブページ内の未使用領域）を作成したり，セグメント内に使用しない空きページ（セグメント内の空きページ）を作成したりできます。

また，SDBデータベースを操作するAPIによるレコード格納時に，PCTFREE有効化オプションを指定すると，SDBデータベース格納定義のPCTFREE句で指定したサブページ内の未使用領域の比率を有効にしてレコードを格納できます。PCTFREE有効化オプションは，4V FMBまたは4V AFMのSDBデータベースの場合に指定できます。

サブページ内の未使用領域の比率やセグメント内の空きページの比率は，次の個所で指定できます。

SDBデータベース格納定義のPCTFREE句

PCTFREE句については，次の個所を参照してください。

4V FMBのSDBデータベースの場合：「11.5.2(3)(j)　PCTFREE」

4V AFMのSDBデータベースの場合：「11.6.2(3)(j)　PCTFREE」

SD FMBのSDBデータベースの場合：「11.7.2(3)(j)　PCTFREE」

HiRDB/SDデータベース作成ユティリティ（pdsdblod）のenvironment文recfreeオペランド

environment文のrecfreeオペランドについては，「12.3.1　environment文」を参照してください。

PCTFREE句とrecfreeオペランドの使い分けについては，「(3)　PCTFREE句とrecfreeオペランドの使い分け」を参照してください。

空き領域の作成イメージを次の図に示します。

図3‒12　空き領域の作成イメージ

なお，この項の説明中の「データロード」については，HiRDB/SDデータベース作成ユティリティ（pdsdblod）によるフォーマットライト機能を使用したレコードの格納も含みます。

(1)　空き領域を作成する目的

空き領域を作成する目的を次に示します。

(a)　データロード後のレコード格納に備えて空き領域を確保する

データロードしたあとに，子レコードを格納する場合，データロード時に作成したサブページ内の未使用領域，セグメント内の空きページを使用することで，同一ルートレコード下のレコードの近傍に子レコードを格納できます。

サブページ内の未使用領域は，次の場合に使用されます。

SDBデータベース定義のSET句下のORDER句でSORTED DUPLICATES PROHIBITEDを指定し，格納済みのレコードが持つユーザキーの中間のキーを持つレコードを格納する場合

SDBデータベース定義のSET句下のORDER句でLASTを指定した場合や，ORDER句でSORTED DUPLICATES PROHIBITEDを指定して，最大のユーザキーを持つレコードを格納する場合で，基準サブページおよびそのファミリ内接続サブページに未使用領域があるとき

ファミリ内接続サブページについては，「2.7.1(2)　サブページ間の関連づけとファミリ内接続サブページ」を参照してください。

セグメント内の空きページは，次の場合に使用されます。

基準サブページおよびその基準サブページが属するページ内のファミリ内接続サブページに未使用領域がない場合

データロードしたあとに，格納するレコードにサブページ切り替え（'O'または'C'）を指定した場合

基準レコードがサブページ切り替えの'O'指定をされたレコードのため，基準サブページへの格納ができない場合

事前割り当てサブページ内にレコードを格納できる空き領域がないため，事前割り当てサブページへの格納ができない場合

データロードしたあとのレコード格納による空き領域の使用例（SDBデータベース定義のSET句下のORDER句でSORTED DUPLICATES PROHIBITEDを指定した場合）を次の図に示します。

図3‒13　データロードしたあとのレコード格納による空き領域の使用例（SDBデータベース定義のSET句下のORDER句でSORTED DUPLICATES PROHIBITEDを指定した場合）

データロードしたあとのレコード格納による空き領域の使用例（SDBデータベース定義のSET句下のORDER句でLASTを指定した場合）を次の図に示します。

図3‒14　データロードしたあとのレコード格納による空き領域の使用例（SDBデータベース定義のSET句下のORDER句でLASTを指定した場合）

(b)　サブページに格納するレコード件数を制限する【4V AFM】

HiRDB/SDでは，複数のトランザクション間の整合性を保つために，サブページ単位で排他制御をしています。そのため，1サブページ内に格納されるレコード件数が多いほど，排他の競合が発生しやすくなります。そこで，サブページ内の未使用領域の比率を指定して1サブページ内に格納するレコード件数を制限することで，排他の競合を抑えることができます。

サブページ内の未使用領域の比率の指定によって，サブページに格納するレコード件数を制限する例を次の図に示します。なお，サブページに格納するレコード件数を制限する場合は，SDBデータベースを操作するAPIによるレコード格納時に，PCTFREE有効化オプションを指定する必要があります。SDBデータベースを操作するAPIについては，マニュアル「TP1/Financial Service Platform プログラム作成の手引」を参照してください。

図3‒15　サブページに格納するレコード件数を制限する例

(2)　サブページ内の未使用領域の比率，セグメント内の空きページの比率の適用基準

サブページ内の未使用領域の比率，セグメント内の空きページの比率の適用基準を次に示します。

(a)　サブページ内の未使用領域の比率の適用基準

次のような場合は，サブページ内の未使用領域の比率の設定を検討してください。

SDBデータベース定義のSET句下のORDER句でSORTED DUPLICATES PROHIBITEDを指定している場合で，データロード後に格納するレコードに，格納済みのレコードが持つユーザキーの中間のキーを持つレコードがあるとき

サブページ内に格納するレコード件数を制限して，サブページによる排他の影響範囲を限定したいとき（4V AFMのSDBデータベースの場合）

上記の条件に該当しないときは，サブページ内の未使用領域の比率に0を指定してください。

(b)　セグメント内の空きページの比率の適用基準

次のような場合は，セグメント内の空きページの比率の設定を検討してください。

SDBデータベース定義のSET句下のORDER句でLASTを指定した場合，またはORDER句でSORTED DUPLICATES PROHIBITEDを指定しても，ユーザキーの昇順にレコードを格納することがわかっているとき

データロード後に格納する子レコードが，サブページ内の未使用領域だけでは格納しきれないとき

データロード時にページ切り替えを指定していて，サブページを占有したレコードがあるとき

データロード後に，ページ切り替え指定（'C'指定または'O'指定）で格納するレコードがあるとき

上記の条件に該当しないときは，セグメント内の空きページの比率に0を指定してください。

(3)　PCTFREE句とrecfreeオペランドの使い分け

HiRDB/SDデータベース作成ユティリティ（pdsdblod）のenvironment文でrecfreeオペランドを指定すると，SDBデータベース格納定義のPCTFREE句で指定したサブページ内の未使用領域の比率，およびセグメント内の空きページの比率は無視され，recfreeオペランドの指定値に従って空き領域が作成されます。

そのため，サブページ内の未使用領域の比率，およびセグメント内の空きページの比率の指定は次のように指定してください。

データロード時に，データロード後のレコード格納に備えて空き領域を確保する場合

recfreeオペランドで指定してください。

4V AFMのSDBデータベースで，サブページに格納するレコード件数を制限する場合（PCTFREE有効化オプションを指定して，SDBデータベースを操作するAPIによるレコード格納時にレコード件数を制限する場合）

SDBデータベース格納定義のPCTFREE句を指定してください。

4V AFMのSDBデータベースのデータロード時に，データロード後のレコード格納に備えて空き領域を確保し，かつSDBデータベースを操作するAPIによるレコード格納時にレコード件数を制限したい場合には，それぞれの目的に合わせてrecfreeオペランド，PCTFREE句の指定値を見積もってください。

(4)　サブページ内の未使用領域の比率，およびセグメント内の空きページの比率に関する留意事項

サブページ内の未使用領域の比率，およびセグメント内の空きページの比率に関する留意事項を次に示します。

(a)　未使用領域の比率および空きページの比率の指定に関する留意事項

セグメント内の空きページの比率には，50％を超える値を指定できません。レコード格納時にセグメント内の空きページを使い切った場合，HiRDB/SDは，ほかのセグメント内の空きページを割り当ててレコードを格納します。そのため，ファミリ単位の近傍配置ができないことがあります。

4V FMBまたはSD FMBのSDBデータベースでは，ルートレコードの格納サブページの排他によって，ルートレコード下のレコードへのアクセスをシリアライズするため，レコード件数の制限による同時実行性が向上する効果はありません。このため，レコード件数を制限する目的でのサブページ内の未使用領域の比率には0を指定してください。

フォーマットライトを行うSDBデータベースの場合，サブページ内の未使用領域の比率，およびセグメント内の空きページの比率に0を指定してください。ただし，サブページに格納するレコード件数を制限したい場合は，サブページ内の未使用領域の比率を指定してください。

4V AFMのSDBデータベースでOCCURRENCE NUMBER句の指定が0の場合，仮想ルートレコード下には最大1件の子レコードしか存在しません。そのため，サブページ内の未使用領域の比率には0を指定してください。

(b)　未使用領域および空きページの作成に関する留意事項

サブページ内の未使用領域の比率に関係なく，サブページには最低1件のレコードが格納されます。このため，指定した比率の未使用領域が作成されないことがあります。

HiRDB/SDデータベース作成ユティリティ（pdsdblod）で事前割り当てサブページにレコードを格納する場合，サブページ内の未使用領域の比率の指定は無視され，0%が指定されたものとして動作します。このため，指定した比率の未使用領域は作成されません。また，レコードは詰めて格納されます。

HiRDB/SDデータベース作成ユティリティ（pdsdblod）の実行時に，事前割り当てサブページが属するページを確保する際，セグメント内の空きページの比率の指定は無視され，0%が指定されたものとして動作します。このため，事前割り当てサブページが属するページを含むセグメント内の空きページの比率は，指定値より小さい値になることがあります。

SDBデータベースを操作するAPIで事前割り当てサブページにレコードを格納する際，PCTFREE有効化オプションの指定によって，サブページ内に未使用領域を作成することはできません。PCTFREE有効化オプションを適用すると，SDBデータベースを操作するAPIによるレコードの格納がエラーになります。

(c)　未使用領域へのレコード格納方法に関する留意事項

サブページ内の未使用領域へのレコード格納方法は，レコード格納契機によって異なります。次に示す契機ごとの差異を次の表に示します。

表3‒13　レコード格納契機によるレコード格納の差異

レコード格納契機

サブページ内の未使用領域

レコード格納前

レコード格納後

指定比率以上の未使用領域あり

指定比率以上の未使用領域なし

指定比率以上の未使用領域あり

指定比率以上の未使用領域なし

HiRDB/SDデータベース作成ユティリティ（pdsdblod）の実行時

○

×

−

−

SDBデータベースを操作するAPIによるレコードの格納時

−

−

○

×

DMLによるレコードの格納時

−

−

○※

○※

（凡例）

○：当該サブページにレコードが格納されます。

×：当該サブページにレコードは格納されません。

−：レコード格納の有無に関係しません。

注※

レコードを格納できるだけの未使用領域がある場合は，PCTFREEの指定に関係なくそのサブページにレコードが格納されます。

HiRDB/SDデータベース作成ユティリティ（pdsdblod）実行時には，レコード格納前のサブページに指定した比率の未使用領域が存在すれば，そのサブページにレコードを格納するため，指定した比率で未使用領域が作成されないことがあります。

(5)　データロード後のレコード格納に備えて空き領域を確保する場合の見積もり例

(a)　基本的な考え方

事前割り当てサブページに格納するファミリについては，除外して考えます。事前割り当てサブページに格納するファミリの容量の見積もりについては，「3.5.5(3)　事前割り当てページ数または事前割り当てサブページ数の算出【4V FMB】」を参照してください。

作成するSDBデータベースの特性を考慮して，平均的なファミリを想定します。データロード時に作成した空き領域に，データロード後に格納するレコードがすべて格納できる状態とします。この状態を次の図に示します。

図3‒16　見積もりで想定するレコード格納状態

(b)　見積もりの進め方

作成するSDBデータベースの特性から平均的なファミリを想定して，次の表に示す項目を見積もってください。レコード長の見積もりについては，「3.5.5(1)　レコード長の算出」を参照してください。

見積もり時の留意事項を次に示します。

4V AFMのSDBデータベースで，SDBデータベース定義のOCCURRENCE NUMBER句の指定値が1以上のレコードについては，ページ切り替え指定が'O'指定の仮想ルートレコードとして見積もってください。

SD FMBのSDBデータベースの場合は，ページ切り替えの指定はなしとして見積もってください。

表3‒14　見積もりに必要な項目

項番

項目

レコードの格納契機

ページ切り替え指定

空き領域の種別

見積もり式で使用する変数

備考

1

レコードを格納するデータページのサブページ分割数

−

−

−

spn

−

2

レコードを格納するデータページのサブページ長

−

−

−

spl※

−

3

レコード長

−

−

−

L

レコード型ごとに見積もります。

4

レコード件数

データロード時に格納するレコード件数

'O'指定

−

t1

平均的なファミリまたは事前割り当てサブページに格納するファミリについて，レコード型ごとに見積もります。

5

'C'指定

−

c1

6

指定なし

−

n1

7

データロード後に格納するレコード件数

'O'指定

−

t2

8

'C'指定

−

c2

9

指定なし

サブページ内の未使用領域を使用するレコード件数

u2

10

セグメント内の空きページを使用するレコード件数

s2

（凡例）

−：該当しません。

注※

サブページ分割数によってサブページ長が決まります。サブページ長については，「3.2.4(7)　サブページ長（サブページ分割数）の設計方針」を参照してください。

「表3-14　見積もりに必要な項目」の「空き領域の種別」で，データロード後に格納するレコードをサブページ内の未使用領域，およびセグメント内の空きページのどちらに見積もるかは，次の表に従って決定してください。

表3‒15　見積もり対象とする空き領域種別の決定方針

SDBデータベース定義のSET句下の指定

格納するレコードの特性

見積もり対象とする空き領域の種別

ORDER句にSORTED DUPLICATES PROHIBITED指定

格納するレコードが持つユーザキーの中間のキーを持つレコード

サブページ内の未使用領域

最大のユーザキーを持つレコード

セグメント内の空きページ

ORDER句にLAST指定

−

セグメント内の空きページ

（凡例）

−：該当しません。

「表3-14　見積もりに必要な項目」に従った見積もり項目のレコード長，およびレコード件数について，見積もり例を次の表に示します。

表3‒16　レコード長，およびレコード件数の見積もり例

レコード型

レコード長（バイト）

データロード時に格納するレコード

データロード後に格納するレコード

'O'指定（件数）

'C'指定（件数）

指定なし（件数）

'O'指定（件数）

'C'指定（件数）

指定なし

サブページ内の未使用領域を使用するレコード（件数）

セグメント内の空きページを使用するレコード（件数）

REC1（親）

40

0

0

1

0

0

0

0

REC2（子）

100

5

5

40

1

1

8

8

REC3（孫）

200

0

0

150

0

0

40

20

上記の表に従った格納状態のイメージを次の図に示します。

図3‒17　見積もり例に従った格納状態のイメージ

(c)　注意事項

セグメント内の空きページの比率には，50%を超える値を指定できないため，想定したファミリの格納イメージで，セグメント内の空きページの比率が50%を超える場合には，データロード後に格納するレコードの一部をサブページ内の未使用領域を使用するものとして見積もるようにしてください。ただし，サブページ切り替え（'O'指定，'C'指定）をするレコードは格納時にサブページ内の未使用領域を使用しないため，サブページ内の未使用領域を使用するものとして見積もることはできません。

(d)　見積もり式の前提

見積もり式では，「表3-14　見積もりに必要な項目」の「見積もり式で使用する変数」で示した変数を使用します。また，「表3-14　見積もりに必要な項目」の項番3〜10については，レコード型ごとに見積もるため，ファミリ単位の件数の場合には，すべてのレコード型について総和が必要です。すべてのレコード型についての総和は，総和記号を使って次のように表記します。

(e)　サブページ内の未使用領域の比率の見積もり

サブページ内の未使用領域の比率の見積もりで，すべてのレコードに対してページ切り替えを指定する場合には，見積もり値を0としてください。

サブページ内の未使用領域の比率を見積もる場合，「表3-14　見積もりに必要な項目」の項番1，2，3，6，9を使用します。項番5，8については，次の式でレコード型が使用する総領域長を計算してください。

また，項番6，9を使用して，次のように平均領域長を計算してください。

上記で計算した結果を基に，次のRおよびAを計算してください。

R：サブページ内の領域に対するデータロード時の未使用領域の比率

A：データロード時とデータロード後の総レコード長に対する，データロード時の総レコード長の比率

サブページ内の未使用領域の比率を次の式で見積もってください。

(f)　サブページ内の未使用領域の比率の見積もり例

「表3-16　レコード長，およびレコード件数の見積もり例」に示す値を基に，サブページ内の未使用領域の比率を見積もった例を次に示します。この例では，レコードを格納するデータページのサブページ分割数を2として計算します。

(g)　セグメント内の空きページの比率の見積もり

セグメント内の空きページの比率を見積もる場合，「表3-14　見積もりに必要な項目」の項番1〜8および10を使用して計算してください。サブページ内の未使用領域の比率をCとすると，セグメント内の空きページの比率は，ファミリが使用するページ数と，データロード後に格納するレコードが使用するページ数の比率として見積もります。

項番6，9について，次に示す式を使用してレコード型が使用する総領域長を計算します。

また，それぞれについて，次のように平均領域長を計算してください。

次の計算式に従って，平均的なファミリが使用するサブページ数を計算してください。

次の計算式に従って，データロード時に格納するレコードが使用するサブページ数を計算してください。

以上を基に，セグメント内の空きページの比率を計算してください。

(h)　セグメント内の空きページの比率の見積もり例

「表3-16　レコード長，およびレコード件数の見積もり例」の表に示す値を基に見積もり計算の例を次に示します。レコードを格納するデータページのサブページ分割数を2，サブページ内の未使用領域の比率を29%として計算します。

(6)　サブページに格納するレコード件数を制限する場合のサブページ内の未使用領域の比率の見積もり【4V FMB，4V AFM】

(a)　見積もりの前提

事前割り当てサブページに格納するファミリについては，サブページ内の未使用領域を確保しないで詰めて格納していくため，対象外とします。

4V AFMのSDBデータベースでOCCURRENCE NUMBER句の指定が1以上の場合を前提にします。4V FMBのSDBデータベースの場合，または4V AFMのSDBデータベースでOCCURRENCE NUMBER句の指定が0の場合は，レコード件数の制限による同時実行性の向上に効果がないため，対象外とします。

SD FMBのSDBデータベースの場合，サブページに格納するレコード件数を制限できないため，対象外とします。

(b)　見積もりの進め方

作成するデータベースの中で，格納件数を制限する対象のレコード型を，次の表に従って決定してください。

表3‒17　格納件数を制限する対象のレコード型の決定

項番

親子集合の定義数

格納件数の制限対象とするレコード型

備考

1

1

子レコードのレコード型

−

2

2以上

同時実行性が最も要求される子レコードのレコード型

SDBデータベースを操作するAPIによるレコード格納時，対象外のレコード型に対してサブページ内の未使用領域を作成したくない場合は，制限対象のレコード型のレコード格納時だけPCTFREE句の指定を有効にしてください。

なお，HiRDB/SDデータベース作成ユティリティ（pdsdblod）のrecfreeオペランドでは，レコード型ごとにサブページ内の未使用領域の比率を設定することはできません。

（凡例）

−：該当しません。

サブページに格納するレコード件数を制限する場合のサブページ内の未使用領域の比率は次の計算式で見積もってください。レコード長の見積もりについては，「3.5.5(1)　レコード長の算出」を参照してください。

なお，見積もり式で計算結果が負となる場合は，サブページにN件のレコードを格納できないため，レコード件数を見直してください。

(c)　留意事項

レコードを格納するRDエリアのサブページ内には，HiRDB/SDがシステムで使用する制御情報が格納されています。レコードの格納，または削除による制御情報長の変化や，レコードの格納状況によっては，見積もったレコード件数よりも少ないレコードしか格納できない場合があります。

レコード長の異なる複数のレコード型をサブページに格納する場合，レコードの格納状況によって，見積もったレコード件数より少ないレコードしか格納できなかったり，逆に多くのレコードが格納できたりすることがあります。

SDBデータベースを操作するAPI実行時，またはHiRDB/SDデータベース作成ユティリティ（pdsdblod）実行時では，見積もりの計算式が異なります。そのため，同じレコード件数に制限したい場合は，それぞれで見積もる必要があります。

見積もり結果が異なる場合は，SDBデータベース格納定義のPCTFREE句，およびHiRDB/SDデータベース作成ユティリティ（pdsdblod）のenvironment文のrecfreeオペランドにそれぞれの見積もり結果を指定してください。

(d)　見積もりの計算例

レコード長が120バイト，レコードを格納するデータページのサブページ分割数を2として，SDBデータベースを操作するAPI実行時にサブページに格納するレコード件数を10件としたい場合の見積もりの計算例を次に示します。

3.3　グローバルバッファの設計

グローバルバッファは，RDエリアに格納されているディスク上のデータを入出力するためのメモリ領域（バッファ）のことで，共用メモリ上に確保されます。

システム共通定義のpdbufferオペランドで，グローバルバッファをどのRDエリアに割り当てるかを定義します。グローバルバッファは，システムで1,600個まで指定できます。詳細については，マニュアル「HiRDB Version 9 システム定義」の「グローバルバッファに関するオペランド」の「pdbuffer」を参照してください。

3.3.1　グローバルバッファを割り当てる単位

すべてのRDエリアにデータ用グローバルバッファを割り当てる必要があります。1つのグローバルバッファには，1つ以上のRDエリアを割り当ててください。

システム用RDエリアにもグローバルバッファを割り当ててください。

グローバルバッファの設計方針（グローバルバッファをどのようにRDエリアに割り当てるか）については，マニュアル「HiRDB Version 9 システム導入・設計ガイド」を参照してください。

3.3.2　グローバルバッファの割り当て方法

(1)　HiRDBの開始時にグローバルバッファを割り当てる方法

システム共通定義のpdbufferオペランドでグローバルバッファを割り当てます。pdbufferオペランドでのグローバルバッファの割り当て例を次に示します。

（例）

pdbuffer -a gbuf01 -r RDAREA01,RDAREA02 -n 1000

［説明］

RDエリア（RDAREA01，RDAREA02）にデータ用グローバルバッファを割り当てます。

pdbufferオペランドについては，マニュアル「HiRDB Version 9 システム定義」を参照してください。

(2)　RDエリアの追加時にグローバルバッファを一時的に割り当てる方法

pdmodコマンドのglobalbufferオペランドで，既存のグローバルバッファを一時的に割り当てます。globalbufferオペランドでグローバルバッファを一時的に割り当てる例を次に示します。

（例）

create rdarea RDAREA03
      globalbuffer gbuf01
      for user used by PUBLIC
      server name bes1
      data model structured
      page 8192 characters
      storage control segment 100 pages
      file name "/dbarea/area1/rsarea03"
          initial 1000 segments;

［説明］

追加するRDエリア（RDAREA03）に既存のデータ用グローバルバッファ（gbuf01）を割り当てます。

globalbufferオペランドについては，マニュアル「HiRDB Version 9 コマンドリファレンス」の「データベース構成変更ユティリティ（pdmod）」の「制御文（create rdarea文）」を参照してください。

3.3.3　グローバルバッファを割り当てる際の考慮点

グローバルバッファを割り当てる際に次の点を考慮してください。

ユーザ用RDエリアにグローバルバッファを割り当てる場合，pdbufferオペランドの-rオプションにRDエリア名を必ず指定してください。

システム用RDエリアにグローバルバッファを割り当てる場合，pdbufferオペランドの-rオプションにRDエリア名を必ず指定してください。

次に示すRDエリアを同じグローバルバッファに割り当てることはできません。

SDBデータベースのレコード型を格納するRDエリア

SDBデータベースのインデクスを格納するRDエリア

リレーショナルDBを格納するRDエリア

それぞれ別のグローバルバッファに割り当ててください。

なお，リレーショナルDBを格納するRDエリアとは，次のRDエリアのことです。

システム用RDエリア

追い付き反映キー対応表を格納するRDエリア

追い付き反映キー対応表のインデクスを格納するRDエリア

追い付き状態管理表を格納するRDエリア

監査証跡表を格納するRDエリア

参考

create rdarea文のdata modelオペランドにstructuredを指定したRDエリアは，SDBデータベースを格納するRDエリアとなります。

create rdarea文のdata modelオペランドにrelationalを指定（またはdata modelオペランドを省略）したRDエリアは，リレーショナルDBを格納するRDエリアとなります。

SDBデータベースのインデクスを格納するRDエリアに，インデクス用グローバルバッファを割り当てることはできません（pdbufferオペランドの-iオプションは指定できません）。

異なるページ長のRDエリアが複数ある場合は，同じかまたは近いページ長のRDエリアをまとめて1つのグローバルバッファに割り当ててください。詳細については，マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「異なるページ長のRDエリアが複数ある場合」を参照してください。

1つのグローバルバッファに複数のRDエリアを割り当てる場合は，それぞれのRDエリアを構成するHiRDBファイルが，同じHiRDBファイルシステム領域に存在するRDエリアをまとめるようにしてください。詳細については，マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「1つのグローバルバッファに複数のRDエリアを割り当てる場合」を参照してください。

グローバルバッファのバッファ面数の設定をする場合は，共用メモリの上限，およびバッファヒット率を考慮してください。詳細については，マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「グローバルバッファのバッファ面数の設定」を参照してください。

SDBデータベースを格納するRDエリアに，同時実行最大プリフェッチ数の指定はできません（pdbufferオペランドの-mオプションは指定できません）。

SDBデータベースのレコード型を格納するRDエリアの場合，次の計算式を基にバッファ面数を計算してください。

同時実行ユーザ数×1トランザクション内の平均同時アクセスレコード型数×4×n

nは，どのくらいの余裕をグローバルバッファに持たせるか（グローバルバッファのヒット率をどこまで期待するか）を検討して指定してください。グローバルバッファの面数のチューニングについては，マニュアル「HiRDB Version 9 システム運用ガイド」を参照してください。

pdbufferオペランドの各オプションについては，マニュアル「HiRDB Version 9 システム定義」を参照してください。

pdmodコマンドで割り当てたグローバルバッファは一時的な割り当てとなります。次回のHiRDBの正常開始時，または計画停止後の再開始時には無効となります。そのため，次回のHiRDBの正常開始時，または計画停止後の再開始時には，システム共通定義のpdbufferオペランドでグローバルバッファの割り当てを変更する必要があります。

3.3.4　グローバルバッファのLRU管理方式

HiRDBは，グローバルバッファを一括したLRUで管理します。グローバルバッファの不足時には，グローバルバッファ内のアクセスしたバッファで，最も古いバッファがメモリから追い出されます。

また，UAPごとにLRU管理を抑止することもできます。詳細については，マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「UAPごとのLRU管理抑止設定」を参照してください。

3.3.5　グローバルバッファの先読み入力

グローバルバッファの先読み入力とは，指定したルートレコード型または仮想ルートレコード型のレコードおよびその子レコード群のデータや，インデクスのデータをあらかじめグローバルバッファに読み込んでおく機能です。

あらかじめSDBデータベースのデータ（レコードやインデクス）をグローバルバッファに読み込んでおくことで，ディスクからデータを読み込まないで（物理的な入出力を発生させないで），レコードにアクセスできます。入出力が多いと思われるレコードやインデクスがある場合は，グローバルバッファの先読み入力の適用を検討してください。

グローバルバッファの先読み入力には，グローバルバッファ常駐化ユティリティ（pdpgbfon）を使用します。詳細については，マニュアル「HiRDB Version 9 コマンドリファレンス」の「グローバルバッファ常駐化ユティリティ（pdpgbfon）」を参照してください。

3.4　メモリ所要量の見積もり

HiRDBを使用するために必要なメモリ所要量の見積もりについて説明します。

HiRDBの各ユニットが使用するために必要なメモリ所要量は，この節に示すすべての項目を，マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「HiRDB/パラレルサーバのメモリ所要量の見積もり」の「メモリ所要量の計算式」に加算した値です。

3.4.1　HiRDBの各ユニットのメモリ配置

HiRDBの各ユニットのメモリ配置については，マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「メモリ配置」を参照してください。

3.4.2　共用メモリの見積もり

HiRDB/SD定義ユティリティ（pdsdbdef）で生成されたSDBディレクトリ情報は，ユニットコントローラ用共用メモリ上に展開されます。このため，ユニットコントローラ用共用メモリの容量に，HiRDBが使用するメモリ所要量を加算する必要があります。

マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「メモリ所要量の計算式」を参照して，「ユニットコントローラ用共用メモリ中，各サーバが使用する領域」に，次の表に示す計算式から算出した値を加算してください。

表3‒18　ユニットコントローラ用共用メモリのメモリ所要量

項目

メモリ所要量（キロバイト）

変数の説明

ユニットコントローラ用共用メモリ中，HiRDBが使用する領域

MGR，FES，またはBESがあるユニット

↑(unit＋shm×advr)÷4↑×4

unit

HiRDBが使用するユニットコントローラ用共用メモリ

詳細については，「3.4.2(1)　ユニットコントローラ用共用メモリの見積もり」を参照してください。

shm

システム共通定義pd_structured_shmpool_dicsizeオペランドの指定値

詳細については，「3.4.2(2)　システム共通定義pd_structured_shmpool_dicsizeオペランドに指定する値」を参照してください。

advr

システム共通定義のpd_structured_advance_residentオペランドにuseを指定した場合は2を，nouseを指定するかまたはオペランドを省略した場合は1を代入してください。

上記以外のユニット

0

−

−

（凡例）

−：該当しません。

(1)　ユニットコントローラ用共用メモリの見積もり

次の計算式から算出してください。

・ユニット内にFESまたはBESがない場合
　1.5
・ユニット内にFESまたはBESのどちらかがある場合
　1.5＋｛2.1＋｛0.6×（pd_max_usersオペランドの値＋3）｝｝×S
　　　　　　　　　　　　　　　　　　　　　　　（単位：キロバイト）

変数の説明

S：ユニット内のFESおよびBESの合計数

(2)　システム共通定義pd_structured_shmpool_dicsizeオペランドに指定する値

pd_structured_shmpool_dicsizeオペランドの指定値には，SDBディレクトリ情報長＋SDBデータベース名管理情報長よりも大きな値を指定してください。

ただし，SDBデータベース情報長の値とSDBデータベース名管理情報長の値の合計値が2,000,000キロバイトを超える場合は，メモリにSDBディレクトリ情報を常駐できないため，データベース構成を見直して2,000,000キロバイト以内に収まるようにしてください。

SDBディレクトリ情報長，SDBデータベース名管理情報，それぞれの計算式を次に示します。

(a)　SDBディレクトリ情報長の計算式

SDBディレクトリ情報長は，次の計算式から算出してください。

SDBディレクトリ情報長は，HiRDB/SD定義ユティリティ（pdsdbdef）の実行時に出力されるKFPB61231-Iのメッセージに表示されるSDBディレクトリ情報の合計長から求めることもできます。

変数の説明

db：SDBデータベース定義文数

dbs：SDBデータベース情報長（単位：キロバイト）

次の計算式から算出してください。

rec：SDBデータベース定義RECORD句の指定数

mem：SDBデータベース定義SET句下のMEMBER句の指定数

set：SDBデータベース定義SET句の指定数

setkey：SDBデータベース定義SET句下のKEY句に指定した構成要素数

cmp：SDBデータベース定義RECORD句で指定した構成要素数

集団項目を含みます。また，SDBデータベース定義でOCCURS句を指定する場合，システム内で生成される構成要素を含みます。

cmptyp：SDBデータベース定義RECORD句でTYPE句を指定した構成要素数

SDBデータベース定義でOCCURS句を指定する場合，システム内で生成される構成要素を含みます。

seqidx：対応するSDBデータベース格納定義SEQUENTIAL句の指定数

secidx：対応するSDBデータベース格納定義STORAGE RECORD句下のSECONDARY INDEX句の指定数

seqkey：対応するSDBデータベース格納定義SEQUENTIAL句に指定した構成要素の数

seckey：対応するSDBデータベース格納定義STORAGE RECORD句下のSECONDARY INDEX句に指定した構成要素の数

allara：対応するSDBデータベース格納定義に指定したRDエリア数

格納レコード用RDエリア数，シーケンシャルインデクス用RDエリア数，および二次インデクス用RDエリア数の和で，同一RDエリア名はカウントしません。

recara：対応するSDBデータベース格納定義のSTORAGE RECORD句下のWITHIN句に指定した格納レコード用RDエリアの延べ数（格納レコード用RDエリア数を格納レコード型ごとに重複排除してカウントした数の総数）

idxara：対応するSDBデータベース格納定義STORAGE RECORD句下に指定した次のRDエリア数の和（同一RDエリア名はカウントしません）

・SEQUENTIAL句下のWITHIN句に指定したシーケンシャルインデクス用RDエリア数

・SECONDARY INDEX句下のWITHIN句に指定した二次インデクス用RDエリア数

idxarai：対応するSDBデータベース格納定義STORAGE RECORD句下に指定した次のRDエリア数の延べ数（インデクス格納用RDエリア数をインデクスごとに重複排除してカウントした数の総数）

・SEQUENTIAL句下のWITHIN句に指定したシーケンシャルインデクス用RDエリア数

・SECONDARY INDEX句下のWITHIN句に指定した二次インデクス用RDエリア数

idxara8：対応するSDBデータベース格納定義のSTORAGE RECORD句下に指定した次の値の総数

・SEQUENTIAL句下のWITHIN句に指定したシーケンシャルインデクス用RDエリア数を1インデクスごとに重複排除して2の倍数に切り上げた値

・SECONDARY INDEX句下のWITHIN句に指定した二次インデクス用RDエリア数を1インデクスごとに重複排除して2の倍数に切り上げた値

divrec：対応するSDBデータベース格納定義STORAGE RECORD句下のWITHIN句で格納条件または境界値を指定したレコード型数

divkey：対応するSDBデータベース格納定義STORAGE RECORD句下のWITHIN句で指定したRDエリア分割キー値数（ただし，境界値分割の場合は，RDエリア分割キー値数＋1とします）

divcmp：対応するSDBデータベース格納定義STORAGE RECORD句下のWITHIN句の格納条件またはDEPENDING句に指定した構成要素数（同一構成要素名はカウントしません）

divkel：対応するSDBデータベース格納定義STORAGE RECORD句下のWITHIN句で指定したRDエリア分割キー値のキー長

para：1

bes：対応するSDBデータベース格納定義で指定したRDエリアが配置されるBES数（同一RDエリア名はカウントしません）

keydef：対応するSDBデータベース格納定義SDBOPTION句下のKEYDEF句の指定数

keydat：対応するSDBデータベース格納定義SDBOPTION句下のDATA句の指定数

keydatl：対応するSDBデータベース格納定義SDBOPTION句下のDATA句に指定したキー値長

recpck：SDBデータベース定義RECORD句で指定したレコード型のうち，PACKED属性を指定した構成要素を含むレコード型の指定数

cmppck：SDBデータベース定義RECORD句で指定した構成要素のうち，PACKED属性を指定した構成要素の指定数

SDBデータベース定義でOCCURS句を指定する場合，システム内で生成される構成要素を含みます。

occurs：SDBデータベース定義のRECORD句下のOCCURS句の指定数

sub：SDBデータベースビュー情報長

次の計算式から算出してください。

（376＋rec×312＋idxrec×16＋ownrec×16＋own×16＋mem×24
＋set×112＋setsrt×16＋setkey×8＋（cmp＋2）×56＋（anykey＋2）×8
＋seqidx×40＋secidx×24＋（seqkey＋2）×24＋seckey×16＋occurs×16）÷1,024

idxrec：SDBデータベース格納定義SEQUENTIAL句またはSECONDARY INDEX句を指定したSTORAGE RECORD句数

ownrec：SDBデータベース定義SET句下のOWNER句に指定したレコード型数（同一レコード型名はカウントしません）

own：SDBデータベース定義SET句下のOWNER句の指定数

anykey：次のどれかに該当する構成要素の延べ数（1つの構成要素が複数の条件に該当しても1とカウントします）

・SDBデータベース定義SET句のKEY句に指定した構成要素

・SDBデータベース格納定義SEQUENTIAL句またはSECONDARY INDEX句に指定した構成要素

setsrt：SDBデータベース定義SET句で指定した親子集合のうち，ORDER句にSORTED DUPLICATES PROHIBITEDを指定した親子集合数

(b)　SDBデータベース名管理情報長の計算式

SDBデータベース名管理情報長は，次の計算式から算出してください。

0.2×db＋（40＋（112×db））÷1,024　（単位：キロバイト）

変数の説明

db：SDBデータベース定義数

(3)　スケジューラプロセス，およびプロセスサーバが使用するメモリサイズに関する注意事項

HiRDBの開始から終了までの間にユニットコントローラが使用する共用メモリは，各HiRDBのプロセスの項目すべてを加算します。

スケジューラプロセス，およびプロセスサーバが使用するメモリサイズを求める計算式は次のようになります。

詳細については，マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「ユニットコントローラが使用する共用メモリの計算式」を参照してください。

スケジューラプロセスが使用するメモリサイズ（単位：バイト）

・pd_utl_exec_modeの値が0の場合
　｛↑（432＋304×n）÷1,024↑＋494＋x｝×1,024
・pd_utl_exec_modeの値が1の場合
　｛↑（432＋304×n）÷1,024↑＋↑（s×2,000＋136）÷1,024↑＋y｝×1,024

変数の説明

x：ユニット内にMGRがある場合：37

ユニット内にFESがある場合：57＋1×（s＋3）＋14

ユニット内にDICがある場合：102＋5×（t＋3）＋14

ユニット内にBESがある場合：｛192＋9×（u＋3）＋14｝×BES数

y：ユニット内にMGRがある場合：0

ユニット内にFESがある場合：1×（s＋3）＋14

ユニット内にDICがある場合：5×（t＋3）＋14

ユニット内にBESがある場合：｛9×（u＋3）＋14｝×BES数

n：ユニット内のサーバ数＋ユニット内ユティリティサーバ数＋1

ユニット内ユティリティサーバ数：26＋α

α：ユニット内にMGRがある場合：3

　　ユニット内にFESがある場合：3

　　ユニット内にDICがある場合：7

　　ユニット内にBESがある場合：BES数×15

s：pd_max_usersの値＋pd_max_reflect_process_countの値

t：pd_max_dic_processの値＋pd_max_reflect_process_countの値

u：pd_max_bes_processの値＋pd_max_reflect_process_countの値

プロセスサーバが使用するメモリサイズ

208＋528×MAX（a，256）＋80＋256
＋（pd_max_server_processの値＋50）×（256＋160）
＋16＋8×34＋16＋16＋64＋64×（pd_module_trace_maxの値＋1）

変数の説明

a：↑（50＋b＋c＋d＋（e×ユニット内のBES数））÷16↑×16

b：ユニット内にMGRがある場合は59，ない場合はf

c：ユニット内にDSがある場合は17，ない場合は0

d：ユニット内にFESがある場合は11，ない場合は0

e：ユニット内にBESがある場合は26，ない場合は0

f：pd_mlg_msg_log_unitオペランドにmanagerを指定しているときは1，localを指定しているときは2

3.4.3　プロセス固有メモリの見積もり

マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「メモリ所要量の計算式」を参照して，「HiRDB/パラレルサーバの各ユニットが使用するメモリ所要量」のうち，「各サーバプロセスが使用するプロセス固有領域」に，次の表に示す計算式から算出した値を加算してください。

表3‒19　各サーバプロセスが使用するプロセス固有領域のメモリ所要量

サーバプロセス

メモリ所要量

（単位：キロバイト）

変数の説明

フロントエンドサーバ

psdc

＋bpsts

＋fdml

＋con

psdc

1

bpsts

0.1

fdml

「3.4.3(1)　SDBデータベースを操作するAPIまたはDMLの実行時に，フロントエンドサーバで確保するメモリ」を参照して，トランザクションごとのメモリ所要量を算出してください。

算出した結果から，最大値を代入してください。

con

「3.4.3(3)　HiRDBサーバへの接続（CONNECT）時に確保するメモリ【SD FMB】」を参照して，メモリ所要量を算出してください。

算出した結果から，最大値を代入してください。

バックエンドサーバ

psdc

＋psda

＋bpsts

＋bdml

＋↑（4×MAX（mxra÷2，1,024）＋8×mxra）÷1,024↑

psda

101

bdml

「3.4.3(2)　SDBデータベースを操作するAPIまたはDMLの実行時に，バックエンドサーバで確保するメモリ」を参照して，トランザクションごとのメモリ所要量を算出してください。

算出した結果から，最大値を代入してください。

mxra

pd_max_rdarea_noの値を代入してください。

上記以外の変数

フロントエンドサーバの変数の説明を参照してください。

ディクショナリサーバ

0

−

−

（凡例）

−：該当しません。

(1)　SDBデータベースを操作するAPIまたはDMLの実行時に，フロントエンドサーバで確保するメモリ

SDBデータベースを操作するAPIまたはDMLの実行時に，フロントエンドサーバで確保するメモリを次の計算式で求めます。

SDI＋308※＋0.3×個別開始要求回数　（単位：キロバイト）

注※

トラブルシュート機能（UAP統計レポートにアクセスパス情報の出力指定）適用時に加算します。

(a)　変数SDIの求め方

■4V FMBまたは4V AFMのSDBデータベースの場合

変数SDIは次の計算式で求めます。

変数の説明

lkey：操作対象のルートレコード型に定義されたシーケンシャルインデクスのキー長（バイト）

a：個別開始要求回数

maxrs(i)：個別開始対象SDBデータベースの最大レコード長（バイト）

ただし，個別開始の複数レコードの検索専用オプションで'D'または'S'を指定した場合は0

sdidout(i)：個別開始の複数レコードの検索専用オプションで'D'または'S'を指定した場合は，複数レコードの検索時に指定したデータ格納エリア長（バイト）

'D'または'S'を指定していない場合は0

maxukey(i)：個別開始対象SDBデータベースのSDBデータベース定義RECORD句でTYPE U，Kを指定した構成要素の最大構成要素長（バイト）

TYPE U，Kを指定した構成要素がない場合は0

sdimlutr：4V FMBのSDBデータベースの場合は，1回のAPIでまとめて操作要求するレコード型数（ただし，個別開始の複数レコードの検索専用オプションで'D'または'S'を指定した場合は1）

4V AFMのSDBデータベースの場合は1

fvrcpc：4V FMBのSDBデータベースの場合は0，4V AFMのSDBデータベースの場合は1回の容量情報取得要求で要求するキー数の最大値

bes：個別開始対象のSDBデータベースのSDBデータベース格納定義で指定したRDエリアが配置されるBES数（重複を排除して計算する）

divkey：個別開始対象SDBデータベースのSDBデータベース格納定義STORAGE RECORD句下のWITHIN句で指定したRDエリア分割キー値数（ただし，境界値分割の場合は，RDエリア分割キー値数＋1）

aududmax：各SDBデータベースに定義されているレコード型に含まれるユーザデータの長さの最大値（バイト）

audrmax：各SDBデータべースに定義されているレコード型数の最大値

audrsmax：各SDBデータベースのレコード長の総和の最大値（バイト）

■SD FMBのSDBデータベースの場合

変数SDIは次の計算式で求めます。

変数の説明

lkey：操作対象のルートレコード型に定義されたシーケンシャルインデクスのキー長（バイト）

a：操作対象のSDBデータベース数

maxrs(i)：操作対象のSDBデータベースの最大レコード長（バイト）

bes：操作対象のSDBデータベースのSDBデータベース格納定義で指定したRDエリアが配置されるBES数（重複を排除して計算する）

divkey：操作対象のSDBデータベースのSDBデータベース格納定義のSTORAGE RECORD句下のWITHIN句で指定したRDエリア分割キー値数（ただし，境界値分割の場合は，RDエリア分割キー値数＋1）

aududmax：各SDBデータベースに定義されているレコード型に含まれるユーザデータの長さの最大値（バイト）

audrmax：各SDBデータべースに定義されているレコード型数の最大値

audrsmax：各SDBデータベースのレコード長の総和の最大値（バイト）

(2)　SDBデータベースを操作するAPIまたはDMLの実行時に，バックエンドサーバで確保するメモリ

SDBデータベースを操作するAPIまたはDMLの実行時に，バックエンドサーバで確保するメモリは次の計算式で求めます。

SDI＋SDP＋SDA＋0.3×個別開始要求回数　（単位：キロバイト）

(a)　変数SDIの求め方

■4V FMBまたは4V AFMのSDBデータベースの場合

変数SDIは次の計算式で求めます。

変数の説明

lkey：操作対象のルートレコードに定義されたシーケンシャルインデクスのキー長（バイト）

appbdt：256

トラブルシュート機能（UAP統計レポートにアクセスパス情報の出力指定）適用時に加算します。

roglog：更新可能なオンライン再編成中のSDBデータベースを更新アクセスする場合は31.6（アクセスしない場合は0）

a：個別開始要求回数

r(i)：個別開始対象SDBデータベースのレコード型数

ただし，個別開始の複数レコードの検索専用オプションで'D'または'S'を指定した場合は1

set(i)：個別開始対象SDBデータベースの親子集合数

elmct：4V FMBのSDBデータベースの場合は0

4V AFMのSDBデータベースの場合は，レコード型ごとにデータ種別1がUの構成要素数をカウントしたときの最大数

divkey：個別開始対象のSDBデータベースの，SDBデータベース格納定義のSTORAGE RECORD句のWITHIN句で指定した分割キー値数

ただし，境界値分割の場合は，分割キー値数＋1

nxtuksv：4V MAMのSDBデータベースの場合は0.3

4V MAMのSDBデータベース以外の場合は0

maxrs(i)：個別開始対象SDBデータベースの最大レコード長（バイト）

ただし，個別開始の複数レコードの検索専用オプションで'D'または'S'を指定した場合は0

rsize(i)：個別開始対象SDBデータベースのレコード型ごとのレコード長の総和（バイト）

ただし，個別開始の複数レコードの検索専用オプションで'D'または'S'を指定した場合は，108＋個別開始の対象となるSDBデータベースのルートレコードのレコード長（バイト）

sdidout(i)：個別開始の複数レコードの検索専用オプションで'D'または'S'を指定した場合は，複数レコードの検索時に指定したデータ格納エリア長（バイト）

'D'または'S'を指定していない場合は0

maxukey(i)：個別開始対象のSDBデータベースのSDBデータベース定義のRECORD句でTYPE U，Kを指定した構成要素の最大構成要素長（バイト）

TYPE U，Kを指定した構成要素がない場合は0

sdimlutr：4V FMBのSDBデータベースの場合は，1回のAPIでまとめて操作要求するレコード型数（ただし，個別開始の複数レコードの検索専用オプションで'D'または'S'を指定した場合は1）

4V AFMのSDBデータベースの場合は1

audrmax：各SDBデータべースに定義されているレコード型数の最大値

audrsmax：各SDBデータベースのレコード長の総和の最大値（バイト）

■SD FMBのSDBデータベースの場合

変数SDIは次の計算式で求めます。

変数の説明

lkey：操作対象のルートレコードに定義されたシーケンシャルインデクスのキー長（バイト）

appbdt：256

トラブルシュート機能（UAP統計レポートにアクセスパス情報の出力指定）適用時に加算します。

a：操作対象のSDBデータベース数

r(i)：操作対象のSDBデータベースのレコード型数

set(i)：操作対象のSDBデータベースの親子集合数

divkey：操作対象のSDBデータベースの，SDBデータベース格納定義のSTORAGE RECORD句のWITHIN句で指定した分割キー値数

ただし，境界値分割の場合は，分割キー値数＋1

maxrs(i)：操作対象のSDBデータベースの最大レコード長（バイト）

rsize(i)：操作対象のSDBデータベースのレコード型ごとのレコード長の総和（バイト）

audrmax：各SDBデータべースに定義されているレコード型数の最大値

audrsmax：各SDBデータベースのレコード長の総和の最大値（バイト）

(b)　変数SDPの求め方

変数SDPは次の計算式で求めます。

SDP個別開始時算出式＋SDP_API算出式＋API全般※　（単位：キロバイト）

SDP個別開始時算出式：個別開始時に必要な領域の領域長

SDP_API算出式：SDBデータベースを操作するAPIまたはDMLごとに必要な領域の領域長

API全般：SDBデータベースを操作するAPIまたはDMLで，共通に必要な領域の領域長

注※

トラブルシュート機能（UAP統計レポートにアクセスパス情報の出力指定）適用時に加算します。

SDP個別開始時算出式：

変数の説明

a：個別開始実行回数

recvn(i)：SDBデータベースに定義したレコード型数

setvn(i)：SDBデータベースに定義した親子集合数

sdbid(i)：SDBデータベースの基SDBデータベース番号

idxid(i)：インデクス定義総数−1

maxrl(i)：31

SDP_API算出式：

変数の説明

a：個別開始実行回数

API共通算出式(i)：複数のSDBデータベースを操作するAPIまたはDML間で共通に利用する領域の領域長

個別開始したSDBデータベースについて算出します。

API個別算出式(i)：SDBデータベースを操作するAPIまたはDMLの種別ごとに確保する領域長

個別開始したSDBデータベースについて算出します。

API共通算出式(i)：

個別開始から個別終了の間で実行する要求を対象に求めます。

{0.001×lkey＋MAX1※1＋MAX2※1＋MAX3＋MAX4＋MAX5＋0.55※2}×1.1
                                              （単位：キロバイト）

注※1

個別開始後の初回のレコードの検索，位置指示子の位置づけ，複数レコードの検索，またはレコードの格納時に確保します。以後のレコードの検索，位置指示子の位置づけ，複数レコードの検索，またはレコードの格納時に領域長が不足した場合は，領域を解放して再取得します。個別終了で領域を解放します。

注※2

個別開始後の初回APIまたはDMLの実行時に確保し，個別終了で領域を解放します。

変数の説明

lkey：操作対象のルートレコードに定義されたシーケンシャルインデクスのキー長（バイト）

MAX1：0.55＋0.1×ccnd＋0.1×faltn＋0.1×cndn

個別開始から個別終了の間に発行する要求に対して上記の計算を行い，最も大きい値をMAX1としてください。

　ccnd：共通条件（キーの条件）数

　faltn：択一条件数

　cndn：連結条件数

MAX2：5.03＋（0.248＋96×nidx）×（dbkcnd＋2）

個別開始から個別終了の間に発行する要求に対して上記の計算を行い，最も大きい値をMAX2としてください。

　nidx：インデクスの構成列数

　dbkcnd：シーケンシャルインデクスのキーに対する条件の数

MAX3：（0.02＋0.002×nrec）×2

個別開始から個別終了の間に発行する要求に対して上記の計算を行い，最も大きい値をMAX3としてください。

　nrec：操作対象のSDBデータベースを構成するレコード型数

MAX4：0.15×nset

個別開始から個別終了の間に発行する要求に対して上記の計算を行い，最も大きい値をMAX4としてください。

　nset：操作対象のレコードが子レコードとして関与する親子集合型数

MAX5：0.4＋（0.1×ncmp）

個別開始から個別終了の間に発行する要求に対して上記の計算を行い，最も大きい値をMAX5としてください。

　ncmp：SDBデータベース定義のKEY句に指定した構成要素型数

API個別算出式(i)：

0.83

API全般：

546　（単位：キロバイト）

(c)　変数SDAの求め方

変数SDAは次の計算式で求めます。

SD FMBのSDBデータベースの場合，計算式Bの値は0になります。

変数の説明

xpgsz：インデクスを格納しているRDエリアの中で最大のページ長（バイト）

a：複数レコードの検索専用オプションで'D'または'S'を指定した個別開始要求回数

r(i)：個別開始対象データベースのレコード型数

参考

計算式Bは，バックエンドサーバ用の簡易ダンプファイルの容量計算式（FETCHDB ALL用ワークエリアサイズの計算式）として使用します。バックエンドサーバ用の簡易ダンプファイルの容量計算式については，「付録F.1　簡易ダンプ」を参照してください。

(3)　HiRDBサーバへの接続（CONNECT）時に確保するメモリ【SD FMB】

HiRDBサーバへの接続（CONNECT）時に確保するメモリは次の計算式で求めます。

SDA×1.1　（単位：キロバイト）

SD FMBのSDBデータベースにSDB用UAP環境定義を使用してアクセスする場合に，上記の計算をしてください。SDB用UAP環境定義を使用しない場合は，変数SDAは0になります。

(a)　変数SDAの求め方

変数SDAは次の計算式で求めます。

oper＋↑(subn×0.268) ÷32 ↑×32＋subn×0.2＋163　（単位：キロバイト）

変数の説明

oper：SDB用UAP環境定義で，1オペランドの継続行数が100行を超えるオペランドがない場合は8,100行を超えるオペランドがある場合は160

subn：SDB用UAP環境定義のsubschemaオペランドの指定数

3.5　ディスク容量の見積もり

HiRDB/SDを使用するために必要なディスク容量の見積もりについて説明します。

3.5.1　システムログ量の見積もり

システムログ量の見積もりについて説明します。

(1)　システムログ量の見積もり式

出力されるシステムログ量は次の計算式から求めます。

変数の説明

Li：SDBデータベースを操作するAPIまたはDMLを1回実行したときのシステムログ量，またはユティリティを1回実行したときのシステムログ量

n：SDBデータベースを操作するAPIまたはDML，およびユティリティの実行回数

r：ロールバック対象となるSDBデータベースを操作するAPIまたはDML，およびロールバック対象となるユティリティの数

SDBデータベースを操作するAPIまたはDMLの実行時のシステムログ量については，「(2)　SDBデータベースを操作するAPIまたはDMLの実行時のシステムログ量」および「(3)　更新可能なオンライン再編成実行時のシステムログ量【4V FMB】」を参照してください。

ユティリティ実行時のシステムログ量については，「(4)　HiRDB/SD定義ユティリティ（pdsdbdef）実行時のシステムログ量」および「(5)　HiRDB/SDデータベース作成ユティリティ（pdsdblod）実行時のシステムログ量」を参照してください。

ここで算出した値をシステムログファイルの総容量に加算してください。

システムログファイルの総容量，および次に示す以外のシステムログファイルの容量については，マニュアル「HiRDB Version 9 システム導入・設計ガイド」を参照してください。

(2)　SDBデータベースを操作するAPIまたはDMLの実行時のシステムログ量

SDBデータベースを操作するAPIまたはDMLの実行時のシステムログ量について，次の表に示します。

なお，表中にあるレコード長については，「3.5.5(1)　レコード長の算出」を参照して求めてください。

表3‒20　SDBデータベースを操作するAPIまたはDMLの実行時のシステムログ量

実行するAPIまたはDML

SDBデータベース種別と格納するレコードの条件

更新前ログ

（単位：バイト）

更新後ログ

（単位：バイト）

説明

レコードの格納（STORE）

4V FMBまたはSD FMBで，ルートレコードを格納する場合

1,556＋（↑976÷sbn↑＋416）×ppn

レコード長＋1,400＋（↑976÷sbn↑＋416）×ppn

sbn：サブページ分割数。サブページ分割をしない場合は1を代入してください。

ppn：確保予定の事前割り当てページまたは事前割り当てサブページの数。事前ページ割り当て機能を適用しない場合は0を代入してください。

4V FMBまたはSD FMBで，ルートレコード以外のレコードを格納する場合

2,900×G＋（↑976÷sbn↑＋416）×ppn

（レコード長＋2,760）×G＋（↑976÷sbn↑＋416）×ppn

Gには，SDBデータベース定義で定義したレコード型の数が3以上の場合，1.2を指定してください。そのほかの場合は，1を指定してください。ただし，各レコード型のレコード長にばらつきがある場合，ERASEによってできた空き領域を再利用するとき，計算結果以上にログ容量が増加することがあります。このように，容量の増加が大幅に見込まれる場合，1.2より大きい値を指定してください。

sbn：サブページ分割数。サブページ分割をしない場合は1を代入してください。

ppn：追加で確保予定の事前割り当てページまたは事前割り当てサブページの数。事前ページ割り当て機能を適用しない場合は0を代入してください。

4V MAMのSDBデータベースのレコードを格納する場合※1※2

2,712

レコード長＋2,572

−

4V DAMまたは4V SAMのSDBデータベースで，同一データベースキー内のレコード件数が過去に格納したレコード件数の最大値を超えるレコードを格納する場合

4V MAMのSDBデータベースのレコードを格納する場合と同じです。

−

4V DAMまたは4V SAMのSDBデータベースで，同一データベースキー内のレコード件数が過去に格納したレコード件数の最大値を超えないレコードを格納する場合※3

「レコードの更新（MODIFY）」を参照して，見積もってください。ただし，過去に格納したレコード件数の最大値を想定できない場合は，「4V MAMのSDBデータベースのレコードを格納する場合」を参照して見積もってください。

−

レコードの更新（MODIFY）

−

レコード長＋172＋u＋ov

u：USERポインタ更新時は184，USERポインタの更新が不要なときは0を代入してください。

ov：4V DAMまたは4V SAMのSDBデータベースの場合で，同一データベースキー内のレコード件数が，過去に格納したレコード件数の最大値を超えないレコード格納の場合は184，それ以外は0を代入してください。

レコードの削除（ERASE）

事前ページ割り当て機能を適用したファミリのルートレコードを削除する場合

レコード長＋1,732＋（↑148÷sbn↑＋236）×ppn

1,728＋（↑148÷sbn↑＋236）×ppn

sbn：サブページ分割数。サブページ分割をしない場合は1を代入してください。

ppn：確保済みの事前割り当てページまたは事前割り当てサブページの数。

事前ページ割り当て機能を適用したファミリのルートレコード以外のレコードを削除する場合

レコード長＋1,732

1,728

−

レコードの一括削除

−

184

184

−

（凡例）

−：該当しません。

注※1

仮想ルートレコードを格納する場合は，次の値を加算してください。

更新前ログ：1,368バイト

更新後ログ：仮想ルートレコード長＋1,212バイト

注※2

仮想ルートレコードを格納しない場合は，次の値を加算してください。

更新前ログ：144バイト

注※3

「レコードの更新（MODIFY）」を参照して見積もる場合は，次の値を加算してください。

更新前ログ：144バイト

インデクスログ量の見積もりについては，マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「インデクスログ量の見積もり」を参照してください。「インデクスログ量の見積もり」を参照して計算する際の注意点を次に示します。

「表」を「レコード型」に読み替えて計算してください。

「行」を「レコード」に読み替えて計算してください。

新しいキーを追加する場合のインデクスログ量の計算式は，「インデクスログ量の見積もり」の「1本のインデクスログ量の計算式」で説明している「インデクスキー無排他を適用したUNIQUE指定のインデクスのときの計算式」を使用してください。

インデクスログ量の見積もりをする際，インデクスのキー長が必要になります。インデクスのキー長には，「3.5.5(8)　インデクスを格納するページ数の見積もり」で説明している「キーとなる構成要素の長さ」の計算結果を代入してください。

4V AFMのSDBデータベースのレコードの格納（STORE）時に，仮想ルートレコードを格納する場合は，シーケンシャルインデクスのキーが2つ追加されるため，該当するシステムログ量を2倍して見積もってください。

4V AFMのSDBデータベースのレコードの格納（STORE）時に，仮想ルートレコードを格納しない場合※で，かつ1件目のレコードを格納する場合は，シーケンシャルインデクスのキーが1つ追加されるため，新しいキーが追加されるときのシステムログ量を見積もり，その値を加算してください。

注※

4V DAMまたは4V SAMのSDBデータベースの場合，同一データベースキー内のレコード件数が，過去に格納したレコード件数の最大値を超えない，レコードの格納のケースを含みます。

4V AFMのSDBデータベースで一括削除またはレコードの削除（ERASE）を実行した場合に，仮想ルートレコード配下のレコード件数が0件となるときは，シーケンシャルインデクスのキーが1つ削除されるため，キー値が削除されるときのシステムログ量を見積もり，その値を加算してください。

(3)　更新可能なオンライン再編成実行時のシステムログ量【4V FMB】

更新可能なオンライン再編成中のSDBデータベースを更新する場合，「(2)　SDBデータベースを操作するAPIの実行時のシステムログ量」で計算したシステムログ量に，次に示すシステムログ量を加算してください。

■レコードの格納（STORE）時に出力されるシステムログ量

228＋↑（a＋b）÷4↑×4　　（単位：バイト）

■レコードの更新（MODIFY）時に出力されるシステムログ量

448＋↑（a＋b）÷4↑×8　　（単位：バイト）

■レコードの削除（ERASE）時に出力されるシステムログ量（一括オプションに'S'を指定する場合）

■レコードの削除（ERASE）時に出力されるシステムログ量（一括オプションに'O'を指定する場合）

■計算式中の変数の説明

a：ルートレコードのキー長＋（更新対象レコードの階層−1）×4

b：SDBデータベース定義のRECORD句で指定したレコードサイズ

m：削除レコードとその下位階層のすべてのレコードの総数

n：削除レコードとその下位レコードの各階層でUSERポインタが設定されているレコードの総数

p：削除レコードの階層のすべてのレコードの総数

(4)　HiRDB/SD定義ユティリティ（pdsdbdef）実行時のシステムログ量

HiRDB/SD定義ユティリティ（pdsdbdef）実行時のシステムログ量の見積もりについて説明します。

(a)　*ENTRY DICTIONARY文または*DELETE DICTIONARY文の実行時に出力されるシステムログ量

ディクショナリサーバで出力されるシステムログ量

2,925＋↑a÷（e−59）↑×（e＋152）
＋↑b÷（e−59）↑×（e＋152）
＋↑c÷（e−59）↑×（e＋152）
＋｛l×f＋m×j｝※
                                            （単位：バイト）

注※　*DELETE DICTIONARY文の実行時に加算します。

(b)　*ALTER DICTIONARY文の実行時に出力されるシステムログ量【4V FMB，4V AFM】

ディクショナリサーバで出力されるシステムログ量

3,606＋｛↑a÷（e−59）↑×（e＋152）｝×2
＋｛↑b÷（e−59）↑×（e＋152）｝×2
＋｛↑c÷（e−59）↑×（e＋152）｝×2
                                            （単位：バイト）

(c)　*CHECK DICTIONARY文の実行時に出力されるシステムログ量

ディクショナリサーバで出力されるシステムログ量

1,302＋｛↑c÷（e−59）↑×（e＋152）｝×2
＋l×f＋m×j
                                            （単位：バイト）

(d)　*ENTRY DIRECTORY文または*DELETE DIRECTORY文の実行時に出力されるシステムログ量

ディクショナリサーバで出力されるシステムログ量

5,722＋｛↑b÷（e−59）↑×（e＋152）｝×2
＋｛↑c÷（e−59）↑×（e＋152）｝×2
＋｛l×f＋m×j｝※
＋↑d1÷（e−59）↑×（e＋152）
＋↑d2÷（e−59）↑×（e＋152）
                                            （単位：バイト）

注※　*CHECK DICTIONARY文を同時に指定していない場合に加算します。

各バックエンドサーバで出力されるシステムログ量

l×f＋m×j   （単位：バイト）

(e)　*ALTER DIRECTORY文の実行時に出力されるシステムログ量【4V FMB，4V AFM】

ディクショナリサーバで出力されるシステムログ量

8,840＋｛↑b÷（e−59）↑×（e＋152）｝×2
＋｛↑c÷（e−59）↑×（e＋152）｝×2
＋｛l×f＋m×j｝※
＋｛↑d1÷（e−59）↑×（e＋152）｝×2
＋｛↑d2÷（e−59）↑×（e＋152）｝×2
                                            （単位：バイト）

注※　*CHECK DICTIONARY文を同時に指定していない場合に加算します。

各バックエンドサーバで出力されるシステムログ量

 n   （単位：バイト）

変数の説明

a：SDBデータベース定義情報長（バイト）

「表3-26　計算式2（SDBデータベース定義情報長）」を参照して算出してください。

b：SDBデータベースビュー定義情報長（バイト）

「表3-27　計算式3（SDBデータベースビュー定義情報長）」を参照して算出してください。

c：SDBデータベース格納定義情報長（バイト）

「表3-28　計算式4（SDBデータベース格納定義情報長）」を参照して算出してください。

d1：SDBディレクトリ情報長（SDBデータベース情報）（バイト）

「3.4.2　共用メモリの見積もり」の，変数dbsの計算式で算出してください。

d2：SDBディレクトリ情報長（SDBデータベースビュー情報）（バイト）

「3.4.2　共用メモリの見積もり」の，変数subの計算式で算出してください。

e：データディクショナリ用RDエリアのページ長（バイト）

f：1SDBデータベース当たりのレコード型数（個）

j：1SDBデータベース格納定義当たりのインデクス数（個）

l：レコード型定義時および削除時のシステムログ量※1（バイト）

m：レコード型へのインデクス定義時および削除時のシステムログ量※2（バイト）

n：格納条件が変更となるRDエリア内のデータを削除するときに必要なシステムログ量※3

分割格納条件の変更機能で格納RDエリア数を変更する場合に加算します。

注※1

レコード型定義時および削除時のシステムログ量については，マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「表定義時に出力されるシステムログ量」を参照してください。

なお，マニュアル参照時には，次の用語を読み替えてください。

「表」を「レコード型」に読み替えてください。

「列」を「構成要素」に読み替えてください。なお，データ属性を持たない構成要素は，構成要素数を数える際の対象にはしないでください。また，SDBデータベース定義でOCCURS句を指定する場合，システム内で生成される構成要素は，構成要素数を数える際の対象にしてください。

注※2

インデクス定義時のシステムログ量については，マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「インデクス定義時に出力されるシステムログ量」を参照してください。

なお，マニュアル参照時には，次の用語を読み替えてください。

「列」を「構成要素（データ属性を持たない構成要素は含みません）」に読み替えてください。

「インデクスを格納するために必要なインデクスの格納ページ数」は0に読み替えてください。

注※3

RDエリア内のデータを削除するときに必要なシステムログ容量については，マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「PURGE TABLE文実行時に出力されるシステムログ量」を参照してください。格納条件が変更となる格納レコード用RDエリアおよびインデクスを格納するユーザ用RDエリアに対して，RDエリアごとに求めたシステムログ量の総容量を求めてください。

なお，マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「PURGE TABLE文実行時に出力されるシステムログ量」を参照する際，「表」を「レコード型」に読み替えてください。

(5)　HiRDB/SDデータベース作成ユティリティ（pdsdblod）実行時のシステムログ量

HiRDB/SDデータベース作成ユティリティ（pdsdblod）を実行する場合，次に示すシステムログが出力されます。

下記(a)〜(e)で求めた値をデータロードの対象となるSDBデータベースを管理するバックエンドサーバのログ量に加算してください。なお，SDBデータベースを横分割している場合は，レコードおよびインデクスを格納するRDエリアごとにシステムログ量を計算します。

(a)　必ず取得するシステムログ量

項番

条件

出力されるシステムログ量（単位：バイト）

1

インデクス一括作成モード（idxmode=create）でデータロードする場合

purge=yes

2,000×（2＋IXRD）

purge=no

2,000×（1＋IXRD）

2

インデクス更新モード（idxmode=sync）でデータロードする場合

purge=yes

4,000

purge=no

2,000

3

インデクス再作成する場合

4,000

変数の説明

IXRD：インデクス格納RDエリア数

(b)　logmode=noの場合に取得するシステムログ量

（DTRD＋IXRD）×400　（単位：バイト）

変数の説明

DTRD：データ格納RDエリア数

IXRD：インデクス格納RDエリア数

(c)　logmode=allの場合に取得するシステムログ量

項番

条件

出力されるシステムログ量（単位：バイト）

1

インデクス一括作成モード（idxmode=create）でデータロードする場合

280×m＋1,940×↑m÷s↑＋格納するレコードのログ総量※1

2

インデクス更新モード（idxmode=sync）でデータロードする場合

280×m＋1,940×↑m÷s↑＋格納するレコードのログ総量※1

3

インデクス再作成する場合

注※1

レコードの格納（STORE）の容量見積もりから求めた，格納するレコードのログの総量です。「(2)　SDBデータベースを操作するAPIまたはDMLの実行時のシステムログ量」を参照してください。ただし，更新前のログは，総量に含めないでください。

注※2

マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「表データ更新時に出力されるシステムログ量」にある「インデクスログ量の見積もり」を参照して求めた値です。参照する際の注意事項は「(2)SDBデータベースを操作するAPIまたはDMLの実行時のシステムログ量」と同じです。

4V AFMのSDBデータベースの場合，仮想ルートレコード型に定義したシーケンシャルインデクスでは，仮想ルートレコード1件につき2つのキーを追加するため，この「キー追加のログ量」を2倍して見積もってください。

変数の説明

d：インデクススプリット時に出力されるシステムログ量

e：インデクスのスプリット回数

f：インデクス定義時に指定するPCTFREE句（ページ内の未使用領域の比率）の値（％）

m：レコードの格納ページ数

n：インデクスの個数

r：レコード型のレコード件数

s：レコードを格納するユーザ用RDエリアのセグメントサイズ（ページ）

Wi：インデクスの格納ページ数

4V AFMのSDBデータベースの場合，仮想ルートレコード型に定義したシーケンシャルインデクスは，インデクスキーとレコード実現値の関係が通常2対1になります。仮想ルートレコード型に定義したシーケンシャルインデクスを格納するために必要なインデクスの格納ページ数（変数Wi）は，「3.5.5(8)　インデクスを格納するページ数の見積もり」を参照してから見積もってください。

Vi：インデクスを格納するユーザ用RDエリアのセグメントサイズ（ページ）

xi：インデクスを格納するユーザ用RDエリアのページ長（バイト）

α：インデクス定義時に出力されるシステムログ量

マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「インデクス定義時に出力されるシステムログ量」にある「HiRDB/パラレルサーバの場合　バックエンドサーバで出力されるシステムログ量」を参照して求めてください。

β：ページ／セグメントの確保ログ量の計算式

マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「表データ更新時に出力されるシステムログ量」にある「ページ／セグメントの確保ログ量の計算式」を参照して求めてください。

γ：PURGE TABLE文実行時に出力されるシステムログ量のインデクスのシステムログ量

マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「PURGE TABLE文実行時に出力されるシステムログ量」を参照して求めてください。

(d)　purge=yesの場合に取得するシステムログ量

マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「PURGE TABLE文実行時に出力されるシステムログ量」を参照して求めてください。

(e)　oreload文を指定した場合に取得するシステムログ量

1,102×格納するレコード件数　（単位：バイト）

3.5.2　作業表用ファイルの容量の見積もり

作業表用ファイルの容量の見積もりについて説明します。

作業表用ファイルの容量を見積もる際には，マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「作業表用ファイルの容量の見積もり」を参照し，次に示す作業用ファイルの見積もりを考慮してください。

(1)　HiRDB/SD定義ユティリティ（pdsdbdef）が使用する作業表用ファイルの容量の見積もり

HiRDB/SD定義ユティリティ（pdsdbdef）でSDBディレクトリ情報を削除する場合，次に示す計算式の分の作業表用ファイルが必要になります。

算出した値は，マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「SQL文が使用する作業表用ファイルの容量」の「列情報作業表の容量」として計算してください。

↑a÷MIN｛↓（b−48）÷ 20↓，255｝↑×b×2　（単位：バイト）

変数の説明

a：全SDBデータベース内の全レコード型内で構成要素数が最大の構成要素数

ただし，データ属性を持たない構成要素を除きます。また，SDBデータベース定義でOCCURS句を指定する場合は，システム内で生成される構成要素数を含みます。

b：作業表ページ長

次の計算式から求めてください。

MAX｛↑（20＋48）÷2,048↑×2,048，4,096｝

(2)　HiRDB/SDデータベース作成ユティリティ（pdsdblod）が使用する作業表用ファイルの容量の見積もり

インデクス一括作成モードでHiRDB/SDデータベース作成ユティリティ（pdsdblod）を実行する場合，作業表用ファイルが必要になります。

詳細については，マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「ユティリティが使用する作業表用ファイルの容量」を参照してください。

なお，マニュアルを参照するときには次の点に注意してください。

「pdload」を「pdsdblod」に読み替えてください。

「CREATE INDEXで指定するページ内の未使用領域の比率」は，「SDBデータベース格納定義でインデクスに指定するページ内の未使用領域の比率（PCTFREE句の値）」に読み替えてください。

シーケンシャルインデクス，または二次インデクスのキーとなる構成要素の長さについては，「3.5.5(8)　インデクスを格納するページ数の見積もり」を参照して計算してください。

なお，複数のユティリティを同時に実行する場合は，各ユティリティが使用する作業表用ファイルの容量を合計してください。

3.5.3　監査証跡ファイルの容量の見積もり

監査証跡ファイルの容量の見積もりについては，マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「監査証跡ファイルの容量の見積もり」を参照してください。

(1)　SDBユティリティ操作イベントの監査証跡を取得する場合

見積もりをする際，次の表に示すコマンドを実行したときに出力される監査証跡のレコード数を加算してください。

表3‒21　出力される監査証跡のレコード数（SDBユティリティ操作イベントの場合）

項番

コマンド名

イベント取得個所

1イベントで出力されるレコード数

見積もりの目安

1

pdsdbdef

コマンド実行時のCONNECT権限チェック

1

pdsdbdefコマンドの実行回数

2

SDBディクショナリ情報の操作

1

次のSDB定義文の合計数

*ENTRY DICTIONARY文

*ALTER DICTIONARY文

*DELETE DICTIONARY文

3

データベース定義のチェック

1

次のSDB定義文の合計数

*CHECK DICTIONARY文

4

SDBディレクトリ情報の操作

1

次のSDB定義文の合計数

*ENTRY DIRECTORY文

*ALTER DIRECTORY文

*DELETE DIRECTORY文

5

SDBディレクトリ情報ファイルの作成

1

pdsdbdefコマンドのdirinf文の指定があるSDB制御文の個数

6

pdsdbdefコマンドの終了

1

pdsdbdefコマンドの実行回数

7

pdsdblod

コマンド実行時のCONNECT権限チェック

1

pdsdblodコマンドの実行回数

8

pdsdblodコマンドの終了

1

pdsdblodコマンドの実行回数

9

pdsdbrog

コマンド実行時のCONNECT権限チェック

1

pdsdbrogコマンドの実行回数

10

pdsdbrogコマンドの終了

1

pdsdbrogコマンドの実行回数

(2)　SDBデータベース操作イベントの監査証跡を取得する場合

見積もりをする際，次の表に示すSDBデータベース操作を実行したときに出力される監査証跡のレコード数を加算してください。

表3‒22　出力される監査証跡のレコード数（SDBデータベース操作イベントの場合）

項番

SDBデータベース操作

イベント取得個所

1イベントで出力されるレコード数

見積もりの目安

1

レコードの検索（FETCH）

位置指示子の位置づけ（FIND）

イベント終了時

1

レコードの検索（FETCH）および位置指示子の位置づけ（FIND）の実行回数

ただし，FIRSTオプションの指定時は，個別開始単位にファミリ内のレコード型に対して1件となります

2

レコードの格納（SOTRE）

1

レコードの格納（STORE）の実行回数

3

レコードの更新（MODIFY）

1

レコードの更新（MODIFY）の実行回数

4

レコードの削除（ERASE）

1

レコードの削除（ERASE）の実行回数

5

レコードの一括削除

1

レコードの一括削除の実行回数

6

複数レコードの検索（FETCHDB_ALL）

1

複数レコードの検索（FETCHDB ALL）の実行回数

3.5.4　システム用RDエリアの容量の見積もり

システム用RDエリアの容量の見積もりについて説明します。

(1)　データディクショナリ用RDエリアの容量の見積もり

データディクショナリ用RDエリアの容量は，次に示す計算式で求めます。

a×b×1.3＋c×125＋1,600,000　（単位：バイト）

変数の説明

a：データディクショナリ用RDエリアのページ長

データベース初期設定ユティリティ（pdinit）またはデータベース構成変更ユティリティ（pdmod）のcreate rdarea文で指定するページ長です。

b：データディクショナリ用RDエリアの総ページ数

「表の格納ページ数＋インデクスの格納ページ数」です。「3.5.4(1)(a)　表の格納ページ数の計算方法」および「3.5.4(1)(b)　インデクスの格納ページ数の計算方法」を参照してしてください。

なお，レコード型およびインデクスの定義情報をデータディクショナリ用RDエリアで管理するため，SDBデータベースの追加に伴って行を追加するディクショナリ表についても，使用するページ数を見積もって加算してください。

c：データディクショナリ用RDエリアのセグメントサイズ

データベース初期設定ユティリティ（pdinit）またはデータベース構成変更ユティリティ（pdmod）のcreate rdarea文で指定するセグメントサイズです。

(a)　表の格納ページ数の計算方法

表の格納ページ数（単位：ページ）は，計算式1〜計算式4の総和に，HiRDB/SDが使用するHiRDBのディクショナリ表の格納ページ数を加算して求めます。

HiRDBのディクショナリ表の格納ページ数については，マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「通常のデータディクショナリ用RDエリアの容量の見積もり」の「表の格納ページ数の計算方法」を参照してください。ただし，SQL_RDAREAS表およびSQL_AUDIT_REGULARIZE表については，次の表に示す計算式を使用してください。

表3‒23　SQL_RDAREAS表の格納ページ数

ディクショナリ表名

計算式

SQL_RDAREAS

注

計算式中で使用している変数については，マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「通常のデータディクショナリ用RDエリアの容量の見積もり」の「表の格納ページ数の計算方法」を参照してください。

表3‒24　SQL_AUDIT_REGULARIZE表の格納ページ数

ディクショナリ表名

計算式

SQL_AUDIT_REGULARIZE

注

計算式中で使用している変数については，マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「通常のデータディクショナリ用RDエリアの容量の見積もり」の「表の格納ページ数の計算方法」を参照してください。

表3‒25　計算式1

ディクショナリ表名

計算式

SQL_SDB_DB

SQL_SDB_DB_VIEW

SQL_SDB_STORAGE_DB

SQL_SDB_NAME_CODE

SQL_SDB_DIR

変数の説明

a：データディクショナリ用RDエリアのページ長（バイト）

b1：SDBデータベース定義の総数（個）

b2：SDBデータベースビュー定義の総数（個）

b3：SDBデータベース格納定義の総数（個）

c：認可識別子の長さの平均値（バイト）

d1：SDBデータベース名の長さの平均値（バイト）

d2：SDBデータベースビュー名の長さの平均値（バイト）

d3：SDBデータベース格納定義名の長さの平均値（バイト）

e1：SDBデータベース定義情報長（バイト）

e2：SDBデータベースビュー定義情報長（バイト）

e3：SDBデータベース格納定義情報長（バイト）

f1：SDBディレクトリ情報長（SDBデータベース情報）（バイト）

「3.4.2　共用メモリの見積もり」の，システム共通定義のpd_structured_shmpool_dicsizeオペランドの指定値を求める計算式の変数dbsの値となります。

f2：SDBディレクトリ情報長（SDBデータベースビュー情報）（バイト）

「3.4.2　共用メモリの見積もり」の，システム共通定義のpd_structured_shmpool_dicsizeオペランドの指定値を求める計算式の変数subの値となります。

g：データ長が256バイト以上で，かつ分岐するバイナリデータの平均値（個）

バイナリデータの格納ページ数の分岐条件については，マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「データ長一覧」を参照してください。

MEMN：番号に変換される名称長の平均長（バイト）

SQL_SDB_NAME_CODE表のNAME_LEN列の値です。次の計算式から求めてください。

↑（d1＋d2＋d3）÷3↑

表3‒26　計算式2（SDBデータベース定義情報長）

計算式

変数の説明

e1＝

｛442＋（272＋248×c）×a＋（480＋176×d）×b＋496｝

a：1SDBデータベース定義のレコード型指定数の平均値（個）

b：1SDBデータベース定義の親子集合指定数の平均値（個）

c：1SDBデータベース定義の1レコード型ごとの構成要素指定数の平均値（個）※

d：1SDBデータベース定義の1親子集合ごとのキーの構成要素指定数（個）

注※

SDBデータベース定義でOCCURS句を指定する場合は，システム内で生成される構成要素数を考慮する必要があります。

表3‒27　計算式3（SDBデータベースビュー定義情報長）

計算式

変数の説明

e2＝

（588＋240×a＋208×b＋216×c＋416）

a：1SDBデータベース定義のレコード型指定数の平均値（個）

b：1SDBデータベース定義の親子集合指定数の平均値（個）

c：1SDBデータベース定義の1レコード型ごとの最小レベル番号の構成要素指定数の平均値（個）※

注※

SDBデータベース定義でOCCURS句を指定する場合は，システム内で生成される構成要素数を考慮する必要があります。

表3‒28　計算式4（SDBデータベース格納定義情報長）

計算式

変数の説明

e3＝

｛432＋840×a＋280×b＋（168×d＋368）×c＋（120×f＋96）×e＋336｝

a：1SDBデータベース格納定義の格納レコード指定数の平均値（個）

b：1SDBデータベース格納定義の格納親子集合指定数の平均値（個）

c：1SDBデータベース格納定義のインデクス指定数の平均値（個）

d：1SDBデータベース格納定義のインデクスごとの構成要素指定数の平均値（個）

e：1SDBデータベース格納定義のKEYDEF句指定数の平均値（個）

f：1SDBデータベース格納定義のKEYDEF句ごとのDATA句指定数の平均値（個）

(b)　インデクスの格納ページ数の計算方法

インデクスの格納ページ数は，次の表に示すディクショナリ表のインデクスを格納するページ数に，HiRDB/SDが使用するHiRDBのディクショナリ表のインデクスを格納するページ数を加算して求めます。

HiRDBのディクショナリ表のインデクスを格納するページ数，およびその計算方法については，マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「通常のデータディクショナリ用RDエリアの容量の見積もり」の「インデクスの格納ページ数の計算方法」を参照してください。また，「インデクスの格納ページ数の計算方法」に記載されている計算式には，次の表に示す変数を代入してください。

なお，マニュアルを参照する場合，次の用語を読み替えてください。

「表」を「レコード型」に読み替えてください。

「列」を「構成要素（データ属性を持たない構成要素は含みません）」に読み替えてください。

表3‒29　インデクスの格納ページ数を求める計算式に代入する変数一覧

ディクショナリ表名

種別

キー長※2

（変数g※1）

キーの種類の個数

（変数c※1）

キーの重複数の平均値

（変数d※1）

SQL_SDB_DB

129

SCN＋DBN＋2

システム内のSDBデータベース数

1

130

2

システム内のSDBデータベース数

1

131

4

すべてのSDBデータベース定義情報内でSDBデータベース定義情報長が異なる数

SDBデータベース定義情報長の平均重複数

SQL_SDB_DB_VIEW

132

SCN×2＋DBN＋DBVN＋2

システム内のSDBデータベースビュー数

1

133

2

1

システム内のSDBデータベースビュー数

134

2

システム内のSDBデータベース数

1

135

4

すべてのSDBデータベースビュー定義情報内でSDBデータベースビュー定義情報長が異なる数

SDBデータベースビュー定義情報長の平均重複数

SQL_SDB_STORAGE_DB

136

SCN＋STDBN＋2

システム内のSDBデータベース格納定義数

1

137

SCN＋DBN＋2

システム内のSDBデータベース数

1

138

2

システム内のSDBデータベース格納定義数

1

139

2

システム内のSDBデータベース数

1

140

4

すべてのSDBデータベース格納定義情報内でSDBデータベース格納定義情報長が異なる数

SDBデータベース格納定義情報長の平均重複数

SQL_SDB_NAME_CODE

141

DBN＋MEMN＋4

今まで定義したことのある名称の，システム内のSDBディクショナリ情報数

1

142

6

今まで定義したことのある名称の，システム内のSDBディクショナリ情報数

1

143

DBN＋6

今まで定義したことのある名称の，システム内のSDBディクショナリ情報数

1

144

MEMN＋6

今まで定義したことのある名称の，システム内のSDBディクショナリ情報数

1

SQL_SDB_DIR

145

SCN＋DBN＋4

システム内のSDBディレクトリ情報数

1

146

SCN×2＋DBN＋DBVN＋4

システム内のSDBディレクトリ情報数

1

147

4

すべてのSDBディレクトリ情報内でSDBディレクトリ情報長が異なる数

SDBディレクトリ情報長の平均重複数

変数の説明

SCN：認可識別子の長さの平均値（バイト）

DBN：SDBデータベース名の長さの平均値（バイト）

DBVN：SDBデータベースビュー名の長さの平均値（バイト）

STDBN：SDBデータベース格納定義名の長さの平均値（バイト）

MEMN：番号に変換される名称長の平均長（バイト）

SQL_SDB_NAME_CODE表のNAME_LEN列の値です。次の計算式から求めてください。

↑（DBN＋DBVN＋STDBN）÷3↑

注※1

マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「インデクスの格納ページ数の計算方法」の「計算式中で使用する変数」に記載されている変数です。

注※2

キー長は4バイト単位で切り上げになります。次に示す計算式で求めてください。

↑キー長÷4↑×4

(2)　そのほかのシステム用RDエリアの容量の見積もり

次のシステム用RDエリアの容量の見積もりについては，マニュアル「HiRDB Version 9 システム導入・設計ガイド」のそれぞれの項目を参照してください。

マスタディレクトリ用RDエリアの容量の見積もり

データディレクトリ用RDエリアの容量の見積もり

なお，マニュアルを参照する際，次の用語を読み替えてください。

「表」を「レコード型」に読み替えてください。

「列」を「構成要素（データ属性を持たない構成要素は含みません）」に読み替えてください。

また，マスタディレクトリ用RDエリアの容量を見積もる際，次の変数は0として計算してください。

変数d：定義するビュー表の総数

変数e：定義するデータ型およびインデクス型の合計

3.5.5　ユーザ用RDエリアの容量の見積もり

ユーザ用RDエリアの容量は，レコードを格納するデータページ，またはインデクスを格納するためのインデクスページ数を計算したあと，総ページ数を計算して求めることができます。

ユーザ用RDエリアの容量は次の手順で見積もります。

手順

SDBデータベースに格納するレコードのレコード長を算出します。

ページ長，およびサブページ長を設計します。

事前割り当てページ数または事前割り当てサブページ数を算出します。

平均的なファミリが使用するページ数またはサブページ数を算出します。

セグメントサイズを設計します。

レコードを格納するデータページ数を算出します。

ユーザ用RDエリアに必要な容量を算出します。

それぞれの説明を次に示します。

(1)　レコード長の算出

システム要件から，SDBデータベースのレコード長を算出します。レコード長の計算式を次に示します。

変数の説明

f：レコード型のすべての構成要素数

SDBデータベース定義でOCCURS句を指定する場合，システム内で繰り返し回数分生成される構成要素数も含みます。システム内で生成される構成要素については，「11.7.1(4)(g)　OCCURS」を参照してください。

di：各構成要素のデータ長

データ型とデータ長の対応を次の表に示します。

表3‒30　データ型とデータ長の対応

データ型

データ長（単位：バイト）

CHARACTER

n（1〜30,000）※1

XCHARACTER

n（1〜30,000）※1

PACKED DECIMAL FIXED

↑（m＋n＋1）÷2↑※2

INTEGER

4

SMALLINT

2

注※1

SDBデータベース定義で指定した値です。nは指定したデータ長です。

注※2

SDBデータベース定義で指定した値です。mは整数部の桁数です。nは小数部の桁数です。m＋nは最大38となります。

sc：システム用構成要素の長さ

4V AFMのSDBデータベースの仮想ルートレコード型の場合：4バイト

上記以外の場合：0バイト

y：ポインタ管理領域の予備領域の長さ（SDBデータベース格納定義のPOINTER AREA SIZE句の指定値）

rpn：4V FMBまたはSD FMBのSDBデータベースのルートレコード型の場合は4，それ以外の場合は0を代入してください。

b：当該レコード型を親レコード型とする親子集合数

c：ルートレコード型以外のレコード型の場合は20，ルートレコード型の場合は0を代入してください。

nu：当該レコード型を親レコード型とする親子集合のうち，USERポインタを持つ子レコード型の数

ny：当該レコード型を親レコード型とする親子集合のうち，一括削除機能を適用する子レコード型の数

(2)　ページ長およびサブページ長の設計

ユーザ用RDエリアのページ長，およびサブページ長の設計指針を次の表に示します。

表3‒31　ページ長およびサブページ長の設計指針

設計項目

説明

ページ

ページ長の決定

ページ長については，「3.2.3　ページの設計」を参照して決定してください。

また，マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「ページ長の決定」も参照してください。

なお，サブページ分割をする場合は，ページ長は4,096バイト固定になります。

ページ内の未使用領域の比率の設定

「3.2.5　レコード格納時の空き領域の作成（サブページ分割をしない場合）」を参照してください。

サブページ

サブページ長の決定

サブページ長については，「3.2.4　サブページの設計」を参照してください。

サブページ内の未使用領域の比率の設定

「3.2.6　レコード格納時の空き領域の作成（サブページ分割をする場合）」を参照してください。

(3)　事前割り当てページ数または事前割り当てサブページ数の算出【4V FMB】

事前割り当てページまたは事前割り当てサブページに格納するファミリについては，そのファミリが使用するページ数またはサブページ数を個別に見積もります。

次に示す計算式から，レコードが使用する総領域長を計算してください。サブページ分割をしない場合は，「表3-9　見積もりに必要な項目」の項番5，8について※，レコードが使用する総領域長を計算してください。サブページ分割をする場合は，「表3-14　見積もりに必要な項目」の項番6，9について※，レコードが使用する総領域長を計算してください。

注※

事前割り当てページまたは事前割り当てサブページにレコードを格納する場合，ページ切り替え指定によって，ページまたはサブページを切り替えることはできません。

変数の説明

e：RDエリアに格納するレコード型の総数

n1i：各レコード型のデータロード時に格納するレコード件数（ページ切り替え指定なし）

u2i：各レコード型のデータロード後に格納するレコード件数（ページ切り替え指定なし）

Li：各レコード型のレコード長

また，次の計算式を使って，平均領域長を計算してください。

上記の平均領域長を使って，次の計算式からファミリが使用するページ数またはサブページ数を計算してください。

ファミリが使用するページ数を求める場合

ファミリが使用するサブページ数を求める場合

変数の説明

e：RDエリアに格納するレコード型の総数

n1i：各レコード型のデータロード時に格納するレコード件数（ページ切り替え指定なし）

u2i：各レコード型のデータロード後に格納するレコード件数（ページ切り替え指定なし）

b：レコードを格納するRDエリアのページ長

spl：サブページ長

サブページ長の求め方については，「3.2.4(7)　サブページ長（サブページ分割数）の設計方針」を参照してください。

注※

1.3は次の内容を考慮した値です。ファミリ内のレコードが非連続のデータページへ分散することを防止したい場合，1.3より大きい値を設定してください。

データロード後に格納するレコード件数が想定よりも多くなり，事前割り当てページまたは事前割り当てサブページが不足すると，追加で事前割り当てページまたは事前割り当てサブページが確保されます。

(4)　平均的なファミリが使用するページ数またはサブページ数の算出

平均的なファミリが使用するページ数またはサブページ数は，事前割り当てページまたは事前割り当てサブページに格納するファミリを除外して見積もります。

次に示す計算式から，レコードが使用する総領域長を計算してください。サブページ分割をしない場合は，「表3-9　見積もりに必要な項目」の項番5，9について，レコードが使用する総領域長を計算してください。サブページ分割をする場合は，「表3-14　見積もりに必要な項目」の項番6，10について，レコードが使用する総領域長を計算してください。

変数の説明

e：RDエリアに格納するレコード型の総数

Li：各レコード型のレコード長

n1i：各レコード型のデータロード時に格納するレコード件数（ページ切り替え指定なし）

s2i：各レコード型のデータロード後に格納するレコード件数（ページ切り替え指定なし，かつセグメント内の空きページを使用するレコード）

また，次の計算式を使って，平均領域長を計算してください。

変数の説明

e：RDエリアに格納するレコード型の総数

n1i：各レコード型のデータロード時に格納するレコード件数（ページ切り替え指定なし）

s2i：各レコード型のデータロード後に格納するレコード件数（ページ切り替え指定なし，かつセグメント内の空きページを使用するレコード）

上記の平均領域長を使って，次の計算式から平均的なファミリが使用するページ数またはサブページ数を計算してください。

平均的なファミリが使用するページ数を求める場合

平均的なファミリが使用するサブページ数を求める場合

変数の説明

e：RDエリアに格納するレコード型の総数

b：レコードを格納するRDエリアのページ長

C：ページ内の未使用領域の比率

spl：サブページ長（サブページ長の求め方については，「3.2.4(7)　サブページ長（サブページ分割数）の設計方針」を参照してください）

D：サブページ内の未使用領域の比率

t1i：各レコード型のデータロード時に格納するレコード件数（ページ切り替え'O'指定）

c1i：各レコード型のデータロード時に格納するレコード件数（ページ切り替え'C'指定）

n1i：各レコード型のデータロード時に格納するレコード件数（ページ切り替え指定なし）

t2i：各レコード型のデータロード後に格納するレコード件数（ページ切り替え'O'指定）

c2i：各レコード型のデータロード後に格納するレコード件数（ページ切り替え'C'指定）

s2i：各レコード型のデータロード後に格納するレコード件数（ページ切り替え指定なし，かつセグメント内の空きページを使用するレコード）

(5)　セグメントサイズの設計

ユーザ用RDエリアのセグメントサイズの設計指針を次の表に示します。

表3‒32　セグメントサイズの設計指針

設計項目

説明

セグメントサイズの決定

セグメントサイズ（1セグメント当たりのページ数）は，平均的なファミリが使用するページ数にすることを推奨します。

詳細については，「3.2.2　セグメントの設計」，および「3.5.5(4)　平均的なファミリが使用するページ数またはサブページ数の算出」を参照してください。

なお，サブページ分割をする場合は，次に示す計算式で平均的なファミリが使用するページ数を求めてください。

↑平均的なファミリが使用するサブページ数÷サブページ分割数↑

また，マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「セグメントサイズの決定」も参照してください。

セグメント内の空きページの比率の設定

サブページ分割をしない場合

「3.2.5　レコード格納時の空き領域の作成（サブページ分割をしない場合）」を参照してください。

サブページ分割をする場合

「3.2.6　レコード格納時の空き領域の作成（サブページ分割をする場合）」を参照してください。

(6)　レコードを格納するデータページ数の算出

レコードを格納するデータページ数は，次に示す計算式で求めることができます。

サブページ分割をしない場合

計算式中の平均的なファミリが使用するページ数は，「表3-9　見積もりに必要な項目」の項番1〜7および9を使用して計算してください。また，計算式中の事前割り当てページ数の合計値は，「表3-9　見積もりに必要な項目」の項番5および8を使用して計算してください。

サブページ分割をする場合

計算式中の平均的なファミリが使用するサブページ数は，「表3-14　見積もりに必要な項目」の項番1〜8および10を使用して計算してください。また，計算式中の事前割り当てサブページ数の合計値は，「表3-14　見積もりに必要な項目」の項番6および9を使用して計算してください。

変数の説明

S：データベース初期設定ユティリティ（pdinit），またはデータベース構成変更ユティリティ（pdmod）で指定した1セグメントのページ数（セグメントサイズ）

ppn：事前割り当てページの合計数

spn：レコードを格納するデータページのサブページ分割数

psn：事前割り当てサブページの合計数

注※1

1.3は次の内容を考慮した値です。内容を確認して，容量が大きくなることが予想される場合，1.3より大きい値を設定してください。

SDBデータベースを操作するAPIまたはDMLによるレコード追加時に，ほかのトランザクションによって排他を取得できない場合，想定した格納位置とは異なる場所にレコードが格納されることがあります。その結果，格納効率が悪くなり容量が増加することがあります。

各レコード型の平均領域長から計算するため，実際のレコード格納時のレコードサイズ，およびレコードの格納順序によっては，格納効率が悪くなり容量が増加することがあります。

平均的なファミリが使用するページ数またはサブページ数から見積もるため，ファミリ間にばらつきがある場合，計算結果以上に容量が大きくなることがあります。

注※2

事前割り当てページまたは事前割り当てサブページを確保するファミリを除外して計算してください。

(7)　ユーザ用RDエリアに必要な容量の算出

全レコードの格納に必要なページ数から，ユーザ用RDエリアに必要な容量を算出します。計算式を次に示します。

a×（b＋c）              （単位：バイト）

変数の説明

a：ユーザ用RDエリアのページ長

b：全レコードの格納に必要なページ数

c：ディレクトリページ部分の総ページ数

ディレクトリページの総ページ数については，マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「ユーザ用RDエリアの容量の見積もり」の「ディレクトリページ部分の総ページ数の計算式」を参照してください。

(8)　インデクスを格納するページ数の見積もり

インデクスを格納するページ数の見積もりについては，マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「ユーザ用RDエリアの容量の見積もり」の「インデクスの格納ページ数の計算方法」を参照してください。

なお，マニュアルを参照するときには次の点に注意してください。

「CREATE INDEX」を「SDBデータベース定義」に読み替えてください。

クラスタキーの記載は無視してください。

仮想ルートレコード型に定義したシーケンシャルインデクスについては，インデクスキーとレコード実現値の関係が通常2対1※になります。そのため，マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「ユーザ用RDエリアの容量の見積もり」の「インデクスの格納ページ数の計算方法」で求めたインデクスページ数を2倍して，当該インデクスのインデクスページ数としてください。

注※

詳細については，「2.3.9　シーケンシャルインデクス」を参照してください。

インデクスの格納ページ数の計算で使用する変数を，次のとおり読み替えてください。

b：SDBデータベース格納定義のシーケンシャルインデクス定義，または二次インデクス定義で指定したPCTFREE句のページ内の未使用領域の比率※1（％）

c，ｈ：キーの種類の個数

d：1

e，f：0

g：シーケンシャルインデクス，または二次インデクスのキーとなる構成要素の長さ※2（バイト）

注※1

ページ内の未使用領域の比率を指定しない場合は，30％とします。

注※2

キーとなる構成要素の長さは，次に示す式で求めます。

　↑キー長÷4↑×4

式中のキー長は，次の表を参照して求めてください。インデクスを構成する構成要素が複数の場合は，各構成要素に対してキー長を求め，キー長の合計を上記の式中のキー長としてください。

4V AFMのSDBデータベースの仮想ルートレコード型に定義するシーケンシャルインデクスのキー長は，次の手順で算出してください。

1.　次の表の「インデクスを構成する構成要素が複数の場合」のキー長から，構成要素のキー長を求めます。インデクスを構成する構成要素が複数の場合は，各構成要素に対してキー長を求め，キー長の合計を算出します。

2.　1.で求めたキー長に6バイトを加算します。この値を上記の式中のキー長としてください。

4V AFMのSDBデータベースの仮想ルートレコード型には，HiRDB/SDが内部的に使用するシステム用構成要素が定義されます。そのため，SDBデータベース格納定義のORDER KEY句に指定した構成要素が1つだけであっても，上記の手順でキー長を算出してください。

表3‒33　データ型ごとのキー長

データ型

キー長

インデクスを構成する構成要素が1つの場合

インデクスを構成する構成要素が複数の場合

INTEGER

4

5

SMALLINT

2

3

PACKED [DECIMAL FIXED] 整数部〔，小数部〕

↓(整数部の桁数＋小数部の桁数)÷2↓＋1

↓(整数部の桁数＋小数部の桁数)÷2↓＋2

CHARACTER，XCHARACTER

定義した構成要素の長さ

定義した構成要素の長さ＋1

3.5.6　ユーザ用RDエリア（追い付き反映キー対応表を格納する）の容量の見積もり【4V FMB】

更新可能なオンライン再編成の実行時に使用する追い付き反映キー対応表，およびそのインデクスを格納するユーザ用RDエリアの容量見積もりについては，マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「ユーザ用RDエリアの容量の計算方法」を参照してください。

(1)　表の格納ページ数を計算する際の留意事項

表の格納ページ数を計算する際は，マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「ユーザ用RDエリアの容量の計算方法」の「表の格納ページ数の計算方法」の説明に従ってください。ただし，次の点に留意してください。

「表の格納ページ数の計算方法」では，「FIX指定がない場合」の計算式を使用してください。

「計算式中で使用する変数」は，次の変数を使用してください。

a：表に格納する行の総数（件）

更新可能なオンライン再編成を実行するSDBデータベースに格納されているレコードの件数＋更新可能なオンライン再編成中に再編成対象のSDBデータベースに対してレコードの格納（STORE）を実行するレコードの件数

b：ユーザ用RDエリアのページ長（バイト）

c：未使用領域の比率（％）

未使用領域の比率は，0％で計算してください。

di：各列のデータ長（バイト）

各列のデータ長の合計は，418バイトで計算してください。

ei：列のデータ長の平均値（バイト）

列のデータ長の平均値は，0バイトで計算してください。

f：表に定義する列の総数（個）

表に定義されている列の数は，10個で計算してください。

g：表を格納するユーザ用RDエリアのセグメントサイズ（ページ）

h：セグメント内の空きページ比率（％）

セグメント内の空きページ比率は，0％で計算してください。

(2)　インデクスの格納ページ数を計算する際の留意事項

インデクスの格納ページ数を計算する際は，マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「ユーザ用RDエリアの容量の計算方法」の「インデクスの格納ページ数の計算方法」の説明に従ってください。ただし，次の点に留意してください。

「計算式中で使用する変数」は，次の変数を使用してください。

a：ユーザ用RDエリアのページ長（バイト）

c：未使用領域の比率（％）

未使用領域の比率は，0％で計算してください。

c：キー値の重複が200以下のキーの種類の個数（個）

更新可能なオンライン再編成を実行するSDBデータベースに格納されているレコードの件数＋更新可能なオンライン再編成中に再編成対象のSDBデータベースに対してレコードの格納（STORE）を実行するレコードの件数

d：キー値の重複が200以下のキーの重複数の平均値（個）

0を代入して計算してください。

e：キー値の重複が201以上のキーの種類の個数（個）

0を代入して計算してください。

f：キー値の重複が201以上のキーの重複数の平均値（個）

0を代入して計算してください。

g：DB格納キー長（バイト）

73＋ルートレコードのデータベースキー長※＋SDBデータベース定義中の最大階層数×4

注※

ルートレコード型で指定したデータベースキー（SDBデータベース定義のTYPE句のデータ種別1にKを指定した構成要素の合計長）です。

h：次の計算結果の値

更新可能なオンライン再編成を実行するSDBデータベースに格納されているレコードの件数＋更新可能なオンライン再編成中に再編成対象のSDBデータベースに対してレコードの格納（STORE）を実行するレコードの件数

3.6　ユティリティ実行時の容量の見積もり

ユティリティ実行時のファイル容量およびメモリ所要量の見積もり方法について説明します。

3.6.1　ユティリティ実行時のファイル容量の見積もり

(1)　HiRDB/SDデータベース作成ユティリティ（pdsdblod）実行時のファイルの容量

HiRDB/SDデータベース作成ユティリティ（pdsdblod）で使用するファイルの容量の計算式を次の表に示します。

表3‒34　ファイル容量の計算式（pdsdblod）

ファイルの種類

計算式（単位：バイト）

入力データファイル

実行結果ファイル

論理エラー情報ファイル

インデクス情報ファイル

上記の計算式で，1インデクス情報に必要な容量が求まります。作成対象のインデクスごとに，該当するインデクス格納用RDエリア数分を計算して合計してください。

ワークファイル（infmsglvl=lvl2指定時）

中間ファイル

変数の説明

a：レコード長

b：入力行数

c：レコード格納用RDエリア数

d：レコード型の数

e：エラーデータ件数

g：プリフィクス長

Kij：インデクスのキー長

インデクスのキー長の計算式については，「3.5.5(8)　インデクスを格納するページ数の見積もり」を参照してください。

m：インデクス数（1レコード型当たり）

q：レコード型名長

r：インデクス名称長

s：RDエリア名称長

t：サーバ名称長

u：MIN（150，インデクス情報ファイルの絶対パス名長）

v：SDBデータベースのキー長

Wi：レコード型の階層レベル（ルートレコードを1とする階層番号）

indxrec：

・データロードの場合

インデクスを定義したレコード型の入力データファイル中のレコード件数（RDエリア単位の値）を代入してください。ただし，4V AFMのSDBデータベースのシーケンシャルインデクスについて見積もる場合は，「入力データファイル中に存在するデータベースキーの数（RDエリア単位の値）×2」を代入してください。

・インデクスの再作成の場合

0を代入してください。

stkrec：

・初期データロードの場合（environment文のpurgeオペランドにyesを指定した場合）

0を代入してください。

・追加データロードの場合（environment文のpurgeオペランドにnoを指定した場合）

インデクスを定義したレコード型のSDBデータベース中に格納済みのレコード件数（RDエリア単位の値）を代入してください。

・インデクスの再作成の場合

インデクスを定義したレコード型のSDBデータベース中に格納済みのレコード件数（RDエリア単位の値）を代入してください。ただし，4V AFMのSDBデータベースのシーケンシャルインデクスについて見積もる場合は，「SDBデータベース中に格納済みのデータベースキーの数（RDエリア単位の値）×2」を代入してください。

pgwng：事前ページ割り当て警告件数

(2)　HiRDB/SDデータベース再編成ユティリティ（pdsdbrog）実行時のファイルの容量

HiRDB/SDデータベース再編成ユティリティ（pdsdbrog）で使用するファイルの容量の計算式を次の表に示します。

表3‒35　ファイル容量の計算式（pdsdbrog）

ファイルの種類

計算式（単位：バイト）

アンロードデータファイル

アンロードの実行結果ファイル

500＋140×ｄ

変数の説明

ａ：レコード長

ｂ：プリフィクス長

ｃ：レコード実現値

ｄ：レコード型数

(3)　データベース複写ユティリティ（pdcopy）実行時のファイルの容量

データベース複写ユティリティ実行時のファイル容量については，マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「データベース複写ユティリティ（pdcopy）実行時のファイルの容量」を参照してください。

参照時には，差分バックアップファイルの容量算出式について，次の計算式で算出してください。

変数の説明

P：バックアップ対象RDエリアの更新ページ数

L：ページ長

n：複写するRDエリアの数

変数Pのバックアップ対象RDエリアの更新ページ数は，前回のフルバックアップまたは差分バックアップの取得時から，現在までの間に更新されたページ数を意味しています。

レコードを格納しているRDエリアとインデクスを格納しているRDエリアをそれぞれ計算してください。

・レコードを格納しているRDエリアの場合

バックアップ対象RDエリアの更新ページ数（P）は，次の計算式に従って計算します。

P = MIN（R，fi）

格納，更新，削除対象以外のレコードに対して，レコード中のポインタを更新することによって，Pの数が見積もりより多くなることがあります。

変数の説明

R：前回のフルバックアップまたは差分バックアップの取得時から，次の機能で操作したレコードの数（同一レコードの操作は加算しない）

・レコードの格納（HiRDB/SDデータベース作成ユティリティ（pdsdblod）で追加するレコードを含む）

・レコードの更新

・レコードの削除

・一括削除（SDBデータベースを操作するAPI1回の実行について，操作したレコードの数を1とする）

fi：RDエリアの使用ページ数

データベース状態解析ユティリティ（pddbst）のRDエリア単位の状態解析（物理的解析）結果から得られる使用ページ数です。

・インデクスを格納しているRDエリアの場合

インデクスを格納するユーザ用RDエリアの更新ページ数（P）は，次の計算式に従って計算します。

P = MIN（X，fi）

変数の説明

X：インデクスが定義されたレコード型に対して，前回のフルバックアップまたは差分バックアップの取得時から，次の機能で操作したレコードの数（同一レコードの操作は加算しない）

・レコードの格納（HiRDB/SDデータベース作成ユティリティ（pdsdblod）で追加するレコードを含む）

・レコードの更新

・レコードの削除

fi：RDエリアの使用ページ数

データベース状態解析ユティリティ（pddbst）のRDエリア単位の状態解析（物理的解析）結果から得られる使用ページ数です。

(4)　統計解析ユティリティ（pdstedit）実行時のファイルの容量

統計解析ユティリティ（pdstedit）で使用するファイルの容量の計算式を次の表に示します。その他，統計解析ユティリティ（pdstedit）実行時に使用するファイルの容量見積もりについては，マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「統計解析ユティリティ（pdstedit）実行時のファイルの容量」を参照してください。

表3‒36　ファイル容量の計算式（pdstedit）

ファイルの種類

容量の計算式（単位：バイト）

ワーク用ファイル

UAPに関する統計情報

（840×実行UAP数または実行トランザクション数）×2

DAT形式ファイル

1,650×実行UAP数または実行トランザクション数

(5)　データベース状態解析ユティリティ（pddbst）実行時のファイルの容量

データベース状態解析ユティリティ（pddbst）の「RDエリア単位の論理的解析」で使用するファイルの容量の計算式を次の表に示します。

表3‒37　ファイル容量の計算式（pddbst）

ファイルの種類

容量の計算式（単位：キロバイト）

ワーク用ファイル

RDエリア単位の論理的解析

注※

上記計算式中のインデクスは，SDBデータベースのインデクス，およびRDBのB-treeインデクスの両方が該当します。

変数の説明

ａ：解析対象のRDエリア数

データベース状態解析ユティリティ（pddbst）実行時に使用するそのほかのファイルの容量見積もりについては，マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「データベース状態解析ユティリティ（pddbst）実行時のファイルの容量」を参照してください。

なお，マニュアル「HiRDB Version 9 システム導入・設計ガイド」に記載されている計算式を使って計算する際，計算式中の係数を4.1から6.2に変更して計算してください。

（例）

「RDエリア単位の物理的解析」のワーク用ファイルの容量を求める場合は，次のように計算式中の係数を4.1から6.2に変更して計算してください。

1＋4.1×a※ → 1＋6.2×a

注※

マニュアル「HiRDB Version 9 システム導入・設計ガイド」に記載されている計算式です。

(6)　DMLプリプロセサ（pdsdbcbl）実行時のファイルの容量【SD FMB】

DMLプリプロセサ（pdsdbcbl）実行時のファイル容量の計算式を次の表に示します。

表3‒38　ファイル容量の計算式（pdsdbcbl）

ファイルの種類

容量の計算式（単位：バイト）

ポストソースファイル

uapsrc＋150×80×dmln＋100×80

変数の説明

uapsrc：UAPソースファイルの容量

dmln：UAPソースファイル内のDMLの数

3.6.2　ユティリティ実行時のメモリ所要量の見積もり

(1)　HiRDB/SDデータベース作成ユティリティ（pdsdblod）実行時のメモリ所要量

HiRDB/SDデータベース作成ユティリティ（pdsdblod）実行時のメモリ容量の計算式を次の表に示します。

表3‒39　メモリ所要量（pdsdblod）

項目

メモリ所要量の計算式（キロバイト）

コマンドプロセス（pdsdblod）が使用するプロセス固有領域

49,000＋4.7＋luntsvr＋lsdbcpc＋lsdbdir＋dbs

ユティリティサーバプロセス（pdsdblodm）が使用するプロセス固有領域

58,900＋0.6＋luntsvr＋lsdbcpc＋lsdbdir

ユーザサーバプロセス（pdbes）が使用するプロセス固有領域

94,900＋0.3＋luntsvr＋lsdbcpc＋lsdbdir＋dbs＋lload＋lloada＋lfwrt＋lindx＋lindxa＋lscana＋lpurge

計算式中で使用している変数の値および意味を次に示します。

変数

変数の値および意味

luntsvr

0.02＋（unit×0.04）＋（1＋ds＋fes＋bes）×0.05

unit：全ユニット数

ds：全ディクショナリサーバ数

fes：全フロントエンドサーバ数

bes：全バックエンドサーバ数

lsdbcpc

9.6＋0.1×recara＋0.2×rec

recara：格納対象の格納レコード用RDエリア数

rec：格納対象SDBデータベースの全レコード型数

lsdbdir

0.18＋0.05×area＋0.05×set＋0.06×rec＋0.06×cmp＋0.14×recara＋0.07×（1＋secidx）

area：格納対象SDBデータベースの全RDエリア数

set：格納対象SDBデータベースの全親子集合の数

rec：格納対象SDBデータベースの全レコード型数

cmp：格納対象SDBデータベースの全構成要素数

SDBデータベース定義でOCCURS句を指定する場合，システム内で生成される構成要素数を含みます。

recara：lsdbcpcで記載したrecaraと同じです。

secidx：格納対象SDBデータベースの全二次インデクス数

dbs

SDBデータベース情報長（単位：キロバイト）

「3.4.2(2)(a)　SDBディレクトリ情報長の計算式」の変数dbsの説明を参照してください。

lload

インデクス再作成機能を実行しない場合に加算します。

40.3＋lmaxrec＋0.02×recara＋0.01×divrec＋2×lbuf＋lstor

lmaxrec：格納対象SDBデータベースの全レコード型のうち，最大のレコード長

recara：lsdbcpcで記載したrecaraと同じです。

divrec：ルートレコードの横分割格納RDエリア数

lbuf：システム共通定義のpd_utl_file_buff_sizeオペランドに指定した値

lstor：「3.4.3(2)　SDBデータベースを操作するAPIまたはDMLの実行時に，バックエンドサーバで確保するメモリ」を参照して算出してください。使用するpdsdblodの値を次に示します。

・個別開始要求回数：1

・API個別算出式：STORE算出式

lloada

インデクス再作成機能を実行しない場合に加算します。

↑（（128＋24×recarea）÷1,024）↑

recarea：格納対象の格納レコード用RDエリア数

lfwrt

フォーマットライトまたはインデクス再作成機能を実行しない場合に加算します。

2×lmaxrec＋0.1×lkeydef

lmaxrec：lloadで記載したlmaxrecと同じです。

lkeydef：SDBデータベース格納定義のKEYDEF DATAに指定した数

lindx

インデクス一括作成モードでインデクスを作成またはインデクス再作成機能を実行する場合に加算します。

1.5＋（linxf＋0.1＋0.1×inxkey）×（1＋secidx）×inxara＋lsort

linxf：インデクス情報ファイルの絶対パス名長

inxkey：各インデクスキーの構成要素数

secidx：lsdbdirで記載したsecidxと同じです。

inxara：格納対象のインデクス格納用RDエリア数

lsort：idxload文sortdirオペランドのソート用バッファサイズ指定値（省略時は1）

lindxa

インデクス一括作成モードでインデクスを作成またはインデクス再作成機能を実行する場合に加算します。

↑（（4,424＋16×（rec＋idx＋2）＋8×idx×（recarea＋2）＋8,256×MIN（idx×recarea, 7,000））÷1,024）↑

rec：格納対象SDBデータベースの全レコード型数

idx：格納対象SDBデータベースの全インデクス数

recarea：格納対象の格納レコード用RDエリア数

lscana

追加データロードまたはインデクスの再作成を実行する場合に加算します。

↑｛（56,290＋2×xpgsz＋24×recarea2＋2×rec2）÷1024｝↑

xpgsz：インデクスを格納しているRDエリアの中で最大のページサイズ

recarea2：格納対象の格納レコード用RDエリア数（インデクスの再作成の場合は1）

rec2：格納対象のSDBデータベースの全レコード型数（インデクスの再作成の場合は1）

lpurge

environment文のpurgeオペランドにyesを指定する場合に加算します。

2.3＋0.01×recara＋（0.3＋0.1×inxkey）×（1＋secidx）×inxara

recara：lsdbcpcで記載したrecaraと同じです。

inxkey：lindxで記載したinxkeyと同じです。

secidx：lsdbdirで記載したsecidxと同じです。

inxara：lindxで記載したinxaraと同じです。

(2)　HiRDB/SDデータベース再編成ユティリティ（pdsdbrog）実行時のメモリ所要量

HiRDB/SDデータベース再編成ユティリティ（pdsdbrog）実行時のメモリ容量の計算式を次の表に示します。

表3‒40　メモリ所要量（pdsdbrog）

項目

メモリ所要量の計算式（キロバイト）

コマンドプロセス（pdsdbrog）が使用するプロセス固有領域

49,100＋4.5＋runtsvr＋rsdbcpc＋rsdbdir＋rsdbrog＋dbs＋rgen

ユティリティサーバプロセス（pdsdbrogm）が使用するプロセス固有領域

58,900＋0.6＋runtsvr＋rsdbrog

ユーザサーバプロセス（pdbes）が使用するプロセス固有領域

93,600＋0.3＋rsdbcpc＋rsdbrog＋dbs＋runlod

計算式中で使用している変数の値および意味を次に示します。

変数

変数の値および意味

runtsvr

0.02＋（unit×0.04）＋（1＋ds＋fes＋bes）×0.05

unit：全ユニット数

ds：全ディクショナリサーバ数

fes：全フロントエンドサーバ数

bes：全バックエンドサーバ数

rsdbcpc

idxara：アンロード対象エリアに対応するSDBデータベース格納定義のSTORAGE RECORD句下にあるSEQUENTIAL句下のWITHIN句に指定したシーケンシャルインデクス用RDエリア数と，SECONDARY INDEX句下にあるWITHIN句に指定した二次インデクス用RDエリア数の和

同一RDエリア名はカウントしません（重複排除）。

rec：SDBデータベース定義のRECORD句の指定数（レコード型の数）

CMPi：SDBデータベース定義のRECORD句で指定した構成要素数

集団項目を含みます。また，SDBデータベース定義でOCCURS句を指定する場合，システム内で生成される構成要素数を含みます。

rsdbdir

0.18＋0.05×rec＋0.14×1＋（0.07×（seqidx＋secidx）×rec）

rec：rsdbcpcで記載したrecと同じです。

seqidx：対応するSDBデータベース格納定義のSTORAGE RECORD句下にあるSEQUENTIAL句の指定数

secidx：対応するSDBデータベース格納定義のSTORAGE RECORD句下にあるSECONDARY INDEX句の指定数

rsdbrog

2.32＋（1＋idxara）×0.17

idxara：rsdbcpcで記載したidxaraと同じです。

dbs

SDBデータベース情報長（単位：キロバイト）

「3.4.2(2)(a)　SDBディレクトリ情報長の計算式」の変数dbsの説明を参照してください。

rgen

0.04＋｛0.1×（allara＋1＋idxara）｝

allara：対応するSDBデータベース格納定義に指定したRDエリア数※。同一RDエリア名はカウントしません（重複排除）。

idxara：rsdbcpcで記載したidxaraと同じです。

runlod

0.6＋rsdi＋rrecun＋rwrite＋rdml

rsdi：0.8＋maxrl

maxrl：SDBデータベースで最大のレコード長

rrecun：0.04＋prefix×0.01＋maxrl

prefix：制御文ファイルのprefixオペランド指定値

maxrl：rsdiで記載したmaxrlと同じです。

rwrite：8.02＋fbuff×2

fbuff：システム共通定義のpd_utl_file_buff_sizeオペランド指定値

rdml：「3.4.3　プロセス固有メモリの見積もり」から算出してください。使用するpdbesの値を次に示します。

・個別開始要求回数：1

・API個別算出式 = FETCH算出式

注※

格納レコード用RDエリア数と，シーケンシャルインデクス用RDエリア数と，二次インデクス用RDエリア数の総和

(3)　HiRDB/SDデータベースアクセスユティリティ（pdsdbexe）実行時のメモリ所要量【4V FMB，4V AFM】

HiRDB/SDデータベースアクセスユティリティ（pdsdbexe）実行時のメモリ容量の計算式を次の表に示します。

表3‒41　メモリ所要量（pdsdbexe）

項目

メモリ所要量の計算式（キロバイト）

コマンドプロセス（pdsdbexe）が使用するプロセス固有領域

253＋66×l_cmd＋0.2×n_sdb＋30.3×n_rec

＋0.1×n_cmp

コマンドプロセス（pdsdbexe）が使用する仮想メモリサイズ

41,400

計算式中で使用している変数の値および意味を次に示します。

変数

変数の値および意味

l_cmd

｛pdsdbexe操作コマンドの文字列長の最大長（バイト）÷65,536｝＋1

n_sdb

SDBデータベース数

n_rec

SDBデータベース内のレコード数

n_cmp

SDBデータベース内の構成要素数（集団項目を含んだ値）

(4)　データベース複写ユティリティ（pdcopy）実行時のメモリ所要量

データベース複写ユティリティ実行時のメモリ所要量については，マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「データベース複写ユティリティ（pdcopy）実行時のメモリ容量」を参照してください。

(5)　データベース回復ユティリティ（pdrstr）実行時のメモリ所要量

データベース回復ユティリティ（pdrstr）実行時のメモリ所要量については，マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「データベース回復ユティリティ（pdrstr）実行時のメモリ容量」を参照してください。

(6)　データベース状態解析ユティリティ（pddbst）実行時のメモリ所要量

データベース状態解析ユティリティ（pddbst）実行時のメモリ所要量については，マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「データベース状態解析ユティリティ（pddbst）実行時のメモリ所要量」を参照してください。

なお，参照する際，「計算式で使用する変数」については，次の変数を使用してください。

α（単位：バイト）

｛28000＋A＋（10592×a）＋（10592×b）＋（10592×c）＋（2264×d）＋（848×e）＋（272×f）＋（432×g）＋（304×h）＋（1024×r）｝

β（単位：バイト）

｛100000＋（1024×d）＋（2784×i）＋（2784×j）＋（2784×k）＋（1024×r）｝

r：解析対象のRDエリアがあるBESが解析するルートレコード型数

(7)　DMLプリプロセサ（pdsdbcbl）実行時のメモリ所要量【SD FMB】

DMLプリプロセサ（pdsdbcbl）実行時のメモリ容量の計算式を次の表に示します。

表3‒42　メモリ所要量（pdsdbcbl）

項目

メモリ所要量の計算式（キロバイト）

コマンドプロセス（pdsdbcbl）が使用するプロセス固有領域

計算式中で使用している変数の値および意味を次に示します。

変数

変数の値および意味

dbn

SDBデータベース節に指定したSDBデータベースの数

dbs

SDBデータベース節に指定したSDBデータベースのSDBデータベース情報長

SDBデータベース情報長の求め方については，「3.4.2(2)(a)　SDBディレクトリ情報長の計算式」を参照してください。

3.7　OSのオペレーティングシステムパラメタの見積もり

ここでは，オペレーティングシステムパラメタの見積もりについて説明します。

3.7.1　カーネルパラメタの見積もり

Linuxのオペレーティングシステムパラメタ（カーネルパラメタ）の指定値を見積もります。見積もり方法の詳細については，マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「Linuxのオペレーティングシステムパラメタの見積もり」を参照してください。

なお，HiRDB/SD定義ユティリティ（pdsdbdef），HiRDB/SDデータベース作成ユティリティ（pdsdblod），およびHiRDB/SDデータベース再編成ユティリティ（pdsdbrog）の実行時に使用する通常ファイルのオープン処理に伴い，OSのオペレーティングシステムパラメタ（カーネルパラメタ）のfs.file-maxが消費されます。各ユティリティが，通常ファイルとして使用するファイルを次に示します。

HiRDB/SD定義ユティリティ（pdsdbdef）が通常ファイルで使用するファイル

SDB制御文ファイル

SDB定義文ファイル

実行結果ファイル

HiRDB/SDデータベース作成ユティリティ（pdsdblod）が通常ファイルで使用するファイル

制御文ファイル

入力データファイル

実行結果ファイル

論理エラー情報ファイル

インデクス情報ファイル

ソート用ワークファイル

中間ファイル

HiRDB/SDデータベース再編成ユティリティ（pdsdbrog）が通常ファイルで使用するファイル

制御文ファイル

アンロードデータファイル

アンロードの実行結果ファイル

fs.file-maxについては，OSのマニュアルを参照してください。

3.7.2　メッセージキューおよびセマフォ所要量の見積もり

メッセージキューおよびセマフォ所要量の見積もりについては，マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「メッセージキューおよびセマフォ所要量の見積もり」の「HiRDB/パラレルサーバの場合の計算式」を参照してください。

3.8　排他資源数の見積もり

SDBデータベースを操作するAPIまたはDMLや，ユティリティを実行するときに必要となる排他資源数の概算式を示します。概算式から最大の排他資源数を算出し，さらに余裕値を加算して，pd_lck_pool_sizeオペランドにプールサイズを設定してください。pd_lck_pool_sizeオペランドについては，マニュアル「HiRDB Version 9 システム定義」の「排他制御に関するオペランド」を参照してください。

ここで示す排他資源数は，トランザクション内で有効となります。1つのトランザクション内で複数のSDBデータベースを操作するAPIまたはDMLを実行する場合，マニュアル「HiRDB Version 9 システム定義」の「排他資源数の見積もり」，および「3.8.1　定義系SQL実行時の排他資源数」〜「3.8.2　SDBデータベースを操作するAPIまたはDMLの実行時の排他資源数」で示す概算式から算出した排他資源数の値の総和が必要です。ただし，すでに排他が掛かっている場合は不要となります。

3.8.1　定義系SQL実行時の排他資源数

定義系SQL実行時の排他資源数については，マニュアル「HiRDB Version 9 システム定義」の「排他資源数の見積もり」の「定義系SQL」を参照してください。

3.8.2　SDBデータベースを操作するAPIまたはDMLの実行時の排他資源数

SDBデータベースを操作するAPIまたはDMLの実行時に，バックエンドサーバで必要とする排他資源数の概算式を次に示します。

なお，SD FMBのSDBデータベースを操作する場合，SDB用UAP環境定義のsubschemaオペランドに指定するSD排他モードとアクセス目的の指定の組み合わせが次のどれかのときは，ページ（サブページ分割をしている場合はサブページ）に排他が掛かりません。

SD排他モードがprotectedで，アクセス目的がretrieveの場合

SD排他モードがexclusiveで，アクセス目的がretrieveの場合

SD排他モードがexclusiveで，アクセス目的がupdateの場合

上記の条件に該当する場合は，排他資源数は0として見積もってください。

(1)　レコードの検索（FETCH），または位置指示子の位置づけ（FIND）

レコードの検索（FETCH），または位置指示子の位置づけ（FIND）をするときの排他資源数の概算式について説明します。

4V FMBまたは4V AFMのSDBデータベースをAPIで操作する場合

SDBデータベースを操作するAPIの排他モード2の指定によって，(a)または(b)の計算式で排他資源数を求めてください。

SD FMBのSDBデータベースをDMLで操作する場合

SDB用UAP環境定義のlockrangeオペランドにtransactionを指定している場合，またはlockrangeオペランドを省略している場合は，(a)の計算式で排他資源数を求めてください。

lockrangeオペランドにcursorupdateを指定している場合は，(b)の計算式で排他資源

数を求めてください。

HiRDB/SDデータベースアクセスユティリティ（pdsdbexe）でSDBデータベースを操作する場合

STARTコマンドのAUTODEQオペランドにNOを指定している場合，またはAUTODEQオペランドの指定を省略している場合は，(a)の計算式で排他資源数を求めてください。

AUTODEQオペランドにYESを指定している場合は，(b)の計算式で排他資源数を求めてください。

(a)　SDBデータベースを操作するAPIの排他モード2が'C'の場合

検索対象のレコード格納用RDエリア数＋1
＋検索ヒットレコード実現値格納ページ数※1
＋利用するインデクスのインデクス格納用RDエリア数＋1※2
＋検索範囲キー値数※3

注※1

4V AFMのSDBデータベースで仮想ルートレコードの検索が発生する場合（該当データベースキー値に対する1回目のアクセス時）は2，それ以外は1を加算します。

ただし，SDBデータベースを操作するAPIの排他モード1に'N'（無排他モード）を指定する場合，またはTAMのデータベースの無排他検索機能が動作する場合は0を代入します。

サブページ分割をする場合は，「検索ヒットレコード実現値格納サブページ数」になります。

注※2

システム共通定義のpd_inner_replica_controlオペランドを指定している場合に加算します。

注※3

4V AFMのSDBデータベースで指定のRDエリアを検索範囲にする場合は，検索範囲開始キーから検索範囲終了キーまでのキー値数（検索開始から検索終了までの仮想ルートレコードのレコード実現値数）−1，それ以外は0を代入します。

なお，SDBデータベースを操作するAPIの排他モード1に'N'（無排他モード）を指定する場合，または4V TAMのSDBデータベースの場合は0を代入します。

(b)　SDBデータベースを操作するAPIの排他モード2が'D'の場合

検索対象のレコード格納用RDエリア数＋1
＋検索ヒットレコード実現値格納ページ数※1
＋利用するインデクスのインデクス格納用RDエリア数＋1※2

注※1

4V AFMのSDBデータベースで仮想ルートレコードの検索が発生する場合（該当データベースキー値に対する1回目のアクセス時，または4V AFMのSDBデータベースで指定のRDエリアを検索範囲としたとき）は2，それ以外は1を加算します。

サブページ分割をする場合は，「検索ヒットレコード実現値格納サブページ数」になります。

注※2

システム共通定義のpd_inner_replica_controlオペランドを指定している場合に加算します。

注意事項

SDBデータベースを操作するAPIまたはDMLの実行時には，不要なページまたはサブページの排他が解除されるため，確保している排他資源の総数を計算する場合には，単に積算しないでください。

また，SDBデータベースを操作するAPIの排他モード1に'N'（無排他モード）を指定する場合，またはTAMのデータベースの無排他検索機能が動作する場合は，排他自動解除機能が適用されないため，「3.8.2(1)(a)　SDBデータベースを操作するAPIの排他モード2が'C'の場合」の計算式を参照してください。

排他自動解除機能については，「2.9.4　排他自動解除機能」を参照してください。

(2)　レコードの格納（STORE）

一括削除後にレコードを格納する場合，削除前の一連番号の最大値に達するまでは，内部的にレコードの更新（MODIFY）と同等の変更処理に置き換わります。その場合の排他資源数は「3.8.2(2)(a)　一括削除したあとにレコードを格納する場合」を参照してください。それ以外の場合の排他資源数は「3.8.2(2)(b)　一括削除しないでレコードを追加する場合」を参照してください。

(a)　一括削除したあとにレコードを格納する場合

4＋利用するインデクスのインデクス格納用RDエリア数※1＋1※2＋1※3

注※1

二次インデクスが定義されたレコードの格納の場合は，2を加算します。

それ以外の場合は，1を加算します。

注※2

システム共通定義のpd_inner_replica_controlオペランドを指定している場合に加算します。

注※3

レコードの削除によって，当該データベースキー値を持つ子レコードが0件になったあとに実行する，1件目のレコードの格納の場合に加算します。

(b)　一括削除しないでレコードを追加する場合

格納対象RDエリア数※1＋4＋5※2
＋インデクスが定義された格納レコード実現値数※3＋1※4＋（事前割り当てページ数−1）※5

注※1

対象となるレコード型，インデクスが格納されているRDエリアの総数です。

注※2

直前および直後の子レコードがない場合は，その分減算します。また，親レコードがルートレコードの場合は1を，ルートレコードの追加の場合は2を減算します。

注※3

次の値を代入してください。

4V FMBまたはSD FMBのSDBデータベースでルートレコードの格納の場合：1

4V FMBのSDBデータベースで二次インデクスが定義されたレコードの格納の場合：1

4V AFMのSDBデータベースで二次インデクスが定義されたレコードの1件目の格納の場合：2

レコードの削除によって，当該データベースキー値を持つ子レコードが0件となったあとに実行する1件目のレコードの格納を含みます。

4V AFMのSDBデータベースで二次インデクスが定義されたレコードの2件目以降の格納の場合：1

4V AFMのSDBデータベースで二次インデクスが定義されていないレコードの1件目の格納の場合：1

レコードの削除によって，当該データベースキー値を持つ子レコードが0件となったあとに実行する1件目のレコードの格納を含みます。

それ以外の場合：0

注※4

システム共通定義のpd_inner_replica_controlオペランドを指定している場合に加算します。

注※5

該当するファミリに事前ページ割り当て機能を適用している場合，確保予定の事前割り当てページの数を加算します。なお，このレコードの格納でレコード実現値を格納するページ分については，加算済みであるため，1を減算しています。

サブページ分割をする場合は，「（事前割り当てサブページ数−1）」になります。

(3)　レコードの更新（MODIFY）

2＋変更レコード実現値格納ページ数※1＋1※2＋1※3

注※1

次に示す値を加算します。

・ユーザデータの変更だけの場合：1

・USERポインタの設定だけの場合：2

・USERポインタの設定の解除だけの場合：1

・ユーザデータの変更と，USERポインタの設定または設定の解除を同時に実行する場合：2

サブページ分割をする場合は，「変更レコード実現値格納サブページ数」になります。

注※2

システム共通定義のpd_inner_replica_controlオペランドを指定している場合に加算します。

注※3

ユーザデータの変更だけを行う場合，対象レコードがルートレコード以外であれば加算します。

USERポインタの設定または設定の解除を行う場合，親レコードがルートレコード以外であれば加算します。

(4)　レコードの削除（ERASE）

削除対象RDエリア数※1＋1＋削除レコード実現値格納ページ数※2＋4※3＋1※4
＋削除レコード実現値数※5＋1※6＋未使用の事前割り当てページ数※7

注※1

対象となるレコード型，インデクスが格納されているRDエリアの総数です。

注※2

サブページ分割をする場合は，「削除レコード実現値格納サブページ数」になります。

注※3

直前および直後の子レコードがない場合は，その分減算します。また，親レコードがルートレコードの場合は1を減算します。

注※4

システム共通定義のpd_inner_replica_controlオペランドを指定している場合に加算します。

注※5

インデクスが定義されたレコード実現値を削除する場合に加算します。

注※6

4V AFMのSDBデータベースで，当該データベースキー値を持つ子レコードが0件になる場合に加算します。

注※7

削除対象レコードがルートレコードであり，該当するファミリを格納するために事前割り当てページを確保している場合，レコードが格納されていない事前割り当てページ数を加算します。

サブページ分割をする場合は，「未使用の事前割り当てサブページ数」になります。

(5)　レコードの一括削除【4V DAM，4V SAM】

削除対象のレコード格納用RDエリア数＋3＋1※
＋利用するインデクスのインデクス格納用RDエリア数

注※

システム共通定義のpd_inner_replica_controlオペランドを指定している場合に加算します。

(6)　複数レコードの検索（FETCHDB ALL）【4V FMB】

検索対象RDエリア数※1＋1
＋1※2
＋1※3

注※1

前回の複数レコードの検索で取得したファミリの，続きのレコードを取得する場合は1（レコードを格納するRDエリア分），それ以外は2（レコードを格納するRDエリアおよびシーケンシャルインデクスを格納するRDエリア分）を加算します。

注※2

前回の複数レコードの検索で取得したファミリの，続きのレコードを取得する場合は0とします。

注※3

システム共通定義のpd_inner_replica_controlオペランドを指定している場合に加算します。

(7)　構成情報取得【4V AFM】

構成情報取得対象のレコード格納用RDエリア数＋1＋2※1
＋利用するインデクスのインデクス格納用RDエリア数＋1※2

注※1

対象の仮想ルートレコードが1つしか存在しない場合は，1となります。

また，SDBデータベースを操作するAPIの排他モード1に'N'（無排他モード）を指定する場合，またはTAMのデータベースの無排他検索機能が動作する場合は0となります。

注※2

システム共通定義のpd_inner_replica_controlオペランドを指定している場合に加算します。

3.8.3　HiRDB/SD定義ユティリティ（pdsdbdef）実行時の排他資源数

HiRDB/SD定義ユティリティ（pdsdbdef）の実行時には，次の計算式で算出したサーバ当たりの排他資源数が必要になります。

(1)　*ENTRY DICTIONARY文（SCHEMA指定）の実行時

ディクショナリサーバで必要とする排他資源数

27＋↑DB÷（DICPG−59）↑＋↑DBVW÷（DICPG−59）↑

(2)　*ENTRY DICTIONARY文（STORAGE SCHEMA指定）の実行時

ディクショナリサーバで必要とする排他資源数

18＋↑STDB÷（DICPG−59）↑

(3)　*ENTRY DIRECTORY文の実行時

ディクショナリサーバで必要とする排他資源数

36＋↑DBVW÷（DICPG−59）↑×2＋↑DBS÷（DICPG−59）↑
＋↑SUB÷（DICPG−59）↑

*CHECK DICTIONARY文または*ENTRY DIRECTORY文を実行していない場合は，次の計算式で算出した値を加算してください。

*ALTER DICTIONARY文で変更したデータベース定義に対して，*CHECK DICTIONARY文または*ALTER DIRECTORY文を実行していない場合は，次の計算式で算出した値を加算してください。

フロントエンドサーバおよびバックエンドサーバで必要とする排他資源数

*CHECK DICTIONARY文または*ENTRY DIRECTORY文を実行していない場合は，次の計算式で算出した値を加算してください。

*ALTER DICTIONARY文で変更したデータベース定義に対して，*CHECK DICTIONARY文または*ALTER DIRECTORY文を実行していない場合は，次の計算式で算出した値を加算してください。

(4)　*ALTER DICTIONARY文（SCHEMA指定）の実行時【4V FMB，4V AFM】

ディクショナリサーバで必要とする排他資源数

27＋↑DB÷（DICPG−59）↑＋↑DBVW÷（DICPG−59）↑

(5)　*ALTER DICTIONARY文（STORAGE SCHEMA指定）の実行時【4V FMB，4V AFM】

ディクショナリサーバで必要とする排他資源数

18＋↑STDB÷（DICPG−59）↑

(6)　*ALTER DIRECTORY文の実行時【4V FMB，4V AFM】

ディクショナリサーバで必要とする排他資源数

36＋↑DBVW÷（DICPG−59）↑×2＋↑DBS÷（DICPG−59）↑
＋↑SUB÷（DICPG−59）↑

*ALTER DICTIONARY文で変更したデータベース定義に対して，*CHECK DICTIONARY文または*ALTER DIRECTORY文を実行していない場合は，次の計算式で算出した値を加算してください。

フロントエンドサーバおよびバックエンドサーバで必要とする排他資源数

*ALTER DICTIONARY文で変更したデータベース定義に対して，*CHECK DICTIONARY文または*ALTER DIRECTORY文を実行していない場合は，次の計算式で算出した値を加算してください。

バックエンドサーバで必要とする排他資源数

*ALTER DICTIONARY文で格納RDエリアの変更をしたSDBデータベース定義に対して，*CHECK DICTIONARY文または*ALTER DIRECTORY文を実行していない場合は，次の計算式で算出した値を加算してください。

(7)　*DELETE DICTIONARY文（SCHEMA指定）の実行時

ディクショナリサーバで必要とする排他資源数

15＋↑DB÷（DICPG−59）↑＋↑DBVW÷（DICPG−59）↑

削除するSDBディクショナリ情報に対して，*CHECK DICTIONARY文または*ENTRY DIRECTORY文を実行していて，その後，SDBデータベース格納定義を削除していない場合は，次の計算式で算出した値を加算してください。

フロントエンドサーバおよびバックエンドサーバで必要とする排他資源数

削除するSDBディクショナリ情報に対して，*CHECK DICTIONARY文または*ENTRY DIRECTORY文を実行していて，その後，SDBデータベース格納定義を削除していない場合は，次の計算式で算出した値を加算してください。

(8)　*DELETE DICTIONARY文（STORAGE SCHEMA指定）の実行時

ディクショナリサーバで必要とする排他資源数の計算式を次に示します。

8＋↑STDB÷（DICPG−59）↑

削除するSDBディクショナリ情報に対して，*CHECK DICTIONARY文または*ENTRY DIRECTORY文を実行していて，その後，SDBデータベース定義を削除していない場合は，次の計算式で算出した値を加算してください。

フロントエンドサーバおよびバックエンドサーバで必要とする排他資源数

削除するSDBディクショナリ情報に対して，*CHECK DICTIONARY文または*ENTRY DIRECTORY文を実行していて，その後，SDBデータベース定義を削除していない場合は，次の計算式で算出した値を加算してください。

(9)　*DELETE DIRECTORY文の実行時

ディクショナリサーバで必要とする排他資源数

12＋↑DBS÷（DICPG−59）↑＋↑SUB÷（DICPG−59）↑

(10)　*CHECK DICTIONARY文（STORAGE SCHEMA指定）の実行時

ディクショナリサーバで必要とする排他資源数

23＋↑DB÷（DICPG−59）↑＋↑STDB÷（DICPG−59）↑×2

*CHECK DICTIONARY文または*ENTRY DIRECTORY文を実行していない場合は，次の計算式で算出した値を加算してください。

*ALTER DICTIONARY文で変更したデータベース定義に対して，*CHECK DICTIONARY文または*ALTER DIRECTORY文を実行していない場合は，次の計算式で算出した値を加算してください。

フロントエンドサーバおよびバックエンドサーバで必要とする排他資源数

*CHECK DICTIONARY文または*ENTRY DIRECTORY文を実行していない場合は，次の計算式で算出した値を加算してください。

*ALTER DICTIONARY文で変更したデータベース定義に対して，*CHECK DICTIONARY文または*ALTER DIRECTORY文を実行していない場合は，次の計算式で算出した値を加算してください。

(11)　計算式で使用する変数の説明

計算式中で使用している変数の意味を次に示します。

変数

変数の意味

DICPG

データディクショナリ用RDエリアのページ長（バイト）

DB

SDBデータベース定義情報長（バイト）

「表3-26　計算式2（SDBデータベース定義情報長）」を参照して算出してください。

DBVW

SDBデータベースビュー定義情報長（バイト）

「表3-27　計算式3（SDBデータベースビュー定義情報長）」を参照して算出してください。

STDB

SDBデータベース格納定義情報長（バイト）

「表3-28　計算式4（SDBデータベース格納定義情報長）」を参照して算出してください。

DBS

SDBディレクトリ情報長（SDBデータベース情報長）（バイト）

「3.4.2　共用メモリの見積もり」の，変数dbsの計算式で算出してください。

SUB

SDBディレクトリ情報長（SDBデータベースビュー情報長）（バイト）

「3.4.2　共用メモリの見積もり」の，変数subの計算式で算出してください。

CRTTBL

レコード型定義の排他資源数（個）

マニュアル「HiRDB Version 9 システム定義」の「排他資源数の見積もり」の「定義系SQL」の「CREATE TABLE」を参照して算出してください。※

CRTIDX

インデクス定義の排他資源数（個）

マニュアル「HiRDB Version 9 システム定義」の「排他資源数の見積もり」の「定義系SQL」の「CREATE INDEX（プラグインインデクスでない場合）」を参照して算出してください。※

DRPTBL

レコード型定義削除の排他資源数（個）

マニュアル「HiRDB Version 9 システム定義」の「排他資源数の見積もり」の「定義系SQL」の「DROP TABLE」を参照して算出してください。※

ALTRDA

格納RDエリア変更の排他資源数

マニュアル「HiRDB Version 9 システム定義」の「排他資源数の見積もり」の「定義系SQL」の「ALTER TABLE」を参照して，排他資源数を算出してください。※

その際，次のことに留意してください。

「SDBデータベース格納定義のWITHINオペランドに指定した格納RDエリアの変更」は，「ALTER TABLE文によるRDエリアの変更」に対応しています。

「CHANGE RDAREA横分割表の場合に加算します。」の部分の計算式を加算してください。

PRGTBL

格納条件が変更となるRDエリアの初期化に必要となる排他資源数

マニュアル「HiRDB Version 9 システム定義」の「排他資源数の見積もり」の「操作系SQL」の「PURGE TABLE」を参照して，排他資源数を算出してください。※

その際，次のことに留意してください。

「SDBデータベース格納定義のWITHINオペランドの指定による格納条件の変更をしたRDエリア」は，「PURGE TABLE文の対象RDエリア」に対応しています。

RECN

SDBデータベース内のレコード型数（個）

IDXN

SDBデータベース格納定義内のインデクス数（個）

ADRECN

SDBデータベースの定義変更で追加したレコード型数（個）

ADIDXN

SDBデータベースの定義変更で追加したインデクス数（個）

ALRECN

SDBデータベース格納定義で格納RDエリアを変更したレコード型数

注※

マニュアルを参照する場合，次の用語を読み替えてください。

「表」を「レコード型」に読み替えてください。

「列」を「構成要素」に読み替えてください。なお，データ属性を持たない構成要素は，構成要素数を数える際の対象にはしないでください。また，SDBデータベース定義でOCCURS句を指定する場合，システム内で生成される構成要素は，構成要素数を数える際の対象にしてください。

3.8.4　HiRDB/SDデータベース作成ユティリティ（pdsdblod）実行時の排他資源数

HiRDB/SDデータベース作成ユティリティ（pdsdblod）の実行時には，次の計算式で算出したサーバ当たりの排他資源数が必要になります。

・トランザクションを超えた排他制御で使用する資源数

X＝（a＋b）×2＋1＋c×d

サーバ共通定義のpd_lck_until_disconnect_cntオペランド値は，X以上必要です。

変数の説明

a：格納レコード用RDエリアの総数

b：インデクス格納用RDエリアの総数（シーケンシャルインデクス格納用，二次インデクス格納用）

c：インデクスの総数（シーケンシャルインデクス，二次インデクス）

d：レコードの横分割格納RDエリア数

・トランザクション内の排他制御で使用する資源数

Y＝a×2＋1＋ｂ＋ｃ

サーバ共通定義のpd_lck_pool_sizeオペランド値は，↑Y÷4↑キロバイト以上必要です。

変数の説明

a：使用中セグメント数（すでにデータが格納されているセグメント数）

environment文のpurgeオペランドにyesを指定したときに加算してください。

b：レコード型を格納するRDエリアの使用セグメント数

c：インデクスを格納するRDエリアの使用セグメント数

使用セグメント数は，データを格納する予定のセグメント数としてください。ただし，-dオプションの指定時，すでにデータが格納されているセグメント数（使用中セグメント数）の方が，データを格納する予定のセグメント数より多い場合は，使用中セグメント数で計算してください。

HiRDB/SDデータベース作成ユティリティ（pdsdblod）の前処理では，（209＋a）の資源を消費します。そのため，Yは最低でも（209＋a）以上必要です。HiRDB/SDデータベース作成ユティリティ（pdsdblod）の前処理で確保した資源は，データロードを開始する前に解放されるため，計算したYの値が（209＋a）以上の場合は，その値を使用してください。

3.8.5　HiRDB/SDデータベース再編成ユティリティ（pdsdbrog）実行時の排他資源数

HiRDB/SDデータベース再編成ユティリティ（pdsdbrog）の実行時には，次の計算式で算出したサーバ当たりの排他資源数が必要になります。

・トランザクション内の排他制御で使用する資源数

Y＝2×（a＋b）＋1

サーバ共通定義，バックエンドサーバ定義のpd_lck_pool_sizeオペランド値は，↑Y÷4↑キロバイト以上必要です。

変数の説明

a：1（アンロード対象のデータが格納されているRDエリアの数）

b：アンロード対象のインデクスが格納されているRDエリアの数

HiRDB/SDデータベース再編成ユティリティ（pdsdbrog）の前処理では，（209＋a）の資源を消費します。そのため，Yは最低でも（209＋a）以上必要です。HiRDB/SDデータベース再編成ユティリティ（pdsdbrog）の前処理で確保した資源は，アンロードを開始する前に解放されるため，計算したYの値が（209＋a）以上の場合は，その値を使用してください。

3.8.6　HiRDB/SDデータベースアクセスユティリティ（pdsdbexe）実行時の排他資源数【4V FMB，4V AFM】

HiRDB/SDデータベースアクセスユティリティ（pdsdbexe）のDMLコマンドでSDBデータベースを操作する際に必要な排他資源数を求める必要があります。DMLコマンドでSDBデータベースを操作する際に必要な排他資源数は，SDBデータベースを操作するAPI実行時の排他資源数と同じになります。詳細については，「3.8.2　SDBデータベースを操作するAPIまたはDMLの実行時の排他資源数」を参照してください。

4　HiRDBシステムの構築

この章では，HiRDB/SDを使用する際のHiRDBシステムの構築について説明します。

4.1　システム構築手順

ここでは，HiRDBを新規導入するときのシステム構築手順，およびほかの製品と連携する場合の環境設定について説明します。

4.1.1　HiRDBを新規導入するときのシステム構築手順

HiRDBを新規導入するときのシステム構築手順を次に示します。

HiRDBをインストールします。

HiRDBのインストール手順については，「4.3　HiRDBのインストール」を参照してください。

HiRDBの環境設定をします。

HiRDBの環境設定の手順については，「4.4　環境設定」を参照してください。

SDBデータベースを作成します。

SDBデータベースの作成手順については，「4.5　SDBデータベースの作成」を参照してください。

4.1.2　ほかの製品と連携する場合の環境設定

ほかの製品と連携する場合の環境設定を次に示します。

(1)　系切り替え機能を使用する場合

系切り替え機能を使用する場合は，クラスタソフトウェアが必要になります。HiRDB/SDでは，クラスタソフトウェアとしてHAモニタだけが使用できます。系切り替え機能の環境設定方法については，次の個所を参照してください。

高速系切り替え機能を使用する場合

「6.1　高速系切り替え機能の環境設定の流れ」

(2)　インナレプリカ機能を使用する場合

インナレプリカ機能を使用するには，HiRDB Staticizer Optionが必要になります。環境設定方法については，「4.6　インナレプリカ機能を使用する場合の環境設定【4V FMB，4V AFM】」を参照してください。

4.2　HiRDBのディレクトリおよびファイル構成

HiRDBのディレクトリおよびファイル構成について説明します。

4.2.1　最初に作成するファイル

(1)　HiRDB管理者が作成するディレクトリおよびファイル

HiRDB管理者が作成するディレクトリおよびファイル構成を次の表に示します。

表4‒1　HiRDB管理者が作成するディレクトリおよびファイル構成

ファイルまたはディレクトリ名

説明

$PDDIR/conf/pdsys

システム共通定義を格納するファイル

$PDDIR/conf/pdutsys

ユニット制御情報定義を格納するファイル

$PDDIR/conf/pdsvrc

サーバ共通定義を格納するファイル

$PDDIR/conf/サーバ名

各サーバ定義を格納するファイル

$PDDIR/conf/pduapenv

UAP環境定義を格納するディレクトリ

$PDCONFPATH/pdsdbuapenv

SDB用UAP環境定義を格納するディレクトリ

(2)　HiRDBが作成するディレクトリ

HiRDBが作成するディレクトリの構成を次の表に示します。

表4‒2　HiRDBが作成するディレクトリの構成

ディレクトリ名

説明

$PDDIR/bin

HiRDBの運用コマンドおよびユティリティを格納するディレクトリ

$PDDIR/lib

HiRDBの共用ライブラリ，およびメッセージテキストファイルを格納するディレクトリ

$PDDIR/lib/sysconf

HiRDBシステム定義の定義解析用ファイルを格納するディレクトリ

$PDDIR/lib/servers

HiRDBサーバの実行ファイルおよびライブラリを格納するディレクトリ

上記の表以外のディレクトリおよびファイルについては，マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「HiRDBが作成するディレクトリおよびファイル」を参照してください。

4.2.2　単調増加ファイル

単調増加ファイルについては，「付録F　単調増加ファイル」，およびマニュアル「HiRDB Version 9 システム導入・設計ガイド」の「単調増加ファイル」を参照してください。

4.3　HiRDBのインストール

ここでは，HiRDBのインストールおよびアンインストールについて説明します。

HiRDBをインストールするすべてのサーバマシンで，同じバージョンのプラットフォームを使用してください。

4.3.1　インストール前の準備

インストール前の準備については，マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「インストール前の作業」を参照してください。

オペレーティングシステムパラメタの見積もりについては，「3.7　OSのオペレーティングシステムパラメタの見積もり」をあわせて参照してください。

4.3.2　HiRDBのインストール手順

ここでは，HiRDBのインストール手順について説明します。

(1)　HiRDBのインストール

HiRDBのインストールについては，マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「HiRDBのインストール」を参照してください。

HiRDB/SDをインストールする場合の注意事項

HiRDB Structured Data Access Facilityをインストールする場合，セットアップ済みのHiRDB Serverが存在するときは，HiRDB Serverをアンインストールしてから，HiRDB Structured Data Access Facilityをインストールしてください。上書きインストールはできません。

HiRDB Serverをインストールする場合，セットアップ済みのHiRDB Structured Data Access Facilityが存在するときは，HiRDB Structured Data Access Facilityをアンインストールしてください。上書きインストールはできません。

HiRDB Structured Data Access FacilityはHiRDB Serverのオプション製品です。ただし，構造型DB機能を使用する場合は，HiRDB Structured Data Access Facilityだけをインストールしてください。既存のオプション製品と違い，pdopsetupコマンド（付加PPのセットアップ）ではセットアップできません。

HiRDB ServerとHiRDB Structured Data Access Facilityが混在するような複数ユニット構成にはできません。

(2)　付加PPのインストール

実行者　スーパユーザ

HiRDB/SDに関連する付加PPを使用する場合は，付加PPをインストールします。付加PPの機能と，付加PPをインストールするサーバマシンを次の表に示します。

表4‒3　付加PPの機能とインストール先のサーバマシン

製品名

付加PPを導入すると使用できる機能

インストール先のサーバマシン

HiRDB Staticizer Option

インナレプリカ機能

すべてのサーバマシン

HiRDB Advanced High Availability

マニュアル「HiRDB Version 9 解説」の「HiRDB Advanced High Availability」を参照してください。ただし，HiRDB/SDではスタンバイレス型系切り替え機能は使用できません。

すべてのサーバマシン

4.3.3　インストール後の作業

HiRDBをインストールしたあとの作業については，マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「インストール後の作業」を参照してください。

ただし，HiRDB/SDをインストールしたあとの作業には，マニュアル「HiRDB Version 9 システム導入・設計ガイド」に記載されている内容と差異があります。ここでは，その差異についてだけ説明します。

なお，マニュアル「HiRDB Version 9 システム導入・設計ガイド」を参照する際，「表やインデクスを定義する」は「SDBデータベースを定義する」に読み替えてください。

(1)　ワークファイル出力先ディレクトリの作成

実行者　HiRDB管理者

HiRDB/SDが出力するワークファイルの出力先となるディレクトリを作成してください。

(a)　ワークファイル出力先ディレクトリの容量の見積もり

ワークファイル出力中にHiRDBまたは運用コマンドが異常終了した場合，ワークファイルは削除されません。そのため，pdcspoolコマンドを実行する前にディスク容量が不足しないように，ワークファイル出力先ディレクトリの空き領域には十分に余裕のある値を設定してください。

ワークファイル出力先ディレクトリ下の空き領域のサイズについては，マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「ワークファイル出力先ディレクトリの容量の見積もり」に記載されている計算式に，次の値を加算してください。

pdsdbdefコマンド実行時の実行結果ファイルの容量

SDB定義文ファイルサイズ×1.2

pdsdblodコマンド実行時の次のファイルの容量

実行結果ファイル

ワークファイル

インデクス情報ファイル

ソート用ワークファイル

「3.6.1(1)　HiRDB/SDデータベース作成ユティリティ（pdsdblod）実行時のファイルの容量」を参照してください。

pdsdbrogコマンド実行時の実行結果ファイルの容量

「3.6.1(2)　HiRDB/SDデータベース再編成ユティリティ（pdsdbrog）実行時のファイルの容量」を参照してください。

(2)　文字コードの指定

HiRDB/SDで使用する文字コードを指定します。

(a)　文字コードの指定（サーバ側の指定）

使用する文字コードをpdsetupコマンドの -cオプションで指定します。使用できる文字コードを次に示します。

4V FMBまたは4V AFMのSDBデータベースの場合

シフトJIS漢字コードまたはUnicode（UTF-8）のどちらかを使用できます。

SD FMBのSDBデータベースの場合

シフトJIS漢字コードを使用できます。

pdadmvr -cコマンドで使用している文字コードを確認できます。

(b)　文字コードの指定（クライアント側の指定）

クライアント側では，サーバの文字コードに応じてクライアント環境定義のLANGまたはPDCLTLANGオペランドに文字コードを指定します。クライアント環境定義は，UAPの作成または実行時に参照されます。サーバの文字コードに応じて指定できるクライアント環境定義については，マニュアル「HiRDB Version 9 UAP開発ガイド」を参照してください。

なお，SDBデータベースを操作するAPIまたはDMLを発行する場合は，HiRDB/SDで使用する文字コードと同じ文字コードを指定してください。

(3)　SDBディレクトリ情報ファイルの作成

ユニット制御情報定義のpd_structured_directory_pathオペランドに指定したディレクトリ下にSDBディレクトリ情報ファイルを作成してください。

高速系切り替え機能を使用している場合は，待機系ユニットにもSDBディレクトリ情報ファイルを作成してください。

4.3.4　HiRDBのアンインストール

HiRDBのアンインストールについては，マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「HiRDBのアンインストール」を参照してください。

実行者　スーパユーザおよびHiRDB管理者

HiRDB Structured Data Access Facilityのアンインストールは，次の場合だけ実施してください。このほかの理由でのアンインストールは推奨しません。

今後このサーバマシンでHiRDB Structured Data Access Facilityを使用しない場合

HiRDB Structured Data Access FacilityからHiRDB Serverに入れ替える場合

4.3.5　HiRDBのバージョンアップ

HiRDBの過去のバージョンからHiRDB Structured Data Access Facility/Parallel Server Version 9へのバージョンアップができます。

HiRDBのバージョンアップについては，マニュアル「HiRDB Version 9　システム導入・設計ガイド」の「HiRDBのバージョンアップ」を参照してください。

注意事項

バージョンアップ，または修正版との入れ替え直後にKFPU00244-Eメッセージが出力され，システム共通定義pd_structured_shmpool_dicsizeオペランドが指定されている行がエラーとして表示された場合は，HiRDB Structured Data Access Facility/Parallel Server Version 9ではなくHiRDB/Parallel Server Version 9をインストールしている可能性があります。インストール媒体を確認し，誤っていた場合は再度インストールからし直してください。

4.3.6　修正版HiRDB Structured Data Access Facilityへの入れ替え

修正版HiRDB Structured Data Access Facilityへの入れ替えができます。

修正版HiRDB Structured Data Access Facilityへの入れ替えについては，マニュアル「HiRDB Version 9　システム導入・設計ガイド」の「修正版HiRDBへの入れ替え」を参照してください。

注意事項

HiRDB ServerからHiRDB Structured Data Access Facilityの修正版への入れ替えはできません。

HiRDB Structured Data Access FacilityからHiRDB Serverの修正版への入れ替えはできません。

4.4　環境設定

ここでは，構造型DB機能を使用するHiRDBの環境を設定する方法について説明します。

「3.1　HiRDB/SDの設計」で設計した内容に従って，構造型DB機能を使用するHiRDBの環境を設定してください。

環境設定手順

構造型DB機能を使用するHiRDBの環境設定手順を次の図に示します。

図4‒1　コマンドによる構造型DB機能を使用するHiRDBの環境設定手順

以降の説明で設定する内容を次に示します。

設定する内容

データベース初期設定ユティリティ（pdinit）でシステム用RDエリア（マスタディレクトリ用RDエリア，データディレクトリ用RDエリアおよびデータディクショナリ用RDエリア）を作成して，HiRDBをまず開始できるようにします。

その後，データベース構成変更ユティリティ（pdmod）で，必要なRDエリア（ユーザ用RDエリア）を追加します。

なお，ユーザ用RDエリアは，データベース初期設定ユティリティ（pdinit）でシステム用RDエリアと一緒に作成することもできます。

4.4.1　HiRDBシステム定義の作成

HiRDBのシステム定義の作成については，マニュアル「HiRDB Version 9システム導入・設計ガイド」の「HiRDBシステム定義の作成」を参照してください。SDB用UAP環境定義を作成する際は，「4.9　SDB用UAP環境定義ファイルの準備【SD FMB】」を参照してください。

なお，HiRDBシステム定義のうち，HiRDB/SDを使用する場合に指定値の見直しが必要なオペランドについては，「9.4　指定値の見直しが必要なオペランド」を参照してください。

また，pdconfchkコマンドでチェックできるオペランドについては，「9.6　pdconfchkコマンドでチェックできるオペランド」もあわせて参照してください。

4.4.2　HiRDBファイルシステム領域の作成

HiRDBファイルシステム領域の作成については，マニュアル「HiRDB Version 9システム導入・設計ガイド」の「HiRDBファイルシステム領域の作成」を参照してください。

4.4.3　システムファイルの作成

システムファイルの作成については，マニュアル「HiRDB Version 9システム導入・設計ガイド」の「システムファイルの作成」を参照してください。

システムファイルの設計方法については，「3.1.3　システムファイルの設計」を参照してください。

4.4.4　システム用RDエリアの作成

システム用RDエリアの作成については，マニュアル「HiRDB Version 9システム導入・設計ガイド」の「システム用RDエリアの作成」を参照してください。

4.4.5　HiRDBの初期開始

HiRDBの初期開始については，マニュアル「HiRDB Version 9システム導入・設計ガイド」の「HiRDBの初期開始」を参照してください。

4.4.6　ユーザ用RDエリアの作成

ユーザ用RDエリアの作成については，マニュアル「HiRDB Version 9システム導入・設計ガイド」の「ユーザ用RDエリアの作成」を参照してください。ただし，HiRDB/SDでは「表」は「レコード」に読み替えてください。

また，HiRDB/SDでは次の点に留意してください。

ユーザ用RDエリアにSDBデータベースを格納する場合は，create rdarea文のdata modelオペランドにstructuredを指定します。なお，forオペランドにはuser used by PUBLICだけを指定できます。

ユーザ用RDエリアに次の表またはインデクスを格納する場合は，create rdarea文のdata modelオペランドにrelationalを指定するか，またはdata modelオペランドの指定を省略してください。

追い付き反映キー対応表

追い付き反映キー対応表のインデクス

追い付き状態管理表

監査証跡表

ユーザ用RDエリア作成時の考慮点については，「3.2.1　ユーザ用RDエリアを設計する際の考慮点」を参照してください。

4.5　SDBデータベースの作成

SDBデータベースの作成手順を次の図に示します。

図4‒2　SDBデータベースの作成手順

4.5.1　SDBデータベースを作成する前に必要な作業

実行者　HiRDB管理者

SDBデータベースを作成する前に必要な作業について説明します。定義系SQLの実行が必要な場合は，データベース定義ユティリティ（pddef）またはHiRDB SQL Executerを使用してください。

(1)　クライアント環境定義の設定

次に示すクライアント環境定義を設定してください。クライアント環境定義の設定方法については，マニュアル「HiRDB Version 9 UAP開発ガイド」を参照してください。

PDHOST

PDUSER

PDNAMEPORT

(2)　パスワードの変更

HiRDB管理者用の認可識別子のパスワードが，認可識別子と同じ文字列になっている場合，定義系SQLのGRANT文でパスワードを変更してください。GRANT文の実行例を次に示します。

GRANT DBA TO HiRDB管理者用の認可識別子 IDENTIFIED BY 新しいパスワード;

(3)　HiRDB管理者以外がSDBデータベースを作成する場合

HiRDB管理者以外がSDBデータベースを作成する場合，定義系SQLのGRANT文で，SDBデータベースを作成するユーザに次のユーザ権限を与える必要があります。

CONNECT権限

スキーマ定義権限

ユーザ権限の種類については「2.15.1　ユーザ権限の種類」を参照してください。

SDBデータベースを作成するユーザに，CONNECT権限，およびスキーマ定義権限を与える場合の実行例を次に示します。

  GRANT CONNECT TO 権限を与えるユーザの認可識別子 IDENTIFIED BY パスワード;
  GRANT SCHEMA TO 権限を与えるユーザの認可識別子;

(4)　スキーマの定義

定義系SQLのCREATE SCHEMAでスキーマを定義します。

1ユーザに対して1個のスキーマを定義します。

(5)　データの変換方式の設定

メインフレーム上のデータをHiRDB/SDへ移行する際，メインフレームとHiRDB/SDでは符号付きパック形式の符号部に仕様差異があるため，メインフレーム上のUAPをそのまま移行できない場合があります。この場合，データの形式を変換する機能（DECIMAL型の符号正規化機能）を使用してください。このとき，符号部の変換規則をよく確認してください。

DECIMAL型の符号正規化機能を使用するには，システム共通定義のpd_dec_sign_normalizeオペランドにYを指定します。詳細については，マニュアル「HiRDB Version 9システム運用ガイド」の「DECIMAL型の符号部を変換する方法」を参照してください。

4.5.2　SDBデータベースの定義追加

実行者　CONNECT権限およびスキーマ定義権限保持者

SDBデータベースの定義追加の手順を次に示します。

(1)　SDBデータベースのデータベース定義を作成する

SDBデータベースのデータベース定義を作成します。SDBデータベースのデータベース定義には，次の二種類があります。

SDBデータベース定義

SDBデータベースの論理構造（データ操作の対象となるレコード型やレコード間の親子集合など）を定義します。SDBデータベース定義については，次の個所を参照してください。

4V FMBのSDBデータベースを定義する場合

「11.5.1　SDBデータベース定義【4V FMB】」

4V AFMのSDBデータベースを定義する場合

「11.6.1　SDBデータベース定義【4V AFM】」

SD FMBのSDBデータベースを定義する場合

「11.7.1　SDBデータベース定義【SD FMB】」

SDBデータベース格納定義

SDBデータベースの格納構造（インデクスの構成要素や親子集合を実現するためのポインタなど）を定義します。SDBデータベース格納定義については，次の個所を参照してください。

4V FMBのSDBデータベースを定義する場合

「11.5.2　SDBデータベース格納定義【4V FMB】」

4V AFMのSDBデータベースを定義する場合

「11.6.2　SDBデータベース格納定義【4V AFM】」

SD FMBのSDBデータベースを定義する場合

「11.7.2　SDBデータベース格納定義【SD FMB】」

SDBデータベース定義，SDBデータベース格納定義は，SDB定義文ファイルに記述します。作成したSDB定義文ファイルをHiRDB/SD定義ユティリティ（pdsdbdef）のsource文に指定します。

(2)　SDBディクショナリ情報およびSDBディレクトリ情報を追加する

HiRDB/SD定義ユティリティ（pdsdbdef）で*ENTRY DICTIONARY文および*ENTRY DIRECTORY文を実行し，定義追加するSDBデータベースのSDBディクショナリ情報およびSDBディレクトリ情報をディクショナリ表に追加します。(1)で作成したSDBデータベース定義およびSDBデータベース格納定義を*ENTRY DICTIONARY文に指定します。

*ENTRY DICTIONARY文については「11.4.2　*ENTRY DICTIONARY文（SDBディクショナリ情報の追加）」を参照してください。また，*ENTRY DIRECTORY文については「11.4.6　*ENTRY DIRECTORY文（SDBディレクトリ情報の追加）」を参照してください。

また，定義追加したSDBデータベースのレコード型およびインデクスの定義情報が，次のRDエリアに登録されます。

マスタディレクトリ用RDエリア

データディレクトリ用RDエリア

ユーザ用RDエリア

注意事項

*ENTRY DICTIONARY文および*ENTRY DIRECTORY文は，1回のpdsdbdefコマンドで実行してください。

理由：

*ENTRY DIRECTORY文の実行時には，データベース定義のチェックが実行されます。

*ENTRY DICTIONARY文および*ENTRY DIRECTORY文を1回のpdsdbdefコマンドで実行した場合，データベース定義の不整合が検知されると，SDBディクショナリ情報およびSDBディレクトリ情報はディクショナリ表に追加されません。この場合，データベース定義を修正して，pdsdbdefコマンドを再実行することで対処できます。

*ENTRY DICTIONARY文と*ENTRY DIRECTORY文を別々に実行した場合，*ENTRY DIRECTORY文の実行時には，すでにSDBディクショナリ情報はディクショナリ表に追加されています。そのため，データベース定義の不整合が検知された場合に，データベース定義を修正するには，*DELETE DICTIONARY文を実行してSDBディクショナリ情報を削除してから，pdsdbdefコマンドを再実行することになります。

4.5.3　SDBディレクトリ情報ファイルの作成および配布

実行者　HiRDB管理者

HiRDB/SD定義ユティリティ（pdsdbdef）を実行して，「4.5.2(2)　SDBディクショナリ情報およびSDBディレクトリ情報を追加する」で作成したSDBディレクトリ情報をSDBディレクトリ情報ファイルに出力して，全ユニットに配布します。

HiRDB/SD定義ユティリティ（pdsdbdef）のdirinf文で，SDBディレクトリ情報ファイルの出力先を指定します。dirinf文については，「11.3.5　dirinf文（SDBディレクトリ情報ファイルの作成および配布）」を参照してください。

SDBディレクトリ情報ファイルのファイル名は，pdsdbdir固定となります。

■SDBディレクトリ情報ファイルの配布

HiRDB/SD定義ユティリティ（pdsdbdef）を実行すると，SDBディレクトリ情報ファイルの作成と同時に，全ユニットにSDBディレクトリ情報ファイルが配布されます。配布先は，ユニット制御情報定義のpd_structured_directory_pathオペランドに指定したディレクトリ下になります。

高速系切り替え機能を使用している場合は，待機系ユニットにもSDBディレクトリ情報ファイルが配布されます。

注意事項

ディザスタリカバリシステムのリモートサイトは配布対象外です。リモートサイトにSDBディレクトリ情報ファイルを配布する方法については，「8.3.1(2)　「6. SDB ディレクトリ情報ファイルをリモートサイトに転送する」の作業」を参照してください。

なお，1つのサーバマシン内に複数のユニットがある場合，SDBディレクトリ情報ファイルはサーバマシンに1つだけ配布し，各ユニットでそのSDBディレクトリ情報ファイルを共有することを推奨します。

SDBディレクトリ情報ファイルをユニットごとに用意することもできますが，SDBディレクトリ情報ファイルを配布したり，SDBディレクトリ情報の整合性をチェックしたりする際の運用負荷は増えます。

4.5.4　HiRDBの終了

実行者　HiRDB管理者

pdstopコマンドでHiRDBを正常終了します。必ず正常終了してください。

4.5.5　SDBディレクトリ情報の常駐領域サイズの見直し

実行者　HiRDB管理者

次に示す場合は，システム共通定義のpd_structured_shmpool_dicsizeオペランド（SDBディレクトリ情報の常駐領域サイズ）の指定値を見直します。

SDBディレクトリ情報の合計長が，pd_structured_shmpool_dicsizeオペランドの指定値を超えている場合

SDBディレクトリ情報の合計長が，pd_structured_shmpool_dicsizeオペランドの指定値に比べてかなり小さい場合

SDBディレクトリ情報の合計長は，「4.5.3　SDBディレクトリ情報ファイルの作成および配布」でpdsdbdefコマンドを実行した際に出力されるKFPB61231-Iメッセージ（sizeに表示されます）で確認できます。

4.5.6　HiRDBの開始

実行者　HiRDB管理者

pdstartコマンドでHiRDBを正常開始します。HiRDBの正常開始時，配布したSDBディレクトリ情報ファイルが読み込まれ，共用メモリ上の常用常駐領域にSDBディレクトリ情報が常駐化されます。

HiRDBを開始したあとに，pdsdbarc -cコマンドを実行して，SDBディレクトリ情報の最終更新日時のチェックを行い，全ユニットのSDBディレクトリ情報が一致していることを確認してください。

4.5.7　SDBデータベースへのデータロード

実行者　CONNECT権限保持者

HiRDB/SDデータベース作成ユティリティ（pdsdblod）を使用して，SDBデータベースにデータをロードします。

データロードには次の2種類の方法があります。

ユーザが用意した任意の入力データファイルを使用する方法

入力データファイル中のデータをレコードの形式に変換して，データベースに格納します。

フォーマットライト機能を使用する方法

4V DAMのSDBデータベースの場合，SDBデータベース定義でフォーマットライト機能を使用する指定をしていれば，フォーマットライト機能を使用できます。フォーマットライト機能を使用すると，SDBデータベース定義，およびSDBデータベース格納定義に従って，HiRDB/SDがデータベースにデータを格納します。

どちらの場合でもデータロード時にインデクスが作成されます。

詳細については，「12.　HiRDB/SDデータベース作成ユティリティ（pdsdblod）」を参照してください。

4.6　インナレプリカ機能を使用する場合の環境設定【4V FMB，4V AFM】

インナレプリカ機能を使用すると，ノンストップサービスに対応したデータベースシステムを構築できます。インナレプリカ機能を使用するには，HiRDB Staticizer Optionが必要になります。

インナレプリカ機能は，4V FMBまたは4V AFMのSDBデータベースの場合に使用できます。

インナレプリカ機能を使用した更新可能なオンライン再編成を実行できるのは，4V FMBのSDBデータベースに限ります。

4.6.1　HiRDBシステム定義の指定

インナレプリカ機能を使用する場合のHiRDBシステム定義の指定については，マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「インナレプリカ機能との連携」を参照してください。

4.6.2　環境設定方法

インナレプリカ機能を使用する場合のシステムの環境設定方法については，マニュアル「インナレプリカ機能 HiRDB Staticizer Option Version 9」を参照してください。

4.6.3　レプリカRDエリア作成時の留意事項

ここでは，レプリカRDエリア作成時の留意事項について説明します。

(1)　オリジナルRDエリアおよびレプリカRDエリアの構成

レプリカRDエリアは，オリジナルRDエリアと同じ構成にしてください。例えば，オリジナルRDエリアでレコードおよびインデクスをそれぞれ2つのRDエリアに横分割している場合は，レプリカRDエリアでもレコードおよびインデクスをそれぞれ2つのRDエリアに横分割してください。

オリジナルRDエリアおよびレプリカRDエリアの正しい構成例を次の図に示します。

図4‒3　オリジナルRDエリアおよびレプリカRDエリアの正しい構成例

［説明］

レコードおよびインデクスの横分割数を同じにして，オリジナルRDエリアとレプリカRDエリアの構成を同じにしてください。

(2)　オリジナルRDエリアとレプリカRDエリアの構成を確認する方法

次に示すコマンドで確認できます。

pdrdreflsコマンド

pdrdreflsコマンドの-tオプションにレコード型名を指定すると，そのレコード型に定義されているインデクスの格納RDエリアの情報が表示されます。

pddblsコマンド

pddblsコマンドの-qオプションに世代番号を指定すると，その世代番号のRDエリアの情報が表示されます。

(3)　オリジナルRDエリアとレプリカRDエリアの構成が異なる場合の対処方法

オリジナルRDエリアとレプリカRDエリアの構成が異なる場合や，世代番号を正しく設定していない場合は，SDBデータベースの定義，定義変更，または定義削除ができません（pdsdbdefコマンドが実行できません）。この場合，レプリカRDエリアを追加するか，または削除してオリジナルRDエリアとレプリカRDエリアの構成を同じにしてから，データベースの定義などを実行してください。

オリジナルRDエリアとレプリカRDエリアの構成が異なる場合の対処の例を次の図に示します。

図4‒4　オリジナルRDエリアとレプリカRDエリアの構成が異なる場合の対処の例

［説明］

上記の図の場合，世代番号2のレプリカRDエリアが1つ不足しています。この場合，次に示すどちらかの対処をしないと，データベースの定義，定義変更，または定義削除ができません。

世代番号2のレプリカRDエリアを1つ追加する

世代番号2のレプリカRDエリアを3つとも削除する

(4)　リレーショナルDBを格納するRDエリアとSDBデータベースを格納するRDエリアの構成【4V FMB】

更新可能なオンライン再編成では，同一BES内でリレーショナルDBを格納するRDエリアとSDBデータベースを格納するRDエリアを同じタイミングで再編成できません。pdorbeginコマンドに指定するRDエリアには，1つのBESでリレーショナルDBを格納するRDエリアとSDBデータベースを格納するRDエリアを混在させることはできません。

そのため，リレーショナルDBを格納するRDエリアとSDBデータベースを格納するRDエリアは別々に再編成できるよう，RDエリアを構成してください。

リレーショナルDBを格納するRDエリアとSDBデータベースを格納するRDエリアを分ける構成の例を次の図に示します。

図4‒5　リレーショナルDBを格納するRDエリアとSDBデータベースを格納するRDエリアを分ける構成の例

4.7　HiRDB ServerとHiRDB Structured Data Access Facilityの入れ替え手順

ここでは，HiRDB ServerとHiRDB Structured Data Access Facilityの入れ替え手順について説明します。

なお，以降の説明では，それぞれの製品を次のように表記します。

HiRDB Server：単体版HiRDB

HiRDB Structured Data Access Facility：統合版HiRDB

4.7.1　入れ替えに関する前提条件

単体版HiRDBから統合版HiRDB，および統合版HiRDBから単体版HiRDBに入れ替える際の前提条件を次の表に示します。

表4‒4　HiRDBを入れ替える際の前提条件

項番

項目

前提条件

1

プラットフォーム

プラットフォームは次のどちらかである必要があります。

Red Hat Enterprise Linux Server 6（64-bit x86_64）

Red Hat Enterprise Linux Server 7（64-bit x86_64）

2

HiRDBシステムの構成

HiRDBシステムの構成が，HiRDB/パラレルサーバの場合だけ入れ替えられます。

3

マルチHiRDBの構成

単体版HiRDBと統合版HiRDBが混在する構成にはできません。

4

使用できる文字コード

HiRDBサーバが使用する文字コードは次のどちらかである必要があります。

シフトJIS漢字コード

Unicode（UTF-8）

なお，SD FMBのSDBデータベースを使用する場合，HiRDBサーバで使用できる文字コードは，シフトJIS漢字コードだけになります。

4.7.2　単体版HiRDBから統合版HiRDBへの入れ替え手順

ここでは，単体版HiRDBを統合版HiRDBに入れ替える手順について説明します。

(1)　入れ替え作業をする前の考慮点

入れ替え作業をする前の考慮点を次に示します。

(a)　統合版HiRDBで制限となる機能

単体版HiRDBで使用できる機能のうち，統合版HiRDBで制限となる機能を次の表に示します。

表4‒5　統合版HiRDBで制限となる機能

項番

機能名

制限事項

1

リアルタイムSANレプリケーション（ディザスタリカバリ）

リアルタイムSANレプリケーション（ディザスタリカバリ）のリモートサイトへのデータ反映方式は，全非同期方式だけ使用できます。

2

系切り替え機能

系切り替え機能は，高速系切り替え機能だけ使用できます。

3

インデクスキー値の排他制御

インデクスキー値の排他制御は，インデクスキー値無排他だけ使用できます。

4

文字コード変換機能

リレーショナルデータベースの操作とSDBデータベースの操作を混在して実行する場合，文字コード変換機能は使用できません。

(b)　HiRDB/SDで制限となる機能

単体版HiRDBで使用できる機能のうち，HiRDB/SDで制限となる機能があります。詳細については，「付録A　未サポート機能の一覧」を参照してください。

(c)　修正版HiRDBのコピーおよび入れ替え

入れ替え前の単体版HiRDBと修正版の統合版HiRDBでは，次のコマンドは実行できません。

pdprgcopyコマンド（修正版HiRDBのコピー）

pdprgrenewコマンド（修正版HiRDBの入れ替え）

(2)　単体版HiRDBから統合版HiRDBへの入れ替え時の注意事項

単体版HiRDBを統合版HiRDBに入れ替える場合，HiRDBクライアントも入れ替える必要があります。HiRDBクライアントを入れ替える際の注意事項を次に示します。

HiRDB Structured Data Access Facility/Run Timeをインストールするマシンに，セットアップ済みのHiRDB/Run Timeがある場合は，HiRDB/Run Timeをアンインストールしてください。そのあとで，HiRDB Structured Data Access Facility/Run Timeをインストールしてください。上書きインストールした場合の動作は保証できません。

HiRDB Structured Data Access Facility/Developer's Kitをインストールするマシンに，セットアップ済みのHiRDB/Developer's Kitがある場合は，HiRDB/Developer's Kitをアンインストールしてください。そのあとで，HiRDB Structured Data Access Facility/Developer's Kitをインストールしてください。上書きインストールした場合の動作は保証できません。

(3)　単体版HiRDBから統合版HiRDBへの入れ替え手順

運用中の単体版HiRDBを統合版HiRDBに入れ替える際に，事前に確認・設計しておくべき項目，および入れ替え手順を次に示します。

なお，単体版HiRDBのバージョンまたはリビジョン（VV-RR-ZZの形式で示すHiRDBのバージョン番号のうち，VVまたはRR）が統合版HiRDBのバージョンまたはリビジョンより古い場合は，バージョンアップも同時に実施されます。バージョンアップの手順についてはマニュアル「HiRDB Version 9 システム導入・設計ガイド」の「HiRDBのバージョンアップ」を参照してください。ただし，「HiRDBのバージョンアップ」では上書きインストールの手順が説明されていますが，単体版HiRDBを統合版HiRDBに入れ替えてバージョンアップする場合には，アンインストール後にインストールする手順となります。

(a)　入れ替え前に事前に確認・設計しておくべき項目

入れ替え前に事前に確認・設計しておくべき項目を次に示します。

空き領域の確認

構造型DB機能を使用する場合は専用のディクショナリ表を使用します。

そのため，pddbstコマンドで，データディクショナリ用RDエリアに必要な空き容量があるかを確認してください。

データディクショナリ用RDエリアの見積もりについては，「3.5.4(1)　データディクショナリ用RDエリアの容量の見積もり」を参照してください。

空き容量が不足している場合は，データベース構成変更ユティリティ（pdmod）でデータディクショナリ用RDエリアを拡張してください。詳細については，マニュアル「HiRDB Version 9 システム運用ガイド」の「RDエリアの容量を大きくする方法（RDエリアの拡張）」を参照してください。

HiRDBシステム定義の確認

統合版HiRDBでは単体版HiRDBで使えない機能があります。そのため，問題がないかを確認してください。詳細については，「(1)(a)　統合版HiRDBで制限となる機能」を参照してください。

メモリ所要量の確認

構造型DB機能を使用する場合に必要なメモリが確保できることを確認してください。

必要なメモリ所要量の見積もりについては，マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「HiRDB/パラレルサーバのメモリ所要量の見積もり」を参照してください。なお，メモリ所要量を見積もる際には，「3.4　メモリ所要量の見積もり」で算出した値を加算してください。

ファイル容量の確認

統合版HiRDBを使用する場合，HiRDBのステータスファイルやシンクポイントダンプファイルの容量が増加することがあります。そのため，必要な容量が確保できることを確認してください。

必要なファイル容量の見積もりについては，「3.1.3　システムファイルの設計」，およびマニュアル「HiRDB Version 9 システム導入・設計ガイド」の「ステータスファイルの容量の見積もり」，「シンクポイントダンプファイルの容量の見積もり」を参照してください。

OSのオペレーティングシステムパラメタの確認

統合版HiRDBに入れ替えることで新たにOS資源を消費する場合は，統合版HiRDBをインストールする前に，OSのオペレーティングシステムパラメタ（カーネルパラメタ）の値を変更してください。

オペレーティングシステムパラメタ（カーネルパラメタ）の見積もりについては，「3.7　OSのオペレーティングシステムパラメタの見積もり」，およびマニュアル「HiRDB Version 9 システム導入・設計ガイド」の「Linuxのオペレーティングシステムパラメタの見積もり」を参照してください。

システムログファイルの総レコード数の確認

構造型DB機能が使用する専用のディクショナリ表を定義する場合に，必要なシステムログ容量があることを確認してください。

システムログファイルの容量の見積もりについては，マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「システムファイルの設計」の「システムログファイルの設計」を参照してください。なお，システムログ量を見積もる際には，「3.5.1　システムログ量の見積もり」で算出した値を加算してください。

(b)　単体版HiRDBから統合版HiRDBへの入れ替え手順

単体版HiRDBから統合版HiRDBへの入れ替え手順を次に示します。

RDエリアのバックアップの取得

入れ替えが失敗した場合に備えて，データベース複写ユティリティ（pdcopy）などで，すべてのRDエリアのバックアップを取得してください。

バックアップの取得方法については，マニュアル「HiRDB Version 9 システム運用ガイド」の「バックアップの取得方法」を参照してください。

HiRDBのオンライン状態の確認

pdlsコマンドでHiRDBが正常終了できる状態であることを確認します。すべてのユニットがACTIVEと表示されているかどうかを確認してください。

HiRDBの正常終了

3.の手順でACTIVEと表示されている場合，pdstopコマンドでHiRDBを正常終了させてください。

HiRDBがすでに終了している場合は，次のどちらかの情報を参照してHiRDBが正常終了しているかどうかを確認してください。

メッセージログファイル

syslogファイル

正常終了していない場合は，pdstartコマンドでいったんHiRDBを開始してから，pdstopコマンドで正常終了させてください。

HiRDBの状態確認

pdls -d ustコマンドでHiRDBが正常終了していることを確認してください。

ライブラリの共用化の解除

マルチHiRDB環境でライブラリを共用している場合は，pdmemsv -dコマンドでライブラリの共用化を解除してください。

入れ替え完了後に，再度pdmemsvコマンドでライブラリを共用化してください。

コマンド，ユティリティ，アプリケーション，およびHiRDBと連携している製品の停止

HiRDB Datareplicator，HiRDB Dataextractor，JP1/PFMなど，HiRDBにアクセスする連携製品を停止してください。これらを停止しないと，実行形式ファイルや共用ライブラリの削除に失敗するおそれがあります。

HiRDB運用ディレクトリ下のバックアップの取得（HiRDB運用ディレクトリ数分繰り返す）

入れ替えが失敗した場合に備えて，OSのcpコマンドなどで，次のファイルのバックアップを取得してください。

HiRDB運用ディレクトリ下（$PDDIR/conf下）のファイル

HiRDB運用ディレクトリ下のトラブルシュート情報（$PDDIR/spool下）のファイル

HiRDB運用ディレクトリのバックアップの取得方法については，マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「HiRDB運用ディレクトリの作成」の「HiRDB運用ディレクトリのバックアップの取得」を参照してください。

単体版HiRDBをOSから削除（HiRDB運用ディレクトリ数分繰り返す）

単体版HiRDBをアンインストールする前に，単体版HiRDBのHiRDB運用ディレクトリ下のHiRDBシステムをOSから削除してください。

このとき，単体版HiRDBの実行に必要なファイルおよびディレクトリも削除してください（pdsetup -dコマンドを実行し，KFPS00036-Qメッセージにyを応答してください）。

pdsetup -dコマンドの終了ステータスが0でない場合，障害が起きているおそれがあります。syslogファイルに出力されたメッセージを参照して，障害原因を取り除いてから，OSからの削除を再度実行してください。

単体版HiRDBのアンインストール

日立PPインストーラを使用してサーバマシンごとに単体版HiRDBをアンインストールしてください。

アンインストールの結果は，日立PPインストーラの画面で確認してください。アンインストールが成功していない場合は，syslogファイルに出力されたメッセージを参照して，障害原因を取り除いてから，アンインストールを再度実行してください。

統合版HiRDBのインストール

日立PPインストーラを使用して，サーバマシンごとに統合版HiRDBをインストールしてください。

HiRDBシステム定義の変更（HiRDB運用ディレクトリ数分繰り返す）

構造型DB機能を使用するために必要なオペランドを，HiRDB運用ディレクトリ下（$PDDIR/conf下）のHiRDBのシステム定義ファイルに定義してください。

構造型DB機能を使用するために必要なオペランドについては，「9.　システム定義」を参照してください。

統合版HiRDBをOSに登録（HiRDB運用ディレクトリ数分繰り返す）

統合版HiRDBをインストールしたあとに，pdsetupコマンドで，統合版HiRDBのHiRDB運用ディレクトリ下のHiRDBシステムをOSに登録してください。

pdsetupコマンドの-cオプションには，必ず次の条件を満たす文字コードを指定してください。

単体版HiRDBで指定していた文字コード

統合版HiRDBで指定できる文字コード

指定できる文字コードについては，「4.7.1　入れ替えに関する前提条件」を参照してください。

HiRDBの再起動

pdstartコマンドでHiRDBを再起動してください。HiRDBの再起動が完了すると，構造型DB用のRDエリアの定義や，SDBデータベースの定義ができる状態になります。

RDエリアのバックアップの取得

構造型DB用のRDエリアの定義や，SDBデータベースを定義する前に，構造型DB機能が使える状態となったすべてのRDエリアのバックアップを，データベース複写ユティリティ（pdcopy）などで取得してください。

(4)　障害時の運用

単体版HiRDBから統合版HiRDBへの入れ替えに失敗した場合，失敗の原因によっては統合版HiRDBをいったん単体版HiRDBに戻して失敗の原因を取り除いてから，再度入れ替える必要があります。

統合版HiRDBを入れ替え前に戻す手順を次の図に示します。

図4‒6　統合版HiRDBを単体版HiRDBに戻す手順（入れ替えに失敗した場合）

注※

HiRDB運用ディレクトリ数分繰り返します。

4.7.3　統合版HiRDBから単体版HiRDBへの入れ替え手順

ここでは，統合版HiRDBを単体版HiRDBに入れ替える手順について説明します。

(1)　入れ替え作業をする前の考慮点

入れ替え作業をする前の考慮点を次に示します。

(a)　指定値の見直しが必要なオペランド

次のオペランドは統合版HiRDB固有のオペランドです。そのため，単体版HiRDBでは指定できないので，オペランドの指定を削除してください。

システム共通定義

pd_structured_shmpool_dicsize

pd_structured_advance_resident

ユニット制御情報定義

pd_structured_directory_path

クライアント環境定義

PDUAPEXERLOGDMLSZ

PDUAPEXERLOGDMLDATA

PDSDBUAPDIR

PDSDBUAPFILE

(b)　構想型DB機能で使用する資源の削除

構想型DB機能で使用する次の資源は，単体版HiRDBへの入れ替え後に削除できなくなります。そのため，単体版HiRDBへの入れ替え前に削除してください。

SDBデータベース定義，SDBデータベース格納定義

SDBデータベースを格納するRDエリア

SDBデータベースの操作に関する監査対象イベントの定義

SDBディレクトリ情報ファイル

SDBデータベースに関するリソースだけを保有するスキーマ（リレーショナルDBで使用しないスキーマ）

追い付き反映キー対応表

また，次の資源については，単体版HiRDBへの入れ替え後に不要となるため，削除してください。

SDB用UAP環境定義ファイル

資源の削除手順については，「4.7.3(4)　構造型DB機能で使用した資源の削除手順」を参照してください。

(c)　マルチHiRDBの構成

単体版HiRDBと統合版HiRDBが混在する構成にはできません。

(d)　修正版HiRDBのコピーおよび入れ替え

入れ替え前の統合版HiRDBと修正版の単体版HiRDBでは，次のコマンドは実行できません。

pdprgcopyコマンド（修正版HiRDBのコピー）

pdprgrenewコマンド（修正版HiRDBの入れ替え）

(2)　統合版HiRDBから単体版HiRDBへの入れ替え時の注意事項

統合版HiRDBを単体版HiRDBに入れ替える場合，HiRDBクライアントも入れ替える必要があります。HiRDBクライアントを入れ替える際の注意事項を次に示します。

HiRDB/Run Timeをインストールするマシンに，セットアップ済みのHiRDB Structured Data Access Facility/Run Timeがある場合は，HiRDB Structured Data Access Facility/Run Timeをアンインストールしてください。そのあとで，HiRDB/Run Timeをインストールしてください。上書きインストールした場合の動作は保証できません。

HiRDB/Developer's Kitをインストールするマシンに，セットアップ済みのHiRDB Structured Data Access Facility/Developer's Kitがある場合は，HiRDB Structured Data Access Facility/Developer's Kitをアンインストールしてください。そのあとで，HiRDB/Developer's Kitをインストールしてください。上書きインストールした場合の動作は保証できません。

(3)　統合版HiRDBから単体版HiRDBへの入れ替え手順

運用中の統合版HiRDBを単体版HiRDBに入れ替える際に，事前に確認・設計しておくべき項目，および入れ替え手順を次に示します。

なお，統合版HiRDBのバージョンまたはリビジョン（VV-RR-ZZの形式で示すHiRDBのバージョン番号のうち，VVまたはRR）が単体版HiRDBのバージョンまたはリビジョンより古い場合は，バージョンアップも同時に実施されます。バージョンアップの手順についてはマニュアル「HiRDB Version 9 システム導入・設計ガイド」の「HiRDBのバージョンアップ」を参照してください。ただし，「HiRDBのバージョンアップ」では上書きインストールの手順が説明されていますが，統合版HiRDBを単体版HiRDBに入れ替えてバージョンアップする場合には，アンインストール後にインストールする手順となります。

(a)　入れ替え前に事前に確認・設計しておくべき項目

入れ替え前に事前に確認・設計しておくべき項目を次に示します。

OSのオペレーティングシステムパラメタの確認

単体版HiRDBに入れ替えることでOS資源の消費量が減る場合は，単体版HiRDBをインストールする前に，OSのオペレーティングシステムパラメタ（カーネルパラメタ）の値を変更してください。

オペレーティングシステムパラメタ（カーネルパラメタ）の見積もりについては，マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「Linuxのオペレーティングシステムパラメタの見積もり」を参照してください。

(b)　統合版HiRDBから単体版HiRDBへの入れ替え手順

統合版HiRDBから単体版HiRDBへの入れ替え手順を次に示します。

RDエリアのバックアップ取得

入れ替えが失敗した場合に備えて，データベース複写ユティリティ（pdcopy）などで，すべてのRDエリアのバックアップを取得してください。

バックアップの取得方法については，マニュアル「HiRDB Version 9 システム運用ガイド」の「バックアップの取得方法」を参照してください。

構造型DB機能で使用した資源の削除

構造型DB機能で使用した資源を削除してください。

資源の削除手順については，「4.7.3(4)　構造型DB機能で使用した資源の削除手順」を参照してください。

ディクショナリ表の再編成

2.の手順（構造型DB機能で使用した資源の削除）によって発生した，ディクショナリ表中の無効領域を解放するため，データベース再編成ユティリティ（pdrorg）でディクショナリ表を再編成してください。

HiRDBのオンライン状態の確認

pdlsコマンドでHiRDBが正常終了できる状態であることを確認します。すべてのユニットがACTIVEと表示されているかどうかを確認してください。

HiRDBの正常終了

4.の手順でACTIVEと表示されている場合，pdstopコマンドでHiRDBを正常終了させてください。

HiRDBがすでに終了している場合は，次のどちらかの情報を参照してHiRDBが正常終了しているかどうかを確認してください。

メッセージログファイル

syslogファイル

正常終了していない場合は，pdstartコマンドでいったんHiRDBを開始してから，pdstopコマンドで正常終了させてください。

HiRDBの状態確認

pdls -d ustコマンドでHiRDBが正常終了していることを確認してください。

ライブラリの共用化の解除

マルチHiRDB環境でライブラリを共用している場合は，pdmemsv -dコマンドでライブラリの共用化を解除してください。

入れ替え完了後に，再度pdmemsvコマンドでライブラリを共用化してください。

コマンド，ユティリティ，アプリケーション，およびHiRDBと連携している製品の停止

HiRDB Datareplicator，HiRDB Dataextractor，JP1/PFMなど，HiRDBにアクセスする連携製品を停止してください。これらを停止しないと，実行形式ファイルや共用ライブラリの削除に失敗するおそれがあります。

HiRDB運用ディレクトリ下のファイル，およびSDBディレクトリ情報ファイルのバックアップの取得（HiRDB運用ディレクトリ数分繰り返す）

入れ替えに失敗した場合に備えて，OSのcpコマンドなどで，次のファイルのバックアップを取得してください。

HiRDB運用ディレクトリ下（$PDDIR/conf下）のファイル

SDBディレクトリ情報ファイル

HiRDB運用ディレクトリ下のトラブルシュート情報（$PDDIR/spool下）のファイル

HiRDB運用ディレクトリのバックアップの取得方法については，マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「HiRDB運用ディレクトリの作成」の「HiRDB運用ディレクトリのバックアップの取得」を参照してください。

SDBディレクトリ情報ファイルの削除

OSのrmコマンドなどで，SDBディレクトリ情報ファイルを削除してください。

統合版HiRDBをOSから削除（HiRDB運用ディレクトリ数分繰り返す）

統合版HiRDBをアンインストールする前に，統合版HiRDBのHiRDB運用ディレクトリ下のHiRDBシステムをOSから削除してください。

このとき，統合版HiRDBの実行に必要なファイルおよびディレクトリも削除してください（pdsetup -dコマンドを実行し，KFPS00036-Qメッセージにyを応答してください）。

pdsetup -dコマンドの終了ステータスが0でない場合，障害が起きているおそれがあります。syslogファイルに出力されたメッセージを参照して，障害原因を取り除いてから，OSからの削除を再度実行してください。

統合版HiRDBのアンインストール

日立PPインストーラを使用してサーバマシンごとに統合版HiRDBをアンインストールしてください。

アンインストールの結果は，日立PPインストーラの画面で確認してください。アンインストールが成功していない場合は，syslogファイルに出力されたメッセージを参照して，障害原因を取り除いてから，アンインストールを再度実行してください。

単体版HiRDBのインストール

日立PPインストーラを使用して，サーバマシンごとに単体版HiRDBをインストールしてください。

HiRDBシステム定義の変更（HiRDB運用ディレクトリ数分繰り返す）

構造型DB機能を使用するために指定していたオペランドを，HiRDB運用ディレクトリ下（$PDDIR/conf下）のHiRDBのシステム定義ファイルから削除してください。

構造型DB機能を使用するために必要なオペランドについては，「9.　システム定義」を参照してください。

単体版HiRDBをOSに登録（HiRDB運用ディレクトリ数分繰り返す）

単体版HiRDBをインストールしたあとに，pdsetupコマンドで，単体版HiRDBのHiRDB運用ディレクトリ下のHiRDBシステムをOSに登録してください。

pdsetupコマンドの-cオプションには，必ず統合版HiRDBで指定していた文字コードを指定してください。

指定できる文字コードについては，「4.7.1　入れ替えに関する前提条件」を参照してください。

HiRDBの再起動

pdstartコマンドでHiRDBを再起動してください。HiRDBの再起動が完了すると，構造型DB機能が使用できない状態になります。

RDエリアのバックアップの取得

入れ替えが完了した時点（構造型DB機能が使用できなくなった状態）の，すべてのRDエリアのバックアップを，データベース複写ユティリティ（pdcopy）などで取得してください。

(4)　構造型DB機能で使用した資源の削除手順

統合版HiRDBから単体版HiRDBへ入れ替える際に，事前準備として実施する構造型DB機能で使用した資源の削除手順を次に示します。

構造型DB機能で使用した資源の削除手順

pdsdbdefコマンドで，SDBデータベースの定義情報（SDBディクショナリ情報，SDBディレクトリ情報定義）を削除します。

pdmodコマンドで，SDBデータベースを格納するRDエリアを削除します。

DROP AUDIT文で，SDBデータベース操作に関する監査対象イベントの定義を削除します。

DROP SCHEMA文で，SDBデータベースに関するリソースだけを保有するスキーマ（リレーショナルDBで使用しないスキーマ）を削除します。

更新可能なオンライン再編成を使用している場合は，pdsdborcrt -k delコマンドで追い付き反映キー対応表を削除します。

SDB用UAP環境定義を使用している場合は，OSのrmコマンドなどで，SDB用UAP環境定義ファイルを格納しているディレクトリ（$PDCONFPATH/pdsdbuapenv）を削除します。

(5)　障害時の運用

統合版HiRDBから単体版HiRDBへの入れ替えに失敗した場合，失敗の原因によっては単体版HiRDBをいったん統合版HiRDBに戻して失敗の原因を取り除いてから，再度入れ替える必要があります。

単体版HiRDBを入れ替え前に戻す手順を次の図に示す。

図4‒7　単体版HiRDBを統合版HiRDBに戻す手順（入れ替えに失敗した場合）

注※

HiRDB運用ディレクトリ数分繰り返します。

4.8　マルチHiRDBの設計

マルチHiRDBのシステム設計については，マニュアル「HiRDB Version 9システム導入・設計ガイド」の「マルチHiRDBの設計」を参照してください。

なお，HiRDB ServerとHiRDB Structured Data Access Facilityが混在する構成にはできませんので，注意してください。

4.9　SDB用UAP環境定義ファイルの準備【SD FMB】

SDB用UAP環境定義を使用して，SD FMBのSDBデータベースにアクセスする場合の準備作業について説明します。

4.9.1　SDB用UAP環境定義ファイルの作成

SDB用UAP環境定義ファイルの作成単位の検討と，作成方法について説明します。

(1)　SDB用UAP環境定義ファイルの作成単位の検討

1つのUAPグループに対して，SDB用UAP環境定義ファイルを1つ作成します。OpenTP1環境下の場合，サービスグループがUAPグループに該当します。SDB用UAP環境定義ファイルとUAPの関係を次の図に示します。

図4‒8　SDB用UAP環境定義ファイルとUAPの関係

［説明］

SDB用UAP環境定義ファイルは，クライアント環境定義を介してUAPグループと1対1で対応します。

例えば，UAPグループAのUAPは，SDB用UAP環境定義ファイル（uapenv01）を使用してSDBデータベースにアクセスします。

なお，UAPグループ内で，SDB用UAP環境定義のオペランドの指定値を変えたい場合は，UAPグループを分割してください。

(2)　SDB用UAP環境定義ファイルの作成方法

SDB用UAP環境定義ファイルをOSのテキストエディタで作成してください。SDB用UAP環境定義の指定内容については，「9.3　SDB用UAP環境定義【SD FMB】」を参照してください。

SDB用UAP環境定義ファイルのファイル名は，先頭がアルファベットの英数字の文字列にしてください。また，ファイル名は最大8文字としてください。

4.9.2　SDB用UAP環境定義ファイルを配置するサーバマシンの検討

SDB用UAP環境定義ファイルは，フロントエンドサーバがあるサーバマシンに配置します。マルチフロントエンドサーバの場合は，次に示すサーバマシンにSDB用UAP環境定義ファイルを配置してください。

SDB用UAP環境定義ファイルを使用するUAPが，接続する可能性があるすべてのフロントエンドサーバのサーバマシン

SDB用UAP環境定義ファイルの配置例を次の図に示します。

図4‒9　SDB用UAP環境定義ファイルの配置例

参考

SDB用UAP環境定義ファイルを使用するUAPが接続する可能性があるフロントエンドサーバが特定できない場合は，各フロントエンドサーバのサーバマシンにすべてのSDB用UAP環境定義ファイルを配置してください。

OSのファイル共用機能（NFS）を使用すると，SDB用UAP環境定義ファイルを1つのサーバマシンで管理できます。NFSを使用したHiRDBシステム定義ファイルの共用化については，マニュアル「HiRDB Version 9 システム定義」の「HiRDBシステム定義ファイルの共用化」を参照してください。

4.9.3　SDB用UAP環境定義ファイルを格納するディレクトリの作成

(1)　$PDCONFPATH/pdsdbuapenvディレクトリの作成

「4.9.2　SDB用UAP環境定義ファイルを配置するサーバマシンの検討」で決定したSDB用UAP環境定義ファイルを配置するサーバマシンの$PDCONFPATH下に，pdsdbuapenvディレクトリを作成してください。$PDCONFPATH/pdsdbuapenv下に，SDB用UAP環境定義ファイルを格納します。

注意事項

$PDCONFPATH/pdsdbuapenvディレクトリのパーミッションは，755に設定して維持してください。

■SDB用UAP環境定義ファイルの数が多い場合

$PDCONFPATH/pdsdbuapenv下に格納するSDB用UAP環境定義ファイルの数が多くなると，HiRDB/SDがファイルサーチする際の処理時間が長くなります。そのため，SDB用UAP環境定義ファイルの数が多くなる場合は，業務システムなどの単位で，$PDCONFPATH/pdsdbuapenv下にさらにディレクトリを作成することを推奨します。作成したディレクトリ下にSDB用UAP環境定義ファイルを格納します。

SDB用UAP環境定義ファイルを格納するディレクトリの構成例を次の図に示します。

図4‒10　SDB用UAP環境定義ファイルを格納するディレクトリの構成例

［説明］

上記の例の場合，$PDCONFPATH/pdsdbuapenv下にsystem01とsystem02のディレクトリを作成しています。system01とsystem02のディレクトリ下に，それぞれSDB用UAP環境定義ファイルを格納しています。

注意事項

ディレクトリ名称に使用する文字は，先頭が英字の英数字（最大8文字）にしてください。

ここで作成したディレクトリ（上記の例のsystem01とsystem02のディレクトリ）のパーミッションは，755に設定して維持してください。

SDB用UAP環境定義ファイルを格納できるディレクトリの階層は，$PDCONFPATH/pdsdbuapenv下1階層までです。例えば，$PDCONFPATH/pdsdbuapenv/system01/subdir01ディレクトリを作成し，そのディレクトリにSDB用UAP環境定義ファイルを格納することはできません。

(2)　SDB用UAP環境定義ファイルの配置

SDB用UAP環境定義ファイルを，「4.9.2　SDB用UAP環境定義ファイルを配置するサーバマシンの検討」で決定したサーバマシンに配置してください。「4.9.3(1)　$PDCONFPATH/pdsdbuapenvディレクトリの作成」で作成したディレクトリ下にSDB用UAP環境定義ファイルを格納します。

注意事項

SDB用UAP環境定義ファイルに対するパーミッションは，644に設定して維持してください。

参考

UAPがHiRDBサーバに接続した際，HiRDB/SDはSDB用UAP環境定義ファイルを読み込んで，解析結果をプロセス固有メモリに保持します。その結果，DMLの実行時に，SDB用UAP環境定義ファイルに指定された機能が適用されます。

4.9.4　クライアント環境定義の作成

次に示すオペランドを指定したクライアント環境定義を，UAPグループごとに作成してください。

PDSDBUAPFILE

このオペランドには，SDB用UAP環境定義ファイルの名称を指定します。

このオペランドの指定は必須となります。

PDSDBUAPDIR

このオペランドには，SDB用UAP環境定義ファイルを格納するディレクトリ名を指定します。$PDCONFPATH/pdsdbuapenv下に作成したディレクトリ名を指定します。

「4.9.3(1)　$PDCONFPATH/pdsdbuapenvディレクトリの作成」で，$PDCONFPATH/pdsdbuapenv下にディレクトリを作成した場合に，このオペランドを指定してください。

PDSDBUAPFILEオペランドおよびPDSDBUAPDIRオペランドの詳細については，「16.3.1(4)　SDBデータベースを操作するAPIまたはDMLの実行時にだけ指定できるクライアント環境定義」を参照してください。

クライアント環境定義のPDSDBUAPFILEオペランドおよびPDSDBUAPDIRオペランドの指定例を次に示します。

例1

$PDCONFPATH/pdsdbuapenv下に格納しているSDB用UAP環境定義ファイル（uapenv01）をUAPに適用する場合の，クライアント環境定義の指定例を次に示します。

PDSDBUAPFILE=uapenv01

例2

$PDCONFPATH/pdsdbuapenv/system01下に格納しているSDB用UAP環境定義ファイル（uapenv01）をUAPに適用する場合の，クライアント環境定義の指定例を次に示します。

PDSDBUAPFILE=uapenv01       ...1
PDSDBUAPDIR=system01        ...2

［説明］

SDB用UAP環境定義ファイルのファイル名を指定します。

SDB用UAP環境定義ファイルを格納したディレクトリ名を指定します。$PDCONFPATH/pdsdbuapenv下のディレクトリ名を指定します。

■24時間連続稼働のシステムの場合

OpenTP1環境下の場合，クライアント環境定義を変更すると，ユーザサーバの再起動が必要になります。そのため，24時間連続稼働するシステムの場合は，0バイトのSDB用UAP環境定義ファイルを作成しておくか，またはコメントだけを記述したSDB用UAP環境定義ファイルを作成しておくことを推奨します。このあらかじめ作成しておいたSDB用UAP環境定義ファイルの名称と格納ディレクトリを，クライアント環境定義のPDSDBUAPFILEとPDSDBUAPDIRに指定しておいてください。

このように準備しておくと，システムの稼働後にSDB用UAP環境定義を使用することになっても，クライアント環境定義の変更が不要になります。そのため，ユーザサーバの再起動が不要になります。

SDB用UAP環境定義の変更方法については，「5.10.1　SDB用UAP環境定義の変更方法【SD FMB】」を参照してください。

5　運用

この章では，構造型DB機能を使用するHiRDBの運用方法について説明します。

5.1　運用項目の一覧

構造型DB機能を使用するHiRDBの主な運用項目の一覧を次の表に示します。

表5‒1　HiRDBの主な運用項目の一覧

項番

運用項目

参照先

1

通常・定期運用

HiRDBの開始，終了

「5.2　HiRDBの開始および終了」

2

システムの状態監視

「5.3　システムの状態監視」

3

統計情報の取得

「5.4　統計情報の取得」

4

データベースのバックアップの取得

「5.5　データベースのバックアップの取得」

5

システムログファイルの運用

「HiRDB Version 9 システム運用ガイド」の「システムログファイルの運用」

6

RDエリアの空き容量の確認

「5.14.1　RDエリアの空き容量の確認」

7

一連番号の監視

「5.25　一連番号の監視」

8

保守運用

SDBデータベースの定義追加，定義変更，または定義削除

「5.6　SDBデータベースの定義追加，定義変更，または定義削除（HiRDBの再起動を必要とする場合）」

「5.7　SDBデータベースの定義追加または定義変更（HiRDBの再起動を必要としない場合）」

9

SDBディレクトリ情報ファイルの配布

「5.8　SDBディレクトリ情報ファイルの配布方法」

10

常用常駐領域のSDBディレクトリ情報の確認

「5.9　全ユニットのSDBディレクトリ情報が一致しているか確認する方法」

11

HiRDBシステム定義の変更

SDB用UAP環境定義の変更

「5.10　HiRDBシステム定義の変更」

12

クライアント環境定義の変更

「HiRDB Version 9 UAP開発ガイド」の「クライアント環境定義の設定内容」

13

SDBデータベースへのデータロード

「5.19　SDBデータベースへのデータロード」

14

インデクスの再作成

「5.20　インデクスの再作成」

15

SDBデータベースの再編成

「5.11　SDBデータベースの再編成（インナレプリカ機能を使用しない場合）」

「5.12　SDBデータベースの再編成（インナレプリカ機能を使用したオンライン再編成）【4V FMB，4V AFM】」

「5.13　SDBデータベースの再編成（インナレプリカ機能を使用した更新可能なオンライン再編成）【4V FMB】」

16

RDエリアの追加，削除，容量拡張，設定変更（自動増分の設定など）

「5.14　RDエリアの運用」

17

HiRDBファイルシステム領域の作成，削除，バックアップ取得，回復

「HiRDB Version 9 システム運用ガイド」の「HiRDBファイルシステム領域の運用」

18

SDBデータベースの横分割数の変更

「5.15　SDBデータベースの横分割数を増やす方法」

19

ユーザ権限の設定

「5.16.1　構造型DB機能に関するユーザ権限の設定」

20

スキーマの追加，削除

「5.17　スキーマの追加，削除」

21

OSの時刻の変更

「5.24　OSの時刻を変更する方法」

22

システム構成の変更

「5.27　システム構成を変更する方法」

23

トラブルシュート

データベースの回復

「5.18　データベースの回復」

24

障害発生時の対処

「HiRDB Version 9 システム運用ガイド」の「障害が発生したときの対処方法」

25

障害発生時の対処（pdsdblodコマンドの異常終了時）

「5.22　障害が発生したときの対処方法（pdsdblodコマンドの異常終了時）」

26

障害発生時の対処（更新可能なオンライン再編成）

「5.23　障害が発生したときの対処方法（更新可能なオンライン再編成の実行時）【4V FMB】」

27

PRFトレース機能の使用

「5.26　PRFトレース機能」

28

その他

ログレスモードでの運用（ログを取得しないときの運用）

「HiRDB Version 9 システム運用ガイド」の「ログレスモードでUAPまたはユティリティを実行するときの運用」

29

高速系切り替え機能使用時の運用

「6.　高速系切り替え機能の設定と運用」

30

セキュリティ監査機能使用時の運用

「7.　セキュリティ監査機能の設定と運用」

31

ディザスタリカバリシステム使用時の運用

「8.　ディザスタリカバリシステムの構築と運用【4V FMB，4V AFM】」

5.2　HiRDBの開始および終了

pdstartコマンドでHiRDBを開始し，pdstopコマンドでHiRDBを終了します。pdstartコマンドおよびpdstopコマンドは，システムマネジャがあるサーバマシンで実行してください。

開始方法および終了方法の詳細については，マニュアル「HiRDB Version 9 システム運用ガイド」の「HiRDBの開始および終了方法」を参照してください。

pdstartコマンドおよびpdstopコマンドについては，マニュアル「HiRDB Version 9 コマンドリファレンス」を参照してください。

■高速系切り替え機能を使用している場合

高速系切り替え機能を使用している場合のHiRDBの開始方法および終了方法については，「6.11.1　HiRDBの開始」を参照してください。

なお，HiRDBを開始したあとに，pdsdbarc -cコマンドを実行して，SDBディレクトリ情報の最終更新日時のチェックを行い，全ユニットのSDBディレクトリ情報が一致していることを確認してください。

また，高速系切り替え機能を使用している場合は，実行系ユニットと待機系ユニットのSDBディレクトリ情報が一致していることを確認してください。確認方法については，「5.9.2　常用常駐領域のSDBディレクトリ情報の確認方法（待機系ユニットの場合）」を参照してください。

5.3　システムの状態監視

HiRDBの稼働中は次に示す項目を定期的に監視してください。

出力されたメッセージ

システムログファイルの状態

メッセージの参照方法については，マニュアル「HiRDB Version 9 システム運用ガイド」の「メッセージログでシステムの実行状況を確認する」を参照してください。

システムログファイルの監視方法については，マニュアル「HiRDB Version 9 システム運用ガイド」の「システムログファイルの運用」を参照してください。なお，メッセージおよびシステムログファイル以外にも，監視する項目があります。詳細については，マニュアル「HiRDB Version 9 システム運用ガイド」の「システムの稼働環境を知る方法（システムの状態監視）」を参照してください。

5.4　統計情報の取得

統計情報の取得については，マニュアル「HiRDB Version 9 システム運用ガイド」の「システムの稼働環境を知る方法」を参照してください。SDBデータベースに関する情報は，次に示す統計情報にだけ出力されます。

システムの稼働に関する統計情報

UAPに関する統計情報

グローバルバッファプールに関する統計情報

インデクスに関する統計情報

データベース操作に関するHiRDBファイルの統計情報

デファードライト処理に関する統計情報

データベースの入出力に関する統計情報

5.5　データベースのバックアップの取得

pdcopyコマンドで定期的にデータベースのバックアップを取得します。バックアップの取得方法については，マニュアル「HiRDB Version 9 システム運用ガイド」の「バックアップの取得方法」を参照してください。pdcopyコマンドについては，マニュアル「HiRDB Version 9 コマンドリファレンス」を参照してください。

同時にバックアップを取得する必要があるRDエリア

バックアップを取得する際，ユーザ用RDエリアのバックアップだけを取得するのではなく，システム用RDエリアのバックアップも取得する必要があるケースがあります。バックアップを取得する際は，次に示す表に記載されているRDエリアのバックアップを同時に取得するようにしてください。

表5‒2　同時にバックアップを取得する必要があるRDエリア

前回のバックアップ取得以降に実行した操作

バックアップを取得するRDエリアの種類

MST

DIR

DIC

USR

レコードの格納

○

レコードの更新

○

レコードの削除

○

レコードの一括削除

○

HiRDB/SD定義ユティリティ※

*ENTRY DICTIONARY文（SDBディクショナリ情報の登録）

*ALTER DICTIONARY文（SDBディクショナリ情報の変更）

○

*DELETE DICTIONARY文（SDBディクショナリ情報の削除）

*CHECK DICTIONARY文（データベース定義のチェック）

*ENTRY DIRECTORY文（SDBディレクトリ情報の追加）

*ALTER DIRECTORY文（SDBディレクトリ情報の変更）

*DELETE DIRECTORY文（SDBディレクトリ情報の削除）

○

○

○

○

HiRDB/SDデータベース作成ユティリティ

○

（凡例）

○：同時にバックアップを取得する必要があるRDエリア

空白：バックアップを取得する必要がないことを意味しています。

MST：マスタディレクトリ用RDエリア

DIR：データディレクトリ用RDエリア

DIC：データディクショナリ用RDエリア

USR：ユーザ用RDエリア

注

上記の表の見方について説明します。例えば，SDBディレクトリ情報の追加を実行した場合，その操作のあとでマスタディレクトリ用RDエリア，データディレクトリ用RDエリア，データディクショナリ用RDエリア，およびユーザ用RDエリアのバックアップを同時に取得する必要があるということを示しています。

マニュアル「HiRDB Version 9 システム運用ガイド」の「同時にバックアップを取得する必要があるRDエリア」にも，同時にバックアップを取得する必要があるRDエリアの記載があります。そちらもあわせて参照してください。

注※

SDBディレクトリ情報ファイルを作成しただけの場合は，バックアップを取得する必要はありません。

インナレプリカ機能を使用したバックアップの取得方法

インナレプリカ機能を使用したバックアップの取得方法については，マニュアル「インナレプリカ機能 HiRDB Staticizer Option Version 9」の「インナレプリカグループ内のRDエリアのバックアップと回復」を参照してください。

5.6　SDBデータベースの定義追加，定義変更，または定義削除（HiRDBの再起動を必要とする場合）

ここでは，HiRDBの再起動を必要とするSDBデータベースの定義追加，定義変更，または定義削除の手順について説明します。

HiRDBの再起動を必要としないSDBデータベースの定義追加，定義変更の手順については，「5.7　SDBデータベースの定義追加または定義変更（HiRDBの再起動を必要としない場合）」を参照してください。

なお，SDBデータベースの定義削除，または分割格納条件の変更機能を使って，格納RDエリアの削除や，分割条件を変更して格納RDエリアの分割，統合をする場合は，定義削除や変更後にHiRDBの再起動を必要とするため，ここで説明している手順を実施してください。

5.6.1　SDBディレクトリ情報の変更の流れ

SDBデータベースの定義追加，定義変更，または定義削除したあとに，SDBディレクトリ情報を変更する必要があります。SDBディレクトリ情報を変更する際の流れを次の図に示します。

図5‒1　SDBディレクトリ情報を変更する際の流れ

［説明］

pdsdbdefコマンドを実行してSDBデータベースの定義追加，定義変更，または定義削除したあとに，SDBディレクトリ情報ファイルを作成します。

1.で作成したSDBディレクトリ情報ファイルを各ユニットに配布します。

HiRDBを再起動すると，SDBディレクトリ情報が常用常駐領域に常駐されます。

上記の流れで，変更後のSDBディレクトリ情報を共用メモリに常駐します。

なお，1.と2.は，1回のpdsdbdefコマンドで実行できます。

5.6.2　SDBデータベースの定義追加，定義変更，または定義削除の手順（概要）

SDBデータベースの定義追加，定義変更，または定義削除する手順（概要）を次の図に示します。

図5‒2　SDBデータベースの定義追加，定義変更，または定義削除する手順（概要）

注※

「5.6.5(1)　SDBデータベースの定義変更をする方法」で格納RDエリアを分割する場合，「5.6.5(2)　SDBデータベースを再定義する方法」でSDBデータベースの定義変更をする場合に必要な手順です。

注意事項

4V FMBまたは4V AFMのSDBデータベースの定義追加，定義変更，または定義削除をする場合は，上記の1.〜13.の操作を実行してください。

SD FMBのSDBデータベースの定義追加，定義変更，または定義削除をする場合は，上記の図の色の付いている個所（2.〜11.）の操作を実行してください。

図中の項番は，「5.6.3　SDBデータベースの定義追加，定義変更，または定義削除の手順（各手順の詳細）」の（　）の番号と対応しています。

■上記の手順の途中で障害が発生した場合

次に示すどちらかの方法で対処してください。

SDBデータベースの定義追加，定義変更，または定義削除後の状態にする場合

障害発生時に実行していた手順を再実行し，以降の手順を続行してください。

SDBデータベースの定義追加，定義変更，または定義削除前の状態に戻す場合

項番2で取得したバックアップを使用してRDエリアを回復し，そのあとでSDBディレクトリ情報ファイルを再作成してください。手順については，「5.18.3　例題2（システム用RDエリアとユーザ用RDエリアをバックアップ取得時点に回復する場合）」を参照してください。

また，項番12のTP1/FSPのUAP共用ライブラリの入れ替え後に障害が発生した場合は，UAP共用ライブラリを入れ替え前の状態に戻してください。

5.6.3　SDBデータベースの定義追加，定義変更，または定義削除の手順（各手順の詳細）

SDBデータベースの定義追加，定義変更，または定義削除をする際の，各手順の詳細について説明します。

注意事項

【4V FMB，4V AFM】の表記がある個所の説明は，4V FMBまたは4V AFMのSDBデータベースの定義追加，定義変更，または定義削除をする際に実行する操作です。SD FMBのSDBデータベースの定義追加，定義変更，または定義削除をする際は，実行する必要がない操作です。

(1)　TP1/FSPを停止する【4V FMB，4V AFM】

TP1/FSPのeesvstopコマンドでTP1/FSPを停止します。この操作によってオンラインが停止状態になります。

(2)　RDエリアのバックアップを取得する

pdcopyコマンドで，次に示すRDエリアのバックアップを取得します。

マスタディレクトリ用RDエリア

データディレクトリ用RDエリア

データディクショナリ用RDエリア

処理対象のSDBデータベースを格納しているユーザ用RDエリア（レコードおよびインデクスを格納しているユーザ用RDエリア）

バックアップの取得方法については，マニュアル「HiRDB Version 9 システム運用ガイド」の「バックアップの取得方法」を参照してください。

(3)　レコードをアンロードする

SDBデータベースの定義変更をする場合は，pdsdbrogコマンドでレコードのアンロードを実行します。ただし，*ALTER DICTIONARY文で最下位のレコード型とその親子集合の追加の定義変更の場合は，アンロードは不要です。

注意事項

SD FMBのSDBデータベースの定義変更は，SDBデータベースの再定義となります。そのため，SD FMBのSDBデータベースの定義変更をする場合は，レコードのアンロードを必ず実行してください。

分割格納条件の変更機能を使用して，既存のRDエリアを変更（分割または統合）する場合，pdsdbdefコマンドの実行時に変更（分割または統合）対象のRDエリアに格納されているデータが削除されることがあるため，削除対象のデータが格納されているRDエリアのデータをアンロードしておく必要があります。定義変更とRDエリアに格納されているデータの削除の関係については，「表11-23　RDエリアの定義変更時のデータの削除有無（格納条件指定の横分割の場合）」または「表11-24　RDエリアの定義変更時のデータの削除有無（境界値指定の横分割の場合）」を参照してください。

■アンロードが必要となる範囲

定義変更によってアンロードが必要となる範囲について説明します。

SDBデータベースを再作成する場合

SDBデータベースに格納されている全データをアンロードします。

データ格納用RDエリアを分割する場合

分割元のRDエリア（分割対象のRDエリア）に格納されているデータをアンロードします。例を次に示します。

（例）定義変更によって境界値の範囲の一部を既存のRDエリアに分割する場合

データ格納用RDエリアを統合する場合

統合元のRDエリア（削除対象のRDエリア）に格納されているデータをアンロードします。例を次に示します。

（例1）定義変更によって削除されるRDエリアが，定義変更後には存在しない場合

（例2）定義変更によって削除されるRDエリアが，定義変更後にも存在する場合

データ格納用RDエリアを削除する場合

削除対象のRDエリアに格納されているデータをアンロードします。

なお，pdsdbrogコマンドを実行する前にpdsdbarc -aコマンドを実行して，全ユニットの常用常駐領域のSDBディレクトリ情報が一致しているかどうかを確認してください。確認方法については，「5.9.1　常用常駐領域のSDBディレクトリ情報の確認方法（実行系ユニットの場合）」を参照してください。

(4)　待機系ユニットを終了する

高速系切り替え機能を使用している場合は，HAモニタのmonsbystpコマンドですべての待機系ユニットを終了してください。

(5)　SDBデータベースの定義追加，定義変更，または定義削除を行う

SDBデータベースの定義追加をする場合

「5.6.4　SDBデータベースの定義追加」を参照してください。

SDBデータベースの定義変更をする場合

「5.6.5　SDBデータベースの定義変更」を参照してください。

SDBデータベースの定義削除をする場合

「5.6.6　SDBデータベースの定義削除」を参照してください。

(6)　SDBディレクトリ情報ファイルを作成して配布する

pdsdbdefコマンドで，SDBディレクトリ情報ファイルを作成して全ユニット（高速系切り替え機能を使用している場合は待機系ユニットも含む）に配布してください。SDBディレクトリ情報ファイルの配布方法の詳細については，「5.8.1　SDBディレクトリ情報ファイルを作成して配布する場合」を参照してください。

(7)　HiRDBを正常終了する

pdstopコマンドでHiRDBを正常終了します。必ず正常終了させてください。

(8)　pd_structured_shmpool_dicsizeオペランドの指定値を変更する

次に示す場合は，システム共通定義のpd_structured_shmpool_dicsizeオペランドの指定値を変更してください。

SDBディレクトリ情報の合計長が，pd_structured_shmpool_dicsizeオペランドの指定値を超えている場合

SDBディレクトリ情報の合計長が，pd_structured_shmpool_dicsizeオペランドの指定値に比べてかなり小さい場合

SDBディレクトリ情報の合計長は，(6)でpdsdbdefコマンドを実行した際に出力されるKFPB61231-Iメッセージ（sizeに表示されます）で確認できます。

(9)　HiRDBを正常開始する

pdstartコマンドでHiRDBを正常開始します。SDBディレクトリ情報ファイル中のSDBディレクトリ情報が常用常駐領域に常駐されます。

(4)で待機系ユニットを終了している場合は，pdstart -qコマンドですべての待機系ユニットを開始してください。

(10)　全ユニットのSDBディレクトリ情報が一致していることを確認する

pdsdbarc -cコマンドを実行して，SDBディレクトリ情報の最終更新日時のチェックを行い，全ユニットのSDBディレクトリ情報が一致していることを確認してください。

チェックの結果，問題がある場合は，全ユニットに同じSDBディレクトリ情報ファイルが配布されていません。この場合，pdsdbdefコマンドで，SDBディレクトリ情報ファイルを配布し直してください。そのあとで，HiRDBを再起動してください。

なお，「(11)　SDBデータベースのデータロードを実行する」を行う場合は，pdsdbarc -aコマンドを実行して，全ユニットの常用常駐領域のSDBディレクトリ情報が一致しているかどうかを確認してください。確認方法については，「5.9.1　常用常駐領域のSDBディレクトリ情報の確認方法（実行系ユニットの場合）」を参照してください。

(11)　SDBデータベースのデータロードを実行する

(3)でレコードをアンロードした場合，pdsdblodコマンドでSDBデータベースのデータロードを実行します。構成要素の変更など，レコード型の形式を変更した場合は，(3)で作成したアンロードファイルの内容を加工する必要があります。

■データロードが必要となる範囲

定義変更によってアンロードを行った場合のSDBデータベースのデータロードが必要となる範囲について説明します。

SDBデータベースを再作成する場合

再作成したSDBデータベース全体に対して，pdsdblodコマンドでデータロードを実行します。このとき，(3)で作成したアンロードファイルを使用します。

データ格納用RDエリアを分割する場合

分割した各RDエリアに対して，pdsdblodコマンドでデータロードを実行してください。データが削除されたRDエリアに対しては，初期データロード（purgeオペランドにyesを指定）を実行してください。それ以外のRDエリアに対しては，追加データロード（purgeオペランドにnoを指定）を実行してください。※このとき，(3)で作成したアンロードファイルを使用します。

例を次に示します。

（例）定義変更によって境界値の範囲の一部を既存のRDエリアに分割する場合

データ格納用RDエリアを統合する場合

格納する必要があるデータをpdsdblodコマンドでデータロードしてください。※

例を次に示します。

（例1）定義変更によって削除されるRDエリアが，定義変更後には存在しない場合

（例2）定義変更によって削除されるRDエリアが，定義変更後にも存在する場合

＜4V FMBのSDBデータベースの場合＞

統合先のRDエリアに対して，pdsdblodコマンドで追加データロード（purgeオペランドにnoを指定）を実行します。このとき，(3)で作成したアンロードファイルを使用します。

また，統合元のRDエリアが定義変更後も存在する場合は，統合元のRDエリアに対して，pdsdblodコマンドで初期データロード（purgeオペランドにyesを指定）を実行します。このとき，(3)で作成したアンロードファイルを使用します。

＜4V AFMのSDBデータベースの場合＞

統合先のRDエリアのデータをアンロードし，(3)でアンロードしたデータとマージします。そのあと，統合先のRDエリアに対して，pdsdblodコマンドで初期データロード（purgeオペランドにyesを指定）を実行します。また，統合元のRDエリアが定義変更後も存在する場合は，統合元のRDエリアに対しても，マージしたデータをpdsdblodコマンドで初期データロード（purgeオペランドにyesを指定）します。

データ格納用RDエリアを削除する場合

(3)でレコードをアンロードした場合，データのキー値を，統合先のRDエリアに対応する値に変更し，格納する必要があるデータをpdsdblodコマンドでデータロードしてください。

＜4V FMBのSDBデータベースの場合＞

キー値を変更したデータを，pdsdblodコマンドで追加データロード（purgeオペランドにnoを指定）してください。

＜4V AFMのSDBデータベースの場合＞

統合先のRDエリアに格納されているデータをアンロードし，キー値を変更したデータとマージします。そのあと，統合先のRDエリアに対して，マージしたデータをpdsdblodコマンドで初期データロード（purgeオペランドにyesを指定）してください。

注※

アンロードファイル中の格納条件に一致しないレコードはエラーとして扱われます。このため，pdsdblodコマンドのdivermsgオペランドにはnoputを指定して，エラー処理をスキップさせて，各RDエリアにデータロードを実行してください。

なお，pdsdblodコマンドを実行する前にpdsdbarc -aコマンドを実行して，全ユニットの常用常駐領域のSDBディレクトリ情報が一致しているかどうかを確認してください。確認方法については，「5.9.1　常用常駐領域のSDBディレクトリ情報の確認方法（実行系ユニットの場合）」を参照してください。

(12)　TP1/FSPのUAP共用ライブラリを入れ替える【4V FMB，4V AFM】

TP1/EEサービス定義のmodule_dirオペランドに指定したUAP共用ライブラリ格納ディレクトリに，新しいUAP共用ライブラリを格納します。または，module_dirオペランドの指定を，新しいUAP共用ライブラリを格納したディレクトリに変更します。

(13)　TP1/FSPを開始する【4V FMB，4V AFM】

TP1/FSPのeesvstartコマンドでTP1/FSPを開始します。

このとき，常用常駐領域中のSDBディレクトリ情報を入力情報にして，TP1/FSPのSDB定義情報領域にSDB定義情報が格納されます。

この作業が完了すると，定義追加，定義変更，または定義削除したSDBデータベースにアクセスできるようになります。

5.6.4　SDBデータベースの定義追加

SDBデータベースの定義追加の手順を次に示します。

手順

データベース定義を作成する

定義追加するSDBデータベースのSDBデータベース定義およびSDBデータベース格納定義を作成します。SDBデータベース定義およびSDBデータベース格納定義については，次の個所を参照してください。

4V FMBのSDBデータベースを定義する場合

「11.5　SDBデータベース定義，SDBデータベース格納定義【4V FMB】」

4V AFMのSDBデータベースを定義する場合

「11.6　SDBデータベース定義，SDBデータベース格納定義【4V AFM】」

SD FMBのSDBデータベースを定義する場合

「11.7　SDBデータベース定義，SDBデータベース格納定義【SD FMB】」

SDBディクショナリ情報およびSDBディレクトリ情報を追加する

pdsdbdefコマンドで*ENTRY DICTIONARY文および*ENTRY DIRECTORY文を実行し，定義追加するSDBデータベースのSDBディクショナリ情報およびSDBディレクトリ情報をディクショナリ表に追加します。1.で作成したSDBデータベース定義およびSDBデータベース格納定義を*ENTRY DICTIONARY文に指定します。

SDB定義文の参照先を次に示します。

*ENTRY DICTIONARY文：「11.4.2　*ENTRY DICTIONARY文（SDBディクショナリ情報の追加）」

*ENTRY DIRECTORY文：「11.4.6　*ENTRY DIRECTORY文（SDBディレクトリ情報の追加）」

注意事項

*ENTRY DICTIONARY文および*ENTRY DIRECTORY文は，1回のpdsdbdefコマンドで実行してください。

理由：

*ENTRY DIRECTORY文の実行時には，データベース定義のチェックが実行されます。

*ENTRY DICTIONARY文および*ENTRY DIRECTORY文を1回のpdsdbdefコマンドで実行した場合，データベース定義の不整合が検知されると，SDBディクショナリ情報およびSDBディレクトリ情報はディクショナリ表に追加されません。この場合，データベース定義を修正して，pdsdbdefコマンドを再実行することで対処できます。

*ENTRY DICTIONARY文と*ENTRY DIRECTORY文を別々に実行した場合，*ENTRY DIRECTORY文の実行時には，すでにSDBディクショナリ情報はディクショナリ表に追加されています。そのため，データベース定義の不整合が検知された場合に，データベース定義を修正するには，*DELETE DICTIONARY文を実行してSDBディクショナリ情報を削除してから，pdsdbdefコマンドを再実行することになります。

5.6.5　SDBデータベースの定義変更

SDBデータベースの定義変更をするには，次の2つの方法があります。

SDBデータベースの定義変更をする方法

SDBデータベースを再定義する方法

1.の方法では次の操作ができます。

最下位のレコード型とその親子集合の定義追加

格納するRDエリアの変更

そのほかの定義変更をする場合は，2.の方法で実施してください。

最下位のレコード型とその親子集合の定義追加の例については，4V FMBのSDBデータベースの場合は「11.5.1(4)　*ALTER DICTIONARY文によるSDBデータベースの定義変更」を参照してください。4V AFMのSDBデータベースの場合は「11.6.1(4)　*ALTER DICTIONARY文によるSDBデータベースの定義変更」を参照してください。

注意事項

SD FMBのSDBデータベースの定義変更は，「2．SDBデータベースを再定義する方法」で実施してください。「1．SDBデータベースの定義変更をする方法」は実施できません。

(1)　SDBデータベースの定義変更をする方法

*ALTER DICTIONARY文および*ALTER DIRECTORY文で，SDBデータベースの定義変更ができます。手順を次に示します。

手順

データベース定義を作成する

定義変更するSDBデータベースのSDBデータベース定義およびSDBデータベース格納定義を作成します。

なお，SDBデータベース定義およびSDBデータベース格納定義を作成する際は，変更個所だけを指定するのではなく，変更後のSDBデータベース定義およびSDBデータベース格納定義をすべて指定する必要があります。

SDBデータベース定義およびSDBデータベース格納定義については，次の個所を参照してください。

4V FMBのSDBデータベースの定義を変更する場合

「11.5　SDBデータベース定義，SDBデータベース格納定義【4V FMB】」

4V AFMのSDBデータベースの定義を変更する場合

「11.6　SDBデータベース定義，SDBデータベース格納定義【4V AFM】」

レコードをアンロードする

格納RDエリアの変更をする場合は，pdsdbrogコマンドで，変更対象のRDエリアに格納されたレコードをアンロードします。

SDBディクショナリ情報およびSDBディレクトリ情報を変更する

pdsdbdefコマンドで*ALTER DICTIONARY文および*ALTER DIRECTORY文を実行し，ディクショナリ表に登録されているSDBディクショナリ情報およびSDBディレクトリ情報を変更します。1.で作成したSDBデータベース定義およびSDBデータベース格納定義を*ALTER DICTIONARY文に指定します。

SDB定義文の参照先を次に示します。

*ALTER DICTIONARY文：「11.4.3　*ALTER DICTIONARY文（SDBディクショナリ情報の変更）【4V FMB，4V AFM】」

*ALTER DIRECTORY文：「11.4.7　*ALTER DIRECTORY文（SDBディレクトリ情報の変更）【4V FMB，4V AFM】」

注意事項

*ALTER DICTIONARY文および*ALTER DIRECTORY文は，1回のpdsdbdefコマンドで実行してください。

理由：

*ALTER DIRECTORY文の実行時にはデータベース定義のチェックが実行されます。

*ALTER DICTIONARY文および*ALTER DIRECTORY文を1回のpdsdbdefコマンドで実行した場合，データベース定義の不整合が検知されると，SDBディクショナリ情報およびSDBディレクトリ情報はディクショナリ表に追加されません。この場合，データベース定義を修正して，pdsdbdefコマンドを再実行することで対処できます。

*ALTER DICTIONARY文と*ALTER DIRECTORY文を別々に実行した場合，*ALTER DIRECTORY文の実行時には，すでにSDBディクショナリ情報はディクショナリ表に追加されています。そのため，データベース定義の不整合が検知された場合に，データベース定義を修正するには，*DELETE DICTIONARY文を実行してSDBディクショナリ情報を削除してから，pdsdbdefコマンドを再実行することになります。

1回のpdsdbdefコマンドで，*ALTER DICTIONARY文で追加または削除できるRDエリア数は15個までとなります。

レコードをデータロードする

格納RDエリアを変更した場合は，変更したRDエリアに対してpdsdblodコマンドを実行して，2.でアンロードしたレコードをデータロードします。

■SDBデータベースの定義変更を誤った場合の対処

名称の誤りなど，SDBデータベースの定義変更を誤った場合，次に示す手順で対処してください。

pdsdbrogコマンドで，レコードをアンロードします。

pdsdbdefコマンドで，定義変更を誤ったSDBデータベースの定義削除を行います。

pdsdbdefコマンドで，SDBデータベースの定義追加を行います。

pdsdbdefコマンドで，SDBディレクトリ情報ファイルを作成して，全ユニットに配布します。

HiRDBを再起動します。

pdsdblodコマンドを使用して，1.でアンロードしたレコードをデータロードします。分割したRDエリアを元に戻した場合は，追加データロードを実行してください。

詳細な手順については，「5.6.3　SDBデータベースの定義追加，定義変更，または定義削除の手順（各手順の詳細）」を参照してください。

参考

上記手順の2.〜4.は，１回のpdsdbdefコマンドで実行できます。

(2)　SDBデータベースを再定義する方法

*DELETE DICTIONARY文および*DELETE DIRECTORY文でSDBデータベースの定義をいったん削除し，*ENTRY DICTIONARY文と*ENTRY DIRECTORY文でSDBデータベースを再定義することで，SDBデータベースの定義変更を行います。手順を次に示します。

手順

データベース定義を作成する

定義変更するSDBデータベースのSDBデータベース定義およびSDBデータベース格納定義を作成します。

SDBディクショナリ情報およびSDBディレクトリ情報をいったん削除し，追加し直す

SDBディクショナリ情報およびSDBディレクトリ情報を，*DELETE DICTIONARY文と*DELETE DIRECTORY文でいったん削除し，*ENTRY DICTIONARY文と*ENTRY DIRECTORY文で再度追加します。1.で作成したSDBデータベース定義およびSDBデータベース格納定義を*ENTRY DICTIONARY文に指定します。

なお，*DELETE DICTIONARY文および*DELETE DIRECTORY文を実行するためにpdsdbdefコマンドを実行する際，-iオプションを指定する必要があります。-iオプションを指定しないと，pdsdbdefコマンドの実行がエラーになります。

注意事項

SDBディレクトリ情報およびSDBディクショナリ情報を削除する際は，必ず*DELETE DIRECTORY文，*DELETE DICTIONARY文の順にSDB定義文を指定してください。

SDB定義文の参照先を次に示します。

*DELETE DICTIONARY文：「11.4.4　*DELETE DICTIONARY文（SDBディクショナリ情報の削除）」

*DELETE DIRECTORY文：「11.4.8　*DELETE DIRECTORY文（SDBディレクトリ情報の削除）」

*ENTRY DICTIONARY文：「11.4.2　*ENTRY DICTIONARY文（SDBディクショナリ情報の追加）」

*ENTRY DIRECTORY文：「11.4.6　*ENTRY DIRECTORY文（SDBディレクトリ情報の追加）」

5.6.6　SDBデータベースの定義削除

pdsdbdefコマンドで*DELETE DICTIONARY文および*DELETE DIRECTORY文を実行し，SDBデータベースのSDBディクショナリ情報およびSDBディレクトリ情報をディクショナリ表から削除します。*DELETE DICTIONARY文の実行時には，SDBデータベースのレコードおよびインデクスも削除されます。

なお，*DELETE DICTIONARY文および*DELETE DIRECTORY文を実行するためにpdsdbdefコマンドを実行する際，-iオプションを指定する必要があります。-iオプションを指定しないと，pdsdbdefコマンドの実行がエラーになります。

注意事項

SDBディレクトリ情報およびSDBディクショナリ情報を削除する際は，必ず*DELETE DIRECTORY文，*DELETE DICTIONARY文の順にSDB定義文を指定してください。

SDB定義文の参照先を次に示します。

*DELETE DICTIONARY文：「11.4.4　*DELETE DICTIONARY文（SDBディクショナリ情報の削除）」

*DELETE DIRECTORY文：「11.4.8　*DELETE DIRECTORY文（SDBディレクトリ情報の削除）」

5.7　SDBデータベースの定義追加または定義変更（HiRDBの再起動を必要としない場合）

ここでは，HiRDBの再起動を必要としないSDBデータベースの定義追加または定義変更の手順について説明します。

なお，SDBデータベースの定義削除をする場合，または分割格納条件の変更機能を使って格納RDエリアの削除や，分割条件を変更して格納RDエリアの分割，統合をする場合は，定義削除または定義変更後にHiRDBの再起動を必要とするため，「5.6　SDBデータベースの定義追加，定義変更，または定義削除（HiRDBの再起動を必要とする場合）」で説明している手順で実施してください。

注意事項

SD FMBのSDBデータベースの場合，HiRDBの再起動を必要としないSDBデータベースの定義変更はできません。

前提条件

システム共通定義のpd_structured_advance_residentオペランドにuseを指定して，事前常駐領域を使用できるようにしている必要があります。

事前準備

pd_structured_shmpool_dicsizeオペランドで指定したSDBディレクトリ情報の常駐領域サイズに余裕があるか確認してください。SDBデータベースの定義追加または定義変更後に作成されるSDBディレクトリ情報の大きさが，pd_structured_shmpool_dicsizeオペランドの指定値を超えた場合，SDBディレクトリ情報を常駐化できません。現在のSDBディレクトリ情報を作成したときに出力されたKFPB61231-Iメッセージに，SDBディレクトリ情報長が出力されています。

SDBデータベースの定義追加をする場合は，SDBデータベースを格納するRDエリアをpdmodコマンドで作成しておいてください。また，pdmodコマンドの実行時，create rdarea文のglobalbufferオペランドを指定して，グローバルバッファを割り当ててください。

SDBデータベースの定義変更で，追加する子レコード型の二次インデクスを新規のRDエリアに格納する場合，および分割格納条件の変更機能を使ってRDエリアを追加する場合は，pdmodコマンドでRDエリアを作成しておいてください。また，pdmodコマンドの実行時，create rdarea文のglobalbufferオペランドでグローバルバッファを割り当ててください。

5.7.1　SDBディレクトリ情報の変更の流れ

SDBデータベースの定義追加または定義変更したあとに，共用メモリに常駐しているSDBディレクトリ情報を変更する必要があります。共用メモリに常駐しているSDBディレクトリ情報を変更する際の流れを次の図に示します。

図5‒3　共用メモリに常駐しているSDBディレクトリ情報を変更する際の流れ

［説明］

pdsdbdefコマンドを実行してSDBデータベースの定義追加または定義変更したあとに，SDBディレクトリ情報ファイルを作成します。

1.で作成したSDBディレクトリ情報ファイルを各ユニットに配布します。

pdsdbarc -eコマンドを実行して，SDBディレクトリ情報を事前常駐領域に常駐します。

pdsdbarc -w -qコマンドを実行して，事前常駐領域を常用常駐領域に切り替えます。

上記の流れで，共用メモリに常駐しているSDBディレクトリ情報を変更します。

なお，1.と2.は，1回のpdsdbdefコマンドで実行できます。

5.7.2　SDBデータベースの定義追加または定義変更の手順（概要）

SDBデータベースの定義追加または定義変更する手順（概要）を次の図に示します。

図5‒4　SDBデータベースの定義追加または定義変更する手順（概要）

注※

4V FMBまたは4V AFMのSDBデータベースの定義追加または定義変更をする場合，この期間はTP1サーバの追加ができません。

注意事項

4V FMBまたは4V AFMのSDBデータベースの定義追加または定義変更をする場合は，上記の1.〜12.の操作を実行してください。

SD FMBのSDBデータベースの定義追加をする場合は，上記の図の色の付いている個所（1.〜6.，8.〜9.，12.）の操作を実行してください。

図中の項番は，「5.7.3　SDBデータベースの定義追加または定義変更の手順（各手順の詳細）」の（　）の番号と対応しています。

■上記の手順の途中で障害が発生した場合

次に示すどちらかの方法で対処してください。

SDBデータベースの定義追加または定義変更後の状態にする場合

障害発生時に実行していた手順を再実行し，以降の手順を続行してください。

SDBデータベースの定義追加または定義変更前の状態に戻す場合

「5.7.7　障害発生時の対処（定義追加または定義変更前の状態に戻す場合）」を参照してください。

■留意事項

HiRDBの再開始処理が完了しないと，SDBデータベースの定義追加または定義変更はできません。HiRDBの再開始処理直後にSDBデータベースの定義追加または定義変更をする場合は，次に示すどちらかの方法でHiRDBの再開始処理が完了していることを確認してください。

KFPS02183-Iメッセージ（シンクポイントダンプを取得した際に出力されるメッセージ）が出力されている。

pdls -d trnコマンドを実行して，回復処理中のトランザクションがないことを確認する。

5.7.3　SDBデータベースの定義追加または定義変更の手順（各手順の詳細）

SDBデータベースの定義追加または定義変更をする際の，各手順の詳細について説明します。

注意事項

【4V FMB，4V AFM】の表記がある個所の説明は，4V FMBまたは4V AFMのSDBデータベースの定義追加または定義変更をする際に実行する操作です。SD FMBのSDBデータベースの定義追加をする際は，実行する必要がない操作です。

(1)　SDBディレクトリ情報ファイルを退避する

SDBデータベースの定義追加または定義変更の作業中に障害が発生した際に備えて，作業前の状態に戻すために，SDBディレクトリ情報ファイルを退避しておいてください。

(2)　RDエリアのバックアップを取得する

pdcopyコマンドで，次に示すRDエリアのバックアップを取得してください。

マスタディレクトリ用RDエリア

データディレクトリ用RDエリア

データディクショナリ用RDエリア

処理対象のSDBデータベースを格納しているユーザ用RDエリア（レコードおよびインデクスを格納しているユーザ用RDエリア）

バックアップの取得方法については，マニュアル「HiRDB Version 9 システム運用ガイド」の「バックアップの取得方法」を参照してください。

(3)　SDBデータベースの定義追加または定義変更を行う

SDBデータベースの定義追加をする場合

「5.7.4　SDBデータベースの定義追加」を参照してください。

SDBデータベースの定義変更をする場合

「5.7.5　SDBデータベースの定義変更」を参照してください。

(4)　SDBディレクトリ情報ファイルを作成して配布する

pdsdbdefコマンドで，SDBディレクトリ情報ファイルを作成して全ユニット（高速系切り替え機能を使用している場合は待機系ユニットも含む）に配布してください。SDBディレクトリ情報ファイルの配布方法の詳細については，「5.8.1　SDBディレクトリ情報ファイルを作成して配布する場合」を参照してください。

pdsdbdefコマンドを実行してSDBディレクトリ情報ファイルを作成すると，KFPB61231-Iメッセージが出力されます。このメッセージに，SDBディレクトリ情報の長さが表示されます。

（例）

KFPB61231-I SDB directory information file assigned, file="/home/user01/pdsdb/pdsdbdir",
num=48, size=577208, time stamp=2012120615420155(2012120615183822)

出力内容の説明：

file：SDBディレクトリ情報ファイル名

num：SDBディレクトリ情報の数

size：SDBディレクトリ情報の合計長（単位：バイト）

time stamp：SDBディレクトリ情報の最終更新日時

（　）内はSDB定義文の最終更新日時

sizeにSDBディレクトリ情報の長さ（単位：バイト）が表示されます。sizeに表示された値が，pd_structured_shmpool_dicsizeオペランド（SDBディレクトリ情報の常駐領域サイズ）の指定値より大きい場合，SDBディレクトリ情報を事前常駐領域に常駐できません。この場合，HiRDBを一度停止してpd_structured_shmpool_dicsizeオペランドの指定値を大きくする必要があります。

(5)　待機系ユニットを再起動する

高速系切り替え機能を使用している場合は，HAモニタのmonsbystpコマンドですべての待機系ユニットをいったん終了し，pdstart -qコマンドですべての待機系ユニットを開始してください。

待機系ユニットを再起動することによって，SDBディレクトリ情報が常用常駐領域に常駐されます。

待機系ユニットが開始したあと，すべての待機系ユニットで，常用常駐領域に常駐したSDBディレクトリ情報が一致しているかどうかを確認してください。確認方法については，「5.9.2　常用常駐領域のSDBディレクトリ情報の確認方法（待機系ユニットの場合）」を参照してください。

参考

4V FMBまたは4V AFMのSDBデータベースの定義追加または定義変更をする場合に，実行系と待機系の全ユニットでSDBディレクトリ情報を一致させる理由を次に示します。

実行系と待機系のユニットのうち，SDBディレクトリ情報が一致しないユニットが1つでもあると，新規に追加したTP1サーバが一致していないSDBディレクトリ情報を基にSDB定義情報領域を作成してしまうおそれがあります。その結果，SDB定義情報領域中の情報とUAP共用ライブラリが不整合な状態になり，SDBデータベースを操作するAPIの実行がエラーになります。

(6)　SDBディレクトリ情報を事前常駐領域に常駐する

pdsdbarc -eコマンドで，SDBディレクトリ情報を事前常駐領域に常駐します。

pdsdbarc -eコマンドの実行時，HiRDB/SDは，事前常駐領域に常駐したSDBディレクトリ情報の最終更新日時などをチェックします。チェックの結果，最終更新日時の不整合を検知した場合，不整合を検知したSDBディレクトリ情報を無効状態にします。無効状態のSDBディレクトリ情報は，(8)の操作で事前常駐領域を常用常駐領域に切り替える際，切り替えの対象外となります。切り替えの対象外となったSDBディレクトリ情報を使用しているユニット（フロントエンドサーバまたはバックエンドサーバ）を経由するAPIまたはDMLはエラーになります。そのため，最終更新日時の不整合が検知された場合，出力されたメッセージに従って対処し，事前常駐領域のSDBディレクトリ情報を正常な状態にしてください。

(7)　SDB定義情報を取得して，TP1/FSPのSDB定義情報領域（副）に格納する【4V FMB，4V AFM】

TP1/FSPのeesdhchg -bコマンドでSDB定義情報を取得し，SDB定義情報領域（副）に格納します（事前常駐領域中のSDBディレクトリ情報が入力情報になります）。

SDB定義情報を取得する方法については，マニュアル「TP1/Financial Service Platform 使用の手引」の「SDBハンドラ機能」の「SDB定義情報の事前取得」を参照してください。

(8)　トランザクションを静止化する

4V FMBまたは4V AFMのSDBデータベースの場合

TP1/FSPのeesvctl -sコマンドで，トランザクションを静止化します。eesvctl -sコマンドが正常終了して，完全にトランザクションが静止化したことを確認してから次の手順に進んでください。

注意事項

完全にトランザクションが静止化していない状態で次の手順を行った場合，データベース破壊やUAPの異常終了などが発生するおそれがあります。そのため，eesvctl -sコマンドが正常終了するまで，eesvctl -sを実行し続けてください。

「(9)　事前常駐領域を常用常駐領域に切り替える」の操作が完了するまでは，pdsdbdef，pdsdblod，pdsdbrog，およびpdsdbexeコマンドを実行しないでください。

SD FMBのSDBデータベースの場合

サービスを閉塞して，トランザクションを静止化します。サービスを閉塞するには，OpenTP1のスケジュール閉塞コマンドを実行します。詳細については，マニュアル「OpenTP1 Version 7　分散トランザクション処理機能　OpenTP1 運用と操作」を参照してください。

注意事項

完全にトランザクションが静止化していない状態で次の手順を行った場合，データベース破壊やUAPの異常終了などが発生するおそれがあります。

「(9)　事前常駐領域を常用常駐領域に切り替える」の操作が完了するまでは，pdsdbdef，pdsdblod，およびpdsdbrogコマンドを実行しないでください。

(9)　事前常駐領域を常用常駐領域に切り替える

pdsdbarc -w -qコマンドで，事前常駐領域を常用常駐領域に切り替えます。pdsdbarc -w -qコマンドはユニットごとに実行します。この操作は全ユニットで実行してください。

参考

pdsdbarc -w -qコマンドは実行系ユニットに対してだけ実行できます。待機系ユニットについては，「(5)　待機系ユニットを再起動する」の操作で，常用常駐領域にSDBディレクトリ情報が常駐されます。

事前常駐領域中のSDBディレクトリ情報が無効状態の場合，事前常駐領域を常用常駐領域に切り替えることはできません。切り替えられなかったSDBディレクトリ情報を使用しているユニット（フロントエンドサーバまたはバックエンドサーバ）を経由するAPIまたはDMLはエラーになるため，無効状態のSDBディレクトリ情報を次に示すどちらかの方法で正常な状態にしてください。

正しいSDBディレクトリ情報ファイルが配布済みの場合

事前常駐領域中のSDBディレクトリ情報が無効状態のユニットに対して，「(6)　SDBディレクトリ情報を事前常駐領域に常駐する」から作業を再実行してください。

正しいSDBディレクトリ情報ファイルが未配布の場合

事前常駐領域中のSDBディレクトリ情報が無効状態のユニットに対して，pdsdbdefコマンドでSDBディレクトリ情報ファイルを配布し直してください。そのあとで，「(6)　SDBディレクトリ情報を事前常駐領域に常駐する」から作業を再実行してください。

(10)　TP1/FSPのUAP共用ライブラリを入れ替える【4V FMB，4V AFM】

TP1/FSPのeechglibコマンドで，TP1/FSPのUAP共用ライブラリを入れ替えます。

(11)　TP1/FSPのSDB定義情報領域の正副を切り替える【4V FMB，4V AFM】

TP1/FSPのeesdhchg -cコマンドで，SDB定義情報領域の正副を切り替えます。この操作によって，定義追加または定義変更したSDBデータベースに対して，UAPからアクセスできるようになります。

(12)　トランザクションの静止化を解除する

4V FMBまたは4V AFMのSDBデータベースの場合

TP1/FSPのeesvctl -rコマンドで，トランザクションの静止化を解除します。

SD FMBのSDBデータベースの場合

サービスの閉塞を解除して，トランザクションの静止化を解除します。サービスの閉塞を解除するには，OpenTP1のスケジュール閉塞解除コマンドを実行します。詳細については，マニュアル「OpenTP1 Version 7　分散トランザクション処理機能　OpenTP1 運用と操作」を参照してください。

(12)の作業が完了すると，定義追加または定義変更したSDBデータベースにアクセスできるようになります。

5.7.4　SDBデータベースの定義追加

SDBデータベースの定義追加の手順を次に示します。

(1)　データベース定義を作成する

定義追加するSDBデータベースのSDBデータベース定義およびSDBデータベース格納定義を作成します。SDBデータベース定義およびSDBデータベース格納定義については，次の個所を参照してください。

4V FMBのSDBデータベースを定義する場合

「11.5　SDBデータベース定義，SDBデータベース格納定義【4V FMB】」

4V AFMのSDBデータベースを定義する場合

「11.6　SDBデータベース定義，SDBデータベース格納定義【4V AFM】」

SD FMBのSDBデータベースを定義する場合

「11.7　SDBデータベース定義，SDBデータベース格納定義【SD FMB】」

(2)　SDBディクショナリ情報を追加する

pdsdbdefコマンドで*ENTRY DICTIONARY文を実行し，定義追加するSDBデータベースのSDBディクショナリ情報をディクショナリ表に追加します。*ENTRY DICTIONARY文には，(1)で作成したSDBデータベース定義およびSDBデータベース格納定義を指定します。

注意事項

pdsdbdefコマンドを実行する際，SDB定義文に*CHECK DICTIONARY文（データベース定義のチェック）も必ずあわせて指定してください。

*ENTRY DICTIONARY文と*CHECK DICTIONARY文を別々に実行した場合，*CHECK DICTIONARY文の実行時にデータベース定義の不整合が検知されると，不整合が検知されたSDBディクショナリ情報を*DELETE DICTIONARY文で削除する必要が生じます。しかし，*DELETE DICTIONARY文を実行した場合，HiRDBを再起動する必要があるため，*ENTRY DICTIONARY文とあわせて*CHECK DICTIONARY文を必ず指定するようにしてください。

pdsdbdefコマンドを実行する際，-iオプションは指定しないでください。-iオプションを指定すると，HiRDBの再起動が必要になります。

*CHECK DICTIONARY文を指定した場合，データベース定義の指定内容に不整合があると，エラーメッセージが出力されます。また，このときSDBディクショナリ情報はディクショナリ表に追加されません。エラーがなくなるまで，(2)の作業を繰り返してください。

なお，1回のpdsdbdefコマンドで，複数のSDBデータベースのSDBディクショナリ情報を追加できます。

SDB定義文の参照先を次に示します。

*ENTRY DICTIONARY文：「11.4.2　*ENTRY DICTIONARY文（SDBディクショナリ情報の追加）」

*CHECK DICTIONARY文：「11.4.5　*CHECK DICTIONARY文（データベース定義のチェック）」

(3)　SDBディレクトリ情報を追加する

pdsdbdefコマンドで*ENTRY DIRECTORY文を実行し，SDBディレクトリ情報を追加します。

注意事項

(2)の作業で，複数のSDBデータベースのSDBディクショナリ情報を追加した場合，*ENTRY DIRECTORY文によるSDBディレクトリ情報の追加は，1回のpdsdbdefコマンドで実行してください。

pdsdbdefコマンドを複数回実行した場合，何回目かのpdsdbdefコマンドでエラーが発生すると，一部のSDBディレクトリ情報については作成が完了し，一部のSDBディレクトリ情報については未作成の状態になります。この場合，未作成状態のSDBディレクトリ情報を再度作成する必要があります。このため，*ENTRY DIRECTORY文によるSDBディレクトリ情報の追加は，1回で行う運用を推奨します。

pdsdbdefコマンドを実行する際，-iオプションは指定しないでください。-iオプションを指定すると，HiRDBの再起動が必要になります。

*ENTRY DIRECTORY文については，「11.4.6　*ENTRY DIRECTORY文（SDBディレクトリ情報の追加）」を参照してください。

5.7.5　SDBデータベースの定義変更

SDBデータベースの定義変更をする場合，pdsdbdefコマンドで*ALTER DICTIONARY文および*ALTER DIRECTORY文を実行します。

なお，*ALTER DICTIONARY文および*ALTER DIRECTORY文によるSDBデータベースの定義変更では，次の変更だけができます。

最下位のレコード型とその親子集合の追加

横分割したレコード型の格納RDエリア追加

最下位のレコード型とその親子集合の追加の例については，4V FMBのSDBデータベースの場合は「11.5.1(4)　*ALTER DICTIONARY文によるSDBデータベースの定義変更」を参照してください。4V AFMのSDBデータベースの場合は「11.6.1(4)　*ALTER DICTIONARY文によるSDBデータベースの定義変更」を参照してください。

そのほかの定義変更をする場合は，いったんSDBデータベースの定義削除をしたあとに定義変更を行い，再度SDBデータベースを定義追加するため，HiRDBを再起動する必要があります。この場合の手順については，「5.6.5　SDBデータベースの定義変更」を参照してください。

注意事項

SD FMBのSDBデータベースの場合，HiRDBの再起動を必要としないSDBデータベースの定義変更はできません。「5.6.5(2)SDBデータベースを再定義する方法」で説明している方法を実施してください。

SDBデータベースの定義変更の手順を次に示します。

(1)　データベース定義を作成する

定義変更するSDBデータベースのSDBデータベース定義およびSDBデータベース格納定義を作成します。

なお，SDBデータベース定義およびSDBデータベース格納定義を変更する際は，変更個所だけを指定するのではなく，変更後のSDBデータベース定義およびSDBデータベース格納定義をすべて指定する必要があります。

SDBデータベース定義およびSDBデータベース格納定義については，次の個所を参照してください。

4V FMBのSDBデータベースの定義を変更する場合

「11.5　SDBデータベース定義，SDBデータベース格納定義【4V FMB】」

4V AFMのSDBデータベースの定義を変更する場合

「11.6　SDBデータベース定義，SDBデータベース格納定義【4V AFM】」

(2)　SDBディクショナリ情報を変更する

pdsdbdefコマンドで*ALTER DICTIONARY文を実行し，SDBデータベースのSDBディクショナリ情報を変更します。*ALTER DICTIONARY文には，(1)で作成したSDBデータベース定義およびSDBデータベース格納定義を指定します。

注意事項

pdsdbdefコマンドを実行する際，SDB定義文に*CHECK DICTIONARY文（データベース定義のチェック）も必ずあわせて指定してください。

*ALTER DICTIONARY文と*CHECK DICTIONARY文を別々に実行した場合，*CHECK DICTIONARY文の実行時にデータベース定義の不整合が検知されると，不整合が検知されたSDBディクショナリ情報を*DELETE DICTIONARY文で削除する必要が生じます。しかし，*DELETE DICTIONARY文を実行した場合，HiRDBを再起動する必要があるため，*ALTER DICTIONARY文とあわせて*CHECK DICTIONARY文を必ず指定するようにしてください。

pdsdbdefコマンドを実行する際，-iオプションは指定しないでください。-iオプションを指定すると，HiRDBの再起動が必要になります。

*CHECK DICTIONARY文を指定した場合，データベース定義の指定内容に不整合があると，エラーメッセージが出力されます。また，このときSDBディクショナリ情報はディクショナリ表に追加されません。エラーがなくなるまで，(2)の作業を繰り返してください。

SDB定義文の参照先を次に示します。

*ALTER DICTIONARY文：「11.4.3　*ALTER DICTIONARY文（SDBディクショナリ情報の変更）【4V FMB，4V AFM】」

*CHECK DICTIONARY文：「11.4.5　*CHECK DICTIONARY文（データベース定義のチェック）」

(3)　SDBディレクトリ情報を変更する

pdsdbdefコマンドで*ALTER DIRECTORY文を実行し，SDBディレクトリ情報を変更します。

注意事項

(2)の作業で，複数のSDBデータベースのSDBディクショナリ情報を変更した場合，*ALTER DIRECTORY文によるSDBディレクトリ情報の変更は，1回のpdsdbdefコマンドで実行してください。

pdsdbdefコマンドを複数回実行した場合，何回目かのpdsdbdefコマンドでエラーが発生すると，一部のSDBディレクトリ情報については作成が完了し，一部のSDBディレクトリ情報については未作成の状態になります。この場合，未作成状態のSDBディレクトリ情報を再度作成する必要があります。

一方，1回のpdsdbdefコマンドで複数のSDBディレクトリ情報を変更した場合，すべてのSDBディレクトリ情報の作成が完了するか，またはすべてのSDBディレクトリ情報が未作成になるかのどちらかになります。そのため，pdsdbdefコマンドを複数回実行したときに比べて対処が簡単になります。

pdsdbdefコマンドを実行する際，-iオプションは指定しないでください。-iオプションを指定すると，HiRDBの再起動が必要になります。

*ALTER DIRECTORY文については，「11.4.7　*ALTER DIRECTORY文（SDBディレクトリ情報の変更）【4V FMB，4V AFM】」を参照してください。

■SDBデータベースの定義変更を誤った場合の対処

名称の誤りなど，SDBデータベースの定義変更を誤った場合，次に示す手順で対処してください。

pdsdbrogコマンドで，レコードをアンロードします。

pdsdbdefコマンドで，定義変更を誤ったSDBデータベースの定義削除を行います。

pdsdbdefコマンドで，SDBデータベースの定義追加を行います。

pdsdbdefコマンドで，SDBディレクトリ情報ファイルを作成して，全ユニットに配布します。

HiRDBを再起動します。

pdsdblodコマンドを使用して，1.でアンロードしたレコードをデータロードします。

上記の作業の詳細な手順については，「5.6.3　SDBデータベースの定義追加，定義変更，または定義削除の手順（各手順の詳細）」を参照してください。

参考

上記手順の2.〜4.は，１回のpdsdbdefコマンドで実行できます。

5.7.6　SDBディレクトリ情報の状態遷移

SDBデータベースの定義追加または定義変更時のSDBディレクトリ情報の状態遷移の例を次の図に示します。

次の図のフローは，「5.7.2　SDBデータベースの定義追加または定義変更の手順（概要）」の「図5-4　SDBデータベースの定義追加または定義変更する手順（概要）」に対応しています。

図5‒5　SDBディレクトリ情報の状態遷移の例

注※

4V FMBまたは4V AFMのSDBデータベースの定義追加または定義変更をする場合に実行する操作です。

5.7.7　障害発生時の対処（定義追加または定義変更前の状態に戻す場合）

SDBデータベースの定義追加または定義変更中に障害が発生し，定義追加または定義変更前の状態に戻す場合の手順を次の図に示します。

なお，障害の発生時点によって（「5.7.3　SDBデータベースの定義追加または定義変更の手順（各手順の詳細）」の手順のどの時点で障害が発生したかによって），障害対処の手順の開始位置が異なります。

図5‒6　定義追加または定義変更前の状態に戻す場合の手順（4V FMBまたは4V AFMのSDBデータベースの場合）

図5‒7　定義追加または定義変更前の状態に戻す場合の手順（SD FMBのSDBデータベースの場合）

図中の項番は，以降の説明の（　）の番号と対応しています。

「5.7.3(4)　SDBディレクトリ情報ファイルを作成して配布する」以前に障害が発生した場合は，UAPの実行環境は変更されていないため，上記の図に示す対処は必要ありません。

注意事項

(1)以降の説明で，【4V FMB，4V AFM】の表記がある個所の説明は，4V FMBまたは4V AFMのSDBデータベースの定義追加または定義変更をする際に実行する操作です。SD FMBのSDBデータベースの定義追加をする際は，実行する必要がない操作です。

(1)　TP1/FSPのSDB定義情報領域の正副を元に戻す【4V FMB，4V AFM】

TP1/FSPのeesdhchg -cコマンドで，SDB定義情報領域の正副を切り替えて元の状態（定義追加または定義変更前の状態）に戻します。

(2)　TP1/FSPのUAP共用ライブラリを入れ替え前の状態に戻す【4V FMB，4V AFM】

TP1/FSPのeechglibコマンドで，TP1/FSPのUAP共用ライブラリを入れ替え前の状態（定義追加または定義変更前の状態）に戻します。

(3)　トランザクションの静止化を解除する

4V FMBまたは4V AFMのSDBデータベースの場合

TP1/FSPのeesvctl -rコマンドで，トランザクションの静止化をいったん解除します。

SD FMBのSDBデータベースの場合

サービスの閉塞を解除して，トランザクションの静止化をいったん解除します。サービスの閉塞を解除するには，OpenTP1のスケジュール閉塞解除コマンドを実行します。詳細については，マニュアル「OpenTP1 Version 7　分散トランザクション処理機能　OpenTP1 運用と操作」を参照してください。

なお，(3)の操作は，障害対処作業の完了前にとりあえず業務を再開したい場合だけ実施してください。「(7)　トランザクションを静止化する」の操作の前までは，業務を実行できます。

(4)　変更前のSDBディレクトリ情報ファイルを配布する

変更前のSDBディレクトリ情報ファイルを，pdsdbdefコマンドで全ユニットに配布してください。

(5)　待機系ユニットを再起動する

高速系切り替え機能を使用している場合は，HAモニタのmonsbystpコマンドですべての待機系ユニットをいったん終了し，pdstart -qコマンドですべての待機系ユニットを開始してください。

待機系ユニットを再起動することによって，SDBディレクトリ情報が常用常駐領域に常駐されます。

(6)　SDBディレクトリ情報を事前常駐領域に常駐する

pdsdbarc -eコマンドで，SDBディレクトリ情報を事前常駐領域に常駐します。

(7)　トランザクションを静止化する

4V FMBまたは4V AFMのSDBデータベースの場合

TP1/FSPのeesvctl -sコマンドで，トランザクションを静止化します。eesvctl -sコマンドが正常終了して，完全にトランザクションが静止化したことを確認してから次の手順に進んでください。

(3)でトランザクションの静止化を解除した場合に，この操作を実行します。

注意事項

完全にトランザクションが静止化していない状態で次の手順を行った場合，データベース破壊やUAPの異常終了などが発生するおそれがあります。そのため，eesvctl -sコマンドが正常終了するまで，eesvctl -sを実行し続けてください。

SD FMBのSDBデータベースの場合

サービスを閉塞して，トランザクションを静止化します。サービスを閉塞するには，OpenTP1のスケジュール閉塞コマンドを実行します。詳細については，マニュアル「OpenTP1 Version 7　分散トランザクション処理機能　OpenTP1 運用と操作」を参照してください。

完全にトランザクションが静止化したことを確認してから次の手順に進んでください。

(3)でトランザクションの静止化を解除した場合に，この操作を実行します。

注意事項

完全にトランザクションが静止化していない状態で次の手順を行った場合，データベース破壊やUAPの異常終了などが発生するおそれがあります。

(8)　事前常駐領域を常用常駐領域に切り替える

pdsdbarc -w -qコマンドで，事前常駐領域を常用常駐領域に切り替えます。pdsdbarc -w -qコマンドはユニットごとに実行します。この操作は全ユニットで実行してください。

参考

pdsdbarc -w -qコマンドは実行系ユニットに対してだけ実行できます。待機系ユニットについては，「(5)　待機系ユニットを再起動する」の操作で，常用常駐領域にSDBディレクトリ情報が常駐されます。

事前常駐領域中のSDBディレクトリ情報が無効状態の場合，事前常駐領域を常用常駐領域に切り替えることはできません。切り替えられなかったSDBディレクトリ情報を使用しているユニット（フロントエンドサーバまたはバックエンドサーバ）を経由するAPIまたはDMLはエラーになるため，無効状態のSDBディレクトリ情報を次に示すどちらかの方法で正常な状態にしてください。

正しいSDBディレクトリ情報ファイルが配布済みの場合

「(6)　SDBディレクトリ情報を事前常駐領域に常駐する」から作業を再実行してください。

正しいSDBディレクトリ情報ファイルが未配布の場合

「(4)　変更前のSDBディレクトリ情報ファイルを配布する」から作業を再実行してください。

(9)　トランザクションの静止化を解除する

4V FMBまたは4V AFMのSDBデータベースの場合

TP1/FSPのeesvctl -rコマンドで，トランザクションの静止化を解除します。

SD FMBのSDBデータベースの場合

サービスの閉塞を解除して，トランザクションの静止化を解除します。サービスの閉塞を解除するには，OpenTP1のスケジュール閉塞解除コマンドを実行します。詳細については，マニュアル「OpenTP1 Version 7　分散トランザクション処理機能　OpenTP1 運用と操作」を参照してください。

(9)の操作が完了すると，定義追加または定義変更前の状態に戻ります。

注意事項

SDBディクショナリ情報およびSDBディレクトリ情報は，ディクショナリ表に追加された状態のままとなっています。そのため，同じSDBデータベースの定義追加または定義変更を再度行う場合は，いったんディクショナリ表に追加されているSDBディクショナリ情報およびSDBディレクトリ情報をpdsdbdefコマンドの*DELETE DICTIONARY文および*DELETE DIRECTORY文で削除する必要があります。

なお，SDBディクショナリ情報およびSDBディレクトリ情報を削除した場合，削除後にHiRDBを再起動する必要があります。

5.8　SDBディレクトリ情報ファイルの配布方法

SDBディレクトリ情報ファイルの配布方法について説明します。

5.8.1　SDBディレクトリ情報ファイルを作成して配布する場合

pdsdbdefコマンドで，SDBディレクトリ情報ファイルを作成して配布します。手順を例題形式で説明します。

例題

SDBディレクトリ情報ファイルを作成して，全ユニットにSDBディレクトリ情報ファイルを配布します。

(1)　pdsdbdefコマンドのSDB制御文を作成する

 dirinf /usr/sdb_dir          ...1
        generate=yes          ...2
        transfer=yes          ...3
        checkmode=match       ...4

SDBディレクトリ情報ファイルを作成して配布する場合，SDB制御文にdirinf文を指定します。dirinf文に指定した各オペランドについて説明します。

SDBディレクトリ情報ファイルを出力するディレクトリ名を指定します。SDBディレクトリ情報ファイルは，ここで指定したディレクトリ下（システムマネジャが定義されているサーバマシンのディレクトリ）に出力されます。

SDBディレクトリ情報ファイルを作成するため，yesを指定します。

SDBディレクトリ情報ファイルを全ユニットに配布するため，yesを指定します。全ユニットのユニット制御情報定義のpd_structured_directory_pathオペランドに指定したディレクトリ下に，SDBディレクトリ情報ファイルが配布されます。高速系切り替え機能を使用している場合は，待機系ユニットにもSDBディレクトリ情報ファイルが自動的に配布されます。

配布するSDBディレクトリ情報ファイル中のSDBディレクトリ情報の最終更新日時のチェックレベルを指定します。

参考

SDBディレクトリ情報ファイルの作成および配布だけをする場合は，SDB制御文にはdirinf文だけを指定します。

(2)　pdsdbdefコマンドを実行する

 pdsdbdef /usr/control_def_file

(1)で作成したSDB制御文ファイル名をpdsdbdefコマンドの引数に指定します。

注意事項

SDBディレクトリ情報ファイルのファイル名（pdsdbdir）は変更しないでください。

ディザスタリカバリシステムのリモートサイトは配布対象外です。リモートサイトにSDBディレクトリ情報ファイルを配布する方法については，「8.3.1(2)　「6. SDB ディレクトリ情報ファイルをリモートサイトに転送する」の作業」を参照してください。

5.8.2　SDBディレクトリ情報ファイルの配布だけをする場合

pdsdbdefコマンドで，SDBディレクトリ情報ファイルを配布します。手順を例題形式で説明します。ここでは，SDBディレクトリ情報ファイルの作成はしないで，配布だけをする手順を説明します。

例題

全ユニットにSDBディレクトリ情報ファイルを配布します。

(1)　pdsdbdefコマンドのSDB制御文を作成する

 dirinf /usr/sdb_dir          ...1
        generate=no           ...2
        transfer=yes          ...3
        checkmode=match       ...4

SDBディレクトリ情報ファイルを配布する場合，SDB制御文にdirinf文を指定します。dirinf文に指定した各オペランドについて説明します。

配布対象のSDBディレクトリ情報ファイルが格納されているディレクトリ名を指定します。システムマネジャが定義されているサーバマシンのディレクトリを指定します。

SDBディレクトリ情報ファイルは作成しないため，noを指定します。

SDBディレクトリ情報ファイルを全ユニットに配布するため，yesを指定します。全ユニットのユニット制御情報定義のpd_structured_directory_pathオペランドに指定したディレクトリ下に，SDBディレクトリ情報ファイルが配布されます。高速系切り替え機能を使用している場合は，待機系ユニットにもSDBディレクトリ情報ファイルが自動的に配布されます。

配布するSDBディレクトリ情報ファイル中のSDBディレクトリ情報の最終更新日時のチェックレベルを指定します。

参考

SDBディレクトリ情報ファイルの配布だけをする場合は，SDB制御文にはdirinf文だけを指定します。

(2)　pdsdbdefコマンドを実行する

 pdsdbdef /usr/control_def_file

(1)で作成したSDB制御文ファイル名をpdsdbdefコマンドの引数に指定します。

注意事項

SDBディレクトリ情報ファイルのファイル名（pdsdbdir）は変更しないでください。

ディザスタリカバリシステムのリモートサイトは配布対象外です。リモートサイトにSDBディレクトリ情報ファイルを配布する方法については，「8.3.1(2)　「6. SDB ディレクトリ情報ファイルをリモートサイトに転送する」の作業」を参照してください。

5.8.3　特定のユニットにSDBディレクトリ情報ファイルを配布する場合

pdsdbdefコマンドで，SDBディレクトリ情報ファイルを配布します。手順を例題形式で説明します。ここでは，SDBディレクトリ情報ファイルの作成はしないで，特定のユニットにだけ配布する手順を説明します。

例題

ユニット（ユニット名：UNT3）にSDBディレクトリ情報ファイルを配布します。

(1)　pdsdbdefコマンドのSDB制御文を作成する

 dirinf /usr/sdb_dir          ...1
        generate=no           ...2
        transfer=yes          ...3
        checkmode=match       ...4
        unit=UNT3             ...5

SDBディレクトリ情報ファイルを配布する場合，SDB制御文にdirinf文を指定します。dirinf文に指定した各オペランドについて説明します。

配布対象のSDBディレクトリ情報ファイルが格納されているディレクトリ名を指定します。システムマネジャが定義されているサーバマシンのディレクトリを指定します。

SDBディレクトリ情報ファイルは作成しないため，noを指定します。

SDBディレクトリ情報ファイルを配布するため，yesを指定します。5.で指定したユニットのユニット制御情報定義のpd_structured_directory_pathオペランドに指定したディレクトリ下に，SDBディレクトリ情報ファイルが配布されます。高速系切り替え機能を使用している場合は，待機系ユニットにもSDBディレクトリ情報ファイルが自動的に配布されます。

配布するSDBディレクトリ情報ファイル中のSDBディレクトリ情報の最終更新日時のチェックレベルを指定します。

配布対象のユニット名を指定します。

参考

SDBディレクトリ情報ファイルの配布だけをする場合は，SDB制御文にはdirinf文だけを指定します。

(2)　pdsdbdefコマンドを実行する

 pdsdbdef /usr/control_def_file

(1)で作成したSDB制御文ファイル名をpdsdbdefコマンドの引数に指定します。

注意事項

SDBディレクトリ情報ファイルのファイル名（pdsdbdir）は変更しないでください。

ディザスタリカバリシステムのリモートサイトは配布対象外です。リモートサイトにSDBディレクトリ情報ファイルを配布する方法については，「8.3.1(2)　「6. SDB ディレクトリ情報ファイルをリモートサイトに転送する」の作業」を参照してください。

5.9　全ユニットのSDBディレクトリ情報が一致しているか確認する方法

全ユニットのSDBディレクトリ情報が一致しているかどうかを確認する方法を説明します。

高速系切り替え機能を使用していない場合は，「5.9.1　常用常駐領域のSDBディレクトリ情報の確認方法（実行系ユニットの場合）」の方法で確認してください。

高速系切り替え機能を使用している場合は，「5.9.1　常用常駐領域のSDBディレクトリ情報の確認方法（実行系ユニットの場合）」および「5.9.2　常用常駐領域のSDBディレクトリ情報の確認方法（待機系ユニットの場合）」の両方の方法で確認してください。

5.9.1　常用常駐領域のSDBディレクトリ情報の確認方法（実行系ユニットの場合）

HiRDBの全ユニット（ユニット識別子：unt1，unt2）で，常用常駐領域のSDBディレクトリ情報が一致しているかどうかを確認する手順を次に示します。

(1)　SDBディレクトリ情報に関する情報を表示する

 pdsdbarc -a

pdsdbarc -aコマンドを実行して，SDBディレクトリ情報に関する情報を表示します。

(2)　全ユニットのSDBディレクトリ情報が一致しているか確認する

pdsdbarc -aコマンドの実行結果を参照して，全ユニットの常用常駐領域のSDBディレクトリ情報が一致しているかどうかを確認してください。

［説明］

KFPB31019-IおよびKFPB31020-Iメッセージに各ユニットのSDBディレクトリ情報が表示されます。KFPB31020-Iメッセージのkind=CONSの行に，常用常駐領域のSDBディレクトリ情報に関する情報が表示されます。

time stampに表示されているSDBディレクトリ情報およびSDB定義文の最終更新日時が，全ユニットで一致しているかどうかを確認してください。一致している場合は問題ありません。

stateにU（SDBディレクトリ情報が有効な状態を意味している）が表示されているかを確認してください。全ユニットでUが表示されている場合は問題ありません。

ユニット間でSDBディレクトリ情報が不一致の場合は，「5.9.3　常用常駐領域のSDBディレクトリ情報の不一致が発生したときの対処」を参照して対処してください。

5.9.2　常用常駐領域のSDBディレクトリ情報の確認方法（待機系ユニットの場合）

pdsdbarc -aコマンドの実行結果には，実行系ユニットのSDBディレクトリ情報だけが表示されます。待機系ユニットのSDBディレクトリ情報は表示されません。そのため，待機系ユニットのSDBディレクトリ情報が一致しているかどうかは，出力されたメッセージで確認します。手順を次に示します。

(1)　KFPB62908-Iメッセージの出力を確認する

待機系ユニットの開始処理時にKFPB62908-Iメッセージ（SDBディレクトリ情報が共用メモリの常用常駐領域に常駐化された旨のメッセージ）が出力されます。このメッセージが，全待機系ユニットで出力されていることを確認してください。

(2)　KFPB31020-Iメッセージの出力を確認する

待機系ユニットの開始後，pdsdbarc -aコマンドを実行して，SDBディレクトリ情報に関する情報を表示してください。実行結果にKFPB31020-Iメッセージが出力されたことを確認します。

(3)　KFPB62908-IとKFPB31020-Iメッセージの内容を確認する

これらの2つのメッセージに出力されている次に示す情報を確認します。すべてが同じ場合は，SDBディレクトリ情報が一致しています。

SDBディレクトリ情報の最終更新日時

SDB定義文の最終更新日時

［説明］

time stampに表示されているSDBディレクトリ情報およびSDB定義文の最終更新日時を確認します。（　）内がSDB定義文の最終更新日時です。

kind=CONSの行（常用常駐領域の情報）を確認してください。

全待機系ユニットについて確認してください。

SDBディレクトリ情報が不一致の場合は，「5.9.3　常用常駐領域のSDBディレクトリ情報の不一致が発生したときの対処」を参照して対処してください。

なお，実行系ユニットの開始後に実行したpdsdbarc -cコマンドの実行結果（KFPB31012-Iメッセージ）にも，SDBディレクトリ情報の最終更新日時とSDB定義文の最終更新日時が表示されます。KFPB62908-IとKFPB31012-Iメッセージでも，実行系ユニットと待機系ユニットのSDBディレクトリ情報が一致していることを確認できます。

5.9.3　常用常駐領域のSDBディレクトリ情報の不一致が発生したときの対処

常用常駐領域のSDBディレクトリ情報の不一致が発生したときの対処方法について説明します。

(1)　実行系ユニットで不一致が発生した場合

次に示すどれかの原因によって，常用常駐領域のSDBディレクトリ情報が不一致となったおそれがあります。

SDBディレクトリ情報を事前常駐領域に常駐していない。

事前常駐領域を常用常駐領域に切り替えていない。

変更後のSDBディレクトリ情報ファイルを配布していないユニットがある。

配布したSDBディレクトリ情報ファイルをpd_structured_directory_pathオペランドで指定したディレクトリ下に格納していない。

pdsdbarc -aコマンドの実行結果として表示される，KFPB31019-Iメッセージのkind=FILEの情報（SDBディレクトリ情報ファイルに関する情報）を確認してください。

kind=FILEの情報がほかのユニットと同じ場合は，上記の1.または2.が原因として考えられます。kind=FILEの情報がほかのユニットと異なる場合は，上記の3.または4.が原因として考えられます。

実行系ユニットでSDBディレクトリ情報の不一致が発生したときの対処手順を次の図に示します。

図5‒8　実行系ユニットでSDBディレクトリ情報の不一致が発生したときの対処手順

注※

4V FMBまたは4V AFMのSDBデータベースを使用している場合，この期間はTP1サーバの追加ができません。

手順

pdsdbdefコマンドでSDBディレクトリ情報ファイルを作成し，全ユニットに配布します。SDBディレクトリ情報ファイルを作成済みの場合は，pdsdbdefコマンドで全ユニットへの配布だけを行ってください。

pdsdbarc -eコマンドで，SDBディレクトリ情報を事前常駐領域に常駐化します。

トランザクションを静止化します。

・4V FMBまたは4V AFMのSDBデータベースの場合

TP1/FSPのeesvctl -sコマンドで，トランザクションを静止化します。

eesvctl -sコマンドが正常終了して，完全にトランザクションが静止化したことを確認してから次の手順に進んでください。

注意事項

完全にトランザクションが静止化していない状態で次の手順を行った場合，データベース破壊やUAPの異常終了などが発生するおそれがあります。そのため，eesvctl -sコマンドが正常終了するまで，eesvctl -sを実行し続けてください。

・SD FMBのSDBデータベースの場合

サービスを閉塞して，トランザクションを静止化します。サービスを閉塞するには，OpenTP1のスケジュール閉塞コマンドを実行します。詳細については，マニュアル「OpenTP1 Version 7　分散トランザクション処理機能　OpenTP1 運用と操作」を参照してください。

注意事項

完全にトランザクションが静止化していない状態で次の手順を行った場合，データベース破壊やUAPの異常終了などが発生するおそれがあります。

pdsdbarc -w -qコマンドで，事前常駐領域を常用常駐領域に切り替えます。

常用常駐領域のSDBディレクトリ情報が一致したことを確認します。

「5.9.1　常用常駐領域のSDBディレクトリ情報の確認方法（実行系ユニットの場合）」に示す方法で確認してください。

トランザクションの静止化を解除します。

・4V FMBまたは4V AFMのSDBデータベースの場合

TP1/FSPのeesvctl -rコマンドで，トランザクションの静止化を解除します。

・SD FMBのSDBデータベースの場合

サービスの閉塞を解除して，トランザクションの静止化を解除します。サービスの閉塞を解除するには，OpenTP1のスケジュール閉塞解除コマンドを実行します。詳細については，マニュアル「OpenTP1 Version 7　分散トランザクション処理機能　OpenTP1 運用と操作」を参照してください。

(2)　待機系ユニットで不一致が発生した場合

次に示すどちらかの原因によって，常用常駐領域のSDBディレクトリ情報が不一致となったおそれがあります。

変更後のSDBディレクトリ情報ファイルを待機系ユニットに配布していない。

配布したSDBディレクトリ情報ファイルを待機系ユニットのpd_structured_directory_pathオペランドで指定したディレクトリ下に格納していない。

待機系ユニットでSDBディレクトリ情報の不一致が発生したときの対処手順を次に示します。

手順

pdsdbdefコマンドで，実行系ユニットと同じSDBディレクトリ情報ファイルを待機系ユニットに配布します。

不一致が発生した待機系ユニットを再起動します。

待機系ユニットの常用常駐領域のSDBディレクトリ情報が一致したことを確認します。

「5.9.2　常用常駐領域のSDBディレクトリ情報の確認方法（待機系ユニットの場合）」に示す方法で確認してください。

5.10　HiRDBシステム定義の変更

HiRDBシステム定義を変更する場合は，いったんHiRDBサーバを終了する必要があります。HiRDBシステム定義の変更方法については，マニュアル「HiRDB Version 9 システム運用ガイド」の「HiRDBシステム定義を変更する方法」を参照してください。

なお，SDB用UAP環境定義を変更する場合は，HiRDBサーバを終了する必要はありません。「5.10.1　SDB用UAP環境定義の変更方法【SD FMB】」に示す手順でSDB用UAP環境定義を変更してください。

5.10.1　SDB用UAP環境定義の変更方法【SD FMB】

SDB用UAP環境定義の変更手順を次に示します。

手順

変更対象のSDB用UAP環境定義を使用するUAPが実行中でないことを確認します。

UAPが実行中の場合は，UAPの実行が完了するのを待ってください。

SDB用UAP環境定義を変更します。

変更対象のSDB用UAP環境定義ファイルが複数のサーバマシンにある場合，すべてのファイルを変更してください。

24時間連続稼働するシステムで，0バイトまたはコメントだけのSDB用UAP環境定義ファイルを作成している場合も，上記の手順でSDB用UAP環境定義を変更してください。

参考

SDB用UAP環境定義を変更したあとにHiRDBサーバに接続したUAPから，変更後のSDB用UAP環境定義が適用されます。

5.11　SDBデータベースの再編成（インナレプリカ機能を使用しない場合）

ここでは，インナレプリカ機能を使用しないSDBデータベースの再編成について説明します。インナレプリカ機能を使用しない場合，データベースの再編成中にSDBデータベースの参照および更新はできません。

インナレプリカ機能を使用したSDBデータベースの再編成については，「5.12　SDBデータベースの再編成（インナレプリカ機能を使用したオンライン再編成）【4V FMB，4V AFM】」または「5.13　SDBデータベースの再編成（インナレプリカ機能を使用した更新可能なオンライン再編成）【4V FMB】」を参照してください。

5.11.1　SDBデータベースの再編成の概要

レコードの追加や削除を繰り返すと，レコードの配置が乱れてレコードのアクセス効率や格納効率が低下します。このような場合，pdsdbrogコマンドでレコードをいったんアンロードしてアンロードデータファイルを作成します。そのアンロードデータファイルを入力データファイルにしてpdsdblodコマンドでデータロードを行います。データを再格納することによって，レコードの配置が適正化され，レコードのアクセス効率や格納効率が改善されます。この一連の処理をSDBデータベースの再編成といいます。SDBデータベースの再編成の概要を次の図に示します。

図5‒9　SDBデータベースの再編成の概要

なお，pdsdblodコマンドによるデータロードの際，インデクスも再編成されるため，インデクスの格納効率や，インデクスを使用した検索性能も改善されます。

SDBデータベースの再編成の実行契機

データの格納効率が悪くなると，次に示すメッセージが出力されます。これらのメッセージが出力された場合が，SDBデータベースの再編成の実行契機になります。

KFPA12300-I

KFPH00211-I

KFPH00212-I

5.11.2　SDBデータベースの再編成の手順

SDBデータベースの再編成手順（pdsdbrogコマンドでアンロードしたレコードを同じSDBデータベースにデータロードする場合の手順）を次の図に示します。

図5‒10　SDBデータベースの再編成手順

注意事項

SDBデータベースが横分割されている場合，アンロードとデータロードの実行単位を合わせてください。アンロードはRDエリア単位で実行するため，データロードもそれに合わせてRDエリア単位で実行してください。実行単位を合わせないと，SDBデータベースが正しく格納されません。

レコードをアンロードしてからデータロードするまでの間に，処理対象のSDBデータベース定義およびSDBデータベース格納定義を変更しないでください。変更した場合，レコードが正しく格納されないことがあります。

レコードをアンロードしてからデータロードするまでの間に，処理対象のデータベースを更新しないでください。データベースを更新した場合，更新したレコード実現値はデータロードの対象外になります。

各手順を以降で説明します。

(1)　全ユニットのSDBディレクトリ情報が一致しているかどうかを確認する

 pdsdbarc -a

pdsdbarcコマンドでSDBディレクトリ情報に関する情報を表示し，全ユニットの常用常駐領域のSDBディレクトリ情報が一致しているかどうかを確認してください。確認方法については，「5.9　全ユニットのSDBディレクトリ情報が一致しているか確認する方法」を参照してください。

確認した結果，SDBディレクトリ情報が不一致の場合は，pdsdbrogコマンドを実行できません。

(2)　処理対象のRDエリアを閉塞する

 pdhold -r RDエリア名,RDエリア名 …

pdholdコマンドで処理対象のRDエリアを閉塞します。

(3)　アンロードを実行する

 pdsdbrog 制御文ファイル名

pdsdbrogコマンドでレコードをアンロードします。

(4)　プリフィクス部を設定する

プリフィクス部のページ切り替えフラグの指定，または事前割り当てページ数の指定値の変更が必要な場合は，アンロードデータファイルを直接修正して，ページ切り替えフラグまたは事前割り当てページ数を設定してください。ページ切り替えフラグを設定する場合は，「13.8　ページ切り替えフラグの扱い【4V FMB，4V AFM】」を参照してください。

(5)　データロードを実行する

 pdsdblod 制御文ファイル名

pdsdblodコマンドで，(3)でアンロードしたレコードをデータロードします。

インナレプリカ機能を使用している場合，アンロード対象RDエリアとデータロード対象RDエリアの世代番号が同じになるようにしてください。同じにするには，次に示すどちらかの方法でアンロードおよびデータロードを実行してください。

pdsdbrog制御文およびpdsdblod制御文のenvironment文のgenerationオペランドに指定する処理対象RDエリアの世代番号を同じにする

アンロードしてからデータロードするまでの間に，カレントRDエリアを変更しないようにする（generationオペランドを指定しない場合）

generationオペランドを指定しない場合，処理対象のRDエリアはカレントRDエリアになります。

注意事項

アンロード時とデータロード時で，カレントRDエリアを変更してしまった場合，アンロード対象RDエリアと異なるRDエリアにデータロードが実行されてしまいます。

pdsdblod制御文の各オペランドには，次の表に示す値を指定してください。間違った値を指定すると，レコードが正しく格納されません。

表5‒3　pdsdblod制御文の各オペランドに指定する値（pdsdbrogコマンドでアンロードしたレコードをデータロードする場合）

項番

オペランド

オペランドの指定値

1

environment文

schema

pdsdbrog制御文のenvironment文のschemaオペランドに指定したSDBデータベース名を指定してください。

2

purge

yesを指定してください。

3

generation

pdsdbrog制御文のenvironment文のgenerationオペランドに指定した世代番号を指定してください。pdsdbrog制御文のenvironment文のgenerationオペランドを省略した場合は，このオペランドも省略してください。

4

上記以外のオペランド

任意の値を指定してください。

5

load文

type

4V FMBまたはSD FMBのSDBデータベースの場合はtreeを，4V AFMのSDBデータベースの場合はsingleを指定してください。

6

record

pdsdbrog制御文のunload文のrecordオペランドに指定したレコード型名を指定してください。

7

server

pdsdbrog制御文のunload文のserverオペランドに指定したバックエンドサーバ名を指定してください。pdsdbrog制御文のunload文のserverオペランドを省略した場合は，省略してください。

8

area

pdsdbrog制御文のunload文のareaオペランドに指定したRDエリア名を指定してください。pdsdbrog制御文のunload文のareaオペランドを省略した場合は，省略してください。

9

data

pdsdbrog制御文のunload文のunldfileオペランドに指定したアンロードデータファイル名を指定してください。

10

prefix

pdsdbrog制御文のunload文のprefixオペランドに指定したプリフィクス長を指定してください。

11

seqkeyck

省略するか，またはyesを指定してください。

12

上記以外のオペランド

任意の値を指定してください。

13

dbinf文※

userpflg

pdsdbrog制御文のdbinf文のuserpflgオペランドに指定した位置を指定してください。pdsdbrog制御文のdbinf文のuserpflgオペランドを省略した場合は，省略してください。

14

pagenum

pdsdbrog制御文のdbinf文のpagenumオペランドに指定した位置を指定してください。pdsdbrog制御文のdbinf文のpagenumオペランドを省略した場合は，省略してください。

15

上記以外のオペランド

任意の値を指定してください。

16

idxload文

すべてのオペランド

任意の値を指定してください。

注※

SD FMBのSDBデータベースを再編成する場合は，dbinf文は省略してください。SD FMBのSDBデータベースに対しては，dbinf文は指定できません。

(6)　RDエリアの閉塞を解除する

 pdrels -r RDエリア名,RDエリア名 …

pdrelsコマンドでRDエリアの閉塞を解除します。

5.12　SDBデータベースの再編成（インナレプリカ機能を使用したオンライン再編成）【4V FMB，4V AFM】

インナレプリカ機能を使用したオンライン再編成の場合，SDBデータベースの再編成中にデータベースを参照できます（更新はできません）。ここでは，インナレプリカ機能を使用したオンライン再編成について説明します。

インナレプリカ機能を使用したオンライン再編成については，マニュアル「インナレプリカ機能 HiRDB Staticizer Option Version 9」も参照してください。

5.12.1　オンライン再編成の流れ

インナレプリカ機能を使用したオンライン再編成の流れを次の図に示します。

図5‒11　インナレプリカ機能を使用したオンライン再編成の流れ

［説明］

オリジナルRDエリアでSDBデータベースの再編成を実行し，レプリカRDエリアで業務を続行します。ただし，データベースを更新するような業務は実行できません。

オリジナルRDエリアとレプリカRDエリアの間でデータの不一致が発生しないように，SDBデータベースの再編成が完了するまでUAPがアクセスするRDエリアは更新できない状態にしておく必要があります。

SDBデータベースの再編成対象となるRDエリア（レコードを格納しているRDエリア，およびインデクスを格納しているRDエリア）は，すべて同じ世代である必要があります。

ポイント

レプリカRDエリアでSDBデータベースの再編成を実行し，オリジナルRDエリアで業務を続行することもできますが，レプリカRDエリアでSDBデータベースを再編成する手順は難しいため，オリジナルRDエリアでSDBデータベースを再編成するようにしてください。

注意事項

SDBデータベースの再編成中に，「5.7　SDBデータベースの定義追加または定義変更（HiRDBの再起動を必要としない場合）」で説明している運用は行わないでください。

5.12.2　オンライン再編成の手順

インナレプリカ機能を使用したオンライン再編成の手順を例題形式で説明します。

なお，例題の説明は，インナレプリカ機能についての知識があることを前提にしています。インナレプリカ機能については，マニュアル「インナレプリカ機能 HiRDB Staticizer Option Version 9」を参照してください。

例題

オリジナルRDエリアに格納されているSDBデータベースをオンライン再編成します。レコード型およびインデクスを格納しているRDエリアは次のとおりです。

再編成対象のレコード型およびインデクスを格納しているRDエリアは，すべて同じ世代である必要があります。上記の構成の場合，RD01_1とRD02_1の世代が同じである必要があります。

オリジナルRDエリアを参照可能バックアップ閉塞状態にする

 pdhold -r RD01,RD02 -q 0 -b

pdholdコマンドでオリジナルRDエリアを参照可能バックアップ閉塞状態にします（オリジナルRDエリアを静止化します）。

ペアボリュームを解除する

ペアボリュームを解除して，ハードウェアまたはソフトウェアのミラーリング機能で，オリジナルRDエリアからレプリカRDエリアにデータを複写します。

レプリカRDエリアの閉塞を解除してオープン状態にする

 pdrels -r RD01,RD02 -q 1 -o

pdrelsコマンドでレプリカRDエリアの閉塞を解除してオープン状態にします。

レプリカRDエリアを参照可能閉塞状態にする

 pdhold -r RD01,RD02 -q 1 -i

pdholdコマンドでレプリカRDエリアを参照可能閉塞状態にします。

SDBデータベースの再編成が完了するまでの間，オリジナルRDエリアとレプリカRDエリアの間でデータの不一致が発生しないように，業務で利用するレプリカRDエリアを更新抑止状態にする必要があるため，レプリカRDエリアを参照可能閉塞状態にします。

カレントRDエリアをレプリカRDエリアに変更する

 pddbchg -r RD01,RD02 -q 1

pddbchgコマンドで，カレントRDエリアをオリジナルRDエリアからレプリカRDエリアに変更します。これによって，UAPはこのレプリカRDエリアにアクセス（参照だけ）します。

オリジナルRDエリアの閉塞を解除する

 pdrels -r RD01,RD02 -q 0

pdrelsコマンドでオリジナルRDエリアの閉塞を解除します。

全ユニットの常用常駐領域のSDBディレクトリ情報が一致しているかどうかを確認する

 pdsdbarc -a

pdsdbrogコマンドを実行する前にpdsdbarcコマンドを実行して，全ユニットの常用常駐領域のSDBディレクトリ情報が一致しているかどうかを確認してください。確認方法については，「5.9.1　常用常駐領域のSDBディレクトリ情報の確認方法（実行系ユニットの場合）」を参照してください。

オリジナルRDエリアのレコードをアンロードする

 pdsdbrog /usr/control_rog_file

pdsdbrogコマンドで，オリジナルRDエリアのレコードをアンロードします。

pdsdbrog制御文のenvironment文のgenerationオペランドに0を指定（オリジナルRDエリアを処理対象にする指定）してください。

4V FMBのSDBデータベースの場合のpdsdbrog制御文の指定例については，「13.10.2　4V FMBのSDBデータベースのアンロードおよびデータロード（インナレプリカ機能を使用したオンライン再編成の場合）」を参照してください。

ページ切り替えフラグの指定，または事前割り当てページ数の指定値の変更が必要な場合は，アンロードの完了後，アンロードデータファイルを直接修正して，ページ切り替えフラグまたは事前割り当てページ数を設定してください。ページ切り替えフラグを設定する場合は，「13.8　ページ切り替えフラグの扱い【4V FMB，4V AFM】」を参照してください。

オリジナルRDエリアにレコードをデータロードする

 pdsdblod /usr/control_lod_file

pdsdblodコマンドで，オリジナルRDエリアにレコードをデータロードします。

pdsdblod制御文のenvironment文のgenerationオペランドに0を指定（オリジナルRDエリアを処理対象にする指定）してください。

4V FMBのSDBデータベースの場合のpdsdblod制御文の指定例については，「13.10.2　4V FMBのSDBデータベースのアンロードおよびデータロード（インナレプリカ機能を使用したオンライン再編成の場合）」を参照してください。

オリジナルRDエリアのバックアップを取得する

 pdcopy -m /hirdb/rdarea/rdmast/rdmast01 -M -r RD01,RD02 -q 0
        -b /usr/hirdbsd/backup01 -p /usr/hirdbsd/list01

pdcopyコマンドでオリジナルRDエリアのバックアップを取得します。

カレントRDエリアをオリジナルRDエリアに変更する

 pddbchg -r RD01,RD02 -q 0

pddbchgコマンドで，カレントRDエリアをレプリカRDエリアからオリジナルRDエリアに変更します。

レプリカRDエリアを閉塞かつクローズ状態にする

 pdhold -r RD01,RD02 -q 1 -c

pdholdコマンドでレプリカRDエリアを閉塞かつクローズ状態にします。

ペアボリュームを生成する

オリジナルRDエリアを正ファイルとして，レプリカRDエリアとのペアボリュームを生成します。

これでオリジナルRDエリアおよびレプリカRDエリアの状態が最初の状態に戻ります。

5.13　SDBデータベースの再編成（インナレプリカ機能を使用した更新可能なオンライン再編成）【4V FMB】

ここでは，インナレプリカ機能を使用した更新可能なオンライン再編成について説明します。インナレプリカ機能を使用した更新可能なオンライン再編成の場合，SDBデータベースの再編成中にデータベースを参照および更新できます。

インナレプリカ機能を使用した更新可能なオンライン再編成については，マニュアル「インナレプリカ機能 HiRDB Staticizer Option Version 9」の「更新可能なオンライン再編成の運用方法」も参照してください。

5.13.1　更新可能なオンライン再編成の概要

(1)　更新可能なオンライン再編成の流れ

更新可能なオンライン再編成の場合，オリジナルRDエリアでSDBデータベースの再編成処理を行い，レプリカRDエリアでUAPからの参照および更新処理を行います。オリジナルRDエリアでの再編成処理が完了したあとに，レプリカRDエリアに対して実行された更新処理の内容をオリジナルRDエリアに反映します。

更新可能なオンライン再編成の処理の流れを次の図に示します。

図5‒12　更新可能なオンライン再編成の処理の流れ

［説明］

図中の丸付き数字は，次の番号に対応しています。

pdorbeginコマンドを実行した時点が，更新可能なオンライン再編成の開始時点となります。pdorbeginコマンドを実行すると，オリジナルRDエリアおよびレプリカRDエリアの状態がオンライン再編成閉塞になります。

オリジナルRDエリアのSDBデータベースに対して，再編成処理（アンロード処理およびデータロード処理）を実行します。UAPからの参照および更新処理は，カレントRDエリアで実行されます。

pdorendコマンドを実行すると，レプリカRDエリアに対して実行された更新処理の内容を，オリジナルRDエリアに反映します。この処理を追い付き反映処理といいます。

次の期間は，UAPからの参照および更新処理が排他待ち状態になります。

・更新可能なオンライン再編成の開始時点からカレントRDエリアの切り替え完了後

・追い付き反映処理中のオリジナルRDエリアとカレントRDエリアの同期を取得する期間

(2)　SDBデータベースの再編成処理の概要

SDBデータベースの再編成は，インナレプリカ機能を使用しないときと同様に，pdsdbrogコマンドでいったんレコードをアンロードし，その後pdsdblodコマンドでデータロードすることで実現します。SDBデータベースの再編成処理の概要を次の図に示します。

図5‒13　SDBデータベースの再編成処理の概要

［説明］

図中の丸付き数字は，次の番号に対応しています。

pdsdbrogコマンドを実行して，オリジナルRDエリアのレコードをアンロードします。この例では，SDBデータベースを横分割しているため，RDエリア単位にアンロードを実行しています。

pdsdblodコマンドを実行して，オリジナルRDエリアにデータロードします。この例では，SDBデータベースを横分割しているため，RDエリア単位にデータロードを実行しています。

データロードの際，オリジナルRDエリアとレプリカRDエリアのデータを対応づける情報が，追い付き反映キー対応表に登録されます。ここで登録された情報が追い付き反映処理時に使用されます。また，このとき，追い付き反映キー対応表のインデクスも作成されます。

追い付き反映キー対応表，およびそのインデクスは，BES単位に作成されます。

参考

追い付き反映キー対応表にユーザはアクセスできません。

再編成対象のRDエリアがオンライン再編成閉塞の場合に，更新可能なオンライン再編成として処理されます。

(3)　追い付き反映処理の概要

レプリカRDエリアのSDBデータベースに対して実行された更新処理の内容を，オリジナルRDエリアのSDBデータベースに反映します。これを追い付き反映処理といいます。追い付き反映処理の概要を次の図に示します。

図5‒14　追い付き反映処理の概要

［説明］

pdorendコマンドを実行すると，追い付き反映処理が開始されます。追い付き反映処理はBES単位に実行されます。

レプリカRDエリアのSDBデータベースに対する更新情報（システムログ）を入力情報にして，オリジナルRDエリアのSDBデータベースを更新します（HiRDBが内部的にAPIを発行して，オリジナルRDエリアのSDBデータベースを更新します）。このとき，追い付き反映キー対応表に登録された情報を使用して，レプリカRDエリアに対する更新情報とオリジナルRDエリアの反映先データとの対応づけを行います。

システムログの更新情報の読み込みが完了すると，オリジナルRDエリアとレプリカRDエリアの同期を取るために，RDエリアにアクセスするトランザクションを排他待ち状態にします。

このあと，カレントRDエリアをレプリカRDエリアからオリジナルRDエリアに切り替えて，オンライン再編成閉塞を解除します。

追い付き反映処理が完了すると，RDエリアを次の状態にして，オリジナルRDエリアで業務を再開します（RDエリアにアクセスするトランザクションの排他待ち状態を解除します）。

・オリジナルRDエリア：オープン状態

・レプリカRDエリア：コマンド閉塞かつクローズ状態

5.13.2　運用前に考慮すること

更新可能なオンライン再編成の運用前に知っておく必要がある制限事項および注意事項について説明します。

(1)　制限事項

RDエリアの状態がオンライン再編成閉塞の場合，次の表に示すようにSDBデータベースの操作が制限されます。

表5‒4　制限されるSDBデータベースの操作

項番

SDBデータベースの操作

実行可否

オリジナルRDエリア

レプリカRDエリア

1

SDBデータベースを操作するAPI

×

○※

2

pdsdblodコマンド

○

×

3

pdsdbrogコマンド

○

×

4

pdsdbdefコマンド

×

×

5

pdmodコマンド

ただし，次の操作は実行できます。

RDエリアの再初期化

RDエリアの拡張

RDエリアのレプリカ定義

RDエリアの構成情報複写（複写元）を除く

×

×

6

pddbchgコマンド

×

×

（凡例）

○：実行できます。

×：実行できません。

注※

実行できるSDBデータベースを操作するAPIは，更新ログ取得方式がログ取得モードかログレスモードかで異なります。

ログ取得モードの場合，次のSDBデータベースを操作するAPIだけが実行できます。

・レコードの格納（STORE）

・レコードの削除（ERASE）

　ただし，ルートレコードに対しては実行できません。

・レコードの更新（MODIFY）

・レコードの検索（FETCH）

・複数レコードの検索（FETCHDB ALL）

ログレスモードの場合，次のSDBデータベースを操作するAPIで，アクセスモード1に'R'（参照モード）を指定するときにだけ実行できます。

・レコードの検索（FETCH）

・複数レコードの検索（FETCHDB ALL）

クライアント環境定義のPDDBORGUAPオペランドは指定できないため，マニュアル「インナレプリカ機能 HiRDB Staticizer Option Version 9」の「オンライン業務と更新バッチ処理の同時実行」で説明している運用はできません。

更新可能なオンライン再編成では，同一BES内でリレーショナルDBを格納するRDエリアとSDBデータベースを格納するRDエリアを同じタイミングで再編成できません。pdorbeginコマンドに指定するRDエリアには，1つのBESでリレーショナルDBを格納するRDエリアとSDBデータベースを格納するRDエリアを混在させることはできません。そのため，リレーショナルDBを格納するRDエリアとSDBデータベースを格納するRDエリアは別々に再編成してください。

(2)　システム構成に関する注意事項

更新可能なオンライン再編成は，4V FMBのSDBデータベースに対してだけ実行できます。そのため，4V FMBのSDBデータベースのインデクスと，4V AFMのSDBデータベースのインデクスを同じRDエリアに格納している場合，その4V FMBのSDBデータベースは更新可能なオンライン再編成ができません。

参考

4V FMBのSDBデータベースのインデクスと，4V AFMのSDBデータベースのインデクスが同じRDエリアに格納されていないかどうかは，pdorcheckコマンドでチェックできます。

更新可能なオンライン再編成の対象となる関連RDエリアは，BESごとに同一ボリュームに作成してください。関連RDエリアとは，次のRDエリアのことです。

レコード型を格納するRDエリア

インデクスを格納するRDエリア

（例）

また，同一ボリュームに作成した関連RDエリアは，同じタイミングで更新可能なオンライン再編成を実行する必要があります。

参考

関連RDエリアはpdrdreflsコマンドで確認できます。

(3)　更新可能なオンライン再編成実行時の注意事項

更新可能なオンライン再編成を開始すると，追い付き反映処理が終了するまで，同じBES内のほかのRDエリアに対して，更新可能なオンライン再編成を実行することはできません。

複数のRDエリアに対してSDBデータベースの再編成を実行する場合は，全RDエリアの再編成処理が完了したあとに，追い付き反映処理を実行してください。

複数のRDエリアに対してSDBデータベースの再編成を実行する場合は，再編成処理に掛かる時間が同じくらいのRDエリアを選択することを推奨します。

レプリカRDエリアに対するトランザクション処理が多く，追い付き反映処理が最大待ち時間内に終了しなかった場合，トランザクション処理量を制限してから追い付き反映処理を再実行してください。追い付き反映処理の最大待ち時間は，pdorendコマンドの-wオプションで指定します。

オンライン再編成閉塞のRDエリアがある場合，HiRDBの正常終了またはBESの正常終了ができません（計画停止はできます）。HiRDBの正常終了またはBESの正常終了をしたい場合は，次のどちらかの方法でRDエリアのオンライン再編成閉塞を解除してください。

pdorendコマンドによる追い付き反映処理を完了して，オンライン再編成閉塞を解除する

pdorbegin -uコマンドでRDエリアのオンライン再編成閉塞を解除する

(4)　追い付き反映キー対応表に関する注意事項

(a)　追い付き反映キー対応表を格納するRDエリアに関する注意事項

更新可能なオンライン再編成の対象RDエリアが，複数のBESに存在する場合，各BESに追い付き反映キー対応表を作成する必要があります。そのため，追い付き反映キー対応表を格納するRDエリアを各BESに作成しておく必要があります。

追い付き反映キー対応表へのデータ登録時に，追い付き反映キー対応表を格納するRDエリアの容量不足が発生すると，データロードまたは追い付き反映処理がエラーになります。そのため，RDエリアの容量見積もりを必ず実施してください。RDエリアの容量見積もり方法については，「3.5.6　ユーザ用RDエリア（追い付き反映キー対応表を格納する）の容量の見積もり【4V FMB】」を参照してください。

RDエリアの容量不足が発生した場合，追い付き反映キー対応表を初期化する必要があります。その場合，BES内の更新可能なオンライン再編成の対象RDエリアの情報がすべて削除されます。そのため，データロードが完了しているRDエリアも，データロードを再実行する必要があります（BESが異なる場合は，データロードを再実行する必要はありません）。

(b)　データロードの再実行前に追い付き反映キー対応表を初期化するときの注意事項

障害などの発生によって，データロードの再実行が必要となった場合は，データロードを再実行する前に，追い付き反映キー対応表をpdsdborcrtコマンドで初期化する必要があります。初期化しない場合（更新可能なオンライン再編成の対象RDエリアに関する情報が，追い付き反映キー対応表に登録されたままの場合），データロードの再実行がエラーになります。

ただし，追い付き反映キー対応表を初期化すると，BES内の更新可能なオンライン再編成の対象RDエリアの情報がすべて削除されます。そのため，データロードが完了しているRDエリアも，データロードを再実行する必要があります（BESが異なる場合は，データロードを再実行する必要はありません）。

なお，更新可能なオンライン再編成の実行中に，追い付き反映キー対応表を初期化または削除する必要が生じた場合は，pdsdborcrtコマンドの実行後に警告メッセージと確認メッセージが出力されます。次の流れで応答してください。

警告メッセージ（KFPT82005-W）が出力されます。KFPT82005-Wメッセージに出力されたBES名を確認してください。

1.で確認したBES内に，オンライン再編成閉塞のRDエリアがあるかどうかをpddblsコマンドで確認してください。

確認メッセージ（KFPT82006-Q）が出力されます。追い付き反映キー対応表を初期化または削除する場合はyを，初期化または削除をやめる場合はnを指定してください。

注意事項

次のどちらかの条件を満たす場合は，yを応答してください。

BES内にオンライン再編成閉塞のRDエリアがない場合

データロード時や追い付き反映処理時に障害が発生し，追い付き反映キー対応表の初期化または削除が必要な場合

上記の条件を満たさない場合は，必ずnを応答してください。上記の条件を満たさない場合にyを指定すると，SDBデータベースの内容が不整合な状態になるおそれがあります。

(5)　アンロードデータファイルに関する注意事項

(a)　アンロードデータファイルの作成に関する注意事項

アンロード時に作成したアンロードデータファイルを，データロード時の入力データファイルにしてください。ほかの方法で作成したアンロードデータファイルを入力データファイルにした場合，SDBデータベースの内容が不整合になります。

(b)　アンロードデータファイルの保管に関する注意事項

更新可能なオンライン再編成の操作が完了するまで，アンロードデータファイルを削除しないでください。アンロードデータファイルを削除してしまうと，追い付き反映キー対応表の障害などによって，データロードから操作を再実行する必要がある場合に，データロードの再実行ができなくなります。この場合，更新可能なオンライン再編成を中止し，レプリカRDエリアの更新データをオリジナルRDエリアに反映して，オリジナルRDエリアを回復する必要があります。

なお，データロードが正常終了したあと（KFPB63012-Iメッセージが出力されたあと）に，データロードの再実行が必要になった場合，アンロードを再実行してアンロードデータファイルを作成しても，アンロードデータファイルの内容はデータロード後の内容になっています。このアンロードデータファイルを入力データファイルに指定した場合，SDBデータベースの内容が不整合になります。

(c)　アンロードデータファイルの内容を変更する際の注意事項

アンロードデータファイルの内容を変更し，データロード時の入力データファイルにする場合，次の変更だけができます。

ファミリ単位の追加

ファミリ単位の削除

ページ切り替えフラグの設定

事前割り当てページ数の設定

上記以外の変更をした場合は，SDBデータベースの内容が不整合になるおそれがあります。

また，ファミリ単位の削除を行ったレコードに対して，カレントRDエリアで更新が発生した場合，オリジナルRDエリアでは対応するレコードがないため，追い付き反映処理で実行されるAPI（HiRDB/SDが内部的に発行するAPI）でエラーが発生します。このエラーをスキップし，追い付き反映処理を続行したい場合は，pdorendコマンドに-fオプションを指定して，追い付き反映制御ファイルに次の指定をしてください。

reflection文のdml_errorオペランドにskipを指定する

詳細については，「5.13.10　追い付き反映処理時にHiRDB/SDが内部的に発行するAPIのエラーをスキップしたい場合」を参照してください。

(6)　HiRDBの再起動を必要としないSDBデータベースの定義追加，定義変更との関連

更新可能なオンライン再編成の実行中に，pdsdbarc -w -qコマンドによる事前常駐領域と常用常駐領域の切り替えを行うと，更新可能なオンライン再編成の処理中に整合性エラーが発生します。そのため，次に示す操作の開始から終了までの間は，更新可能なオンライン再編成の対象SDBデータベースに対して，HiRDBの再起動を必要としないSDBデータベースの定義追加，定義変更の作業（SDBディクショナリ情報の作成からトランザクション静止化解除までの作業）を実施しないでください。

「5.13.3(3)　関連RDエリアの確認（pdrdreflsコマンド）」の操作開始

「5.13.4(9)　追い付き反映処理を実行する（pdorendコマンド）」の操作完了

ただし，更新可能なオンライン再編成の操作より前であれば，HiRDBの再起動を必要としないSDBデータベースの定義追加，定義変更の次の作業は実施できます。

SDBディクショナリ情報の作成から，TP1/FSPのSDB定義情報領域（副）にSDB定義情報を格納するまで

HiRDBの再起動を必要としないSDBデータベースの定義追加によって追加した4V FMBのSDBデータベースに対する更新可能なオンライン再編成は，SDBデータベースの定義追加が完了するまで実行できません。追加中の4V FMBのSDBデータベースに対する適用条件のチェック（pdorcheckコマンド）でエラーになります。

SDBデータベースの定義変更でレコード型を追加し，その二次インデクスを格納するために追加したRDエリアは，ディクショナリ表中のSDBディクショナリ情報が更新されると，pdrdreflsコマンドの実行結果の関連RDエリアとして表示されます（「5.7.5(2)　SDBディクショナリ情報を変更する」の操作が終わると，関連RDエリアとして表示されます）。ただし，この時点では，追加したRDエリアは，pdrdreflsコマンドの実行結果の関連RDエリアとして表示されますが，更新可能なオンライン再編成の対象にはできません。SDBデータベースの定義変更の操作が完了するまで，更新可能なオンライン再編成の対象にはできません。

各コマンドでの注意事項を次に示します。

pdrdreflsコマンド

二次インデクスを格納するために追加したRDエリアが，関連RDエリアとして表示されますが，更新可能なオンライン再編成の対象にはできません。

pdorcheckコマンド

二次インデクスを格納するために追加したRDエリアを，pdorcheckコマンドの-rオプションに指定すると，更新可能なオンライン再編成を実行できない旨のチェック結果が返ってきます。二次インデクスを格納するために追加したRDエリアを指定しないで，pdorcheckコマンドを実行してください。

pdorbeginコマンド

-tオプション（レコード型名指定）は指定できません。-rオプション（RDエリア名指定）を指定して，pdorbeginコマンドを実行してください。-rオプションに指定するRDエリアには，二次インデクスを格納するために追加したRDエリアを指定しないでください。

なお，-tオプションを指定すると，二次インデクスを格納するために追加したRDエリアも，処理対象RDエリアに含まれるため，更新可能なオンライン再編成の処理が正しく実行されません（途中でエラーになるか，または何も実行されないで正常終了します）。

(7)　系切り替え機能との関連

追い付き反映処理中に系の切り替えが発生した場合，pdorendコマンドが異常終了します。追い付き反映処理が終了しない状態が長く続くと，オンライン側（業務実行側）のレプリカRDエリアの更新情報がシステムログに蓄積され続けるため，システムログ量が見積もり値を超えるおそれがあります。そのため，系切り替えが発生した場合は，できるだけ早くpdorendコマンドを再実行するようにしてください。

(8)　追い付き反映処理時の格納配置制御

追い付き反映処理時の格納配置制御に関するオプションの適用可否を次の表に示します。

表5‒5　格納配置制御に関するオプションの適用可否（追い付き反映処理時）

追い付き反映処理の種別

格納配置制御に関するオプション

ページ切り替えオプション

PCTFREE有効化オプション

事前割り当てページ数

レコードの格納（STORE）の更新追い付き反映処理

○

○

○

レコードの削除（ERASE）の回復追い付き反映処理

×

×

−

（凡例）

○：レコードの格納（STORE）の実行時（レプリカRDエリア側の更新時）に指定した値を引き継いで，追い付き反映処理が実行されます。SDBデータベースの再編成時に，事前ページ割り当て機能の適用有無を変更した場合の動作については，「2.6.2(4)(d)　事前ページ割り当て機能に関する留意事項」または「2.7.2(4)(d)　事前ページ割り当て機能に関する留意事項」を参照してください。

×：格納配置制御に関するオプションの指定が適用されません。この場合，レコード実現値を格納する際，ページまたはサブページを切り替えません。また，SDBデータベース格納定義のPCTFREEオペランドで指定したページ内の未使用領域比率またはサブページ内の未使用領域比率を適用しないで，レコード実現値が格納されます。

−：該当しません。

(9)　更新可能なオンライン再編成中に整合性エラーが発生した場合

更新可能なオンライン再編成中に，誤ってpdsdbarc -w -qコマンドを実行したり，系切り替えが発生したりすると，整合性エラーが発生するおそれがあります。整合性エラーが発生した場合，更新可能なオンライン再編成を続行するか，または中止するかを判断してください。

中止する場合は，レプリカRDエリアの更新データをオリジナルRDエリアに反映し，オリジナルRDエリアで業務を再開します。更新可能なオンライン再編成を中止する場合の手順については，「5.23　障害が発生したときの対処方法（更新可能なオンライン再編成の実行時）【4V FMB】」を参照してください。

更新可能なオンライン再編成を続行する場合は，常用常駐領域のSDBディレクトリ情報を変更前の状態に戻し，そのあとにエラーとなったコマンドを再実行してください。SDBディレクトリ情報を変更前の状態に戻す方法については，「5.7.7　障害発生時の対処（定義追加または定義変更前の状態に戻す場合）」を参照してください。更新可能なオンライン再編成を続行する際の手順については，「5.23　障害が発生したときの対処方法（更新可能なオンライン再編成の実行時）【4V FMB】」を参照してください。

5.13.3　更新可能なオンライン再編成の準備作業

更新可能なオンライン再編成の準備作業の流れを次の表に示します。

表5‒6　更新可能なオンライン再編成の準備作業の流れ

項番

作業項目

実行するコマンド

実行するタイミング

1

RDエリアの物理配置の検討

−

最初に1回だけ実行

2

更新可能なオンライン再編成に関するオペランド（システム定義）の追加

−

3

関連RDエリアの確認

pdrdreflsコマンド

4

HiRDBファイルシステム領域の世代登録

pdmodコマンド

5

レプリカRDエリアの定義

6

次の表を格納するRDエリアの作成

追い付き反映キー対応表

追い付き状態管理表

7

追い付き反映キー対応表の作成または初期化

pdsdborcrtコマンド

更新可能なオンライン再編成の実行前に毎回実施

8

適用条件のチェック

pdorcheckコマンド

9

ペアボリュームの定義

−

最初に1回だけ実行

10

追い付き状態管理表の作成

pdorcreateコマンド

11

SDBディレクトリ情報の最終更新日時のチェック

pdsdbarc -aコマンド

更新可能なオンライン再編成の実行前に毎回実施

（凡例）

−：なし

更新可能なオンライン再編成の準備作業の手順を例題形式で説明します。なお，例題の説明は，インナレプリカ機能についての知識があることを前提にしています。

例題

SDBデータベースを更新可能なオンライン再編成するための準備作業を行います。SDBデータベースを格納しているRDエリアなどの構成は次のとおりです。

ポイント

追い付き状態管理表はシステムで1つ必要です。

追い付き反映キー対応表はBESごとに必要です。

(1)　RDエリアの物理配置の検討

更新可能なオンライン再編成を実行するRDエリアのボリューム内の物理配置を検討してください。ポイントを次に示します。

レプリカ作成ガイドラインを満たしているか

更新可能なオンライン再編成ではインナレプリカ機能を使用するため，レプリカ作成ガイドラインも考慮する必要があります。インナレプリカ機能に関する考慮点については，マニュアル「インナレプリカ機能 HiRDB Staticizer Option Version 9」の「インナレプリカの運用方法」の「運用前に考慮すること」を参照してください。

同じボリュームにインナレプリカ機能単独で使用されるRDエリアがないか

更新可能なオンライン再編成では，マスタDBとレプリカDBが一時的に切り替わるため，それとは別のレプリカを使用する作業（インナレプリカ機能を使うが更新可能なオンライン再編成を行わないRDエリア）に運用上悪い影響がないかを考慮する必要があります。

また，次のRDエリアの物理配置も検討してください。

追い付き反映キー対応表を格納するRDエリア

追い付き反映キー対応表のインデクスを格納するRDエリア

追い付き状態管理表を格納するRDエリア

検討のポイントについては，「(6)　追い付き反映キー対応表，追い付き状態管理表を格納するRDエリアの作成（pdmodコマンド）」を参照してください。

(2)　更新可能なオンライン再編成に関するオペランド（システム定義）の追加

次のオペランドを追加してください。各オペランドの詳細については，マニュアル「HiRDB Version 9 システム定義」を参照してください。

なお，システム定義を変更したあとに，pdconfchkコマンドでシステム定義のチェックを実施してください。

pd_max_reflect_process_count

追い付き反映処理でHiRDBが保証するpdorend追い付き反映プロセスの同時実行数を指定します。このオペランドの留意事項については，マニュアル「インナレプリカ機能 HiRDB Staticizer Option Version 9」の「pd_max_reflect_process_countオペランドの留意事項と見積もり」を参照してください。

pd_log_org_reflected_logpoint

追い付き反映処理が完了したあと，システムログファイルの状態を変更するかどうかを指定します。障害の発生時にどのように対処するかによって，このオペランドの指定値を決めてください。指定値による障害対策方法の違いについては，マニュアル「インナレプリカ機能 HiRDB Staticizer Option Version 9」の「システムログとオペランドの設定」を参照してください。

通常は，keepを指定することをお勧めします。

pd_log_org_no_standby_file_opr

すべてのシステムログファイルがオンライン再編成上書き禁止状態の場合に，スワップが発生したときのHiRDBの処理を指定します。障害の発生時にどのように対処するかによって，このオペランドの指定値を決めてください。指定値による障害対策方法の違いについては，マニュアル「インナレプリカ機能 HiRDB Staticizer Option Version 9」の「システムログとオペランドの設定」を参照してください。

通常は，stopを指定することをお勧めします。

pd_lv_mirror_use = Y

pd_lv_mirror_useオペランドにY（レプリカRDエリアのオープン属性をSCHEDULEにする指定）を指定してください。更新可能なオンライン再編成の運用手順が少なくなります。また，バックエンドサーバ接続保持機能を使用する場合は，必ずYを指定してください。

指定例

 set pd_max_reflect_process_count = 8
 set pd_log_org_reflected_logpoint = keep
 set pd_log_org_no_standby_file_opr = stop
 set pd_lv_mirror_use = Y

また，次のオペランドの指定値を見積もり直してください。

pd_lck_pool_size

次の計算式で求めた値をpd_lck_pool_sizeオペランドの指定値に加算してください。

25×a　（単位：キロバイト）

a：更新可能なオンライン再編成時の，pdsdblodコマンドの同時実行数（oreload文の指定があるpdsdblodコマンド）

(3)　関連RDエリアの確認（pdrdreflsコマンド）

pdrdreflsコマンドで，更新可能なオンライン再編成の対象となる関連RDエリアを確認します。

pdrdreflsコマンドの-tオプションにレコード型名を指定すると，指定したレコード型の関連RDエリアが表示されます。pdrdreflsコマンドの-rオプションにRDエリア名をすると，指定したRDエリアの関連RDエリアが表示されます。

レコード型を指定する場合

 pdrdrefls -e org -t REC1 -l -d ','

［オプションの説明］

-e org：固定のオプションです。

-t：ルートレコードのレコード型名を指定します。

-l：出力情報の各情報を改行しないで表示する場合に指定します。

-d：-lオプション指定時の，各情報の区切り文字を半角1文字で指定します。

pdrdreflsコマンドの実行結果

 "FMB01","FMBIDX"

レコード型REC1の関連RDエリアは，FMB01とFMBIDXです。

RDエリアを指定する場合

 pdrdrefls -e org -r FMB01 -l -d ','

［オプションの説明］

-e org：固定のオプションです。

-r：ルートレコード（REC1）に対する格納レコード用RDエリアのオリジナルRDエリア名を指定します。

-l：出力情報の各情報を改行しないで表示する場合に指定します。

-d：-lオプション指定時の，各情報の区切り文字を半角1文字で指定します。

pdrdreflsコマンドの実行結果

 "FMB01","FMBIDX"

RDエリアFMB01の関連RDエリアはFMBIDXです。

注意事項

更新可能なオンライン再編成を実行する場合，ここで確認した関連RDエリアを漏れなくカレントRDエリアの切り替え対象にする必要があります。すべての関連RDエリアのカレントRDエリアの変更を同じタイミングで実施しないと，オンライン業務のアクセスがエラーになります。

(4)　HiRDBファイルシステム領域の世代登録（pdmodコマンド）

pdmodコマンドのcreate generation文で，HiRDBファイルシステム領域の世代登録を実行します。RDエリアおよびHiRDBファイルシステム領域の構成を次に示します。

RDエリア名

世代番号

HiRDBファイルシステム領域

RDエリアの種類

FMB01

0

/sdb/area

格納レコード用RDエリア

オリジナルRDエリア

FMBIDX

インデクス格納用RDエリア

FMB01_1

1

/sdb/area1

格納レコード用RDエリア

レプリカRDエリア

FMBIDX_1

インデクス格納用RDエリア

pdmodコマンドの実行例

 pdmod -a /usr/pdmod/crtgen

［オプションの説明］

-a：pdmodコマンドの制御文のパス名を指定します。制御文の内容を次に示します。

 create generation for HiRDB file system area "/sdb/area1"   ...1
 server name bes1                                            ...2
 generation number 1                                         ...3
 reproduce "/sdb/area";                                      ...4

レプリカRDエリアのHiRDBファイルシステム領域名（/sdb/area1）を指定します。

RDエリアがあるBES名を指定します。

1.のHiRDBファイルシステム領域の世代番号を指定します。

オリジナルRDエリアのHiRDBファイルシステム領域名（/sdb/area）を指定します。

(5)　レプリカRDエリアの定義（pdmodコマンド）

pdmodコマンドのreplicate rdarea文で，レプリカRDエリアの定義を実行します。「(3)　関連RDエリアの確認（pdrdreflsコマンド）」で確認したRDエリアのレプリカRDエリアを漏れなく定義してください。

この例では，レプリカRDエリアFMB01_1とFMBIDX_1を定義します。

pdmodコマンドの実行例

 pdmod -a /usr/pdmod/reparea

［オプションの説明］

-a：pdmodコマンドの制御文のパス名を指定します。制御文の内容を次に示します。

 replicate rdarea FMB01_1     ...1
    globalbuffer glbuf01      ...2
    reproduce FMB01           ...3
    generation number 1;      ...4
 replicate rdarea FMBIDX_1    ...1
    globalbuffer glbuf02      ...2
    reproduce FMBIDX          ...3
    generation number 1;      ...4

レプリカRDエリア名（FMB01_1，FMBIDX_1）を指定します。

レプリカRDエリアに割り当てるグローバルバッファを指定します。

オリジナルRDエリア名（FMB01，FMBIDX）を指定します。

レプリカRDエリアのHiRDBファイルシステム領域の世代番号を指定します。

なお，レプリカRDエリアに割り当てるグローバルバッファは，通常，オリジナルRDエリアと同じものを割り当てます。メモリ資源に余裕がある場合は，オリジナルRDエリアと同じ面数のグローバルバッファを用意して，競合しないようにすることを推奨します。レプリカRDエリアに別のグローバルバッファを割り当てるためには，HiRDBを正常終了する必要があります。

注意事項

HiRDBの次回開始以降は，ここで指定したグローバルバッファは割り当てられません。そのため，HiRDBの終了後，システム共通定義のpdbufferオペランドでグローバルバッファを割り当ててください。

(6)　追い付き反映キー対応表，追い付き状態管理表を格納するRDエリアの作成（pdmodコマンド）

pdfmkfsコマンドでHiRDBファイルシステム領域を作成したあとに，pdmodコマンドで次のRDエリアを作成します。

RDRMT：追い付き状態管理表を格納するRDエリア（/rdb/rmt）

RDCRT：追い付き反映キー対応表を格納するRDエリア（/rdb/crt）

RDIDX：追い付き反映キー対応表のインデクスを格納するRDエリア（/rdb/crt）

（　）内は，HiRDBファイルシステム領域名です。

次の手順で作成します。

HiRDBファイルシステム領域を作成する

 pdfmkfs -n 50 -l 10 -k DB -i /rdb/rmt
 pdfmkfs -n 50 -l 10 -k DB -i /rdb/crt

［オプションの説明］

-n：HiRDBファイルシステム領域の領域長をメガバイト単位で指定します。

-l：HiRDBファイルシステム領域内に作成するHiRDBファイル数の上限値を指定します。

-k：HiRDBファイルシステム領域の用途を指定します。

-i：HiRDBファイルシステム領域の全領域を初期化する場合に指定します。

/rdb/rmt：作成するHiRDBファイルシステム領域の名称を指定します。

/rdb/crt：作成するHiRDBファイルシステム領域の名称を指定します。

注意事項

追い付き反映キー対応表，およびそのインデクスを格納するRDエリア用のHiRDBファイルシステム領域（この例では/rdb/crt）には，更新可能なオンライン再編成の対象RDエリアを配置することはできません。

RDエリアを作成する

pdmodコマンドによるRDエリアの作成方法については，マニュアル「HiRDB Version 9 システム運用ガイド」の「RDエリアを作成する方法（RDエリアの追加）」を参照してください。

注意事項

pdmodコマンドのcreate rdarea文のdata modelオペランドには，relationalを指定してください。

追い付き反映処理を実行するBESごとに，追い付き反映キー対応表を格納するRDエリアを作成し，追い付き反映キー対応表を格納します。

追い付き反映処理を実行するBESごとに，追い付き反映キー対応表のインデクスを格納するRDエリアを作成し，追い付き反映キー対応表のインデクスを格納します。

追い付き反映処理を実行するBESごとに，追い付き状態管理表を格納するRDエリアを作成することを推奨します（必須ではありません）。

追い付き反映キー対応表と追い付き状態管理表は，別々のRDエリアに格納することを推奨します。

RDエリアは公用RDエリアとして作成してください。

(7)　追い付き反映キー対応表の作成または初期化（pdsdborcrtコマンド）

pdsdborcrtコマンドで，追い付き反映キー対応表を作成します。

 pdsdborcrt -k crt -r RDCRT -i RDIDX

［オプションの説明］

-k crt：追い付き反映キー対応表を作成するときに指定するオプションです。

-r：追い付き反映キー対応表を格納するRDエリアを指定します。

-i：追い付き反映キー対応表のインデクスを格納するRDエリアを指定します。

注意事項

更新可能なオンライン再編成の対象RDエリアが，複数のBESに存在する場合，BESごとにpdsdborcrtコマンドを実行し，各BESに追い付き反映キー対応表を作成してください。

追い付き反映キー対応表，およびそのインデクスは，更新可能なオンライン再編成の対象RDエリアとは別のRDエリアに格納してください。

なお，追い付き反映キー対応表は一度作成しておけば，次回の更新可能なオンライン再編成時に再度作成する必要はありません。ただし，この場合，追い付き反映キー対応表をpdsdborcrtコマンドで初期化する必要があります。初期化していない場合，pdorcheckコマンドの実行時にエラーとなります。

初期化する場合のコマンドの実行例

 pdsdborcrt -k init -s bes1

［オプションの説明］

-k init：追い付き反映キー対応表を初期化するときに指定するオプションです。

-s：初期化対象の追い付き反映キー対応表があるBESを指定します。

(8)　適用条件のチェック（pdorcheckコマンド）

pdorcheckコマンドで，更新可能なオンライン再編成が実行できる条件を満たしているかどうかをチェックします。

 pdorcheck -r "FMB01","FMBIDX"

［オプションの説明］

-r：更新可能なオンライン再編成の対象RDエリア（オリジナルRDエリア）を指定します。「(3)　関連RDエリアの確認（pdrdreflsコマンド）」で確認したRDエリアを漏れなく指定してください。

注意事項

pdorcheckコマンドによるチェックは必ず実施してください。更新可能なオンライン再編成を適用できないRDエリアがあると，追い付き反映処理がエラーとなり，業務をオリジナルRDエリアに戻すことができなくなります（レプリカRDエリアで業務を続行することになります）。

(9)　ペアボリュームの定義

更新可能なオンライン再編成の対象となるオリジナルRDエリアとレプリカRDエリアが，それぞれ定義されているボリューム（HiRDBファイルシステム領域）をペア化します。オリジナルRDエリアが定義されているボリューム（/sdb/area）への更新が，レプリカRDエリアが定義されているボリューム（/sdb/area1）に反映される状態にします。

操作方法については，使用しているミラーリング機能のマニュアルを参照してください。日立ディスクアレイサブシステムを使用している場合は，最初にマニュアル「インナレプリカ機能 HiRDB Staticizer Option Version 9」の「日立ディスクアレイサブシステム使用時の注意事項および操作手順」を参照してください。

(10)　追い付き状態管理表の作成（pdorcreateコマンド）

pdorcreateコマンドで，追い付き状態管理表を作成します。

 pdorcreate -o RDRMT

［オプションの説明］

-o：「(6)　追い付き反映キー対応表，追い付き状態管理表を格納するRDエリアの作成（pdmodコマンド）」で作成した追い付き状態管理表を格納するRDエリアを指定します。

注意事項

追い付き状態管理表は，更新可能なオンライン再編成の対象RDエリアとは別のRDエリアに格納してください。更新可能なオンライン再編成の対象RDエリアに，追い付き状態管理表を格納すると，追い付き反映処理が正常に実行できません。

追い付き反映処理を実行するためには，追い付き反映処理を管理するための表（追い付き状態管理表）を作成する必要があります。

(11)　SDBディレクトリ情報の最終更新日時のチェック（pdsdbarc -aコマンド）

pdsdbarc -aコマンドで，常用常駐領域中のSDBディレクトリ情報の最終更新日時をチェックします。

 pdsdbarc -a

注意事項

pdsdbarc -aコマンドによるチェックは必ず実施してください。SDBディレクトリ情報の最終更新日時が不整合な状態で更新可能なオンライン再編成を実行すると，データベースの不整合が発生するおそれがあります。

5.13.4　更新可能なオンライン再編成の運用手順

更新可能なオンライン再編成の運用手順の流れを次の図に示します。

図5‒15　更新可能なオンライン再編成の運用手順の流れ

注※

pd_lv_mirror_useオペランドにYを指定している場合，この操作は必要ありません。

［説明］

オリジナルRDエリアでSDBデータベースの再編成を実行し，レプリカRDエリアで業務（参照および更新処理）を続行します。

更新可能なオンライン再編成の運用手順を例題形式で説明します。なお，例題の説明は，インナレプリカ機能についての知識があることを前提にしています。

例題

オリジナルRDエリアに格納されているSDBデータベースに対して，更新可能なオンライン再編成を実施します。レコード型およびインデクスを格納しているRDエリアは次のとおりです。

なお，この例では，RDエリアのオープン属性は，オリジナルRDエリアがINITIAL，レプリカRDエリアがDEFERであるとしています。

(1)　RDエリアをオンライン再編成閉塞にする（pdorbeginコマンド）

pdorbeginコマンドで，SDBデータベースが格納されているRDエリア（オリジナルRDエリアとレプリカRDエリアの両方）をオンライン再編成閉塞にします。

 pdorbegin -t REC1 -q 1 -w 60

［オプションの説明］

-t：ルートレコードのレコード型名を指定します。

-q：オンライン再編成閉塞にするレプリカRDエリアの世代番号を指定します。

-w：RDエリアの状態をオンライン再編成閉塞にする際の，排他待ち時間を秒単位で指定します。

pdorbeginコマンドを実行すると，次のRDエリアがオンライン再編成閉塞になります。

オリジナルRDエリア

-qオプションに指定した世代のレプリカRDエリア

この例では，FMB01，FMBIDX，FMB01_1，およびFMBIDX_1がオンライン再編成閉塞になります。

このコマンドの実行後から，「(3)　カレントRDエリアを切り替える（pdorchgコマンド）」までの間は，オンライン再編成閉塞のRDエリアにアクセスするトランザクションは待ち状態になります。

■RDエリア名指定をする場合

次のように-rオプションにRDエリア名を指定して，更新可能なオンライン再編成の対象RDエリアをオンライン再編成閉塞にすることもできます。この場合，BES内の関連RDエリア（FMB01，FMBIDX）を漏れなく指定してください。

 pdorbegin -r "FMB01","FMBIDX" -q 1 -w 60

［オプションの説明］

-r：オンライン再編成閉塞にするオリジナルRDエリアを指定します。

-q：オンライン再編成閉塞にするレプリカRDエリアの世代番号を指定します。

-w：RDエリアの状態をオンライン再編成閉塞にする際の，排他待ち時間を秒単位で指定します。

pdorbeginコマンドを実行すると，-rオプションに指定したオリジナルRDエリアと，-qオプションに指定した世代のレプリカRDエリアが，オンライン再編成閉塞になります。

参考

pdrdreflsコマンドで関連RDエリアを確認できます。詳細については，「5.13.3(3)　関連RDエリアの確認（pdrdreflsコマンド）」を参照してください。

(2)　ペアボリュームを解除する

「5.13.3(9)　ペアボリュームの定義」で設定したペアボリュームを解除してください。解除方法については，使用しているミラーリング機能のマニュアルを参照してください。日立ディスクアレイサブシステムを使用している場合は，最初にマニュアル「インナレプリカ機能 HiRDB Staticizer Option Version 9」の「日立ディスクアレイサブシステム使用時の注意事項および操作手順」を参照してください。

(3)　カレントRDエリアを切り替える（pdorchgコマンド）

pdorchgコマンドで，カレントRDエリアを切り替えてください。

 pdorchg -s bes1

［オプションの説明］

-s：更新可能なオンライン再編成の対象RDエリアがあるBESを指定します。

pdorchgコマンドの完了後，トランザクションの待ち状態は解除され，レプリカRDエリアにアクセスすることで業務が再開されます。

(4)　オリジナルRDエリアのバックアップを取得する（pdcopyコマンド）

pdcopyコマンドで，オリジナルRDエリアのバックアップを取得します。

 pdcopy -m /HiRDB/rdarea/rdmast/rdmast00 -M r -r FMB01,FMBIDX -q 0
 -b /bkdir/bkup01 -p /bkdir/list01

［オプションの説明］

-m：マスタディレクトリ用RDエリアの先頭HiRDBファイル名を指定します。

-M：バックアップ取得モードを指定します。

-r：オリジナルRDエリア名を指定します。

-q：バックアップ対象のRDエリアの世代番号を指定します。

-b：バックアップファイル名を指定します。

-p：pdcopyコマンドの処理結果リストの出力先を指定します。

この時点でのバックアップの取得は任意ですが，SDBデータベースの再編成時の障害に備えてバックアップを取得することをお勧めします。バックアップを取得する場合は，pdcopyコマンドの実行前に，pdlogswap -d sys -wコマンドを実行してシステムログファイルをスワップしてください。

(5)　オリジナルRDエリアのレコードをアンロードする（pdsdbrogコマンド）

pdsdbrogコマンドで，オリジナルRDエリアのレコードをアンロードします。

 pdsdbrog /usr/sdb/control_file1

［オプションの説明］

/usr/sdb/control_file1：pdsdbrog制御文ファイル名を指定します。pdsdbrog制御文の内容を次に示します。

 environment
     schema = FMB                    ...1
     generation = 0                  ...2
 unload
     server = bes1                   ...3
     record = REC1                   ...4
     unldfile = /usr/sdb/unload1     ...5
     prefix = 5                      ...6
     unldkind = lod                  ...7
 dbinf
     userpflg =(0)                   ...8
     pagenum = (1)                   ...9

SDBデータベース名を指定します。

アンロード対象のRDエリアの世代番号を指定します。

アンロード対象のRDエリアがあるBESを指定します。

ルートレコードのレコード型名を指定します。

アンロードデータファイル名を指定します。

プリフィクス部の長さを指定します。

データロードで使用できる入力データファイルの形式でアンロードデータファイルを作成します。

USERポインタフラグの格納位置を指定します。

事前割り当てページ数の格納位置を指定します。

(6)　オリジナルRDエリアにレコードをデータロードする（pdsdblodコマンド）

pdsdblodコマンドで，オリジナルRDエリアにレコードをデータロードします。

 pdsdblod /usr/sdb/control_file2

［オプションの説明］

/usr/sdb/control_file2：pdsdblod制御文ファイル名を指定します。pdsdblod制御文の内容を次に示します。

 environment
     schema = FMB                   ...1
     purge = yes                    ...2
     logmode = all                  ...3
     generation = 0                 ...4
 load
     server = bes1                  ...5
     type = tree                    ...6
     record = REC1                  ...7
     data = /usr/sdb/unload1        ...8
     prefix = 5                     ...9
     dupkeyck = no                  ...10
     seqkeyck = no                  ...11

 dbinf
     userpflg =(0)                  ...12
     pagenum = (1)                  ...13
 oreload
     midfile = /usr/sdb/midfile1    ...14

SDBデータベース名を指定します。アンロード時に指定したSDBデータベース名を指定します。

既存レコードを削除してデータロードを実行します。必ずyesを指定してください。

ログ取得モードでデータロードを実行します。データロードは，ログ取得モードで実行することを推奨します。

データロード対象のRDエリアの世代番号を指定します。アンロード時に指定した世代番号を指定します。

データロード対象のRDエリアがあるBESを指定します。アンロード時に指定したBES名を指定します。

4V FMBのSDBデータベースのデータロードのため，treeを指定します。

ルートレコードのレコード型名を指定します。アンロード時に指定したレコード型名を指定します。

「(5)　オリジナルRDエリアのレコードをアンロードする（pdsdbrogコマンド）」で作成したアンロードデータファイルを入力データファイルとして指定します。

プリフィクス部の長さを指定します。

入力データと格納済みレコードとのキー重複チェックを実行しない指定をします。

入力データのシーケンシャルインデクスのキー順をチェックしない指定をします。

USERポインタフラグの開始位置を指定します。アンロード時に指定した格納位置を指定します。

事前割り当てページ数の開始位置を指定します。アンロード時に指定した格納位置を指定します。

追い付き反映キー対応表の中間ファイルを格納するディレクトリ名を指定します。

注意事項

アンロード時に作成したアンロードデータファイルを，データロード時の入力データファイルに指定してください（入力データファイルの指定を間違わないようにしてください）。アンロードデータファイルの内容とデータロードの結果を基に，追い付き反映キー対応表にデータが登録されます。このため，間違ったアンロードデータファイルを入力データファイルに指定した場合，SDBデータベースの内容が不整合になります。

データロードの再実行に備えて，更新可能なオンライン再編成が完了するまで，アンロードデータファイルを削除しないでください。データロードが正常終了したあと（KFPB63012-Iメッセージが出力されたあと）に，データロードの再実行が必要になった場合，pdsdbrogコマンドでアンロードを再実行してアンロードデータファイルを作成しても，アンロードデータファイルの内容はデータロード後の内容になっています。

(7)　オリジナルRDエリアのバックアップを取得する（pdcopyコマンド）

pdcopyコマンドで，オリジナルRDエリアのバックアップを取得します。

 pdcopy -m /HiRDB/rdarea/rdmast/rdmast00 -M r -r FMB01,FMBIDX -q 0
 -b /bkdir/bkup02 -p /bkdir/list02

［オプションの説明］

-m：マスタディレクトリ用RDエリアの先頭HiRDBファイル名を指定します。

-M：バックアップ取得モードを指定します。

-r：オリジナルRDエリア名を指定します。

-q：バックアップ対象のRDエリアの世代番号を指定します。

-b：バックアップファイル名を指定します。

-p：pdcopyコマンドの処理結果リストの出力先を指定します。

pdcopyコマンドの実行前に，pdlogswap -d sys -wコマンドを実行してシステムログファイルをスワップしてください。

(8)　追い付き反映キー対応表を格納しているRDエリアのバックアップを取得する（pdcopyコマンド）

pdcopyコマンドで，追い付き反映キー対応表，および追い付き反映キー対応表のインデクスを格納しているRDエリアのバックアップを取得します。

 pdcopy -m /HiRDB/rdarea/rdmast/rdmast00 -M r -r RDCRT,RDIDX
 -b /bkdir/bkup03 -p /bkdir/list03

［オプションの説明］

-m：マスタディレクトリ用RDエリアの先頭HiRDBファイル名を指定します。

-M：バックアップ取得モードを指定します。

-r：追い付き反映キー対応表，および追い付き反映キー対応表のインデクスを格納しているRDエリアを指定します。

-b：バックアップファイル名を指定します。

-p：pdcopyコマンドの処理結果リストの出力先を指定します。

(9)　追い付き反映処理を実行する（pdorendコマンド）

pdorendコマンドで，追い付き反映処理を実行します。

 pdorend -s bes1

［オプションの説明］

-s：更新可能なオンライン再編成の対象RDエリアがあるBESを指定します。

pdorendコマンドを実行すると，次の処理が行われます

レプリカRDエリアに対する更新処理が，オリジナルRDエリアに反映されます。

オリジナルRDエリアとレプリカRDエリアの状態の最終的な同期を取るため，一時的に該当するRDエリアのレプリカグループ構成に排他を掛けます。このとき，レプリカRDエリアに対する処理は排他待ちになります。

カレントRDエリアが，オリジナルRDエリアに切り替わります。

オリジナルRDエリアおよびレプリカRDエリアのオンライン再編成閉塞が解除されます。RDエリアの状態は，次のようになります。

(10)　ファイルアクセスプロセスを停止する（pdpfreshコマンド）

pd_lv_mirror_useオペランドにYを指定している場合，(10)および(11)の操作は必要ありません。

pdpfreshコマンドで，ファイルアクセスプロセスを停止します。

 pdpfresh -s bes1

［オプションの説明］

-s：更新可能なオンライン再編成の対象RDエリアがあるBESを指定します。

pdpfreshコマンドを実行すると，レプリカRDエリアのHiRDBファイルシステム領域にアクセスしているプロセスを非同期に終了させます。強制的にリフレッシュする場合は，-fオプションを指定してください。

なお，更新可能なオンライン再編成の対象RDエリアのオープン属性がSCHEDULEの場合は，この操作は必要ありません。

(11)　レプリカRDエリアにアクセスしているプロセスが存在しないことを確認する（pdpfreshコマンド）

pdpfreshコマンドで，レプリカRDエリアのHiRDBファイルシステム領域にアクセスしているプロセスが存在しないことを確認します。

 pdpfresh -c

［オプションの説明］

-c：サーバプロセスのリフレッシュ状態を表示するオプションです。

pdpfreshコマンドのリターンコードが0の場合，レプリカRDエリアのHiRDBファイルシステム領域にアクセスしているプロセスは存在していないため，ペアボリュームを再同期できます。

リターンコードが0以外の場合，次のコマンドでHiRDBファイルシステム領域にアクセスしているプロセスを特定してください。

 pdls -d prc -s bes1 -c

［オプションの説明］

-d prc：プロセスの状態を表示するオプションです。

-s：更新可能なオンライン再編成の対象RDエリアがあるBESを指定します。

-c：サーバプロセスによるファイルアクセス状態を表示するオプションです。

pdlsコマンドの実行結果

 HOSTNAME : sdb-bs2000-1 (112622)
 STATUS  PID     UID   GID   SVID     TIME    PROGRAM    C-PID  C-GRP
   C     13805   339   300   bes1     999999  UAP1
   L     13806   339   300   bes1     999999

［説明］

STATUS欄にCが表示されているプロセスが，レプリカRDエリアのHiRDBファイルシステム領域にアクセスしている可能性があります。このプロセスを強制的にリフレッシュしてよい場合は，pdpfresh -fコマンドを実行してください。このプロセスを強制的にリフレッシュしてはいけない場合は，このプロセスが実行中のジョブの終了まで待つか，またはそのジョブを終了させるような対処をしてください。

(12)　ペアボリュームを再同期する

解除したペアボリュームを再同期します。操作方法については，使用しているミラーリング機能のマニュアルを参照してください。日立ディスクアレイサブシステムを使用している場合は，最初にマニュアル「インナレプリカ機能 HiRDB Staticizer Option Version 9」の「日立ディスクアレイサブシステム使用時の注意事項および操作手順」を参照してください。

なお，更新可能なオンライン再編成の実行中に障害が発生した場合の対処方法については，「5.23　障害が発生したときの対処方法（更新可能なオンライン再編成の実行時）【4V FMB】」を参照してください。

5.13.5　更新可能なオンライン再編成を複数回実行する場合

更新可能なオンライン再編成を複数回実行する場合の手順の流れを次の図に示します。

図5‒16　更新可能なオンライン再編成を複数回実行する場合の手順の流れ

［説明］

全BESの追い付き反映処理が完了したあとに，ペアボリュームを再同期します（図中の1.，2.は次の説明に対応しています）。

再編成対象の資源が多く，1回の再編成運用タイミングで複数回に分けて更新可能なオンライン再編成を実行する場合は繰り返してください。

以前，再編成を実施した際に準備作業は完了しており，追い付き反映キー対応表が作成済みであれば，ペアボリュームを再同期してから手順に従ってください。

注※1

詳細については，「5.13.3　更新可能なオンライン再編成の準備作業」を参照してください。

注※2

詳細については，「5.13.4　更新可能なオンライン再編成の運用手順」を参照してください。ただし，ペアボリュームの再同期は不要です。

注※3

詳細については，「5.13.3(7)　追い付き反映キー対応表の作成または初期化（pdsdborcrtコマンド）」を参照してください。

注※4

詳細については，「5.13.4(12)　ペアボリュームを再同期する」を参照してください。

5.13.6　追い付き反映キー対応表を格納しているRDエリアを確認したい場合

追い付き反映キー対応表を格納しているRDエリアや，追い付き反映キー対応表の作成有無を確認したい場合は，pddbstコマンドの表単位の状態解析を実行してください。

（例）

BES（BES名：bes1）に追い付き反映キー対応表が作成されているかを確認します。また，追い付き反映キー対応表を格納しているRDエリアを確認します。

 pddbst -t "ORG_USER".'"PDORSDB_bes1"'

［オプションの説明］

-t：追い付き反映キー対応表の表名を指定します。

追い付き反映キー対応表の表名は次の規則に従って決まります。

認可識別子は"ORG_USER"固定です。

表識別子は"PDORSDB_BES名"になります。

上記のコマンドの指定例では，「bes1」の部分はBES名になります。

5.13.7　更新可能なオンライン再編成の対象RDエリアの状態を確認したい場合

RDエリアの状態はpddblsコマンド，またはpddbstコマンドで確認できます。レプリカRDエリアを含めたデータベースの状態表示については，マニュアル「インナレプリカ機能 HiRDB Staticizer Option Version 9」の「データベースの状態表示」を参照してください。

5.13.8　追い付き反映処理の状態を確認したい場合

pdorendコマンドによる追い付き反映処理の状態をpdls -d orgコマンドで確認できます。オンライン再編成の追い付き反映の経過情報の確認方法については，マニュアル「HiRDB Version 9 コマンドリファレンス」の「pdls【-d org】（オンライン再編成の追い付き反映の経過情報）」を参照してください。

なお，実行結果のSTATUS欄がREADYまたはREFLECの場合，REMAIN_LOG_RECORD_COUNTにはカレントRDエリアの未反映ログレコード数が表示されます。pdorendコマンドの実行前後で，REMAIN_LOG_RECORD_COUNTの値を比較すると，追い付き反映処理と追い付き反映処理中のトランザクション量の関係がわかります。pdorendコマンド実行後のREMAIN_LOG_RECORD_COUNTの値が，実行前に比べて大きくなっている場合は，トランザクションの量を制限して，pdorendコマンドを再実行する必要があります。

5.13.9　更新可能なオンライン再編成の操作を取り消したい場合

pdorchgコマンドによるカレントRDエリアの切り替え前（「5.13.4(3)　カレントRDエリアを切り替える（pdorchgコマンド）」の操作の前）であれば，更新可能なオンライン再編成の操作を取り消すことができます。操作を取り消す場合は，pdorbegin -uコマンドを実行します。コマンドの指定例を次に示します。

（例1）更新可能なオンライン再編成をレコード型名指定で開始した場合

 pdorbegin -t REC1 -u

［オプションの説明］

-t：ルートレコードのレコード型名を指定します。

-u：オンライン再編成閉塞を解除するオプションです。

（例2）更新可能なオンライン再編成をRDエリア名指定で開始した場合

 pdorbegin -r FMB01,FMBIDX -u

［オプションの説明］

-r：オリジナルRDエリア名を指定します。

-u：オンライン再編成閉塞を解除するオプションです。

注意事項

pdorchgコマンドによるカレントRDエリアの切り替え後（「5.13.4(3)　カレントRDエリアを切り替える（pdorchgコマンド）」の操作のあと）は，更新可能なオンライン再編成の操作を取り消すことはできません。

カレントRDエリアの切り替え後に，更新可能なオンライン再編成の操作を取り消すと，レプリカRDエリアへの更新処理がオリジナルRDエリアに反映されないため，SDBデータベースの内容が不整合な状態になります。

誤って取り消してしまった場合は，データロードを実行しないで，追い付き反映処理だけを実行してください。そうすると，レプリカRDエリアに対する更新処理をオリジナルRDエリアに反映することができます。

また，この場合，追い付き反映キー対応表の初期化を必ず実施してください。初期化しないで，追い付き反映キー対応表に前回の更新可能なオンライン再編成時のデータが残っていると，SDBデータベースの内容が不整合な状態になります。

5.13.10　追い付き反映処理時にHiRDB/SDが内部的に発行するAPIのエラーをスキップしたい場合

pdorendコマンドによる追い付き反映処理時のルートレコード検索で，HiRDB/SDが内部的に発行するAPIでエラー（対象レコードが存在しない）が発生した場合，追い付き反映処理がエラー終了します。このAPIのエラーをスキップして，追い付き反映処理を続行したい場合は，pdorendコマンドに-fオプションを指定して，追い付き反映制御ファイルに次の指定をしてください。

reflection文のdml_errorオペランドにskipを指定する

エラーとなったAPIの情報は，追い付き反映制御ファイルのreport文のdml_skip_infoオペランドに指定したDMLスキップ情報出力ファイルに出力されます。

アンロードデータファイルの内容を変更し，ファミリ単位の削除をした場合に，HiRDB/SDが内部的に発行するAPIでエラーが発生する可能性があります。ファミリ単位の削除を行ったレコードに対して，カレントRDエリアで更新が発生した場合，オリジナルRDエリアでは対応するレコードがないため，追い付き反映処理でのHiRDB/SDが内部的に発行するAPIでエラーが発生します。

この場合，DMLスキップ情報出力ファイルに出力された情報を確認し，スキップ対象となったデータをSDBデータベースに反映するかどうかを判断してください。反映が必要な場合は，SDBデータベースを操作するAPIなどでデータを追加し，SDBデータベースの整合性を回復してください。

DMLスキップ情報出力ファイルの出力形式については，「10.10.4(7)　DMLスキップ情報出力ファイルの出力形式」を参照してください。

5.14　RDエリアの運用

ここでは，RDエリアの空き容量の確認方法と，RDエリアの追加，容量拡張，削除，および設定変更方法について説明します。

5.14.1　RDエリアの空き容量の確認

レコードの追加および削除が頻繁に行われると，RDエリアの空き容量が少なくなることがあります。そのため，このようなRDエリアに対しては，pddblsコマンドでRDエリアの空き容量を定期的に確認するようにしてください。

RDエリアの空き容量の確認方法を，例を使って説明します。

例

RDエリア（RDAREA1）の空き容量を確認します。

 pddbls -r RDAREA1 -a

 STATE OF RDAREA
     RDAREA        ID       STATUS                 TYPE
                            OPNMODE
     RDAREA1       4        OPEN                   USER
                            INITIAL
     SEGMENT   75 / 700

［説明］

SEGMENT欄にRDエリアの未使用セグメント数と全セグメント数が表示されます。未使用セグメント数がRDエリアの空き容量になります。この例では，未使用セグメント数が75で，全セグメント数が700です。未使用セグメント数が残り少なくなったら，RDエリアを拡張するなどの対処を行います。

参考

次に示すメッセージが同じRDエリアに対して頻繁に出力される場合は，RDエリアの空き容量が少なくなっているおそれがあります。pddblsコマンドでRDエリアの空き容量を確認してください。

KFPA12300-I

KFPH00211-I

KFPH00212-I

5.14.2　RDエリアの追加

pdmodコマンドのcreate rdarea文でRDエリアを追加できます。RDエリアの追加手順については，マニュアル「HiRDB Version 9 システム運用ガイド」の「RDエリアを作成する方法（RDエリアの追加）」を参照してください。pdmodコマンドについては，「10.3.1　RDエリアの追加」およびマニュアル「HiRDB Version 9 コマンドリファレンス」を参照してください。

5.14.3　RDエリアの容量拡張

pdmodコマンドのexpand rdarea文で，RDエリアの容量を拡張できます。RDエリアの容量拡張手順については，マニュアル「HiRDB Version 9 システム運用ガイド」の「RDエリアの容量を大きくする方法（RDエリアの拡張）」を参照してください。pdmodコマンドについては，マニュアル「HiRDB Version 9 コマンドリファレンス」を参照してください。

参考

pdmodコマンドのRDエリアの再初期化（initialize rdarea文）でも，RDエリアの容量を拡張できます。RDエリアの再初期化手順については，マニュアル「HiRDB Version 9 システム運用ガイド」の「RDエリアの容量を大きく，または属性を変更する方法（RDエリアの再初期化）」を参照してください。

5.14.4　RDエリアの削除

不要になったRDエリアをpdmodコマンドのremove rdarea文で削除できます。RDエリアの削除手順については，マニュアル「HiRDB Version 9 システム運用ガイド」の「RDエリアを削除する方法」を参照してください。pdmodコマンドについては，マニュアル「HiRDB Version 9 コマンドリファレンス」を参照してください。

なお，削除対象のRDエリアにレコードまたはインデクスがある場合は，SDBデータベースを削除してからRDエリアを削除してください。

5.14.5　RDエリアの設定変更

RDエリアの次に示す設定をpdmodコマンドのinitialize rdarea文で変更できます。

RDエリアの自動増分の設定

RDエリアのオープン契機の設定

RDエリアのページ長およびセグメントサイズ

RDエリアに割り当てるHiRDBファイルシステム領域

なお，RDエリアの自動増分の設定とオープン契機の設定は，pdmodコマンドのalter rdarea文でも変更できます。

RDエリアの設定変更手順については，マニュアル「HiRDB Version 9 システム運用ガイド」の「RDエリアの容量を大きく，または属性を変更する方法（RDエリアの再初期化）」，または「RDエリアのオープン契機を変更する方法（RDエリアの属性変更）」を参照してください。pdmodコマンドについては，マニュアル「HiRDB Version 9 コマンドリファレンス」を参照してください。

参考

RDエリア名の変更はできません。

5.15　SDBデータベースの横分割数を増やす方法

SDBデータベースの横分割数を増やす際の作業の流れを次の図に示します。

図5‒17　SDBデータベースの横分割数を増やす際の作業の流れ

SDBデータベースの横分割数を増やす際の手順を例題形式で説明します。

5.15.1　横分割数を増やす手順（再定義をする場合）

例題

次に示す構成のSDBデータベースの横分割数を2から4に増やします。SDBデータベースを格納しているRDエリアは同一バックエンドサーバ内にあります。

RDAREA01に格納していたレコードは，RDAREA01およびRDAREA02に格納します。

RDAREA02に格納していたレコードは，RDAREA03およびRDAREA04に格納します。

手順

RDエリアを追加する

pdmodコマンドのcreate rdarea文でRDエリア（RDAREA03，RDAREA04，RDAREA13，およびRDAREA14）を追加します。RDエリアの追加手順については，マニュアル「HiRDB Version 9 システム運用ガイド」の「RDエリアを作成する方法（RDエリアの追加）」を参照してください。pdmodコマンドについては，「10.3.1　RDエリアの追加」およびマニュアル「HiRDB Version 9 コマンドリファレンス」を参照してください。

なお，追加したRDエリアにグローバルバッファを割り当ててください。

SDBデータベースの定義変更を行う

SDBデータベースの横分割数を再定義で変更する場合，いったんSDBデータベースの定義削除をしたあとに，新たにSDBデータベースの定義追加をする必要があります。その際，HiRDBを再起動する必要があるため，「5.6　SDBデータベースの定義追加，定義変更，または定義削除（HiRDBの再起動を必要とする場合）」で説明している手順に従って，SDBデータベースの定義削除および定義追加をしてください。

なお，「5.6.3　SDBデータベースの定義追加，定義変更，または定義削除の手順（各手順の詳細）」の手順の説明について，次の点を考慮してください。

「5.6.3(3)　レコードをアンロードする」および「5.6.3(11)　SDBデータベースのデータロードを実行する」の作業は実施してください。

「5.6.3(5)　SDBデータベースの定義追加，定義変更，または定義削除を行う」では，「5.6.5(2)　SDBデータベースを再定義する方法」を参照してください。

SDBデータベース格納定義の変更例を次に示します。

SDBデータベース格納定義の変更例

 STORAGE SCHEMA SCM01 FOR SCM01
  DBTYPE 4V
  STORAGE RECORD REC01
   SEQUENTIAL INDX01 FOR RECORD
      :
     WITHIN ((RDAREA11),(RDAREA12),(RDAREA13),(RDAREA14))
   DEPENDING ON C1
     WITHIN ((RDAREA01)100,(RDAREA02)200,(RDAREA03)300,(RDAREA04))
       :
 END STORAGE SCHEMA

下線部分がRDエリアに関する指定です。

RDエリアのバックアップを取得する

pdcopyコマンドでRDエリア（RDAREA01〜RDAREA04，RDAREA11〜RDAREA14，およびシステム用RDエリア）のバックアップを取得します。バックアップの取得方法については，マニュアル「HiRDB Version 9 システム運用ガイド」の「バックアップの取得方法」を参照してください。pdcopyコマンドについては，マニュアル「HiRDB Version 9 コマンドリファレンス」を参照してください。

5.15.2　横分割数を増やす手順（HiRDBの再起動を必要としない場合）

格納条件指定でSDBデータベースを横分割しているときに，新たな分割キーを追加する場合に限り，HiRDBの再起動なしに横分割数を増やすことができます。

そのほかの場合は，RDエリアの格納条件を変更することになるため，HiRDBの再起動が必要となります。この場合の手順は，「5.15.1　横分割数を増やす手順（再定義をする場合）」，または「5.15.3　横分割数を増やす手順（HiRDBの再起動を必要とする場合）」を参照してください。

なお，SD FMBのSDBデータベースの横分割数を増やす場合には，SDBデータベースの再定義が必要になります。この場合の手順については，「5.15.1　横分割数を増やす手順（再定義をする場合）」を参照してください。

例題

次に示す構成のSDBデータベースの横分割数を3から4に増やします。SDBデータベースを格納しているRDエリアは同一バックエンドサーバ内にあります。

既存のレコード格納用RDエリアRDAREA01〜RDAREA03に，RDAREA04を追加します。

RDAREA04には，新たな分割キー値を持つレコードを格納します。

手順

RDエリアを追加する

pdmodコマンドのcreate rdarea文でRDエリア（RDAREA04およびRDAREA14）を追加します。RDエリアの追加手順については，マニュアル「HiRDB Version 9 システム運用ガイド」の「RDエリアを作成する方法（RDエリアの追加）」を参照してください。pdmodコマンドについては，「10.3.1　RDエリアの追加」およびマニュアル「HiRDB Version 9 コマンドリファレンス」を参照してください。

なお，追加したRDエリアにグローバルバッファを割り当ててください。

SDBデータベースの定義変更を行う

SDBデータベースの横分割数を増やす場合は，*ALTER DICTIONARY文および*ALTER DIRECTORY文で変更できます。

その際，既存のRDエリア（RDAREA01〜RDAREA03）に格納するデータに影響がない格納条件の変更の場合は，HiRDBの再起動は必要ありません。「5.7　SDBデータベースの定義追加または定義変更（HiRDBの再起動を必要としない場合）」で説明している手順に従って，SDBデータベースの定義変更をしてください。

なお，「5.7.3　SDBデータベースの定義追加または定義変更の手順（各手順の詳細）」の手順の説明については，次の点を考慮してください。

「5.7.3(8)　トランザクションを静止化する」の手順までは，既存のRDエリア（RDAREA01〜RDAREA03）に対して，UAPのアクセスができます。

「5.7.3(12)　トランザクションの静止化を解除する」の手順以降から，追加したRDエリア（RDAREA04）へのアクセスができます。

RDエリアのバックアップを取得する

pdcopyコマンドでRDエリア（RDAREA01〜RDAREA04，RDAREA11〜RDAREA14，およびシステム用RDエリア）のバックアップを取得します。バックアップの取得方法については，マニュアル「HiRDB Version 9 システム運用ガイド」の「バックアップの取得方法」を参照してください。pdcopyコマンドについては，マニュアル「HiRDB Version 9 コマンドリファレンス」を参照してください。

5.15.3　横分割数を増やす手順（HiRDBの再起動を必要とする場合）

1つのRDエリアに格納されたデータを複数のRDエリアに分割格納する場合は，HiRDBの再起動が必要となります。

なお，境界値指定でSDBデータベースを横分割している場合は，RDエリアの格納条件を必ず変更することになるため，HiRDBの再起動が必要になります。

なお，SD FMBのSDBデータベースの横分割数を増やす場合には，SDBデータベースの再定義が必要になります。この場合の手順については，「5.15.1　横分割数を増やす手順（再定義をする場合）」を参照してください。

例題

次に示す構成のSDBデータベースの横分割数を3から4に増やします。SDBデータベースを格納しているRDエリアは同一バックエンドサーバ内にあります。

RDAREA03に格納していたレコードを，RDAREA03およびRDAREA04に格納します。

手順

RDエリアを追加する

pdmodコマンドのcreate rdarea文でRDエリア（RDAREA04およびRDAREA14）を追加します。RDエリアの追加手順については，マニュアル「HiRDB Version 9 システム運用ガイド」の「RDエリアを作成する方法（RDエリアの追加）」を参照してください。pdmodコマンドについては，「10.3.1　RDエリアの追加」およびマニュアル「HiRDB Version 9 コマンドリファレンス」を参照してください。

なお，追加したRDエリアにグローバルバッファを割り当ててください。

SDBデータベースの定義変更を行う

SDBデータベースの横分割数を増やす場合は，*ALTER DICTIONARY文および*ALTER DIRECTORY文で変更できます。

その際，既存のRDエリア（RDAREA03）に格納しているデータに影響がある格納条件の変更の場合，HiRDBの再起動が必要となります。そのため，pdsdbdefコマンドの実行時は，-iオプションを指定してください。

「5.6　SDBデータベースの定義追加，定義変更，または定義削除（HiRDBの再起動を必要とする場合）」で説明している手順に従って，SDBデータベースの定義変更をしてください。

なお，「5.6.3　SDBデータベースの定義追加，定義変更，または定義削除の手順（各手順の詳細）」の手順の説明については，次の点を考慮してください。

「5.6.3(3)　レコードをアンロードする」の手順では，格納条件を変更するRDエリア（RDAREA03）だけをアンロードしてください。

「5.6.3(11)　SDBデータベースのデータロードを実行する」の手順では，格納条件を変更したRDエリア（RDAREA03,RDAREA04）に対してだけデータロードを実行します。このとき，格納条件に合致しないデータは，エラーデータとして格納処理をスキップするため，エラー情報を出力しないように，pdsdblodコマンドのdivermsgオペランドにnoputを指定してください。

RDエリアのバックアップを取得する

pdcopyコマンドでRDエリア（RDAREA01〜RDAREA04，RDAREA11〜RDAREA14，およびシステム用RDエリア）のバックアップを取得します。バックアップの取得方法については，マニュアル「HiRDB Version 9 システム運用ガイド」の「バックアップの取得方法」を参照してください。pdcopyコマンドについては，マニュアル「HiRDB Version 9 コマンドリファレンス」を参照してください。

5.16　セキュリティに関する運用

ここでは，機密保護機能を使用したユーザ権限の設定方法と，ディクショナリ表の参照権限の設定方法について説明します。

5.16.1　構造型DB機能に関するユーザ権限の設定

(1)　ユーザ権限付与の流れ

HiRDBをインストールすると，HiRDB管理者が最初のHiRDBのユーザとして自動的に登録されます。HiRDB管理者にはDBA権限が与えられているため，最初はHiRDB管理者がほかのユーザに対してユーザ権限を与えます。ユーザ権限付与の流れを次の図に示します。

図5‒18　ユーザ権限付与の流れ

［説明］

HiRDB管理者が，ユーザ権限を管理するユーザにDBA権限を与えます。HiRDB管理者がユーザ権限を管理する場合は，この作業は必要ありません。

HiRDB管理者，またはユーザ権限を管理するユーザ（HiRDB管理者からDBA権限を与えてもらったユーザ）が，データベースを定義するユーザにCONNECT権限およびスキーマ定義権限を与えます。

HiRDB管理者，またはユーザ権限を管理するユーザ（HiRDB管理者からDBA権限を与えてもらったユーザ）が，データベースをアクセスするユーザにCONNECT権限を与えます。

参考

マニュアル「HiRDB Version 9 システム運用ガイド」の「機密保護の設定方法」にユーザ権限についての説明があります。そこでは，次に示す権限についての説明がありますが，HiRDB/SDでは次に示す権限を設定する操作をしても無効となります。

アクセス権限

RDエリア利用権限

(2)　ユーザ権限を管理するユーザにDBA権限を与える

DBA権限を与える場合は，定義系SQLのGRANT文を実行します。

例題

ユーザ（認可識別子：USER001，パスワード：HIRDB001）にDBA権限を与えます。

GRANT DBA TO USER001 IDENTIFIED BY HIRDB001

DBA権限を削除する場合は，定義系SQLのREVOKE文を実行します。

例題

ユーザ（認可識別子：USER001）のDBA権限を削除します。

REVOKE DBA FROM USER001

ポイント

DBA権限の付与，削除を実行するには，DBA権限が必要になります。

自分のDBA権限を自分で削除できます。

(3)　データベースを定義するユーザにCONNECT権限およびスキーマ定義権限を与える

CONNECT権限およびスキーマ定義権限を与える場合は，定義系SQLのGRANT文を実行します。

例題

ユーザ（認可識別子：USER002，パスワード：HIRDB002）に，CONNECT権限およびスキーマ定義権限を与えます。

GRANT CONNECT TO USER002 IDENTIFIED BY HIRDB002
GRANT SCHEMA TO USER002

ポイント

ユーザ権限はCONNECT権限，スキーマ定義権限の順に与えてください。逆にした場合，SQLの実行時にエラーとなります。

CONNECT権限およびスキーマ定義権限を削除する場合は，定義系SQLのREVOKE文を実行します。

例題

ユーザ（認可識別子：USER002）のCONNECT権限およびスキーマ定義権限を取り消します。

REVOKE CONNECT FROM USER002
REVOKE SCHEMA FROM USER002

ポイント

SDBディクショナリ情報またはSDBディレクトリ情報があるユーザのスキーマ定義権限は削除できません。スキーマ定義権限を削除する場合は，削除するユーザのSDBディクショナリ情報およびSDBディレクトリ情報がないことを確認してください。ある場合は，pdsdbdefコマンドの*DELETE DICTIONARY文および*DELETE DIRECTORY文でSDBディクショナリ情報およびSDBディレクトリ情報を削除してください。

(4)　データベースにアクセスするユーザにCONNECT権限を与える

CONNECT権限を与える場合は，定義系SQLのGRANT文を実行します。

例題

ユーザ（認可識別子：USER003，パスワード：HIRDB003）に，CONNECT権限を与えます。

GRANT CONNECT TO USER003 IDENTIFIED BY HIRDB003

CONNECT権限を削除する場合は，定義系SQLのREVOKE文を実行します。

例題

ユーザ（認可識別子：USER003）のCONNECT権限を削除します。

REVOKE CONNECT FROM USER003

5.16.2　ディクショナリ表の参照権限の設定

ディクショナリ表には，レコード型やインデクスなどの情報が格納されています。デフォルトの設定では，CONNECT権限を持っていればディクショナリ表（一部のディクショナリ表を除く）の情報を参照できます。ディクショナリ表の参照権限を設定すると，DBA権限を持っていないユーザからのディクショナリ表の参照を制限できるため，システムのセキュリティを強化できます。

次に示すユティリティの制御文でlimitedを指定すると，ディクショナリ表の参照権限を設定できます。

データベース初期設定ユティリティのdefine system文のdicinfオペランド

データベース構成変更ユティリティのalter system文のdicinfオペランド

ディクショナリ表の参照権限を設定した場合に参照制限が掛かるディクショナリ表を次の表に示します。

表5‒7　ディクショナリ表の参照権限を設定した場合に参照制限が掛かるディクショナリ表

項番

ディクショナリ表の名称

参照権限を設定した場合

参照権限を設定しない場合

DBA権限を持つユーザ

DBA権限を持たないユーザ（一般ユーザ）

全ユーザ

1

SQL_TABLES

○

自分で定義したレコード型の情報だけを参照できます。

○

2

SQL_COLUMNS

○

自分で定義したレコード型の構成要素の情報だけを参照できます。

○

3

SQL_INDEXES

○

自分で定義したレコード型のインデクスの情報だけを参照できます。

○

4

SQL_TABLE_PRIVILEGES

○

自分で定義したレコード型の情報だけを参照できます。

○

5

SQL_DIV_TABLE

○

自分で定義したレコード型の情報だけを参照できます。

○

6

SQL_INDEX_COLINF

○

自分で定義したレコード型のインデクスの情報だけを参照できます。

○

7

SQL_DIV_INDEX

○

自分で定義したレコード型のインデクスの情報だけを参照できます。

○

8

SQL_SDB_DB

○

○

○

9

SQL_SDB_DB_VIEW

○

○

○

10

SQL_SDB_STORAGE_DB

○

○

○

11

SQL_SDB_NAME_CODE

○

○

○

12

SQL_SDB_DIR

○

○

○

（凡例）

○：すべての列を参照できます。

注

上記の表には，一部のディクショナリ表だけを記載しています。そのほかのディクショナリ表の参照権限については，マニュアル「HiRDB Version 9 システム運用ガイド」の「ディクショナリ表の参照権限を設定するには」を参照してください。

5.17　スキーマの追加，削除

ここでは，スキーマの追加手順と削除手順について説明します。

5.17.1　スキーマの追加

スキーマの追加手順を例題形式で説明します。

例題

新規ユーザ（認可識別子USER003）を追加し，USER003のスキーマを定義します。

ユーザ（USER003）を追加して権限を与える

 GRANT CONNECT TO USER003 IDENTIFIED BY HIRDB003
 GRANT SCHEMA TO USER003

GRANT文でユーザ（USER003）を追加し，CONNECT権限およびスキーマ定義権限を与えます。

この作業はDBA権限を持つユーザが実行します。

スキーマを定義する

 CREATE SCHEMA AUTHORIZATION USER003

CREATE SCHEMA文でスキーマを定義します。

この作業はユーザ（USER003）が実行します。

これでユーザ（USER003）がデータベースを定義できます。

5.17.2　スキーマの削除

スキーマを削除する場合，SDBデータベースの定義削除を行う必要があります。定義削除後，HiRDBを再起動する必要があるため，「5.6　SDBデータベースの定義追加，定義変更，または定義削除（HiRDBの再起動を必要とする場合）」で説明している手順に従ってSDBデータベースの定義削除をしてください。

スキーマを削除する場合は，「5.6.3(5)　SDBデータベースの定義追加，定義変更，または定義削除を行う」で説明している操作を，次に示すように実施してください。

スキーマの削除手順を例題形式で説明します。

例題

ユーザ（認可識別子USER003）が所有しているスキーマを削除します。

SDBデータベースの定義削除を行う

 pdsdbdef -i /usr/control_def_file

pdsdbdefコマンドで*DELETE DIRECTORY文および*DELETE DICTIONARY文を実行し，削除対象のスキーマが所有するSDBデータベースのSDBディレクトリ情報およびSDBディクショナリ情報を削除します。

*DELETE DIRECTORY文および*DELETE DICTIONARY文を実行する場合は，pdsdbdefコマンドの実行時に-iオプションの指定が必要になります。-iオプションを指定しないと，pdsdbdefコマンドの実行がエラーになります。

注意事項

SDBディレクトリ情報およびSDBディクショナリ情報を削除する際は，必ず*DELETE DIRECTORY文を先に実行してください。

スキーマを削除する

 DROP SCHEMA AUTHORIZATION USER003

DROP SCHEMA文でスキーマを削除します。

この作業はユーザ（USER003）が実行するか，またはDBA権限を持つユーザが実行します。

参考

スキーマを削除する際，そのスキーマのSDBディレクトリ情報とSDBディクショナリ情報が残っていると，DROP SCHEMA文がエラーになります。

5.18　データベースの回復

RDエリアが障害閉塞した場合，pdrstrコマンドでRDエリアを回復する必要があります。ここでは，障害閉塞したRDエリアを回復して業務を再開するまでの手順について説明します。

5.18.1　データベース回復の流れ

障害閉塞したRDエリアを回復して業務を再開するまでの流れを次の図に示します。

図5‒19　障害閉塞したRDエリアを回復して業務を再開するまでの流れ

(1)　SDBディレクトリ情報ファイルの再作成要否

次に示す2つの条件を満たす場合は，SDBディレクトリ情報ファイルを再作成する必要があります。

回復対象のRDエリアにシステム用RDエリア※1がある

バックアップ取得時点からpdrstrコマンドを実行する直前までの間に，次に示すどれかの操作をしている

HiRDB/SD定義ユティリティ（pdsdbdef）の次に示す操作

・*ENTRY DIRECTORY文によるSDBディレクトリ情報の追加

・*ALTER DIRECTORY文によるSDBディレクトリ情報の変更

・*DELETE DIRECTORY文によるSDBディレクトリ情報の削除

データベース回復ユティリティ（pdrstr）によるRDエリアの回復操作

データベース構成変更ユティリティ（pdmod）の次に示す操作

・expand rdarea文によるRDエリアの拡張

・initialize rdarea文によるRDエリアの再初期化※2

・alter rdarea文によるRDエリアの属性変更

・replicate rdarea文によるRDエリアのレプリカ定義

・define copy rdarea文によるRDエリアの構成情報複写

・recast rdarea文によるRDエリアの統合

pddbchgコマンドによるカレントRDエリアの変更操作

注※1

マスタディレクトリ用RDエリア，データディクショナリ用RDエリア，またはデータディレクトリ用RDエリアのどれかを回復した場合が該当します。

注※2

initialize rdarea文にRDエリア名だけを指定したRDエリアの再初期化の場合（RDエリアの属性やファイル構成を変更していない場合）は，SDBディレクトリ情報ファイルを再作成する必要はありません。

SDBディレクトリ情報ファイルのバックアップを取得している場合，そのファイルを配布することもできますが，間違ったSDBディレクトリ情報ファイルを配布するおそれもあるため，SDBディレクトリ情報ファイルは再作成することを推奨します。

(2)　データベース回復の概要

「5.18.2　例題1（全RDエリアをバックアップ取得時点に回復する場合）」以降で，代表的なデータベースの回復手順の例をケース別に説明しています。データベースの回復手順の参照先一覧を次の表に示します。この表から該当する例題を選択してください。

表5‒8　データベースの回復手順の参照先一覧

データベース回復時の条件

参照先

データベースをバックアップ取得時点に回復する

全RDエリアを回復する

「5.18.2　例題1（全RDエリアをバックアップ取得時点に回復する場合）」

回復対象RDエリアにマスタディレクトリ用RDエリアを含む

「5.18.3　例題2（システム用RDエリアとユーザ用RDエリアをバックアップ取得時点に回復する場合）」

回復対象RDエリアにマスタディレクトリ用RDエリアを含まない

「5.18.4　例題3（マスタディレクトリ用RDエリアを除くRDエリアをバックアップ取得時点に回復する場合）」

データベースを最新の同期点に回復する，または任意の同期点に回復する※

全RDエリアを回復する

「5.18.5　例題4（全RDエリアを最新の同期点に回復する場合）」

回復対象RDエリアにマスタディレクトリ用RDエリアを含む

「5.18.6　例題5（システム用RDエリアとユーザ用RDエリアを最新の同期点に回復する場合）」

回復対象RDエリアにマスタディレクトリ用RDエリアを含まない

「5.18.7　例題6（マスタディレクトリ用RDエリアを除くRDエリアを最新の同期点に回復する場合）」

注

上記に示す例題は，SDBディレクトリ情報ファイルの再作成が必要な場合の例題です。SDBディレクトリ情報ファイルの再作成が必要ない場合のデータベースの回復手順については，マニュアル「HiRDB Version 9 システム運用ガイド」の「データベースをバックアップ取得時点に回復する方法」または「データベースを最新の同期点に回復する方法」を参照してください。

例題の説明は，マニュアル「HiRDB Version 9 システム運用ガイド」の「データベース回復の概要」を理解していることを前提にしています。

注※

例題では最新の同期点に回復する手順を説明していますが，任意の同期点に回復する場合も手順は同じになります。ただし，任意の同期点に回復する場合は，pdrstrコマンドの-Tオプションで回復する時刻を指定します。任意の同期点への回復については，マニュアル「HiRDB Version 9 システム運用ガイド」の「バックアップ取得時点以降の任意の同期点（範囲指定の回復）」を参照してください。

なお，次に示すデータベースの回復方法の例題は，ここでは説明していません。

差分バックアップを使用したデータベースの回復

pdcopyコマンド以外で取得したバックアップを使用したデータベースの回復

これらのデータベースの回復方法については，マニュアル「HiRDB Version 9 システム運用ガイド」の「差分バックアップ機能使用時のデータベースの回復方法」または「pdcopyコマンド以外でバックアップを取得した場合の回復方法」を参照してください。

アンロードログファイルを使用してデータベースを回復する場合の注意事項

アンロードログファイルを使用してデータベースを回復した場合，データベースの回復が完了したRDエリアのバックアップを必ず取得してください。バックアップを取得しないと，そのあとにこのRDエリアで障害が発生したときにRDエリアを回復できなくなります。

回復対象のRDエリアにマスタディレクトリ用RDエリアが含まれる場合，pdstart -rコマンドでHiRDBを開始して，pdrstrコマンドでマスタディレクトリ用RDエリアを回復する必要があります。最新の同期点または任意の同期点に回復をする場合は，いったんマスタディレクトリ用RDエリアを単独で回復してください。その後，マスタディレクトリ用RDエリア以外のRDエリアを回復してください。

インナレプリカ機能を使用したデータベースの回復方法

インナレプリカ機能を使用したデータベースの回復方法については，マニュアル「インナレプリカ機能 HiRDB Staticizer Option Version 9」の「インナレプリカグループ内のRDエリアのバックアップと回復」を参照してください。

5.18.2　例題1（全RDエリアをバックアップ取得時点に回復する場合）

例題

システム用RDエリアを含む全RDエリアをバックアップ取得時点に回復します。

例題中のコマンドおよびコマンドのオプションの詳細については，マニュアル「HiRDB Version 9 コマンドリファレンス」を参照してください。

(1)　HiRDBを正常終了する

 pdstop

pdstopコマンドでHiRDBを正常終了します。正常終了できない場合は，pdstop -fコマンドで強制終了してください。

(2)　HiRDBを開始する

 pdstart -r

pdstart -rコマンドでHiRDBを開始します。マスタディレクトリ用RDエリアを回復する場合は，pdstart -rコマンドでHiRDBを開始する必要があります。

系切り替え機能を使用している場合で，HiRDBの開始と同時に共有リソース（共有ディスク，IPアドレスなど）の活性化を行うときは，pdstart -r -tコマンドを実行してください。

(3)　RDエリアを回復する

 pdrstr -m /rdarea/mast/mast01 -b /pdcopy/backup01 -a

pdrstrコマンドで全RDエリアをバックアップ取得時点に回復します。

［オプションの説明］

-m：マスタディレクトリ用RDエリアの先頭のHiRDBファイル名を指定します。

-b：バックアップファイル名を指定します。

-a：全RDエリアの回復を指定します。

(4)　HiRDBを終了する

 pdstop

pdstopコマンドでHiRDBをいったん終了します。pdstart -rコマンドでHiRDBを開始した場合，pdcopyコマンドおよびpdrstrコマンド以外は実行できません。そのため，HiRDBをいったん終了させる必要があります。

(5)　HiRDBを正常開始する

 pdstart

pdstartコマンドでHiRDBを正常開始します。

注意事項

(1)のときにHiRDBが正常終了していない場合は（HiRDBが異常終了した，HiRDBを強制終了したなど），ステータスファイルを初期化してからHiRDBを開始してください。ステータスファイルを初期化すると，HiRDBの開始モードが正常開始になります。

ステータスファイルを初期化するには，pdstsrmコマンドでステータスファイルをいったん削除してから，pdstsinitコマンドでステータスファイルを再作成します。

(6)　SDBディレクトリ情報ファイルを再作成して配布する

 pdsdbdef /usr/control_def_file

pdsdbdefコマンドで，SDBディレクトリ情報ファイルを再作成して全ユニット（高速系切り替え機能を使用している場合は待機系ユニットも含む）に配布します。SDBディレクトリ情報ファイルの配布方法の詳細については，「5.8.1　SDBディレクトリ情報ファイルを作成して配布する場合」を参照してください。

(7)　HiRDBを正常終了する

 pdstop

pdstopコマンドでHiRDBを正常終了します。

(8)　pd_structured_shmpool_dicsizeオペランドの指定値を変更する

次に示す場合は，システム共通定義のpd_structured_shmpool_dicsizeオペランドの指定値を変更してください。

SDBディレクトリ情報の合計長が，pd_structured_shmpool_dicsizeオペランドの指定値を超えている場合

SDBディレクトリ情報の合計長が，pd_structured_shmpool_dicsizeオペランドの指定値に比べてかなり小さい場合

SDBディレクトリ情報の合計長は，(6)でpdsdbdefコマンドを実行した際に出力されるKFPB61231-Iメッセージ（sizeに表示されます）で確認できます。

(9)　HiRDBを正常開始する

 pdstart

pdstartコマンドでHiRDBを正常開始します。

(10)　全ユニットのSDBディレクトリ情報が一致していることを確認する

pdsdbarc -cコマンドを実行して，SDBディレクトリ情報の最終更新日時のチェックを行い，全ユニットのSDBディレクトリ情報が一致していることを確認してください。

チェックの結果，問題がある場合は，全ユニットに同じSDBディレクトリ情報ファイルが配布されていません。この場合，「(6)　SDBディレクトリ情報ファイルを再作成して配布する」の作業から再実行してください。

5.18.3　例題2（システム用RDエリアとユーザ用RDエリアをバックアップ取得時点に回復する場合）

例題

次に示すRDエリアをバックアップ取得時点に回復します。

マスタディレクトリ用RDエリア（rdmast）

データディレクトリ用RDエリア（rddir）

データディクショナリ用RDエリア（rddic）

レコードを格納しているユーザ用RDエリア（rdarea01）

インデクスを格納しているユーザ用RDエリア（rdarea02）

注意事項

「5.5　データベースのバックアップの取得」の「表5-2　同時にバックアップを取得する必要があるRDエリア」に示すRDエリアについて，同期を取って回復する必要があります。

例題中のコマンドおよびコマンドのオプションの詳細については，マニュアル「HiRDB Version 9 コマンドリファレンス」を参照してください。

(1)　HiRDBを正常終了する

 pdstop

pdstopコマンドでHiRDBを正常終了します。正常終了できない場合は，pdstop -fコマンドで強制終了してください。

(2)　HiRDBを開始する

 pdstart -r

pdstart -rコマンドでHiRDBを開始します。マスタディレクトリ用RDエリアを回復する場合は，pdstart -rコマンドでHiRDBを開始する必要があります。

系切り替え機能を使用している場合で，HiRDBの開始と同時に共有リソース（共有ディスク，IPアドレスなど）の活性化を行うときは，pdstart -r -tコマンドを実行してください。

(3)　RDエリアを回復する

 pdrstr -m /rdarea/mast/mast01 -b /pdcopy/backup01
 -r rdmast,rddir,rddic,rdarea01,rdarea02

pdrstrコマンドでシステム用RDエリア（rdmast，rddir，rddic）とユーザ用RDエリア（rdarea01，rdarea02）をバックアップ取得時点に回復します。

［オプションの説明］

-m：マスタディレクトリ用RDエリアの先頭のHiRDBファイル名を指定します。

-b：バックアップファイル名を指定します。

-r：回復対象のRDエリア名を指定します。

(4)　HiRDBを終了する

 pdstop

pdstopコマンドでHiRDBをいったん終了します。pdstart -rコマンドでHiRDBを開始した場合，pdcopyコマンドおよびpdrstrコマンド以外は実行できません。そのため，HiRDBをいったん終了させる必要があります。

このあと，SDBディレクトリ情報ファイルを再作成して，全ユニットに配布します。再作成および配布の手順は，「5.18.2　例題1（全RDエリアをバックアップ取得時点に回復する場合）」の「5.18.2(5)　HiRDBを正常開始する」以降の手順と同じです。

5.18.4　例題3（マスタディレクトリ用RDエリアを除くRDエリアをバックアップ取得時点に回復する場合）

例題

次に示すRDエリアをバックアップ取得時点に回復します。

データディレクトリ用RDエリア（rddir）

データディクショナリ用RDエリア（rddic）

レコードを格納しているユーザ用RDエリア（rdarea01）

インデクスを格納しているユーザ用RDエリア（rdarea02）

注意事項

「5.5　データベースのバックアップの取得」の「表5-2　同時にバックアップを取得する必要があるRDエリア」に示すRDエリアについて，同期を取って回復する必要があります。

例題中のコマンドおよびコマンドのオプションの詳細については，マニュアル「HiRDB Version 9 コマンドリファレンス」を参照してください。

(1)　RDエリアを閉塞，クローズ状態にする

 pdhold -r rddir,rddic,rdarea01,rdarea02 -c

回復対象のRDエリアをpdholdコマンドで閉塞，クローズ状態にします。

(2)　RDエリアを回復する

 pdrstr -m /rdarea/mast/mast01 -b /pdcopy/backup01
 -r rddir,rddic,rdarea01,rdarea02

pdrstrコマンドでRDエリアをバックアップ取得時点に回復します。

［オプションの説明］

-m：マスタディレクトリ用RDエリアの先頭のHiRDBファイル名を指定します。

-b：バックアップファイル名を指定します。

-r：回復対象のRDエリア名を指定します。

(3)　RDエリアの閉塞を解除し，オープン状態にする

 pdrels -r rddir,rddic,rdarea01,rdarea02 -o

pdrelsコマンドで，回復したRDエリアの閉塞を解除し，オープン状態にします。

注意事項

以降の作業から回復作業が完了するまで，業務を停止してください。

(4)　SDBディレクトリ情報ファイルを再作成して配布する

 pdsdbdef /usr/control_def_file

pdsdbdefコマンドで，SDBディレクトリ情報ファイルを再作成して全ユニット（高速系切り替え機能を使用している場合は待機系ユニットも含む）に配布します。SDBディレクトリ情報ファイルの配布方法の詳細については，「5.8.1　SDBディレクトリ情報ファイルを作成して配布する場合」を参照してください。

(5)　HiRDBを正常終了する

 pdstop

pdstopコマンドでHiRDBを正常終了します。

(6)　pd_structured_shmpool_dicsizeオペランドの指定値を変更する

次に示す場合は，システム共通定義のpd_structured_shmpool_dicsizeオペランドの指定値を変更してください。

SDBディレクトリ情報の合計長が，pd_structured_shmpool_dicsizeオペランドの指定値を超えている場合

SDBディレクトリ情報の合計長が，pd_structured_shmpool_dicsizeオペランドの指定値に比べてかなり小さい場合

SDBディレクトリ情報の合計長は，(4)でpdsdbdefコマンドを実行した際に出力されるKFPB61231-Iメッセージ（sizeに表示されます）で確認できます。

(7)　HiRDBを正常開始する

 pdstart

pdstartコマンドでHiRDBを正常開始します。

(8)　全ユニットのSDBディレクトリ情報が一致していることを確認する

pdsdbarc -cコマンドを実行して，SDBディレクトリ情報の最終更新日時のチェックを行い，全ユニットのSDBディレクトリ情報が一致していることを確認してください。

チェックの結果，問題がある場合は，全ユニットに同じSDBディレクトリ情報ファイルが配布されていません。この場合，「(4)　SDBディレクトリ情報ファイルを再作成して配布する」の作業から再実行してください。

5.18.5　例題4（全RDエリアを最新の同期点に回復する場合）

例題

システム用RDエリアを含む全RDエリアを障害発生直前の最新の同期点に回復します。

例題中のコマンドおよびコマンドのオプションの詳細については，マニュアル「HiRDB Version 9 コマンドリファレンス」を参照してください。

(1)　HiRDBを正常終了する

 pdstop

pdstopコマンドでHiRDBを正常終了します。正常終了できない場合は，pdstop -fコマンドで強制終了してください。

(2)　HiRDBを開始する

 pdstart -r

pdstart -rコマンドでHiRDBを開始します。マスタディレクトリ用RDエリアを回復する場合は，pdstart -rコマンドでHiRDBを開始する必要があります。

系切り替え機能を使用している場合で，HiRDBの開始と同時に共有リソース（共有ディスク，IPアドレスなど）の活性化を行うときは，pdstart -r -tコマンドを実行してください。

(3)　全RDエリアをバックアップ取得時点に回復する

 pdrstr -m /rdarea/mast/mast01 -b /pdcopy/backup01 -a

pdrstrコマンドで全RDエリアをバックアップ取得時点に回復します。

［オプションの説明］

-m：マスタディレクトリ用RDエリアの先頭のHiRDBファイル名を指定します。

-b：バックアップファイル名を指定します。

-a：全RDエリアの回復を指定します。

(4)　全RDエリアを最新の同期点に回復する

 pdrstr -m /rdarea/mast/mast01 -d /unld/unldlog -w /tmp/sortwork -a

pdrstrコマンドで，マスタディレクトリ用RDエリアを最新の同期点に回復します。

［オプションの説明］

-m：マスタディレクトリ用RDエリアの先頭のHiRDBファイル名を指定します。

-d：アンロードログファイルが格納されているディレクトリ名を指定します。

-w：ソート用ワークディレクトリ名を指定します。

-a：全RDエリアを回復対象とする指定です。

(5)　HiRDBを終了する

 pdstop

pdstopコマンドでHiRDBをいったん終了します。pdstart -rコマンドでHiRDBを開始した場合，pdcopyコマンドおよびpdrstrコマンド以外は実行できません。そのため，HiRDBをいったん終了させる必要があります。

(6)　HiRDBを正常開始する

 pdstart

pdstartコマンドでHiRDBを正常開始します。

注意事項

(1)のときにHiRDBが正常終了していない場合は（HiRDBが異常終了した，HiRDBを強制終了したなど），ステータスファイルを初期化してからHiRDBを開始してください。ステータスファイルを初期化すると，HiRDBの開始モードが正常開始になります。

ステータスファイルを初期化するには，pdstsrmコマンドでステータスファイルをいったん削除してから，pdstsinitコマンドでステータスファイルを再作成します。

(7)　SDBディレクトリ情報ファイルを再作成して配布する

 pdsdbdef /usr/control_def_file

pdsdbdefコマンドで，SDBディレクトリ情報ファイルを再作成して全ユニット（高速系切り替え機能を使用している場合は待機系ユニットも含む）に配布します。SDBディレクトリ情報ファイルの配布方法の詳細については，「5.8.1　SDBディレクトリ情報ファイルを作成して配布する場合」を参照してください。

(8)　HiRDBを正常終了する

 pdstop

pdstopコマンドでHiRDBを正常終了します。

(9)　pd_structured_shmpool_dicsizeオペランドの指定値を変更する

次に示す場合は，システム共通定義のpd_structured_shmpool_dicsizeオペランドの指定値を変更してください。

SDBディレクトリ情報の合計長が，pd_structured_shmpool_dicsizeオペランドの指定値を超えている場合

SDBディレクトリ情報の合計長が，pd_structured_shmpool_dicsizeオペランドの指定値に比べてかなり小さい場合

SDBディレクトリ情報の合計長は，(10)でpdsdbdefコマンドを実行した際に出力されるKFPB61231-Iメッセージ（sizeに表示されます）で確認できます。

(10)　HiRDBを正常開始する

 pdstart

pdstartコマンドでHiRDBを正常開始します。

(11)　全ユニットのSDBディレクトリ情報が一致していることを確認する

pdsdbarc -cコマンドを実行して，SDBディレクトリ情報の最終更新日時のチェックを行い，全ユニットのSDBディレクトリ情報が一致していることを確認してください。

チェックの結果，問題がある場合は，全ユニットに同じSDBディレクトリ情報ファイルが配布されていません。この場合，「(7)　SDBディレクトリ情報ファイルを再作成して配布する」の作業から再実行してください。

5.18.6　例題5（システム用RDエリアとユーザ用RDエリアを最新の同期点に回復する場合）

例題

次に示すRDエリアを最新の同期点に回復します。

マスタディレクトリ用RDエリア（rdmast）

データディレクトリ用RDエリア（rddir）

データディクショナリ用RDエリア（rddic）

レコードを格納しているユーザ用RDエリア（rdarea01）

インデクスを格納しているユーザ用RDエリア（rdarea02）

例題中のコマンドおよびコマンドのオプションの詳細については，マニュアル「HiRDB Version 9 コマンドリファレンス」を参照してください。

(1)　HiRDBを正常終了する

 pdstop

pdstopコマンドでHiRDBを正常終了します。正常終了できない場合は，pdstop -fコマンドで強制終了してください。

(2)　HiRDBを開始する

 pdstart -r

pdstart -rコマンドでHiRDBを開始します。マスタディレクトリ用RDエリアを回復する場合は，pdstart -rコマンドでHiRDBを開始する必要があります。

系切り替え機能を使用している場合で，HiRDBの開始と同時に共有リソース（共有ディスク，IPアドレスなど）の活性化を行うときは，pdstart -r -tコマンドを実行してください。

(3)　RDエリアを最新の同期点に回復する

 pdrstr -m /rdarea/mast/mast01 -b /pdcopy/backup01 -d /unld/unldlog
 -w /tmp/sortwork -r rdmast,rddir,rddic,rdarea01,rdarea02

pdrstrコマンドでマスタディレクトリ用RDエリアを最新の同期点に回復します。

［オプションの説明］

-m：マスタディレクトリ用RDエリアの先頭のHiRDBファイル名を指定します。

-b：バックアップファイル名を指定します。

-d：アンロードログファイルが格納されているディレクトリ名を指定します。

-w：ソート用ワークディレクトリ名を指定します。

-r：回復対象のRDエリア名を指定します。

(4)　HiRDBを終了する

 pdstop

pdstopコマンドでHiRDBをいったん終了します。pdstart -rコマンドでHiRDBを開始した場合，pdcopyコマンドおよびpdrstrコマンド以外は実行できません。そのため，HiRDBをいったん終了させる必要があります。

(5)　HiRDBを正常開始する

 pdstart

pdstartコマンドでHiRDBを正常開始します。

注意事項

(1)のときにHiRDBが正常終了していない場合は（HiRDBが異常終了した，HiRDBを強制終了したなど），ステータスファイルを初期化してからHiRDBを開始してください。ステータスファイルを初期化すると，HiRDBの開始モードが正常開始になります。

ステータスファイルを初期化するには，pdstsrmコマンドでステータスファイルをいったん削除してから，pdstsinitコマンドでステータスファイルを再作成します。

このあと，SDBディレクトリ情報ファイルを再作成して，全ユニットに配布します。再作成および配布の手順は，「5.18.5　例題4（全RDエリアを最新の同期点に回復する場合）」の「5.18.5(7)　SDBディレクトリ情報ファイルを再作成して配布する」以降の手順と同じです。

5.18.7　例題6（マスタディレクトリ用RDエリアを除くRDエリアを最新の同期点に回復する場合）

例題

次に示すRDエリアを最新の同期点に回復します。

データディレクトリ用RDエリア（rddir）

データディクショナリ用RDエリア（rddic）

レコードを格納しているユーザ用RDエリア（rdarea01）

インデクスを格納しているユーザ用RDエリア（rdarea02）

例題中のコマンドおよびコマンドのオプションの詳細については，マニュアル「HiRDB Version 9 コマンドリファレンス」を参照してください。

(1)　RDエリアを閉塞，クローズ状態にする

 pdhold -r rddir,rddic,rdarea01,rdarea02 -c

回復対象のRDエリアをpdholdコマンドで閉塞，クローズ状態にします。

(2)　RDエリアを回復する

 pdrstr -m /rdarea/mast/mast01 -b /pdcopy/backup01 -d /unld/unldlog
 -w /tmp/sortwork -r rddir,rddic,rdarea01,rdarea02

pdrstrコマンドでRDエリアを最新の同期点に回復します。

［オプションの説明］

-m：マスタディレクトリ用RDエリアの先頭のHiRDBファイル名を指定します。

-b：バックアップファイル名を指定します。

-d：アンロードログファイルが格納されているディレクトリ名を指定します。

-w：ソート用ワークディレクトリ名を指定します。

-r：回復対象のRDエリア名を指定します。

(3)　RDエリアの閉塞を解除し，オープン状態にする

 pdrels -r rddir,rddic,rdarea01,rdarea02 -o

pdrelsコマンドで，回復したRDエリアの閉塞を解除し，オープン状態にします。

なお，回復作業が完了するまで，業務を停止してください。

(4)　SDBディレクトリ情報ファイルを再作成して配布する

 pdsdbdef /usr/control_def_file

pdsdbdefコマンドで，SDBディレクトリ情報ファイルを再作成して全ユニット（高速系切り替え機能を使用している場合は待機系ユニットも含む）に配布します。SDBディレクトリ情報ファイルの配布方法の詳細については，「5.8.1　SDBディレクトリ情報ファイルを作成して配布する場合」を参照してください。

(5)　HiRDBを正常終了する

 pdstop

pdstopコマンドでHiRDBを正常終了します。

(6)　pd_structured_shmpool_dicsizeオペランドの指定値を変更する

次に示す場合は，システム共通定義のpd_structured_shmpool_dicsizeオペランドの指定値を変更してください。

SDBディレクトリ情報の合計長が，pd_structured_shmpool_dicsizeオペランドの指定値を超えている場合

SDBディレクトリ情報の合計長が，pd_structured_shmpool_dicsizeオペランドの指定値に比べてかなり小さい場合

SDBディレクトリ情報の合計長は，(4)でpdsdbdefコマンドを実行した際に出力されるKFPB61231-Iメッセージ（sizeに表示されます）で確認できます。

(7)　HiRDBを正常開始する

 pdstart

pdstartコマンドでHiRDBを正常開始します。

(8)　全ユニットのSDBディレクトリ情報が一致していることを確認する

pdsdbarc -cコマンドを実行して，SDBディレクトリ情報の最終更新日時のチェックを行い，全ユニットのSDBディレクトリ情報が一致していることを確認してください。

チェックの結果，問題がある場合は，全ユニットに同じSDBディレクトリ情報ファイルが配布されていません。この場合，「(4)　SDBディレクトリ情報ファイルを再作成して配布する」の作業から再実行してください。

5.19　SDBデータベースへのデータロード

5.19.1　SDBデータベースへのデータロード手順

ここでは，pdsdblodコマンドを使用して，SDBデータベースにデータロードする手順について説明します。

(1)　全ユニットのSDBディレクトリ情報が一致しているかどうかを確認する

 pdsdbarc -a

pdsdbarcコマンドでSDBディレクトリ情報に関する情報を表示し，全ユニットの常用常駐領域のSDBディレクトリ情報が一致しているかどうかを確認してください。確認方法については，「5.9　全ユニットのSDBディレクトリ情報が一致しているか確認する方法」を参照してください。

確認した結果，SDBディレクトリ情報が不一致の場合は，pdsdblodコマンドを実行できません。

(2)　レコード格納用RDエリア，インデクス格納用RDエリアをコマンド閉塞，クローズ状態にする

pdhold -cコマンドで，レコード格納用RDエリアおよびインデクス格納用RDエリアをコマンド閉塞かつクローズ状態にします。

 pdhold -r FMB01,FMBIDX -c

［オプションの説明］

-r：対象のRDエリア名を指定します。

-c：RDエリアをクローズ状態にする場合に指定するオプションです。

参考

RDエリアの状態は，pddblsコマンドで確認できます。

なお，初期データロードの場合は，RDエリアのバックアップを取得する必要はありません。そのため，(2)〜(4)の作業は必要ありません。

(3)　レコード格納用RDエリア，インデクス格納用RDエリアのバックアップを取得する

pdcopyコマンドで，レコード格納用RDエリアおよびインデクス格納用RDエリアのバックアップを取得します。

 pdcopy -m /HiRDB/rdarea/rdmast/rdmast00 -M r -r FMB01,FMBIDX
 -b /bkdir/bup01 -p /bkdir/list01

［オプションの説明］

-m：マスタディレクトリ用RDエリアの先頭HiRDBファイル名を指定します。

-M：バックアップ取得モードを指定します。

-r：対象のRDエリア名を指定します。

-b：バックアップファイル名を指定します。

-p：pdcopyコマンドの処理結果リストの出力先を指定します。

(4)　レコード格納用RDエリア，インデクス格納用RDエリアの閉塞を解除し，オープン状態にする

pdrels -oコマンドで，レコード格納用RDエリアおよびインデクス格納用RDエリアの閉塞を解除し，オープン状態にします。

 pdrels -r FMB01,FMBIDX -o

［オプションの説明］

-r：対象RDエリア名を指定します。

-o：RDエリアをオープン状態にする場合に指定するオプションです。

(5)　データロードを実行する

pdsdblodコマンドでデータロードを実行します。

 pdsdblod /usr/control_lod_file

pdsdblod制御文を指定した制御文ファイルの名称を絶対パスまたは相対パスで指定します。初期データロード，追加データロードの制御文については，「12.3　pdsdblod制御文」で説明します。

(6)　レコード格納用RDエリア，インデクス格納用RDエリアをコマンド閉塞，クローズ状態にする

pdhold -cコマンドで，レコード格納用RDエリアおよびインデクス格納用RDエリアをコマンド閉塞かつクローズ状態にします。

 pdhold -r FMB01,FMBIDX -c

［オプションの説明］

-r：対象のRDエリア名を指定します。

-c：RDエリアをクローズ状態にする場合に指定するオプションです。

(7)　レコード格納用RDエリア，インデクス格納用RDエリアのバックアップを取得する

pdcopyコマンドで，レコード格納用RDエリアおよびインデクス格納用RDエリアのバックアップを取得します。

 pdcopy -m /HiRDB/rdarea/rdmast/rdmast00 -M r -r FMB01,FMBIDX
 -b /bkdir/bup02 -p /bkdir/list02

［オプションの説明］

-m：マスタディレクトリ用RDエリアの先頭HiRDBファイル名を指定します。

-M：バックアップ取得モードを指定します。

-r：対象のRDエリア名を指定します。

-b：バックアップファイル名を指定します。

-p：pdcopyコマンドの処理結果リストの出力先を指定します。

(8)　レコード格納用RDエリア，インデクス格納用RDエリアの閉塞を解除し，オープン状態にする

pdrels -oコマンドで，レコード格納用RDエリアおよびインデクス格納用RDエリアの閉塞を解除し，オープン状態にします。

 pdrels -r FMB01,FMBIDX -o

［オプションの説明］

-r：対象RDエリア名を指定します。

-o：RDエリアをオープン状態にする場合に指定するオプションです。

5.20　インデクスの再作成

5.20.1　インデクスの再作成手順

ここでは，pdsdblodコマンドを使用して，インデクスを再作成する手順について説明します。

(1)　全ユニットのSDBディレクトリ情報が一致しているかどうかを確認する

 pdsdbarc -a

pdsdbarcコマンドでSDBディレクトリ情報に関する情報を表示し，全ユニットの常用常駐領域のSDBディレクトリ情報が一致しているかどうかを確認してください。確認方法については，「5.9　全ユニットのSDBディレクトリ情報が一致しているか確認する方法」を参照してください。

確認した結果，SDBディレクトリ情報が不一致の場合は，pdsdblodコマンドを実行できません。

(2)　レコード格納用RDエリア，インデクス格納用RDエリアをコマンド閉塞，クローズ状態にする

pdhold -cコマンドで，レコード格納用RDエリアおよびインデクス格納用RDエリアをコマンド閉塞かつクローズ状態にします。

 pdhold -r FMB01,FMBIDX -c

［オプションの説明］

-r：対象のRDエリア名を指定します。

-c：RDエリアをクローズ状態にする場合に指定するオプションです。

参考

RDエリアの状態は，pddblsコマンドで確認できます。

(3)　レコード格納用RDエリア，インデクス格納用RDエリアのバックアップを取得する

pdcopyコマンドで，レコード格納用RDエリアおよびインデクス格納用RDエリアのバックアップを取得します。

 pdcopy -m /HiRDB/rdarea/rdmast/rdmast00 -M r -r FMB01,FMBIDX
 -b /bkdir/bup01 -p /bkdir/list01

［オプションの説明］

-m：マスタディレクトリ用RDエリアの先頭HiRDBファイル名を指定します。

-M：バックアップ取得モードを指定します。

-r：対象のRDエリア名を指定します。

-b：バックアップファイル名を指定します。

-p：pdcopyコマンドの処理結果リストの出力先を指定します。

(4)　レコード格納用RDエリア，インデクス格納用RDエリアの閉塞を解除し，オープン状態にする

pdrels -oコマンドで，レコード格納用RDエリアおよびインデクス格納用RDエリアの閉塞を解除し，オープン状態にします。

 pdrels -r FMB01,FMBIDX -o

［オプションの説明］

-r：対象のRDエリア名を指定します。

-o：RDエリアをオープン状態にする場合に指定するオプションです。

(5)　インデクスを再作成する

pdsdblodコマンドでインデクスを再作成します。

 pdsdblod /usr/control_lod_file

pdsdblod制御文を指定した制御文ファイルの名称を絶対パスまたは相対パスで指定します。インデクスの再作成の制御文については，「12.3　pdsdblod制御文」で説明します。

(6)　レコード格納用RDエリア，インデクス格納用RDエリアをコマンド閉塞，クローズ状態にする

pdhold -cコマンドで，レコード格納用RDエリアおよびインデクス格納用RDエリアをコマンド閉塞かつクローズ状態にします。

 pdhold -r FMB01,FMBIDX -c

［オプションの説明］

-r：対象のRDエリア名を指定します。

-c：RDエリアをクローズ状態にする場合に指定するオプションです。

(7)　レコード格納用RDエリア，インデクス格納用RDエリアのバックアップを取得する

pdcopyコマンドで，レコード格納用RDエリアおよびインデクス格納用RDエリアのバックアップを取得します。

 pdcopy -m /HiRDB/rdarea/rdmast/rdmast00 -M r -r FMB01,FMBIDX
 -b /bkdir/bup02 -p /bkdir/list02

［オプションの説明］

-m：マスタディレクトリ用RDエリアの先頭HiRDBファイル名を指定します。

-M：バックアップ取得モードを指定します。

-r：対象のRDエリア名を指定します。

-b：バックアップファイル名を指定します。

-p：pdcopyコマンドの処理結果リストの出力先を指定します。

(8)　レコード格納用RDエリア，インデクス格納用RDエリアの閉塞を解除し，オープン状態にする

pdrels -oコマンドで，レコード格納用RDエリアおよびインデクス格納用RDエリアの閉塞を解除し，オープン状態にします。

 pdrels -r FMB01,FMBIDX -o

［オプションの説明］

-r：対象RDエリア名を指定します。

-o：RDエリアをオープン状態にする場合に指定するオプションです。

5.21　障害が発生したときの対処方法

障害が発生したときの対処方法については，マニュアル「HiRDB Version 9 システム運用ガイド」の「障害が発生したときの対処方法」を参照してください。

更新可能なオンライン再編成の実行時に障害が発生したときの対処方法については，「5.23　障害が発生したときの対処方法（更新可能なオンライン再編成の実行時）【4V FMB】」を参照してください。

5.22　障害が発生したときの対処方法（pdsdblodコマンドの異常終了時）

ここでは，pdsdblodコマンドが異常終了した場合の対処方法について説明します。

5.22.1　エラー発生位置と対処コード

(1)　初期データロードの場合（更新可能なオンライン再編成の場合）【4V FMB】

初期データロード時にエラーが発生した場合の対処を次の表に示します。

表5‒9　初期データロード時にエラーが発生した場合の対処（更新可能なオンライン再編成の場合）

項番

エラー発生直前に出力されたメッセージ

リターンコード4の場合

リターンコード8の場合

リターンコード12の場合

RDエリアが閉塞していない場合

RDエリアが閉塞状態の場合

インデクス一括作成モードの場合

インデクス更新モードの場合

インデクス一括作成モードの場合

インデクス更新モードの場合

1

KFPB63000-I

pdsdblodコマンドの開始

−

手順2

−

−

手順7

手順7

2

KFPB63009-I

削除処理の終了

−

−

手順3

手順3

−

−

3

KFPB63010-I

データ格納処理の開始

−

−

手順3

手順3

手順7

手順7

4

KFPB63012-I

データ格納処理の終了

手順1

−

手順3

再実行不要

−

再実行不要

5

KFPB63036-I

インデクス一括作成の開始

−

−

手順3

−

−

−

6

KFPB63038-I

インデクス一括作成の開始※

−

−

手順3

−

手順7

−

7

KFPB63039-I

インデクス一括作成の終了※

−

−

手順3

−

手順7

−

8

KFPB63037-I

インデクス一括作成の終了

手順1

−

手順3

−

再実行不要

−

9

KFPB63042-I

追い付き反映キー対応表の登録処理の開始

−

−

手順6

手順6

−

−

10

KFPB63043-I

追い付き反映キー対応表の登録処理の終了

−

−

再実行不要

再実行不要

再実行不要

再実行不要

（凡例）−：なし

注※　「インデクス数×RDエリア数」分，メッセージが出力されます。

(2)　初期データロードの場合（更新可能なオンライン再編成以外の場合）

初期データロード時にエラーが発生した場合の対処を次の表に示します。

表5‒10　初期データロード時にエラーが発生した場合の対処（更新可能なオンライン再編成以外の場合）

項番

エラー発生直前に出力されたメッセージ

リターンコード4の場合

リターンコード8の場合

リターンコード12の場合

RDエリアが閉塞していない場合

RDエリアが閉塞状態の場合

インデクス一括作成モードの場合

インデクス更新モードの場合

インデクス一括作成モードの場合

インデクス更新モードの場合

1

KFPB63000-I

pdsdblodコマンドの開始

−

手順2

−

−

手順4

手順4

2

KFPB63009-I

削除処理の終了

−

−

手順3

手順3

−

−

3

KFPB63010-I

データ格納処理の開始

−

−

手順3

手順3

手順4

手順4

4

KFPB63012-I

データ格納処理の終了

手順1

−

手順5

再実行不要

−

再実行不要

5

KFPB63036-I

インデクス一括作成の開始

−

−

−

−

−

−

6

KFPB63038-I

インデクス一括作成の開始※

−

−

手順5

−

手順4

−

7

KFPB63039-I

インデクス一括作成の終了※

−

−

手順5

−

手順4

−

8

KFPB63037-I

インデクス一括作成の終了

手順1

−

再実行不要

−

再実行不要

−

9

KFPB63042-I

追い付き反映キー対応表の登録処理の開始

−

−

−

−

−

−

10

KFPB63043-I

追い付き反映キー対応表の登録処理の終了

−

−

−

−

−

−

（凡例）−：なし

注※　「インデクス数×RDエリア数」分，メッセージが出力されます。

(3)　追加データロードの場合【4V FMB，SD FMB】

追加データロード時にエラーが発生した場合の対処を次の表に示します。

表5‒11　追加データロード時にエラーが発生した場合の対処

項番

エラー発生直前に出力されたメッセージ

リターンコード4の場合

リターンコード8の場合

リターンコード12の場合

RDエリアが閉塞していない場合※1

RDエリアが閉塞状態の場合

インデクス一括作成モードの場合

インデクス更新モードの場合

インデクス一括作成モードの場合

インデクス更新モードの場合

1

KFPB63000-I

pdsdblodコマンドの開始

−

手順2

−

−

−

−

2

KFPB63010-I

データ格納処理の開始

−

−

手順8

手順8

手順9

手順9

3

KFPB63044-I

インデクスの抽出開始

−

−

手順8

−

手順9

手順9

4

KFPB63046-I

インデクスの抽出開始※2

−

−

手順8

−

手順9

手順9

5

KFPB63047-I

インデクスの抽出終了※2

−

−

手順8

−

手順9

手順9

6

KFPB63045-I

インデクスの抽出終了

−

−

手順8

−

手順9

手順9

7

KFPB63012-I

データ格納処理の終了

手順10

−

手順10

再実行不要

−

再実行不要

8

KFPB63036-I

インデクス一括作成の開始

−

−

手順10

−

−

−

9

KFPB63038-I

インデクス一括作成の開始※2

−

−

手順10

−

手順9

−

10

KFPB63039-I

インデクス一括作成の終了※2

−

−

手順10

−

手順9

−

11

KFPB63037-I

インデクス一括作成の終了

手順10

−

再実行不要

−

再実行不要

−

（凡例）−：なし

注※1

ロールバックしたあとに追加データロード前の状態に戻っていることを確認します。

注※2

「インデクス数×RDエリア数」分，メッセージが出力されます。

(4)　インデクスの再作成の場合

インデクスの再作成時にエラーが発生した場合の対処を次の表に示します。

表5‒12　インデクスの再作成時にエラーが発生した場合の対処

項番

エラー発生直前に出力されたメッセージ

リターンコード4の場合

リターンコード8の場合

リターンコード12の場合

RDエリアが閉塞していない場合

RDエリアが閉塞状態の場合

1

KFPB63000-I

pdsdblodコマンドの開始

−

手順2

−

−

2

KFPB63044-I

インデクスの抽出開始

−

−

手順8

手順9

3

KFPB63046-I

インデクスの抽出開始※

−

−

手順8

手順9

4

KFPB63047-I

インデクスの抽出終了※

−

−

手順8

手順9

5

KFPB63045-I

インデクスの抽出終了

−

−

手順8

手順9

6

KFPB63036-I

インデクス一括作成の開始

−

−

手順8

−

7

KFPB63038-I

インデクス一括作成の開始※

−

−

手順8

手順4

8

KFPB63039-I

インデクス一括作成の終了※

−

−

手順8

手順4

9

KFPB63037-I

インデクス一括作成の終了

−

−

再実行不要

再実行不要

（凡例）−：なし

注※　「インデクス数×RDエリア数」分，メッセージが出力されます。

(5)　フォーマットライトの場合【4V DAM】

フォーマットライト時にエラーが発生した場合の対処を次の表に示します。

表5‒13　フォーマットライト時にエラーが発生した場合の対処

項番

エラー発生直前に出力されたメッセージ

リターンコード4の場合

リターンコード8の場合

リターンコード12の場合

RDエリアが閉塞していない場合

RDエリアが閉塞状態の場合

1

KFPB63000-I

pdsdblodコマンドの開始

−

手順2

−

手順4

2

KFPB63009-I

削除処理の終了

−

−

手順3

−

3

KFPB63010-I

データ格納処理の開始

−

−

手順3

手順4

4

KFPB63012-I

データ格納処理の終了

−

−

再実行不要

再実行不要

（凡例）−：なし

5.22.2　エラーの対処方法

pdsdblodコマンドが異常終了した場合の対処手順を説明します。

(1)　手順1の対処方法

不正な入力データを修正し，pdsdblodコマンドを再実行します。

手順

入力データを修正します。

environment文のpurgeオペランドにyesを指定して，pdsdblodコマンドを再実行します。

(2)　手順2の対処方法

エラーとなった制御文を修正し，pdsdblodコマンドを再実行します。

手順

エラーとなった制御文を修正します。

pdsdblodコマンドを再実行します。

(3)　手順3の対処方法

出力されたメッセージを参照し，エラー原因を取り除いたあとにpdsdblodコマンドを再実行します。

手順

出力されたメッセージを参照し，エラー原因を取り除いてください。

environment文のpurgeオペランドにyesを指定して，pdsdblodコマンドを再実行します。

(4)　手順4の対処方法

RDエリアを再初期化してからpdsdblodコマンドを再実行します。

手順

出力されたメッセージを参照して，エラー原因を取り除いてください。

pdcloseコマンドで，RDエリアをクローズします。

pdmodコマンドで，RDエリアを再初期化します。

pdrelsコマンドで，RDエリアの閉塞を解除し，オープンします。

pdsdblodコマンドを再実行します。

(5)　手順5の対処方法

次のどちらかの手順を実行してください。

(a)　格納済みのデータを削除してpdsdblodコマンドを再実行する

手順

出力されたメッセージを参照して，エラー原因を取り除いてください。

environment文のpurgeオペランドにyesを指定して，pdsdblodコマンドを再実行します。

(b)　インデクスを再作成する

手順

出力されたメッセージを参照して，エラー原因を取り除いてください。

エラーが発生したインデクスに対して，インデクスの再作成の制御文を作成してください。

pdsdblodコマンドを実行します。

上記の手順の1.〜3.を，エラーが発生した以降のインデクス数分繰り返し実行してください。

(6)　手順6の対処方法

追い付き反映キー対応表を初期化してから，pdsdblodコマンドを再実行します。

手順

出力されたメッセージを参照して，エラー原因を取り除いてください。

追い付き反映キー対応表をpdsdborcrtコマンドで初期化します。

environment文のpurgeオペランドにyesを指定して，pdsdblodコマンドを再実行します。

更新可能なオンライン再編成の場合，エラーが発生したRDエリアがあるバックエンドサーバ内の，更新可能なオンライン再編成の対象となった全RDエリアに対して，上記の手順の3.を繰り返してください。

(7)　手順7の対処方法

RDエリアを再初期化してから，pdsdblodコマンドを再実行します。

手順

出力されたメッセージを参照して，エラー原因を取り除いてください。

追い付き反映キー対応表をpdsdborcrtコマンドで初期化します。

pdcloseコマンドでRDエリアをクローズします。

pdmodコマンドでRDエリアを再初期化します。

pdrelsコマンドで，RDエリアの閉塞を解除し，オープン状態にします。

pdsdblodコマンドを再実行します。

更新可能なオンライン再編成の場合，エラーが発生したRDエリアがあるバックエンドサーバ内の，更新可能なオンライン再編成の対象となった全RDエリアに対して，上記の手順の3.〜6.を繰り返してください。

(8)　手順8の対処方法

出力されたメッセージを参照して，エラー原因を取り除いてから，pdsdblodコマンドを再実行します。

手順

出力されたメッセージを参照して，エラー原因を取り除いてください。

pdsdblodコマンドを再実行します。

(9)　手順9の対処方法

RDエリアを追加データロード実行直前の状態に回復してから，pdsdblodコマンドを再実行します。

手順

出力されたメッセージを参照して，エラー原因を取り除いてください。

pdcloseコマンドで，障害閉塞しているRDエリアをクローズします。

pdrstrコマンドでRDエリアを回復します。

pdrelsコマンドで，RDエリアの閉塞を解除し，オープン状態にします。

pdsdblodコマンドを再実行します。

(10)　手順10の対処方法

次のどちらかの手順を実行してください。

ただし，キー値が重複した場合，(b)の方法では対処できないため，(a)の方法で対処してください。

(a)　RDエリアを追加データロード実行直前の状態に回復してからpdsdblodコマンドを再実行する

手順

出力されたメッセージを参照して，エラー原因を取り除いてください。

pdholdコマンドで，RDエリアを閉塞し，クローズします。

pdrstrコマンドでRDエリアを回復します。

pdrelsコマンドで，RDエリアの閉塞を解除し，オープン状態にします。

pdsdblodコマンドを再実行します。

(b)　インデクスを再作成する

手順

出力されたメッセージを参照して，エラー原因を取り除いてください。

エラーが発生したインデクスに対して，インデクスの再作成の制御文を作成します。

pdsdblodコマンドを実行します。

上記の手順の1.〜3.を，エラーが発生した以降のインデクス数分繰り返し実行してください。

5.23　障害が発生したときの対処方法（更新可能なオンライン再編成の実行時）【4V FMB】

ここでは，更新可能なオンライン再編成の実行中に障害が発生した場合の対処方法について説明します。

5.23.1　障害発生時の対処の流れ

障害発生時の対処の流れについては，マニュアル「インナレプリカ機能 HiRDB Staticizer Option Version 9」の「更新可能なオンライン再編成実行時の障害」の「障害対策の流れ」を参照してください。

5.23.2　システムログとオペランドの設定

更新可能なオンライン再編成中は，追い付き反映処理を行うためにシステムログに情報を残しています。詳細については，マニュアル「インナレプリカ機能 HiRDB Staticizer Option Version 9」の「システムログとオペランドの設定」を参照してください。

5.23.3　システムログファイルの障害回復

システムログファイルに障害が発生した場合は，マニュアル「インナレプリカ機能 HiRDB Staticizer Option Version 9」の「システムログファイルの障害回復」を参照して対処してください。

5.23.4　更新可能なオンライン再編成の再編成状態の確認

障害が発生した場合，更新可能なオンライン再編成の再編成状態を次の手順で確認してください。

手順

pdls -d orgコマンドを実行して，追い付き反映処理の状態を確認してください。詳細については，「5.13.8　追い付き反映処理の状態を確認したい場合」を参照してください。

pdls -d orgコマンドの実行結果のSTATUS欄に表示された追い付き反映処理の状態を確認してください。READYの場合は，次の手順に進んでください。READY以外の場合は，5.に進んでください。

pddblsコマンドを実行して，カレントRDエリアを確認してください。

ペアボリュームの状態を確認してください。日立ディスクアレイサブシステムを使用している場合は，pairdisplayコマンドで確認します。そのほかの製品のミラーリング機能を使用している場合，使用しているミラーリング機能のマニュアルを参照して，ペア状態を確認してください。

「表5-14　更新可能なオンライン再編成状態の確認方法」の判定条件を参照して，該当する再編成状態を確認してください。

「5.23.5　障害発生時の対処方法」を参照して，該当する障害の対処を実施してください。

表5‒14　更新可能なオンライン再編成状態の確認方法

判定要素

判定結果

オリジナルRDエリアの状態

（pddbls）

レプリカRDエリアの状態

（pddbls）

カレントRDエリア

（pddbls）

追い付き状態

（pdls）

ペアボリューム状態

再編成状態

OPEN

HOLD(CMD)CLOSE

マスタDB

NONE

ペア状態

NONE（pdorbeginコマンドの失敗，または未実施）

HOLD(ORG)

HOLD(ORG)

マスタDB

READY

ペア状態

READY1（ボリュームペアの解除失敗，または未実施）

HOLD(ORG)

HOLD(ORG)

マスタDB

READY

ペア解除状態

READY2（pdorchgコマンドの失敗，または未実施）

HOLD(ORG)

HOLD(ORG)

レプリカDB

READY

ペア解除状態

READY3（再編成の失敗，またはpdorendコマンド未実施）

HOLD(ORG)

HOLD(ORG)

レプリカDB

REFLEC

ペア解除状態

REFLEC（追い付き処理の失敗）

HOLD(ORG)

HOLD(ORG)

レプリカDB

SYNC

ペア解除状態

SYNC（レプリカからオリジナルRDエリアへの業務切り替え処理の失敗）

注

オリジナルまたはレプリカのボリューム障害時は，障害側がHOLDになります。

判定結果の再編成状態から障害発生時点が次の図のように特定できます。

図5‒20　更新可能なオンライン再編成の障害発生時点

5.23.5　障害発生時の対処方法

更新可能なオンライン再編成中に障害が発生したときの対処方法について，障害のケースごとに説明します。説明中に出てくる再編成状態とは，「表5-14　更新可能なオンライン再編成状態の確認方法」で確認した再編成状態のことです。

なお，再編成状態が，NONE，READY1，またはREADY2の場合は，pdorbegin -uコマンドで更新可能なオンライン再編成の操作を取り消すことができます。

また，障害発生の原因がシステムログファイル障害の場合は，システムログファイルの障害を回復したあとに，ここで説明している対処を実施してください。

(1)　コマンドまたはユニットが異常終了した場合

コマンドまたはユニットが異常終了した場合の対処方法を次の表に示します。再編成状態によって対処方法が異なります。

表5‒15　コマンドまたはユニットが異常終了した場合の対処方法

項番

再編成状態

対処方法

1

NONE

更新可能なオンライン再編成を続行する場合は，障害原因を取り除いたあとに，次の操作から再実行してください。

「5.13.4(1)　RDエリアをオンライン再編成閉塞にする（pdorbeginコマンド）」

2

READY1

更新可能なオンライン再編成を続行する場合は，使用しているミラーリング機能のマニュアルを参照して，対処してください。

3

READY2

更新可能なオンライン再編成を続行する場合は，障害原因を取り除いたあとに，次の操作から再実行してください。

「5.13.4(3)　カレントRDエリアを切り替える（pdorchgコマンド）」

4

READY3

更新可能なオンライン再編成を続行する場合

障害原因を取り除いたあとに，次の操作から再実行してください。

・「5.13.4(5)　オリジナルRDエリアのレコードをアンロードする（pdsdbrogコマンド）」

注意事項

pdsdblodコマンドによるデータロードが正常終了している場合（KFPB63012-Iメッセージが出力されている場合）は，次の操作から再実行してください。

・「5.13.4(6)　オリジナルRDエリアにレコードをデータロードする（pdsdblodコマンド）」

ただし，アンロードデータファイルを削除してしまった場合は，データロードの再実行ができないため，項番5または項番6の対処方法を実施してください。

すでに追い付き反映キー対応表へのデータ登録処理が開始されているpdsdblodコマンドがある場合（KFPB63042-Iメッセージが出力されている場合），pdsdblodコマンドの再実行前に追い付き反映キー対応表を初期化してください。この場合，初期化した追い付き反映キー対応表があるBES内の，更新可能なオンライン再編成の対象RDエリアに対して，pdsdblodコマンドを再実行する必要があります。

5

更新可能なオンライン再編成を中止する場合（HiRDBを停止できない場合）

レプリカRDエリアの更新データをオリジナルRDエリアに反映し，オリジナルRDエリアで通常運用を再開します。HiRDBは停止しませんが，トランザクションを制限する必要があります。手順については，「5.23.6　対処の詳細手順（その1）」を参照してください。

6

更新可能なオンライン再編成を中止する場合（HiRDBを停止できる場合）

レプリカRDエリアの更新データをオリジナルRDエリアに反映し，オリジナルRDエリアで業務を再開します。手順については，「5.23.7　対処の詳細手順（その2）」を参照してください。

7

REFLEC

更新可能なオンライン再編成を続行する場合

障害原因を取り除くか，またはカレントRDエリアへのアクセスを制限するかしたあとに，次の操作から再実行してください。

・「5.13.4(9)　追い付き反映処理を実行する（pdorendコマンド）」

更新可能なオンライン再編成を中止する場合（HiRDBを停止できない場合）

対処方法は，項番5と同じです。

更新可能なオンライン再編成を中止する場合（HiRDBを停止できる場合）

対処方法は，項番6と同じです。

8

SYNC

更新可能なオンライン再編成を続行する場合

障害原因を取り除いたあとに，次の操作から再実行してください。

・「5.13.4(9)　追い付き反映処理を実行する（pdorendコマンド）」

更新可能なオンライン再編成を中止する場合（HiRDBを停止できない場合）

対処方法は，項番5と同じです。

更新可能なオンライン再編成を中止する場合（HiRDBを停止できる場合）

対処方法は，項番6と同じです。

(2)　正系ボリューム障害が発生した場合

正系ボリューム障害が発生した場合の対処方法を次の表に示します。再編成状態によって対処方法が異なります。

表5‒16　正系ボリューム障害が発生した場合の対処方法

項番

再編成状態

対処方法

1

NONE

更新可能なオンライン再編成を続行する場合の対処手順については，「5.23.8　対処の詳細手順（その3）」を参照してください。

2

READY1

更新可能なオンライン再編成を続行する場合は，使用しているミラーリング機能のマニュアルを参照して，対処してください。

3

READY2

更新可能なオンライン再編成を続行する場合の対処手順については，「5.23.8　対処の詳細手順（その3）」を参照してください。

4

READY3

更新可能なオンライン再編成を続行する場合の対処手順については，「5.23.9　対処の詳細手順（その4）」を参照してください。

5

REFLEC

更新可能なオンライン再編成を続行する場合

対処手順については，「5.23.10　対処の詳細手順（その5）」を参照してください。

この場合，追い付き反映処理は最初から反映し直しとなります。

また，pd_log_org_reflected_logpoint=keep，pd_log_org_no_standby_file_opr=stopを指定し，システムログ反映開始ポイントを消去していないことが前提条件となります。

更新可能なオンライン再編成を中止し，レプリカRDエリアで通常運用を行う場合

pdorend -uコマンドを実行して，追い付き反映処理を中止してください。

6

SYNC

更新可能なオンライン再編成を中止し，レプリカRDエリアで通常運用を行うことになります。pdorend -uコマンドを実行して，追い付き反映処理を中止してください。

(3)　副系ボリューム障害が発生した場合

副系ボリューム障害が発生した場合の対処方法を次の表に示します。再編成状態によって対処方法が異なります。

表5‒17　副系ボリューム障害が発生した場合の対処方法

項番

再編成状態

対処方法

1

NONE

更新可能なオンライン再編成を続行する場合は，使用しているミラーリング機能のマニュアルを参照して，対処してください。障害原因を取り除いたあとに，次の操作から再実行してください。

「5.13.4(1)　RDエリアをオンライン再編成閉塞にする（pdorbeginコマンド）」

2

READY1

更新可能なオンライン再編成を続行する場合は，次の手順で対処してください。

pdorbegin -uコマンドで更新可能なオンライン再編成の操作を取り消します。詳細については，「5.13.9　更新可能なオンライン再編成の操作を取り消したい場合」を参照してください。

副系ボリュームを回復します。回復方法については，使用しているミラーリング機能のマニュアルを参照してください。

次の操作から，更新可能なオンライン再編成を再実行してください。

・「5.13.4(1)　RDエリアをオンライン再編成閉塞にする（pdorbeginコマンド）」

3

READY2

4

READY3

更新可能なオンライン再編成をいったん中止します。レプリカRDエリアの更新データをオリジナルRDエリアに反映し，オリジナルRDエリアで通常運用を再開します。手順については，「5.23.11　対処の詳細手順（その6）」を参照してください。

5

REFLEC

6

SYNC

障害原因を取り除いたあとに，次の操作から再実行してください。

「5.13.4(9)　追い付き反映処理を実行する（pdorendコマンド）」

(4)　構成情報の複写漏れによってディレクトリ管理情報が不正となった場合

構成情報の複写漏れによってディレクトリ管理情報が不正となった場合の対処方法を次の表に示します。再編成状態によって対処方法が異なります。

表5‒18　構成情報の複写漏れによってディレクトリ管理情報が不正となった場合の対処方法

項番

再編成状態

対処方法

1

READY1

更新可能なオンライン再編成を続行する場合は，次の手順で対処してください。

pdorbegin -uコマンドで更新可能なオンライン再編成の操作を取り消します。詳細については，「5.13.9　更新可能なオンライン再編成の操作を取り消したい場合」を参照してください。

レプリカRDエリアをpdhold -cコマンドで閉塞かつクローズ状態にします。

pdmodコマンドのdefine copy rdarea文で，レプリカRDエリアにオリジナルRDエリアの構成情報を複写します。

次の操作から，更新可能なオンライン再編成を再実行してください。

・「5.13.4(1)　RDエリアをオンライン再編成閉塞にする（pdorbeginコマンド）」

2

READY2

3

READY3

更新可能なオンライン再編成を続行する場合の対処手順については，「5.23.12　対処の詳細手順（その7）」を参照してください。

(5)　追い付き反映キー対応表に障害が発生した場合

追い付き反映キー対応表に障害が発生した場合の対処方法を次の表に示します。

表5‒19　追い付き反映キー対応表に障害が発生した場合の対処方法

項番

障害発生のタイミング

障害原因

対処方法

1

pdsdblodコマンドの実行中

追い付き反映キー対応表を格納するRDエリアで容量不足が発生した場合

更新可能なオンライン再編成を続行する場合は，次の手順で対処してください。

なお，説明中のRDエリアとは，追い付き反映キー対応表を格納しているRDエリアのことです。

pdrels -oコマンドでRDエリアの閉塞を解除し，オープン状態にします。

pdmodコマンドでRDエリアを再初期化して容量を拡張します。

pdsdborcrt -k initコマンドで，追い付き反映キー対応表を初期化します。

追い付き反映キー対応表の中間ファイルを削除します。

再初期化したRDエリアがあるサーバの更新可能なオンライン再編成は，データロードから再実行する必要があります。サーバ内の更新可能なオンライン再編成の対象RDエリアに対して，pdsdblodコマンドでデータロードを実行してください。

なお，pdsdblodコマンドの入力データファイルとするアンロードデータファイルを削除してしまった場合は，データロードを実行できません。この場合，項番2の対処を実施してください。

このあと，次の操作から再実行してください。

「5.13.4(7)　オリジナルRDエリアのバックアップを取得する（pdcopyコマンド）」

2

更新可能なオンライン再編成を中止する場合は，レプリカRDエリアのデータをオリジナルRDエリアに反映し，オリジナルRDエリアで業務を再開します。手順については，「表5-15　コマンドまたはユニットが異常終了した場合の対処方法」の項番5または項番6と同じです。

3

上記以外の追い付き反映キー対応表へのアクセス障害が発生した場合

更新可能なオンライン再編成を続行することはできません。レプリカRDエリアの更新情報をオリジナルRDエリアに反映し，オリジナルRDエリアで業務を再開します。手順については，「表5-15　コマンドまたはユニットが異常終了した場合の対処方法」の項番5または項番6と同じです。

4

pdorendコマンドの実行中

追い付き反映キー対応表を格納するRDエリアで容量不足が発生した場合

更新可能なオンライン再編成を続行する場合は，次の手順で対処してください。

なお，説明中のRDエリアとは，追い付き反映キー対応表を格納しているRDエリアのことです。

pdrels -oコマンドでRDエリアの閉塞を解除し，オープン状態にします。

pdmodコマンドでRDエリアを拡張します。

このあと，次の操作から再実行してください。

「5.13.4(9)　追い付き反映処理を実行する（pdorendコマンド）」

5

更新可能なオンライン再編成を中止する場合は，レプリカRDエリアの更新情報をオリジナルRDエリアに反映し，オリジナルRDエリアで業務を再開します。手順については，「表5-15　コマンドまたはユニットが異常終了した場合の対処方法」の項番5または項番6と同じです。

6

上記以外の追い付き反映キー対応表へのアクセス障害が発生した場合

更新可能なオンライン再編成を続行することはできません。レプリカRDエリアの更新情報をオリジナルRDエリアに反映し，オリジナルRDエリアで業務を再開します。手順については，「表5-15　コマンドまたはユニットが異常終了した場合の対処方法」の項番5または項番6と同じです。

5.23.6　対処の詳細手順（その1）

対処手順を次に示します。

(1)　追い付き反映処理を取り消す

pdorend -uコマンドで，追い付き反映処理を取り消します。

 pdorend -s bes1 -u

［オプションの説明］

-s：更新可能なオンライン再編成の対象RDエリアがあるBESを指定します。

-u：追い付き反映処理を取り消す場合に指定するオプションです。

(2)　レプリカRDエリアを参照可能バックアップ閉塞にする

pdhold -bコマンドで，レプリカRDエリアを参照可能バックアップ閉塞にします。

 pdhold -r FMB01_1,FMBIDX_1 -b

［オプションの説明］

-r：更新可能なオンライン再編成の対象RDエリア（BES内のレプリカRDエリア）を指定します。

-b：RDエリアの状態を参照可能バックアップ閉塞にする場合に指定するオプションです。

この例では，RDエリアの構成は次のようになっています。

FMB01_1：レコード型を格納しているレプリカRDエリア

FMBIDX_1：インデクスを格納しているレプリカRDエリア

(3)　レプリカRDエリアのバックアップを取得する

pdcopyコマンドで，レプリカRDエリアのバックアップを取得します。

 pdcopy -m /HiRDB/rdarea/rdmast/rdmast00 -M r -r FMB01,FMBIDX
 -q 1 -b /bkdir/bup04 -p /bkdir/list04

［オプションの説明］

-m：マスタディレクトリ用RDエリアの先頭HiRDBファイル名を指定します。

-M：バックアップ取得モードを指定します。

-r：オリジナルRDエリア名を指定します。

-q：バックアップ対象のレプリカRDエリアの世代番号を指定します。

-b：バックアップファイル名を指定します。

-p：pdcopyコマンドの処理結果リストの出力先を指定します。

(4)　レプリカRDエリアの閉塞を解除する

pdrelsコマンドで，レプリカRDエリアの閉塞を解除します。

 pdrels -r FMB01,FMBIDX -q 1

［オプションの説明］

-r：オリジナルRDエリア名を指定します。

-q：レプリカRDエリアの世代番号を指定します。

(5)　オリジナルRDエリアをクローズ状態にする

オリジナルRDエリアの状態が障害閉塞の場合

pdcloseコマンドで，オリジナルRDエリアをクローズ状態にします。

 pdclose -r FMB01,FMBIDX

［オプションの説明］

-r：オリジナルRDエリア名を指定します。

オリジナルRDエリアの状態がオープン状態の場合

pdhold -cコマンドで，オリジナルRDエリアをコマンド閉塞かつクローズ状態にします。

 pdhold -r FMB01,FMBIDX -c

［オプションの説明］

-r：オリジナルRDエリア名を指定します。

-c：RDエリアをクローズ状態にする場合に指定するオプションです。

参考

RDエリアの状態は，pddblsコマンドで確認できます。

(6)　オリジナルRDエリアを回復する

pdrstrコマンドで，オリジナルRDエリアを回復します。

 pdrstr -m /HiRDB/rdarea/rdmast/rdmast00 -b /bkdir/bkup04
 -r FMB01,FMBIDX -q 0

［オプションの説明］

-m：マスタディレクトリ用RDエリアの先頭HiRDBファイル名を指定します。

-b：データロード後に取得したバックアップファイル※を指定します。

-r：オリジナルRDエリア名を指定します。

-q：回復対象のRDエリアの世代番号を指定します。

注※

「5.13.4(7)　オリジナルRDエリアのバックアップを取得する（pdcopyコマンド）」で取得したバックアップファイルを使用します。

(7)　オリジナルRDエリアの閉塞を解除し，オープン状態にする

pdrels -oコマンドで，オリジナルRDエリアの閉塞を解除し，オープン状態にします。

 pdrels -r FMB01,FMBIDX -o

［オプションの説明］

-r：オリジナルRDエリア名を指定します。

-o：RDエリアをオープン状態にする場合に指定するオプションです。

(8)　カレントRDエリアを切り替える

pddbchgコマンドで，カレントRDエリアをレプリカRDエリアからオリジナルRDエリアに切り替えます。

 pddbchg -r FMB01,FMBIDX -q 0

［オプションの説明］

-r：オリジナルRDエリア名を指定します。

-q：オリジナルRDエリアの世代番号を指定します。

5.23.7　対処の詳細手順（その2）

対処手順を次に示します。

(1)　追い付き反映処理を取り消す

pdorend -uコマンドで，追い付き反映処理を取り消します。

 pdorend -s bes1 -u

［オプションの説明］

-s：更新可能なオンライン再編成の対象RDエリアがあるBESを指定します。

-u：追い付き反映処理を取り消す場合に指定するオプションです。

(2)　レプリカRDエリアを参照可能バックアップ閉塞にする

pdhold -bコマンドで，レプリカRDエリアを参照可能バックアップ閉塞にします。

 pdhold -r FMB01_1,FMBIDX_1 -b

［オプションの説明］

-r：更新可能なオンライン再編成の対象RDエリア（BES内のレプリカRDエリア）を指定します。

-b：RDエリアの状態を参照可能バックアップ閉塞にする場合に指定するオプションです。

この例では，RDエリアの構成は次のようになっています。

FMB01_1：レコード型を格納しているレプリカRDエリア

FMBIDX_1：インデクスを格納しているレプリカRDエリア

(3)　カレントRDエリアを切り替える

pddbchgコマンドで，カレントRDエリアをレプリカRDエリアからオリジナルRDエリアに切り替えます。

 pddbchg -r FMB01,FMBIDX -q 0

［オプションの説明］

-r：オリジナルRDエリア名を指定します。

-q：オリジナルRDエリアの世代番号を指定します。

(4)　HiRDBを終了する

pdstopコマンドでHiRDBを終了します。

 pdstop

(5)　ペアボリュームを再同期する

ペアボリュームを再同期して，レプリカRDエリアの内容をオリジナルRDエリアに反映します。操作方法については，使用しているミラーリング機能のマニュアルを参照してください。日立ディスクアレイサブシステムを使用している場合は，最初にマニュアル「インナレプリカ機能 HiRDB Staticizer Option Version 9」の「日立ディスクアレイサブシステム使用時の注意事項および操作手順」を参照してください。

(6)　HiRDBを開始する

pdstartコマンドでHiRDBを開始します。

 pdstart

5.23.8　対処の詳細手順（その3）

対処手順を次に示します。

(1)　障害が発生したボリュームを交換する

障害が発生したボリュームを交換してください。

(2)　システムログをアンロードする

pdlogunldコマンドで，システムログをアンロードします。

 pdlogunld -d sys -s bes1 -g logfg01 -o /uldir/ulog01

［オプションの説明］

-d：システムログファイルに対する操作のため，sysを指定します。

-s：更新可能なオンライン再編成の対象RDエリアがあるBESを指定します。

-g：ログファイルグループ名を指定します。

-o：アンロードログファイル名を指定します。

(3)　オリジナルRDエリアを閉塞かつクローズ状態にする

pdhold -cコマンドで，オリジナルRDエリアを閉塞かつクローズ状態にします。

 pdhold -r FMB01,FMBIDX -c

［オプションの説明］

-r：オリジナルRDエリアを指定します。

-c：RDエリアをクローズ状態にする場合に指定するオプションです。

この例では，RDエリアの構成は次のようになっています。

FMB01：レコード型を格納しているオリジナルRDエリア

FMBIDX：インデクスを格納しているオリジナルRDエリア

(4)　オリジナルRDエリアを回復する

pdrstrコマンドで，オリジナルRDエリアを回復します。

 pdrstr -m /HiRDB/rdarea/rdmast/rdmast00 -b /bkdir/bkup00
 -l /uldir/ulog01 -r FMB01,FMBIDX -q 0

［オプションの説明］

-m：マスタディレクトリ用RDエリアの先頭HiRDBファイル名を指定します。

-b：アンロードする前に取得したバックアップファイル※を指定します。

-l：アンロードログファイルを指定します。

-r：オリジナルRDエリア名を指定します。

-q：回復対象のRDエリアの世代番号を指定します。

注※

「5.13.4(4)　オリジナルRDエリアのバックアップを取得する（pdcopyコマンド）」で取得したバックアップファイルを使用します。

(5)　オリジナルRDエリアの閉塞を解除し，オープン状態にする

pdrels -oコマンドで，オリジナルRDエリアの閉塞を解除し，オープン状態にします。

 pdrels -r FMB01,FMBIDX -o

［オプションの説明］

-r：オリジナルRDエリア名を指定します。

-o：RDエリアをオープン状態にする場合に指定するオプションです。

(6)　更新可能なオンライン再編成の操作を再開する

更新可能なオンライン再編成の操作を再開します。次の操作から再開してください。

「5.13.4(1)　RDエリアをオンライン再編成閉塞にする（pdorbeginコマンド）」

なお，再編成状態がREADY2の場合（「表5-16　正系ボリューム障害が発生した場合の対処方法」の項番3の場合）は，「5.13.4(1)　RDエリアをオンライン再編成閉塞にする（pdorbeginコマンド）」の操作を実施したあとのペアボリュームの解除は必要ありません。

5.23.9　対処の詳細手順（その4）

対処手順を次に示します。

(1)　障害が発生したボリュームを交換する

障害が発生したボリュームを交換してください。

(2)　システムログをアンロードする

pdlogunldコマンドで，システムログをアンロードします。

 pdlogunld -d sys -s bes1 -g logfg01 -o /uldir/ulog01

［オプションの説明］

-d：システムログファイルに対する操作のため，sysを指定します。

-s：更新可能なオンライン再編成の対象RDエリアがあるBESを指定します。

-g：ログファイルグループ名を指定します。

-o：アンロードログファイル名を指定します。

(3)　オリジナルRDエリアをクローズ状態にする

pdcloseコマンドで，オリジナルRDエリアをクローズ状態にします。

 pdclose -r FMB01,FMBIDX

［オプションの説明］

-r：オリジナルRDエリア名を指定します。

この例では，RDエリアの構成は次のようになっています。

FMB01：レコード型を格納しているオリジナルRDエリア

FMBIDX：インデクスを格納しているオリジナルRDエリア

(4)　オリジナルRDエリアを回復する

pdrstrコマンドで，オリジナルRDエリアを回復します。

 pdrstr -m /HiRDB/rdarea/rdmast/rdmast00 -b /bkdir/bkup01
 -l /uldir/ulog01 -r FMB01,FMBIDX -q 0

［オプションの説明］

-m：マスタディレクトリ用RDエリアの先頭HiRDBファイル名を指定します。

-b：アンロードする前に取得したバックアップファイル※を指定します。

-l：アンロードログファイルを指定します。

-r：オリジナルRDエリア名を指定します。

-q：回復対象のRDエリアの世代番号を指定します。

注※

「5.13.4(4)　オリジナルRDエリアのバックアップを取得する（pdcopyコマンド）」で取得したバックアップを使用します。

(5)　オリジナルRDエリアの閉塞を解除し，オープン状態にする

pdrels -oコマンドで，オリジナルRDエリアの閉塞を解除し，オープン状態にします。

 pdrels -r FMB01,FMBIDX -o

［オプションの説明］

-r：オリジナルRDエリア名を指定します。

-o：RDエリアをオープン状態にする場合に指定するオプションです。

(6)　更新可能なオンライン再編成の操作を再開する

更新可能なオンライン再編成の操作を再開します。次の操作から再開してください。

「5.13.4(5)　オリジナルRDエリアのレコードをアンロードする（pdsdbrogコマンド）」

5.23.10　対処の詳細手順（その5）

対処手順を次に示します。

(1)　障害が発生したボリュームを交換する

障害が発生したボリュームを交換してください。

(2)　RDエリアを閉塞かつクローズ状態にする

pdhold -cコマンドで，次のRDエリアを閉塞かつクローズ状態にします。

オリジナルRDエリア

追い付き反映キー対応表を格納しているRDエリア

追い付き反映キー対応表のインデクスを格納しているRDエリア

 pdhold -r FMB01,FMBIDX,RDCRT,RDIDX -c

［オプションの説明］

-r：閉塞かつクローズ状態にするRDエリアを指定します。

-c：RDエリアをクローズ状態にする場合に指定するオプションです。

この例では，RDエリアの構成は次のようになっています。

FMB01：レコード型を格納しているオリジナルRDエリア

FMBIDX：インデクスを格納しているオリジナルRDエリア

RDCRT：追い付き反映キー対応表を格納しているRDエリア

RDIDX：追い付き反映キー対応表のインデクスを格納しているRDエリア

(3)　オリジナルRDエリアを回復する

pdrstrコマンドで，オリジナルRDエリアを回復します。

 pdrstr -m /HiRDB/rdarea/rdmast/rdmast00 -b /bkdir/bkup02
 -r FMB01,FMBIDX -q 0

［オプションの説明］

-m：マスタディレクトリ用RDエリアの先頭HiRDBファイル名を指定します。

-b：データロード後に取得したバックアップファイル※を指定します。

-r：オリジナルRDエリア名を指定します。

-q：回復対象のRDエリアの世代番号を指定します。

注※

「5.13.4(7)　オリジナルRDエリアのバックアップを取得する（pdcopyコマンド）」で取得したバックアップを使用します。

(4)　追い付き反映キー対応表を格納しているRDエリアを回復する

pdrstrコマンドで，次のRDエリアを回復します。

追い付き反映キー対応表を格納しているRDエリア

追い付き反映キー対応表のインデクスを格納しているRDエリア

 pdrstr -m /HiRDB/rdarea/rdmast/rdmast00 -b /bkdir/bkup03
 -r RDCRT,RDIDX

［オプションの説明］

-m：マスタディレクトリ用RDエリアの先頭HiRDBファイル名を指定します。

-b：データロード後に取得したバックアップファイル※を指定します。

-r：回復対象のRDエリア名を指定します。

注※

「5.13.4(8)　追い付き反映キー対応表を格納しているRDエリアのバックアップを取得する（pdcopyコマンド）」で取得したバックアップを使用します。

(5)　RDエリアの閉塞を解除し，オープン状態にする

pdrels -oコマンドで，次のRDエリアの閉塞を解除し，オープン状態にします。

オリジナルRDエリア

追い付き反映キー対応表を格納しているRDエリア

追い付き反映キー対応表のインデクスを格納しているRDエリア

 pdrels -r FMB01,FMBIDX,RDCRT,RDIDX -o

［オプションの説明］

-r：閉塞を解除し，オープン状態にするRDエリア名を指定します。

-o：RDエリアをオープン状態にする場合に指定するオプションです。

(6)　追い付き反映処理を実行する（pdorendコマンド）

pdorendコマンドで，追い付き反映処理を実行します。

 pdorend -s bes1 -z

［オプションの説明］

-s：更新可能なオンライン再編成の対象RDエリアがあるBESを指定します。

-z：システムログ反映開始ポイントから追い付き反映処理を再実行する場合に指定するオプションです。

以降，次の操作から，更新可能なオンライン再編成の操作を再開してください。

「5.13.4(12)　ペアボリュームを再同期する」

なお，pd_lv_mirror_useオペランドにYを指定していない場合は，次の操作から，更新可能なオンライン再編成の操作を再開してください。

「5.13.4(10)　ファイルアクセスプロセスを停止する（pdpfreshコマンド）」

5.23.11　対処の詳細手順（その6）

対処手順を次に示します。

(1)　追い付き反映処理を取り消す

pdorend -uコマンドで，追い付き反映処理を取り消します。

 pdorend -s bes1 -u

［オプションの説明］

-s：更新可能なオンライン再編成の対象RDエリアがあるBESを指定します。

-u：追い付き反映処理を取り消す場合に指定するオプションです。

(2)　オリジナルRDエリアを閉塞かつクローズ状態にする

pdhold -cコマンドで，オリジナルRDエリアを閉塞かつクローズ状態にします。

 pdhold -r FMB01,FMBIDX -c

［オプションの説明］

-r：オリジナルRDエリアを指定します。

-c：RDエリアをクローズ状態にする場合に指定するオプションです。

この例では，RDエリアの構成は次のようになっています。

FMB01：レコード型を格納しているオリジナルRDエリア

FMBIDX：インデクスを格納しているオリジナルRDエリア

(3)　システムログをアンロードする

pdlogunldコマンドで，システムログをアンロードします。

 pdlogunld -d sys -s bes1 -g logfg02 -o /uldir/ulog01

［オプションの説明］

-d：システムログファイルに対する操作のため，sysを指定します。

-s：更新可能なオンライン再編成の対象RDエリアがあるBESを指定します。

-g：ログファイルグループ名を指定します。

-o：アンロードログファイル名を指定します。

(4)　オリジナルRDエリアを回復する

pdrstrコマンドで，オリジナルRDエリアを回復します。

アンロードする前に取得したバックアップファイルとレプリカRDエリアのシステムログを使用して，オリジナルRDエリアを障害発生直前の状態に回復します。

 pdrstr -m /HiRDB/rdarea/rdmast/rdmast00 -b /bkdir/bkup01
 -l /uldir/ulog01 -r FMB01,FMBIDX -q 0

［オプションの説明］

-m：マスタディレクトリ用RDエリアの先頭HiRDBファイル名を指定します。

-b：アンロードする前に取得したバックアップファイル※を指定します。

-l：アンロードログファイルを指定します。

-r：オリジナルRDエリア名を指定します。

-q：回復対象のRDエリアの世代番号を指定します。

注※

「5.13.4(4)　オリジナルRDエリアのバックアップを取得する（pdcopyコマンド）」で取得したバックアップファイルを使用します。

(5)　オリジナルRDエリアの閉塞を解除し，オープン状態にする

pdrels -oコマンドで，オリジナルRDエリアの閉塞を解除し，オープン状態にします。

 pdrels -r FMB01,FMBIDX -o

［オプションの説明］

-r：オリジナルRDエリア名を指定します。

-o：RDエリアをオープン状態にする場合に指定するオプションです。

(6)　カレントRDエリアを切り替える

pddbchgコマンドで，カレントRDエリアをレプリカRDエリアからオリジナルRDエリアに切り替えます。

 pddbchg -r FMB01,FMBIDX -q 0

［オプションの説明］

-r：オリジナルRDエリア名を指定します。

-q：オリジナルRDエリアの世代番号を指定します。

5.23.12　対処の詳細手順（その7）

対処手順を次に示します。

(1)　レプリカRDエリアをクローズ状態にする

レプリカRDエリアがクローズ状態でない場合，pdcloseコマンドでレプリカRDエリアをクローズ状態にします。

 pdclose -r FMB01,FMBIDX -q 1

［オプションの説明］

-r：オリジナルRDエリア名を指定します。

-q：レプリカRDエリアの世代番号を指定します。

参考

RDエリアの状態は，pddblsコマンドで確認できます。

この例では，RDエリアの構成は次のようになっています。

FMB01：レコード型を格納しているオリジナルRDエリア

FMBIDX：インデクスを格納しているオリジナルRDエリア

FMB01_1：レコード型を格納しているレプリカRDエリア

FMBIDX_1：インデクスを格納しているレプリカRDエリア

(2)　レプリカRDエリアを再初期化する

pdmodコマンドのinitialize rdarea文で，レプリカRDエリアを再初期化します。

 pdmod -a /usr/pdmod/initialize

［オプションの説明］

-a：pdmodコマンドの制御文ファイル名を指定します。制御文の内容を次に示します。

 initialize rdarea FMB01_1           ...1
     with reconstruction             ...2
     file name "/sdb/area0"          ...3
             initial 100 segments
     file name "/sdb/area1"          ...3
             initial 100 segments;

レプリカRDエリアを再初期化する指定です。

オリジナルRDエリアの構成と合わせるために指定します。

再初期化対象のレプリカRDエリアのHiRDBファイルシステム領域の名称とHiRDBファイルの名称を指定します。

レプリカRDエリアの構成情報が，オリジナルRDエリアの構成情報と一致するように制御文を作成してください。

(3)　ファイルアクセスプロセスを停止する

pd_lv_mirror_useオペランドにYを指定している場合，(3)の操作は必要ありません。

pdpfreshコマンドで，ファイルアクセスプロセスを停止します。

 pdpfresh -s bes1

［オプションの説明］

-s：更新可能なオンライン再編成の対象RDエリアがあるBESを指定します。

(4)　ペアボリュームを再同期する

ペアボリュームを再同期して，正系ボリュームの内容を副系ボリュームにコピーします。その後，ペア状態を解除します。

操作方法については，使用しているミラーリング機能のマニュアルを参照してください。日立ディスクアレイサブシステムを使用している場合は，最初にマニュアル「インナレプリカ機能 HiRDB Staticizer Option Version 9」の「日立ディスクアレイサブシステム使用時の注意事項および操作手順」を参照してください。

(5)　カレントRDエリアを切り替える（pdorchgコマンド）

pdorchgコマンドで，カレントRDエリアを切り替えてください。

 pdorchg -s bes1

［オプションの説明］

-s：更新可能なオンライン再編成の対象RDエリアがあるBESを指定します。

(6)　レプリカRDエリアの閉塞を解除し，オープン状態にする

pdrels -oコマンドで，レプリカRDエリアの閉塞を解除し，オープン状態にします。

 pdrels -ｒ FMB01_1,FMBIDX_1 -o

［オプションの説明］

-r：レプリカRDエリア名を指定します。

-o：RDエリアをオープン状態にする場合に指定するオプションです。

(7)　更新可能なオンライン再編成の操作を再開する

更新可能なオンライン再編成の操作を再開します。次の操作から再開してください。

「5.13.4(5)　オリジナルRDエリアのレコードをアンロードする（pdsdbrogコマンド）」

5.24　OSの時刻を変更する方法

OSの時刻を変更する方法については，マニュアル「HiRDB Version 9 システム運用ガイド」の「OSの時刻を変更する方法」を参照してください。

なお，OSの時刻を遅らせた場合，次に示す手順でSDBディレクトリ情報ファイルを再作成し，全ユニットに再配布してください。

手順

HiRDBを再起動します。

SDBディレクトリ情報ファイルを再作成し，全ユニットに再配布します。

HiRDBを再起動します。

なお，上記の操作の間は，トランザクションを静止化しておいてください。

注意事項

OSの時刻を遅らせた場合，それ以前のSDBディレクトリ情報ファイルは使用しないでください。

5.25　一連番号の監視

一連番号の監視とは，あらかじめ決めておいた監視値まで一連番号を割り当てたときに，一連番号が枯渇していることをメッセージで通知する機能です。

レコードの格納時に割り当てられる一連番号は，レコードの格納と削除を繰り返すうちに利用されない一連番号ができ，レコード数が少なくても割り当てられる一連番号の最大値に達して，レコードが格納できなくなってしまいます。割り当て済み一連番号と実際のレコード件数の関係を次の図に示します。

図5‒21　割り当て済み一連番号と実際のレコード件数の関係

一連番号を再利用することもできますが（SDBデータベース定義のSETOPTION句下のREUSE句にYESを指定），この場合，一連番号が再利用されるのは最後尾のレコードを削除した場合だけであり，それ以外のレコードを削除した場合は有効とはなりません。

レコードの格納と削除の繰り返しによって一連番号が枯渇した場合は，SDBデータベースを再編成することで解消できます。割り当て済みの一連番号を監視することで，SDBデータベースの再編成契機を判断できます。

一連番号の監視の概要を次の図に示します。

図5‒22　一連番号の監視の概要

［説明］

一連番号の監視は，SDBデータベース定義のSETOPTION句下のWARNING句，またはSDBOPTION句下のOCCURRENCE WARNING句で指定します。

一連番号の監視では，監視値（監視する一連番号使用比率）を3つまで指定できます。ここでは，監視する一連番号使用比率の小さい順に監視値1，監視値2，監視値3とします。

監視値に達するごとに一連番号の枯渇メッセージが出力されます。以降，一連番号の枯渇メッセージが出力されたかどうかの状態が内部的に管理されます。これを一連番号の枯渇メッセージの出力状態といいます。一連番号の枯渇メッセージの出力状態が内部的に管理されるため，レコードが格納されても，次の監視値に達するまでメッセージは出力されません。

一度に複数の監視値を超えた場合は，対応するメッセージがすべて出力されます。

なお，例えば監視値2までメッセージが出力されている状態でも，次に示す場合には，再度，監視値1（監視する一連番号使用比率のうち，いちばん小さい値）から監視されます。

HiRDBを正常開始，再開始，または強制開始した場合

HiRDBの再起動を必要としないSDBデータベースの定義追加または定義変更を行って，定義を更新した場合

次に示すRDエリアの場合

・クローズ状態のRDエリアをpdopenコマンド，またはpdrels -oコマンドでオープンした場合，そのRDエリア

・HiRDB/SDデータベース作成ユティリティ（pdsdblod）のenvironment文のpurgeオペランドにyesを指定して実行したRDエリア（インナレプリカ機能を使用したオンライン再編成の場合も含む）

・HiRDBをユニット単位に正常開始，再開始，または強制開始した場合，該当ユニット内のBESが管理するすべてのRDエリア

5.25.1　注意事項

レコードの一括削除またはレコードの削除を行っても，一連番号の枯渇メッセージの出力状態は変わりません。そのため，再度同一の一連番号で，一連番号の枯渇メッセージが出力されることはありません。

一連番号の監視に対する排他処理は行わないので，複数のトランザクションから同一RDエリアに対して，レコードの格納が同時に実行されると，同一のメッセージが複数回出力されることがあります。

5.25.2　レプリカRDエリアを使用する場合の運用

レプリカRDエリアを使用する場合の運用を次に示します。

(1)　更新可能なオンライン再編成でレプリカRDエリアを使用する場合【4V FMB】

更新可能なオンライン再編成では，レプリカRDエリアでの一連番号の枯渇を防ぐため，オリジナルRDエリアとレプリカRDエリアで，それぞれ一連番号の監視を行います。

更新可能なオンライン再編成でレプリカRDエリアを使用する場合の，一連番号の監視の運用について，次の図に示します。

図5‒23　更新可能なオンライン再編成でレプリカRDエリアを使用する場合の，一連番号の監視の運用

［説明］

オンライン運用中に一連番号を監視します。指定した監視値のうち，一連番号使用比率のいちばん大きい値に対応する一連番号の枯渇メッセージまで出力されると，以降，同一RDエリア（オリジナルRDエリア）ではメッセージは出力されません（一連番号の監視完了となります）。

pdorbeginコマンドで更新可能なオンライン再編成を開始します。

pdorchgコマンドでカレントRDエリアをオリジナルRDエリアからレプリカRDエリアに切り替える直前，一連番号の枯渇メッセージの出力状態がオリジナルRDエリアからレプリカRDエリアにコピーされます。

この例の場合，3.の直前でオリジナルRDエリアに対する一連番号の枯渇メッセージの出力が完了しています（一連番号の監視完了の状態となっています）。レプリカRDエリアには，その状態が引き継がれるため，メッセージは出力されません。

SDBデータベースの再編成をすると，一連番号が再利用されるようになります。このため，データロードが完了したRDエリアは，HiRDB/SDデータベース作成ユティリティ（pdsdblod）の終了時に，指定した監視値のうち，一連番号使用比率のいちばん小さい値から監視される状態になります。

RDエリアがクローズ状態の場合，pdopenコマンドを入力してオープン状態にすると，オリジナルRDエリア，レプリカRDエリアそれぞれ別に，指定した監視値のうち，一連番号使用比率のいちばん小さい値から監視される状態になります。

pdorendコマンドで追い付き反映処理を開始します。

追い付き反映処理で割り当て済み一連番号が監視値を超えた場合，一連番号の枯渇メッセージが出力されます。この場合，SDBデータベース定義のSET句下のOCCURENCE NUMBER句，およびSDBOPTION句下のOCCURRENCE WARNING句の指定値に問題がないか見直してから，SDBデータベースを再作成する必要があります。

追い付き反映処理が終了します。カレントRDエリアがレプリカRDエリアからオリジナルRDエリアに切り替わります。このとき，一連番号の枯渇メッセージの出力状態は変わりません（レプリカRDエリアでの出力状態は引き継がれません）。

参考

一連番号の監視の概要については，「図5-22　一連番号の監視の概要」の説明を参照してください。

(2)　更新可能なオンライン再編成以外でレプリカRDエリアを使用する場合【4V FMB，4V AFM】

pddbchgコマンドまたは環境変数PDDBACCSを指定してレプリカRDエリアを使用した場合，一連番号の枯渇メッセージは出力されません。

5.26　PRFトレース機能

PRFトレース機能とは，HiRDBの一連の処理に対して出力される，トラブルシュート用のトレース情報を取得する機能です。

ここでは，HiRDB/SDに関するPRFトレース情報についてだけ説明します。PRFトレース情報を取得するための設定や取得内容，PRFトレース情報の参照手順など，「PRFトレース機能」の詳細については，マニュアル「HiRDB Version 9 システム運用ガイド」の「PRFトレース機能」を参照してください。

5.26.1　PRFトレース情報の詳細と取得ポイント

HiRDB/SDに関するPRFトレース情報のイベント名とそのイベントに関連する情報を次の表に示します。また，PRFトレース情報の主な取得ポイントを「図5-24　PRFトレースの取得ポイントの概念図（HiRDB/SDの場合）」に示します。

なお，PRFトレース情報には次に示す情報以外に，HiRDBの内部情報を出力することがあります。

表5‒20　PRFトレース情報の主な取得ポイント一覧（HiRDB/SD）

項番

イベント名

イベントID

取得ポイント（図中の番号）※1

主なプロセス

イベント種別※2

出力レベル

1

参照バッファ読み込み要求開始

0xD205D401

8

pdbes

8

00000004

2

参照バッファ読み込み要求完了

0xD206D401

8

pdbes

8

00000004

3

更新バッファ読み込み要求開始

0xD205D402

8

pdbes

8

00000004

4

更新バッファ読み込み要求完了

0xD206D402

8

pdbes

8

00000004

5

バッファ書き込み要求開始

0xD205D403

8

pdbes

8

00000004

6

バッファ書き込み要求完了

0xD206D403

8

pdbes

8

00000004

7

バッファ解放要求開始

0xD205D404

8

pdbes

8

00000004

8

バッファ解放要求完了

0xD206D404

8

pdbes

8

00000004

9

最終セグメント内の使用中ページ確保要求開始

0xD205D405

8

pdbes

8

00000004

10

最終セグメント内の使用中ページ確保要求完了

0xD206D405

8

pdbes

8

00000004

11

ページ満杯設定要求開始

0xD205D406

8

pdbes

8

00000004

12

ページ満杯設定要求完了

0xD206D406

8

pdbes

8

00000004

13

ページ満杯解除要求開始

0xD205D407

8

pdbes

8

00000004

14

ページ満杯解除要求完了

0xD206D407

8

pdbes

8

00000004

15

ページ解放要求開始

0xD205D408

8

pdbes

8

00000004

16

ページ解放要求完了

0xD206D408

8

pdbes

8

00000004

17

データ検索要求開始

0xD205D409

8

pdbes

8

00000004

18

データ検索要求終了

0xD206D409

8

pdbes

8

00000004

19

データ検索用メモリ解放要求開始

0xD205D40A

8

pdbes

8

00000004

20

データ検索用メモリ解放要求終了

0xD206D40A

8

pdbes

8

00000004

21

一意性制約チェック要求開始

0xD205D40B

8

pdbes

8

00000004

22

一意性制約チェック要求終了

0xD206D40B

8

pdbes

8

00000004

23

インデクスメンテナンス要求開始

0xD205D40C

8

pdbes

8

00000004

24

インデクスメンテナンス要求完了

0xD206D40C

8

pdbes

8

00000004

25

ログ出力要求開始

0xD205D40E

8

pdbes

8

00000004

26

ログ出力要求完了

0xD206D40E

8

pdbes

8

00000004

27

指定ページの近傍空きページ確保要求開始

0xD205D40F

8

pdbes

8

00000004

28

指定ページの近傍空きページ確保要求完了

0xD206D40F

8

pdbes

8

00000004

29

最終セグメント内の空きページ確保要求開始

0xD205D410

8

pdbes

8

00000004

30

最終セグメント内の空きページ確保要求完了

0xD206D410

8

pdbes

8

00000004

31

データロード時の空きページ確保要求開始

0xD205D411

−

pdbes

8

00000004

32

データロード時の空きページ確保要求完了

0xD206D411

−

pdbes

8

00000004

33

未使用ページ読み込み要求開始

0xD205D412

8

pdbes

8

00000004

34

未使用ページ読み込み要求終了

0xD206D412

8

pdbes

8

00000004

35

全インデクスページ解放要求開始

0xD205D413

−

pdbes

8

00000004

36

全インデクスページ解放要求完了

0xD206D413

−

pdbes

8

00000004

37

インデクスのルートページ情報更新要求開始

0xD205D414

−

pdbes

8

00000004

38

インデクスのルートページ情報更新要求完了

0xD206D414

−

pdbes

8

00000004

39

インデクス一括作成日時設定要求開始

0xD205D415

−

pdbes

8

00000004

40

インデクス一括作成日時設定要求完了

0xD206D415

−

pdbes

8

00000004

41

指定ページの近傍使用中ページ確保要求開始

0xD205D416

8

pdbes

8

00000004

42

指定ページの近傍使用中ページ確保要求完了

0xD206D416

8

pdbes

8

00000004

43

表検索用バッファ読み込み要求開始

0xD205D417

−

pdbes

8

00000004

44

表検索用バッファ読み込み要求終了

0xD206D417

−

pdbes

8

00000004

45

次セグメント内の使用中ページ番号の取得要求開始

0xD205D418

−

pdbes

8

00000004

46

次セグメント内の使用中ページ番号の取得要求完了

0xD206D418

−

pdbes

8

00000004

47

先頭使用中ページ番号の取得要求開始

0xD205D419

−

pdbes

8

00000004

48

先頭使用中ページ番号の取得要求完了

0xD206D419

−

pdbes

8

00000004

49

指定セグメント内の空きページ確保要求開始

0xD205D41A

8

pdbes

8

00000004

50

指定セグメント内の空きページ確保要求完了

0xD206D41A

8

pdbes

8

00000004

51

指定セグメント内の使用中ページ確保要求開始

0xD205D41B

8

pdbes

8

00000004

52

指定セグメント内の使用中ページ確保要求完了

0xD206D41B

8

pdbes

8

00000004

53

後続セグメント内の空きページサーチ要求開始

0xD205D41C

8

pdbes

8

00000004

54

後続セグメント内の空きページサーチ要求完了

0xD206D41C

8

pdbes

8

00000004

55

SDB用UAP環境定義ファイルのオープン開始

0x1105D41D

10

pdfes

8

00000004

56

SDB用UAP環境定義ファイルのオープン完了

0x1106D41D

10

pdfes

8

00000004

57

SDB用UAP環境定義ファイルの読み込み開始

0x1105D41E

10

pdfes

8

00000004

58

SDB用UAP環境定義ファイルの読み込み完了

0x1106D41E

10

pdfes

8

00000004

59

SDB用UAP環境定義ファイルのクローズ開始

0x1105D41F

10

pdfes

8

00000004

60

SDB用UAP 環境定義ファイルのクローズ完了

0x1106D41F

10

pdfes

8

00000004

61

データベース名称管理テーブルの確保開始

0xD103D101

8

pdbes

8

00000004

62

データベース名称管理テーブルの確保終了

0xD104D101

8

pdbes

8

00000004

63

HiRDB/SD処理開始

0xD003D200

1，3

pdbes，pdfes

8

00000004

64

HiRDB/SD処理終了

0xD004D200

4，6

pdbes，pdfes

8

00000004

65

個別開始要求処理開始

0xD105D201

8

pdbes

8

00000004

66

個別開始要求処理終了

0xD106D201

8

pdbes

8

00000004

67

更新可能なオンライン再編成時の追い付きログの出力開始

0xD205D202

8

pdbes

8

00000004

68

更新可能なオンライン再編成時の追い付きログの出力完了

0xD206D202

8

pdbes

8

00000004

69

FES-BES間通信処理開始

0xD005D203

2

pdfes

8

00000004

70

FES-BES間通信処理終了

0xD006D203

5

pdfes

8

00000004

71

FES-BES間通信処理

0xD003D204

3，4

pdbes

8

00000004

72

レコードの検索要求処理開始

0xD205D210

8

pdbes

8

00000004

73

レコードの検索要求処理終了

0xD206D210

8

pdbes

8

00000004

74

レコードの格納要求処理開始

0xD205D211

8

pdbes

8

00000004

75

レコードの格納要求処理終了

0xD206D211

8

pdbes

8

00000004

76

レコードの変更要求処理開始

0xD205D212

8

pdbes

8

00000004

77

レコードの変更要求処理終了

0xD206D212

8

pdbes

8

00000004

78

レコードの削除要求処理開始

0xD205D213

8

pdbes

8

00000004

79

レコードの削除要求処理終了

0xD206D213

8

pdbes

8

00000004

80

レコードの一括削除要求処理開始

0xD205D214

8

pdbes

8

00000004

81

レコードの一括削除要求処理終了

0xD206D214

8

pdbes

8

00000004

82

容量情報取得要求処理開始

0xD205D215

8

pdbes

8

00000004

83

容量情報取得要求処理終了

0xD206D215

8

pdbes

8

00000004

84

複数レコードの検索要求処理開始

0xD205D216

8

pdbes

8

00000004

85

複数レコードの検索要求処理終了

0xD206D216

8

pdbes

8

00000004

86

個別開始実行時の管理領域確保の開始

0xD105D300

8

pdbes

8

00000004

87

個別開始実行時の管理領域確保の完了

0xD106D301

8

pdbes

8

00000004

88

レコードの検索実行時のレコード取得の開始

0xD205D310

0xD205D312

8

pdbes

8

00000004

89

レコードの検索実行時のレコード取得の完了

0xD206D311

0xD206D313

8

pdbes

8

00000004

90

レコードの格納実行時の挿入位置検索の開始

0xD205D320

0xD205D322

8

pdbes

8

00000004

91

レコードの格納実行時の挿入位置検索の完了

0xD206D321

0xD206D323

8

pdbes

8

00000004

92

レコードの格納実行時のレコード格納の開始

0xD205D324

8

pdbes

8

00000004

93

レコードの格納実行時のレコード格納の完了

0xD206D325

8

pdbes

8

00000004

94

レコードの格納実行時の親子集合接続の開始

0xD205D326

8

pdbes

8

00000004

95

レコードの格納実行時の親子集合接続の完了

0xD206D327

8

pdbes

8

00000004

96

レコードの更新実行時の更新対象レコード取得の開始

0xD205D330

8

pdbes

8

00000004

97

レコードの更新実行時の更新対象レコード取得の完了

0xD206D331

8

pdbes

8

00000004

98

レコードの更新実行時のレコード変更の開始

0xD205D332

8

pdbes

8

00000004

99

レコードの更新実行時のレコード変更の完了

0xD206D333

8

pdbes

8

00000004

100

レコードの更新実行時のUSERポインタ設定の開始

0xD205D334

8

pdbes

8

00000004

101

レコードの更新実行時のUSERポインタ設定の完了

0xD206D335

8

pdbes

8

00000004

102

レコードの更新実行時のUSERポインタ解除の開始

0xD205D336

8

pdbes

8

00000004

103

レコードの更新実行時のUSERポインタ解除の完了

0xD206D337

8

pdbes

8

00000004

104

レコードの削除実行時の削除対象レコード取得の開始

0xD205D340

8

pdbes

8

00000004

105

レコードの削除実行時の削除対象レコード取得の完了

0xD206D341

8

pdbes

8

00000004

106

レコードの削除実行時のレコード削除の開始

0xD205D342

0xD205D346

0xD205D348

8

pdbes

8

00000004

107

レコードの削除実行時のレコード削除の完了

0xD206D343

0xD206D347

0xD206D349

8

pdbes

8

00000004

108

レコードの削除実行時の親子集合切り離しの開始

0xD205D344

8

pdbes

8

00000004

109

レコードの削除実行時の親子集合切り離しの完了

0xD206D345

8

pdbes

8

00000004

110

レコード検索実行時の排他解除の開始

0xD205D350

8

pdbes

8

00000004

111

レコード検索実行時の排他解除の完了

0xD206D351

8

pdbes

8

00000004

112

UAP統計レポート取得時の管理領域確保の開始

0xD205D352

9

pdfes

8

00000004

113

UAP統計レポート取得時の管理領域確保の完了

0xD206D353

9

pdfes

8

00000004

114

UAP統計レポート取得時の情報書き込みの開始

0xD205D354

9

pdfes

8

00000004

115

UAP統計レポート取得時の情報書き込みの完了

0xD206D355

9

pdfes

8

00000004

116

複数レコードの検索実行時のレコード取得の開始

0xD205D360

8

pdbes

8

00000004

117

複数レコードの検索実行時のレコード取得の完了

0xD206D361

8

pdbes

8

00000004

118

複数レコードの検索実行時の排他解除の開始

0xD205D362

8

pdbes

8

00000004

119

複数レコード検索実行時の排他解除の完了

0xD206D363

8

pdbes

8

00000004

120

位置指示子への空値設定実行時の排他解除の開始

0xD205D370

8

pdbes

8

00000004

121

位置指示子への空値設定実行時の排他解除の完了

0xD206D371

8

pdbes

8

00000004

（凡例）

−：SDBデータベースへのアクセスや，COMMITの延長で動作しないイベントです。

注※1

「図5-24　PRFトレースの取得ポイントの概念図（HiRDB/SDの場合）」の番号と対応しています。図中の対応する番号のポイントで取得されることを意味します。

注※2

イベント種別は「8：その他」です。そのほかのイベント種別については，マニュアル「HiRDB Version 9 システム運用ガイド」の「PRFトレース機能」を参照してください。

図5‒24　PRFトレースの取得ポイントの概念図（HiRDB/SDの場合）

5.27　システム構成を変更する方法

ユニット構成やサーバ構成を変更する方法については，マニュアル「HiRDB Version 9 システム運用ガイド」の「システム構成を変更する方法」を参照してください。

ただし，マニュアル「HiRDB Version 9 システム運用ガイド」に記載されている内容とは仕様差があります。ここでは，その仕様差についてだけ説明します。

仕様差のある個所

マニュアル「HiRDB Version 9 システム運用ガイド」の「システム構成を変更する方法」の次の個所。

「ユニットの追加」

「HiRDBの稼働中にユニットを追加する場合」，および「HiRDBを終了してユニットを追加する場合」の「新規サーバマシンを準備します」の手順

「ユニットの移動」

「HiRDBの稼働中にユニットを追加する場合」，および「HiRDBを終了してユニットを追加する場合」の「新規サーバマシンを準備します」の手順

HiRDB/SDを使用する場合の注意点（仕様差）

HiRDB/SDを使用する場合は，上記個所に記載されている「既存のユニットに合わせること」に加えて，次の点に注意してください。

既存のユニットがHiRDB/SDである必要があります。

HiRDB/SDのバージョンを既存のユニットと合わせる必要があります。

6　高速系切り替え機能の設定と運用

この章では，高速系切り替え機能の設定方法と運用方法について説明します。

なお，この章の説明は，HAモニタについての知識があることを前提にしています。

6.1　高速系切り替え機能の環境設定の流れ

高速系切り替え機能の環境設定の流れを次の図に示します。

図6‒1　高速系切り替え機能の環境設定の流れ

［説明］

系切り替えの構成を決めます。1：1系切り替え構成にするか，相互系切り替え構成にするか，またはそのほかの構成にするかを決めます。詳細については，「6.2　システム構成例」を参照してください。

系切り替え時に使用するIPアドレスをエイリアスIPアドレスとして設定します。詳細については，「6.3　IPアドレス（ホスト名）の構成例」を参照してください。

共有ディスクを準備して，共有ディスク上にHiRDBファイルシステム領域を作成します。詳細については，「6.4　共有ディスクの準備」を参照してください。

HAモニタをインストールして環境設定を行います。詳細については，「6.5　HAモニタの環境設定」を参照してください。

HiRDBをインストールして環境設定を行います。詳細については，「6.6　HiRDBの環境設定」〜「6.10　停止中のユニットがある状態でもシステムマネジャユニットの系切り替えを実行する設定」を参照してください。

6.2　システム構成例

システム構成例については，マニュアル「HiRDB Version 9 システム運用ガイド」の「スタンバイ型系切り替え（サーバモード）の構築」にある「高速系切り替え機能の使用時のシステム構成例」を参照してください。

6.3　IPアドレス（ホスト名）の構成例

IPアドレス（ホスト名）の構成例については，マニュアル「HiRDB Version 9 システム運用ガイド」の「スタンバイ型系切り替え（サーバモード）の構築」にある「IPアドレスの構成例」を参照してください。

6.4　共有ディスクの準備

共有ディスクの準備については，マニュアル「HiRDB Version 9 システム運用ガイド」の「スタンバイ型系切り替え（サーバモード）の構築」にある「共有ディスク装置の準備」を参照してください。

6.5　HAモニタの環境設定

HAモニタの環境設定については，マニュアル「HiRDB Version 9 システム運用ガイド」の「スタンバイ型系切り替え（サーバモード）の構築」にある「HAモニタに関する準備」を参照してください。

6.6　HiRDBの環境設定

ここでは，HiRDBの環境設定をする際の考慮点について説明します。

6.6.1　前提条件および注意事項

(1)　現用系と予備系で一致させること

現用系と予備系で一致させることについては，マニュアル「HiRDB Version 9 システム運用ガイド」の「スタンバイ型系切り替え（サーバモード）の構築」にある「現用系と予備系で一致させること」を参照してください。

(2)　環境設定に関する注意事項

環境設定に関する注意事項については，マニュアル「HiRDB Version 9 システム運用ガイド」の「スタンバイ型系切り替え（サーバモード）の構築」にある「環境設定に関する注意事項」を参照してください。

(3)　SDBディレクトリ情報ファイルに関する注意事項

現用系と予備系のHiRDBシステム定義の指定内容を同じにするため，SDBディレクトリ情報ファイルを格納するディレクトリのパスは，現用系と予備系で同じにしてください。

SDBディレクトリ情報ファイルを格納するディレクトリ（pd_structured_directory_pathオペランドに指定するディレクトリ）を共有ディスク上に作成しないでください。

実行系ユニットと待機系ユニットで，同じSDBディレクトリ情報ファイルを使用する必要があります。

待機系ユニットのSDBディレクトリ情報ファイルを変更した場合，待機系ユニットを開始したあとに，待機系ユニットの常用常駐領域に新しいSDBディレクトリ情報が常駐されたかどうかを確認してください。確認方法については，「5.9.2　常用常駐領域のSDBディレクトリ情報の確認方法（待機系ユニットの場合）」を参照してください。

1つのサーバマシンに複数のユニットがある場合（相互系切り替え構成の場合），サーバマシン内の複数のユニットでSDBディレクトリ情報ファイルを共用できます。

6.6.2　HiRDBシステム定義の作成

HiRDBシステム定義の作成については，マニュアル「HiRDB Version 9 システム運用ガイド」の「スタンバイ型系切り替え（サーバモード）の構築」にある「HiRDBシステム定義の作成」を参照してください。

6.6.3　RDエリアの作成

共有ディスクに作成したRDエリア用のHiRDBファイルシステム領域にRDエリアを作成します。ユーザ用RDエリアとシステム用RDエリアをそれぞれ異なる共有ディスクのHiRDBファイルシステム領域に作成するときの定義例を次に示すシステム構成例を基に説明します。

システム構成例

create rdarea文の指定例

create rdarea PMAST for masterdirectory                  ...1
    server name DIC
    file name "/dic0111/prd01"
      initial 10 segments;
create rdarea PDIR for datadirectory                     ...2
    server name DIC
    file name "/dic0112/prd02"
      initial 5 segments;
create rdarea PDIC for datadictionary                    ...3
    server name DIC
    file name "/dic0113/prd03"
      initial 20 segments;
create rdarea PUSR01 for user used by PUBLIC             ...4
    server name BACK01
    data model structured
    file name "/back0121/prd04"
      initial 500 segments;
create rdarea PUSR02 for user used by PUBLIC             ...5
    server name BACK02
    data model structured
    file name "/back0231/prd05"
      initial 500 segments;

［説明］

マスタディレクトリ用RDエリア（PMAST）を共有ディスクAのHiRDBファイルシステム領域に作成します。

データディレクトリ用RDエリア（PDIR）を共有ディスクAのHiRDBファイルシステム領域に作成します。

データディクショナリ用RDエリア（PDIC）を共有ディスクAのHiRDBファイルシステム領域に作成します。

ユーザ用RDエリア（PUSR01）を共有ディスクBのHiRDBファイルシステム領域に作成します。

ユーザ用RDエリア（PUSR02）を共有ディスクCのHiRDBファイルシステム領域に作成します。

6.6.4　グローバルバッファの定義

マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「グローバルバッファの割り当て方法」を参照して，作成したRDエリアにグローバルバッファを割り当ててください。

6.6.5　監査証跡ファイルの運用

監査証跡ファイルはHiRDB管理者が共有ディスクに作成します。HiRDB管理者，および監査人は，共有ディスク上の監査証跡ファイルを運用してください。

(1)　監査証跡ファイルの作成

監査証跡ファイルは，HiRDB管理者が共有ディスクに作成します。

(2)　監査証跡ファイルの運用

系切り替えが発生した場合，HiRDBは共有ディスク上の監査証跡ファイルに監査事象を記録します。監査事象の記録に関する監査証跡ファイルの運用については，マニュアル「HiRDB Version 9 システム運用ガイド」の「監査証跡ファイルの運用」を参照してください。

(3)　監査証跡の取得

系切り替えが発生した場合，監査証跡の取得状態の引き継ぎについては，切り替え元ユニットの停止状態に依存します。切り替え先の系が再開始の場合は系を切り替える前の状態を引き継ぎます。切り替え先の系が正常開始の場合はpd_auditオペランドの指定に従います。

(4)　pdloadコマンドの実行

HiRDB管理者は，監査証跡ファイルを入力情報として，pdloadコマンドを実行してください（認証は監査人）。ただし，障害などで系が切り替わった場合，HiRDBは切り替わる直前の監査事象を正しく取得しません。このため，pdloadコマンドを実行しても切り替え直前のデータを取得できない場合があります。

6.7　系切り替え時のトランザクションエラーを少なくする設定（トランザクションキューイング機能）

トランザクションキューイング機能については，マニュアル「HiRDB Version 9 システム運用ガイド」の「トランザクションキューイング機能（高速系切り替え機能限定）」を参照してください。

6.8　サーバプロセスの異常終了が多発した場合に系を切り替える設定

サーバプロセスの異常終了が多発した場合に系を切り替える設定については，マニュアル「HiRDB Version 9 システム運用ガイド」の「サーバ障害以外の障害が発生した場合に系を切り替える方法」にある「サーバプロセスの異常終了が多発した場合に系を切り替える方法」を参照してください。

6.9　RDエリアの入出力エラー（パス障害）が発生した場合に系を切り替える設定

RDエリアの入出力エラー（パス障害）が発生した場合に系を切り替える設定方法については，マニュアル「HiRDB Version 9 システム運用ガイド」の「サーバ障害以外の障害が発生した場合に系を切り替える方法」にある「RDエリアの入出力エラー（パス障害）が発生した場合に系を切り替える方法」を参照してください。

6.10　停止中のユニットがある状態でもシステムマネジャユニットの系切り替えを実行する設定

停止中のユニットがある状態でもシステムマネジャユニットの系切り替えを実行する場合の設定方法については，マニュアル「HiRDB Version 9 システム運用ガイド」の「システムマネジャユニットの系切り替えに関する注意事項」を参照してください。

6.11　高速系切り替え機能を使用している場合の運用

ここでは，高速系切り替え機能を使用している場合の運用方法について説明します。

6.11.1　HiRDBの開始

(1)　HiRDBの開始方法

HiRDBの開始方法については，マニュアル「HiRDB Version 9 システム運用ガイド」の「スタンバイ型系切り替え（サーバモード）の運用」にある「HiRDBの開始方法」を参照してください。

pd_structured_directory_pathオペランドに指定したディレクトリにSDBディレクトリ情報ファイルがない場合にHiRDBを開始したときの処理を次の表に示します。この表に示すとおり実行系と待機系で処理が異なることがあるので注意してください。

表6‒1　SDBディレクトリ情報ファイルがない場合にHiRDBを開始したときの処理

条件

HiRDBを開始したときの処理

対象の系

ユニット中にMGR，FES，またはBESの有無

実行系

あり

開始します。このとき，KFPB62910-Wメッセージが出力されます。

なし

開始します。

待機系

あり

開始処理を中止します。このとき，KFPB62911-Eメッセージが出力されます。

なし

開始します。

(2)　注意事項

HiRDBの開始方法については，マニュアル「HiRDB Version 9 システム運用ガイド」の「スタンバイ型系切り替え（サーバモード）の運用」にある「HiRDBの開始方法」を参照してください。

(3)　待機系ユニットの開始処理に時間が掛かる場合

待機系ユニットの開始処理に時間が掛かる場合は，マニュアル「HiRDB Version 9 システム運用ガイド」の「スタンバイ型系切り替え（サーバモード）の運用」にある「待機系の起動に時間が掛かる場合の確認作業」を参照してください。

(4)　ユニットが実行サーバの起動待ち状態になったときの対処

ユニットの開始時に，ユニットが「実行サーバの起動待ち状態」になった場合，マニュアル「HiRDB Version 9 システム運用ガイド」の「スタンバイ型系切り替え（サーバモード）の運用」にある「HAモニタ使用時の注意事項」を参照してください。

6.11.2　HiRDBの終了

HiRDBの終了については，マニュアル「HiRDB Version 9 システム運用ガイド」の「スタンバイ型系切り替え（サーバモード）の運用」にある「HiRDBの終了方法」を参照してください。

6.11.3　ユニットの状態を確認する場合

ユニットの状態を確認する方法については，マニュアル「HiRDB Version 9 システム運用ガイド」の「スタンバイ型系切り替え（サーバモード）の運用」にある「状態の確認」を参照してください。

6.11.4　統計解析情報の取得

統計解析情報の取得については，マニュアル「HiRDB Version 9 システム運用ガイド」の「スタンバイ型系切り替え（サーバモード）の運用」にある「統計ログファイルの運用」を参照してください。

6.11.5　計画系切り替えの手順

計画系切り替えの手順については，マニュアル「HiRDB Version 9 システム運用ガイド」の「スタンバイ型系切り替え（サーバモード）の運用」にある「計画系切り替え」を参照してください。

6.11.6　運用上の注意事項

(1)　HiRDB/SD定義ユティリティ（pdsdbdef）を実行する場合の注意事項

HiRDBの再起動を必要とするSDBデータベースの定義追加，定義変更，または定義削除をする場合

HAモニタのmonsbystpコマンドですべての待機系ユニットを終了してから，HiRDB/SD定義ユティリティを実行してください。手順については，「5.6　SDBデータベースの定義追加，定義変更，または定義削除（HiRDBの再起動を必要とする場合）」を参照してください。

待機系ユニットを終了しないでHiRDB/SD定義ユティリティを実行した場合，HiRDB/SD定義ユティリティの実行後に，すべての待機系ユニットを再起動してください。待機系ユニットを再起動しないと，次に示す場合に待機系ユニットが異常終了します。

実行系ユニットの単独再起動（正常終了後の再起動）を行い，そのあとに系切り替えが発生した場合

待機系ユニットが異常終了した場合は，待機系ユニットをpdstart -uまたはpdstart -qコマンドで開始してください。

HiRDBの再起動を必要としないSDBデータベースの定義追加または定義変更をする場合

HiRDB/SD定義ユティリティを実行して，新しいSDBディレクトリ情報ファイルを待機系に配布したあとに待機系ユニットを再起動してください。手順については，「5.7　SDBデータベースの定義追加または定義変更（HiRDBの再起動を必要としない場合）」を参照してください。

待機系ユニットを再起動しないと，系切り替えが発生したときに待機系ユニットが異常終了します。待機系ユニットが異常終了した場合は，待機系ユニットをpdstart -uまたはpdstart -qコマンドで開始してください。

(2)　データベース構成変更ユティリティ（pdmod）を実行する場合の注意事項

データベース構成変更ユティリティを実行した場合※，すべての待機系ユニットを再起動してください。すべての待機系ユニットを再起動しないと，系切り替えが発生したときに待機系ユニットが異常終了します。待機系ユニットが異常終了した場合は，待機系ユニットをpdstart -uまたはpdstart -qコマンドで開始してください。

注※　データベース構成変更ユティリティの次に示す操作を除きます。

HiRDBファイルシステム領域の世代登録

HiRDBファイルシステム領域の世代削除

(3)　待機系ユニットを再起動する必要がある操作（重要）

次に示す操作をしたあとに，実行系ユニットの単独再起動（正常終了後の再起動）をした場合，すべての待機系ユニットを再起動してください。すべての待機系ユニットを再起動しないと，系切り替えが発生したときに待機系ユニットが異常終了します。待機系ユニットが異常終了した場合は，待機系ユニットをpdstart -uまたはpdstart -qコマンドで開始してください。

定義系SQLの実行

監査証跡表の作成

pddbchgコマンドの実行

オンライン再編成の実行（pdorbegin，pdorendコマンドの実行）

HiRDBシステム定義の変更（次に示すオペランドの指定値を変更した場合）

グローバルバッファの定義（pdbuffer）

RDエリアの最大数（pd_max_rdarea_no）

RDエリアを構成するHiRDBファイルの最大数（pd_max_file_no）

インナレプリカグループの最大数（pd_inner_replica_control）

表予約数の最低保証値（pd_assurance_table_no）

インデクス予約数の最低保証値（pd_assurance_index_no）

(4)　コマンド実行時の注意事項

HiRDBの停止中にコマンドを実行する場合，実行系と待機系の両方のHiRDBが終了している必要があります。ただし，pdstartコマンドを除きます。

待機系のHiRDBを開始するためのpdstartコマンド以外は，HiRDBの稼働中に待機系のHiRDBでコマンドを実行しないでください。

HiRDBの強制終了または異常終了後にpdsetup -dコマンドを実行する場合は，pdsetup -dコマンドの応答にYを指定しないでください。Yを応答すると，そのあとHiRDBを開始できなくなることがあります。

(5)　系が切り替わったあとのホスト名の扱い

高速系切り替え機能ではIPアドレスを引き継げないため，現用系と予備系のホスト名が異なります。系が切り替わったあとのホスト名の扱いについて説明します。

運用コマンドおよびユティリティに指定するホスト名について

系が切り替わったあとも，コマンドやユティリティに指定するホスト名またはユニット識別子を変える必要はありません。ホスト名には，システム共通定義のpdunitオペランドの-xオプションに指定した現用系ユニットのホスト名を常に指定します。

ユニット識別子を指定する場合は，ホスト名を意識する必要はありません。

コマンドの処理結果には現用系ユニットのホスト名が常に表示されます。

メッセージに表示されるホスト名について

メッセージには常に現用系ユニットのホスト名が表示されます。

(6)　RDエリアのオープン契機について

高速系切り替え機能の対象になる待機系ユニットは，待機状態のときにRDエリアをオープンしていません。また，系の切り替え時間を最小限に抑えるため，系切り替えの発生時に全面回復で必要なRDエリアだけをオープンし，そのほかのRDエリアはオープンしません。したがって，待機系のRDエリアのオープン契機はINITIAL属性になりません。INITIAL属性のRDエリアはDEFER属性になります。

RDエリアのオープン契機については，マニュアル「HiRDB Version 9 システム運用ガイド」の「RDエリアのオープン契機を変更する方法（RDエリアの属性変更）」を参照してください。

(7)　共有ディスク上に作成したHiRDBファイルにアクセスできない場合

HAモニタの制御によってHiRDBの停止中は，両方の系から共有ディスク上に作成したHiRDBファイルを操作できなくなることがあります。この場合，OSのコマンドでディスクを活性化してください。

(8)　現用系と待機系のOSの時刻がずれているときの注意事項

現用系と待機系のOSの時刻がずれている（待機系の時刻の遅れが系切り替えに掛かる時間よりも大きい）場合，HiRDBは，時刻を遅らせた場合に行う対処を誤ったときと同じ影響を受けます。そのため，現用系と待機系のOSの時刻を合わせるようにしてください。

OSの時刻を変更する方法については，マニュアル「HiRDB Version 9 システム運用ガイド」の「OSの時刻を変更する方法」を参照してください。

6.11.7　障害発生時のシステムの処理とHiRDB管理者の処置

障害発生時のシステムの処理とHiRDB管理者の処置については，マニュアル「HiRDB Version 9 システム運用ガイド」の「スタンバイ型系切り替え（サーバモード）の運用」にある「障害発生時のHiRDB管理者の処置」を参照してください。

7　セキュリティ監査機能の設定と運用

この章では，セキュリティ監査機能の設定方法と運用方法について説明します。

7.1　セキュリティ監査機能の概要

ここでは，セキュリティ監査機能の概要について説明します。

7.1.1　セキュリティ監査機能とは

HiRDB/SDのセキュリティは権限によって守られています。参照できる情報，更新できる情報，および操作できるオブジェクト（SDBデータベースなど）を権限によって制限しています。この権限の運用が適切に行われているかどうかをチェックするために，HiRDB/SDではSDBデータベースに対する特定の操作を記録できます。この機能をセキュリティ監査機能といい，出力される操作記録を監査証跡といいます。出力された監査証跡を調査して不正なアクセスが行われていないかをチェックできます。このチェックは監査権限を持つユーザ（これを監査人といいます）が行います。セキュリティ監査機能の概要を次の図に示します。

図7‒1　セキュリティ監査機能の概要

監査証跡には，誰がどのような権限を使用して何に対する操作を行ったかという情報が取得されます。どの操作に対して監査証跡を取得するかは，監査人がCREATE AUDIT文で設定します。監査証跡の取得対象となる操作が実行されると，監査証跡が取得されます。

参考

セキュリティ監査機能はセキュリティを強化する機能ではありません。権限の運用が適切に行われているかどうかをチェックするための操作記録を出力する機能です。

7.1.2　監査証跡の取得範囲

監査証跡の取得範囲を次の表に示します。

表7‒1　監査証跡の取得範囲

項番

種別

コマンド名または機能名

監査証跡の取得可否

1

ユティリティ・コマンド

HiRDB/SD定義ユティリティ（pdsdbdefコマンド）

○

2

HiRDB/SDデータベース作成ユティリティ（pdsdblodコマンド）

○

3

HiRDB/SDデータベース再編成ユティリティ（pdsdbrogコマンド）

○

4

HiRDB/SDデータベースアクセスユティリティ（pdsdbexeコマンド）

○

5

pdsdbarcコマンド

×

6

pdsdborcrtコマンド

×

7

DBアクセスインタフェース

レコードの検索（FETCH）

位置指示子の位置づけ（FIND）※

○

8

レコードの格納（STORE）

○

9

レコードの更新（MODIFY）

○

10

レコードの削除（ERASE）

○

11

個別開始

×

12

個別終了

×

13

構成要素情報取得

×

14

複数レコードの検索（FETCHDB ALL）

○

15

レコードの一括削除

○

16

SDBデータベース定義情報取得

×

17

上記以外

マニュアル「HiRDB Version 9 システム運用ガイド」の「監査対象になるイベント」で説明されているコマンドまたは機能

○

（凡例）

○：監査証跡を取得します。

×：監査証跡を取得しません。

注※

DMLの位置指示子の位置づけ（FIND）は，レコードの検索（FETCH）として監査証跡が取得されます。

7.1.3　監査証跡の取得契機

監査証跡の取得契機については，マニュアル「HiRDB Version 9 システム運用ガイド」の「監査証跡の取得契機」を参照してください。

また，「表7-1　監査証跡の取得範囲」に示す操作をしたときにも監査証跡が取得されます。

(1)　ユティリティ・コマンド実行時の監査証跡の取得契機

(a)　pdsdbdefコマンド実行時の監査証跡の取得契機

pdsdbdefコマンドを実行した場合，次の表に示すタイミングで監査証跡が取得されます。

表7‒2　pdsdbdefコマンドを実行した場合の監査証跡の取得契機

項番

監査証跡の取得契機

監査対象のイベント

監査証跡の取得単位

1

権限チェック時

pdsdbdefコマンド実行時のCONNECT権限チェック

pdsdbdefコマンドが1回実行されると，監査証跡が1レコード取得されます。

2

イベントの終了時

SDBディクショナリ情報の操作

次のSDB定義文が1回実行されると，監査証跡が1レコード取得されます。

*ENTRY DICTIONARY文

*ALTER DICTIONARY文

*DELETE DICTIONARY文

3

データベース定義のチェック

次のSDB定義文が1回実行されると，監査証跡が1レコード取得されます。

*CHECK DICTIONARY文

4

SDBディレクトリ情報の操作

次のSDB定義文が1回実行されると，監査証跡が1レコード取得されます。

*ENTRY DIRECTORY文

*ALTER DIRECTORY文

*DELETE DIRECTORY文

5

SDBディレクトリ情報ファイルの作成

dirinf文を指定したpdsdbdefコマンドが1回実行されると，監査証跡が1レコード取得されます。

6

pdsdbdefコマンドの終了

pdsdbdefコマンドが1回実行されると，監査証跡が1レコード取得されます。

次に示す場合は，pdsdbdefコマンドに関する監査証跡は取得されません。

pdsdbdefコマンド実行時のCONNECT権限チェックでCONNECTエラーが発生した場合

pdsdbdefコマンドのオプションまたは制御文の指定に誤りがあり，pdsdbdefコマンドがエラーとなった場合

上記の表の項番2〜5については，該当するリソースにアクセスした場合に限り監査証跡が取得されます。該当するリソースにアクセスする前にエラーが発生した場合は，該当する監査対象イベントの監査証跡は取得されません。

(b)　pdsdblodコマンド実行時の監査証跡の取得契機

pdsdblodコマンドを実行した場合，次の表に示すタイミングで監査証跡が取得されます。

表7‒3　pdsdblodコマンドを実行した場合の監査証跡の取得契機

項番

監査証跡の取得契機

監査対象のイベント

監査証跡の取得単位

1

権限チェック時

pdsdblodコマンド実行時のCONNECT権限チェック

pdsdblodコマンドが1回実行されると，監査証跡が1レコード取得されます。

2

イベントの終了時

pdsdblodコマンドの終了

次に示す場合は，pdsdblodコマンドに関する監査証跡は取得されません。

pdsdblodコマンド実行時のCONNECT権限チェックでCONNECTエラーが発生した場合

pdsdblodコマンドのオプションまたは制御文の指定に誤りがあり，pdsdblodコマンドがエラーとなった場合

(c)　pdsdbrogコマンド実行時の監査証跡の取得契機

pdsdbrogコマンドを実行した場合，次の表に示すタイミングで監査証跡が取得されます。

表7‒4　pdsdbrogコマンドを実行した場合の監査証跡の取得契機

項番

監査証跡の取得契機

監査対象のイベント

監査証跡の取得単位

1

権限チェック時

pdsdbrogコマンド実行時のCONNECT権限チェック

pdsdbrogコマンドが1回実行されると，監査証跡が1レコード取得されます。

2

イベントの終了時

pdsdbrogコマンドの終了

次に示す場合は，pdsdbrogコマンドに関する監査証跡は取得されません。

pdsdbrogコマンド実行時のCONNECT権限チェックでCONNECTエラーが発生した場合

pdsdbrogコマンドのオプションまたは制御文の指定に誤りがあり，pdsdbrogコマンドがエラーとなった場合

(d)　pdsdbexeコマンド実行時の監査証跡の取得契機【4V FMB，4V AFM】

pdsdbexeコマンドを実行した場合，次の表に示すタイミングで監査証跡が取得されます。

表7‒5　pdsdbexeコマンドを実行した場合の監査証跡の取得契機

項番

監査証跡の取得契機

監査対象のイベント

監査証跡の取得単位

1

権限チェック時

pdsdbexeコマンド実行時のCONNECT権限チェック

pdsdbexeコマンドが1回実行されると，監査証跡が1レコード取得されます。

2

pdsdbexeコマンドで実行するSQLコマンド

次のSQLコマンドが1回実行されると，監査証跡が1レコード取得されます。

CONNECTコマンド

3

イベントの終了時※

pdsdbexeコマンド実行時のCONNECT操作

pdsdbexeコマンドが1回実行されると，監査証跡が1レコード取得されます。

4

pdsdbexeコマンド終了時のDISCONNECT操作

DISCONNECTコマンドを実行しないでpdsdbexeコマンドを終了すると，監査証跡が1レコード取得されます。

5

pdsdbexeコマンドで実行するSQLコマンド

次のSQLコマンドが1回実行されると，監査証跡が1レコード取得されます。

CONNECTコマンド

DISCONNECTコマンド

6

pdsdbexeコマンドで実行するDMLコマンド

次のDMLコマンドが1回実行されると，監査証跡が1レコード取得されます。

FETCHコマンド

STOREコマンド

MODIFYコマンド

ERASEコマンド

注※

pdsdbexeコマンド終了時の監査証跡は取得しません。

次に示す場合は，pdsdbexeコマンドに関する監査証跡は取得されません。

pdsdbexeコマンドのオプションまたは制御文の指定に誤りがあり，pdsdbexeコマンドがエラーとなった場合

(2)　データベース操作時の監査証跡の取得契機

HiRDB/SDではデータベース操作に対する権限を持たないため，実行時には権限チェックは行いません。権限チェックの監査証跡は，CONNECT要求時に取得されます。データベース操作に対する監査証跡は，イベント終了時だけ取得されます。

なお，次の場合には，監査証跡を取得しないことがあります。

SDBデータベースを操作するAPIまたはDMLの入力情報不正や，要求順序不正など，データベースアクセス実行前にエラーとなった場合

FESとBES間の通信でエラーが発生した場合

データベース操作イベント種別とその監査イベントが発生する操作を次の表に示します。

表7‒6　SDBデータベース操作イベント種別と監査イベントが発生する操作

SDBデータベース操作イベント種別

権限チェックの監査イベントが発生する操作（AUDITTYPEにPRIVILEGEを指定した場合）

イベントの最終結果の監査証跡を取得する監査イベントが発生する操作（AUDITTYPEにEVENTを指定した場合）

FETCH

権限チェックイベントなし

レコードの検索（FETCH）実行

位置指示子の位置づけ（FIND）実行

STORE

同上

レコードの格納（STORE）実行

MODIFY

同上

レコードの更新（MODIFY）実行

ERASE

同上

レコードの削除（ERASE）実行

CLEAR

同上

レコードの一括削除実行

FETCHDB ALL

同上

複数レコードの検索（FETCHDB ALL）実行

(3)　データベース操作のユーザ要求と監査証跡レコードの関係

HiRDB/SDでは，UAPおよびpdsdbexeコマンドからのSDBデータベースを操作するAPIまたはDMLを，1つのイベントとして（APIまたはDMLに対して1対1で）監査証跡を取得します。

UAPからのSDBデータベースを操作するAPIをブロック化した複数要求の場合，次のように取得されます。

ブロック化した個々のAPIに対して実行したものだけを対象に取得します。

監査証跡レコードの「イベント成否」および「SQLコード」項目には複数要求としての最終結果を記録します。

監査証跡レコードの「アクセス件数」項目には，実行した要求で操作したレコードの合計値を記録します。

上記のため，個々の監査証跡レコードの「SQLデータ」項目にレコード操作出力情報として，API単位の処理結果およびアクセス件数を記録します。レコード削除では要求順序によって前の要求で削除されたレコードに対する要求となることがあり，この場合はレコード操作出力情報のアクセス件数は0件として記録します。

また，すべてのレコード操作で，次のレコードの監査証跡は取得しません。

4V AFMのSDBデータベースの仮想ルートレコード

4V FMBまたはSD FMBのSDBデータベースの場合で，親レコード削除に伴って削除される配下の子レコード群

4V FMBのSDBデータベースの場合で，一括オプション('O')指定で削除する位置づけレコード以外の子レコード群

(4)　データベース操作のレコードの検索（FETCH）の取得オプション

CREATE AUDIT文（監査対象イベントの定義）でSDBデータベース操作イベント種別のFETCHにFIRSTオプションを指定することで，レコードの検索（FETCH）の監査証跡取得量を削減できます。

このオプションは，4V FMBまたはSD FMBのSDBデータベースを対象にした監査証跡取得オプションのため，4V AFMのSDBデータベースに対して指定しても無視されます。FETCHはすべてのレコード検索をイベントの対象としますが，FIRSTオプションを指定した場合は，各レコード型に対して検索のイベントが成功した最初のレコードに対してだけ監査証跡を取得し，以降の検索イベントで成功した同じレコード型の監査証跡は取得しません。ただし，同じレコード型であっても，レコード検索のイベントが失敗した場合は，監査証跡が取得されます。

この機能は，個別開始ごとにファミリ単位にルートレコードを含め，その配下の子レコードに対して適用されるため，同じレコード型へのアクセスでもルートレコードのキーが変われば（ルートレコードへの位置づけが発生すれば）イベントの対象として，監査証跡が取得されます。

また，レコード検索処理の途中で，このオプションのイベント定義が有効になった場合は，そのタイミングで同一レコード型に対する2回目以降の検索レコードに対する監査証跡は取得されません。

7.1.4　監査証跡として取得する情報

監査証跡として取得する情報については，次の項目を参照してください。

「7.2　監査証跡ファイルに出力される情報」

「7.8　監査証跡表の列構成」

「7.12　監査証跡のレコード項目」

7.1.5　監査証跡の参照

監査証跡は監査証跡ファイルに出力されます。監査証跡ファイル中のデータは，監査証跡表に格納してから参照します。詳細については，「7.5.1　監査証跡の参照方法」を参照してください。

7.1.6　前提となるシステム構成

セキュリティ監査機能を使用する場合，システム構成に関して次に示す前提条件があります。

サーバがないユニット（システムマネジャだけのユニットを含む）がある場合，セキュリティ監査機能を使用できません。セキュリティ監査機能を使用する場合は，各ユニットにフロントエンドサーバ，ディクショナリサーバ，またはバックエンドサーバのどれかを配置してください。

7.1.7　監査対象になるイベント

監査証跡の取得対象になる操作を監査対象イベントといいます。監査対象イベントについては，マニュアル「HiRDB Version 9 システム運用ガイド」の「監査対象になるイベント」を参照してください。

さらに，次の表に示す監査対象イベントがあります。

表7‒7　監査対象イベント

イベントの種類

説明および監査対象になるイベント

選択可否

SDBユティリティ操作イベント

次のユティリティによるオブジェクト操作に関するセキュリティ対象イベントを監査対象にします。次に示すイベントが実行されたときに監査証跡を出力します。※

HiRDB/SD定義ユティリティ（pdsdbdefコマンド）

HiRDB/SDデータベース作成ユティリティ（pdsdblodコマンド）

HiRDB/SDデータベース再編成ユティリティ（pdsdbrogコマンド）

選択できます。

SDBデータベース操作イベント

次のデータベース操作に関するセキュリティ対象イベントを監査対象にします。次に示すイベントが実行されたときに監査証跡を出力します。

レコードの検索（FETCH）または位置指示子の位置づけ（FIND）

レコードの格納（STORE）

レコードの更新（MODIFY）

レコードの削除（ERASE)

レコードの一括削除

複数レコードの検索（FETCHDB ALL）

選択できます。

注※

HiRDB/SDデータベースアクセスユティリティ（pdsdbexeコマンド）は，SDBユティリティ操作イベントとして監査証跡を出力しません。詳細は，「7.1.3(1)(d)　pdsdbexeコマンド実行時の監査証跡の取得契機【4V FMB，4V AFM】」を参照ください。

7.1.8　監査証跡表の自動データロード機能

監査証跡表の自動データロード機能を使用すると，監査証跡ファイル中のデータを監査証跡表に自動的に格納することができます。詳細については，マニュアル「HiRDB Version 9 システム運用ガイド」の「監査証跡表の自動データロード機能」を参照してください。

7.2　監査証跡ファイルに出力される情報

監査証跡ファイルに出力される情報については，マニュアル「HiRDB Version 9 システム運用ガイド」の「監査証跡ファイルに出力される情報」を参照してください。

7.3　監査証跡の出力パターン

監査証跡の出力パターンについては，マニュアル「HiRDB Version 9 システム運用ガイド」の「監査証跡の出力パターン」を参照してください。

ここでは，SDBデータベース操作イベントの監査証跡の出力パターン（出力契機の例）について説明します。

7.3.1　レコードを検索した場合（FETCH）

(1)　4V FMBまたはSD FMBのSDBデータベースの場合

ユーザに返却されたレコード（FINDの場合は位置指示子を位置づけたレコード）の監査証跡だけが出力されます。

4V FMBのSDBデータベースのレコードを検索した場合の監査証跡の出力例を次の図に示します。

図7‒2　監査証跡の出力例（4V FMBのSDBデータベースのレコードを検索した場合）

(2)　4V AFMのSDBデータベースの場合

次のように監査証跡が出力されます。

ユーザに返却されたレコードの監査証跡だけが出力されます。

仮想ルートレコードの監査証跡は出力されません。

監査証跡の出力例を次の図に示します。

図7‒3　監査証跡の出力例（4V AFMのSDBデータベースのレコードを検索した場合）

7.3.2　レコードを格納した場合（STORE）

(1)　4V FMBまたはSD FMBのSDBデータベースの場合

格納したレコードの監査証跡だけが出力されます。

4V FMBのSDBデータベースのレコードを格納した場合の監査証跡の出力例を次の図に示します。

図7‒4　監査証跡の出力例（4V FMBのSDBデータベースのレコードを格納した場合）

7.3.3　レコードを更新した場合（MODIFY）

(1)　4V FMBのSDBデータベースの場合

更新したレコードの監査証跡だけが出力されます。

4V FMBのSDBデータベースのレコードを更新した場合の監査証跡の出力例を次の図に示します。

図7‒5　監査証跡の出力例（4V FMBのSDBデータベースのレコードを更新した場合）

7.3.4　レコードを削除した場合（ERASE）

(1)　4V FMBまたはSD FMBのSDBデータベースの親レコードを削除した場合

次のように監査証跡が出力されます。

削除のために位置づけたレコード（削除指定レコード）が監査証跡に出力されます。

親レコードの削除に伴って削除される配下の子レコード群の監査証跡は出力されません。

出力項目の「アクセス件数」には，削除される配下の子レコードの件数が含まれます。

4V FMBまたはSD FMBのSDBデータベースのレコードを削除した場合の監査証跡の出力例を次の図に示します。

図7‒6　監査証跡の出力例（4V FMBまたはSD FMBのSDBデータベースのレコードを削除した場合）

(2)　一括オプション('O')を指定して4V FMBのSDBデータベースのレコードを削除した場合【4V FMB】

次のように監査証跡が出力されます。

削除のために直前に位置づけたレコードの監査証跡だけが出力されます。

直前に位置づけたレコード以外の削除レコード群の監査証跡は出力されません。

出力項目の「アクセス件数」には，削除したすべてのレコード件数が設定されます。

一括オプション('O')を指定して，4V FMBのSDBデータベースのレコードを削除した場合の監査証跡の出力例を次の図に示します。

図7‒7　監査証跡の出力例（一括オプション('O')を指定して4V FMBのSDBデータベースのレコードを削除した場合）

7.3.5　一括削除をした場合【4V DAM，4V SAM】

(1)　4V DAMのSDBデータベースの場合

次のように監査証跡が出力されます。

仮想ルートレコードの管理情報を操作するが，仮想ルートレコードの監査証跡は出力されません。

ユーザ要求に従って，一括削除対象のデータベースとして監査証跡が出力されます。

監査証跡の出力例を次の図に示します。

図7‒8　監査証跡の出力例（一括削除をした場合）

7.3.6　複数レコードを検索した場合（FETCHDB ALL）【4V FMB】

次のように監査証跡が出力されます。

ルートレコードを含むかどうかに関係なく，各要求に対してルートレコードの監査証跡として出力されます。

監査証跡には，ルートレコードのキーと検索したレコード件数が出力されます。

監査証跡の出力例を次の図に示します。

図7‒9　監査証跡の出力例（複数レコードを検索した場合）

7.3.7　FIRSTオプション機能適用時のデータベース操作と監査証跡レコードの関係

SDBデータベースの操作時に取得される監査証跡の関連を次の図に示します。

図7‒10　SDBデータベースの操作時に取得される監査証跡の関連

注　図中の丸付き数字は，アクセス順序を示しています。

7.4　環境設定方法

環境設定方法については，マニュアル「HiRDB Version 9 システム運用ガイド」の「セキュリティ監査機能の運用」の「環境設定方法」を参照してください。

環境設定をする際，ここで説明する点に注意してください。

7.4.1　監査証跡表を格納するRDエリアの作成

pdmodコマンドのcreate rdarea文で，監査証跡表を格納するRDエリアを作成します。このとき，create rdarea文のdata modelオペランドにrelationalを指定するか，またはdata modelオペランドを省略してください。

7.4.2　監査対象イベントの定義

定義系SQLのCREATE AUDIT文で監査対象イベントを定義します。CREATE AUDIT文の指定形式を次に示します。

(1)　指定形式

項番

指定形式

指定要否

1

CREATE AUDIT

　　　〔AUDITTYPE　｛PRIVILEGE｜EVENT｜ANY｝〕

○

2

　　　FOR 操作種別

○

3

　　　〔選択オプション〕

○

4

　　　〔WHENEVER ｛SUCCESSFUL｜UNSUCCESSFUL｜ANY｝〕

○

■各項目の詳細

項番

指定形式

指定要否

5

操作種別：：＝｛ANY

○

　　　｜SESSION〔｛セッション種別｜ANY｝〕

×

　　　｜PRIVILEGE〔｛権限操作種別｜ANY｝〕

×

　　　｜DEFINITION〔｛オブジェクト定義イベント種別｜ANY｝〕

×

　　　｜ACCESS〔｛オブジェクト操作イベント種別｜ANY｝〕

×

　　　｜UTILITY〔｛ユティリティイベント種別｜ANY｝〕

×

　　　｜SDB_ACCESS〔｛SDBデータベース操作イベント種別｜ANY｝〕

○

　　　｜SDB_UTILITY〔｛SDBユティリティ操作イベント種別｜ANY｝〕｝

○

6

選択オプション：：＝｛ON オブジェクト名

　　　　　　　　　　｜BY AUTHORIZATION 認可識別子｝

○※

　　オブジェクト名：：＝

　　　　　　｛FUNCTION　認可識別子.ルーチン識別子

　　　　　　｜INDEX　認可識別子.インデクス識別子

　　　　　　｜LIST　認可識別子.表識別子

　　　　　　｜PROCEDURE　認可識別子.ルーチン識別子

　　　　　　｜RDAREA　RDエリア名

　　　　　　｜SCHEMA　認可識別子

　　　　　　｜TABLE　〔認可識別子. 〕表識別子

　　　　　　｜TRIGGER　認可識別子.トリガ識別子

　　　　　　｜TYPE　認可識別子.データ型識別子

　　　　　　｜VIEW　認可識別子.表識別子

　　　　　　｜SEQUENCE　認可識別子.順序数生成子識別子｝

×

7

　　セッション種別：：＝

　　　　｛CONNECT｜DISCONNECT｜AUTHORIZATION｝

×

8

　　権限操作種別：：＝

　　　　｛GRANT｜REVOKE｝

×

9

　　オブジェクト定義イベント種別：：＝

　　　　｛CREATE｜DROP｜ALTER｝

×

10

　　オブジェクト操作イベント種別：：＝

　　　　｛SELECT｜INSERT｜UPDATE｜DELETE｜PURGE｜ASSIGN

　　　　｜CALL｜LOCK｜NEXT VALUE｝

×

11

　　ユティリティイベント種別：：＝

　　　　｛PDLOAD｜PDRORG｜PDEXP｜PDCONSTCK｝

×

12

　　SDBデータベース操作イベント種別：：＝

　　　　｛FETCH 〔FETCHオプション〕｜STORE｜MODIFY｜ERASE

　　　　｜CLEAR｜FETCHDB ALL｝

○

13

　　FETCHオプション：：＝FIRST

○

14

　　SDBユティリティ操作イベント種別：：＝

　　　　｛PDSDBDEF｜PDSDBLOD｜PDSDBROG｝

○

（凡例）

○：指定必須のオペランドまたは指定を検討するオペランドです。

×：関係のないオペランドのため，指定不要です。

注※

ON オブジェクト名は指定できません。操作種別にSDB_ACCESSまたはSDB_UTILITYを指定してON オブジェクト名を指定した場合，KFPA19680-Eメッセージが出力されてエラーとなります。

(2)　オペランドの説明

ここでは，指定形式の項番5，6，12〜14のオペランドについてだけ説明します。そのほかのオペランドについては，マニュアル「HiRDB Version 9 SQLリファレンス」の「CREATE AUDIT（監査対象イベントの定義）」を参照してください。

5）操作種別：：＝｛ANY

　　　　　　｜SDB_ACCESS〔｛SDBデータベース操作イベント種別｜ANY｝〕

　　　　　　｜SDB_UTILITY〔｛SDBユティリティ操作イベント種別｜ANY｝〕｝

監査対象とする操作種別を指定します。個々の操作種別とANYは，個別に定義，および削除をします。例えば，SDB_UTILITYを定義した状態で，ANYだけをDROP AUDIT文で削除しても，SDB_UTILITYの定義は残ります（監査対象のままとなります）。

ANY

すべての操作種別を監査対象とします。ただし，次のオプションは無効になります。

SDBデータベース操作イベント種別のFETCHオプション

SDB_ ACCESS〔｛SDBデータベース操作イベント種別｜ANY｝〕

SDBデータベース操作イベントを監査対象に定義する場合に指定します。ANYは，すべてのSDBデータベース操作イベントを監査対象に定義する場合に指定します。ただし，ANYを指定した場合，FETCHオプションは無効になります。

個々のSDBデータベース操作イベント種別とANYは，個別に定義，および削除をします。例えば，FETCHおよびANYを定義した状態で，ANYだけをDROP AUDIT文で削除しても，FETCHの定義は残ります（監査対象のままとなります）。

SDB_UTILITY〔｛SDBユティリティ操作イベント種別｜ANY｝〕

SDBユティリティ操作イベントを監査対象に定義する場合に指定します。ANYはすべてのSDBユティリティ操作イベントを監査対象とします。個々のSDBユティリティ操作イベント種別とANYは，個別に定義，および削除をします。例えば，PDSDBLOD，PDSDBROG，およびANYを定義した状態で，ANYだけをDROP AUDIT文で削除しても，PDSDBLODおよびPDSDBROGの定義は残ります（監査対象のままとなります）。

6）選択オプション：：＝｛ON オブジェクト名｜BY AUTHORIZATION 認可識別子｝

ON オブジェクト名

このオプションは指定できません。操作種別にSDB_ACCESSまたはSDB_UTILITYを指定してON オブジェクト名を指定した場合，KFPA19680-E メッセージが出力されてエラーとなります。

BY AUTHORIZATION 認可識別子

監査証跡を取得するイベント実行者を絞り込む場合に指定します。監査対象とするイベント実行者の認可識別子を指定してください。指定しない場合は，すべてのイベント実行者が対象となります。

SDBユティリティ操作イベントを指定している場合は，指定できません。指定した場合，KFPA19680-Eメッセージが出力されてエラーとなります。

12）SDBデータベース操作イベント種別：：＝｛FETCH 〔FETCHオプション〕

｜STORE｜MODIFY｜ERASE｜CLEAR｜FETCHDB ALL｝

SDBデータベース操作イベントを監査対象として定義する場合に指定します。SDBデータベース操作イベント種別とその監査イベントが発生する操作を次の表に示します。

表7‒8　SDBデータベース操作イベント種別とその監査イベントが発生する操作

SDBデータベース操作イベント種別

権限チェックの監査イベントが発生する操作（AUDITTYPEにPRIVILEGEを指定した場合）

イベントの最終結果の監査証跡を取得する監査イベントが発生する操作（AUDITTYPEにEVENTを指定した場合）

FETCH

なし

レコードの検索（FETCH）の実行

位置指示子の位置づけ（FIND）の実行

STORE

レコードの格納（STORE）の実行

MODIFY

レコードの更新（MODIFY）の実行

ERASE

レコードの削除（ERASE）の実行

CLEAR

レコードの一括削除の実行

FETCHDB ALL

複数レコードの検索（FETCHDB ALL）の実行

13）FETCHオプション：：＝FIRST

SDBデータベース操作イベント種別のFETCHオプションを指定します。

FIRST

4V FMBまたはSD FMBのSDBデータベースを対象にした監査証跡取得オプションです。

FETCHはすべてのレコード検索をイベントの対象としますが，FIRSTを指定した場合，各レコード型に対して検索のイベントが成功した最初のレコードの監査証跡だけを取得し，以降の検索イベントで成功した同じレコード型の監査証跡は取得しません。ただし，同じレコード型であっても，レコード検索のイベントが失敗した場合は監査証跡を取得します。このオプションは，個別開始ごとにファミリ単位にルートレコードを含め，その配下の子レコードに対して適用されます。そのため，同じレコード型へのアクセスであっても，ルートレコードのキーが変わった場合（ルートレコードへの位置づけが発生した場合），イベントの対象として監査証跡が取得されます。

また，レコード検索処理の途中でこのオプションのイベント定義が有効になった場合，そのタイミングで同一レコード型に対する2回目以降の検索レコードは取得されません。

FIRSTは，4V AFMのSDBデータベースで指定しても無効になります。

FIRSTを指定する場合は，WHENEVERの指定をANYにする必要があります。操作種別でANYまたはSDB_ACCESSでANYを指定した場合，このオプションの指定は無効になります。また，FETCHとFETCH FIRSTの定義が同時に存在した場合は，FETCHの定義として動作します。このため，FETCH FIRSTの機能でイベントを取得するためには，操作種別でANYまたはSDB_ACCESSでANYを指定しないで，操作種別のイベントを個々に定義し，かつイベント種別のFETCHはFETCH FIRSTだけを定義する必要があります。

14）SDBユティリティ操作イベント種別：：＝｛PDSDBDEF｜PDSDBLOD｜PDSDBROG｝

SDBユティリティ操作イベントを監査対象として定義します。SDBユティリティ操作イベント種別とその監査イベントが発生する操作を次の表に示します。

表7‒9　SDBユティリティ操作イベント種別とその監査イベントが発生する操作

SDBユティリティ操作イベント種別

権限チェックの監査イベントが発生する操作（AUDITTYPEにPRIVILEGEを指定した場合）

イベントの最終結果の監査証跡を取得する監査イベントが発生する操作（AUDITTYPEにEVENTを指定した場合）

PDSDBDEF

pdsdbdefコマンドの実行

同左

PDSDBLOD

pdsdblodコマンドの実行

PDSDBROG

pdsdbrogコマンドの実行

(3)　SDBデータベース操作イベントのオペランドの指定と監査対象イベントの関係

SDBデータベース操作のイベント定義では，操作種別とそのほかのオペランドとの組み合わせによっては，監査証跡が出力されないことがあります。そのような定義の指定をした場合は，KFPA19680-Eメッセージが出力されます。

イベントタイプ，イベントサブタイプの指定とAUDITTYPEの指定可否を次の表に示します。

表7‒10　イベントタイプ，イベントサブタイプの指定とAUDITTYPEの指定可否

イベントタイプ（操作種別）

イベントサブタイプ（SDBデータベース操作イベント種別）

AUDITTYPEの指定可否

PRIVILEGE

EVENT

ANY

ANY

該当しません。

△

〇

△

SDB_ACCESS

FETCH

×

〇

△

STORE

×

〇

△

MODIFY

×

〇

△

ERASE

×

〇

△

CLEAR

×

〇

△

FETCHDB ALL

×

〇

△

ANY

×

〇

△

（凡例）

○：指定できます。

△：指定できるが，SDB_ACCESSに関する権限チェックの監査証跡は出力されません。

×：指定できません（KFPA19680-Eメッセージが出力されてエラーとなります）。

(4)　SDBユティリティ操作イベントのオペランドの指定と監査対象イベントの関係

SDBユティリティ操作イベントのオペランドの指定と監査対象イベントの関係を次の表に示します。

表7‒11　SDBユティリティ操作イベントのオペランドの指定と監査対象イベントの関係

項番

AUDITTYPEの指定

操作種別の指定

SDBユティリティ操作イベント種別の指定

選択オプションの指定

監査対象イベント

1

PRIVILEGE

SDB_UTILITY

PDSDBDEF

なし

pdsdbdefコマンド実行時のCONNECT権限チェックを監査対象イベントにします。

2

あり

この指定の組み合わせはエラーになります。

3

PDSDBLOD

なし

pdsdblodコマンド実行時のCONNECT権限チェックを監査対象イベントにします。

4

あり

この指定の組み合わせはエラーになります。

5

PDSDBROG

なし

pdsdbrogコマンド実行時のCONNECT権限チェックを監査対象イベントにします。

6

あり

この指定の組み合わせはエラーになります。

7

ANY

なし

項番1，3，5のすべてを監査対象イベントにします。

8

あり

この指定の組み合わせはエラーになります。

9

ANY

指定なし

なし

項番1，3，5のすべてを監査対象イベントにします。

10

あり

この指定をしても，項番7の項目は，監査対象イベントにはなりません。

11

EVENT

SDB_UTILITY

PDSDBDEF

なし

pdsdbdefコマンドの次の操作を監査対象イベントにします。

*ENTRY DICTIONARY文，*ALTER DICTIONARY文，*DELETE DICTIONARY文の実行

*CHECK DICTIONARY文の実行

*ENTRY DIRECTORY文，ALTER DIRECTORY文，DELETE DIRECTORY文の実行

SDBディレクトリ情報ファイルの作成

pdsdbdefコマンドの終了

12

あり

この指定の組み合わせはエラーになります。

13

PDSDBLOD

なし

pdsdblodコマンドの終了を監査対象イベントにします。

14

あり

この指定の組み合わせはエラーになります。

15

PDSDBROG

なし

pdsdbrogコマンドの終了を監査対象イベントにします。

16

あり

この指定の組み合わせはエラーになります。

17

ANY

なし

項番11，13，15のすべてを監査対象イベントにします。

18

あり

この指定の組み合わせはエラーになります。

19

ANY

指定なし

なし

項番11，13，15のすべてを監査対象イベントにします。

20

あり

この指定をしても，項番17の項目は，監査対象イベントにはなりません。

21

ANY

SDB_UTILITY

PDSDBDEF

なし

項番1および11を監査対象イベントにします。

22

あり

この指定の組み合わせはエラーになります。

23

PDSDBLOD

なし

項番3および13を監査対象イベントにします。

24

あり

この指定の組み合わせはエラーになります。

25

PDSDBROG

なし

項番5および15を監査対象イベントにします。

26

あり

この指定の組み合わせはエラーになります。

27

ANY

なし

項番21，23，25のすべてを監査対象イベントにします。

28

あり

この指定の組み合わせはエラーになります。

29

ANY

指定なし

なし

項番21，23，25のすべてを監査対象イベントにします。

30

あり

この指定をしても，項番27の項目は，監査対象イベントにはなりません。

7.4.3　監査対象イベントの定義の削除

定義系SQLのDROP AUDIT文で監査対象イベントの定義を削除します。DROP AUDIT文の指定形式を次に示します。

(1)　指定形式

項番

指定形式

指定要否

1

DROP AUDIT

　　　〔AUDITTYPE　｛PRIVILEGE｜EVENT｜ANY｝〕

○

2

　　　FOR 操作種別

○

3

　　　〔選択オプション〕

○

4

　　　〔WHENEVER｛SUCCESSFUL｜UNSUCCESSFUL｜ANY｝〕

○

■各項目の詳細

項番

指定形式

指定要否

5

操作種別：：＝｛ANY

○

　　　｜SESSION〔｛セッション種別｜ANY｝〕

×

　　　｜PRIVILEGE〔｛権限操作種別｜ANY｝〕

×

　　　｜DEFINITION〔｛オブジェクト定義イベント種別｜ANY｝〕

×

　　　｜ACCESS〔｛オブジェクト操作イベント種別｜ANY｝〕

×

　　　｜UTILITY〔｛ユティリティイベント種別｜ANY｝〕

×

　　　｜SDB_ACCESS〔｛SDBデータベース操作イベント種別｜ANY｝〕

○

　　　｜SDB_UTILITY〔｛SDBユティリティ操作イベント種別｜ANY｝〕｝

○

6

選択オプション：：＝｛ON オブジェクト名

　　　　　　　｜BY AUTHORIZATION 認可識別子｝

○※

　　オブジェクト名：：＝

　　　　　　　　｛FUNCTION　認可識別子.ルーチン識別子

　　　　　　　　｜INDEX　認可識別子.インデクス識別子

　　　　　　　　｜LIST　認可識別子.表識別子

　　　　　　　　｜PROCEDURE　認可識別子.ルーチン識別子

　　　　　　　　｜RDAREA　RDエリア名

　　　　　　　　｜SCHEMA　認可識別子

　　　　　　　　｜TABLE　〔認可識別子. 〕表識別子

　　　　　　　　｜TRIGGER　認可識別子.トリガ識別子

　　　　　　　　｜TYPE　認可識別子.データ型識別子

　　　　　　　　｜VIEW　認可識別子.表識別子

　　　　　　　　｜SEQUENCE　認可識別子.順序数生成子識別子｝

×

7

セッション種別：：＝

　　｛CONNECT｜DISCONNECT｜AUTHORIZATION｝

×

8

権限操作種別：：＝

　　｛GRANT｜REVOKE｝

×

9

オブジェクト定義イベント種別：：＝

　　｛CREATE｜DROP｜ALTER｝

×

10

オブジェクト操作イベント種別：：＝

　　｛SELECT｜INSERT｜UPDATE｜DELETE｜PURGE｜ASSIGN｜

　　　CALL｜LOCK｜NEXT VALUE｝

×

11

ユティリティイベント種別：：＝

　　｛PDLOAD｜PDRORG｜PDEXP｜PDCONSTCK｝

×

12

SDBデータベース操作イベント種別：：＝

　　｛FETCH 〔FETCHオプション〕｜STORE｜MODIFY｜ERASE｜

　　　CLEAR｜FETCHDB ALL｝

○

13

FETCHオプション：：＝FIRST

○

14

SDBユティリティ操作イベント種別：：＝

　　｛PDSDBDEF｜PDSDBLOD｜PDSDBROG｝

○

（凡例）

○：指定必須のオペランドまたは指定を検討するオペランドです。

×：関係のないオペランドのため，指定不要です。

注※

ON オブジェクト名は指定できません。

(2)　オペランドの説明

ここでは，指定形式の項番5，6，12〜14のオペランドについてだけ説明します。そのほかのオペランドについては，マニュアル「HiRDB Version 9 SQLリファレンス」の「CREATE AUDIT（監査対象イベントの定義）」を参照してください。

5）操作種別：：＝｛ANY

　　　　　　｜SDB_ACCESS〔｛SDBデータベース操作イベント種別｜ANY｝〕

　　　　　　｜SDB_UTILITY〔｛SDBユティリティ操作イベント種別｜ANY｝〕｝

監査対象から削除する操作種別を指定します。個々の操作種別とANYは，個別に定義，および削除をします。例えば，SDB_UTILITYを定義した状態で，ANYだけをDROP AUDIT文で削除しても，SDB_UTILITYの定義は残ります（監査対象のままとなります）。

ANY

すべての操作種別を監査対象とした定義を削除します。

SDB_ACCESS〔｛SDBデータベース操作イベント種別｜ANY｝〕

SDBデータベース操作イベントを監査対象から削除する場合に指定します。ANYは，すべてのSDBデータベース操作イベントを監査対象から削除します。個々のSDBデータベース操作イベント種別とANYは，個別に定義，および削除をします。例えば，FETCHおよびANYを定義した状態で，ANYだけをDROP AUDIT文で削除しても，FETCHの定義は残ります（監査対象のままとなります）。

SDB_UTILITY〔｛SDBユティリティ操作イベント種別｜ANY｝〕

SDBユティリティ操作イベントを監査対象から削除する場合に指定します。ANYはすべてのSDBユティリティ操作イベントを監査対象から削除します。個々のSDBユティリティ操作イベント種別とANYは，個別に定義，および削除をします。例えば，PDSDBLOD，PDSDBROG，およびANYを定義した状態で，ANYだけをDROP AUDIT文で削除しても，PDSDBLODおよびPDSDBROGの定義は残ります（監査対象のままとなります）。

6）選択オプション：：＝｛ON オブジェクト名｜BY AUTHORIZATION 認可識別子｝

ON オブジェクト名

このオプションは指定できません。

BY AUTHORIZATION 認可識別子

監査対象から削除する，イベント実行者を指定します。

12）SDBデータベース操作イベント種別：：＝｛FETCH 〔FETCHオプション〕

｜STORE｜MODIFY｜ERASE｜CLEAR｜FETCHDB ALL｝

削除対象のSDBデータベース操作種別を指定します。

13）FETCHオプション：：＝FIRST

FIRST

削除対象のSDBデータベース操作イベント種別のFETCHオプションを指定します。

14）SDBユティリティ操作イベント種別：：＝｛PDSDBDEF｜PDSDBLOD｜PDSDBROG｝

削除対象のSDBユティリティ操作イベント種別を指定します。

7.5　運用方法

セキュリティ監査機能の運用方法については，マニュアル「HiRDB Version 9 システム運用ガイド」の「セキュリティ監査機能の運用」の「運用方法」を参照してください。

ここでは，出力された監査証跡の参照方法についてだけ説明します。

7.5.1　監査証跡の参照方法

監査証跡表に格納された監査証跡を，pdrorgコマンドでアンロードしてファイル出力してください。その際，-Wオプションにdatを指定してCSV形式で出力してください。出力したファイルを入力情報とし，表計算ソフトなどにエクスポートして監査証跡の内容を確認してください。

コマンドの指定例

pdrorg -k unld -t 認可識別子.監査証跡表名 -W dat 制御情報ファイル名

7.6　監査証跡ファイルの運用

監査証跡ファイルの運用方法については，マニュアル「HiRDB Version 9 システム運用ガイド」の「監査証跡ファイルの運用」を参照してください。

7.7　監査証跡表へのデータ登録

監査証跡表へのデータ登録方法については，マニュアル「HiRDB Version 9 システム運用ガイド」の「監査証跡表へのデータ登録」を参照してください。

7.8　監査証跡表の列構成

監査証跡表の列構成については，マニュアル「HiRDB Version 9 システム運用ガイド」の「監査証跡表の列構成」を参照してください。

7.8.1　監査証跡表の列に格納される情報についての留意事項（SDBユティリティ操作イベントの場合）

(1)　EVENT_RESULT列

監査証跡表のEVENT_RESULT列には，イベントの実行結果が格納されます（権限のチェックまたはイベントが成功したかどうかが格納されます）。

次のコマンド実行時のCONNECT権限チェックで，CONNECTエラーが発生した場合，その後の監査証跡は取得されないため，CONNECTの成功時に限りイベント成否の値（成功：S）が設定されます。

pdsdbdefコマンド

pdsdblodコマンド

pdsdbrogコマンド

(2)　USED_PRIVILEGE列

監査証跡表のUSED_PRIVILEGE列には，イベントを実行したときに使用した権限が格納されます。SDBユティリティ操作イベントが実行された場合，USED_PRIVILEGE列にはCNT（CONNECT権限）が格納されます。

(3)　UAP_NAME列

監査証跡表のUAP_NAME列には，イベント発行元のUAP名が格納されます。UAP名が30文字未満の場合は，UAP名の後ろに’△’（空白）が合計30文字になるまで設定されます。

そのため，SDBユティリティ操作イベントが実行された場合，UAP_NAME列には，次の値が格納されます。

pdsdbdefコマンドの実行時：'pdsdbdef△…△'

pdsdblodコマンドの実行時：'pdsdblod△…△'

pdsdbrogコマンドの実行時：'pdsdbrog△…△'

(4)　OBJECT_SCHEMA列

監査証跡表のOBJECT_SCHEMA列には，イベントの権限チェックの対象になるオブジェクトの所有者名が格納されますが，SDBユティリティ操作イベントが実行された場合，ナル値が格納されます。

(5)　OBJECT_TYPE列

監査証跡表のOBJECT_TYPE列には，イベントの権限チェックの対象になるオブジェクトの種別が格納されます。SDBユティリティ操作イベントが実行された場合，次のどれかの値が格納されます。

SCM：SDBデータベース（SDBデータベース名）

STS：SDB格納データベース（SDBデータベース格納名）

DBS：SDBディレクトリ情報（*ENTRY DIRECTORY文のDBSCHMオペランドに指定したSDBデータベース名）

DIF：SDBディレクトリ情報ファイル（ナル値）

（　）内は，OBJECT_NAME列に格納されるオブジェクト名です。

(6)　ACCESS_COUNT列

監査証跡表のACCESS_COUNT列には，オブジェクトに対するアクセス数が格納されます。次のコマンド実行時にACCESS_COUNT列に格納される値を次に示します。

pdsdbdefコマンドの各イベント

ナル値が格納されます。

pdsdblodまたはpdsdbrogコマンドの終了

対象イベントが成功した場合はレコード数が格納されます。対象イベントが失敗した場合はナル値が格納されます。ただし，レコード数がINTEGER型の上限値より大きい場合は，INTEGER型の上限値（2,147,483,647）が格納されます。

7.8.2　監査証跡表の列に格納される情報についての留意事項（SDBデータベース操作イベントの場合）

(1)　ACCESS_COUNT列

監査証跡表のACCESS_COUNT列には，SDBデータベース操作イベントが成功したときに，オブジェクト（レコード）を検索，格納，更新，または削除したレコード数が，次の表に示すとおりに設定されます。イベントの失敗時にはNULL値が格納されます。

表7‒12　SDBデータベース操作イベントのアクセス件数

項番

データベース操作種別

1回の操作で記録するアクセス件数

単一要求

複数要求※

1

SDBデータベース操作

レコードの検索（FETCH）

位置指示子の位置づけ（FIND）

1（ただし，NOT FOUNDの場合は0）

n

Σ（要求ごとの左記件数）

i=1

2

レコードの格納（STORE）

1

3

レコードの更新（MODIFY）

4

レコードの削除（ERASE）

次のどちらかとなります。

削除レコードとそのレコード削除に伴って削除された配下の子レコードの合計数

一括オプション('O')指定で削除したレコード数

ただし，INTEGER型の上限値より大きくなった場合は，INTEGER型の上限値（2,147,483,647）となります。

n

Σ（要求ごとの左記件数）

i=1

ただし，INTEGER型の上限値より大きくなった場合は，INTEGER型の上限値（2,147,483,647）となります。

5

レコードの一括削除

1回の要求で削除したレコード数

複数要求はありません。

6

複数レコードの検索（FETCHDB ALL）

1回の要求で検索したレコード数

注※

4V AFMまたはSD FMBのSDBデータベースに対する操作の場合，複数要求はありません。

(2)　SQL_SOURCE列

監査証跡表のSQL_SOURCE列には，SDBデータベースのレコード操作入力情報が格納されます。記録するレコード操作入力情報の長さを，システム共通定義のpd_aud_sql_source_sizeオペランドで指定する必要があります。pd_aud_sql_source_sizeを指定しないか，または0を指定した場合，SQL_SOURCE列にはNULL値が記録されます。また，記録するレコード操作入力情報の長さが，pd_aud_sql_source_sizeオペランドの指定値よりも長い場合は，レコード操作入力情報の先頭から指定値までの内容が記録され，残りは切り捨てられます。このため，pd_aud_sql_source_sizeオペランドには，レコード操作入力情報に必要なサイズ以上の値を指定することを推奨します。

レコード操作入力情報に設定する情報を次の表に示します。

表7‒13　レコード操作入力情報に設定する情報（ユーザ指定値）

項番

設定情報

サイズ（バイト）

属性

要求

レコードの検索（FETCH）※

レコードの格納（STORE）

レコードの更新（MODIFY）

レコードの削除（ERASE）

レコードの一括削除

複数レコードの検索（FETCHDB ALL）

1

要求エントリ番号

2

short

〇

〇

〇

〇

〇

〇

2

アクセスモード

1

char

〇

〇

〇

〇

〇

〇

3

指示コード

1

char

〇

−

−

〇

−

〇

4

検索コード

1

char

〇

〇

−

−

−

−

5

ポインタオプション

1

char

−

〇

〇

−

−

−

6

データ格納形式オプション

1

char

〇

−

〇

−

−

−

7

予備

5

char

−

−

−

−

−

−

8

一連番号

4

char

〇

−

−

−

−

−

9

アクセス条件

可変

char

〇

〇

−

−

〇

〇

（凡例）

〇：ユーザ指定値のデータを設定

−：設定なし（0x00）

注※

位置指示子の位置づけ（FIND）も含まれます。

(a)　設定情報の内容

要求エントリ番号（1〜n）

1回のアクセスのレコード操作の順番です。要求をブロック化した複数要求の場合は，要求ごとのレコード操作の順番に1〜nとなります。

アクセスモード

＜各要求共通＞

'R'：参照

'U'：更新

指示コード

＜FETCHまたはFINDの場合＞

'F'：FIRSTポインタ

'L'：LASTポインタ

'U'：USERポインタ

'N'：NEXTポインタ

'P'：PRIORポインタ

'R'：ROWIDポインタ

＜ERASEの場合＞

'O'：最下位レベルのレコード型について全レコード削除

'S'：削除目的のレコードとその下位レベルのレコード削除

＜FETCHDB ALLの場合＞

'F'：検索範囲の最小キーのルートレコードから検索を開始

'N'：前回検索したレコードの次のレコードから検索を開始

'S'：前回の検索したファミリの検索状態に関係なく，次のルートレコードから検索を開始

検索コード

＜FETCHまたはFINDの場合＞

'N'：USERポインタからNEXT方向

'P'：USERポインタからPRIOR方向

X'00'：指定なし

ポインタオプション

＜STOREの場合＞

'U'：USERポインタにする

'N'：USERポインタにしない

X'00'：USERポインタにしない

＜MODIFYの場合＞

'U'：USERポインタにする

'C'：USERポインタを解除

'N'：USERポインタにしない

X'00'：USERポインタにしない

データ格納形式オプション

＜FETCHまたはFINDの場合＞

'D'：ユーザキー以外のキーの構成要素を除いて，データ格納エリアに格納

'E'：構成要素指定エリアで指定した構成要素だけをデータ格納

'K'：キーの構成要素を除かないでデータ格納エリアに格納

'N'：データ格納エリアへの格納をしない

＜MODIFYの場合＞

'D'：ユーザキー以外のキーの構成要素を除いて，データ格納エリアに格納

'E'：レコードの更新のためのレコードの検索で指定した構成要素だけをデータ格納

'N'：USERポインタの変更だけのため，データ格納エリアに格納していない

一連番号

検索要求で指定した一連番号です。

アクセス条件

次の図に示すフォーマットで格納します。各ブロックは，アクセス要求時のインタフェースエリアの内容をユーザが指定したサイズで設定します。そのため，ユーザが指定したサイズが，次の図に示す有効な条件や，値ブロックよりも大きなサイズで指定されている場合，各ブロックには有効な形式以外にも，ユーザが指定したエリアの内容がそのまま設定されます。

図7‒11　アクセス条件の形式

■キーの条件の条件ブロック形式

キーの条件の条件ブロック形式を次の図に示します。

図7‒12　キーの条件の条件ブロックの形式

キーの条件の条件ブロック情報を次の表に示します。

表7‒14　キーの条件の条件ブロック情報

相対位置

（バイト）

長さ

（バイト）

属性

内容

備考

0＋11×(N−1)

8

char

構成要素名称

'DBKEY△△△'

なし

8＋11×(N−1)

2

char

比較記号

'GT'または'>△'：大きい

'GE'または'>='：大きいか等しい

'LT'または'<△'：小さい

'LE'または'<='：小さいか等しい

'EQ'または'△='：等しい

なし

10＋11×(N−1)

1

char

論理式

'*'または'&'：論理積

接続記号

'-'または'_'

次に条件式がある場合は論理式を指定し，最後の条件式では接続記号となります。

（凡例）

N：先頭からの条件式数

△：半角スペース

■キー以外の条件の条件ブロック形式

キー以外の条件の条件ブロックの形式を次の図に示します。

図7‒13　キー以外の条件の条件ブロックの形式

キー以外の条件の条件ブロック情報を次の表に示します。

表7‒15　キー以外の条件の条件ブロック情報

相対位置

（バイト）

長さ

（バイト）

属性

内容

備考

0＋11×(N−1)

8

char

構成要素名称

なし

8＋11×(N−1)

2

char

比較記号

'GT'または'>△'：大きい

'GE'または'>='：大きいか等しい

'LT'または'<△'：小さい

'LE'または'<='：小さいか等しい

'EQ'または'△='：等しい

'NE'または'^='：等しくない

なし

10＋11×(N−1)

1

char

論理式

'*'または'&'：論理積

'+'または'|'：論理和

接続記号

'-'または'_'

次に条件式がある場合は論理式を指定し，最後の条件式では接続記号となります。

（凡例）

N：先頭からの条件式数

△：半角スペース

■キーの条件の値ブロック形式

キーの条件の値ブロックの形式を次の図にしまします。

図7‒14　キーの条件の値ブロックの形式

キーの条件の値ブロック情報を次の表に示します。

表7‒16　キーの条件の値ブロック情報

相対位置

（バイト）

長さ

（バイト）

属性

内容

1つ前の構成要素までのサイズの合計

構成要素のサイズ

キーの条件を構成する各構成要素のデータ型の属性

値

キーの条件式の条件ブロックで指定した構成要素の値

■キー以外の条件の値ブロック形式

キー以外の条件の値ブロック形式を次の図に示します。

図7‒15　キー以外の条件の値ブロック形式

キー以外の条件の値ブロック情報を次の表に示します。

表7‒17　キー以外の条件の値ブロック情報

相対位置

（バイト）

長さ

（バイト）

属性

内容

1つ前の構成要素までのサイズの合計

構成要素のサイズ

キー以外の条件を構成する各構成要素のデータ型の属性

値

キー以外の条件式の条件ブロックで指定した構成要素の値

(3)　SQL_DATA列

監査証跡表のSQL_DATA列には，SDBデータベースのレコード操作出力情報が格納されます。記録するレコード操作出力情報の長さを，システム共通定義のpd_aud_sql_data_sizeオペランドで指定する必要があります。pd_aud_sql_data_sizeオペランドを省略するか，または0を指定した場合はNULL値が記録されます。また，記録するレコード操作出力情報の長さが，pd_aud_sql_data_sizeオペランドの指定値よりも長い場合は，レコード操作出力情報の先頭から指定値までの内容が記録され，残りは切り捨てられます。このため，pd_aud_sql_data_sizeオペランドには，レコード操作出力情報に必要なサイズ以上の値を指定することを推奨します。

レコード操作出力情報の形式を次の図に示します。

図7‒16　レコード操作出力情報の形式

注※

レコード操作キー情報の形式および長さについては，「(a)　レコード操作キー情報」を参照してください。

レコード操作出力情報を次の表に示します。

表7‒18　レコード操作出力情報

相対位置

（バイト）

長さ

（バイト）

属性

内容

備考

0

1

char

＜ヘッダ部＞

SDBデータベース種別

次の値を設定します。

4V FMBまたはSD FMBの場合：'F'

4V DAMの場合：'D'

4V MAMの場合：'M'

4V TAMの場合：'T'

4V SAMの場合：'S'

なし

1

7

char

＜ヘッダ部＞

予備(0x00)

なし

8

2

short

＜情報管理部＞

情報数（n）

なし

10

1×n

char

＜情報管理部＞

情報領域の存在を示すインジケータ（IND）を出力情報数分作成します。

インジケータ（IND）は，情報1〜nにそれぞれ対応していて，各情報領域の存在を管理し，次の値を設定します。

情報領域あり：0x00

情報領域なし：0xFF

なし

10＋(1×n)

4

int

＜情報1＞

SQLCODE

SDBデータベース操作の処理結果（SQLCODE）を設定します。

なし

10＋(1×n)＋ SQLCODEのサイズ※

4

int

＜情報2＞

アクセス件数

「表7-12　SDBデータベース操作イベントのアクセス件数」の1回の操作で記録するアクセス件数の単一要求の内容で設定します。複数要求の場合も，個々のレコードごとに単一要求の内容で設定します。

エラーの場合（SQLCODE<0）や，情報の取得ができない場合は，領域そのものが存在しません（対応する情報管理部のIND：0xFF）。

10＋(1×n)＋ SQLCODEのサイズ※＋アクセス件数のサイズ※

「(a)　レコード操作キー情報」を参照

＜情報3＞

レコード操作キー情報を設定します。

注※

情報管理部の対応するインジケータ（IND）が，情報領域なし（0xFF）の場合は0となります。

(a)　レコード操作キー情報

■4V FMBまたはSD FMBのSDBデータベースの場合

レコード操作キー情報の形式を次の図に示します。

図7‒17　レコード操作キー情報の形式（4V FMBまたはSD FMBのSDBのデータベースの場合）

［説明］

サイズ部には，すべてのエントリ（RK〜UK）が存在し，それぞれキー部の情報と対応します。サイズ部の各エントリに設定したサイズでキー情報が存在します。サイズが0の場合，キー情報の領域そのものが存在しません。複数レコードの検索（FETCHDB ALL）では，RKおよびルートレコードのデータベースキーだけを設定します。

NOT FOUND時（SQLCODE=100）は，アクセスレコードの階層レベルのキーサイズ（複数レコードの検索（FETCHDB ALL）の場合はRK）およびUKに0を設定します。

RK：ルートレコードのデータベースキーのサイズを設定します。

K2〜K15：子レコードの場合，アクセスしたレコードの階層まで一連番号のサイズ4を設定し，それ以降は0を設定します。

UK：アクセスレコードがユーザキーを持つ場合，ユーザキーサイズを設定し，持たない場合は0を設定します。

■4V AFMのSDBデータベースの場合

レコード操作キー情報の形式を次の図に示します。

図7‒18　レコード操作キー情報の形式（4V AFMのSDBデータベースの場合）

［説明］

サイズ部には，すべてのエントリ（K〜UK）が存在し，L2〜L7，Nはそれぞれキー部の情報と対応します。サイズ部の各エントリに設定したサイズでキー情報が存在します。サイズ0の場合，キー情報の領域そのものが存在しません。

NOT FOUND時（SQLCODE=100）は，サイズ部のエントリに0を設定します。

K：キー全体のサイズ

L2〜L7：各レベルのキー（構成要素名称がDBKEYで一連番号を除く）サイズ

X：未使用エントリ

0を設定します。このエントリに対応するキー情報の領域はありません。

N：一連番号のエリアサイズ

4を設定します。

UK：アクセスレコードがユーザキーを持つ場合，ユーザキーサイズを設定します。持たない場合は，0を設定します。

7.8.3　イベントタイプおよびイベントサブタイプの詳細

イベントタイプおよびイベントサブタイプの詳細については，マニュアル「HiRDB Version 9 システム運用ガイド」の「監査証跡表の列構成」の「イベントタイプおよびイベントサブタイプの詳細」を参照してください。

さらに，次の表に示すSDBユティリティ操作イベントおよびSDBデータベース操作イベントに関するイベントタイプおよびイベントサブタイプがあります。

表7‒19　SDBユティリティ操作イベントおよびSDBデータベース操作イベントに関するイベントタイプおよびイベントサブタイプ

監査イベント

イベントタイプの値

イベントサブタイプの値

詳細

SDBユティリティ操作イベント

SDU

DEF

HiRDB/SD定義ユティリティ（pdsdbdefコマンド）の実行

LOD

HiRDB/SDデータベース作成ユティリティ（pdsdblodコマンド）の実行

ROG

HiRDB/SDデータベース再編成ユティリティ（pdsdbrogコマンド）の実行

ENT

pdsdbdefコマンドの*ENTRY DICTIONARY文または*ENTRY DIRECTORY文の実行

DEL

pdsdbdefコマンドの*DELETE DICTIONARY文または*DELETE DIRECTORY文の実行

ALT

pdsdbdefコマンドの*ALTER DICTIONARY文または*ALTER DIRECTORY文の実行

CHK

pdsdbdefコマンドの*CHECK DICTIONARY文の実行

INF

pdsdbdefコマンドのSDBディレクトリ情報ファイルの作成

SDBデータベース操作イベント

SDA

FTC

レコードの検索（FETCH）の実行

STR

レコードの格納（STORE）の実行

MOD

レコードの更新（MODIFY）の実行

ERS

レコードの削除（ERASE）の実行

CLA

レコードの一括削除の実行

FTA

複数レコードの検索（FETCHDB ALL）の実行

7.8.4　SQLコードまたは終了コードとイベント成否の詳細

SQLコードまたは終了コードとイベント成否の詳細については，マニュアル「HiRDB Version 9 システム運用ガイド」の「監査証跡表の列構成」の「SQLコードまたは終了コードとイベント成否の詳細」を参照してください。

SDBユティリティ操作イベントに関するイベント成否の詳細については，次の表に示します。

表7‒20　SDBユティリティ操作イベントに関するイベント成否の詳細

イベント名称

終了コードの値

意味

イベント成否の値

備考

pdsdbdef（SDBディクショナリ情報の操作）

0

成功

S

正常終了

12

失敗

F

異常終了

pdsdbdef（データベース定義のチェック）

0

成功

S

正常終了

12

失敗

F

異常終了

pdsdbdef（SDBディレクトリ情報の操作）

0

成功

S

正常終了

12

失敗

F

異常終了

pdsdbdef（SDBディレクトリ情報ファイルの作成）

0

成功

S

正常終了

12

失敗

F

異常終了

pdsdbdefコマンドの終了

0

成功

S

正常終了

12

失敗

F

異常終了

pdsdblodコマンドの終了

0

成功

S

正常終了

4

一部失敗

U

警告レベルのエラー（入力データのエラーを検知）

8

失敗

F

コマンドの指定誤り

12

失敗

F

異常終了

pdsdbrogコマンドの終了

0

成功

S

正常終了

4

一部失敗

U

警告レベルのエラー

8

失敗

F

コマンドの指定誤り

12

失敗

F

異常終了

7.9　監査証跡の絞り込み

監査証跡の絞り込みをすると，特定の監査証跡だけを取得できます。監査証跡の絞り込みは，定義系SQLのCREATE AUDIT文で条件を定義し，必要に応じてDROP AUDIT文で削除できます。

詳細については，マニュアル「HiRDB Version 9 システム運用ガイド」の「監査証跡の絞り込み」を参照してください。

7.10　障害が発生したときの対処方法

監査証跡ファイルに障害が発生したときの対処方法については，マニュアル「HiRDB Version 9 システム運用ガイド」の「監査証跡ファイルに障害が発生したときの対処方法」を参照してください。

自動データロード機能適用中に障害が発生したときの対処方法については，マニュアル「HiRDB Version 9 システム運用ガイド」の「自動データロード機能適用中に障害が発生したときの対処方法」を参照してください。

7.11　ほかの機能との関連

系切り替え機能との関連

切り替え先の系で監査証跡の取得を引き継ぐかどうかは，切り替え元のHiRDBの終了モードによって決まります。切り替え先の系が再開始の場合は系を切り替える前の状態を引き継ぎます。切り替え先の系が正常開始の場合はpd_auditオペランドの指定に従います。

障害が発生して系が切り替わった場合，切り替わる直前の監査証跡は正しく取得されません。

インナレプリカ機能との関連

ペアボリューム化（ディスクの二重化）については監査証跡を取得しません。ペアボリューム化を監査するにはOSの監査機能を使用してください。

7.12　監査証跡のレコード項目

監査証跡のレコード項目については，マニュアル「HiRDB Version 9 システム運用ガイド」の「監査証跡のレコード項目（権限チェック時）」および「監査証跡のレコード項目（イベント終了時）」を参照してください。

ここでは，SDBユティリティ操作イベントで出力される監査証跡のレコード項目について説明します。

7.12.1　pdsdbdefコマンドの場合

監査証跡のレコード項目（pdsdbdefコマンドの場合）を次の表に示します。

表7‒21　監査証跡のレコード項目（pdsdbdefコマンドの場合）

項番

監査証跡のレコード項目

イベントの種類

権限チェック

操作※1

コマンドの終了

1

ユーザ識別子

○

○

○

2

イベント実行日

○

○

○

3

イベント実行時刻

○

○

○

4

イベント実行時刻（マイクロ秒）

○

○

○

5

イベントタイプ

SDU

6

イベントサブタイプ

DEF

○※2

DEF

7

イベント成否

○※3

○

○

8

使用した権限

CNT

△△△

△△△

9

UAP名称

pdsdbdef△…△（30バイト固定）

10

サービス名称

−

−

−

11

IPアドレス

−

−

−

12

プロセスID

○

○

○

13

スレッドID

−

−

−

14

ホスト名

○

○

○

15

ユニット識別子

−

−

−

16

サーバ名称

−

−

−

17

コネクト通番

−

−

−

18

SQL通番

−

−

−

19

オブジェクトの所有者名

−

−

−

20

オブジェクト名称

−

○※4

−

21

オブジェクト種別

−

○※5

−

22

付与，削除，変更した権限

−

−

−

23

権限を付与，削除，変更されたユーザ識別子，またはイベント対象のユーザ識別子

−

−

−

24

監査関連オペランドの定義値

−

−

−

25

監査証跡種別

−

E

E

26

SQLコードまたは終了コード

−

○

○

27

スワップ元監査証跡ファイル名称

−

−

−

28

スワップ先監査証跡ファイル名称

−

−

−

29

セキュリティ関連変更種別

−

−

−

30

セキュリティ関連変更前設定値

−

−

−

31

セキュリティ関連変更後設定値

−

−

−

32

監査証跡表オプション

−

−

−

33

アクセス件数

−

−

−

34

SQL文

−

−

−

35

SQLデータ

−

−

−

36

ユーザ付加情報1

−

−

−

37

ユーザ付加情報2

−

−

−

38

ユーザ付加情報3

−

−

−

39

関連製品付加情報1

−

−

−

40

監査証跡表へのデータ登録時刻印

○

○

○

41

監査証跡表へのデータ登録時の通番

○

○

○

（凡例）

○：情報を取得します。

−：情報を取得しません。または該当しません。

△：半角空白を意味しています。

注

出力されるレコード数については，「表3-21　出力される監査証跡のレコード数（SDBユティリティ操作イベントの場合）」を参照してください。

pdsdbdefコマンドの延長で実行されるSQL文はありません。

pdsdbdefコマンドを実行したユニットの監査証跡ファイルに出力されます。

pdsdbdefコマンドの実行時，CONNECT権限チェックでCONNECTエラーが発生した場合，すべての監査証跡が取得されません。

注※1

次の操作が該当します。

SDBディクショナリ情報の操作

データベース定義のチェック

SDBディレクトリ情報の操作

SDBディレクトリ情報ファイルの作成

注※2

イベントサブタイプに出力される情報については，「7.8.3　イベントタイプおよびイベントサブタイプの詳細」を参照してください。

注※3

CREATE AUDIT文の指定内容に関係なく，pdsdbdefコマンド実行時のCONNECT権限チェックが失敗した場合，監査証跡は取得されません。

注※4

SDBディレクトリ情報ファイルの作成時は，オブジェクト名称は取得されません。

注※5

オブジェクト種別に出力される情報については，「7.8.1(5)　OBJECT_TYPE列」を参照してください。

7.12.2　pdsdblodコマンドの場合

監査証跡のレコード項目（pdsdblodコマンドの場合）を次の表に示します。

表7‒22　監査証跡のレコード項目（pdsdblodコマンドの場合）

項番

監査証跡のレコード項目

イベントの種類

権限チェック

コマンドの終了

1

ユーザ識別子

○

○

2

イベント実行日

○

○

3

イベント実行時刻

○

○

4

イベント実行時刻（マイクロ秒）

○

○

5

イベントタイプ

SDU

6

イベントサブタイプ

LOD

7

イベント成否

○※1

○

8

使用した権限

CNT

△△△

9

UAP名称

pdsdblod△…△（30バイト固定）

10

サービス名称

−

−

11

IPアドレス

−

−

12

プロセスID

○

○

13

スレッドID

−

−

14

ホスト名

○

○

15

ユニット識別子

−

−

16

サーバ名称

−

−

17

コネクト通番

−

−

18

SQL通番

−

−

19

オブジェクトの所有者名

−

−

20

オブジェクト名称

−

○

21

オブジェクト種別

−

SCM※2

22

付与，削除，変更した権限

−

−

23

権限を付与，削除，変更されたユーザ識別子，またはイベント対象のユーザ識別子

−

−

24

監査関連オペランドの定義値

−

−

25

監査証跡種別

−

E

26

SQLコードまたは終了コード

−

○

27

スワップ元監査証跡ファイル名称

−

−

28

スワップ先監査証跡ファイル名称

−

−

29

セキュリティ関連変更種別

−

−

30

セキュリティ関連変更前設定値

−

−

31

セキュリティ関連変更後設定値

−

−

32

監査証跡表オプション

−

−

33

アクセス件数

−

○

34

SQL文

−

−

35

SQLデータ

−

−

36

ユーザ付加情報1

−

−

37

ユーザ付加情報2

−

−

38

ユーザ付加情報3

−

−

39

関連製品付加情報1

−

−

40

監査証跡表へのデータ登録時刻印

○

○

41

監査証跡表へのデータ登録時の通番

○

○

（凡例）

○：情報を取得します。

−：情報を取得しません。または該当しません。

△：半角空白を意味しています。

注

pdsdblodコマンドが1回実行されると1レコードが記録されます。

pdsdblodコマンドの延長で実行されるSQL文はありません。

pdsdblodコマンドを実行したユニットの監査証跡ファイルに出力されます。

pdsdblodコマンドの実行時，CONNECT権限チェックでCONNECTエラーが発生した場合，すべての監査証跡が取得されません。

注※1

CREATE AUDIT文の指定内容に関係なく，pdsdblodコマンド実行時のCONNECT権限チェックが失敗した場合，監査証跡は取得されません。

注※2

インデクスの再作成を実行した場合，オブジェクト種別はIDXとなります。

7.12.3　pdsdbrogコマンドの場合

監査証跡のレコード項目（pdsdbrogコマンドの場合）を次の表に示します。

表7‒23　監査証跡のレコード項目（pdsdbrogコマンドの場合）

項番

監査証跡のレコード項目

イベントの種類

権限チェック

コマンドの終了

1

ユーザ識別子

○

○

2

イベント実行日

○

○

3

イベント実行時刻

○

○

4

イベント実行時刻（マイクロ秒）

○

○

5

イベントタイプ

SDU

6

イベントサブタイプ

ROG

7

イベント成否

○※

○

8

使用した権限

CNT

△△△

9

UAP名称

pdsdbrog△…△（30バイト固定）

10

サービス名称

−

−

11

IPアドレス

−

−

12

プロセスID

○

○

13

スレッドID

−

−

14

ホスト名

○

○

15

ユニット識別子

−

−

16

サーバ名称

−

−

17

コネクト通番

−

−

18

SQL通番

−

−

19

オブジェクトの所有者名

−

−

20

オブジェクト名称

−

○

21

オブジェクト種別

−

SCM

22

付与，削除，変更した権限

−

−

23

権限を付与，削除，変更されたユーザ識別子，またはイベント対象のユーザ識別子

−

−

24

監査関連オペランドの定義値

−

−

25

監査証跡種別

−

E

26

SQLコードまたは終了コード

−

○

27

スワップ元監査証跡ファイル名称

−

−

28

スワップ先監査証跡ファイル名称

−

−

29

セキュリティ関連変更種別

−

−

30

セキュリティ関連変更前設定値

−

−

31

セキュリティ関連変更後設定値

−

−

32

監査証跡表オプション

−

−

33

アクセス件数

−

○

34

SQL文

−

−

35

SQLデータ

−

−

36

ユーザ付加情報1

−

−

37

ユーザ付加情報2

−

−

38

ユーザ付加情報3

−

−

39

関連製品付加情報1

−

−

40

監査証跡表へのデータ登録時刻印

○

○

41

監査証跡表へのデータ登録時の通番

○

○

（凡例）

○：情報を取得します。

−：情報を取得しません。または該当しません。

△：半角空白を意味しています。

注

pdsdbrogコマンドが1回実行されると1レコードが記録されます。

pdsdbrogコマンドの延長で実行されるSQL文はありません。

pdsdbrogコマンドを実行したユニットの監査証跡ファイルに出力されます。

pdsdbrogコマンドの実行時，CONNECT権限チェックでCONNECTエラーが発生した場合，すべての監査証跡が取得されません。

注※

CREATE AUDIT文の指定内容に関係なく，pdsdbrogコマンド実行時のCONNECT権限チェックが失敗した場合，監査証跡は取得されません。

7.12.4　レコードの検索（FETCH）または位置指示子の位置づけ（FIND）の場合

監査証跡のレコード項目（レコードの検索（FETCH）または位置指示子の位置づけ（FIND）の場合）を次の表に示します。

表7‒24　監査証跡のレコード項目（レコードの検索（FETCH）または位置指示子の位置づけ（FIND）の場合）

項番

監査証跡のレコード項目

イベントの終了

1

ユーザ識別子

○

2

イベント実行日

○

3

イベント実行時刻

○

4

イベント実行時刻（マイクロ秒）

○

5

イベントタイプ

SDA

6

イベントサブタイプ

FTC

7

イベント成否

○

8

使用した権限

△△△

9

UAP名称

○

10

サービス名称

○

11

IPアドレス

○

12

プロセスID

○

13

スレッドID

○

14

ホスト名

○

15

ユニット識別子

○

16

サーバ名称

○

17

コネクト通番

○

18

SQL通番※1

○

19

オブジェクトの所有者名

データベース名

20

オブジェクト名称※2

○

21

オブジェクト種別※2

SCHまたはTBL

22

付与，削除，変更した権限

−

23

権限を付与，削除，変更されたユーザ識別子，またはイベント対象のユーザ識別子

−

24

監査関連オペランドの定義値

−

25

監査証跡種別

E

26

SQLコードまたは終了コード

○

27

スワップ元監査証跡ファイル名称

−

28

スワップ先監査証跡ファイル名称

−

29

セキュリティ関連変更種別

−

30

セキュリティ関連変更前設定値

−

31

セキュリティ関連変更後設定値

−

32

監査証跡表オプション

−

33

アクセス件数

○

34

SQL文

○

35

SQLデータ

○

36

ユーザ付加情報1

○

37

ユーザ付加情報2

○

38

ユーザ付加情報3

○

39

関連製品付加情報1

−

40

監査証跡表へのデータ登録時刻印

○

41

監査証跡表へのデータ登録時の通番

○

（凡例）

○：情報を取得します。

−：情報を取得しません。または該当しません。

△：半角空白を意味しています。

注

SDBデータベース操作の要求単位に1レコードが記録されます。

SDBデータベース操作の延長で実行されるSQL文はありません。

要求を受け付けたフロントエンドサーバがあるユニットの監査証跡ファイルに出力されます。

注※1

SQL通番は，SDBデータベースを操作するAPIまたはDMLの要求通番と読み替えてください。また，複数要求の場合は，SDBデータベース操作の要求単位ごとに同じ通番となります。

注※2

SDBデータベースを操作するAPIまたはDMLでレコード名を指定してアクセスした場合，オブジェクト種別にはTBLが，オブジェクト名称にはレコード名が設定されます。また，データベース名を指定してアクセスした場合，オブジェクト種別にはSCHが，オブジェクト名称にはデータベース名が設定されます。

7.12.5　レコードの格納（STORE）の場合

監査証跡のレコード項目（レコードの格納（STORE）の場合）を次の表に示します。

表7‒25　監査証跡のレコード項目（レコードの格納（STORE）の場合）

項番

監査証跡のレコード項目

イベントの終了

1

ユーザ識別子

○

2

イベント実行日

○

3

イベント実行時刻

○

4

イベント実行時刻（マイクロ秒）

○

5

イベントタイプ

SDA

6

イベントサブタイプ

STR

7

イベント成否

○

8

使用した権限

△△△

9

UAP名称

○

10

サービス名称

○

11

IPアドレス

○

12

プロセスID

○

13

スレッドID

○

14

ホスト名

○

15

ユニット識別子

○

16

サーバ名称

○

17

コネクト通番

○

18

SQL通番※1

○

19

オブジェクトの所有者名

データベース名

20

オブジェクト名称※2

○

21

オブジェクト種別※2

TBL

22

付与，削除，変更した権限

−

23

権限を付与，削除，変更されたユーザ識別子，またはイベント対象のユーザ識別子

−

24

監査関連オペランドの定義値

−

25

監査証跡種別

E

26

SQLコードまたは終了コード

○

27

スワップ元監査証跡ファイル名称

−

28

スワップ先監査証跡ファイル名称

−

29

セキュリティ関連変更種別

−

30

セキュリティ関連変更前設定値

−

31

セキュリティ関連変更後設定値

−

32

監査証跡表オプション

−

33

アクセス件数

○

34

SQL文

○

35

SQLデータ

○

36

ユーザ付加情報1

○

37

ユーザ付加情報2

○

38

ユーザ付加情報3

○

39

関連製品付加情報1

−

40

監査証跡表へのデータ登録時刻印

○

41

監査証跡表へのデータ登録時の通番

○

（凡例）

○：情報を取得します。

−：情報を取得しません。または該当しません。

△：半角空白を意味しています。

注

SDBデータベース操作の要求単位に1レコードが記録されます。

SDBデータベース操作の延長で実行されるSQL文はありません。

要求を受け付けたフロントエンドサーバがあるユニットの監査証跡ファイルに出力されます。

注※1

SQL通番は，SDBデータベースを操作するAPIまたはDMLの要求通番と読み替えてください。また，複数要求の場合は，SDBデータベース操作の要求単位ごとに同じ通番となります。

注※2

オブジェクト種別にはTBLが，オブジェクト名称にはレコード名が設定されます。

7.12.6　レコードの更新（MODIFY）の場合

監査証跡のレコード項目（レコードの更新（MODIFY）の場合）を次の表に示します。

表7‒26　監査証跡のレコード項目（レコードの更新（MODIFY）の場合）

項番

監査証跡のレコード項目

イベントの終了

1

ユーザ識別子

○

2

イベント実行日

○

3

イベント実行時刻

○

4

イベント実行時刻（マイクロ秒）

○

5

イベントタイプ

SDA

6

イベントサブタイプ

MOD

7

イベント成否

○

8

使用した権限

△△△

9

UAP名称

○

10

サービス名称

○

11

IPアドレス

○

12

プロセスID

○

13

スレッドID

○

14

ホスト名

○

15

ユニット識別子

○

16

サーバ名称

○

17

コネクト通番

○

18

SQL通番※1

○

19

オブジェクトの所有者名

データベース名

20

オブジェクト名称※2

○

21

オブジェクト種別※2

TBL

22

付与，削除，変更した権限

−

23

権限を付与，削除，変更されたユーザ識別子，またはイベント対象のユーザ識別子

−

24

監査関連オペランドの定義値

−

25

監査証跡種別

E

26

SQLコードまたは終了コード

○

27

スワップ元監査証跡ファイル名称

−

28

スワップ先監査証跡ファイル名称

−

29

セキュリティ関連変更種別

−

30

セキュリティ関連変更前設定値

−

31

セキュリティ関連変更後設定値

−

32

監査証跡表オプション

−

33

アクセス件数

○

34

SQL文

○

35

SQLデータ

○

36

ユーザ付加情報1

○

37

ユーザ付加情報2

○

38

ユーザ付加情報3

○

39

関連製品付加情報1

−

40

監査証跡表へのデータ登録時刻印

○

41

監査証跡表へのデータ登録時の通番

○

（凡例）

○：情報を取得します。

−：情報を取得しません。または該当しません。

△：半角空白を意味しています。

注

SDBデータベース操作の要求単位に1レコードが記録されます。

SDBデータベース操作の延長で実行されるSQL文はありません。

要求を受け付けたフロントエンドサーバがあるユニットの監査証跡ファイルに出力されます。

注※1

SQL通番は，SDBデータベースを操作するAPIまたはDMLの要求通番と読み替えてください。また，複数要求の場合は，SDBデータベース操作の要求単位ごとに同じ通番となります。

注※2

オブジェクト種別にはTBLが，オブジェクト名称にはレコード名が設定されます。

7.12.7　レコードの削除（ERASE）の場合

監査証跡のレコード項目（レコードの削除（ERASE）の場合）を次の表に示します。

表7‒27　監査証跡のレコード項目（レコードの削除（ERASE）の場合）

項番

監査証跡のレコード項目

イベントの終了

1

ユーザ識別子

○

2

イベント実行日

○

3

イベント実行時刻

○

4

イベント実行時刻（マイクロ秒）

○

5

イベントタイプ

SDA

6

イベントサブタイプ

ERS

7

イベント成否

○

8

使用した権限

△△△

9

UAP名称

○

10

サービス名称

○

11

IPアドレス

○

12

プロセスID

○

13

スレッドID

○

14

ホスト名

○

15

ユニット識別子

○

16

サーバ名称

○

17

コネクト通番

○

18

SQL通番※1

○

19

オブジェクトの所有者名

データベース名

20

オブジェクト名称※2

○

21

オブジェクト種別※2

TBL

22

付与，削除，変更した権限

−

23

権限を付与，削除，変更されたユーザ識別子，またはイベント対象のユーザ識別子

−

24

監査関連オペランドの定義値

−

25

監査証跡種別

E

26

SQLコードまたは終了コード

○

27

スワップ元監査証跡ファイル名称

−

28

スワップ先監査証跡ファイル名称

−

29

セキュリティ関連変更種別

−

30

セキュリティ関連変更前設定値

−

31

セキュリティ関連変更後設定値

−

32

監査証跡表オプション

−

33

アクセス件数

○

34

SQL文

○

35

SQLデータ

○

36

ユーザ付加情報1

○

37

ユーザ付加情報2

○

38

ユーザ付加情報3

○

39

関連製品付加情報1

−

40

監査証跡表へのデータ登録時刻印

○

41

監査証跡表へのデータ登録時の通番

○

（凡例）

○：情報を取得します。

−：情報を取得しません。または該当しません。

△：半角空白を意味しています。

注

SDBデータベース操作の要求単位に1レコードが記録されます。

SDBデータベース操作の延長で実行されるSQL文はありません。

要求を受け付けたフロントエンドサーバがあるユニットの監査証跡ファイルに出力されます。

注※1

SQL通番は，SDBデータベースを操作するAPIまたはDMLの要求通番と読み替えてください。また，複数要求の場合は，SDBデータベース操作の要求単位ごとに同じ通番となります。

注※2

オブジェクト種別にはTBLが，オブジェクト名称にはレコード名が設定されます。

7.12.8　レコードの一括削除の場合【4V DAM，4V SAM】

監査証跡のレコード項目（レコードの一括削除の場合）を次の表に示します。

表7‒28　監査証跡のレコード項目（レコードの一括削除の場合）

項番

監査証跡のレコード項目

イベントの終了

1

ユーザ識別子

○

2

イベント実行日

○

3

イベント実行時刻

○

4

イベント実行時刻（マイクロ秒）

○

5

イベントタイプ

SDA

6

イベントサブタイプ

CLA

7

イベント成否

○

8

使用した権限

△△△

9

UAP名称

○

10

サービス名称

○

11

IPアドレス

○

12

プロセスID

○

13

スレッドID

○

14

ホスト名

○

15

ユニット識別子

○

16

サーバ名称

○

17

コネクト通番

○

18

SQL通番※1

○

19

オブジェクトの所有者名

データベース名

20

オブジェクト名称※2

○

21

オブジェクト種別※2

SCH

22

付与，削除，変更した権限

−

23

権限を付与，削除，変更されたユーザ識別子，またはイベント対象のユーザ識別子

−

24

監査関連オペランドの定義値

−

25

監査証跡種別

E

26

SQLコードまたは終了コード

○

27

スワップ元監査証跡ファイル名称

−

28

スワップ先監査証跡ファイル名称

−

29

セキュリティ関連変更種別

−

30

セキュリティ関連変更前設定値

−

31

セキュリティ関連変更後設定値

−

32

監査証跡表オプション

−

33

アクセス件数

○

34

SQL文

○

35

SQLデータ

○

36

ユーザ付加情報1

○

37

ユーザ付加情報2

○

38

ユーザ付加情報3

○

39

関連製品付加情報1

−

40

監査証跡表へのデータ登録時刻印

○

41

監査証跡表へのデータ登録時の通番

○

（凡例）

○：情報を取得します。

−：情報を取得しません。または該当しません。

△：半角空白を意味しています。

注

SDBデータベース操作の要求単位に1レコードが記録されます。

SDBデータベース操作の延長で実行されるSQL文はありません。

要求を受け付けたフロントエンドサーバがあるユニットの監査証跡ファイルに出力されます。

注※1

SQL通番は，SDBデータベースを操作するAPIの要求通番と読み替えてください。

注※2

オブジェクト種別にはSCHが，オブジェクト名称にはデータベース名が設定されます。

7.12.9　複数レコードの検索（FETCHDB ALL）の場合【4V FMB】

監査証跡のレコード項目（複数レコードの検索（FETCHDB ALL）の場合）を次の表に示します。

表7‒29　監査証跡のレコード項目（複数レコードの検索（FETCHDB ALL）の場合）

項番

監査証跡のレコード項目

イベントの終了

1

ユーザ識別子

○

2

イベント実行日

○

3

イベント実行時刻

○

4

イベント実行時刻（マイクロ秒）

○

5

イベントタイプ

SDA

6

イベントサブタイプ

FTA

7

イベント成否

○

8

使用した権限

△△△

9

UAP名称

○

10

サービス名称

○

11

IPアドレス

○

12

プロセスID

○

13

スレッドID

○

14

ホスト名

○

15

ユニット識別子

○

16

サーバ名称

○

17

コネクト通番

○

18

SQL通番※1

○

19

オブジェクトの所有者名

データベース名

20

オブジェクト名称※2

○

21

オブジェクト種別※2

SCH

22

付与，削除，変更した権限

−

23

権限を付与，削除，変更されたユーザ識別子，またはイベント対象のユーザ識別子

−

24

監査関連オペランドの定義値

−

25

監査証跡種別

E

26

SQLコードまたは終了コード

○

27

スワップ元監査証跡ファイル名称

−

28

スワップ先監査証跡ファイル名称

−

29

セキュリティ関連変更種別

−

30

セキュリティ関連変更前設定値

−

31

セキュリティ関連変更後設定値

−

32

監査証跡表オプション

−

33

アクセス件数

○

34

SQL文

○

35

SQLデータ

○

36

ユーザ付加情報1

○

37

ユーザ付加情報2

○

38

ユーザ付加情報3

○

39

関連製品付加情報1

−

40

監査証跡表へのデータ登録時刻印

○

41

監査証跡表へのデータ登録時の通番

○

（凡例）

○：情報を取得します。

−：情報を取得しません。または該当しません。

△：半角空白を意味しています。

注

SDBデータベース操作の要求単位に1レコードが記録されます。

SDBデータベース操作の延長で実行されるSQL文はありません。

要求を受け付けたフロントエンドサーバがあるユニットの監査証跡ファイルに出力されます。

注※1

SQL通番は，SDBデータベースを操作するAPIの要求通番と読み替えてください。

注※2

オブジェクト種別にはSCHが，オブジェクト名称にはデータベース名が設定されます。

7.13　ユティリティ実行時の監査証跡の出力先ユニット

ユティリティ実行時の監査証跡の出力先ユニットについては，マニュアル「HiRDB Version 9 システム運用ガイド」の「ユティリティ実行時の監査証跡の出力先ユニット」を参照してください。

7.14　バージョンアップ時の注意事項

バージョンアップ時の注意事項については，マニュアル「HiRDB Version 9 システム運用ガイド」の「セキュリティ監査機能の運用」の「バージョンアップ時の注意事項」を参照してください。

7.15　注意事項

セキュリティ監査機能に関する注意事項を説明します。

なお，説明文中のSDBユティリティとは，次のユティリティの総称を意味しています。

HiRDB/SD定義ユティリティ（pdsdbdef）

HiRDB/SDデータベース作成ユティリティ（pdsdblod）

HiRDB/SDデータベース再編成ユティリティ（pdsdbrog）

注意事項

SDBユティリティの実行中に，pdaudbeginコマンド（監査証跡を取得開始するコマンド）を実行しても，実行中のSDBユティリティに対しては有効になりません。

SDBユティリティの実行中に，定義系SQLのCREATE AUDIT文またはDROP AUDIT文を実行しても，実行中のSDBユティリティに対しては有効になりません。

SDBユティリティの実行中に，pdaudendコマンド（監査証跡の取得をやめるコマンド）を実行した場合，SDBユティリティでエラーメッセージが出力され，監査証跡は取得されません。

SDBユティリティ実行時のCONNECT権限チェックで，CONNECTエラーが発生した場合，すべての監査証跡が取得されません。このため，CONNECT関連セキュリティ機能の「連続認証失敗回数の制限」を使用することを推奨します。CONNECT関連セキュリティ機能については，マニュアル「HiRDB Version 9 システム運用ガイド」の「CONNECT関連セキュリティ機能の運用」を参照してください。

8　ディザスタリカバリシステムの構築と運用【4V FMB，4V AFM】

この章では，ディザスタリカバリシステムの構築方法と運用方法について説明します。

8.1　ディザスタリカバリシステムの概要

ここでは，ディザスタリカバリシステムの概要，および前提製品について説明します。

ディザスタリカバリシステムは，4V FMBまたは4V AFMのSDBデータベースの場合に使用できます。

8.1.1　ディザスタリカバリシステムとは

(1)　機能概要

通常使用しているシステムが地震，火災などの災害によって物理的に回復困難な状況になった場合，遠隔地に準備している予備のシステムを稼働して業務を続行できます。このシステムをディザスタリカバリシステム（リアルタイムSANレプリケーション（RiSe））といいます。なお，通常使用しているシステムがあるサイトをメインサイトといい，遠隔地に準備している予備のシステムがあるサイトをリモートサイトといいます。

メインサイトおよびリモートサイトのデータは，日立ディスクアレイサブシステム上に配置し，メインサイトのデータに更新が発生した場合，日立ディスクアレイサブシステムのUniversal ReplicatorまたはTrueCopyを使用してリモートサイトに反映（更新コピー）します。

ディザスタリカバリシステムの概要を次の図に示します。

図8‒1　ディザスタリカバリシステムの概要

［説明］

通常はメインサイトのHiRDBを使用して業務を行います。メインサイトのファイルに更新が発生した場合，その更新内容をリモートサイトに更新コピーします。更新コピーによってメインサイトとリモートサイトで同じデータを持ちます。

メインサイトで地震や火災などの大規模災害が発生し，メインサイトのシステムが早期に復旧できない場合，リモートサイトでHiRDBを再開始して業務を続行できます。

参考

更新コピーは，Universal ReplicatorまたはTrueCopyが行います。Universal ReplicatorおよびTrueCopyは，ホストを経由しないで，日立ディスクアレイサブシステム間で直接データをコピーします。

RAID Managerとは，日立ディスクアレイサブシステムの付加プログラムプロダクトで，Universal ReplicatorおよびTrueCopyを制御，運用するコマンドなどを提供しています。

(2)　更新コピーの対象になるファイル

更新コピーの対象になるファイルを次に示します。これらのファイルに更新が発生すると，リモートサイトの同じファイルに更新情報がコピーされます。

データベースファイル（RDエリアを構成するHiRDBファイル）

システムログファイル

シンクポイントダンプファイル

ステータスファイル

注意事項

SDBディレクトリ情報ファイルは更新コピーの対象にはなりません。そのため，SDBデータベースの定義を追加，変更，または削除した場合は，SDBディレクトリ情報ファイルをリモートサイトに転送する必要があります。

(3)　非同期コピーの特徴

更新コピー処理は非同期コピーになります。非同期コピーの特徴を次に示します。

処理方式

リモートサイトの更新処理の完了を待たないでメインサイトの更新処理を完了します。

メインサイトとリモートサイトのデータの整合性

データ欠損が発生することがあります。そのため，メインサイトとリモートサイトでデータが一致しないことがあります。

性能への影響※

性能への影響はありません。

注※　Universal ReplicatorおよびTrueCopyが保証する理論値に従った特徴です。

8.1.2　サポートしているリモートサイトへのデータ反映方式（全非同期方式）

メインサイトからリモートサイトにデータを反映するときの処理方式は，全非同期方式になります。

全非同期方式とは，リモートサイトへの更新コピー処理が非同期コピーで行われる方式のことです。非同期コピーの場合，リモートサイトの更新処理の完了を待たないでメインサイトの更新処理を完了するため，メインサイトのトランザクション性能に影響を与えません。

ただし，メインサイトのファイル（更新コピーの対象ファイル）の更新内容がリモートサイトに反映されないことがあります。そのため，メインサイトのHiRDBが災害などによって異常終了し，リモートサイトでHiRDBを再開始した場合，再開始したときの状態が異常終了直前の状態と異なることがあります。したがって，全非同期方式の場合，メインサイトから継続したサービスの開始を保証できません。

全非同期方式の概要を次の図に示します。また，リモートサイトに更新コピーするときの処理方式（全非同期方式の場合）を次の表に示します。

図8‒2　全非同期方式の概要

表8‒1　リモートサイトに更新コピーするときの処理方式（全非同期方式の場合）

リモートサイトにコピーされるファイル

更新コピーするときの処理方式

データベースファイル

非同期コピー

システムファイル

システムログファイル

シンクポイントダンプファイル

ステータスファイル

全非同期方式の特徴については，マニュアル「HiRDB Version 9 ディザスタリカバリシステム　構築・運用ガイド」の「各処理方式の特徴」を参照してください。

参考

マニュアル「HiRDB Version 9 ディザスタリカバリシステム　構築・運用ガイド」には，全非同期方式以外の処理方式（全同期方式，ハイブリッド方式，およびログ同期方式）についても説明されていますが，これらの処理方式は使用できません。

8.1.3　前提製品

日立ディスクアレイサブシステムシリーズの製品が必要となります。前提製品を次の表に示します。なお，これらの前提製品はメインサイトとリモートサイトの両方に必要です。

表8‒2　前提製品

日立ディスクアレイサブシステムの機器名称

必要となる日立ディスクアレイサブシステム

Hitachi Unified Storage VM(HUSVM)

Universal Replicator

TrueCopy

RAID Manager

8.2　ディザスタリカバリシステムの設計

ディザスタリカバリシステムを設計する際の考慮点については，マニュアル「HiRDB Version 9 ディザスタリカバリシステム　構築・運用ガイド」の「第2編　全同期方式，全非同期方式，およびハイブリッド方式編」の「システム設計時の考慮点」を参照してください。

ただし，マニュアル「HiRDB Version 9 ディザスタリカバリシステム　構築・運用ガイド」に記載されている内容とは仕様差があります。ここでは，その仕様差についてだけ説明します。

仕様差のある個所

マニュアル「HiRDB Version 9 ディザスタリカバリシステム　構築・運用ガイド」の「HiRDBの環境設定時の考慮点」の「メインサイトとリモートサイトで一致させる項目」

HiRDB/SDを使用する場合の注意点（仕様差）

HiRDB/SDを使用する場合は，上記個所に記載されている「メインサイトとリモートサイトで一致させる項目」に加えて，次の点に注意してください。

メインサイトとリモートサイトがHiRDB/SDである必要があります。

8.3　ディザスタリカバリシステムの構築

8.3.1　ディザスタリカバリシステムの構築手順

ディザスタリカバリシステムの構築手順を次の図に示します。

図8‒3　ディザスタリカバリシステムの構築手順

注※

pdconfchkおよびpdrisechkコマンドでは，メインサイトとリモートサイトで同じSDBディレクトリ情報ファイルが格納されているかどうかはチェックできません。

ここでは，次の作業についてだけ説明します。

「4. SDBデータベースを作成する」

「6. SDBディレクトリ情報ファイルをリモートサイトに転送する」

「9. 転送したSDBディレクトリ情報ファイルを格納する」

上記以外の作業については，マニュアル「HiRDB Version 9 ディザスタリカバリシステム　構築・運用ガイド」の「第2編　全同期方式，全非同期方式，およびハイブリッド方式編」の「システムの構築」を参照してください。

(1)　「4. SDBデータベースを作成する」の作業

作業手順については，「4.5　SDBデータベースの作成」を参照してください。

(2)　「6. SDBディレクトリ情報ファイルをリモートサイトに転送する」の作業

SDBディレクトリ情報ファイルをメインサイトからリモートサイトの全サーバマシンに転送します。SDBディレクトリ情報ファイルの転送は，OSのrcpコマンドなどを使用して，ユーザが手動で行う必要があります。ftpコマンドを使用する場合は，必ずバイナリモードで転送してください。

SDBディレクトリ情報ファイルの転送後，SDBディレクトリ情報ファイルが正しく転送されたかを確認してください。メインサイトのSDBディレクトリ情報ファイルと，リモートサイトのSDBディレクトリ情報ファイルの次に示す情報が同じであることを，OSのcksumコマンドで確認してください。

CRCチェックサム

バイト数

異なる場合は，SDBディレクトリ情報ファイルを再転送してください。

(3)　「9. 転送したSDBディレクトリ情報ファイルを格納する」の作業

リモートサイトの全ユニットのユニット制御定義のpd_structured_directory_pathオペランドに指定したディレクトリ下に，メインサイトから転送したSDBディレクトリ情報ファイルを格納します。

8.4　ディザスタリカバリシステムの運用

ディザスタリカバリシステムの運用方法については，マニュアル「HiRDB Version 9 ディザスタリカバリシステム　構築・運用ガイド」の「第2編　全同期方式，全非同期方式，およびハイブリッド方式編」の次の個所を参照してください。

「メインサイトの運用」

「リモートサイトへの切り替え」

「ペア論理ボリュームの構成変更」

「ほかの機能との関連」

なお，SDBデータベースの定義追加，定義変更，または定義削除を実行してSDBディレクトリ情報ファイルを更新した場合，更新後のSDBディレクトリ情報ファイルをリモートサイトに転送する必要があります。

8.5　SDBデータベースの定義追加，定義変更，または定義削除するときの運用（HiRDBの再起動を必要とする場合）

ここでは，ディザスタリカバリシステムを適用している場合の，HiRDBの再起動を必要とするSDBデータベースの定義追加，定義変更，または定義削除の手順について説明します。

8.5.1　SDBデータベースの定義追加，定義変更，または定義削除の手順（概要）

ディザスタリカバリシステムを適用している場合の，SDBデータベースの定義追加，定義変更，または定義削除する手順（概要）を次の図に示します。

図8‒4　SDBデータベースの定義追加，定義変更，または定義削除する手順（概要）

注

図中の項番は，「8.5.2　SDBデータベースの定義追加，定義変更，または定義削除の手順（各手順の詳細）」の（　）の番号と対応しています。

8.5.2　SDBデータベースの定義追加，定義変更，または定義削除の手順（各手順の詳細）

ディザスタリカバリシステムを適用している場合の，SDBデータベースの定義追加，定義変更，または定義削除をする際の各手順の詳細について説明します。

(1)　最新版のTP1/FSPのUAP共用ライブラリをリモートサイトに転送する

OSのrcpコマンドなどを使用して，最新版のTP1/FSPのUAP共用ライブラリをリモートサイトに転送します。

(2)　TP1/FSPを停止する

TP1/FSPのeesvstopコマンドでTP1/FSPを停止します。この操作によってオンラインが停止状態になります。

(3)　SDBデータベースの定義追加，定義変更，または定義削除を行う

pdsdbdefコマンドで，SDBデータベースの定義追加，定義変更，または定義削除を行います。

(4)　SDBディレクトリ情報ファイルを作成して配布する

pdsdbdefコマンドで，SDBディレクトリ情報ファイルを作成して全ユニットに配布します。SDBディレクトリ情報ファイルの配布方法の詳細については，「5.8.1　SDBディレクトリ情報ファイルを作成して配布する場合」を参照してください。

参考

(3)および(4)の作業は，1回のpdsdbdefコマンドで実行できます。

(5)　HiRDBを正常終了する

pdstopコマンドでHiRDBを正常終了します。必ず正常終了させてください。

(6)　メインサイトとリモートサイト間の同期化を行う

RDエリアが配置されているペア論理グループに対して，RAID Managerのpairsyncwaitコマンド（-g aaaa_ALL -t 600オプション指定）を実行し，メインサイトとリモートサイト間の同期化を行います。aaaaには，HiRDB識別子を指定します。

pairsyncwaitコマンドが正常終了し，実行結果がDONEとなることを確認してください。

(7)　SDBディレクトリ情報ファイルをリモートサイトに転送する

SDBディレクトリ情報ファイルをリモートサイトに転送します。転送後，リモートサイトの全ユニットの次のディレクトリ下にSDBディレクトリ情報ファイルを格納してください。

pd_structured_directory_pathオペランドに指定したディレクトリ

(8)　HiRDBを正常開始する

pdstartコマンドでHiRDBを正常開始します。SDBディレクトリ情報ファイル中のSDBディレクトリ情報が常用常駐領域に常駐されます。

(9)　TP1/FSPのUAP共用ライブラリを入れ替える

TP1/EEサービス定義のmodule_dirオペランドに指定したUAP共用ライブラリ格納ディレクトリに，新しいUAP共用ライブラリを格納します。または，module_dirオペランドの指定を，新しいUAP共用ライブラリを格納したディレクトリに変更します。

(10)　TP1/FSPを開始する

TP1/FSPのeesvstartコマンドでTP1/FSPを開始します。

このとき，常用常駐領域中のSDBディレクトリ情報を入力情報にして，TP1/FSPのSDB定義情報領域にSDB定義情報が格納されます。

この作業が完了すると，定義追加，定義変更，または定義削除したSDBデータベースにアクセスできるようになります。

8.5.3　障害が発生したときの対処方法

メインサイトが異常終了し，リモートサイトで業務を続行する場合の対処方法について説明します。

障害が発生した時点によって対処方法が異なります。「図8-4　SDBデータベースの定義追加，定義変更，または定義削除する手順（概要）」を参照して，障害発生時点と選択する対処方法を確認してください。

(1)　リモートサイトでの対処方法1

リモートサイトで次の対処をしてください。

手順

RAID Managerのpairvolchkコマンドで，ペア論理ボリュームグループのステータスを確認します。

RAID Managerのhorctakeoverコマンドで，ペア論理ボリュームグループのテイクオーバを実施します。

pdstartコマンドでHiRDBを開始します。

pdsdbdefコマンドで，SDBデータベースの定義追加，定義変更，または定義削除を行います。

pdsdbdefコマンドで，SDBディレクトリ情報ファイルを作成して全ユニットに配布します。

pdstopコマンドでHiRDBを終了します。

pdstartコマンドでHiRDBを開始します。

TP1/FSPのUAP共用ライブラリを最新版に入れ替えます。

TP1/FSPのeesvstartコマンドでTP1/FSPを開始します。

(2)　リモートサイトでの対処方法2

リモートサイトで次の対処をしてください。

手順

RAID Managerのpairvolchkコマンドで，ペア論理ボリュームグループのステータスを確認します。

RAID Managerのhorctakeoverコマンドで，ペア論理ボリュームグループのテイクオーバを実施します。

pdstartコマンドでHiRDBを開始します。

pdsdbdefコマンドで，SDBディレクトリ情報ファイルを作成して全ユニットに配布します。

pdstopコマンドでHiRDBを終了します。

pdstartコマンドでHiRDBを開始します。

TP1/FSPのUAP共用ライブラリを最新版に入れ替えます。

TP1/FSPのeesvstartコマンドでTP1/FSPを開始します。

(3)　リモートサイトでの対処方法3

リモートサイトで次の対処をしてください。

手順

RAID Managerのpairvolchkコマンドで，ペア論理ボリュームグループのステータスを確認します。

RAID Managerのhorctakeoverコマンドで，ペア論理ボリュームグループのテイクオーバを実施します。

pdstartコマンドでHiRDBを開始します。

TP1/FSPのUAP共用ライブラリを最新版に入れ替えます。

TP1/FSPのeesvstartコマンドでTP1/FSPを開始します。

8.6　SDBデータベースの定義追加または定義変更するときの運用（HiRDBの再起動を必要としない場合）

ここでは，ディザスタリカバリシステムを適用している場合の，HiRDBの再起動を必要としないSDBデータベースの定義追加または定義変更の手順について説明します。

前提条件および事前準備については，「5.7　SDBデータベースの定義追加または定義変更（HiRDBの再起動を必要としない場合）」を参照してください。

8.6.1　SDBデータベースの定義追加または定義変更の手順（概要）

ディザスタリカバリシステムを適用している場合の，SDBデータベースの定義追加または定義変更する手順（概要）を次の図に示します。

図8‒5　SDBデータベースの定義追加または定義変更する手順（概要）

注

図中の項番は，「8.6.2　SDBデータベースの定義追加または定義変更の手順（各手順の詳細）」の（　）の番号と対応しています。

8.6.2　SDBデータベースの定義追加または定義変更の手順（各手順の詳細）

ディザスタリカバリシステムを適用している場合の，SDBデータベースの定義追加または定義変更をする際の各手順の詳細について説明します。

(1)　SDBデータベースの定義追加または定義変更を行う

pdsdbdefコマンドで，SDBデータベースの定義追加または定義変更を行います。

(2)　メインサイトとリモートサイト間の同期化を行う

RDエリアが配置されているペア論理グループに対して，RAID Managerのpairsyncwaitコマンド（-g aaaa_ALL -t 600オプション指定）を実行し，メインサイトとリモートサイト間の同期化を行います。aaaaには，HiRDB識別子を指定します。

pairsyncwaitコマンドが正常終了し，実行結果がDONEとなることを確認してください。

(3)　最新版のTP1/FSPのUAP共用ライブラリをリモートサイトに転送する

OSのrcpコマンドなどを使用して，最新版のTP1/FSPのUAP共用ライブラリをリモートサイトに転送します。

(4)　SDBディレクトリ情報ファイルを作成して配布する

pdsdbdefコマンドで，SDBディレクトリ情報ファイルを作成して全ユニットに配布します。SDBディレクトリ情報ファイルの配布方法の詳細については，「5.8.1　SDBディレクトリ情報ファイルを作成して配布する場合」を参照してください。

(5)　SDBディレクトリ情報ファイルをリモートサイトに転送する

SDBディレクトリ情報ファイルをリモートサイトに転送します。転送後，リモートサイトの全ユニットの次のディレクトリ下にSDBディレクトリ情報ファイルを格納してください。

pd_structured_directory_pathオペランドに指定したディレクトリ

(6)　SDBディレクトリ情報を事前常駐領域に常駐する

pdsdbarc -eコマンドで，SDBディレクトリ情報を事前常駐領域に常駐します。

pdsdbarc -eコマンドの実行時，HiRDB/SDは，事前常駐領域に常駐したSDBディレクトリ情報の最終更新日時などをチェックします。チェックの結果，最終更新日時の不整合を検知した場合，不整合を検知したSDBディレクトリ情報を無効状態にします。無効状態のSDBディレクトリ情報は，(9)の操作で事前常駐領域を常用常駐領域に切り替える際，切り替えの対象外となります。切り替えの対象外となったSDBディレクトリ情報を使用しているユニット（フロントエンドサーバまたはバックエンドサーバ）を経由するAPIはエラーになります。そのため，最終更新日時の不整合が検知された場合，出力されたメッセージに従って対処し，事前常駐領域のSDBディレクトリ情報を正常な状態にしてください。

(7)　SDB定義情報を取得して，TP1/FSPのSDB定義情報領域（副）に格納する

TP1/FSPのeesdhchg -bコマンドでSDB定義情報を取得し，SDB定義情報領域（副）に格納します（事前常駐領域中のSDBディレクトリ情報が入力情報になります）。

SDB定義情報を取得する方法については，マニュアル「TP1/Financial Service Platform 使用の手引」の「SDBハンドラ機能」の「SDB定義情報の事前取得」を参照してください。

(8)　トランザクションを静止化する

TP1/FSPのeesvctl -sコマンドで，トランザクションを静止化します。eesvctl -sコマンドが正常終了して，完全にトランザクションが静止化したことを確認してから次の手順に進んでください。

注意事項

完全にトランザクションが静止化していない状態で次の手順を行った場合，データベース破壊やUAPの異常終了などが発生するおそれがあります。そのため，eesvctl -sコマンドが正常終了するまで，eesvctl -sを実行し続けてください。

(9)　事前常駐領域を常用常駐領域に切り替える

pdsdbarc -w -qコマンドで，事前常駐領域を常用常駐領域に切り替えます。pdsdbarc -w -qコマンドはユニットごとに実行します。この操作は全ユニットで実行してください。

事前常駐領域中のSDBディレクトリ情報が無効状態の場合，事前常駐領域を常用常駐領域に切り替えることはできません。切り替えられなかったSDBディレクトリ情報を使用しているユニット（フロントエンドサーバまたはバックエンドサーバ）を経由するAPIはエラーになるため，無効状態のSDBディレクトリ情報を次に示すどちらかの方法で正常な状態にしてください。

正しいSDBディレクトリ情報ファイルが配布済みの場合

事前常駐領域中のSDBディレクトリ情報が無効状態のユニットに対して，「(6)　SDBディレクトリ情報を事前常駐領域に常駐する」から作業を再実行してください。

正しいSDBディレクトリ情報ファイルが未配布の場合

事前常駐領域中のSDBディレクトリ情報が無効状態のユニットに対して，pdsdbdefコマンドでSDBディレクトリ情報ファイルを配布し直してください。そのあと，「(6)　SDBディレクトリ情報を事前常駐領域に常駐する」から作業を再実行してください。

SDBディレクトリ情報ファイルの配布方法については，「5.8.2　SDBディレクトリ情報ファイルの配布だけをする場合」を参照してください。

(10)　TP1/FSPのUAP共用ライブラリを入れ替える

TP1/FSPのeechglibコマンドで，TP1/FSPのUAP共用ライブラリを入れ替えます。

(11)　TP1/FSPのSDB定義情報領域の正副を切り替える

TP1/FSPのeesdhchg -cコマンドで，SDB定義情報領域の正副を切り替えます。この操作によって，定義追加または定義変更したSDBデータベースに対して，UAPからアクセスできるようになります。

(12)　トランザクションの静止化を解除する

TP1/FSPのeesvctl -rコマンドで，トランザクションの静止化を解除します。

この作業が完了すると，定義追加または定義変更したSDBデータベースにアクセスできるようになります。

8.6.3　障害が発生したときの対処方法

メインサイトが異常終了し，リモートサイトで業務を続行する場合の対処方法について説明します。

障害が発生した時点によって対処方法が異なります。「図8-5　SDBデータベースの定義追加または定義変更する手順（概要）」を参照して，障害発生時点と選択する対処方法を確認してください。

(1)　リモートサイトでの対処方法1

リモートサイトで次の対処をしてください。

手順

RAID Managerのpairvolchkコマンドで，ペア論理ボリュームグループのステータスを確認します。

RAID Managerのhorctakeoverコマンドで，ペア論理ボリュームグループのテイクオーバを実施します。

pdstartコマンドでHiRDBを開始します。

TP1/FSPのeesvstartコマンドでTP1/FSPを開始します。

SDBディレクトリ情報ファイルは，リモートサイトに転送済みのファイルを使用してください。

(2)　リモートサイトでの対処方法2

リモートサイトで次の対処をしてください。

手順

RAID Managerのpairvolchkコマンドで，ペア論理ボリュームグループのステータスを確認します。

RAID Managerのhorctakeoverコマンドで，ペア論理ボリュームグループのテイクオーバを実施します。

pdstartコマンドでHiRDBを開始します。

pdsdbdefコマンドで，SDBディレクトリ情報ファイルを作成して全ユニットに配布します。

pdstopコマンドでHiRDBを終了します。

pdstartコマンドでHiRDBを開始します。

TP1/FSPのUAP共用ライブラリを最新版に入れ替えます。

TP1/FSPのeesvstartコマンドでTP1/FSPを開始します。

(3)　リモートサイトでの対処方法3

リモートサイトで次の対処をしてください。

手順

RAID Managerのpairvolchkコマンドで，ペア論理ボリュームグループのステータスを確認します。

RAID Managerのhorctakeoverコマンドで，ペア論理ボリュームグループのテイクオーバを実施します。

pdstartコマンドでHiRDBを開始します。

TP1/FSPのUAP共用ライブラリを最新版に入れ替えます。

TP1/FSPのeesvstartコマンドでTP1/FSPを開始します。

8.7　障害発生時の対処方法

障害発生時の対処方法については，マニュアル「HiRDB Version 9 ディザスタリカバリシステム　構築・運用ガイド」の「第2編　全同期方式，全非同期方式，およびハイブリッド方式編」の「障害発生時の運用」を参照してください。

ここでは，メインサイトとリモートサイトのSDBディレクトリ情報ファイルの不一致による障害の対処方法だけを説明します。

この場合，メインサイトからリモートサイトに切り替えて，リモートサイトのHiRDBを開始したときにKFPB31010-Eメッセージが出力されます。このとき，リモートサイトで次の対処をしてください。

手順

pdsdbdefコマンドで，SDBディレクトリ情報ファイルを出力し，リモートサイトの全ユニットに配布します。

pdstopコマンドで，HiRDBを終了します。

pdstartコマンドで，HiRDBを開始します。

1.で出力したSDBディレクトリ情報に対応するTP1/FSPのUAP共用ライブラリに入れ替えます。

TP1/FSPのeesvstartコマンドで，TP1/FSPを開始します。

9　システム定義

この章では，HiRDBのシステム定義について説明します。

9.1　システム共通定義

ここでは，システム共通定義のオペランドについて説明します。

ここに記載のないオペランドについては，マニュアル「HiRDB Version 9 システム定義」を参照してください。

9.1.1　オペランドの形式と説明

(1)　オペランドの形式

  set pd_structured_shmpool_dicsize = SDBディレクトリ情報の常駐領域サイズ

〔set pd_structured_advance_resident =｛use｜nouse｝〕

(2)　オペランドの説明

●pd_structured_shmpool_dicsize =SDBディレクトリ情報の常駐領域サイズ

〜＜符号なし整数＞((1〜2000000))（単位：キロバイト）

共用メモリ上に確保されるSDBディレクトリ情報の常駐領域の大きさを指定します。

このオペランドに指定した大きさの常用常駐領域が各ユニットに確保されます。高速系切り替え機能を使用している場合は，待機系ユニットにも常用常駐領域が確保されます。

また，pd_structured_advance_residentオペランドにuseを指定した場合は，このオペランドに指定した大きさの事前常駐領域が，ユニットごとに確保されます。高速系切り替え機能を使用している場合は，待機系ユニットにも事前常駐領域が確保されます。

《指定値の目安》

指定値の目安については，「3.4.2(2)　システム共通定義pd_structured_shmpool_dicsizeオペランドに指定する値」を参照してください。

pdsdbdefコマンドを実行してSDBディレクトリ情報ファイルを作成したときに，SDBディレクトリ情報長がKFPB61231-Iメッセージに表示されます。表示されたSDBディレクトリ情報長を目安にこのオペランドの指定値を決めることもできます。

（例）

KFPB61231-I SDB directory information file assigned, file="/home/user01/pdsdb/pdsdbdir",

num=48, size=577208, time stamp=2012120615420155(2012120615183822)

sizeにSDBディレクトリ情報長（単位：バイト）が表示されます。表示されたSDBディレクトリ情報長以上の値をこのオペランドに指定してください。

HiRDBの再起動を必要としないSDBデータベースの定義追加または定義変更をする場合，定義追加または定義変更する分のSDBディレクトリ情報長も加算して，このオペランドの指定値を決めてください。

《注意事項》

このオペランドは必ず指定してください。省略した場合，HiRDBを開始できません。

SDBディレクトリ情報長が2,000,000キロバイトを超える場合は，このオペランドの指定値に関係なく，メモリにSDBディレクトリ情報を常駐できないため，SDBデータベースにはアクセスできません。

SDBディレクトリ情報長が2,000,000キロバイトを超えていないかどうかは，「3.4.2(2)(a)　SDBディレクトリ情報長の計算式」に記載されている計算式から算出して確認してください。または，pdsdbdefコマンドを実行してSDBディレクトリ情報ファイルを作成したときに出力されるKFPB61231-Iメッセージのsizeに，SDBディレクトリ情報の長さが表示されるため，そこで確認してください。

SDBディレクトリ情報の常駐領域サイズが不足している場合，HiRDBを開始することはできません（KFPB62900-Eメッセージが出力されます）。この場合，このオペランドの指定値を大きくしてください。

HiRDBはこのオペランドで指定されたメモリサイズに，HiRDBの開始に必要なメモリサイズを加算して共用メモリを確保します。このため，このオペランドの指定値が大き過ぎると，共用メモリが不足して，HiRDBを開始できないことがあります。

●pd_structured_advance_resident =｛use｜nouse｝

SDBディレクトリ情報を格納する事前常駐領域を確保するかどうかを指定します。HiRDBの再起動を必要としないSDBデータベースの定義追加または定義変更をする場合は，事前常駐領域が必要になるためuseを指定してください。

use：

事前常駐領域を確保します。useを指定すると，常用常駐領域と事前常駐領域の2つの常駐領域が確保されます。

nouse：

事前常駐領域を確保しません。nouseを指定すると，常用常駐領域だけが確保されます。

《注意事項》

このオペランドにuseを指定した場合，pd_structured_shmpool_dicsizeオペランドで指定した大きさの常用常駐領域と事前常駐領域の2つの領域が共用メモリ上に確保されます。そのため，SDBディレクトリ情報の常駐領域は2倍必要になります。

9.2　ユニット制御情報定義

ここでは，ユニット制御情報定義のオペランドについて説明します。

ここに記載のないオペランドについては，マニュアル「HiRDB Version 9 システム定義」を参照してください。

9.2.1　オペランドの形式と説明

(1)　オペランドの形式

  set pd_structured_directory_path = SDBディレクトリ情報ファイルの格納先ディレクトリ

(2)　オペランドの説明

●pd_structured_directory_path = SDBディレクトリ情報ファイルの格納先ディレクトリ

〜＜パス名＞

SDBディレクトリ情報ファイルの格納先ディレクトリを絶対パスで指定します。

なお，1つのサーバマシンに複数のユニットがある場合，ユニットごとに同じディレクトリを指定すると，1つのSDBディレクトリ情報ファイルを複数のユニット間で共用できます。

パス名は140文字以内とします。

《注意事項》

全ユニットのユニット制御情報定義に，このオペランドを必ず指定してください。指定しない場合，HiRDBを起動できません。

指定するディレクトリは，HiRDBを起動する前に作成し，HiRDB管理者に対して参照権限を付与しておいてください。

共有ディスク上にディレクトリを作成した場合，実行系ユニットおよび待機系ユニット間でSDBディレクトリ情報ファイルを共用することはできません。SDBディレクトリ情報ファイルを共用すると，待機系ユニットの起動に失敗します。

実行系ユニットでSDBディレクトリ情報ファイルへのアクセスエラーが検知された場合，KFPB62905-EおよびKFPB62906-Eメッセージが出力されます。この場合，共用メモリ上にSDBディレクトリ情報を常駐しないで，HiRDBの起動を完了します。ただし，このとき待機系ユニットは起動しません。

このオペランドに指定されたパスが存在しない場合，または指定されたディレクトリ下にSDBディレクトリ情報ファイルが存在しない場合，KFPB62910-Wメッセージを出力し，共用メモリ上にSDBディレクトリ情報を常駐しないでHiRDBの起動を完了します。ただし，このとき待機系ユニットは起動しません（KFPB62911-Eメッセージを出力します）。

9.3　SDB用UAP環境定義【SD FMB】

ここでは，SDB用UAP環境定義のオペランドと文法規則について説明します。

SD FMBのSDBデータベースにアクセスする場合に，SDB用UAP環境定義の作成を検討してください。

9.3.1　オペランドの形式と説明

(1)　オペランドの形式

■set形式

〔set lockrange = transaction｜cursorupdate〕

■コマンド形式

〔｛｛subschema -s SDBデータベース名
              〔-t ルートレコードのレコード型名
              〔-e ｛shared｜protected｜exclusive｝
                -a retrieve｜update〕〕
  ｝｝〕

(2)　オペランドの説明

SDB用UAP環境定義のオペランドについて説明します。

なお，サブページ分割をしている場合は，ページをサブページに読み替えてください。

(a)　set形式

●lockrange = transaction｜cursorupdate

DMLでSDBデータベースを操作した結果，レコード位置指示子が指さなくなったレコード実現値を格納するページに対する排他の解除時期を指定します。

transaction：

トランザクション終了時に，ページに対する排他を解除します。

cursorupdate：

DML終了時に，ページに対する排他を解除します。これを排他自動解除機能といいいます。排他自動解除機能については，「2.9.4　排他自動解除機能」を参照してください。

《利点》

このオペランドにcursorupdateを指定すると，ページの排他解除時期が早くなるため，ほかのトランザクションとの同時実行性能が向上します。

《適用基準》

通常はtransaction（省略値）を指定してください。次のような場合にcursorupdateを指定してください。

トランザクション内でデータの一貫性を保証する必要がなく，検索したレコード実現値を更新するほかのトランザクションとの同時実行性能を優先したい場合

更新を前提とする検索の結果，検索したレコード実現値に対する更新が不要となることがあり，そのレコード実現値を操作するほかのトランザクションとの同時実行性能を優先したい場合

《ほかのオペランドとの関連》

このオペランドの指定値を変更した場合，次に示すオペランドの指定値を見積もり直してください。

サーバ共通定義またはバックエンドサーバ定義のpd_lck_pool_sizeオペランド

《見積もり式への影響》

このオペランドの指定値を変更した場合，「3.8.2(1)　レコードの検索（FETCH），または位置指示子の位置づけ（FIND）」の見積もり式を再計算してください。

(b)　コマンド形式

●subschema

subschema -s SDBデータベース名
        〔-t ルートレコードのレコード型名
        〔-e ｛shared｜protected｜exclusive｝
          -a retrieve｜update〕〕

UAPを実行してSDBデータベースにアクセスするときの動作オプションを指定します。

《オペランドの規則》

1つのSDB用UAP環境定義ファイルに，subschemaオペランドを最大1,600個指定できます。

-s SDBデータベース名

〜＜識別子＞((1〜30バイト))

subschemaオペランドで指定するオプションの対象とするSDBデータベースの名称を指定します。

《オペランドの規則》

SDBデータベース名の記述規則については，「11.4.1(1)　名前の規則」を参照してください。

subschemaオペランドを複数個指定する場合，同じSDBデータベース名は指定できません。

-t ルートレコードのレコード型名

〜＜識別子＞((1〜30バイト))

-sオプションに指定したSDBデータベースのルートレコードのレコード型名を指定します。

《オペランドの規則》

-eオプションおよび-aオプションを指定する場合に，-tオプションを指定してください。

ルートレコードのレコード型名の記述規則については，「11.4.1(1)　名前の規則」を参照してください。

-e ｛shared｜protected｜exclusive｝

SD排他モードを指定します。

shared：

ほかのUAPからの参照および更新を許します。

protected：

ほかのUAPからの更新を許しません。

exclusive：

ほかのUAPからの参照および更新を許しません。

SD排他モード（-eオプション）の指定と，アクセス目的（-aオプション）の指定によって，ページに対する排他制御を行うかどうかと，次に示す排他資源に掛かる排他の排他制御モードが決まります。

ルートレコードのレコード型

レコード格納用RDエリア

排他制御モードの詳細については，「表2-38　排他制御のモードの組み合わせの例（SD FMBのSDBデータベースの場合）」を参照してください。

《利点》

SD排他モードとアクセス目的の組み合わせによって，UAPの目的に応じて排他の粒度と強さを制御できます。

また，SD排他モードとアクセス目的の組み合わせが次の場合，ページに対する排他制御を行いません。

SD排他モードがprotectedで，アクセス目的がretrieveの場合

SD排他モードがexclusiveで，アクセス目的がretrieveの場合

SD排他モードがexclusiveで，アクセス目的がupdateの場合

上記の組み合わせの場合，次の利点があります。

排他資源数を削減できます。

排他制御の処理時間を短縮できます。

ページのアクセス順序によって発生するデッドロックを回避できます。

《適用基準》

SD排他モードとアクセス目的の組み合わせ例を説明します。

オンライン業務の場合は，SD排他モードとアクセス目的を次のように指定します。

参照業務の場合は，SD排他モードにsharedを，アクセス目的にretrieveを指定します。

更新業務の場合は，SD排他モードにsharedを，アクセス目的にupdateを指定します。

バッチ業務の場合は，SD排他モードとアクセス目的を次のように指定します。

参照業務で，参照オンライン業務からのアクセスだけを許す場合は，SD排他モードにprotectedを，アクセス目的にretrieveを指定します。

更新業務で，ほかの業務からのアクセスを許さない場合は，SD排他モードにexclusiveを，アクセス目的にupdateを指定します。

《注意事項》

SD排他モードにexclusiveまたはprotectedを指定した場合，UAPの同時実行性が低下します。そのため，exclusiveまたはprotectedを指定する場合は，同時に実行できなくなっても問題となるUAPがないことを確認してください。

《ほかのオペランドとの関連》

-eオプションと-aオプションの指定値の組み合わせを変更したことによって，ページに対する排他制御が変わった場合，次に示すオペランドの指定値を見積もり直してください。

サーバ共通定義またはバックエンドサーバ定義のpd_lck_pool_sizeオペランド

《各見積もり式への影響》

-eオプションと-aオプションの指定値の組み合わせを変更したことによって，ページに対する排他制御が変わった場合，「3.8.2　SDBデータベースを操作するAPIまたはDMLの実行時の排他資源数」の見積もり式を再計算してください。

-a retrieve｜update

アクセス目的を指定します。

retrieve：

レコードの参照だけを行います。次のDMLを実行するとエラーになります。

FETCH（FOR UPDATEオペランドの指定あり）

FIND（FOR UPDATEオペランドの指定あり）

STORE

MODIFY

ERASE

update：

レコードの参照および更新を行います。

SD排他モード（-eオプション）の指定と，アクセス目的（-aオプション）の指定によって，ページに対する排他制御を行うかどうかと，次に示す排他資源に掛かる排他の排他制御モードが決まります。

ルートレコードのレコード型

レコード格納用RD エリア

排他制御モードの詳細については，「表2-38　排他制御のモードの組み合わせの例（SD FMBのSDBデータベースの場合）」を参照してください。

なお，次の項目については，-eオプションの説明を参照してください。

利点

適用基準

ほかのオペランドとの関連

各見積もり式への影響

9.3.2　SDB用UAP環境定義の指定例

■指定例

set lockrange = cursorupdate                        ...1
subschema -s SDB01 -t RECA -e shared -a retrieve    ...2
subschema -s SDB02 -t RECB -e exclusive -a update   ...3

［説明］

DMLでSDBデータベースを操作した結果，レコード位置指示子が指さなくなったレコード実現値を格納するページ（サブページ分割をした場合はサブページ）に対する排他の解除時期を指定します。DMLの終了時に排他を解除するため，cursorupdateを指定します。

参照業務でSDBデータベースを操作する際，ほかの参照業務または更新業務からのアクセスを許す場合の動作オプションを指定します。

-s：操作対象のSDB データベースの名称SDB01を指定します。

-t：操作対象のSDBデータベースのルートレコードのレコード型名RECAを指定します。

-e：ほかの参照業務または更新業務から，SDBデータベースSDB01へのアクセスを許すため，SD排他モードにsharedを指定します。

-a：参照業務でSDBデータベースSDB01にアクセスするため，アクセス目的にretrieveを指定します。

更新業務でSDB データベースを操作する際，ほかの業務からのアクセスを許さない場合の動作オプションを指定します。

-s：操作対象のSDBデータベースの名称SDB02を指定します。

-t：操作対象のSDBデータベースのルートレコードのレコード型名RECBを指定します。

-e：ほかの業務からSDBデータベースSDB02へのアクセスを許さないように，SD排他モードにexclusiveを指定します。

-a：更新業務でSDB データベースSDB02にアクセスするため，アクセス目的にupdateを指定します。

9.3.3　SDB用UAP環境定義の文法規則

SDB用UAP環境定義の文法規則は，HiRDBシステム定義の文法規則に従います。HiRDBシステム定義の文法規則については，マニュアル「HiRDB Version 9 システム定義」の「HiRDBシステム定義を記述するときの文法規則」を参照してください。

ここでは，SDB用UAP環境定義特有の文法規則について説明します。

(1)　1オペランドの継続行数の最大値

1オペランドの継続行数の最大値は2,000となります。1オペランドの継続行数とは，継続記号の¥で継続する行数を意味しています。継続行数の数え方の例を次に示します。

（例）

subschema             ¥       ←継続行数1
    -s sdb01          ¥       ←継続行数2
    -t record01       ¥       ←継続行数3
    -e exclusive      ¥       ←継続行数4
    -a update                 ←継続行数5

上記の例の場合，1オペランドの継続行数は5となります。

(2)　1オペランドの文字列数の最大値

1オペランドの文字列数の最大値は2,000となります。

1オペランドの文字列数の数え方

1オペランドの文字列数とは，半角空白またはタブで区切られた文字列の数を意味しています。1オペランドの文字列数の数え方の例を次に示します。

（例）

上記の例の場合，1オペランドの文字列数は3となります。

なお，コンマ（ , ）は，文字列の区切りとは見なされません。コンマを使用した場合の文字列数の数え方の例を次に示します。

（例）

上記の例の場合，1オペランドの文字列数は5となります。

rd01，rd02，rd03は，半角空白またはタブで区切られていないため，同じ文字列と見なされます。

rd04とrd05は，半角空白またはタブで区切られているため，異なる文字列と見なされます。

文字列の区切りと見なされないケース

半角空白またはタブを引用符（ " ）で囲んだ場合，半角空白とタブは文字列の区切りとは見なされません。半角空白またはタブを引用符で囲んだ場合の文字列数の数え方の例を次に示します。

（例）

上記の例の場合，1オペランドの文字列数は3となります。

文字列と見なされないケース

行の末尾の継続記号である¥，およびコメント（#を含んだ行の末尾までの文字）は，文字列数に数えません。

(3)　オプションの重複指定の禁止

SDB用UAP環境定義のオプションを重複指定できません。エラーとなる例を次に示します。

（例）

subschema -s sdb01 -s sdb02 -t RECA -e shared -a retrieve

上記の例では，-sオプションが重複して指定されているため，エラーになります。

(4)　2つのマイナス記号の使用禁止

SDB用UAP環境定義では，"--"は指定できません。

参考

コマンド引数にマイナス記号を指定する場合，オプションの終わりに2つのマイナス記号"--"を記述すると，"--"以降をコマンド引数として解釈する製品があります。SDB用UAP環境定義では該当しません。

-2をオプションではなく，コマンド引数として指定する例（エラーとなる例）を次に示します。

（例）

subschema -s sdb01 -- -2

9.4　指定値の見直しが必要なオペランド

指定できないオペランド，または指定値の見直しが必要なオペランドを次の表に示します。

それぞれのオペランドの詳細については，マニュアル「HiRDB Version 9 システム定義」を参照してください。

表9‒1　指定値の見直しが必要なオペランド

項番

分類

定義名

オペランド名

指定可否

および

指定値の見直し

指定値の目安

1

最大同時実行数

SYS

pd_max_users

○

pd_max_usersオペランドに，SDBデータベースにアクセスするユーザ数を加算してください。

HiRDB/SDデータベースアクセスユティリティ（pdsdbexe）を使用してSDBデータベースにアクセスする場合も，1ユーザとしてpd_max_usersオペランドに加算してください。HiRDB/SDデータベースアクセスユティリティを複数同時に使用する場合は，それぞれ1ユーザとしてカウントする必要があります。

また，次に示すユティリティも，HiRDBに接続するため，pd_max_usersオペランドにユーザ数を加算する必要があります。

ユティリティの最大同時実行数については，「付録C　ユティリティの最大同時実行数およびコマンドの同時接続数」を参照してください。

HiRDB/SD定義ユティリティ（pdsdbdef）

HiRDB/SDデータベース作成ユティリティ（pdsdblod）

HiRDB/SDデータベース再編成ユティリティ（pdsdbrog）

2

SYS

pd_max_access_tables

○

アクセスするレコード型数を指定値に加算してください。

HiRDB/SD定義ユティリティ（pdsdbdef）を実行する場合は，計算式※で求めた値を加算してください。

3

SYS

pd_utl_exec_mode

○

次に示すユティリティは，このオペランドの対象になります。

HiRDB/SD定義ユティリティ（pdsdbdef）

HiRDB/SDデータベース作成ユティリティ（pdsdblod）

HiRDB/SDデータベース再編成ユティリティ（pdsdbrog）

ユティリティの最大同時実行数については，「付録C　ユティリティの最大同時実行数およびコマンドの同時接続数」を参照してください。

4

SYS

pd_max_commit_write_reclaim_no

△

SDBデータベースに対して，空きページ解放ユティリティ（pdreclaim）は使用できません。

5

HiRDBの処理方式

SYS

pd_space_level

△

SDBデータベースでは，空白変換機能は使用しません。

6

SYS

pd_pageaccess_mode

○

SDBデータベースに対しては，スナップショット方式によるページアクセスは適用されません。

更新可能なオンライン再編成の追い付き反映キー対応表には，スナップショット方式によるページアクセスが適用されます。

7

SYS

pd_dec_sign_normalize

○

SDBデータベースでは，正規化された符号付きパック形式10進データと，正規化されていない符号付きパック形式10進データが混在した状態で，SDBデータベースを操作すると，不当にデータベース破壊を検知したり，実行結果が不正になったりすることがあります。

そのため，新規にHiRDB/SDを導入する際にはYを指定し，以降は指定値を変更しないでください。

8

システム監視

SYS

pd_utl_exec_time

○

次に示すユティリティは，このオペランドの対象となります。

HiRDB/SDデータベース作成ユティリティ（pdsdblod）

HiRDB/SDデータベース再編成ユティリティ（pdsdbrog）

9

DS

BES

pdwork

○

バックエンドサーバ定義の場合

HiRDB/SDデータベース作成ユティリティ（pdsdblod）のインデクス一括作成モードを使用する場合は指定する必要があります。

ディクショナリサーバ定義の場合

省略できます。ただし，省略する場合は，pd_work_buff_sizeオペランドの指定を省略（または5MB以上を指定）し，pd_work_buff_modeオペランドの指定を省略（またはpoolを指定）する必要があります。

10

SVR

FES

DS

BES

pd_spd_syncpoint_skip_limit

○

次のコマンドは，シンクポイントダンプ有効化のスキップ回数監視機能の対象外です。

pdsdbdef

pdsdblod

pdsdbrog

11

排他制御

SYS

pd_nowait_scan_option

△

指定値に関係なく，SDBデータベースに対して，WITHOUT LOCK NOWAIT指定の検索はできません。

12

SYS

pd_key_resource_type

△

SDBデータベースに対しては，インデクスキー値で排他制御をしません。

13

SYS

pd_indexlock_mode

○

このオペランドを省略するか，またはNONEを指定してください。

14

SYS

pd_lock_uncommited_delete_data

○

SDBデータベースを操作するAPIまたはDMLのレコードの削除（ERASE）によって削除した，4V FMBまたはSD FMBのSDBデータベースのルートレコードの扱いを指定します。

WAIT：

SDBデータベースを操作するAPIまたはDML（FETCH，FIND，またはFETCHDB ALL）実行時に，レコードを削除したトランザクションが決着するまで排他待ちします。トランザクション決着後のデータを基にした検索結果を取得したい場合に指定します。

NOWAIT（省略値）：

SDBデータベースを操作するAPIまたはDML（FETCH，FIND，またはFETCHDB ALL）実行時に，削除トランザクションの決着を待ちません。削除レコードを読み飛ばしたい場合に指定します。

15

SVR

pd_lck_until_disconnect_cnt

○

「3.8.4　HiRDB/SDデータベース作成ユティリティ（pdsdblod）実行時の排他資源数」を参照して，使用する排他資源数を計算して，指定値に加算してください。

16

SVR

DS

BES

pd_lck_pool_size

○

「3.8　排他資源数の見積もり」を参照して，排他資源数を求めて，マニュアル「HiRDB Version 9 システム定義」のpd_lck_pool_sizeの《指定値の目安》にある計算式に代入して指定値を求めてください。

17

SVR

FES

pd_fes_lck_pool_size

△

SDBデータベースでは，フロントエンドサーバで排他制御をしません。

18

SYS

pd_dbreuse_remaining_entries

△

SDBデータベースに対しては，行識別子の再利用を抑止して，排他待ちの発生頻度を低くすることはできません。

19

RDエリア

SYS

pd_shared_rdarea_use

△

SDBデータベースでは，共用RDエリアは使用できません。

20

グローバルバッファ

SYS

pdbuffer

○

グローバルバッファ指定時の考慮点については，「3.3.3　グローバルバッファを割り当てる際の考慮点」を参照してください。

21

バッファ

SVR

FES

pd_table_def_cache_size

○

デフォルト値で問題ないため，pd_table_def_cache_sizeオペランドの指定は省略してください。

22

SYS

SVR

FES

DS

BES

pd_sql_object_cache_size

○

このオペランドの指定値の目安および見積もり式については，マニュアル「HiRDB Version 9 システム定義」のpd_sql_object_cache_sizeオペランドの説明を参照してください。

また，更新可能なオンライン再編成を実行する場合は，見積もったSQLオブジェクト用バッファ長に，次の計算式で求めた値を加算してください。

48＋（31×更新可能なオンライン再編成の対象BES数）

単位：キロバイト

23

メモリDB

SYS

pd_max_resident_rdarea_no

△

SDBデータベースに対して，メモリDBは適用できません。

24

インデクスの予約数

SYS

pd_assurance_index_no

○

使用するインデクス数から指定値を決めてください。

使用するインデクス数については，現在定義されているインデクス数だけでなく，次回HiRDB開始から終了までの間に追加予定のインデクス数も考慮してください。

25

再編成時期予測機能

SYS

pd_rorg_predict

×

再編成時期予測機能は未サポートです。

26

系切り替え機能

UNT

pd_ha_agent

○

standbyunitを指定してください。

27

HiRDB Datareplicator

UNT

pd_rpl_hdepath

×

HiRDB Datareplicatorは未サポートです。

28

リアルタイムSANレプリケーション

SYS

pd_rise_pairvolume_combination

○

全非同期方式だけをサポートしているため，asyncだけを指定できます。

29

SYS

pd_rise_fence_level

×

全非同期方式以外は未サポートのため，指定しても無視されます。

30

SYS

pd_rise_disaster_mode

×

全非同期方式以外は未サポートのため，指定しても無視されます。

31

通信処理

SYS

pd_utl_buff_size

△

次に示すユティリティは，このオペランドの対象外となります。

HiRDB/SD定義ユティリティ（pdsdbdef）

HiRDB/SDデータベース作成ユティリティ（pdsdblod）

HiRDB/SDデータベース再編成ユティリティ（pdsdbrog）

32

SYS

pd_utl_file_buff_size

○

ユティリティが使用するファイルへ入出力するデータの1回当たりのサイズを指定します。

次に示すユティリティは，このオペランドの対象となります。

HiRDB/SD定義ユティリティ（pdsdbdef）

HiRDB/SDデータベース作成ユティリティ（pdsdblod）

HiRDB/SDデータベース再編成ユティリティ（pdsdbrog）

33

作業表

DS

BES

pd_work_buff_mode

○

このオペランドを省略するか，またはpoolを指定してください。

34

DS

BES

pd_work_buff_size

○

バックエンドサーバ定義の場合

HiRDB/SDデータベース作成ユティリティ（pdsdblod）のインデクス一括作成モードを使用する場合は，このオペランドの対象となります。

作業表用ファイルの容量を超えない範囲で，大きい値ほどユティリティの処理時間が短くなります。

作業表用ファイルの容量については，「3.5.2　作業表用ファイルの容量の見積もり」を参照してください。

ディクショナリサーバ定義の場合

HiRDB/SD定義ユティリティ（pdsdbdef）を実行して，SDBディレクトリ情報を削除する場合，このオペランドの指定を省略，または5MB以上を指定する必要があります。

35

ワークファイルの出力先ディレクトリの変更

UNT

pd_tmp_directory

○

ワークファイルの出力先ディレクトリ名を指定します。

次に示すユティリティは，このオペランドの対象となります。

HiRDB/SD定義ユティリティ（pdsdbdef）

HiRDB/SDデータベース作成ユティリティ（pdsdblod）

HiRDB/SDデータベース再編成ユティリティ（pdsdbrog）

36

UAPの実行環境

UAP

pd_uap_wait

△

SDBデータベースに対して，ローカルバッファは適用できません。

37

UAP

pdlbuffer

△

38

プロセス

BES

pd_max_open_fds

○

HiRDB/SDデータベース作成ユティリティのインデクス一括作成モードを使用する場合

次の計算式から求めた値を指定してください。

MIN（7,320，320＋データロード対象のデータベースの全インデクス数×データロード対象の格納レコード用RDエリア数）

HiRDB/SDデータベース作成ユティリティのインデクス一括作成モードを使用しない場合

省略するか，320を指定してください。

39

監視時間

SYS

pd_cmd_exec_time

○

次に示すユティリティは，このオペランドの対象となります。

HiRDB/SD定義ユティリティ（pdsdbdef）

HiRDB/SDデータベース作成ユティリティ（pdsdblod）

HiRDB/SDデータベース再編成ユティリティ（pdsdbrog）

上記ユティリティの実行時間が指定値よりも長時間となる場合は，指定値を見直してください。

40

SYS

pd_cmd_process_conwaittime

○

次に示すユティリティは，このオペランドの対象となります。

HiRDB/SD定義ユティリティ（pdsdbdef）

HiRDB/SDデータベース作成ユティリティ（pdsdblod）

HiRDB/SDデータベース再編成ユティリティ（pdsdbrog）

（凡例）

○：指定できます。ただし，指定値を見直してください。

△：該当する機能はSDBデータベースでは使用できません。または指定してもSDBデータベースには適用されません。

×：指定できません。指定した場合，動作は保証されません。

SYS：システム共通定義

UNT：ユニット制御情報定義

SVR：サーバ共通定義

FES：フロントエンドサーバ定義

DS：ディクショナリサーバ定義

BES：バックエンドサーバ定義

UAP：UAP環境定義

注※

HiRDB/SD定義ユティリティ（pdsdbdef）を実行する場合は，次に示す計算式で求めた値をpd_max_access_tablesオペランドに加算してください。pd_max_access_tablesオペランドの指定値が小さい場合，HiRDB/SD定義ユティリティ（pdsdbdef）が異常終了するおそれがあります。

*DELETE DICTIONARY文を実行する場合

A＋B

A：SDBデータベース定義に指定しているレコード型数

B：SDBデータベース格納定義に指定しているインデクス数

*CHECK DICTIONARY文を実行する場合

*ENTRY DICTIONARY文で追加したSDBディクショナリ情報に対して，*CHECK DICTIONARY文を実行する場合に，次の計算式の値を加算します。

A＋B

A：SDBデータベース定義に指定しているレコード型数

B：SDBデータベース格納定義に指定しているインデクス数

*ALTER DICTIONARY文で変更したSDBディクショナリ情報に対して，*CHECK DICTIONARY文を実行する場合に，次の計算式の値を加算します。

A＋B

A：SDBデータベース定義に追加したレコード型数

B：SDBデータベース格納定義に追加したインデクス数

*ENTRY DIRECTORY文を実行する場合

*CHECK DICTIONARY文を実行していない場合にかぎり，次の計算式の値を加算します。

A＋B

A：SDBデータベース定義に指定しているレコード型数

B：SDBデータベース格納定義に指定しているインデクス数

*ALTER DIRECTORY文を実行する場合

*CHECK DICTIONARY文を実行していない場合にかぎり，次の計算式の値を加算します。

A＋B

A：SDBデータベース定義に追加したレコード型数

B：SDBデータベース格納定義に追加したインデクス数

なお，複数のSDB定義文を実行する場合は，上記の各計算式を加算してください。例えば，*DELETE DICTIONARY文と*CHECK DICTIONARY文を同時に実行する場合は，上記の1と2の計算式の合計値を加算してください。

9.5　HiRDBの再開始時に指定値を変更できるオペランド

HiRDBの再開始時に指定値を変更できるオペランドと，変更できないオペランドがあります。オペランドの指定値の変更可否を次の表に示します。

次の表に記載のないオペランドについては，マニュアル「HiRDB Version 9 システム定義」の「指定値を変更できるオペランド」を参照してください。

表9‒2　オペランドの指定値の変更可否（HiRDBの再開始時）

項番

オペランド名

強制終了，異常終了後の変更可否

計画停止後の変更可否

1

pd_structured_shmpool_dicsize

○※

○※

2

pd_structured_advance_resident

×

×

3

pd_structured_directory_path

○

○

（凡例）

○：指定値を変更できます。

×：指定値を変更できません。

注※

オペランドの指定値を小さくすると，HiRDBを再開始できない場合があります。

SDB用UAP環境定義のオペランドについては，HiRDBの再開始時に指定値を変更できます。

9.6　pdconfchkコマンドでチェックできるオペランド

pdconfchkコマンドでチェックできるオペランドを次の表に示します。

次の表に記載のないオペランドについては，マニュアル「HiRDB Version 9 システム定義」の「pdconfchkコマンドでチェックできるオペランド」を参照してください。

表9‒3　pdconfchkコマンドでチェックできるオペランド

項番

オペランド名

文法のチェック

ファイルのチェック

アクセス権限のチェック

重複指定のチェック

ホスト名のチェック

サーバマシン間のチェック

1

pd_structured_shmpool_dicsize

○

×

×

×

×

○

2

pd_structured_advance_resident

○

×

×

×

×

○

3

pd_structured_directory_path

○

×

×

×

×

○

（凡例）

○：チェック対象です。

×：チェック対象外です。

文法のチェック：

オペランドの文法が正しいかチェックします。

ファイルのチェック：

システムログファイル，シンクポイントダンプファイル，およびステータスファイルの有無をチェックします。pdconfchkコマンドで-nオプションを指定した場合はファイルのチェックをしません。

アクセス権限のチェック：

HiRDB管理者にファイルのアクセス権があるかを確認します。

HiRDB管理者にhostsファイルのアクセス権があるかを確認します。

pdconfchkコマンドで-nオプションを指定した場合はアクセス権限のチェックをしません。

重複指定のチェック：

システムログファイル，シンクポイントダンプファイル，およびステータスファイルが重複していないかどうかをチェックします。

ホスト名のチェック：

ホスト名がhostsファイルに記述されているかをチェックします。

サーバマシン間のチェック：

システムマネジャが定義されているサーバマシンを基準に，サーバマシン間の妥当性をチェックします。

注意事項

SDB用UAP環境定義のオペランドは，pdconfchkコマンドのチェック対象外になります。

10　コマンド

この章では，運用コマンドおよびユティリティについて，マニュアル「HiRDB Version 9 コマンドリファレンス」との差異を中心に説明します。

10.1　運用コマンドおよびユティリティの実行方法と実行可否

ここでは，運用コマンドおよびユティリティの実行方法と実行可否について説明します。

10.1.1　運用コマンドおよびユティリティの実行方法

運用コマンドおよびユティリティの実行方法については，マニュアル「HiRDB Version 9 コマンドリファレンス」の「コマンドの入力方法」を参照してください。

運用コマンドおよびユティリティの記述形式については，マニュアル「HiRDB Version 9 コマンドリファレンス」の「コマンドの記述形式」を参照してください。

10.1.2　運用コマンドおよびユティリティの一覧

HiRDB/SDの運用コマンドおよびユティリティの一覧を「表10-1　HiRDB/SDの運用コマンドおよびユティリティの一覧」に示します。

なお，運用コマンドおよびユティリティの機能および指定形式の詳細については，マニュアル「HiRDB Version 9 コマンドリファレンス」を参照してください。ただし，マニュアル「HiRDB Version 9 コマンドリファレンス」で説明しているコマンドのうち，使用できないコマンドがあります。「表10-1　HiRDB/SDの運用コマンドおよびユティリティの一覧」の「実行可否」欄が×のコマンドは実行できません。

また，運用コマンドおよびユティリティの機能および指定形式の詳細の説明が，マニュアル「HiRDB Version 9 コマンドリファレンス」ではなく，このマニュアルに記載されている運用コマンドおよびユティリティがあります。該当する運用コマンドおよびユティリティについては，「表10-1　HiRDB/SDの運用コマンドおよびユティリティの一覧」の「留意事項およびマニュアル参照先」欄にマニュアルの参照先を記載しています。

表10‒1　HiRDB/SDの運用コマンドおよびユティリティの一覧

分類

ユティリティ

運用コマンド

内容

実行可否

留意事項およびマニュアル参照先

システムの運用

pdsdbarc

SDBディレクトリ情報の常駐化および最終更新日時のチェック

○

「10.9.1　pdsdbarc（SDBディレクトリ情報の常駐化および最終更新日時のチェック）」を参照してください。

pdadmvr

HiRDBバージョン情報の取得

○

なし

pdcat

ファイルの内容表示

○

pdchgconf

システム構成変更コマンド

○

pdclibsync

Cライブラリファイルの操作

×

pdconfchk

システム定義のチェック

○

pdcspool

トラブルシュート情報および作業用一時ファイルの削除

○

作業用一時ファイルは出力されません。

pdinfoget

障害情報の取得および容量見積もり

○

なし

pditvtrc

HiRDBの状態の定期取得

○

次に示すユティリティは対象外となります。

HiRDB/SD定義ユティリティ（pdsdbdef）

HiRDB/SDデータベース作成ユティリティ（pdsdblod）

HiRDB/SDデータベース再編成ユティリティ（pdsdbrog）

pditvstop

HiRDBの状態の定期取得の停止

○

次に示すユティリティは対象外となります。

HiRDB/SD定義ユティリティ（pdsdbdef）

HiRDB/SDデータベース作成ユティリティ（pdsdblod）

HiRDB/SDデータベース再編成ユティリティ（pdsdbrog）

pdjarsync

JARファイルの操作

×

なし

pdlodsv

インストールディレクトリの容量削減

×

pdlistls

リスト定義情報の表示

×

pdls

HiRDBシステムの状態表示

○

次のオプションは指定できません。

-d ris

-d rpl

系切り替え機能を使用していない場合は，次のオプションを使用できません。

-d ha

pdmemsv

メモリの削減

○

なし

pdobjconv

64ビットモードのHiRDBへのSQLオブジェクトの移行

×

pdopsetup

付加PPのセットアップ

○

pdsetup

HiRDBシステムのOSへの登録・削除

○

指定できる文字コードは，4V FMBまたは4V AFMのSDBデータベースの場合は，シフトJIS漢字コードまたはUnicode（UTF-8）のどちらかになります。

SD FMBのSDBデータベースの場合は，シフトJIS漢字コードになります。

pdsvhostname

サーバのホスト名表示

○

なし

pdvrup

HiRDBバージョンアップ

○

HiRDBファイルシステム

pdfbkup

HiRDBファイルシステム領域のバックアップ

○

なし

pdfls

HiRDBファイルシステムの内容表示

○

pdfmkfs

HiRDBファイルシステム領域の初期設定

○

pdfrm

HiRDBファイルの削除

○

pdfrstr

HiRDBファイルシステム領域のリストア

○

pdfstatfs

HiRDBファイルシステム領域の状態表示

○

pdffsck

HiRDBファイルシステム領域の整合性の検証および修復

○

ログ関係のファイル

pdlogadpf

ログ関係のファイルの割り当て

○

なし

pdlogatul

自動ログアンロード機能の制御

○

pdlogchg

ログ関係のファイルのステータス変更

○

pdlogcls

ログ関係のファイルのクローズ

○

pdloginit

ログ関係のファイルの初期設定

○

pdlogls

ログ関係のファイルの情報表示

○

pdlogopen

ログ関係のファイルのオープン

○

pdlogrm

ログ関係のファイルの削除

○

pdlogswap

ログ関係のファイルのスワップ

○

pdlogsync

シンクポイントダンプの取得

○

pdlogucat

アンロードログファイルの情報表示

○

pdlogunld

ログ関係のファイルのアンロード

○

ステータスファイル

pdstscls

ステータスファイルのクローズ

○

なし

pdstsinit

ステータスファイルの初期設定

○

pdstsopen

ステータスファイルのオープン

○

pdstsrm

ステータスファイルの削除

○

pdstsswap

ステータスファイルのスワップ

○

HiRDBの開始・終了

pdstart

HiRDBシステム・ユニット・サーバの開始

○

なし

pdstop

HiRDBシステム・ユニット・サーバの終了

○

統計ログ

pdstbegin

統計情報の出力開始

○

なし

pdstend

統計情報の出力停止

○

pdstjswap

統計ログファイルの切り替え

○

pdstjsync

統計ログファイルへの統計ログバッファの反映

○

RDエリア

pdclose

RDエリアのクローズ

○

なし

pddbls

RDエリアの状態表示

○

「10.9.3　pddbls（RDエリアの状態表示）」を参照してください。

pdhold

RDエリアの閉塞

○

なし

pdopen

RDエリアのオープン

○

なし

pdrels

RDエリアの閉塞解除

○

pddbfrz

ユーザLOB用RDエリアの満杯HiRDBファイルの更新凍結

×

pdrdrefls

関連RDエリアの表示

○

-tオプションには，処理対象とするレコード型名を指定します。

グローバルバッファ

pdbufls

グローバルバッファ情報の表示

○

なし

pdbufmod

グローバルバッファの動的変更

○

トランザクションの制御

pdcmt

トランザクションのコミット

○

なし

pdfgt

トランザクションの強制終了

○

pdrbk

トランザクションのロールバック

○

pdtrndec

未決着トランザクションの強制自動決着

○

プロセスの制御

pdcancel

UAP，ユティリティ処理の強制終了

○

なし

pdchprc

サーバプロセスの起動本数変更

○

pdpfresh

サーバプロセスのリフレッシュ

○

pdrpause

プロセスサーバプロセスの再起動

○

修正版HiRDBの入れ替え

pdprgcopy

修正版HiRDBのコピー

○

なし

pdprgrenew

修正版HiRDBの入れ替え

○

HiRDBのバージョンアップまたはバージョンダウンとなるような入れ替えを行った場合，動作を保証できません。

HiRDB Datareplicator連携

pdrplstart

HiRDB Datareplicator連携の開始

×

なし

pdrplstop

HiRDB Datareplicator連携の終了

×

インナレプリカ機能

pddbchg

レプリカRDエリアのレプリカステータスの切り替え

○

なし

更新可能なオンライン再編成

pdorbegin

オンライン再編成のデータベース静止化

○

-cおよび-eオプションは指定できません。

pdorcheck

オンライン再編成の適用条件チェック

○

なし

pdorchg

オンライン再編成のカレントRDエリアの切り替え

○

pdorcreate

オンライン再編成の追い付き反映環境の作成

○

pdorend

オンライン再編成の追い付き反映

○

-pオプションは指定できません

pdsdborcrt

追い付き反映キー対応表の操作

○

なし

セキュリティ監査

pdaudbegin

監査証跡の取得開始

○

なし

pdaudend

監査証跡の取得停止

○

pdaudrm

閉塞中の監査証跡ファイルの削除

○

pdaudswap

現用の監査証跡ファイルのスワップ

○

pdaudatld

監査証跡表の自動データロード

○

pdaudput

JP1/NETM/Audit用監査ログ出力ユティリティ

○

CONNECT関連セキュリティ機能

pdacunlck

連続認証失敗アカウントロック状態の解除

○

なし

トランザクションキューイング機能

pdtrnqing

トランザクションキューイング機能の開始，解除

○

なし

リアルタイムSANレプリケーション

pdrisechk

リアルタイムSANレプリケーションの構成確認

○

-l，-n，-ｒオプションは指定できません。

pdrisedbto

リアルタイムSANレプリケーションのデータベース引き継ぎ

×

ログ同期方式は未サポートのため，指定できません。

pdriseset

リアルタイムSANレプリケーションのサイト状態の設定

×

インメモリデータ処理

pdmemdb

インメモリデータ処理に関する操作

×

なし

SQLトレースの取得

pdclttrc

SQLトレースの動的取得

○

なし

SQLオブジェクトの情報表示

pdobils

SQLオブジェクト用バッファの統計情報表示

×

なし

SQLの翻訳

pdcbl

COBOLプリプロセサ

×

なし

pdcpp

Cプリプロセサ

×

pdocb

OOCOBOLプリプロセサ

×

pdocc

C++プリプロセサ

×

SDBデータベースの生成・操作

pdinit

データベース初期設定ユティリティ

○

「10.2　データベース初期設定ユティリティ（pdinit）」を参照してください。

pdsdbdef

HiRDB/SD定義ユティリティ

○

「11.　HiRDB/SD定義ユティリティ（pdsdbdef）」を参照してください。

pddef

データベース定義ユティリティ

○

次に示す定義系SQLが実行できます。

CREATE SCHEMA

DROP SCHEMA

GRANT

REVOKE

CREATE CONNECTION SECURITY

DROP CONNECTION SECURITY

CREATE AUDIT

DROP AUDIT

pdsdblod

HiRDB/SDデータベース作成ユティリティ

○

「12.　HiRDB/SDデータベース作成ユティリティ（pdsdblod）」を参照してください。

pdload

データベース作成ユティリティ

○

SDBデータベースに対するデータロードは，HiRDB/SDデータベース作成ユティリティ（pdsdblod）で実行します。

監査証跡表に監査証跡のデータを登録する際に，データベース作成ユティリティ（pdload）を実行します。

pdparaload

パラレルローディング

×

なし

pdsdbexe

HiRDB/SDデータベースアクセスユティリティ

○

「14.　HiRDB/SDデータベースアクセスユティリティ（pdsdbexe）【4V FMB，4V AFM】」を参照してください。

pdsql

会話型SQL実行ユティリティ

○

次に示すSQLが実行できます。

CREATE SCHEMA

DROP SCHEMA

GRANT

REVOKE

CREATE CONNECTION SECURITY

DROP CONNECTION SECURITY

CONNECT

DISCONNECT

COMMIT

ROLLBACK

pddefrev

定義系SQLの生成

×

なし

データベースの運用

pdsdbrog

HiRDB/SDデータベース再編成ユティリティ

○

「13.　HiRDB/SDデータベース再編成ユティリティ（pdsdbrog）」を参照してください。

pdrorg

データベース再編成ユティリティ

○

ディクショナリ表の再編成，および監査証跡表のアンロードの際に実行します。

SDBデータベースの再編成は，HiRDB/SDデータベース作成ユティリティ（pdsdblod）およびHiRDB/SDデータベース再編成ユティリティ（pdsdbrog）で実行します。

pdmod

データベース構成変更ユティリティ

○

データベース構成変更ユティリティ使用時の制限については，「10.3　データベース構成変更ユティリティ（pdmod）」を参照してください。

pdexp

ディクショナリ搬出入ユティリティ

×

なし

pdrbal

リバランスユティリティ

×

pdreclaim

空きページ解放ユティリティ

×

pdpgbfon

グローバルバッファ常駐化ユティリティ

○

「10.5　グローバルバッファ常駐化ユティリティ（pdpgbfon）」を参照してください。

pdconstck

整合性チェックユティリティ

×

なし

チューニング

pdstedit

統計解析ユティリティ

○

なし

pddbst

データベース状態解析ユティリティ

○

SDBデータベースを格納するRDエリアに対して，RDエリア単位の状態解析の論理的解析および物理的解析だけが実行できます。

データベース状態解析ユティリティ使用時の制限については，「10.7　データベース状態解析ユティリティ（pddbst）」を参照してください。

pdgetcst

最適化情報収集ユティリティ

×

なし

pdvwopt

アクセスパス表示ユティリティ

×

データベースの障害対策

pdcopy

データベース複写ユティリティ

○

なし

pdbkupls

バックアップファイルの情報表示

○

「10.9.2　pdbkupls（バックアップファイルの情報表示）」を参照してください。

pdrstr

データベース回復ユティリティ

○

なし

プラグイン関連

pdplgrgst

プラグインの登録

×

なし

pdplgset

プラグインのセットアップ

×

pdreginit

レジストリ機能初期設定ユティリティ

×

（凡例）

○：HiRDB/SDで実行できるコマンドです。

×：HiRDB/SDで実行できないコマンドです。実行した場合の動作は保証しません。

空白：留意事項およびマニュアルの参照先はありません。

10.1.3　OSやほかのプログラムが提供しているコマンド名とHiRDB/SDのコマンド名が同じ場合

OSやほかのプログラムが提供しているコマンド名と，HiRDB/SDのコマンド名（運用コマンド名またはユティリティ名）が同じ場合，HiRDB/SDのコマンドが実行できないことがあります。このような場合，次に示すどちらかの方法で対処してください。

環境変数の設定をHiRDB/SDのコマンド優先にする

絶対パスを指定してHiRDB/SDのコマンドを実行する

上記の2つの対処が実施できない場合，HiRDB/SDのコマンド名を変更する（別名で実行する）シェルスクリプトを作成してください。次に示すシェルスクリプトを作成すると，HiRDB/SDのコマンド名を変更できます。オプションもすべて同様に指定できます。

Bourneシェルの場合

 #!/bin/sh -f

 #set HiRDB/SD command here
 HiRDBSD_COMMAND=XX....XX   ←ここに変更したいHiRDB/SDのコマンド名を記述します。

 ${PDDIR}/bin/${HiRDBSD_COMMAND}  $*
 exit $?

Cシェルの場合

 #!/bin/csh -f

 #set HiRDB/SD command here
 set HiRDBSD_COMMAND=XX....XX  ←ここに変更したいHiRDB/SDのコマンド名を記述します。

 ${PDDIR}/bin/${HiRDBSD_COMMAND}  $argv
 exit $status

［説明］

作成したシェルスクリプトのファイル名は，HiRDB/SDのコマンド名とは異なる名称にしてください。ファイル名が変更したコマンド名になります。

HiRDB運用ディレクトリ下のbinまたはlibの2つのディレクトリは，アンインストール時にディレクトリごと削除されるおそれがあるため，この2つのディレクトリ下にシェルスクリプトファイルを作成しないでください。

シェルスクリプトファイルを格納したディレクトリを環境変数PATHまたはpathに設定してください。

10.2　データベース初期設定ユティリティ（pdinit）

データベース初期設定ユティリティは，HiRDBのデータベースとして使用するために，ファイルの物理構成を設定するユティリティです。

データベース初期設定ユティリティ（pdinit）の機能および指定形式の詳細については，マニュアル「HiRDB Version 9 コマンドリファレンス」を参照してください。ただし，マニュアル「HiRDB Version 9 コマンドリファレンス」に記載されている内容とは，仕様差がある部分があります。ここでは，その仕様差についてだけ説明します。

10.2.1　create rdarea文

create rdarea文のオペランドについて説明します。

項番

オペランド

1

create 〔shared〕

2

　　　　　　rdarea RDエリア名

3

　　　　　　for ｛masterdirectory

　　　　　　　　｜datadirectory

　　　　　　　　｜datadictionary 〔of routines〕

　　　　　　　　｜user used by ｛PUBLIC｜認可識別子〔，認可識別子〕…｝

　　　　　　　　｜LOB used by ｛HiRDB（ディクショナリ表の名称）｜PUBLIC

　　　　　　　　　　　　　　　　　 ｜認可識別子〔，認可識別子〕…｝

　　　　　　　　｜list｝

4

　　　　　　〔server name サーバ名〕

5

　　　　　　〔data model ｛structured｜relational｝〕

6

　　　　　　〔open attribute ｛INITIAL｜DEFER｜SCHEDULE｝〕

7

　　　　　　〔page ページ長 characters〕

8

　　　　　　〔storage control segment セグメントサイズ pages〕

9

　　　　　　〔max entries 最大リスト登録数〕

10

　　　　　　〔extension｛use 増分セグメント数 segments｜nouse｝〕

11

　　　　　　file name "HiRDBファイルシステム領域名/HiRDBファイル名"

12

　　　　　　　　initial HiRDBファイル内セグメント数 segments

−

　　　　　　〔file name "HiRDBファイルシステム領域名/HiRDBファイル名"

　　　　　　　　initial HiRDBファイル内セグメント数 segments〕…

　;

注

項番11，12は，必ずcreate rdarea文の最後に指定してください。

ここでは，項番5のdata modelオペランドについてだけ説明します。そのほかのオペランドについては，マニュアル「HiRDB Version 9 コマンドリファレンス」を参照してください。

●data model ｛structured｜relational｝

RDエリアに格納するデータベースの形式を指定します。

structured：

RDエリアにSDBデータベースを格納する場合に指定します。

relational：

RDエリアにリレーショナルDBを格納する場合に指定します。次のRDエリアを定義する場合はこのオペランドを省略するか，またはrelationalを指定してください。

システム用RDエリア

追い付き反映キー対応表を格納するRDエリア

追い付き反映キー対応表のインデクスを格納するRDエリア

追い付き状態管理表を格納するRDエリア

監査証跡表を格納するRDエリア

参考

システム用RDエリアのデータベースの形式は，リレーショナルDBに分類されます。

《注意事項》

forオペランドには公用RDエリアの指定であるuser used by PUBLICを指定してください。ただし，監査証跡表を格納するRDエリアについては，マニュアル「HiRDB Version 9 システム運用ガイド」の「監査人の登録，監査証跡表を格納するRDエリアの作成，および監査証跡表の作成」の「監査証跡表を格納するRDエリアの作成」の「RDエリアの作成」を参照して，格納できるRDエリアの種類を確認してから，forオペランドを指定するようにしてください。

RDエリア作成後に格納するデータベースの形式を変更する場合は，データベース構成変更ユティリティ（pdmod）でRDエリアを削除してから，RDエリアを追加してください。

10.2.2　HiRDBファイルのセグメント数の指定

データベース初期設定ユティリティ（pdinit）では，create rdarea文のinitialオペランドに，HiRDBファイルのセグメント数を指定します。

データディクショナリ用RDエリアを構成するHiRDBファイルの総セグメント数は次の表に示す値より大きい値を指定してください。

表10‒2　データディクショナリ用RDエリアの最小セグメント数

RDエリアの種別

最小セグメント数

データディクショナリ用RDエリア

207

データディクショナリ用RDエリアが複数ある場合，次に示す表の順に，セグメント数の多いRDエリアから1RDエリアに１ディクショナリ表ずつ格納されます。ディクショナリ表のインデクスは，対応するディクショナリ表と同じRDエリアに格納されます。したがって，データディクショナリ用RDエリアが複数ある場合は，格納されるディクショナリ表およびそのディクショナリ表のインデクスの数が最小セグメント数となります。

表10‒3　ディクショナリ表に定義されているインデクス数

格納順序

ディクショナリ表の名称

インデクス数

1

SQL_PHYSICAL_FILES

2

2

SQL_RDAREAS

2

3

SQL_TABLES

2

4

SQL_COLUMNS

3

5

SQL_INDEXES

3

6

SQL_USERS

1

7

SQL_RDAREA_PRIVILEGES

2

8

SQL_TABLE_PRIVILEGES

2

9

SQL_DIV_TABLE

3

10

システムで使用する表

2

11

SQL_INDEX_COLINF

2

12

SQL_TABLE_STATISTICS

1

13

SQL_COLUMN_STATISTICS

1

14

SQL_INDEX_STATISTICS

2

15

SQL_VIEW_TABLE_USAGE

3

16

SQL_VIEWS

2

17

システムで使用する表

2

18

SQL_DIV_INDEX

2

19

SQL_DIV_COLUMN

2

20

SQL_REFERENTIAL_CONSTRAINTS

3

21

SQL_ALIASES

1

22

SQL_DATATYPES

3

23

SQL_DATATYPE_DESCRIPTORS

2

24

SQL_TABLE_RESOURCES

3

25

SQL_PLUGINS

3

26

SQL_PLUGIN_ROUTINES

4

27

SQL_PLUGIN_ROUTINE_PARAM

3

28

SQL_INDEX_TYPES

2

29

SQL_INDEX_RESOURCES

2

30

SQL_INDEX_DATATYPE

2

31

SQL_INDEX_FUNCTION

2

32

SQL_TYPE_RESOURCES

3

33

SQL_INDEX_TYPE_FUNCTION

1

34

SQL_EXCEPT

3

35

システムで使用する表

0

36

SQL_FOREIGN_SERVERS

0

37

SQL_USER_MAPPINGS

1

38

SQL_IOS_GENERATIONS

0

39

SQL_TRIGGERS

4

40

システムで使用する表

2

41

SQL_TRIGGER_COLUMNS

2

42

SQL_TRIGGER_DEF_SOURCE

2

43

SQL_TRIGGER_USAGE

4

44

SQL_PARTKEY

1

45

SQL_PARTKEY_DIVISION

1

46

SQL_AUDITS

3

47

システムで使用する表

2

48

SQL_KEYCOLUMN_USAGE

2

49

SQL_TABLE_CONSTRAINTS

2

50

SQL_CHECKS

2

51

SQL_CHECK_COLUMNS

2

52

SQL_DIV_TYPE

1

53

SQL_SYSPARAMS

1

54

システムで使用する表

1

55

SQL_INDEX_XMLINF

2

56

SQL_SEQUENCES

2

57

SQL_SDB_DB

3

58

SQL_SDB_DB_VIEW

4

59

SQL_SDB_STORAGE_DB

5

60

SQL_SDB_NAME_CODE

4

61

SQL_SDB_DIR

3

62

SQL_ROUTINES

4

63

SQL_ROUTINE_RESOURCES

4

64

SQL_ROUTINE_PARAM

3

10.3　データベース構成変更ユティリティ（pdmod）

データベース構成変更ユティリティ（pdmod）は，RDエリアの追加，拡張，または再初期化など，データベースの物理構成を変更するためのユティリティです。

データベース構成変更ユティリティ（pdmod）の機能および指定形式の詳細については，マニュアル「HiRDB Version 9 コマンドリファレンス」を参照してください。ただし，マニュアル「HiRDB Version 9 コマンドリファレンス」に記載されている内容とは，仕様差がある部分があります。ここでは，その仕様差についてだけ説明します。

10.3.1　RDエリアの追加

create rdarea文のオペランドについて説明します。

項番

オペランド

1

create 〔shared〕

2

　　　　　rdarea RDエリア名

3

　　　　〔globalbuffer グローバルバッファ名〕

4

　　　　　for ｛datadictionary of ｛routines｜dbmanagement｝

　　　　　　　｜user used by ｛PUBLIC｜認可識別子〔，認可識別子〕…｝

　　　　　　　｜LOB used by ｛HiRDB（ディクショナリ表の名称）

　　　　　　　｜PUBLIC｜認可識別子〔，認可識別子〕…｝

　　　　　　　｜list｝

5

　　　　〔server name サーバ名〕

6

　　　　〔data model ｛structured｜relational｝〕

7

　　　　〔open attribute ｛INITIAL｜DEFER｜SCHEDULE｝〕

8

　　　　〔page ページ長 characters〕

9

　　　　〔storage control segment セグメントサイズ pages〕

10

　　　　〔max entries 最大リスト登録数〕

11

　　　　〔extension ｛use 増分セグメント数 segments｜nouse｝〕

12

　　　　file name "HiRDBファイルシステム領域名/HiRDBファイル名"

13

　　　　　　initial HiRDBファイル内セグメント数 segments

−

　　　　〔file name "HiRDBファイルシステム領域名/HiRDBファイル名"

　　　　　　initial HiRDBファイル内セグメント数 segments〕…

　;

注

項番12，13は，必ずcreate rdarea文の最後に指定してください。

ここでは，項番6のdata modelオペランドについてだけ説明します。そのほかのオペランドについては，マニュアル「HiRDB Version 9 コマンドリファレンス」を参照してください。

●data model ｛structured｜relational｝

RDエリアに格納するデータベースの形式を指定します。

structured：

RDエリアにSDBデータベースを格納する場合に指定します。

relational：

RDエリアにリレーショナルDBを格納する場合に指定します。次のRDエリアを定義する場合はこのオペランドを省略するか，またはrelationalを指定してください。

追い付き反映キー対応表を格納するRDエリア

追い付き反映キー対応表のインデクスを格納するRDエリア

追い付き状態管理表を格納するRDエリア

監査証跡表を格納するRDエリア

参考

システム用RDエリアのデータベースの形式は，リレーショナルDBに分類されます。

《注意事項》

forオペランドには公用RDエリアの指定であるuser used by PUBLICを指定してください。ただし，監査証跡表を格納するRDエリアについては，マニュアル「HiRDB Version 9 システム運用ガイド」の「監査人の登録，監査証跡表を格納するRDエリアの作成，および監査証跡表の作成」の「監査証跡表を格納するRDエリアの作成」の「RDエリアの作成」を参照して，格納できるRDエリアの種類を確認してから，forオペランドを指定するようにしてください。

RDエリア作成後に格納するデータベースの形式を変更する場合は，データベース構成変更ユティリティ（pdmod）でRDエリアを削除してから，RDエリアを追加してください。

globalbufferオペランドを指定して，追加したRDエリアにグローバルバッファを割り当ててください。globalbufferオペランドでグローバルバッファを割り当てない場合，HiRDBをいったん終了して，システム定義のpdbufferオペランドでグローバルバッファを割り当てないと，追加したRDエリアを使用できません。

10.3.2　RDエリアの再初期化

(1)　注意事項

SDBデータベース格納定義の格納レコード用RDエリアに指定したRDエリアに対して，RDエリアの再初期化でページ長を変更する場合は，変更前のページ長以上の値を指定してください。SDBデータベース定義に，変更後のページ長に収まらないレコード長のレコード型が存在する場合，該当するレコードの格納時にエラーとなります。

SDBデータベース格納定義でSUBPAGE NUMBER句を指定したレコード型を格納するRDエリアに対しては，RDエリアの再初期化でページ長を変更しないでください。ページ長を変更した場合，該当するレコード型のレコードの格納時や検索時などにエラーとなります。

(2)　RDエリアの再初期化後のレコードおよびインデクスの状態

レコードを格納しているRDエリアを再初期化した場合

再初期化したRDエリア内の全レコードが削除されます。また，レコード型に定義されているインデクスのデータも同時に削除されます。

SDBデータベースを横分割している場合は，再初期化対象のRDエリアに格納されているレコードだけが削除されます。このとき，削除されたレコードに対応するインデクスのデータも同時に削除されます。

参考

RDエリアを再初期化した場合，レコード型およびインデクスの定義情報は削除されずに引き継がれます。

インデクスを格納しているRDエリアを再初期化した場合

再初期化したRDエリア内のインデクスの全データが削除されます。ただし，レコードは削除されません。

SDBデータベースを横分割している場合は，再初期化対象のRDエリアに格納されているインデクスのデータだけが削除されます。レコードは削除されません。

このように，インデクスを格納しているRDエリアを再初期化すると，レコードとインデクスの整合性が取れなくなります。この状態をインデクスの未完状態といいます。未完状態のインデクスは使用できないため，基本的にはインデクスを格納しているRDエリアだけを再初期化しないようにしてください。

インデクスを格納しているRDエリアだけを再初期化してしまった場合，インデクスを格納しているRDエリアを閉塞解除かつオープン状態にして，レコードを格納しているRDエリアをpdmodコマンドで再初期化するか，またはpdsdblodコマンドでインデクスを再作成してください。

RDエリアの再初期化後のレコードおよびインデクスの状態を次の図に示します。

図10‒1　RDエリアの再初期化後のレコードおよびインデクスの状態

(3)　実行結果リストの出力

RDエリアの再初期化を実行した場合，実行結果リストが出力されます。実行結果リストに出力される情報については，「HiRDB Version 9 コマンドリファレンス」の「RDエリアの再初期化」の「実行結果リストの出力」を参照してください。

なお，「HiRDB Version 9 コマンドリファレンス」の「実行結果リストの出力」で説明されている次の出力情報の表識別子には，レコード型名が表示されます。

4．再初期化したRDエリア内の表識別子

認可識別子．表識別子

注

上記の「4.」は，「HiRDB Version 9 コマンドリファレンス」の「実行結果リストの出力」の説明で使用している項番です。

10.3.3　RDエリアの削除

RDエリア内にレコードまたはインデクスがある場合（レコードまたはインデクスの定義がある場合），そのRDエリアは削除できません。

10.3.4　RDエリアの属性変更

ユーザ用RDエリアの名称は変更できません。

10.3.5　RDエリアの移動

ユーザ用RDエリアの移動はできません。

10.4　データベース再編成ユティリティ（pdrorg）

データベース再編成ユティリティ（pdrorg）はデータベースのメンテナンスをするためのユティリティです。

データベース再編成ユティリティ（pdrorg）では，ディクショナリ表の再編成だけが実行できます。SDBデータベースを再編成する場合は，HiRDB/SDデータベース再編成ユティリティ（pdsdbrog）を使用してください。

データベース再編成ユティリティ（pdrorg）の機能および指定形式の詳細については，マニュアル「HiRDB Version 9 コマンドリファレンス」を参照してください。ただし，マニュアル「HiRDB Version 9 コマンドリファレンス」に記載されている内容とは，仕様差がある部分があります。ここでは，その仕様差についてだけ説明します。

10.4.1　ディクショナリ表の再編成

すべてのディクショナリ表を再編成するだけでなく，特定のディクショナリ表だけを指定して再編成することもできます。また，HiRDB/SDが使用するディクショナリ表も指定できます。

処理対象となる表の名称を-tオプションで指定します。ディクショナリ表の場合，次の形式で指定してください。詳細については，マニュアル「HiRDB Version 9 コマンドリファレンス」の「データベース再編成ユティリティ（pdrorg）」の-tオプションの説明を参照してください。

-t ｛表識別子〔，表識別子〕…｝

すべてのディクショナリ表を再編成したい場合は，-tオプションを省略してください。特定のディクショナリ表を再編成する場合は，次の表に示す表識別子を-tオプションに指定します。なお，すべてのディクショナリ表を再編成する場合，次の表に示す順でアンロード・リロードされます。

表10‒4　-tオプションに指定するディクショナリ表の表識別子

項番

表識別子

備考

1

SQL_PHYSICAL_FILES

なし

2

SQL_RDAREAS

3

SQL_TABLES

4

SQL_COLUMNS

5

SQL_INDEXES

6

SQL_USERS

7

SQL_RDAREA_PRIVILEGES

8

SQL_TABLE_PRIVILEGES

9

SQL_DIV_TABLE

10

SQL_DIV_TABLE_REGULARIZE

システムで使用する表

11

SQL_INDEX_COLINF

なし

12

SQL_TABLE_STATISTICS

13

SQL_COLUMN_STATISTICS

14

SQL_INDEX_STATISTICS

15

SQL_VIEW_TABLE_USAGE

16

SQL_VIEWS

17

SQL_VIEW_DEF

システムで使用する表

18

SQL_DIV_INDEX

なし

19

SQL_DIV_COLUMN

20

SQL_REFERENTIAL_CONSTRAINTS

21

SQL_ALIASES

22

SQL_ROUTINES

23

SQL_ROUTINE_RESOURCES

24

SQL_ROUTINE_PARAMS

25

SQL_DATATYPES

26

SQL_DATATYPE_DESCRIPTORS

27

SQL_TABLE_RESOURCES

28

SQL_PLUGINS

29

SQL_PLUGIN_ROUTINES

30

SQL_PLUGIN_ROUTINE_PARAMS

31

SQL_REGISTRY_CONTEXT

システムで使用する表

32

SQL_REGISTRY_KEY

33

SQL_INDEX_TYPES

なし

34

SQL_INDEX_RESOURCES

35

SQL_INDEX_DATATYPE

36

SQL_INDEX_FUNCTION

37

SQL_TYPE_RESOURCES

38

SQL_INDEX_TYPE_FUNCTION

39

SQL_EXCEPT

40

SQL_FOREIGN_SERVER

41

SQL_USER_MAPPINGS

42

SQL_USAGE_PRIVILEGES

システムで使用する表

43

SQL_IOS_GENERATIONS

44

SQL_TRIGGERS

なし

45

SQL_TRIGGER_ACTCOND

システムで使用する表

46

SQL_TRIGGER_COLUMNS

なし

47

SQL_TRIGGER_DEF_SOURCE

48

SQL_TRIGGER_USAGE

49

SQL_PARTKEY

50

SQL_PARTKEY_DIVISION

51

SQL_AUDITS

52

SQL_AUDIT_REGULARIZE

システムで使用する表

53

SQL_KEYCOLUMN_USAGE

なし

54

SQL_TABLE_CONSTRAINTS

55

SQL_CHECKS

56

SQL_CHECK_COLUMNS

57

SQL_DIV_TYPE

58

SQL_SYSPARAMS

59

SQL_DB_MANAGEMENT

システムで使用する表

60

SQL_DB_STATE_ANALYZED

61

SQL_PUBLICVIEW_SAME_USERS

62

SQL_INDEX_XMLINF

なし

63

SQL_SEQUENCES

64

SQL_SDB_DB

65

SQL_SDB_DB_VIEW

システムで使用する表

66

SQL_SDB_STORAGE_DB

なし

67

SQL_SDB_NAME_CODE

システムで使用する表

68

SQL_SDB_DIR

なし

10.5　グローバルバッファ常駐化ユティリティ（pdpgbfon）

グローバルバッファ常駐化ユティリティ（pdpgbfon）はHiRDB開始直後や，オンライン業務開始前などに，SDBデータベースのデータ（レコードやインデクス）をグローバルバッファにあらかじめ読み込んでおくためのユティリティです。

グローバルバッファ常駐化ユティリティ（pdpgbfon）の機能および指定形式の詳細については，マニュアル「HiRDB Version 9 コマンドリファレンス」を参照してください。ただし，マニュアル「HiRDB Version 9 コマンドリファレンス」に記載されている内容とは，仕様差がある部分があります。ここでは，その仕様差についてだけ説明します。

10.5.1　オプションの説明

-t ｛〔認可識別子.〕表識別子｜〔認可識別子.〕all｝

表識別子には，ルートレコードまたは仮想ルートレコードのレコード型名を指定します。常駐化の対象となる資源を次に示します。

-kオプションにtableを指定した場合（データページを常駐化する場合）

指定したルートレコードまたは仮想ルートレコードが定義されているSDBデータベースの全レコード（ルートレコードとその子レコード，または仮想ルートレコードとその子レコード）が常駐化の対象になります。

-kオプションにindexを指定した場合（インデクスページを常駐化する場合）

指定したルートレコードまたは仮想ルートレコードが定義されているSDBデータベースの全インデクス（シーケンシャルインデクスおよび二次インデクス）が常駐化の対象になります。

allを指定した場合，その認可識別子（スキーマ）が所有しているSDBデータベースのレコード，またはインデクスのどちらかを常駐化します。-kオプションの指定によって，レコードまたはインデクスのどちらを常駐化するかが決まります。

なお，allを指定した場合，idxname文は指定できません。

-b

BINARY型は未サポートのため，-bオプションは指定できません。指定しても無視されます。

10.5.2　ユティリティを実行できるユーザ

グローバルバッファ常駐化ユティリティ（pdpgbfon）を実行する場合は，DBA権限が必要になります。そのため，このユティリティを実行する場合は，環境変数PDUSERにDBA権限を持ったユーザの認可識別子とパスワードを設定しておく必要があります。

10.6　統計解析ユティリティ（pdstedit）

統計解析ユティリティ（pdstedit）は，HiRDBの稼働情報など，統計情報を編集・表示するためのユティリティです。

統計解析ユティリティ（pdstedit）の機能および指定形式の詳細については，マニュアル「HiRDB Version 9 コマンドリファレンス」を参照してください。ただし，マニュアル「HiRDB Version 9 コマンドリファレンス」に記載されている内容とは，仕様差がある部分があります。ここでは，その仕様差についてだけ説明します。

10.6.1　対象となる統計情報

次に示す統計情報が対象となります。

システムの稼働に関する統計情報

グローバルバッファプールに関する統計情報

インデクスに関する統計情報

データベース操作に関するHiRDBファイルの統計情報

デファードライト処理に関する統計情報

UAPに関する統計情報

データベースの入出力に関する統計情報

10.6.2　UAPに関する統計情報（標準出力）

UAPに関する統計情報に出力される情報を次に示します。

pdstedit 09-60(Object Option) ***** UAP INFORMATION *****
INPUT          :/tmp/stjdata
OUTPUT RANGE   :**/**/** **:**:** - **/**/** **:**:**
-----------------------------------------------------------------------------
HOST = test
-----------------------------------------------------------------------------
EDIT TIME 2015/11/29 16:00:00 - 2015/11/29 17:00:00
UAP NAME
  SERVICE NAME
                                 EXEC  NORM  ERROR TTIME TAVG  CACHE LOCK
------------------------------   ----- ----- ----- ----- ----- ----- -----
                                 LMAX  LAVG  CTIME CTAVG SVEXT SVEXA
                                 ----- ----- ----- ----- -----
   *SQL OBJECT*                  REQ   RAVG  HITS  HAVG  CRT   CAVG  SMAX
                                 ----- ----- ----- ----- ----- ----- -----
   *LN1* COMT  ROLB  FROW  DROW  IROW  UROW  SET   OPEN  FETC  CLOS  DESC
         ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
   *LN2* SEL   INS   UPD   DEL   LOCK  CRTT  DRPT  ALTT  CRTI  DRPI  CMTT
         ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
   *LN3* CMTC  CRTS  DRPS  GRTR  GRTS  GRTA  GRTC  GRTD  RVKR  RVKS  RVKA
         ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
   *LN4* RVKC  RVKD  CRTV  DRPV  PRGT  CRTP  DRPP  ALTP  CALL  DESI  MISC
         ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
   *STORED ROUTINE OBJECT*       REQ   RAVG  HITS  HAVG
                                 ----- ----- ----- -----
   *DB ACCESS*                   MAXIO MINIO MWFN  MWFEC MWFVL
                                 ----- ----- ----- ----- -----
                                 MWHTS MBSL1 MBSL2 MBSL3
                                 ----- ----- ----- -----
   *LN1* IOTIM DIDRC DIDUC DIDHC DIDHR DIDRD DIDWT LBRFC LBUPC LBRHC LBUHC
         ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
   *LN2* LRFHR LUPHR LBRDC LBWTC BFSHC BRDWC BWTWC BLKWC WFRDC WFWTC WBFOC
         ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
   *LN3* SCHSK SCHCH LDIRC LDIUC LDIHC LDIRD LDIWT LBFSHC ARREQ ARWC  ARWT
         ----- ----- ----- ----- ----- ----- ----- -----  ----- ----- -----
   *LN4* ARSTA HJMAX HJAVG TUSEG COMPC COMPT CMPMT EXTEC EXTET EXTMT
         ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
   *THREAD LOCK*
   *LN1* LCKTC LCKWC LCKWT LCKTM LCKWQ LCKQM JBFTC JBFWC JBFWT JBFTM JBFWQ
         ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
   *LN2* JBFQM BUFTC BUFWC BUFWT BUFTM BUFWQ BUFQM
         ----- ----- ----- ----- ----- ----- -----
   *SDB ACCESS*
         [  1] [  2] [  3] [  4] [  5] [  6] [  7] [  8] [  9] [010] [ 11]
   *LN1* DMLC  DMLS  DMLE  DMLFT DMLER DMLST DMLMO DMLDE DMLIF VRTFT VRTST
         ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
         [ 12] [ 13] [ 14] [ 15] [ 16] [ 17] [ 18] [ 19] [020] [ 21] [ 22]
   *LN2* VRTMO ONYS  ONYE  SDBFT SDBER SDBST SDBMO SDFTR SDERR SDSTR SDMOR
         ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
         [ 23]
   *LN3* SDTFC
         -----
Unknown
  *******************************
                                    68    68     0 40.6M  597k     0     0
                                     0     0     0     0    22     0
   *SQL OBJECT*                      0     0     0     0     0     0     0
   *LN1*     3     0     0     0     0     0     0     0     0     0     0 [ 24]
      **     0     0     0     0     0     0     0     0     0     0     0 [ 25]
   *LN2*     0     0     0     0     0     0     0     0     0     0     0
      **     0     0     0     0     0     0     0     0     0     0     0
   *LN3*     0     0     0     0     0     0     0     0     0     0     0
      **     0     0     0     0     0     0     0     0     0     0     0
   *LN4*     0     0     0     0     0     0     0     0     0     0     0
      **     0     0     0     0     0     0     0     0     0     0     0
   *STORED ROUTINE OBJECT*           0     0     0     0
   *DB ACCESS*                       0     0     0     0     0
                                     0     0     0     0
   *LN1*     0     3     0     2    67     1     0     0     0     0     0
      **     0     0     0     0           0     0     0     0     0     0
   *LN2*     0     0     0     0     1     0     0     0     0     0     0
      **                 0     0     0     0     0     0     0     0     0
   *LN3*     0     0     0     0     0     0     0     0      0     0     0
      **                 0     0     0     0     0     0      0     0     0
   *LN4*     0     0     0     0     0     0     0     0     0     0
      **     0
   *THREAD LOCK*
   *LN1* 1.08k     0     0     0     0     0    12     0     0     0     0
      **                 0           0                       0           0
   *LN2*     0 46.5k     0     0     0     0     0
      **                       0           0
   *SDB ACCESS*
   *LN1*     9     1     0     1     0     0     0     0     0     1     0
      **     0     0     0     0     0     0     0     0     0     0     0
   *LN2*     0     1     0     2     0     0     0     2     0     0     0
      **     0     0     0     0     0     0     0     0     0     0     0
   *LN3*     0
      **     0
pdsdblod
  *******************************
                                     1     1     0     9     9 9.38k     0
                                     0     0     0     0     7     7
   *SQL OBJECT*                      5     5     1     1     4     4 2.23k
   *LN1*     4     0     5     0     0     0     1     1     1     1     0
      **     4     0     5     0     0     0     1     1     1     1     0
   *LN2*     4     0     0     0     0     0     0     0     0     0     0
      **     4     0     0     0     0     0     0     0     0     0     0
   *LN3*     0     0     0     0     0     0     0     0     0     0     0
      **     0     0     0     0     0     0     0     0     0     0     0
   *LN4*     0     0     0     0     0     0     0     0     0     0     0
      **     0     0     0     0     0     0     0     0     0     0     0
   *STORED ROUTINE OBJECT*           0     0     0     0
   *DB ACCESS*                       0     0     0     0     0
                                     0     0     0     0
   *LN1*     0   170     0   143    84    27     0     0     0     0     0
      **     0   170     0   143          27     0     0     0     0     0
   *LN2*     0     0     0     0     0     0     0     0     0     0     0
      **                 0     0     0     0     0     0     0     0     0
   *LN3*     0     0     0     0     0     0     0     0      0     0     0
      **                 0     0     0     0     0     0      0     0     0
   *LN4*     0     0     0     0     0     0     0     0     0     0
      **     0
   *THREAD LOCK*
   *LN1* 1.08k     0     0     0     0     0    12     0     0     0     0
      **                 0           0                       0           0
   *LN2*     0 46.5k     0     0     0     0     0
      **                       0           0
   *SDB ACCESS*
   *LN1*     0     0     0     0     0     0     0     0     0     0     0
      **     0     0     0     0     0     0     0     0     0     0     0
   *LN2*     0     0     0     0     0     0     0     0     0     0     0
      **     0     0     0     0     0     0     0     0     0     0     0
   *LN3*     0
      **     0
*TOTAL* [ 26]                       69    69     0 40.6M  588k   139     0
                                     0     0     0     0    29     0
   *SQL OBJECT*                      5     0     1     0     4     0 2.23k
   *LN1*     7     0     5     0     0     0     1     1     1     1     0
      **     0     0     0     0     0     0     0     0     0     0     0
   *LN2*     4     0     0     0     0     0     0     0     0     0     0
      **     0     0     0     0     0     0     0     0     0     0     0
   *LN3*     0     0     0     0     0     0     0     0     0     0     0
      **     0     0     0     0     0     0     0     0     0     0     0
   *LN4*     0     0     0     0     0     0     0     0     0     0     0
      **     0     0     0     0     0     0     0     0     0     0     0
   *STORED ROUTINE OBJECT*           0     0     0     0
   *DB ACCESS*                       0     0     0     0     0
                                     0     0     0     0
   *LN1*     0   173     0   145    84    28     0     0     0     0     0
      **     0     3     0     2           0     0     0     0     0     0
   *LN2*     0     0     0     0     1     0     0     0     0     0     0
      **                 0     0     0     0     0     0     0     0     0
   *LN3*     0     0     0     0     0     0     0     0      0     0     0
      **                 0     0     0     0     0     0      0     0     0
   *LN4*     0     0     0     0     0     0     0     0     0     0
      **     0
   *THREAD LOCK*
   *LN1* 2.16k     0     0     0     0     0    24     0     0     0     0
      **                 0           0                       0           0
   *LN2*     0 93.0k     0     0     0     0     0
      **                       0           0
   *SDB ACCESS*
   *LN1*     9     1     0     1     0     0     0     0     0     1     0
      **     0     0     0     0     0     0     0     0     0     0     0
   *LN2*     0     1     0     2     0     0     0     2     0     0     0
      **     0     0     0     0     0     0     0     0     0     0     0
   *LN3*     0
      **     0
-----------------------------------------------------------------------------
FILE KIND   LOG KIND   FIRST                 LAST                         NUM
STJ         uap        2015/11/29 16:43:26   2015/11/29 16:45:07           23
-----------------------------------------------------------------------------

NO FILE KIND:LOG FILE NAME
  LOG KIND             FIRST                 LAST                         NUM
 1 STJ64    :/tmp/stjdata/pdstj2
  sys                  2015/11/29 16:44:26   2015/11/29 16:44:26            4
  uap                  2015/11/29 16:43:26   2015/11/29 16:45:07           23
  sql                  2015/11/29 16:43:26   2015/11/29 16:45:07           79
  sop                  2015/11/29 16:43:43   2015/11/29 16:43:43            1
  dop                  2015/11/29 16:43:26   2015/11/29 16:45:06           47
  pcd                  2015/11/29 16:43:26   2015/11/29 16:45:07          172
  obj                  ****/**/** **:**:**   ****/**/** **:**:**            0
  sqh                  2015/11/29 16:43:26   2015/11/29 16:45:07           35
  buf                  2015/11/29 16:43:26   2015/11/29 16:45:15          422
  fil                  2015/11/29 16:43:26   2015/11/29 16:45:15          422
  dfw                  2015/11/29 16:43:26   2015/11/29 16:45:15            3
  idx                  2015/11/29 16:43:26   2015/11/29 16:45:15            3
  fsv                  ****/**/** **:**:**   ****/**/** **:**:**            0
  hba                  ****/**/** **:**:**   ****/**/** **:**:**            0
  dio                  ****/**/** **:**:**   ****/**/** **:**:**            0

注

［1］〜［26］は，SDBデータベースへのアクセス時にだけ出力される情報です。SDBデータベースにアクセスしていないときは，「****」が出力されます。

［説明］

［1］〜［26］以外の情報については，マニュアル「HiRDB Version 9 コマンドリファレンス」の「UAPに関する統計情報」の説明を参照してください。

SDBデータベースを操作するAPIまたはDMLの実行を要求した回数

API（個別開始）の実行を要求した回数，またはDMLの実行要求に対してシステムが個別開始の実行を要求した回数

API（個別終了）の実行を要求した回数

APIまたはDML（FETCH，FIND，またはFETCHDB ALL）の実行を要求した回数

APIまたはDML（ERASE）の実行を要求した回数

APIまたはDML（STORE）の実行を要求した回数

APIまたはDML（MODIFY）の実行を要求した回数

API（一括削除）の実行を要求した回数

API（容量情報取得）の実行を要求した回数

API（FETCH）の実行要求に対して，仮想ルートレコードにFETCHを実行した回数※

API（STORE）の実行要求に対して，仮想ルートレコードにSTOREを実行した回数※

API（MODIFY）の実行要求に対して，仮想ルートレコードにMODIFYを実行した回数※

API（個別開始）の実行要求に対して，実際に個別開始を実行した回数，またはDMLの実行要求に対するシステムによる個別開始の実行要求に対して，実際に個別開始を実行した回数

API（個別終了）の実行要求に対して，実際に個別終了を実行した回数

APIまたはDML（FETCH，FIND，またはFETCHDB ALL）の実行要求に対して，実際にFETCH，またはFETCHDB ALLを実行した回数※

APIまたはDML（ERASE）の実行要求に対して，実際にERASEを実行した回数※

APIまたはDML（STORE）の実行要求に対して，実際にSTOREを実行した回数※

APIまたはDML（MODIFY）の実行要求に対して，実際にMODIFYを実行した回数※

APIまたはDML（FETCH，FIND，またはFETCHDB ALL）の実行要求に対して，実際にFETCH，またはFETCHDB ALLを実行して取得したレコード件数※

APIまたはDML（ERASE）の実行要求に対して，実際にERASEを実行して削除したレコード件数※

削除対象のレコードの子レコードも削除された場合，そのレコードも数に含まれます。

APIまたはDML（STORE）の実行要求に対して，実際にSTOREを実行して追加したレコード件数※

APIまたはDML（MODIFY）の実行要求に対して，実際にMODIFYを実行して更新したレコード件数※

SDBデータベースを操作するAPIの実行要求時，HiRDB/SDが内部的に実行する終端検知用の（レコードの検索時に最終のレコードかどうかを判定するための），FETCHまたはFETCHDB ALLを実行した回数

1回のUAP，またはトランザクション実行ごとの，各項目の合計値

1回のUAP，またはトランザクション実行ごとの，各項目の平均値

全体の各項目の合計値

注※

APIまたはDMLの実行要求に対して，FETCH，FETCHDB ALL，STORE，MODIFY，またはERASEが複数回実行された場合，実行された回数分，実行回数およびレコード件数がカウントされます。複数回実行する途中でエラーが発生した場合は，エラーが発生するまでの実行回数，レコード件数となります。

10.6.3　UAPに関する統計情報（DAT形式ファイル）

UAPに関する統計情報をDAT形式ファイルに出力する場合の出力情報を次の表に示します。

SDBデータベースにアクセスしていないときは，「**********」（-eオプションにer1を指定した場合は「*」）が出力されます

なお，これ以外の出力情報については，マニュアル「HiRDB Version 9 コマンドリファレンス」の「DAT形式ファイルのレコード形式（UAPに関する統計情報）」を参照してください。

表10‒5　DAT形式ファイルのレコード形式（UAPに関する統計情報）

項番

フィールド名（タイトルバー）

属性

最大長

1

SDBデータベースを操作するAPIまたはDMLの実行を要求した回数（DML COUNT）

数値

10

2

API（個別開始）の実行を要求した回数，またはDMLの要求に対してシステムが個別開始の実行を要求した回数（DML START COUNT）

3

API（個別終了）の実行を要求した回数（DML END COUNT）

4

APIまたはDML（FETCH，FIND，またはFETCHDB ALL）の実行を要求した回数（DML FETCH COUNT）

5

APIまたはDML（ERASE）の実行を要求した回数（DML ERASE COUNT）

6

APIまたはDML（STORE）の実行を要求した回数（DML STORE COUNT）

7

APIまたはDML（MODIFY）の実行を要求した回数（DML MODIFY COUNT）

8

API（一括削除）の実行を要求した回数（DML PURGE COUNT）

9

API（容量情報取得）実行要求をした回数（DML INFO COUNT）

10

API（FETCH）の実行要求に対して，仮想ルートレコードにFETCHを実行した回数（VROOT FETCH COUNT）

11

API（STORE）の実行要求に対して，仮想ルートレコードにSTOREを実行した回数（VROOT STORE COUNT）

12

API（MODIFY）の実行要求に対して，仮想ルートレコードにMODIFYを実行した回数（VROOT MODIFY COUNT）

13

API（個別開始）の実行要求に対して，実際に個別開始を実行した回数，またはDMLの実行要求に対するシステムによる個別開始の実行要求に対して，実際に個別開始を実行した回数（ONLY START COUNT）

14

API（個別終了）の実行要求に対して，実際に個別終了を実行した回数（ONLY END COUNT）

15

APIまたはDML（FETCH，FIND，またはFETCHDB ALL）の実行要求に対して，実際にFETCH，またはFETCHDB ALLを実行した回数（FETCH COUNT）

16

APIまたはDML（ERASE）の実行要求に対して，実際にERASEを実行した回数（ERASE COUNT）

17

APIまたはDML（STORE）の実行要求に対して，実際にSTOREを実行した回数（STORE COUNT）

18

APIまたはDML（MODIFY）の実行要求に対して，実際にMODIFYを実行した回数（MODIFY COUNT）

19

APIまたはDML（FETCH，FIND，またはFETCHDB ALL）の実行要求に対して，実際にFETCH，またはFETCHDB ALLを実行して取得したレコード件数（FETCH RECORD）

20

APIまたはDML（ERASE）の実行要求に対して，実際にERASEを実行して削除したレコード件数（ERASE RECORD）

21

APIまたはDML（STORE）の実行要求に対して，実際にSTOREを実行して追加したレコード件数（STORE RECORD）

22

APIまたはDML（MODIFY）の実行要求に対して，実際にMODIFYを実行して更新したレコード件数（MODIFY RECORD）

23

APIの実行要求に対して，HiRDB/SDが内部的に実行した終端検知用の（レコードの検索時に最終のレコードかどうかを判定するための），FETCHまたはFETCHDB ALLを実行した回数（TERMINATION FETCH COUNT）

10.7　データベース状態解析ユティリティ（pddbst）

データベース状態解析ユティリティ（pddbst）は，データベースの状態解析を実行するためのユティリティです。

データベース状態解析ユティリティ（pddbst）の機能および指定形式の詳細については，マニュアル「HiRDB Version 9 コマンドリファレンス」を参照してください。ただし，マニュアル「HiRDB Version 9 コマンドリファレンス」に記載されている内容とは，仕様差がある部分があります。ここでは，その仕様差についてだけ説明します。

10.7.1　実行できる機能

SDBデータベースに対しては，データベース状態解析ユティリティ（pddbst）の次に示す機能だけが実行できます。

RDエリア単位の状態解析（論理的解析）

RDエリア単位の状態解析（物理的解析）

10.7.2　コマンドの形式およびオプションの説明

(1)　コマンドの形式

データベース状態解析ユティリティ（pddbst）の指定形式を次に示します。

RDエリア単位の状態解析

 pddbst -r ｛RDエリア名〔，RDエリア名〕…｜ALL｝

      〔-k ｛logi 〔-d〕 〔-z〕〔｛-a 〔-h〕｜-A〔｛r｜i｝〕｝〕

           ｜phys 〔-f〕 〔-a 〔-h〕〕｝〕

      〔-u 認可識別子 〔-p パスワード〕〕

      〔-q 世代番号〕 〔-b〕

      〔-X サーバ間通信の応答監視時間〕

      〔-v 制御文ファイル名〕

データベース状態解析ユティリティ（pddbst）の指定形式およびオプションの詳細については，マニュアル「HiRDB Version 9 コマンドリファレンス」の「データベース状態解析ユティリティ（pddbst）」を参照してください。ただし，マニュアル「HiRDB Version 9 コマンドリファレンス」に記載されている内容とは，仕様差があるオプションがあります。ここでは，その仕様差があるオプションについてだけ説明します。

●-A〔｛r｜i｝〕

SDBデータベースを格納しているRDエリアの論理的解析の解析結果を，DAT形式で標準出力に表示する場合に指定します。

ｒ：

ルートレコード型を格納しているRDエリアの論理的解析の解析結果を表示する場合に指定します。

インデクスを格納しているRDエリアに対してこのオプションを指定した場合，そのRDエリアは解析対象にはなりません（処理をスキップします）。

i：

SDBデータベースのインデクスを格納しているRDエリアの論理的解析の解析結果を表示する場合に指定します。

レコード型を格納しているRDエリアに対してこのオプションを指定した場合，そのRDエリアは解析対象にはなりません（処理をスキップします）。

-Aオプションだけを指定した場合（rオプションおよびiオプションの両方を省略した場合）は，ルートレコード型を格納しているRDエリアの解析結果と，インデクスを格納しているRDエリアの解析結果の両方を表示します。

(2)　注意事項

SDBデータベースを格納しているRDエリアに対しては，-aオプションおよび-hオプションを指定することはできません。-aオプションおよび-hオプションは，リレーショナルDBを格納しているRDエリアを解析するときに指定します。

-Aオプションと-aオプションを同時に指定することはできません。

-aオプションが指定されていない場合，-hオプションの指定は無視されます。

10.7.3　RDエリア単位の状態解析（論理的解析）

RDエリア内のSDBデータベースに対する，全セグメントおよび全ページの格納状態を解析します。ただし，複数のRDエリアに分割格納されたSDBデータベースについては，指定したRDエリアに格納された部分だけを解析します。

なお，ここではレコードが格納されているRDエリアに対して論理的解析を実行したときに出力される情報について説明します。

RDエリアにインデクスが格納されているときに出力される情報については，マニュアル「HiRDB Version 9 コマンドリファレンス」の「RDエリア単位の状態解析（論理的解析）」を参照してください。その際，インデクスに関する情報のRowID Countに表示される「インデクス管理行数」については，次の留意事項があります。

シーケンシャルインデクスの場合，仮想ルートレコードに対しては，1レコード実現値当たり最大2つのキー値を持ちます。そのため，インデクス管理行数とレコード実現値数が1対1とはなりません。

(1)　使用目的

RDエリア内のレコードおよびインデクスの乱れの検知，容量の状態を確認できます。

(2)　解析結果

RDエリア単位の状態解析（論理的解析）の出力例を次の図に示します。

図10‒2　RDエリア単位の状態解析（論理的解析）の出力例（サブページ分割機能を適用していない場合）

図10‒3　RDエリア単位の状態解析（論理的解析）の出力例（サブページ分割機能を適用している場合）

各出力項目の説明を次に示します。

なお，単位が%の項目については，小数点以下切り上げとなります。

(a)　基本情報

出力項目のヘッダ名

出力項目

説明

RD Area Name

RDエリア名

解析対象のRDエリア名です。

Server

サーバ識別子

RDエリアを管理するBESのサーバ識別子です。

Total Segment

RDエリアの総セグメント数

解析対象のRDエリアの総セグメント数です（使用中セグメント数＋未使用セグメント数）。

Segment Size

RDエリアのセグメント内ページ数

解析対象のRDエリアのセグメントサイズです。1セグメントのサイズをセグメント内のページ数で表示します。

Unused Segment

未割り当てセグメント数

RDエリア内でルートレコード型に割り当てられていないセグメントの数です。

Page Size

ページサイズ

RDエリアのページサイズです。

Original RD Area Name※

オリジナルRDエリア名

RDエリアのオリジナルRDエリア名です。

Generation Number※

世代番号

RDエリアの世代番号です。

Replica RD Area Count

レプリカRDエリア数

レプリカRDエリアの数です。

History1

Hold Status

閉塞種別

RDエリアの閉塞履歴1の閉塞種別です。

Hold Code

閉塞要因コード

RDエリアの閉塞履歴1の閉塞要因コードです。閉塞要因コードについては，マニュアル「HiRDB Version 9 コマンドリファレンス」の「データベース状態解析ユティリティ（pddbst）」の「RDエリア単位の状態解析（論理的解析）」を参照してください。

Hold Time

閉塞時刻

RDエリアの閉塞履歴1の閉塞時刻です。

History2

Hold Status

閉塞種別

RDエリアの閉塞履歴2の閉塞種別です。

Hold Code

閉塞要因コード

RDエリアの閉塞履歴2の閉塞要因コードです。閉塞要因コードについては，マニュアル「HiRDB Version 9 コマンドリファレンス」の「データベース状態解析ユティリティ（pddbst）」の「RDエリア単位の状態解析（論理的解析）」を参照してください。

Hold Time

閉塞時刻

RDエリアの閉塞履歴2の閉塞時刻です。

SDB database kind

SDBデータベース種別

SDBデータベースの種別です。FMB，DAM，MAM，TAM，またはSAMが表示されます。

4V FMBまたはSD FMBのSDBデータベースの場合は，FMBが出力されます。

Root Record Name

ルートレコードのレコード型名

ルートレコードのレコード型名です。

Auth Id

認可識別子

ルートレコード型の所有者の認可識別子です。

SubPage Number

サブページ分割数

サブページの分割数です。

サブページ分割を適用していない場合は，サブページ分割数に1が表示されます。

SubPage Size

サブページサイズ

サブページのサイズです。

ルートレコード型にサブページ分割が適用されている場合に表示されます。

注※

この項目（インナレプリカ情報）は，HiRDB Staticizer Optionを使用している場合に表示されます。また，指定した世代にレプリカRDエリアが存在しない場合も，解析結果は出力されません。このとき，その旨のメッセージが出力されます。

(b)　Common information

各ルートレコード型のセグメントに関する情報（未割り当てセグメントを含まない），および各ルートレコード型のページに関する情報が表示されます。

出力項目のヘッダ名

出力項目

説明

Segment

Used(%)

使用セグメント率

↑使用セグメント数÷セグメント数の合計↑の値が表示されます。

Full(%)

満杯セグメント比率

↑満杯セグメント数÷総セグメント数↑の値が表示されます。

Used

使用セグメント数

使用ページが含まれているセグメントの数です。

Full

満杯セグメント数

セグメント内ページがすべて満杯ページであるセグメントの数です。

Sum

セグメント数の合計

割り当てられているセグメント数の合計です。

Page※

Used(%)

使用ページ率

↑使用ページ数÷総ページ数↑の値が表示されます。

Full(%)

満杯ページ率

↑満杯ページ数÷総ページ数↑の値が表示されます。

Used

使用ページ数

次のどれかのページの合計数が表示されます。

データが格納されているページ

事前割り当てページ

事前割り当てサブページを含むページ

Full

満杯ページ数

■サブページ分割が適用されていない場合

次のどちらかのページ数が表示されます。

割り当てられているセグメント内で，これ以上データを格納できない使用ページ数

割り当てられているセグメント内で，占有状態の使用ページ数

■サブページ分割が適用されている場合

割り当てられているセグメント内で，すべてのサブページが使用サブページである使用ページ数です。

Sum

総ページ数

全セグメントの総ページ数です。

注※

通常の（サブ）ページと事前割り当て（サブ）ページの区別をしません。

(c)　Normal Page information

通常のページに関する情報が表示されます。Normal Page informationは，次に示す条件をすべて満たす場合に表示されます。

解析対象のルートレコード型にサブページ分割が適用されていない場合

pddbstコマンドの-dオプションを指定した場合

出力項目のヘッダ名

出力項目

説明

Page

Used(%)

通常のページの使用ページ率

↑通常のページの使用ページ数÷通常のページ数の合計↑の値が表示されます。

Full(%)

通常のページの満杯ページ率

↑通常のページの満杯ページ数÷通常のページ数の合計↑の値が表示されます。

Occupied(%)

通常のページの占有ページ率

↑通常のページの占有ページ数÷通常のページの満杯ページ数↑の値が表示されます。

Used

通常のページの使用ページ数

データが入っている通常のページ数です。

Full

通常のページの満杯ページ数

次のどちらかの通常のページの合計数が表示されます。

これ以上レコードを格納できない通常のページ

占有状態の通常のページ

Occupied

通常のページの占有ページ数

ページ切り替えオプションにOを指定したレコードが格納されているページの数です。

Sum

通常のページ数の合計

全セグメントの通常のページ数の合計です。割り当てられているセグメント中の通常のページ数の合計です。未使用ページは，通常のページと見なされます。

Collect Prearranged Page

再編成による解放可能なページ数

データが格納されていない通常のページの，使用ページ数です。

SDBデータベースの再編成によって，解放可能な通常のページ数が表示されます。データ格納済みの通常のページで，使用ページ数にカウントされているが，実際にはページ内の全レコードが削除されていて，使用率が0％になっている通常のページ数が表示されます。

事前割り当てページは，データが格納されていない状態であっても，そのあとの運用で指定ファミリに割り当てられることが前提のため，解放可能なページ数にカウントされません。

Used Page Ratio

Page

通常のページの使用比率別ページ数

使用ページの使用比率ごと（10％単位）の，通常のページ数です。

Ratio

通常のページ数の合計に対する比率

通常のページ数の合計に対する比率です。

小数点以下切り上げで比率を求めるため，すべての比率を合計したときに100％を超えることがあります。

格納対象レコードが空き領域に収まらない場合，そのページは満杯ページとして設定されるため，満杯ページであっても，使用率が91−100％にならないことがあります。

Occupied Page

使用ページの比率ごとの，占有ページ数

使用ページの比率ごとの，占有ページ数です。

Total

合計値

次の値が表示されます。

通常のページ数の合計値

占有ページ数の合計値

Stored Family※

通常のページに格納されているルートレコードの数

事前ページ割り当て機能が適用されていないファミリの数です。

Stored Children※

通常のページに格納されている非ルートレコードの数

通常のページに格納されている非ルートレコードの数です。

Page Change※

通常のページの，ページのまたがり回数

PRIORポインタが別ページのレコードを指す，通常のページの非ルートレコードの数です。

Collection Degree※

Page

通常のページの，ページ内レコード集約度

↑PRIORポインタが同一ページのレコードを指す，通常のページの非ルートレコードの数÷通常のページの非ルートレコード数↑の値が表示されます。

PRIORポインタが同一ページのレコードを指すレコードの比率を表示します。

なお，次の条件をすべて満たす場合は，100％と見なされます。

通常のページの使用ページ数が1以上の場合

通常のページの非ルートレコード数が0の場合

Segment

通常のページの，セグメント内レコード集約度

↑PRIORポインタが同一セグメントのレコードを指す，通常のページの非ルートレコードの数÷通常のページの非ルートレコード数↑の値が表示されます。

PRIORポインタが同一セグメントのレコードを指す，レコードの比率を表示します。

なお，次の条件をすべて満たす場合は，100％と見なされます。

通常のページの使用ページ数が1以上の場合

通常のページの非ルートレコード数が0の場合

Virtual Root Record(disuse)※

通常のページの，子レコードを1件も管理していない仮想ルートレコードの数

通常のページに格納されている仮想ルートレコードのうち，子レコードを1件も管理していない仮想ルートレコードの数です。

Logical Cleared Record※

通常のページの，論理的に削除状態になっている非ルートレコードの数

通常のページに格納されている非ルートレコードのうち，一括削除機能によって論理的に削除状態になっている非ルートレコードの数です。

Del RowID※

通常のページの，削除状態の管理行数

通常のページのレコード管理情報のうち，レコードの削除（ERASE）によって削除状態になっているレコード管理情報数です。

注※

pddbstコマンドの-dオプションおよび-zオプションを指定した場合に表示される情報です。

(d)　Reserved Page information

事前割り当てページに関する情報が表示されます。Reserved Page informationは，次に示す条件をすべて満たす場合に表示されます。

解析対象のルートレコード型にサブページ分割が適用されていない場合

pddbstコマンドの-dオプションを指定した場合

出力項目のヘッダ名

出力項目

説明

Page

Used(%)

事前割り当てページの使用ページ率

↑事前割り当てページの使用ページ数÷事前割り当てページ数の合計↑の値が表示されます。

Full(%)

事前割り当てページの満杯ページ率

↑事前割り当てページの満杯ページ数÷事前割り当てページ数の合計↑の値が表示されます。

Used

事前割り当てページの使用ページ数

事前割り当てページ数です。事前割り当てページは，レコードが格納されていなくても使用ページとして扱われます。

Full

事前割り当てページの満杯ページ数

これ以上レコードを格納できない事前割り当てページ数です。

Sum

事前割り当てページ数の合計

事前割り当てページ数の合計です。

Ratio

事前割り当てページの，使用比率別ページ数

事前割り当てページ内の使用比率ごとに，次の項目が表示されます。

ページ数

事前割り当てページ数に対する比率

NonContinuous Reserved Pages

非連続に割り当てられている事前割り当てページ数

該当ファミリに割り当てられている事前割り当てページの間に，ほかのデータページが割り込んでいる回数です。

Used Page Ratio

Page

事前割り当てページの使用比率別ページ数

使用ページの使用比率ごと（10％単位）の，事前割り当てページ数です。

Ratio

事前割り当てページの合計に対する比率

事前割り当てページ数の合計に対する比率です。

小数点以下切り上げで比率を求めるため，すべての比率を合計したときに100％を超えることがあります。

格納対象レコードが空き領域に収まらない場合，そのページは満杯ページとして設定されるため，満杯ページであっても，使用率が91−100％にならないことがあります。

Total

合計値

事前割り当てページ数の合計値です。

Stored Family※

事前ページ割り当て機能が適用されているファミリの数

事前ページ割り当て機能が適用されているファミリの数です。事前割り当てページに格納されているルートレコードの数です。

Stored Children※

事前割り当てページに格納されている非ルートレコードの数

事前割り当てページに格納されている非ルートレコードの数です。

Page Change※

事前割り当てページの，ページのまたがり回数

PRIORポインタが別ページのレコードを指す，事前割り当てページの非ルートレコードの数です。

Collection Degree※

Page

事前割り当てページの，ページ内レコード集約度

↑PRIORポインタが同一ページのレコードを指す，事前割り当てページの非ルートレコードの数÷事前割り当てページの非ルートレコード数↑の値が表示されます。

PRIORポインタが同一ページのレコードを指す，レコードの比率を表示します。

なお，次の条件をすべて満たす場合は，100％と見なされます。

事前割り当てページの使用ページ数が1以上の場合

事前割り当てページの非ルートレコード数が0の場合

Segment

事前割り当てページの，セグメント内レコード集約度

↑PRIORポインタが同一セグメントのレコードを指す，事前割り当てページの非ルートレコードの数÷事前割り当てページの非ルートレコード数↑の値が表示されます。

PRIORポインタが同一セグメントのレコードを指す，レコードの比率を表示します。

なお，次の条件をすべて満たす場合は，100％と見なされます。

事前割り当てページの使用ページ数が1以上の場合

事前割り当てページの非ルートレコード数が0の場合

Del RowID※

事前割り当てページの，削除状態の管理行数

事前割り当てページのレコード管理情報のうち，レコードの削除（ERASE）によって削除状態になっているレコード管理情報数です。

注※

pddbstコマンドの-dオプションおよび-zオプションを指定した場合に表示される情報です。

(e)　Normal SubPage information

通常のサブページに関する情報が表示されます。Normal SubPage informationは，次に示す条件をすべて満たす場合に表示されます。

解析対象のルートレコード型にサブページ分割が適用されている場合

pddbstコマンドの-dオプションを指定した場合

出力項目のヘッダ名

出力項目

説明

SubPage

Used(%)

通常のサブページの使用サブページ率

↑通常のサブページの使用サブページ数÷通常のサブページ数の合計↑の値が表示されます。

Full(%)

通常のサブページの満杯サブページ率

↑通常のサブページの満杯サブページ数÷通常のサブページ数の合計↑の値が表示されます。

Occupied(%)

通常のサブページの占有サブページ比率

↑通常のサブページの占有サブページ数÷通常のサブページの満杯サブページ数↑の値が表示されます。

Used

通常のサブページの使用サブページ数

レコードが格納されている通常のサブページの数です。

Full

通常のサブページの満杯サブページ数

次のどちらかのサブページの数が表示されます。

これ以上レコードを格納できない通常のサブページ数

占有状態の通常のサブページ数

Occupied

通常のサブページの占有サブページ数

ページ切り替えオプションにOを指定したレコードが格納されている通常のサブページの数です。

Sum

通常のサブページ数の合計

通常のサブページ数の合計です。

割り当てられているセグメント中の，通常のサブページ数の合計です。未使用サブページは，通常のサブページと見なされます。

Collect Prearranged Page

再編成による解放可能なページ数

すべてのサブページが未使用サブページである使用ページ数です。

解放可能な通常のページ数が表示されます。データ格納済みの通常のページで，使用ページ数にカウントされているが，実際にはページ内の全レコードが削除されていて，使用率が0％になっている通常のページ数が表示されます。

事前割り当てサブページは，データが格納されていない状態であっても，使用サブページとして扱われます。

Used SubPage Ratio

SubPage

通常のサブページの使用比率別サブページ数

使用サブページの使用比率ごと（10％単位）の，通常のサブページ数です。

Ratio

通常のサブページ数の合計に対する比率

通常のサブページ数の合計に対する比率です。

小数点以下切り上げで比率を求めるため，すべての比率を合計したときに100％を超えることがあります。

格納対象レコードが空き領域に収まらない場合，そのサブページは満杯サブページとして設定されるため，満杯サブページであっても，使用率が91−100％にならないことがあります。

Occupied SubPage

使用サブページの比率ごとの，占有ページ数

使用サブページの比率ごとの，占有ページ数です。

Total

合計値

次の値が表示されます。

通常のサブページ数の合計値

占有ページ数の合計値

Used SubPage Count per Page

Page Count

使用サブページ数ごとのページ数

各ページの使用サブページ数ごとに，使用ページ数が表示されます。

事前割り当てサブページがあるページについては，次の条件を満たすページを解析対象にします。

同一ページ内に，事前割り当てサブページと通常のサブページの，使用サブページが混在しているページ

解析対象のルートレコード型に定義されているサブページ分割数まで表示されます。

Total

合計値

上記の項目の合計値です。

Stored Family※

通常のサブページに格納されているルートレコードの数

事前ページ割り当て機能が適用されていないファミリの数です。

Stored Children※

通常のサブページに格納されている非ルートレコードの数

通常のサブページに格納されている非ルートレコードの数です。

Page Change※

通常のサブページの，ページのまたがり回数

PRIORポインタが別ページのレコードを指す，通常のサブページの非ルートレコードの数です。

サブページに格納されている場合でも，ページ単位に解析を行います。

Collection Degree※

Page

通常のサブページの，ページ内レコード集約度

↑PRIORポインタが同一ページのレコードを指す，通常のサブページの非ルートレコードの数÷通常のサブページの非ルートレコード数↑の値が表示されます。

PRIORポインタが同一ページのレコードを指す，レコードの比率を表示します。

サブページに格納されている場合でも，ページ単位に解析を行います。

なお，次の条件をすべて満たす場合は，100％と見なされます。

通常のサブページの使用サブページ数が1以上の場合

通常のサブページの非ルートレコード数が0の場合

Segment

通常のサブページの，セグメント内レコード集約度

↑PRIORポインタが同一セグメントのレコードを指す，通常のサブページの非ルートレコードの数÷通常のサブページの非ルートレコード数↑の値が表示されます。

PRIORポインタが同一セグメントのレコードを指す，レコードの比率を表示します。

なお，次の条件をすべて満たす場合は，100％と見なされます。

通常のサブページの使用サブページ数が1以上の場合

通常のサブページの非ルートレコード数が0の場合

Virtual Root Record(disuse)※

通常のサブページの，子レコードを1件も管理していない仮想ルートレコードの数

通常のサブページに格納されている仮想ルートレコードのうち，子レコードを1件も管理していない仮想ルートレコードの数です。

Logical Cleared Record※

通常のサブページの，論理的に削除状態になっている非ルートレコードの数

通常のサブページに格納されている非ルートレコードのうち，一括削除機能によって論理的に削除状態になっている非ルートレコードの数です。

Del RowID※

通常のサブページの，削除状態の管理行数

通常のサブページのレコード管理情報のうち，レコードの削除（ERASE）によって削除状態になっているレコード管理情報数です。

注※

pddbstコマンドの-dオプションおよび-zオプションを指定した場合に表示される情報です。

(f)　Reserved SubPage information

事前割り当てサブページに関する情報が表示されます。Reserved SubPage informationは，次に示す条件をすべて満たす場合に表示されます。

解析対象のルートレコード型にサブページ分割が適用されている場合

pddbstコマンドの-dオプションを指定した場合

出力項目のヘッダ名

出力項目

説明

SubPage

Used(%)

事前割り当てサブページの使用サブページ率

↑事前割り当てサブページの使用サブページ数÷事前割り当てサブページ数の合計↑の値が表示されます。

Full(%)

事前割り当てサブページの満杯サブページ率

↑事前割り当てサブページの満杯サブページ数÷事前割り当てサブページ数の合計↑の値が表示されます。

Used

事前割り当てサブページの使用サブページ数

割り当てサブページ数です。事前割り当てサブページは，レコードが格納されていなくても使用サブページとして扱われます。

Full

事前割り当てサブページの満杯サブページ数

これ以上レコードを格納できない事前割り当てサブページ数です。

Sum

事前割り当てサブページ数の合計

事前割り当てサブページ数の合計です。割り当てられているセグメント中の，事前割り当てサブページの合計です。

NonContinuous Reserved SubPages

非連続に割り当てられている事前割り当てサブページ数

該当ファミリに割り当てられている事前割り当てサブページの間に，ほかのデータページが割り込んでいる回数です。

Used SubPage Ratio

SubPage

事前割り当てサブページの使用比率別サブページ数

使用サブページの使用比率ごと（10％単位）の事前割り当てサブページ数です。

Ratio

事前割り当てサブページの合計に対する比率

事前割り当てサブページ数の合計に対する比率です。

小数点以下切り上げで比率を求めるため，すべての比率を合計したときに100％を超えることがあります。

格納対象レコードが空き領域に収まらない場合，そのサブページは満杯サブページとして設定されるため，満杯サブページであっても，使用率が91−100％にならないことがあります。

Total

合計値

事前割り当てサブページ数の合計値です。

Stored Family※

事前ページ割り当て機能が適用されているファミリの数

事前ページ割り当て機能が適用されているファミリの数です。事前割り当てサブページに格納されているルートレコードの数です。

Stored Children※

事前割り当てサブページに格納されている非ルートレコードの数

事前割り当てサブページに格納されている非ルートレコードの数です。

Page Change※

事前割り当てサブページの，ページのまたがり回数

PRIORポインタが別ページのレコードを指す，事前割り当てサブページの非ルートレコードの数です。

サブページに格納されている場合でも，ページ単位に解析を行います。

Collection Degree※

Page

事前割り当てサブページの，ページ内レコード集約度

↑PRIORポインタが同一ページのレコードを指す，事前割り当てサブページの非ルートレコードの数÷事前割り当てサブページの非ルートレコード数↑の値が表示されます。

PRIORポインタが同一ページのレコードを指す，レコードの比率を表示します。

サブページに格納されている場合でも，ページ単位に解析を行います。

なお，次の条件をすべて満たす場合は，100％と見なされます。

事前割り当てサブページの使用サブページ数が1以上の場合

事前割り当てサブページの非ルートレコード数が0の場合

Segment

事前割り当てサブページの，セグメント内レコード集約度

↑PRIORポインタが同一セグメントのレコードを指す，事前割り当てサブページの非ルートレコードの数÷事前割り当てサブページの非ルートレコード数↑の値が表示されます。

PRIORポインタが同一セグメントのレコードを指す，レコードの比率を表示します。

なお，次の条件をすべて満たす場合は，100％と見なされます。

事前割り当てサブページの使用サブページ数が1以上の場合

事前割り当てサブページの非ルートレコード数が0の場合

Del RowID※

事前割り当てサブページの，削除状態の管理行数

事前割り当てサブページのレコード管理情報のうち，レコードの削除（ERASE）によって削除状態になっているレコード管理情報数です。

注※

pddbstコマンドの-dオプションおよび-zオプションを指定した場合に表示される情報です。

(3)　DAT形式で解析結果を出力する場合

RDエリア単位の状態解析（論理的解析）のDAT形式での出力規則を次に示します。

DAT形式で出力する場合の出力規則については，マニュアル「HiRDB Version 9 コマンドリファレンス」の「コマンド実行結果をDAT形式で出力する場合の規則」を参照してください。

RDエリアごとに，そのRDエリア内のルートレコード型につき1行表示します。

RDエリアの情報は，RDエリア名の昇順に表示します。

単位が%の項目については，小数点以下切り上げとなります。

RDエリア単位の状態解析（論理的解析）のDAT形式出力内容を次の表に示します。

表10‒6　RDエリア単位の状態解析（論理的解析）のDAT形式出力内容

項番

タイトルバー

内容

出力形式

最大長（単位：バイト）※1

出力条件

1

VERSION

HiRDBのバージョンです。

文字列(vv-rr)

5

◎

2

INF_GET_TIME

情報取得が完了した年月日時刻です。出力対象の情報をすべて取得完了した日時です。DAT形式で出力される全行で同じ日時が出力されます。

文字列(yyyy/mm/dd hh:mm:ss)

19

◎

3

RDAREA_NAME

解析対象のRDエリア名です。

文字列

30

◎

4

SERVER

RDエリアがあるBES名です。

文字列

8

◎

5

TOTAL_SEGMENT

RDエリア内の総セグメント数です。

数値

10

◎

6

UNUSED_SEGMENT

RDエリア内の未割り当てセグメント数です。

数値

10

◎

7

SEGMENT_SIZE

セグメント内ページ数です。

数値

10

◎

8

PAGE_SIZE

ページサイズです。

数値

10

◎

9

ORIGINAL_RDAREA_NAME

オリジナルRDエリア名です。

文字列

30

◎※2

10

GENERATION_NUMBER

RDエリアの世代番号です。

数値

2

◎※2

11

REPLICA_RDAREA_COUNT

レプリカRDエリア数です。

数値

2

◎※2

12

HOLD_STATUS(HISTORY1)

RDエリアの閉塞種別です。閉塞解除する1つ前の閉塞種別（閉塞中の場合は現在の閉塞種別）になります。

"CMD"：HiRDBの障害検知によるコマンド閉塞

"FLT"：障害閉塞

文字列

3

◎

13

HOLD_CODE(HISTORY1)

RDエリアの閉塞要因コードです。閉塞解除する1つ前の閉塞要因コード（閉塞中の場合は現在の閉塞要因コード）になります。閉塞要因コードについては，マニュアル「HiRDB Version 9 コマンドリファレンス」の「データベース状態解析ユティリティ（pddbst）」の「RDエリア単位の状態解析（論理的解析）」を参照してください。

数値

5

◎

14

HOLD_TIME(HISTORY1)

RDエリアの閉塞時刻です。閉塞解除する1つ前の閉塞時刻（閉塞中の場合は現在の閉塞時刻）になります。

文字列(yyyy/mm/dd hh:mm:ss)

19

◎

15

HOLD_STATUS(HISTORY2)

RDエリアの閉塞種別です。History1の1つ前の閉塞種別になります。

"CMD"：HiRDBの障害検知によるコマンド閉塞

"FLT"：障害閉塞

文字列

3

◎

16

HOLD_CODE(HISTORY2)

RDエリアの閉塞要因コードです。History1の1つ前の閉塞要因コードです。閉塞要因コードについては，マニュアル「HiRDB Version 9 コマンドリファレンス」の「データベース状態解析ユティリティ（pddbst）」の「RDエリア単位の状態解析（論理的解析）」を参照してください。

数値

5

◎

17

HOLD_TIME(HISTORY2)

RDエリアの閉塞時刻です。History1の1つ前の閉塞時刻です。

文字列(yyyy/mm/dd hh:mm:ss)

19

◎

18

INF_KIND

表示情報の種別です。

"RCD"：RDエリアの解析（ルートレコード型の解析情報）

文字列

3

◎

19

SDB_DATABASE_KIND

SDBデータベースの種別です。

文字列

3

◎

20

ROOT_RECORD_NAME

ルートレコードのレコード型名です。

文字列

30

◎

21

AUTH_ID

ルートレコード型の所有者の認可識別子です。

文字列

8

◎

22

SUBPAGE_NUMBER

サブページ分割数です。

数値

2

◎

23

SUBPAGE_SIZE

サブページサイズです。

数値

5

◎※3

24

USED_SEGMENT

使用セグメント数です。

数値

10

◎

25

USED_SEGMENT_RATIO

使用セグメント率です。（単位：%）

数値

3

◎

26

FULL_SEGMENT

満杯セグメント数です。

数値

10

◎

27

FULL_SEGMENT_RATIO

満杯セグメント率です。（単位：%）

数値

3

◎

28

SUM_SEGMENT

割り当てられているセグメント数の合計です。

数値

10

◎

29

USED_PAGE

使用ページ数です。

数値

10

◎

30

USED_PAGE_RATIO

使用ページ率です。（単位：%）

数値

3

◎

31

FULL_PAGE

満杯ページ数です。

数値

10

◎

32

FULL_PAGE_RATIO

満杯ページ率です。（単位：%）

数値

3

◎

33

SUM_PAGE

割り当てられているセグメント中のページ数の合計です。

数値

10

◎

34

USED_NORMAL_PAGE

通常のページの使用ページ数です。

数値

10

○

35

USED_NORMAL_PAGE_RATIO

通常のページの使用ページ率です。（単位：%）

数値

3

○

36

FULL_NORMAL_PAGE

通常のページの満杯ページ数です。

数値

10

○

37

FULL_NORMAL_PAGE_RATIO

通常のページの満杯ページ率です。（単位：%）

数値

3

○

38

OCCUPIED_NORMAL_PAGE

通常のページの，占有状態のページ数です。

数値

10

○

39

OCCUPIED_NORMAL_PAGE_RATIO

通常のページの，占有状態のページ率です。（単位：%）

数値

3

○

40

SUM_NORMAL_PAGE

割り当てられているセグメント中の通常のページ数の合計です。未使用ページは，通常のページと見なされます。

数値

10

○

41

USED_NORMAL_SUBPAGE

通常のサブページの使用サブページ数です。

数値

11

○

42

USED_NORMAL_SUBPAGE_RATIO

通常のサブページの使用サブページ率です。（単位：%）

数値

3

○

43

FULL_NORMAL_SUBPAGE

通常のサブページの満杯サブページ数です。

数値

11

○

44

FULL_NORMAL_SUBPAGE_RATIO

通常のサブページの満杯サブページ率です。（単位：%）

数値

3

○

45

OCCUPIED_NORMAL_SUBPAGE

通常のサブページの占有状態のサブページ数です。

数値

11

○

46

OCCUPIED_NORMAL_SUBPAGE_RATIO

通常のサブページの占有状態のサブページ率です。（単位：%）

数値

3

○

47

SUM_NORMAL_SUBPAGE

割り当てられているセグメント中の，通常のサブページ数の合計です。未使用サブページは，通常のサブページと見なされます。

数値

11

○

48

COLLECT_PREARRANGED_PAGE

再編成による解放可能な通常のページ数です。

データ格納済みの通常のページで，使用ページ数にカウントされているが，実際にはページ内の全レコードが削除されていて，使用率が0％になっている通常のページ数が表示されます。

数値

10

○

49

STORED_NORMAL_PAGE_FAMILY

事前ページ割り当て機能が適用されていないファミリの数です（サブページ分割機能を適用していない場合）。

数値

10

△

50

STORED_NORMAL_SUBPAGE_FAMILY

事前ページ割り当て機能が適用されていないファミリの数です（サブページ分割機能を適用している場合）。

数値

11

△

51

NORMAL_PAGE_CHILDREN

通常のページに格納されている非ルートレコードの数です。

数値

仮数16，

指数5

△

52

NORMAL_SUBPAGE_CHILDREN

通常のサブページに格納されている非ルートレコードの数です。

数値

仮数16，

指数5

△

53

NORMAL_PAGE_PAGECHANGE

通常のページに格納されている，PRIORポインタが別ページのレコードを指す非ルートレコードの数です。

数値

仮数16，

指数5

△

54

NORMAL_SUBPAGE_PAGECHANGE

通常のサブページに格納されている，PRIORポインタが別ページのレコードを指す非ルートレコードの数です。

数値

仮数16，

指数5

△

55

NORMAL_PAGE_SAME_PAGE_RECORD_RATIO

通常のページに格納されている，PRIORポインタが同一ページのレコードを指すレコードの比率です。

数値

3

△

56

NORMAL_SUBPAGE_SAME_PAGE_RECORD_RATIO

通常のサブページに格納されている，PRIORポインタが同一ページのレコードを指すレコードの比率です。

サブページに格納されている場合でも，ページ単位に解析を行います。

数値

3

△

57

NORMAL_PAGE_SAME_SEGMENT_RECORD_RATIO

通常のページに格納されている，PRIORポインタが同一セグメントのレコードを指すレコードの比率です。

数値

3

△

58

NORMAL_SUBPAGE_SAME_SEGMENT_RECORD_RATIO

通常のサブページに格納されている，PRIORポインタが同一セグメントのレコードを指すレコードの比率です。

数値

3

△

59

NORMAL_PAGE_DISUSE_VIRTUAL_ROOT_RECORD

通常のページに格納されている，子レコードを1件も管理していない仮想ルートレコードの数です。

数値

10

△

60

NORMAL_SUBPAGE_DISUSE_VIRTUAL_ROOT_RECORD

通常のサブページに格納されている，子レコードを1件も管理していない仮想ルートレコードの数です。

数値

11

△

61

NORMAL_PAGE_LOGICAL_CLEARED_RECORD

通常のページに格納されている，一括削除機能によって論理的に削除状態になっているレコードの数です。

数値

仮数16，

指数5

△

62

NORMAL_SUBPAGE_LOGICAL_CLEARED_RECORD

通常のサブページに格納されている，一括削除機能によって論理的に削除状態になっているレコードの数です。

数値

仮数16，

指数5

△

63

RATIO0_NORMAL_PAGE

使用率が0%の通常のページ数です。

数値

10

○

64

RATIO0_NORMAL_PAGE_RATIO

使用率が0%の通常のページの割合です。（単位：%）

小数点以下切り上げで比率を求めるため，RATIO0_NORMAL_PAGE_RATIO〜RATIO10_NORMAL_PAGE_RATIOの比率を合計したときに100％を超えることがあります。

数値

3

○

65

RATIO0_OCCUPIED_PAGE

使用率が0%の通常のページのうち，占有状態のページ数です。

数値

10

○

66

RATIO1_NORMAL_PAGE

使用率が1〜10%の通常のページ数です。

数値

10

○

67

RATIO1_NORMAL_PAGE_RATIO

使用率が1〜10%の通常のページの割合です。（単位：%）

数値

3

○

68

RATIO1_OCCUPIED_PAGE

使用率が1〜10%の通常のページのうち，占有状態のページ数です。

数値

10

○

69

RATIO2_NORMAL_PAGE

使用率が11〜20%の通常のページ数です。

数値

10

○

70

RATIO2_NORMAL_PAGE_RATIO

使用率が11〜20%の通常のページの割合です。（単位：%）

数値

3

○

71

RATIO2_OCCUPIED_PAGE

使用率が11〜20%の通常のページのうち，占有状態のページ数です。

数値

10

○

72

RATIO3_NORMAL_PAGE

使用率が21〜30%の通常のページ数です。

数値

10

○

73

RATIO3_NORMAL_PAGE_RATIO

使用率が21〜30%の通常のページの割合です。（単位：%）

数値

3

○

74

RATIO3_OCCUPIED_PAGE

使用率が21〜30%の通常のページのうち，占有状態のページ数です。

数値

10

○

75

RATIO4_NORMAL_PAGE

使用率が31〜40%の通常のページ数です。

数値

10

○

76

RATIO4_NORMAL_PAGE_RATIO

使用率が31〜40%の通常のページの割合です。（単位：%）

数値

3

○

77

RATIO4_OCCUPIED_PAGE

使用率が31〜40%の通常のページのうち，占有状態のページ数です。

数値

10

○

78

RATIO5_NORMAL_PAGE

使用率が41〜50%の通常のページ数です。

数値

10

○

79

RATIO5_NORMAL_PAGE_RATIO

使用率が41〜50%の通常のページの割合です。（単位：%）

数値

3

○

80

RATIO5_OCCUPIED_PAGE

使用率が41〜50%の通常のページのうち，占有状態のページ数です。

数値

10

○

81

RATIO6_NORMAL_PAGE

使用率が51〜60%の通常のページ数です。

数値

10

○

82

RATIO6_NORMAL_PAGE_RATIO

使用率が51〜60%の通常のページの割合です。（単位：%）

数値

3

○

83

RATIO6_OCCUPIED_PAGE

使用率が51〜60%の通常のページのうち，占有状態のページ数です。

数値

10

○

84

RATIO7_NORMAL_PAGE

使用率が61〜70%の通常のページ数です。

数値

10

○

85

RATIO7_NORMAL_PAGE_RATIO

使用率が61〜70%の通常のページの割合です。（単位：%）

数値

3

○

86

RATIO7_OCCUPIED_PAGE

使用率が61〜70%の通常のページのうち，占有状態のページ数です。

数値

10

○

87

RATIO8_NORMAL_PAGE

使用率が71〜80%の通常のページ数です。

数値

10

○

88

RATIO8_NORMAL_PAGE_RATIO

使用率が71〜80%の通常のページの割合です。（単位：%）

数値

3

○

89

RATIO8_OCCUPIED_PAGE

使用率が71〜80%の通常のページのうち，占有状態のページ数です。

数値

10

○

90

RATIO9_NORMAL_PAGE

使用率が81〜90%の通常のページ数です。

数値

10

○

91

RATIO9_NORMAL_PAGE_RATIO

使用率が81〜90%の通常のページの割合です。（単位：%）

数値

3

○

92

RATIO9_OCCUPIED_PAGE

使用率が81〜90%の通常のページのうち，占有状態のページ数です。

数値

10

○

93

RATIO10_NORMAL_PAGE

使用率が91〜100%の通常のページ数です。

格納対象レコードが空き領域に収まらない場合，そのページは満杯ページとして設定されるため，満杯ページであっても，使用率が91〜100％にならないことがあります。

数値

10

○

94

RATIO10_NORMAL_PAGE_RATIO

使用率が91〜100%の通常のページの割合です。（単位：%）

数値

3

○

95

RATIO10_OCCUPIED_PAGE

使用率が91〜100%の通常のページのうち，占有状態のページ数です。

数値

10

○

96

TOTAL_NORMAL_PAGE

通常のページの，使用率別の使用ページ数の合計です。

数値

10

○

97

TOTAL_OCCUPIED_PAGE

通常のページの，使用率別の占有状態のページ数の合計です。

数値

10

○

98

RATIO0_NORMAL_SUBPAGE

使用率が0%の通常のサブページ数です。

数値

11

○

99

RATIO0_NORMAL_SUBPAGE_RATIO

使用率が0%の通常のサブページの割合です。（単位：%）

小数点以下切り上げで比率を求めるため，RATIO0_NORMAL_SUBPAGE_RATIO〜RATIO10_NORMAL_SUBPAGE_RATIOの比率を合計したときに100％を超えることがあります。

数値

3

○

100

RATIO0_OCCUPIED_SUBPAGE

使用率が0%の通常のサブページのうち，占有状態のサブページ数です。

数値

11

○

101

RATIO1_NORMAL_SUBPAGE

使用率が1〜10%の通常のサブページ数です。

数値

11

○

102

RATIO1_NORMAL_SUBPAGE_RATIO

使用率が1〜10%の通常のサブページの割合です。（単位：%）

数値

3

○

103

RATIO1_OCCUPIED_SUBPAGE

使用率が1〜10%の通常のサブページのうち，占有状態のサブページ数です。

数値

11

○

104

RATIO2_NORMAL_SUBPAGE

使用率が11〜20%の通常のサブページ数です。

数値

11

○

105

RATIO2_NORMAL_SUBPAGE_RATIO

使用率が11〜20%の通常のサブページの割合です。（単位：%）

数値

3

○

106

RATIO2_OCCUPIED_SUBPAGE

使用率が11〜20%の通常のサブページのうち，占有状態のサブページ数です。

数値

11

○

107

RATIO3_NORMAL_SUBPAGE

使用率が21〜30%の通常のサブページ数です。

数値

11

○

108

RATIO3_NORMAL_SUBPAGE_RATIO

使用率が21〜30%の通常のサブページの割合です。（単位：%）

数値

3

○

109

RATIO3_OCCUPIED_SUBPAGE

使用率が21〜30%の通常のサブページのうち，占有状態のサブページ数です。

数値

11

○

110

RATIO4_NORMAL_SUBPAGE

使用率が31〜40%の通常のサブページ数です。

数値

11

○

111

RATIO4_NORMAL_SUBPAGE_RATIO

使用率21〜30%の通常のサブページの割合です。（単位：%）

数値

3

○

112

RATIO4_OCCUPIED_SUBPAGE

使用率が31〜40%の通常のサブページのうち，占有状態のサブページ数です。

数値

11

○

113

RATIO5_NORMAL_SUBPAGE

使用率が41〜50%の通常のサブページ数です。

数値

11

○

114

RATIO5_NORMAL_SUBPAGE_RATIO

使用率が41〜50%の通常のサブページの割合です。（単位：%）

数値

3

○

115

RATIO5_OCCUPIED_SUBPAGE

使用率が41〜50%の通常のサブページのうち，占有状態のサブページ数です。

数値

11

○

116

RATIO6_NORMAL_SUBPAGE

使用率が51〜60%の通常のサブページ数です。

数値

11

○

117

RATIO6_NORMAL_SUBPAGE_RATIO

使用率が51〜60%の通常のサブページの割合です。（単位：%）

数値

3

○

118

RATIO6_OCCUPIED_SUBPAGE

使用率が51〜60%の通常のサブページのうち，占有状態のサブページ数です。

数値

11

○

119

RATIO7_NORMAL_SUBPAGE

使用率が61〜70%の通常のサブページ数です。

数値

11

○

120

RATIO7_NORMAL_SUBPAGE_RATIO

使用率が61〜70%の通常のサブページの割合です。（単位：%）

数値

3

○

121

RATIO7_OCCUPIED_SUBPAGE

使用率が61〜70%の通常のサブページのうち，占有状態のサブページ数です。

数値

11

○

122

RATIO8_NORMAL_SUBPAGE

使用率が71〜80%の通常のサブページ数です。

数値

11

○

123

RATIO8_NORMAL_SUBPAGE_RATIO

使用率が71〜80%の通常のサブページの割合です。（単位：%）

数値

3

○

124

RATIO8_OCCUPIED_SUBPAGE

使用率が71〜80%の通常のサブページのうち，占有状態のサブページ数です。

数値

11

○

125

RATIO9_NORMAL_SUBPAGE

使用率が81〜90%の通常のサブページ数です。

数値

11

○

126

RATIO9_NORMAL_SUBPAGE_RATIO

使用率が81〜90%の通常のサブページの割合です。（単位：%）

数値

3

○

127

RATIO9_OCCUPIED_SUBPAGE

使用率が81〜90%の通常のサブページのうち，占有状態のサブページ数です。

数値

11

○

128

RATIO10_NORMAL_SUBPAGE

使用率が91〜100%の通常のサブページ数です。

格納対象レコードが空き領域に収まらない場合，そのサブページは満杯サブページとして設定されるため，満杯サブページであっても，使用率が91〜100％にならないことがあります。

数値

11

○

129

RATIO10_NORMAL_SUBPAGE_RATIO

使用率が91〜100%の通常のサブページの割合です。（単位：%）

数値

3

○

130

RATIO10_OCCUPIED_SUBPAGE

使用率が91〜100%の通常のサブページのうち，占有状態のサブページ数です。

数値

11

○

131

TOTAL_NORMAL_SUBPAGE

通常のサブページの，使用率別の使用サブページ数の合計です。

数値

11

○

132

TOTAL_OCCUPIED_SUBPAGE

通常のサブページの，使用率別の占有状態のサブページ数の合計です。

数値

11

○

133

NORMAL_PAGE_DEL_ROWID

通常のページの，レコードの削除状態の管理行数です。

数値

仮数16，

指数5

△

134

NORMAL_SUBPAGE_DEL_ROWID

通常のサブページの，レコードの削除状態の管理行数です。

数値

仮数16，

指数5

△

135

USE0_SUBPAGE_PER_NORMAL_PAGE

ページ内のサブページを使用していない通常のページ数です。※4

数値

10

○

136

USE1_SUBPAGE_PER_NORMAL_PAGE

ページ内のサブページのうち，1サブページを使用している通常のページ数です。※4

数値

10

○

137

USE2_SUBPAGE_PER_NORMAL_PAGE

ページ内のサブページのうち，2サブページを使用している通常のページ数です。※4

数値

10

○

138

USE3_SUBPAGE_PER_NORMAL_PAGE

ページ内のサブページのうち，3サブページを使用している通常のページ数です。※4

数値

10

○

139

USE4_SUBPAGE_PER_NORMAL_PAGE

ページ内のサブページのうち，4サブページを使用している通常のページ数です。※4

数値

10

○

140

USE5_SUBPAGE_PER_NORMAL_PAGE

ページ内のサブページのうち，5サブページを使用している通常のページ数です。※4

数値

10

○

141

USE6_SUBPAGE_PER_NORMAL_PAGE

ページ内のサブページのうち，6サブページを使用している通常のページ数です。※4

数値

10

○

142

USE7_SUBPAGE_PER_NORMAL_PAGE

ページ内のサブページのうち，7サブページを使用している通常のページ数です。※4

数値

10

○

143

USE8_SUBPAGE_PER_NORMAL_PAGE

ページ内のサブページのうち，8サブページを使用している通常のページ数です。※4

数値

10

○

144

USE9_SUBPAGE_PER_NORMAL_PAGE

ページ内のサブページのうち，9サブページを使用している通常のページ数です。※4

数値

10

○

145

USE10_SUBPAGE_PER_NORMAL_PAGE

ページ内のサブページのうち，10サブページを使用している通常のページ数です。※4

数値

10

○

146

USE11_SUBPAGE_PER_NORMAL_PAGE

ページ内のサブページのうち，11サブページを使用している通常のページ数です。※4

数値

10

○

147

USE12_SUBPAGE_PER_NORMAL_PAGE

ページ内のサブページのうち，12サブページを使用している通常のページ数です。※4

数値

10

○

148

USE13_SUBPAGE_PER_NORMAL_PAGE

ページ内のサブページのうち，13サブページを使用している通常のページ数です。※4

数値

10

○

149

USE14_SUBPAGE_PER_NORMAL_PAGE

ページ内のサブページのうち，14サブページを使用している通常のページ数です。※4

数値

10

○

150

USE15_SUBPAGE_PER_NORMAL_PAGE

ページ内のサブページのうち，15サブページを使用している通常のページ数です。※4

数値

10

○

151

USE16_SUBPAGE_PER_NORMAL_PAGE

ページ内のサブページのうち，16サブページを使用している通常のページ数です。※4

数値

10

○

152

TOTAL_NORMAL_PAGE_HAVING_SUBPAGE

サブページを持つ通常のページの，使用ページの合計です。

数値

10

○

153

USED_RESERVED_PAGE

事前割り当てページの使用ページ数です。

数値

10

○

154

USED_RESERVED_PAGE_RATIO

事前割り当てページの使用ページ率です。（単位：%）

数値

3

○

155

FULL_RESERVED_PAGE

事前割り当てページの満杯ページ数です。

数値

10

○

156

FULL_RESERVED_PAGE_RATIO

事前割り当てページの満杯ページ率です。（単位：%）

数値

3

○

157

USED_RESERVED_SUBPAGE

事前割り当てサブページの使用サブページ数です。

数値

11

○

158

USED_RESERVED_SUBPAGE_RATIO

事前割り当てサブページの使用サブページ率です。（単位：%）

数値

3

○

159

FULL_RESERVED_SUBPAGE

事前割り当てサブページの満杯サブページ数です。

数値

11

○

160

FULL_RESERVED_SUBPAGE_RATIO

事前割り当てサブページの満杯サブページ率です。（単位：%）

数値

3

○

161

SUM_RESERVED_PAGE

割り当てられているセグメント中の，事前割り当てページの合計です。

数値

10

○

162

SUM_RESERVED_SUBPAGE

割り当てられているセグメント中の，事前割り当てサブページの合計です。

数値

11

○

163

RESERVED_PAGE_FAMILY

事前ページ割り当て機能が適用されているファミリの数です（サブページ分割機能を適用していない場合）。

数値

10

△

164

RESERVED_SUBPAGE_FAMILY

事前ページ割り当て機能が適用されているファミリの数です（サブページ分割機能を適用している場合）。

数値

11

△

165

RESERVED_PAGE_CHILDREN

事前割り当てページに格納されている非ルートレコードの数です。

数値

仮数16，

指数5

△

166

RESERVED_SUBPAGE_CHILDREN

事前割り当てサブページに格納されている非ルートレコードの数です。

数値

仮数16，

指数5

△

167

NONCONTINUOUS_RESERVED_PAGES

非連続に割り当てられている事前割り当てページ数です。

数値

10

○

168

NONCONTINUOUS_RESERVED_SUBPAGES

非連続に割り当てられている事前割り当てサブページ数です。

数値

11

○

169

RESERVED_PAGE_PAGECHANGE

事前割り当てページに格納されている非ルートレコードのうち，PRIORポインタが別ページのレコードを指す非ルートレコードの数です。

数値

仮数16，

指数5

△

170

RESERVED_SUBPAGE_PAGECHANGE

事前割り当てサブページに格納されているレコードのうち，PRIORポインタが別ページのレコードを指すレコードの数です。

サブページに格納されている場合でも，ページ単位に解析を行います。

数値

仮数16，

指数5

△

171

RESERVED_PAGE_SAME_PAGE_RECORD_RATIO

事前割り当てページに格納されているレコードのうち，PRIORポインタが同一ページのレコードを指すレコードの比率です。

数値

3

△

172

RESERVED_SUBPAGE_SAME_PAGE_RECORD_RATIO

事前割り当てサブページに格納されているレコードのうち，PRIORポインタが同一ページのレコードを指すレコードの比率です。

サブページに格納されている場合でも，ページ単位に解析を行います。

数値

3

△

173

RESERVED_PAGE_SAME_SEGMENT_RECORD_RATIO

事前割り当てページに格納されているレコードのうち，PRIORポインタが同一セグメントのレコードを指すレコードの比率です。

数値

3

△

174

RESERVED_SUBPAGE_SAME_SEGMENT_RECORD_RATIO

事前割り当てサブページに格納されているレコードのうち，PRIORポインタが同一セグメントのレコードを指すレコードの比率です。

数値

3

△

175

RATIO0_RESERVED_PAGE

事前割り当てページで，使用率が0%のページ数です。

数値

10

○

176

RATIO0_RESERVED_PAGE_RATIO

事前割り当てページで，使用率が0%のページの割合です。（単位：%）

小数点以下切り上げで比率を求めるため，RATIO0_RESERVED_PAGE_RATIO〜RATIO10_RESERVED_PAGE_RATIOの比率を合計したときに100％を超えることがあります。

数値

3

○

177

RATIO1_RESERVED_PAGE

事前割り当てページで，使用率が1〜10%のページ数です。

数値

10

○

178

RATIO1_RESERVED_PAGE_RATIO

事前割り当てページで，使用率が1〜10%のページの割合です。（単位：%）

数値

3

○

179

RATIO2_RESERVED_PAGE

事前割り当てページで，使用率が11〜20%のページ数です。

数値

10

○

180

RATIO2_RESERVED_PAGE_RATIO

事前割り当てページで，使用率が11〜20%のページの割合です。（単位：%）

数値

3

○

181

RATIO3_RESERVED_PAGE

事前割り当てページで，使用率が21〜30%のページ数です。

数値

10

○

182

RATIO3_RESERVED_PAGE_RATIO

事前割り当てページで，使用率が21〜30%のページの割合です。（単位：%）

数値

3

○

183

RATIO4_RESERVED_PAGE

事前割り当てページで，使用率が31〜40%のページ数です。

数値

10

○

184

RATIO4_RESERVED_PAGE_RATIO

事前割り当てページで，使用率が31〜40%のページの割合です。（単位：%）

数値

3

○

185

RATIO5_RESERVED_PAGE

事前割り当てページで，使用率が41〜50%のページ数です。

数値

10

○

186

RATIO5_RESERVED_PAGE_RATIO

事前割り当てページで，使用率が41〜50%のページの割合です。（単位：%）

数値

3

○

187

RATIO6_RESERVED_PAGE

事前割り当てページで，使用率が51〜60%のページ数です。

数値

10

○

188

RATIO6_RESERVED_PAGE_RATIO

事前割り当てページで，使用率が51〜60%のページの割合です。（単位：%）

数値

3

○

189

RATIO7_RESERVED_PAGE

事前割り当てページで，使用率が61〜70%のページ数です。

数値

10

○

190

RATIO7_RESERVED_PAGE_RATIO

事前割り当てページで，使用率が61〜70%のページの割合です。（単位：%）

数値

3

○

191

RATIO8_RESERVED_PAGE

事前割り当てページで，使用率が71〜80%のページ数です。

数値

10

○

192

RATIO8_RESERVED_PAGE_RATIO

事前割り当てページで，使用率が71〜80%のページの割合です。（単位：%）

数値

3

○

193

RATIO9_RESERVED_PAGE

事前割り当てページで，使用率が81〜90%のページ数です。

数値

10

○

194

RATIO9_RESERVED_PAGE_RATIO

事前割り当てページで，使用率が81〜90%のページの割合です。（単位：%）

数値

3

○

195

RATIO10_RESERVED_PAGE

事前割り当てページで，使用率が91〜100%のページ数です。

数値

10

○

196

RATIO10_RESERVED_PAGE_RATIO

事前割り当てページで，使用率が91〜100%のページの割合です。（単位：%）

格納対象レコードが空き領域に収まらない場合，そのページは満杯ページとして設定されるため，満杯ページであっても，使用率が91〜100％にならないことがあります。

数値

3

○

197

TOTAL_RESERVED_PAGE

事前割り当てページの，使用率別の使用ページ数の合計です。

数値

10

○

198

RATIO0_RESERVED_SUBPAGE

事前割り当てサブページで，使用率が0%のサブページ数です。

数値

11

○

199

RATIO0_RESERVED_SUBPAGE_RATIO

事前割り当てサブページで，使用率が0%のサブページの割合です。（単位：%）

小数点以下切り上げで比率を求めるため，RATIO0_RESERVED_SUBPAGE_RATIO〜RATIO10_RESERVED_SUBPAGE_RATIOの比率を合計したときに100％を超えることがあります。

数値

3

○

200

RATIO1_RESERVED_SUBPAGE

事前割り当てサブページで，使用率が1〜10%のサブページ数です。

数値

11

○

201

RATIO1_RESERVED_SUBPAGE_RATIO

事前割り当てサブページで，使用率が1〜10%のサブページの割合です。（単位：%）

数値

3

○

202

RATIO2_RESERVED_SUBPAGE

事前割り当てサブページで，使用率が11〜20%のサブページ数です。

数値

11

○

203

RATIO2_RESERVED_SUBPAGE_RATIO

事前割り当てサブページで，使用率が11〜20%のサブページの割合です。（単位：%）

数値

3

○

204

RATIO3_RESERVED_SUBPAGE

事前割り当てサブページで，使用率が21〜30%のサブページ数です。

数値

11

○

205

RATIO3_RESERVED_SUBPAGE_RATIO

事前割り当てサブページで，使用率が21〜30%のサブページの割合です。（単位：%）

数値

3

○

206

RATIO4_RESERVED_SUBPAGE

事前割り当てサブページで，使用率が31〜40%のサブページ数です。

数値

11

○

207

RATIO4_RESERVED_SUBPAGE_RATIO

事前割り当てサブページで，使用率が31〜40%のサブページの割合です。（単位：%）

数値

3

○

208

RATIO5_RESERVED_SUBPAGE

事前割り当てサブページで，使用率が41〜50%のサブページ数です。

数値

11

○

209

RATIO5_RESERVED_SUBPAGE_RATIO

事前割り当てサブページで，使用率が41〜50%のサブページの割合です。（単位：%）

数値

3

○

210

RATIO6_RESERVED_SUBPAGE

事前割り当てサブページで，使用率が51〜60%のサブページ数です。

数値

11

○

211

RATIO6_RESERVED_SUBPAGE_RATIO

事前割り当てサブページで，使用率が51〜60%のサブページの割合です。（単位：%）

数値

3

○

212

RATIO7_RESERVED_SUBPAGE

事前割り当てサブページで，使用率が61〜70%のサブページ数です。

数値

11

○

213

RATIO7_RESERVED_SUBPAGE_RATIO

事前割り当てサブページで，使用率が61〜70%のサブページの割合です。（単位：%）

数値

3

○

214

RATIO8_RESERVED_SUBPAGE

事前割り当てサブページで，使用率が71〜80%のサブページ数です。

数値

11

○

215

RATIO8_RESERVED_SUBPAGE_RATIO

事前割り当てサブページで，使用率が71〜80%のサブページの割合です。（単位：%）

数値

3

○

216

RATIO9_RESERVED_SUBPAGE

事前割り当てサブページで，使用率が81〜90%のサブページ数です。

数値

11

○

217

RATIO9_RESERVED_SUBPAGE_RATIO

事前割り当てサブページで，使用率が81〜90%のサブページの割合です。（単位：%）

数値

3

○

218

RATIO10_RESERVED_SUBPAGE

事前割り当てサブページで，使用率が91〜100%のサブページ数です。

格納対象レコードが空き領域に収まらない場合，そのサブページは満杯サブページとして設定されるため，満杯サブページであっても，使用率が91〜100％にならないことがあります。

数値

11

○

219

RATIO10_RESERVED_SUBPAGE_RATIO

事前割り当てサブページで，使用率が91〜100%のサブページの割合です。（単位：%）

数値

3

○

220

TOTAL_RESERVED_SUBPAGE

事前割り当てサブページの，使用率別の使用サブページ数の合計です。

数値

11

○

221

RESERVED_PAGE_DEL_ROWID

事前割り当てページの，レコードの削除状態の管理行数です。

数値

仮数16，

指数5

△

222

RESERVED_SUBPAGE_DEL_ROWID

事前割り当てサブページの，レコードの削除状態の管理行数です。

数値

仮数16，

指数5

△

（凡例）

◎：pddbstコマンドの-dオプションの指定に関係なく出力されます。

○：pddbstコマンドの-dオプションを指定した場合に出力されます。

△：pddbstコマンドの-dオプションおよび-zオプションを指定した場合に出力されます。

注

出力データがない場合は空要素となります。

単位が%の項目については，小数点以下切り上げとなります。

注※1

出力形式が文字列の場合，" "で囲んで表示します。最大長の値には，" "を含みません。

注※2

HiRDB Staticizer Optionがインストールされていない場合，空要素が出力されます。

注※3

サブページ分割を適用していない場合は，0が出力されます。

注※4

事前割り当てサブページがあるページについては，同一ページ内に事前割り当てサブページと通常のサブページの，使用サブページが混在しているページを解析対象にします。

ルートレコード型に定義されているサブページ分割数以降は，0が表示されます。

(4)　解析結果の分析

(a)　ページの割り当て状態による分析

解析結果に出力された総未使用ページ比率が，SDBデータベースの定義時に指定したセグメント内の空きページ比率とかい離している場合は，SDBデータベースのデータが次のどちらかの状態であると考えられます。

レコードを繰り返し格納したため，未使用ページが少なくなっている。

データの削除を繰り返したため，空きページが多くなっている。

このような場合は，必要に応じてルートレコード型が格納されているRDエリアを拡張したあとに，SDBデータベースを再編成することで，ページの割り当て状態の乱れを修正できます。

(b)　詳細情報による分析

RDエリア単位の状態解析（論理的解析）の解析結果から，次の表のように分析できます。

表10‒7　RDエリア単位（論理的解析）の解析結果による分析

項番

出力項目

分析内容

1

通常のページの使用比率別ページ数（Normal Page informationのUsed Page Ratio）

使用率が低いページが多い場合

使用率が低いページから，占有状態のページ数を除外し，この値がPCTFREEオペランドの指定値とかい離しているかどうかを確認してください。かい離している場合は，データの削除や更新によって，一度割り当てられた領域が未解放のまま，空き領域として残っています。再使用できない状態になっているため，SDBデータベースの再編成が必要です。

2

通常のサブページの使用比率別サブページ数（Normal SubPage informationのUsed SubPage Ratio）

使用率が低いサブページが多い場合

使用率が低いサブページから，占有状態のサブページ数を除外し，この値がPCTFREEオペランドの指定値とかい離しているかどうかを確認してください。かい離している場合は，データの削除や更新によって，一度割り当てられた領域が未解放のまま，空き領域として残っています。再使用できない状態になっているため，SDBデータベースの再編成が必要です。

3

事前割り当てページの使用比率別ページ数（Reserved Page informationのUsed Page Ratio）

使用率0％の使用ページ数が少ない場合

使用率0％のページとは，レコードが格納されていないページのことです。このページ数が少ない場合は，事前割り当てページとしてレコードを格納できる残りのページ数が少なくなっています。割り当て済みの事前割り当てページにレコードを格納できなくなると，追加で事前割り当てページを割り当てることができます。ただし，これが多発すると，非連続のページにファミリ内のレコードが分散して配置されるため，出力項目「非連続に割り当てられた事前割り当て（サブ）ページ数」の分析内容に示す対策が必要です。

4

事前割り当てサブページの使用比率別サブページ数（Reserved SubPage informationのUsed SubPage Ratio）

使用率0％の使用サブページ数が少ない場合

使用率0％のサブページとは，レコードが格納されていないサブページのことです。このサブページ数が少ない場合は，事前割り当てサブページとしてレコードを格納できる残りのサブページ数が少なくなっています。割り当て済みの事前割り当てサブページにレコードを格納できなくなると，追加で事前割り当てサブページを割り当てることができます。ただし，これが多発すると，非連続のページにファミリ内のレコードが分散して配置されるため，出力項目「非連続に割り当てられた事前割り当て（サブ）ページ数」の分析内容に示す対策が必要です。

5

使用サブページ数ごとのページ数（Normal SubPage informationのUsed SubPage Count per Page）

使用サブページが少ないページが多い場合

使用ページ数に対して未使用サブページが多く存在しているため，それが性能低下の原因となっています。SDBデータベースの再編成が必要です。

6

再編成による解放可能なページ数（Normal Page informationまたはNormal SubPage informationのCollect Prearranged Page）

再編成による解放可能なページ数が多い場合

データの削除によって，一度割り当てられた領域が未解放のまま空きページとして残っています。それが性能低下の原因となっています。再編成による解放可能ページ数の，通常のページ数の合計に対する比率が30％以上の場合は，SDBデータベースの再編成が必要です。

7

削除状態の管理行数（各informationのDel RowID）

削除済みレコードの管理情報数が多い場合

データの削除によって，レコードの管理情報が未使用状態のままページに残っています。それが性能低下の原因となっています。同一（サブ）ページ種別での削除済みレコードの管理情報の，総レコードの管理行数に対する比率が，30％以上の場合は，SDBデータベースの再編成が必要です。

ページ種別：

通常のページ，通常のサブページ，事前割り当てページ，および事前割り当てサブページを表す種別のことです。

管理行数：

ファミリ格納件数，非ルートレコード格納件数，および削除済みレコードの管理情報数の合計です。

8

レコード集約度（各informationのCollection Degree）

見積もり値と比較した結果，次のどちらかの状態になっている場合は，SDBデータベースの再編成が必要です。見積もり値の見積もり方法については，「(5)　レコードの集約度の見積もり方法」を参照してください。

ページまたがり回数が多い，またはページ内のレコード集約度が低い場合

親子近傍配置に乱れが発生しているため，レコード間ポインタをたどる際に，ページまたがりが多く発生しています。それが性能低下の原因となっています。SDBデータベースの再編成を実行して，レコードを配置し直す必要があります。

セグメント内のレコード集約度が低い場合

親子近傍配置に乱れが発生したため，レコード間ポインタをたどる際に，セグメントまたがりが多く発生しています。それが性能低下の原因となっています。SDBデータベースの再編成を実行して，レコードを配置し直す必要があります。

9

非連続に割り当てられている事前割り当て（サブ）ページ数（Reserved Page informationのNonContinuous Reserved PagesまたはReserved SubPage informationのNonContinuous Reserved SubPages）

非連続に割り当てられた事前割り当て（サブ）ページ数が多い場合

データベースの初期作成後の運用によって，割り当てられた事前割り当て（サブ）ページが非連続になっています。それが性能低下の原因となっています。SDBデータベースの再編成を実行して，事前割り当て（サブ）ページが連続領域に割り当てられるようにしてください。

10

子レコードを1件も管理していない仮想ルートレコードの数（Normal Page informationまたはNormal SubPage informationのVirtual Root Record(disuse)）

子レコードを1件も持たない仮想ルートレコードが多い場合

レコードの削除（ERASE）または一括削除によって，子レコードがすべて削除された仮想ルートレコードによる不要な領域が増加しています。SDBデータベースの再編成を実行して，その仮想ルートレコードを解放する必要があります。ただし，その後，レコードを格納する際に，この領域が再利用されることがあるため，今後の運用予定を考慮し，SDBデータベースを再編成するかどうかを判断する必要があります。

11

論理的に削除状態になっている非ルートレコードの数（Normal Page informationまたはNormal SubPage informationのLogical Cleared Record）

論理的に削除状態になっている非ルートレコードの件数が多い場合

一括削除によって論理的に削除状態になっている非ルートレコードによる領域が増加しています。SDBデータベースの再編成を実行して，その領域を解放する必要があります。ただし，その後，レコードを格納する際に，この領域が再利用されることがあるため，今後の運用予定を考慮し，SDBデータベースを再編成するかどうかを判断する必要があります。

レコード格納用RDエリアの状態解析結果と対策を次の表に示します。

表10‒8　レコード格納用RDエリアの状態解析結果と対策

RDエリア内の状態

対策

ページ

空きページ

多い

SDBデータベースを定義したときのセグメント内の空きページ比率が大き過ぎます。または，レコードの削除によって，空きページができています。SDBデータベースの再編成が必要です。

少ない

RDエリア内に空きセグメントが少ない場合は，RDエリアの拡張が必要です。

サブページ分割機能適用時，または事前ページ割り当て機能適用時には，pddbstコマンドの実行時に-dオプションを指定して，詳細情報を解析することを推奨します。

(5)　レコードの集約度の見積もり方法

レコードの集約度について，データベース状態解析ユティリティ（pddbst）による解析結果（実態値）と，見積もった値を比較した結果，両方の値にかい離がある場合，基本的にはSDBデータベースの再編成の効果が見込めます。そのため，解析結果の値と比較するために，事前に見積もりの値を算出しておく必要があります。

なお，事前割り当て（サブ）ページと通常（サブ）ページでは，再編成契機を判断する基準が異なるため，各項目をそれぞれ見積もってください。レコードの集約度の見積もり方法を以降で説明します。

(a)　使用中ページ数，使用中サブページ数

事前割り当てページまたは事前割り当てサブページ

「3.5.5(3)　事前割り当てページ数または事前割り当てサブページ数の算出【4V FMB】」を参照して，事前ページ割り当て機能を適用する全ファミリ分の事前割り当てページ数または事前割り当てサブページ数を求めてください。

通常のページまたは通常のサブページ

「3.5.5(4)　平均的なファミリが使用するページ数またはサブページ数の算出」を参照して，事前ページ割り当て機能を適用しない全ファミリ分のページ数またはサブページ数を求めてください。

(b)　ページの跨り回数

レコード間ポインタを辿って検索を行う際，なるべくページ替わりが発生しない方がアクセス性能が良くなります。したがって，1ファミリに着目した場合，最も理想的なページ跨り回数は，「当該ファミリによる使用ページ数−1」になります。

ただし，見積もり時には，単純に「使用中ページ数−1」とするのではなく，次の理由によって，ファミリ間のページ替わり回数分を考慮する必要があります。

1RDエリアに対して複数のファミリを格納することができる。

ページおよびサブページを異なるファミリで共有しない。

異なるファミリ間はポインタによって接続されない。

■サブページ分割を適用していない場合

事前割り当てページ

ページ跨り回数の見積もり＝

　　　（レコードが格納されている事前割り当てページ数−1）

　　　−（事前割り当てページを使用しているファミリ数−1）※

通常ページ

ページ跨り回数の見積もり＝

　　　（通常ページの使用ページ数−1）

　　　−（事前割り当てページを使用していないファミリ数−1）※

注※　ファミリ間のページ替わり回数です。

■サブページ分割を適用している場合

サブページ分割の適用時には，異なるファミリを同一ページ（異なるサブページ）に格納することがあるため，ファミリ替わりのタイミングとして次の2つのパターンがあります。

ページ内の全サブページを使い切った上でファミリが切り替わる。

ページの途中でファミリが切り替わる。

サブページ分割を適用していないときのように，ファミリの切り替わりとページの切り替わりが必ずしも一致しないため，見積もり式を共通化することはできません。そのため，サブページ分割の適用時には，平均ファミリサイズ（平均的なファミリが使用するページまたはサブページ数）を基に，ページ跨り発生比率を求めた上で，当該比率と使用中ページ数からページ跨り回数を見積もってください。

なお，平均ファミリサイズの単位は，サブページ分割を適用していないときはページとなり，サブページ分割を適用しているときはサブページとなります。

平均ファミリサイズ（平均的なファミリが使用するページまたはサブページ数）の見積もり方法については，「3.5.5(4)　平均的なファミリが使用するページ数またはサブページ数の算出」を参照してください。

事前割り当てサブページ

ページ跨り回数の見積もり＝

　　（レコードが格納されている事前割り当てサブページ数÷サブページ分割数）

　　×ページ跨り発生比率

ページ跨り発生比率※＝（A−1）÷A

　A＝↑B÷サブページ分割数↑

　B＝最小公倍数（事前割り当てサブページを使用するファミリの平均ファミリサイズ，サブページ分割数）

注※　ページ跨り（ファミリ替わり≠ページ替わり）が，Aページごとに「A−1」回発生します。

通常サブページ

ページ跨り回数の見積もり＝

　　（通常サブページの使用サブページ数÷サブページ分割数）

　　×ページ跨り発生比率

ページ跨り発生比率※＝（C−1）÷C

　C＝↑D÷サブページ分割数↑

　D＝最小公倍数（事前割り当てサブページを使用しないファミリの平均ファミリサイズ，サブページ分割数）

注※　ページ跨り（ファミリ替わり≠ページ替わり）が，Cページごとに「C−1」回発生します。

計算例を次に示します。

（例）

データベース状態解析ユティリティによる解析結果

使用中ページ数：100

事前準備による見積もり結果

サブページ分割数：7

平均ファミリサイズ：3サブページ

ページ跨り回数の見積もり

α＝↑最小公倍数（平均ファミリサイズ，サブページ分割数）÷サブページ分割数↑

＝↑21÷7↑

＝3

ページ跨り発生比率＝（α−1）÷α

＝（3−1）÷3

＝2÷3

したがって，平均ファミリサイズのファミリを順次格納していくと，3ページ当たり，ページ跨りが2回発生します。

ページ跨り回数の見積もり＝（100×2）÷3＝66

なお，次のケースでは，実際のページ跨り回数との間で誤差が発生することがあります。

SDBデータベースの実際の格納状況で，各ファミリのサイズに幅がある場合

各ファミリに割り当てた事前割り当てサブページ数に幅がある場合

(c)　ページ内のレコード集約度

PRIORポインタが同一ページのレコードを指しているレコードの比率を表す「ページ内のレコード集約度」は，「(b)　ページの跨り回数」の見積もり結果を利用することによって見積もることができます。

なお，この見積もり式では，すべてのレコードを対象としてレコード集約度を見積もるため，ページ切り替えオプションに'O'や'C'を指定したレコードが多い場合，SDBデータベースを設計したときのとおりに格納されたとしても，見積もり結果の値が低くなることがあります。

ページ内のレコード集約度の見積もり＝

　　PRIORポインタが同一ページのレコードを指しているレコード数

　　÷格納レコードの合計数

PRIORポインタが同一ページのレコードを指しているレコード数

　　　＝格納レコードの合計数−ページの跨り回数

(d)　セグメント内のレコード集約度

レコード間ポインタを辿って検索を行う際，なるべくセグメント替わりが発生しない方がアクセス性能が良くなります。そのため，SDBデータベースの設計時にセグメントサイズを「平均的なファミリの使用ページ数」と同じにすることを推奨しています。

したがって，最も理想的なセグメント内のレコード集約度は100％になります。

ただし，前述のとおり，セグメントサイズは平均なファミリの使用ページ数を基に設計するため，各ファミリの使用ページ数に幅がある場合，セグメント内のレコード集約度が必ずしも100％にならないことがあります。

10.7.4　RDエリア単位の状態解析（物理的解析）

RDエリア単位の状態解析（物理的解析）では，RDエリア内の全セグメントおよび全ページの格納状態を解析します。

次の出力項目以外については，マニュアル「HiRDB Version 9 コマンドリファレンス」の「RDエリア単位の状態解析（物理的解析）」を参照してください。

FULL_PAGE（満杯ページ数）

サブページ分割機能が適用されていない場合

次の条件を満たすページ数の合計が表示されます。

・これ以上データを格納することができない使用ページ数

・占有状態の使用ページ数

サブページ分割が適用されている場合

すべてのサブページが使用サブページである使用ページ数が表示されます。

10.8　JP1/NETM/Audit用監査ログ出力ユティリティ（pdaudput）

JP1/NETM/Audit用監査ログ出力ユティリティ（pdaudput）は，HiRDBの監査証跡表のデータを，JP1/NETM/Auditで読み込める形式でファイルに出力するユティリティです。JP1/NETM/Audit用監査ログ出力ユティリティが出力する監査証跡表のデータをJP1/NETM/Audit用監査ログといいます。また，出力されたファイルを，JP1/NETM/Audit用監査ログ出力ファイルといいます。

JP1/NETM/Audit用監査ログ出力ユティリティ（pdaudput）の機能および指定形式の詳細については，マニュアル「HiRDB Version 9 コマンドリファレンス」を参照してください。ただし，マニュアル「HiRDB Version 9 コマンドリファレンス」に記載されている内容とは，仕様差があります。ここでは，その仕様差についてだけ説明します。

10.8.1　JP1/NETM/Audit用監査ログ出力ファイルの内容

JP1/NETM/Audit用監査ログ出力ファイルの項目のうち，構造型DB機能の監査対象イベントの種別を次の表に示します。

表10‒9　構造型DB機能が出力するイベントタイプおよびイベントサブタイプと，pdaudputが出力する監査対象イベントの種別についての対応

構造型DB機能が出力するイベントタイプおよびイベントサブタイプ

pdaudputが出力する値と説明

監査イベント

イベントタイプの値

イベントサブタイプの値

イベント

EventCategoryに出力する値

説明

SDBデータベース操作イベント

SDA

FTC

レコードの検索（FETCH）

位置指示子の位置づけ（FIND）

ContentAccess

重要情報アクセス

STR

レコードの格納（STORE）

ContentAccess

重要情報アクセス

MOD

レコードの変更（MODIFY）

ContentAccess

重要情報アクセス

ERS

レコードの削除（ERASE）

ContentAccess

重要情報アクセス

CLA

レコードの一括削除

ContentAccess

重要情報アクセス

FTA

複数レコードの検索（FETCHDB ALL）

ContentAccess

重要情報アクセス

SDBユティリティ操作イベント

SDU

DEF

HiRDB/SDデータベース定義ユティリティ（pdsdbdef）

ContentAccess

重要情報アクセス

LOD

HiRDB/SDデータベース作成ユティリティ（pdsdblod）

ContentAccess

重要情報アクセス

ROG

HiRDB/SDデータベース再編成ユティリティ（pdsdbrog）

ContentAccess

重要情報アクセス

JP1/NETM/Audit用監査ログ出力ファイルの項目のうち，構造型DB機能のサブジェクト識別情報を次の表に示します。

表10‒10　構造型DB機能のイベントおよびイベントタイプとサブジェクト識別情報の対応

イベントの種類

サブジェクト識別情報

監査イベント

イベントタイプの値

イベントサブタイプの値

SDBデータベース操作イベント

SDA

FTC

AccountID

STR

AccountID

MOD

AccountID

ERS

AccountID

CLA

AccountID

FTA

AccountID

SDBユティリティ操作イベント

SDU

DEF

Effective UserID

LOD

Effective UserID

ROG

Effective UserID

10.9　運用コマンド

ここでは，次の運用コマンドについて説明します。

pdsdbarc（SDBディレクトリ情報の常駐化，および最終更新日時のチェックをするコマンド）

マニュアル「HiRDB Version 9 コマンドリファレンス」に記載されている内容と差異があるコマンド

10.9.1　pdsdbarc（SDBディレクトリ情報の常駐化および最終更新日時のチェック）

(1)　機能

pdsdbarcコマンドには次に示す機能があります。

SDBディレクトリ情報を事前常駐領域に常駐する。

SDBディレクトリ情報の最終更新日時のチェックを行う。

SDBディレクトリ情報に関する情報を表示する。

事前常駐領域を常用常駐領域に切り替える。

(2)　実行者

HiRDB管理者が実行できます。

(3)　形式

■SDBディレクトリ情報の事前常駐領域への常駐，最終更新日時のチェック，または情報表示の場合

　pdsdbarc ｛-e｜-c｜-a｝〔-u ユニット識別子〔，ユニット識別子〕…〕

■事前常駐領域を常用常駐領域に切り替える場合

　pdsdbarc -w -q

(4)　オプション

-e

SDBディレクトリ情報ファイルからSDBディレクトリ情報を読み込み，事前常駐領域に常駐します。

HiRDB/SDは，事前常駐領域中のSDBディレクトリ情報の最終更新日時と，ディクショナリ表中のSDBディレクトリ情報の最終更新日時をチェックします。チェックの結果，ディクショナリ表中のSDBディレクトリ情報の最終更新日時の方が古い場合，事前常駐領域中のSDBディレクトリ情報を無効状態にします。この場合，出力されたメッセージの対処に従ってください。

-c

常用常駐領域中のSDBディレクトリ情報の最終更新日時のチェックを行います。

HiRDB/SDは，常用常駐領域中のSDBディレクトリ情報の最終更新日時と，ディクショナリ表中のSDBディレクトリ情報の最終更新日時をチェックします。チェックの結果，ディクショナリ表中のSDBディレクトリ情報の最終更新日時の方が古い場合，常用常駐領域中のSDBディレクトリ情報を無効状態にします。この場合，出力されたメッセージに従って対処してください。SDBディレクトリ情報が無効状態になったユニットではSDBデータベースへのアクセスができなくなります。

注意事項

チェックの結果によっては，常用常駐領域中のSDBディレクトリ情報が無効になることがあります。そのため，業務実行中にpdsdbarc -cコマンドを実行しないようにしてください。pdsdbarc -cコマンドは，HiRDBの開始直後など，業務実行中でないときに実行するようにしてください。

-a

ディクショナリ表，SDBディレクトリ情報ファイル，事前常駐領域，および常用常駐領域のSDBディレクトリ情報に関する情報を表示します。

-u ユニット識別子〔，ユニット識別子〕…

pdsdbarcコマンドの処理対象とするユニットのユニット識別子を指定します。-uオプションを省略した場合，全ユニットがpdsdbarcコマンドの処理対象になります。

なお，複数のユニット識別子を指定する場合は，コンマの前後に空白を入力しないでください。

-w -q

事前常駐領域を常用常駐領域に切り替え，常用常駐領域を事前常駐領域に切り替えます。

pdsdbarc -w -q コマンドは，事前常駐領域にSDBディレクトリ情報が正しく常駐されているユニットに対してだけ実行できます。事前常駐領域のSDBディレクトリ情報が無効状態の場合は，その事前常駐領域を常用常駐領域に切り替えることはできません。

注意事項

pdsdbarc -w -qコマンドを実行する前に次に示すことを確認してください。

トランザクションが静止化している。トランザクションの静止化方法については，「5.7.3(8)　トランザクションを静止化する」を参照してください。

実行中のコマンドおよびユティリティがない。

ロールバック中のトランザクションがない。

常駐領域の切り替え後，事前常駐領域中のSDBディレクトリ情報は無効状態になります。そのため，pdsdbarc -w -qコマンドの実行後，再度pdsdbarc -w -qコマンドを実行することはできません。

(5)　規則

pdsdbarcコマンドは，HiRDBが稼働中のときに実行できます。

pdsdbarcコマンド（-e，-c，および-a指定）を実行する場合は，次に示すクライアント環境定義を指定しておく必要があります。

PDUSER：CONNECT権限を持ったユーザの認可識別子とパスワードを指定します。

このとき，OSログインユーザの簡易認証機能は使用できません。

pdsdbarcコマンド（-e，-c，および-a指定）は，システムマネジャがあるサーバマシンで実行してください。

pdsdbarc -w -qコマンドは，コマンドの実行対象とするユニットがある各サーバマシンで実行してください。

pdsdbarcコマンドのリターンコードが0の場合は，pdsdbarcコマンドは正常終了しています。0以外の場合はpdsdbarcコマンドが異常終了しています。出力されたメッセージに従って対処してください。

(6)　留意事項

pdsdbarcコマンドは複数同時に実行できません。あとから実行しようとしたpdsdbarcコマンドはエラーになります。

pdsdbarcコマンド（-eまたは-w -qオプション指定）を実行する場合は，pd_structured_advance_residentオペランドにuseを指定している必要があります。useを指定していない場合，pdsdbarcコマンドは実行できません。

高速系切り替え機能を使用している場合，実行系ユニットだけがpdsdbarcコマンドの処理対象になります。待機系ユニットは処理対象になりません。

-ｕオプションの指定を省略するか，または-uオプションに複数のユニットを指定した場合，1つのユニットに対するコマンド処理が失敗しても処理を続行し，次のユニットに対してコマンド処理を行います。ただし，通信障害が発生した場合は，コマンド処理を行いません。

pdsdbarcコマンド（-e，-c，および-a指定）を実行する場合は，次に示すクライアント環境定義の指定は無視されます。

PDSQLTRACE

PDVWOPTMODE

PDCLTAPNAME

PDAUTORECONNECT

(7)　リターンコード

pdsdbarcコマンドのリターンコードを次に示します。

0：pdsdbarcコマンドが正常終了しました。

4：pdsdbarcコマンドが異常終了しました。ただし，一部のユニットに対しては処理が完了しています。または，警告メッセージが出力されています。

8：pdsdbarcコマンドが異常終了しました。

(8)　出力形式

pdsdbarcコマンドの実行結果（標準出力への出力形式）について説明します。

(a)　pdsdbarc -eコマンドの実行時（SDBディレクトリ情報を事前常駐領域に常駐する場合）

KFPB31011-Iメッセージの出力内容の各項目については，「(9)　pdsdbarcコマンドの実行結果の出力内容」を参照してください。

(b)　pdsdbarc -cコマンドの実行時（SDBディレクトリ情報の最終更新日時をチェックする場合）

■チェックの結果，整合性が取れている場合の例

KFPB31012-Iメッセージの出力内容の各項目については，「(9)　pdsdbarcコマンドの実行結果の出力内容」を参照してください。

■チェックの結果，整合性が取れていない場合の例

(c)　pdsdbarc -aコマンドの実行時（SDBディレクトリ情報に関する情報を表示する場合）

KFPB31019-IおよびKFPB31020-Iメッセージの出力内容の各項目については，「(9)　pdsdbarcコマンドの実行結果の出力内容」を参照してください。

(d)　pdsdbarc -w -qコマンドの実行時（事前常駐領域を常用常駐領域に切り替える場合）

ユニットunt1の事前常駐領域を常用常駐領域に切り替えた例です。

(9)　pdsdbarcコマンドの実行結果の出力内容

pdsdbarcコマンドの実行結果の出力内容を次の表に示します。

表10‒11　pdsdbarcコマンドの実行結果の出力内容

出力情報

説明

unit

ユニット識別子

kind

SDBディレクトリ情報の格納場所

DIC：ディクショナリ表

FILE：SDBディレクトリ情報ファイル

ADVA：事前常駐領域

CONS：常用常駐領域

time stamp

SDBディレクトリ情報の最終更新日時

（　）内はSDB定義文の最終更新日時

state

SDBディレクトリ情報の状態

U：有効な状態です。

E：常駐化に失敗している状態です。

I：SDBディレクトリ情報の常駐処理が行われていない状態です。

M：SDBディレクトリ情報の整合性が取れていない状態です。

N：SDBディレクトリ情報が存在しない状態です。

R：無効な状態です。事前常駐領域を常用常駐領域に切り替えたため，切り替え前に使用していたSDBディレクトリ情報を無効にしました。

S：事前常駐領域を使用しない設定の場合に表示されます。pd_structured_advance_resident オペランドにnouseを指定するか，またはこのオペランドを省略している場合に表示されます。

T：処理が競合したため，事前常駐処理が失敗した状態です。

W：常用常駐領域と事前常駐領域の切り替え処理で内部矛盾が発生した状態です。

*：日時情報の取得に失敗した状態です。

(10)　ディクショナリ表中の最終更新日時とSDBディレクトリ情報ファイル中の最終更新日時が異なる場合のSDBデータベースへのアクセス制限

SDBデータベースへのアクセスが実行される際，HiRDB/SDはディクショナリ表中の次に示す最終更新日時と，SDBディレクトリ情報ファイル中の次に示す最終更新日時が一致しているかどうかを確認しています。

SDB定義文の最終更新日時

SDBディレクトリ情報の最終更新日時

ディクショナリ表中の上記2つの最終更新日時と，SDBディレクトリ情報ファイル中の上記2つの最終更新日時が一致している場合は，SDBデータベースにアクセスできます。一方，ディクショナリ表中の上記2つの最終更新日時と，SDBディレクトリ情報ファイル中の上記2つの最終更新日時が両方とも一致していない場合は，SDBデータベースにアクセスできません。

なお，次に示す場合は，一部のレコード型にアクセスできません。

SDB定義文の最終更新日時は一致しているが，SDBディレクトリ情報の最終更新日時が一致していない場合

参考

HiRDBの再起動を必要としないSDBデータベースの定義追加または定義変更をしてから，事前常駐領域を常用常駐領域に切り替えるまでの間は，上記の状態になります。

（例1）レコード型の追加の場合

上記のようにレコード型を追加した場合，アクセスできるレコード型は次のようになります。

アクセス対象

pd_structured_advance_residentオペランドの指定値

アクセス可否

SDBデータベース

レコード型

DB01

REC_A

use

○

REC_B

○

REC_C

○

REC_D

×※1

DB02

REC_X

×※1

REC_Y

×※1

DB01

REC_A

nouseまたは省略

×※2

REC_B

×※2

REC_C

×※2

REC_D

×※2

DB02

REC_X

×※2

REC_Y

×※2

（凡例）

○：アクセスできます。

×：アクセスできません。

注※1

新しいSDBディレクトリ情報ファイルを全ユニットに配布して，事前常駐領域を常用常駐領域に切り替えたあとにアクセスできるようになります。

注※2

新しいSDBディレクトリ情報ファイルを全ユニットに配布して，HiRDBを再起動したあとにアクセスできるようになります。

（例2）RDエリアの追加の場合

上記のように格納RDエリアを追加した場合，アクセスできるRDエリアのレコード型は次のようになります。

アクセス対象

pd_structured_advance_residentオペランドの指定値

アクセス可否

格納RDエリア

レコード型

RDAREA01

REC_A

use

○

REC_B

○

REC_C

○

RDAREA02

REC_A

○

REC_B

○

REC_C

○

RDAREA03

REC_A

×※1

REC_B

×※1

REC_C

×※1

RDAREA01

REC_A

nouseまたは省略

×※2

REC_B

×※2

REC_C

×※2

RDAREA02

REC_A

×※2

REC_B

×※2

REC_C

×※2

RDAREA03

REC_A

×※2

REC_B

×※2

REC_C

×※2

（凡例）

○：アクセスできます。

×：アクセスできません。

注※1

新しいSDBディレクトリ情報ファイルを全ユニットに配布して，事前常駐領域を常用常駐領域に切り替えたあとにアクセスできるようになります。

注※2

新しいSDBディレクトリ情報ファイルを全ユニットに配布して，HiRDBを再起動したあとにアクセスできるようになります。

10.9.2　pdbkupls（バックアップファイルの情報表示）

(1)　機能

pdcopyコマンドで取得したバックアップの情報（RDエリアの一覧，バックアップ取得日時など）を表示します。

pdbkuplsコマンドの機能および指定形式の詳細については，マニュアル「HiRDB Version 9 コマンドリファレンス」を参照してください。

なお，マニュアル「HiRDB Version 9 コマンドリファレンス」に記載されている内容とは，仕様差がある部分があります。ここでは，その仕様差についてだけ説明します。

(2)　実行者

HiRDB管理者が実行できます。

(3)　出力形式

pdbkuplsコマンドの実行結果に出力されるRDエリアの種別（<RDAREA kind>）に，次に示す情報も出力されます。

USER_STRUCTURED：SDBデータベースを格納しているユーザ用RDエリア

10.9.3　pddbls（RDエリアの状態表示）

(1)　機能

RDエリアの状態を表示します。

pddblsコマンドの機能および指定形式の詳細については，マニュアル「HiRDB Version 9 コマンドリファレンス」を参照してください。

なお，マニュアル「HiRDB Version 9 コマンドリファレンス」に記載されている内容とは，仕様差がある部分があります。ここでは，その仕様差についてだけ説明します。

(2)　実行者

HiRDB管理者が実行できます。

(3)　形式

　pddbls ｛｛-r RDエリア名〔，RDエリア名〕…｜-r ALL
　　　　　 ｜-s サーバ名〔，サーバ名〕…｝
　　　　 〔｛-l｜-a｝〕 〔｛-b｜-o｝〕 〔-m〕 〔-x 〔-y〕〔-M〕〔-D〕〔-S〕〕
　　　　　 ｜｛-q 世代番号｜-C｝ 〔-｛l｜a｝〕 〔-m〕 〔-x 〔-y〕〕〔-M〕〔-D〕〔-S〕｝

(4)　オプション

-Sオプション以外の説明については，マニュアル「HiRDB Version 9 コマンドリファレンス」の「pddbls（RDエリアの状態表示）」を参照してください。

-S

RDエリアに格納されているデータベースの形式を表示します。

(5)　出力形式

-Sオプション指定時かつRDエリア種別がUSER（ユーザ用RDエリア）の場合，RDエリアに格納されているデータベースの形式（[DATAMODEL]）として，次の情報が出力されます。

STRUCTURED：SDBデータベースを格納しているユーザ用RDエリアを意味しています。

RELATIONAL：次の表またはインデクスを格納しているユーザ用RDエリアを意味しています。

追い付き反映キー対応表を格納しているRDエリア

追い付き反映キー対応表のインデクスを格納しているRDエリア

追い付き状態管理表を格納しているRDエリア

監査証跡表を格納しているRDエリア

10.9.4　pdrdrefls（関連RDエリアの表示）

(1)　機能

関連するRDエリアの情報を表示します。pdrdreflsコマンドの機能および指定形式の詳細については，マニュアル「HiRDB Version 9 コマンドリファレンス」の「pdrdrefls（関連するRDエリアの情報の表示）」を参照してください。ただし，マニュアル「HiRDB Version 9 コマンドリファレンス」に記載されている内容とは，仕様差があります。ここでは，その仕様差についてだけ説明します。

(2)　オプション

-r ALL

すべてのユーザ用RDエリアを処理対象とする場合に指定します。

同時に-cオプションを指定した場合，cオプションの指定は，リレーショナルDBを格納するRDエリアの情報表示では有効となりますが，SDBデータベースを格納するRDエリアでは無視されます。

-t 〔認可識別子.〕レコード型名

〜＜識別子＞((認可識別子：1〜8バイト，レコード型名：1〜30バイト))

SDBデータベースの情報を表示する場合，-tオプションには表識別子ではなく4V FMBのSDBデータベースのレコード型名を指定します。

このオプションを指定した場合，指定したレコード型を格納している全RDエリアと，そのRDエリア内に定義されている資源について解析を行い，関連RDエリア名を表示します。

同時に-cオプションを指定した場合はエラーとなります。

(3)　出力形式

ここでは，差異がある部分についてだけ説明します。

資源種別（3バイト）：

資源の種別です。

TBL：レコード型

IDX：インデクス

資源名（最大43バイト）：

該当するRDエリアに格納されている資源の名称です。資源名は引用符で囲んで表示されます。

資源種別がTBLの場合：認可識別子.レコード型名

資源種別がIDXの場合：認可識別子.インデクス識別子

関連資源名（最大45バイト）：

資源種別がIDXの資源の関連資源名です。関連資源名は（認可識別子.レコード型名）の形式で表示され，引用符で囲まれます。

制約による関連資源名（最大47バイト）：

出力されません。

(4)　コマンドの実行結果の例

pdrdreflsコマンドを実行して，関連RDエリアを表示する際の実行結果の例を示します。SDBデータベースの構成は次のとおりとします。

（凡例）

RD01〜RD08：RDエリア名

注※1　user1.FMB11に定義したインデクス

注※2　user1.FMB21に定義したインデクス

項番

オプションの指定

実行結果

-r

-t

-l

-a

1

RD01

−

−

○

SERVER NAME : BES1

　RDAREA NAME : "RD01"

　　AREA TYPE : USER

　　RESOURCE : TBL : "user1"."FMB11"

　　　　　　　　　　　"user1"."FMB12"

　　　　　　　　　　　"user1"."FMB13"

　RDAREA NAME : "RD04"

　　AREA TYPE : USER

　　RESOURCE : IDX : "user1"."FMB11IDX"

　　　　　　　　　　("user1"."FMB11")

2

−

−

−

RDAREA NAME : "RD01"

RDAREA NAME : "RD04"

3

−

○

○

BES1 "RD01" USER TBL "user1"."FMB11"

BES1 "RD01" USER TBL "user1"."FMB12"

BES1 "RD01" USER TBL "user1"."FMB13"

BES1 "RD04" USER IDX "user1"."FMB11IDX" "user1"."FMB11"

4

−

○

−

"RD01" "RD04"

5

RD02

−

−

○

SERVER NAME : BES1

　RDAREA NAME : "RD02"

　　AREA TYPE : USER

　　RESOURCE : TBL : "user1"."FMB11"

　　　　　　　　　　　"user1"."FMB12"

　　　　　　　　　　　"user1"."FMB13"

　RDAREA NAME : "RD05"

　　AREA TYPE : USER

　　RESOURCE : IDX : "user1"."FMB11IDX"

　　　　　　　　　　("user1"."FMB11")

6

RD03

−

−

○

SERVER NAME : BES2

　RDAREA NAME : "RD03"

　　AREA TYPE : USER

　　RESOURCE : TBL : "user1"."FMB11"

　　　　　　　　　　　"user1"."FMB12"

　　　　　　　　　　　"user1"."FMB13"

　RDAREA NAME : "RD06"

　　AREA TYPE : USER

　　RESOURCE : IDX : "user1"."FMB11IDX"

　　　　　　　　　　("user1"."FMB11")

7

RD07

−

−

○

SERVER NAME : BES1

　RDAREA NAME : "RD07"

　　AREA TYPE : USER

　　RESOURCE : TBL : "user1"."FMB21"

　　　　　　　　　　　"user1"."FMB22"

　　　　　　　　　　　"user1"."FMB23"

　RDAREA NAME : "RD08"

　　AREA TYPE : USER

　　RESOURCE : IDX : "user1"."FMB21IDX"

　　　　　　　　　　("user1"."FMB21")

8

−

FMB11

−

○

SERVER NAME : BES1

　RDAREA NAME : "RD01"

　　AREA TYPE : USER

　　RESOURCE : TBL : "user1"."FMB11"

　　　　　　　　　　　"user1"."FMB12"

　　　　　　　　　　　"user1"."FMB13"

　RDAREA NAME : "RD02"

　　AREA TYPE : USER

　　RESOURCE : TBL : "user1"."FMB11"

　　　　　　　　　　　"user1"."FMB12"

　　　　　　　　　　　"user1"."FMB13"

　RDAREA NAME : "RD04"

　　AREA TYPE : USER

　　RESOURCE : IDX : "user1"."FMB11IDX"

　　　　　　　　　　("user1"."FMB11")

　RDAREA NAME : "RD05"

　　AREA TYPE : USER

　　RESOURCE : IDX : "user1"."FMB11IDX"

　　　　　　　　　　("user1"."FMB11")

SERVER NAME : BES2

　RDAREA NAME : "RD03"

　　AREA TYPE : USER

　　RESOURCE : TBL : "user1"."FMB11"

　　　　　　　　　　　"user1"."FMB12"

　　　　　　　　　　　"user1"."FMB13"

　RDAREA NAME : "RD06"

　　AREA TYPE : USER

　　RESOURCE : IDX : "user1"."FMB11IDX"

　　　　　　　　　　("user1"."FMB11")

9

−

−

RDAREA NAME : "RD01"

RDAREA NAME : "RD02"

RDAREA NAME : "RD04"

RDAREA NAME : "RD05"

RDAREA NAME : "RD03"

RDAREA NAME : "RD06"

10

○

○

BES1 "RD01" USER TBL "user1"."FMB11"

BES1 "RD01" USER TBL "user1"."FMB12"

BES1 "RD01" USER TBL "user1"."FMB13"

BES1 "RD02" USER TBL "user1"."FMB11"

BES1 "RD02" USER TBL "user1"."FMB12"

BES1 "RD02" USER TBL "user1"."FMB13"

BES1 "RD04" USER IDX "user1"."FMB11IDX" "user1"."FMB11"

BES1 "RD05" USER IDX "user1"."FMB11IDX" "user1"."FMB11"

BES2 "RD03" USER TBL "user1"."FMB11"

BES2 "RD03" USER TBL "user1"."FMB12"

BES2 "RD03" USER TBL "user1"."FMB13"

BES2 "RD06" USER IDX "user1"."FMB11IDX" "user1"."FMB11"

11

○

−

"RD01" "RD02" "RD04" "RD05" "RD03" "RD06"

（凡例）

○：指定あり

−：指定なし

(5)　注意事項

HiRDBの再起動を必要としないSDBデータベースの定義変更でレコード型を追加し，その二次インデクスを格納するために追加したRDエリアや，分割格納条件の変更機能で追加したRDエリアは，ディクショナリ表中のSDBディクショナリ情報が更新されると，関連RDエリアとして表示されます（「5.7.5(2)　SDBディクショナリ情報を変更する」の操作が終わると，関連RDエリアとして表示されます）。ただし，この時点では，追加したRDエリアは関連RDエリアとして表示されますが，更新可能なオンライン再編成の対象にはできません。HiRDBの再起動を必要としないSDBデータベースの定義変更の操作が完了するまで，更新可能なオンライン再編成の対象にはできません。

10.10　運用コマンド（更新可能なオンライン再編成で使用するコマンド）【4V FMB】

ここでは，更新可能なオンライン再編成で使用する運用コマンドについて説明します。

10.10.1　pdsdborcrt（追い付き反映キー対応表の操作）

(1)　機能

pdsdborcrtコマンドには次の機能があります。

追い付き反映キー対応表の作成

追い付き反映キー対応表を作成します。また，追い付き反映キー対応表のインデクスを作成します。

追い付き反映キー対応表の削除

追い付き反映キー対応表を削除します。また，追い付き反映キー対応表のインデクスも削除します。

追い付き反映キー対応表の初期化

追い付き反映キー対応表の全行を削除します。

pdsdborcrtコマンドの使い方については，「5.13.3　更新可能なオンライン再編成の準備作業」，および「5.23　障害が発生したときの対処方法（更新可能なオンライン再編成の実行時）【4V FMB】」を参照してください。

(2)　実行者

HiRDB管理者が実行できます。

(3)　形式

■追い付き反映キー対応表を作成する場合

　pdsdborcrt -k crt -r RDエリア名〔-i RDエリア名〕

■追い付き反映キー対応表を削除する場合

　pdsdborcrt -k del -s サーバ名

■追い付き反映キー対応表を初期化する場合

　pdsdborcrt -k init -s サーバ名

(4)　オプション

-k

追い付き反映キー対応表に対して実行する操作を指定します。

crt：追い付き反映キー対応表を作成します。

del：追い付き反映キー対応表を削除します。

init：追い付き反映キー対応表を初期化します（追い付き反映キー対応表の全行を削除します）。

-r RDエリア名

〜＜識別子＞((1〜30バイト))

追い付き反映キー対応表を格納するRDエリアの名称を指定します。追い付き反映キー対応表を格納するRDエリアは，BESごとに作成する必要があります。

なお，レプリカRDエリアが定義されているRDエリアは指定できません。

-i RDエリア名

〜＜識別子＞((1〜30バイト))

追い付き反映キー対応表のインデクスを格納するRDエリアの名称を指定します。追い付き反映キー対応表のインデクスを格納するRDエリアは，BESごとに作成する必要があります。

-iオプションの指定を省略した場合，-rオプションに指定したRDエリアにインデクスも格納されます。

なお，レプリカRDエリアが定義されているRDエリアは指定できません。

-s サーバ名

〜＜識別子＞((1〜8バイト))

削除または初期化する追い付き反映キー対応表があるBESの名称を指定します。ここで指定したBESにある追い付き反映キー対応表が削除または初期化されます。

(5)　規則

pdsdborcrtコマンドは，HiRDBが稼働中のときに実行できます。

pdsdborcrtコマンドは，システムマネジャがあるサーバマシンで実行してください。

-rおよび-iオプションには，リレーショナルDBを格納する指定をしたRDエリアを指定してください。pdinitまたはpdmodコマンドでRDエリアを作成する際，create rdarea文のdata modelオペランドにrelationalを指定したRDエリアを指定します。

-rおよび-iオプションには，更新可能なオンライン再編成の対象RDエリアがあるBESのRDエリアを指定してください。ただし，更新可能なオンライン再編成の対象RDエリアを指定することはできません。

追い付き反映キー対応表，およびそのインデクスは，1つのBESに1つだけ作成できます。そのため，追い付き反映キー対応表がすでに存在するBESのRDエリアを，-rおよび-iオプションに指定した場合，pdsdborcrtコマンドがエラーになります。

RDエリア名に英小文字または空白が含まれている場合は，RDエリア名を引用符（"）で囲んでください。囲まないと，英小文字は英大文字と見なされます。

（例）-r "RDarea01"

また，sh（Bourneシェル），csh（Cシェル），またはksh（Kシェル）の場合は，さらにアポストロフィ（’）で囲む必要があります。

（例）-r '"RDarea01"'

(6)　注意事項

pdsdborcrtコマンドはバックグラウンドで実行できません。

pdsdborcrtコマンドを複数同時に実行できません。

pdsdborcrtコマンドと，ほかのコマンドおよびユティリティを同時に実行できません。

SDBデータベースがサーバ間横分割されている場合，BESごとにpdsdborcrtコマンドを実行し，各BESに追い付き反映キー対応表を作成してください。

追い付き反映キー対応表を初期化または削除する場合は，追い付き反映処理がすべて終了したあとに実行してください。追い付き反映処理が中断状態のRDエリアがある場合は，追い付き反映処理を再開始し，すべての追い付き反映処理が終了したあとに実行してください。追い付き反映処理が終了したかどうかは，更新可能なオンライン再編成の対象RDエリアの状態をpddblsコマンドで確認するとわかります。オンライン再編成閉塞のRDエリアが1つもない場合は，追い付き反映処理が終了しています。

更新可能なオンライン再編成の実行中に，追い付き反映キー対応表を初期化または削除する必要が生じた場合は，pdsdborcrtコマンドの実行後に警告メッセージと確認メッセージが出力されます。次の流れで応答してください。

警告メッセージ（KFPT82005-W）が出力されます。KFPT82005-Wメッセージに出力されたBES名を確認してください。

1.で確認したBES内に，オンライン再編成閉塞のRDエリアがあるかどうかをpddblsコマンドで確認してください。

確認メッセージ（KFPT82006-Q）が出力されます。追い付き反映キー対応表を初期化または削除する場合はyを，初期化または削除をやめる場合はnを応答してください。

注意事項

次のどちらかの条件を満たす場合は，yを応答してください。

BES内にオンライン再編成閉塞のRDエリアがない場合

pdsdblodコマンドによるデータロードで障害が発生し，追い付き反映キー対応表の初期化または削除が必要な場合

上記の条件を満たさない場合は，必ずnを応答してください。上記の条件を満たさない場合にyを応答すると，SDBデータベースの内容が不整合な状態になるおそれがあります。

(7)　リターンコード

pdsdborcrtコマンドのリターンコードを次に示します。

0：pdsdborcrtコマンドが正常終了しました。

4：pdsdborcrtコマンドが正常終了しました。ただし，警告メッセージが出力されています。

8：pdsdborcrtコマンドが異常終了しました。

10.10.2　pdorbegin（オンライン再編成のデータベース静止化）

(1)　機能

指定したオリジナルRDエリアと，レプリカグループ内の指定した世代のレプリカRDエリアをオンライン再編成閉塞にします。

レコード型名を指定した場合，そのレコード型の関連RDエリアを処理対象とし，各オリジナルRDエリアと，レプリカグループ内の指定した世代のレプリカRDエリアをオンライン再編成閉塞にします。関連RDエリアについては，pdrdreflsコマンドで確認できます。

pdorbeginコマンドを実行してからpdorchgコマンドを実行するまでの間は，指定したオリジナルRDエリアがあるレプリカグループ内のRDエリアにアクセスするトランザクションは排他待ち状態になります。

オンライン再編成閉塞を解除する場合は-uオプションを指定します。

pdorbeginコマンドの使い方については，「5.13.4　更新可能なオンライン再編成の運用手順」を参照してください。

(2)　実行者

HiRDB管理者が実行できます。

(3)　形式

 pdorbegin ｛-r オリジナルRDエリア名〔，オリジナルRDエリア名〕…
           ｜-t 〔認可識別子.〕レコード型名 〔-s サーバ名〔，サーバ名〕…〕｝
           〔-q 世代番号〕〔-w 排他待ち時間〕〔-u〕〔-W 実行監視時間〕
           〔-I ｛put｜noput｝〕

(4)　オプション

-t以外のオプションについては，マニュアル「HiRDB Version 9 コマンドリファレンス」の「pdorbegin（オンライン再編成のデータベース静止化）」を参照してください。

形式にあるオプション以外のオプションを指定した場合，コマンドがエラーになるか，またはオプションの指定が無視されます。

-t 〔認可識別子.〕レコード型名

〜＜識別子＞((認可識別子：1〜8バイト，レコード型名：1〜30バイト))

更新可能なオンライン再編成を実行するレコード型の名称を指定します。ここで指定したレコード型の関連RDエリアのオリジナルRDエリアと，レプリカグループ内の指定した世代のレプリカRDエリアをオンライン再編成閉塞にします。

指定時の注意事項を次に示します。

認可識別子およびレコード型名を引用符（"）で囲んだ場合は，英字の大文字と小文字が区別されますが，引用符（"）で囲まない場合はすべて大文字として扱われます。なお，sh（Bourneシェル），csh（Cシェル），およびksh（Kシェル）の場合は，さらにアポストロフィ（’）で囲む必要があります。

認可識別子を省略した場合，pdorbeginコマンド実行時の環境変数PDUSERの認可識別子が仮定されます。環境変数PDUSERを設定していない場合，ログインウィンドウのユーザ名が仮定されます。

-tオプションを指定する場合，そのレコード型と，そのレコード型に関連するすべてのRDエリアの総数が，4,096個以下である必要があります。

このコマンドの規則および留意事項については，マニュアル「HiRDB Version 9 コマンドリファレンス」の「pdorbegin（オンライン再編成のデータベース静止化）」を参照してください。

(5)　注意事項

pdorbeginコマンドを実行する前に，更新可能なオンライン再編成が実行できる状態かどうかを，次のコマンドで確認する必要があります。

pdorcheck

pdsdbarc -a

確認方法については，「5.13.3　更新可能なオンライン再編成の準備作業」を参照してください。

10.10.3　pdorcheck（オンライン再編成の適用条件チェック）

(1)　機能

更新可能なオンライン再編成が実行できる状態かどうかを確認します。

pdorcheckコマンドの使い方については，「5.13.3　更新可能なオンライン再編成の準備作業」を参照してください。

(2)　実行者

HiRDB管理者が実行できます。

(3)　形式

　pdorcheck ｛-rオリジナルRDエリア名〔，オリジナルRDエリア名〕…｜-r ALL｝

(4)　オプション

-r オリジナルRDエリア名〔，オリジナルRDエリア名〕…

〜＜識別子＞((1〜30バイト))

適用条件のチェックを実施する（更新可能なオンライン再編成の対象とする）オリジナルRDエリアの名称を指定します。

注意事項

更新可能なオンライン再編成の対象となるオリジナルRDエリアを漏れなく指定してください。RDエリアの指定が漏れた場合，適用条件のチェックが正しく実行されません。

-r ALL

すべてのオリジナルRDエリアに対して適用条件のチェックをする場合に指定します。

このコマンドの規則および留意事項については，マニュアル「HiRDB Version 9 コマンドリファレンス」の「pdorcheck（オンライン再編成の適用条件チェック）」を参照してください。

(5)　チェックの内容

pdorcheckコマンドを実行すると，次の表に示す項目がチェックされます。条件を満たしていない項目については，メッセージが出力されます。次の表に示す項目を1つでも満たさない場合，更新可能なオンライン再編成は実行できません。

表10‒12　pdorcheckコマンドで実施するチェック内容

項番

チェック項目

チェック内容

チェック内容を満たさない場合の対処

1

SDBデータベース種別

指定したRDエリアに格納されているSDBデータベースが，4V FMBのSDBデータベースであることをチェックします。4V FMBのSDBデータベース以外のSDBデータベースが，RDエリアに格納されている場合，更新可能なオンライン再編成は実行できません。

また，インデクスを格納しているRDエリアを指定した場合，更新可能なオンライン再編成の対象外のインデクスが，そのRDエリアに格納されていると，更新可能なオンライン再編成は実行できません。

更新可能なオンライン再編成以外の方法で，SDBデータベースを再編成してください。

2

RDエリアの種別

指定したRDエリアが，SDBデータベースを格納するRDエリアであるかをチェックします。リレーショナルDBを格納するRDエリアが含まれている場合，更新可能なオンライン再編成は実行できません。

更新可能なオンライン再編成の対象RDエリアから，リレーショナルDBを格納するRDエリアを除いてください。

3

追い付き反映キー対応表

指定したRDエリアがあるサーバに，追い付き反映キー対応表があることをチェックします。同じサーバにない場合，更新可能なオンライン再編成は実行できません。

更新可能なオンライン再編成の対象RDエリアがあるサーバに，追い付き反映キー対応表を作成してください。

pddbstコマンドの表単位の状態解析で，次のことを確認できます。

追い付き反映キー対応表を格納しているRDエリアの構成

追い付き反映キー対応表が作成されているかどうか

確認方法の詳細については，「5.13.6　追い付き反映キー対応表を格納しているRDエリアを確認したい場合」を参照してください。

4

追い付き反映キー対応表が，作成直後であるか，または初期化済みであるかをチェックします。これ以外の場合は，更新可能なオンライン再編成は実行できません。

pdsdborcrtコマンドを実行して，追い付き反映キー対応表を作成するか，または追い付き反映キー対応表を初期化してください。

なお，前回の更新可能なオンライン再編成で使用した追い付き反映キー対応表を再利用する場合は，追い付き反映キー対応表を初期化する必要があります。

5

SDBディレクトリ情報

指定したRDエリアのSDBデータベース情報が，SDBディレクトリ情報中にあることをチェックします。指定したRDエリアのSDBデータベース情報が，SDBディレクトリ情報中にない場合，更新可能なオンライン再編成は実行できません。

pdorcheckコマンドに指定したRDエリア名が正しいか確認してください。

また，HiRDBの再起動を必要としないSDBデータベースの定義変更中に追加したRDエリアを，SDBデータベースの定義変更が完了する前に指定していないか確認してください。詳細については，「5.13.2(6)　HiRDBの再起動を必要としないSDBデータベースの定義追加，定義変更との関連」を参照してください。

10.10.4　pdorend（オンライン再編成の追い付き反映）

(1)　機能

更新可能なオンライン再編成の追い付き反映処理を実行します。レプリカRDエリアの更新内容をオリジナルRDエリアに反映します。

pdorendコマンドの使い方については，「5.13.4　更新可能なオンライン再編成の運用手順」を参照してください。

(2)　実行者

HiRDB管理者が実行できます。

(3)　形式

　pdorend 〔-s サーバ名〔，サーバ名〕…〕
　　　　｛〔-n 最大リトライ回数〕
　　　　　〔-w 追い付き反映処理の最大待ち時間〕
　　　　　〔-t トランザクション処理の最大待ち時間〕
　　　　　〔-m pdorend反映プロセスの多重度〕
　　　　　〔-z〕
　　　　　〔-f 追い付き反映制御ファイル名〕
　　　　　〔-I ｛put｜noput｝〕
　　　　｜〔-u〕｝

(4)　オプション

ここでは，-mおよび-fオプションについてだけ説明します。そのほかのオプションについては，マニュアル「HiRDB Version 9 コマンドリファレンス」の「pdorend（オンライン再編成の追い付き反映）」を参照してください。

形式にあるオプション以外のオプションを指定した場合，コマンドがエラーになるか，またはオプションの指定が無視されます。

-m pdorend反映プロセスの多重度

〜＜符号なし整数＞((1〜8))《2》

レプリカRDエリアに対する更新処理をオリジナルRDエリアに反映する際の，pdorend反映プロセスのBESごとの多重度を指定します。

＜指定値の目安＞

-mオプションの指定値の目安を次に示します。

 MIN｛8 ，MAX（↑SDBDefCnt÷8↑，↑SDBKeyCnt÷SDBDefCnt↑） ｝

SDBDefCnt：更新可能なオンライン再編成の対象BESに存在するSDBデータベースの数

SDBKeyCnt：更新可能なオンライン再編成の実行時（pdorchgコマンド実行時〜pdorendコマンド完了時の間）に，1つのSDBデータベースに対して更新するレコードのDBKEY値の数（異なるDBKEY値の数）

＜留意事項＞

pdorendコマンドを実行すると，次の計算式の数のpdorend反映プロセスが起動されます。

 pdorend反映プロセス起動数＝M×S　（単位：プロセス数）

M：-mオプションの指定値

S：-sオプションの指定数（-sオプションを省略した場合，オンライン再編成閉塞のRDエリアがある全BES数）

なお，HiRDB/SD全体で保証されるpdorend反映プロセス数は，あらかじめシステム定義のpd_max_reflect_process_countオペランドで指定しておく必要があります。

-f 追い付き反映制御ファイル名

〜＜パス名＞((255文字以内))

追い付き反映処理の制御文を記述したファイル（追い付き反映制御ファイル）を，絶対パス名で指定します。-fオプションを省略した場合，追い付き反映制御ファイルに記述できる制御文の省略時仮定値が仮定されます。なお，追い付き反映制御ファイル中にコメントは記述できません。

追い付き反映制御ファイルに記述できる制御文を次に示します。

制御文

内容

指定できる数

reflection文

追い付き反映処理の動作内容を指定します。指定形式については，「(5)　reflection文の指定形式」を参照してください。

1

report文

追い付き反映処理の実行結果を出力するファイルを指定します。指定形式については，「(6)　report文の指定形式」を参照してください。

1

追い付き反映制御ファイルの指定例を次に示します。

 reflection dml_error=skip
 report dml_skip_info=/home/user01/dmlskip_outputfile01

＜指定規則＞

reflection文とreport文は両方とも必ず指定してください。

各文は1行で記述してください。

指定値を記述する際，＝の前後に空白を入れないでください。

同じオペランドを複数指定しないでください。

(5)　reflection文の指定形式

　reflection 〔dml_error=｛stop｜skip｝〕

dml_error=｛stop｜skip｝

追い付き反映処理で，HiRDB/SDが内部的に発行する，SDBデータベースを操作するAPIの実行時にエラーが発生した場合の，HiRDB/SDの処理を指定します。

stop：

追い付き反映処理中に，HiRDB/SDが内部的に発行するAPIの実行時にエラーが発生した場合，追い付き反映処理をエラー終了します。このとき，追い付き反映処理に対してロールバックが実行され，SDBデータベースは前回のコミット時点の状態になります。追い付き反映処理では，一定のAPI処理件数ごとにコミットが実行されています。

skip：

追い付き反映処理中に，HiRDB/SDが内部的に発行するAPIで特定のエラーが発生した場合，そのAPIを無視して追い付き反映処理を続行します。 スキップ対象のAPIの情報は，report文のdml_skip_infoオペランドで指定したファイルに出力されます。

注意事項

skipを指定した場合に，HiRDB/SDが内部的に発行するAPIでエラーが発生すると，更新可能なオンライン再編成が完了したあとのオリジナルRDエリアとレプリカRDエリアの整合性が保証できなくなります。そのため，skipを指定する場合は十分に運用を検討してから指定するようにしてください。

skipを指定する場合のケースについては，「5.13.10　追い付き反映処理時にHiRDB/SDが内部的に発行するAPIのエラーをスキップしたい場合」を参照してください。

スキップ対象となったAPIを特定するために，スキップ情報中にカレントRDエリア（レプリカRDエリア）のデータベースキー情報が出力されます。データベースキー情報からスキップしたレコードを特定し，SDBデータベースへの反映が必要な場合は，SDBデータベースを操作するAPIなどを実行してSDBデータベースに反映してください。

skipを指定した場合に，HiRDB/SDが内部的に発行するAPIでエラーが発生したときのHiRDB/SDの処理を次の表に示します。

表10‒13　HiRDB/SDが内部的に発行するAPIでエラーが発生したときのHiRDB/SDの処理

APIのエラーが発生したレコード

API種別

SQLCODE

HiRDB/SDの処理

ルートレコード

FETCH

100

対象レコードがないため，HiRDB/SDが内部的に発行するAPIがエラーになりますが，このAPIを無視して追い付き反映処理を続行します。

上記以外

追い付き反映処理をエラー終了します。

上記以外

注意事項

reflection文には，dml_errorオペランドだけが指定できます。マニュアル「HiRDB Version 9 コマンドリファレンス」の「pdorend（オンライン再編成の追い付き反映）」のreflection文で説明しているオペランドは指定できません。

(6)　report文の指定形式

　report 〔dml_skip_info=DMLスキップ情報出力ファイル名〕

dml_skip_info=DMLスキップ情報出力ファイル名

〜＜パス名＞((235文字以内))

スキップ対象となったAPI（追い付き反映処理中にHiRDB/SDが内部的に発行するAPI）の情報を出力するファイルを絶対パス名で指定します。このオペランドは，reflection文のdml_errorオペランドにskipを指定した場合に指定してください。

なお，実際に出力されるファイルの名称は，次のようになります。

（例）dml_skip_info=/home/user01/dmlskip_outputfile01と指定した場合

ファイル名：dmlskip_outputfile01_bes1_25182

bes1：スキップ対象となったAPIを実行しようとしたBES名

25182：スキップ対象となったAPIを実行しようとしたプロセスのプロセスID

＜規則＞

DMLスキップ情報出力ファイルを出力するディレクトリは，すべてのサーバマシンで同じにしてください。出力するディレクトリがない場合は，pdorendコマンドがエラーになります。

DMLスキップ情報の出力時にエラーが発生した場合，処理を中断してロールバックします（pdorendコマンドがエラーになります）。

同じ名称のDMLスキップ情報出力ファイルが存在する場合，存在するファイルにスキップ対象となったAPIの情報を追加出力します。

このオペランドを省略した場合，DMLスキップ情報出力ファイルの出力先は，次の優先順位で決定されます（1の優先順位がいちばん高くなります）。

1．ユニット制御情報定義のpd_tmp_directoryオペランドに指定したディレクトリ

2．環境変数TMPDIR※に指定したディレクトリ

3．/tmpディレクトリ

ファイル名は，pdskipdml_BES名_プロセスIDとなります。

注※

initプロセス（OSのプロセス）から起動されたHiRDB（pdprcd）に設定されるTMPDIR環境変数のことです。

注意事項

report文には，dml_skip_infoオペランドだけが指定できます。マニュアル「HiRDB Version 9 コマンドリファレンス」の「pdorend（オンライン再編成の追い付き反映）」のreport文で説明しているオペランドは指定できません。

(7)　DMLスキップ情報出力ファイルの出力形式

DMLスキップ情報出力ファイルの出力形式の例を次に示します。

 2013/12/27 09:51:26  SVR(bes1) PID(5704)     ...1
 **** SKIP DML INFORMATION ****               ...2
   SCHEMA NAME : "FMB1"                       ...3
   RECORD NAME : "RECB"                       ...4
   REFLECTION KIND : STORE                    ...5
   **** ERROR DML INFORMATION ****            ...6
   RECORD NAME : "RECA"                       ...7
   DML KIND : FETCH                           ...8
   SQLCODE : 100                              ...9
   SQLWARN :                                  ...10
   **** CURRENT DBKEY INFORMATION ****        ...11
         Address  Loc  +0+1+2+3 +4+5+6+7 +8+9+a+b +c+d+e+f 0123456789abcdef     ...12
         59bc3170 0000 30345f30 30303032 03000000          04_00002....

［説明］

API（追い付き反映処理中にHiRDB/SDが内部的に発行するAPI）のスキップが発生した数の分だけ，次の情報が表示されます。

APIのスキップが発生した日時，BES名，プロセスIDが表示されます。

スキップ対象となったAPIの情報を示すヘッダが表示されます。

SDBデータベース名が表示されます。

追い付き反映対象のレコード型名が表示されます。

追い付き反映処理時にHiRDB/SDが内部的に発行したAPIの種別が表示されます。

STORE：レコードの格納（STORE）の追い付き反映

MODIFY：レコードの更新（MODIFY）の追い付き反映

ERASE：レコードの削除（ERASE）の追い付き反映

ROLLBACK STORE：レコードの格納（STORE）のロールバックに対する追い付き反映

ROLLBACK MODIFY：レコードの更新（MODIFY）のロールバックに対する追い付き反映

ROLLBACK ERASE(REC)：レコードの削除（ERASE）のロールバックに対する追い付き反映（レコードの回復）

ROLLBACK ERASE(USER)：レコードの削除（ERASE）のロールバックに対する追い付き反映（USERポインタの回復）

APIのエラー情報を示すヘッダが表示されます。

APIのエラーが発生したレコード型名が表示されます。

追い付き反映対象とするレコードの位置づけ用のAPIなどでエラーが発生した場合は，追い付き反映対象のレコードより上位階層のレコード型名が出力されます。

エラーが発生したAPIの種別が表示されます。

FETCH：レコードの検索（追い付き反映を行うレコードに対する位置づけ用のAPIを意味します）

MODIFY：レコードの更新

STORE：レコードの格納

ERASE：レコードの削除

APIのエラーのSQLCODEが表示されます。

警告情報が表示されます。

警告情報を次の形式で出力します。

"SQLWARNn"

n：0〜F

警告情報が複数ある場合は，警告情報を空白で区切って出力します。

警告情報がない場合は，"SQLWARN : "が出力されます。

カレントRDエリア（レプリカRDエリア）側のデータベースキーの情報を示すヘッダが表示されます。

追い付き反映対象のレコードに対するデータベースキーの内容が出力されます。ダンプ形式（16進数表示＋文字列表示）で出力されます。

(8)　注意事項

pdorendコマンドの結果は，pdls -d orgコマンド，またはリターンコードで確認できます。リターンコードを次に示します。

0：正常終了

4：警告終了※1

8：異常終了

12：異常終了（コマンドがエラーメッセージを表示できない事象が発生）※2

注※1

次のどちらかの場合にリターンコードが4になります。

・一部のBESだけで処理が成功した場合

・スキップ対象となったAPI（追い付き反映処理中にHiRDB/SDが内部的に発行するAPI）がある場合

注※2

ディクショナリサーバがあるサーバマシンのsyslogfileに出力されたエラーメッセージを参照し，エラーの要因を取り除いたあとに，pdorendコマンドを再実行してください。syslogfileにエラーメッセージが出力されていない場合は，保守員に連絡してください。

このコマンドの規則およびそのほかの注意事項については，マニュアル「HiRDB Version 9 コマンドリファレンス」の「pdorend（オンライン再編成の追い付き反映）」を参照してください。

11　HiRDB/SD定義ユティリティ（pdsdbdef）

この章では，SDBデータベース定義をするHiRDB/SD定義ユティリティの機能と使い方について説明します。

なお，この章では，HiRDB/SD定義ユティリティをpdsdbdefコマンドと表記しています。

11.1　機能

pdsdbdefコマンドを使用してSDBデータベースを定義します。pdsdbdefコマンドの概要を次の図に示します。

図11‒1　pdsdbdefコマンドの概要

注※

SDBディレクトリ情報のファイル出力後，作成したSDBディレクトリ情報ファイルを全ユニットに配布できます。

pdsdbdefコマンドの制御情報（SDB制御文）をSDB制御文ファイルに記述します。また，pdsdbdefコマンドで操作するSDBデータベースの定義情報（SDB定義文）をSDB定義文ファイルに記述します。

pdsdbdefコマンドで操作するSDBデータベースの定義情報には，SDBディクショナリ情報とSDBディレクトリ情報があります。

SDBディクショナリ情報とSDBディレクトリ情報の内容を次の表に示します。

表11‒1　SDBディクショナリ情報とSDBディレクトリ情報の内容

定義情報

内容

SDBディクショナリ情報

ユーザが定義したSDBデータベースの定義情報を，ユーザが記述した形式に近い状態で保持したものです。

SDBディレクトリ情報

SDBデータベースのSDBディクショナリ情報を，HiRDB/SDが解釈しやすい形式に変換したものです。

pdsdbdefコマンドの機能を次の表に示します。

表11‒2　pdsdbdefコマンドの機能

種別

機能

内容

ディクショナリ操作機能

SDBディクショナリ情報の追加

*ENTRY DICTIONARY文に指定したSDBデータベース定義およびSDBデータベース格納定義からSDBディクショナリ情報を作成し，ディクショナリ表に追加します。

SDBディクショナリ情報の変更

*ALTER DICTIONARY文に指定したSDBデータベース定義およびSDBデータベース格納定義からSDBディクショナリ情報を作成し，ディクショナリ表に登録されているSDBディクショナリ情報を変更します。

SDBディクショナリ情報の削除

*DELETE DICTIONARY文に指定したSDBデータベースのSDBディクショナリ情報をディクショナリ表から削除します。

データベース定義のチェック

*CHECK DICTIONARY文に指定したSDBデータベースのSDBデータベース定義およびSDBデータベース格納定義の整合性をチェックします。

ディレクトリ操作機能

SDBディレクトリ情報の追加

*ENTRY DIRECTORY文に指定したSDBデータベースのSDBディレクトリ情報を作成し，ディクショナリ表に追加します。

SDBディレクトリ情報の変更

*ALTER DIRECTORY文に指定したSDBデータベースのSDBディレクトリ情報を作成し，ディクショナリ表に登録されているSDBディレクトリ情報を変更します。

SDBディレクトリ情報の削除

*DELETE DIRECTORY文に指定したSDBデータベースのSDBディレクトリ情報をディクショナリ表から削除します。

SDBディレクトリ情報のファイル出力および配布

ディクショナリ表に登録されているSDBディレクトリ情報をSDBディレクトリ情報ファイルに出力し，全ユニットに配布します。

11.1.1　ディクショナリ操作機能

(1)　SDBディクショナリ情報の追加

*ENTRY DICTIONARY文に指定したSDBデータベース定義およびSDBデータベース格納定義からSDBディクショナリ情報を作成し，ディクショナリ表に追加します。

図11‒2　SDBディクショナリ情報の追加

SDBデータベース定義，SDBデータベース格納定義は，SDB定義文ファイルに記述します。SDBデータベース定義およびSDBデータベース格納定義については，次の個所を参照してください。

4V FMBのSDBデータベースを定義する場合

「11.5　SDBデータベース定義，SDBデータベース格納定義【4V FMB】」

4V AFMのSDBデータベースを定義する場合

「11.6　SDBデータベース定義，SDBデータベース格納定義【4V AFM】」

SD FMBのSDBデータベースを定義する場合

「11.7　SDBデータベース定義，SDBデータベース格納定義【SD FMB】」

(2)　SDBディクショナリ情報の変更【4V FMB，4V AFM】

*ALTER DICTIONARY文に指定したSDBデータベース定義およびSDBデータベース格納定義からSDBディクショナリ情報を作成し，ディクショナリ表に登録されているSDBディクショナリ情報を変更します。

図11‒3　SDBディクショナリ情報の変更

SDBデータベース定義，SDBデータベース格納定義は，SDB定義文ファイルに記述します。SDBデータベース定義およびSDBデータベース格納定義については，次の個所を参照してください。

4V FMBのSDBデータベースの定義を変更する場合

「11.5　SDBデータベース定義，SDBデータベース格納定義【4V FMB】」

4V AFMのSDBデータベースの定義を変更する場合

「11.6　SDBデータベース定義，SDBデータベース格納定義【4V AFM】」

(3)　SDBディクショナリ情報の削除

*DELETE DICTIONARY文に指定したSDBデータベースのSDBディクショナリ情報（SDBデータベース定義およびSDBデータベース格納定義）をディクショナリ表から削除します。また，SDBディレクトリ情報をディクショナリ表から削除します。

図11‒4　SDBディクショナリ情報の削除

同時に，次に示すRDエリアに登録されているSDBデータベースのレコード型およびインデクスの定義情報を削除します。

マスタディレクトリ用RDエリア

データディレクトリ用RDエリア

ユーザ用RDエリア

(4)　データベース定義のチェック

*CHECK DICTIONARY文に指定したSDBデータベースのSDBデータベース定義およびSDBデータベース格納定義の整合性をチェックします。

SDBデータベース格納定義は，RDエリアの定義，およびSDBデータベース定義と関連しています。そのため，SDBデータベース定義，SDBデータベース格納定義，およびRDエリアの定義の間で指定内容に矛盾がないかどうかをチェックします。

図11‒5　データベース定義のチェック

チェックの結果，指定内容に矛盾がない場合は，次に示すRDエリアにSDBデータベースのレコード型およびインデクスの定義情報を登録します。

マスタディレクトリ用RDエリア

データディレクトリ用RDエリア

ユーザ用RDエリア

11.1.2　ディレクトリ操作機能

(1)　SDBディレクトリ情報の追加

*ENTRY DIRECTORY文に指定したSDBデータベースのSDBディレクトリ情報をSDBディクショナリ情報から作成し，ディクショナリ表に追加します。

図11‒6　SDBディレクトリ情報の追加

(2)　SDBディレクトリ情報の変更【4V FMB，4V AFM】

*ALTER DIRECTORY文に指定したSDBデータベースのSDBディレクトリ情報をSDBディクショナリ情報から作成し，ディクショナリ表に登録されているSDBディレクトリ情報を変更します。

図11‒7　SDBディレクトリ情報の変更

(3)　SDBディレクトリ情報の削除

*DELETE DIRECTORY文に指定したSDBデータベースのSDBディレクトリ情報をディクショナリ表から削除します。

図11‒8　SDBディレクトリ情報の削除

(4)　SDBディレクトリ情報のファイル出力および配布

ディクショナリ表に登録されているSDBディレクトリ情報をSDBディレクトリ情報ファイルに出力します。SDBディレクトリ情報ファイルの出力先は，SDB制御文のdirinf文で指定します。SDBディレクトリ情報ファイルのファイル名は，pdsdbdir固定となります。

また，SDBディレクトリ情報ファイルの作成と同時に，SDBディレクトリ情報ファイルを全ユニットに配布します。配布先は，ユニット制御情報定義のpd_structured_directory_pathオペランドに指定したディレクトリ下になります。

高速系切り替え機能を使用している場合は，待機系ユニットも配布対象になります。

注意事項

ディザスタリカバリシステムのリモートサイトは配布対象外です。

11.2　コマンドの形式

pdsdbdefコマンドの形式について説明します。

　pdsdbdef△〔-i〕△SDB制御文ファイル名

注

△は，空白またはタブを区切り文字として，1つ以上指定できることを示します。

-i：

次に示すSDB定義文を指定する場合は，-iオプションを指定してください。-iオプションを指定しないと，pdsdbdefコマンドの実行がエラーになります。

*DELETE DICTIONARY文（SDBディクショナリ情報の削除）

*DELETE DIRECTORY文（SDBディレクトリ情報の削除）

*ALTER DICTIONARY文（格納RDエリアを変更するSDBディクショナリ情報の変更）

*ALTER DIRECTORY文（格納RDエリアを変更するSDBディレクトリ情報の変更）

注意事項

-iオプションを指定してpdsdbdefコマンドを実行した場合，HiRDBの再起動が必要になります。

SDBディクショナリ情報の変更およびSDBディレクトリ情報の変更で，-iオプションの指定が必要となるのは，格納RDエリアの分割，削除，または統合を行う場合です。格納RDエリアの追加や，最下位のレコード型とその親子集合の追加をする場合は，-iオプションを指定する必要はありません（HiRDBの再起動の必要はありません）。

なお，-iオプションは，SDB制御文ファイル名の後ろに指定することもできます。

SDB制御文ファイル名：

〜＜パス名＞

pdsdbdefコマンドの制御情報を記述したファイル（SDB制御文ファイル）の名称を絶対パスまたは相対パスで指定します。

SDB制御文ファイルに記述できる制御文（SDB制御文）については，「11.3　SDB制御文」を参照してください。

11.3　SDB制御文

SDB制御文には，pdsdbdefコマンドの制御情報を指定します。

SDB制御文ファイルに記述できる制御文（SDB制御文）を次の表に示します。

表11‒3　SDB制御文ファイルに記述できる制御文

SDB制御文

内容

指定できる制御文の最大数

source文※1

SDB定義文ファイルの情報を指定します。

1

environment文※1，※2

pdsdbdefコマンドの動作環境に関する指定をします。

1

dirinf文※3

SDBディレクトリ情報ファイルを作成し，ユニットに配布する場合に指定します。

1

注※1

SDBディレクトリ情報ファイルの作成だけを実行する場合は，source文およびenvironment文は省略してください。

注※2

source文の指定がある場合に有効となります。

注※3

source文と同時に指定した場合，すべてのディクショナリ操作の処理が正常終了した場合に有効となります。

11.3.1　SDB制御文の記述規則

SDB制御文の記述規則を次に示します。

パス名は引用符（"）で囲まないでください。

パス名にスペースおよびタブを含むファイルおよびディレクトリは指定できません。

改行には，NL（X'0a'）またはCR＋NL（X'0d'＋X'0a'）を使用してください。

1行の長さは1,023バイト以内（改行は含まない）で記述してください。

SDB制御文の指定順序は任意です。

SDB制御文ファイル中にコメントは記述できません。

11.3.2　pdsdbdefコマンドに指定する定義ファイルの関係

pdsdbdefコマンドでは，コマンドを制御する情報をSDB制御文ファイルに記述し，さらにSDB制御文ファイル中のsource文でSDBデータベースの定義情報を記述したファイル（SDB定義文ファイル）を指定します。

pdsdbdefコマンドに指定する定義ファイルの関係を次の図に示します。

図11‒9　pdsdbdefコマンドに指定する定義ファイルの関係

注

*ENTRY DICTIONARY文と*ENTRY DIRECTORY文を別々に実行する場合は，*ENTRY DICTIONARY文と一緒に*CHECK DICTIONARY文を指定してください。

*ALTER DICTIONARY文と*ALTER DIRECTORY文を別々に実行する場合は，*ALTER DICTIONARY文と一緒に*CHECK DICTIONARY文を指定してください。

11.3.3　source文（SDB定義文ファイルの指定）

source文にはSDB定義文ファイルの情報を指定します。

(1)　適用条件

SDB定義文を指定する場合は，source文を必ず指定します。

SDBディレクトリ情報ファイルの作成または配布だけをする場合（dirinf文だけを指定する場合）は，source文を省略できます。

(2)　形式

　source△SDB定義文ファイル名

△は，空白またはタブを区切り文字として，1つ以上指定できることを示しています。

(3)　説明

●SDB定義文ファイル名

〜＜パス名＞

SDB定義文ファイルの名称を絶対パス名で指定します。

SDB定義文ファイルに，SDB定義文を記述します。SDB定義文については「11.4　SDB定義文」を参照してください。

11.3.4　environment文（コマンド実行時の動作環境の指定）

environment文には，pdsdbdefコマンド実行時に必要な動作環境を指定します。

(1)　適用条件

次のどちらかの場合に，environment文を指定します。

SDB定義文ファイルの実行結果の出力ファイルを指定する場合

システム定義のpd_tmp_directoryオペランド，および環境変数TMPDIRを指定していない場合，作業用一時ファイル格納ディレクトリ（$PDDIR/tmpディレクトリ）の容量不足を発生させないために，environment文のmsglogオペランドをできるだけ指定してください。

SDB定義文ファイルの実行時間を監視する場合※

注※　dirinf文の処理は監視対象ではありません。

(2)　形式

　environment△〔msglog=実行結果ファイル名〕△〔exectime=実行監視時間〕

△は，空白またはタブを区切り文字として，1つ以上指定できることを示しています。

なお，msglog，exectimeと=の間に空白やタブなどの区切り文字を指定することもできます。

(3)　説明

●msglog=実行結果ファイル名

〜＜パス名＞

SDB定義文ファイルの実行結果を出力する，実行結果ファイルの名称を絶対パス名で指定します。実行結果の出力形式については，「11.10　実行結果ファイルの出力形式」を参照してください。

source文に指定したSDB定義文ファイルと同じファイル名は指定できません。

SDBディレクトリ情報ファイルの格納先ディレクトリにあるファイルと同じファイル名を指定すると，SDBディレクトリ情報ファイルが上書きされることがあるので，指定しないでください。

指定したファイル名が存在しない場合，指定したファイル名でファイルが作成されます。ただし，ディレクトリが存在しない場合はエラーとなります。

注意事項

指定したファイル名が存在する場合，そのファイルは上書きされます。pdsdbdefコマンドが正常終了しなかった場合は，原因を調査するため，必ず実行結果ファイルを退避してください。

なお，このオペランドを省略すると，次に示す形式でファイルが作成されます。ただし，絶対パス名が1,024バイト以上となる場合はエラーとなります。

/ディレクトリ名/SDBDEF-xxxxxxxxx

ディレクトリ名：

pdsdbdefコマンド実行時，SDB制御文ファイルでファイル出力先を指定しない場合，次の表に示すディレクトリにファイルを出力します。

表11‒4　pdsdbdefコマンドがファイルを出力するディレクトリ

指定したディレクトリのアクセス可否

msglogの指定

あり

なし

システム定義のpd_tmp_directoryオペランドの指定

あり

なし

環境変数TMPDIRの指定

あり

なし

アクセス可

msglogに指定したファイル

pd_tmp_directoryに指定したディレクトリ

TMPDIRに指定したディレクトリ※2

$PDDIR/tmpディレクトリ

アクセス不可

エラー

$PDDIR/tmpディレクトリ※1

エラー

注※1

KFPS04603-Wが出力されて，$PDDIR/tmpディレクトリが仮定されます。処理は続行されます（ただし，KFPS04643-Iは出力されません）。

注※2

環境変数TMPDIRに指定したディレクトリ＋/SDBDEF-xxxxxxxxxの絶対パス名が1,024バイト以上の場合はエラーとなります。

SDBDEF-：

実行結果ファイルのプリフィクス

xxxxxxxxx：

ファイル作成時間とプロセスIDを文字列に変換した値

8桁の16進数表記の現在日時＋10進数表記のプロセスID（最大10桁）です。

●exectime=実行監視時間

〜＜符号なし整数＞((0〜3,600))≪0≫

pdsdbdefコマンドの実行時間を監視する場合に，その監視時間を分単位で指定します。

0を指定した場合は，実行時間は監視しません。

指定した監視時間内にpdsdbdefコマンドの処理が終了しなかった場合，pdsdbdefコマンドは強制終了します。その際，タイムアウト発生と強制終了のメッセージが出力され，次に示す原因調査用の障害情報が取得されます。

取得される障害情報

取得される障害情報の内容

pdlsコマンド（-d lck指定）の表示結果

pdlsコマンド（-d rpc -a指定）の表示結果

取得される障害情報の格納先

ディレクトリ：$PDDIR/tmp

作成ファイル名：pdsdbdefYYYYMMDDHHMMSSプロセスID.txt

このオペランドの値は，システム定義のpd_cmd_exec_timeオペランドの指定値よりも優先されます。

exectimeオペランドとシステム定義のpd_cmd_exec_timeオペランドとの関係を次の表に示します。

表11‒5　exectimeオペランドとシステム定義のpd_cmd_exec_timeオペランドの関係

exectimeオペランドの指定値

システム定義のpd_cmd_exec_timeオペランドの指定値

省略または0

指定値A

省略

−

指定値Aで監視

0

−

−

指定値B

指定値Bで監視

指定値Bで監視

（凡例）

−：実行時間を監視しません。

pd_cmd_exec_timeオペランドについては，マニュアル「HiRDB Version 9 システム定義」を参照してください。

実行時間監視（exectimeオペランド）の適用基準

監視時間を設定しておくことで，pdsdbdefコマンド実行中に何らかの障害（通信障害（一時的な障害を含む）やディスク障害など）が発生してpdsdbdefコマンドが無応答状態になった場合，pdsdbdefコマンドが異常終了します。このため，早期に障害を検知でき，回復処理に着手できます。

実行時間監視（exectimeオペランド）の指定値の目安

SDBディクショナリ情報やSDBディレクトリ情報の処理時間を基準に余裕を持った値を指定してください。例えば，7，8分程度で終了するpdsdbdefコマンドの実行時間を監視する場合は，exectime=10と指定しないで，exectime=20と指定するなどしてください。

11.3.5　dirinf文（SDBディレクトリ情報ファイルの作成および配布）

dirinf文には，SDBディレクトリ情報ファイルの作成および配布についての情報を指定します。

ポイント

作成したSDBディレクトリ情報ファイルは，全ユニットに配布する必要があります。

配布先は，ユニット制御情報定義のpd_structured_directory_pathオペランドに指定したディレクトリ下となります。

SDBディレクトリ情報ファイルの作成と配布を1回のpdsdbdefコマンドで実行できます。また，SDBディレクトリ情報ファイルの作成だけを実行することもできますし，配布だけを実行することもできます。

全ユニットに配布したSDBディレクトリ情報ファイル中のSDBディレクトリ情報が，HiRDBの開始時に共用メモリ上の常用常駐領域に格納されます。これによって，SDBデータベースにアクセスできるようになります。また，HiRDBの稼働中に，pdsdbarcコマンドでSDBディレクトリ情報を更新することができます。pdsdbarc -eコマンドでSDBディレクトリ情報を事前常駐領域に格納してから，pdsdbarc -w -qコマンドで事前常駐領域を常用常駐領域に切り替えることでSDBディレクトリ情報を更新します。

(1)　適用条件

次の場合にdirinf文を指定します。

SDBディレクトリ情報ファイルを作成する場合

SDBディレクトリ情報ファイルを各ユニットに配布する場合

なお，上記の2つの操作を同時に実行することもできます。

(2)　形式

　dirinf△SDBディレクトリ情報ファイルの格納ディレクトリ
　　　　［generate=｛yes｜no｝］
　　　　［transfer=｛yes｜no｝
　　　　　［checkmode=｛match｜range｝］
　　　　　［unit=ユニット名［,ユニット名］…］

△は，空白またはタブを区切り文字として，1つ以上指定する必要があることを意味しています。

(3)　説明

●SDBディレクトリ情報ファイルの格納ディレクトリ

〜＜パス名＞

SDBディレクトリ情報ファイルの格納ディレクトリを指定します。ファイル名を含まない絶対パスで指定してください。

SDBディレクトリ情報ファイルを作成する場合は，ここで指定したディレクトリ下にSDBディレクトリ情報ファイルが出力されます。

SDBディレクトリ情報ファイルを配布する場合は，ここで指定したディレクトリ下のSDBディレクトリ情報ファイルが配布されます。

≪留意事項≫

SDBディレクトリ情報ファイルのファイル名は，「pdsdbdir」固定です。ファイル名は変更しないでください。

相対パスで指定した場合や，指定したパスが存在しない場合は，pdsdbdefコマンドの実行がエラーになります。

SDBディレクトリ情報ファイルの容量によっては，SDBディレクトリ情報ファイルの格納ディレクトリを圧迫するおそれがあります。そのため，HiRDB運用ディレクトリ以外のディレクトリを指定することを推奨します。

●generate=｛yes｜no｝

SDBディレクトリ情報ファイルを作成するかどうかを指定します。

yes：SDBディレクトリ情報ファイルを作成します。

no：SDBディレクトリ情報ファイルを作成しません。

yesを指定するか，または指定を省略した場合，SDBディレクトリ情報ファイルの格納ディレクトリ下にSDBディレクトリ情報ファイルが出力されます。

≪留意事項≫

SDBディレクトリ情報ファイルの格納ディレクトリ下にSDBディレクトリ情報ファイルが存在する場合，SDBディレクトリ情報ファイルは上書き更新されます。

*ENTRY DIRECTORY文で1つもSDBディレクトリ情報を登録していない場合に，SDBディレクトリ情報ファイルを作成しても，管理情報だけが格納されたSDBディレクトリ情報ファイルが作成されるため，SDBディレクトリ情報ファイルを作成しても意味がありません（そのSDBディレクトリ情報ファイルは使用できません）。

SDBディレクトリ情報ファイルの格納ディレクトリ下にSDBディレクトリ情報ファイルが存在するときでも，SDBディレクトリ情報ファイルの作成中にエラーが発生した場合は，SDBディレクトリ情報ファイルは削除されます。

●transfer=｛yes｜no｝

SDBディレクトリ情報ファイルを配布するかどうかを指定します。

yes：SDBディレクトリ情報ファイルを配布します。

no：SDBディレクトリ情報ファイルを配布しません。

yesを指定した場合，SDBディレクトリ情報ファイルの格納ディレクトリ下のSDBディレクトリ情報ファイルを，全ユニットに配布します。特定のユニットに対してだけSDBディレクトリ情報ファイルを配布したい場合は，unitオペランドを指定してください。

なお，高速系切り替え機能を使用している場合は，待機系ユニットも配布対象になります。

配布先は，ユニット制御情報定義のpd_structured_directory_pathオペランドに指定したディレクトリ下となります。

注意事項

ディザスタリカバリシステムのリモートサイトは配布対象外です。リモートサイトにSDBディレクトリ情報ファイルを配布する方法については，「8.3.1(2)　「6. SDB ディレクトリ情報ファイルをリモートサイトに転送する」の作業」を参照してください。

●checkmode=｛match｜range｝

SDBディレクトリ情報ファイルを配布する場合（transfer = yesを指定した場合）にこのオペランドを指定します。

配布するSDBディレクトリ情報ファイル中のSDBディレクトリ情報の最終更新日時のチェックレベルを指定します。SDBディレクトリ情報ファイルを配布する前に，次の1.と2.の最終更新日時を比較します。

配布するSDBディレクトリ情報ファイル中のSDBディレクトリ情報の最終更新日時

ディクショナリ表中のSDBディレクトリ情報の最終更新日時

match：

1.と2.の最終更新日時を比較し，最終更新日時が同じ場合に限り，SDBディレクトリ情報ファイルを配布します。

range：

1.と2.の最終更新日時を比較し，最終更新日時が同じ場合にSDBディレクトリ情報ファイルを配布します。

また，1.の最終更新日時が古い場合でも，SDBディレクトリ情報ファイルを配布します。

≪指定値の目安≫

通常は，matchを指定してください。

障害発生時，一時的に旧SDBディレクトリ情報ファイルを使用するために配布する場合にrangeを指定してください。

≪留意事項≫

システム共通定義のpd_structured_advance_residentオペランドにnouseを指定するか，またはpd_structured_advance_residentオペランドを省略した場合，checkmodeオペランドにrangeを指定することはできません。

配布するSDBディレクトリ情報ファイル中のSDB定義文の最終更新日時と，ディクショナリ表中のSDB定義文の最終更新日時が異なる場合は，1.と2.の最終更新日時が同じであっても，SDBディレクトリ情報ファイルを配布しません。

●unit=ユニット名［,ユニット名］…

特定のユニットに対してだけSDBディレクトリ情報ファイルを配布したい場合に，このオペランドを指定します。このオペランドを省略した場合は，全ユニットにSDBディレクトリ情報ファイルが配布されます。

例えば，一部のユニットに対してSDBディレクトリ情報ファイルが配布されなかった場合に，そのユニットに対してSDBディレクトリ情報ファイルを再配布するときにこのオペランドを指定してください。

≪留意事項≫

このオペランドは，SDBディレクトリ情報ファイルの配布だけをする場合に限り指定できます。このオペランドを指定する場合は，次のオペランドが指定されている必要があります。

generate = no

transfer = yes

ユニット名は，最大64個指定できます。

(4)　指定例

dirinf文の指定例を次に示します。

例1

SDBディレクトリ情報ファイルを作成して，全ユニットに配布します。

dirinf /usr/sdb_dir
       generate=yes
       transfer=yes
       checkmode=match

例2

作成済みのSDBディレクトリ情報ファイルを全ユニットに配布します。

dirinf /usr/sdb_dir
       generate=no
       transfer=yes
       checkmode=match

例3

SDBディレクトリ情報ファイルを特定のユニット（UNT3）に配布します（SDBディレクトリ情報ファイルの作成はしません）。

dirinf /usr/sdb_dir
       generate=no
       transfer=yes
       checkmode=match
       unit=UNT3

(5)　記述規則

SDB制御文の1行の行長を超えない範囲内であれば，複数のオペランドを1行にまとめて記述できます。この場合，各オペランドの間に，空白またはタブを区切り文字として1つ以上指定する必要があります。

各オペランドは，形式で説明している順序のとおりに指定してください。

(6)　注意事項

dirinf文の実行時にエラーが発生した場合（SDBディレクトリ情報ファイルの作成および配布処理でエラーが発生した場合），SDB定義文の処理はロールバックされないため，SDBデータベースの定義は追加，変更，削除されています。そのため，SDBディレクトリ情報ファイルの作成および配布をするために，再度pdsdbdefコマンドを実行する場合は，SDB制御文を変更する必要があります。

SDBディレクトリ情報ファイルを配布する際，pd_structured_direcotry_pathオペランドに指定したディレクトリ下，またはワークディレクトリ下に次の形式のディレクトリまたはファイルがある場合，そのディレクトリまたはファイルを削除対象とします。そのため，pd_structured_direcotry_pathオペランドに指定したディレクトリ下，またはワークディレクトリ下には，ユーザが作成したファイルを保管しないことを推奨します。

"SDBDEF-AS_プロセスID_プロセス開始時刻"の形式をしたディレクトリ名

"SDBDEF-AD_ユニット名"の形式をしたディレクトリ名

"SDBDEF-run"のファイル名

"SDBDEF-skip"のファイル名

"SDBDEF-result＋"で始まるファイル名

"SDBDEF-tmp_"で始まるファイル名

"pdsdbdir_bk_"で始まるファイル名

なお，ワークディレクトリとは，次のディレクトリを意味しています。

ユニット制御情報定義のpd_tmp_directoryオペランドに指定したディレクトリ

環境変数TMPDIRに指定したディレクトリ

/tmp

11.4　SDB定義文

SDB定義文には，pdsdbdefコマンドで操作するSDBデータベースの定義情報を指定します。

SDB定義文ファイルに記述できる制御文（SDB定義文）を次の表に示します。

表11‒6　SDB定義文ファイルに記述できる制御文

SDB定義文

内容

*ENTRY DICTIONARY文

SDBディクショナリ情報を追加するときに指定します。

*ALTER DICTIONARY文

SDBディクショナリ情報を変更するときに指定します。

*DELETE DICTIONARY文

SDBディクショナリ情報を削除するときに指定します。

*CHECK DICTIONARY文

データベース定義をチェックするときに指定します。

*ENTRY DIRECTORY文

SDBディレクトリ情報を追加するときに指定します。

*ALTER DIRECTORY文

SDBディレクトリ情報を変更するときに指定します。

*DELETE DIRECTORY文

SDBディレクトリ情報を削除するときに指定します。

11.4.1　SDB定義文の記述規則

SDB定義文の記述規則を次の表に示します。

表11‒7　SDB定義文の記述規則

項目

記述規則

SDB定義文の構成

SDB定義文は，SDB定義文の種類や定義句を表すキーワードとユーザ指定値から成ります。

1つのSDB定義文内のキーワードとキーワードの間，およびキーワードとユーザ指定値の間は，区切り文字で区切ります。

1行の長さ

改行コードを含まずに，最大80バイトまで指定できます。

改行コード

改行コードには次の文字を指定します。

NL（X'0a'）

CR＋NL（X'0d'＋X'0a'）

分離記号

分離記号は，キーワードとキーワードを区切る文字です。また，キーワード自体としても扱われます。分離記号には次の文字を指定できます。

,（X'2c'）

.（X'2e'）

(（X'28'）

)（X'29'）

;（X'3b'）

*（X'2a')

/（X'2f'）

=（X'3d'）

<（X'3c'）

<=

>（X'3e'）

>=

<>

区切り文字

区切り文字には次の文字を指定できます。

空白（X'20'）

タブ（X'09'）

NL（X'0a'）

CR（X'0d'）

全角空白

注釈（コメント）

区切り文字を挿入してはいけない位置

区切り文字を挿入してはいけない位置を次に示します。

キーワードの中

引用符（"）で囲まれていない名前の中

名前を囲む初めの引用符（"）の後ろ

名前を囲む終わりの引用符（"）の前

数値の中

16進数を表す「X'…'」の「X」と初めの「'」の間

コメントの記述

1行の長さの範囲で，かつ区切り文字が指定できる位置であれば，どこにでもコメントを記述できます。

コメントは，スラントとアスタリスク（/*），アスタリスクとスラント（*/）で囲んで記述してください。

1つのコメントを複数行にわたって記述できます。ただし，スラントとアスタリスクを2行に分けて記述することはできません。

コメントは入れ子にできません。

継続行

1つのSDB定義文を，複数行にわたって記述できます。

キーワードやユーザ指定値自体を複数行に分けて記述することはできません。

SDB定義文の指定制限

同一行に複数のSDB定義文は記述できません。

1つのSDB定義文内での，定義句を表すキーワードの指定順序は各SDB定義文の規則に従います。

キーワードに関する記述規則

ユーザ指定値には，SDB定義文で使用しているキーワードと同じものを指定しないでください。

指定した場合，SDB定義文で文法エラーが発生すると，不適切なメッセージが出力されるおそれがあります。

符号なし整数の記述規則

符号なし整数の先頭に0（ゼロ）を指定する場合，ユーザ指定値の有効桁数（各定義句で指定できる上限値の桁数）の範囲であれば指定できます。

(1)　名前の規則

SDB定義文で記述する名前の種類と，名前に使用できる文字と長さ（バイト数）の規則を次の表に示します。

表11‒8　SDB定義文で記述する名前の種類と規則

名前の種類

最大文字数

半角文字

全角文字

英大文字※3

英小文字

数字

カナ文字

下線（_）

ハイフン（‐）

空白

識別子

30バイト

○

○※1

○

×

○

○※2

○※2，※4

×

RDエリア名

30バイト

○

○※1

○

×

○

○※2

○※2

×

（凡例）

○：使用できます。

×：使用できません。

注

名前の先頭の文字は半角英大英字（A〜Z，¥，@，#），または半角英小文字（a〜z）にしてください。

注※1

引用符（"）で囲まれている場合，半角英大文字と半角英小文字は区別されます。引用符（"）で囲まれていない半角英小文字は，半角英大文字として扱われます。

注※2

名前中にハイフンまたは空白がある場合，名前を引用符（"）で囲んで指定してください。

注※3

ここでいう英大文字とは，A〜Z，¥，@，#を意味しています。

注※4

識別子の最後尾に空白は指定できません。

(2)　予約語

次に示す予約語は，SDBデータベース名，SDBデータベース格納名，レコード型名，構成要素名，親子集合型名，インデクス名，RDエリア名の名前として定義できません。

ALL

HiRDB

MASTER

PUBLIC

SQLおよびsqlで始まる名称

SYSTEM

SYSTEM_FLAG_FIELD

SYSTEM_RECTYPE_NO

11.4.2　*ENTRY DICTIONARY文（SDBディクショナリ情報の追加）

SDBデータベース定義およびSDBデータベース格納定義からSDBディクショナリ情報を作成し，ディクショナリ表に追加します。

(1)　形式

　*ENTRY　DICTIONARY
　　　SDBデータベース定義またはSDBデータベース格納定義

(2)　説明

*ENTRY DICTIONARY：

SDBディクショナリ情報を追加（新規に登録）するときに指定します。

*ENTRY DICTIONARYのあとにSDBデータベース定義，SDBデータベース格納定義を指定します。

SDBデータベース定義：

SDBデータベース定義を指定します。SDBデータベース定義の指定形式については，次の個所を参照してください。

4V FMBのSDBデータベースを定義する場合

「11.5.1　SDBデータベース定義【4V FMB】」

4V AFMのSDBデータベースを定義する場合

「11.6.1　SDBデータベース定義【4V AFM】」

SD FMBのSDBデータベースを定義する場合

「11.7.1　SDBデータベース定義【SD FMB】」

SDBデータベース格納定義：

SDBデータベース格納定義を指定します。SDBデータベース格納定義の指定形式については，次の個所を参照してください。

4V FMBのSDBデータベースを定義する場合

「11.5.2　SDBデータベース格納定義【4V FMB】」

4V AFMのSDBデータベースを定義する場合

「11.6.2　SDBデータベース格納定義【4V AFM】」

SD FMBのSDBデータベースを定義する場合

「11.7.2　SDBデータベース格納定義【SD FMB】」

(3)　留意事項

SDBデータベース定義とSDBデータベース格納定義は，それぞれ10,000個まで登録できます。

追加するSDBディクショナリ情報のサイズが2,048,000,000バイトを超える場合，*ENTRY DICTIONARY文の実行がエラーになります。SDBデータベース定義情報長，およびSDBデータベース格納定義情報長の算出式については，次の表を参照してください。

「表3-26　計算式2（SDBデータベース定義情報長）」

「表3-27　計算式3（SDBデータベースビュー定義情報長）」

「表3-28　計算式4（SDBデータベース格納定義情報長）」

SDBデータベース名とSDBデータベース格納名は1対1で対応しています。そのため，登録済みのSDBデータベース格納定義で指定されているSDBデータベース名は，別のSDBデータベース格納定義では指定できません。

同一名称のSDBディクショナリ情報（SDBデータベース定義またはSDBデータベース格納定義）は登録できません。

11.4.3　*ALTER DICTIONARY文（SDBディクショナリ情報の変更）【4V FMB，4V AFM】

SDBデータベース定義およびSDBデータベース格納定義からSDBディクショナリ情報を作成し，ディクショナリ表に登録されているSDBディクショナリ情報を変更します。

SD FMBのSDBデータベースのSDBディクショナリ情報を*ALTER DICTIONARY文で変更することはできません。

(1)　形式

　*ALTER DICTIONARY
　　　SDBデータベース定義またはSDBデータベース格納定義

(2)　説明

*ALTER DICTIONARY：

SDBディクショナリ情報を変更するときに指定します。*ALTER DICTIONARYのあとにSDBデータベース定義，SDBデータベース格納定義を指定します。

SDBデータベース定義：

変更後のSDBデータベース定義を指定します。

SDBデータベース定義を変更する場合は，変更個所だけを指定するのではなく，変更後のSDBデータベース定義をすべて指定してください。SDBデータベース定義の指定形式，および変更できるオペランドについては，次の個所を参照してください。

4V FMBのSDBデータベースの定義を変更する場合

「11.5.1　SDBデータベース定義【4V FMB】」

4V AFMのSDBデータベースの定義を変更する場合

「11.6.1　SDBデータベース定義【4V AFM】」

SDBデータベース格納定義：

変更後のSDBデータベース格納定義を指定します。

SDBデータベース格納定義を変更する場合は，変更個所だけを指定するのではなく，変更後のSDBデータベース格納定義をすべて指定してください。SDBデータベース格納定義の指定形式，および変更できるオペランドについては，次の個所を参照してください。

4V FMBのSDBデータベースの定義を変更する場合

「11.5.2　SDBデータベース格納定義【4V FMB】」

4V AFMのSDBデータベースの定義を変更する場合

「11.6.2　SDBデータベース格納定義【4V AFM】」

(3)　留意事項

*ALTER DICTIONARY文および*ALTER DIRECTORY文によるSDBデータベースの定義変更では，最下位のレコード型とその親子集合の追加，および横分割格納したRDエリアの変更（追加，削除，分割，統合）ができます。SDBデータベース定義およびSDBデータベース格納定義で変更できるオペランドについては，次の個所を参照してください。

4V FMBのSDBデータベースの定義を変更する場合

「11.5　SDBデータベース定義，SDBデータベース格納定義【4V FMB】」

4V AFMのSDBデータベースの定義を変更する場合合

「11.6　SDBデータベース定義，SDBデータベース格納定義【4V AFM】」

*ALTER DICTIONARY文および*ALTER DIRECTORY文によるRDエリアの削除，分割，または統合を行う場合，pdsdbdefコマンドの実行時に-iオプションを指定する必要があります。-iオプションを指定しないと，pdsdbdefコマンドがエラーとなります。

変更後のSDBディクショナリ情報のサイズが2,048,000,000バイトを超える場合，*ALTER DICTIONARY文の実行がエラーになります。

追加する子レコード型の親レコード型で，子レコード用の管理領域の予備領域が不足している場合，子レコード型を追加できないため，*CHECK DICTIONARY文または*ALTER DIRECTORY文によるデータベース定義のチェック時にエラーとなります。

*ALTER DICTIONARY文によるRDエリアの分割または統合を行った場合，*CHECK DICTIONARY文または*ALTER DIRECTORY文の延長で，変更対象のRDエリアに格納されているデータが削除されることがあります。詳細については，「表11-23　RDエリアの定義変更時のデータの削除有無（格納条件指定の横分割の場合）」または「表11-24　RDエリアの定義変更時のデータの削除有無（境界値指定の横分割の場合）」を参照してください。

また，このデータ削除を伴う操作に限り，例外的にpdsdbdefコマンドの途中に同期点処理が行われることがあります。そのため，pdsdbdefコマンドの実行中にエラーが発生した場合，SDB定義文ファイル中に指定したSDB定義文は，完了した処理と無効となった処理に分かれます。したがって，pdsdbdefコマンドを再実行する場合は，SDB定義文の変更が必要となります。詳細については，「11.4.10　エラー発生時の再実行について」を参照してください。

11.4.4　*DELETE DICTIONARY文（SDBディクショナリ情報の削除）

SDBディクショナリ情報をディクショナリ表から削除します。

(1)　形式

■SDBデータベース定義のSDBディクショナリ情報を削除する場合

　*DELETE DICTIONARY
　　　SCHEMA SDBデータベース名

■SDBデータベース格納定義のSDBディクショナリ情報を削除する場合

　*DELETE DICTIONARY
　　　STORAGE SCHEMA SDBデータベース格納名 FOR SDBデータベース名

(2)　説明

*DELETE DICTIONARY：

SDBディクショナリ情報を削除するときに指定します。

注意事項

SDBディクショナリ情報およびSDBディレクトリ情報を削除する際は，必ず*DELETE DIRECTORY文を先に実行してください。

SCHEMA SDBデータベース名：

SDBディクショナリ情報を削除するSDBデータベースのSDBデータベース名を指定します。

STORAGE SCHEMA SDBデータベース格納名 FOR SDBデータベース名：

SDBディクショナリ情報を削除するSDBデータベースのSDBデータベース格納名およびSDBデータベース名を指定します。

(3)　留意事項

*DELETE DICTIONARY文を実行する場合，pdsdbdefコマンドの実行時，-iオプションの指定が必須になります。-iオプションの指定がないとpdsdbdefコマンドの実行時にエラーとなります。

*DELETE DICTIONARY文を実行すると，SDBデータベースのレコードおよびインデクスも削除されます。

11.4.5　*CHECK DICTIONARY文（データベース定義のチェック）

SDBデータベースのSDBデータベース定義およびSDBデータベース格納定義の整合性をチェックします。定義の指定内容に誤りがないか，または関連する情報と矛盾がないかがチェックされます。

*CHECK DICTIONARY文は次に示す場合に指定します。

*ENTRY DICTIONARY文と*ENTRY DIRECTORY文を別々に実行する場合に，*ENTRY DICTIONARY文と一緒に*CHECK DICTIONARY文を指定します。

*ALTER DICTIONARY文と*ALTER DIRECTORY文を別々に実行する場合に，*ALTER DICTIONARY文と一緒に*CHECK DICTIONARY文を指定します。

*ENTRY DICTIONARY文（または*ALTER DICTIONARY文）と*CHECK DICTIONARY文を一緒に指定した場合，データベース定義の不整合が検知されると，SDBディレクトリ情報はディクショナリ表に追加されません。

なお，横分割格納したRDエリアの変更を行う場合は，*CHECK DICTIONARY文の実行時に，変更対象となるRDエリアに格納されたデータが削除されます。

(1)　形式

　*CHECK DICTIONARY
　　　STORAGE SCHEMA SDBデータベース格納名 FOR SDBデータベース名

(2)　説明

*CHECK DICTIONARY：

SDBデータベースのSDBデータベース定義およびSDBデータベース格納定義の整合性をチェックするときに指定します。

STORAGE SCHEMA SDBデータベース格納名 FOR SDBデータベース名

整合性をチェックするSDBデータベースのSDBデータベース格納名およびSDBデータベース名を指定します。

11.4.6　*ENTRY DIRECTORY文（SDBディレクトリ情報の追加）

SDBデータベースのSDBディレクトリ情報を作成し，ディクショナリ表に追加します。

(1)　形式

　*ENTRY DIRECTORY
　　　DBSCHM SDBデータベース名

(2)　説明

*ENTRY DIRECTORY：

SDBディレクトリ情報を追加するときに指定します。

DBSCHM SDBデータベース名：

SDBディレクトリ情報を追加するSDBデータベースのSDBデータベース名を指定します。

(3)　留意事項

*ENTRY DIRECTORY文の実行時，データベース定義（SDBデータベース定義およびSDBデータベース格納定義）の整合性チェックが実行されます。定義の指定内容に誤りがないか，または関連する情報と矛盾がないかがチェックされます（*CHECK DICTIONARY文と同じ処理が実行されます）。その結果，データベース定義の指定内容に不整合が検知された場合，*ENTRY DIRECTORY文の実行がエラーになります。

ただし，一度でも*CHECK DICTIONARY文を実行したデータベース定義に対しては，*ENTRY DIRECTORY文の実行時にデータベース定義のチェックは実行されません。

11.4.7　*ALTER DIRECTORY文（SDBディレクトリ情報の変更）【4V FMB，4V AFM】

SDBデータベースのSDBディレクトリ情報を作成し，ディクショナリ表に登録されているSDBディレクトリ情報を変更します。

SD FMBのSDBデータベースのSDBディレクトリ情報を*ALTER DIRECTORY文で変更することはできません。

(1)　形式

　*ALTER DIRECTORY
　　　DBSCHM SDBデータベース名

(2)　説明

*ALTER DIRECTORY：

SDBディレクトリ情報を変更するときに指定します。

DBSCHM SDBデータベース名：

SDBディレクトリ情報を変更するSDBデータベースのSDBデータベース名を指定します。

(3)　留意事項

*ALTER DIRECTORY文の実行時，データベース定義（SDBデータベース定義およびSDBデータベース格納定義）の整合性チェックが実行されます。定義の指定内容に誤りがないか，または関連する情報と矛盾がないかがチェックされます（*CHECK DICTIONARY文と同じ処理が実行されます）。その結果，データベース定義の指定内容に不整合が検知された場合，*ALTER DIRECTORY文の実行がエラーになります。

ただし，一度でも*CHECK DICTIONARY文を実行したデータベース定義に対しては，*ALTER DIRECTORY文の実行時にデータベース定義のチェックは実行されません。

*ALTER DICTIONARY文および*ALTER DIRECTORY文によるRDエリアの削除，分割，または統合を行う場合，pdsdbdefコマンドの実行時に-iオプションを指定する必要があります。-iオプションを指定しないと，pdsdbdefコマンドがエラーとなります。

11.4.8　*DELETE DIRECTORY文（SDBディレクトリ情報の削除）

SDBデータベースのSDBディレクトリ情報をディクショナリ表から削除します。

(1)　形式

　*DELETE DIRECTORY
　　　DBSCHM SDBデータベース名

(2)　説明

*DELETE DIRECTORY：

SDBディレクトリ情報を削除するときに指定します。

DBSCHM SDBデータベース名：

SDBディレクトリ情報を削除するSDBデータベースのSDBデータベース名を指定します。

(3)　留意事項

*DELETE DIRECTORY文を実行する場合，pdsdbdefコマンドの実行時に-iオプションの指定が必須になります。-iオプションの指定がないとpdsdbdefコマンドの実行時にエラーとなります。

11.4.9　SDB定義文の同期点処理と推奨するSDB定義文の指定方法

SDB定義文の同期点処理は，pdsdbdefコマンド単位に実行されます。したがって，SDB定義文ファイル中に指定したすべてのSDB定義文の処理が正常終了した場合にかぎり，pdsdbdefコマンドが正常終了します。SDB定義文ファイル中に指定したSDB定義文のうち，1つでもエラーが発生した場合，すべてのSDB定義文の処理が無効になります。

推奨するSDB定義文の指定方法を次に示します。

HiRDBの再起動を必要としないSDBデータベースの定義追加をする場合

*ENTRY DICTIONARY文と*CHECK DICTIONARY文を指定して，pdsdbdefコマンドを実行します。※1

*ENTRY DIRECTORY文を指定して，pdsdbdefコマンドを実行します。

HiRDBの再起動を必要としないSDBデータベースの定義変更をする場合

*ALTER DICTIONARY文と*CHECK DICTIONARY文を指定して，pdsdbdefコマンドを実行します。※1

*ALTER DIRECTORY文を指定して，pdsdbdefコマンドを実行します。

HiRDBの再起動を必要とするSDBデータベースの定義追加をする場合

*ENTRY DICTIONARY文と*ENTRY DIRECTORY文を指定して，pdsdbdefコマンドを実行します。※2

HiRDBの再起動を必要とするSDBデータベースの定義変更をする場合

*ALTER DICTIONARY文と*ALTER DIRECTORY文を指定して，pdsdbdefコマンドを実行します。※2

注※1

*ENTRY DICTIONARY文（または*ALTER DICTIONARY文）と*CHECK DICTIONARY文を別々に実行した場合，*CHECK DICTIONARY文の実行時にデータベース定義の不整合が検知されると，不整合が検知されたSDBディクショナリ情報を*DELETE DICTIONARY文で削除する必要が生じます。しかし，*DELETE DICTIONARY文を実行した場合，HiRDBを再起動する必要があるため，*ENTRY DICTIONARY文と*CHECK DICTIONARY文は一緒に指定するようにしてください。

注※2

*ENTRY DICTIONARY文と*ENTRY DIRECTORY文（または*ALTER DICTIONARY文と*ALTER DIRECTORY文）を別々に実行した場合，*ENTRY DIRECTORY文（または*ALTER DIRECTORY文）の実行時にデータベース定義の不整合が検知されると，不整合が検知されたSDBディクショナリ情報を*DELETE DICTIONARY文で削除する必要が生じます。そのため，*ENTRY DICTIONARY文と*ENTRY DIRECTORY文（または*ALTER DICTIONARY文と*ALTER DIRECTORY文）は，一緒に指定するようにしてください。

11.4.10　エラー発生時の再実行について

同期点処理は，基本的にはpdsdbdefコマンド単位に実行されます。したがって，エラーの発生時は，エラー原因を取り除いたあとに，SDB定義文ファイルの内容を変更しないで，そのままpdsdbdefコマンドを再実行できます。

ただし，RDエリアの分割や統合はデータ部にも影響がある操作のため，pdsdbdefコマンドの途中で同期点が取得されることがあります。このとき，KFPB61244-Iメッセージが出力されて，同期点が取得されたことが通知されます。データ削除と同期点の取得については，「表11-23　RDエリアの定義変更時のデータの削除有無（格納条件指定の横分割の場合）」または「表11-24　RDエリアの定義変更時のデータの削除有無（境界値指定の横分割の場合）」を参照してください。これら2つの表の※1のケースが該当します。

このメッセージの出力後にエラーが発生した場合は，pdsdbdefコマンドの再実行前にSDB定義文ファイルの内容を修正する必要があります。修正方法を次の表に示します。

表11‒9　KFPB61244-Iメッセージの出力後にエラーが発生した場合のSDB定義文の修正方法

KFPB61244-Iメッセージの出力

pdsdbdefコマンドの再実行前のSDB定義文の修正方法

なし

SDB定義文を修正する必要はありません。

あり

KFPB61244-Iメッセージが出力されたSDB定義文の前に指定したSDB定義文を削除してください。KFPB61244-Iメッセージが出力されたSDB定義文は削除しないでください。

SDB定義文の修正例を次の図に示します。

図11‒10　SDB定義文の修正例

11.5　SDBデータベース定義，SDBデータベース格納定義【4V FMB】

4V FMBのSDBデータベースを定義する場合の，SDBデータベース定義およびSDBデータベース格納定義の指定形式と各オペランドの指定内容について説明します。

11.5.1　SDBデータベース定義【4V FMB】

*ENTRY DICTIONARY文または*ALTER DICTIONARY文に指定するSDBデータベース定義について説明します。

注意事項

*ENTRY DICTIONARY文または*ALTER DICTIONARY文に指定したSDBデータベース定義は保存しておいてください。*ALTER DICTIONARY文でSDBデータベース定義を変更する際，変更個所だけを指定するのではなく，変更後のSDBデータベース定義をすべて指定する必要があります。このとき，保存しておいたSDBデータベース定義が必要になります。

(1)　機能

SDBデータベースの論理構造を定義します。

(2)　形式

項番

形式

オペランドの追加可否※1

(a)

SCHEMA SDBデータベース名

×

(b)

DBTYPE 4V FMB

×

(c)

　RECORD レコード型名

○※2

(d)

　　　　　｛レベル番号｜ITEM｝ 構成要素名

(e)

　　　　　〔｛CHARACTER 長さ

　　　　　　　　｜XCHARACTER 長さ

　　　　　　　　｜PACKED 〔DECIMAL FIXED〕 整数部桁数〔，小数部桁数〕

　　　　　　　　｜INTEGER｝

(f)

　　　　　　TYPE データ種別1，データ種別2

　　　　　　〕…

(g)

　　　　　〔FUNCTION

　　　　　　　　〔REFER USE〕

　　　　　　　　〔ADD ｛USE｜NOUSE｝〕

　　　　　　　　〔UPDATE ｛USE｜NOUSE｝〕

　　　　　　　　〔ERASE ｛USE｜NOUSE｝〕

　　　　　　　　〔ALLERASE NOUSE〕

　　　　　　〕

(h)

　　　　　〔RECORDID レコード識別コード〕

　…

(i)

　〔SET 親子集合型名

(j)

　　　　OWNER 親レコード型名

(k)

　　　　ORDER ｛LAST｜SORTED DUPLICATES PROHIBITED｝

(l)

　　　　MEMBER 子レコード型名

(m)

　　　　INSERTION AUTOMATIC

(n)

　　　　RETENTION FIXED

(o)

　　　　〔KEY ｛ASCENDING｜DESCENDING｝ 構成要素名〕

(p)

　　　　　　〔SETOPTION

(q)

　　　　　　　　〔OCCURRENCE NUMBER 一連番号の最大値

(r)

　　　　　　　　　　〔WARNING ｛一連番号使用比率1

　　　　　　　　　　　　　　　　　　〔，一連番号使用比率2

　　　　　　　　　　　　　　　　　　〔，一連番号使用比率3〕〕｜0｝〕

(s)

　　　　　　　　　　〔REUSE ｛YES｜NO｝〕

　　　　　　　　〕

　　　　　　〕

　　〕…

(t)

　〔SDBOPTION

×

(u)

　　　〔FUNCTION

　　　　　　〔REFER USE〕

　　　　　　〔ADD ｛USE｜NOUSE｝〕

　　　　　　〔UPDATE ｛USE｜NOUSE｝〕

　　　　　　〔ERASE ｛USE｜NOUSE｝〕

　　　　　　〔ALLERASE NOUSE〕

　　　　　　〔DBLODUTL USE〕

　　　　　　〔FORMAT NOUSE〕

　　　　〕

(v)

　　　〔OCCURRENCE WARNING ｛一連番号使用比率1

　　　　　　　　　　　　　　　　　　　　 〔，一連番号使用比率2

　　　　　　　　　　　　　　　　　　　　 〔，一連番号使用比率3〕〕｜0｝〕

○※3

　　〕

(w)

END SCHEMA

×

（凡例）

○：*ALTER DICTIONARY文の実行時に追加できるオペランドです。

×：*ALTER DICTIONARY文の実行時に追加できないオペランドです。

注※1

*ALTER DICTIONARY文実行時のオペランド追加可否です。

注※2

最下位の子レコード型の追加とその親子集合の追加ができます。

RECORD句とSET句は必ず両方指定してください。どちらか片方だけを指定することはできません。

注※3

ルートレコード型だけの定義に対して子レコード型を1個以上追加する場合は，追加指定できます。

参考

SDBOPTION句下のREADYMODE句の指定は無視されるため，バージョン09-66のマニュアルから，上記の形式にREADYMODE句は記載していません。READYMODE句を指定したままでもエラーにはなりません。また，READYMODE句の指定値によってシステムの動作が変わることはありません。

(3)　定義句の指定順序

SDBデータベース定義の定義句の指定順序には，次に示す規則があります。

必須の定義，または必須の定義と省略できる定義の間は，上記の形式で示す順序で指定してください。

RECORD句下のFUNCTION句とRECORDID句，およびFUNCTION句下の各句については指定順はありません。任意の順番で指定できます。

RECORD句およびSET句の指定順序は，次の図に示す規則（一筆書き順）に従ってください。

図11‒11　RECORD句およびSET句の指定順序（一筆書き順）の規則

(4)　*ALTER DICTIONARY文によるSDBデータベースの定義変更

*ALTER DICTIONARY文によるSDBデータベースの定義変更は，最下位の子レコード型の追加とその親子集合の追加ができます。子レコード型を追加できる位置と追加できない位置を次の図に示します。

図11‒12　子レコード型を追加できる位置と追加できない位置

なお，*ALTER DICTIONARY文では，既存のレコード型の定義は変更できません。*ALTER DICTIONARY文によるSDBデータベースの定義変更の例を次の図に示します。

図11‒13　*ALTER DICTIONARY文によるSDBデータベースの定義変更の例（4V FMBのSDBデータベースの場合）

*ALTER DICTIONARY文で実行できるSDBデータベースの定義変更を次の表に示します。

表11‒10　*ALTER DICTIONARY文で実行できるSDBデータベースの定義変更

定義名

定義変更の内容

説明

SDBデータベース定義

レコード型の追加（RECORD句の追加）

次に示す条件をすべて満たす場合にレコード型を追加できます。

追加するレコード型が子レコード型である。

追加する子レコード型の親レコード型で管理している子レコード用の管理領域の予備領域がある（子レコード型を追加しても問題ないだけの予備領域がある）。

また，次に示す定義の追加または変更を行う必要があります。

既存のレコード型を親レコード型，追加するレコード型を子レコード型とする親子集合を追加する。

SDBデータベース格納定義のSTORAGE RECORD句を追加し，対応する格納レコード名を指定する。

親子集合の追加（SET句の追加）

追加した子レコード型の親子集合を追加できます。

一連番号の使用状況の監視の追加（OCCURRENCE WARNING句の追加）

ルートレコード型だけの定義に対して，子レコード型を1個以上追加する場合に限り，追加指定できます。

SDBデータベース格納定義

格納レコードの追加（STORAGE RECORD句の追加）

SDBデータベース定義で子レコード型を追加した場合に，対応する格納レコード名を追加します。子レコード型を追加していない場合に，格納レコード名だけを追加することはできません。

なお，追加した子レコード型にデータ種別がK，Nの構成要素が存在する場合は，K，NまたはU，Kの構成要素の数まで二次インデクスを追加できます。二次インデクスの追加に伴い，二次インデクスを格納するRDエリアを追加できます。

格納親子集合の追加（SET句の追加）

子レコード型を追加する際に追加する親子集合に対応する格納親子集合を追加できます。子レコード型を追加しないで，格納親子集合だけを追加することはできません。

キー値の追加（KEYDEF句の追加）

キー値の追加はできません。

(5)　オペランドの説明

SDBデータベース定義の各オペランドの指定内容を説明します。

(a)　SCHEMA

SCHEMA SDBデータベース名

〜＜識別子＞((1〜30バイト))

SDBデータベースのSDBデータベース名を指定します。

すでに使用しているSDBデータベース名は指定できません。

(b)　DBTYPE

定義するSDBデータベースのSDBデータベース種別を指定します。

DBTYPE 4V FMB

SDBデータベース種別が4V FMBのSDBデータベースを定義する場合は，DBTYPE句に4V FMBを指定します。

4V FMBのSDBデータベースとは，階層構造を持つデータベースで，メインフレームのTMS-4V/SPがサポートしているFMBのデータベースに相当します。詳細については，「2.3.3　SDBデータベース」を参照してください。

注意事項

SDBデータベース種別が4V（4V FMBまたは4V AFM）のSDBデータベースとSD FMBのSDBデータベースをシステム内で混在して定義することはできません。混在させた場合，動作を保証しません。

(c)　RECORD

RECORD レコード型名

〜＜識別子＞((1〜30バイト))

レコード型名を指定します。

《規則》

レコード型名は，同一スキーマ内で一意になるように指定してください。

1つのSDBデータベース定義内で指定できるRECORD句は，1〜128個です。

《定義例》

階層構造がルートレコード（RECORD A1），子レコード（RECORD A2），孫レコード（RECORD A3），ひ孫レコード（RECORD A4）の場合を例に，データベースキーの関係を次に示します。

(d)　レベル番号，ITEM

｛レベル番号│ITEM｝ 構成要素名

構成要素に関する情報を指定します。1つのRECORD句内での構成要素の階層レベルを指定します。

すべての構成要素が基本項目の場合，ITEMを指定できます。

1つのレコード型内で，レベル番号とITEMは同時に指定できません。

SDBデータベースにアクセスするためのAPIで「DBKEY」の名称を利用するため，構成要素名として「DBKEY」を指定する必要があります。指定方法の詳細については，「表11-14　ルートレコード型の構成要素の指定」〜「表11-16　子レコード（3階層以降）の構成要素の指定」を参照してください。

レベル番号

〜＜符号なし整数＞((2〜49))

1つのRECORD句内での構成要素の階層レベルを指定します。

階層が深くなるに従ってレベル番号を増やすように指定してください。レベル番号は連続した値である必要はありません。

階層が浅くなるときは，すでに指定したレベル番号にしてください。

ITEM

すべての構成要素が基本項目の場合に指定できます。

構成要素名

〜＜識別子＞((1〜30バイト))

構成要素名を指定します。

《規則》

構成要素名は，RECORD句内で一意にしてください。

RECORD句内に指定できる構成要素の合計長は最大30,000バイトです。また，RECORD句内に指定できる構成要素の個数は最大30,000個です。

各レコード型の最初の基本項目の構成要素のデータ種別1には，Kを指定してください。

上位レコードのキーの構成要素，および一連番号の構成要素は，下位レコードの構成要素として，データ型とデータ種別を同じように指定してください。

ユーザデータ（データ種別1，2（TYPE U,D））の構成要素は，幾つかの構成要素をまとめて，ユーザ任意の集団項目内に指定できます。

ユーザキー（データ種別1，2（TYPE U,K）），ユーザファイル通番（データ種別1，2（TYPE U,F））の構成要素は，集団項目内に指定できません。

(e)　データ型

｛CHARACTER 長さ

│XCHARACTER 長さ

│PACKED 〔DECIMAL FIXED〕 整数部桁数〔，小数部桁数〕

│INTEGER｝

構成要素のデータ型を指定します。構成要素に指定できるデータ型を次の表に示します。

表11‒11　構成要素に指定できるデータ型

データ種別

データ型

データ形式

文字列

CHARACTER

固定長文字列

16進形式の文字列

XCHARACTER

16進固定長文字列

数値

PACKED 〔DECIMAL FIXED〕

符号付きパック形式10進データ

INTEGER

整数

CHARACTER 長さ

〜＜符号なし整数＞((1〜30,000))

文字列データの長さを指定します。

XCHARACTER 長さ

〜＜符号なし整数＞((1〜30,000))

16進形式の文字列データの長さを指定します。

PACKED 〔DECIMAL FIXED〕 整数部桁数〔，小数部桁数〕

整数部桁数

　　〜＜符号なし整数＞((0〜38))

小数部桁数

　　〜＜符号なし整数＞((0〜38))

符号付きパック形式の10進データの整数部桁数，および小数部桁数を指定します。

整数部桁数と小数部桁数の和は，1〜38になるようにしてください。

INTEGER

値の範囲が-2,147,483,648〜2,147,483,647の整数を指定します。長さは指定できません。

《規則》

一連番号の構成要素には，必ずINTEGERを指定してください。

基本項目の場合，データ型およびTYPE句を指定してください。

集団項目の場合，データ型およびTYPE句を省略してください。

KEYDEF句に指定する構成要素については，データの長さを1〜30バイトで指定してください。KEYDEF句については，「11.5.2(3)(v)　KEYDEF」を参照してください。

(f)　TYPE

TYPE データ種別1，データ種別2

構成要素のデータ種別を指定します。

データ種別1

〜＜英字＞((1バイト))

データベースキーかユーザデータかを区別するための種別を指定します。

データ種別2

〜＜英字＞((1バイト))

データ種別1をさらに分類するための詳細な種別を指定します。

TYPE句で指定するデータ種別の指定値と意味を次の表に示します。

表11‒12　データ種別の指定値と意味

データ種別

指定値

意味

データ種別1

K

データベースキーで，次に該当する場合の構成要素

データベースキー

上位レコードの一連番号

自レコードの一連番号（一連番号の最大値（OCCURRENCE NUMBER句の指定）が1以上の場合）

N

自レコードの一連番号（一連番号の最大値（OCCURRENCE NUMBER句の指定）が0の場合）

U

ユーザデータ

データ種別2

A

RDエリア分割キーとする構成要素（SDBデータベースを横分割する際，レコードの格納RDエリアを決める構成要素）

N

自レコードの一連番号の構成要素

データ種別1がKの場合，一連番号属性あり

データ種別1がNの場合，一連番号属性なし

P

上位レコードの一連番号の構成要素

L

そのほかのデータベースキーの構成要素

F

ユーザファイル通番の構成要素

K

ユーザキーの構成要素

D

そのほかのユーザデータの構成要素

《規則》

指定順序と記述の規則

K，N，Uの順に，必要な種別を指定してください。

ユーザデータのあとにデータベースキーを指定することはできません。

そのほかの規則

データ種別1がK，かつデータ種別2がAの構成要素は，ルートレコード型と子レコード型で同一名称にしてください。

データ種別1がK，かつデータ種別2がAの構成要素は，データの長さを1〜30バイトの範囲で指定してください。

RECORD句内では，データ種別2がAの構成要素は，それぞれ最大1つ指定できます。

データ種別1がK，かつデータ種別2がNの場合，一連番号属性があります。OCCURRENCE NUMBER句には1以上を指定するか，または指定を省略してください。

データ種別1がN，かつデータ種別2がNの場合，一連番号属性がありません。OCCURRENCE NUMBER句には0を指定してください。

上位レコードで一連番号属性なしの構成要素（データ種別1，2（N，N））または一連番号属性ありの構成要素（データ種別1，2（K，N））は，下位レコードの構成要素で，データ種別1，2（K，P）を指定してください。

データ種別2がFの構成要素はレコード型内の最後の構成要素に1つだけ指定できます。

データ種別2がKの構成要素は1レコード型に最大1つのユーザキーを指定できます。

構成要素のデータ種別1とデータ種別2で，指定できる組み合わせを次の表に示します。

表11‒13　構成要素のデータ種別1とデータ種別2に指定できる組み合わせ

データ種別1の指定

データ種別2に指定できる値

Kの場合

L

A

N※1

P

Nの場合

N※2

Uの場合

D

F※3

K

注※1

OCCURRENCE NUMBER句は省略するか，または1以上を指定してください。

注※2

OCCURRENCE NUMBER句には0を指定してください。

注※3

レコード型内で最後に1つだけ指定できます。

ルートレコード型と子レコード型（2階層），および子レコード型（3階層以降）の構成要素の指定を次の表に示します。

指定順序や指定する個数，データ種別の組み合わせに誤りがある場合はエラーとなります。なお，1つの項番の中で基本項目と集団項目を複数指定できる場合の，指定順序は任意です。

表11‒14　ルートレコード型の構成要素の指定

指定順

項目

説明

データ種別

1

2

1

「DBKEY」の構成要素名

構成要素名を「DBKEY」とします。

集団項目として指定します。

−

−

2

データベースキー1〜7

構成要素名

各データベースキーを，集団項目「DBKEY」下の基本項目として，同じレベル番号で指定します。

集団項目とはしないでください。

K

L

個数

1〜7

A

3

ユーザデータの構成要素名

ユーザデータの構成要素名を指定します。

−

−

U

D

F

（凡例）

−：該当しません。

表11‒15　子レコード型（2階層）の構成要素の指定

指定順

項目

説明

データ種別

1

2

1

データベースキー1〜7

構成要素名

ルートレコード型で指定したデータベースキーを，同じレベル番号の基本項目として指定します。

集団項目とはしないでください。

K

L

個数

1〜7

A

2

一連番号

OCCURRENCE NUMBER句の指定値が1以上の場合

構成要素名を「DBKEY」とします。

基本項目として指定します。

K

N

OCCURRENCE NUMBER句の指定値が0の場合

N

N

3

ユーザデータの構成要素名

ユーザデータの構成要素名を指定します。

−

−

U

D

K

F

（凡例）

−：該当しません。

表11‒16　子レコード（3階層以降）の構成要素の指定

指定順

項目

説明

データ種別

1

2

1

データベースキー1〜7

構成要素名

上位の子レコード型で指定したデータベースキーを，同じレベル番号の基本項目として指定します。

集団項目とはしないでください。

K

L

個数

1〜7

A

2

上位の一連番号

構成要素名

構成要素名は「DBKEY」以外とします。

上位レコード型で指定した一連番号を，基本項目として指定します。

K

P

個数

上位の子レコード型で指定した一連番号の構成要素数と同じになります（階層−2）。

3

一連番号

OCCURRENCE NUMBER句の指定値が1以上の場合

構成要素名を「DBKEY」とします。

基本項目として指定します。

K

N

OCCURRENCE NUMBER句の指定値が0の場合

N

N

4

ユーザデータの構成要素名

ユーザデータの構成要素名を指定します。

−

−

U

D

K

F

（凡例）

−：該当しません。

(g)　FUNCTION

FUNCTION

〔REFER USE〕

〔ADD ｛USE｜NOUSE｝〕

〔UPDATE ｛USE｜NOUSE｝〕

〔ERASE ｛USE｜NOUSE｝〕

〔ALLERASE NOUSE〕

SDBデータベースへのアクセス属性を指定します。

SDBデータベースへのアクセス属性は，SDBOPTION句下のFUNCTION句でも指定できます。RECORD句内で指定する場合は，各RECORD句にアクセス属性が指定できます。指定を省略した場合は，SDBOPTION句下のFUNCTION句の指定値，または省略値が仮定されます。

REFER USE

レコードの検索を許可します。

常にREFER USEが仮定されます（REFER句を省略しても，REFER USEが仮定されます）。

ADD

レコードの追加を許可するかどうかを指定します。

USE：レコードの追加を許可します。

NOUSE：レコードの追加を許可しません。

RECORD句下のADD句を省略した場合，SDBOPTION句下のADD句の指定値が仮定されます。RECORD句下のADD句とSDBOPTION句下のADD句の両方を省略した場合，USEが仮定されます。

UPDATE

レコードの更新を許可するかどうかを指定します。

USE：レコードの更新を許可します。

NOUSE：レコードの更新を許可しません。

RECORD句下のUPDATE句を省略した場合，SDBOPTION句下のUPDATE句の指定値が仮定されます。RECORD句下のUPDATE句とSDBOPTION句下のUPDATE句の両方を省略した場合，USEが仮定されます。

ERASE

レコードの削除を許可するかどうかを指定します。

USE：レコードの削除を許可します。

NOUSE：レコードの削除を許可しません。

RECORD句下のERASE句を省略した場合，SDBOPTION句下のERASE句の指定値が仮定されます。RECORD句下のUPDATE句とSDBOPTION句下のERASE句の両方を省略した場合，NOUSEが仮定されます。

ALLERASE NOUSE

レコードの一括削除を許可しません。

常にALLERASE NOUSEが仮定されます（ALLERASE句を省略しても，ALLERASE NOUSEが仮定されます）。

(h)　RECORDID

RECORDID レコード識別コード

〜X'＜16進数字＞'((1バイト))

レコード型を識別するコードとして，レコード識別コードを指定します。

《規則》

レコード識別コードを1バイトで指定します。

X'00'以外は重複できません。

(i)　SET

SET 親子集合型名

〜＜識別子＞((1〜30バイト))

親子集合型名を指定します。

《規則》

親子集合型名は，SDBデータベース定義内で一意にしてください。

ルートレコード型の数は1つにしてください。

親レコードから子レコードへの親子集合型をたどった場合に，元のレコードにたどり着くような親子集合型は定義できません。

1つのSDBデータベース定義内に指定できる親子集合型数は，0〜127個です。指定できる親子集合の階層は，1〜15です。

(j)　OWNER

OWNER 親レコード型名

〜＜識別子＞((1〜30バイト))

親子集合の親レコード型名を指定します。

《規則》

親レコード型名には，RECORD句で定義したレコード型名を指定してください。

(k)　ORDER

ORDER ｛LAST│SORTED DUPLICATES PROHIBITED｝

APIによるレコードの格納時（STORE），HiRDB/SDデータベース作成ユティリティ（pdsdblod），またはHiRDB/SDデータベースアクセスユティリティ（pdsdbexe）で，子レコード実現値を親子集合内の任意の実現値に格納する際の位置（親子集合内の子レコードへの挿入順序）を指定します。

LAST

子レコード実現値群の最後に格納します。

SORTED DUPLICATES PROHIBITED

子レコード型で指定したキー項目（データ種別1，2（TYPE U,K））の値に従って，昇順または降順に格納します。

キー項目で指定した値を持つレコードがすでに存在する場合は，レコード実現値の格納を禁止します。

データ種別1，2（TYPE U,K）を指定している場合は，SORTED DUPLICATES PROHIBITEDを指定してください。それ以外の場合は，LASTを指定してください。

《規則》

1つのSET句の指定には，必ずORDER句を指定してください。

(l)　MEMBER

MEMBER 子レコード型名

〜＜識別子＞((1〜30バイト))

親子集合内の子レコード型名を指定します。

《規則》

子レコード型名には，RECORD句で定義したレコード型名を指定してください。ただし，親子集合の親レコード型名と重複する子レコード型名は指定できません。

1つのSET句には，必ずMEMBER句を指定してください。

(m)　INSERTION

INSERTION AUTOMATIC

子レコードを親子集合に格納するときの挿入方法を指定します。

AUTOMATIC

子レコードのレコード実現値がデータベースに格納されると，自動的に親レコードが属する親子集合型の親子集合実現値に格納されます。

(n)　RETENTION

RETENTION FIXED

子レコードを親子集合から切り離すまでの属性を指定します。

FIXED

レコードが，ある親子集合の子レコードになったレコードは，データベースから削除されるまで，その親子集合の子レコードでなければなりません。

(o)　KEY

KEY ｛ASCENDING│DESCENDING｝ 構成要素名

ORDER句でSORTED DUPLICATES PROHIBITEDを指定した親子集合の子レコードを昇順に格納するか，降順に格納するかどうかを指定します。

ASCENDING

子レコードを昇順に格納します。

DESCENDING

子レコードを降順に格納します。

構成要素名

〜＜識別子＞((1〜30バイト))

格納時のキーになる構成要素名を指定します。

《規則》

キーの構成要素長は254バイト以内としてください。

構成要素名に，集団項目の構成要素名は指定できません。

指定できる構成要素は，データ種別1がユーザデータ（U），データ種別2がユーザキー（K）の構成要素だけです。

構成要素名には，RECORD句で定義した構成要素名を指定してください。

1つのKEY句に構成要素名を2つ以上指定できません。

ORDER句でLASTを指定した場合，KEY句は指定できません。

ORDER句でSORTED DUPLICATES PROHIBITEDを指定した場合，必ずKEY句を指定してください。

(p)　SETOPTION

SETOPTION

親子集合に関するオプションを指定します。

(q)　OCCURRENCE NUMBER

OCCURRENCE NUMBER 一連番号の最大値

〜＜符号なし整数＞((0〜2,147,483,647))≪30,000≫

一連番号の最大値を指定します。

0を指定した場合，非オカレンスであることを示します。

《規則》

構成要素のデータ種別1，2の指定がN，Nの場合，OCCURRENCE NUMBER句に0以外を指定，または省略することはできません。

構成要素のデータ種別1，2の指定がK，Nの場合，0は指定できません。

WARNING句またはREUSE句を指定する場合は，この句も指定する必要があります。

(r)　WARNING

WARNING ｛一連番号使用比率1〔，一連番号使用比率2〔，一連番号使用比率3〕〕｜0｝

一連番号の使用状況を監視する場合に，一連番号の使用比率を％単位で指定します。

一連番号使用比率1，一連番号使用比率2，一連番号使用比率3

〜＜符号なし整数＞((50〜99))

割り当て済み一連番号の割合が一連番号使用比率1〜3で指定した値に達した場合※に，メッセージを1回ずつ出力します。0を指定した場合は，割り当て済みの一連番号の監視をしません。

注※　監視値＝↑一連番号の最大値×一連番号使用比率n↑

この句とSDBOPTION句下のOCCURRENCE WARNING句の両方を指定した場合，この句での指定が有効となります。この場合，一連番号使用比率の指定値の個数が異なっていても，双方で補ってメッセージを出力することはありません。

OCCURRENCE NUMBER句の指定が0で，この句を省略した場合，割り当て済みの一連番号の監視をしません。

OCCURRENCE NUMBER句の指定が0以外で，この句を省略した場合，SDBOPTION句下のOCCURRENCE WARNING句の指定が有効となります。

SDBOPTION句下のOCCURRENCE WARNING句も省略した場合，割り当て済みの一連番号の監視をしません。

一度に複数の一連番号使用比率に達した場合は，対応するメッセージがすべて出力されます。例えば，WARNING句の指定を60，70，80とした場合に，1回目のレコードの格納で75％に達した場合は，指定値60と70に対応するメッセージが出力されます。

一連番号の最大値が小さいと，重複指定でなくても内部的に重複指定と同じような扱いになる場合があります。例えば，OCCURRENCE NUMBER句が10，WARNING句が97，98，99と定義した場合，どの指定値も割り当て済み一連番号が10になった時点で，97（％）と98（％）と99（％）に対応するメッセージが出力されます。

一連番号の監視については，「5.25　一連番号の監視」を参照してください。

《規則》

一連番号使用比率を複数指定する場合，指定値が昇順になるように指定してください。

OCCURRENCE NUMBER句との組み合わせ可否を次の表に示します。

表11‒17　SETOPTION句下のOCCURRENCE NUMBER句とWARNING句の組み合わせ可否

SETOPTION句下のOCCURRENCE NUMBER句の指定

SETOPTION句下のWARNING句の指定

0以外

0

0以外

○

○

0

×

○

（凡例）

○：WARNING句が指定できます。

×：WARNING句は指定できません。

表11‒18　SETOPTION句下のOCCURRENCE NUMBER句とSDBOPTION句下のOCCURRENCE WARNING句の組み合わせ可否

SETOPTION句下のOCCURRENCE NUMBER句の指定

SDBOPTION句下のOCCURRENCE WARNING句の指定

0以外

0

すべて0以外

○

○

一部0

○

○

すべて0

×

○

（凡例）

○：OCCURRENCE WARNING句が指定できます。

×：OCCURRENCE WARNING句は指定できません。

FUNCTION句のADD指定との組み合わせとレコードの追加可否を次の表に示します。

表11‒19　FUNCTION句のADD指定との組み合わせとレコードの追加可否

SDBデータベース種別

SDBOPTION句下のFUNCTION句のADD指定

省略

U

N

子レコードのFUNCTION句のADD指定

省略

U

N

省略

U

N

省略

U

N

4V FMB

○

○

×

○

○

×

×

○

×

（凡例）

U：USE指定

N：NOUSE指定

○：レコードの指定ができます。

×：レコードの指定ができません。

子レコードへの追加可否との組み合わせを次の表に示します。

表11‒20　子レコードへの追加可否とWARNING句の組み合わせ可否

子レコードへの追加

SETOPTION句下のWARNING句の指定

0以外

0

できる

○

○

できない

×

○

（凡例）

○：WARNING句が指定できます。

×：WARNING句は指定できません。

表11‒21　子レコードへの追加可否とSDBOPTION句下のOCCURRENCE WARNING句の組み合わせ可否

子レコードへの追加

SDBOPTION句下のOCCURRENCE WARNING句の指定

0以外

0

すべての子レコードに対してできる

○

○

一部の子レコードに対してできる

○

○

すべての子レコードに対してできない

×

○

（凡例）

○：OCCURRENCE WARNING句が指定できます。

×：OCCURRENCE WARNING句は指定できません。

(s)　REUSE

REUSE ｛YES│NO｝

削除された一連番号を再利用するかどうかを指定します。

レコードを一括削除した場合，または全件削除した場合は，REUSE句の指定に関係なく，最初から一連番号を振り直します。

YES

一連番号を再利用します。

一連番号を再利用するには，ERASE句にUSEを指定している必要があります。

なお，OCCURRENCE NUMBER句に0を指定してもエラーにはなりません。

ORDER句でSORTED DUPLICATES PROHIBITEDを指定した場合は指定できません。

NO

削除された一連番号を再利用しません。

一連番号再利用の例を次の図に示します。

図11‒14　一連番号再利用の例

(t)　SDBOPTION

SDBOPTION

SDBデータベースのオプション機能を定義します。

(u)　FUNCTION

FUNCTION

〔REFER USE〕

〔ADD ｛USE｜NOUSE｝〕

〔UPDATE ｛USE｜NOUSE｝〕

〔ERASE ｛USE｜NOUSE｝〕

〔ALLERASE NOUSE〕

〔DBLODUTL USE〕

〔FORMAT NOUSE〕

SDBデータベースへのアクセス属性を指定します。

REFER句，ADD句，UPDATE句，ERASE句，ALLERASE句の詳細については，「11.5.1(5)(g)　FUNCTION」を参照してください。

DBLODUTL USE

HiRDB/SDデータベース作成ユティリティ（pdsdblod）のデータロード機能の実行を許可します。

常にDBLODUTL USEが仮定されます（DBLODUTL句を省略しても，DBLODUTL USEが仮定されます）。

FORMAT NOUSE

HiRDB/SDデータベース作成ユティリティ（pdsdblod）のデータベースへのフォーマットライト機能が使用できません。

常にFORMAT NOUSEが仮定されます（FORMAT句を省略しても，FORMAT NOUSEが仮定されます）。

(v)　OCCURRENCE WARNING

OCCURRENCE WARNING ｛一連番号使用比率1〔，一連番号使用比率2〔，一連番号使用比率3〕〕

｜0｝

一連番号の使用状況を監視する場合に，一連番号の使用比率を％単位で指定します。

一連番号使用比率1，一連番号使用比率2，一連番号使用比率3

〜＜符号なし整数＞((50〜99))

割り当て済み一連番号の割合が，一連番号使用比率1〜3で指定した値に達した場合に，メッセージを1回ずつ出力します。0を指定した場合，またはこの句を省略した場合は，割り当て済み一連番号の監視はしません。

この指定はすべての子レコード型に対して有効となりますが，SETOPTION句下でWARNING句を指定した場合は，SETOPTION句下のWARNING句の指定が有効となります。この場合，一連番号使用比率の指定値の個数が異なっても，双方で補ってメッセージを出力することはありません。

一連番号の監視については，「5.25　一連番号の監視」を参照してください。

《規則》

ルートレコード型だけを定義している場合は，このオペランドを指定できません。

ルートレコード型だけの定義に対して，子レコード型を1個以上追加する場合は追加指定ができます。

上記以外の規則については，SETOPTION句下の「(r)　WARNING」の規則を参照してください。

(w)　END SCHEMA

END SCHEMA

SDBデータベース定義の終了を示します。

11.5.2　SDBデータベース格納定義【4V FMB】

*ENTRY DICTIONARY文または*ALTER DICTIONARY文に指定するSDBデータベース格納定義について説明します。

注意事項

*ENTRY DICTIONARY文または*ALTER DICTIONARY文に指定したSDBデータベース格納定義は保存しておいてください。*ALTER DICTIONARY文でSDBデータベース格納定義を変更する際，変更個所だけを指定するのではなく，変更後のSDBデータベース格納定義をすべて指定する必要があります。このとき，保存しておいたSDBデータベース格納定義が必要になります。

(1)　機能

SDBデータベースを格納する際の論理構造を定義します。

(2)　形式

項番

形式

オペランドの変更可否

レコード型の追加時※1

RDエリアの変更時※1

(a)

STORAGE SCHEMA SDBデータベース格納名 FOR SDBデータベース名

×

×

(b)

DBTYPE 4V

×

(c)

　STORAGE RECORD 格納レコード名

○※2

(d)

　　　｛CLUSTERED 親子集合型名

　　　　　｜SEQUENTIAL シーケンシャルインデクス名

(e)

　　　FOR RECORD

(f)

　　　ORDER KEY ASCENDING 構成要素名〔，構成要素名〕…

(g)

　　　〔PCTFREE ページ内の未使用領域の比率〕

(h)

　　　WITHIN ｛シーケンシャルインデクス用RDエリア名

　　　　　　　　　｜（シーケンシャルインデクス用RDエリア名）

　　　　　　　　　｜（（シーケンシャルインデクス用RDエリア名）

　　　　　　　　　〔，（シーケンシャルインデクス用RDエリア名）〕…）｝

　　　｝

○※3，※4，※6

(i)

　　　〔SUBPAGE NUMBER サブページ分割数〕

×

(j)

　　　〔PCTFREE ｛ページ内の未使用領域の比率

　　　　　｜（〔ページ内の未使用領域の比率〕，セグメント内の空きページの比率）｝〕

(k)

　　　〔DEPENDING ON 構成要素名〕

(l)

　　　WITHIN ｛格納レコード用RDエリア名

　　　　　　　｜（格納レコード用RDエリア名）

　　　　　　　｜（（格納レコード用RDエリア名） 〔格納条件〕

　　　　　　　　〔，（格納レコード用RDエリア名） 格納条件〕…）

　　　　　　　｜（（格納レコード用RDエリア名） RDエリア分割キー値

　　　　　　　　〔，（格納レコード用RDエリア名） RDエリア分割キー値…〕

　　　　　　　　　，（格納レコード用RDエリア名））｝

○※3，※4，※6

(m)

　　　〔POINTER AREA SIZE 管理領域の予備領域の長さ〕

×

(n)

　　　〔SECONDARY INDEX 二次インデクス名

(o)

　　　　　　ORDER KEY ASCENDING 構成要素名，構成要素名〔，構成要素名〕…

(p)

　　　　　〔PCTFREE ページ内の未使用領域の比率〕

(q)

　　　　　　WITHIN ｛二次インデクス用RDエリア名

　　　　　　　　　｜（二次インデクス用RDエリア名）

　　　　　　　　　｜（（二次インデクス用RDエリア名）

　　　　　　　　　　〔，（二次インデクス用RDエリア名）〕…）｝

○※3，※4，※6

　　　　〕…

　…

(r)

　〔SET 親子集合型名

×

(s)

　　　　OWNER POINTER FOR ｛FIRST LAST

　　　　　　　　　　　　　　　｜FIRST LAST USER｝ MEMBER

(t)

　　　　MEMBER POINTER FOR NEXT PRIOR TENANT

　　〕…

(u)

　〔SDBOPTION

×

(v)

　　　〔KEYDEF 構成要素名

(w)

　　　　　　DATA データベースのキー値 …

○※5

　　　　〕…

　　〕

(x)

END STORAGE SCHEMA

×

×

（凡例）

○：*ALTER DICTIONARY文の実行時に変更できるオペランドです。

×：*ALTER DICTIONARY文の実行時に変更できないオペランドです。

注

定義句は，形式で記述している順序に従って指定します。必須の定義と省略できる定義の間は形式で記載されているとおりに指定してください。

*ALTER DICTIONARY文で子レコード型を追加した場合，POINTER AREA SIZE句に指定していた管理領域の予備領域の長さが自動的に変更されることがあります。変更後の値については，KFPB61784-Iメッセージに出力されます。

注※1

*ALTER DICTIONARY文実行時のオペランド追加可否です。

注※2

最下位の子レコード型の追加とその親子集合の追加ができます。

STORAGE RECORD句とSET句は必ず両方指定してください。どちらか片方だけを指定することはできません。

既存の格納レコード型の定義は変更できません。

注※3

格納レコード用RDエリアとインデクス用RDエリアはペアで変更します。

１つの*ALTER DICTIONARY文で実行できる格納レコード用RDエリアの変更を次の表に示します。

表11‒22　1つの*ALTER DICTIONARY文で実行できる格納レコード用RDエリアの変更

格納レコード用RDエリア変更内容

横分割の方法

格納条件指定

境界値指定

1つのRDエリアを追加または削除

○

−

複数のRDエリアを追加または削除

○

−

1つのRDエリアを複数のRDエリアに分割

○

○

複数のRDエリアを複数のRDエリアに分割

×

×

複数のRDエリアを1つのRDエリアに統合

○

○

複数のRDエリアを複数のRDエリアに統合

×

×

格納RDエリア数を変更しないで，格納条件だけを追加，更新，または削除

×

×

（凡例）

○：実行できます。

×：実行できません。

−：該当しません。

なお，次の操作はできません。

1つのRDエリアに格納していたレコード型を，複数のRDエリアに分割格納する変更

複数のRDエリアに分割格納していたレコード型を，1つのRDエリアに格納する変更

横分割方法の変更

格納条件指定で分割していた定義を，境界値指定の分割に変更することはできません。また，その逆もできません。

1つのRDエリアを複数のRDエリアに分割する際，分割元のRDエリアを削除する変更

複数のRDエリアを1つのRDエリアに統合する際，統合先のRDエリアに統合元のRDエリアを使用しない変更

注※4

次の条件をすべて満たす場合，RDエリアの追加，削除はできません。

境界値分割指定である

レコード型がサーバ内で横分割されていない

レコード型の先頭のデータベースキーのデータ種別がK，A以外である

同一RDエリアに格納する条件を複数に分けて定義している

例を次に示します。

［説明］

REC1は親レコードを示しています。

店番は，REC1の分割キーを示しています。

REC1は，3つのBESおよび3つのRDエリアに境界値分割されています。

注※5

RDエリアの追加および境界値分割のRDエリアの分割の場合に，RDエリア分割キーの追加ができます。

RDエリアの削除および境界値分割のRDエリアの統合の場合に，RDエリア分割キーの削除ができます。

注※6

RDエリアの定義を変更した場合，変更対象のRDエリアに格納されているデータが削除されることがあります。RDエリアの定義変更時のデータの削除有無を次の2つの表に示します。

表11‒23　RDエリアの定義変更時のデータの削除有無（格納条件指定の横分割の場合）

分割格納条件の変更の種類

RDエリアごとの変更内容

データの削除有無

追加

追加

×

格納条件を変更しない

×

削除

削除

○

格納条件を変更しない

×

分割

追加

×

格納条件を一部削除※2

○※1

格納条件を変更しない

×

統合

格納条件を一部追加※3

×

削除

○

格納条件を変更しない

×

（凡例）

○：データが削除されます。

×：データは削除されません。

注※1

同期点処理が行われます。

注※2

分割元のRDエリアです。

注※3

統合先のRDエリアです。

表11‒24　RDエリアの定義変更時のデータの削除有無（境界値指定の横分割の場合）

分割格納条件の変更の種類

RDエリアごとの変更内容

データの削除有無

分割

追加

×

境界値の範囲を変更

境界値の範囲を一部追加※2

×

境界値の範囲を一部削除※3

○※1

境界値の範囲を変更しない

×

統合

境界値の範囲を変更

境界値の範囲を一部追加※4

×

境界値の範囲を一部削除※5

○※1

削除

○

境界値の範囲を変更しない

×

（凡例）

○：データが削除されます。

×：データは削除されません。

注※1

同期点処理が行われます。

注※2

すでに使用しているRDエリアに対して，RDエリア分割キー値の格納範囲を追加するケースが該当します。

（例）

上記の例の場合，RDエリア2がこのケースに該当します。RDエリア1の境界値の範囲のうち，店番21〜をRDエリア2に分割しています。

注※3

分割元のRDエリアです。

注※4

統合先のRDエリアです。

注※5

統合元のRDエリアのうち，RDエリア分割キー値の格納範囲の一部が削除されるRDエリアが該当します。

（例）

上記の例の場合，RDエリア2がこのケースに該当します。RDエリア2の境界値の範囲のうち，店番21〜をRDエリア1に統合しています。

(3)　オペランドの説明

SDBデータベース格納定義の各オペランドの指定内容を説明します。

(a)　STORAGE SCHEMA

STORAGE SCHEMA SDBデータベース格納名 FOR SDBデータベース名

SDBデータベース格納名と対応するSDBデータベース名を指定します。

SDBデータベース格納名

〜＜識別子＞((1〜30バイト))

SDBデータベース格納名を指定します。

すでに使用しているSDBデータベース格納名は指定できません。

SDBデータベース名

〜＜識別子＞((1〜30バイト))

SDBデータベース名を指定します。

SDBデータベース名に一致する名称がSDBデータベース定義にない場合は，エラーとなります。

(b)　DBTYPE

DBTYPE 4V

SDBデータベース種別が4V FMBのSDBデータベースを定義します。

注意事項

SDBデータベース種別が4V（4V FMBまたは4V AFM）のSDBデータベースとSD FMBのSDBデータベースをシステム内で混在して定義することはできません。混在させた場合，動作を保証しません。

(c)　STORAGE RECORD

STORAGE RECORD 格納レコード名

格納レコード名

〜＜識別子＞((1〜30バイト))

SDBデータベース定義のRECORD句で指定したレコード型名を，格納レコード名として指定します。

《規則》

SDBデータベース定義のRECORD句で指定したレコード型名と同じ個数，同じ順番で指定してください。

すでに使用している格納レコード名は指定できません。ただし，格納レコードの所有者（スキーマ）が異なる場合は，同じ格納レコード名を指定できます。

(d)　CLUSTERED，SEQUENTIAL

CLUSTERED 親子集合型名｜SEQUENTIAL シーケンシャルインデクス名

格納するレコードの配置方法を指定します。

CLUSTERED 親子集合型名

親子集合型名

　　〜＜識別子＞((1〜30バイト))

すべての子レコードを親レコードと同じRDエリアに格納する場合に指定します。

《規則》

STORAGE RECORD句に指定したレコード型ごとに1つ指定できます。STORAGE RECORD句に指定したレコード型が，ルートレコード型の場合は指定できません。

SDBデータベース格納定義のSET句に指定する親子集合型名と同じ個数，同じ順番で指定してください。

SEQUENTIAL シーケンシャルインデクス名

インデクスのキーの値の順序に従って，親レコード実現値の格納位置を決めるときに指定します。SEQUENTIAL句は，ルートレコード型に必ず指定します。

シーケンシャルインデクス名

　　〜＜識別子＞((1〜30バイト))

STORAGE RECORD句に指定したルートレコード型に対して1つ指定します。STORAGE RECORD句に指定したレコード型が，ルートレコード型以外の場合は指定できません。

《規則》

シーケンシャルインデクス名には，二次インデクス名とは別の名称を指定してください。

シーケンシャルインデクス名は，同一スキーマ内で一意になるように指定してください。二次インデクス名も含めて一意になるようにしてください。

(e)　FOR RECORD

FOR RECORD

レコード型単位にシーケンシャルインデクスを作成します。

キーの値が同じ場合，シーケンシャルインデクスへの格納を禁止します。

(f)　ORDER KEY

ORDER KEY ASCENDING 構成要素名〔，構成要素名〕…

インデクスのキーとなる構成要素名を指定します。

指定した構成要素名をキーとして，昇順にシーケンシャルインデクスが作成されます。

ASCENDING

昇順にシーケンシャルインデクスを作成します。

構成要素名

〜＜識別子＞((1〜30バイト))

インデクスのキーに指定する構成要素を次に示すように指定してください。

SDBデータベース定義内のルートレコード型のデータベースキーに指定した基本項目の構成要素名を，定義順にすべて指定します。ルートレコード型の構成要素の指定については，「表11-14　ルートレコード型の構成要素の指定」を参照してください。SDBデータベースの定義例については，「11.11.1　SDBデータベースの定義例（4V FMBの場合）」を参照してください。

《規則》

構成要素名は，格納レコード名と対応するSDBデータベース定義のレコード型名で指定した構成要素名としてください。

シーケンシャルインデクス作成時に指定できる構成要素名の条件について，次の表に示します。

表11‒25　シーケンシャルインデクス作成時に指定できる構成要素名の条件

項目

内容

指定できる構成要素名の数

最大7個

インデクスのキー長の合計

255バイト以内

インデクスのキーに指定する構成要素とキー長の関係については，「表11-26　インデクスのキーに指定する構成要素とキー長の関係」を参照してください。

構成要素名

基本項目の構成要素名

集団項目が含まれる構成要素名は指定できません。

表11‒26　インデクスのキーに指定する構成要素とキー長の関係

データ型

インデクスのキー長（単位：バイト）

構成要素名の指定が1つの場合

構成要素名の指定が複数の場合

CHARACTER

SDBデータベース定義で指定したデータ長

SDBデータベース定義で指定したデータ長＋制御部（1バイト）

XCHARACTER

PACKED 〔DECIMAL FIXED〕 整数部桁数〔，小数部桁数〕

↓（整数部桁数＋小数部桁数）÷2↓＋1

↓（整数部桁数＋小数部桁数）÷2↓＋2

INTEGER

4

5

(g)　PCTFREE

PCTFREE ページ内の未使用領域の比率

〜＜符号なし整数＞((0〜99))≪30≫

インデクスページ内の未使用領域の比率を指定します。

(h)　WITHIN

WITHIN ｛シーケンシャルインデクス用RDエリア名

｜（シーケンシャルインデクス用RDエリア名）

｜（（シーケンシャルインデクス用RDエリア名）

〔，（シーケンシャルインデクス用RDエリア名）〕…）｝

シーケンシャルインデクス用RDエリア名

〜＜RDエリア名＞((1〜30バイト))

シーケンシャルインデクスを格納するRDエリア名を指定します。

1つのSEQUENTIAL句に対して，WITHIN句を必ず1つ指定してください。

《規則》

シーケンシャルインデクスを複数のRDエリアに格納する場合の規則

シーケンシャルインデクス用RDエリアとして指定できるRDエリアの数とSDBデータベースの横分割の関係を次の表に示します。

表11‒27　シーケンシャルインデクス用RDエリアとして指定できるRDエリア数とSDBデータベースの横分割の関係

SDBデータベースの横分割方法

指定できるRDエリア数

分割指定なし

1

格納条件分割

1〜256

境界値分割

2〜3,000（1,024）※

注※

WITHIN句に指定できるRDエリア名の延べ数の最大値は3,000になります。1,024は，WITHIN句にRDエリア名を重複して指定する場合，RDエリア名の重複を排除して数えたときの最大値です。

シーケンシャルインデクス用RDエリアは，格納レコード用RDエリアと同じ数を指定する必要があります。

1つのWITHIN句の中では，シーケンシャルインデクス用RDエリア名は一意に指定してください。なお，境界値分割指定の場合，隣接するRDエリア名が重複している場合だけエラーとなります。

境界値分割指定の格納レコード用RDエリアを重複して指定している場合は，シーケンシャルインデクス用RDエリアも重複して指定してください。シーケンシャルインデクス用RDエリアを重複して指定する場合の例を次の表に示します。

表11‒28　シーケンシャルインデクス用RDエリアを重複して指定する場合の例

指定

格納レコード用RDエリアの指定

シーケンシャルインデクス用RDエリアの指定

RDエリアの重複なし

((RDAREAX) X'00FF',

(RDAREA1) X'01FF',

(RDAREA2) X'03FF',

(RDAREA3) )

((RDAREAX_I),

(RDAREA1_I),

(RDAREA2_I),

(RDAREA3_I))

RDエリアの重複あり

((RDAREAX) X'00FF',

(RDAREA1) X'01FF',

(RDAREA2) X'03FF',

(RDAREA1))

((RDAREAX_I),

(RDAREA1_I),

(RDAREA2_I),

(RDAREA1_I))

格納レコード用RDエリアと対応するシーケンシャルインデクス用RDエリアは，同じサーバ内のRDエリアである必要があります。

指定するシーケンシャルインデクス用RDエリアに関する規則

格納レコード用RDエリアとして指定したRDエリアは指定できません。

シーケンシャルインデクス用RDエリアには，create rdarea文のdata modelオペランドにstructuredを指定したRDエリアを指定してください。

シーケンシャルインデクス用RDエリアとして指定するRDエリアには，1つのRDエリアにシーケンシャルインデクスと二次インデクスを合わせて，インデクスを最大500個指定できます。

インナレプリカ機能を使用する場合，指定するRDエリアはインナレプリカ機能の使用条件を満たしている必要があります。インナレプリカ機能の使用条件については，「付録J　インナレプリカ機能使用時のHiRDB/SD定義ユティリティ（pdsdbdef）の実行【4V FMB，4V AFM】」を参照してください。

シーケンシャルインデクス用RDエリアに定義できるリソースの組み合わせを次の表に示します。

表11‒29　RDエリアに定義できるリソースの組み合わせ

定義するリソース

RDエリアの定義

レコード型・インデクス定義なし

SDBデータベース格納定義A

レコード型定義あり

インデクス定義あり

SDBデータベース格納定義A

レコード型

○

○

×

インデクス

○

×

○

SDBデータベース格納定義B

レコード型

○

×

×

インデクス

○

×

○

（凡例）

○：定義できます。

×：定義できません。

(i)　SUBPAGE NUMBER

SUBPAGE NUMBER サブページ分割数

サブページ分割数

〜＜符号なし整数＞((2〜16))

1データページ当たりのサブページ分割数を指定します。SUBPAGE NUMBERを省略した場合，サブページ分割されません。サブページ分割数の設計方針については，「3.2.4　サブページの設計」を参照してください。

《規則》

ルートレコード型，およびすべての子レコード型で同じサブページ分割数を指定してください。

サブページ分割数を指定する場合，格納レコード用RDエリアのページ長が，4096バイトである必要があります。

(j)　PCTFREE

PCTFREE ｛ページ内の未使用領域の比率

｜（〔ページ内の未使用領域の比率〕，セグメント内の空きページの比率）｝

ページ内の未使用領域の比率

〜＜符号なし整数＞((0〜99))

セグメント内の空きページの比率

〜＜符号なし整数＞((0〜50))

データベースの初期作成時に設定するページ内の未使用領域の比率を指定します。ページ内の未使用領域の比率は，0〜99（％）の範囲で指定できます。ページ内の未使用領域の比率を省略すると，30（％）が仮定されます。

SUBPAGE NUMBER句でサブページ分割数を指定している場合，ページ内の未使用領域の比率は，サブページ内の未使用領域の比率になります。例えば，30を指定した場合，サブページ内の未使用領域の比率が30％になります。

また，セグメント内の空きページの比率を0〜50（％）の範囲で指定できます。セグメント内の空きページの比率を省略すると，10（％）が仮定されます。

《規則》

ルートレコード型，およびすべての子レコード型で同じ値を指定してください。

(k)　DEPENDING ON

DEPENDING ON 構成要素名

構成要素名

〜＜識別子＞((1〜30バイト))

SDBデータベースを境界値で複数のRDエリアに横分割して格納する場合の，境界値分割のキーとなる構成要素名を指定します。

《規則》

ルートレコード型にだけ指定できます。

CLUSTERED句を指定した格納レコードに対しては指定できません。

格納レコード名と対応するSDBデータベース定義のレコード型名で指定した構成要素名である必要があります。

構成要素名には，データ種別1がK，データ種別2がAの構成要素名を指定します。

SDBデータベースの横分割方法が格納条件指定の場合は指定できません。

(l)　WITHIN

WITHIN ｛格納レコード用RDエリア名

｜（格納レコード用RDエリア名）

｜（（格納レコード用RDエリア名） 〔格納条件〕

〔，（格納レコード用RDエリア名） 格納条件〕…）

｜（（格納レコード用RDエリア名） RDエリア分割キー値

〔，（格納レコード用RDエリア名） RDエリア分割キー値…〕

，（格納レコード用RDエリア名））｝

格納レコード用RDエリア名

〜＜RDエリア名＞((1〜30))

格納条件

〜構成要素名＝（RDエリア分割キー値〔，RDエリア分割キー値〕…）

RDエリア分割キー値

〜X'＜16進数字＞'((1〜30バイト))

〜'＜英数字または下線（_）＞'((1〜30バイト))※1

〜＜10進数定数＞※2

〜＜整数定数＞※3

注※1

先頭に下線（_）は指定できません。

注※2

10進数定数については，マニュアル「HiRDB Version 9 SQLリファレンス」の「定数」を参照してください。

整数部と小数部にすべて0を指定する場合，符号に-を指定しないでください。-0.を指定しても0.として扱います。

なお，10進数定数の値の範囲を超える値を指定できません。

注※3

整数定数については，マニュアル「HiRDB Version 9 SQLリファレンス」の「定数」を参照してください。

-0を指定しても0として扱います。

なお，整数定数の値の範囲を超える値を指定できません。

レコード実現値を格納するRDエリア名を指定します。

1つのSTORAGE RECORD句に対して，WITHIN句を必ず1つ指定してください。

RDエリア分割キーのデータ型ごとのRDエリア分割キー値の指定形式を次の表に示します。

表11‒30　RDエリア分割キーのデータ型ごとのRDエリア分割キー値の指定形式

RDエリア分割キーのデータ型

RDエリア分割キー値の指定形式

16進数字

英数字，または下線(_)

10進数定数

整数定数

CHARACTER

○

○

×

×

XCHARACTER

○

○

×

×

PACKED 〔DECIMAL FIXED〕

×

×

○

×

INTEGER

×

×

×

○

（凡例）

○：指定できます。

×：指定できません。

《規則》

レコードを複数のRDエリアに格納する場合の規則

1レコード型に対して指定できる格納レコード用RDエリアの数とSDBデータベースの横分割の関係を次の表に示します。

表11‒31　レコード型に対して指定できる格納レコード用RDエリアの数とSDBデータベースの横分割の関係

SDBデータベースの横分割方法

指定できるRDエリア数

分割指定なし

1

格納条件分割

1〜256

境界値分割

2〜3,000（1,024）※

注※

WITHIN句に指定できるRDエリア名の延べ数の最大値は3,000になります。1,024は，WITHIN句にRDエリア名を重複して指定する場合，RDエリア名の重複を排除して数えたときの最大値です。

格納条件分割で格納レコード用RD エリア名を複数指定した場合は，すべての格納レコード用RD エリア名に格納条件を指定してください。

同一SDBデータベース格納定義内の子レコード型に指定する格納レコード用RDエリア名は，ルートレコード型と同じ数，同じ順番ですべて指定する必要があります。

1つのWITHIN句の中では，格納レコード用RDエリア名は一意に指定してください。なお，境界値分割指定の場合，隣接するRDエリア名が重複している場合だけエラーとなります。

RDエリア分割キー値に指定できる範囲を次の表に示します。

表11‒32　RDエリア分割キー値に指定できる範囲

RDエリア分割キー値の指定形式

SDBデータベースの横分割方法

RDエリア分割キー値

最小

最大

16進数字

格納条件分割

X'00…00'

X'FF…FF'

境界値分割

X'00…00'

X'FF…FE'

10進数定数

格納条件分割

-9…9.9…9

（整数部と小数部がRDエリア分割キーの全体桁数分'9'の負の数）

9…9.9…9

（整数部と小数部がRDエリア分割キーの全体桁数分'9'の正の数）

境界値分割

-9…9.9…9

（整数部と小数部がRDエリア分割キーの全体桁数分'9'の負の数）

9…9.9…8

（整数部と小数部がRDエリア分割キーの全体桁数のうち，最後の桁を除くすべての桁が'9'かつ最後の桁が'8'の正の数）

整数定数

格納条件分割

−2147483648

2147483647

境界値分割

−2147483648

2147483646

指定する格納レコード用RDエリアに関する規則

インデクスを格納するRDエリアは指定できません。

格納レコード用RDエリアには，create rdarea文のdata modelオペランドにstructuredを指定したRDエリアを指定してください。

指定するRDエリア名には，格納レコード長が当該RDエリアのページ長（サブページ分割をしている場合はサブページ長）に収まるRDエリア名を指定してください。

インナレプリカ機能を使用する場合，指定するRDエリアはインナレプリカ機能の使用条件を満たしている必要があります。インナレプリカ機能の使用条件については，「付録J　インナレプリカ機能使用時のHiRDB/SD定義ユティリティ（pdsdbdef）の実行【4V FMB，4V AFM】」を参照してください。

格納レコード用RDエリアに定義できるリソースの組み合わせについては，「表11-29　RDエリアに定義できるリソースの組み合わせ」を参照してください。

レコードの格納条件に関する規則

格納条件は，ルートレコード型にだけ指定できます。

格納条件に指定する構成要素に関する規則

1個のWITHIN句の中では，単一の構成要素名を指定してください。複数種類の構成要素名は指定できません。

構成要素名には，SDBデータベース定義で指定した構成要素名を指定してください。

構成要素名には，データ種別1がK，データ種別2がAの構成要素名を指定してください。

格納条件のRDエリア分割キー値に関する規則

1つのWITHIN句に対するRDエリア分割キー値は，最大4,000個指定できます。

1つのWITHIN句の中で同じRDエリア分割キー値は重複して指定できません。

RDエリア分割キーのデータ型がCHARACTER，またはXCHARACTERの場合，指定したRDエリア分割キー値の長さは，SDBデータベース定義で指定した格納条件の構成要素の長さと一致させる必要があります。

RDエリア分割キーのデータ型がPACKEDの場合，RDエリア分割キーの整数部桁数，および小数部桁数の範囲内の値を指定してください。

境界値分割時（DEPENDING ON句指定時）のRDエリア分割キー値に関する規則

最初に境界値を指定するRDエリアには，指定する境界値以下の値のレコードが格納されます。

2番目以降（最後は除く）に指定するRDエリアには，その前に指定した境界値より大きく，かつその後に指定する境界値以下の値のレコードが格納されます。

最後に指定するRDエリアには，その前に指定した境界値より大きい値のレコードが格納されます。

境界値分割時のSDBデータベースの横分割とSDBデータベース格納定義の例を次の図に示します。

図11‒15　境界値分割時のSDBデータベースの横分割とSDBデータベース格納定義の例

＜定義例＞

STORAGE SCHEMA SCM01 FOR SCM01
  DBTYPE 4V
  STORAGE RECORD RECA
    SEQUENTIAL IDX1 FOR RECORD
        ：
      WITHIN ((RI1),(RI2),(RI1),(RI2))
    DEPENDING ON C1
      WITHIN ((RT1)100,(RT2)200,(RT1)300,(RT2))
        ：
END STORAGE SCHEMA

境界値分割時には，格納条件の指定はできません（RDエリア分割キー値の指定をする必要があります）。

RDエリア分割キーのデータ型がCHARACTER，またはXCHARACTERの場合，RDエリア分割キー値の長さは，DEPENDING ON句で指定した構成要素の長さと一致させる必要があります。

RDエリア分割キー値は重複して指定できません。

RDエリア分割キー値は昇順に指定する必要があります。

RDエリア分割キー値を16進数字，英数字または下線（_）の形式で指定する場合，RDエリア分割キー値の長さが1つ目の長さと異なるとエラーとなります。

RDエリア分割キーのデータ型がPACKEDの場合，RDエリア分割キーの整数部桁数，および小数部桁数の範囲内の値を指定してください。

参考

境界値分割を指定している場合，WITHIN句では隣接する同一RDエリア名に対する境界値の指定ができません。このため，TMS-4V/SPの境界値リストに相当する情報をKEYDEF句下のDATA句で指定できます。詳細については，「11.5.2(3)(v)　KEYDEF」を参照してください。

(m)　POINTER AREA SIZE

POINTER AREA SIZE 管理領域の予備領域の長さ

管理領域の予備領域の長さ

〜＜符号なし整数＞((0〜16,384))≪0≫

親レコードで管理している子レコード用の管理領域の予備領域の長さを指定します。

管理領域では，ポインタの情報や一連番号などを管理しています。

将来の親子集合の拡張を考慮して，親子集合1個当たり，約40バイトの予備領域を指定しておくことを推奨します。

(n)　SECONDARY INDEX

SECONDARY INDEX 二次インデクス名

二次インデクス名

〜＜識別子＞((1〜30バイト))

二次インデクス名を指定します。

《規則》

二次インデクスはルートレコード型には指定できません。

二次インデクス名は，同一スキーマ内で一意になるように指定してください。シーケンシャルインデクス名も含めて一意になるようにしてください。

二次インデクス名には，シーケンシャルインデクス名とは別の名称を指定してください。

SECONDARY句は，1つのSTORAGE RECORD句内で2つまで指定できます。詳細については，「表11-33　二次インデクスの定義規則」を参照してください。

(o)　ORDER KEY

ORDER KEY ASCENDING 構成要素名，構成要素名〔，構成要素名〕…

構成要素名

〜＜識別子＞((1〜30バイト))

二次インデクスのキーとなる構成要素名を指定します。

ORDER KEY句については，「11.5.2(3)(f)　ORDER KEY」を参照してください。

《規則》

1つのSTORAGE RECORD内に複数の二次インデクスを定義する場合，すべての構成要素名の指定順序が同一のインデクスを複数定義できません。

二次インデクスについては，「表11-33　二次インデクスの定義規則」に従って定義してください。

ユーザキーを含む場合，SDBデータベース定義のKEY句にASCENDINGを指定してください。

1つの二次インデクスに指定できる構成要素の数は，2〜16個です。

二次インデクスの構成要素の指定順序は，次の表の「指定する構成要素」の記述順に従ってください。データベースキー1〜7，上位の一連番号，一連番号，またはユーザキーは，SDBデータベース定義の定義順ですべて指定してください。

表11‒33　二次インデクスの定義規則

レコード型種別

一連番号最大値※1

ユーザキー※2

二次インデクスの指定

指定する構成要素

ルートレコード型

−

−

×

−

ルートレコード型以外

1以上

なし

0〜1本

データベースキー1〜7，上位の一連番号群※3，一連番号

あり

0〜2本

データベースキー1〜7，上位の一連番号群※3，一連番号

データベースキー1〜7，上位の一連番号群※3，ユーザキー

0

−

×

−

（凡例）

×：指定できません。

−：該当しません。

注※1

SDBデータベース定義のOCCURRENCE NUMBER句の指定値，または省略値です。

注※2

SDBデータベース定義のTYPE句のデータ種別1にU，データ種別2にKを指定した構成要素です。

注※3

二次インデクスを指定したレコード型に含まれる，すべての上位の一連番号（データ種別1がK，かつデータ種別2がPの構成要素）を指定してください。なお，上位の一連番号は存在しない場合があります。

二次インデクスに指定する構成要素の定義例を次に示します。

上位の一連番号なしで，ユーザキーなしの場合

SDBデータベース定義

                           :
RECORD RECB
    2 DBKEY_L2  XCHARACTER  1  TYPE K,L
    2 DBKEY_L3  XCHARACTER  1  TYPE K,L
    2 DBKEY_L4  CHARACTER   3  TYPE K,L
    2 DBKEY     INTEGER        TYPE K,N
    2 USERDB0   CHARACTER   20 TYPE U,D
                           :

SDBデータベース格納定義

                           :
STORAGE RECORD RECB
    CLUSTERED SET1
    WITHIN  FMBX01
    SECONDARY INDEX  RECB_SI1
      ORDER KEY ASCENDING  DBKEY_L2, DBKEY_L3, DBKEY_L4, DBKEY
                           :

上位の一連番号あり，ユーザキーありで，ユーザキーに対する二次インデクスだけ指定する場合

SDBデータベース定義

                           :
RECORD RECD
    2 DBKEY_L2  XCHARACTER  1  TYPE K,L
    2 DBKEY_L3  XCHARACTER  1  TYPE K,L
    2 DBKEY_L4  CHARACTER   3  TYPE K,L
    2 DBKEY_P1  INTEGER        TYPE K,P
    2 DBKEY_P2  INTEGER        TYPE K,P
    2 DBKEY     INTEGER        TYPE K,N
    2 USERDD0   CHARACTER   10 TYPE U,K
    2 USERDB1   CHARACTER   20 TYPE U,D
                           :

SDBデータベース格納定義

                           :
STORAGE RECORD RECD
    CLUSTERED SET2
    WITHIN  FMBX01
    SECONDARY INDEX  RECD_SI1
      ORDER KEY ASCENDING  DBKEY_L2, DBKEY_L3, DBKEY_L4,
                           DBKEY_P1, DBKEY_P2, USERDD0
                           :

(p)　PCTFREE

PCTFREE ページ内の未使用領域の比率

PCTFREE句については，「11.5.2(3)(g)　PCTFREE」を参照してください。

(q)　WITHIN

WITHIN ｛二次インデクス用RDエリア名

｜（二次インデクス用RDエリア名）

｜（（二次インデクス用RDエリア名）〔，（二次インデクス用RDエリア名）〕…）｝

二次インデクス用RDエリア名

〜＜RDエリア名＞((1〜30バイト))

二次インデクスを格納するRDエリア名を指定します。

1つのSECONDARY INDEX句で，WITHIN句を必ず1つ指定してください。

《規則》

二次インデクスを複数RDエリアに格納する場合の規則

1つの二次インデクスに指定できる二次インデクス用RDエリアの個数は，シーケンシャルインデクス用RDエリアの個数と同じにしてください。シーケンシャルインデクス用RDエリアの個数については，「表11-27　シーケンシャルインデクス用RDエリアとして指定できるRDエリア数とSDBデータベースの横分割の関係」を参照してください。

二次インデクス用RDエリアは，格納レコード用RDエリアと同じ数を指定する必要があります。

1つのWITHIN句の中では，二次インデクス用RDエリア名は一意に指定してください。なお，境界値分割指定の場合，隣接するRDエリア名が重複しているときだけエラーとなります。

境界値分割指定の格納レコード用RDエリアを重複して指定している場合は，二次インデクス用RDエリアも重複して指定する必要があります。

格納レコード用RDエリアと対応する二次インデクス用RDエリアは，同じサーバ内のRDエリアである必要があります。

指定する二次インデクス用RDエリアに関する規則

格納レコード用RDエリア名として指定したRDエリアは指定できません。

二次インデクス用RDエリアには，create rdarea文のdata modelオペランドにstructuredを指定したRDエリアを指定してください。

二次インデクス用RDエリアとして指定するRDエリアには，1つのRDエリアにシーケンシャルインデクスと二次インデクスを合わせて，インデクスを最大500個指定できます。

インナレプリカ機能を使用する場合，指定するRDエリアはインナレプリカ機能の使用条件を満たしている必要があります。インナレプリカ機能の使用条件については，「付録J　インナレプリカ機能使用時のHiRDB/SD定義ユティリティ（pdsdbdef）の実行【4V FMB，4V AFM】」を参照してください。

二次インデクス用RDエリアに定義できるリソースの組み合わせについては，「表11-29　RDエリアに定義できるリソースの組み合わせ」を参照してください。

(r)　SET

SET 親子集合型名

〜＜識別子＞((1〜30バイト))

親レコード型，子レコード型の親子集合型名を指定します。

《規則》

SDBデータベース定義のSET句で指定した親子集合型名と同じ個数，同じ順番で指定してください。

(s)　OWNER POINTER FOR

OWNER POINTER FOR ｛FIRST LAST│FIRST LAST USER｝ MEMBER

親レコードに持たせるポインタを指定します。

FIRST LAST

親レコードにFIRSTポインタ，およびLASTポインタを持たせる場合に指定します。

FIRST LAST USER

親レコードにFIRSTポインタ，LASTポインタ，およびUSERポインタを持たせる場合に指定します。

(t)　MEMBER POINTER FOR

MEMBER POINTER FOR NEXT PRIOR TENANT

子レコードに持たせるポインタを指定します。

NEXT PRIOR

子レコードにNEXTポインタ，およびPRIORポインタを持たせる場合に指定します。

(u)　SDBOPTION

SDBOPTION

SDBデータベース格納定義に関するオプションを指定します。

(v)　KEYDEF

KEYDEF 構成要素名

構成要素名

〜＜識別子＞((1〜30バイト))

キーの項目である構成要素名を指定します。

KEYDEF句の用途を次に示します。

不正データをチェックするために指定できます。

境界値分割を指定している場合，横分割の指定方法がTMS-4V/SPと異なるため，TMS-4V/SPの境界値リストに相当する情報を返却するために利用できます。この場合（境界値分割の構成要素名を指定した場合），不正データのチェックはされません。

RDエリア分割キーとして，シーケンシャルインデクスの先頭以外の構成要素を指定したレコード型に対して，RDエリアを指定した検索を行う場合，RDエリア分割キーに指定した構成要素より前の構成要素をすべてKEYDEF句に指定する必要があります。

《規則》

KEYDEF句は省略できます。

構成要素名は，SDBデータベース定義のルートレコード型でデータベースキーとして定義されている必要があります。このため，1つのSDBデータベース格納定義で指定できるKEYDEF句の最大数は，SDBデータベース定義のルートレコード型で定義できるデータベースキーの基本項目数となります。

KEYDEF句を複数指定する場合は，SDBデータベース定義の定義順に構成要素名を指定してください。

KEYDEF句を指定した場合は，DATA句を指定する必要があります。

SDBデータベース種別とKEYDEF句の指定の組み合わせについては，次の表を参照してください。

表11‒34　SDBデータベース種別とKEYDEF句の指定の組み合わせ

SDBデータベース種別

KEYDEF句，DATA句の指定

用途

4V FMB

△※1

次の場合に使用します。

不正データのチェック時

境界値分割時（DEPENDING ON句指定時）にTMS-4V/SPの境界値リスト相当の情報を取得する場合※2

（凡例）

△：省略できます。

注※1

RDエリア分割キーとして，シーケンシャルインデクスの先頭以外の構成要素を指定したレコード型に対して，RDエリアを指定した検索を行う場合，RDエリア分割キーに指定した構成要素より前の構成要素をすべてKEYDEF句に指定する必要があります。

注※2

境界値分割を指定している場合，横分割の指定方法がTMS-4V/SPと異なるため，TMS-4V/SPの境界値リストに相当する情報を返却するために利用できます。この場合（境界値分割の構成要素名を指定した場合），不正データはチェックされません。

RDエリア分割キーとして，シーケンシャルインデクスの先頭以外の構成要素を指定したレコード型に対して，RDエリアを指定して検索をする場合は，次に示す条件で指定してください。

・RDエリア分割キーに指定した構成要素よりも前にある構成要素をすべてKEYDEF句に指定する。

・指定したKEYDEF句ごとのデータベースのキー値は1つだけ指定する。

RDエリアを指定した検索については，マニュアル「TP1/Financial Service Platform 使用の手引」の「SDBハンドラ機能」の「店群順アクセス」を参照してください。

境界値分割を指定している場合，KEYDEF句下のDATA句に指定したすべてのデータベースのキー値（境界値）の情報を取得したい場合のKEYDEF句の指定について説明します。

・WITHIN句で指定した境界値とは別に，任意のデータベースのキーを指定できます。

・WITHIN句で指定した境界値とのチェックは行われません。

KEYDEF句下のDATA句に指定した，すべてのデータベースのキー値（境界値）の情報を取得したい場合の定義例を次に示します。

［説明］

TMS-4V/SPで，連続するエリアに対して複数の異なる境界値を指定して，次のようにSDBデータベースを横分割して格納していたとします。

エリア名

境界値

意味（レコードの格納範囲）

RDAREA1

X'0100'

X'0100'以上〜X'01FF'まで

RDAREA2

X'0200'

X'0200'以上〜X'02FF'まで

RDAREA2

X'0300'

X'0300'以上〜X'03FF'まで

RDAREA3

X'0400'

X'0400'以上

この例の場合，境界値X'0100'，X'0200'，X'0300'，X'0400'の各値以上の値を持つレコードが各エリアに格納されます。

これをSDBデータベース格納定義で定義すると境界値（RDエリア分割キー値）とRDエリアを次のように対応させる必要があります。

RDエリア名

境界値（RDエリア分割キー値）

意味（レコードの格納範囲）

RDAREAX（新規）

X'00FF'

〜X'00FF'以下

RDAREA1

X'01FF'

X'0100'〜X'01FF'以下

RDAREA2

X'03FF'

X'0200'〜X'03FF'以下

RDAREA3

なし

X'0400'〜

SDBデータベース格納定義では，連続的に同じRDエリアに対して異なるRDエリア分割キー値を定義できません。このため，TMS-4V/SPで境界値として指定していたX'0300'のデータが不足してしまい，TMS-4V/SPと同じ境界値リストを返却できません。

HiRDB/SDでTMS-4V/SPと同じ境界値リストを返却するためには，TMS-4V/SPで指定していたすべての境界値をKEYDEF句に指定する必要があります。

定義例を次に示します。

定義例

STORAGE SCHEMA SCM01 FOR SCM01
  DBTYPE 4V
  STORAGE RECORD RECA
    SEQUENTIAL IDX1 FOR RECORD
        ：
      WITHIN ((RDAREAX_I),( RDAREA1_I),( RDAREA2_I),( RDAREA3_I))
     DEPENDING ON C1
     WITHIN ( (RDAREAX) X'00FF' , (RDAREA1) X'01FF',
              (RDAREA2) X'03FF', (RDAREA3) )
          ：
  SDBOPTION
    KEYDEF C1
      DATA  X'0100'
      DATA  X'0200'
      DATA  X'0300'
      DATA  X'0400'
END STORAGE SCHEMA

(w)　DATA

DATA データベースのキー値 …

データベースのキー値

〜X'＜16進数字＞'((1〜30バイト))

〜'＜英数字または下線（_）＞'((1〜30バイト))※1

〜＜10進数定数＞※2

〜＜整数定数＞※3

注※1

先頭に下線（_）は指定できません。

注※2

10進数定数については，マニュアル「HiRDB Version 9 SQLリファレンス」の「定数」を参照してください。

整数部と小数部にすべて0を指定する場合，符号に-を指定しないでください。-0.を指定しても0.として扱います。

なお，10進数定数の値の範囲を超える値は指定できません。

注※3

整数定数については，マニュアル「HiRDB Version 9 SQLリファレンス」の「定数」を参照してください。

-0を指定しても0として扱います。

なお，整数定数の値の範囲を超える値は指定できません。

KEYDEF句の構成要素名で指定した構成要素のデータ型がCHARACTERまたはXCHARACTERの場合，データベースのキー値には，SDBデータベースのキー値をKEYDEF句の構成要素名で指定した構成要素のデータ属性とバイト数を合わせて指定します。

KEYDEF句の構成要素名で指定した構成要素のデータ型がPACKEDの場合，データベースのキー値にはKEYDEF句の構成要素名で指定した構成要素の整数部桁数，および小数部桁数の範囲内の値を指定します。

KEYDEF句下のDATA句でのデータベースのキー値の指定方法を次の表に示します。

表11‒35　KEYDEF句下のDATA句でのデータベースのキー値の指定方法

データ型

データベースのキー値

KEYDEF句下のDATA句でのデータベースのキー値の指定例

SDBディレクトリ情報の設定内容

CHARACTER(4)

ABCD

'ABCD'

41424344

CHARACTER(4)

abcd

'abcd'

61626364

CHARACTER(4)

1000

'1000'

31303030

XCHARACTER(4)

AB12

X'41423132'

41423132

PACKED(2,1)

15.5

15.5

155C※

PACKED(2,2)

15.5

15.5

01550C

PACKED(3,2)

15.5

15.5

01550C

INTEGER

10

10

0A000000

注※

正の値または0の場合は，符号部をX'C'で設定します。負の値の場合は，符号部をX'D'で設定します。

《規則》

データベースのキー値に関する規則

1つのKEYDEF句で，データベースのキー値が重複することはできません。

データベースのキー値を16進数字で指定する場合，データベースのキー値の長さはバイト単位で指定してください。

KEYDEF句で指定した構成要素が，RDエリア分割キーの構成要素として指定されている場合，格納条件のRDエリア分割キー値で指定された値と一致させてください。

DATA句を複数指定する場合，1つのKEYDEF句内でデータベースのキー値を昇順に指定してください。データベースのキー値を昇順に指定する例を次の表に示します。

表11‒36　データベースのキー値を昇順に指定する例

データ型

指定順序

KEYDEF句下のDATA句で指定するデータベースのキー値

SDBディレクトリ情報の設定内容

指定内容の意味

CHARACTER(4)

1

'ABCD'

41424344

文字列：ABCD※

1

X'41424344'

41424344

文字列：ABCD※

2

'abCD'

61624344

文字列：abCD

3

'abcd'

61626364

文字列：abcd

XCHARACTER(2)

1

X'0030'

0030

文字列：0

2

X'2B30'

2B30

文字列：＋0

3

X'2B31'

2B31

文字列：＋1

4

X'2D30'

2D30

文字列：−0

5

X'2D31'

2D31

文字列：−1

PACKED(2,2)

1

-11.15

01115D

数字：-11.15

2

-10.15

01015D

数字：-10.15

3

10.15

01015C

数字：10.15

4

11.15

01115C

数字：11.15

INTEGER

1

-3

FDFFFFFF

数字：-3

2

-1

FFFFFFFF

数字：-1

3

0

00000000

数字：0

4

1

01000000

数字：1

5

3

03000000

数字：3

注※

指定内容の意味が同じとなるデータベースのキー値は指定できません。

そのほかの規則

1つのKEYDEF句で指定できるDATA句は，最大32,767個です。

(x)　END STORAGE SCHEMA

END STORAGE SCHEMA

SDBデータベース格納定義の終了を示します。

11.6　SDBデータベース定義，SDBデータベース格納定義【4V AFM】

4V AFMのSDBデータベースを定義する場合の，SDBデータベース定義およびSDBデータベース格納定義の指定形式と各オペランドの指定内容について説明します。

11.6.1　SDBデータベース定義【4V AFM】

*ENTRY DICTIONARY文または*ALTER DICTIONARY文に指定するSDBデータベース定義について説明します。

注意事項

*ENTRY DICTIONARY文または*ALTER DICTIONARY文に指定したSDBデータベース定義は保存しておいてください。*ALTER DICTIONARY文でSDBデータベース定義を変更する際，変更個所だけを指定するのではなく，変更後のSDBデータベース定義をすべて指定する必要があります。このとき，保存しておいたSDBデータベース定義が必要になります。

(1)　機能

SDBデータベースの論理構造を定義します。

(2)　形式

項番

形式

オペランドの追加可否※1

(a)

SCHEMA SDBデータベース名

×

(b)

DBTYPE 4V ｛DAM｜MAM｜TAM｜SAM｝

×

(c)

　RECORD レコード型名

○※2

(d)

　　　　　｛レベル番号｜ITEM｝ 構成要素名

(e)

　　　　　〔｛CHARACTER 長さ

　　　　　　　　｜XCHARACTER 長さ

　　　　　　　　｜PACKED 〔DECIMAL FIXED〕 整数部桁数〔，小数部桁数〕

　　　　　　　　｜INTEGER｝

(f)

　　　　　　TYPE データ種別1，データ種別2〔，データ種別3〕

　　　　　　〕…

(g)

　　　　　〔FUNCTION

　　　　　　　　〔REFER ｛USE｜NOUSE｝〕

　　　　　　　　〔ADD ｛USE｜NOUSE｝〕※3

　　　　　　　　〔UPDATE ｛USE｜NOUSE｝〕※4

　　　　　　　　〔ERASE ｛USE｜NOUSE｝〕

　　　　　　　　〔ALLERASE ｛USE｜NOUSE｝〕

　　　　　　〕

(h)

　　　　　〔RECORDID レコード識別コード〕

　…

(i)

　SET 親子集合型名

(j)

　　　OWNER 親レコード型名

(k)

　　　ORDER ｛LAST｜SORTED DUPLICATES PROHIBITED｝

(l)

　　　MEMBER 子レコード型名

(m)

　　　INSERTION AUTOMATIC

(n)

　　　RETENTION FIXED

(o)

　　　〔KEY ｛ASCENDING｜DESCENDING｝ 構成要素名〕

(p)

　　　　　〔SETOPTION

(q)

　　　　　　　〔OCCURRENCE NUMBER 一連番号の最大値

(r)

　　　　　　　　　〔WARNING ｛一連番号使用比率1

　　　　　　　　　　　　　　　　〔，一連番号使用比率2

　　　　　　　　　　　　　　　　〔，一連番号使用比率3〕〕｜0｝〕

(s)

　　　　　　　　　〔REUSE ｛YES｜NO｝〕

　　　　　　　　〕

　　　　　　〕

　…

(t)

　〔SDBOPTION

×

(u)

　　　〔FUNCTION

　　　　　　〔REFER ｛USE｜NOUSE｝〕

　　　　　　〔ADD ｛USE｜NOUSE｝〕※3

　　　　　　〔UPDATE ｛USE｜NOUSE｝〕※4

　　　　　　〔ERASE ｛USE｜NOUSE｝〕

　　　　　　〔ALLERASE ｛USE｜NOUSE｝〕

　　　　　　〔DBLODUTL ｛USE｜NOUSE｝〕※5

　　　　　　〔FORMAT ｛USE｜NOUSE｝〕

　　　　〕

(v)

　　　〔TAMMODE ｛NONPROTECTED RETRIEVE｜SHARED RETRIEVE｝〕

(w)

　　　〔OCCURRENCE WARNING ｛一連番号使用比率1

　　　　　　　　　　　　　　　　　　　　〔，一連番号使用比率2

　　　　　　　　　　　　　　　　　　　　〔，一連番号使用比率3〕〕｜0｝〕

×

　　〕

(x)

END SCHEMA

×

（凡例）

○：*ALTER DICTIONARY文の実行時に追加できるオペランドです。

×：*ALTER DICTIONARY文の実行時に追加できないオペランドです。

注※1

*ALTER DICTIONARY文実行時のオペランド追加可否です。

注※2

最下位の子レコード型の追加とその親子集合の追加ができます。

RECORD句とSET句は必ず両方指定してください。どちらか片方だけを指定することはできません。

注※3

省略値については，「表11-43　ADD句の省略値（4V AFMのSDBデータベースの場合）」を参照してください。

注※4

省略値については，「表11-44　UPDATE句の省略値（4V AFMのSDBデータベースの場合）」を参照してください。

注※5

省略値については，「表11-52　DBLODUTL句の省略値（4V AFMのSDBデータベースの場合）」を参照してください。

参考

SDBOPTION句下のREADYMODE句の指定は無視されるため，バージョン09-66のマニュアルから，上記の形式にREADYMODE句は記載していません。READYMODE句を指定したままでもエラーにはなりません。また，READYMODE句の指定値によってシステムの動作が変わることはありません。

(3)　定義句の指定順序

SDBデータベース定義の定義句の指定順序には，次に示す規則があります。

必須の定義，または必須の定義と省略できる定義の間は，上記の形式で示す順序で指定してください。

RECORD句下のFUNCTION句とRECORDID句，およびFUNCTION句下の各句については指定順はありません。任意の順番で指定できます。

RECORD句およびSET句の指定順序は，一筆書き順の規則に従ってください。一筆書き順の規則については，「図11-11　RECORD句およびSET句の指定順序（一筆書き順）の規則」を参照してください。

(4)　*ALTER DICTIONARY文によるSDBデータベースの定義変更

*ALTER DICTIONARY文によるSDBデータベースの定義変更は，最下位の子レコード型の追加とその親子集合の追加ができます。子レコード型を追加できる位置と追加できない位置の例については「図11-12　子レコード型を追加できる位置と追加できない位置」を参照してください。

なお，*ALTER DICTIONARY文では，既存のレコード型の定義は変更できません。

*ALTER DICTIONARY文によるSDBデータベースの定義変更の例を次の図に示します。

図11‒16　*ALTER DICTIONARY文によるSDBデータベースの定義変更の例（4V AFMのSDBデータベースの場合）

*ALTER DICTIONARY文で実行できるSDBデータベースの定義変更を次の表に示します。

表11‒37　*ALTER DICTIONARY文で実行できるSDBデータベースの定義変更

定義名

定義変更の内容

説明

SDBデータベース定義

レコード型の追加（RECORD句の追加）

次に示す条件をすべて満たす場合にレコードを追加できます。

追加するレコード型が子レコード型である。

仮想ルートレコード型の構成要素に，データ種別がK，Rの構成要素がある。

仮想ルートレコード型で管理している子レコード用の管理領域の予備領域がある（子レコード型を追加しても問題ないだけの予備領域がある）。

また，次に示す定義の追加または変更を行う必要があります。

仮想ルートレコード型を親レコード型，追加するレコード型を子レコード型とする親子集合を追加する。

SDBデータベース格納定義のKEYDEF句およびDATA句を追加し，データ種別がK，Rの構成要素に対応するキー値と格納レコード名を指定する。

SDBデータベース格納定義のSTORAGE RECORD句を追加し，対応する格納レコード名を指定する。

親子集合の追加（SET句の追加）

追加した子レコード型の親子集合を追加できます。

仮想ルートレコード型を親レコード型とし，追加するレコード型を子レコード型とする親子集合を追加してください。

SDBデータベース格納定義

格納レコードの追加（STORAGE RECORD句の追加）

SDBデータベース定義で子レコード型を追加した場合に，対応する格納レコード名を追加します。子レコード型を追加していない場合に，格納レコード名だけを追加することはできません。

なお，追加した子レコード型にデータ種別がK，Nの構成要素が存在する場合は，K，NまたはU，Kの構成要素数分の二次インデクスを追加してください。二次インデクスの追加に伴い，二次インデクスを格納するRDエリアを追加できます。

格納親子集合の追加（SET句の追加）

子レコード型を追加する際に追加する親子集合に対応する格納親子集合を追加できます。子レコード型を追加しないで，格納親子集合だけを追加することはできません。

キー値の追加（KEYDEF句の追加）

■4V DAM，4V TAM，4V SAMのSDBデータベースの場合

次に示す条件をすべて満たす場合は，追加する子レコード型ごとに，それぞれ1個以上のデータベースキーを追加できます。

KEYDEF句の構成要素に対応するSDBデータベース定義の構成要素のデータ種別がK，Rの場合

定義変更によって子レコード型を追加する場合

■4V MAMのSDBデータベースの場合

次に示す条件をすべて満たす場合は，追加する子レコード型ごとに，それぞれ1個のデータベースキーを追加できます。

KEYDEF句の構成要素に対応するSDBデータベース定義の構成要素のデータ種別がK，Rの場合

定義変更によって子レコード型を追加する場合

(5)　オペランドの説明

SDBデータベース定義の各オペランドの指定内容を説明します。

(a)　SCHEMA

SCHEMA SDBデータベース名

〜＜識別子＞((1〜30バイト))

SDBデータベースのSDBデータベース名を指定します。

すでに使用しているSDBデータベース名は指定できません。

(b)　DBTYPE

DBTYPE 4V ｛DAM｜MAM｜TAM｜SAM｝

定義するSDBデータベースのSDBデータベース種別を指定します。

DAM

SDBデータベース種別が4V DAMのSDBデータベースを定義する場合に指定します。

MAM

SDBデータベース種別が4V MAMのSDBデータベースを定義する場合に指定します。

TAM

SDBデータベース種別が4V TAMのSDBデータベースを定義する場合に指定します。

SAM

SDBデータベース種別が4V SAMのSDBデータベースを定義する場合に指定します。

4V DAM，4V MAM，4V TAM，または4V SAMのSDBデータベースとは，階層構造を持たないデータベースで，メインフレームのTMS-4V/SPがサポートしているDAM，MAM，TAM，またはSAMのデータベースに相当します。詳細については，「2.3.3　SDBデータベース」を参照してください。

注意事項

SDBデータベース種別が4V（4V FMBまたは4V AFM）のSDBデータベースとSD FMBのSDBデータベースをシステム内で混在して定義することはできません。混在させた場合，動作を保証しません。

(c)　RECORD

RECORD レコード型名

〜＜識別子＞((1〜30バイト))

レコード型名を指定します。

《規則》

レコード型名は，同一スキーマ内で一意になるように指定してください。

1つのSDBデータベース定義内で指定できるRECORD句は，2〜128個です。

(d)　レベル番号，ITEM

｛レベル番号│ITEM｝ 構成要素名

構成要素に関する情報を指定します。1つのRECORD句内での構成要素の階層レベルを指定します。

すべての構成要素が基本項目の場合，ITEMを指定できます。

1つのレコード型内で，レベル番号とITEMは同時に指定できません。

データベースにアクセスするためのAPIで「DBKEY」の名称を利用するため，構成要素名として「DBKEY」を指定する必要があります。指定方法の詳細については，「表11-41　仮想ルートレコード型の構成要素の指定」〜「表11-42　子レコード型（2階層）の構成要素の指定」を参照してください。

レベル番号

〜＜符号なし整数＞((2〜49))

1つのRECORD句内での構成要素の階層レベルを指定します。

階層が深くなるに従ってレベル番号を増やすように指定してください。レベル番号は連続した値である必要はありません。

階層が浅くなるときは，すでに指定したレベル番号にしてください。

ITEM

すべての構成要素が基本項目の場合に指定できます。

構成要素名

〜＜識別子＞((1〜30バイト))

構成要素名を指定します。

《規則》

構成要素名は，RECORD句内で一意にしてください。

RECORD句内に指定できる構成要素の合計長は最大30,000バイトです。また，RECORD句内に指定できる構成要素の個数は最大30,000個です。

各レコード型の最初の基本項目の構成要素のデータ種別1には，Dを指定してください。

上位レコードのキーの構成要素，および一連番号の構成要素は，下位レコードの構成要素として，データ型とデータ種別を同じように指定してください。

ユーザデータ（データ種別1，2（TYPE U,D））の構成要素は，幾つかの構成要素をまとめて，ユーザ任意の集団項目内に指定できます。

ユーザキー（データ種別1，2（TYPE U,K）），ユーザファイル通番（データ種別1，2（TYPE U,F））の構成要素は，集団項目内に指定できません。

(e)　データ型

｛CHARACTER 長さ

│XCHARACTER 長さ

│PACKED 〔DECIMAL FIXED〕 整数部桁数〔，小数部桁数〕

│INTEGER｝

構成要素のデータ型を指定します。構成要素に指定できるデータ型を次の表に示します。

表11‒38　構成要素に指定できるデータ型

データ種別

データ型

データ形式

文字列

CHARACTER

固定長文字列

16進形式の文字列

XCHARACTER

16進固定長文字列

数値

PACKED 〔DECIMAL FIXED〕

符号付きパック形式10進データ

INTEGER

整数

CHARACTER 長さ

〜＜符号なし整数＞((1〜30,000))

文字列データの長さを指定します。

XCHARACTER 長さ

〜＜符号なし整数＞((1〜30,000))

16進形式の文字列データの長さを指定します。

PACKED 〔DECIMAL FIXED〕 整数部桁数〔，小数部桁数〕

整数部桁数

　　〜＜符号なし整数＞((0〜38))

小数部桁数

　　〜＜符号なし整数＞((0〜38))

符号付きパック形式の10進データの整数部桁数，および小数部桁数を指定します。

整数部桁数と小数部桁数の和は，1〜38になるようにしてください。

INTEGER

値の範囲が-2,147,483,648〜2,147,483,647の整数を指定します。長さは指定できません。

《規則》

一連番号の構成要素には，必ずINTEGERを指定してください。

基本項目の場合，データ型およびTYPE句を指定してください。

集団項目の場合，データ型およびTYPE句を省略してください。

KEYDEF句に指定する構成要素については，データの長さを1〜30バイトで指定してください。KEYDEF句については，「11.6.2(3)(u)　KEYDEF」を参照してください。

(f)　TYPE

TYPE データ種別1，データ種別2〔，データ種別3〕

構成要素のデータ種別を指定します。

データ種別1

〜＜英字＞((1バイト))

データベースキーかユーザデータかを区別するための種別を指定します。

データ種別2

〜＜英字＞((1バイト))

データ種別1をさらに分類するための詳細な種別を指定します。

データ種別3

〜X'＜16進数字＞'((2バイト))

｛X'ユーザ情報'│X'0000'｝

ユーザ情報を指定します。

TYPE句で指定するデータ種別の指定値と意味を次の表に示します。

表11‒39　データ種別の指定値と意味

データ種別

指定値

意味

データ種別1

D

データベース名称を識別する構成要素

K

データベースキーで，次に該当する場合の構成要素

データベースキー

上位レコードの一連番号

自レコードの一連番号（一連番号の最大値（OCCURRENCE NUMBER句の指定）が1以上の場合）

N

自レコードの一連番号（一連番号の最大値（OCCURRENCE NUMBER句の指定）が0の場合）

U

ユーザデータ

データ種別2

A※1

RDエリア分割キーとする構成要素（SDBデータベースを横分割する際，レコードの格納RDエリアを決める構成要素）

R※2

レコード分割キーとする構成要素

M※3

AかつRの構成要素

N

自レコードの一連番号の構成要素

データ種別1がKの場合，一連番号属性あり

データ種別1がNの場合，一連番号属性なし

L

そのほかのデータベースキーの構成要素

F

ユーザファイル通番の構成要素

K

ユーザキーの構成要素

D

そのほかのユーザデータの構成要素

データ種別3

2バイトの16進数字

ユーザが独自に設定する属性

注※1

データ種別1がDの場合，SDBデータベースの横分割がされていないことを示します。

注※2

データ種別1がDの場合，レコード分割がされていないことを示します。

注※3

データ種別1がDの場合，SDBデータベースの横分割およびレコード分割がされていないことを示します。

《規則》

共通の規則

D，K，N，Uの順に，必要な種別を指定してください。

ユーザデータのあとにデータベースキーを指定することはできません。

レコード型の先頭にデータ種別1がDの構成要素を指定してください。

子レコード型が1つのときはデータ種別1がKかつ，データ種別2がMの構成要素を指定できません。

子レコード型が2つ以上のときは，データ種別1がKかつ，データ種別2がRまたはMの構成要素の指定が必要になります。

4V MAMのSDBデータベースの規則

データ種別2がKの構成要素を子レコード型に指定してください。

データ種別1がK，かつデータ種別2がAの構成要素に対して，2つ以上のRDエリア分割キー値を指定できません。

4V TAMのSDBデータベースの規則

データ種別2がKの構成要素を子レコード型に指定してください。

データ種別1がK，かつデータ種別2がA，Mの構成要素は指定できません。

4V DAMのSDBデータベースの規則

データ種別2がKの構成要素は子レコード型には指定できません。

4V SAMのSDBデータベースの規則

データ種別2がKの構成要素は子レコード型には指定できません。

データ種別1がK，かつデータ種別2がA，Mの構成要素は指定できません。

そのほかの規則

データ種別1がK，かつデータ種別2がA，Mの構成要素は，仮想ルートレコード型と子レコード型で同一名称にしてください。

データ種別1がK，かつデータ種別2がA，Mの構成要素は，データの長さを1〜30バイトの範囲で指定してください。

RECORD句内では，データ種別1の指定に関係なく，データ種別2がA，R，またはMの構成要素は，それぞれ最大1つ指定できます。

RECORD句内では，データ種別1の指定に関係なく，データ種別2がMの構成要素を指定した場合，データ種別2がA，Rの構成要素は指定できません。

データ種別1がK，かつデータ種別2がNの場合，一連番号属性があります。OCCURRENCE NUMBER句には1以上を指定するか，または指定を省略してください。

データ種別1がN，かつデータ種別2がNの場合，一連番号属性がありません。OCCURRENCE NUMBER句には0を指定してください。

データ種別2がFの構成要素はレコード型内の最後の構成要素に1つだけ指定できます。

データ種別2がKの構成要素は1レコード型に最大1つのユーザキーを指定できます。

データ種別1がK，かつデータ種別2がMの構成要素を指定した場合，*ALTER DICTIONARY文によるSDBデータベースの定義変更はできません。

構成要素のデータ種別1，データ種別2，データ種別3で指定できる組み合わせを次の表に示します。

表11‒40　データ種別1，データ種別2，データ種別3で指定できる組み合わせ

データ種別1

データ種別2

データ種別3

D

L

−

A

R

M

K

L

A※1

R

M※1

N※2

N

N※3

−

U

D

○

−

F※4

○

−

K※5，※6

○

−

（凡例）

○：指定あり

−：指定なし

注※1

4V TAMまたは4V SAMのSDBデータベースの場合は指定できません。

注※2

OCCURRENCE NUMBER句は省略するか，または1以上を指定してください。

注※3

OCCURRENCE NUMBER句には0を指定してください。

注※4

レコード型内で最後に1つだけ指定できます。

注※5

フォーマットライト機能は使用できません。FUNCTION句のFORMATを省略するか，NOUSEを指定してください。

注※6

レコード型内で最大1つだけ指定できます。

仮想ルートレコード型と子レコード型の構成要素の指定を次の表に示します。指定順序や指定する個数，データ種別の組み合わせに誤りがある場合は，エラーとなります。なお，1つの項番の中で基本項目と集団項目を複数指定できる場合，指定順序は任意です。

表11‒41　仮想ルートレコード型の構成要素の指定

指定順

項目

説明

データ種別

1

2

3

1

データベースキー1

データベース名称を識別する構成要素名

構成要素名を「DBKEY」以外とします。

レコードの先頭の構成要素として指定します。

基本項目として指定します。

D

L

−

A

R

個数

1

M

2

データベースキー2〜7※4

構成要素名

構成要素名を「DBKEY」以外とします。

データベースキー2〜7を，基本項目として指定します。

K

L

−

A※1

R※3

個数

0〜6

M※1，※2，※3

（凡例）

−：該当しません。

注※1

4V TAMまたは4V SAMのSDBデータベースの場合，指定するとエラーになります。

注※2

子レコード型が1つの場合，指定するとエラーになります。

注※3

子レコード型が2つ以上の場合，データ種別1がK，かつデータ種別2がRまたはMの構成要素がないとエラーになります。

注※4

一連番号の最大値（OCCURRENCE NUMBER句の指定値）が0の場合，データベースキー2〜7が最低1つ必要です。

表11‒42　子レコード型（2階層）の構成要素の指定

指定順

項目

説明

データ種別

1

2

3

1

データベースキー1

データベース名称を識別する構成要素名

仮想ルートレコード型で指定したデータベースキー1（データベースを識別する構成要素名）を，基本項目として指定します。

D

L

−

個数

1

A

R

M

2

「DBKEY」の構成要素名

次のどちらかの場合，構成要素名「DBKEY」の集団項目を指定します。

データベースキー2〜7がある。

一連番号の最大値（OCCURRENCE NUMBER句の指定値）が1以上である。

−

3

データベースキー2〜7

構成要素名

仮想ルートレコード型で指定したデータベースキー2〜7を集団項目「DBKEY」下の基本項目として指定します。

K

L

−

A

R

個数

0〜6

M

4

一連番号

OCCURRENCE NUMBER句の指定値が1以上の場合

集団項目「DBKEY」下の基本項目として指定します。

K

N

−

OCCURRENCE NUMBER句の指定値が0の場合

構成要素名を「DBKEY」以外とします。

基本項目として指定します。※

N

N

5

ユーザデータの構成要素名

ユーザデータの構成要素名を指定します。

−

−

−

U

D

K

F

（凡例）

−：該当しません。

注※

集団項目「DBKEY」下の基本項目として指定するとエラーになります。

(g)　FUNCTION

FUNCTION

〔REFER ｛USE｜NOUSE｝〕

〔ADD ｛USE｜NOUSE｝〕※1

〔UPDATE ｛USE｜NOUSE｝〕※2

〔ERASE ｛USE｜NOUSE｝〕

〔ALLERASE ｛USE｜NOUSE｝〕

注※1

省略値については，「表11-43　ADD句の省略値（4V AFMのSDBデータベースの場合）」を参照してください。

注※2

省略値については，「表11-44　UPDATE句の省略値（4V AFMのSDBデータベースの場合）」を参照してください。

SDBデータベースへのアクセス属性を指定します。

SDBデータベースへのアクセス属性は，SDBOPTION句下のFUNCTION句でも指定できます。RECORD句内で指定する場合は，各RECORD句にアクセス属性が指定できます。指定を省略した場合は，SDBOPTION句下のFUNCTION句の指定値，または省略値が仮定されます。

REFER

レコードの検索を許可するかどうかを指定します。

USE：レコードの検索を許可します。

NOUSE：レコードの検索を許可しません。

ADD

レコードの追加を許可するかどうかを指定します。

USE：レコードの追加を許可します。

NOUSE：レコードの追加を許可しません。

表11‒43　ADD句の省略値（4V AFMのSDBデータベースの場合）

SDBデータベース種別

レコード型の指定条件

RECORD句下のFUNCTION句が省略された場合

SDBOPTION句下のFUNCTION句が省略された場合

仮想ルートレコード型

仮想ルートレコード型以外

4V AFM

USE

SDBOPTION句下のFUNCTION句の指定値，または省略値

NOUSE

UPDATE

レコードの更新を許可するかどうかを指定します。

USE：レコードの更新を許可します。

NOUSE：レコードの更新を許可しません。

表11‒44　UPDATE句の省略値（4V AFMのSDBデータベースの場合）

SDBデータベース種別

レコード型の指定条件

RECORD句下のFUNCTION句が省略された場合

SDBOPTION句下のFUNCTION句が省略された場合

仮想ルートレコード型

仮想ルートレコード型以外

4V DAM

4V MAM

4V TAM

USE

SDBOPTION句下のFUNCTION句の指定値，または省略値

USE

4V SAM

USE

SDBOPTION句下のFUNCTION句の指定値，または省略値

NOUSE

ERASE

レコードの削除を許可するかどうかを指定します。

USE：レコードの削除を許可します。

NOUSE：レコードの削除を許可しません。

ALLERASE

レコードの一括削除を許可するかどうかを指定します。

USE：レコードの一括削除を許可します。

NOUSE：レコードの一括削除を許可しません。

《規則》

SDBデータベース種別ごとの，仮想ルートレコード型に対するFUNCTION句の指定可否を次の表に示します。

表11‒45　仮想ルートレコード型に対するFUNCTION句の指定可否

SDBデータベース種別

RECORD句下のFUNCTION句の指定

REFER句

ADD句

UPDATE句

ERASE句

ALLERASE句

U

N

省略※

U

N

省略※

U

N

省略※

U

N

省略※

U

N

省略※

4V DAM

×

×

○

×

×

○

×

×

○

×

×

○

×

×

○

4V MAM

×

×

○

×

×

○

×

×

○

×

×

○

×

×

○

4V TAM

×

×

○

×

×

○

×

×

○

×

×

○

×

×

○

4V SAM

×

×

○

×

×

○

×

×

○

×

×

○

×

×

○

（凡例）

U：USE指定

N：NOUSE指定

○：指定できます。

×：指定できません。

注※

次の値が仮定されます。

REFER：USE

ADD：USE

UPDATE：USE

ERASE：NOUSE

ALLERASE：NOUSE

SDBデータベース種別ごとの，子レコード型に対するFUNCTION句の指定可否を次の表に示します。

表11‒46　子レコード型に対するFUNCTION句の指定可否

SDBデータベース種別

RECORD句下のFUNCTION句の指定

REFER句

ADD句

UPDATE句

ERASE句

ALLERASE句

U

N

省略※

U

N

省略※

U

N

省略※

U

N

省略※

U

N

省略※

4V DAM

○

○

○

○

○

○

○

○

○

×

○

○

○

○

○

4V MAM

○

×

○

○

○

○

○

○

○

○

○

○

×

○

○

4V TAM

○

×

○

×

○

○

○

○

○

×

○

○

×

○

○

4V SAM

○

×

○

○

○

○

×

○

○

×

○

○

○

○

○

（凡例）

U：USE指定

N：NOUSE指定

○：指定できます。

×：指定できません。

注※

SDBOPTION句下のFUNCTION句の指定値，または省略値が仮定されます。

(h)　RECORDID

RECORDID レコード識別コード

〜X'＜16進数字＞'((2バイト))

レコード型を識別するコードとして，レコード識別コードを指定します。

《規則》

レコード識別コードを2バイトで指定します。

X'0000'以外は重複できません。

仮想ルートレコード型に対しては，このオペランドは指定できません。

4V MAMのSDBデータベースの子レコード型に対しては，このオペランドを必ず指定してください。

(i)　SET

SET 親子集合型名

〜＜識別子＞((1〜30バイト))

親子集合型名を指定します。

《規則》

親子集合型名は，SDBデータベース定義内で一意にしてください。

仮想ルートレコード型の数は1つにしてください。

親レコードから子レコードへの親子集合型をたどった場合に，元のレコードにたどり着くような親子集合型は定義できません。

1つのSDBデータベース定義内に指定できる親子集合型数は，1〜127個です。指定できる親子集合の階層は，2です。

(j)　OWNER

OWNER 親レコード型名

〜＜識別子＞((1〜30バイト))

親子集合の親レコード型名を指定します。

《規則》

親レコード型名には，RECORD句で定義したレコード型名を指定してください。

(k)　ORDER

ORDER ｛LAST│SORTED DUPLICATES PROHIBITED｝

APIによるレコードの格納時（STORE），HiRDB/SDデータベース作成ユティリティ（pdsdblod），またはHiRDB/SDデータベースアクセスユティリティ（pdsdbexe）で，子レコード実現値を親子集合内の任意の実現値に格納する際の位置（親子集合内の子レコードへの挿入順序）を指定します。

LAST

子レコード実現値群の最後に格納します。

SORTED DUPLICATES PROHIBITED

子レコード型で指定したキー項目（データ種別1，2（TYPE U,K））の値に従って，昇順または降順に格納します。

キー項目で指定した値を持つレコードがすでに存在する場合は，レコード実現値の格納を禁止します。

データ種別1，2（TYPE U,K）を指定している場合は，SORTED DUPLICATES PROHIBITEDを指定してください。それ以外の場合は，LASTを指定してください。

《規則》

1つのSET句の指定には，必ずORDER句を指定してください。

(l)　MEMBER

MEMBER 子レコード型名

〜＜識別子＞((1〜30バイト))

親子集合内の子レコード型名を指定します。

《規則》

子レコード型名には，RECORD句で定義したレコード型名を指定してください。ただし，親子集合の親レコード型名と重複する子レコード型名は指定できません。

1つのSET句には，必ずMEMBER句を指定してください。

(m)　INSERTION

INSERTION AUTOMATIC

子レコードを親子集合に格納するときの挿入方法を指定します。

AUTOMATIC

子レコードのレコード実現値がデータベースに格納されると，自動的に親レコードが属する親子集合型の親子集合実現値に格納されます。

(n)　RETENTION

RETENTION FIXED

子レコードを親子集合から切り離すまでの属性を指定します。

FIXED

レコードが，ある親子集合の子レコードになったレコードは，データベースから削除されるまで，その親子集合の子レコードでなければなりません。

(o)　KEY

KEY ｛ASCENDING│DESCENDING｝ 構成要素名

ORDER句でSORTED DUPLICATES PROHIBITEDを指定した親子集合の子レコードを昇順に格納するか，降順に格納するかどうかを指定します。

ASCENDING

子レコードを昇順に格納します。

DESCENDING

子レコードを降順に格納します。

構成要素名

〜＜識別子＞((1〜30バイト))

格納時のキーになる構成要素名を指定します。

《規則》

キーの構成要素長は254バイト以内としてください。

構成要素名に，集団項目の構成要素名は指定できません。

指定できる構成要素は，データ種別1がユーザデータ（U），データ種別2がユーザキー（K）の構成要素だけです。

構成要素名には，RECORD句で定義した構成要素名を指定してください。

1つのKEY句に構成要素名を2つ以上指定できません。

ORDER句でLASTを指定した場合，KEY句は指定できません。

ORDER句でSORTED DUPLICATES PROHIBITEDを指定した場合，必ずKEY句を指定してください。

(p)　SETOPTION

SETOPTION

親子集合に関するオプションを指定します。

(q)　OCCURRENCE NUMBER

OCCURRENCE NUMBER 一連番号の最大値

〜＜符号なし整数＞((0〜2,147,483,647))≪30,000≫

一連番号の最大値を指定します。

0を指定した場合，非オカレンスであることを示します。

FUNCTION句下のFORMAT句にUSEを指定した場合（フォーマットライト機能を使用する場合），KEYDEF句の組み合わせ数×OCCURRENCE NUMBER句の指定値分のレコードが作成されます。このため，この句の値が大きいと，フォーマットライトに時間が掛かるため，注意してください。

《規則》

構成要素のデータ種別1，2の指定がN，Nの場合，OCCURRENCE NUMBER句に0以外を指定，または省略することはできません。

構成要素のデータ種別1，2の指定がK，Nの場合，0は指定できません。

1つのSDBデータベース定義内で一連番号の最大値の値に0と1以上（OCCURRENCE NUMBER句の指定を省略する場合も含む）を混在させることはできません。

WARNING句またはREUSE句を指定する場合は，この句も指定する必要があります。

(r)　WARNING

WARNING ｛一連番号使用比率1〔，一連番号使用比率2〔，一連番号使用比率3〕〕｜0｝

一連番号の使用状況を監視する場合に，一連番号の使用比率を％単位で指定します。

一連番号使用比率1，一連番号使用比率2，一連番号使用比率3

〜＜符号なし整数＞((50〜99))

割り当て済み一連番号の割合が一連番号使用比率1〜3で指定した値に達した場合※に，メッセージを1回ずつ出力します。0を指定した場合は，割り当て済みの一連番号の監視をしません。

注※　監視値＝↑一連番号の最大値×一連番号使用比率n↑

この句とSDBOPTION句下のOCCURRENCE WARNING句の両方を指定した場合，この句での指定が有効となります。この場合，一連番号使用比率の指定値の個数が異なっていても，双方で補ってメッセージを出力することはありません。

OCCURRENCE NUMBER句の指定が0で，この句を省略した場合，割り当て済みの一連番号の監視をしません。

OCCURRENCE NUMBER句の指定が0以外で，この句を省略した場合，SDBOPTION句下のOCCURRENCE WARNING句の指定が有効となります。

SDBOPTION句下のOCCURRENCE WARNING句も省略した場合，割り当て済みの一連番号の監視をしません。

一度に複数の一連番号使用比率に達した場合は，対応するメッセージがすべて出力されます。例えば，WARNING句の指定を60，70，80とした場合に，1回目のレコードの格納で75％に達した場合は，指定値60と70に対応するメッセージが出力されます。

一連番号の最大値が小さいと，重複指定でなくても内部的に重複指定と同じような扱いになる場合があります。例えば，OCCURRENCE NUMBER句が10，WARNING句が97，98，99と定義した場合，どの指定値も割り当て済み一連番号が10になった時点で，97（％）と98（％）と99（％）に対応するメッセージが出力されます。

一連番号の監視については，「5.25　一連番号の監視」を参照してください。

《規則》

4V TAMのSDBデータベースの場合は指定できません。

一連番号使用比率を複数指定する場合，指定値が昇順になるように指定してください。

SDBOPTION句下のFUNCTIONでFORMAT USEを指定している場合は指定できません。

OCCURRENCE NUMBER句との組み合わせ可否を次の表に示します。

表11‒47　SETOPTION句下のOCCURRENCE NUMBER句とWARNING句の組み合わせ可否

SETOPTION句下のOCCURRENCE NUMBER句の指定

SETOPTION句下のWARNING句の指定

0以外

0

0以外

○

○

0

×

○

（凡例）

○：WARNING句が指定できます。

×：WARNING句は指定できません。

表11‒48　SETOPTION句下のOCCURRENCE NUMBER句とSDBOPTION句下のOCCURRENCE WARNING句の組み合わせ可否

SETOPTION句下のOCCURRENCE NUMBER句の指定

SDBOPTION句下のOCCURRENCE WARNING句の指定

0以外

0

すべて0以外

○

○

一部0

○

○

すべて0

×

○

（凡例）

○：OCCURRENCE WARNING句が指定できます。

×：OCCURRENCE WARNING句は指定できません。

FUNCTION句のADD指定との組み合わせとレコードの追加可否を次の表に示します。

表11‒49　FUNCTION句のADD指定との組み合わせとレコードの追加可否

SDBデータベース種別

SDBOPTION句下のFUNCTION句のADD指定

省略

U

N

子レコードのFUNCTION句のADD指定

省略

U

N

省略

U

N

省略

U

N

4V DAM

4V MAM

4V SAM

×

○

×

○

○

×

×

○

×

4V TAM

×

−

×

−

−

−

×

−

×

（凡例）

U：USE指定

N：NOUSE指定

○：レコードの指定ができます。

×：レコードの指定ができません。

−：該当しません。

子レコードへの追加可否との組み合わせを次の表に示します。

表11‒50　子レコードへの追加可否とWARNING句の組み合わせ可否

子レコードへの追加

SETOPTION句下のWARNING句の指定

0以外

0

できる

○

○

できない

×

○

（凡例）

○：WARNING句が指定できます。

×：WARNING句は指定できません。

表11‒51　子レコードへの追加可否とSDBOPTION句下のOCCURRENCE WARNING句の組み合わせ可否

子レコードへの追加

SDBOPTION句下のOCCURRENCE WARNING句の指定

0以外

0

すべての子レコードに対してできる

○

○

一部の子レコードに対してできる

○

○

すべての子レコードに対してできない

×

○

（凡例）

○：OCCURRENCE WARNING句が指定できます。

×：OCCURRENCE WARNING句は指定できません。

(s)　REUSE

REUSE ｛YES│NO｝

削除された一連番号を再利用するかどうかを指定します。

レコードを一括削除した場合，または全件削除した場合は，REUSE句の指定に関係なく，最初から一連番号を振り直します。

YES

一連番号を再利用します。

4V DAMまたは4V SAMのSDBデータベースで，ALLERASE句にUSEを指定した場合に，一連番号を再利用できます。

なお，OCCURRENCE NUMBER句に0を指定してもエラーにはなりません。

ORDER句でSORTED DUPLICATES PROHIBITEDを指定した場合は指定できません。

NO

削除された一連番号を再利用しません。

一連番号の再利用の例については，「図11-14　一連番号再利用の例」を参照してください。

(t)　SDBOPTION

SDBOPTION

SDBデータベースのオプション機能を定義します。

(u)　FUNCTION

FUNCTION

〔REFER ｛USE｜NOUSE｝〕

〔ADD ｛USE｜NOUSE｝〕※1

〔UPDATE ｛USE｜NOUSE｝〕※2

〔ERASE ｛USE｜NOUSE｝〕

〔ALLERASE ｛USE｜NOUSE｝〕

〔DBLODUTL ｛USE｜NOUSE｝〕※3

〔FORMAT ｛USE｜NOUSE｝〕

注※1

省略値については，「表11-43　ADD句の省略値（4V AFMのSDBデータベースの場合）」を参照してください。

注※2

省略値については，「表11-44　UPDATE句の省略値（4V AFMのSDBデータベースの場合）」を参照してください。

注※3

省略値については，「表11-52　DBLODUTL句の省略値（4V AFMのSDBデータベースの場合）」を参照してください。

SDBデータベースへのアクセス属性を指定します。

REFER句，ADD句，UPDATE句，ERASE句，ALLERASE句の説明については，「11.6.1(5)(g)　FUNCTION」を参照してください。

DBLODUTL

HiRDB/SDデータベース作成ユティリティ（pdsdblod）のデータロード機能の実行を許可するかどうかを指定します。

USE：HiRDB/SDデータベース作成ユティリティ（pdsdblod）のデータロード機能の実行を許可します。

NOUSE：HiRDB/SDデータベース作成ユティリティ（pdsdblod）のデータロード機能の実行を許可しません。

表11‒52　DBLODUTL句の省略値（4V AFMのSDBデータベースの場合）

SDBデータベース種別

FUNCTION句下のADD句の指定

USE

NOUSE

4V DAM

NOUSE

NOUSE

4V MAM

4V SAM

NOUSE

USE

4V TAM

−

USE

（凡例）

−：4V TAMのSDBデータベースの場合，ADD句にUSEは指定できません。

FORMAT

HiRDB/SDデータベース作成ユティリティ（pdsdblod）のフォーマットライト機能の実行を許可するかどうかを指定します。

SET句下のOCCURRENCE NUMBER句の指定値が大きいとフォーマットライトに時間が掛かるため，注意してください。

USE：HiRDB/SDデータベース作成ユティリティ（pdsdblod）のフォーマットライト機能の実行を許可します。

NOUSE：HiRDB/SDデータベース作成ユティリティ（pdsdblod）のフォーマットライト機能の実行を許可しません。

《規則》

4V DAMのSDBデータベースの場合，次の指定をするとデータベースにデータを格納できないため，指定しないでください。

・ADD句，DBLODUTL句，およびFORMAT句の指定をすべて省略する。

・ADD句，DBLODUTL句，およびFORMAT句にすべてNOUSEを指定する。

SDBデータベース種別とSDBOPTION句下のFUNCTION句（ADD句，DBLODUTL句，FORMAT句）の指定の組み合わせ可否を次の表に示します。

表11‒53　SDBOPTION句下のFUNCTION句の指定の組み合わせ可否

SDBデータベース種別

ADD句の指定

USE

NOUSE

DBLODUTL句の指定

USE

NOUSE

USE

NOUSE

FORMAT句の指定

USE

NOUSE

USE

NOUSE

USE

NOUSE

USE

NOUSE

4V DAM

×

○

×

○

○

○

○

○※

4V MAM

4V SAM

×

○

×

○

×

○

×

×

4V TAM

−

−

−

−

×

○

×

×

（凡例）

○：指定できます。

×：指定できません。

−：4V TAMのSDBデータベースの場合，ADD句にUSEは指定できません。

注※

データベースにデータを格納できない組み合わせの指定のため，指定しないでください。

(v)　TAMMODE

TAMMODE ｛NONPROTECTED RETRIEVE｜SHARED RETRIEVE｝

4V TAMのSDBデータベースの場合に，TAMのデータベースの無排他検索機能を適用し，ページまたはサブページに排他を掛けないで検索するかどうかを指定します。

この指定は，個別開始時に指定するSDBデータベースを操作するAPIで，排他モード1に'S'（共用モード）を指定した場合に有効となります。

詳細については，「2.9.6　TAMのデータベースの無排他検索機能【4V TAM】」を参照してください。

なお，4V TAMのSDBデータベース以外の場合に，この指定をするとエラーになります。

NONPROTECTED RETRIEVE

TAMのデータベースの無排他検索機能を適用し，4V TAMのSDBデータベースのページまたはサブページに排他を掛けないで検索します。

SHARED RETRIEVE

TAMのデータベースの無排他検索機能を適用しません（共用モードで，4V TAMのSDBデータベースのレコードを検索します）。

(w)　OCCURRENCE WARNING

OCCURRENCE WARNING ｛一連番号使用比率1〔，一連番号使用比率2〔，一連番号使用比率3〕〕

｜0｝

一連番号の使用状況を監視する場合に，一連番号の使用比率を％単位で指定します。

一連番号使用比率1，一連番号使用比率2，一連番号使用比率3

〜＜符号なし整数＞((50〜99))

割り当て済み一連番号の割合が，一連番号使用比率1〜3で指定した値に達した場合に，メッセージを1回ずつ出力します。0を指定した場合，またはこの句を省略した場合は，割り当て済み一連番号の監視はしません。

この指定はすべての子レコード型に対して有効となりますが，SETOPTION句下でWARNING句を指定した場合は，SETOPTION句下のWARNING句の指定が有効となります。この場合，一連番号使用比率の指定値の個数が異なっても，双方で補ってメッセージを出力することはありません。

一連番号の監視については，「5.25　一連番号の監視」を参照してください。

《規則》

このオペランドの指定規則については，「(r)　WARNING」の規則を参照してください。

(x)　END SCHEMA

END SCHEMA

SDBデータベース定義の終了を示します。

11.6.2　SDBデータベース格納定義【4V AFM】

*ENTRY DICTIONARY文または*ALTER DICTIONARY文に指定するSDBデータベース格納定義について説明します。

注意事項

*ENTRY DICTIONARY文または*ALTER DICTIONARY文に指定したSDBデータベース格納定義は保存しておいてください。*ALTER DICTIONARY文でSDBデータベース格納定義を変更する際，変更個所だけを指定するのではなく，変更後のSDBデータベース格納定義をすべて指定する必要があります。このとき，保存しておいたSDBデータベース格納定義が必要になります。

(1)　機能

SDBデータベースを格納する際の論理構造を定義します。

(2)　形式

項番

形式

オペランドの変更可否

レコード型の追加時※1

RDエリアの変更時※1

(a)

STORAGE SCHEMA SDBデータベース格納名 FOR SDBデータベース名

×

×

(b)

DBTYPE 4V

×

(c)

　STORAGE RECORD 格納レコード名

○※2

(d)

　　　｛CLUSTERED 親子集合型名

　　　　　｜SEQUENTIAL シーケンシャルインデクス名

(e)

　　　FOR RECORD

(f)

　　　ORDER KEY ASCENDING 構成要素名〔，構成要素名〕…

(g)

　　　〔PCTFREE ページ内の未使用領域の比率〕

(h)

　　　WITHIN ｛シーケンシャルインデクス用RDエリア名

　　　　　　　　　｜（シーケンシャルインデクス用RDエリア名）

　　　　　　　　　｜（（シーケンシャルインデクス用RDエリア名）

　　　　　　　　　〔，（シーケンシャルインデクス用RDエリア名）〕…）｝

　　　｝

○※4，※5，※7

(i)

　　　〔SUBPAGE NUMBER サブページ分割数〕

×

(j)

　　　〔PCTFREE ｛ページ内の未使用領域の比率

　　　　　｜（〔ページ内の未使用領域の比率〕，セグメント内の空きページの比率）｝〕

(k)

　　　WITHIN ｛格納レコード用RDエリア名

　　　　　　　｜（格納レコード用RDエリア名）

　　　　　　　｜（（格納レコード用RDエリア名） 〔格納条件〕

　　　　　　　　〔，（格納レコード用RDエリア名） 格納条件〕…）｝

○※4，※5，※7

(l)

　　　〔POINTER AREA SIZE 管理領域の予備領域の長さ〕

×

(m)

　　　〔SECONDARY INDEX 二次インデクス名

(n)

　　　　　　ORDER KEY ASCENDING 構成要素名，構成要素名〔，構成要素名〕…

(o)

　　　　　　〔PCTFREE ページ内の未使用領域の比率〕

(p)

　　　　　　WITHIN ｛二次インデクス用RDエリア名

　　　　　　　　　　｜（二次インデクス用RDエリア名）

　　　　　　　　　　｜（（二次インデクス用RDエリア名）

　　　　　　　　　　〔，（二次インデクス用RDエリア名）〕…）｝

○※4，※5，※7

　　　　〕…

　…

(q)

　SET 親子集合型名

×

(r)

　　　OWNER POINTER FOR FIRST LAST MEMBER

(s)

　　　MEMBER POINTER FOR NEXT PRIOR TENANT

　…

(t)

　〔SDBOPTION

○※3

(u)

　　　〔KEYDEF 構成要素名

(v)

　　　　　　DATA データベースのキー値〔，格納レコード名〕…

○※6

　　　　〕…

　　〕

(w)

END STORAGE SCHEMA

×

×

（凡例）

○：*ALTER DICTIONARY文の実行時に変更できるオペランドです。

×：*ALTER DICTIONARY文の実行時に変更できないオペランドです。

注

定義句は，形式で記述している順序に従って指定します。必須の定義と省略できる定義の間は形式で記載されているとおりに指定してください。

*ALTER DICTIONARY文で子レコード型を追加した場合，POINTER AREA SIZE句に指定していた管理領域の予備領域の長さが自動的に変更されることがあります。変更後の値については，KFPB61784-Iメッセージに出力されます。

注※1

*ALTER DICTIONARY文実行時のオペランド追加可否です。

注※2

最下位の子レコード型の追加とその親子集合の追加ができます。

STORAGE RECORD句とSET句は必ず両方指定してください。どちらか片方だけを指定することはできません。

既存の格納レコード型の定義は変更できません。

注※3

レコード分割キーの追加ができます。

注※4

格納レコード用RDエリアとインデクス用RDエリアはペアで変更します。

１つの*ALTER DICTIONARY文で実行できる格納レコード用RDエリアの変更を次の表に示します。

表11‒54　1つの*ALTER DICTIONARY文で実行できる格納レコード用RDエリアの変更

格納レコード用RDエリア変更内容

横分割の方法

格納条件指定

1つのRDエリアを追加または削除

○

複数のRDエリアを追加または削除

○

1つのRDエリアを複数のRDエリアに分割

○

複数のRDエリアを複数のRDエリアに分割

×

複数のRDエリアを1つのRDエリアに統合

○

複数のRDエリアを複数のRDエリアに統合

×

格納RDエリア数を変更しないで，格納条件だけを追加，更新，または削除

×

（凡例）

○：実行できます。

×：実行できません。

−：該当しません。

なお，次の操作はできません。

1つのRDエリアに格納していたレコード型を，複数のRDエリアに分割格納する変更

複数のRDエリアに分割格納していたレコード型を，1つのRDエリアに格納する変更

1つのRDエリアを複数のRDエリアに分割する際，分割元のRDエリアを削除する変更

複数のRDエリアを1つのRDエリアに統合する際，統合先のRDエリアに統合元のRDエリアを使用しない変更

注※5

次の条件をすべて満たす場合，RDエリアの追加，削除はできません。

レコード型がサーバ内で横分割されていない

レコード型の先頭のデータベースキーのデータ種別がK，A以外である

同一RDエリアに格納する条件を複数に分けて定義している

注※6

RDエリアの追加の場合に，RDエリア分割キーの追加ができます。

RDエリアの削除の場合に，RDエリア分割キーの削除ができます。

注※7

RDエリアの定義を変更した場合，変更対象のRDエリアに格納されているデータが削除されることがあります。RDエリアの定義変更時のデータの削除有無については，「表11-23　RDエリアの定義変更時のデータの削除有無（格納条件指定の横分割の場合）」を参照してください。

(3)　オペランドの説明

SDBデータベース格納定義の各オペランドの指定内容を説明します。

(a)　STORAGE SCHEMA

STORAGE SCHEMA SDBデータベース格納名 FOR SDBデータベース名

SDBデータベース格納名と対応するSDBデータベース名を指定します。

SDBデータベース格納名

〜＜識別子＞((1〜30バイト))

SDBデータベース格納名を指定します。

すでに使用しているSDBデータベース格納名は指定できません。

SDBデータベース名

〜＜識別子＞((1〜30バイト))

SDBデータベース名を指定します。

SDBデータベース名に一致する名称がSDBデータベース定義にない場合は，エラーとなります。

(b)　DBTYPE

DBTYPE 4V

SDBデータベース種別が4V AFMのSDBデータベースを定義します。

注意事項

SDBデータベース種別が4V（4V FMBまたは4V AFM）のSDBデータベースとSD FMBのSDBデータベースをシステム内で混在して定義することはできません。混在させた場合，動作を保証しません。

(c)　STORAGE RECORD

STORAGE RECORD 格納レコード名

格納レコード名

〜＜識別子＞((1〜30バイト))

SDBデータベース定義のRECORD句で指定したレコード型名を，格納レコード名として指定します。

《規則》

SDBデータベース定義のRECORD句で指定したレコード型名と同じ個数，同じ順番で指定してください。

すでに使用している格納レコード名は指定できません。ただし，格納レコードの所有者（スキーマ）が異なる場合は，同じ格納レコード名を指定できます。

(d)　CLUSTERED，SEQUENTIAL

CLUSTERED 親子集合型名│SEQUENTIAL シーケンシャルインデクス名

格納するレコードの配置方法を指定します。

CLUSTERED 親子集合型名

親子集合型名

　　〜＜識別子＞((1〜30バイト))

すべての子レコードを親レコードと同じRDエリアに格納する場合に指定します。

《規則》

STORAGE RECORD句に指定したレコード型ごとに1つ指定できます。STORAGE RECORD句に指定したレコード型が，仮想ルートレコード型の場合は指定できません。

SDBデータベース格納定義のSET句に指定する親子集合型名と同じ個数，同じ順番で指定してください。

SEQUENTIAL シーケンシャルインデクス名

インデクスのキーの値の順序に従って，親レコード実現値の格納位置を決めるときに指定します。SEQUENTIAL句は，仮想ルートレコード型に必ず指定します。

シーケンシャルインデクス名

　　〜＜識別子＞((1〜30バイト))

STORAGE RECORD句に指定した仮想ルートレコード型に対して1つ指定します。STORAGE RECORD句に指定したレコード型が，仮想ルートレコード型以外の場合は指定できません。

《規則》

シーケンシャルインデクス名には，二次インデクス名とは別の名称を指定してください。

シーケンシャルインデクス名は，同一スキーマ内で一意になるように指定してください。二次インデクス名も含めて一意になるようにしてください。

(e)　FOR RECORD

FOR RECORD

レコード型単位にシーケンシャルインデクスを作成します。

キーの値が同じ場合，シーケンシャルインデクスへの格納を禁止します。

(f)　ORDER KEY

ORDER KEY ASCENDING 構成要素名〔，構成要素名〕…

インデクスのキーとなる構成要素名を指定します。

指定した構成要素名をキーとして，昇順にシーケンシャルインデクスが作成されます。

ASCENDING

昇順にシーケンシャルインデクスを作成します。

構成要素名

〜＜識別子＞((1〜30バイト))

インデクスのキーに指定する構成要素を次に示すように指定してください。

仮想ルートレコード型に指定した基本項目の構成要素名を，定義順にすべて指定します。仮想ルートレコード型の構成要素の指定については，「表11-41　仮想ルートレコード型の構成要素の指定」を参照してください。4V DAMのSDBデータベースの定義例については，「11.11.2　SDBデータベースの定義例（4V DAMの場合）」を参照してください。

《規則》

構成要素名は，格納レコード名と対応するSDBデータベース定義のレコード型名で指定した構成要素名としてください。

シーケンシャルインデクス作成時に指定できる構成要素名の条件について，次の表に示します。

表11‒55　シーケンシャルインデクス作成時に指定できる構成要素名の条件

項目

内容

指定できる構成要素名の数

最大7個

インデクスのキー長の合計

249バイト以内

インデクスのキーに指定する構成要素とキー長の関係については，「表11-56　インデクスのキーに指定する構成要素とキー長の関係」を参照してください。

構成要素名

基本項目の構成要素名

集団項目が含まれる構成要素名は指定できません。

表11‒56　インデクスのキーに指定する構成要素とキー長の関係

データ型

インデクスのキー長（単位：バイト）

構成要素名の指定が1つの場合

構成要素名の指定が複数の場合

CHARACTER

SDBデータベース定義で指定したデータ長

SDBデータベース定義で指定したデータ長＋制御部（1バイト）

XCHARACTER

PACKED 〔DECIMAL FIXED〕 整数部桁数〔，小数部桁数〕

↓（整数部桁数＋小数部桁数）÷2↓＋1

↓（整数部桁数＋小数部桁数）÷2↓＋2

INTEGER

4

5

(g)　PCTFREE

PCTFREE ページ内の未使用領域の比率

〜＜符号なし整数＞((0〜99))≪30≫

インデクスページ内の未使用領域の比率を指定します。

(h)　WITHIN

WITHIN ｛シーケンシャルインデクス用RDエリア名

｜（シーケンシャルインデクス用RDエリア名）

｜（（シーケンシャルインデクス用RDエリア名）

〔，（シーケンシャルインデクス用RDエリア名）〕…）｝

シーケンシャルインデクス用RDエリア名

〜＜RDエリア名＞((1〜30バイト))

シーケンシャルインデクスを格納するRDエリア名を指定します。

1つのSEQUENTIAL句に対して，WITHIN句を必ず1つ指定してください。

《規則》

シーケンシャルインデクスを複数のRDエリアに格納する場合の規則

シーケンシャルインデクス用RDエリアとして指定できるRDエリアの数とSDBデータベースの横分割の関係を次の表に示します。

表11‒57　シーケンシャルインデクス用RDエリアとして指定できるRDエリア数とSDBデータベースの横分割の関係

SDBデータベースの横分割方法

指定できるRDエリア数

分割指定なし

1

格納条件分割

1〜256

シーケンシャルインデクス用RDエリアは，格納レコード用RDエリアと同じ数を指定する必要があります。

1つのWITHIN句の中では，シーケンシャルインデクス用RDエリア名は一意に指定してください。

格納レコード用RDエリアと対応するシーケンシャルインデクス用RDエリアは，同じサーバ内のRDエリアである必要があります。

指定するシーケンシャルインデクス用RDエリアに関する規則

格納レコード用RDエリアとして指定したRDエリアは指定できません。

シーケンシャルインデクス用RDエリアには，create rdarea文のdata modelオペランドにstructuredを指定したRDエリアを指定してください。

シーケンシャルインデクス用RDエリアとして指定するRDエリアには，1つのRDエリアにシーケンシャルインデクスと二次インデクスを合わせて，インデクスを最大500個指定できます。

インナレプリカ機能を使用する場合，指定するRDエリアはインナレプリカ機能の使用条件を満たしている必要があります。インナレプリカ機能の使用条件については，「付録J　インナレプリカ機能使用時のHiRDB/SD定義ユティリティ（pdsdbdef）の実行【4V FMB，4V AFM】」を参照してください。

シーケンシャルインデクス用RDエリアに定義できるリソースの組み合わせを次の表に示します。

表11‒58　RDエリアに定義できるリソースの組み合わせ

定義するリソース

RDエリアの定義

レコード型・インデクス定義なし

SDBデータベース格納定義A

レコード型定義あり

インデクス定義あり

SDBデータベース格納定義A

レコード型

○

○

×

インデクス

○

×

○

SDBデータベース格納定義B

レコード型

○

×

×

インデクス

○

×

○

（凡例）

○：定義できます。

×：定義できません。

(i)　SUBPAGE NUMBER

SUBPAGE NUMBER サブページ分割数

サブページ分割数

〜＜符号なし整数＞((2〜16))

1データページ当たりのサブページ分割数を指定します。SUBPAGE NUMBERを省略した場合，サブページ分割されません。サブページ分割数の設計方針については，「3.2.4　サブページの設計」を参照してください。

《規則》

仮想ルートレコード型，およびすべての子レコード型で同じサブページ分割数を指定してください。

サブページ分割数を指定する場合，格納レコード用RDエリアのページ長が，4096バイトである必要があります。

(j)　PCTFREE

PCTFREE ｛ページ内の未使用領域の比率

｜（〔ページ内の未使用領域の比率〕，セグメント内の空きページの比率）｝

ページ内の未使用領域の比率

〜＜符号なし整数＞((0〜99))

セグメント内の空きページの比率

〜＜符号なし整数＞((0〜50))

データベースの初期作成時に設定するページ内の未使用領域の比率を指定します。ページ内の未使用領域の比率は，0〜99（％）の範囲で指定できます。ページ内の未使用領域の比率を省略すると，30（％）が仮定されます。

SUBPAGE NUMBER句でサブページ分割数を指定している場合，ページ内の未使用領域の比率は，サブページ内の未使用領域の比率になります。例えば，30を指定した場合，サブページ内の未使用領域の比率が30％になります。

また，セグメント内の空きページの比率を0〜50（％）の範囲で指定できます。セグメント内の空きページの比率を省略すると，10（％）が仮定されます。

《規則》

仮想ルートレコード型，およびすべての子レコード型で同じ値を指定してください。

(k)　WITHIN

WITHIN ｛格納レコード用RDエリア名

｜（格納レコード用RDエリア名）

｜（（格納レコード用RDエリア名） 〔格納条件〕

〔，（格納レコード用RDエリア名） 格納条件〕…）｝

格納レコード用RDエリア名

〜＜RDエリア名＞((1〜30))

格納条件

〜構成要素名＝（RDエリア分割キー値〔，RDエリア分割キー値〕…）

RDエリア分割キー値

〜X'＜16進数字＞'((1〜30バイト))

〜'＜英数字または下線（_）＞'((1〜30バイト))※1

〜＜10進数定数＞※2

〜＜整数定数＞※3

注※1

先頭に下線（_）は指定できません。

注※2

10進数定数については，マニュアル「HiRDB Version 9 SQLリファレンス」の「定数」を参照してください。

整数部と小数部にすべて0を指定する場合，符号に-を指定しないでください。-0.を指定しても0.として扱います。

なお，10進数定数の値の範囲を超える値を指定できません。

注※3

整数定数については，マニュアル「HiRDB Version 9 SQLリファレンス」の「定数」を参照してください。

-0を指定しても0として扱います。

なお，整数定数の値の範囲を超える値を指定できません。

レコード実現値を格納するRDエリア名を指定します。

1つのSTORAGE RECORD句に対して，WITHIN句を必ず1つ指定してください。

RDエリア分割キーのデータ型ごとのRDエリア分割キー値の指定形式を次の表に示します。

表11‒59　RDエリア分割キーのデータ型ごとのRDエリア分割キー値の指定形式

RDエリア分割キーのデータ型

RDエリア分割キー値の指定形式

16進数字

英数字，または下線(_)

10進数定数

整数定数

CHARACTER

○

○

×

×

XCHARACTER

○

○

×

×

PACKED 〔DECIMAL FIXED〕

×

×

○

×

INTEGER

×

×

×

○

（凡例）

○：指定できます。

×：指定できません。

《規則》

レコードを複数のRDエリアに格納する場合の規則

1レコード型に対して指定できる格納レコード用RDエリアの数とSDBデータベースの横分割の関係を次の表に示します。

表11‒60　レコード型に対して指定できる格納レコード用RDエリアの数とSDBデータベースの横分割の関係

SDBデータベースの横分割方法

指定できるRDエリア数

分割指定なし

1

格納条件分割

1〜256

格納条件分割で格納レコード用RD エリア名を複数指定した場合は，すべての格納レコード用RD エリア名に格納条件を指定してください。

同一SDBデータベース格納定義内の子レコード型に指定する格納レコード用RDエリア名は，仮想ルートレコード型と同じ数，同じ順番ですべて指定する必要があります。

1つのWITHIN句の中では，格納レコード用RDエリア名は一意に指定してください。

RDエリア分割キー値に指定できる範囲を次の表に示します。

表11‒61　RDエリア分割キー値に指定できる範囲

RDエリア分割キー値の指定形式

RDエリア分割キー値

最小

最大

16進数字

X'00…00'

X'FF…FF'

10進数定数

-9…9.9…9

（整数部と小数部がRDエリア分割キーの全体桁数分'9'の負の数）

9…9.9…9

（整数部と小数部がRDエリア分割キーの全体桁数分'9'の正の数）

整数定数

−2147483648

2147483647

指定する格納レコード用RDエリアに関する規則

インデクスを格納するRDエリアは指定できません。

格納レコード用RDエリアには，create rdarea文のdata modelオペランドにstructuredを指定したRDエリアを指定してください。

指定するRDエリア名には，格納レコード長が当該RDエリアのページ長（サブページ分割をしている場合はサブページ長）に収まるRDエリア名を指定してください。

インナレプリカ機能を使用する場合，指定するRDエリアはインナレプリカ機能の使用条件を満たしている必要があります。インナレプリカ機能の使用条件については，「付録J　インナレプリカ機能使用時のHiRDB/SD定義ユティリティ（pdsdbdef）の実行【4V FMB，4V AFM】」を参照してください。

格納レコード用RDエリアに定義できるリソースの組み合わせについては，「表11-58　RDエリアに定義できるリソースの組み合わせ」を参照してください。

レコードの格納条件に関する規則

格納条件は，仮想ルートレコード型にだけ指定できます。

格納条件に指定する構成要素に関する規則

1個のWITHIN句の中では，単一の構成要素名を指定してください。複数種類の構成要素名は指定できません。

構成要素名には，SDBデータベース定義で指定した構成要素名を指定してください。

構成要素名には，データ種別1がK，データ種別2がAまたはMの構成要素名を指定してください。

4V DAMまたは4V MAMのSDBデータベースで，データ種別1がK，データ種別2がAまたはMの構成要素が存在する場合，その構成要素を格納条件の構成要素として指定してください。

格納条件のRDエリア分割キー値に関する規則

1つのWITHIN句に対するRDエリア分割キー値は，最大4,000個指定できます。

1つのWITHIN句の中で同じRDエリア分割キー値は重複して指定できません。

RDエリア分割キーのデータ型がCHARACTER，またはXCHARACTERの場合，指定したRDエリア分割キー値の長さは，SDBデータベース定義で指定した格納条件の構成要素の長さと一致させる必要があります。

RDエリア分割キーのデータ型がPACKEDの場合，RDエリア分割キーの整数部桁数，および小数部桁数の範囲内の値を指定してください。

(l)　POINTER AREA SIZE

POINTER AREA SIZE 管理領域の予備領域の長さ

管理領域の予備領域の長さ

〜＜符号なし整数＞((0〜16,384))≪0≫

親レコードで管理している子レコード用の管理領域の予備領域の長さを指定します。

管理領域では，ポインタの情報や一連番号などを管理しています。

将来の親子集合の拡張を考慮して，親子集合1個当たり，約40バイトの予備領域を指定しておくことを推奨します。

(m)　SECONDARY INDEX

SECONDARY INDEX 二次インデクス名

二次インデクス名

〜＜識別子＞((1〜30バイト))

二次インデクス名を指定します。

《規則》

二次インデクスは，仮想ルートレコード型には指定できません。

二次インデクス名は，同一スキーマ内で一意になるように指定してください。シーケンシャルインデクス名も含めて一意になるようにしてください。

二次インデクス名には，シーケンシャルインデクス名とは別の名称を指定してください。

SECONDARY句は，1つのSTORAGE RECORD句内で2つまで指定できます。詳細については，「表11-62　二次インデクスの定義規則」を参照してください。

(n)　ORDER KEY

ORDER KEY ASCENDING 構成要素名，構成要素名〔，構成要素名〕…

構成要素名

〜＜識別子＞((1〜30バイト))

二次インデクスのキーとなる構成要素名を指定します。

ORDER KEY句については，「11.6.2(3)(f)　ORDER KEY」を参照してください。

《規則》

1つのSTORAGE RECORD内に複数の二次インデクスを定義する場合，すべての構成要素名の指定順序が同一のインデクスを複数定義できません。

二次インデクスについては，「表11-62　二次インデクスの定義規則」に従って定義してください。

ユーザキーを含む場合，SDBデータベース定義のKEY句にASCENDINGを指定してください。

1つの二次インデクスに指定できる構成要素の数は，2〜8個です。

二次インデクスの構成要素の指定順序は，次の表の「指定する構成要素」の記述順に従ってください。データベースキー1〜7，上位の一連番号，一連番号，またはユーザキーは，SDBデータベース定義の定義順ですべて指定してください。

表11‒62　二次インデクスの定義規則

レコード型種別

一連番号最大値※1

ユーザキー※2

二次インデクスの指定

指定する構成要素

仮想ルートレコード型

−

−

×

−

子レコード型

1以上

なし

1本必須

データベースキー1〜7，一連番号

あり

2本必須

データベースキー1〜7，一連番号

データベースキー1〜7，ユーザキー

0

−

×

−

（凡例）

×：指定できません。

−：該当しません。

注※1

SDBデータベース定義のOCCURRENCE NUMBER句の指定値，または省略値です。

注※2

SDBデータベース定義のTYPE句のデータ種別1にU，データ種別2にKを指定した構成要素です。

二次インデクスに指定する構成要素の定義例を次に示します。

4V MAMのSDBデータベースで，ユーザキーありの場合

SDBデータベース定義

                           :
RECORD REC1
    2 DBKEY_L1   CHARACTER  5     TYPE D,L
    2 DBKEY
      3 DBKEY_L2   XCHARACTER 1   TYPE K,L
      3 DBKEY_L3   XCHARACTER 1   TYPE K,L
      3 DBKEY_L4   CHARACTER  3   TYPE K,R
      3 DBKEY_LN   INTEGER        TYPE K,N
    2 USERD10      CHARACTER  4   TYEP U,K
    2 USERD11      CHARACTER  10  TYPE U,D
                           :

SDBデータベース格納定義

                           :
STORAGE RECORD REC1
    CLUSTERED SET1
    WITHIN  MAMX01
    SECONDARY INDEX  REC1_SI1
      ORDER KEY ASCENDING  DBKEY_L1, DBKEY_L2, DBKEY_L3,
                           DBKEY_L4, DBKEY_LN
      WITHIN MAMX01_I
    SECONDARY INDEX  REC1_SI2
      ORDER KEY ASCENDING  DBKEY_L1, DBKEY_L2, DBKEY_L3,
                           DBKEY_L4, USERD10
      WITHIN MAMX01_I
                           :

(o)　PCTFREE

PCTFREE ページ内の未使用領域の比率

PCTFREE句については，「11.6.2(3)(g)　PCTFREE」を参照してください。

(p)　WITHIN

WITHIN ｛二次インデクス用RDエリア名

｜（二次インデクス用RDエリア名）

｜（（二次インデクス用RDエリア名）〔，（二次インデクス用RDエリア名）〕…）｝

二次インデクス用RDエリア名

〜＜RDエリア名＞((1〜30バイト))

二次インデクスを格納するRDエリア名を指定します。

1つのSECONDARY INDEX句で，WITHIN句を必ず1つ指定してください。

《規則》

二次インデクスを複数RDエリアに格納する場合の規則

1つの二次インデクスに指定できる二次インデクス用RDエリアの個数は，シーケンシャルインデクス用RDエリアの個数と同じにしてください。シーケンシャルインデクス用RDエリアの個数については，「表11-57　シーケンシャルインデクス用RDエリアとして指定できるRDエリア数とSDBデータベースの横分割の関係」を参照してください。

二次インデクス用RDエリアは，格納レコード用RDエリアと同じ数を指定する必要があります。

1つのWITHIN句の中では，二次インデクス用RDエリア名は一意に指定してください。

格納レコード用RDエリアと対応する二次インデクス用RDエリアは，同じサーバ内のRDエリアである必要があります。

指定する二次インデクス用RDエリアに関する規則

格納レコード用RDエリア名として指定したRDエリアは指定できません。

二次インデクス用RDエリアには，create rdarea文のdata modelオペランドにstructuredを指定したRDエリアを指定してください。

二次インデクス用RDエリアとして指定するRDエリアには，1つのRDエリアにシーケンシャルインデクスと二次インデクスを合わせて，インデクスを最大500個指定できます。

インナレプリカ機能を使用する場合，指定するRDエリアはインナレプリカ機能の使用条件を満たしている必要があります。インナレプリカ機能の使用条件については，「付録J　インナレプリカ機能使用時のHiRDB/SD定義ユティリティ（pdsdbdef）の実行【4V FMB，4V AFM】」を参照してください。

二次インデクス用RDエリアに定義できるリソースの組み合わせについては，「表11-58　RDエリアに定義できるリソースの組み合わせ」を参照してください。

(q)　SET

SET 親子集合型名

〜＜識別子＞((1〜30バイト))

親レコード型，子レコード型の親子集合型名を指定します。

《規則》

SDBデータベース定義のSET句で指定した親子集合型名と同じ個数，同じ順番で指定してください。

(r)　OWNER POINTER FOR

OWNER POINTER FOR FIRST LAST MEMBER

親レコードに持たせるポインタを指定します。

親レコードにFIRSTポインタ，およびLASTポインタを持たせる場合に指定します。

(s)　MEMBER POINTER FOR

MEMBER POINTER FOR NEXT PRIOR TENANT

子レコードに持たせるポインタを指定します。

NEXT PRIOR

子レコードにNEXTポインタ，およびPRIORポインタを持たせる場合に指定します。

(t)　SDBOPTION

SDBOPTION

SDBデータベース格納定義に関するオプションを指定します。

(u)　KEYDEF

KEYDEF 構成要素名

構成要素名

〜＜識別子＞((1〜30バイト))

キーの項目である構成要素名を指定します。

KEYDEF句の用途を次に示します。

API（レコードの検索，またはレコードの格納）の実行時，またはHiRDB/SDデータベース作成ユティリティ（pdsdblod）実行時に，データのキー値を基にアクセス対象のレコードを決めることができます。

不正データをチェックするために指定できます。

《規則》

仮想ルートレコード型内のデータ種別1がDの構成要素を必ず指定してください。

構成要素名は，SDBデータベース定義の仮想ルートレコード型でデータベースキーとして定義されている必要があります。このため，1つのSDBデータベース格納定義で指定できるKEYDEF句の最大数は，SDBデータベース定義の仮想ルートレコード型で定義できるデータベースキーの基本項目数となります。

KEYDEF句を複数指定する場合は，SDBデータベース定義の定義順に構成要素名を指定してください。

KEYDEF句を指定した場合は，DATA句を指定する必要があります。

4V MAMのSDBデータベースの場合，データベースキーの構成要素名をSDBデータベース定義の定義順にすべて指定する必要があります。

SDBデータベース定義のSDBOPTION句下のFUNCTION句にFORMAT USEを指定して，フォーマットライト機能を使用する場合，データベースキーの構成要素名を定義順にすべて指定する必要があります。

SDBデータベース種別とKEYDEF句の指定の組み合わせについては，次の表を参照してください。

表11‒63　SDBデータベース種別とKEYDEF句の指定の組み合わせ

SDBデータベース種別

KEYDEF句，DATA句の指定

レコード型名

用途

4V AFM

○

△※

次の場合に使用します。

フォーマットライト機能使用時

データロード時

APIによるデータ操作時

不正データのチェック時

（凡例）

○：必須で指定します。

△：省略できます。

注※

仮想ルートレコード型を除いて，2個以上の格納レコードがある場合，どちらかのKEYDEF句内で最低1つは指定する必要があります。

RDエリア分割キーとして，シーケンシャルインデクスの先頭以外の構成要素を指定したレコード型に対して，RDエリアを指定して検索をする場合は，次に示す条件で指定してください。

・RDエリア分割キーに指定した構成要素よりも前にある構成要素をすべてKEYDEF句に指定する。

・指定したKEYDEF句ごとのデータベースのキー値は1つだけ指定する。

RDエリアを指定した検索については，マニュアル「TP1/Financial Service Platform 使用の手引」の「SDBハンドラ機能」の「店群順アクセス」および「DAM順アクセス」を参照してください。

構成要素のデータ種別とKEYDEF句の指定の組み合わせを次の表に示します。

表11‒64　構成要素のデータ種別とKEYDEF句の指定の組み合わせ

データ種別1

データ種別2

KEYDEF句下のDATA句の格納レコード名（子レコード型）の指定

D

L

×

A

×

R

×

M

×

K

L

×

A

×

R

○

M

○

上記以外

×

上記以外

×

（凡例）

○：指定が必要です。

×：指定できません。

(v)　DATA

DATA データベースのキー値〔，格納レコード名〕…

データベースのキー値

〜X'＜16進数字＞'((1〜30バイト))

〜'＜英数字または下線（_）＞'((1〜30バイト))※1

〜＜10進数定数＞※2

〜＜整数定数＞※3

注※1

先頭に下線（_）は指定できません。

注※2

10進数定数については，マニュアル「HiRDB Version 9 SQLリファレンス」の「定数」を参照してください。

整数部と小数部にすべて0を指定する場合，符号に-を指定しないでください。-0.を指定しても0.として扱います。

なお，10進数定数の値の範囲を超える値は指定できません。

注※3

整数定数については，マニュアル「HiRDB Version 9 SQLリファレンス」の「定数」を参照してください。

-0を指定しても0として扱います。

なお，整数定数の値の範囲を超える値は指定できません。

格納レコード名

〜＜識別子＞((1〜30バイト))

データベースのキー値と格納先の格納レコード名を指定します。

KEYDEF句の構成要素名で指定した，構成要素のデータ型ごとのデータベースのキー値の指定形式を次の表に示します。

表11‒65　KEYDEF句の構成要素名で指定した，構成要素のデータ型ごとのデータベースのキー値の指定形式

KEYDEF句の構成要素名で指定した構成要素のデータ型

データベースのキー値の指定形式

16進数字

英数字，または下線（_）

10進数定数

整数定数

CHARACTER

○

○

×

×

XCHARACTER

○

○

×

×

PACKED 〔DECIMAL FIXED〕

×

×

○

×

INTEGER

×

×

×

○

（凡例）

○：指定できます。

×：指定できません。

KEYDEF句の構成要素名で指定した構成要素のデータ型がCHARACTERまたはXCHARACTERの場合，データベースのキー値には，SDBデータベースのキー値をKEYDEF句の構成要素名で指定した構成要素のデータ属性とバイト数を合わせて指定します。

KEYDEF句の構成要素名で指定した構成要素のデータ型がPACKEDの場合，データベースのキー値にはKEYDEF句の構成要素名で指定した構成要素の整数部桁数，および小数部桁数の範囲内の値を指定します。

SDBデータベース定義のSDBOPTION句下のFUNCTION句にFORMAT USEを指定して，フォーマットライト機能を使用する場合，フォーマットライト機能ではすべての組み合わせで，データベースのフォーマットライトを行います。

格納レコード名は，SDBデータベースのキー値で格納先の子レコード型名を決める場合に指定します。

KEYDEF句下のDATA句でのデータベースのキー値の指定方法を次の表に示します。

表11‒66　KEYDEF句下のDATA句でのデータベースのキー値の指定方法

データ型

データベースのキー値

KEYDEF句下のDATA句でのデータベースのキー値の指定例

SDBディレクトリ情報の設定内容

CHARACTER(4)

ABCD

'ABCD'

41424344

CHARACTER(4)

abcd

'abcd'

61626364

CHARACTER(4)

1000

'1000'

31303030

XCHARACTER(4)

AB12

X'41423132'

41423132

PACKED(2,1)

15.5

15.5

155C※

PACKED(2,2)

15.5

15.5

01550C

PACKED(3,2)

15.5

15.5

01550C

INTEGER

10

10

0A000000

注※

正の値または0の場合は，符号部をX'C'で設定します。負の値の場合は，符号部をX'D'で設定します。

《規則》

データベースのキー値に関する規則

4V MAMのSDBデータベースの場合，レコード分割キー以外のデータベースキーのキー値は1つだけ指定できます。

1つのKEYDEF句で，データベースのキー値が重複することはできません。

データベースのキー値を16進数字で指定する場合，データベースのキー値の長さはバイト単位で指定してください。

KEYDEF句で指定した構成要素が，RDエリア分割キーの構成要素として指定されている場合，格納条件のRDエリア分割キー値で指定された値と一致させてください。

DATA句を複数指定する場合，1つのKEYDEF句内でデータベースのキー値を昇順に指定してください。データベースのキー値を昇順に指定する例を次の表に示します。

表11‒67　データベースのキー値を昇順に指定する例

データ型

指定順序

KEYDEF句下のDATA句で指定するデータベースのキー値

SDBディレクトリ情報の設定内容

指定内容の意味

CHARACTER(4)

1

'ABCD'

41424344

文字列：ABCD※

1

X'41424344'

41424344

文字列：ABCD※

2

'abCD'

61624344

文字列：abCD

3

'abcd'

61626364

文字列：abcd

XCHARACTER(2)

1

X'0030'

0030

文字列：0

2

X'2B30'

2B30

文字列：＋0

3

X'2B31'

2B31

文字列：＋1

4

X'2D30'

2D30

文字列：−0

5

X'2D31'

2D31

文字列：−1

PACKED(2,2)

1

-11.15

01115D

数字：-11.15

2

-10.15

01015D

数字：-10.15

3

10.15

01015C

数字：10.15

4

11.15

01115C

数字：11.15

INTEGER

1

-3

FDFFFFFF

数字：-3

2

-1

FFFFFFFF

数字：-1

3

0

00000000

数字：0

4

1

01000000

数字：1

5

3

03000000

数字：3

注※

指定内容の意味が同じとなるデータベースのキー値は指定できません。

格納レコード名に関する規則

1つのKEYDEF句に対して，格納レコード名が存在するDATA句と存在しないDATA句を同時に指定することはできません。

格納レコード名は，1つのSDBデータベース定義に対して1つのKEYDEF句にまとめて指定してください。

格納レコード名には，子レコード型名を指定してください。

データ種別1がKで，データ種別2がRまたはMの構成要素を指定したKEYDEF句内で，すべての子レコード型名を指定する必要があります。

4V MAMのSDBデータベースの場合，複数のキー値に対して同じ格納レコード名を指定できません。

そのほかの規則

1つのKEYDEF句で指定できるDATA句は，最大32,767個です。

KEYDEF句の構成要素名で指定した構成要素が，データ種別1がDの構成要素の場合，DATA句は1つだけ指定してください。

(w)　END STORAGE SCHEMA

END STORAGE SCHEMA

SDBデータベース格納定義の終了を示します。

11.7　SDBデータベース定義，SDBデータベース格納定義【SD FMB】

SD FMBのSDBデータベースを定義する場合の，SDBデータベース定義およびSDBデータベース格納定義の指定形式と各オペランドの指定内容について説明します。

11.7.1　SDBデータベース定義【SD FMB】

*ENTRY DICTIONARY文に指定するSDBデータベース定義について説明します。

(1)　機能

SDBデータベースの論理構造を定義します。

(2)　形式

項番

形式

(a)

SCHEMA SDBデータベース名

(b)

DBTYPE SD FMB

(c)

　RECORD レコード型名

(d)

　　　　　｛レベル番号｜ITEM｝ 構成要素名

(e)

　　　　　〔｛CHARACTER 長さ

　　　　　　　　｜XCHARACTER 長さ

　　　　　　　　｜PACKED 〔DECIMAL FIXED〕 整数部桁数〔，小数部桁数〕

　　　　　　　　｜INTEGER

　　　　　　　　｜SMALLINT｝

(f)

　　　　　　　TYPE データ種別1，データ種別2

(g)

　　　　　　　〔OCCURS 繰り返し回数〕

　　　　　　〕…

(h)

　　　　　〔RECORDID レコード識別コード〕

　…

(i)

　〔SET 親子集合型名

(j)

　　　　OWNER 親レコード型名

(k)

　　　　ORDER LAST

(l)

　　　　MEMBER 子レコード型名

(m)

　　　　INSERTION AUTOMATIC

(n)

　　　　RETENTION FIXED

(o)

　　　　〔SETOPTION

(p)

　　　　　　　　〔OCCURRENCE NUMBER 一連番号の最大値

(q)

　　　　　　　　　　　〔WARNING ｛一連番号使用比率1

　　　　　　　　　　　　　　　　　　〔，一連番号使用比率2

　　　　　　　　　　　　　　　　　　〔，一連番号使用比率3〕〕｜0｝〕

(r)

　　　　　　　　　　　〔REUSE YES〕

　　　　　　　　　〕

　　　　　〕

　　〕…

(s)

　〔SDBOPTION

(t)

　　　　〔OCCURRENCE WARNING ｛一連番号使用比率1

　　　　　　　　　　　　　　　　　　　　　〔，一連番号使用比率2

　　　　　　　　　　　　　　　　　　　　　〔，一連番号使用比率3〕〕｜0｝〕

　　〕

(u)

END SCHEMA

(3)　定義句の指定順序

SDBデータベース定義の定義句の指定順序には，次に示す規則があります。

必須の定義，または必須の定義と省略できる定義の間は，上記の形式で示す順序で指定してください。

RECORD句およびSET句の指定順序は，一筆書き順の規則に従ってください。一筆書き順の規則については，「図11-11　RECORD句およびSET句の指定順序（一筆書き順）の規則」を参照してください。

(4)　オペランドの説明

SDBデータベース定義の各オペランドの指定内容を説明します。

(a)　SCHEMA

SCHEMA SDBデータベース名

〜＜識別子＞((1〜30バイト))

SDBデータベースのSDBデータベース名を指定します。

すでに使用しているSDBデータベース名は指定できません。

(b)　DBTYPE

定義するSDBデータベースのSDBデータベース種別を指定します。

DBTYPE SD FMB

SDBデータベース種別がSD FMBのSDBデータベースを定義する場合は，DBTYPE句にSD FMBを指定します。

SD FMBのSDBデータベースとは，階層構造を持つデータベースで，メインフレームのXDM/SDがサポートしている階層型モデルのデータベースに相当します。詳細については，「2.3.3　SDBデータベース」を参照してください。

注意事項

SDBデータベース種別が4V（4V FMBまたは4V AFM）のSDBデータベースとSD FMBのSDBデータベースをシステム内で混在して定義することはできません。混在させた場合，動作を保証しません。

(c)　RECORD

RECORD レコード型名

〜＜識別子＞((1〜30バイト))

レコード型名を指定します。

《規則》

レコード型名は，同一スキーマ内で一意になるように指定してください。

1つのSDBデータベース定義内で指定できるRECORD句は，1〜128個です。

(d)　レベル番号，ITEM

｛レベル番号│ITEM｝ 構成要素名

構成要素に関する情報を指定します。1つのRECORD句内での構成要素の階層レベルを指定します。

すべての構成要素が基本項目の場合，ITEMを指定できます。

1つのレコード型内で，レベル番号とITEMは同時に指定できません。

指定方法の詳細については，「表11-71　ルートレコード型の構成要素の指定」〜「表11-73　子レコード（3階層以降）の構成要素の指定」を参照してください。

レベル番号

〜＜符号なし整数＞((2〜49))

1つのRECORD句内での構成要素の階層レベルを指定します。

階層が深くなるに従ってレベル番号を増やすように指定してください。レベル番号は連続した値である必要はありません。

階層が浅くなるときは，すでに指定したレベル番号にしてください。

ITEM

すべての構成要素が基本項目の場合に指定できます。

構成要素名

〜＜識別子＞((1〜30バイト))

構成要素名を指定します。

《規則》

構成要素名は，RECORD句内で一意にしてください。

OCCURS句を指定した場合，繰り返し回数分の構成要素をHiRDB/SDが生成します。このとき，次に示す形式に従った構成要素名が付けられます。この構成要素名の長さが31バイト以上になった場合，pdsdbdefコマンドがエラーになります。

構成要素名(nnnn1〔,nnnn2〔,nnnn3〔,nnnn4〕〕〕)

nnnn1〜nnnn4：0〜9で構成される4桁の文字列です。0001から繰り返し回数まで1ずつ増加します。

OCCURS句を指定した構成要素の下位の階層レベルの構成要素にもOCCURS句を指定した場合，下位の階層の構成要素の繰り返し回数がコンマ（,）で区切って付加されます。

RECORD句内に指定できる構成要素の合計長は最大30,000バイトです。また，RECORD句内に指定できる構成要素の個数は最大30,000個です。

なお，OCCURS句を指定した場合，繰り返し回数分生成された構成要素の長さと個数も含まれます。

各レコード型の最初の基本項目の構成要素のデータ種別1には，Kを指定してください。

上位レコードのキーの構成要素，および一連番号の構成要素は，下位レコードの構成要素として，データ型とデータ種別を同じように指定してください。

ユーザデータ（データ種別1，2（TYPE U,D））の構成要素は，幾つかの構成要素をまとめて，ユーザ任意の集団項目内に指定できます。

ユーザファイル通番（データ種別1，2（TYPE U,F））の構成要素は，集団項目内に指定できません。

(e)　データ型

｛CHARACTER 長さ

│XCHARACTER 長さ

│PACKED 〔DECIMAL FIXED〕 整数部桁数〔，小数部桁数〕

│INTEGER

│SMALLINT｝

構成要素のデータ型を指定します。構成要素に指定できるデータ型を次の表に示します。

表11‒68　構成要素に指定できるデータ型

データ種別

データ型

データ形式

文字列

CHARACTER

固定長文字列

16進形式の文字列

XCHARACTER

16進固定長文字列

数値

PACKED 〔DECIMAL FIXED〕

符号付きパック形式10進データ

INTEGER

整数（4バイトの2進形式）

SMALLINT

整数（2バイトの2進形式）

CHARACTER 長さ

〜＜符号なし整数＞((1〜30,000))

文字列データの長さを指定します。

XCHARACTER 長さ

〜＜符号なし整数＞((1〜30,000))

16進形式の文字列データの長さを指定します。

PACKED 〔DECIMAL FIXED〕 整数部桁数〔，小数部桁数〕

整数部桁数

　　〜＜符号なし整数＞((0〜38))

小数部桁数

　　〜＜符号なし整数＞((0〜38))

符号付きパック形式の10進データの整数部桁数，および小数部桁数を指定します。

整数部桁数と小数部桁数の和は，1〜38になるようにしてください。

INTEGER

値の範囲が-2,147,483,648〜2,147,483,647の整数を指定します。長さは指定できません。

SMALLINT

値の範囲が-32,768〜32,767の整数を指定します。長さは指定できません。

《規則》

一連番号の構成要素には，必ずINTEGERを指定してください。

基本項目の場合，データ型およびTYPE句を指定してください。

集団項目の場合，データ型およびTYPE句を省略してください。

(f)　TYPE

TYPE データ種別1，データ種別2

構成要素のデータ種別を指定します。

データ種別1

〜＜英字＞((1バイト))

データベースキーかユーザデータかを区別するための種別を指定します。

データ種別2

〜＜英字＞((1バイト))

データ種別1をさらに分類するための詳細な種別を指定します。

TYPE句で指定するデータ種別の指定値と意味を次の表に示します。

表11‒69　データ種別の指定値と意味

データ種別

指定値

意味

データ種別1

K

データベースキーで，次に該当する場合の構成要素

データベースキー

上位レコードの一連番号

自レコードの一連番号

U

ユーザデータ

データ種別2

A

RDエリア分割キーとする構成要素（SDBデータベースを横分割する際，レコードの格納RDエリアを決める構成要素）

N

自レコードの一連番号の構成要素

データ種別1がKの場合，一連番号属性あり

P

上位レコードの一連番号の構成要素

L

そのほかのデータベースキーの構成要素

F

ユーザファイル通番の構成要素

D

そのほかのユーザデータの構成要素

《規則》

指定順序と記述の規則

K，Uの順に，必要な種別を指定してください。

ユーザデータのあとにデータベースキーを指定することはできません。

そのほかの規則

データ種別1がKで，データ種別2がAの構成要素は，ルートレコード型と子レコード型で同一名称にしてください。

データ種別1がKで，データ種別2がAの構成要素は，データの長さを1〜30バイトの範囲で指定してください。

データ種別1がKで，データ種別2がAの構成要素のデータ型には，SMALLINTを指定できません。

RECORD句内では，データ種別1の指定に関係なく，データ種別2がAの構成要素は，それぞれ最大1つ指定できます。

データ種別1がKで，データ種別2がNの場合，一連番号属性があります。

上位レコードで一連番号属性ありの構成要素（データ種別1，2（K，N））は，下位レコードの構成要素で，データ種別1，2（K，P）を指定してください。

データ種別2がFの構成要素はレコード型内の最後の構成要素に1つだけ指定できます。

構成要素のデータ種別1とデータ種別2で，指定できる組み合わせを次の表に示します。

表11‒70　構成要素のデータ種別1とデータ種別2に指定できる組み合わせ

データ種別1の指定

データ種別2に指定できる値

Kの場合

L

A

N

P

Uの場合

D

F※

注※

データ種別1，2の指定がU，Fの場合，レコード型内で最後に指定してください。

ルートレコード型と子レコード型（2階層），および子レコード型（3階層以降）の構成要素の指定を次の表に示します。

指定順序や指定する個数，データ種別の組み合わせに誤りがある場合はエラーとなります。なお，1つの項番の中で基本項目と集団項目を複数指定できる場合の，指定順序は任意です。

表11‒71　ルートレコード型の構成要素の指定

指定順

項目

説明

データ種別

1

2

1

データベースキーの構成要素名

集団項目として指定します。

−

−

2

データベースキー1〜7

構成要素名

各データベースキーを，指定順1で指定した集団項目下の基本項目として，同じレベル番号で指定します。

集団項目とはしないでください。

K

L

個数

1〜7

A※

3

ユーザデータの構成要素名

ユーザデータの構成要素名を指定します。

−

−

U

D

F

（凡例）

−：該当しません。

注※

データベースキー1の構成要素にだけ指定できます。データベースキー1以外の構成要素には指定できません。

表11‒72　子レコード型（2階層）の構成要素の指定

指定順

項目

説明

データ種別

1

2

1

データベースキー1〜7

構成要素名

ルートレコード型で指定したデータベースキーを，同じレベル番号の基本項目として指定します。

集団項目とはしないでください。

K

L

個数

1〜7

A※

2

一連番号

構成要素名を「DBKEY」とします。

基本項目として指定します。

K

N

3

ユーザデータの構成要素名

ユーザデータの構成要素名を指定します。

−

−

U

D

F

（凡例）

−：該当しません。

注※

データベースキー1の構成要素にだけ指定できます。データベースキー1以外の構成要素には指定できません。

表11‒73　子レコード（3階層以降）の構成要素の指定

指定順

項目

説明

データ種別

1

2

1

データベースキー1〜7

構成要素名

上位の子レコード型で指定したデータベースキーを，同じレベル番号の基本項目として指定します。

集団項目とはしないでください。

K

L

個数

1〜7

A※

2

上位の一連番号

構成要素名

構成要素名は「DBKEY」以外とします。

上位レコード型で指定した一連番号を，基本項目として指定します。

K

P

個数

上位の子レコード型で指定した一連番号の構成要素数と同じになります（階層−2）。

3

一連番号

構成要素名を「DBKEY」とします。

基本項目として指定します。

K

N

4

ユーザデータの構成要素名

ユーザデータの構成要素名を指定します。

−

−

U

D

F

（凡例）

−：該当しません。

注※

データベースキー1の構成要素にだけ指定できます。データベースキー1以外の構成要素には指定できません。

(g)　OCCURS

OCCURS 繰り返し回数

〜＜符号なし整数＞((1〜4,000))

構成要素の繰り返し回数を指定します。

OCCURS句を指定した場合，ここで指定した繰り返し回数分の構成要素が生成されます。

《規則》

OCCURS句は，ユーザデータの構成要素を指定した集団項目またはユーザデータ（データ種別1，2（TYPE U,D））である基本項目に指定できます。

OCCURS句を指定した構成要素の下位の構成要素にOCCURS句を指定する場合，OCCURS句は4次元まで指定できます。

（例）

03 UDATA1 OCCURS 2                                     ←1次元
   05 UDATA1A CHARACTER 2 TYPE U,D OCCURS 3            ←2次元
      07 UDATA1A1 CHARACTER 1 TYPE U,D
      07 UDATA1A2 CHARACTER 1 TYPE U,D  OCCURS 3       ←3次元
         09 UDATA1A21 CHARACTER 1 TYPE U,D  OCCURS 2   ←4次元
03 UDATA2 CHARACTER 76 TYPE U,D

OCCURS句を指定したときの構成要素名の生成例を次に示します。

（例）

(h)　RECORDID

RECORDID レコード識別コード

〜X'＜16進数字＞'((1バイト))

レコード型を識別するコードとして，レコード識別コードを指定します。

《規則》

レコード識別コードを1バイトで指定します。

X'00'以外は重複できません。

(i)　SET

SET 親子集合型名

〜＜識別子＞((1〜30バイト))

親子集合型名を指定します。

《規則》

親子集合型名は，SDBデータベース定義内で一意にしてください。

ルートレコード型の数は1つにしてください。

親レコードから子レコードへの親子集合型をたどった場合に，元のレコードにたどり着くような親子集合型は定義できません。

1つのSDBデータベース定義内に指定できる親子集合型数は，0〜127個です。指定できる親子集合の階層は，1〜15です。

(j)　OWNER

OWNER 親レコード型名

〜＜識別子＞((1〜30バイト))

親子集合の親レコード型名を指定します。

《規則》

親レコード型名には，RECORD句で定義したレコード型名を指定してください。

(k)　ORDER

ORDER LAST

DMLによるレコードの格納時（STORE），またはHiRDB/SDデータベース作成ユティリティ（pdsdblod）で，子レコード実現値を親子集合内の任意の実現値に格納する際の位置（親子集合内の子レコードへの挿入順序）を指定します。

LAST

子レコード実現値群の最後に格納します。

《規則》

1つのSET句の指定には，必ずORDER句を指定してください。

(l)　MEMBER

MEMBER 子レコード型名

〜＜識別子＞((1〜30バイト))

親子集合内の子レコード型名を指定します。

《規則》

子レコード型名には，RECORD句で定義したレコード型名を指定してください。ただし，親子集合の親レコード型名と重複する子レコード型名は指定できません。

1つのSET句には，必ずMEMBER句を指定してください。

(m)　INSERTION

INSERTION AUTOMATIC

子レコードを親子集合に格納するときの挿入方法を指定します。

AUTOMATIC

子レコードのレコード実現値がデータベースに格納されると，自動的に親レコードが属する親子集合型の親子集合実現値に格納されます。

(n)　RETENTION

RETENTION FIXED

子レコードを親子集合から切り離すまでの属性を指定します。

FIXED

レコードが，ある親子集合の子レコードになったレコードは，データベースから削除されるまで，その親子集合の子レコードでなければなりません。

(o)　SETOPTION

SETOPTION

親子集合に関するオプションを指定します。

(p)　OCCURRENCE NUMBER

OCCURRENCE NUMBER 一連番号の最大値

〜＜符号なし整数＞((1〜2,147,483,647))≪2,147,483,647≫

一連番号の最大値を指定します。

《規則》

WARNING句またはREUSE句を指定する場合は，この句も指定する必要があります。

(q)　WARNING

WARNING ｛一連番号使用比率1〔，一連番号使用比率2〔，一連番号使用比率3〕〕｜0｝

一連番号の使用状況を監視する場合に，一連番号の使用比率を％単位で指定します。

一連番号使用比率1，一連番号使用比率2，一連番号使用比率3

〜＜符号なし整数＞((50〜99))

割り当て済み一連番号の割合が一連番号使用比率1〜3で指定した値に達した場合※に，メッセージを1回ずつ出力します。0を指定した場合は，割り当て済みの一連番号の監視をしません。

注※　監視値＝↑一連番号の最大値×一連番号使用比率n↑

この句とSDBOPTION句下のOCCURRENCE WARNING句の両方を指定した場合，この句での指定が有効となります。この場合，一連番号使用比率の指定値の個数が異なっていても，双方で補ってメッセージを出力することはありません。

この句を省略した場合，SDBOPTION句下のOCCURRENCE WARNING句の指定が有効となります。

一度に複数の一連番号使用比率に達した場合は，対応するメッセージがすべて出力されます。例えば，WARNING句の指定を60，70，80とした場合に，1回目のレコードの格納で75％に達した場合は，指定値60と70に対応するメッセージが出力されます。

一連番号の最大値が小さいと，重複指定でなくても内部的に重複指定と同じような扱いになる場合があります。例えば，OCCURRENCE NUMBER句が10，WARNING句が97，98，99と定義した場合，どの指定値も割り当て済み一連番号が10になった時点で，97（％）と98（％）と99（％）に対応するメッセージが出力されます。

一連番号の監視については，「5.25　一連番号の監視」を参照してください。

《規則》

一連番号使用比率を複数指定する場合，指定値が昇順になるように指定してください。

(r)　REUSE

REUSE YES

削除された一連番号を再利用します。

一連番号の再利用の例については，「図11-14　一連番号再利用の例」を参照してください。

《規則》

レコードを全件削除した場合は，REUSE句の指定に関係なく，最初から一連番号を振り直します。

常にREUSE YESが仮定されます（REUSE句を省略しても，REUSE YESが仮定されます）。

(s)　SDBOPTION

SDBOPTION

SDBデータベースのオプション機能を定義します。

(t)　OCCURRENCE WARNING

OCCURRENCE WARNING ｛一連番号使用比率1〔，一連番号使用比率2〔，一連番号使用比率3〕〕

｜0｝

一連番号の使用状況を監視する場合に，一連番号の使用比率を％単位で指定します。

一連番号使用比率1，一連番号使用比率2，一連番号使用比率3

〜＜符号なし整数＞((50〜99))

割り当て済み一連番号の割合が，一連番号使用比率1〜3で指定した値に達した場合に，メッセージを1回ずつ出力します。0を指定した場合は，割り当て済み一連番号の監視はしません。

この指定はすべての子レコード型に対して有効となりますが，SETOPTION句下でWARNING句を指定した場合は，SETOPTION句下のWARNING句の指定が有効となります。この場合，一連番号使用比率の指定値の個数が異なっても，双方で補ってメッセージを出力することはありません。

一連番号の監視については，「5.25　一連番号の監視」を参照してください。

《規則》

この句の指定を省略した場合，一連番号使用比率1には80が，一連番号使用比率2には90が，一連番号使用比率3には95が仮定されます。

ルートレコード型だけを定義している場合は，このオペランドを指定できません。

上記以外の規則については，SETOPTION句下の「11.7.1(4)(q)　WARNING」の規則を参照してください。

(u)　END SCHEMA

END SCHEMA

SDBデータベース定義の終了を示します。

11.7.2　SDBデータベース格納定義【SD FMB】

*ENTRY DICTIONARY文に指定するSDBデータベース格納定義について説明します。

(1)　機能

SDBデータベースを格納する際の論理構造を定義します。

(2)　形式

項番

形式

(a)

STORAGE SCHEMA SDBデータベース格納名 FOR SDBデータベース名

(b)

DBTYPE SD

(c)

　STORAGE RECORD 格納レコード名

(d)

　　　｛CLUSTERED 親子集合型名｜SEQUENTIAL シーケンシャルインデクス名

(e)

　　　FOR RECORD

(f)

　　　ORDER KEY ASCENDING 構成要素名〔，構成要素名〕…

(g)

　　　〔PCTFREE ページ内の未使用領域の比率〕

(h)

　　　WITHIN ｛シーケンシャルインデクス用RDエリア名

　　　　　　　｜（シーケンシャルインデクス用RDエリア名）

　　　　　　　｜（（シーケンシャルインデクス用RDエリア名）

　　　　　　　〔，（シーケンシャルインデクス用RDエリア名）〕…）｝

　　　　｝

(i)

　　　〔SUBPAGE NUMBER サブページ分割数〕

(j)

　　　〔PCTFREE ｛ページ内の未使用領域の比率

　　　　　　　｜（〔ページ内の未使用領域の比率〕，セグメント内の空きページの比率）｝〕

(k)

　　　〔DEPENDING ON 構成要素名〕

(l)

　　　　　　WITHIN ｛格納レコード用RDエリア名

　　　　　　　　　｜（格納レコード用RDエリア名）

　　　　　　　　　｜（（格納レコード用RDエリア名） 〔格納条件〕

　　　　　　　　　　〔，（格納レコード用RDエリア名） 格納条件〕…）

　　　　　　　　　｜（（格納レコード用RDエリア名） RDエリア分割キー値

　　　　　　　　　　〔，（格納レコード用RDエリア名） RDエリア分割キー値…〕

　　　　　　　　　　　，（格納レコード用RDエリア名））｝

(m)

　〔SET 親子集合型名

(n)

　　　　OWNER POINTER FOR FIRST LAST MEMBER

(o)

　　　　MEMBER POINTER FOR NEXT PRIOR TENANT

　　〕…

−

　〔SDBOPTION〕※

(p)

END STORAGE SCHEMA

注

定義句は，形式で記述している順序に従って指定します。必須の定義と省略できる定義の間は形式で記載されているとおりに指定してください。

注※

SDBOPTION句の指定有無によってシステムの動作に変わりはありません。そのため，SDBOPTION句は省略してください。

(3)　オペランドの説明

SDBデータベース格納定義の各オペランドの指定内容を説明します。

(a)　STORAGE SCHEMA

STORAGE SCHEMA SDBデータベース格納名 FOR SDBデータベース名

SDBデータベース格納名と対応するSDBデータベース名を指定します。

SDBデータベース格納名

〜＜識別子＞((1〜30バイト))

SDBデータベース格納名を指定します。

すでに使用しているSDBデータベース格納名は指定できません。

SDBデータベース名

〜＜識別子＞((1〜30バイト))

SDBデータベース名を指定します。

SDBデータベース名に一致する名称がSDBデータベース定義にない場合は，エラーとなります。

(b)　DBTYPE

DBTYPE SD

SDBデータベース種別がSD FMBのSDBデータベースを定義します。

注意事項

SDBデータベース種別が4V（4V FMBまたは4V AFM）のSDBデータベースとSD FMBのSDBデータベースをシステム内で混在して定義することはできません。混在させた場合，動作を保証しません。

(c)　STORAGE RECORD

STORAGE RECORD 格納レコード名

格納レコード名

〜＜識別子＞((1〜30バイト))

SDBデータベース定義のRECORD句で指定したレコード型名を，格納レコード名として指定します。

《規則》

SDBデータベース定義のRECORD句で指定したレコード型名と同じ個数，同じ順番で指定してください。

すでに使用している格納レコード名は指定できません。ただし，格納レコードの所有者（スキーマ）が異なる場合は，同じ格納レコード名を指定できます。

(d)　CLUSTERED，SEQUENTIAL

CLUSTERED 親子集合型名｜SEQUENTIAL シーケンシャルインデクス名

格納するレコードの配置方法を指定します。

CLUSTERED 親子集合型名

親子集合型名

　　〜＜識別子＞((1〜30バイト))

すべての子レコードを親レコードと同じRDエリアに格納する場合に指定します。

《規則》

STORAGE RECORD句に指定したレコード型ごとに1つ指定できます。STORAGE RECORD句に指定したレコード型が，ルートレコード型の場合は指定できません。

SDBデータベース格納定義のSET句に指定する親子集合型名と同じ個数，同じ順番で指定してください。

SEQUENTIAL シーケンシャルインデクス名

インデクスのキーの値の順序に従って，親レコード実現値の格納位置を決めるときに指定します。SEQUENTIAL句は，ルートレコード型に必ず指定します。

シーケンシャルインデクス名

　　〜＜識別子＞((1〜30バイト))

STORAGE RECORD句に指定したルートレコード型に対して1つ指定します。STORAGE RECORD句に指定したレコード型が，ルートレコード型以外の場合は指定できません。

《規則》

シーケンシャルインデクス名は，同一スキーマ内で一意になるように指定してください。

(e)　FOR RECORD

FOR RECORD

レコード型単位にシーケンシャルインデクスを作成します。

キーの値が同じ場合，シーケンシャルインデクスへの格納を禁止します。

(f)　ORDER KEY

ORDER KEY ASCENDING 構成要素名〔，構成要素名〕…

インデクスのキーとなる構成要素名を指定します。

指定した構成要素名をキーとして，昇順にシーケンシャルインデクスが作成されます。

ASCENDING

昇順にシーケンシャルインデクスを作成します。

構成要素名

〜＜識別子＞((1〜30バイト))

インデクスのキーに指定する構成要素を次に示すように指定してください。

SDBデータベース定義内のルートレコード型のデータベースキーに指定した基本項目の構成要素名を，定義順にすべて指定します。ルートレコード型の構成要素の指定については，「表11-71　ルートレコード型の構成要素の指定」を参照してください。SDBデータベースの定義例については，「11.11.3　SDBデータベースの定義例（SD FMBの場合）」を参照してください。

《規則》

構成要素名は，格納レコード名と対応するSDBデータベース定義のレコード型名で指定した構成要素名としてください。

シーケンシャルインデクス作成時に指定できる構成要素名の条件について，次の表に示します。

表11‒74　シーケンシャルインデクス作成時に指定できる構成要素名の条件

項目

内容

指定できる構成要素名の数

最大7個

インデクスのキー長の合計

255バイト以内

インデクスのキーに指定する構成要素とキー長の関係については，「表11-75　インデクスのキーに指定する構成要素とキー長の関係」を参照してください。

構成要素名

基本項目の構成要素名

集団項目が含まれる構成要素名は指定できません。

表11‒75　インデクスのキーに指定する構成要素とキー長の関係

データ型

インデクスのキー長（単位：バイト）

構成要素名の指定が1つの場合

構成要素名の指定が複数の場合

CHARACTER

SDBデータベース定義で指定したデータ長

SDBデータベース定義で指定したデータ長＋制御部（1バイト）

XCHARACTER

PACKED 〔DECIMAL FIXED〕 整数部桁数〔，小数部桁数〕

↓（整数部桁数＋小数部桁数）÷2↓＋1

↓（整数部桁数＋小数部桁数）÷2↓＋2

INTEGER

4

5

SMALLINT

2

3

(g)　PCTFREE

PCTFREE ページ内の未使用領域の比率

〜＜符号なし整数＞((0〜99))≪30≫

インデクスページ内の未使用領域の比率を指定します。

(h)　WITHIN

WITHIN ｛シーケンシャルインデクス用RDエリア名

｜（シーケンシャルインデクス用RDエリア名）

｜（（シーケンシャルインデクス用RDエリア名）

〔，（シーケンシャルインデクス用RDエリア名）〕…）｝

シーケンシャルインデクス用RDエリア名

〜＜RDエリア名＞((1〜30バイト))

シーケンシャルインデクスを格納するRDエリア名を指定します。

1つのSEQUENTIAL句に対して，WITHIN句を必ず1つ指定してください。

《規則》

シーケンシャルインデクスを複数のRDエリアに格納する場合の規則

シーケンシャルインデクス用RDエリアとして指定できるRDエリアの数とSDBデータベースの横分割の関係を次の表に示します。

表11‒76　シーケンシャルインデクス用RDエリアとして指定できるRDエリア数とSDBデータベースの横分割の関係

SDBデータベースの横分割方法

指定できるRDエリア数

分割指定なし

1

格納条件分割

1〜256

境界値分割

2〜3,000（1,024）※

注※

WITHIN句に指定できるRDエリア名の延べ数の最大値は3,000になります。1,024は，WITHIN句にRDエリア名を重複して指定する場合，RDエリア名の重複を排除して数えたときの最大値です。

シーケンシャルインデクス用RDエリアは，格納レコード用RDエリアと同じ数を指定する必要があります。

1つのWITHIN句の中では，シーケンシャルインデクス用RDエリア名は一意に指定してください。なお，境界値分割指定の場合，隣接するRDエリア名が重複している場合だけエラーとなります。

境界値分割指定の格納レコード用RDエリアを重複して指定している場合は，シーケンシャルインデクス用RDエリアも重複して指定してください。シーケンシャルインデクス用RDエリアを重複して指定する場合の例を次の表に示します。

表11‒77　シーケンシャルインデクス用RDエリアを重複して指定する場合の例

指定

格納レコード用RDエリアの指定

シーケンシャルインデクス用RDエリアの指定

RDエリアの重複なし

((RDAREAX) X'00FF',

(RDAREA1) X'01FF',

(RDAREA2) X'03FF',

(RDAREA3) )

((RDAREAX_I),

(RDAREA1_I),

(RDAREA2_I),

(RDAREA3_I))

RDエリアの重複あり

((RDAREAX) X'00FF',

(RDAREA1) X'01FF',

(RDAREA2) X'03FF',

(RDAREA1))

((RDAREAX_I),

(RDAREA1_I),

(RDAREA2_I),

(RDAREA1_I))

格納レコード用RDエリアと対応するシーケンシャルインデクス用RDエリアは，同じサーバ内のRDエリアである必要があります。

指定するシーケンシャルインデクス用RDエリアに関する規則

格納レコード用RDエリアとして指定したRDエリアは指定できません。

シーケンシャルインデクス用RDエリアには，create rdarea文のdata modelオペランドにstructuredを指定したRDエリアを指定してください。

シーケンシャルインデクス用RDエリアとして指定するRDエリアには，1つのRDエリアにシーケンシャルインデクスを最大500個指定できます。

シーケンシャルインデクス用RDエリアに定義できるリソースの組み合わせを次の表に示します。

表11‒78　RDエリアに定義できるリソースの組み合わせ

定義するリソース

RDエリアの定義

レコード型・インデクス定義なし

SDBデータベース格納定義A

レコード型定義あり

インデクス定義あり

SDBデータベース格納定義A

レコード型

○

○

×

インデクス

○

×

○

SDBデータベース格納定義B

レコード型

○

×

×

インデクス

○

×

○

（凡例）

○：定義できます。

×：定義できません。

(i)　SUBPAGE NUMBER

SUBPAGE NUMBER サブページ分割数

サブページ分割数

〜＜符号なし整数＞((2〜16))

1データページ当たりのサブページ分割数を指定します。SUBPAGE NUMBERを省略した場合，サブページ分割されません。サブページ分割数の設計方針については，「3.2.4　サブページの設計」を参照してください。

《規則》

ルートレコード型，およびすべての子レコード型で同じサブページ分割数を指定してください。

サブページ分割数を指定する場合，格納レコード用RDエリアのページ長が，4096バイトである必要があります。

(j)　PCTFREE

PCTFREE ｛ページ内の未使用領域の比率

｜（〔ページ内の未使用領域の比率〕，セグメント内の空きページの比率）｝

ページ内の未使用領域の比率

〜＜符号なし整数＞((0〜99))

セグメント内の空きページの比率

〜＜符号なし整数＞((0〜50))

データベースの初期作成時に設定するページ内の未使用領域の比率を指定します。ページ内の未使用領域の比率は，0〜99（％）の範囲で指定できます。ページ内の未使用領域の比率を省略すると，30（％）が仮定されます。

SUBPAGE NUMBER句でサブページ分割数を指定している場合，ページ内の未使用領域の比率は，サブページ内の未使用領域の比率になります。例えば，30を指定した場合，サブページ内の未使用領域の比率が30％になります。

また，セグメント内の空きページの比率を0〜50（％）の範囲で指定できます。セグメント内の空きページの比率を省略すると，10（％）が仮定されます。

《規則》

ルートレコード型，およびすべての子レコード型で同じ値を指定してください。

(k)　DEPENDING ON

DEPENDING ON 構成要素名

構成要素名

〜＜識別子＞((1〜30バイト))

SDBデータベースを境界値で複数のRDエリアに横分割して格納する場合の，境界値分割のキーとなる構成要素名を指定します。

《規則》

ルートレコード型にだけ指定できます。

CLUSTERED句を指定した格納レコードに対しては指定できません。

格納レコード名と対応するSDBデータベース定義のレコード型名で指定した構成要素名である必要があります。

構成要素名には，データ種別1がK，データ種別2がAの構成要素名を指定します。

SDBデータベースの横分割方法が格納条件指定の場合は指定できません。

(l)　WITHIN

WITHIN ｛格納レコード用RDエリア名

｜（格納レコード用RDエリア名）

｜（（格納レコード用RDエリア名） 〔格納条件〕

〔，（格納レコード用RDエリア名） 格納条件〕…）

｜（（格納レコード用RDエリア名） RDエリア分割キー値

〔，（格納レコード用RDエリア名） RDエリア分割キー値…〕

，（格納レコード用RDエリア名））｝

格納レコード用RDエリア名

〜＜RDエリア名＞((1〜30))

格納条件

〜構成要素名＝（RDエリア分割キー値〔，RDエリア分割キー値〕…）

RDエリア分割キー値

〜X'＜16進数字＞'((1〜30バイト))

〜'＜英数字または下線（_）＞'((1〜30バイト))※1

〜＜10進数定数＞※2

〜＜整数定数＞※3

注※1

先頭に下線（_）は指定できません。

注※2

10進数定数については，マニュアル「HiRDB Version 9 SQLリファレンス」の「定数」を参照してください。

整数部と小数部にすべて0を指定する場合，符号に-を指定しないでください。-0.を指定しても0.として扱います。

なお，10進数定数の値の範囲を超える値を指定できません。

注※3

整数定数については，マニュアル「HiRDB Version 9 SQLリファレンス」の「定数」を参照してください。

-0を指定しても0として扱います。

なお，整数定数の値の範囲を超える値を指定できません。

レコード実現値を格納するRDエリア名を指定します。

1つのSTORAGE RECORD句に対して，WITHIN句を必ず1つ指定してください。

RDエリア分割キーのデータ型ごとのRDエリア分割キー値の指定形式を次の表に示します。

表11‒79　RDエリア分割キーのデータ型ごとのRDエリア分割キー値の指定形式

RDエリア分割キーのデータ型

RDエリア分割キー値の指定形式

16進数字

英数字，または下線(_)

10進数定数

整数定数

CHARACTER

○

○

×

×

XCHARACTER

○

○

×

×

PACKED 〔DECIMAL FIXED〕

×

×

○

×

INTEGER

×

×

×

○

（凡例）

○：指定できます。

×：指定できません。

《規則》

レコードを複数のRDエリアに格納する場合の規則

1レコード型に対して指定できる格納レコード用RDエリアの数とSDBデータベースの横分割の関係を次の表に示します。

表11‒80　レコード型に対して指定できる格納レコード用RDエリアの数とSDBデータベースの横分割の関係

SDBデータベースの横分割方法

指定できるRDエリア数

分割指定なし

1

格納条件分割

1〜256

境界値分割

2〜3,000（1,024）※

注※

WITHIN句に指定できるRDエリア名の延べ数の最大値は3,000になります。1,024は，WITHIN句にRDエリア名を重複して指定する場合，RDエリア名の重複を排除して数えたときの最大値です。

格納条件分割で格納レコード用RD エリア名を複数指定した場合は，すべての格納レコード用RD エリア名に格納条件を指定してください。

同一SDBデータベース格納定義内の子レコード型に指定する格納レコード用RDエリア名は，ルートレコード型と同じ数，同じ順番ですべて指定する必要があります。

1つのWITHIN句の中では，格納レコード用RDエリア名は一意に指定してください。なお，境界値分割指定の場合，隣接するRDエリア名が重複している場合だけエラーとなります。

RDエリア分割キー値に指定できる範囲を次の表に示します。

表11‒81　RDエリア分割キー値に指定できる範囲

RDエリア分割キー値の指定形式

SDBデータベースの横分割方法

RDエリア分割キー値

最小

最大

16進数字

格納条件分割

X'00…00'

X'FF…FF'

境界値分割

X'00…00'

X'FF…FE'

10進数定数

格納条件分割

-9…9.9…9

（整数部と小数部がRDエリア分割キーの全体桁数分'9'の負の数）

9…9.9…9

（整数部と小数部がRDエリア分割キーの全体桁数分'9'の正の数）

境界値分割

-9…9.9…9

（整数部と小数部がRDエリア分割キーの全体桁数分'9'の負の数）

9…9.9…8

（整数部と小数部がRDエリア分割キーの全体桁数のうち，最後の桁を除くすべての桁が'9'かつ最後の桁が'8'の正の数）

整数定数

格納条件分割

−2147483648

2147483647

境界値分割

−2147483648

2147483646

指定する格納レコード用RDエリアに関する規則

インデクスを格納するRDエリアは指定できません。

格納レコード用RDエリアには，create rdarea文のdata modelオペランドにstructuredを指定したRDエリアを指定してください。

指定するRDエリア名には，格納レコード長が当該RDエリアのページ長（サブページ分割をしている場合はサブページ長）に収まるRDエリア名を指定してください。

格納レコード用RDエリアに定義できるリソースの組み合わせについては，「表11-78　RDエリアに定義できるリソースの組み合わせ」を参照してください。

レコードの格納条件に関する規則

格納条件は，ルートレコード型にだけ指定できます。

格納条件に指定する構成要素に関する規則

1個のWITHIN句の中では，単一の構成要素名を指定してください。複数種類の構成要素名は指定できません。

構成要素名には，SDBデータベース定義で指定した構成要素名を指定してください。

構成要素名には，データ種別1がK，データ種別2がAの構成要素名を指定してください。

格納条件のRDエリア分割キー値に関する規則

1つのWITHIN句に対するRDエリア分割キー値は，最大4,000個指定できます。

1つのWITHIN句の中で同じRDエリア分割キー値は重複して指定できません。

RDエリア分割キーのデータ型がCHARACTER，またはXCHARACTERの場合，指定したRDエリア分割キー値の長さは，SDBデータベース定義で指定した格納条件の構成要素の長さと一致させる必要があります。

RDエリア分割キーのデータ型がPACKEDの場合，RDエリア分割キーの整数部桁数，および小数部桁数の範囲内の値を指定してください。

境界値分割時（DEPENDING ON句指定時）のRDエリア分割キー値に関する規則

最初に境界値を指定するRDエリアには，指定する境界値以下の値のレコードが格納されます。

2番目以降（最後は除く）に指定するRDエリアには，その前に指定した境界値より大きく，かつその後に指定する境界値以下の値のレコードが格納されます。

最後に指定するRDエリアには，その前に指定した境界値より大きい値のレコードが格納されます。

境界値分割時のSDBデータベースの横分割とSDBデータベース格納定義の例を次の図に示します。

図11‒17　境界値分割時のSDBデータベースの横分割とSDBデータベース格納定義の例

＜定義例＞

STORAGE SCHEMA SCM01 FOR SCM01
  DBTYPE SD
  STORAGE RECORD RECA
    SEQUENTIAL IDX1 FOR RECORD
        ：
      WITHIN ((RI1),(RI2),(RI1),(RI2))
    DEPENDING ON C1
      WITHIN ((RT1)100,(RT2)200,(RT1)300,(RT2))
        ：
END STORAGE SCHEMA

境界値分割時には，格納条件の指定はできません（RDエリア分割キー値の指定をする必要があります）。

RDエリア分割キーのデータ型がCHARACTER，またはXCHARACTERの場合，RDエリア分割キー値の長さは，DEPENDING ON句で指定した構成要素の長さと一致させる必要があります。

RDエリア分割キー値は重複して指定できません。

RDエリア分割キー値は昇順に指定する必要があります。

RDエリア分割キー値を16進数字，英数字または下線（_）の形式で指定する場合，RDエリア分割キー値の長さが1つ目の長さと異なるとエラーとなります。

RDエリア分割キーのデータ型がPACKEDの場合，RDエリア分割キーの整数部桁数，および小数部桁数の範囲内の値を指定してください。

(m)　SET

SET 親子集合型名

〜＜識別子＞((1〜30バイト))

親レコード型，子レコード型の親子集合型名を指定します。

《規則》

SDBデータベース定義のSET句で指定した親子集合型名と同じ個数，同じ順番で指定してください。

(n)　OWNER POINTER FOR

OWNER POINTER FOR FIRST LAST MEMBER

親レコードに持たせるポインタを指定します。

FIRST LAST

親レコードにFIRSTポインタ，およびLASTポインタを持たせる場合に指定します。

(o)　MEMBER POINTER FOR

MEMBER POINTER FOR NEXT PRIOR TENANT

子レコードに持たせるポインタを指定します。

NEXT PRIOR

子レコードにNEXTポインタ，およびPRIORポインタを持たせる場合に指定します。

(p)　END STORAGE SCHEMA

END STORAGE SCHEMA

SDBデータベース格納定義の終了を示します。

11.8　規則および注意事項

pdsdbdefコマンド実行時の規則および注意事項について説明します。

11.8.1　規則

(1)　pdsdbdefコマンドの実行条件

pdsdbdefコマンドは，HiRDBが稼働中のときだけ実行できます。

pdsdbdefコマンドは，システムマネジャがあるサーバマシンで実行してください。

pdsdbdefコマンド実行時には，次のサーバが稼働している必要があります。

システムマネジャ

1つ以上のフロントエンドサーバ

ディクショナリサーバ

SDBデータベースを定義するRDエリアを管理しているバックエンドサーバ

(2)　コマンドの実行者

HiRDB管理者がpdsdbdefコマンドを実行できます。

(3)　pdsdbdefコマンドの実行可否

pdsdbdefコマンドを実行する前に，RDエリアの初期設定が完了している必要があります。また，次に示すRDエリアが閉塞なしオープン状態である必要があります。

マスタディレクトリ用RDエリア

データディクショナリ用RDエリア

データディレクトリ用RDエリア

SDBデータベース格納定義のWITHIN句に指定するRDエリア

RDエリアの状態によるpdsdbdefコマンドの実行可否については，「付録I.1　RDエリアの状態によるユティリティの実行可否」を参照してください。

(4)　pdsdbdefコマンドの最大同時実行数

pdsdbdefコマンドの最大同時実行数は，システム共通定義のpd_utl_exec_modeオペランドの指定値に関係なく1です。

注意事項

HiRDB/SDデータベース作成ユティリティ，HiRDB/SDデータベース再編成ユティリティやほかのUAPと同時に実行することはできません。ほかのユティリティやUAPが終了してからpdsdbdefコマンドを実行してください。

(5)　環境変数の設定

環境変数LANGを設定してください。OSがサポートしていない文字コードを使用する場合，クライアント環境定義のPDLANGオペランドを設定する必要があります。

環境変数LANG，およびクライアント環境定義のPDLANGオペランドの設定については，マニュアル「HiRDB Version 9 UAP開発ガイド」を参照してください。

環境変数LANGまたはクライアント環境定義のPDLANGオペランドで，使用する文字コードにUTF-8を指定した場合，pdsdbdefコマンドの入力ファイルにBOM付きファイルを使用できます。なお，pdsdbdefコマンドの実行結果として出力されるファイルにはBOMは付きません。

(6)　クライアント環境定義の設定

pdsdbdefコマンドを実行する場合，クライアント環境定義のPDUSERオペランドに，スキーマ所有者の認可識別子を指定してください。

このとき，OSログインユーザの簡易認証機能は使用できません。

(7)　pdsdbdefコマンドで使用する文字コード

SDB制御文やSDB定義文に記述する文字コードは，pdsetupコマンドで指定する文字コードと同じ文字コードにしてください。

(8)　スキーマとSDBデータベース定義の関係

pdsdbdefコマンドを実行する前に，クライアント環境定義のPDUSERオペランドに指定した認可識別子に対して，スキーマを定義しておく必要があります。

HiRDB/SDでは，1つのSDBデータベース定義内に複数のレコード型を定義できます。HiRDB/SDでは，「スキーマ名（＝認可識別子）＋レコード型」として，アクセスするレコード型を一意に識別するため，レコード型の定義時には，次の点に注意してください。

1スキーマ内のすべてのSDBデータベース定義で，レコード型名を重複させることはできません。なお，1スキーマ内で，表とレコード型の両方を定義できますが，表名とレコード型名を重複させることもできません。

1スキーマ内のすべてのSDBデータベース格納定義で，インデクス名を重複させることはできません。また，1スキーマ内で，表とレコード型の両方にインデクスを定義できますが，表に定義したインデクス名とSDBデータベース格納定義で定義したインデクス名を重複させることもできません。

レコード型名やインデクス名を重複させる場合は，別スキーマとしてください。

(9)　SDBデータベース格納定義で指定できるRDエリア数

1つのSDBデータベース格納定義で指定できるRDエリア名の数は最大32,766個です（RDエリア名が重複する場合は1つと数えます）。

(10)　pdsdbdefコマンドで使用するファイルおよびディレクトリ

pdsdbdefコマンドで使用するファイル，およびファイルを出力するディレクトリは，事前に作成しておいてください。また，パーミッションを次のように設定してください。

SDB制御文ファイル：644

SDB定義文ファイル：644

実行結果ファイルおよび実行結果ファイルの出力先ディレクトリ：666

SDBディレクトリ情報ファイルの格納先ディレクトリ：755

11.8.2　TP1/FSPのSDBハンドラ機能使用時の注意事項【4V FMB，4V AFM】

TP1/FSPでSDBハンドラ機能を使用する場合の，SDBデータベース定義時の注意事項を次に示します。TP1/FSPの機能については，マニュアル「TP1/Financial Service Platform 使用の手引」を参照してください。

構成要素名は8バイト以下で定義してください。

TP1/FSPでは，構成要素名として8バイトまでしか指定できません。そのため，8バイトを超える構成要素名の構成要素が存在する場合は，意図しない構成要素にアクセスするおそれがあります。この場合の動作は保証されません。

構成要素名に空白を含めて定義しないでください。

TP1/FSPでは，空白を構成要素名の区切りとして扱います。そのため，構成要素名中に空白を含む構成要素が存在する場合，意図しない構成要素にアクセスするおそれがあります。この場合の動作は保証されません。

4V AFMのSDBデータベースでは，仮想ルートレコード型を除くすべての子レコード型でデータベースキーの構成（属性とサイズ）とデータ種別を同じ構成で定義してください。構成要素名は異なってもかまいません。同じ構成でない場合の動作は保証されません。

UAPで4V MAMのSDBデータベースを検索する条件式に"%ENTRY△△"を指定する場合は，次に示すどちらかの構成で4V MAMのSDBデータベースを定義してください。次に示す構成以外のデータベースキーを定義した4V MAMのSDBデータベースに対して，条件式に"%ENTRY△△"を指定した場合の動作は保証されません。

レコード分割キー（TYPE K,R）と一連番号（TYPE K,N）を定義する構成

レコード分割キー（TYPE K,R）を定義しないで一連番号（TYPE K,N）を定義する構成

レコード分割キーと一連番号を定義する構成で4V MAMのSDBデータベースを定義する場合は，レコード識別コード（RECORDID句の指定値）と同じ値をレコード分割キー値としてKEYDEF句で指定してください。指定しない場合の動作は保証されません。

レコード分割キーと一連番号を定義する構成の場合の，SDBデータベース定義の例を次に示します。

SDBデータベース定義の例

SCHEMA SDBデータベース名
        ：（省略）
RECORD A1    ………………………………………仮想ルートレコード型
  02 DBKEY_L1    CHARACTER  8 TYPE D,L
  02 DBKEY_ID    XCHARACTER 2 TYPE K,R
RECORD A2
  02 DBKEY_L1    CHARACTER  8 TYPE D,L
  02 DBKEY
    03 DBKEY_ID  XCHARACTER 2 TYPE K,R
    03 DBKEY_LN  INTEGER      TYPE K,N
        ：（ユーザデータ部は省略しています）
  RECORDID X'AAAA'    …………………………【A】
RECORD A3
  02 DBKEY_L1    CHARACTER  8 TYPE D,L
  02 DBKEY
    03 DBKEY_ID  XCHARACTER 2 TYPE K,R
    03 DBKEY_LN  INTEGER      TYPE K,N
        ：（ユーザデータ部は省略しています）
  RECORDID X'BBBB'    …………………………【B】

STORAGE SCHEMA SDBデータベース格納名 FOR SDBデータベース名
        ：（省略）
SDBOPTION
  KEYDEF DBKEY_ID
    DATA X'AAAA',A2 ……レコード識別コード【A】と同じ値にする必要があります
    DATA X'BBBB',A3 ……レコード識別コード【B】と同じ値にする必要があります

11.9　リターンコード

pdsdbdefコマンドのリターンコードの意味および対処を次の表に示します。

表11‒82　pdsdbdefコマンドのリターンコードの意味および対処

リターンコード

意味

対処

0

pdsdbdefコマンドが正常終了しました。

特にありません。

8

pdsdbdefコマンドの処理でエラーが発生しました。

メッセージが出力され，処理は継続されます。

dirinf文を指定している場合，dirinf文の処理はスキップされます。

エラーの原因を取り除き，pdsdbdefコマンドを再実行してください。

12

pdsdbdefコマンドの処理が続行できないエラーが発生しました。

メッセージが出力され，処理は打ち切られます。

エラーの原因を取り除き，pdsdbdefコマンドを再実行してください。

11.10　実行結果ファイルの出力形式

実行結果ファイルの出力例を次に示します。

実行結果ファイルの出力例

STATEMENT   ----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
         1   *ENTRY DICTIONARY
         2   SCHEMA SCM01
         3    DBTYPE 4V FMB
         4    RECORD RECA
         5     2 DBKEY
         6      3 DBKEY_L2 XCHARACTER   2 TYPE K,L
         7      3 DBKEY_L3 XCHARACTER   5 TYPE K,L
         8     2 USR_0001 XCHARACTER   74 TYPE U,D
         :       :
       802   END SCHEMA
 プロセスID hh:mm:ss ユニット名 サーバ名   KFPB61202-I *ENTRY DICTIONARY terminated, return code=0

出力例の説明

ヘッダ情報（スケール）は，SDB定義文の機能ごと（*ENTRY DICTIONARY文などの制御文ごと）に出力されます。ただし，*ENTRY DICTIONARY文などの制御文が行の先頭でない場合は出力されません。また，定義情報の行長が80バイトを超えている場合，ヘッダ情報は出力されません。

SDB定義文の機能ごと（*ENTRY DICTIONARY文などの制御文ごと）に行番号が付加されます。コメント行や区切り文字だけの行には行番号は付加されません。また，行長が80バイトを超えている行には行番号は付加されません。*ENTRY DICTIONARY文などの制御文が行の先頭でない場合，行番号は継続されます。

行番号は1〜2,147,483,647の範囲で設定されます。2,147,483,647の次はまた1に戻ります。

SDB定義文に誤りがある場合は，誤りのある行の後にエラーメッセージが出力されます。

SDB定義文内の組み合わせに誤りがある場合は，最下行にエラーメッセージが出力されます。エラーがない場合は，SDB定義文に対するメッセージが出力されます。

11.11　使用例

pdsdbdefコマンドの使用例を次に示します。

11.11.1　SDBデータベースの定義例（4V FMBの場合）

4V FMBのSDBデータベースを定義する場合の定義例を次に示します。

(1)　データベースの階層構造

作成する4V FMBのSDBデータベースの階層構造の概要を次の図に示します。

図11‒18　作成する4V FMBのSDBデータベースの階層構造

(2)　データベースの格納構造

作成する4V FMBのSDBデータベースの格納構造の概要を次の図に示します。

図11‒19　作成する4V FMBのSDBデータベースの格納構造

(3)　各レコード型のキーおよびキー構成

作成する4V FMBのSDBデータベースの，各レコード型のキーおよびキー構成を次の図に示します。

図11‒20　作成する4V FMBのSDBデータベースの，各レコード型のキーおよびキー構成

(4)　SDBデータベース定義の定義例

SDBデータベース定義の定義例（*ENTRY DICTIONARY文の指定例）を次に示します。

*ENTRY DICTIONARY
 SCHEMA FMB01                                 /* SDBデータベース名(FMB01)*/
 DBTYPE 4V FMB                                /* SDBデータベース種別     */
   RECORD RECA                                /* レコード型名(RECA)      */
     2 DBKEY
       3 DBKEY_L2  XCHARACTER 1  TYPE  K,L    /* 科目    ┐※  */
       3 DBKEY_L3  XCHARACTER 1  TYPE  K,L    /* 店番    │    */
       3 DBKEY_L4  CHARACTER  3  TYPE  K,L    /* 顧客番号┘    */
     2 USERDA0     CHARACTER 30  TYPE  U,D    /* ユーザデータ            */
     2 USERDANO    CHARACTER 10  TYPE  U,F    /* ユーザファイル通番      */
     FUNCTION
       REFER     USE                          /* 検索の指定              */
       ADD       USE                          /* 追加の指定              */
       UPDATE    USE                          /* 更新の指定              */
       ERASE     NOUSE                        /* 削除の指定              */
       ALLERASE  NOUSE                        /* 一括削除の指定          */
   RECORD RECB                                /* レコード型名(RECB)      */
     2 DBKEY_L2  XCHARACTER 1    TYPE  K,L    /* 科目                    */
     2 DBKEY_L3  XCHARACTER 1    TYPE  K,L    /* 店番                    */
     2 DBKEY_L4  CHARACTER  3    TYPE  K,L    /* 顧客番号                */
     2 DBKEY     INTEGER         TYPE  N,N    /* 一連番号属性なし        */
     2 USERDB0   CHARACTER 20    TYPE  U,D    /* ユーザデータ            */
     FUNCTION
       REFER     USE                          /* 検索の指定              */
       ADD       USE                          /* 追加の指定              */
       UPDATE    USE                          /* 更新の指定              */
       ERASE     NOUSE                        /* 削除の指定              */
       ALLERASE  NOUSE                        /* 一括削除の指定          */
   RECORD RECC                                /* レコード型名(RECC)      */
     2 DBKEY_L2  XCHARACTER 1    TYPE  K,L    /* 科目                    */
     2 DBKEY_L3  XCHARACTER 1    TYPE  K,L    /* 店番                    */
     2 DBKEY_L4  CHARACTER  3    TYPE  K,L    /* 顧客番号                */
     2 DBKEY     INTEGER         TYPE  K,N    /* 一連番号属性あり        */
     2 USERDC0   CHARACTER 10    TYPE  U,D    /* ユーザデータ            */
     2 USERDC1   CHARACTER 10    TYPE  U,K    /* ユーザキー              */
     2 USERDC2   CHARACTER 10    TYPE  U,D    /* ユーザデータ            */
     FUNCTION
       REFER     USE                          /* 検索の指定              */
       ADD       USE                          /* 追加の指定              */
       UPDATE    USE                          /* 更新の指定              */
       ERASE     NOUSE                        /* 削除の指定              */
       ALLERASE  NOUSE                        /* 一括削除の指定          */
   RECORD RECD                                /* レコード型名(RECD)      */
     2 DBKEY_L2  XCHARACTER 1    TYPE  K,L    /* 科目                    */
     2 DBKEY_L3  XCHARACTER 1    TYPE  K,L    /* 店番                    */
     2 DBKEY_L4  CHARACTER  3    TYPE  K,L    /* 顧客番号                */
     2 DBKEY_P2  INTEGER         TYPE  K,P    /* 上位の一連番号(RECC用)  */
     2 DBKEY     INTEGER         TYPE  K,N    /* 一連番号属性あり        */
     2 USERDD0   CHARACTER 10    TYPE  U,D    /* ユーザデータ            */
     2 USERDD1   CHARACTER 10    TYPE  U,K    /* ユーザキー              */
     2 USERDD2   CHARACTER 10    TYPE  U,D    /* ユーザデータ            */
     FUNCTION
       REFER     USE                          /* 検索の指定              */
       ADD       USE                          /* 追加の指定              */
       UPDATE    USE                          /* 更新の指定              */
       ERASE     NOUSE                        /* 削除の指定              */
       ALLERASE  NOUSE                        /* 一括削除の指定          */
   RECORD RECE                                /* レコード型名(RECE)      */
     2 DBKEY_L2  XCHARACTER 1    TYPE  K,L    /* 科目                    */
     2 DBKEY_L3  XCHARACTER 1    TYPE  K,L    /* 店番                    */
     2 DBKEY_L4  CHARACTER  3    TYPE  K,L    /* 顧客番号                */
     2 DBKEY_P2  INTEGER         TYPE  K,P    /* 上位の一連番号(RECC用)  */
     2 DBKEY_P3  INTEGER         TYPE  K,P    /* 上位の一連番号(RECD用)  */
     2 DBKEY     INTEGER         TYPE  N,N    /* 一連番号属性なし        */
     2 USERDD0   CHARACTER 10    TYPE  U,D    /* ユーザデータ            */
     2 USERDD2   CHARACTER 10    TYPE  U,D    /* ユーザデータ            */
     FUNCTION
         REFER   USE                          /* 検索の指定              */
         ADD       USE                        /* 追加の指定              */
         UPDATE    USE                        /* 更新の指定              */
         ERASE     NOUSE                      /* 削除の指定              */
         ALLERASE  NOUSE                      /* 一括削除の指定          */
   SET SET1                                   /* 親子集合(SET1)          */
     OWNER RECA                               /* 親レコードの指定        */
       ORDER LAST
     MEMBER RECB                              /* 子レコードの指定        */
       INSERTION AUTOMATIC
       RETENTION FIXED
     SETOPTION                                /* SETオプション           */
       OCCURRENCE NUMBER 0                    /* 一連番号属性なし        */

   SET SET2                                   /* 親子集合(SET2)          */
     OWNER RECA                               /* 親レコードの指定        */
       ORDER SORTED DUPLICATES PROHIBITED
     MEMBER RECC                              /* 子レコードの指定        */
       INSERTION AUTOMATIC
       RETENTION FIXED
       KEY ASCENDING USERDC1
     SETOPTION                                /* SETオプション           */
       OCCURRENCE NUMBER 10                   /* 一連番号属性あり        */
   SET SET3                                   /* 親子集合(SET3)          */
     OWNER RECC                               /* 子レコードの指定        */
       ORDER SORTED DUPLICATES PROHIBITED
     MEMBER RECD                              /* 孫レコードの指定        */
       INSERTION AUTOMATIC
       RETENTION FIXED
       KEY ASCENDING  USERDD1
     SETOPTION                                /* SETオプション           */
       OCCURRENCE NUMBER 100                  /* 一連番号属性あり        */
   SET SET4                                   /* 親子集合(SET4)          */
     OWNER RECD                               /* 孫レコードの指定        */
       ORDER LAST
     MEMBER RECE                              /* ひ孫レコードの指定      */
       INSERTION AUTOMATIC
       RETENTION FIXED
     SETOPTION                                /* SETオプション           */
       OCCURRENCE NUMBER 0                    /* 一連番号属性なし        */
   SDBOPTION                                  /* SDBオプション           */
     FUNCTION
       DBLODUTL USE            /* HiRDB/SDデータベース作成ユティリティ   */
END SCHEMA

注※

シーケンシャルインデクスの構成要素となります。

(5)　SDBデータベース格納定義の定義例

SDBデータベース格納定義例（*ENTRY DICTIONARY文の指定例）を次に示します。

*ENTRY DICTIONARY
 STORAGE SCHEMA FMB01 FOR FMB01               /* SDBデータベース格納名(FMB01)*/
                                              /* FOR SDBデータベース名(FMB01)*/
 DBTYPE 4V                                    /* SDBデータベース種別         */
   STORAGE RECORD RECA                        /* 格納レコード名(RECA)        */
     SEQUENTIAL RECA_SI FOR RECORD  /* シーケンシャルインデクス名(RECA_SI)   */
       ORDER KEY ASCENDING  DBKEY_L2,DBKEY_L3,DBKEY_L4
       WITHIN FMBX01_I              /* シーケンシャルインデクス用RDエリア名  */
     WITHIN FMBX01                            /* 格納レコード用RDエリア名    */
   STORAGE RECORD RECB                        /* 格納レコード名(RECB)        */
     CLUSTERED SET1
     WITHIN FMBX01                            /* 格納レコード用RDエリア      */
   STORAGE RECORD RECC                        /* 格納レコード名(RECC)        */
     CLUSTERED SET2
     WITHIN FMBX01                            /* 格納レコード用RDエリア      */
   STORAGE RECORD RECD                        /* 格納レコード名(RECD)        */
     CLUSTERED SET3
     WITHIN FMBX01                            /* 格納レコード用RDエリア      */
   STORAGE RECORD RECE                        /* 格納レコード名(RECE)        */
     CLUSTERED SET4
     WITHIN FMBX01                            /* 格納レコード用RDエリア      */
   SET SET1                                   /* 親子集合(SET1)              */
     OWNER POINTER FOR FIRST LAST MEMBER      /* 子(RECB)へのポインタ        */
     MEMBER POINTER FOR NEXT PRIOR TENANT     /* 子の兄弟ポインタ            */
   SET SET2                                   /* 親子集合(SET2)              */
     OWNER POINTER FOR FIRST LAST MEMBER      /* 子(RECC)へのポインタ        */
     MEMBER POINTER FOR NEXT PRIOR TENANT     /* 子の兄弟ポインタ            */
   SET SET3                                   /* 親子集合(SET3)              */
     OWNER POINTER FOR FIRST LAST USER MEMBER /* 孫(RECD)へのポインタ        */
     MEMBER POINTER FOR NEXT PRIOR TENANT     /* 孫の兄弟ポインタ定義        */
   SET SET4                                   /* 親子集合(SET4)              */
     OWNER POINTER FOR FIRST LAST MEMBER      /* ひ孫(RECE)へのポインタ      */
     MEMBER POINTER FOR NEXT PRIOR TENANT     /* ひ孫の兄弟ポインタ          */
   SDBOPTION                                  /* SDBオプション               */
END STORAGE SCHEMA

(6)　SDBディレクトリ情報の追加例

SDBディレクトリ情報の追加例（*ENTRY DIRECTORY文の指定例）を次に示します。

*ENTRY DIRECTORY
DBSCHM FMB01

11.11.2　SDBデータベースの定義例（4V DAMの場合）

4V DAMのSDBデータベースを定義する場合の定義例を次に示します。

(1)　データベースの階層構造

作成する4V DAMのSDBデータベースの階層構造の概要を次の図に示します。

図11‒21　作成する4V DAMのSDBデータベースの階層構造

(2)　データベースの格納構造

作成する4V DAMのSDBデータベースの格納構造の概要を次の図に示します。

図11‒22　作成する4V DAMのSDBデータベースの格納構造

(3)　各レコード型のキーおよびキー構成

作成する4V DAMのSDBデータベースの，各レコード型のキーおよびキー構成を次の図に示します。

図11‒23　作成する4V DAMのSDBデータベースの，各レコード型のキーおよびキー構成

(4)　SDBデータベース定義の定義例

SDBデータベース定義の定義例（*ENTRY DICTIONARY文の指定例）を次に示します。

*ENTRY DICTIONARY
 SCHEMA DAM01                                 /* データベース名(DAM01)      */
 DBTYPE 4V DAM                                /* SDBデータベース種別        */
   RECORD REC0                               /* 仮想ルートレコード型名(REC0)*/
     2 DBKEY_L1  CHARACTER  5    TYPE  D,L    /* DB名    ┐                 */
     2 DBKEY_L2  XCHARACTER 1    TYPE  K,L    /* 科目    │※               */
     2 DBKEY_L3  XCHARACTER 1    TYPE  K,L    /* 店番    │                 */
     2 DBKEY_L4  CHARACTER  3    TYPE  K,R    /* 区分    ┘                 */
   RECORD REC1                                /* レコード型名(REC1)         */
     2 DBKEY_L1  CHARACTER  5    TYPE  D,L    /* DB名                       */
     2 DBKEY                                  /* インデクス対応のキー情報   */
       3 DBKEY_L2  XCHARACTER 1  TYPE  K,L    /* 科目                       */
       3 DBKEY_L3  XCHARACTER 1  TYPE  K,L    /* 店番                       */
       3 DBKEY_L4  CHARACTER  3  TYPE  K,R    /* 区分(レコード分割キー)     */
       3 DBKEY_LN  INTEGER       TYPE  K,N    /* 一連番号あり               */
     2 USERD10     CHARACTER 20  TYPE  U,D    /* ユーザデータ               */
   RECORD REC2                                /* レコード型名(REC2)         */
     2 DBKEY_L1  CHARACTER 5     TYPE  D,L    /* DB名                       */
     2 DBKEY                                  /* インデクス対応のキー情報   */
       3 DBKEY_L2  XCHARACTER 1  TYPE  K,L    /* 科目                       */
       3 DBKEY_L3  XCHARACTER 1  TYPE  K,L    /* 店番                       */
       3 DBKEY_L4  CHARACTER  3  TYPE  K,R    /* 区分(レコード分割キー)     */
       3 DBKEY_LN  INTEGER       TYPE  K,N    /* 自一連番号あり             */
     2 USERD20  CHARACTER 20     TYPE  U,D    /* ユーザデータ               */
   RECORD REC3                                /* レコード型名(REC3)         */
     2 DBKEY_L1  CHARACTER 5     TYPE  D,L    /* DB名                       */
     2 DBKEY                                  /* インデクス対応のキー情報   */
       3 DBKEY_L2  XCHARACTER 1  TYPE  K,L    /* 科目                       */
       3 DBKEY_L3  XCHARACTER 1  TYPE  K,L    /* 店番                       */
       3 DBKEY_L4  CHARACTER  3  TYPE  K,R    /* 区分(レコード分割キー)     */
       3 DBKEY_LN  INTEGER       TYPE  K,N    /* 自一連番号あり             */
     2 USERD30     CHARACTER 10  TYPE  U,D    /* ユーザデータ               */
   SET SET1                                   /* 親子集合(SET1)             */
     OWNER REC0                               /* 親レコードの指定           */
       ORDER LAST
     MEMBER REC1                              /* 子レコードの指定           */
       INSERTION AUTOMATIC
       RETENTION FIXED
     SETOPTION                                /* SETオプション              */
       OCCURRENCE NUMBER 20                   /* 一連番号あり               */
   SET SET2                                   /* 親子集合(SET2)             */
     OWNER REC0                               /* 親レコードの指定           */
       ORDER LAST
     MEMBER REC2                              /* 子レコードの指定           */
       INSERTION AUTOMATIC
       RETENTION FIXED
     SETOPTION                                /* SETオプション              */
       OCCURRENCE NUMBER 20                   /* 一連番号あり               */
   SET SET3                                   /* 親子集合(SET3)             */
     OWNER REC0                               /* 親レコードの指定           */
       ORDER LAST
     MEMBER REC3                              /* 子レコードの指定           */
       INSERTION AUTOMATIC
       RETENTION FIXED
     SETOPTION                                /* SETオプション              */
       OCCURRENCE NUMBER 20                   /* 一連番号あり               */
   SDBOPTION                                  /* SDBオプション              */
     FUNCTION
       REFER     USE                          /* 検索の指定                 */
       ADD       USE                          /* 追加の指定                 */
       UPDATE    USE                          /* 更新の指定                 */
       ERASE     NOUSE                        /* 削除の指定                 */
       ALLERASE  NOUSE                        /* 一括削除の指定             */
       DBLODUTL  USE              /* HiRDB/SDデータベース作成ユティリティ   */
       FORMAT    NOUSE                        /* フォーマットライトの指定   */
END SCHEMA

注※

シーケンシャルインデクスの構成要素となります。

(5)　SDBデータベース格納定義の定義例

SDBデータベース格納定義例（*ENTRY DICTIONARY文の指定例）を次に示します。

*ENTRY DICTIONARY
 STORAGE SCHEMA DAM01 FOR DAM01             /* SDBデータベース格納名(DAM01) */
                                            /* FOR SDBデータベース名(DAM01) */
 DBTYPE 4V                                  /* SDBデータベース種別          */
   STORAGE RECORD REC0                      /* 格納レコード名(REC0)         */
     SEQUENTIAL REC0_SI FOR RECORD  /* シーケンシャルインデクス名(REC0_SI)  */
       ORDER KEY ASCENDING  DBKEY_L1, DBKEY_L2, DBKEY_L3, DBKEY_L4
       WITHIN DAMX01_I              /* シーケンシャルインデクス用RDエリア   */
     WITHIN DAMX01                          /* 格納レコード用RDエリア       */
   STORAGE RECORD REC1                      /* 格納レコード名(REC1)         */
     CLUSTERED SET1
     WITHIN DAMX01                          /* 格納レコード用RDエリア       */
     SECONDARY INDEX REC1_SI1               /* 二次インデクス名(REC1_SI1)   */
       ORDER KEY ASCENDING  DBKEY_L1, DBKEY_L2, DBKEY_L3,
                            DBKEY_L4, DBKEY_LN
       WITHIN DAMX01_I                      /* 二次インデクス用RDエリア     */
   STORAGE RECORD REC2                      /* 格納レコード名(REC2)         */
     CLUSTERED SET2
     WITHIN DAMX01                          /* 格納レコード用RDエリア       */
     SECONDARY INDEX REC2_SI1               /* 二次インデクス名(REC2_SI1)   */
       ORDER KEY ASCENDING  DBKEY_L1, DBKEY_L2, DBKEY_L3,
                            DBKEY_L4, DBKEY_LN
       WITHIN DAMX01_I                      /* 二次インデクス用RDエリア     */
   STORAGE RECORD REC3                      /* 格納レコード名(REC3)         */
     CLUSTERED SET3
     WITHIN DAMX01                          /* 格納レコード用RDエリア       */
     SECONDARY INDEX REC3_SI1               /* 二次インデクス名(REC3_SI1)   */
       ORDER KEY ASCENDING  DBKEY_L1, DBKEY_L2, DBKEY_L3,
                            DBKEY_L4, DBKEY_LN
       WITHIN DAMX01_I                      /* 二次インデクス用RDエリア     */
   SET SET1                                 /* 親子集合(SET1)               */
     OWNER POINTER FOR FIRST LAST MEMBER    /* 子(REC1)へのポインタ定義     */
     MEMBER POINTER FOR NEXT PRIOR TENANT   /* 子の兄弟ポインタ定義         */
   SET SET2                                 /* 親子集合(SET2)               */
     OWNER POINTER FOR FIRST LAST MEMBER    /* 子(REC2)へのポインタ定義     */
     MEMBER POINTER FOR NEXT PRIOR TENANT   /* 子の兄弟ポインタ定義         */
   SET SET3                                 /* 親子集合(SET3)               */
     OWNER POINTER FOR FIRST LAST MEMBER    /* 子(REC3)へのポインタ定義     */
     MEMBER POINTER FOR NEXT PRIOR TENANT   /* 子の兄弟ポインタ定義         */
   SDBOPTION                                /* SDBオプション                */
     KEYDEF DBKEY_L1                        /* キー値(区分)とレコードの     */
       DATA 'DAM01'                         /* 対応関係を指定する。         */
     KEYDEF DBKEY_L2                        /* 仮想ルートレコード型のキーと */
       DATA X'C1'                           /* キー値を指定する             */
     KEYDEF DBKEY_L3
       DATA X'10'
     KEYDEF DBKEY_L4                        /* レコード分割キー             */
       DATA '101',REC1
       DATA '102',REC2
       DATA '103',REC3
END STORAGE SCHEMA

(6)　SDBディレクトリ情報の追加例

SDBディレクトリ情報の追加例（*ENTRY DIRECTORY文の指定例）を次に示します。

*ENTRY DIRECTORY
DBSCHM DAM01

11.11.3　SDBデータベースの定義例（SD FMBの場合）

SD FMBのSDBデータベースを定義する場合の定義例を次に示します。

(1)　データベースの階層構造

作成するSD FMBのSDBデータベースの階層構造の概要を次の図に示します。

図11‒24　作成するSD FMBのSDBデータベースの階層構造

(2)　データベースの格納構造

作成するSD FMBのSDBデータベースの格納構造の概要を次の図に示します。

図11‒25　作成するSD FMBのSDBデータベースの格納構造

(3)　各レコード型のキーおよびキー構成

作成するSD FMBのSDBデータベースの，各レコード型のキーおよびキー構成を次の図に示します。

図11‒26　作成するSD FMBのSDBデータベースの，各レコード型のキーおよびキー構成

(4)　SDBデータベース定義の定義例

SDBデータベース定義の定義例（*ENTRY DICTIONARY文の指定例）を次に示します。

*ENTRY DICTIONARY
 SCHEMA FMB01                                 /* SDBデータベース名(FMB01)*/
 DBTYPE SD FMB                                /* SDBデータベース種別     */
   RECORD RECA                                /* レコード型名(RECA)      */
     2 KEYDATA
       3 KEYDATA_L2  XCHARACTER 1  TYPE  K,L    /* 科目    ┐※  */
       3 KEYDATA_L3  XCHARACTER 1  TYPE  K,L    /* 店番    │    */
       3 KEYDATA_L4  CHARACTER  3  TYPE  K,L    /* 顧客番号┘    */
     2 USERDA0     CHARACTER 30  TYPE  U,D    /* ユーザデータ            */
     2 USERDANO    CHARACTER 10  TYPE  U,D    /* ユーザデータ            */
   RECORD RECB                                /* レコード型名(RECB)      */
     2 KEYDATA_L2  XCHARACTER 1    TYPE  K,L    /* 科目                    */
     2 KEYDATA_L3  XCHARACTER 1    TYPE  K,L    /* 店番                    */
     2 KEYDATA_L4  CHARACTER  3    TYPE  K,L    /* 顧客番号                */
     2 DBKEY     INTEGER         TYPE  K,N    /* 一連番号属性あり        */
     2 USERDB0   CHARACTER 20    TYPE  U,D    /* ユーザデータ            */
   RECORD RECC                                /* レコード型名(RECC)      */
     2 KEYDATA_L2  XCHARACTER 1    TYPE  K,L    /* 科目                    */
     2 KEYDATA_L3  XCHARACTER 1    TYPE  K,L    /* 店番                    */
     2 KEYDATA_L4  CHARACTER  3    TYPE  K,L    /* 顧客番号                */
     2 DBKEY     INTEGER         TYPE  K,N    /* 一連番号属性あり        */
     2 USERDC0   CHARACTER 10    TYPE  U,D    /* ユーザデータ            */
     2 USERDC1   CHARACTER 10    TYPE  U,D    /* ユーザデータ            */
     2 USERDC2   CHARACTER 10    TYPE  U,D    /* ユーザデータ            */
   RECORD RECD                                /* レコード型名(RECD)      */
     2 KEYDATA_L2  XCHARACTER 1    TYPE  K,L    /* 科目                    */
     2 KEYDATA_L3  XCHARACTER 1    TYPE  K,L    /* 店番                    */
     2 KEYDATA_L4  CHARACTER  3    TYPE  K,L    /* 顧客番号                */
     2 DBKEY_P2  INTEGER         TYPE  K,P    /* 上位の一連番号(RECC用)  */
     2 DBKEY     INTEGER         TYPE  K,N    /* 一連番号属性あり        */
     2 USERDD0   CHARACTER 10    TYPE  U,D    /* ユーザデータ            */
     2 USERDD1   CHARACTER 10    TYPE  U,D    /* ユーザデータ            */
     2 USERDD2   CHARACTER 10    TYPE  U,D    /* ユーザデータ            */
   RECORD RECE                                /* レコード型名(RECE)      */
     2 KEYDATA_L2  XCHARACTER 1    TYPE  K,L    /* 科目                    */
     2 KEYDATA_L3  XCHARACTER 1    TYPE  K,L    /* 店番                    */
     2 KEYDATA_L4  CHARACTER  3    TYPE  K,L    /* 顧客番号                */
     2 DBKEY_P2  INTEGER         TYPE  K,P    /* 上位の一連番号(RECC用)  */
     2 DBKEY_P3  INTEGER         TYPE  K,P    /* 上位の一連番号(RECD用)  */
     2 DBKEY     INTEGER         TYPE  K,N    /* 一連番号属性あり        */
     2 USERDE0   CHARACTER 10    TYPE  U,D    /* ユーザデータ            */
     2 USERDE2   CHARACTER 10    TYPE  U,D    /* ユーザデータ            */
   SET SET1                                   /* 親子集合(SET1)          */
     OWNER RECA                               /* 親レコードの指定        */
       ORDER LAST
     MEMBER RECB                              /* 子レコードの指定        */
       INSERTION AUTOMATIC
       RETENTION FIXED
   SET SET2                                   /* 親子集合(SET2)          */
     OWNER RECA                               /* 親レコードの指定        */
       ORDER LAST
     MEMBER RECC                              /* 子レコードの指定        */
       INSERTION AUTOMATIC
       RETENTION FIXED
   SET SET3                                   /* 親子集合(SET3)          */
     OWNER RECC                               /* 子レコードの指定        */
       ORDER LAST
     MEMBER RECD                              /* 孫レコードの指定        */
       INSERTION AUTOMATIC
       RETENTION FIXED
   SET SET4                                   /* 親子集合(SET4)          */
     OWNER RECD                               /* 孫レコードの指定        */
       ORDER LAST
     MEMBER RECE                              /* ひ孫レコードの指定      */
       INSERTION AUTOMATIC
       RETENTION FIXED
END SCHEMA

注※

シーケンシャルインデクスの構成要素となります。

(5)　SDBデータベース格納定義の定義例

SDBデータベース格納定義例（*ENTRY DICTIONARY文の指定例）を次に示します。

*ENTRY DICTIONARY
 STORAGE SCHEMA FMB01 FOR FMB01               /* SDBデータベース格納名(FMB01)*/
                                              /* FOR SDBデータベース名(FMB01)*/
 DBTYPE SD                                    /* SDBデータベース種別         */
   STORAGE RECORD RECA                        /* 格納レコード名(RECA)        */
     SEQUENTIAL RECA_SI FOR RECORD  /* シーケンシャルインデクス名(RECA_SI)   */
       ORDER KEY ASCENDING  KEYDATA_L2,KEYDATA_L3,KEYDATA_L4
       WITHIN FMBX01_I              /* シーケンシャルインデクス用RDエリア名  */
     WITHIN FMBX01                            /* 格納レコード用RDエリア名    */
   STORAGE RECORD RECB                        /* 格納レコード名(RECB)        */
     CLUSTERED SET1
     WITHIN FMBX01                            /* 格納レコード用RDエリア      */
   STORAGE RECORD RECC                        /* 格納レコード名(RECC)        */
     CLUSTERED SET2
     WITHIN FMBX01                            /* 格納レコード用RDエリア      */
   STORAGE RECORD RECD                        /* 格納レコード名(RECD)        */
     CLUSTERED SET3
     WITHIN FMBX01                            /* 格納レコード用RDエリア      */
   STORAGE RECORD RECE                        /* 格納レコード名(RECE)        */
     CLUSTERED SET4
     WITHIN FMBX01                            /* 格納レコード用RDエリア      */
   SET SET1                                   /* 親子集合(SET1)              */
     OWNER POINTER FOR FIRST LAST MEMBER      /* 子(RECB)へのポインタ        */
     MEMBER POINTER FOR NEXT PRIOR TENANT     /* 子の兄弟ポインタ            */
   SET SET2                                   /* 親子集合(SET2)              */
     OWNER POINTER FOR FIRST LAST MEMBER      /* 子(RECC)へのポインタ        */
     MEMBER POINTER FOR NEXT PRIOR TENANT     /* 子の兄弟ポインタ            */
   SET SET3                                   /* 親子集合(SET3)              */
     OWNER POINTER FOR FIRST LAST MEMBER      /* 孫(RECD)へのポインタ        */
     MEMBER POINTER FOR NEXT PRIOR TENANT     /* 孫の兄弟ポインタ定義        */
   SET SET4                                   /* 親子集合(SET4)              */
     OWNER POINTER FOR FIRST LAST MEMBER      /* ひ孫(RECE)へのポインタ      */
     MEMBER POINTER FOR NEXT PRIOR TENANT     /* ひ孫の兄弟ポインタ          */
END STORAGE SCHEMA

(6)　SDBディレクトリ情報の追加例

SDBディレクトリ情報の追加例（*ENTRY DIRECTORY文の指定例）を次に示します。

*ENTRY DIRECTORY
DBSCHM FMB01

12　HiRDB/SDデータベース作成ユティリティ（pdsdblod）

この章では，HiRDB/SDデータベース作成ユティリティの機能と使い方について説明します。

なお，この章では，HiRDB/SDデータベース作成ユティリティをpdsdblodコマンドと表記しています。

12.1　機能

pdsdblodコマンドには次の機能があります。

データロード

フォーマットライト

インデクスの再作成

各機能について説明します。

12.1.1　データロード

pdsdbdefコマンドで定義したデータベースにレコードを格納し，インデクスを作成します。この機能をデータロードといいます。データロードには，次の表に示す2種類があります。

表12‒1　データロードの種類

データロードの種類

説明

初期データロード

environment文のpurgeオペランドにyesを指定して実行するデータロードのことです。この場合，格納済みのレコードを削除してから，データロードが実行されます。

追加データロード

environment文のpurgeオペランドにnoを指定するか，またはpurgeオペランドを省略して実行するデータロードのことです。この場合，格納済みのレコードは削除されません。入力データファイルのデータが追加でデータロードされます。

追加データロードは，4V FMBまたはSD FMBのSDBデータベースの場合に実行できます。

データロードの概要を次の図に示します。

図12‒1　データロードの概要

注※

更新可能なオンライン再編成を実行する場合に必要となるRDエリア，および作成されるファイルです。

［説明］

入力データファイル中のレコードをデータベースに格納します。

インデクスに関する情報がインデクス情報ファイルに出力され，ソート用ワークファイルでインデクスのデータをソートしてインデクスが作成されます。

更新可能なオンライン再編成を実行する場合，追い付き反映キー対応表に登録する情報を中間ファイルに一時的に出力します。その後，追い付き反映キー対応表にデータが登録されます。

SDBデータベース定義のDBLODUTL句にUSEを指定したデータベースに対してだけデータロードを実行できます。

(1)　データロードの際に準備するファイル

データロードを実行する前に，次のファイルを準備しておきます。これらのファイルは通常ファイル上に作成してください。

入力データファイル

データベースに格納するレコードを格納しているファイルです。入力データファイルは決まった形式で作成する必要があります。入力データファイルの形式については，「12.6　入力データファイルの形式」を参照してください。

制御文ファイル

pdsdblodコマンドの動作条件を指定したpdsdblod制御文を格納したファイルです。pdsdblod制御文については，「12.3　pdsdblod制御文」を参照してください。

(2)　データロードの際に準備するRDエリア【4V FMB】

更新可能なオンライン再編成を実行する前に，次のRDエリアを準備しておきます。

追い付き反映キー対応表を格納するRDエリア

追い付き反映キー対応表のインデクスを格納するRDエリア

詳細については，「5.13.3(6)　追い付き反映キー対応表，追い付き状態管理表を格納するRDエリアの作成（pdmodコマンド）」を参照してください。

(3)　データロードの際に作成されるファイル

データロードの際，HiRDB/SDは次に示すファイルを作成します。これらのファイルは通常ファイル上に作成されます。

インデクス情報ファイル，ソート用ワークファイル

インデクスを一括作成する際に一時的に作成されるファイルです。pdsdblodコマンドが正常終了した場合，これらのファイルは自動的に削除されます。

追加データロードのインデクス一括作成モードの場合は，レコード格納前に既存レコードのインデクス情報をインデクス情報ファイルに出力します。その後，追加するレコードのインデクス情報をこのインデクス情報ファイルに追加します。そのため，レコード格納後には，追加するレコードだけでなく，SDBデータベースに格納済みのレコードを含めた全レコードのインデクス情報ファイルが作成されます。

実行結果ファイル

pdsdblodコマンドの実行結果を出力するファイルです。実行結果ファイルに出力される情報については，「12.7　実行結果ファイルの出力形式」を参照してください。

論理エラー情報ファイル

入力データファイル中のレコードに論理エラーがあった場合，論理エラーに関する情報を出力するファイルです。

HiRDB/SDはデータベースの定義に合っていない不整合なレコードを論理エラーのレコードと判定します。データロードの際は，正常なレコードだけが格納され，論理エラーと判定されたレコードは格納されません。論理エラーが発生した場合，どのようなエラーで，レコード中のどの個所にエラーがあったかという情報が論理エラー情報ファイルに出力されます。論理エラー情報ファイルに出力される情報については，「12.8.2　論理エラー情報ファイルの出力形式」を参照してください。

中間ファイル

追い付き反映キー対応表に登録する情報を一時的に格納するファイルです。更新可能なオンライン再編成の実行時に作成されます。

(4)　インデクスの作成モードの選択

データロードを実行する際，インデクスの作成方法（作成モード）を選択します。次に示すどちらかのモードを選択してください。

インデクス一括作成モード

インデクス更新モード

インデクス一括作成モードを選択した場合，すべてのレコードの格納処理が完了したあとに，まとめてインデクスが作成されます。インデクス更新モードを選択した場合，1レコードを格納するたびにそのレコードのインデクスが作成されます。

ポイント

通常は，性能面で優れているインデクス一括作成モードを選択してください。ただし，データロード時にシーケンシャルインデクスのキー値の重複が検出された場合（KFPB63481-Eメッセージが出力された場合）は，インデクス更新モードでデータロードを再実行してください。

理由：

インデクス一括作成モードでデータロードを実行した場合，シーケンシャルインデクスのキー値の重複情報が論理エラー情報として出力されないため，どのキー値が重複しているのかを特定できません。一方，インデクス更新モードでデータロードを実行した場合，シーケンシャルインデクスのキー値の重複情報が論理エラー情報として出力されるため，どのキー値が重複しているのかを特定できます。

pdsdblod制御文のload文のidxmodeオペランドでインデクスの作成モードを選択します。

(5)　SDBデータベースが横分割されている場合のデータロード

SDBデータベースが複数のRDエリアに横分割されている場合のデータロードについて説明します。

SDBデータベースがサーバ内横分割されている場合

複数のRDエリアに対して一括してデータロードが実行できます（pdsdblodコマンドの一度の実行でデータロードが完了します）。また，RDエリア単位にデータロードを実行することもできます。この場合，pdsdblodコマンドを複数回実行します。

SDBデータベースがサーバ間横分割されている場合

データロードはバックエンドサーバ単位でしか実行できないため，SDBデータベースがサーバ間横分割されている場合は，バックエンドサーバ単位にデータロードを実行します。

(6)　一連番号の扱い

一連番号は入力データ順に自動的に1から採番され，付与されます。

(7)　追加データロード【4V FMB，SD FMB】

格納されていないデータベースキーを持つルートレコードのファミリ単位で追加データロードができます。

12.1.2　フォーマットライト【4V DAM】

pdsdbdefコマンドで定義したデータベースに初期値を格納し，インデクスを作成します。この機能をフォーマットライトといいます。初期値はHiRDB/SDが自動的に作成します。データロードとは異なり，HiRDB/SDの利用者が格納データを準備する必要はありません。フォーマットライトの概要を次の図に示します。

図12‒2　フォーマットライトの概要

［説明］

データベースの定義（SDBデータベース定義およびSDBデータベース格納定義）に従ってHiRDB/SDが初期値を作成してデータベースに格納します。

インデクスに関する情報がインデクス情報ファイルに出力され，ソート用ワークファイルでインデクスのデータをソートしてインデクスが作成されます。

SDBデータベース定義のFORMAT句にUSEを指定したレコード型に対してだけフォーマットライトを実行できます。

フォーマットライトは，4V DAMのSDBデータベースの場合に実行できます。

(1)　フォーマットライトの際に準備するファイルと作成されるファイル

フォーマットライトの際に準備するファイルと作成されるファイルについては，「12.1.1(1)　データロードの際に準備するファイル」および「12.1.1(3)　データロードの際に作成されるファイル」を参照してください。

(2)　インデクスの作成モードの選択

インデクスの作成モードもデータロードと同じく，次に示す2つのモードがあります。

インデクス一括作成モード

インデクス更新モード

ポイント

フォーマットライトの場合，シーケンシャルインデクスのキー値が重複することがありません。そのため，性能面で優れているインデクス一括作成モードを使用してください。

(3)　SDBデータベースが横分割されている場合のフォーマットライト

SDBデータベースが複数のRDエリアに横分割されている場合のフォーマットライトの方法を説明します。

SDBデータベースがサーバ内横分割されている場合

複数のRDエリアに対して一括してフォーマットライトが実行できます（pdsdblodコマンドの一度の実行でフォーマットライトが完了します）。また，RDエリア単位にフォーマットライトを実行することもできます。この場合，pdsdblodコマンドを複数回実行します。

SDBデータベースがサーバ間横分割されている場合

フォーマットライトはバックエンドサーバ単位でしか実行できないため，SDBデータベースがサーバ間横分割されている場合は，バックエンドサーバ単位にフォーマットライトを実行します。

(4)　初期値として格納されるデータ

初期値として格納されるデータは，データベースの定義（SDBデータベース定義およびSDBデータベース格納定義）に従ってHiRDB/SDが自動的に作成します。HiRDB/SDが作成する初期値の例を次に示します。

SDBデータベース定義

     :
  SCHEMA DAM1
  DBTYPE 4V DAM
  RECORD REC0  …仮想ルートレコード
    2 DBKDBMEI         CHARACTER 4   TYPE D,L       …データベース名
    2 DBKHIDUKE        XCHARACTER 1  TYPE K,L       …日付
    2 DBKTENBAN        XCHARACTER 3  TYPE K,L       …店番
    2 DBKKUBUN         XCHARACTER 4  TYPE K,R       …区分
  RECORD REC1
    2 DBKDBMEI         CHARACTER 4   TYPE D,L       …データベース名
    2 DBKEY
     3 DBKHIDUKE       XCHARACTER 1  TYPE K,L       …日付
     3 DBKTENBAN       XCHARACTER 3  TYPE K,L       …店番
     3 DBKKUBUN        XCHARACTER 4  TYPE K,R       …区分
     3 DBKITIRENBANGOU INTEGER       TYPE K,N       …一連番号
    2 USERDA1          CHARACTER 5   TYPE U,D       …ユーザデータ
  RECORD REC2
    2 DBKDBMEI         CHARACTER 4   TYPE D,L       …データベース名
    2 DBKEY
     3 DBKHIDUKE       XCHARACTER 1  TYPE K,L       …日付
     3 DBKTENBAN       XCHARACTER 3  TYPE K,L       …店番
     3 DBKKUBUN        XCHARACTER 4  TYPE K,R       …区分
     3 DBKITIRENBANGOU INTEGER       TYPE K,N       …一連番号
    2 USERDA2            CHARACTER 10  TYPE U,D     …ユーザデータ
  SET 親子集合1
      :
    MEMBER REC1
      :
    OCCURRENCE NUMBER 10  …一連番号の最大値
  SET 親子集合2
      :
    MEMBER REC2
      :
    OCCURRENCE NUMBER 20  …一連番号の最大値
           ：

SDBデータベース格納定義

        ：
STORAGE SCHEMA DAM1 FOR DAM1
        ：
  SDBOPTION
    KEYDEF DBKDBMEI                  …データベース名
      DATA DAM1
    KEYDEF DBKHIDUKE                 …日付
      DATA X'C1'
      DATA X'C2'
    KEYDEF DBKTENBAN                 …店番
      DATA X'000011'
      DATA X'000012'
    KEYDEF DBKKUBUN                  …区分
      DATA X'00000001', REC1
      DATA X'00000002', REC2
        ：

初期値として格納されるデータ

キー部

ユーザデータ部

データベース名

日付

店番

区分

一連番号

ユーザデータ※1

DAM1

X'C1'

X'000011'

X'00000001'

1〜10※2

X'0000000000'

DAM1

X'C1'

X'000011'

X'00000002'

1〜20※2

X'00000000000000000000'

DAM1

X'C1'

X'000012'

X'00000001'

1〜10※2

X'0000000000'

DAM1

X'C1'

X'000012'

X'00000002'

1〜20※2

X'00000000000000000000'

DAM1

X'C2'

X'000011'

X'00000001'

1〜10※2

X'0000000000'

DAM1

X'C2'

X'000011'

X'00000002'

1〜20※2

X'00000000000000000000'

DAM1

X'C2'

X'000012'

X'00000001'

1〜10※2

X'0000000000'

DAM1

X'C2'

X'000012'

X'00000002'

1〜20※2

X'00000000000000000000'

注※1

対応するレコードごとに構成要素を切り替えます。

注※2

SDBデータベース定義のOCCURRENCE NUMBER句に指定した一連番号の最大値の数だけ，レコードが作成されます。

キー部の作成仕様

SDBデータベース定義のRECORD句に指定したDBKEYに対応する構成要素に対して，SDBデータベース格納定義のKEYDEF句に指定したすべてのキー値の組み合わせが作成されます。

SDBデータベース定義のRECORD句に指定したDBKEYに対応する構成要素に対して，下位の構成要素から先頭の構成要素の順番に，キー値を組み替えながらすべての組み合わせが作成されます。

1つの構成要素に設定するキー値は，対応するSDBデータベース格納定義のKEYDEF句に指定したキー値の指定順に設定されます。

一連番号の構成要素は，1からSDBデータベース定義のOCCURRENCE NUMBER句に指定した一連番号の最大値（指定値が0の場合は1）までが採番されます。

SDBデータベース格納定義のKEYDEF句で指定したキー値の定義順にキー部が作成されます。作成されたキー部（データベースキー）がSEQUENTIAL句で定義した並びと異なる場合，論理エラーとなるため注意してください。

ユーザデータ部の作成仕様

ユーザデータ部に格納される初期値は，構成要素のデータ型によって決まります。構成要素のデータ型とユーザデータ部に格納される初期値を次の表に示します。

表12‒2　構成要素のデータ型とユーザデータ部に格納される初期値

構成要素のデータ型

データ長（単位：バイト）

ユーザデータ部に格納される初期値

CHARACTER n

n

X'00....00'（0を代入）

XCHARACTER n

n

X'00....00'（0を代入）

PACKED DECIMAL FIXED p,s

↓（p＋s）÷2↓＋1

X'00....0C'

（最終8ビットをX'0C'とし，残りは0を代入）

INTEGER

4

X'00....00'（0を代入）

格納されるレコード数の仕様

フォーマットライトによって格納されるレコードの最大数は次のようになります。

（A÷B）×C

A：SDBデータベース格納定義のKEYDEF句で指定したすべてのキー値の組み合わせ数

B：格納先のレコード数

C：SDBデータベース定義のOCCURRENCE NUMBER句に指定した一連番号の最大値の総数

(5)　注意事項

SDBデータベース格納定義のKEYDEF句で，すべてのキーに対するキー値を過不足なく定義しておいてください。過不足があった場合でも，定義情報に従ってフォーマットライトが実行されます。

ユーザキー（SDBデータベース定義のRECORD句で構成要素のデータ種別を指定するTYPE句にU,Kを指定）がある場合，フォーマットライト機能は実行できません。この場合，フォーマットライトしたい値で入力データファイルを作成し，データロードを実行してください。

12.1.3　インデクスの再作成

レコード格納用RDエリアのレコード型中のデータから，インデクスを作成することができます。この機能をインデクスの再作成といいます。インデクスの再作成の概要を次の図に示します。

図12‒3　インデクスの再作成の概要

［説明］

レコード格納用RDエリアのレコード型中のデータの内容からインデクスの作成に必要な情報を取得します。

インデクスに関する情報がインデクス情報ファイルに出力され，ソート用ワークファイルでインデクスのデータをソートしてインデクスが作成されます。

SDBデータベース定義のDBLODUTL句にUSEを指定したSDBデータベースに対してだけ，インデクスを再作成できます。

(1)　インデクスを再作成する際に準備するファイル

インデクスを再作成する前に，次のファイルを準備しておきます。これらのファイルは通常ファイル上に作成してください。

制御文ファイル

pdsdblodコマンドの動作条件を指定したpdsdblod制御文を格納したファイルです。pdsdblod制御文については，「12.3　pdsdblod制御文」を参照してください。

(2)　インデクスを再作成する際に作成されるファイル

インデクスを再作成する際，HiRDB/SDは次に示すファイルを作成します。これらのファイルは通常ファイル上に作成されます。

インデクス情報ファイル，ソート用ワークファイル

インデクスを再作成する際に一時的に作成されるファイルです。pdsdblodコマンドが正常終了した場合，これらのファイルは自動的に削除されます。

(3)　インデクスを再作成する際のインデクス作成単位

インデクス格納用RDエリアに格納されているインデクスごとに，インデクスを再作成します。

SDBデータベースを複数のRDエリアに横分割している場合は，インデクス格納用RDエリアごとにインデクスを再作成します。

12.2　コマンドの形式

　pdsdblod 制御文ファイル名

制御文ファイル名：

pdsdblod制御文を指定した制御文ファイルの名称を絶対パスまたは相対パスで指定します。pdsdblod制御文については，次の「12.3　pdsdblod制御文」で説明します。

12.3　pdsdblod制御文

pdsdblod制御文には，pdsdblodコマンドの動作条件を指定します。pdsdblod制御文は，environment文，load文，dbinf文，index文，idxload文，およびoreload文で構成されています。ここでは，各文の指定形式と各文に指定するオペランドについて説明します。

注意事項

pdsdblod制御文は次の表に示す順序で指定してください。

表12‒3　pdsdblod制御文の指定順序

実行する操作

pdsdblod制御文の指定順序

データロードの場合

environment文，load文，dbinf文，idxload文，oreload文の順に指定してください。

environment文とload文は必ず指定してください。

フォーマットライトの場合

environment文，load文，dbinf文，idxload文の順に指定してください。

environment文とload文は必ず指定してください。

インデクスの再作成の場合

environment文，index文，idxload文の順に指定してください。

environment文とindex文は必ず指定してください。

pdsdblod制御文はテキストファイルに作成します。テキストファイルを保存する際，pdsetupコマンド実行時に指定した文字コード種別で保存してください。

環境変数LANGまたはクライアント環境定義のPDLANGオペランドで，使用する文字コードにUTF-8を指定した場合，pdsdblod制御文を記述したファイルにはBOMを持つファイルが指定できます（BOMを読み飛ばします）。ただし，入力データファイルにはBOMを付加しないでください。

pdsdblod制御文中にコメントは記述できません。

12.3.1　environment文

environment文には，データロードまたはフォーマットライトの基本的な動作条件を指定します。

指定形式（データロードの場合）

 environment

       schema = SDBデータベース名

       logmode = ｛all｜no｝

     〔purge = ｛yes｜no｝〕

     〔exectime = pdsdblodコマンドの実行時間の上限〕

     〔recnomsg = 処理経過メッセージの出力間隔〕

     〔infmsglvl = ｛lvl0｜lvl1｜lvl2｝〕

     〔recfree = レコード型名，（〔ページ内の未使用領域の比率〕
                 ，セグメント内の空きページの比率）〕

     〔divermsg = ｛put｜noput｝〕

     〔generation = 世代番号〕

指定形式（フォーマットライトの場合）

 environment

       schema = SDBデータベース名

       logmode = ｛all｜no｝

     〔purge = ｛yes｜no｝〕

     〔exectime = pdsdblodコマンドの実行時間の上限〕

     〔recnomsg = 処理経過メッセージの出力間隔〕

     〔infmsglvl = ｛lvl0｜lvl1｜lvl2｝〕

     〔recfree = レコード型名，（〔ページ内の未使用領域の比率〕
                 ，セグメント内の空きページの比率）〕

     〔generation = 世代番号〕

●schema = SDBデータベース名

〜＜識別子＞((1〜30バイト))

データロード，インデクスの再作成，またはフォーマットライトを実行するSDBデータベースの名称を指定します。SDBデータベース定義のSCHEMA句に指定したSDBデータベース名を指定します。

SDBデータベース名を引用符（''）で囲んだ場合，英大文字と英小文字が区別されます。引用符（''）で囲まない場合，すべて英大文字として扱われます。

●logmode = ｛all｜no｝

データロード，インデクスの再作成，またはフォーマットライトを実行する際，システムログを取得するかどうかを指定します。

all：システムログを取得します（ログ取得モード）。

no：システムログを取得しません（ログレスモード）。

システムログを取得するかどうかによる運用差異を次の表に示します。

表12‒4　システムログを取得するかどうかによる運用差異

項番

比較項目

ログ取得モードの場合

ログレスモードの場合

1

データロードまたはフォーマットライトの処理に掛かる時間

システムログを取得する分，データロードまたはフォーマットライトに掛かる時間が長くなります。

システムログを取得しない分，データロードまたはフォーマットライトに掛かる時間が短くなります。

2

pdsdblodコマンドが異常終了したときのRDエリアの状態

ロールバックするため，RDエリアの状態は変わりません（障害閉塞しません）。

障害対策後，pdsdblodコマンドを再実行します。

ロールバックしないため，RDエリアは障害閉塞します。障害閉塞を解除するには，pdmodコマンドで，RDエリアを再初期化します。

RDエリアを再初期化し，障害対策後，pdsdblodコマンドを再実行します。

《留意事項》

ログレスモードの場合，SDBデータベースに格納するレコード数やインデクス数に比例した大量のシステムログは取得しません。ただし，当該RDエリアをログレスモードで更新したことを記録するシステムログをRDエリア数に比例して取得します。システムログ量の計算式については，「3.5.1(5)　HiRDB/SDデータベース作成ユティリティ（pdsdblod）実行時のシステムログ量」を参照してください。

更新可能なオンライン再編成の実行時，追い付き反映キー対応表については，logmode = noを指定してもシステムログが取得されます。

●purge = ｛yes｜no｝

データロードまたはフォーマットライトを実行する際，格納済みの既存レコードを削除するかどうかを指定します。

yes：

既存レコードを削除してから，データロードまたはフォーマットライトを実行します。初期データロードとして動作します。

no：

既存レコードを削除しないで，データロードまたはフォーマットライトを実行します。追加データロードとして動作します。

SDBデータベースの再編成のリロードとして実行する場合は，yesを指定してください。追加データロードの場合は，noを指定してください。

初期データロードなど，レコードが格納されていないSDBデータベースに対してデータロードまたはフォーマットライトする場合は，このオペランドを指定する必要はありません。デフォルト値のnoでデータロードまたはフォーマットライトできます。

なお，このオペランドにnoを指定，または省略した場合，次の指定はできません。

oreload文

load文のtypeオペランドにsingle

load文のwriteオペランドにuse

参考

格納済みのデータがない場合でもこのオペランドにnoを指定できますが，dupkeyckオペランドにyesを指定すると，格納済みのデータがなくても重複キーのチェック処理が行われ，その分処理が遅くなります。そのため，格納済みのデータがない場合は，dupkeyckオペランドにnoを指定することを推奨します。

●exectime = pdsdblodコマンドの実行時間の上限

〜＜符号なし整数＞((0〜35,791,394))（単位：分）

pdsdblodコマンドの実行時間の上限を分単位で指定します。このオペランドに指定した時間を超えてもpdsdblodコマンドの処理が完了しない場合，pdsdblodコマンドを強制終了します（異常終了の扱いになります）。このとき，無応答障害の原因調査のための障害情報が$PDDIR/spool/saveディレクトリ下に出力されます。出力される障害情報を次に示します。

コアファイル

.debファイル

コマンド名<障害情報の出力日時>プロセスID.txtファイル※

注※

このファイルには，次に示すコマンドの実行結果が出力されます。

・pdls -d lck

・pdls -d rpc -a

なお，このオペランドは無応答障害の検知を目的としています。したがって，pdsdblodコマンドの予想実行時間に対して，十分に余裕をもたせた時間を指定してください。例えば，pdsdblodコマンドの予想実行時間が7分程度の場合，このオペランドには20分ぐらいの時間を指定してください。

データロードを夜間バッチとして実行するときなどにこのオペランドの指定を推奨します。このときにこのオペランドを指定しておくと，通信障害（一時的な障害を含む）やディスク障害などが発生して，pdsdblodコマンドが無応答状態になった場合，pdsdblodコマンドを自動的に強制終了させることができます。これによって，pdsdblodコマンドの無応答状態が，UAPやほかのコマンドの実行に影響が及ぶのを防ぐことができます。

《留意事項》

このオペランドに0を指定した場合は，pdsdblodコマンドの実行時間の上限は設定されません。

このオペランドを省略した場合，システム定義のpd_utl_exec_timeオペランド，またはpd_cmd_exec_timeオペランドに指定した時間が，pdsdblodコマンドの実行時間の上限になります。pd_utl_exec_timeオペランド，およびpd_cmd_exec_timeオペランドについては，マニュアル「HiRDB Version 9 システム定義」を参照してください。

オペランドの優先順位は高い順に次のとおりです（優先順位は1の指定がいちばん上位です）。

優先順位

指定個所

オペランド名

1

pdsdblod制御文のenvironment文

exectime

2

システム定義

pd_utl_exec_time

3

システム定義

pd_cmd_exec_time

●recnomsg = 処理経過メッセージの出力間隔

〜＜符号なし整数＞((1〜1,000))《10》（単位：1万件）

データロードまたはフォーマットライトの処理経過メッセージの出力間隔を，1万件（レコード）単位で指定します。例えば，このオペランドに5を指定すると，データロードが5万件（レコード）終わるごとに経過メッセージ（KFPB63011-I）が出力されます。

●infmsglvl = ｛lvl0｜lvl1｜lvl2｝

データロード，インデクスの再作成，またはフォーマットライト時に出力される次に示すメッセージを出力するかどうかを指定します。

KFPB63035-I（インデクス情報ファイルに関するメッセージ）

KFPB63036-I（インデクスの一括作成の開始を知らせるメッセージ）

KFPB63037-I（インデクスの一括作成の終了を知らせるメッセージ）

KFPB63038-I（インデクスの一括作成の開始を知らせるメッセージ）

KFPB63039-I（インデクスの一括作成の終了を知らせるメッセージ）

KFPB63040-I（インデクス情報ファイルの削除を知らせるメッセージ）

KFPB63044-I（インデクスの抽出開始を知らせるメッセージ）

KFPB63045-I（インデクスの抽出終了を知らせるメッセージ）

KFPB63046-I（インデクスの抽出開始を知らせるメッセージ）

KFPB63047-I（インデクスの抽出終了を知らせるメッセージ）

インデクス数や，インデクス格納用RDエリア数に比例して，上記のメッセージの出力回数が多くなります。

lvl0：

上記のメッセージのうち，次のメッセージを除いて，標準出力，syslogfile，およびメッセージログファイルに出力します。

KFPB63036-I（インデクスの一括作成の開始を知らせるメッセージ）

KFPB63037-I（インデクスの一括作成の終了を知らせるメッセージ）

KFPB63044-I（インデクスの抽出開始を知らせるメッセージ）

KFPB63045-I（インデクスの抽出終了を知らせるメッセージ）

lvl1：

上記のメッセージをsyslogfileおよびメッセージログファイルに出力します。

ただし，次のメッセージは，標準出力にも出力します（次のメッセージ以外は標準出力には出力しません）。

KFPB63036-I（インデクスの一括作成の開始を知らせるメッセージ）

KFPB63037-I（インデクスの一括作成の終了を知らせるメッセージ）

KFPB63038-I（インデクスの一括作成の開始を知らせるメッセージ）

KFPB63039-I（インデクスの一括作成の終了を知らせるメッセージ）

KFPB63044-I（インデクスの抽出開始を知らせるメッセージ）

KFPB63045-I（インデクスの抽出終了を知らせるメッセージ）

lvl2：

上記のメッセージは，標準出力，syslogfile，およびメッセージログファイルに出力しません。代わりにワークファイルに上記のメッセージを出力します。

ただし，次のメッセージについては，標準出力，syslogfile，メッセージログファイル，およびワークファイルに出力します。

KFPB63036-I（インデクスの一括作成の開始を知らせるメッセージ）

KFPB63037-I（インデクスの一括作成の終了を知らせるメッセージ）

KFPB63044-I（インデクスの抽出開始を知らせるメッセージ）

KFPB63045-I（インデクスの抽出終了を知らせるメッセージ）

通常は，このオペランドを省略するか，またはlvl1を指定してください。lvl2を指定してワークファイルにメッセージを出力するのは，トラブルシュート目的（pdsdblodコマンドの動作を確認するため）のときだけにしてください。

《ワークファイルの出力先》

ワークファイルの出力先ディレクトリは，次に示す優先順位（1の指定がいちばん上位）に従って決定されます。

システム定義のpd_tmp_directoryオペランドに指定したディレクトリ

環境変数TMPDIRに指定したディレクトリ

/tmpディレクトリ

1のディレクトリにワークファイルを出力することを推奨します。1のディレクトリにワークファイルを出力すると，pdcspoolコマンドでワークファイルを一括削除できるため，ファイル削除の手間が少なく済みます。

処理対象のRDエリアがあるサーバマシンのディレクトリにワークファイルが出力されます。ファイル名は，PDSDBLOAD-aa....aa-bb....bbになります。aa....aaはサーバ名，bb....bbはファイル作成時間およびプロセスIDになります。

参考

ファイルオープンエラーや入出力エラーなどによってワークファイルにメッセージが出力できない場合でもpdsdblodコマンドの処理は続行されます。

《ワークファイルの出力形式》

ワークファイルの出力形式を次に示します。

AAAAA hh:mm:ss BBBB CC....CC KFPB63nnn-I XX....XX

AAAAA：プロセスID

hh:mm:ss：メッセージの出力時刻

BBBB：ユニット識別子

CC....CC：メッセージの出力要求元のサーバ名

KFPB63nnn-I：メッセージID

XX....XX ：メッセージテキスト

ユニット識別子とメッセージの出力要求元のサーバ名は，出力されないことがあります。

●recfree = レコード型名，（〔ページ内の未使用領域の比率〕，セグメント内の空きページの比率）

SDBデータベース格納定義のPCTFREEオペランドの指定値を変更して，データロードまたはフォーマットライトを実行する場合にこのオペランドを指定します。このオペランドを省略した場合は，SDBデータベース格納定義のPCTFREEオペランドの指定値に従って，ページ内の未使用領域の比率やセグメント内の空きページの比率が設定されます。

ページ内の未使用領域の比率およびセグメント内の空きページの比率については，「3.2.5　レコード格納時の空き領域の作成（サブページ分割をしない場合）」または「3.2.6　レコード格納時の空き領域の作成（サブページ分割をする場合）」を参照してください。

レコード型名：

〜＜識別子＞((1〜30バイト))

4V FMBまたはSD FMBのSDBデータベースの場合は，ページ内の未使用領域の比率の変更を行うルートレコードのレコード型名を指定します。ルートレコードのページ内の未使用領域の比率は，子レコードにも適用されます。

4V AFMのSDBデータベースの場合は，ページ内の未使用領域の比率の変更を行う仮想ルートレコードのレコード型名を指定します。仮想ルートレコードのページ内の未使用領域の比率は，子レコードにも適用されます。

ページ内の未使用領域の比率：

〜＜符号なし整数＞((0〜99))（単位：％）

ページ内の未使用領域の比率を％単位で指定します。

なお，サブページ分割をしている場合，ページ内の未使用領域の比率は，サブページ内の未使用領域の比率になります。例えば，30を指定した場合，サブページ内の未使用領域の比率が30％になります。

セグメント内の空きページの比率：

〜＜符号なし整数＞((0〜50))（単位：％）

セグメント内の空きページの比率を％単位で指定します。

ページ内の未使用領域の比率およびセグメント内の空きページの比率の指定値を小さくすると，RDエリアに格納できるレコード件数が多くなります。逆に，指定値を大きくすると，RDエリアに格納できるレコード件数が少なくなります。したがって，データロード時のRDエリア容量不足を一時的に回避したい場合は，SDBデータベース格納定義のPCTFREEオペランドで指定した値より小さい値を指定してください。

●divermsg = ｛put｜noput｝　【データロード限定オペランド】

入力データファイル中に処理対象RDエリア以外に格納されるレコードがある場合，そのレコードを論理エラーとするかどうかを指定します。RDエリア単位のデータロードを実行する場合にこのオペランドの指定を検討してください。

put：

入力データファイル中に格納対象外のレコードがあった場合，そのレコードを論理エラーとして扱います。論理エラーの情報は，実行結果ファイルおよび論理エラー情報ファイルに出力されます。

noput：

入力データファイル中に格納対象外のレコードがあった場合でも，そのレコードを論理エラーとして扱いません。

入力データファイル中に格納対象外のレコードが大量にあるときにputを指定すると，論理エラーの情報が実行結果ファイルに大量に出力されます。このような場合はnoputを指定してください。

参考

putまたはnoputのどちらを指定しても，格納対象外のレコードはデータベースに格納されません。

●generation = 世代番号

〜＜符号なし整数＞((0〜10))

処理対象のRDエリアの世代番号を指定します。このオペランドは，インナレプリカ機能使用時に指定します。

なお，SD FMBのSDBデータベースを使用している場合，このオペランドは省略してください。

0：オリジナルRDエリアを処理対象とする場合に指定します。

1〜10：指定した世代のレプリカRDエリアを処理対象とする場合に指定します。

更新可能なオンライン再編成時のデータロードの場合

このオペランドには，0（オリジナルRDエリア）を指定してください。0以外の値（レプリカRDエリア）を指定すると，エラーになります。

また，オリジナルRDエリアがオンライン再編成閉塞でない場合も，エラーになります。

上記以外の場合

このオペランドを省略した場合，カレントRDエリアが処理対象になります。カレントRDエリア以外のRDエリアを処理対象とする場合に，このオペランドを指定してください。

《運用上の注意事項》

レプリカRDエリアに対してRDエリア単位のデータロードまたはフォーマットライトを実行する場合，load文のareaオペランドにはオリジナルRDエリア名を指定してください。このオペランドには処理対象のRDエリアの世代番号を指定してください。

pdsdbrogコマンドでレコードをアンロードし，pdsdblodコマンドでデータロードする場合，アンロードとデータロードの実行時に同じ世代番号を指定してください。異なる世代番号を指定してもチェックアウトされないため，指定された世代番号のRDエリア（アンロードを実行したRDエリアとは異なるRDエリア）にデータロードされます。

参考

SDBデータベースが横分割されているため，処理対象のRDエリアが複数ある場合，HiRDB/SDは次に示すチェックを行います。チェックの結果，不一致がある場合，KFPB63306-Eメッセージを出力してリターンコード8でpdsdblodコマンドが終了します。

RDエリアの世代番号のチェック：

このオペランドを指定した場合は，指定した世代番号のRDエリアがあるかどうかをチェックします。レコードが格納されているRDエリアとインデクスが格納されているRDエリアの世代番号をチェックします。

このオペランドを省略した場合は，レコードが格納されているRDエリアとインデクスが格納されているRDエリアのカレントRDエリアの世代番号が同じかどうかをチェックします。

RDエリアのレプリカステータスのチェック：

処理対象のRDエリアにカレントRDエリアとカレントRDエリア以外が混在していないか，各RDエリアのレプリカステータスをチェックします。

12.3.2　load文

load文には，入力データをデータベースに格納するときの情報や処理条件を指定します。

なお，load文は，index文と同時に指定できません。

指定形式（データロードの場合）

 load

      type = ｛tree｜single｝

      record = レコード型名

    〔server = バックエンドサーバ名〕

    〔area = 処理対象のRDエリア名〕

      data = 入力データファイル名

    〔storinf = 実行結果ファイル名〕

    〔errdata =｛（論理エラー情報ファイル名〔，出力件数の上限〕）
                 ｜論理エラー情報ファイル名｝〕

      prefix = プリフィクス部の長さ

    〔idxmode = ｛create｜sync〕

    〔seqkeyck = ｛yes｜no｝〕

    〔dupkeyck = ｛yes｜no｝〕

指定形式（フォーマットライトの場合）

 load

      write = use

      record = レコード型名

    〔server = バックエンドサーバ名〕

    〔area = 処理対象のRDエリア名〕

    〔storinf = 実行結果ファイル名〕

    〔idxmode = ｛create｜sync〕

●type = ｛tree｜single｝　【データロード限定オペランド】

入力データファイルの種類を指定します。

tree：入力データファイルが木構造ファイルの場合に指定します。

single：入力データファイルが単純階層ファイルの場合に指定します。

4V FMBまたはSD FMBのSDBデータベースの場合はtreeを，4V AFMのSDBデータベースの場合はsingleを指定してください。

●write = use　【フォーマットライト限定オペランド】

フォーマットライトを実行する場合に指定します。

environment文のpurgeオペランドにnoを指定するか，または省略した場合，このオペランドは指定できません。

●record = レコード型名

〜＜識別子＞((1〜30バイト))

データロードまたはフォーマットライトを実行するレコードのレコード型名を指定します。SDBデータベース定義のRECORD句に指定したレコード型名を指定します。

4V FMBまたはSD FMBのSDBデータベースの場合は，ルートレコードのレコード型名を指定してください。4V AFMのSDBデータベースの場合は，仮想ルートレコードのレコード型名を指定してください。

●server = バックエンドサーバ名

〜＜識別子＞((1〜8バイト))

データロードまたはフォーマットライトの処理対象RDエリアを管理しているバックエンドサーバの名称を指定します。

英大文字と英小文字の指定が区別されます。

このオペランドは，次に示す条件をすべて満たす場合に指定してください。

SDBデータベースを横分割している場合

BES内の全対象RDエリアに対して，一括でデータロードまたはフォーマットライトを実行する場合

上記の条件を満たさない場合は，このオペランドを省略してもかまいません。

●area = 処理対象のRDエリア名

〜＜識別子＞((1〜30バイト))

SDBデータベースが横分割されている場合，RDエリア単位にデータロードまたはフォーマットライトを実行するときにこのオペランドを指定します。

例えば，次に示すようにSDBデータベースが横分割されている場合，このオペランドにRDAREA01を指定すると，RDAREA01にレコードが格納され，RDAREA03にインデクスが格納されます。

《インナレプリカ機能使用時の注意事項》

レプリカRDエリアに対してデータロードまたはフォーマットライトを実行する場合，このオペランドにはオリジナルRDエリア名を指定してください。そして，environment文のgenerationオペランドに，処理対象RDエリアの世代番号を指定してください。

●data = 入力データファイル名　【データロード限定オペランド】

〜＜パス名＞((1〜1,023バイト))

入力データファイル名を絶対パスで指定します。

入力データファイルは，処理対象RDエリアがあるサーバマシンに格納してください。そのサーバマシンのパス名を指定します。

《注意事項》

このオペランドに指定するファイルを格納するディレクトリの実行権限，読み込み権限，および書き込み権限をHiRDB管理者に対して付与してください。権限がない場合，pdsdblodコマンドがエラーになります。

参考

入力データファイルの入出力時に使用されるバッファ長は，システム定義のpd_utl_file_buff_sizeオペランドの値が適用されます。

●storinf = 実行結果ファイル名

〜＜パス名＞((1〜1,023バイト))

pdsdblodコマンドの処理が完了すると，実行結果が実行結果ファイルに出力されます。このオペランドには，実行結果ファイルの名称を絶対パスで指定します。実行結果ファイルは，処理対象RDエリアがあるサーバマシンに作成されます。

このオペランドを省略した場合，次に示すどれかのディレクトリ下に実行結果ファイルが作成されます（優先順位は1の指定がいちばん上位です）。

システム定義のpd_tmp_directoryオペランドに指定したディレクトリ

環境変数TMPDIRに指定したディレクトリ

/tmpディレクトリ

実行結果ファイルの名称はSDBLOD-xxxxxxxxxになります。xxxxxxxxxは，ファイル作成時間，プロセスIDなどが含まれた文字列になります。作成されたファイルの名称はKFPB63030-Iメッセージで確認できます。

《注意事項》

このオペランドに指定するファイルのディレクトリは事前に作成しておいてください。また，作成したディレクトリの実行権限，読み込み権限，および書き込み権限をHiRDB管理者に対して付与してください。ディレクトリがない場合，または権限がない場合は，pdsdblodコマンドがエラーになります。

このオペランドに指定したファイルがすでに存在する場合，そのファイルは上書きされます。

実行結果ファイルに出力される情報については，「12.7　実行結果ファイルの出力形式」を参照してください。

●errdata =｛（論理エラー情報ファイル名〔，出力件数の上限〕）｜論理エラー情報ファイル名｝　【データロード限定オペランド】

論理エラー情報の出力先と，出力件数の上限を指定します。このオペランドを省略した場合，論理エラー情報は出力されません。

論理エラー情報ファイル名：

〜＜パス名＞((1〜1,023バイト))

論理エラー情報ファイル名を絶対パスで指定します。入力データの論理エラーが発生した場合，ここで指定したファイルに論理エラー情報が出力されます。論理エラー情報ファイルは，処理対象のRDエリアがあるサーバマシンに作成されます。

出力件数の上限：

〜＜符号なし整数＞((1〜4,294,967,295))《100》

論理エラー情報の出力件数の上限を指定します。論理エラー情報の件数が，このオペランドの指定値を超えても処理は継続されますが，論理エラー情報は指定した件数までしか出力されません。

《注意事項》

このオペランドに指定するファイルのディレクトリは事前に作成しておいてください。また，作成したディレクトリの実行権限，読み込み権限，および書き込み権限をHiRDB管理者に対して付与してください。ディレクトリがない場合，または権限がない場合は，pdsdblodコマンドがエラーになります。

このオペランドに指定したファイルがすでに存在する場合，そのファイルは上書きされます。

●prefix = プリフィクス部の長さ　【データロード限定オペランド】

〜＜符号なし整数＞((0〜32,767))（単位：バイト）

入力データのレコードのプリフィクス部の長さをバイト単位で指定します。プリフィクス部がない場合は0を指定してください。

入力データのプリフィクス部については，「12.6.1(3)　プリフィクス部【4V FMB，4V AFM】」で説明されているL1の値を参照して，このオペランドに指定します。

●idxmode = ｛create｜sync｝

インデクスの作成モードを指定します。

create：インデクス一括作成モードでインデクスを作成します。

sync：インデクス更新モードでインデクスを作成します。

●seqkeyck = ｛yes｜no｝　【データロード限定オペランド】

シーケンシャルインデクスが定義されているデータベースに対して，キー値の順番をチェックするかどうかを指定します。4V FMBまたはSD FMBのSDBデータベースにデータロードする場合にこのオペランドの指定を検討してください。

yes：

キー値の順番をチェックします。この場合，キー値が順番に並んでいるレコードだけがデータベースに格納されます。キー値が順番に並んでいないレコードは論理エラーとなり，データベースに格納されません。

no：

キー値の順番をチェックしません。この場合，キー値の順番に関係なく，すべてのレコードがデータベースに格納されます。

yesを指定するとキー値の順番が保証されるため，次に示すメリットがあります。

各インデクスページにインデクスキーが均等に配分されるため，インデクスを使用した検索処理時間のばらつきが少なくなります。

キー値の順番にレコードがデータページ上に格納されるため，キー順に検索する場合，グローバルバッファのヒット率が向上します。

ただし，yesを指定した場合，順番のチェック処理の分だけ，データロードまたはフォーマットライトの処理時間が長くなります。したがって，キー値の順番が保証されている入力データの場合はnoを指定してください。

《注意事項》

シーケンシャルインデクスのデータ型がPACKED DECIMAL FIXEDの場合，DECIMAL型の符号正規化機能を使用しない環境下では，次のチェック条件となります。

・符号が0xCと0xFで異なる場合でも同じデータとして扱います。

・＋0（0x0c）と−0（0x0d）は違うデータと見なし，＋0は−0より大きいデータとして扱います。

4V AFMのSDBデータベースの場合，親レコード型に対する入力データの作成が不要のため，このオペランドの指定に関係なく順番のチェックは行われません。

SDBデータベース定義のORDER句にSORTED DUPLICATES PROHIBITEDを指定した子レコード型に対する順番のチェックは，このオペランドの指定に関係なく実施されます。入力データのユーザキーは，KEY句で指定した順序（ASCENDINGは昇順，DESCENDINGは降順）で作成してください。並び順が不正な場合，論理エラーになります。

●dupkeyck = ｛yes｜no｝　【データロード限定オペランド】

インデクス一括作成モードを指定した場合，入力データファイルのルートレコードに対し，SDBデータベースに格納されているレコードのキー重複チェックをするかどうかを指定します。4V FMBまたはSD FMBのSDBデータベースにデータロードをする場合は，このオペランドの指定を検討してください。

yes：

キー値の重複をチェックします。キー値が重複していないレコードだけがSDBデータベースに格納されます。キー値が重複しているレコードは論理エラーとなり，SDBデータベースに格納されません。

no：

キー値の重複をチェックしません。キー値の重複に関係なく，すべてのレコードがSDBデータベースに格納されます。

yesを指定すると，同じキー値のシーケンシャルインデクスの格納を防げます。ただし，yesを指定した場合，重複チェック処理の分だけ，追加データロードの処理時間が長くなります。したがって，キー値の重複がないことが保証されている入力データの場合は，このオペランドにnoを指定してください。

なお，インデクス一括作成モードのときにこのオペランドにnoを指定した場合，同じインデクスキーであってもチェックされません。この場合，インデクスの一括作成時にキー重複エラーが発生し，インデクス不整合となるため注意してください。

《注意事項》

4V AFMのSDBデータベースの場合，このオペランドの指定は無視されます。

4V FMBまたはSD FMBのSDBデータベースのインデクス更新モードの場合，yesが仮定されます。

environment文のpurgeオペランドにyesを指定した場合，noが仮定されます。

12.3.3　dbinf文【4V FMB，4V AFM】

dbinf文には，入力データの各レコードのプリフィクス部に格納されているUSERポインタフラグ，ページ切り替えフラグ，および事前割り当てページ数の位置を指定します。dbinf文は次に示す場合に指定します。

4V FMBのSDBデータベースの場合

USERポインタを使って親子集合を対応させる場合

ページ切り替え，またはサブページ切り替えを行いながらデータロードする場合

事前ページ割り当てを行いながらデータロードする場合

4V AFMのSDBデータベースの場合

ページ切り替え，またはサブページ切り替えを行いながらデータロードする場合

ページ切り替え，またはサブページ切り替えを行いながらフォーマットライトする場合

SD FMBのSDBデータベースの場合，dbinf文は指定できません。

《規則》

dbinf文は，index文と同時に指定できません。

指定形式（4V FMBのSDBデータベースの場合）

 dbinf

     〔userpflg = （USERポインタフラグの開始位置）〕

     〔pagecflg = （ページ切り替えフラグの開始位置）〕

     〔pagenum  = （事前割り当てページ数の開始位置）〕

指定形式（4V AFMのSDBデータベースのデータロードの場合）

 dbinf

      〔pagecflg = （ページ切り替えフラグの開始位置）〕

指定形式（フォーマットライトの場合）

 dbinf

      〔pagecflg = ｛change｜occupation｝〕

●userpflg = （USERポインタフラグの開始位置）　【4V FMB限定オペランド】

〜＜符号なし整数＞((0〜32,766))

入力データの各レコードのプリフィクス部に格納されているUSERポインタフラグの開始位置を指定します。プリフィクス部の先頭を0とし，USERポインタフラグの開始位置を指定してください。

プリフィクス部とUSERポインタフラグの開始位置の関係については，「12.6.1(3)　プリフィクス部【4V FMB，4V AFM】」を参照してください。

●pagecflg = （ページ切り替えフラグの開始位置）　【データロード限定オペランド】

〜＜符号なし整数＞((0〜32,766))

入力データの各レコードのプリフィクス部に格納されているページ切り替えフラグの開始位置を指定します。プリフィクス部の先頭を0とし，ページ切り替えフラグの開始位置を指定してください。

ページ切り替えによる格納配置制御については，「2.6.2(3)　レコード格納時のページ切り替え【4V FMB，4V AFM】」を参照してください。サブページ分割をしている場合は，「2.7.2(3)　レコード格納時のサブページ切り替え【4V FMB，4V AFM】」を参照してください。

プリフィクス部とページ切り替えフラグの開始位置の関係については，「12.6.1(3)　プリフィクス部【4V FMB，4V AFM】」を参照してください。

●pagenum = （事前割り当てページ数の開始位置）　【4V FMBのデータロード限定オペランド】

〜＜符号なし整数＞((0〜32,763))

入力データの各ルートレコードのプリフィクス部に格納されている事前割り当てページ数の開始位置を指定します。プリフィクス部の先頭を0とし，事前割り当てページ数の開始位置を指定してください。指定された開始位置から4バイトを事前割り当てページ数の指定値として扱います。

プリフィクス部と事前割り当てページ数の開始位置の関係については，「12.6.1(3)　プリフィクス部【4V FMB，4V AFM】」を参照してください。

●pagecflg = ｛change｜occupation｝　【4V DAM限定オペランド】

子レコードの格納方法を指定します。このオペランドを指定する際は，「2.6.2(3)　レコード格納時のページ切り替え【4V FMB，4V AFM】」を参照してください。サブページ分割をしている場合は，「2.7.2(3)　レコード格納時のサブページ切り替え【4V FMB，4V AFM】」を参照してください。

change：

フォーマットライトの際，1つの子レコードを1ページに格納します。レコードがあとから追加された際，そのページに追加レコードを格納します。

サブページ分割をしている場合は，フォーマットライトの際，1つの子レコードを1サブページに格納します。レコードがあとから追加された際，そのサブページに追加レコードを格納します。

occupation：

フォーマットライトの際，1つの子レコードを1ページに格納します。そのページ内には，その子レコードだけを格納し，ほかのレコードは格納しません。

サブページ分割をしている場合は，フォーマットライトの際，1つの子レコードを1サブページに格納します。そのサブページ内には，その子レコードだけを格納し，ほかのレコードは格納しません。

12.3.4　index文

インデクスの再作成を実行する場合にindex文を指定します。index文には，再作成するインデクスの情報と処理条件を指定します。

《規則》

index文は制御情報ファイル中に1つだけ指定できます。

index文とload文は，同時に指定できません。

指定形式

 index

     idxremode = recrt

     idxarea = インデクス格納用RDエリア名

     idxname = インデクス名

●idxremode = recrt

インデクスを再作成する際の処理モードを指定します。

recrt：

インデクス再作成モードでインデクスを再作成します。

●idxarea = インデクス格納用RDエリア名

〜＜識別子＞((1〜30バイト))

再作成対象のインデクスが格納されているインデクス格納用RDエリア名を指定します。

●idxname = インデクス名

〜＜識別子＞((1〜30バイト))

再作成対象のインデクス名を指定します。

12.3.5　idxload文

idxload文には，インデクスを作成する際に作成される一時ファイルの出力先を指定します。idxload文は次に示す場合に指定します。

インデクス情報ファイルの出力先を変更する場合

ソート用ワークファイルの出力先，またはソート用バッファサイズを変更する場合

《規則》

idxload文は，次に示す場合に指定が有効になります。

load文のidxmodeオペランドにcreateを指定した場合

index文のidxremodeオペランドにrecrtを指定した場合

参考

idxload文を省略した場合，次に示すどれかのディレクトリ下にインデクス情報ファイル，ソート用ワークファイルが出力されます（優先順位は1の指定がいちばん上位です）。

1.　システム定義のpd_tmp_directoryオペランドに指定したディレクトリ

2.　環境変数TMPDIRに指定したディレクトリ

3.　/tmpディレクトリ

インデクス更新モードでインデクスを作成する場合（load文でidxmode = syncを指定した場合）にidxload文を指定すると，pdsdblodコマンドがエラーになります。

指定形式

 idxload

     〔workdir = インデクス情報ファイルの出力先ディレクトリ〕

     〔sortdir = ソート用ワークファイルの出力先ディレクトリ
             〔，ソート用バッファサイズ〕〕

●workdir = インデクス情報ファイルの出力先ディレクトリ

〜＜パス名＞((1〜1,023バイト))

インデクス情報ファイルの出力先ディレクトリを絶対パスで指定します。

《注意事項》

このオペランドに指定するディレクトリは事前に作成しておいてください。また，作成したディレクトリの実行権限，読み込み権限，および書き込み権限をHiRDB管理者に対して付与してください。ディレクトリがない場合，または権限がない場合は，pdsdblodコマンドがエラーになります。

NFSのディレクトリを指定しないでください。指定した場合，正常に動作しないことがあります。

パス名の長さの上限の1,023バイトには，インデクス情報ファイルの名称長も含んでいます。インデクス情報ファイルの名称規則については，「12.9.1(2)　注意事項」を参照してください。

●sortdir = ソート用ワークファイルの出力先ディレクトリ〔，ソート用バッファサイズ〕

一時的に作成されるソート用ワークファイルの出力先ディレクトリと，ソート処理で使用するソート用バッファサイズを指定します。

ソート用ワークファイルの出力先ディレクトリ

〜＜パス名＞((1〜1,023バイト))

ソート用ワークファイルの出力先ディレクトリを絶対パスで指定します。

《注意事項》

このオペランドに指定するディレクトリは事前に作成しておいてください。また，作成したディレクトリの実行権限，読み込み権限，および書き込み権限をHiRDB管理者に対して付与してください。ディレクトリがない場合，または権限がない場合は，pdsdblodコマンドがエラーになります。

NFSのディレクトリを指定しないでください。指定した場合，正常に動作しないことがあります。

ソート用バッファサイズ

〜＜符号なし整数＞((128〜2,000,000))《1,024》（単位：キロバイト）

ソート処理で使用するソート用バッファサイズをキロバイト単位で指定します。指定値の目安を次に示します。

メモリに余裕がない場合や，ほとんどのレコードがインデクスキー順に並んでいる場合は，デフォルト値でpdsdblodコマンドを実行してください。

基本的にバッファサイズを大きくするほど性能向上が見込まれます。

このオペランドの指定値の見積もり式を次に示します。

A：Ｒ＋key＋76

B：Ｒ＋key＋124

C：key＋2292

n：レコード件数

R：key＋10

key：インデクスのキー長の最大値

インデクスのキー長については，「3.5.5(8)　インデクスを格納するページ数の見積もり」を参照してください。

12.3.6　oreload文【4V FMB】

oreload文には，追い付き反映キー対応表の中間ファイルの格納ディレクトリ名を指定します。oreload文は，更新可能なオンライン再編成を実行する場合に指定してください。

4V AFMまたはSD FMBのSDBデータベースの場合，oreload文は指定できません。

《規則》

environment文のpurgeオペランドにnoを指定するか，または省略した場合，oreload文は指定できません。

oreload文は，index文と同時に指定できません。

指定形式

 oreload

    〔midfile＝追い付き反映キー対応表の中間ファイル名〕

●midfile＝追い付き反映キー対応表の中間ファイル名

〜＜パス名＞((1〜1,023バイト))

追い付き反映キー対応表の中間ファイルを格納するファイル名を，絶対パス名で指定します。このオペランドを省略した場合，次の名称の中間ファイルが作成されます。

SDBLOD-ORE-ファイル作成時間-プロセスID

このオペランドを省略した場合，次に示すどれかのディレクトリ下に中間ファイルが作成されます（優先順位は1の指定がいちばん上位です）。

システム定義のpd_tmp_directoryオペランドに指定したディレクトリ

環境変数TMPDIRに指定したディレクトリ

/tmpディレクトリ

中間ファイルの容量見積もりについては，「3.6.1(1)　HiRDB/SDデータベース作成ユティリティ（pdsdblod）実行時のファイルの容量」を参照してください。

参考

中間ファイルの入出力時に使用されるバッファ長は，システム定義のpd_utl_file_buff_sizeオペランドの値が適用されます。

《注意事項》

このオペランドに指定するディレクトリは事前に作成しておいてください。また，作成したディレクトリの実行権限，読み込み権限，および書き込み権限をHiRDB管理者に対して付与してください。ディレクトリがない場合，または権限がない場合は，pdsdblodコマンドがエラーになります。

データロードの対象RDエリアがオンライン再編成閉塞でない場合にoreload文を指定すると，pdsdblodコマンドがエラーになります。

追い付き反映キー対応表の登録処理が正常終了した場合，中間ファイルは自動的に削除されます。登録処理がエラーとなった場合，中間ファイルは削除されないため，必要に応じて削除してください。作成された中間ファイルの名称は，KFPB63041-Iメッセージで確認できます。

12.3.7　pdsdblod制御文の各オペランドの指定可否

pdsdblod制御文の各オペランドの指定可否（4V FMBおよび4V AFMのSDBデータベースの場合）と，pdsdblod制御文の各オペランドの指定可否（SD FMBのSDBデータベースの場合）を，以下のそれぞれの表に示します。

表12‒5　pdsdblod制御文の各オペランドの指定可否（4V FMBおよび4V AFMのSDBデータベースの場合）

項番

オペランド

操作

備考

データロード

フォーマットライト

インデクスの再作成

4V FMB

4V AFM

4V DAM

4V FMB

4V AFM

1

environment文

schema

○

○

○

○

○

environment文は必ず指定してください。

2

logmode

○

○

○

○

○

3

purge

△

△

△

×

×

4

exectime

△

△

△

△

△

5

recnomsg

△

△

△

×

×

6

infmsglvl

△

△

△

△

△

7

recfree

△

△

△

×

×

8

divermsg

△

△

×

×

×

9

generation

△

△

△

△

△

10

load文

type

○

○

×

×

×

データロードを実行する場合，load文は必ず指定してください。

11

write

△

△

○

×

×

12

record

○

○

○

×

×

13

server

△

△

△

×

×

14

area

△

△

△

×

×

15

data

○

○

×

×

×

16

storinf

△

△

△

×

×

17

errdata

△

△

×

×

×

18

prefix

○

○

×

×

×

19

idxmode

△

△

△

×

×

20

seqkeyck

△

△

×

×

×

21

dupkeyck

△

△※

△※

×

×

22

dbinf文

userpflg

△

×

×

×

×

親子集合を対応させる場合，またはページ切り替えをする場合にdbinf文を指定します。

23

pagecflg

△

△

△

×

×

24

pagenum

△

×

×

×

×

25

index文

idxremode

×

×

×

○

○

インデクス再作成機能を実行する場合，index文は必ず指定してください。

26

idxarea

×

×

×

○

○

27

idxname

×

×

×

○

○

28

idxload文

workdir

△

△

△

△

△

インデクス一括作成モードでインデクスを作成する場合にidxload文の指定を検討してください。

29

sortdir

△

△

△

△

△

30

oreload文

midfile

△

×

×

×

×

更新可能なオンライン再編成を実行する場合に指定します。

（凡例）

○：必ず指定するオペランドです。

△：指定を検討するオペランドです。

×：指定不要なオペランドです。

注※

オペランドを指定しても，指定は無視されます。

表12‒6　pdsdblod制御文の各オペランドの指定可否（SD FMBのSDBデータベースの場合）

項番

オペランド

操作

備考

データロード

インデクスの再作成

SD FMB

SD FMB

1

environment文

schema

○

○

environment文は必ず指定してください。

2

logmode

○

○

3

purge

△

×

4

exectime

△

△

5

recnomsg

△

×

6

infmsglvl

△

△

7

recfree

△

×

8

divermsg

△

×

9

generation

△

△

10

load文

type

○

×

データロードを実行する場合，load文は必ず指定してください。

11

write

△

×

12

record

○

×

13

server

△

×

14

area

△

×

15

data

○

×

16

storinf

△

×

17

errdata

△

×

18

prefix

○

×

19

idxmode

△

×

20

seqkeyck

△

×

21

dupkeyck

△

×

22

dbinf文

userpflg

×

×

SD FMBのSDBデータベースの場合，dbinf文は指定できません。

23

pagecflg

×

×

24

pagenum

×

×

25

index文

idxremode

×

○

インデクス再作成機能を実行する場合，index文は必ず指定してください。

26

idxarea

×

○

27

idxname

×

○

28

idxload文

workdir

△

△

インデクス一括作成モードでインデクスを作成する場合にidxload文の指定を検討してください。

29

sortdir

△

△

30

oreload文

midfile

×

×

SD FMBのSDBデータベースの場合，oreload文は指定できません。

（凡例）

○：必ず指定するオペランドです。

△：指定を検討するオペランドです。

×：指定不要なオペランドです。

12.3.8　pdsdblod制御文の記述規則

pdsdblod制御文の記述規則を次の表に示します。

表12‒7　pdsdblod制御文の記述規則

項目

記述規則

pdsdblod制御文の構成

pdsdblod制御文は，pdsdblod制御文の種類や定義句を表すキーワードとユーザ指定値から成ります。

1つのpdsdblod制御文内のキーワードとキーワードの間は，区切り文字で区切ります。

ただし，これらの位置に，分離記号または囲み文字がある場合，区切り文字を省略できます。

1行の長さ

1行の長さに制限はありません。また，改行位置は任意です。

ただし，制御文ファイルのファイルサイズが大き過ぎるとpdsdblodコマンドがエラーとなることがあります。このため，大量の空白行などは含めないようにしてください。

改行コード

改行コードには次の文字を指定できます。

NL（X'0a'）

CR＋NL（X'0d'＋X'0a'）

分離記号

分離記号は，キーワードとユーザ指定値，またはユーザ指定値とユーザ指定値を区切る文字です。分離記号には次の文字を指定できます。

=（X'3d'）

,（X'2c'）

(（X'28'）

)（X'29'）

区切り文字

区切り文字には次の文字を指定できます。

空白（X'20'）

タブ（X'09'）

NL（X'0a'）

CR（X'0d'）

区切り文字を挿入してもよい位置

区切り文字を挿入してもよい位置を次に示します。

区切り文字および分離記号の前後で，かつ区切り文字の挿入が禁止されていない位置

区切り文字を挿入してはいけない位置

区切り文字を挿入してはいけない位置を次に示します。

キーワードの中

引用符（"）で囲まれていないユーザ指定値の中

数値の中

引用符（"）で囲まれたユーザ指定値の中の区切り文字および分離記号はユーザ指定値として扱われます。

囲み文字

囲み文字には次の文字を指定します。

"（X'22'）

コメントの記述

pdsdblod制御文中にコメントは記述できません。

パス名

パス名に空白は指定できません。

パス名の指定はOSの規則に従う必要があります。OSの規則に従っていない場合は，オペランドの指定規則内であってもシステムコールエラーとなることがあります。

識別子

空白を含む場合は，引用符（"）で囲んでください。

引用符（"）で囲んだ場合，半角英大文字と半角英小文字が区別されます。引用符（"）で囲まない場合，半角英小文字は半角英大文字として扱われます。

12.4　規則および注意事項

pdsdblodコマンド実行時の規則および注意事項について説明します。

12.4.1　規則

(1)　pdsdblodコマンドの実行条件

pdsdblodコマンドは，HiRDBが稼働中のときだけ実行できます。

pdsdblodコマンドは，システムマネジャがあるサーバマシンで実行してください。

pdsdblodコマンドの実行時には，次のサーバが稼働している必要があります。

システムマネジャ

1つ以上のフロントエンドサーバ

ディクショナリサーバ

データロードまたはフォーマットライト対象のRDエリアを管理しているバックエンドサーバ

RDエリアの状態がpdsdblodコマンドの実行条件を満たしていない場合，pdsdblodコマンドはエラーになります。この場合，「付録I.1　RDエリアの状態によるユティリティの実行可否」を参照して，RDエリアの状態を変更してください。

SDBディレクトリ情報が常用常駐領域に常駐化されていないと，pdsdblodコマンドが実行できません。また，全ユニットの常用常駐領域中のSDBディレクトリ情報が一致している必要があります。

(2)　コマンドの実行者

pdsdblodコマンドを実行する際，CONNECT権限が必要になります。

(3)　コマンド実行前の作業

入力データファイルを準備し，処理対象のRDエリアがあるサーバマシンに格納してください。

クライアント環境定義のPDUSERオペランドにpdsdblodコマンドの実行ユーザの認可識別子とパスワードを指定してください。

このとき，OSログインユーザの簡易認証機能は使用できません。

pdsdblod制御文を指定した制御文ファイルを準備し，システムマネジャがあるサーバマシンに格納してください。また，制御文ファイルを格納するディレクトリに対する実行権限，読み込み権限，および書き込み権限をpdsdblodコマンドの実行ユーザに付与してください。

pdsdblod制御文のオペランドに指定するディレクトリ（実行結果ファイルを格納するディレクトリなど）は事前に作成しておいてください。また，作成したディレクトリの実行権限，読み込み権限，および書き込み権限をHiRDB管理者に付与してください。

PDDIR，PDCONFPATH，およびLANG環境変数が正しく設定されているかを確認してください。

pdsdblodコマンドを実行する前に，pdsdbarc -aコマンドでSDBディレクトリ情報に関する情報を表示し，全ユニットの常用常駐領域のSDBディレクトリ情報が一致しているかどうかを確認してください。

インデクス情報を作成するために，データロードまたはフォーマットライトの処理中に次に示すファイルが一時的に作成されます。

インデクス情報ファイル

ソート用ワークファイル

これらのファイルは，インデクスを格納するRDエリアがあるサーバマシン上に作成されます。レコード件数に比例して上記のファイル容量も大きくなるため，大量のレコードをデータロードする場合は，ディスクの空き容量を確認するようにしてください。上記ファイルの容量見積もり式については，「3.6.1(1)　HiRDB/SDデータベース作成ユティリティ（pdsdblod）実行時のファイルの容量」を参照してください。

なお，上記ファイルはデータロードまたはフォーマットライトが正常に終了すると，自動的に削除されます。

また，性能面に大きな影響を及ぼすソート用バッファサイズを指定することを推奨します。pdsdblod制御文のidxload文のsortdirオペランドでソート用バッファサイズを指定します。

参考

インデクス情報ファイル，ソート用ワークファイルの出力先ディレクトリは，次に示す優先順位に従って決まります。1の指定がいちばん優先順位が高くなります。

pdsdblod制御文のidxload文で指定した出力先ディレクトリ

システム定義のpd_tmp_directoryオペランドに指定した出力先ディレクトリ

環境変数TMPDIRに指定したディレクトリ

/tmpディレクトリ

(4)　推奨する運用方法

pdsdblodコマンドを実行する前に，処理対象のRDエリアをpdholdコマンドで閉塞することを推奨します。

参考

pdsdblodコマンドの実行中は処理対象のRDエリアにアクセスできません。UAPやほかのコマンドがアクセスしようとした場合，排他待ち状態になり，排他待ち時間のタイムアウトまでUAPやコマンドにエラーが返りません。pdholdコマンドでRDエリアを閉塞しておくと，UAPやほかのコマンドがRDエリアにアクセスしたときにすぐにエラーが返ります。

pdsdblod制御文のenvironment文のpurgeオペランドにyesを指定すると，既存の格納レコードが削除されてから，データロードまたはフォーマットライトが実行されます。なお，レコードが格納されていないときにpurgeオペランドにyesを指定してもエラーにはなりません。

(5)　インデクスを再作成する際のpdsdblodコマンドの同時実行可否

次のどちらかの条件を満たす場合は，複数のpdsdblodコマンドを同時に実行してインデクスを再作成することができます。

処理対象のSDBデータベースが異なる場合

処理対象のインデクスがあるBESが異なる場合

なお，処理対象となるインデクスが同一BESにある場合でも，処理対象となるインデクスのルートレコード型が異なるデータ格納用RDエリアに格納されているときは，複数のpdsdblodコマンドを同時に実行してインデクスを再作成できます。

処理対象となるインデクスのルートレコード型が同じデータ格納用RDエリアに格納されている場合は，pdsdblodコマンドを同時に実行してインデクスを再作成することはできません。

pdsdblodコマンドの同時実行可否の例を次に示します。この例では，同一BES内に，ルートレコード型を格納したRDエリア1とRDエリア2があるとします。このときのpdsdblod【1】とpdsdblod【2】が同時実行できるかどうかを説明しています。

実行するコマンド

再作成対象のインデクス

ルートレコード型を格納しているRDエリア

pdsdblodコマンドの同時実行可否

pdsdblod【1】

pdsdblod【2】

インデクス1

インデクス1

RDエリア1

RDエリア1

×

pdsdblod【1】

pdsdblod【2】

インデクス1

インデクス2

RDエリア1

RDエリア1

×

pdsdblod【1】

pdsdblod【2】

インデクス1

インデクス1

RDエリア1

RDエリア2

○

pdsdblod【1】

pdsdblod【2】

インデクス1

インデクス2

RDエリア1

RDエリア2

○

（凡例）

○：pdsdblodコマンドを同時実行してインデクスを再作成できます。

×：pdsdblodコマンドを同時実行できません。

12.4.2　注意事項

pdsdblodコマンドの実行中にシンクポイントダンプは取得されません。そのため，pdsdblodコマンドの実行中にHiRDBが異常終了すると，HiRDBの再開始に掛かる時間が長くなります。したがって，UAPやほかのコマンドの実行数が少ない時間帯にpdsdblodコマンドを実行してください。

標準出力または標準エラー出力へのメッセージ出力が抑止されている環境でpdsdblodコマンドを実行しないでください。pdsdblodコマンドの実行中，標準出力に経過メッセージが出力されます。また，エラーの発生時には，標準エラー出力にエラーメッセージが出力されます。そのため，標準出力または標準エラー出力へのメッセージ出力が抑止されている環境でpdsdblodコマンドを実行した場合，メッセージの出力待ちでpdsdblodコマンドが無応答状態になったり，pdsdblodコマンドが異常終了したりするおそれがあります。

なお，標準出力および標準エラー出力に出力するメッセージの順番や数は，メッセージログファイルやsyslogfileに出力されるメッセージの順番や数と一致しないことがあります。メッセージの順番や数を正確に把握したい場合は，メッセージログファイルまたはsyslogfileに出力されたメッセージを確認してください。

システム共通定義のpd_dec_sign_normalizeオペランドにYを指定している場合（DECIMAL型の符号正規化機能を使用する場合），データロード時にPACKED DECIMAL FIXED型の符号部が変換規則に従って変換されます。符号部の変換規則については，「12.4.3(1)　符号部に関する注意事項（符号部の変換規則）」を参照してください。

インデクス一括作成モードでデータロードまたはフォーマットライトする場合，1回のpdsdblodコマンドの実行でインデクス情報ファイルが7,001個以上同時にオープンされるとエラーになります。このとき，KFPA63003-Eメッセージが出力されます。

同時にオープンされるインデクス情報ファイル数は，SDBデータベースに定義されたインデクス数とRDエリアの横分割数に比例します。例えば，2つのインデクスが定義されていて，RDエリア1〜RDエリア3に横分割されている場合，同時にオープンされるインデクス情報ファイル数は，2（インデクス数）×3（RDエリアの横分割数※1）＝6になります※2。

インデクス情報ファイル数が7,001個以上になる場合は，load文のareaオペランドを指定して，RDエリア単位のデータロードまたはフォーマットライトを複数回実行するようにしてください。

注※1

サーバ間横分割されている場合は，バックエンドサーバ内でのRDエリアの横分割数となります。

注※2

計算結果が7,001個以上の場合でも，実際に同時にオープンされるインデクス情報ファイル数が7,000個以下になることがあります。この場合，エラーにはなりません。

pdsdblodコマンドをキャンセルする場合は，pdcancelコマンドを実行してください。pdsdblodコマンドのキャンセルに，OSのkillコマンドを使用しないでください。killコマンドでpdsdblodコマンドをキャンセルすると，ユニットが異常終了するおそれがあります。

OSがサポートしていない文字コードは使用できません。pdsdblod制御文にASCIIコード以外の文字がある場合は，pdsdblod制御文に記述する文字コード，LANG環境変数に設定した文字コード，およびpdsetupコマンドで指定した文字コードを合わせる必要があります。文字コードが合っていない場合は，pdsdblodコマンドがエラーになることがあります。

■pdsdblodコマンドとpdloadコマンドの仕様差について（参考）

データロードを実行する次の2つのコマンドは，コマンドの実行時にサーバ名とRDエリア名を指定しますが，指定の組み合わせが同じであっても，コマンドの実行可否が異なることがあります。

SDBデータベースに対するデータロードを実行するpdsdblodコマンド

表に対するデータロードを実行するpdloadコマンド

例えば，横分割しているSDBデータベースにデータロードする場合，pdsdblodコマンドの実行時にサーバ名（serverオペランド）を指定してRDエリア名（areaオペランド）を省略すると，エラーになります。一方，横分割している表にデータロードする場合，pdloadコマンドの実行時にサーバ名（source文）を指定してRDエリア名（source文）を省略してもエラーになりません。各コマンドのオプション，制御文の説明を確認してからデータロードを実行するようにしてください。pdloadコマンドについては，マニュアル「HiRDB Version 9 コマンドリファレンス」を参照してください。

12.4.3　メインフレームで使用していたデータをデータロードする場合の注意事項

メインフレームで使用していた符号付きパック形式のデータをデータロードする場合の注意事項を説明します。

(1)　符号部に関する注意事項（符号部の変換規則）

符号付きパック形式（HiRDB/SDのPACKED DECIMAL FIXED型）の符号部の仕様がメインフレームとHiRDB/SDで異なります。仕様差を次の表に示します。

表12‒8　メインフレームとHiRDB/SDの符号付きパック形式の符号部の仕様差

符号部

メインフレームの仕様

HiRDB/SDの仕様

データロード時に変換される値

X'A'

正の値を意味します。

−

X'C'

X'B'

負の値を意味します。

−

X'D'

X'C'

正の値を意味します。

正の値を意味します。

変換されません。

X'D'

負の値を意味します。

負の値を意味します。

変換されません。

X'E'

正の値を意味します。

−

X'C'

X'F'

正の値を意味します。

正の値を意味します。

X'C'

（凡例）

−：不正な値と見なし，エラーとします。

上記の表に示すように符号部の仕様に差があるため，データロード時に符号部が変換されます。ただし，符号部が変換されるのは，システム共通定義のpd_dec_sign_normalizeオペランドにYを指定した場合に限ります。そのため，データロードを実行する前に，pd_dec_sign_normalizeオペランドにYが指定されているか確認してください。

注意事項

pd_dec_sign_normalizeオペランドにYを指定しないでデータロードした場合，符号部が変換されない状態でデータベースに格納されます。この状態でデータを検索，更新した場合，検索結果が正しく返らなかったり，データベースが破壊されたりすることがあります。

(2)　精度に関する注意事項

精度（全体の桁数）が偶数の場合，PACKED DECIMAL FIXED型のデータの先頭4ビットがB'0000'である必要があります。メインフレームでDECIMAL型のデータの先頭4ビットがB'0000'でないデータを使用していた場合は，先頭4ビットを0クリアしてからデータロードしてください。

なお，精度が奇数の場合は，先頭4ビットの0クリアは必要ありません。

12.5　リターンコード

pdsdblodコマンドのリターンコードの意味および対処を次の表に示します。

表12‒9　pdsdblodコマンドのリターンコードの意味および対処

リターンコード

意味

対処

0

pdsdblodコマンドが正常終了しました。

なし。

4

pdsdblodコマンドの処理（データロードまたはフォーマットライト）が完了しました。ただし，警告レベルのエラーが発生しました。

出力されたメッセージを参照して，メッセージの対処に従ってください。

更新可能なオンライン再編成の場合は，「5.22　障害が発生したときの対処方法（pdsdblodコマンドの異常終了時）」を参照して対処してください。

データロードは完了しましたが，入力データに論理エラーがありました。

「12.8　入力データの論理エラーが発生したときの対処方法」を参照して対処してください。

8

pdsdblod制御文のオペランドの指定に誤りがあるため，pdsdblodコマンドが実行できませんでした。

出力されたメッセージを参照して，pdsdblod制御文のオペランドの指定を見直してください。

12

処理が続行できないエラーが発生し，pdsdblodコマンドが異常終了しました。

「12.9.1　pdsdblodコマンドが異常終了した場合」を参照して対処してください。

12.6　入力データファイルの形式

データロードをする前に，データベースに格納するレコードを格納したバイナリ形式の入力データファイルを準備しておく必要があります。ここでは，入力データファイルの形式について説明します。

12.6.1　レコードのデータ形式

入力データファイル中に格納するレコードのデータ形式を次の図に示します。この図に示すデータ形式に従って入力データを作成してください。

図12‒4　レコードのデータ形式

（凡例）

L1：プリフィクス部の長さで，0〜32,767バイトになります。

L2：SDBデータベース定義で定義した全構成要素サイズの合計長になります。

注意事項

HiRDB/SDはエンディアンおよび文字コード変換を行わないため，入力データ中の数値データはOSのエンディアンおよび文字コードに合わせてください。

レコード内の各項目について説明します。

(1)　レコード長

次に示す計算式で求めたレコード長（単位：バイト）を格納してください。

レコード長＝4＋30＋L1＋L2

(2)　レコード型名

レコードのレコード型名を格納してください。左詰めで格納し，余った部分にはスペースを格納してください。

(3)　プリフィクス部【4V FMB，4V AFM】

プリフィクス部には，親子集合型の情報を格納してください。ここには，USERポインタフラグ，ページ切り替えフラグ，および事前割り当てページ数の情報を格納します。プリフィクス部のデータ形式の例を次の図に示します。

図12‒5　プリフィクス部のデータ形式の例

この例では，USERポインタフラグ，ページ切り替えフラグ，事前割り当てページ数の順でプリフィクス部を構成していますが，指定順序に制約はありません。

また，USERポインタフラグ，ページ切り替えフラグ，事前割り当てページ数のすべてを指定する必要はありません。必要な情報だけでプリフィクス部を構成しても問題ありません。USERポインタフラグ，ページ切り替えフラグ，事前割り当てページ数のすべてが必要ない場合は，プリフィクス部を作成する必要はありません。

プリフィクス部を指定する場合の規則を次に示します。

各オペランドに指定した開始位置の情報を格納する領域の長さが重ならないように指定してください。

load文のprefixオペランドに指定されたプリフィックス長の範囲内で指定してください。

(a)　USERポインタフラグに設定する値【4V FMB】

USERポインタフラグに設定する値を次の表に示します。

表12‒10　USERポインタフラグに設定する値

項番

設定値

説明

1

C'U'

4V FMBのSDBデータベースでUSERポインタを定義している場合にUSERポインタフラグを設定します。そのほかの場合に設定しても，設定は無効になります。

左記に示す値を子レコードに設定した場合，親レコードがUSERポインタを持つという意味になります。複数の子レコードにUSERポインタフラグを設定した場合，最後の子レコードに設定したUSERポインタフラグが有効になります。

2

上記以外

無視されます。

(b)　ページ切り替えフラグに設定する値

ページ切り替えフラグに設定する値を次の表に示します。

表12‒11　ページ切り替えフラグに設定する値

項番

条件

設定値

説明

1

サブページ分割をしていない場合

C'Ｃ'

左記に示す値が設定されているレコードを格納する際，格納ページを切り替えて，空きページにそのレコードを格納します。このレコードを格納したページには，ほかのレコードも格納されます。

2

C'Ｏ'

左記に示す値が設定されているレコードを格納する際，格納ページを切り替えて，空きページにこのレコードを格納します。このレコードを格納したページには，ほかのレコードは格納されません。

3

上記以外

格納ページの切り替えは行われません。

4

サブページ分割をしている場合

C'Ｃ'

左記に示す値が設定されているレコードを格納する際，格納サブページを切り替えて未使用サブページにそのレコードを格納します。このレコードを格納したサブページには，ほかのレコードも格納されます。

5

C'Ｏ'

左記に示す値が設定されているレコードを格納する際，格納サブページを切り替えて，未使用サブページにこのレコードを格納します。このレコードを格納したサブページには，ほかのレコードは格納されません。

6

上記以外

格納サブページの切り替えは行われません。

ページ切り替えについては，「2.6.2(3)レコード格納時のページ切り替え【4V FMB，4V AFM】」を参照してください。

サブページ切り替えについては，「2.7.2(3)　レコード格納時のサブページ切り替え【4V FMB，4V AFM】」を参照してください。

(c)　事前割り当てページ数に設定する値【4V FMB】

事前割り当てページ数に設定する値を次の表に示します。

表12‒12　事前割り当てページ数に設定する値

項番

SDBデータベース格納定義のSTORAGE RECORD句のSUBPAGE NUMBERの指定

指定値

事前ページ割り当て制御の内容

1

指定あり（サブページ）

0

事前割り当てサブページは割り当てられません。

2

1〜2,147,483,647

指定値数分のサブページを事前割り当てサブページとして割り当てます。

3

上記以外

論理エラーを出力し，該当するルートレコードをスキップします。

4

指定なし（ページ）

0

事前割り当てページは割り当てられません。

5

1〜2,147,483,647

指定値数分のページを事前割り当てページとして割り当てます。

6

上記以外

論理エラーを出力し，該当するルートレコードをスキップします。

(d)　留意事項

ルートレコード型の入力データ以外のレコードに，事前割り当てページ数を指定しても無視されます。事前割り当てページ数とページ切り替えフラグの指定値の関係を次の表に示します。

表12‒13　事前割り当てページ数とページ切り替えフラグの指定値の関係

項番

プリフィクス部の指定値

pdsdblodコマンドの動作

事前割り当てページ数※1

ページ切り替えフラグ

ルートレコード

子レコード

1

0

'c'

−

ページ切り替え※2が有効になります。

2

'o'

3

上記以外

ページ切り替え※2および事前ページ割り当て※3は適用されません。

4

1〜2,147,483,647

'c'

論理エラーを出力し，該当するルートレコードおよびその子レコード群をスキップします。

5

'o'

6

上記以外

事前ページ割り当て※3が有効になります。

7

0

−

'c'

ページ切り替え※2が有効になります。

8

'o'

9

上記以外

ページ切り替え※2および事前ページ割り当て※3は適用されません。

10

1〜2,147,483,647

'c'

論理エラーを出力し，該当するルートレコードおよびその子レコード群をスキップします。

11

'o'

12

上記以外

事前ページ割り当て※3が有効になります。

（凡例）

−：該当しません。

注※1

事前割り当てページ数の設定値が有効になるのはルートレコード型の入力データだけです。ルートレコード型以外の入力データに設定されていた場合は無視されます。

注※2

SDBデータベース格納定義のSTORAGE RECORD句のSUBPAGE NUMBERオペランドでサブページ分割数が指定されている場合は，サブページ切り替えになります。

注※3

SDBデータベース格納定義のSTORAGE RECORD句のSUBPAGE NUMBERオペランドでサブページ分割数が指定されている場合は，事前サブページ割り当てになります。

また，データロード時にレコードを格納するために確保したページ（またはサブページ）の数が，指定した事前割り当てページ数（または事前割り当てサブページ数）を超えた場合，該当するファミリを格納するために指定値を超えて確保したページ（またはサブページ）も，事前割り当てページ（事前割り当てサブページ）として扱われます。

(4)　レコードデータ

レコードデータには，データベースに格納するデータを格納してください。SDBデータベース定義で指定したレコード型と同じ構成要素を持つデータを格納します。レコードデータの例を次に示します。

SDBデータベース定義の例（4V FMBの場合）

   ：
RECORD レコード型名
 2 DBKEY_L2 XCHARACTER 1 TYPE K,L                   …科目
 2 DBKEY_L3 XCHARACTER 3 TYPE K,L                   …店番
 2 DBKEY_L4 XCHARACTER 5 TYPE K,L                   …顧客番号
 2 DBKEY_K2 INTEGER       TYPE K,P                  …上位の一連番号
 2 DBKEY_K3 INTEGER       TYPE K,P                  …上位の一連番号
 2 DBKEY    INTEGER       TYPE K,N                  …一連番号
 2 USERDATA CHARACTER 5  TYPE U,D                   …ユーザデータ
   ：

レコードデータの例

次に示す構成要素が定義されている場合は，領域を確保して0を設定してください。

自一連番号

上位の一連番号

HiRDB/SDは，これらの構成要素の領域の値を参照しません。

12.6.2　レコードの格納順序

レコードの格納順序はデータベースの種類によって異なります。

(1)　4V FMBまたはSD FMBのSDBデータベースの場合

次に示すデータベースモデルと実現値モデルを例にして，入力データファイルのレコードの格納順序を説明します。

この場合，入力データファイル中のレコード格納順序は次のようにしてください。

入力データファイル中のレコード格納順序に従って，データベースにレコードが格納されます。

load文のseqkeyckにyesを指定する場合は，ルートレコードのシーケンシャルインデクスのキー値が昇順になるように作成してください。

子レコードを親子集合に挿入する順序は，SDBデータベース定義のORDER句の指定に従います。ただし，SDBデータベース定義のORDER句にSORTED DUPLICATES PROHIBITEDを指定した子レコード型のデータは，ユーザキーがKEY句で指定した順序（ASCENDINGは昇順，DESCENDINGは降順）となるように作成してください。並び順が不正な場合，論理エラーになります。

(2)　4V AFMのSDBデータベースの場合

次に示すデータベースモデルと実現値モデルを例にして，入力データファイルのレコードの格納順序を説明します。

この場合，入力データファイル中のレコード格納順序は次のようにしてください。

入力データファイル中のレコード格納順序に従って，データベースにレコードが格納されます。

仮想ルートレコードに対する実現値のレコードは必要ありません。

子レコードを親子集合に挿入する順序は，SDBデータベース定義のORDER句の指定に従います。ただし，SDBデータベース定義のORDER句にSORTED DUPLICATES PROHIBITEDを指定した子レコード型のデータは，ユーザキーがKEY句で指定した順序（ASCENDINGは昇順，DESCENDINGは降順）となるように作成してください。並び順が不正な場合，論理エラーになります。

12.7　実行結果ファイルの出力形式

データロードまたはフォーマットライトの処理が完了すると，データロードまたはフォーマットライトの実行結果が実行結果ファイルに出力されます。実行結果ファイルに出力される情報について例を使って説明します。

実行結果ファイルの出力例

4V FMBのSDBデータベースに対するデータロードで，インナレプリカ機能を使用している場合の出力例を次に示します。

なお，出力例中の番号は，［説明］の番号と対応しています。

pdsdblod (09-60) **** DB initialize load **** 2015-12-11 02:07:32 [1]     parallel
KFPB63501-E Schema record type is not found, [2]
           record=RECA, line=12, position=4
     :
KFPB63515-W Used page number more than specified page number,       [3]
            DBKEY(005): 464D423131                                  [4]
            Used page number:3          　　　                      [5]
            Specified page number:2         　　　                  [6]
     :
** initial load information list ** [7]
 server name : BES1  [8]
 schema name : FMB1  [9]
 generation  : 0     [10]
      no[11] area-name[12] schema-record-name[13]  storage-record-name[14] record-count[15]
       1    RDAREA01     FMB100                 FMB100                         53445
                         FMB111                 FMB111                         75886
                         FMB112                 FMB112                         61258
                         FMB113                 FMB113                         59471

** error record list **[16]
 no  error classification                                     error count
[17] [18]                                                     [19]
  1  Schema record type is not found                                    5
  2  Schema record type is invalid                                      0
  3  Schema record type is out of sequence                              0
  4  Data type is incorrect                                             1
  5  Key value is invalid                                               1
  6  Duplicate sequential key                                           2
  7  Not sequential key order                                           0
  8  Sort key is incorrect                                              0
  9  Sequence number exceeds the maximum value                          0
 10  Key value is not specified for KEYDEF                              0
 11  Database key is incorrect                                          0
 12  Partitioning key is incorrect                                      0
 13  Page number is out of range                                        0
 14  Prefix combination is incorrect                                    0
              total error count = 9 [20]

［説明］

pdsdblodコマンドを実行した日時が表示されます。

論理エラーに関するメッセージです。論理エラーに関するメッセージは，論理エラーが発生した数だけ表示されます。

事前割り当てページ数または事前割り当てサブページ数を指定した場合に，指定したページ数を超えて割り当てられたときに出力される警告メッセージです。警告ファミリ単位に，その数だけ表示されます。

メッセージに続いて，[4]，[5]，[6]が出力されます。

ルートレコードのデータベースキー長とDBKEYが表示されます。16進文字形式で表示されます。

ファミリを格納するために確保した事前割り当てページ数，または事前割り当てサブページ数が表示されます。

ユーザが指定した事前割り当てページ数，または事前割り当てサブページ数が表示されます。

以降にデータロードの実行結果が表示されます。※1

処理対象のバックエンドサーバ名が表示されます。

処理対象のSDBデータベース名が表示されます。

処理対象のRDエリアの世代番号が表示されます。0はオリジナルRDエリアを意味しています。インナレプリカ機能を使用している場合に表示されます。

1から始まる通番が表示されます。

レコードを格納したRDエリアの名称が表示されます。インナレプリカ機能を使用している場合は，レプリカRDエリアを処理対象にしたときでもオリジナルRDエリア名が表示されます。

格納先のレコード型名が表示されます。SDBデータベース定義のRECORD句に指定したレコード型名が表示されます。※2

処理対象のレコード型名が表示されます。SDBデータベース格納定義のSTORAGE RECORD句に指定した格納レコード名が表示されます。※2

データベースに格納されたレコード件数が表示されます。

以降に論理エラーに関する情報が表示されます。論理エラーが発生した場合に表示されます。

論理エラー番号が表示されます。

論理エラーの内容が表示されます。詳細については，「12.8.3　論理エラーの詳細」を参照してください。

論理エラーの種類ごとに，論理エラーの件数が表示されます。

論理エラーの合計件数が表示されます。

注※1

階層順（最上位レベル，中間レベル，最下位レベルの順）にレコード型の情報が表示されます。

（例）

この例の場合の表示順序は次のとおりになります。

レコード型Aの情報（最上位レベル）

レコード型Bの情報（中間レベルの上位）

レコード型Cの情報（中間レベルの下位）

レコード型Eの情報（中間レベルの下位）

レコード型Dの情報（最下位レベル）

レコード型Fの情報（最下位レベル）

中間レベルのレコード型が複数ある場合は，中間レベルの中で上位レベル，中間レベル，下位レベルの順に表示されます。

同一レベルのレコード型が複数ある場合は，pdsdbdefコマンドで定義した順に表示されます。

SDBデータベースの定義変更（pdsdbdefコマンドの*ALTER DICTIONARY文および*ALTER DIRECTORY文）でレコード型を追加した場合，追加したレコード型の情報は末尾に表示されます。

注※2

4V AFMのSDBデータベースの場合，仮想ルートレコードのレコード型名は出力されません。

参考

pdsdblodコマンドが異常終了した場合，実行結果ファイルにすべての情報が出力されないことがあります。例えば，先頭のヘッダ行だけが表示されたり，障害発生時点までの情報だけが表示されたりすることがあります。

12.8　入力データの論理エラーが発生したときの対処方法

ここでは，入力データの論理エラーが発生したときの対処方法について説明します。

12.8.1　対処の流れ

データロードの際，正常なレコードだけがデータベースに格納され，論理エラーのレコードはデータベースに格納されません。論理エラーのレコードをデータベースに格納したい場合は，入力データを修正してからデータロードを再実行します。

入力データの論理エラーが発生したときの対処の流れを次の図に示します。なお，この手順は，論理エラー情報ファイルに論理エラー情報が出力されている（load文のerrdataオペランドが指定されている）ことが前提となっています。

図12‒6　入力データの論理エラーが発生したときの対処の流れ

［説明］

実行結果ファイルに論理エラーの件数と論理エラーの内容が出力されます。実行結果ファイルについては，「12.7　実行結果ファイルの出力形式」を参照してください。

論理エラー情報ファイルに論理エラー情報が出力されます。この情報を参照して，入力データファイル中のデータを修正します。

修正した入力データファイルを使用して，データロードを再実行します。

12.8.2　論理エラー情報ファイルの出力形式

論理エラー情報ファイルの出力形式を次の図に示します。

図12‒7　論理エラー情報ファイルの出力形式

［説明］

論理エラーの件数分，上記の形式で論理エラー情報がバイナリ形式で出力されます。

レコード長

論理エラー情報の1レコードのレコード長が出力されます。レコード長は，20＋L1バイトになります。

load文番号

常に1が出力されます。

論理エラー番号

論理エラーの原因を示す論理エラー番号が出力されます。論理エラー番号と論理エラーの内容については，「12.8.3　論理エラーの詳細」を参照してください。

論理エラーが発生したレコードの位置

論理エラーが発生したレコードの位置が出力されます。例えば，5が出力された場合，入力データファイル中の5レコード目に論理エラーが発生したことを意味しています。

レコード中のエラーの位置

レコード中の論理エラー発生個所の位置が出力されます。例えば，10が出力された場合，レコード中の先頭から10バイト目に論理エラーが発生したことを意味しています。

論理エラーが発生したレコード

論理エラーが発生したレコードが出力されます。

参考

論理エラー情報ファイルの形式は入力データファイルの形式とは異なるため，論理エラー情報ファイルを入力データファイルとして使用することはできません。

12.8.3　論理エラーの詳細

論理エラー番号と論理エラーの内容を次の表に示します。

表12‒14　論理エラー番号と論理エラーの内容

論理エラー番号

論理エラーの内容

1

SDBデータベース定義で定義されていないレコード型名が入力データファイル中にあります。

2

入力データファイル中のレコード型名に誤りがあります。4V AFMのSDBデータベースの場合に考えられる原因を次に示します。

レコード型名に仮想ルートレコードのレコード型名が設定されています。

3

入力データファイル中のレコードの並びが階層構造の順番になっていません。正しい階層構造の順番を次に示します。

親レコード型のレコード

親レコード型に関係づけられる子レコード型のレコード

上位階層のレコード型のレコード

上位階層のレコード型に関係づけられるレコード型のレコード

1つの親レコード型に関係づけられる同じ階層の子レコード型が複数存在する場合，同じレコード型のレコードは連続させてください。

4

構成要素の値のデータ型が，対応するSDBデータベース定義で指定したデータ型と合っていません。

5

入力データファイル中のキー値に論理エラーが発生しました。4V FMBまたはSD FMBのSDBデータベースの場合に考えられる原因を次に示します。

キー値が親レコード型のキー値と合っていません。

6

シーケンシャルインデクスのキー値が重複しています。

7

シーケンシャルインデクスが定義されているレコード型のインデクスキー値が，シーケンシャルに並んでいません，または同じ値が並んでいます。※

8

SDBデータベース定義のSORTED DUPLICATES PROHIBITED句が指定されている場合に，キー値の重複が発生しました。または，キー値の並び順に誤りがあります。※

9

SDBデータベース定義のOCCURRENCE NUMBER句に指定した一連番号の最大値を超えました。

10

SDBデータベース格納定義のKEYDEF句で指定されていないキー値があります。

11

キー値の並び順に誤りがあります。4V AFMのSDBデータベースの場合に考えられる原因を次に示します。

キー値の並び順が，SDBデータベース格納定義のKEYDEF句で指定した並び順と異なっています。※

12

横分割しているSDBデータベースに対してRDエリア単位のデータロードを実行した結果，格納対象外のデータ（ほかのRDエリアに格納するデータ）がありました。

13

入力データファイル中のデータベース固有領域に指定されている，事前割り当てページ数の指定値が，指定可能な最大値を超えています。

14

入力データファイル中のデータベース固有領域に指定されている組み合わせで論理エラーが発生しました。考えられる原因を次に示します。

事前割り当てページ数が指定されたルートレコードに，ページ切り替えフラグが指定されています。または，事前割り当てページ数が指定されたファミリ内に，ページ切り替えフラグが指定されています。

注※

キー値のデータ型がPACKED DECIMAL FIXEDの場合，DECIMAL型の符号正規化機能による符号部の変換規則に従って変換されたキー値の並び順でチェックされます。符号部の変換規則については，「12.4.3(1)　符号部に関する注意事項（符号部の変換規則）」を参照してください。

12.9　トラブルシューティング

ここでは，pdsdblodコマンドが異常終了したときの対処方法について説明します。

12.9.1　pdsdblodコマンドが異常終了した場合

(1)　pdsdblodコマンドが異常終了した場合の対処方法

pdsdblodコマンドが異常終了した場合の対処方法について「5.22　障害が発生したときの対処方法（pdsdblodコマンドの異常終了時）」を参照してください。

(2)　注意事項

pdsdblodコマンドが異常終了した場合，インデクスを一括作成する際に作成されるインデクス情報ファイルが自動的に削除されないことがあります。この場合，エラーの原因を対策したあとにインデクス情報ファイルを削除してください。インデクス情報ファイルは，次に示すどれかのディレクトリ下に作成されます（優先順位は1の指定がいちばん上位です）。

idxload文のworkdirオペランドに指定したディレクトリ

システム定義のpd_tmp_directoryオペランドに指定したディレクトリ

環境変数TMPDIRに指定したディレクトリ

/tmpディレクトリ

インデクス情報ファイルの名称は次のようになります。

・SDBLOD-IDX-HiRDB識別子-インデクス名-インデクスが格納されているRDエリアのRDエリアID※

注※

インナレプリカ機能を使用している場合は，pdsdblodコマンドの処理対象RDエリアのRDエリアIDになります。

更新可能なオンライン再編成の実行時にpdsdblodコマンドが異常終了した場合，追い付き反映キー対応表へのデータ登録処理が正常に完了したかどうかを確認してください。次の場合は，追い付き反映キー対応表へのデータ登録処理が正常に完了していません。

KFPB63043-Iメッセージ（追い付き反映キー対応表へのデータ登録処理が完了した旨のメッセージ）が出力されていない場合

KFPB63043-Iメッセージがリターンコード0以外で出力された場合

この場合，データロードを再実行する前に，追い付き反映キー対応表の初期化が必要になります。また，追い付き反映キー対応表を初期化した場合，BES内の更新可能なオンライン再編成の対象RDエリアに対して，データロードを再実行する必要があります。例えば，BES1内でSDBデータベースをRDAREA01とRDAREA02に横分割している場合，RDAREA01とRDAREA02にそれぞれpdsdblodコマンドを実行してデータロードを行います。この場合，RDAREA01のデータロードは正常終了し，RDAREA02のデータロードが異常終了して，追い付き反映キー対応表を初期化したときは，RDAREA01とRDAREA02の両方に対してデータロードを再実行する必要があります。

12.9.2　pdsdblodコマンドが無応答状態になった場合

pdsdblodコマンドが無応答状態になった場合，pdcancelコマンドでpdsdblodコマンドをキャンセルしてください。手順を次に示します。

手順1

pdls -d prcコマンドを実行します。コマンドの実行結果は，リダイレクションでファイルに出力してください。

 pdls -d prc>出力先ファイル名

1.の実行結果を参照して，バックエンドサーバのプロセスIDを確認します。

 HOSTNAME : host01(135225)
 STATUS PID   UID    GID    SVID   TIME  PROGRAM   C-PID  C-GRP
    :   2924   :      :      :      :    pdsdblod    :      :

PROGRAM欄にpdsdblodと表示されている行を検索してください。この行のPID欄に表示されているプロセスID（この例では2924）が，pdsdblodコマンド実行中のバックエンドサーバのプロセスIDです。

pdsdblodが表示されていない場合は，手順2の方法でプロセスIDを確認してください。

pdcancelコマンドで，pdsdblodコマンド実行中のバックエンドサーバをキャンセルします。

 pdcancel -X ユニット識別子 -i プロセスID -d

ユニット識別子には，pdsdblodコマンドの処理対象RDエリアがあるユニットのユニット識別子を指定してください。

プロセスIDには，2.で確認したプロセスID（この例では2924）を指定してください。

手順2

pdls -d rpcコマンドを実行します。コマンドの実行結果は，リダイレクションでファイルに出力してください。

 pdls -d rpc -a>出力先ファイル名

1.の実行結果を参照して，ユティリティサーバ（pdsdblodm）のプロセスIDを確認します。

 Server Information :
   PID     SVID     STATUS …   CLTPID
   5444    0msdldN    :           :

SVID欄に0msdldN（末尾のNは16進の数字）と表示されている行を検索してください。この行のPID欄に表示されているプロセスID（この例では5444）が，ユティリティサーバ（pdsdblodm）のプロセスIDです。

なお，0msdldNが複数表示されている場合は，CLTPID欄（サーバのプロセスと接続しているクライアントのプロセスID）を確認してください。無応答状態になったpdsdblodコマンドのプロセスIDがCLTPID欄に表示されている行が該当する行になります。pdsdblodコマンドのプロセスIDは，OSのpsコマンドで確認できます。

pdcancelコマンドで，ユティリティサーバ（pdsdblodm）をキャンセルします。

 pdcancel -X ユニット識別子 -i プロセスID -d

ユニット識別子には，pdsdblodコマンドの処理対象RDエリアがあるユニットのユニット識別子を指定してください。

プロセスIDには，2.で確認したプロセスID（この例では5444）を指定してください。

なお，無応答状態の原因調査のために，pdsdblodコマンドのキャンセル後，pdinfogetコマンドで障害情報を取得してください。

注意事項

ログレスモードのpdsdblodコマンドをキャンセルした場合，処理対象RDエリアが障害閉塞します。そのため，pdsdblodコマンドを再実行する場合は，障害閉塞を解除する必要があります。障害閉塞を解除する方法については，「5.22　障害が発生したときの対処方法（pdsdblodコマンドの異常終了時）」を参照してください。

pdsdblodコマンドをキャンセルする際，OSのkillコマンドを使用しないでください。killコマンドでpdsdblodコマンドをキャンセルすると，ユニットが異常終了するおそれがあります。

大量のレコードをデータロードまたはフォーマットライトしているときに，pdsdblodコマンドをキャンセルすると，トランザクションのロールバック処理に時間が掛かります。このロールバック処理が完了するまでpdsdblodコマンドを再実行できません（コマンドの実行はできますが，排他待ち状態になります）。ロールバック処理が完了したかどうかは，pdls -d trn -aコマンドで確認できます。また，ロールバック処理が完了したときに，KFPB63451-Eメッセージが出力されます。

12.9.3　RDエリアの容量不足が発生した場合

pdsdblodコマンドの実行中に処理対象のRDエリアの容量不足が発生すると，pdsdblodコマンドが異常終了します。この場合，「12.9.1　pdsdblodコマンドが異常終了した場合」の手順に従って，pdsdblodコマンドを再実行してください。

なお，pdsdblodコマンドを再実行する前に，容量不足が発生したRDエリアを拡張する必要があります。RDエリアの拡張方法については，マニュアル「HiRDB Version 9 システム運用ガイド」の「RDエリアの容量を大きくする方法（RDエリアの拡張）」を参照してください。

12.9.4　タイムアウトが発生した場合

environment文のexectimeオペランドに指定したpdsdblodコマンドの実行時間の上限を超えた場合，pdsdblodコマンドが強制終了します。この場合，メッセージを確認してタイムアウトの原因を対処してください。そのあとに，「12.9.1　pdsdblodコマンドが異常終了した場合」の手順に従って，pdsdblodコマンドを再実行してください。

参考

exectimeオペランドを省略した場合，システム定義のpd_utl_exec_timeオペランド，またはpd_cmd_exec_timeオペランドに指定したタイムアウト時間が適用されます。

12.10　使用例

ここでは，pdsdblodコマンドの使用例について説明します。

なお，pdsdblodコマンドの使用例については，pdsdbrogコマンドの「13.10　使用例」でも説明しています。そちらもあわせてお読みください。

12.10.1　初期データロードの例（4V FMBの場合）

例題

横分割されているSDBデータベースに対して，RDエリア単位の初期データロードを実行します。

(1)　構成および条件

SDBデータベースの構成

SDBデータベースの構造

条件

SDBデータベース種別は4V FMBです。

インデクスFMB1_IDX01が定義されています。

初期データロードの対象RDエリアはRDAREA013およびRDAREA017です。

ページ切り替えフラグを設定します。

(2)　初期データロードの実行例

pdsdblodコマンドの実行例

 pdsdblod /usr/control_lod_file

pdsdblod制御文（/usr/control_lod_file）の例

 environment
   schema   = FMB1              ...1
   logmode  = no                ...2
   purge    = yes               ...3
   exectime = 0                 ...4
   recnomsg = 1                 ...5
   divermsg = put               ...6
 load
   type     = tree              ...7
   record   = FMB1_RCA          ...8
   server   = BES2              ...9
   area     = RDAREA013         ...10
   data     = /usr/load_data    ...11
   storinf  = /usr/load_result  ...12
   errdata  = /usr/err_data     ...13
   prefix   = 1                 ...14
   idxmode  = create            ...15
 dbinf
   pagecflg = (0)               ...16

［説明］

SDBデータベース名を指定します。

ログレスモードで初期データロードを実行します。

既存レコードを削除して初期データロードを実行します。

コマンドの実行時間の上限を指定します。0を指定した場合，上限は設定されません。

データロードが1万件完了するごとに経過メッセージを出力します。

ほかのRDエリアに格納するべきレコードは論理エラーとします。

4V FMBのSDBデータベースの場合はtreeを指定します。

ルートレコードのレコード型名を指定します。

初期データロード対象のRDエリアがあるバックエンドサーバを指定します。

初期データロード対象のRDエリアを指定します。

入力データファイル名を指定します。

実行結果ファイル名を指定します。

論理エラー情報ファイル名を指定します。

プリフィクス部の長さを指定します。

インデクス一括作成モードでインデクスを作成します。

ページ切り替えフラグの開始位置を指定します。

(3)　SDBデータベースの定義

*ENTRY DICTIONARY
  SCHEMA FMB1
    DBTYPE 4V FMB
    RECORD FMB1_RCA
      2 DBKEY
       3  KEYDATA1           XCHARACTER 1   TYPE  K,A
      2  USERDA0             CHARACTER 30   TYPE  U,D
    RECORD FMB1_RCB
      2  KEYDATA1            XCHARACTER 1   TYPE  K,A
      2  DBKEY               INTEGER        TYPE  K,N
      2  USERDB0             CHARACTER 20   TYPE  U,D
    SET SETAB
      OWNER FMB1_RCA
        ORDER LAST
      MEMBER FMB1_RCB
        INSERTION AUTOMATIC
        RETENTION FIXED
      SETOPTION
        OCCURRENCE NUMBER 2147483647
    SDBOPTION
      FUNCTION
        REFER     USE
        ADD       USE
        UPDATE    USE
        ERASE     USE
        ALLERASE  NOUSE
        DBLODUTL  USE
  END SCHEMA
*ENTRY DICTIONARY
  STORAGE SCHEMA FMB1 FOR FMB1
  DBTYPE 4V
  STORAGE RECORD FMB1_RCA
    SEQUENTIAL FMB1_IDX01 FOR RECORD
      ORDER KEY ASCENDING  KEYDATA1
      WITHIN ((RDAREA015),(RDAREA016),(RDAREA017),(RDAREA018))
    WITHIN ((RDAREA011) KEYDATA1=(X'F3'),
            (RDAREA012) KEYDATA1=(X'F4'),
            (RDAREA013) KEYDATA1=(X'F5'),
            (RDAREA014) KEYDATA1=(X'F6'))
  STORAGE RECORD FMB1_RCB
    CLUSTERED SETAB
      WITHIN ((RDAREA011),(RDAREA012),(RDAREA013),(RDAREA014))
  SET SETAB
    OWNER POINTER FOR FIRST LAST USER MEMBER
    MEMBER POINTER FOR NEXT PRIOR TENANT
  SDBOPTION
  END STORAGE SCHEMA
*ENTRY DIRECTORY
  DBSCHM FMB1

12.10.2　初期データロードの例（4V FMBのSDBデータベースに二次インデクスを定義している場合）

例題

横分割されているSDBデータベースに対して，RDエリア単位の初期データロードを実行します。

(1)　構成および条件

SDBデータベースの構成

SDBデータベースの構造

条件

SDBデータベース種別は4V FMBです。

インデクスFMB2_IDX01およびFMB2_IDX02が定義されています。

初期データロードの対象RDエリアはRDAREA023およびRDAREA027です。

ページ切り替えフラグを設定します。

(2)　初期データロードの実行例

pdsdblodコマンドの実行例

 pdsdblod /usr/control_lod_file

pdsdblod制御文（/usr/control_lod_file）の例

 environment
   schema    = FMB2             ...1
   logmode   = no               ...2
   purge     = yes              ...3
   exectime  = 0                ...4
   recnomsg  = 1                ...5
   divermsg  = put              ...6
 load
   type      = tree             ...7
   record    = FMB2_RCA         ...8
   server    = BES2             ...9
   area      = RDAREA023        ...10
   data      = /usr/load_data   ...11
   storinf   = /usr/load_result ...12
   errdata   = /usr/err_data    ...13
   prefix    = 1                ...14
   idxmode   = create           ...15
 dbinf
   pagecflg  = (0)              ...16

［説明］

SDBデータベース名を指定します。

ログレスモードで初期データロードを実行します。

既存レコードを削除して初期データロードを実行します。

コマンドの実行時間の上限を指定します。0を指定した場合，上限は設定されません。

初期データロードが1万件完了するごとに経過メッセージを出力します。

ほかのRDエリアに格納するべきレコードは論理エラーとします。

4V FMBのSDBデータベースの場合はtreeを指定します。

ルートレコードのレコード型名を指定します。

初期データロード対象のRDエリアがあるバックエンドサーバを指定します。

初期データロード対象のRDエリアを指定します。

入力データファイル名を指定します。

実行結果ファイル名を指定します。

論理エラー情報ファイル名を指定します。

プリフィクス部の長さを指定します。

インデクス一括作成モードでインデクスを作成します。

ページ切り替えフラグの開始位置を指定します。

(3)　SDBデータベースの定義

*ENTRY DICTIONARY
  SCHEMA FMB2
    DBTYPE 4V FMB
    RECORD FMB2_RCA
      2 DBKEY
       3  KEYDATA1           XCHARACTER 1   TYPE  K,A
      2  USERDA0             CHARACTER 30   TYPE  U,D
    RECORD FMB2_RCB
      2  KEYDATA1            XCHARACTER 1   TYPE  K,A
      2  DBKEY               INTEGER        TYPE  K,N
      2  USERDB0             CHARACTER 20   TYPE  U,D
    SET SETAB
      OWNER FMB2_RCA
        ORDER LAST
      MEMBER FMB2_RCB
        INSERTION AUTOMATIC
        RETENTION FIXED
      SETOPTION
        OCCURRENCE NUMBER 2147483647
    SDBOPTION
      FUNCTION
        REFER     USE
        ADD       USE
        UPDATE    USE
        ERASE     USE
        ALLERASE  NOUSE
        DBLODUTL  USE
  END SCHEMA
*ENTRY DICTIONARY
  STORAGE SCHEMA FMB2 FOR FMB2
  DBTYPE 4V
  STORAGE RECORD FMB2_RCA
    SEQUENTIAL FMB2_IDX01 FOR RECORD
      ORDER KEY ASCENDING KEYDATA1
      WITHIN ((RDAREA025),(RDAREA026),(RDAREA027),(RDAREA028))
    WITHIN ((RDAREA021) KEYDATA1=(X'F3'),
            (RDAREA022) KEYDATA1=(X'F4'),
            (RDAREA023) KEYDATA1=(X'F5'),
            (RDAREA024) KEYDATA1=(X'F6'))
  STORAGE RECORD FMB2_RCB
    CLUSTERED SETAB
      WITHIN ((RDAREA021),(RDAREA022),(RDAREA023),(RDAREA024))
    SECONDARY INDEX FMB1_IDX02
      ORDER KEY ASCENDING KEYDATA1,DBKEY
      WITHIN ((RDAREA025),(RDAREA026),(RDAREA027),(RDAREA028))
  SET SETAB
    OWNER POINTER FOR FIRST LAST USER MEMBER
    MEMBER POINTER FOR NEXT PRIOR TENANT
  SDBOPTION
  END STORAGE SCHEMA
*ENTRY DIRECTORY
  DBSCHM FMB2

12.10.3　初期データロードの例（4V MAMの場合）

例題

SDBデータベースの初期データロードを実行します。

(1)　構成および条件

SDBデータベースの構成

SDBデータベースの構造

条件

SDBデータベース種別は4V MAMです。

インデクスMAM1_IDX01〜MAM1_IDX03が定義されています。

(2)　初期データロードの実行例

pdsdblodコマンドの実行例

 pdsdblod /usr/control_lod_file

pdsdblod制御文（/usr/control_lod_file）の例

 environment
   schema   = MAM1              ...1
   logmode  = no                ...2
   purge    = yes               ...3
   exectime = 0                 ...4
   recnomsg = 1                 ...5
 load
   type     = single            ...6
   record   = MAM1_VRTL         ...7
   server   = BES1              ...8
   data     = /usr/load_data    ...9
   storinf  = /usr/load_result  ...10
   errdata  = /usr/err_data     ...11
   prefix   = 0                 ...12
   idxmode  = create            ...13

［説明］

SDBデータベース名を指定します。

ログレスモードで初期データロードを実行します。

既存レコードを削除して初期データロードを実行します。

コマンドの実行時間の上限を指定します。0を指定した場合，上限は設定されません。

初期データロードが1万件完了するごとに経過メッセージを出力します。

4V AFMのSDBデータベースの場合はsingleを指定します。

仮想ルートレコードのレコード型名を指定します。

初期データロード対象のRDエリアがあるバックエンドサーバを指定します。

入力データファイル名を指定します。

実行結果ファイル名を指定します。

論理エラー情報ファイル名を指定します。

プリフィクス部の長さを指定します。

インデクス一括作成モードでインデクスを作成します。

(3)　SDBデータベースの定義

*ENTRY DICTIONARY
  SCHEMA MAM1
   DBTYPE 4V  MAM
   RECORD MAM1_VRTL
    02 DBKEY01 CHARACTER 4         TYPE D,L
    02 DBKEY02 CHARACTER 4         TYPE K,L
   RECORD MAM1
    02 DBKEY01     CHARACTER 4     TYPE D,L
    02 DBKEY
     03 DBKEY02    CHARACTER 4     TYPE K,L
     03 DBKEYKN    INTEGER         TYPE K,N
    02 SORTKEY1 XCHARACTER 6       TYPE U,K,X'0000'
    02 USERFLD1 XCHARACTER 3       TYPE U,D,X'0000'
    02 USERFLD2 XCHARACTER 1       TYPE U,D,X'0000'
    02 USERFLD3 XCHARACTER 3       TYPE U,D,X'0000'
    02 USERFLD4 XCHARACTER 1       TYPE U,D,X'0000'
    02 USERFLD5 XCHARACTER 2       TYPE U,D,X'0000'
    02 USERFLD6 XCHARACTER 1       TYPE U,D,X'0000'
    02 USERFLD7 XCHARACTER 1       TYPE U,D,X'0000'
    02 USERFLD8 XCHARACTER 1       TYPE U,D,X'0000'
    02 USERFLD9 XCHARACTER 5       TYPE U,D,X'0000'
    02 USRDATA1 XCHARACTER 416     TYPE U,D,X'0000'
    FUNCTION
     REFER       USE
     ADD         USE
     UPDATE      USE
     ERASE     NOUSE
     ALLERASE  NOUSE
    RECORDID X'0001'
   SET SETM1
    OWNER MAM1_VRTL
     ORDER SORTED DUPLICATES PROHIBITED
    MEMBER MAM1
    INSERTION AUTOMATIC
    RETENTION FIXED
     KEY  ASCENDING  SORTKEY1
    SETOPTION
     OCCURRENCE NUMBER 65535
   REUSE NO
   SDBOPTION
     FUNCTION
      DBLODUTL    USE
      FORMAT    NOUSE
  END SCHEMA
*ENTRY DICTIONARY
  STORAGE SCHEMA  MAM1  FOR  MAM1
   DBTYPE 4V
   STORAGE RECORD MAM1_VRTL
    SEQUENTIAL  MAM1_IDX01  FOR RECORD
     ORDER KEY ASCENDING  DBKEY01,DBKEY02
     WITHIN RDAREA032
    WITHIN RDAREA031
   STORAGE RECORD MAM1
    CLUSTERED SETM1
     WITHIN RDAREA031
     POINTER AREA SIZE 0
     SECONDARY INDEX MAM1_IDX02
       ORDER KEY ASCENDING  DBKEY01,DBKEY02,DBKEYKN
       WITHIN RDAREA032
     SECONDARY INDEX MAM1_IDX03
       ORDER KEY ASCENDING  DBKEY01,DBKEY02,SORTKEY1
       WITHIN RDAREA032
   SET SETM1
    OWNER POINTER FOR FIRST LAST MEMBER
    MEMBER POINTER FOR NEXT PRIOR TENANT
   SDBOPTION
     KEYDEF DBKEY01
      DATA 'MAM1'
     KEYDEF DBKEY02
      DATA 'AAAA'
  END STORAGE SCHEMA
*ENTRY DIRECTORY
  DBSCHM MAM1

12.10.4　初期データロードの例（SD FMBの場合）

例題

横分割されているSDBデータベースに対して，RDエリア単位の初期データロードを実行します。

(1)　構成および条件

SDBデータベースの構成

SDBデータベースの構造

条件

SDBデータベース種別はSD FMBです。

インデクスFMB1_IDX01が定義されています。

初期データロードの対象RDエリアはRDAREA013およびRDAREA017です。

(2)　初期データロードの実行例

pdsdblodコマンドの実行例

 pdsdblod /usr/control_lod_file

pdsdblod制御文（/usr/control_lod_file）の例

 environment
   schema   = FMB1              ...1
   logmode  = no                ...2
   purge    = yes               ...3
   exectime = 0                 ...4
   recnomsg = 1                 ...5
   divermsg = put               ...6
 load
   type     = tree              ...7
   record   = FMB1_RCA          ...8
   server   = BES2              ...9
   area     = RDAREA013         ...10
   data     = /usr/load_data    ...11
   storinf  = /usr/load_result  ...12
   errdata  = /usr/err_data     ...13
   prefix   = 0                 ...14
   idxmode  = create            ...15

［説明］

SDBデータベース名を指定します。

ログレスモードで初期データロードを実行します。

既存レコードを削除して初期データロードを実行します。

コマンドの実行時間の上限を指定します。0を指定した場合，上限は設定されません。

データロードが1万件完了するごとに経過メッセージを出力します。

ほかのRDエリアに格納するべきレコードは論理エラーとします。

SD FMBのSDBデータベースの場合はtreeを指定します。

ルートレコードのレコード型名を指定します。

初期データロード対象のRDエリアがあるバックエンドサーバを指定します。

初期データロード対象のRDエリアを指定します。

入力データファイル名を指定します。

実行結果ファイル名を指定します。

論理エラー情報ファイル名を指定します。

プリフィクス部の長さに0を指定します。

インデクス一括作成モードでインデクスを作成します。

(3)　SDBデータベースの定義

*ENTRY DICTIONARY
  SCHEMA FMB1
    DBTYPE SD FMB
    RECORD FMB1_RCA
      2 KEYDATA
       3  KEYDATA1           XCHARACTER 1   TYPE  K,A
      2  USERDA0             CHARACTER 30   TYPE  U,D
    RECORD FMB1_RCB
      2  KEYDATA1            XCHARACTER 1   TYPE  K,A
      2  DBKEY               INTEGER        TYPE  K,N
      2  USERDB0             CHARACTER 20   TYPE  U,D
    SET SETAB
      OWNER FMB1_RCA
        ORDER LAST
      MEMBER FMB1_RCB
        INSERTION AUTOMATIC
        RETENTION FIXED
  END SCHEMA
*ENTRY DICTIONARY
  STORAGE SCHEMA FMB1 FOR FMB1
  DBTYPE SD
  STORAGE RECORD FMB1_RCA
    SEQUENTIAL FMB1_IDX01 FOR RECORD
      ORDER KEY ASCENDING  KEYDATA1
      WITHIN ((RDAREA015),(RDAREA016),(RDAREA017),(RDAREA018))
    WITHIN ((RDAREA011) KEYDATA1=(X'F3'),
            (RDAREA012) KEYDATA1=(X'F4'),
            (RDAREA013) KEYDATA1=(X'F5'),
            (RDAREA014) KEYDATA1=(X'F6'))
  STORAGE RECORD FMB1_RCB
    CLUSTERED SETAB
      WITHIN ((RDAREA011),(RDAREA012),(RDAREA013),(RDAREA014))
  SET SETAB
    OWNER POINTER FOR FIRST LAST MEMBER
    MEMBER POINTER FOR NEXT PRIOR TENANT
  END STORAGE SCHEMA
*ENTRY DIRECTORY
  DBSCHM FMB1

12.10.5　追加データロードの例（4V FMBの場合）

例題

横分割されているSDBデータベースに対して，RDエリア単位の追加データロードを実行します。

(1)　構成および条件

SDBデータベースの構成

SDBデータベースの構造

条件

SDBデータベース種別は4V FMBです。

インデクスFMB4_IDX01が定義されています。

追加データロードの対象RDエリアはRDAREA043およびRDAREA047です。

事前割り当てページ数を設定します。

(2)　追加データロードの実行例

pdsdblodコマンドの実行例

 pdsdblod /usr/control_lod_file

pdsdblod制御文（/usr/control_lod_file）の例

 environment
   schema   = FMB4              ...1
   logmode  = no                ...2
   purge    = no                ...3
   exectime = 0                 ...4
 load
   type     = tree              ...5
   record   = FMB4_RCA          ...6
   server   = BES2              ...7
   area     = RDAREA043         ...8
   data     = /usr/load_data    ...9
   storinf  = /usr/load_result  ...10
   errdata  = /usr/err_data     ...11
   prefix   = 4                 ...12
 dbinf
   pagenum  = (0)               ...13

［説明］

SDBデータベース名を指定します。

ログレスモードで追加データロードを実行します。

既存レコードを削除しないで追加データロードを実行します。

コマンドの実行時間の上限を指定します。0を指定した場合，上限は設定されません。

4V FMBのSDBデータベースの場合はtreeを指定します。

ルートレコードのレコード型名を指定します。

追加データロード対象のRDエリアがあるバックエンドサーバを指定します。

追加データロード対象のRDエリアを指定します。

入力データファイル名を指定します。

実行結果ファイル名を指定します。

論理エラー情報ファイル名を指定します。

プリフィクス部の長さを指定します。

事前割り当てページ数の開始位置を指定します。

(3)　SDBデータベースの定義

*ENTRY DICTIONARY
  SCHEMA FMB4
    DBTYPE 4V FMB
    RECORD FMB4_RCA
      2 DBKEY
       3  KEYDATA1           XCHARACTER 1   TYPE  K,A
      2  USERDA0             CHARACTER 30   TYPE  U,D
    RECORD FMB4_RCB
      2  KEYDATA1            XCHARACTER 1   TYPE  K,A
      2  DBKEY               INTEGER        TYPE  K,N
      2  USERDB0             CHARACTER 20   TYPE  U,D
    RECORD FMB4_RCC
      2  KEYDATA1            XCHARACTER 1   TYPE  K,A
      2  DBKEY               INTEGER        TYPE  K,N
      2  USERDC0             CHARACTER 20   TYPE  U,D
    SET SETAB
      OWNER FMB4_RCA
        ORDER LAST
      MEMBER FMB4_RCB
        INSERTION AUTOMATIC
        RETENTION FIXED
      SETOPTION
        OCCURRENCE NUMBER 2147483647
    SET SETAC
      OWNER FMB4_RCA
        ORDER LAST
      MEMBER FMB4_RCC
        INSERTION AUTOMATIC
        RETENTION FIXED
      SETOPTION
        OCCURRENCE NUMBER 2147483647
    SDBOPTION
      FUNCTION
        REFER     USE
        ADD       USE
        UPDATE    USE
        ERASE     USE
        ALLERASE  NOUSE
        DBLODUTL  USE
  END SCHEMA
*ENTRY DICTIONARY
  STORAGE SCHEMA FMB4 FOR FMB4
  DBTYPE 4V
  STORAGE RECORD FMB4_RCA
    SEQUENTIAL FMB4_IDX01 FOR RECORD
      ORDER KEY ASCENDING  KEYDATA1
      WITHIN ((RDAREA045),(RDAREA046),(RDAREA047),(RDAREA048))
    WITHIN ((RDAREA041) KEYDATA1=(X'F3'),
            (RDAREA042) KEYDATA1=(X'F4'),
            (RDAREA043) KEYDATA1=(X'F5'),
            (RDAREA044) KEYDATA1=(X'F6'))
  STORAGE RECORD FMB4_RCB
    CLUSTERED SETAB
      WITHIN ((RDAREA041),(RDAREA042),(RDAREA043),(RDAREA044))
  STORAGE RECORD FMB4_RCC
    CLUSTERED SETAC
      WITHIN ((RDAREA041),(RDAREA042),(RDAREA043),(RDAREA044))
  SET SETAB
    OWNER POINTER FOR FIRST LAST MEMBER
    MEMBER POINTER FOR NEXT PRIOR TENANT
  SET SETAC
    OWNER POINTER FOR FIRST LAST MEMBER
    MEMBER POINTER FOR NEXT PRIOR TENANT
  SDBOPTION
  END STORAGE SCHEMA
*ENTRY DIRECTORY
  DBSCHM FMB4

12.10.6　追加データロードの例（SD FMBの場合）

例題

横分割されているSDBデータベースに対して，RDエリア単位の追加データロードを実行します。

(1)　構成および条件

SDBデータベースの構成

SDBデータベースの構造

条件

SDBデータベース種別はSD FMBです。

インデクスFMB4_IDX01が定義されています。

追加データロードの対象RDエリアはRDAREA043およびRDAREA047です。

(2)　追加データロードの実行例

pdsdblodコマンドの実行例

 pdsdblod /usr/control_lod_file

pdsdblod制御文（/usr/control_lod_file）の例

 environment
   schema   = FMB4              ...1
   logmode  = no                ...2
   purge    = no                ...3
   exectime = 0                 ...4
 load
   type     = tree              ...5
   record   = FMB4_RCA          ...6
   server   = BES2              ...7
   area     = RDAREA043         ...8
   data     = /usr/load_data    ...9
   storinf  = /usr/load_result  ...10
   errdata  = /usr/err_data     ...11
   prefix   = 0                 ...12

［説明］

SDBデータベース名を指定します。

ログレスモードで追加データロードを実行します。

既存レコードを削除しないで追加データロードを実行します。

コマンドの実行時間の上限を指定します。0を指定した場合，上限は設定されません。

SD FMBのSDBデータベースの場合はtreeを指定します。

ルートレコードのレコード型名を指定します。

追加データロード対象のRDエリアがあるバックエンドサーバを指定します。

追加データロード対象のRDエリアを指定します。

入力データファイル名を指定します。

実行結果ファイル名を指定します。

論理エラー情報ファイル名を指定します。

プリフィクス部の長さに0を指定します。

(3)　SDBデータベースの定義

*ENTRY DICTIONARY
  SCHEMA FMB4
    DBTYPE SD FMB
    RECORD FMB4_RCA
      2 KEYDATA
       3  KEYDATA1           XCHARACTER 1   TYPE  K,A
      2  USERDA0             CHARACTER 30   TYPE  U,D
    RECORD FMB4_RCB
      2  KEYDATA1            XCHARACTER 1   TYPE  K,A
      2  DBKEY               INTEGER        TYPE  K,N
      2  USERDB0             CHARACTER 20   TYPE  U,D
    RECORD FMB4_RCC
      2  KEYDATA1            XCHARACTER 1   TYPE  K,A
      2  DBKEY               INTEGER        TYPE  K,N
      2  USERDC0             CHARACTER 20   TYPE  U,D
    SET SETAB
      OWNER FMB4_RCA
        ORDER LAST
      MEMBER FMB4_RCB
        INSERTION AUTOMATIC
        RETENTION FIXED
      SETOPTION
        OCCURRENCE NUMBER 2147483647
    SET SETAC
      OWNER FMB4_RCA
        ORDER LAST
      MEMBER FMB4_RCC
        INSERTION AUTOMATIC
        RETENTION FIXED
  END SCHEMA
*ENTRY DICTIONARY
  STORAGE SCHEMA FMB4 FOR FMB4
  DBTYPE SD
  STORAGE RECORD FMB4_RCA
    SEQUENTIAL FMB4_IDX01 FOR RECORD
      ORDER KEY ASCENDING  KEYDATA1
      WITHIN ((RDAREA045),(RDAREA046),(RDAREA047),(RDAREA048))
    WITHIN ((RDAREA041) KEYDATA1=(X'F3'),
            (RDAREA042) KEYDATA1=(X'F4'),
            (RDAREA043) KEYDATA1=(X'F5'),
            (RDAREA044) KEYDATA1=(X'F6'))
  STORAGE RECORD FMB4_RCB
    CLUSTERED SETAB
      WITHIN ((RDAREA041),(RDAREA042),(RDAREA043),(RDAREA044))
  STORAGE RECORD FMB4_RCC
    CLUSTERED SETAC
      WITHIN ((RDAREA041),(RDAREA042),(RDAREA043),(RDAREA044))
  SET SETAB
    OWNER POINTER FOR FIRST LAST MEMBER
    MEMBER POINTER FOR NEXT PRIOR TENANT
  SET SETAC
    OWNER POINTER FOR FIRST LAST MEMBER
    MEMBER POINTER FOR NEXT PRIOR TENANT
  END STORAGE SCHEMA
*ENTRY DIRECTORY
  DBSCHM FMB4

12.10.7　フォーマットライトの例（4V DAMの場合）

例題

横分割されているSDBデータベースに対して，バックエンドサーバ単位のフォーマットライトを実行します。

(1)　構成および条件

SDBデータベースの構成

SDBデータベースの構造

条件

SDBデータベース種別は4V DAMです。

インデクスDAM1_IDX01〜DAM1_IDX02が定義されています。

フォーマットライトの対象RDエリアはBES2のRDエリアです。

(2)　フォーマットライトの実行例

pdsdblodコマンドの実行例

 pdsdblod /usr/control_lod_file

pdsdblod制御文（/usr/control_lod_file）の例

 environment
   schema   = DAM1              ...1
   logmode  = no                ...2
   purge    = yes               ...3
   exectime = 0                 ...4
   recnomsg = 1                 ...5
 load
   write    = use               ...6
   record   = DAM1_VRTL         ...7
   server   = BES2              ...8
   storinf  = /usr/load_result  ...9
   idxmode  = create            ...10

［説明］

SDBデータベース名を指定します。

ログレスモードでフォーマットライトを実行します。

既存レコードを削除してフォーマットライトを実行します。

コマンドの実行時間の上限を指定します。0を指定した場合，上限は設定されません。

フォーマットライトが1万件完了するごとに経過メッセージを出力します。

フォーマットライトを実行する指定です。

仮想ルートレコードのレコード型名を指定します。

フォーマットライト対象のRDエリアがあるバックエンドサーバを指定します。

実行結果ファイル名を指定します。

インデクス一括作成モードでインデクスを作成します。

(3)　SDBデータベースの定義

*ENTRY DICTIONARY
  SCHEMA DAM1
    DBTYPE 4V DAM
    RECORD DAM1_VRTL
      2 KEYDBMEI          CHARACTER 4    TYPE  D,L
      2 KEYHIDUKE         XCHARACTER 1   TYPE  K,A
    RECORD DAM1
      2 KEYDBMEI          CHARACTER 4    TYPE  D,L
      2 DBKEY
       3 KEYHIDUKE        XCHARACTER 1   TYPE  K,A
       3 KEYNUMBER        INTEGER        TYPE  K,N
      2 USERDB0           CHARACTER 20   TYPE  U,D
    SET SETD1
      OWNER DAM1_VRTL
        ORDER LAST
      MEMBER DAM1
        INSERTION AUTOMATIC
        RETENTION FIXED
      SETOPTION
        OCCURRENCE NUMBER 10
  SDBOPTION
    FUNCTION
      DBLODUTL  USE
      FORMAT    USE
  END SCHEMA
*ENTRY DICTIONARY
  STORAGE SCHEMA DAM1 FOR DAM1
    DBTYPE 4V
  STORAGE RECORD DAM1_VRTL
    SEQUENTIAL DAM1_IDX01 FOR RECORD
      ORDER KEY ASCENDING KEYDBMEI,KEYHIDUKE
     WITHIN  ((RDAREA053),(RDAREA054))
    WITHIN ((RDAREA051) KEYHIDUKE=(X'C1'),
            (RDAREA052) KEYHIDUKE=(X'C2'))
  STORAGE RECORD DAM1
    CLUSTERED SETD1
     WITHIN ((RDAREA051),(RDAREA052))
  SECONDARY INDEX DAM1_IDX02
  ORDER KEY ASCENDING
      KEYDBMEI,KEYHIDUKE, KEYNUMBER
      WITHIN  ((RDAREA055),(RDAREA056))
  SET SETD1
    OWNER POINTER FOR FIRST LAST MEMBER
    MEMBER POINTER FOR NEXT PRIOR TENANT
  SDBOPTION
      KEYDEF KEYDBMEI
        DATA 'DAM1'
      KEYDEF KEYHIDUKE
        DATA X'C1'
        DATA X'C2'
  END STORAGE SCHEMA
*ENTRY DIRECTORY
  DBSCHM DAM1

12.10.8　インデクスの再作成の例（4V FMBの場合）

例題

誤ってインデクス格納用RDエリアを初期化してしまったため，インデクス格納用RDエリア単位に，インデクスを再作成します。

(1)　構成および条件

SDBデータベースの構成

SDBデータベースの構造

条件

SDBデータベース種別は4V FMBです。

FMB6_RCAには，シーケンシャルインデクスFMB6_IDX01が定義されています。

FMB6_RCBには，二次インデクスFMB6_IDX02が定義されています。

FMB6_RCCには，二次インデクスFMB6_IDX03が定義されています。

インデクスの再作成の対象となるインデクスは，FMB6_IDX02です。

FMB6_IDX02が格納されているRDエリアはRDAREA062です。

インデクス情報を抽出するデータが格納されているRDエリアはRDAREA061です。

(2)　インデクス再作成の実行例

pdsdblodコマンドの実行例

 pdsdblod /usr/control_lod_file

pdsdblod制御文（/usr/control_lod_file）の例

 environment
   schema    = FMB6             ...1
   logmode   = all              ...2
 index
   idxremode = recrt            ...3
   idxarea   = RDAREA062        ...4
   idxname   = FMB6_IDX02       ...5

［説明］

SDBデータベース名を指定します。

ログ取得モードで実行します。

インデクス再作成モードで実行します。

インデクスの再作成対象となるRDエリアを指定します。

インデクスの再作成対象となるRDエリアに格納されているインデクス名を指定します。

(3)　SDBデータベースの定義

*ENTRY DICTIONARY
  SCHEMA FMB6
    DBTYPE 4V FMB
    RECORD FMB6_RCA
      2 DBKEY
       3  KEYDATA1           XCHARACTER 1   TYPE  K,L
      2  USERDA0             CHARACTER 30   TYPE  U,D
    RECORD FMB6_RCB
      2  KEYDATA1            XCHARACTER 1   TYPE  K,L
      2  DBKEY               INTEGER        TYPE  K,N
      2  USERDB0             CHARACTER 20   TYPE  U,D
    RECORD FMB6_RCC
      2  KEYDATA1            XCHARACTER 1   TYPE  K,L
      2  DBKEY               INTEGER        TYPE  K,N
      2  USERDC0             CHARACTER 20   TYPE  U,D
    SET SETAB
      OWNER FMB6_RCA
        ORDER LAST
      MEMBER FMB6_RCB
        INSERTION AUTOMATIC
        RETENTION FIXED
      SETOPTION
        OCCURRENCE NUMBER 2147483647
    SET SETAC
      OWNER FMB6_RCA
        ORDER LAST
      MEMBER FMB6_RCC
        INSERTION AUTOMATIC
        RETENTION FIXED
      SETOPTION
        OCCURRENCE NUMBER 2147483647
    SDBOPTION
      FUNCTION
        REFER     USE
        ADD       USE
        UPDATE    USE
        ERASE     USE
        ALLERASE  NOUSE
        DBLODUTL  USE
  END SCHEMA
*ENTRY DICTIONARY
  STORAGE SCHEMA FMB6 FOR FMB6
  DBTYPE 4V
  STORAGE RECORD FMB6_RCA
    SEQUENTIAL FMB6_IDX01 FOR RECORD
      ORDER KEY ASCENDING  KEYDATA1
      WITHIN (RDAREA062)
    WITHIN (RDAREA061)
  STORAGE RECORD FMB6_RCB
    CLUSTERED SETAB
      WITHIN (RDAREA061)
    SECONDARY INDEX FMB6_IDX02
      ORDER KEY ASCENDING  KEYDATA1,DBKEY
     WITHIN RDAREA062
  STORAGE RECORD FMB6_RCC
    CLUSTERED SETAC
      WITHIN (RDAREA061)
    SECONDARY INDEX FMB6_IDX03
      ORDER KEY ASCENDING  KEYDATA1,DBKEY
     WITHIN RDAREA062
  SET SETAB
    OWNER POINTER FOR FIRST LAST MEMBER
    MEMBER POINTER FOR NEXT PRIOR TENANT
  SET SETAC
    OWNER POINTER FOR FIRST LAST MEMBER
    MEMBER POINTER FOR NEXT PRIOR TENANT
  SDBOPTION
  END STORAGE SCHEMA
*ENTRY DIRECTORY
  DBSCHM FMB6

12.10.9　インデクスの再作成の例（SD FMBの場合）

例題

誤ってインデクス格納用RDエリアを初期化してしまったため，インデクス格納用RDエリア単位に，インデクスを再作成します。

(1)　構成および条件

SDBデータベースの構成

SDBデータベースの構造

条件

SDBデータベース種別はSD FMBです。

FMB6_RCAには，シーケンシャルインデクスFMB6_IDX01が定義されています。

インデクスの再作成の対象となるインデクスは，FMB6_IDX01です。

FMB6_IDX01が格納されているRDエリアはRDAREA062です。

インデクス情報を抽出するデータが格納されているRDエリアはRDAREA061です。

(2)　インデクス再作成の実行例

pdsdblodコマンドの実行例

 pdsdblod /usr/control_lod_file

pdsdblod制御文（/usr/control_lod_file）の例

 environment
   schema    = FMB6             ...1
   logmode   = all              ...2
 index
   idxremode = recrt            ...3
   idxarea   = RDAREA062        ...4
   idxname   = FMB6_IDX01       ...5

［説明］

SDBデータベース名を指定します。

ログ取得モードで実行します。

インデクス再作成モードで実行します。

インデクスの再作成対象となるRDエリアを指定します。

インデクスの再作成対象となるRDエリアに格納されているインデクス名を指定します。

(3)　SDBデータベースの定義

*ENTRY DICTIONARY
  SCHEMA FMB6
    DBTYPE SD FMB
    RECORD FMB6_RCA
      2 KEYDATA
       3  KEYDATA1           XCHARACTER 1   TYPE  K,L
      2  USERDA0             CHARACTER 30   TYPE  U,D
    RECORD FMB6_RCB
      2  KEYDATA1            XCHARACTER 1   TYPE  K,L
      2  DBKEY               INTEGER        TYPE  K,N
      2  USERDB0             CHARACTER 20   TYPE  U,D
    RECORD FMB6_RCC
      2  KEYDATA1            XCHARACTER 1   TYPE  K,L
      2  DBKEY               INTEGER        TYPE  K,N
      2  USERDC0             CHARACTER 20   TYPE  U,D
    SET SETAB
      OWNER FMB6_RCA
        ORDER LAST
      MEMBER FMB6_RCB
        INSERTION AUTOMATIC
        RETENTION FIXED
    SET SETAC
      OWNER FMB6_RCA
        ORDER LAST
      MEMBER FMB6_RCC
        INSERTION AUTOMATIC
        RETENTION FIXED
  END SCHEMA
*ENTRY DICTIONARY
  STORAGE SCHEMA FMB6 FOR FMB6
  DBTYPE SD
  STORAGE RECORD FMB6_RCA
    SEQUENTIAL FMB6_IDX01 FOR RECORD
      ORDER KEY ASCENDING  KEYDATA1
      WITHIN (RDAREA062)
    WITHIN (RDAREA061)
  STORAGE RECORD FMB6_RCB
    CLUSTERED SETAB
      WITHIN (RDAREA061)
  STORAGE RECORD FMB6_RCC
    CLUSTERED SETAC
      WITHIN (RDAREA061)
  SET SETAB
    OWNER POINTER FOR FIRST LAST MEMBER
    MEMBER POINTER FOR NEXT PRIOR TENANT
  SET SETAC
    OWNER POINTER FOR FIRST LAST MEMBER
    MEMBER POINTER FOR NEXT PRIOR TENANT
  END STORAGE SCHEMA
*ENTRY DIRECTORY
  DBSCHM FMB6

13　HiRDB/SDデータベース再編成ユティリティ（pdsdbrog）

この章では，HiRDB/SDデータベース再編成ユティリティの機能と使い方について説明します。

なお，この章では，HiRDB/SDデータベース再編成ユティリティをpdsdbrogコマンドと表記しています。

13.1　機能

pdsdbrogコマンドには次に示す機能があります。

レコードのアンロード

この機能について説明します。

13.1.1　レコードのアンロード

データベースに格納されているレコードをアンロードデータファイルに出力できます。この機能をレコードのアンロードといいます。レコードのアンロードの概要を次の図に示します。

図13‒1　レコードのアンロードの概要

(1)　アンロードの際に準備するファイル

アンロードを実行する前に，次に示すファイルを準備しておきます。

制御文ファイル

pdsdbrogコマンドの動作条件を指定したpdsdbrog制御文を格納したファイルです。制御文ファイルは通常ファイル上に作成してください。pdsdbrog制御文については，「13.3　pdsdbrog制御文」を参照してください。

(2)　アンロードの際に作成されるファイル

アンロードの際，HiRDB/SDは次に示すファイルを作成します。これらのファイルは通常ファイル上に作成されます。

アンロードデータファイル

データベース中のレコードを格納したファイルです。アンロードデータファイルの出力形式については，「13.6　アンロードデータファイルの出力形式」を参照してください。

アンロードの実行結果ファイル

pdsdbrogコマンドの実行結果を出力するファイルです。実行結果ファイルに出力される情報については，「13.7　アンロードの実行結果ファイルの出力形式」を参照してください。

(3)　SDBデータベースが横分割されている場合のアンロード

SDBデータベースが複数のRDエリアに横分割されている場合，RDエリア単位にアンロードを実行します。例えば，4つのRDエリアにSDBデータベースが横分割されている場合，アンロードを4回実行します。SDBデータベースが横分割されている場合のアンロードを次の図に示します。

図13‒2　SDBデータベースが横分割されている場合のアンロード

(4)　アンロードの主な利用方法

アンロードの主な利用方法を次に示します。

(a)　SDBデータベースを再編成するときに利用する

レコードの追加や削除を繰り返すと，レコードの配置が乱れてレコードのアクセス効率や格納効率が低下します。このような場合，pdsdbrogコマンドでレコードをいったんアンロードしてアンロードデータファイルを作成します。そのアンロードデータファイルを入力データファイルにしてpdsdblodコマンドでデータロードを行います。レコードを再格納することによって，レコードの配置が適正化され，レコードのアクセス効率や格納効率が改善されます。この一連の処理をSDBデータベースの再編成といいます。SDBデータベースの再編成の概要を次の図に示します。

図13‒3　SDBデータベースの再編成の概要

(b)　既存のSDBデータベースを横分割するときに利用する

既存のSDBデータベースを横分割する場合，pdsdbrogコマンドでレコードをいったんアンロードしてアンロードデータファイルを作成します。レコード型の定義を変更したあとに，アンロードデータファイルを入力データファイルにしてpdsdblodコマンドでデータロードを行います。既存のSDBデータベースを横分割する場合の流れを次の図に示します。

図13‒4　既存のSDBデータベースを横分割する場合の流れ

(c)　ほかのHiRDBシステムにSDBデータベースを移行するときに利用する

ほかのHiRDBシステムにSDBデータベースを移行する場合，pdsdbrogコマンドでレコードをいったんアンロードしてアンロードデータファイルを作成します。そのアンロードデータファイルを入力データファイルにしてpdsdblodコマンドでほかのHiRDBシステムのデータベースにデータロードを行います。ほかのHiRDBシステムにSDBデータベースを移行する場合の流れを次の図に示します。

図13‒5　ほかのHiRDBシステムにSDBデータベースを移行する場合の流れ

なお，ほかのHiRDBシステムにSDBデータベースを移行する場合は，次に示す条件をすべて満たす必要があります。

移行元と移行先で，バイトオーダ，文字コード，HiRDBのバージョン，およびHiRDBのアドレッシングモードが同じであること

移行元と移行先のSDBデータベース定義およびSDBデータベース格納定義が同じであること※

注※　次に示す条件を除きます。

RDエリア名およびRDエリア数（シーケンシャルインデクス用，格納レコード用，二次インデクス用）

SDBデータベースの横分割条件

上記の条件を満たしていない場合，移行先のHiRDBシステムでSDBデータベースを正しく格納できません。ただし，移行先のHiRDBシステムでデータロードする際に，論理エラーのチェックが行われるため，論理エラーと判定されたレコードは格納されません。

参考

HiRDBシステム内でデータを移行することはできません。

(d)　アンロードデータファイルをUAPの入力情報として利用する

アンロードデータファイルのプリフィックス部に，データベースキー値，キーのサイズ，およびユーザデータサイズなどの情報を出力できます。プリフィックス部に出力されるこれらの情報をTMS-4V/SP情報といいます。

アンロードデータファイルをUAPの入力情報として利用する場合などは，TMS-4V/SP情報を使用してください。

アンロードデータファイルをUAPの入力情報として利用する場合の流れを次の図に示します。

図13‒6　アンロードデータファイルをUAPの入力情報として利用する場合の流れ

注

ここで説明している運用方法は，TMS-4V/SPから移行したUAPを使用することを想定した運用方法です。

アンロードデータファイルのプリフィックス部にTMS-4V/SP情報を出力するかどうかは，unload文のunldkindオペランドで指定します。

また，4V DAMのSDBデータベースの場合は，afmtypeオペランドで出力形式を選択できます。

13.2　コマンドの形式

　pdsdbrog 制御文ファイル名

制御文ファイル名：

pdsdbrog制御文を指定した制御文ファイルの名称を絶対パスまたは相対パスで指定します。pdsdbrog制御文については，次の「13.3　pdsdbrog制御文」で説明します。

13.3　pdsdbrog制御文

pdsdbrog制御文には，pdsdbrogコマンドの動作条件を指定します。pdsdbrog制御文は，environment文，unload文，およびdbinf文で構成されています。ここでは，各文の指定形式と各文に指定するオペランドについて説明します。

注意事項

pdsdbrog制御文はenvironment文，unload文，dbinf文の順に指定してください。また，environment文とunload文は必ず指定してください。

pdsdbrog制御文はテキストファイルに作成します。テキストファイルを保存する際，pdsetupコマンド実行時に指定した文字コード種別で保存してください。

環境変数LANGまたはクライアント環境定義のPDLANGオペランドで，使用する文字コードにUTF-8を指定した場合，pdsdbrog制御文を記述したファイルにはBOMを持つファイルが指定できます（BOMを読み飛ばします）。

pdsdbrog制御文中にコメントは記述できません。

13.3.1　environment文

environment文には，pdsdbrogコマンドの基本的な動作条件を指定します。

指定形式

 environment

       schema = SDBデータベース名

     〔exectime = pdsdbrogコマンドの実行時間の上限〕

     〔recnomsg = 処理経過メッセージの出力間隔〕

     〔generation = 世代番号〕

●schema = SDBデータベース名

〜＜識別子＞((1〜30バイト))

アンロードを実行するSDBデータベースの名称を指定します。SDBデータベース定義のSCHEMA句に指定したSDBデータベース名を指定します。

SDBデータベース名を引用符（''）で囲んだ場合，英大文字と英小文字が区別されます。引用符（''）で囲まない場合，すべて英大文字として扱われます。

●exectime = pdsdbrogコマンドの実行時間の上限

〜＜符号なし整数＞((0〜35,791,394))（単位：分）

pdsdbrogコマンドの実行時間の上限を分単位で指定します。このオペランドに指定した時間を超えてもpdsdbrogコマンドの処理が完了しない場合，pdsdbrogコマンドを強制終了します。このとき，無応答障害の原因調査のための障害情報が$PDDIR/spool/saveディレクトリ下に出力されます。出力される障害情報を次に示します。

コアファイル

.debファイル

コマンド名<障害情報の出力日時>プロセスID.txtファイル※

注※

このファイルには，次に示すコマンドの実行結果が出力されます。

・pdls -d lck

・pdls -d rpc -a

なお，このオペランドは無応答障害の検知を目的としています。したがって，pdsdbrogコマンドの予想実行時間に対して，十分に余裕を持たせた時間を指定してください。例えば，pdsdbrogコマンドの予想実行時間が7分程度の場合，このオペランドには20分ぐらいの時間を指定してください。

アンロードを夜間バッチとして実行する場合などにこのオペランドの指定を推奨します。このオペランドを指定しておくと，通信障害（一時的な障害を含む）やディスク障害などが発生して，pdsdbrogコマンドが無応答状態になった場合，pdsdbrogコマンドを自動的に異常終了させることができます。これによって，pdsdbrogコマンドの無応答状態が，UAPやほかのコマンドの実行に影響が及ぶのを防ぐことができます。

《留意事項》

このオペランドに0を指定した場合は，pdsdbrogコマンドの実行時間の上限は設定されません。

このオペランドを省略した場合，システム定義のpd_utl_exec_timeオペランド，またはpd_cmd_exec_timeオペランドに指定した時間が，pdsdbrogコマンドの実行時間の上限になります。pd_utl_exec_timeオペランド，およびpd_cmd_exec_timeオペランドについては，マニュアル「HiRDB Version 9 システム定義」を参照してください。

オペランドの優先順位は高い順に次のとおりです（優先順位は1の指定がいちばん上位です）。

優先順位

指定個所

オペランド名

1

pdsdbrog制御文のenvironment文

exectime

2

システム定義

pd_utl_exec_time

3

システム定義

pd_cmd_exec_time

●recnomsg = 処理経過メッセージの出力間隔

〜＜符号なし整数＞((1〜1,000))《10》（単位：1万件）

アンロードの処理経過メッセージの出力間隔を，1万件（レコード）単位で指定します。例えば，このオペランドに5を指定すると，アンロードが5万件（レコード）終わるごとに経過メッセージ（KFPB63014-I）が出力されます。

●generation = 世代番号

〜＜符号なし整数＞((0〜10))

処理対象のRDエリアの世代番号を指定します。このオペランドは，インナレプリカ機能使用時に指定します。

なお，SD FMBのSDBデータベースを使用している場合，このオペランドは省略してください。

0：オリジナルRDエリアを処理対象とする場合に指定します。

1〜10：指定した世代のレプリカRDエリアを処理対象とする場合に指定します。

このオペランドを省略した場合，カレントRDエリアが処理対象になります。カレントRDエリア以外のRDエリアを処理対象とする場合に，このオペランドを指定してください。

《運用上の注意事項》

レプリカRDエリアに対してRDエリア単位のアンロードを実行する場合，unload文のareaオペランドにはオリジナルRDエリア名を指定してください。このオペランドには処理対象のRDエリアの世代番号を指定してください。

pdsdbrogコマンドでレコードをアンロードし，pdsdbloadコマンドでデータロードする場合，アンロードとデータロードの実行時に同じ世代番号を指定してください。異なる世代番号を指定してもチェックアウトされないため，指定された世代番号のRDエリア（アンロードを実行したRDエリアとは異なるRDエリア）にデータロードされます。

参考

このオペランドに指定した世代番号のRDエリアがあるかどうかをチェックします。チェックの結果，該当するRDエリアがない場合，KFPB63305-Eメッセージを出力してリターンコード8でpdsdbrogコマンドが終了します。RDエリア間のレプリカステータスが不一致の場合，KFPB63306-Eメッセージを出力してリターンコード8でpdsdbrogコマンドが終了します。

13.3.2　unload文

unload文には，アンロード処理に関する情報を指定します。

指定形式

 unload

      record = レコード型名

    〔server = バックエンドサーバ名〕

    〔area = アンロード対象のRDエリア名〕

      unldfile = アンロードデータファイル名

    〔unldinf = アンロードの実行結果ファイル名〕

      prefix = プリフィクス部の長さ

      unldkind = ｛lod｜lod_4v｝

    〔afmtype = ｛type1｜type2｝〕

●record = レコード型名

〜＜識別子＞((1〜30バイト))

アンロードを実行するレコードのレコード型名を指定します。SDBデータベース定義のRECORD句に指定したレコード型名を指定します。

4V FMBまたはSD FMBのSDBデータベースの場合は，ルートレコードのレコード型名を指定してください。4V AFMのSDBデータベースの場合は，仮想ルートレコードのレコード型名を指定してください。

●server = バックエンドサーバ名

〜＜識別子＞((1〜8バイト))

アンロード対象のレコードを格納しているRDエリアを管理しているバックエンドサーバの名称を指定します。

英大文字と英小文字の指定が区別されます。

このオペランドの指定は省略することができます。

●area = アンロード対象のRDエリア名

〜＜識別子＞((1〜30バイト))

SDBデータベースが横分割されている場合，アンロード対象のRDエリアを指定します。SDBデータベースが横分割されている場合，RDエリア単位にアンロードを実行する必要があるため，このオペランドを必ず指定してください。

例えば，次に示すようにSDBデータベースが横分割されている場合，このオペランドにRDAREA01を指定すると，RDAREA01に格納されているレコードがアンロード対象になります。

《インナレプリカ機能使用時の注意事項》

レプリカRDエリアに対してアンロードを実行する場合，このオペランドにはオリジナルRDエリア名を指定してください。そして，environment文のgenerationオペランドに，処理対象RDエリアの世代番号を指定してください。

●unldfile = アンロードデータファイル名

〜＜パス名＞((1〜1,023バイト))

アンロードデータファイル名を絶対パスで指定します。アンロードデータファイルは，アンロード対象のSDBデータベースがあるサーバマシンに作成されます。そのサーバマシンのパス名を指定します。

《注意事項》

このオペランドに指定するファイルのディレクトリは事前に作成しておいてください。また，作成したディレクトリの実行権限，読み込み権限，および書き込み権限をHiRDB管理者に対して付与してください。ディレクトリがない場合，または権限がない場合は，pdsdbrogコマンドがエラーになります。

不正なアンロードデータファイル名を指定した場合，リターンコード12でpdsdbrogコマンドが異常終了することがあります。

このオペランドに指定したファイルがすでに存在する場合は一度削除してから再作成されます。削除処理はファイルのオープン前に実行するため，パス名が不正な場合などは削除処理（システムコール：unlink関数）がエラーとなり，pdsdbrogコマンドが異常終了することがあります。

参考

アンロードデータファイルの入出力時に使用されるバッファ長は，システム定義のpd_utl_file_buff_sizeオペランドの値が適用されます。

●unldinf = アンロードの実行結果ファイル名

〜＜パス名＞((1〜1,023バイト))

アンロードが完了すると，アンロードの実行結果が実行結果ファイルに出力されます。このオペランドには，実行結果ファイルの名称を絶対パスで指定します。実行結果ファイルは，処理対象RDエリアがあるサーバマシンに作成されます。

このオペランドを省略した場合，次に示すどれかのディレクトリ下に実行結果ファイルが作成されます（優先順位は1の指定がいちばん上位です）。

システム定義のpd_tmp_directoryオペランドに指定したディレクトリ

環境変数TMPDIRに指定したディレクトリ

/tmpディレクトリ

実行結果ファイルの名称はSDBROG-xxxxxxxxxになります。xxxxxxxxxは，ファイル作成時間，プロセスIDなどが含まれた文字列になります。作成されたファイルの名称はKFPB63032-Iメッセージで確認できます。

《注意事項》

このオペランドに指定するファイルのディレクトリは事前に作成しておいてください。また，作成したディレクトリの実行権限，読み込み権限，および書き込み権限をHiRDB管理者に対して付与してください。ディレクトリがない場合，または権限がない場合は，pdsdbrogコマンドがエラーになります。

このオペランドに指定したファイルがすでに存在する場合，そのファイルは上書きされます。

実行結果ファイルに出力される情報については，「13.7　アンロードの実行結果ファイルの出力形式」を参照してください。

●prefix = プリフィクス部の長さ

〜＜符号なし整数＞((0〜32,767))（単位：バイト）

アンロードデータファイルに出力するレコードのプリフィクス部の長さをバイト単位で指定します。次に示すどれかに該当する場合には，このオペランドに1以上の値を指定してください。

アンロードデータファイルを入力データファイルとしてデータロードするときに，USERポインタフラグを引き継ぐ場合※1

アンロードデータファイルを入力データファイルとしてデータロードするときに，事前割り当てページ数を引き継ぐ場合※2

アンロードデータファイルを入力データファイルとしてデータロードするときに，ページ切り替えフラグを設定する場合※3

注※1

pdsdblodによるデータロード，またはレコードの格納（STORE）によるデータ格納時に設定したUSERポインタフラグを，データベースの再編成後の4V FMBのSDBデータベースに引き継ぐ場合は，dbinf文のuserpflgオペランドを必ず指定してください。

dbinf文のuserpflgオペランドの指定を省略するとUSERポインタフラグを設定しない状態でリロードされます。

注※2

pdsdblodによるデータロード，またはレコードの格納（STORE）によるデータ格納時に設定した事前割り当てページ数を，データベースの再編成後の4V FMBのSDBデータベースに引き継ぐ場合は，dbinf文のpagenumオペランドを必ず指定してください。

dbinf文のpagenumオペランドの指定を省略すると事前割り当てページを確保しない状態でリロードされます。

注※3

ページ切り替えフラグはアンロードの対象になりません。アンロードデータファイル中のプリフィクス部にページ切り替えフラグを設定する領域が用意されるだけです。

このため，データロード時にページ切り替えによる格納配置制御をする場合は当該領域を編集する必要があります。

対処方法の詳細については，「13.8　ページ切り替えフラグの扱い【4V FMB，4V AFM】」を参照してください。

アンロードデータファイルを入力データファイルとしてデータロードする場合，このオペランドで指定するプリフィクス長と，pdsdblod制御文のload文のprefixオペランドで指定するプリフィクス長を同じにする必要があります。プリフィクス長が異なると，データロードができません。

ページ切り替えフラグの設定の詳細については，「13.8　ページ切り替えフラグの扱い【4V FMB，4V AFM】」を参照してください。

《注意事項》

プリフィクス部が必要ない場合は0を指定してください。

unldkindオペランドにlod_4vを指定した場合は，このオペランドに94を指定してください。

プリフィクス部については，「12.6.1(3)　プリフィクス部【4V FMB，4V AFM】」を参照してください。ここで説明しているL1の値をこのオペランドに指定します。

参考

このオペランドに1以上を指定した場合，アンロードデータファイル中のプリフィクス部は0（ゼロ）で初期化されます。

●unldkind =｛lod｜lod_4v｝

アンロードデータファイルの種類を指定します。このオペランドの指定によって，アンロードデータファイルのプリフィクス部に出力される情報が決まります。アンロードデータファイルの使用目的に従って，このオペランドを指定してください。

lod：

アンロードデータファイルをデータロードの入力データファイルとして使用する場合（UAPの入力情報として使用しない場合）に指定します。

lod_4v：

アンロードデータファイルをUAPの入力情報として使用する場合に指定します。この場合，プリフィクス部にはTMS-4V/SP情報が出力されます。出力されるTMS-4V/SP情報については，「13.6.3　プリフィクス部の出力形式（unldkindオペランドにlod_4vを指定した場合）【4V FMB，4V AFM】」を参照してください。

なお，4V DAMのSDBデータベースをアンロードする場合は，TMS-4V/SP情報の出力形式を，このオペランドの次に説明するafmtypeオペランドで指定できます。

また，作成されたアンロードデータファイルは，データロードの入力データファイルとしても使用できます。

注意事項

SD FMBのSDBデータベースの場合，lod_4vは指定できません。

《注意事項》

このオペランドにlod_4vを指定する場合の注意事項を次に示します。

prefixオペランドには，必ず94を指定してください。

dbinf文のuserpflgオペランドを指定する場合は，必ず77を指定してください。

4V FMBのSDBデータベースのレコードをアンロードする場合，次に示す制限があります。

・ルートレコード型で指定したデータベースキー（SDBデータベース定義のTYPE句のデータ種別1にKを指定した構成要素の合計長）が36バイト以下であること

・RDエリア分割キーが4バイト以下であること

・レコード型名が8バイト以下であること

上記の制限値を超えた場合，pdsdbrogコマンドがエラーになります。

4V AFMのSDBデータベースのレコードをアンロードする場合，次に示す制限があります。

・SDBデータベース名が4バイト以下であること（5バイト以降は切り捨てられます）

・afmtypeオペランドにtype2を指定した場合，レコード型名が8バイト以下であること（ただし，仮想ルートレコード型名を除く）

・データベースキーが32バイト以下であること※

注※　この制限値を超えた場合，pdsdbrogコマンドがエラーになります。

●afmtype =｛type1｜type2｝

4V DAMのSDBデータベースのレコードをアンロードする場合に，アンロードデータファイルのプリフィクス部に出力するTMS-4V/SP情報の出力形式を指定します。出力形式の詳細については，「13.6.3　プリフィクス部の出力形式（unldkindオペランドにlod_4vを指定した場合）【4V FMB，4V AFM】」を参照してください。

type1：

TMS-4V/SP情報にSDBデータベース名を出力する形式を選択する場合に指定します。

type2：

TMS-4V/SP情報にレコード型名を出力する形式を選択する場合に指定します。

《前提条件》

このオペランドは，4V DAMのSDBデータベースのレコードをアンロードする場合に指定します。4V FMBまたはSD FMBのSDBデータベースをアンロードする場合は，このオペランドを指定できません。

unldkindオペランドにlod_4vを指定している必要があります。

《注意事項》

4V FMBまたはSD FMBのSDBデータベースをアンロードする場合にこのオペランドを指定すると，pdsdbrogコマンドがエラーになります。

4V MAM，4V TAM，または4V SAMのSDBデータベースをアンロードする場合にこのオペランドにtype2を指定すると，pdsdbrogコマンドがエラーになります。4V MAM，4V TAM，および4V SAMのSDBデータベースの場合は，TMS-4V/SP情報はtype1の形式で出力されます。

参考

TMS-4V/SPでtype2に相当するデータベースとは，次に示す2つの条件を満たすデータベースです。

動的割り当て型の4V DAMのSDBデータベースである。

セグメントレベルキーの定義がない。

13.3.3　dbinf文【4V FMB】

アンロードデータファイルにUSERポインタフラグを格納する場合にdbinf文を指定します。

4V AFMまたはSD FMBのSDBデータベースの場合，dbinf文は指定できません。

指定形式

 dbinf

     〔userpflg = （USERポインタフラグの格納位置）〕
     〔pagenum = （事前割り当てページ数の格納位置）〕

●userpflg = （USERポインタフラグの格納位置）

〜＜符号なし整数＞((0〜32,766))

USERポインタフラグの格納位置を指定します。プリフィクス部の先頭を0とし，USERポインタフラグの格納位置を指定してください。

子レコードに対してUSERポインタで親子集合の接続がある場合，このオペランドに指定した位置にC'U'が格納されます。そのほかの場合は，unldkindオペランドの指定値によって次の値が格納されます。

unldkindオペランドにlodを指定している場合：0x00

unldkindオペランドにlod_4vを指定している場合：半角空白

なお，このオペランドに指定する格納位置は，次に示す条件を満たす必要があります。

格納位置＋1≦プリフィクス部の長さ

pagenumオペランドで指定した格納位置と重ならないこと

《注意事項》

pdsdblodコマンドでデータロードをする際，pdsdblod制御文のdbinf文のuserpflgオペランドには，このオペランドで指定した位置を指定してください。このオペランドを省略した場合は，pdsdblod制御文のdbinf文のuserpflgオペランドも省略してください。

unload文のunldkindオペランドにlod_4vを指定した場合にこのオペランドを指定するときは，このオペランドに77を指定してください。

userpflgオペランドを省略してpdsdbrogコマンドを実行した場合，USERポインタを持つ子レコードをアンロードすると，pdsdbrogコマンドは警告メッセージを出力しますが，処理は続行してリターンコード4で終了します。このため，そのままpdsdblodコマンドでデータロードをすると，USERポインタによる親子集合の接続関係が初期化されます。

●pagenum = （事前割り当てページ数の格納位置）

〜＜符号なし整数＞((0〜32,763))

事前割り当てページ数の格納位置を指定します。プリフィクス部の先頭を0として，事前割り当てページ数の格納位置を指定してください。指定された位置から4バイトの領域へ事前割り当てページ数を設定します。

アンロードしたルートレコードに事前割り当てページ数の設定がある場合，ページ数を格納します。事前割り当てページ数の設定がないレコードの場合は0を設定します。

なお，このオペランドに指定する格納位置は，次に示す条件を満たす必要があります。

格納位置＋4≦プリフィクス部の長さ

userpflgオペランドで指定した格納位置と重ならないこと

《注意事項》

pdsdblodコマンドでデータロードをする際，pdsdblod制御文のdbinf文のpagenumオペランドには，このオペランドで指定した位置を指定してください。このオペランドを省略した場合は，pdsdblod制御文のdbinf文のpagenumオペランドも省略してください。

pagenumオペランドを省略してpdsdbrogコマンドを実行した場合，事前ページ割り当て機能を適用しているファミリのルートレコードをアンロードすると，pdsdbrogコマンドは警告メッセージを出力しますが，処理は続行してリターンコード4で終了します。このため，そのままデータロードをすると，事前ページ割り当て機能が適用されません。

13.3.4　pdsdbrog制御文の各オペランドの指定可否

pdsdbrog制御文の各オペランドの指定可否を次の表に示します。

表13‒1　pdsdbrog制御文の各オペランドの指定可否

項番

オペランド名

データベースの種類

備考

4V FMB

4V AFM

SD FMB

1

environment文

schema

○

○

○

environment文は必ず指定してください。

2

exectime

△

△

△

3

recnomsg

△

△

△

4

generation

△

△

△

5

unload文

record

○

○

○

unload文は必ず指定してください。

6

server

△

△

△

7

area

△

△

△

8

unldfile

○

○

○

9

unldinf

△

△

△

10

prefix

○

○

○

11

unldkind

○

○

○

12

afmtype

×

△

×

13

dbinf文

userpflg

△

×

×

アンロードデータファイルにUSERポインタフラグを格納する場合にdbinf文を指定してください。

14

pagenum

△

×

×

事前ページ割り当て機能を適用したSDBデータベースの場合はdbinf文を指定してください。

（凡例）

○：必ず指定するオペランドです。

△：指定を検討するオペランドです。

×：指定不要なオペランドです。

13.3.5　pdsdbrog制御文の記述規則

pdsdbrog制御文の記述規則は，pdsdblod制御文の記述規則と同じです。pdsdblod制御文の記述規則については，「12.3.8　pdsdblod制御文の記述規則」を参照してください。

13.4　規則および注意事項

pdsdbrogコマンド実行時の規則および注意事項について説明します。

13.4.1　規則

(1)　pdsdbrogコマンドの実行条件

pdsdbrogコマンドは，HiRDBが稼働中のときだけ実行できます。

pdsdbrogコマンドは，システムマネジャがあるサーバマシンで実行してください。

pdsdbrogコマンドの実行時には，次のサーバが稼働している必要があります。

システムマネジャ

1つ以上のフロントエンドサーバ

ディクショナリサーバ

アンロード対象のRDエリアを管理しているバックエンドサーバ

RDエリアの状態がpdsdbrogコマンドの実行条件を満たしていない場合，pdsdbrogコマンドはエラーになります。この場合，「付録I.1　RDエリアの状態によるユティリティの実行可否」を参照して，RDエリアの状態を変更してください。

SDBディレクトリ情報が常用常駐領域に常駐化されていないと，pdsdbrogコマンドが実行できません。また，全ユニットの常用常駐領域中のSDBディレクトリ情報が一致している必要があります。

(2)　コマンドの実行者

pdsdbrogコマンドを実行する際，CONNECT権限が必要になります。

(3)　コマンド実行前の作業

クライアント環境定義のPDUSERオペランドにpdsdbrogコマンドの実行ユーザの認可識別子とパスワードを指定してください。

このとき，OSログインユーザの簡易認証機能は使用できません。

pdsdbrog制御文を指定した制御文ファイルを準備し，システムマネジャがあるサーバマシンに格納してください。また，制御文ファイルを格納するディレクトリに対する実行権限，読み込み権限，および書き込み権限をpdsdbrogコマンドの実行ユーザに付与してください。

pdsdbrog制御文のオペランドに指定するディレクトリ（実行結果ファイルを格納するディレクトリなど）は事前に作成しておいてください。また，作成したディレクトリの実行権限，読み込み権限，および書き込み権限をHiRDB管理者に付与してください。

PDDIR，PDCONFPATH，およびLANG環境変数が正しく設定されているかを確認してください。

pdsdbrogコマンドを実行する前に，pdsdbarc -aコマンドでSDBディレクトリ情報に関する情報を表示し，全ユニットの常用常駐領域のSDBディレクトリ情報が一致しているかどうかを確認してください。

(4)　推奨する運用方法

pdsdbrogコマンドを実行する前に，処理対象のRDエリアをpdholdコマンドで閉塞することを推奨します。

参考

pdsdbrogコマンドの実行中は処理対象のRDエリアにアクセスできません。UAPやほかのコマンドがアクセスしようとした場合，排他待ち状態になり，排他待ち時間のタイムアウトまでUAPやコマンドにエラーが返りません。pdholdコマンドでRDエリアを閉塞しておくと，UAPやほかのコマンドがRDエリアにアクセスしたときにすぐにエラーが返ります。

13.4.2　注意事項

(1)　実行環境に関する注意事項

標準出力または標準エラー出力へのメッセージ出力が抑止されている環境でpdsdbrogコマンドを実行しないでください。pdsdbrogコマンドの実行中は，標準出力に経過メッセージが出力されます。また，エラーの発生時には，標準エラー出力にエラーメッセージが出力されます。そのため，標準出力または標準エラー出力へのメッセージ出力が抑止されている環境でpdsdbrogコマンドを実行した場合，メッセージの出力待ちでpdsdbrogコマンドが無応答状態になったり，pdsdbrogコマンドが異常終了したりするおそれがあります。

なお，標準出力および標準エラー出力に出力するメッセージの順番や数は，メッセージログファイルやsyslogfileに出力されるメッセージの順番や数と一致しないことがあります。メッセージの順番や数を正確に把握したい場合は，メッセージログファイルまたはsyslogfileに出力されたメッセージを確認してください。

pdsdbrogコマンドをキャンセルする場合は，pdcancelコマンドを実行してください。pdsdbrogコマンドのキャンセルに，OSのkillコマンドを使用しないでください。killコマンドでpdsdbrogコマンドをキャンセルすると，ユニットが異常終了するおそれがあります。

OSがサポートしていない文字コードは使用できません。pdsdbrog制御文にASCIIコード以外の文字がある場合は，pdsdbrog制御文に記述する文字コード，LANG環境変数に設定した文字コード，およびpdsetupコマンドで指定した文字コードを合わせる必要があります。文字コードが合っていない場合は，pdsdbrogコマンドがエラーになることがあります。

アンロードの際は，PACKED DECIMAL FIXED型の符号部は変換されません。PACKED DECIMAL FIXED型の符号部はデータロードの際に変換されます。

(2)　系切り替え機能を使用している場合の注意事項

アンロードデータファイルは通常ファイルとして作成されるため，アンロードの実行中に系切り替えが発生するとOSのI/Oバッファが無効になり，アンロードデータファイルの内容が保証されなくなります。そのため，アンロードの実行中に系切り替えが発生した場合は，系が切り替わったあとにアンロードを再実行してください。

(3)　pdsdbrogコマンドとpdrorgコマンドとの仕様差について（参考）

アンロードを実行する次の2つのコマンドは，コマンドの実行時にBES名とRDエリア名を指定しますが，指定の組み合わせが同じであっても，コマンドの実行可否が異なることがあります。

SDBデータベースのレコードをアンロードするpdsdbrogコマンド

表のデータをアンロードするpdrorgコマンド

例えば，横分割しているSDBデータベースのレコードをアンロードする場合，pdsdbrogコマンドの実行時にサーバ名（serverオペランド）を指定してRDエリア名（areaオペランド）を省略すると，エラーになります。

一方，横分割している表のデータをアンロードする場合，pdrorgコマンドの実行時にサーバ名（unload文）を指定してRDエリア名（-rオプション）を省略してもエラーになりません。各コマンドのオプション，制御文の説明を確認してからデータロードを実行するようにしてください。pdrorgコマンドについては，マニュアル「HiRDB Version 9 コマンドリファレンス」を参照してください。

13.5　リターンコード

pdsdbrogコマンドのリターンコードの意味および対処を次の表に示します。

表13‒2　pdsdbrogコマンドのリターンコードの意味および対処

リターンコード

意味

対処

0

pdsdbrogコマンドが正常終了しました。

なし。

4

pdsdbrogコマンドの処理が完了しました。ただし，警告レベルのエラーが発生しました。

出力されたメッセージを参照して，メッセージの対処に従ってください。

8

pdsdbrog制御文のオペランドの指定に誤りがあるため，pdsdbrogコマンドが実行できませんでした。

出力されたメッセージを参照して，pdsdbrog制御文のオペランドの指定を見直してください。

12

処理が続行できないエラーが発生し，pdsdbrogコマンドが異常終了しました。

「13.9.1　pdsdbrogコマンドが異常終了した場合」を参照して対処してください。

13.6　アンロードデータファイルの出力形式

アンロードデータファイルに出力されるレコードは，データロードの入力データと同じ形式で出力されます。ここでは，アンロードデータファイルに出力されるレコードのデータ形式とレコードの格納順序について説明します。

13.6.1　レコードのデータ形式

アンロードデータファイルに出力されるレコードのデータ形式を次の図に示します。

図13‒7　アンロードデータファイルに出力されるレコードのデータ形式

（凡例）

L1：プリフィクス部の長さで，0〜32,767バイトになります。

L2：SDBデータベース定義で定義した全構成要素サイズの合計長になります。

レコード内の各項目（レコード長，レコード型名，プリフィクス部，およびレコードデータ）については，「12.6.1　レコードのデータ形式」を参照してください。

プリフィクス部の格納規則

ページ切り替えフラグはアンロード対象になりません。

USERポインタフラグは，pdsdbrog制御文のdbinf文のuserpflgオペランドで指定した位置に格納されます。設定値はC'U'です。

unload文のunldkindオペランドにlod_4vを指定した場合

unload文のunldkindオペランドにlod_4vを指定した場合，プリフィクス部にTMS-4V/SP情報が出力されます。出力形式の詳細については，「13.6.3　プリフィクス部の出力形式（unldkindオペランドにlod_4vを指定した場合）【4V FMB，4V AFM】」を参照してください。

13.6.2　レコードの格納順序

アンロードデータファイルのレコード格納順序はデータベースの種類によって異なります。

(1)　4V FMBまたはSD FMBのSDBデータベースの場合

次に示す実現値モデルを例にして，アンロードデータファイルのレコード格納順序を説明します。

この場合，アンロードデータファイルのレコード格納順序は次のようになります。

レコード格納順序の規則

階層構造間の格納順序の規則を次に示します。

階層構造間の格納順序は，ルートレコード型に対するシーケンシャルインデクス順となります。

同一階層構造内の格納順序の規則を次に示します。

レコード型の上位レベルから下位レベルに親子集合に従って格納されます。

同一レベルのレコード型が複数ある場合，SDBデータベース定義のSET句の定義順に親子集合に従って格納されます。

同一レコード型のデータが複数ある場合，NEXTポインタの方向の順に格納されます。このデータに下位レベルのレコード型のデータがある場合は，下位レベルのデータが先に格納されます。

(2)　4V AFMのSDBデータベースの場合

次に示す実現値モデルを例にして，アンロードデータファイルのレコード格納順序を説明します。

この場合，アンロードデータファイルのレコード格納順序は次のようになります。

レコード格納順序の規則

仮想ルートレコード型に対するシーケンシャルインデクス順に格納されます。子レコード型のレコードが複数ある場合は，NEXTポインタの方向の順に格納されます。

仮想ルートレコード型のレコードはアンロードデータファイルに格納されません。

13.6.3　プリフィクス部の出力形式（unldkindオペランドにlod_4vを指定した場合）【4V FMB，4V AFM】

unload文のunldkindオペランドにlod_4vを指定した場合の，プリフィクス部のデータ形式について説明します。

(1)　4V FMBのSDBデータベースの場合

プリフィクス部のデータ形式（4V FMBのSDBデータベースの場合）を次の図に示します。

図13‒8　プリフィクス部のデータ形式（4V FMBのSDBデータベースの場合）

［説明］

図中の丸付き数字が次に示す表の項番に対応しています。

項番

項目

属性

長さ（バイト）

内容

1

レコードID

char

4

レコード種別を示す情報が格納されます。

ルートレコード型の場合："SEGR"

子レコード型の場合："SEG "

2

階層番号

unsigned char

1

レコードの階層を示す番号が格納されます。

ルートレコード型の場合：1

子レコード型の場合：2〜15

3

システム使用領域

char

5

（X'00....00'）が格納されます。

4

ルートレコードのデータベースキーのサイズ

short

2

ルートレコード型の構成要素のうち，次の構成要素の長さの合計が格納されます。

SDBデータベース定義のTYPE句のデータ種別1にKを指定した構成要素

5

RDエリア分割キー

char

4

ルートレコード型の構成要素のうち，次に示す2つの条件を満たす構成要素に対応するレコード実現値が格納されます。

SDBデータベース定義のTYPE句のデータ種別1にKを指定した構成要素

SDBデータベース定義のTYPE句のデータ種別2にAを指定した構成要素

左詰めで格納され，余りがある場合はX'00'が格納されます。

該当する構成要素がない場合は，X'00....00'が格納されます。

6

ルートレコードのデータベースキー

char

36

ルートレコードのデータベースキーのサイズの出力対象となった構成要素に対応するレコード実現値が連結されて格納されます。左詰めで格納され，余りがある場合はX'00'が格納されます。

7

レコード通番

unsigned int

4

レコード通番が格納されます。ルートレコードには1が格納され，アンロードデータファイルのレコード格納順序に従い，順次2，3，…と格納されます。アンロードデータファイルのレコード格納順序については，「13.6.2(1)　4V FMBまたはSD FMBのSDBデータベースの場合」を参照してください。

なお，レコード通番は，ルートレコードごとに1にリセットされます。

また，オーバーフローした場合（4,294,967,295を超えた場合）は，0に戻ります。

8

システム使用領域

char

12

（X'00....00'）が格納されます。

9

レコード型名

char

8

アンロード対象のレコードのレコード型名が格納されます。レコード型名は左詰めで格納され，余りがある場合は半角空白が格納されます。

10

システム使用領域

char

1

（X'00'）が格納されます。

11

USERポインタフラグ

char

1

次に示す条件をすべて満たしている場合はUが格納されます。満たしていない場合は半角空白が格納されます。

dbinf文のuserpflgオペランドが指定されている。

SDBデータベース格納定義でUSERポインタが定義されている。

子レコードに対してUSERポインタで親子集合の接続をしている。

USERポインタフラグに設定される値の意味については，「12.6.1(3)　プリフィクス部【4V FMB，4V AFM】」の「表12-10　USERポインタフラグに設定する値」を参照してください。

12

ユーザデータサイズ

short

2

アンロード対象のレコードの構成要素のうち，次の構成要素の長さの合計値が格納されます。

SDBデータベース定義のTYPE句のデータ種別1にUを指定した構成要素

13

システム使用領域

int

4

任意の番号が格納されます。

14

ページ切り替えフラグ

char

1

ページ切り替えフラグは格納されません。（X'00'）が格納されます。

15

システム使用領域

char

9

（X'00....00'）が格納されます。

(2)　4V AFMのSDBデータベースの場合

4V DAMのSDBデータベースの場合，unload文のafmtypeオペランドの指定によって，プリフィクス部のデータ形式が決まります。

4V MAM，4V TAM，および4V SAMのSDBデータベースの場合，プリフィクス部は「(a)　afmtypeオペランドにtype1を指定した場合」の形式になります。

(a)　afmtypeオペランドにtype1を指定した場合

プリフィクス部のデータ形式（afmtypeオペランドにtype1を指定した場合）を次の図に示します。

図13‒9　プリフィクス部のデータ形式（afmtypeオペランドにtype1を指定した場合）

［説明］

図中の丸付き数字が以下の表の項番に対応しています。

項番

項目

属性

長さ（バイト）

内容

1

SDBデータベース名

char

4

仮想ルートレコードの構成要素のうち，次の構成要素に対応するレコード実現値が格納されます。

SDBデータベース定義のTYPE句のデータ種別1にDを指定した構成要素

SDBデータベース名は左詰めで格納され，余りがある場合は半角空白が格納されます。また，SDBデータベース名が5バイト以上の場合は，5バイト目以降のデータを切り捨てます。

2

データベースキー

char

32

仮想ルートレコードの構成要素のうち，次の構成要素に対応するレコード実現値が連結されて格納されます。

SDBデータベース定義のTYPE句のデータ種別1にKを指定した構成要素

左詰めで格納され，余りがある場合はX'00'が格納されます。

該当する構成要素がない場合は，X'00....00'が格納されます。

3

システム使用領域

char

20

（X'00....00'）が格納されます。

4

全キー長

short

2

アンロード対象のレコードの構成要素のうち，次の構成要素の長さの合計値が格納されます。

SDBデータベース定義のTYPE句のデータ種別1にD，K，またはNを指定した構成要素

5

システム使用領域

char

26

（X'00....00'）が格納されます。

6

ページ切り替えフラグ

char

1

設定されません。（X'00'）が格納されます。

7

システム使用領域

char

9

（X'00....00'）が格納されます。

(b)　afmtypeオペランドにtype2を指定した場合

プリフィクス部のデータ形式（afmtypeオペランドにtype2を指定した場合）を次の図に示します。

図13‒10　プリフィクス部のデータ形式（afmtypeオペランドにtype2を指定した場合）

［説明］

図中の丸付き数字が以下の表の項番に対応しています。

項番

項目

属性

長さ（バイト）

内容

1

レコード型名

char

8

アンロード対象のレコードのレコード型名が格納されます。レコード型名は左詰めで格納され，余りがある場合は半角空白が格納されます。

2

データベースキー

char

32

仮想ルートレコードの構成要素のうち，次の構成要素に対応するレコード実現値が連結されて格納されます。

SDBデータベース定義のTYPE句のデータ種別1にKを指定した構成要素

左詰めで格納され，余りがある場合はX'00'が格納されます。

該当する構成要素がない場合は，X'00....00'が格納されます。

3

システム使用領域

char

16

（X'00....00'）が格納されます。

4

全キー長

short

2

アンロード対象のレコードの構成要素のうち，次の構成要素の長さの合計値が格納されます。

SDBデータベース定義のTYPE句のデータ種別1にD，K，またはNを指定した構成要素

5

システム使用領域

char

26

（X'00....00'）が格納されます。

6

ページ切り替えフラグ

char

1

設定されません。（X'00'）が格納されます。

7

システム使用領域

char

9

（X'00....00'）が格納されます。

13.7　アンロードの実行結果ファイルの出力形式

アンロード処理が完了すると，アンロードの実行結果が実行結果ファイルに出力されます。実行結果ファイルに出力される情報について例を使って説明します。

アンロードの実行結果ファイルの出力例

4V FMBのSDBデータベースでインナレプリカ機能を使用している場合の出力例を次に示します。

pdsdbrog (09-60) **** DB reorganization **** 2015-07-10 18:01:49 [1]      parallel
** record unload information list **
 server name : BES1  [2]
 schema name : FMB1  [3]
 generation  : 0     [4]
 unload kind :lod    [5]
      no[6] area-name[7]  schema-record-name[8]  record-count[9]  method-information[10]
       1    RDAREA01      FMB100                        44512     INDEX:FMB1IDX1
                          FMB111                        62936     SET(N):FMB1F11
                          FMB112                        55879     SET(N):FMB1F12
                          FMB113                        55778     SET(N):FMB1F13

［説明］

pdsdbrogコマンドを実行した日時が表示されます。

処理対象のバックエンドサーバ名が表示されます。

処理対象のSDBデータベース名が表示されます。

処理対象のRDエリアの世代番号が表示されます。0はオリジナルRDエリアを意味しています。インナレプリカ機能を使用している場合に表示されます。

作成されたアンロードデータファイルの種類が表示されます。

・lod：データロードの入力データファイルに使用するアンロードデータファイル

・lod_4v:FMB：4V FMBのSDBデータベースのTMS-4V/SP情報がプリフィクス部に出力されたアンロードデータファイル

・lod_4v:AFM(type1)：4V AFMのSDBデータベースのTMS-4V/SP情報（SDBデータベース名を出力）がプリフィクス部に出力されたアンロードデータファイル

・lod_4v:AFM(type2)：4V AFMのSDBデータベースのTMS-4V/SP情報（レコード型名を出力）がプリフィクス部に出力されたアンロードデータファイル

1から始まる通番が表示されます。

レコードをアンロードしたRDエリアの名称が表示されます。インナレプリカ機能を使用している場合，レプリカRDエリアを処理対象にしたときでもオリジナルRDエリア名が表示されます。

アンロードしたレコードのレコード型名が表示されます。※

アンロードしたレコード件数が表示されます。

レコードの検索方法が表示されます。

・INDEX:インデクス名

　インデクスによるインデクス順検索

・SET(N):親子集合型名

　親子集合によるNEXTポインタ方向への検索（正方向検索）

注※

レコード型名の表示順序の規則を次に示します。

レコード型の上位レベルから下位レベルに親子集合に従って表示されます。

同一レベルのレコード型が複数ある場合は，SDBデータベース定義のSET句の定義順に親子集合に従って表示されます。

（例）

なお，4V AFMのSDBデータベースに対するアンロードの場合，仮想ルートレコードのレコード型名は出力されません。

参考

pdsdbrogコマンドが異常終了した場合，実行結果ファイルに一部の情報が出力されないことがあります。例えば，先頭のヘッダ行だけが表示されたり，障害発生時点までの情報だけが表示されたりすることがあります。

13.8　ページ切り替えフラグの扱い【4V FMB，4V AFM】

ページ切り替えフラグはアンロードの対象になりません。そのため，ページ切り替えフラグが必要な場合は，ページ切り替えフラグを設定する必要があります。

ページ切り替えフラグの設定の流れを次に示します。

pdsdbrog制御文のprefixオペランドにプリフィクス長（1以上）を指定して，アンロードを実行します。

アンロードデータファイルを直接修正して，ページ切り替えフラグを設定します。

pdsdblod制御文に次の指定をしてデータロードを実行します。

prefixオペランドに，1で指定したプリフィクス長と同じプリフィクス長を指定する※

pagecflgオペランドにページ切り替えフラグの開始位置を指定する

注※

アンロードデータファイルを入力データファイルとしてデータロードする場合，アンロード時にprefixオペランドに指定するプリフィクス長と，データロード時にprefixオペランドに指定するプリフィクス長を同じにする必要があります。プリフィクス長が異なる場合，データロードができません。

ページ切り替えフラグについては，「12.6.1(3)　プリフィクス部【4V FMB，4V AFM】」を参照してください。

13.9　トラブルシューティング

ここでは，pdsdbrogコマンドが異常終了したときの対処方法について説明します。

13.9.1　pdsdbrogコマンドが異常終了した場合

pdsdbrogコマンドが異常終了した場合，出力されたメッセージを確認して対処してください。そのあとに，pdsdbrogコマンドを再実行してください。

参考

pdsdbrogコマンドが異常終了しても，アンロード対象のレコードに異常は発生しません。pdsdbrogコマンド実行前の状態のままです。

pdsdbrogコマンドが異常終了した場合，未完成のアンロードデータファイルが自動的に削除されないことがあります。pdsdbrogコマンドを再実行する場合は，未完成のアンロードデータファイルが上書きされるため問題ありません。pdsdbrogコマンドを再実行しない場合は，未完成のアンロードデータファイルを削除してください。

13.9.2　pdsdbrogコマンドが無応答状態になった場合

pdsdbrogコマンドが無応答状態になった場合，pdcancelコマンドでpdsdbrogコマンドをキャンセルしてください。手順を次に示します。

手順1

pdls -d prcコマンドを実行します。コマンドの実行結果は，リダイレクションでファイルに出力してください。

 pdls -d prc>出力先ファイル名

1.の実行結果を参照して，バックエンドサーバのプロセスIDを確認します。

 HOSTNAME : host01(135225)
 STATUS PID   UID    GID    SVID   TIME  PROGRAM   C-PID  C-GRP
    :   2924   :      :      :      :    pdsdbrog    :      :

PROGRAM欄にpdsdbrogと表示されている行を検索してください。この行のPID欄に表示されているプロセスID（この例では2924）が，pdsdbrogコマンド実行中のバックエンドサーバのプロセスIDです。

pdsdbrogが表示されていない場合は，手順2の方法でプロセスIDを確認してください。

pdcancelコマンドで，pdsdbrogコマンド実行中のバックエンドサーバをキャンセルします。

 pdcancel -X ユニット識別子 -i プロセスID -d

ユニット識別子には，pdsdbrogコマンドの処理対象RDエリアがあるユニットのユニット識別子を指定してください。

プロセスIDには，2.で確認したプロセスID（この例では2924）を指定してください。

手順2

pdls -d rpcコマンドを実行します。コマンドの実行結果は，リダイレクションでファイルに出力してください。

 pdls -d rpc -a>出力先ファイル名

1.の実行結果を参照して，ユティリティサーバ（pdsdbrogm）のプロセスIDを確認します。

 Server Information :
   PID     SVID     STATUS …   CLTPID
   5444    0msdrgN    :           :

SVID欄に0msdrgN（末尾のNは16進の数字）と表示されている行を検索してください。この行のPID欄に表示されているプロセスID（この例では5444）が，ユティリティサーバ（pdsdbrogm）のプロセスIDです。

なお，0msdrgNが複数表示されている場合は，CLTPID欄（サーバのプロセスと接続しているクライアントのプロセスID）を確認してください。無応答状態になったpdsdbrogコマンドのプロセスIDがCLTPID欄に表示されている行が該当する行になります。pdsdbrogコマンドのプロセスIDは，OSのpsコマンドで確認できます。

pdcancelコマンドで，ユティリティサーバ（pdsdbrogm）をキャンセルします。

 pdcancel -X ユニット識別子 -i プロセスID -d

ユニット識別子には，pdsdbrogコマンドの処理対象RDエリアがあるユニットのユニット識別子を指定してください。

プロセスIDには，2.で確認したプロセスID（この例では5444）を指定してください。

なお，無応答状態の原因調査のために，pdsdbrogコマンドのキャンセル後，pdinfogetコマンドで障害情報を取得してください。

注意事項

pdsdbrogコマンドをキャンセルする際，OSのkillコマンドを使用しないでください。killコマンドでpdsdbrogコマンドをキャンセルすると，ユニットが異常終了するおそれがあります。

13.9.3　タイムアウトが発生した場合

environment文のexectimeオペランドに指定したpdsdbrogコマンドの実行時間の上限を超えた場合，pdsdbrogコマンドが強制終了します。この場合，メッセージを確認してタイムアウトの原因を対処してください。そのあとに，pdsdbrogコマンドを再実行してください。

参考

exectimeオペランドを省略した場合，システム定義のpd_utl_exec_timeオペランド，またはpd_cmd_exec_timeオペランドに指定したタイムアウト時間が適用されます。

13.10　使用例

ここでは，pdsdbrogコマンドの使用例について説明します。

13.10.1　4V FMBのSDBデータベースのアンロードおよびデータロード

例題

SDBデータベースを再編成するために，横分割されているSDBデータベースをアンロードします。そのあと，作成したアンロードデータファイルを入力データファイルにしてデータロードします。

(1)　構成および条件

SDBデータベースの構成

SDBデータベースの構造

条件

SDBデータベース種別は4V FMBです。

インデクスFMB1_IDX01が定義されています。

アンロードおよびデータロードの対象は，RDAREA013に格納されているレコードと，RDAREA017に格納されているインデクスです。

USERポインタフラグもアンロード対象にします。

(2)　アンロードの実行例

pdsdbrogコマンドの実行例

 pdsdbrog /usr/control_rog_file

pdsdbrog制御文（/usr/control_rog_file）の例

 environment
   schema   = FMB1               ...1
   exectime = 0                  ...2
   recnomsg = 1                  ...3
 unload
   record   = FMB1_RCA           ...4
   server   = BES2               ...5
   area     = RDAREA013          ...6
   unldfile = /usr/unld_data     ...7
   unldinf  = /usr/unld_result   ...8
   prefix   = 5                  ...9
   unldkind = lod                ...10
 dbinf
   userpflg = (0)                ...11
   pagenum  = (1)                ...12

［説明］

SDBデータベース名を指定します。

コマンドの実行時間の上限を指定します。0を指定した場合，上限は設定されません。

アンロードが1万件完了するごとに経過メッセージを出力します。

ルートレコードのレコード型名を指定します。

アンロード対象のRDエリアがあるバックエンドサーバを指定します。

アンロード対象のRDエリアを指定します。

アンロードデータファイル名を指定します。

実行結果ファイル名を指定します。

プリフィクス部の長さを指定します。

データロードで使用できる入力データファイルの形式でアンロードデータファイルを出力します。

USERポインタフラグの格納位置を指定します。

事前割り当てページ数の格納位置を指定します。

(3)　データロードの実行例

pdsdblodコマンドの実行例

 pdsdblod /usr/control_lod_file

pdsdblod制御文（/usr/control_lod_file）の例

 environment
   schema   = FMB1               ...1
   logmode  = no                 ...2
   purge    = yes                ...3
   exectime = 0                  ...4
   recnomsg = 1                  ...5
   divermsg = put                ...6
 load
   type     = tree               ...7
   record   = FMB1_RCA           ...8
   server   = BES2               ...9
   area     = RDAREA013          ...10
   data     = /usr/unld_data     ...11
   storinf  = /usr/load_result   ...12
   errdata  = /usr/err_data      ...13
   prefix   = 5                  ...14
   idxmode  = create             ...15
 dbinf
   userpflg = (0)                ...16
   pagenum  = (1)                ...17

［説明］

SDBデータベース名を指定します。アンロード時に指定したSDBデータベース名を指定します。

ログレスモードでデータロードを実行します。

既存レコードを削除してデータロードを実行します。必ずyesを指定してください。

コマンドの実行時間の上限を指定します。0を指定した場合，上限は設定されません。

データロードが1万件完了するごとに経過メッセージを出力します。

ほかのRDエリアのレコードは論理エラーとします。

4V FMBのSDBデータベースの場合はtreeを指定します。

ルートレコードのレコード型名を指定します。アンロード時に指定したレコード型名を指定します。

データロード対象のRDエリアがあるバックエンドサーバを指定します。アンロード時に指定したバックエンドサーバ名を指定します。

データロード対象のRDエリアを指定します。アンロード時に指定したRDエリア名を指定します。

(2)で作成したアンロードデータファイルを入力データファイルとして指定します。

実行結果ファイル名を指定します。

論理エラー情報ファイル名を指定します。

プリフィクス部の長さを指定します。

インデクス一括作成モードでインデクスを作成します。

USERポインタフラグの開始位置を指定します。アンロード時に指定した格納位置を指定します。

事前割り当てページ数の開始位置を指定します。アンロード時に指定した格納位置を指定します。

(4)　SDBデータベースの定義

*ENTRY DICTIONARY
  SCHEMA FMB1
    DBTYPE 4V FMB
    RECORD FMB1_RCA
      2 DBKEY
       3  KEYDATA1           XCHARACTER 1   TYPE  K,A
      2  USERDA0             CHARACTER 30   TYPE  U,D
    RECORD FMB1_RCB
      2  KEYDATA1            XCHARACTER 1   TYPE  K,A
      2  DBKEY               INTEGER        TYPE  K,N
      2  USERDB0             CHARACTER 20   TYPE  U,D
    SET SETAB
      OWNER FMB1_RCA
        ORDER LAST
      MEMBER FMB1_RCB
        INSERTION AUTOMATIC
        RETENTION FIXED
      SETOPTION
        OCCURRENCE NUMBER 2147483647
    SDBOPTION
      FUNCTION
        REFER     USE
        ADD       USE
        UPDATE    USE
        ERASE     USE
        ALLERASE  NOUSE
        DBLODUTL  USE
  END SCHEMA
*ENTRY DICTIONARY
  STORAGE SCHEMA FMB1 FOR FMB1
  DBTYPE 4V
  STORAGE RECORD FMB1_RCA
    SEQUENTIAL FMB1_IDX01 FOR RECORD
      ORDER KEY ASCENDING  KEYDATA1
      WITHIN ((RDAREA015),(RDAREA016),(RDAREA017),(RDAREA018))
    WITHIN ((RDAREA011) KEYDATA1=(X'F3'),
            (RDAREA012) KEYDATA1=(X'F4'),
            (RDAREA013) KEYDATA1=(X'F5'),
            (RDAREA014) KEYDATA1=(X'F6'))
  STORAGE RECORD FMB1_RCB
    CLUSTERED SETAB
      WITHIN ((RDAREA011),(RDAREA012),(RDAREA013),(RDAREA014))
  SET SETAB
    OWNER POINTER FOR FIRST LAST USER MEMBER
    MEMBER POINTER FOR NEXT PRIOR TENANT
  SDBOPTION
  END STORAGE SCHEMA
*ENTRY DIRECTORY
  DBSCHM FMB1

13.10.2　4V FMBのSDBデータベースのアンロードおよびデータロード（インナレプリカ機能を使用したオンライン再編成の場合）

例題

インナレプリカ機能を使用して，横分割されているSDBデータベースのオリジナルRDエリア側をアンロードします。そのあと，作成したアンロードデータファイルを入力データファイルにしてオリジナルRDエリア側にデータロードします。

これによって，データベースを再編成します。

ここでは，オリジナルRDエリアの再編成中はレプリカRDエリアでオンライン業務をする例を基に説明します。

(1)　構成および条件

SDBデータベースの構成

SDBデータベースの構造

条件

SDBデータベース種別は4V FMBです。

インナレプリカ機能を使用しています。

アンロードおよびデータロードの対象とするオリジナルRDエリアはRDAREA023に格納されているレコードと，RDエリアRDAREA027に格納されているインデクスです。

オリジナルRDエリアはRDAREA023とRDAREA027です。それに対応するレプリカRDエリアはRDAREA023_1とRDAREA027_1です。その世代番号は1です。

インデクスFMB2_IDX01が定義されています。

USERポインタフラグもアンロード対象にします。

(2)　アンロードの実行例

pdsdbrogコマンドの実行例

 pdsdbrog /usr/control_rog_file

pdsdbrog制御文（/usr/control_rog_file）の例

 environment
   schema     = FMB2             ...1
   exectime   = 0                ...2
   recnomsg   = 1                ...3
   generation = 0                ...4
 unload
   record     = FMB2_RCA         ...5
   server     = BES2             ...6
   area       = RDAREA023        ...7
   unldfile   = /usr/unld_data   ...8
   unldinf    = /usr/unld_result ...9
   prefix     = 1                ...10
   unldkind   = lod              ...11
 dbinf
   userpflg   = (0)              ...12

［説明］

SDBデータベース名を指定します。

コマンドの実行時間の上限を指定します。0を指定した場合，上限は設定されません。

アンロードが1万件完了するごとに経過メッセージを出力します。

アンロード対象のオリジナルRDエリアの世代番号を指定します。

ルートレコードのレコード型名を指定します。

アンロード対象のRDエリアがあるバックエンドサーバを指定します。

アンロード対象のRDエリアを指定します。オリジナルRDエリア名を指定してください。

アンロードデータファイル名を指定します。

実行結果ファイル名を指定します。

プリフィクス部の長さを指定します。

データロードで使用できる入力データファイルの形式でアンロードデータファイルを出力します。

USERポインタフラグの格納位置を指定します。

(3)　データロードの実行例

pdsdblodコマンドの実行例

 pdsdblod /usr/control_lod_file

pdsdblod制御文（/usr/control_lod_file）の例

 environment
   schema     = FMB2             ...1
   logmode    = no               ...2
   purge      = yes              ...3
   exectime   = 0                ...4
   recnomsg   = 1                ...5
   divermsg   = put              ...6
   generation = 0                ...7
 load
   type       = tree             ...8
   record     = FMB2_RCA         ...9
   server     = BES2             ...10
   area       = RDAREA023        ...11
   data       = /usr/unld_data   ...12
   storinf    = /usr/load_result ...13
   errdata    = /usr/err_data    ...14
   prefix     = 1                ...15
   idxmode    = create           ...16
 dbinf
   userpflg   = (0)              ...17
 oreload
   midfile    = /usr/mid_file    ...18

［説明］

SDBデータベース名を指定します。アンロード時に指定したSDBデータベース名を指定します。

ログレスモードでデータロードを実行します。

既存レコードを削除してデータロードを実行します。必ずyesを指定してください。

コマンドの実行時間の上限を指定します。0を指定した場合，上限は設定されません。

データロードが1万件完了するごとに経過メッセージを出力します。

ほかのRDエリアに格納するべきレコードは論理エラーとします。

データロード対象のオリジナルRDエリアの世代番号を指定します。

4V FMBのSDBデータベースの場合はtreeを指定します。

ルートレコードのレコード型名を指定します。アンロード時に指定したレコード型名を指定します。

データロード対象のRDエリアがあるバックエンドサーバを指定します。アンロード時に指定したバックエンドサーバ名を指定します。

データロード対象のRDエリアを指定します。アンロード時に指定したオリジナルRDエリア名を指定します。

(2)で作成したアンロードデータファイルを入力データファイルとして指定します。

実行結果ファイル名を指定します。

論理エラー情報ファイル名を指定します。

プリフィクス部の長さを指定します。

インデクス一括作成モードでインデクスを作成します。

USERポインタフラグの開始位置を指定します。アンロード時に指定した格納位置を指定します。

追い付き反映キー対応表の中間ファイル名を指定します。

(4)　SDBデータベースの定義

*ENTRY DICTIONARY
  SCHEMA FMB2
    DBTYPE 4V FMB
    RECORD FMB2_RCA
      2 DBKEY
       3  KEYDATA1           XCHARACTER 1   TYPE  K,A
      2  USERDA0             CHARACTER 30   TYPE  U,D
    RECORD FMB2_RCB
      2  KEYDATA1            XCHARACTER 1   TYPE  K,A
      2  DBKEY               INTEGER        TYPE  K,N
      2  USERDB0             CHARACTER 20   TYPE  U,D
    SET SETAB
      OWNER FMB2_RCA
        ORDER LAST
      MEMBER FMB2_RCB
        INSERTION AUTOMATIC
        RETENTION FIXED
      SETOPTION
        OCCURRENCE NUMBER 2147483647
    SDBOPTION
      FUNCTION
        REFER     USE
        ADD       USE
        UPDATE    USE
        ERASE     USE
        ALLERASE  NOUSE
        DBLODUTL  USE
  END SCHEMA
*ENTRY DICTIONARY
  STORAGE SCHEMA FMB2 FOR FMB2
  DBTYPE 4V
  STORAGE RECORD FMB2_RCA
    SEQUENTIAL FMB2_IDX01 FOR RECORD
      ORDER KEY ASCENDING  KEYDATA1
      WITHIN ((RDAREA025),(RDAREA026),(RDAREA027),(RDAREA028))
    WITHIN ((RDAREA021) KEYDATA1=(X'F3'),
            (RDAREA022) KEYDATA1=(X'F4'),
            (RDAREA023) KEYDATA1=(X'F5'),
            (RDAREA024) KEYDATA1=(X'F6'))
  STORAGE RECORD FMB2_RCB
    CLUSTERED SETAB
      WITHIN ((RDAREA021),(RDAREA022),(RDAREA023),(RDAREA024))
  SET SETAB
    OWNER POINTER FOR FIRST LAST USER MEMBER
    MEMBER POINTER FOR NEXT PRIOR TENANT
  SDBOPTION
  END STORAGE SCHEMA
*ENTRY DIRECTORY
  DBSCHM FMB2

13.10.3　4V MAMのSDBデータベースのアンロードおよびデータロード

例題

SDBデータベースを再編成するために，SDBデータベースをアンロードします。そのあと，作成したアンロードデータファイルを入力データファイルにしてデータロードします。

(1)　構成および条件

SDBデータベースの構成

SDBデータベースの構造

条件

SDBデータベース種別は4V MAMです。

インデクスMAM1_IDX01〜MAM1_IDX03が定義されています。

(2)　アンロードの実行例

pdsdbrogコマンドの実行例

 pdsdbrog /usr/control_rog_file

pdsdbrog制御文（/usr/control_rog_file）の例

 environment
   schema   = MAM1              ...1
   exectime = 0                 ...2
   recnomsg = 1                 ...3
 unload
   record   = MAM1_VRTL         ...4
   server   = BES1              ...5
   unldfile = /usr/unld_data    ...6
   unldinf  = /usr/unld_result  ...7
   prefix   = 0                 ...8
   unldkind = lod               ...9

［説明］

SDBデータベース名を指定します。

コマンドの実行時間の上限を指定します。0を指定した場合，上限は設定されません。

アンロードが1万件完了するごとに経過メッセージを出力します。

仮想ルートレコードのレコード型名を指定します。

アンロード対象のRDエリアがあるバックエンドサーバを指定します。

アンロードデータファイル名を指定します。

実行結果ファイル名を指定します。

プリフィクス部の長さを指定します。

データロードで使用できる入力データファイルの形式でアンロードデータファイルを出力します。

(3)　データロードの実行例

pdsdblodコマンドの実行例

 pdsdblod /usr/control_lod_file

pdsdblod制御文（/usr/control_lod_file）の例

 environment
   schema   = MAM1              ...1
   logmode  = no                ...2
   purge    = yes               ...3
   exectime = 0                 ...4
   recnomsg = 1                 ...5
 load
   type     = single            ...6
   record   = MAM1_VRTL         ...7
   server   = BES1              ...8
   data     = /usr/unld_data    ...9
   storinf  = /usr/load_result  ...10
   errdata  = /usr/err_data     ...11
   prefix   = 0                 ...12
   idxmode  = create            ...13

［説明］

SDBデータベース名を指定します。アンロード時に指定したSDBデータベース名を指定します。

ログレスモードでデータロードを実行します。

既存レコードを削除してデータロードを実行します。必ずyesを指定してください。

コマンドの実行時間の上限を指定します。0を指定した場合，上限は設定されません。

データロードが1万件完了するごとに経過メッセージを出力します。

4V AFMのSDBデータベースの場合はsingleを指定します。

仮想ルートレコードのレコード型名を指定します。アンロード時に指定したレコード型名を指定します。

データロード対象のRDエリアがあるバックエンドサーバを指定します。アンロード時に指定したバックエンドサーバ名を指定します。

(2)で作成したアンロードデータファイルを入力データファイルとして指定します。

実行結果ファイル名を指定します。

論理エラー情報ファイル名を指定します。

プリフィクス部の長さを指定します。

インデクス一括作成モードでインデクスを作成します。

(4)　SDBデータベースの定義

*ENTRY DICTIONARY
  SCHEMA MAM1
   DBTYPE 4V  MAM
   RECORD MAM1_VRTL
    02 DBKEY01 CHARACTER 4         TYPE D,L
    02 DBKEY02 CHARACTER 4         TYPE K,L
   RECORD MAM1
    02 DBKEY01     CHARACTER 4     TYPE D,L
    02 DBKEY
     03 DBKEY02    CHARACTER 4     TYPE K,L
     03 DBKEYKN    INTEGER         TYPE K,N
    02 SORTKEY1 XCHARACTER 6       TYPE U,K,X'0000'
    02 USERFLD1 XCHARACTER 3       TYPE U,D,X'0000'
    02 USERFLD2 XCHARACTER 1       TYPE U,D,X'0000'
    02 USERFLD3 XCHARACTER 3       TYPE U,D,X'0000'
    02 USERFLD4 XCHARACTER 1       TYPE U,D,X'0000'
    02 USERFLD5 XCHARACTER 2       TYPE U,D,X'0000'
    02 USERFLD6 XCHARACTER 1       TYPE U,D,X'0000'
    02 USERFLD7 XCHARACTER 1       TYPE U,D,X'0000'
    02 USERFLD8 XCHARACTER 1       TYPE U,D,X'0000'
    02 USERFLD9 XCHARACTER 5       TYPE U,D,X'0000'
    02 USRDATA1 XCHARACTER 416     TYPE U,D,X'0000'
    FUNCTION
     REFER       USE
     ADD         USE
     UPDATE      USE
     ERASE     NOUSE
     ALLERASE  NOUSE
    RECORDID X'0001'
   SET SETM1
    OWNER MAM1_VRTL
     ORDER SORTED DUPLICATES PROHIBITED
    MEMBER MAM1
    INSERTION AUTOMATIC
    RETENTION FIXED
     KEY  ASCENDING  SORTKEY1
    SETOPTION
     OCCURRENCE NUMBER 65535
   REUSE NO
   SDBOPTION
     FUNCTION
      DBLODUTL    USE
      FORMAT    NOUSE
  END SCHEMA
*ENTRY DICTIONARY
  STORAGE SCHEMA  MAM1  FOR  MAM1
   DBTYPE 4V
   STORAGE RECORD MAM1_VRTL
    SEQUENTIAL  MAM1_IDX01  FOR RECORD
     ORDER KEY ASCENDING  DBKEY01,DBKEY02
     WITHIN RDAREA032
    WITHIN RDAREA031
   STORAGE RECORD MAM1
    CLUSTERED SETM1
     WITHIN RDAREA031
     POINTER AREA SIZE 0
     SECONDARY INDEX MAM1_IDX02
       ORDER KEY ASCENDING  DBKEY01,DBKEY02,DBKEYKN
       WITHIN RDAREA032
     SECONDARY INDEX MAM1_IDX03
       ORDER KEY ASCENDING  DBKEY01,DBKEY02,SORTKEY1
       WITHIN RDAREA032
   SET SETM1
    OWNER POINTER FOR FIRST LAST MEMBER
    MEMBER POINTER FOR NEXT PRIOR TENANT
   SDBOPTION
     KEYDEF DBKEY01
      DATA 'MAM1'
     KEYDEF DBKEY02
      DATA 'AAAA'
  END STORAGE SCHEMA
*ENTRY DIRECTORY
  DBSCHM MAM1

13.10.4　SD FMBのSDBデータベースのアンロードおよびデータロード

例題

SDBデータベースを再編成するために，横分割されているSDBデータベースをアンロードします。そのあと，作成したアンロードデータファイルを入力データファイルにしてデータロードします。

(1)　構成および条件

SDBデータベースの構成

SDBデータベースの構造

条件

SDBデータベース種別はSD FMBです。

インデクスFMB1_IDX01が定義されています。

アンロードおよびデータロードの対象は，RDAREA013に格納されているレコードと，RDAREA017に格納されているインデクスです。

(2)　アンロードの実行例

pdsdbrogコマンドの実行例

 pdsdbrog /usr/control_rog_file

pdsdbrog制御文（/usr/control_rog_file）の例

 environment
   schema   = FMB1               ...1
   exectime = 0                  ...2
   recnomsg = 1                  ...3
 unload
   record   = FMB1_RCA           ...4
   server   = BES2               ...5
   area     = RDAREA013          ...6
   unldfile = /usr/unld_data     ...7
   unldinf  = /usr/unld_result   ...8
   prefix   = 0                  ...9
   unldkind = lod                ...10

［説明］

SDBデータベース名を指定します。

コマンドの実行時間の上限を指定します。0を指定した場合，上限は設定されません。

アンロードが1万件完了するごとに経過メッセージを出力します。

ルートレコードのレコード型名を指定します。

アンロード対象のRDエリアがあるバックエンドサーバを指定します。

アンロード対象のRDエリアを指定します。

アンロードデータファイル名を指定します。

実行結果ファイル名を指定します。

プリフィクス部の長さに0を指定します。

データロードで使用できる入力データファイルの形式でアンロードデータファイルを出力します。

(3)　データロードの実行例

pdsdblodコマンドの実行例

 pdsdblod /usr/control_lod_file

pdsdblod制御文（/usr/control_lod_file）の例

 environment
   schema   = FMB1               ...1
   logmode  = no                 ...2
   purge    = yes                ...3
   exectime = 0                  ...4
   recnomsg = 1                  ...5
   divermsg = put                ...6
 load
   type     = tree               ...7
   record   = FMB1_RCA           ...8
   server   = BES2               ...9
   area     = RDAREA013          ...10
   data     = /usr/unld_data     ...11
   storinf  = /usr/load_result   ...12
   errdata  = /usr/err_data      ...13
   prefix   = 0                  ...14
   idxmode  = create             ...15

［説明］

SDBデータベース名を指定します。アンロード時に指定したSDBデータベース名を指定します。

ログレスモードでデータロードを実行します。

既存レコードを削除してデータロードを実行します。必ずyesを指定してください。

コマンドの実行時間の上限を指定します。0を指定した場合，上限は設定されません。

データロードが1万件完了するごとに経過メッセージを出力します。

ほかのRDエリアのレコードは論理エラーとします。

SD FMBのSDBデータベースの場合はtreeを指定します。

ルートレコードのレコード型名を指定します。アンロード時に指定したレコード型名を指定します。

データロード対象のRDエリアがあるバックエンドサーバを指定します。アンロード時に指定したバックエンドサーバ名を指定します。

データロード対象のRDエリアを指定します。アンロード時に指定したRDエリア名を指定します。

(2)で作成したアンロードデータファイルを入力データファイルとして指定します。

実行結果ファイル名を指定します。

論理エラー情報ファイル名を指定します。

プリフィクス部の長さに0を指定します。

インデクス一括作成モードでインデクスを作成します。

(4)　SDBデータベースの定義

*ENTRY DICTIONARY
  SCHEMA FMB1
    DBTYPE SD FMB
    RECORD FMB1_RCA
      2 KEYDATA
       3  KEYDATA1           XCHARACTER 1   TYPE  K,A
      2  USERDA0             CHARACTER 30   TYPE  U,D
    RECORD FMB1_RCB
      2  KEYDATA1            XCHARACTER 1   TYPE  K,A
      2  DBKEY               INTEGER        TYPE  K,N
      2  USERDB0             CHARACTER 20   TYPE  U,D
    SET SETAB
      OWNER FMB1_RCA
        ORDER LAST
      MEMBER FMB1_RCB
        INSERTION AUTOMATIC
        RETENTION FIXED
  END SCHEMA
*ENTRY DICTIONARY
  STORAGE SCHEMA FMB1 FOR FMB1
  DBTYPE SD
  STORAGE RECORD FMB1_RCA
    SEQUENTIAL FMB1_IDX01 FOR RECORD
      ORDER KEY ASCENDING  KEYDATA1
      WITHIN ((RDAREA015),(RDAREA016),(RDAREA017),(RDAREA018))
    WITHIN ((RDAREA011) KEYDATA1=(X'F3'),
            (RDAREA012) KEYDATA1=(X'F4'),
            (RDAREA013) KEYDATA1=(X'F5'),
            (RDAREA014) KEYDATA1=(X'F6'))
  STORAGE RECORD FMB1_RCB
    CLUSTERED SETAB
      WITHIN ((RDAREA011),(RDAREA012),(RDAREA013),(RDAREA014))
  SET SETAB
    OWNER POINTER FOR FIRST LAST MEMBER
    MEMBER POINTER FOR NEXT PRIOR TENANT
  END STORAGE SCHEMA
*ENTRY DIRECTORY
  DBSCHM FMB1

13.10.5　4V FMBのSDBデータベースのアンロード（アンロードデータファイルをUAPの入力情報として使用する場合）

例題

横分割されているSDBデータベースをアンロードします。作成したアンロードデータファイルはUAPの入力情報として使用します。

(1)　構成および条件

SDBデータベースの構成

SDBデータベースの構造

条件

SDBデータベース種別は4V FMBです。

インデクスFMB4_IDX01が定義されています。

アンロードの対象は，RDAREA043に格納されているレコードです。

USERポインタフラグもアンロード対象にします。

(2)　アンロードの実行例

pdsdbrogコマンドの実行例

 pdsdbrog /usr/control_rog_file

pdsdbrog制御文（/usr/control_rog_file）の例

 environment
   schema   = FMB4               ...1
   exectime = 0                  ...2
   recnomsg = 1                  ...3
 unload
   record   = FMB4_RCA           ...4
   server   = BES2               ...5
   area     = RDAREA043          ...6
   unldfile = /usr/unld_data     ...7
   unldinf  = /usr/unld_result   ...8
   prefix   = 94                 ...9
   unldkind = lod_4v             ...10
 dbinf
   userpflg = (77)               ...11

［説明］

SDBデータベース名を指定します。

コマンドの実行時間の上限を指定します。0を指定した場合，上限は設定されません。

アンロードが1万件完了するごとに経過メッセージを出力します。

ルートレコードのレコード型名を指定します。

アンロード対象のRDエリアがあるバックエンドサーバを指定します。

アンロード対象のRDエリアを指定します。

アンロードデータファイル名を指定します。

実行結果ファイル名を指定します。

プリフィクス部の長さを指定します。必ず94を指定してください。

作成したアンロードデータファイルをUAPの入力情報として使用するため，lod_4vを指定します。

USERポインタフラグの格納位置を指定します。必ず77を指定してください。

13.10.6　4V MAMのSDBデータベースのアンロード（アンロードデータファイルをUAPの入力情報として使用する場合）

例題

SDBデータベースをアンロードします。作成したアンロードデータファイルはUAPの入力情報として使用します。

(1)　構成および条件

SDBデータベースの構成

SDBデータベースの構造

条件

SDBデータベース種別は4V MAMです。

インデクスMAM1_IDX01〜MAM1_IDX03が定義されています。

アンロードの対象は，RDAREA031に格納されているレコードです。

(2)　アンロードの実行例

pdsdbrogコマンドの実行例

 pdsdbrog /usr/control_rog_file

pdsdbrog制御文（/usr/control_rog_file）の例

 environment
   schema   = MAM1              ...1
   exectime = 0                 ...2
   recnomsg = 1                 ...3
 unload
   record   = MAM1_VRTL         ...4
   server   = BES1              ...5
   unldfile = /usr/unld_data    ...6
   unldinf  = /usr/unld_result  ...7
   prefix   = 94                ...8
   unldkind = lod_4v            ...9

［説明］

SDBデータベース名を指定します。

コマンドの実行時間の上限を指定します。0を指定した場合，上限は設定されません。

アンロードが1万件完了するごとに経過メッセージを出力します。

仮想ルートレコードのレコード型名を指定します。

アンロード対象のRDエリアがあるバックエンドサーバを指定します。

アンロードデータファイル名を指定します。

実行結果ファイル名を指定します。

プリフィクス部の長さを指定します。必ず94を指定してください。

作成したアンロードデータファイルをUAPの入力情報として使用するため，lod_4vを指定します。

14　HiRDB/SDデータベースアクセスユティリティ（pdsdbexe）【4V FMB，4V AFM】

この章では，HiRDB/SDデータベースアクセスユティリティの機能と使い方について説明します。

なお，この章では，HiRDB/SDデータベースアクセスユティリティをpdsdbexeコマンドと表記しています。

14.1　機能

pdsdbexeコマンドを使用すると，SDBデータベースを操作するDMLコマンドを標準入力から実行できます。そのため，UAPを作成しなくても，SDBデータベースのレコードの検索や，レコード実現値の格納，更新，削除などができます。

また，リダイレクトによって，標準入力および標準出力をファイルに切り替えることができるため，ファイル中に記述したDMLコマンドを実行し，その結果をファイルに出力することもできます。

pdsdbexeコマンドの概要を次の図に示します。

図14‒1　pdsdbexeコマンドの概要

参考

pdsdbexeコマンドは，UAPと同等の位置づけです。

また，TP1/FSPが起動していない環境でも実行できます。

pdsdbexeコマンドは，4V FMBまたは4V AFMのSDBデータベースに対して実行できます。

pdsdbexeコマンドを実行すると，SDBデータベースを操作するDMLコマンドのほかに，SQLコマンドおよびpdsdbexeサブコマンドも実行できます。DMLコマンド，SQLコマンド，およびpdsdbexeサブコマンドの総称をpdsdbexe操作コマンドといいます。pdsdbexe操作コマンドの一覧を次の表に示します。

表14‒1　pdsdbexe操作コマンドの一覧

項番

コマンドの種類

コマンド名

機能

1

DMLコマンド

CLEAR

指定したデータベースキーに対応したレコード実現値を一括して削除します。

2

ERASE

指定したレコード実現値を削除します。

3

FETCH

1つのレコード実現値を取得します。また，操作対象レコードの位置づけを行います。

4

FETCHDB_ALL

ルートレコード以下のすべてのレコード実現値を取得します。

5

FINISH

HiRDB/SDに対して個別終了要求を行い，SDBデータベースに対する操作の終了処理を行います。

6

MODIFY

1つのレコード実現値を更新します。

7

START

HiRDB/SDに対して個別開始要求を行い，SDBデータベースに対する操作の開始処理を行います。

8

STORE

1つのレコード実現値を格納します。

9

SQLコマンド

COMMIT

トランザクションをコミットして正常終了します。

10

CONNECT

HiRDBに接続します。

11

DISCONNECT

実行中のトランザクションのコミット後に，HiRDBからの切り離しを実行します。

12

ROLLBACK

トランザクションを取り消します。

13

pdsdbexeサブコマンド

#EXIT

HiRDBサーバからの切り離しを実行し，pdsdbexeコマンドを終了します。

14

#HELP

pdsdbexe操作コマンドの指定形式と指定規則を出力します。

15

#USAGE

SDBデータベースまたはレコードに対するDMLコマンドのひな形を出力します。

SDBデータベースに対して実行できる操作は，SDBデータベース種別によって異なります。そのため，上記の表に示すDMLコマンドには，実行できるSDBデータベースの種別が限定されているDMLコマンドがあります。SDBデータベースに対して実行できる操作については，「2.5.1(1)　SDBデータベースに対する操作（API）」を参照してください。

14.2　コマンドの形式

 pdsdbexe 〔-u 認可識別子〔/パスワード〕〕

          〔-h ホスト名〕

          〔-n ポート番号〕

●-u 認可識別子〔/パスワード〕

認可識別子：〜＜識別子＞((1〜30文字))

パスワード：〜＜識別子＞((1〜30文字))

HiRDBに接続する認可識別子とパスワードを指定します。

指定規則を次に示します。

認可識別子またはパスワードの文字列中に英小文字がある場合は，認可識別子およびパスワードを引用符（ " ）で囲んでください。また，-uオプションの指定値全体をアポストロフィ（ ' ）で囲んでください。

（例）-u '"User01"/"Pswd01"'

引用符で囲んで指定しないと，認可識別子およびパスワードの文字列はすべて英大文字と見なされます。例えば，「-u User01/Pswd01」と指定した場合，「-u USER01/PSWD01」と指定したと見なされます。

なお，このオプションを省略した場合（認可識別子およびパスワードの両方を省略した場合），pdsdbexeコマンドの開始時に認可識別子およびパスワードの入力要求があります。

また，認可識別子を指定してパスワードを省略した場合，pdsdbexeコマンドの開始時にパスワードの入力要求があります。

このときの認可識別子およびパスワードの指定形式については，「14.5.2(4)(a)　コマンド入力画面でCONNECTコマンドを実行する場合」を参照してください。

●-h ホスト名

〜＜識別子＞((1〜511バイト))

接続先のHiRDBのホスト名を指定します。ホスト名の指定形式は，クライアント環境定義のPDHOSTと同じです。PDHOSTについては，マニュアル「HiRDB Version 9 UAP開発ガイド」の「クライアント環境定義の設定内容」を参照してください。

このオプションを省略した場合，クライアント環境定義のPDHOSTの指定値が適用されます。そのため，PDHOSTの指定が省略されていると，pdsdbexeコマンドを実行した際にエラーとなります。

●-n ポート番号

〜＜符号なし整数＞((5,001〜65,535))

接続先のHiRDBのポート番号を指定します。

このオプションを省略した場合，クライアント環境定義のPDNAMEPORTの指定値が適用されます。そのため，PDNAMEPORTの指定が省略されていると，pdsdbexeコマンドを実行した際にエラーとなります。

PDNAMEPORTについては，マニュアル「HiRDB Version 9 UAP開発ガイド」の「クライアント環境定義の設定内容」を参照してください。

■pdsdbexeコマンドの指定例

pdsdbexeコマンドを実行する際，認可識別子User01，パスワードPswd01でHiRDBに接続します。接続先のHiRDBのホスト名はhost01，ポート番号は20000とします。

 pdsdbexe -u '"User01"/"Pswd01"' -h host01 -n 20000

14.3　pdsdbexeコマンドの実行手順

pdsdbexeコマンドの実行手順を例題形式で説明します。

なお，例題中に出てくるDMLコマンド，SQLコマンド，およびpdsdbexeサブコマンドについては，次の個所を参照してください。

「14.4　DMLコマンド」

「14.5　SQLコマンド」

「14.6　pdsdbexeサブコマンド」

14.3.1　4V FMBのSDBデータベースのレコードを更新する

4V FMBのSDBデータベースのレコードを更新します。

SDBデータベース名：FMB1

更新対象のレコード名：FMB1_RECB

■4V FMBのSDBデータベースの階層構造

■格納されているレコード実現値

手順

pdsdbexeコマンドを実行する

 pdsdbexe

-uオプションに認可識別子を指定した場合は，手順の2.をスキップして，手順の3.に進んでください。-uオプションに認可識別子およびパスワードを指定した場合は，手順の2.〜3.をスキップして，手順の4.に進んでください。

認可識別子の入力要求に応答する

 pdsdbexe **** SDB Database Executor 09-60    ****  2015-12-14 16:49:44

 user-id:"User01"    ←認可識別子を指定します。

HiRDBに接続する認可識別子を指定して，Enterキーを押してください。

認可識別子に英小文字がある場合は，引用符（ " ）で囲んでください。

パスワードの入力要求に応答する

 pdsdbexe **** SDB Database Executor 09-60    ****  2015-12-14 16:49:44

 user-id:"User01"
 "User01"
 password:      ←パスワードを指定します。

認可識別子のパスワードを指定して，Enterキーを押してください。

パスワードに英小文字がある場合は，引用符（ " ）で囲んでください。

パスワードに入力した文字は表示されません。

STARTコマンドを実行して個別開始する

 START "FMB1"
 NEXT ? +----2----+----3----+----4----+----5----+----6----+----7----+----8

      ACSMODE UPDATE
 NEXT ? +----2----+----3----+----4----+----5----+----6----+----7----+----8
      ENQOPT EXCLUSIVE;

STARTコマンドの実行結果：

 DIRECTORY CHECK DATE INFORMATION
   PDSDBDEF EXEC DATE              : 2015-12-14 16:20:46.67
   SDB DIRECTORY UPDATE DATE       : 2015-12-14 16:20:49.16
 ----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
 HiRDB SERVER VERSION INFORMATION
   SERVER VERSION                  : 09-60
 KFPB64050-I DINF(GET DATE) command processing completed
 ----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
 START INFORMATION
   SDB DATABASE NAME "FMB1"
   HANDLE NUMBER                   : 1
   ACSMODE                         : UPDATE
   ENQOPT                          : EXCLUSIVE
   AUTODEQ                         : NO
   RDAREAVAL                       : NO
 KFPB64050-I DINF(GET SDB SUMMARY) command processing completed
 KFPB64050-I DINF(GET SDB DETAIL) command processing completed
 KFPB64050-I START command processing completed

FETCHコマンドを実行して，ルートレコードの検索を行う

 FETCH "FMB1_RECA" FIRST;

FETCHコマンドの実行結果：

 FETCH INFORMATION
   FETCH DATA
       1 "DBKEY_L1"                       'AA00'
       2 "RECA_UD1"                       123.
       3 "RECA_UD2"                       -9.8
   ROWID                           : X'070000001900000000000100'
   PAGE NUM                        : 100
 KFPB64050-I FETCH command processing completed

FETCHコマンドを実行して，更新対象レコードへの位置づけを行う

 FETCH "FMB1_RECB" LAST WHERE (DBKEY=2);

FETCHコマンドの実行結果：

 FETCH INFORMATION
   FETCH DATA
       1 "DBKEY"                         2
       2 "RECB_UK"                       'B2'
       3 "RECB_UD"                       X'3232'
   FETCH SERIAL NUM                : 2
   ROWID                           : X'070000001900000000000800'
   USER POINTER SERIAL NUM         : 0
   SECOND INDEX KIND               : NOUSE
   RECORD POINTER STATUS           : LAST
 KFPB64050-I FETCH command processing completed

MODIFYコマンドを実行して，レコードを更新する

 MODIFY "FMB1_RECB" SET "RECB_UD" = X'3333';

更新対象のレコードが正しいかを確認する

 MODIFY DATA
     1 "RECB_UD"
       <BEFORE> X'3232'
       <AFTER>  X'3333'
 AGREE TO MODIFY ? [ENTER YES OR NO]
 YES   ←上記の情報を確認後，YESを指定します。

MODIFYコマンドの実行結果：

 MODIFY INFORMATION
   ROWID                           : X'070000001900000000000800'
 KFPB64050-I MODIFY command processing completed

FETCHコマンドを実行して，レコードが更新されたことを確認する

 FETCH "FMB1_RECB" LAST WHERE (DBKEY=2);

FETCHコマンドの実行結果：

 FETCH INFORMATION
   FETCH DATA
       1 "DBKEY"                           2
       2 "RECB_UK"                         'B2'
       3 "RECB_UD"                         X'3333'
   FETCH SERIAL NUM                : 2
   ROWID                           : X'070000001900000000000800'
   SECOND INDEX KIND               : NOUSE
   RECORD POINTER STATUS           : LAST
 KFPB64050-I FETCH command processing completed

COMMITコマンドを実行して，レコードの更新を確定する

 COMMIT;

COMMITコマンドの実行結果：

 KFPB64050-I COMMIT command processing completed

#EXITコマンドを実行して，pdsdbexeコマンドを終了する

 #EXIT;

#EXITコマンドの実行結果：

 KFPB64050-I DISCONNECT command processing completed
 KFPB64050-I #EXIT command processing completed

 KFPB64000-I The pdsdbexe terminated, return code = 0

表示されるプロンプトについて

pdsdbexeコマンドを実行すると，次の表に示すどれかのプロンプトが表示されます。

表14‒2　入力画面で表示されるプロンプト

項番

プロンプトの表示形式

意味

1

user-id:

HiRDBに接続する認可識別子の入力待ち状態です。

pdsdbexeコマンドの実行後，またはSQLコマンドのCONNECTコマンドの実行後に表示されます。ただし，pdsdbexeコマンドまたはCONNECTコマンドの実行時，認可識別子を指定した場合は，このプロンプトは表示されません。

2

password:

パスワードの入力待ち状態です。

pdsdbexeコマンドの実行後，またはSQLコマンドのCONNECTコマンドの実行後に表示されます。ただし，pdsdbexeコマンドまたはCONNECTコマンドの実行時，パスワードを指定した場合は，このプロンプトは表示されません。

パスワードを入力しても，入力した文字は表示されません。

3

COMMAND ?

通常の入力待ち状態です。pdsdbexe操作コマンドを指定できます。

4

NEXT ?

継続行の入力待ち状態です。

pdsdbexe操作コマンドの終わりを示すセミコロン（ ; ）が指定されない状態でEnterキーを押すと，その行は継続行（pdsdbexe操作コマンドが途中である）と見なされます。このプロンプトが表示された場合，pdsdbexe操作コマンドの続きを入力してください。

14.3.2　4V FMBのSDBデータベースのレコードを削除する

4V FMBのSDBデータベースのレコードを削除します。

SDBデータベース名：FMB1

削除対象のレコード名：FMB1_RECC

4V FMBのSDBデータベースの階層構造，および格納されているレコード実現値については，「14.3.1　4V FMBのSDBデータベースのレコードを更新する」と同じです。

手順

pdsdbexeコマンドを実行する

 pdsdbexe -u '"User01"/"Pswd01"'

STARTコマンドを実行して個別開始する

 START "FMB1"
 NEXT ? +----2----+----3----+----4----+----5----+----6----+----7----+----8

      ACSMODE UPDATE
 NEXT ? +----2----+----3----+----4----+----5----+----6----+----7----+----8
      ENQOPT EXCLUSIVE;

STARTコマンドの実行結果：

 DIRECTORY CHECK DATE INFORMATION
   PDSDBDEF EXEC DATE              : 2015-12-14 16:20:46.67
   SDB DIRECTORY UPDATE DATE       : 2015-01-15 14:58:41.91
 ----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
 HiRDB SERVER VERSION INFORMATION
   SERVER VERSION                  : 09-60
 KFPB64050-I DINF(GET DATE) command processing completed
 ----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
 START INFORMATION
   SDB DATABASE NAME "FMB1"
   HANDLE NUMBER                   : 1
   ACSMODE                         : UPDATE
   ENQOPT                          : EXCLUSIVE
   AUTODEQ                         : NO
   RDAREAVAL                       : NO
 KFPB64050-I DINF(GET SDB SUMMARY) command processing completed
 KFPB64050-I DINF(GET SDB DETAIL) command processing completed
 KFPB64050-I START command processing completed

FETCHコマンドを実行して，ルートレコードの検索を行う

 FETCH "FMB1_RECA" FIRST WHERE (DBKEY='AA00');

FETCHコマンドの実行結果：

 FETCH INFORMATION
   FETCH DATA
       1 "DBKEY_L1"                       'AA00'
       2 "RECA_UD1"                       123.
       3 "RECA_UD2"                       -9.8
   ROWID                           : X'070000001900000000000100'
   PAGE NUM                        : 100
 KFPB64050-I FETCH command processing completed

FETCHコマンドを実行して，子レコードを検索する

 FETCH "FMB1_RECB" FIRST WHERE (DBKEY=1);

FETCHコマンドの実行結果：

 FETCH INFORMATION
   FETCH DATA
       1 "DBKEY"                          1
       2 "RECB_UK"                        'B1'
       3 "RECB_UD"                        X'3131'
   FETCH SERIAL NUM                : 1
   ROWID                           : X'070000001900000000000200'
   USER POINTER SERIAL NUM         : 0
   SECOND INDEX KIND               : NOUSE
   RECORD POINTER STATUS           : FIRST
 KFPB64050-I FETCH command processing completed

FETCHコマンドを実行して，削除対象レコードへの位置づけを行う

 FETCH "FMB1_RECC" FIRST;

FETCHコマンドの実行結果：

 FETCH INFORMATION
   FETCH DATA
       1 "DBKEY"                           1
       2 "RECC_UK"                         'E111'
   FETCH SERIAL NUM                : 1
   ROWID                           : X'070000001900000000000300'
   SECOND INDEX KIND               : NOUSE
   RECORD POINTER STATUS           : FIRST
 KFPB64050-I FETCH command processing completed

ERASEコマンドを実行して，レコードを削除する

 ERASE "FMB1_RECC" TARGET OCCURRENCE;

削除対象のレコードが正しいかを確認する

 ERASE RECORD INFORMATION
   RECORD KIND                     : CHILD RECORD
   DBKEY                           : 1
 AGREE TO ERASE DBKEY AND ALL ? [ENTER YES OR NO]
 YES   ←上記の情報を確認後，YESを指定します。

ERASEコマンドの実行結果：

 ERASE INFORMATION
 KFPB64050-I ERASE command processing completed

FETCHコマンドを実行して，レコードが削除されたことを確認する

 FETCH "FMB1_RECC" FIRST;

FETCHコマンドの実行結果：

 FETCH INFORMATION
   SECOND INDEX KIND               : NOUSE
   FETCH TERMINATED                : NOUSE
 KFPA12100-I No rows satisfying search condition
 KFPB64050-I FETCH command processing completed

COMMITコマンドを実行して，レコードの削除を確定する

 COMMIT;

COMMITコマンドの実行結果：

 KFPB64050-I COMMIT command processing completed

#EXITコマンドを実行して，pdsdbexeコマンドを終了する

 #EXIT;

#EXITコマンドの実行結果：

KFPB64050-I DISCONNECT command processing completed
KFPB64050-I #EXIT command processing completed

KFPB64000-I The pdsdbexe terminated, return code = 0

参考

コマンド入力画面に表示されるプロンプトについては，「表14-2　入力画面で表示されるプロンプト」を参照してください。

14.3.3　4V AFMのSDBデータベースのレコードを更新する

4V MAMのSDBデータベースのレコードを更新します。

SDBデータベース種別：4V MAM

SDBデータベース名：MAB1

更新対象のレコード名：MAB101

■4V MAMのSDBデータベースの階層構造

■格納されているレコード実現値

手順

pdsdbexeコマンドを実行する

 pdsdbexe -u '"User01"/"Pswd01"'

STARTコマンドを実行して個別開始する

 START "MAB1"
 NEXT ? +----2----+----3----+----4----+----5----+----6----+----7----+----8

      ACSMODE UPDATE
 NEXT ? +----2----+----3----+----4----+----5----+----6----+----7----+----8
      ENQOPT EXCLUSIVE;

STARTコマンドの実行結果：

 DIRECTORY CHECK DATE INFORMATION
   PDSDBDEF EXEC DATE              : 2015-12-14 16:20:46.67
   SDB DIRECTORY UPDATE DATE       : 2015-12-14 16:20:49.16
 ----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
 HiRDB SERVER VERSION INFORMATION
   SERVER VERSION                  : 09-60
 KFPB64050-I DINF(GET DATE) command processing completed
 ----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
 START INFORMATION
   SDB DATABASE NAME "MAB1"
   HANDLE NUMBER                   : 1
   ACSMODE                         : UPDATE
   ENQOPT                          : EXCLUSIVE
   AUTODEQ                         : NO
   RDAREAVAL                       : NO
 KFPB64050-I DINF(GET SDB SUMMARY) command processing completed
 KFPB64050-I DINF(GET SDB DETAIL) command processing completed
 KFPB64050-I START command processing completed

FETCHコマンドを実行して，更新対象レコードへの位置づけを行う

 FETCH "MAB101" FIRST;

FETCHコマンドの実行結果：

 FETCH INFORMATION
   FETCH DATA
       1 "DBKEY_KN"                       1
       2 "PABTSQKY"                       'AA00'
       3 "USERDATA1"                      '0000'
   FETCH SERIAL NUM                : 1
   ROWID                           : X'240000001A00000000000100'
   SECOND INDEX KIND               : NOUSE
   RECORD POINTER STATUS           : FIRST
 KFPB64050-I FETCH command processing completed

MODIFYコマンドを実行して，レコードを更新する

 MODIFY "MAB101" SET "USERDATA1" = 'MDFY';

更新対象のレコードが正しいかを確認する

 MODIFY DATA
     1 "USERDATA1"
       <BEFORE> '0000'
       <AFTER>  'MDFY'
 AGREE TO MODIFY ? [ENTER YES OR NO]
 YES   ←上記の情報を確認後，YESを指定します。

MODIFYコマンドの実行結果：

 MODIFY INFORMATION
   ROWID                           : X'240000001A00000000000100'
 KFPB64050-I MODIFY command processing completed

FETCHコマンドを実行して，レコードが更新されたことを確認する

 FETCH "MAB101" FIRST;

FETCHコマンドの実行結果：

 FETCH INFORMATION
   FETCH DATA
       1 "DBKEY_KN"                       1
       2 "PABTSQKY"                       'AA00'
       3 "USERDATA1"                      'MDFY'
   FETCH SERIAL NUM                : 1
   ROWID                           : X'240000001A00000000000100'
   SECOND INDEX KIND               : NOUSE
   RECORD POINTER STATUS           : FIRST
 KFPB64050-I FETCH command processing completed

COMMITコマンドを実行して，レコードの更新を確定する

 COMMIT;

COMMITコマンドの実行結果：

 KFPB64050-I COMMIT command processing completed

#EXITコマンドを実行して，pdsdbexeコマンドを終了する

 #EXIT;

#EXITコマンドの実行結果：

 KFPB64050-I DISCONNECT command processing completed
 KFPB64050-I #EXIT command processing completed

 KFPB64000-I The pdsdbexe terminated, return code = 0

参考

コマンド入力画面に表示されるプロンプトについては，「表14-2　入力画面で表示されるプロンプト」を参照してください。

14.3.4　4V AFMのSDBデータベースのレコードを削除する

4V MAMのSDBデータベースのレコードを削除します。

SDBデータベース種別：4V MAM

SDBデータベース名：MAB1

削除対象のレコード名：MAB101

4V MAMのSDBデータベースの階層構造，および格納されているレコード実現値については，「14.3.3　4V AFMのSDBデータベースのレコードを更新する」と同じです。

手順

pdsdbexeコマンドを実行する

 pdsdbexe -u '"User01"/"Pswd01"'

STARTコマンドを実行して個別開始する

 START "MAB1"
 NEXT ? +----2----+----3----+----4----+----5----+----6----+----7----+----8

      ACSMODE UPDATE
 NEXT ? +----2----+----3----+----4----+----5----+----6----+----7----+----8
      ENQOPT EXCLUSIVE;

STARTコマンドの実行結果：

 DIRECTORY CHECK DATE INFORMATION
   PDSDBDEF EXEC DATE              : 2015-12-14 16:20:46.67
   SDB DIRECTORY UPDATE DATE       : 2015-12-14 16:20:49.16
 KFPB64050-I DINF(GET DATE) command processing completed
 ----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
 HiRDB SERVER VERSION INFORMATION
   SERVER VERSION                  : 09-60
 KFPB64050-I DINF(GET DATE) command processing completed
 ----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
 START INFORMATION
   SDB DATABASE NAME "MAB1"
   HANDLE NUMBER                   : 1
   ACSMODE                         : UPDATE
   ENQOPT                          : EXCLUSIVE
   AUTODEQ                         : NO
   RDAREAVAL                       : NO
 KFPB64050-I DINF(GET SDB SUMMARY) command processing completed
 KFPB64050-I DINF(GET SDB DETAIL) command processing completed
 KFPB64050-I START command processing completed

FETCHコマンドを実行して，削除対象レコードへの位置づけを行う

 FETCH "MAB101" FIRST WHERE (DBKEY=3);

FETCHコマンドの実行結果：

 FETCH INFORMATION
   FETCH DATA
       1 "DBKEY_KN"                       3
       2 "PABTSQKY"                       'AA02'
       3 "USERDATA1"                      '2222'
   FETCH SERIAL NUM                : 3
   ROWID                           : X'240000001A00000000000300'
   SECOND INDEX KIND               : SERIAL NUM INDEX
   RECORD POINTER STATUS           : NONE
 KFPB64050-I FETCH command processing completed

ERASEコマンドを実行して，レコードを削除する

 ERASE "MAB101" TARGET SEGMENT;

削除対象のレコードが正しいかを確認する

 ERASE RECORD INFORMATION
   RECORD KIND                     : CHILD RECORD
   DBKEY                           : 3
 AGREE TO ERASE DBKEY AND FOLLOWERS ? [ENTER YES OR NO]
 YES   ←上記の情報を確認後，YESを指定します。

ERASEコマンドの実行結果：

 ERASE INFORMATION
 KFPB64050-I ERASE command processing completed

FETCHコマンドを実行して，レコードが削除されたことを確認する

 FETCH "MAB101" FIRST WHERE (DBKEY=3);

FETCHコマンドの実行結果：

 FETCH INFORMATION
   SECOND INDEX KIND               : SERIAL NUM INDEX
   FETCH TERMINATED                : NOUSE
 KFPA12100-I No rows satisfying search condition
 KFPB64050-I FETCH command processing completed

COMMITコマンドを実行して，レコードの削除を確定する

 COMMIT;

COMMITコマンドの実行結果：

 KFPB64050-I COMMIT command processing completed

#EXITコマンドを実行して，pdsdbexeコマンドを終了する

 #EXIT;

#EXITコマンドの実行結果：

 KFPB64050-I DISCONNECT command processing completed
 KFPB64050-I #EXIT command processing completed

 KFPB64000-I The pdsdbexe terminated, return code = 0

参考

コマンド入力画面に表示されるプロンプトについては，「表14-2　入力画面で表示されるプロンプト」を参照してください。

14.3.5　ファイルに記述したDMLコマンドを実行する場合

4V FMBのSDBデータベースのルートレコードに，レコード実現値を格納します。入力ファイル（infile.txt）に記述したDMLコマンドを実行し，実行結果を出力ファイル（outfile.txt）に出力します。

SDBデータベース名：FMB1

操作対象レコード名：FMB1_RECA

DMLコマンドを入力ファイル（infile.txt）に記述する

 START "FMB1" ACSMODE UPDATE ENQOPT EXCLUSIVE;
 STORE "FMB1_RECA" SET "DBKEY_L1" = 'KEY1',
                       "RECA_UD1" = 123.,
                       "RECA_UD2" = -9.8
                   PAGESWITCH OCCUPY
                   ;
 YES    ←YESを指定します。※
 COMMIT;
 #EXIT;

注※　STOREコマンドの実行を許可するYESを指定する必要があります。

pdsdbexeコマンドを実行する

 pdsdbexe -u '"User01"/"Pswd01"' <infile.txt >outfile.txt

実行結果（outfile.txt）を確認する

 pdsdbexe **** SDB Database Executor 09-60    ****  2015-12-14 16:49:44

 ----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
 CONNECT INFORMATION
   SERVER NAME "testfes1"
   PROCESS ID                      : 12319
   CONNECT NUMBER                  : 12
 KFPB64050-I CONNECT command processing completed
 COMMAND ?     +----2----+----3----+----4----+----5----+----6----+----7----+----8

 START "FMB1" ACSMODE UPDATE ENQOPT EXCLUSIVE;
 ----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
 DIRECTORY CHECK DATE INFORMATION
   PDSDBDEF EXEC DATE              : 2015-12-14 16:20:46.67
   SDB DIRECTORY UPDATE DATE       : 2015-12-14 16:20:49.16
 ----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
 HiRDB SERVER VERSION INFORMATION
   SERVER VERSION                  : 09-60
 KFPB64050-I DINF(GET DATE) command processing completed
 ----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
 START INFORMATION
   SDB DATABASE NAME "FMB1"
   HANDLE NUMBER                   : 1
   ACSMODE                         : UPDATE
   ENQOPT                          : EXCLUSIVE
   AUTODEQ                         : NO
   RDAREAVAL                       : NO
 KFPB64050-I DINF(GET SDB SUMMARY) command processing completed
 KFPB64050-I DINF(GET SDB DETAIL) command processing completed
 KFPB64050-I START command processing completed
 COMMAND ?     +----2----+----3----+----4----+----5----+----6----+----7----+----8

 STORE "FMB1_RECA" SET "DBKEY_L1" = 'KEY1',
 NEXT ?        +----2----+----3----+----4----+----5----+----6----+----7----+----8

                       "RECA_UD1" = 123.,
 NEXT ?        +----2----+----3----+----4----+----5----+----6----+----7----+----8

                       "RECA_UD2" = -9.8
 NEXT ?        +----2----+----3----+----4----+----5----+----6----+----7----+----8

                   PAGESWITCH OCCUPY
 NEXT ?        +----2----+----3----+----4----+----5----+----6----+----7----+----8

                   ;
 ----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
 STORE RECORD INFORMATION
   RECORD KIND                     : ROOT RECORD
 AGREE TO STORE ? [ENTER YES OR NO]
 YES
 ----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
 STORE INFORMATION
   STORE SERIAL NUM                : 0
   ROWID                           : X'070000001B00000000000100'
   SECOND INDEX KIND               : NOUSE
   RECORD POINTER STATUS           : NONE
 KFPB64050-I STORE command processing completed
 COMMAND ?     +----2----+----3----+----4----+----5----+----6----+----7----+----8

 COMMIT;
 KFPB64050-I COMMIT command processing completed
 COMMAND ?     +----2----+----3----+----4----+----5----+----6----+----7----+----8

 #EXIT;
 KFPB64050-I DISCONNECT command processing completed
 KFPB64050-I #EXIT command processing completed

 KFPB64000-I The pdsdbexe terminated, return code = 0

■入力ファイルの記述規則

入力ファイル中に記述する文字の文字コードは，次の表に示すようにクライアント環境定義のPDLANGで指定している文字コードと同じにしてください。PDLANGについては，マニュアル「HiRDB Version 9 UAP開発ガイド」の「クライアント環境定義の設定内容」を参照してください。

表14‒3　入力ファイルの文字コード

PDLANGの指定値

入力ファイルの文字コード

備考

SJIS

Shift-JIS

なし。

UTF8

Unicode（UTF-8）

BOMは付加できません。

参考

PDLANGで指定している文字コードは，pdsetupコマンドの-cオプションで指定した文字コードと同じです。

改行コードは，X'0A'（LF）または，X'0D0A'（CRLF）としてください。

#EXITコマンドの指定は省略できます。

EOF制御文字がある場合，#EXITコマンドの指定と同じ処理が行われます。

#EXITコマンドを省略した場合，pdsdbexe操作コマンドが終了した行の改行後からEOF制御文字までの間に，次のpdsdbexe操作コマンドの開始となる入力があると，エラーとなります。そのため，ファイルの末尾には#EXITコマンドを指定することを推奨します。

エラーとなる例を次に示します。

■出力ファイルへの出力規則

出力ファイル中の文字コードは，次の表に示すようにクライアント環境定義のPDLANGで指定している文字コードと同じになります。PDLANGについては，マニュアル「HiRDB Version 9 UAP開発ガイド」の「クライアント環境定義の設定内容」を参照してください。

表14‒4　出力ファイルの文字コード

PDLANGの指定値

出力ファイルの文字コード

備考

SJIS

Shift-JIS

なし。

UTF8

Unicode（UTF-8）

BOMは付加されません。

改行コードは，X'0A'（LF）で出力されます。ただし，エラーが発生した場合，標準出力にX'0D0A'（CRLF）が出力されることがあります。

14.4　DMLコマンド

DMLコマンドの機能と入力形式について説明します。

14.4.1　CLEAR（レコードの一括削除）

(1)　機能

指定したレコードのデータベースキーに対応したレコード実現値を一括して削除します。

(2)　指定形式

 CLEAR レコード名

       WHERE (DBKEY = 条件値1) ;

注意事項

最後にセミコロン（ ; ）の指定が必要です。

(3)　オペランドの説明

●レコード名

〜＜識別子＞((1〜30バイト))

レコード実現値を一括削除するレコード名を指定します。

レコード名に英小文字を使用している場合は，レコード名を引用符（"）で囲んでください。引用符で囲まないと，英小文字は英大文字と見なされます。

●WHERE (DBKEY = 条件値1)

一括削除するレコードのデータベースキーを=条件で指定します。

条件値1 ::＝

｛DBKEYに対応する値｜

（構成要素に対応する値〔，構成要素に対応する値〕...）｝

DBKEYに対応する値として，DBKEYの構成要素全体に対して1つの値を指定してください。

DBKEYに対応する値の指定形式を次の表に示します。

表14‒5　DBKEYに対応する値の指定形式

項番

DBKEYのデータ型

条件値の形式※

指定例

備考

1

CHARACTER

文字列定数

DBKEY='AAABBB'

DBKEYを構成するすべての構成要素のデータ型がCHARACTERの場合

2

16進文字列定数

DBKEY=X'414141424242'

3

INTEGER

整数定数

DBKEY=100

DBKEYが一連番号の場合，またはDBKEYの構成要素数が1つでデータ型がINTEGERの場合

4

16進文字列定数

DBKEY=X'64000000'

5

PACKED DECIMAL FIXED

10進数定数

DBKEY=123.456

DBKEYの構成要素数が1つでデータ型がPACKED DECIMAL FIXEDの場合

6

16進文字列定数

DBKEY=X'0123456C'

7

上記以外

16進文字列定数

DBKEY=X'010241414164000000'

なし

注※

各定数の表記方法については，マニュアル「HiRDB Version 9 SQLリファレンス」の「定数」を参照してください。

DBKEYに対応する値のうち，一連番号に対応する部分には任意の値を指定してください。

構成要素に対応する値として，DBKEYの1つの構成要素に対して値を指定してください。指定できる値の個数と順序はDBKEYの構成要素と一致させてください。

構成要素に対応する値の指定形式を次の表に示します。

表14‒6　構成要素に対応する値の指定形式

項番

構成要素のデータ型

条件値の形式※

指定例

1

CHARACTER

文字列定数

'AAABBB'

2

16進文字列定数

X'414141424242'

3

XCHARACTER

16進文字列定数

X'01020304'

4

PACKED DECIMAL FIXED

10進数定数

123.456

5

16進文字列定数

X'123C'

6

INTEGER

整数定数

100

7

16進文字列定数

X'64000000'

注※

各定数の表記方法については，マニュアル「HiRDB Version 9 SQLリファレンス」の「定数」を参照してください。

構成要素に対応する値のうち，一連番号に対応する部分には任意の値を指定してください。

(4)　使用例

CLEARコマンドを実行してレコード実現値を一括削除する手順を次に示します。

SDBデータベース定義

操作するSDBデータベース定義は次のとおりです。

SDBデータベース種別：4V DAM

SDBデータベース名：DAMX

削除対象のレコード名：MAB5000

削除対象のデータベースキー：X'303031'

削除対象のレコードのDBKEY：一連番号の構成要素を含む

レコード実現値

格納されているレコード実現値は次のとおりです。この例では，破線内のレコードを一括削除します。

手順

CLEARコマンドを実行する

 CLEAR "MAB5000" WHERE (DBKEY=(X'303031',0));

一括削除対象のレコード名とデータベースキーが正しいかを確認する

 CLEAR RECORD INFORMATION
   NAME "MAB5000"
   DBKEY                           : X'30303100000000'
 AGREE TO CLEAR ? [ENTER YES OR NO]
 YES     ←上記の情報を確認後，YESを指定します。

CLEARコマンドを実行してよいかどうかの確認メッセージが表示されます。

一括削除対象のレコード名（NAME），および一括削除対象のデータベースキー（DBKEY）を確認してから，YESを指定してください。

参考

一括削除対象のレコード名などに誤りがある場合は，NOを指定してCLEARコマンドの実行を中止してください。

CLEARコマンドの実行結果を確認する

 KFPB64050-I CLEAR command processing completed

CLEARコマンドの実行結果が表示されます。

(5)　CLEARコマンドの実行時に表示される情報

CLEARコマンドの実行時に表示される情報について説明します。

(a)　CLEARコマンドの実行確認メッセージ

CLEARコマンドを実行した際，次に示す確認メッセージが表示されます。

（例）

 CLEAR RECORD INFORMATION
   NAME "MAB5000"                                         ...1
   DBKEY                           : X'30303100000000'    ...2
 AGREE TO CLEAR ? [ENTER YES OR NO]                       ...3

［説明］

一括削除対象のレコード名が表示されます。

一括削除対象のレコードのデータベースキーが表示されます。

データベースキーに一連番号が含まれる場合，一連番号の部分にはX'00000000'が表示されます。

CLEARコマンドを実行するかどうかの確認メッセージが表示されます。

レコード名およびデータベースキーを確認（1.および2.の情報を確認）し，問題がない場合はYESまたはyesを指定してください。

CLEARコマンドの実行を中止する場合は，NOまたはnoを指定してください。

参考

YESまたはyes以外を指定した場合，NOが指定されたと見なされます。

(6)　留意事項

CLEARコマンドは，個別開始している状態で実行してください。

検索条件の条件値は，DBKEYまたは構成要素のデータ型とデータ属性が一致している必要があります。pdsdbexeコマンドは，パディング（データを追加して長さを合わせる処理）や，切り捨てなどのデータの加工を行いません。また，データ型によっては，次の条件を満たす必要があります。

データ型がCHARACTERまたはXCHARACTERの場合

データ長が一致している必要があります。

データ型がPACKED DECIMAL FIXEDまたはINTEGERの場合

条件値が，構成要素のデータ型で表現できる範囲の値である必要があります。また，条件値を16進文字列定数で指定した場合，条件値の長さは，構成要素の長さと同じである必要があります。

なお，データ型がPACKED DECIMAL FIXEDの場合，条件値に指定した文字数で整数部桁数および小数部桁数が決まります。

（例）

01234.000 → 整数部桁数5，小数部桁数3

.12345 → 整数部桁数0，小数部桁数5

上記の例のようにゼロサプレスされません。条件値の整数部桁数および小数部桁数が，構成要素の整数部桁数および小数部桁数以下になるようにしてください。

CLEARコマンドが正常終了したあとに#EXITコマンドを実行する場合は，次のようにpdsdbexe操作コマンドを実行してください。

レコードの一括削除を実行したトランザクションを正常終了させたい場合は，COMMITコマンドを実行してください。

レコードの一括削除を実行したトランザクションを取り消したい場合は，ROLLBACKコマンドを実行してください。

14.4.2　ERASE（レコードの削除）

(1)　機能

指定したレコード実現値を削除します。

(2)　指定形式

 ERASE レコード名

       TARGET ｛SEGMENT｜OCCURRENCE｝;

注意事項

最後にセミコロン（ ; ）の指定が必要です。

オペランドの指定順序は変更できません。

(3)　オペランドの説明

●レコード名

〜＜識別子＞((1〜30バイト))

レコード実現値を削除するレコード名を指定します。4V AFMのSDBデータベースの場合は，子レコード名を指定します。

レコード名に英小文字を使用している場合は，レコード名を引用符（ " ）で囲んでください。引用符で囲まないと，英小文字は英大文字と見なされます。

●TARGET ｛SEGMENT｜OCCURRENCE｝

レコード実現値の削除範囲を指定します。

SEGMENT：

最下位レベルのレコードに位置づけしている場合は，位置づけしているレコードのレコード実現値だけを削除します。

最下位レベル以外のレコードに位置づけしている場合は，位置づけしているレコードのレコード実現値と，その下位レベルのレコードのレコード実現値を削除します。

OCCURRENCE：

最下位レベルのレコード型の全レコード実現値を削除します。

4V FMBのSDBデータベースの最下位レベルのレコード型に対してだけOCCURRENCEを指定できます。

なお，4V FMBのSDBデータベースで，かつルートレコードの場合は，最下位のレコードであってもOCCURRENCEを指定できません。

(4)　使用例

ERASEコマンドを実行してレコード実現値を削除する手順を次に示します。

手順

ERASEコマンドを実行する

 ERASE "FMB101" TARGET SEGMENT;

削除対象のレコードが正しいかを確認する

 ERASE RECORD INFORMATION
   RECORD KIND                     : CHILD RECORD
   DBKEY                           : 1
 AGREE TO ERASE DBKEY AND FOLLOWERS ? [ENTER YES OR NO]
 YES     ←上記の情報を確認後，YESを指定します。

ERASEコマンドを実行してよいかどうかの確認メッセージが表示されます。

削除対象のレコード種別（RECORD KIND），および削除対象レコードのDBKEYを確認してから，YESをしてください。

参考

削除対象のレコード種別などに誤りがある場合は，NOを指定してERASEコマンドの実行を中止してください。

ERASEコマンドの実行結果を確認する

 ERASE INFORMATION
   USER POINTER                    : OPERATED
 KFPB64050-I ERASE command processing completed

ERASEコマンドの実行結果が表示されます。

(5)　ERASEコマンドの実行時に表示される情報

ERASEコマンドの実行時に表示される情報について説明します。

(a)　ERASEコマンドの実行確認メッセージ

ERASEコマンドを実行した際，次に示す確認メッセージが表示されます。

（例）

 ERASE RECORD INFORMATION
   RECORD KIND                     : CHILD RECORD         ...1
   DBKEY                           : 1                    ...2
 AGREE TO ERASE DBKEY AND FOLLOWERS ? [ENTER YES OR NO]   ...3

［説明］

削除対象のレコード種別が表示されます。

ROOT RECORD：削除対象レコードがルートレコードであることを意味しています。

CHILD RECORD：削除対象レコードが子レコードであることを意味しています。

削除対象レコードのDBKEY（位置づけているDBKEY）が表示されます。

削除対象レコードがルートレコードの場合は，ルートレコードのDBKEYが表示されます。

削除対象レコードがルートレコード以外の場合は，一連番号が表示されます。

ERASEコマンドを実行するかどうかの確認メッセージが表示されます。

レコード種別およびDBKEYを確認（1.および2.の情報を確認）し，問題がない場合はYESまたはyesを指定してください。

ERASEコマンドの実行を中止する場合は，NOまたはnoを指定してください。

参考

YESまたはyes以外を指定した場合，NOが指定されたと見なされます。

TARGETの指定値がSEGMENTの場合は，次の確認メッセージが表示されます。

AGREE TO ERASE DBKEY AND FOLLOWERS ? [ENTER YES OR NO]

TARGETの指定値がOCCURRENCEの場合は，次の確認メッセージが表示されます。

AGREE TO ERASE DBKEY AND ALL ? [ENTER YES OR NO]

(b)　ERASEコマンドの実行結果

ERASEコマンドの実行が終了した際，次に示す実行結果が表示されます。

 ERASE INFORMATION
   USER POINTER : OPERATED    ...1

［説明］

USERポインタを操作したかどうかが表示されます。

USERポインタを操作した場合は，OPERATEDが表示されます。USERポインタを操作していない場合は，この項目は表示されません。

(6)　留意事項

ERASEコマンドは，個別開始している状態で実行してください。

削除対象のレコードへの位置づけをしておいてください。位置づけをしていない場合は，エラーになります。

ERASEコマンドが正常終了したあとに#EXITコマンドを実行する場合は，次のようにpdsdbexe操作コマンドを実行してください。

レコードの削除を実行したトランザクションを正常終了させたい場合は，COMMITコマンドを実行してください。

レコードの削除を実行したトランザクションを取り消したい場合は，ROLLBACKコマンドを実行してください。

14.4.3　FETCH（レコードの検索）

(1)　機能

1つのレコード実現値を取得します。また，操作対象レコードの位置づけを行います。

(2)　指定形式

 FETCH レコード名

     ｛FIRST｜LAST｜NEXT｜PRIOR｝

     〔WHERE ｛キーの条件 〔AND キー以外の条件〕｜キー以外の条件｝〕

     〔TERMOPT ｛YES｜NO｝〕

     〔SECIDXSUP ｛YES｜NO｝〕;

注意事項

最後にセミコロン（ ; ）の指定が必要です。

オペランドの指定順序は変更できません。

(3)　オペランドの説明

●レコード名

〜＜識別子＞((1〜30バイト))

検索対象のレコード名を指定します。

4V AFMのSDBデータベースの場合は，子レコード名を指定します。

レコード名に英小文字を使用している場合は，レコード名を引用符（ " ）で囲んでください。引用符で囲まないと，英小文字は英大文字と見なされます。

●｛FIRST｜LAST｜NEXT｜PRIOR｝

検索で使用するポインタを指定します。

FIRST：FIRSTポインタから検索します。

LAST：LASTポインタから検索します。

NEXT：NEXTポインタから検索します。

PRIOR：PRIORポインタから検索します。

ポインタの詳細については，「2.5.4(2)　検索の基点となるレコードと検索の方向」，および「2.5.4(3)　レコードの検索範囲」を参照してください。

4V TAMのSDBデータベースのレコードの検索でNEXTを指定した場合，実行結果は保証できません。4V TAMのSDBデータベースのレコードの検索ではFIRSTを指定してください。

●WHERE ｛キーの条件 〔AND キー以外の条件〕｜キー以外の条件｝

検索条件を指定します。

キーの条件とキー以外の条件の両方を指定する場合は，それぞれを（　）で囲み論理積（AND）で結合します。

キーの条件::＝

（DBKEY｛=｜<｜<=｜>｜>=｝条件値1

〔AND DBKEY｛=｜<｜<=｜>｜>=｝条件値1〕）

条件値1 ::＝

｛DBKEYに対応する値｜

（構成要素に対応する値〔，構成要素に対応する値〕...）｝

検索条件を指定します。

DBKEYに対応する値として，DBKEYの構成要素全体に対して1つの値を指定してください。

DBKEYに対応する値の指定形式を次の表に示します。

表14‒7　DBKEYに対応する値の指定形式

項番

DBKEYのデータ型

条件値の形式※

指定例

備考

1

CHARACTER

文字列定数

DBKEY='AAABBB'

DBKEYを構成するすべての構成要素のデータ型がCHARACTERの場合

2

16進文字列定数

DBKEY=X'414141424242'

3

INTEGER

整数定数

DBKEY=100

DBKEYが一連番号の場合，またはDBKEYの構成要素数が1つでデータ型がINTEGERの場合

4

16進文字列定数

DBKEY=X'64000000'

5

PACKED DECIMAL FIXED

10進数定数

DBKEY=123.456

DBKEYの構成要素数が1つでデータ型がPACKED DECIMAL FIXEDの場合

6

16進文字列定数

DBKEY=X'0123456C'

7

上記以外

16進文字列定数

DBKEY=X'010241414164000000'

なし

注※

各定数の表記方法については，マニュアル「HiRDB Version 9 SQLリファレンス」の「定数」を参照してください。

構成要素に対応する値として，DBKEYの1つの構成要素に対して値を指定してください。指定できる値の個数と順序はDBKEYの構成要素と一致させてください。

構成要素に対応する値の指定形式を次の表に示します。

表14‒8　構成要素に対応する値の指定形式

項番

構成要素のデータ型

条件値の形式※

指定例

1

CHARACTER

文字列定数

'AAABBB'

2

16進文字列定数

X'414141424242'

3

XCHARACTER

16進文字列定数

X'01020304'

4

PACKED DECIMAL FIXED

10進数定数

123.456

5

16進文字列定数

X'123C'

6

INTEGER

整数定数

100

7

16進文字列定数

X'64000000'

注※

各定数の表記方法については，マニュアル「HiRDB Version 9 SQLリファレンス」の「定数」を参照してください。

キーの条件の指定規則を次に示します。

キーの条件は2個まで指定できます。

キーの条件を2個指定する場合は，キーの条件が範囲指定となるように指定してください。範囲指定かどうかは，キー（DBKEYの構成要素）全体をXCHARACTER（16進データ）と見なして判定します。ただし，一連番号については，INTEGERで判定します。

ユーザキーの定義がある4V FMBのSDBデータベースの子レコードに対して， DBKEY（一連番号）の条件を指定する場合は，比較記号に'='だけが指定できます。それ以外を指定した場合は，エラーとなります。

格納条件分割をしたレコードの場合，基点条件の条件値のRDエリア分割キー値が，SDBデータベース格納定義のWITHIN句で指定されたRDエリア分割キー値でないときは，エラーとなります。

キー以外の条件::＝

（構成要素名｛=｜<>｜^=｜!=｜<｜<=｜>｜>=｝条件値2

〔｛AND｜OR｝ 構成要素名｛=｜<>｜^=｜!=｜<｜<=｜>｜>=｝条件値2〕…）

条件値2::＝構成要素に対応する値

検索条件を指定します。

構成要素に対応する値の指定形式を次の表に示します。

表14‒9　構成要素に対応する値の指定形式

項番

構成要素のデータ型

条件値の形式※

指定例

1

CHARACTER

文字列定数

'AAABBB'

2

16進文字列定数

X'414141424242'

3

XCHARACTER

16進文字列定数

X'01020304'

4

PACKED DECIMAL FIXED

10進数定数

123.456

5

16進文字列定数

X'123C'

6

INTEGER

整数定数

100

7

16進文字列定数

X'64000000'

注※

各定数の表記方法については，マニュアル「HiRDB Version 9 SQLリファレンス」の「定数」を参照してください。

キー以外の条件の指定規則を次に示します。

キー以外の条件に，DBKEYを指定する条件は指定できません。

9バイト以上の構成要素名は指定できません。そのため，条件式に指定する構成要素名は，8バイト以下で定義しておいてください。

キー以外の条件に指定できる構成要素は，基本項目の構成要素だけです。集団項目の構成要素は指定できません。

キー以外の条件は8個まで指定できます。ただし，キーの条件も一緒に指定する場合は，キー以外の条件の指定数の上限は，「8−キーの条件数」になります。

ユーザキーとユーザキー以外の条件は，論理積（AND）で結合します。

ユーザキーを条件式に指定する場合，次のことに注意してください。

・条件の先頭から指定する必要があります。

・条件は2個まで指定できます。

・条件を2個指定する場合は，範囲指定になるように指定する必要があります。

ユーザキーの条件を指定する場合，キーの条件は指定できません。

ユーザキーの条件に，比較記号「<>」，「^=」，「!=」は指定できません。

ユーザキーの条件に，論理和（OR）は指定できません。

●TERMOPT ｛YES｜NO｝

検索条件に該当するレコードがなく，検索結果がNOT FOUNDのときに，レコードの終端を検知したかどうかの判定を，HiRDB/SDが行うかどうかを指定します。

YES：

レコードの終端を検知したかどうかを判定します。

NO：

レコードの終端を検知したかどうかを判定しません。

●SECIDXSUP ｛YES｜NO｝

二次インデクスを使用するかどうかを指定します。

YES：

二次インデクスが使用できる場合でもポインタ検索を行います。

NO：

二次インデクスが使用できる場合は，二次インデクスを使用して検索を行います。

二次インデクスについては，「2.3.10　二次インデクス【4V FMB，4V AFM】」を参照してください。

(4)　使用例

■4V FMBのSDBデータベースのルートレコードの検索例

 FETCH "FMB1000" FIRST;

次の実行結果が表示されます。

 FETCH INFORMATION
   FETCH DATA
       1 "KEYDATA1"                       'AAAA'
       2 "KEYDATA2"                       'BBBB'
       3 "USERDA0"                        123.45
   ROWID                           : X'070000001900000000000100'
   PAGE NUM                        : 100
 KFPB64050-I FETCH command processing completed

■4V FMBのSDBデータベースの子レコードの検索例

 FETCH "FMB101" FIRST;

次の実行結果が表示されます。

 FETCH INFORMATION
   FETCH DATA
       1 "DBKEY"                          1
       2 "USERDB0"                        'bbbb'
   FETCH SERIAL NUM                : 1
   ROWID                           : X'070000001900000000000200'
   USER POINTER SERIAL NUM         : 0
   SECOND INDEX KIND               : NOUSE
   RECORD POINTER STATUS           : FIRST_LAST
 KFPB64050-I FETCH command processing completed

■4V AFMのSDBデータベースの子レコードの検索例

 FETCH "RECB" FIRST;

次の実行結果が表示されます。

 FETCH INFORMATION
   FETCH DATA
       1 "DBKEY_KN"                       1
       2 "USERDATA1"                      'AAAA'
   FETCH SERIAL NUM                : 1
   ROWID                           : X'400000001200000000000100'
   SECOND INDEX KIND               : NOUSE
   RECORD POINTER STATUS           : FIRST_LAST
 KFPB64050-I FETCH command processing completed

(5)　FETCHコマンドの実行時に表示される情報

FETCHコマンドの実行が終了した際，次に示す実行結果が表示されます。

 FETCH INFORMATION
   FETCH DATA
       1 "OCNUM"                     1                       ...1
       2 "USERDATA"                  '00000001'              ...1
   FETCH SERIAL NUM           : 1                            ...2
   ROWID                      : X'280000001900000000008000'  ...3
   USER POINTER SERIAL NUM    : 0                            ...4
   SECOND INDEX KIND          : NOUSE                        ...5
   RECORD POINTER STATUS      : FIRST                        ...6
   FETCH TERMINATED           : NOUSE                        ...7
   PAGE NUM                   : 100                          ...8

［説明］

上記のすべての情報が常に表示される訳ではありません。検索対象のレコードや，検索結果によって表示される項目が異なります。

構成要素の通番，構成要素名，検索データが表示されます。

検索データは次の形式で表示されます。

項番

構成要素のデータ型

検索データの表示形式

表示例

1

CHARACTER

文字列定数の形式で表示されます。

'aaabbb'

2

XCHARACTER

16進文字列定数の形式で表示されます。

X'01020304'

3

PACKED DECIMAL FIXED

10進数定数の形式で表示されます。

123.456

4

INTEGER

整数定数の形式で表示されます。

100

各定数の形式については，マニュアル「HiRDB Version 9 SQLリファレンス」の「定数」を参照してください。

検索したレコードの一連番号が表示されます。

検索したレコードのROWIDが表示されます。

USERポインタのレコードの一連番号の情報が返却された場合，USERポインタが示す一連番号が表示されます。一連番号の情報が返却されなかった場合は，この項目は表示されません。

なお，一連番号の情報は，子レコードの最初の検索時だけ返却されます。

二次インデクスの使用有無が表示されます。

NOUSE：二次インデクスは使用されませんでした。

SERIAL NUM INDEX：一連番号を指定した二次インデクスが使用されました。

USER KEY INDEX：ユーザキーを指定した二次インデクスが使用されました。

レコード格納時のレコードポインタ情報が表示されます。

FIRST：検索したレコードは，FIRSTポインタで示されています。

LAST：検索したレコードは，LASTポインタで示されています。

FIRST LAST：検索したレコードは，FIRSTポインタおよびLASTポインタで示されています。

NONE：検索したレコードは，FIRSTポインタおよびLASTポインタのどちらにも示されていません。

終端検知をしたかどうかが表示されます。

YES：終端検知しました。

NO：終端検知しませんでした。

NOUSE：終端検知機能を使用しませんでした。

検索したルートレコードが属するファミリの事前割り当てページ数または事前割り当てサブページ数が出力されます。

(6)　留意事項

FETCHコマンドは，個別開始している状態で実行してください。

検索条件の条件値は，DBKEYまたは構成要素のデータ型とデータ属性が一致している必要があります。pdsdbexeコマンドは，パディング（データを追加して長さを合わせる処理）や，切り捨てなどのデータの加工を行いません。また，データ型によっては，次の条件を満たす必要があります。

データ型がCHARACTERまたはXCHARACTERの場合

データ長が一致している必要があります。

データ型がPACKED DECIMAL FIXEDまたはINTEGERの場合

条件値が，構成要素のデータ型で表現できる範囲の値である必要があります。また，条件値を16進文字列定数で指定した場合，条件値の長さは，構成要素の長さと同じである必要があります。

なお，データ型がPACKED DECIMAL FIXEDの場合，条件値に指定した文字数で整数部桁数および小数部桁数が決まります。

（例）

01234.000 → 整数部桁数5，小数部桁数3

.12345 → 整数部桁数0，小数部桁数5

上記の例のようにゼロサプレスされません。条件値の整数部桁数および小数部桁数が，構成要素の整数部桁数および小数部桁数以下になるようにしてください。

14.4.4　FETCHDB_ALL（複数レコードの検索）

(1)　機能

ルートレコード以下のすべてのレコード実現値を取得します。

(2)　指定形式

 FETCHDB_ALL

     ｛FIRST｜NEXT｜SKIP｝

     〔BUFFER_SIZE データ格納エリアサイズ〕

     〔WHERE キーの条件〕

     〔UNTIL NOT FOUND〕

     〔TERMOPT｛YES｜NO｝〕;

注意事項

最後にセミコロン（ ; ）の指定が必要です。

オペランドの指定順序は変更できません。

(3)　オペランドの説明

●｛FIRST｜NEXT｜SKIP｝

検索の動作を指定します。

FIRST：条件式で指定されたルートレコードから検索を開始します。

NEXT：前回，複数レコードの検索で検索したレコードの，次のレコードから検索を開始します。

SKIP：前回，複数レコードの検索で検索したファミリの，次のファミリ（次のルートレコード）から検索を開始します。

検索の動作の詳細については，「2.5.10(6)　複数レコードの検索例」を参照してください。

●BUFFER_SIZE データ格納エリアサイズ　〜＜符号なし整数＞（1000〜65535）《MAX(ファミリの最大レコードサイズ×2,1000)》（単位：バイト）

検索したファミリのレコード実現値を取得するエリアのサイズを指定します。

データ格納エリアのサイズについては，「2.5.10(5)(a)　データ格納エリアの領域長の指定」を参照してください。

●WHERE キーの条件

検索条件としてキーの条件を指定します。

キーの条件::=

（DBKEY｛=｜<｜<=｜>｜>=｝条件値1

〔AND DBKEY｛=｜<｜<=｜>｜>=｝条件値1〕）

条件値1 ::＝

｛DBKEYに対応する値｜

（構成要素に対応する値〔，構成要素に対応する値〕...）｝

検索条件を指定します。

DBKEYに対応する値として，DBKEYの構成要素全体に対して1つの値を指定してください。

DBKEYに対応する値の指定形式を次の表に示します。

表14‒10　DBKEYに対応する値の指定形式

項番

DBKEYのデータ型

条件値の形式※

指定例

備考

1

CHARACTER

文字列定数

DBKEY='AAABBB'

DBKEYを構成するすべての構成要素のデータ型がCHARACTERの場合

2

16進文字列定数

DBKEY=X'414141424242'

3

INTEGER

整数定数

DBKEY=100

DBKEYが一連番号の場合，またはDBKEYの構成要素数が1つでデータ型がINTEGERの場合

4

16進文字列定数

DBKEY=X'64000000'

5

PACKED DECIMAL FIXED

10進数定数

DBKEY=123.456

DBKEYの構成要素数が1つでデータ型がPACKED DECIMAL FIXEDの場合

6

16進文字列定数

DBKEY=X'0123456C'

7

上記以外

16進文字列定数

DBKEY=X'010241414164000000'

なし

注※

各定数の表記方法については，マニュアル「HiRDB Version 9 SQLリファレンス」の「定数」を参照してください。

構成要素に対応する値として，DBKEYの1つの構成要素に対して値を指定してください。指定できる値の個数と順序はDBKEYの構成要素と一致させてください。

構成要素に対応する値の指定形式を次の表に示します。

表14‒11　構成要素に対応する値の指定形式

項番

構成要素のデータ型

条件値の形式※

指定例

1

CHARACTER

文字列定数

'AAABBB'

2

16進文字列定数

X'414141424242'

3

XCHARACTER

16進文字列定数

X'01020304'

4

PACKED DECIMAL FIXED

10進数定数

123.456

5

16進文字列定数

X'123C'

6

INTEGER

整数定数

100

7

16進文字列定数

X'64000000'

注※

各定数の表記方法については，マニュアル「HiRDB Version 9 SQLリファレンス」の「定数」を参照してください。

キーの条件の指定規則を次に示します。

キーの条件は2個まで指定できます。

キーの条件を2個指定する場合は，キーの条件が範囲指定となるように指定してください。

格納条件分割をしたレコードの場合，基点条件の条件値のRDエリア分割キー値が，SDBデータベース格納定義のWITHIN句で指定されたRDエリア分割キー値でないと，エラーになります。

●UNTIL NOT FOUND

複数レコードの検索を，検索結果がNOT FOUNDになるまで繰り返し実行する場合に指定します。

●TERMOPT ｛YES｜NO｝

検索条件に該当するレコードがなく，検索結果がNOT FOUNDのときに，レコードの終端を検知したかどうかの判定を，HiRDB/SDが行うかどうかを指定します。

YES：

レコードの終端を検知したかどうかを判定します。

NO：

レコードの終端を検知したかどうかを判定しません。

(4)　使用例

■複数レコードの検索例

 FETCHDB_ALL FIRST;

次の実行結果が表示されます。

FETCHDB_ALL INFORMATION
  SPECIFIED BUFFER_SIZE           :  1000
  FETCH DATA SIZE                 :   240
  FETCH RECORD NUM                :     2
  FAMILY RECORD FETCH             : COMPLETED
  PAGE NUM                        : 100
FETCHDB_ALL RECORD INFORMATION    :     1/    2
  FETCH RECORD "FMB1000"
      1 "KEYDATA1"                       X'01'
      2 "USERDA0"                        'aaaaaaaaaa'
FETCHDB_ALL RECORD INFORMATION    :     2/    2
  FETCH RECORD "FMB101"
      1 "KEYDATA1"                       X'01'
      2 "DBKEY"                          1
      3 "USERDB0"                        '1111111111'
  FETCH SERIAL NUM                : 1
  USER POINTER RECORD             : NO
FETCHDB_ALL FAMILY INFORMATION
  RECOMMENDATION BUFFER_SIZE      :   240
KFPB64050-I FETCHDB_ALL command processing completed

(5)　FETCHDB_ALLコマンドの実行時に表示される情報

FETCHコマンドの実行が終了した際，次に示す実行結果が表示されます。

 FETCHDB_ALL INFORMATION
   SPECIFIED BUFFER_SIZE           :  1000                  ...1
   FETCH DATA SIZE                 :   240                  ...2
   FETCH RECORD NUM                :     2                  ...3
   FAMILY RECORD FETCH             : COMPLETED              ...4
   FETCH TERMINATED                : NOUSE                  ...5
   PAGE NUM                        : 100                    ...6
 FETCHDB_ALL RECORD INFORMATION    :     1/    2            ...7
   FETCH RECORD "FMB1000"                                   ...8
       1 "KEYDATA1"                       X'01'             ...9
       2 "USERDA0"                        'aaaaaaaaaa'      ...9
 FETCHDB_ALL RECORD INFORMATION    :     2/    2            ...7
   FETCH RECORD "FMB101"                                    ...8
       1 "KEYDATA1"                       X'01'             ...9
       2 "DBKEY"                          1                 ...9
       3 "USERDB0"                        '1111111111'      ...9
   FETCH SERIAL NUM                : 1                      ...10
   USER POINTER RECORD             : NO                     ...11
 FETCHDB_ALL FAMILY INFORMATION
  RECOMMENDATION BUFFER_SIZE      :   240                   ...12

［説明］

上記のすべての情報が常に表示される訳ではありません。検索対象のレコードや，検索結果によって表示される項目が異なります。

7〜11の情報は，検索したレコード数分繰り返し表示されます。

複数レコードの検索で使用したデータ格納エリアのサイズが表示されます。

データ格納エリアに格納したデータのサイズが表示されます。

データ格納エリアに格納したレコード実現値数が表示されます。

ファミリのレコード検索が完了したかどうかが表示されます。

COMPLETED：ファミリのすべてのレコードを検索しました。

CONTINUE：ファミリに検索していないレコードがあります。

終端検知をしたかどうかが表示されます。

YES：終端検知しました。

NO：終端検知しませんでした。

NOUSE：終端検知機能を使用しませんでした。

検索したルートレコードが属するファミリの事前割り当てページ数，または事前割り当てサブページ数が出力されます。

検索したレコードの通番と，レコードの総数が表示されます。

検索したレコードのレコード名が表示されます。

構成要素の通番，構成要素名，検索データが表示されます。

検索データは次の形式で表示されます。

項番

構成要素のデータ型

検索データの表示形式

表示例

1

CHARACTER

文字列定数の形式で表示されます。

'aaabbb'

2

XCHARACTER

16進文字列定数の形式で表示されます。

X'01020304'

3

PACKED DECIMAL FIXED

10進数定数の形式で表示されます。

123.456

4

INTEGER

整数定数の形式で表示されます。

100

各定数の形式については，マニュアル「HiRDB Version 9 SQLリファレンス」の「定数」を参照してください。

検索したレコードの一連番号が表示されます。

USERポインタにポイントされているかどうかが表示されます。

YES：USERポインタにポイントされています。

NO：USERポインタにポイントされていません。

最少回数でファミリのすべてのレコードを取得するために必要なデータ格納エリアのサイズが表示されます。この値をBUFFER_SIZE指定値の目安としてください。

(6)　留意事項

FETCHDB_ALLコマンドは，FETCHDB_ALL専用の個別開始（STARTコマンドのFETCHDB_ALL ONLY指定）をしている状態で実行してください。

検索条件の条件値は，DBKEYまたは構成要素のデータ型とデータ属性が一致している必要があります。pdsdbexeコマンドは，パディング（データを追加して長さを合わせる処理）や，切り捨てなどのデータの加工を行いません。また，データ型によっては，次の条件を満たす必要があります。

データ型がCHARACTERまたはXCHARACTERの場合

データ長が一致している必要があります。

データ型がPACKED DECIMAL FIXEDまたはINTEGERの場合

条件値が，構成要素のデータ型で表現できる範囲の値である必要があります。また，条件値を16進文字列定数で指定した場合，条件値の長さは，構成要素の長さと同じである必要があります。

なお，データ型がPACKED DECIMAL FIXEDの場合，条件値に指定した文字数で整数部桁数および小数部桁数が決まります。

（例）

01234.000 → 整数部桁数5，小数部桁数3

.12345 → 整数部桁数0，小数部桁数5

上記の例のようにゼロサプレスされません。条件値の整数部桁数および小数部桁数が，構成要素の整数部桁数および小数部桁数以下になるようにしてください。

14.4.5　FINISH（個別終了）

(1)　機能

HiRDB/SDに対して個別終了要求を行い，SDBデータベースに対する操作の終了処理を行います。

(2)　指定形式

 FINISH;

注意事項

最後にセミコロン（ ; ）の指定が必要です。

(3)　留意事項

FINISHコマンドは，個別開始している状態で実行してください。

FINISHコマンドを実行しても，HiRDBからの切り離しは行われません。そのため，再度STARTコマンドを実行すると，SDBデータベースの操作を行うことができます。

14.4.6　MODIFY（レコードの更新）

(1)　機能

1つのレコード実現値を更新します。

(2)　指定形式

 MODIFY レコード名

      〔SET 構成要素名=更新値〔,構成要素名=更新値〕…〕

      〔USERPTROPT ｛SET｜NOSET｜CLEAR｝〕;

注意事項

最後にセミコロン（ ; ）の指定が必要です。

オペランドの指定順序は変更できません。

(3)　オペランドの説明

●レコード名

〜＜識別子＞((1〜30バイト))

レコード実現値を更新するレコード名を指定します。

4V AFMのSDBデータベースの場合は，子レコード名を指定します。

レコード名に英小文字を使用している場合は，レコード名を引用符（ " ）で囲んでください。引用符で囲まないと，英小文字は英大文字と見なされます。

●SET 構成要素名=更新値〔,構成要素名=更新値〕…

構成要素名：〜＜識別子＞((1〜30バイト))

更新対象の構成要素名と更新値を指定します。

このオペランドを省略した場合，USERポインタの操作だけを行います。

指定規則を次に示します。

最下位レベルの構成要素名を指定してください。

構成要素名は，更新する構成要素の個数分指定できます。

同じ構成要素名は指定できません。

構成要素名に英小文字を使用している場合は，構成要素名を引用符（ " ）で囲んでください。引用符で囲まないと，英小文字は英大文字と見なされます。

構成要素のデータ型に対応する更新値を指定してください。更新値の指定形式を次の表に示します。

表14‒12　更新値の指定形式

項番

構成要素のデータ型

更新値の形式※

指定例

1

CHARACTER

文字列定数

'AAABBB'

2

16進文字列定数

X'414141424242'

3

XCHARACTER

16進文字列定数

X'01020304'

4

PACKED DECIMAL FIXED

10進数定数

123.456

5

16進文字列定数

X'123C'

6

INTEGER

整数定数

100

7

16進文字列定数

X'64000000'

注※

各定数の表記方法については，マニュアル「HiRDB Version 9 SQLリファレンス」の「定数」を参照してください。

●USERPTROPT ｛SET｜NOSET｜CLEAR｝

ポインタオプションを指定します。

SET：更新するレコード実現値をUSERポインタに設定します。

NOSET：更新するレコード実現値をUSERポインタに設定しません。

CLEAR：USERポインタの設定を解除します。

USERポインタを持たないレコード型の場合は，このオペランドを省略してください。

CLEARは，更新対象のレコードがUSERポインタの示すレコードの場合に指定してください。

このオペランドを省略した場合は，ポインタオプションを使用しません。

USERポインタの設定，解除については，「2.5.7(1)　USERポインタの設定・解除【4V FMB】」を参照してください。

(4)　使用例

MODIFYコマンドを実行してレコード実現値を更新する手順を次に示します。

手順

MODIFYコマンドを実行する

 MODIFY "FMB1000" SET "USERDA0"=100.45;

更新対象のレコードが正しいかを確認する

 MODIFY DATA
     1 "USERDA0"
       <BEFORE> 999.45
       <AFTER>  100.45
 AGREE TO MODIFY ? [ENTER YES OR NO]
 YES   ←上記の情報を確認後，YESを指定します。

MODIFYコマンドを実行してよいかどうかの確認メッセージが表示されます。

構成要素名，および更新前後のレコード実現値を確認してから，YESをしてください。

参考

構成要素名などに誤りがある場合は，NOを指定してMODIFYコマンドの実行を中止してください。

MODIFYコマンドの実行結果を確認する

 MODIFY INFORMATION
   ROWID                           : X'070000001900000000000100'
 KFPB64050-I MODIFY command processing completed

MODIFYコマンドの実行結果が表示されます。

(5)　MODIFYコマンドの実行時に表示される情報

MODIFYコマンドの実行時に表示される情報について説明します。

(a)　MODIFYコマンドの実行確認メッセージ

MODIFYコマンドを実行した際，次に示す確認メッセージが表示されます。

（例）

 MODIFY DATA
     1 "USERDA0"                       ...1
       <BEFORE> 999.45                 ...2
       <AFTER>  100.45                 ...3
 AGREE TO MODIFY ? [ENTER YES OR NO]   ...4

［説明］

構成要素の通番および構成要素名が表示されます。MODIFYコマンドのSETオペランドに指定した順番になります。

更新前のレコード実現値が表示されます。※

更新後のレコード実現値が表示されます。※

MODIFYコマンドを実行するかどうかの確認メッセージが表示されます。

1.〜3.の情報を確認し，問題がない場合はYESまたはyesを指定してください。

MODIFYコマンドの実行を中止する場合は，NOまたはnoを指定してください。

参考

YESまたはyes以外を指定した場合，NOが指定されたと見なされます。

USERポインタの更新だけを行う場合は，MODIFYコマンドの実行確認メッセージは表示されません。

注※

更新前後のレコード実現値は次の形式で表示されます。

項番

構成要素のデータ型

更新前後のデータの表示形式

表示例

1

CHARACTER

文字列定数の形式で表示されます。

'aaabbb'

2

XCHARACTER

16進文字列定数の形式で表示されます。

X'01020304'

3

PACKED DECIMAL FIXED

10進数定数の形式で表示されます。

ただし，更新後のレコード実現値が10進数定数の形式で表現できない場合は，16進文字列定数の形式で表示されます。

123.456

4

INTEGER

整数定数の形式で表示されます。

100

各定数の形式については，マニュアル「HiRDB Version 9 SQLリファレンス」の「定数」を参照してください。

(b)　MODIFYコマンドの実行結果

MODIFYコマンドの実行が終了した際，次に示す実行結果が表示されます。

 MODIFY INFORMATION
   USER POINTER            : OPERATED                     ...1
   USER POINTER SERIAL NUM : 10                           ...2
   ROWID                   : X'880000001900000000000100'  ...3

［説明］

USERポインタを操作したかどうかが表示されます。

USERポインタを操作した場合は，OPERATEDが表示されます。USERポインタを操作していない場合は，この項目は表示されません。

USERポインタを操作した場合，USERポインタが示す一連番号が表示されます。USERポインタを操作していない場合は，この項目は表示されません。

更新したレコードのROWIDが表示されます。

(6)　留意事項

MODIFYコマンドは，個別開始している状態で実行してください。

更新対象のレコードへの位置づけをしておいてください。位置づけをしていない場合は，エラーになります。

構成要素のデータ型とデータ属性が一致している更新値を指定する必要があります。更新値のパディング（データを追加して長さを合わせる処理）や，切り捨てなどのデータの加工は行われません。また，データ型によっては，次の条件を満たす必要があります。

データ型がCHARACTERまたはXCHARACTERの場合

データ長が一致している必要があります。

データ型がPACKED DECIMAL FIXEDまたはINTEGERの場合

更新値が，構成要素のデータ型で表現できる範囲の値である必要があります。また，更新値を16進文字列定数で指定した場合，更新値の長さは，構成要素の長さと同じである必要があります。

なお，データ型がPACKED DECIMAL FIXEDの場合，更新値に指定した文字数で整数部桁数および小数部桁数が決まります。

（例）

01234.000 → 整数部桁数5，小数部桁数3

.12345 → 整数部桁数0，小数部桁数5

上記の例のようにゼロサプレスされません。更新値の整数部桁数および小数部桁数が，構成要素の整数部桁数および小数部桁数以下になるようにしてください。

MODIFYコマンドが正常終了したあとに#EXITコマンドを実行する場合は，次のようにpdsdbexe操作コマンドを実行してください。

レコードの更新を実行したトランザクションを正常終了させたい場合は，COMMITコマンドを実行してください。

レコードの更新を実行したトランザクションを取り消したい場合は，ROLLBACKコマンドを実行してください。

14.4.7　START（個別開始）

(1)　機能

HiRDB/SDに対して個別開始要求を行い，SDBデータベースに対する操作の開始処理を行います。

(2)　指定形式

 START SDBデータベース名

     〔ACSMODE ｛READ｜UPDATE｝〕

     〔ENQOPT ｛SHARE｜EXCLUSIVE｜OCCUPY｜NONE｝〕

     〔AUTODEQ ｛YES｜NO｝〕

     〔ACSRDAREA (RDエリア名〔,RDエリア名〕…)〕

     〔RDAREAVAL ｛YES｜NO｝〕

     〔FETCHDB_ALL ONLY〕;

注意事項

最後にセミコロン（ ; ）の指定が必要です。

オペランドの指定順序は変更できません。

(3)　オペランドの説明

●SDBデータベース名

〜＜識別子＞((1〜30バイト))

操作対象のSDBデータベース名を指定します。

SDBデータベース名に英小文字を使用している場合は，SDBデータベース名を引用符（ " ）で囲んでください。引用符で囲まないと，英小文字は英大文字と見なされます。

●ACSMODE ｛READ｜UPDATE｝

この個別開始でのアクセスモードを指定します。

READ：参照モード

UPDATE：更新モード

レコード実現値の格納，更新，または削除を実行する場合はUPDATEを指定してください。

●ENQOPT ｛SHARE｜EXCLUSIVE｜OCCUPY｜NONE｝

この個別開始での排他オプションを指定します。

SHARE：共用モード

EXCLUSIVE：排他モード

OCCUPY：占有モード

NONE：無排他モード

NONEを指定して個別開始を実行した場合の注意事項については，「2.9.7　排他モード指定による無排他検索機能【4V FMB，4V AFM】」を参照してください。

アクセスモードと排他オプションの指定可能な組み合わせを次の表に示します。

表14‒13　アクセスモードと排他オプションの指定可能な組み合わせ

排他オプション

アクセスモード

参照モード

更新モード

共用モード

○

×

排他モード

○

○

占有モード

○

○

無排他モード

○

×

（凡例）

○：指定できます。

×：指定できません。

なお，個別開始時には排他は掛かりません。

●AUTODEQ ｛YES｜NO｝

排他自動解除オプションを指定します。

YES：排他自動解除機能を使用します。

NO：排他自動解除機能を使用しません。

排他自動解除機能については，「2.9.4　排他自動解除機能」を参照してください。

●ACSRDAREA (RDエリア名〔,RDエリア名〕…)

〜＜識別子＞((1〜30バイト))

検索対象とするRDエリアを指定します。このオペランドを省略した場合，すべてのRDエリアを指定したと仮定されます。

このオペランドの機能詳細については，次のRDAREAVALオペランドの説明を参照してください。

次の指定をした場合は，エラーになります。

RDエリア名を重複して指定した場合

検索対象のSDBデータベースが格納されているRDエリア以外のRDエリアを指定した場合

4V MAM，4V TAM，または4V SAMのSDBデータベースの場合，このオペランドの指定は無効となります。

●RDAREAVAL ｛YES｜NO｝

レコードの検索時に基点条件指定がある場合でも，ACSRDAREAオペランドで指定したRDエリア指定を有効とするかどうかを指定します。この指定をRDエリア指定有効オプションといいます。

YES：

基点条件指定がある場合でも，ACSRDAREAオペランドで指定したRDエリア指定を有効とします。

NO：

基点条件指定がある場合は，ACSRDAREAオペランドで指定したRDエリア指定を有効としません。

このオペランドの指定値と，レコードの検索範囲の関係を次の表に示します。

表14‒14　RDAREAVALオペランドの指定値と，レコードの検索範囲の関係

検索時の指定

個別開始時の指定

検索範囲※2

アクセス種別

基点条件※1

RDAREAVALオペランドの指定値

ACSRDAREAオペランドのRDエリアの指定※5

基点となるRDエリア

指定なし

−

指定あり

−

ACSRDAREAオペランドに指定されたRDエリアを，格納値※3の昇順に検索します。

検索範囲の例については，「■検索範囲の例（その1）」を参照してください。

RDエリア指定検索※4

指定なし

−

全RDエリアを格納値の昇順に検索します。

指定あり

YES

指定あり

含む

基点条件に指定された検索開始位置から，そのRDエリアとACSRDAREAオペランドに指定されたRDエリアを格納値の昇順に検索します。

含まない

基点条件に指定された格納値を含むレコード実現値と，ACSRDAREAオペランドに指定されたRDエリアを格納値の昇順に検索します。

検索範囲の例については，「■検索範囲の例（その2）」を参照してください。

指定なし

−

基点条件に指定された検索開始位置から，全RDエリアを格納値の昇順に検索します。

NO

−

−

基点条件で指定された検索開始位置から，そのRDエリアだけを格納値の昇順に検索します。

基点検索

（凡例）

−：該当しません。

注※1

検索範囲の開始位置を指定するキーの条件のことを基点条件といいます。条件式の比較記号が，>，>=，および=の場合に，基点条件の指定ありとなります。例えば，「DBKEY>B」または「DBKEY=B」と指定した場合は，検索範囲の開始位置Bが指定されているため，基点条件の指定ありとなります。一方，「DBKEY<H」と指定した場合は，検索範囲の開始位置が指定されていないため，基点条件の指定なしとなります。

注※2

検索範囲の決定は，「表K-2　4V FMBまたはSD FMBのSDBデータベース検索時の検索範囲決定」，「表K-3　4V AFMのSDBデータベース検索時の検索範囲決定」に記載の契機で行われます。以降のNEXTおよびPRIOR指定の検索は，そのときに決定した検索範囲を対象に行われます。

注※3

境界値分割をしている場合は，「格納値」を「境界値に指定された値の範囲」と読み替えてください。

注※4

シーケンシャルインデクスの先頭の構成要素以外をRDエリア分割キーに指定したレコードに対して，ACSRDAREAオペランドを指定してRDエリア指定検索をする場合，次の条件をすべて満たしている必要があります。

・RDエリア分割キーに指定した構成要素よりも前の全構成要素に対してKEYDEF句を指定している。

・上記で指定したKEYDEFごとのDATAで定義したキー値が1つだけである。

上記の条件をすべて満たしていない場合は，エラーになります。

注※5

4V AFMのSDBデータベースで，ACSRDAREAオペランドの指定なしの場合は，この表で説明している検索範囲が，さらに次の範囲に限定されます。

・基点条件指定なしの場合

　表中の検索範囲で，最初に指定と一致した仮想ルートレコードのレコード実現値の子レコードを検索範囲とします。

・基点条件指定ありの場合

　表中の検索範囲で，基点条件で指定されたキー値に対応する仮想ルートレコードのレコード実現値の子レコードを検索範囲とします。

■検索範囲の例（その1）

次の条件下で，レコードの検索をした場合，点線枠内が検索範囲となります。分割条件値が昇順となるA→C→G→Hの順に検索します。

基点条件の指定なし

ACSRDAREAオペランドにRDAREA1およびRDAREA3を指定

■検索範囲の例（その2）

次の条件下で，レコードの検索をした場合，点線枠内が検索範囲となります。分割条件値が，1〜10 → 11〜20 → 31〜40となるように検索します。

基点条件に「DBKEY≧5hi」を指定

ACSRDAREAオペランドにRDAREA2を指定

●FETCHDB_ALL ONLY

FETCHDB_ALLコマンドを実行する個別開始の場合に指定します。

このオペランドを指定して個別開始をした場合，FETCHDB_ALLコマンドおよびFINISHコマンド以外のDMLコマンドは実行できません。また，このオペランドを省略した場合，FETCHDB_ALLコマンドを実行できません。

(4)　使用例

■4V FMBのSDBデータベース（FMB1）の参照だけをする場合

 START "FMB1";

次の実行結果が表示されます。

 DIRECTORY CHECK DATE INFORMATION
   PDSDBDEF EXEC DATE              : 2015-12-14 16:20:46.67
   SDB DIRECTORY UPDATE DATE       : 2015-12-14 16:20:49.16
 ----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
 HiRDB SERVER VERSION INFORMATION
   SERVER VERSION                  : 09-60
 KFPB64050-I DINF(GET DATE) command processing completed
 ----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
 START INFORMATION
   SDB DATABASE NAME "FMB1"
   HANDLE NUMBER                   : 1
   ACSMODE                         : READ
   ENQOPT                          : SHARE
   AUTODEQ                         : NO
   RDAREAVAL                       : NO
 KFPB64050-I DINF(GET SDB SUMMARY) command processing completed
 KFPB64050-I DINF(GET SDB DETAIL) command processing completed
 KFPB64050-I START command processing completed

■4V MAMのSDBデータベース（MAB1）のレコードを更新する場合

 START "MAB1"
 NEXT ? +----2----+----3----+----4----+----5----+----6----+----7----+----8

      ACSMODE UPDATE
 NEXT ? +----2----+----3----+----4----+----5----+----6----+----7----+----8
      ENQOPT EXCLUSIVE;

次の実行結果が表示されます。

 DIRECTORY CHECK DATE INFORMATION
   PDSDBDEF EXEC DATE              : 2015-12-14 16:20:46.67
   SDB DIRECTORY UPDATE DATE       : 2015-12-14 16:20:49.16
 ----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
 HiRDB SERVER VERSION INFORMATION
   SERVER VERSION                  : 09-60
 KFPB64050-I DINF(GET DATE) command processing completed
 ----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
 START INFORMATION
   SDB DATABASE NAME "MAB1"
   HANDLE NUMBER                   : 1
   ACSMODE                         : UPDATE
   ENQOPT                          : EXCLUSIVE
   AUTODEQ                         : NO
   RDAREAVAL                       : NO
 KFPB64050-I DINF(GET SDB SUMMARY) command processing completed
 KFPB64050-I DINF(GET SDB DETAIL) command processing completed
 KFPB64050-I START command processing completed

(5)　STARTコマンドの実行時に表示される情報

STARTコマンドを実行した場合に表示される情報について説明します。

(a)　SDBディレクトリ情報ファイルの日時情報

STARTコマンドを実行した際（トランザクション内の初回のSTARTコマンド実行時），次に示すSDBディレクトリ情報ファイルの日時情報が表示されます。

 DIRECTORY CHECK DATE INFORMATION
   PDSDBDEF EXEC DATE               : 2015-12-14 16:20:46.67  ...1
   SDB DIRECTORY UPDATE DATE        : 2015-12-14 16:20:49.16  ...2

［説明］

常用常駐領域中のSDBディレクトリ情報のSDB定義の最終更新日時（pdsdbdefコマンドの実行日時）が表示されます。

常用常駐領域中のSDBディレクトリ情報の最終更新日時が表示されます。

(b)　HiRDBのバージョン情報

STARTコマンドを実行した際（トランザクション内の初回のSTARTコマンド実行時），次に示すHiRDBのバージョン情報が表示されます。

 HiRDB SERVER VERSION INFORMATION
   SERVER VERSION                  : vv-rr-xn
 KFPB64050-I DINF(GET DATE) command processing completed

［説明］

下線部分に接続先のHiRDBのバージョンが表示されます。

(c)　個別開始に関する情報

STARTコマンドを実行した際，次に示す個別開始に関する情報が表示されます。

 START INFORMATION
   SDB DATABASE NAME "FMB1"                ...1
   HANDLE NUMBER              : 1          ...2
   ACSMODE                    : READ       ...3
   ENQOPT                     : SHARE      ...4
   AUTODEQ                    : NO         ...5
   ACSRDAREA                  : "RDAREA1"  ...6
                                "RDAREA2"  ...6
   RDAREAVAL                  : NO         ...7
   FETCHDB_ALL ONLY                        ...8

［説明］

STARTコマンドに指定したSDBデータベース名が表示されます。

ハンドル番号が表示されます。

ACSMODEオペランドの指定値，または省略時解釈値が表示されます。

ENQOPTオペランドの指定値，または省略時解釈値が表示されます。

AUTODEQオペランドの指定値，または省略時解釈値が表示されます。

ACSRDAREAオペランドの指定値が表示されます。ACSRDAREAオペランドが省略されている場合は，この項目は表示されません。

RDAREAVALオペランドの指定値，または省略時解釈値が表示されます。

FETCHDB_ALL ONLYオペランドが指定されている場合に表示されます。FETCHDB_ALL ONLYオペランドが省略されている場合は，この項目は表示されません。

(6)　留意事項

個別開始の実行後，個別終了を実行していない状態で，個別開始を実行することはできません。

14.4.8　STORE（レコードの格納）

(1)　機能

1つのレコード実現値を格納します。

(2)　指定形式

 STORE レコード名

       SET 構成要素名=格納値〔,構成要素名=格納値〕…

     〔DIRECTION ｛NEXT｜PRIOR｝〕

     〔USERPTROPT ｛SET｜NOSET｝〕

     〔PAGESWITCH ｛CHANGE｜OCCUPY｜NOUSE｝〕

     〔PCTFREEVAL ｛YES｜NO｝〕

     〔SECIDXSUP ｛YES｜NO｝〕

     〔PAGENUM  事前割り当てページ数〕;

注意事項

最後にセミコロン（ ; ）の指定が必要です。

オペランドの指定順序は変更できません。

(3)　オペランドの説明

●レコード名

〜＜識別子＞((1〜30バイト))

レコード実現値を格納するレコード名を指定します。

4V AFMのSDBデータベースの場合は，子レコード名を指定します。

レコード名に英小文字を使用している場合は，レコード名を引用符（ " ）で囲んでください。引用符で囲まないと，英小文字は英大文字と見なされます。

●SET 構成要素名=格納値〔,構成要素名=格納値〕…

構成要素名：〜＜識別子＞((1〜30バイト))

格納するレコードの値を，レコード定義に指定した構成要素の順に指定します。

指定規則を次に示します。

最下位レベルの構成要素（基本項目）に対する格納値を指定してください。

指定が必要な構成要素をすべて指定してください。

指定が必要な構成要素については，「付録K.3　入力情報とキーの定義の関係【4V FMB，4V AFM】」を参照してください。「付録K.3　入力情報とキーの定義の関係【4V FMB，4V AFM】」を参照する際，pdsdbexeコマンドの場合，「レコード型名指定あり」の条件が該当します。

指定が必要な構成要素については，#USAGEコマンドの実行結果で確認できます。#USAGEコマンドの実行結果に表示されたひな形のSETオペランドに出力されている構成要素を，出力されている順にすべて指定してください。#USAGEコマンドについては，「14.6.3　#USAGE（DMLコマンドのひな形の出力）」を参照してください。

構成要素名は，指定が必要な構成要素の個数まで指定できます。

構成要素名に英小文字を使用している場合は，構成要素名を引用符（ " ）で囲んでください。引用符で囲まないと，英小文字は英大文字と見なされます。

格納値の指定形式を次の表に示します。

表14‒15　格納値の指定形式

項番

構成要素のデータ型

格納値の形式※

指定例

1

CHARACTER

文字列定数

'AAABBB'

2

16進文字列定数

X'414141424242'

3

XCHARACTER

16進文字列定数

X'01020304'

4

PACKED DECIMAL FIXED

10進数定数

123.456

5

16進文字列定数

X'123C'

6

INTEGER

整数定数

100

7

16進文字列定数

X'64000000'

注※

各定数の表記方法については，マニュアル「HiRDB Version 9 SQLリファレンス」の「定数」を参照してください。

●DIRECTION ｛NEXT｜PRIOR｝

格納位置を検索する方向を指定します。

NEXT：

格納位置をNEXT方向に検索します。

格納対象のレコード型に位置指示子が位置づいている場合は，位置づいているレコード実現値を基点にし，NEXT方向に検索します。位置指示子が空値の場合は，親のFIRSTポインタを基点にし，NEXT方向に検索します。

PRIOR：

格納位置をPRIOR方向に検索します。

格納対象のレコード型に位置指示子が位置づいている場合は，位置づいているレコード実現値を基点にし，PRIOR方向に検索します。位置指示子が空値の場合は，親のLASTポインタを基点にし，PRIOR方向に検索します。

SDBデータベース定義のORDERオペランドにSORTED DUPLICATES PROHIBITEDを指定しているときにこのオペランドを省略した場合は，NEXTが仮定されます。

なお，次の場合は，このオペランドの指定は無視されます。

4V FMBのSDBデータベースのルートレコードの格納時

SDBデータベース定義のORDERオペランドにLASTを指定したSDBデータベースの場合

●USERPTROPT ｛SET｜NOSET｝

ポインタオプションを指定します。

SET：格納するレコード実現値をUSERポインタに設定します。

NOSET：格納するレコード実現値をUSERポインタに設定しません。

このオペランドを省略した場合は，ポインタオプションを使用しません。格納対象がUSERポインタを持たないレコード型の場合は，このオペランドを省略してください。

USERポインタの設定については，「2.5.6(1)　USERポインタの設定【4V FMB】」を参照してください。

●PAGESWITCH ｛CHANGE｜OCCUPY｜NOUSE｝

ページ切り替えオプションを指定します。

サブページ分割をしている場合は，ページをサブページに読み替えてください。

CHANGE：

レコード格納時にページを切り替えて，新規ページを確保します。

OCCUPY：

レコード格納時にページを切り替えて，新規ページを確保します。確保したページは，格納したレコードで占有します（ほかのレコードを格納しません）。

NOUSE：

ページ切り替えオプションを指定しません。

なお，一括削除後のレコードの格納時，内部でレコードの検索または更新を行う場合は，このオペランドの指定は無視されます。

●PCTFREEVAL ｛YES｜NO｝

SDBデータベース格納定義のPCTFREEオペランドの指定を有効にするかどうかを指定します。

サブページ分割をしている場合は，ページをサブページに読み替えてください。

YES：

SDBデータベース格納定義のPCTFREEオペランドの指定を有効にします。レコード格納時，SDBデータベース格納定義のPCTFREEオペランドに指定したページ内の未使用領域の比率を適用します。

NO：

SDBデータベース格納定義のPCTFREEオペランドの指定を有効にしません。レコード格納時，SDBデータベース格納定義のPCTFREEオペランドに指定したページ内の未使用領域の比率を適用しません。

なお，一括削除後のレコードの格納時，内部でレコードの検索または更新を行う場合は，このオペランドの指定は無視されます。

●SECIDXSUP ｛YES｜NO｝

二次インデクスを使用するかどうかを指定します。

YES：二次インデクスが使用できる場合でもポインタ検索を行います。

NO：二次インデクスが使用できる場合は，二次インデクスを使用して検索を行います。

二次インデクスについては，「2.3.10　二次インデクス【4V FMB，4V AFM】」を参照してください。

●PAGENUM 事前割り当てページ数　〜＜符号なし整数＞（0〜2,147,483,647）

事前割り当てページ数または事前割り当てサブページ数を指定します。

事前ページ割り当て機能については，「2.6.2(4)　事前ページ割り当て機能【4V FMB】」または「2.7.2(4)　事前ページ割り当て機能【4V FMB】」を参照してください。

(4)　使用例

STOREコマンドを実行してレコード実現値を格納する手順を次に示します。

手順

STOREコマンドを実行する

 STORE "FMB101" SET "USERDB0"='DATA' PCTFREEVAL YES;

格納対象のレコードが正しいかを確認する

 STORE RECORD INFORMATION
   RECORD KIND                    : CHILD RECORD
   DBKEY                          : X'4141414101020304'
 AGREE TO STORE ? [ENTER YES OR NO]
 YES     ←上記の情報を確認後，YESを指定します。

STOREコマンドを実行してよいかどうかの確認メッセージが表示されます。

格納対象のレコード種別（RECORD KIND），および格納対象レコードのDBKEY（DBKEY）を確認してから，YESをしてください。

参考

格納対象のレコード種別などに誤りがある場合は，NOを指定してSTOREコマンドの実行を中止してください。

STOREコマンドの実行結果を確認する

 STORE INFORMATION
   STORE SERIAL NUM                : 1
   ROWID                           : X'070000001900000000000200'
   SECOND INDEX KIND               : NOUSE
   RECORD POINTER STATUS           : FIRST_LAST
 KFPB64050-I STORE command processing completed

STOREコマンドの実行結果が表示されます。

(5)　STOREコマンドの実行時に表示される情報

STOREコマンドを実行した場合に表示される情報について説明します。

(a)　STOREコマンドの実行確認メッセージ

STOREコマンドを実行した際，次に示す確認メッセージが表示されます。

 STORE RECORD INFORMATION
   RECORD KIND              : CHILD RECORD          ...1
   DBKEY                    : X'4141414101020304'   ...2
 AGREE TO STORE ? [ENTER YES OR NO]                 ...3

［説明］

格納対象のレコード種別が表示されます。

ROOT RECORD：格納対象レコードがルートレコードであることを意味しています。

CHILD RECORD：格納対象レコードが子レコードであることを意味しています。

格納対象レコードの親レコードのDBKEYが表示されます。

格納対象レコードが子レコードの場合に，この項目が表示されます。

親レコードがルートレコードの場合，親レコードのDBKEYが表示されます。親レコードがルートレコードでない場合，親レコードの一連番号が表示されます。

4V AFMのSDBデータベースの場合の留意事項を次に示します。

・DBKEYの構成要素が1つも指定されていない場合，この項目は表示されません。

・DBKEYのうち，指定されていない部分は0x00が指定されたと見なされます。

STOREコマンドを実行するかどうかの確認メッセージが表示されます。

レコード種別および親レコードのDBKEYを確認（1.および2.の情報を確認）し，問題がない場合はYESまたはyesを指定してください。

STOREコマンドの実行を中止する場合は，NOまたはnoを指定してください。

参考

YESまたはyes以外を指定した場合，NOが指定されたと見なされます。

(b)　STOREコマンドの実行結果

STOREコマンドの実行が終了した際，次に示す実行結果が表示されます。

 STORE INFORMATION
   STORE SERIAL NUM            : 20                           ...1
   ROWID                       : X'880000001900000000000100'  ...2
   USER POINTER                : OPERATED                     ...3
   USER POINTER SERIAL NUM     : 20                           ...4
   SECOND INDEX KIND           : USER KEY INDEX               ...5
   RECORD POINTER STATUS       : LAST                         ...6

［説明］

格納したレコードの一連番号が表示されます。

格納したレコードのROWIDが表示されます。

USERポインタを操作したかどうかが表示されます。

USERポインタを操作した場合は，OPERATEDが表示されます。USERポインタを操作していない場合は，この項目は表示されません。

USERポインタを操作した場合，USERポインタが示す一連番号が表示されます。USERポインタを操作していない場合は，この項目は表示されません。

二次インデクスを使用したかどうかが表示されます。

NOUSE：二次インデクスは使用されていません。

SERIAL NUM INDEX：一連番号を指定した二次インデクスが使用されました。

USER KEY INDEX：ユーザキーを指定した二次インデクスが使用されました。

レコード格納時のレコードポインタ情報が表示されます。

FIRST：格納したレコードは，FIRSTポインタで示されています。

LAST：格納したレコードは，LASTポインタで示されています。

FIRST LAST：格納したレコードは，FIRSTポインタおよびLASTポインタで示されています。

NONE：格納したレコードは，FIRSTポインタおよびLASTポインタのどちらでも示されていません。

(6)　留意事項

STOREコマンドは，個別開始している状態で実行してください。

子レコードにレコードを格納する場合，親レコードまでの位置づけをしておいてください。位置づけをしていない場合は，エラーになります。

構成要素のデータ型とデータ属性が一致している格納値を指定する必要があります。格納値のパディング（データを追加して長さを合わせる処理）や，切り捨てなどのデータの加工は行われません。また，データ型によっては，次の条件を満たす必要があります。

データ型がCHARACTERまたはXCHARACTERの場合

データ長が一致している必要があります。

データ型がPACKED DECIMAL FIXEDまたはINTEGERの場合

格納値が，構成要素のデータ型で表現できる範囲の値である必要があります。また，格納値を16進文字列定数で指定した場合，格納値の長さは，構成要素の長さと同じである必要があります。

なお，データ型がPACKED DECIMAL FIXEDの場合，格納値に指定した文字数で整数部桁数および小数部桁数が決まります。

（例）

01234.000 → 整数部桁数5，小数部桁数3

.12345 → 整数部桁数0，小数部桁数5

上記の例のようにゼロサプレスされません。格納値の整数部桁数および小数部桁数が，構成要素の整数部桁数および小数部桁数以下になるようにしてください。

STOREコマンドが正常終了したあとに#EXITコマンドを実行する場合は，次のようにpdsdbexe操作コマンドを実行してください。

レコードの格納を実行したトランザクションを正常終了させたい場合は，COMMITコマンドを実行してください。

レコードの格納を実行したトランザクションを取り消したい場合は，ROLLBACKコマンドを実行してください。

14.4.9　DMLコマンド共通の規則

STARTコマンド以外のDMLコマンドは，個別開始している状態で実行してください。

14.5　SQLコマンド

SQLコマンドの機能と入力形式について説明します。

14.5.1　COMMIT（トランザクションの正常終了）

(1)　機能

トランザクションをコミットして正常終了します。

(2)　指定形式

 COMMIT;

注意事項

最後にセミコロン（ ; ）の指定が必要です。

14.5.2　CONNECT（HiRDBへの接続）

(1)　機能

HiRDBに接続します。

DISCONNECTコマンドを実行してHiRDBからの切り離しをしたあとに，HiRDBに再度接続する際にCONNECTコマンドを実行します。

(2)　指定形式

 CONNECT 〔認可識別子〔/パスワード〕 〔ホスト名/ポート番号〕〕;

注意事項

最後にセミコロン（ ; ）の指定が必要です。

(3)　オペランドの説明

●認可識別子

〜＜識別子＞((1〜30文字))

HiRDBに接続する認可識別子を指定します。

認可識別子に英小文字を使用している場合は，認可識別子を引用符（ " ）で囲んでください。引用符で囲まないと，英小文字は英大文字と見なされます。

なお，認可識別子およびパスワードの指定を省略した場合，CONNECTコマンドの実行後，認可識別子およびパスワードの入力要求があります。

●パスワード

〜＜識別子＞((1〜30文字))

認可識別子のパスワードを指定します。

パスワードに英小文字を使用している場合は，パスワードを引用符（ " ）で囲んでください。引用符で囲まないと，英小文字は英大文字と見なされます。

なお，認可識別子を指定してパスワードを省略した場合，CONNECTコマンドの実行後，パスワードの入力要求があります。

●ホスト名

〜＜識別子＞((1〜511バイト))

接続先のHiRDBのホスト名を指定します。ホスト名の指定形式は，クライアント環境定義のPDHOSTと同じです。PDHOSTについては，マニュアル「HiRDB Version 9 UAP開発ガイド」の「クライアント環境定義の設定内容」を参照してください。

次の条件に該当する文字列をホスト名に指定する場合は，ホスト名を引用符（"）で囲んで指定してください。

英小文字を指定する場合

31バイト以上の文字列を指定する場合

英字，数字，下線（_）以外を指定する場合

先頭に英文字以外を指定する場合

なお，ホスト名およびポート番号の指定を省略した場合，pdsdbexeコマンドの引数に指定したホスト名とポート番号が適用されます。pdsdbexeコマンドの引数でもホスト名とポート番号を省略した場合は，クライアント環境定義のPDHOSTとPDNAMEPORTの指定値が適用されます。

PDHOSTおよびPDNAMEPORTについては，マニュアル「HiRDB Version 9 UAP開発ガイド」の「クライアント環境定義の設定内容」を参照してください。

●ポート番号

〜＜符号なし整数＞((5,001〜65,535))

接続先のHiRDBのポート番号を指定します。

(4)　使用例

CONNECTコマンドを実行して，HiRDBに接続する手順を次に示します。

(a)　コマンド入力画面でCONNECTコマンドを実行する場合

手順

CONNECTコマンドを実行する

 CONNECT;

認可識別子とパスワードを指定する

 user-id:"User01"  ←認可識別子を指定して，［Enter］キーを押します。
 "User01"
 password:         ←パスワードを指定して，［Enter］キーを押します。

入力したパスワードは表示されません。

認可識別子またはパスワードに英小文字がある場合は，引用符（ " ）で囲んでください。

認可識別子およびパスワードは，入力行の先頭から指定してください。

パスワードの指定は省略できません。

参考

1.の手順で，認可識別子およびパスワードを指定した場合は，上記の認可識別子およびパスワードの入力要求は表示されません。

1.の手順で，認可識別子だけを指定した場合は，パスワードの入力要求だけが表示されます。

HiRDBに接続したことを確認する

 CONNECT INFORMATION
   SERVER NAME "fes01"
   PROCESS ID                      : 31615
   CONNECT NUMBER                  : 5
 KFPB64050-I CONNECT command processing completed

HiRDBに接続すると，上記のメッセージが表示されます。

CONNECT INFORMATIONには，次の情報が表示されます。

SERVER NAME：接続したサーバ名が表示されます。

PROCESS ID：接続したサーバプロセスのIDが表示されます。

CONNECT NUMBER：コネクト通番が表示されます。

■ホスト名およびポート番号を指定する場合

ホスト名およびポート番号を指定する場合のCONNECTコマンドの指定例を次に示します。

（例）

認可識別子User01，パスワードPswd01でHiRDBに接続します。接続先HiRDBのホスト名はhost1で，ポート番号は20000です。

 CONNECT "User01"/"Pswd01" "host1"/20000;

注意事項

英小文字を指定する場合は，引用符（"）で囲んでください。囲まないと，英小文字は英大文字と見なされます。

(b)　ファイルに記述したCONNECTコマンドをリダイレクトで実行する場合

ファイルに記述したCONNECTコマンドをリダイレクトで実行する場合，次のどちらかの形式でCONNECTコマンドを記述してください。

（例）

認可識別子User01，パスワードPswd01でHiRDBに接続します。

その1

 CONNECT "User01"/"Pswd01";

その2

 CONNECT;
 "User01"  ←認可識別子を記述します（最後に改行が必要）。
 "Pswd01"  ←パスワードを記述します（最後に改行が必要）。

認可識別子またはパスワードに英小文字がある場合は，引用符（ " ）で囲んでください。

その2の形式で記述する場合，認可識別子およびパスワードは，入力行の先頭から記述してください。

14.5.3　DISCONNECT（HiRDBからの切り離し）

(1)　機能

実行中のトランザクションのコミット後に，HiRDBからの切り離しを実行します。

(2)　指定形式

 DISCONNECT;

注意事項

最後にセミコロン（ ; ）の指定が必要です。

(3)　留意事項

DISCONNECTコマンドを実行した場合，HiRDBからの切り離しは実行されますが，pdsdbexeコマンドは終了しません。pdsdbexeコマンドを終了するには，#EXITコマンドを実行する必要があります。

DISCONNECTコマンドの実行後，CONNECTコマンドを実行すると，再度HiRDBに接続できます。

DISCONNECTコマンドを実行した場合，実行中のトランザクションのコミット後に，HiRDBからの切り離しを実行します。そのため，トランザクションを取り消したい場合は，DISCONNECTコマンドを実行する前にROLLBACKコマンドを実行してください。

14.5.4　ROLLBACK（トランザクションの取り消し）

(1)　機能

トランザクションを取り消します。

(2)　指定形式

 ROLLBACK;

注意事項

最後にセミコロン（ ; ）の指定が必要です。

14.6　pdsdbexeサブコマンド

pdsdbexeサブコマンドの機能と入力形式について説明します。

14.6.1　#EXIT（pdsdbexeコマンドの終了）

(1)　機能

HiRDBサーバからの切り離しを実行し，pdsdbexeコマンドを終了します。

(2)　指定形式

 #EXIT;

注意事項

最後にセミコロン（ ; ）の指定が必要です。

(3)　留意事項

実行中のトランザクションを正常終了させたい場合は，#EXITコマンドを実行する前に，必ずCOMMITコマンドを実行してください。

実行中のトランザクションを取り消したい場合は，#EXITコマンドを実行する前に，必ずROLLBACKコマンドを実行してください。

14.6.2　#HELP（ヘルプ情報の出力）

(1)　機能

pdsdbexe操作コマンドの指定形式と指定規則を出力します。

(2)　指定形式

 #HELP ｛CLEAR｜ERASE｜FETCH｜FETCHDB_ALL｜FINISH｜MODIFY｜START｜STORE

       ｜COMMIT｜CONNECT｜DISCONNECT｜ROLLBACK

       ｜#EXIT｜#HELP｜#USAGE｝

      〔｛SUMMARY｜ALL｝〕;

注意事項

最後にセミコロン（ ; ）の指定が必要です。

(3)　オペランドの説明

●｛CLEAR｜ERASE｜FETCH｜FETCHDB_ALL｜FINISH｜MODIFY｜START｜STORE

｜COMMIT｜CONNECT｜DISCONNECT｜ROLLBACK

｜#EXIT｜#HELP｜#USAGE｝

指定形式と指定規則を出力するpdsdbexe操作コマンドを指定します。

CLEAR：CLEARコマンドの指定形式と指定規則を出力します。

ERASE：ERASEコマンドの指定形式と指定規則を出力します。

FETCH：FETCHコマンドの指定形式と指定規則を出力します。

FETCHDB_ALL：FETCHDB_ALLコマンドの指定形式と指定規則を出力します。

FINISH：FINISHコマンドの指定形式と指定規則を出力します。

MODIFY：MODIFYコマンドの指定形式と指定規則を出力します。

START：STARTコマンドの指定形式と指定規則を出力します。

STORE：STOREコマンドの指定形式と指定規則を出力します。

COMMIT：COMMITコマンドの指定形式と指定規則を出力します。

CONNECT：CONNECTコマンドの指定形式と指定規則を出力します。

DISCONNECT：DISCONNECTコマンドの指定形式と指定規則を出力します。

ROLLBACK：ROLLBACKコマンドの指定形式と指定規則を出力します。

#EXIT：#EXITコマンドの指定形式と指定規則を出力します。

#HELP：#HELPコマンドの指定形式と指定規則を出力します。

#USAGE：#USAGEコマンドの指定形式と指定規則を出力します。

●｛SUMMARY｜ALL｝

出力する情報を指定します。

SUMMARY：pdsdbexe操作コマンドの指定形式だけを出力します。

ALL：pdsdbexe操作コマンドの指定形式および指定規則を出力します。

(4)　使用例

STARTコマンドの指定形式および指定規則を出力します。

 #HELP START ALL;

次の実行結果が表示されます。

START "SDB_DATABASE_NAME"
       [ACSMODE   { READ  | UPDATE }]
       [ENQOPT    { SHARE | EXCLUSIVE | OCCUPY | NONE }]
       [AUTODEQ   { YES   | NO }]
       [ACSRDAREA ("RDAREA_NAME"[,"RDAREA_NAME"]...)]
       [RDAREAVAL { YES   | NO }]
       [FETCHDB_ALL ONLY]
      ;

機能
   HiRDB/SDに対して個別開始要求を行い，
   SDBデータベースに対する操作の開始処理を行う。
説明
(a)"SDB_DATABASE_NAME":SDBデータベース名
   操作対象のSDBデータベース名を指定する
(b)ACSMODE
   アクセスモードを指定する
   ・READ:参照モード
   ・UPDATE:更新モード
(c)ENQOPT
   排他オプションを指定する
   ・SHARE:共用モード
   ・EXCLUSIVE:排他モード
   ・OCCUPY:占有モード
   ・NONE:無排他モード
(d)AUTODEQ
   排他自動解除オプションを指定する
   ・YES:排他自動解除機能を使用する
   ・NO:排他自動解除機能を使用しない
(e)ACSRDAREA
   "RDAREA_NAME":RDエリア名
   検索対象とするRDエリアを指定する
   本オペランドを省略した場合，すべてのRDエリアを指定したと仮定される
(f)RDAREAVAL
   RDエリア指定有効オプションを指定する
   ・YES:基点条件指定がある場合でも，RDエリア指定を有効とする
   ・NO:基点条件指定がある場合には，RDエリア指定を有効としない
(g)FETCHDB_ALL ONLY
   FETCHDB_ALLコマンド専用の個別開始とする場合に指定する

KFPB64050-I #HELP command processing completed

参考

出力情報の文字コードは，クライアント環境定義のPDLANGで指定した文字コードになります。

14.6.3　#USAGE（DMLコマンドのひな形の出力）

(1)　機能

SDBデータベースまたはレコードに対するDMLコマンドのひな形を出力します。出力されたひな形を基にして，DMLコマンドを作成できます。

(2)　指定形式

 #USAGE ｛CLEAR｜ERASE｜FETCH｜FETCHDB_ALL｜FINISH｜MODIFY｜START｜STORE｝

      〔｛SDBデータベース名｜レコード名｝〕

      〔｛DBKEY｜USERKEY｝〕;

注意事項

最後にセミコロン（ ; ）の指定が必要です。

(3)　オペランドの説明

●｛CLEAR｜ERASE｜FETCH｜FETCHDB_ALL｜FINISH｜MODIFY｜START｜STORE｝

ひな形を出力するDMLコマンドを指定します。

CLEAR：CLEARコマンドのひな形を出力します。

ERASE：ERASEコマンドのひな形を出力します。

FETCH：FETCHコマンドのひな形を出力します。

FETCHDB_ALL：FETCHDB_ALLコマンドのひな形を出力します。

FINISH：FINISHコマンドのひな形を出力します。

MODIFY：MODIFYコマンドのひな形を出力します。

START：STARTコマンドのひな形を出力します。

STORE：STOREコマンドのひな形を出力します。

#USAGEコマンドを実行できるタイミングを次に示します。

STARTコマンドのひな形を出力する場合

個別開始前または個別終了後に，#USAGEコマンドを実行できます。個別開始から個別終了（COMMITコマンド，ROLLBACKコマンド，DISCONNECTコマンドを含む）までの間は，#USAGEコマンドを実行できません。

CLEARコマンド，ERASEコマンド，FETCHコマンド，FETCHDB_ALLコマンド，FINISHコマンド，MODIFYコマンド，またはSTOREコマンドのひな形を出力する場合

個別開始から個別終了（COMMITコマンド，ROLLBACKコマンド，DISCONNECTコマンドを含む）までの間に限り，#USAGEコマンドを実行できます。個別開始前または個別終了後には，#USAGEコマンドを実行できません。

●｛SDBデータベース名｜レコード名｝

〜＜識別子＞((1〜30バイト))

DMLコマンドの操作対象となるSDBデータベース名またはレコード名を指定します。

STARTまたはFINISHを指定した場合は，SDBデータベース名を指定します。

CLEAR，ERASE，FETCH，MODIFY，またはSTOREを指定した場合は，レコード名を指定します。

SDBデータベース名またはレコード名に英小文字を使用している場合は，SDBデータベース名またはレコード名を引用符（ " ）で囲んでください。引用符で囲まないと，英小文字は英大文字と見なされます。

●｛DBKEY｜USERKEY｝

出力する条件の種別を指定します。このオペランドは，FETCHを指定した場合に指定できます。

DBKEY：DBKEYの条件を出力します。

USERKEY：ユーザキーの条件を出力します。ユーザキーの定義がある場合に指定できます。

(4)　使用例

■CLEARコマンドのひな形を出力する場合

 #USAGE CLEAR "MAM1000";

次の実行結果が表示されます。

 CLEAR "MAM1000"
       WHERE (DBKEY = X'********')
 ;

■ERASEコマンドのひな形を出力する場合

 #USAGE ERASE "FMB1000";

次の実行結果が表示されます。

 ERASE "FMB1000"
       TARGET { SEGMENT | OCCURRENCE }
 ;

■FETCHコマンドのひな形を出力する場合

 #USAGE FETCH "FMB1000";

次の実行結果が表示されます。

 FETCH "FMB1000"
       { FIRST | LAST | NEXT | PRIOR }
       WHERE
         (DBKEY = '********')
       TERMOPT   { YES | NO }
       SECIDXSUP { YES | NO }
 ;

■FETCHDB_ALLコマンドのひな形を出力する場合

 #USAGE FETCHDB_ALL;

次の実行結果が表示されます。

 FETCHDB_ALL
       { FIRST | NEXT | SKIP }
       BUFFER_SIZE *****
       WHERE (DBKEY <= X'********' AND
              DBKEY <= X'********')
       UNTIL NOT FOUND
       TERMOPT   { YES | NO }
 ;

■MODIFYコマンドのひな形を出力する場合

 #USAGE MODIFY "FMB1000";

次の実行結果が表示されます。

 MODIFY "FMB1000"
        SET "USERDA0" = ***.**
        USERPTROPT { SET | NOSET | CLEAR }
 ;

■STARTコマンドのひな形を出力する場合

 #USAGE START "FMB1";

次の実行結果が表示されます。

 START "FMB1"
       ACSMODE   { READ  | UPDATE }
       ENQOPT    { SHARE | EXCLUSIVE | OCCUPY | NONE }
       AUTODEQ   { YES   | NO }
       ACSRDAREA ("*****","*****")
       RDAREAVAL { YES   | NO }
       FETCHDB_ALL ONLY
 ;

■STOREコマンドのひな形を出力する場合

 #USAGE STORE "FMB1000";

次の実行結果が表示されます。

 STORE "FMB1000"
       SET "KEYDATA1" = '****'
         , "KEYDATA2" = '****'
         , "USERDA0" = ***.**
       DIRECTION  { NEXT | PRIOR }
       USERPTROPT { SET | NOSET }
       PAGESWITCH { CHANGE | OCCUPY | NOUSE }
       PCTFREEVAL { YES | NO }
       SECIDXSUP  { YES | NO }
       PAGENUM    **********
 ;

14.7　規則および留意事項

pdsdbexeコマンド実行時の規則および留意事項について説明します。

14.7.1　規則

(1)　pdsdbexeコマンドの実行条件

pdsdbexeコマンドは，HiRDBが稼働中のときだけ実行できます。

pdsdbexeコマンドは，HiRDBに接続可能なマシンで実行してください。

参考

接続先のHiRDBのバージョンとpdsdbexeコマンドのバージョンが異なっていてもpdsdbexeコマンドを実行できます。DMLコマンドは，接続先のHiRDBのバージョンの仕様に従って実行されます。そのため，接続先のHiRDBのバージョンが古い場合，未サポートの機能が原因でエラーになることがあります。

接続先のHiRDBのバージョンは，個別開始時のHiRDBのバージョン情報に出力されます。pdsdbexeコマンドのバージョンは，pdsdbexeコマンドの開始メッセージに出力されます。

(2)　コマンドの実行者

pdsdbexeコマンドを実行する際，CONNECT権限が必要になります。

(3)　コマンド実行前の作業

pdsdbexeコマンド実行時のカレントディレクトリに，pdsdbexeコマンドの実行者の書き込み権限があることを確認してください。

クライアント環境定義のPDLANGに，pdsetupコマンドで指定した文字コードが指定されていることを確認してください。PDLANGについては，マニュアル「HiRDB Version 9 UAP開発ガイド」の「クライアント環境定義の設定内容」を参照してください。

(4)　pdsdbexe操作コマンドの指定規則

pdsdbexe操作コマンドの終わりには，セミコロン（ ; ）を記述してください。セミコロン以降は，コメントとして扱われます。セミコロンがない場合は，継続行（pdsdbexe操作コマンドが途中である）として扱われます。例を次に示します。

（例）

 START "FMB1"                    ←継続行
        ACSRDAREA("RDAREA1",     ←継続行
                  "RDAREA2");    ←DMLコマンドの終了

参考

継続行は，改行記号が削除されたあとに連結されます。

改行コードには，LF（X'0A'）または，CRLF（X'0D0A'）を指定できます。pdsdbexe操作コマンド中の任意の位置に改行コードを指定できますが，改行コードを区切り文字として使用することはできません。

pdsdbexe操作コマンド中に指定された改行コードは，pdsdbexe操作コマンドの実行時にすべて削除されます。そのため，文字列定数の途中に改行コードを指定しても問題ありません（長い文字列定数を複数行に分けて記述できます）。

pdsdbexe操作コマンド中のキーワードとキーワードの間や，キーワードと名前の間などには，区切り文字を指定する必要があります。区切り文字には，空白（X'20'）またはタブ（X'09'）を指定できます。

例えば，「MODIFY RECB」と指定した場合，MODIFYとRECBの間に区切り文字を指定する必要があります。

区切り文字を指定する必要がある個所については，マニュアル「HiRDB Version 9 SQLリファレンス」の「区切り文字の挿入」を参照してください。

参考

キーワードとは，コマンド中に指定するコマンド名や，オペランド名などのことで，例えば次の文字列が該当します。

START，FETCH，#EXITなどのコマンド名

ACSMODEなどのオペランド名と，READ，UPDATEなどのオペランドの指定値

名前とは，コマンド中に指定するSDBデータベース名などのことで，レコード名，構成要素名，RDエリア名，認可識別子，パスワードなど，識別子として指定する項目が該当します。

認可識別子などの名前に英小文字を使用する場合は，名前を引用符（ " ）で囲んでください。引用符で囲まないと，英小文字は英大文字に変換されます。また，アポストロフィ（ ' ）または引用符で囲まれた部分は変換されません。

名前に予約語を使用する場合は，名前を引用符（ " ）で囲んでください。囲まないとpdsdbexe操作コマンドがエラーになることがあるため，名前は引用符で囲んで指定することを推奨します。予約語については，「付録O.1　DMLの予約語」を参照してください。

次の個所にコメントを記述できます。/*と*/で囲まれた部分がコメントになります。

セミコロンから改行までの間

pdsdbexe操作コマンド中ではなく，pdsdbexe操作コマンドの文字列を含まない行

（例1）

 START "FMB1"
        ACSRDAREA("RDAREA1",
                  "RDAREA2");     /* 個別開始 */＜改行＞

（例2）

 /* 個別開始 */
 START "FMB1"
        ACSRDAREA("RDAREA1",
                  "RDAREA2");
 /* FMB1へのアクセス */    /* RDエリア名RDAREA1,RDAREA2 */

pdsdbexe操作コマンド中にコメントは記述できません。

（指定できない例）

 START "FMB1"
        ACSRDAREA("RDAREA1",  /* 個別開始 */
        /* FMB1へのアクセス */
                  "RDAREA2");

コメントを指定した行には，pdsdbexe操作コマンドを指定できません。

（指定できない例）

 /* 個別開始 */    START "FMB1"
        ACSRDAREA("RDAREA1",
                  "RDAREA2");

コメントを複数行に分けて記述することはできません。

（指定できない例）

/* 個別開始
   FMB1へのアクセス */
 START "FMB1"
        ACSRDAREA("RDAREA1",
                  "RDAREA2");

1行の長さは，改行コードを含んで65,530バイトを超えてはいけません。

pdsdbexe操作コマンドの長さは，2,000,000バイトを超えてはいけません（pdsdbexe操作コマンド中に指定した区切り文字も含む長さです）。

X'00'〜X'1F'のコードを指定した場合，空白に変換されます。

pdsdbexe操作コマンドで指定する文字の文字コードは，pdsetupコマンドで指定した文字コードと同じである必要があります。

14.7.2　留意事項

pdsdbexeコマンドは，UAPと同様にクライアント環境定義が有効となります。ただし，クライアント環境定義のPDAUTOCONNECTは有効となりません。OFFが仮定された状態で動作します。PDAUTOCONNECTについては，マニュアル「HiRDB Version 9 UAP開発ガイド」の「クライアント環境定義の設定内容」を参照してください。

pdsdbexeコマンドは，HiRDBで暗黙的ロールバックが発生しないエラーが起きたことを検知した場合，内部的にロールバックを実行し，トランザクションを取り消します。

pdsdbexeコマンドは，回復不要FESに接続してSDBデータベースを操作できません。システム内に回復不要FESユニットがある場合は，クライアント環境定義のPDFESHOSTおよびPDSERVICEGRPを指定して，回復不要FES以外のフロントエンドサーバに接続してください。PDFESHOSTおよびPDSERVICEGRPについては，マニュアル「HiRDB Version 9 UAP開発ガイド」の「クライアント環境定義の設定内容」を参照してください。

14.8　リターンコード

pdsdbexeコマンドのリターンコードの意味および対処を次の表に示します。

表14‒16　pdsdbexeコマンドのリターンコードの意味および対処

リターンコード

意味

対処

0

pdsdbexeコマンドが正常終了しました。

なし。

4

pdsdbexeコマンドの処理が完了しました。ただし，警告レベルのエラーが発生しました。

出力されたメッセージを参照して，メッセージの対処に従ってください。

8

HiRDBまたはpdsdbexeコマンドでエラーを検知しました。

12

処理が続行できないエラーが発生しました。

14.9　トラブルシューティング

ここでは，pdsdbexeコマンドの実行中に障害が発生したときの対処方法について説明します。

14.9.1　障害が発生したときの対処方法

pdsdbexeコマンドの実行中に障害が発生した場合，出力されたメッセージを確認して対処してください。

(1)　トラブルシュート機能

SDBデータベースの操作で障害が発生した場合，HiRDBクライアントの次のトラブルシュート機能を使用して障害要因を調査できます。

SQLトレース機能

クライアントエラーログ機能

拡張SQLエラー情報出力機能

UAP統計レポート機能

上記のトラブルシュート機能の詳細については，「16.5　UAPの障害対策」およびマニュアル「HiRDB Version 9 UAP開発ガイド」の「トラブルシュート」を参照してください。

また，pdsdbexeコマンドが異常終了した場合，クライアント環境定義のPDCLTPATHに指定したディレクトリ下に簡易ダンプが出力されます。ファイル名は次のとおりです（出力メッセージに簡易ダンプファイル名が表示されます）。

ファイル名：

pdsdbexe.abort.YYYYMMDDhhmmss.プロセスID

YYYYMMDDhhmmss：出力日時

PDCLTPATHを省略した場合，またはPDCLTPATHに指定したディレクトリに書き込みができなかった場合は，カレントディレクトリに簡易ダンプが出力されます。

なお，出力された簡易ダンプファイルを保守員に渡すことがあるため，簡易ダンプファイルは退避しておいてください。

(2)　UAP処理時間監視機能との関係

pdsdbexeコマンドには，UAP処理時間監視機能が適用されます。pdsdbexeコマンドが無応答状態などになった場合，クライアント環境定義のPDSWAITTIMEに指定した最大待ち時間を超えると，実行中のトランザクションをロールバックし，HiRDBから自動的に切り離されます。

参考

次のケースでトランザクションが未終了の場合も，UAP処理時間監視機能が適用されます。

OSのkillコマンドでプロセスを中断した場合

[Ctr]＋[c]で処理をキャンセルした場合

PDSWAITTIMEについては，マニュアル「HiRDB Version 9 UAP開発ガイド」の「クライアント環境定義の設定内容」を参照してください。

(3)　自動再接続機能との関係

クライアント環境定義のPDAUTORECONNECTにYESを指定している場合，pdsdbexeコマンドには自動再接続機能が適用されます。PDAUTORECONNECTについては，マニュアル「HiRDB Version 9 UAP開発ガイド」の「クライアント環境定義の設定内容」を参照してください。自動再接続機能については，マニュアル「HiRDB Version 9 UAP開発ガイド」の「自動再接続機能」を参照してください。

15　DMLプリプロセサ（pdsdbcbl）【SD FMB】

この章では，DMLプリプロセサ（pdsdbcbl）の機能と使い方について説明します。

15.1　機能

DMLが記述されているCOBOLのUAPソースプログラムのプリプロセスを，DMLプリプロセサ（pdsdbcbl）で実行します。プリプロセスを実行すると，UAPのソースプログラム中のDMLを，COBOLのコンパイラでコンパイルできる高級言語の命令に置換したポストソースが出力されます。

DMLプリプロセサ（pdsdbcbl）の機能，コマンドの指定方法については，マニュアル「HiRDB Version 9 構造型データベース機能（UAP開発編）」の「DMLプリプロセサ（pdsdbcbl）」を参照してください。

16　HiRDBクライアントの環境設定

この章では，HiRDBクライアントのインストールやUAPの作成と実行に必要な環境定義の方法などについて説明します。

16.1　概要

4V FMBまたは4V AFMのSDBデータベースを操作するには，TP1/FSPが提供するライブラリ関数を使用します。SDBデータベースにアクセスするUAPを開発するときの作業の流れ，UAPの特長，およびSDBデータベースとのインタフェースなどについては，次のマニュアルを参照してください。

「TP1/Financial Service Platform 使用の手引」

「TP1/Financial Service Platform プログラム作成の手引」

「TP1/Server Base Enterprise Option　プログラム作成の手引」

SD FMBのSDBデータベースを操作するには，DMLを使用します。DMLについては，「17.　DMLリファレンス【SD FMB】」を参照してください。SDBデータベースにアクセスするUAPを開発するときの作業の流れ，およびSDBデータベースとのインタフェースなどについては，マニュアル「HiRDB Version 9 構造型データベース機能（UAP開発編）」を参照してください。

SDBデータベースに対する操作については，「2.5　SDBデータベースの操作」を参照してください。

16.2　UAPの設計

ここでは，性能向上，操作性向上に関するUAPの設計について説明します。

UAPを設計する上で必要な，UAPの記述言語，インタフェース領域などについては，マニュアル「TP1/Financial Service Platform 使用の手引」，マニュアル「TP1/Financial Service Platform プログラム作成の手引」，およびマニュアル「TP1/Server Base Enterprise Option　プログラム作成の手引」を参照してください。

なお，ここでは，「4V FMBまたは4V AFMのSDBデータベースを操作するUAPの設計」を対象として説明します。「SD FMBのSDBデータベースを操作するUAPの設計」については，マニュアル「HiRDB Version 9 構造型データベース機能（UAP開発編）」を参照してください。

16.2.1　性能向上，操作性向上に関するUAPの設計【4V FMB，4V AFM】

(1)　SDBデータベースを操作するAPIのエラーの判定と処置

SDBデータベースを操作するAPIのエラーの判定と処置については，マニュアル「HiRDB Version 9 UAP開発ガイド」の「SQLのエラーの判定と処置」を参照してください。なお，「SQL」は「SDBデータベースを操作するAPI」に読み替えてください。

(2)　ブロック転送機能

構造型DB機能を使用するHiRDBでは，サポートしていません。

(3)　複数接続機能

複数接続機能については，マニュアル「HiRDB Version 9 UAP開発ガイド」の「複数接続機能」を参照してください。なお，「SQL」は「SDBデータベースを操作するAPI」に読み替えてください。

(4)　自動再接続機能

自動再接続機能については，マニュアル「HiRDB Version 9 UAP開発ガイド」の「自動再接続機能」を参照してください。

(5)　文字コード変換機能

文字コード変換機能については，マニュアル「HiRDB Version 9 UAP開発ガイド」の「クライアント環境定義の一覧」にある「PDCLTCNVMODE」を参照してください。

構造型DB機能を使用するHiRDBでは，変換対象となる文字列はエラーメッセージだけです。

(6)　マルチスレッド対応

マルチスレッド対応については，マニュアル「HiRDB Version 9 UAP開発ガイド」の「複数接続機能」を参照してください。なお，「SQL」は「SDBデータベースを操作するAPI」に読み替えてください。

16.3　HiRDBクライアントの環境設定

ここでは，クライアント環境定義について説明します。そのほかのHiRDBクライアントの環境設定については，次に示すマニュアルを参照してください。

HiRDBクライアントの種類

HiRDBクライアントには次の2つの種類があります。

HiRDB Structured Data Access Facility/Run Time

HiRDB Structured Data Access Facility/Developer's Kit

HiRDB Structured Data Access Facility/Run Timeは，UAPの実行だけができます。

HiRDB Structured Data Access Facility/Developer's Kitは，SD FMBのSDBデータベースを操作するUAPのプリプロセス，コンパイル，リンケージと，UAPの実行ができます。

HiRDBクライアントのインストール

HiRDBクライアントのインストールについては，マニュアル「HiRDB Version 9 UAP開発ガイド」の「HiRDBクライアントのインストール」を参照してください。

HiRDBクライアントの適用OS

Red Hat Enterprise Linux Server 6（64-bit x86_64）

Red Hat Enterprise Linux Server 7（64-bit x86_64）

HiRDBクライアントのディレクトリおよびファイル構成

HiRDBクライアントのディレクトリおよびファイル構成については，マニュアル「HiRDB Version 9 UAP開発ガイド」の「HiRDBクライアントのディレクトリおよびファイル構成」を参照してください。

HiRDB Structured Data Access Facility/Developer's Kitをインストールしたときに自動的に作成されるHiRDB/SD固有のファイルとディレクトリを次の表に示します。

表16‒1　HiRDB Structured Data Access Facility/Developer's Kitをインストールしたときに自動的に作成されるHiRDB/SD固有のファイルとディレクトリ

名称

ディレクトリ名

ファイル名

ヘッダファイル

/HiRDB/include

PDSDBHND.CBL

コマンド，ユティリティ

/HiRDB/client/utl

pdsdbcbl

pdsdbprp

注

下線の部分は，HiRDBのインストールディレクトリを示します。

HiRDBが提供するライブラリは，複数接続用（マルチスレッド対応），複数接続XA用（動的接続または静的接続のマルチスレッド対応）のファイルだけです。

hostsファイルの設定

hostsファイルの設定については，マニュアル「HiRDB Version 9 UAP開発ガイド」の「hostsファイルの設定」を参照してください。

16.3.1　クライアント環境定義（環境変数の設定）

UAPを実行するためには，HiRDBクライアントごとにクライアント環境定義を設定しておく必要があります。

(1)　クライアント環境定義の設定形式

クライアント環境定義の設定形式については，マニュアル「HiRDB Version 9 UAP開発ガイド」の「クライアント環境定義の設定形式」を参照してください。

(2)　OLTP下のX/Openに従ったAPIを使用したUAPをクライアントとする場合の指定方法

構造型DB機能を使用するHiRDBでは，OpenTP1下のUAPだけをサポートします。

OpenTP1下のUAPについては，マニュアル「HiRDB Version 9 UAP開発ガイド」の「OLTP下のX/Openに従ったAPIを使用したUAPをクライアントとする場合の指定方法」の次の項目を参照してください。

「OpenTP1下のUAPをクライアントとする場合」

「TP1/EE下のUAPをクライアントとする場合（UNIX版限定）」

(3)　クライアント環境定義の一覧

クライアント環境定義の一覧を次の表に示します。クライアント環境定義の各オペランドの説明については，マニュアル「HiRDB Version 9 UAP開発ガイド」の「クライアント環境定義の設定内容」を参照してください。

表中の「番号」欄は，マニュアル「HiRDB Version 9 UAP開発ガイド」の「クライアント環境定義の設定内容」での，各クライアント環境定義のオペランドの番号と対応しています。

なお，クライアント環境定義のオペランドのうち，SDBデータベースを操作するAPIまたはDMLの実行時に有効とならないオペランドがあります。「有効/無効」欄が×のオペランドは，SDBデータベースを操作するAPIまたはDMLの実行時に有効となりません。

表16‒2　クライアント環境定義の一覧

番号

環境変数名

有効/無効

環境変数の分類

1

PDHOST

○

システム構成※1

2

PDNAMEPORT

○

3

PDFESHOST

○

4

PDSERVICEGRP

○

5

PDSRVTYPE

○

6

PDSERVICEPORT

○

7

PDFESGRP

○

8

PDCLTRCVPORT

○

9

PDCLTRCVADDR

○

10

PDTMID

○

OLTP下のX/Openに従ったAPIを使用するクライアント

11

PDXAMODE

○

12

PDTXACANUM

○

13

PDXARCVWTIME

○

14

PDXATRCFILEMODE

○

15

PDXAAUTORECONNECT

○

16

HiRDB_PDHOST

○

17

HiRDB_PDNAMEPORT

○

18

HiRDB_PDTMID

○

19

HiRDB_PDXAMODE

○

20

PDUSER

○

ユーザ実行環境

21

PDCLTAPNAME

○

22

PDCLTLANG

×

23

PDLANG

○

24

PDDBLOG

○

25

PDEXWARN

△※4

26

PDSUBSTRLEN

×

27

PDCLTCNVMODE

△※5

28

PDCLTGAIJIDLL

×

29

PDCLTGAIJIFUNC

×

30

PDCLTGRP

○

31

PDAUTORECONNECT

○

32

PDRCCOUNT

○

33

PDRCINTERVAL

○

34

PDUAPENVFILE

○

35

PDDBBUFLRU

○

36

PDHATRNQUEUING

○

37

PDCLTBINDLOOPBACKADDR

×

38

PDEXTDECCHECK

×

39

PDRCTIMING

○

40

PDAUTHTYPE

○

41

PDDEFAULTOPTION

○

42

PDASTHOST

×

UAPからのコマンド実行

43

PDASTPORT

×

44

PDSYSTEMID

×

45

PDASTUSER

×

46

PDCMDWAITTIME

×

47

PDCMDTRACE

×

48

PDIPC

○

プロセス間メモリ通信機能

49

PDSENDMEMSIZE

○

50

PDRECVMEMSIZE

○

51

PDCWAITTIME

○

システム監視

52

PDSWAITTIME

○

53

PDSWATCHTIME

○

54

PDCWAITTIMEWRNPNT

○

55

PDKALVL

○

56

PDKATIME

○

57

PDTIMEDOUTRETRY

○

58

PDNBLOCKWAITTIME

○

59

PDCONNECTWAITTIME

○

60

PDCLTPATH

○

トラブルシュート

61

PDSQLTRACE

○

62

PDUAPERLOG

○

63

PDERRSKIPCODE

○

64

PDPRMTRC

×

65

PDPRMTRCSIZE

×

66

PDTRCMODE

○

67

PDUAPREPLVL

○

68

PDREPPATH

○

69

PDTRCPATH

○

70

PDSQLTRCOPENMODE

○

71

PDSQLTEXTSIZE

×

72

PDSQLEXECTIME

○

73

PDRCTRACE

○

74

PDWRTLNPATH

×

75

PDWRTLNFILSZ

×

76

PDWRTLNCOMSZ

×

77

PDUAPEXERLOGUSE

○

78

PDUAPEXERLOGPRMSZ

×

79

PDDNDPTRACE

×

80

PDSQLTRCFMT

○

81

PDVWOPTMODE

×

アクセスパス表示ユティリティ用アクセスパス情報ファイル

82

PDTAAPINFPATH

×

HiRDB SQL Tuning Advisor用アクセスパス情報ファイル

83

PDTAAPINFMODE

×

84

PDTAAPINFSIZE

×

85

PDSTJTRNOUT

○

UAPに関する統計情報の出力単位

86

PDLOCKLIMIT

○

排他制御

87

PDDLKPRIO

○

88

PDLOCKSKIP

×

89

PDFORUPDATEEXLOCK

×

90

PDISLLVL

×

SQL関連

91

PDSQLOPTLVL

×

92

PDADDITIONALOPTLVL

×

93

PDHASHTBLSIZE

×

94

PDDFLNVAL

×

95

PDAGGR

×

96

PDCMMTBFDDL

×

97

PDPRPCRCLS

×

98

PDAUTOCONNECT

△※2

99

PDDDLDEAPRPEXE

×

100

PDDDLDEAPRP

×

101

PDLCKWAITTIME

○

102

PDCURSORLVL

×

103

PDDELRSVWDFILE

×

104

PDCALCMDWAITTIME

×

105

PDSTANDARDSQLSTATE

△※3

106

PDBLKF

×

ブロック転送機能

107

PDBINARYBLKF

×

108

PDBLKBUFFSIZE

×

109

PDBINDRETRYCOUNT

○

HiRDBの通信処理

110

PDBINDRETRYINTERVAL

○

111

PDDBACCS

○

インナレプリカ機能

112

PDDBORGUAP

×

更新可能なオンライン再編成

113

PDSPACELVL

×

データの空白変換

114

PDCLTRDNODE

×

XDM/RD E2接続機能

115

PDTP1SERVICE

×

116

PDRDCLTCODE

×

117

PDCNSTRNTNAME

×

参照制約および検査制約

118

PDTMPTBLRDAREA

×

一時表

119

PDBESCONHOLD

○

バックエンドサーバ接続保持機能

120

PDBESCONHTI

○

121

PDODBSTATCACHE

×

ODBC関数

122

PDODBESCAPE

×

123

PDGDATAOPT

×

124

PDODBLOCATOR

×

125

PDODBSPLITSIZE

×

126

PDODBCWRNSKIP

×

127

PDJETCOMPATIBLE

×

128

PDODBGINFOSUPPRESS

×

129

PDODBSTANDARDARGSIZE

×

130

PDODBSTANDARDSQLSTATE

×

131

PDODBSTANDARDDESCCOL

×

132

PDODBSTANDARDGTYPEINFO

×

133

PDPLGIXMK

×

プラグイン

134

PDPLUGINNSUB

×

135

PDPLGPFSZ

×

136

PDPLGPFSZEXP

×

137

PDHSICOPTIONS

×

HSIC限定

138

PDJDBFILEDIR

×

JDBCドライバ

139

PDJDBFILEOUTNUM

×

140

PDJDBONMEMNUM

×

141

PDJDBTRACELEVEL

×

142

PDJDBFILESIZE

×

143

PDXDSHOST

×

XDSクライアント限定

144

PDXDSPORT

×

145

PDXVWOPT

×

（凡例）

○：SDBデータベースを操作するAPIまたはDMLの実行時に有効となります。

△：SDBデータベースを操作するAPIまたはDMLの実行時に有効となりますが，注意事項があります。

×：SDBデータベースを操作するAPIまたはDMLの実行時に有効となりません。

注※1

システム構成に関する環境変数には，HiRDBサーバと接続するときに必要な情報を指定します。HiRDBサーバとの接続形態によっては，環境変数が指定できないことがあります。

HiRDBサーバとの接続形態については，マニュアル「HiRDB Version 9 UAP開発ガイド」の「HiRDBサーバと接続するための環境変数と接続形態との関係」を参照してください。

注※2

pdsdbexeコマンドに対しては，PDAUTOCONNECTの指定が適用されません。pdsdbexeコマンドは，OFFが仮定された状態で動作します。

注※3

システム定義との関連については，マニュアル「HiRDB Version 9 UAP開発ガイド」を参照してください。SQLSTATEについてはマニュアル「HiRDB Version 9 メッセージ」を参照してください。

注※4

一度の要求で複数のレコードに対してアクセスする要求の場合は，最後のレコードに対するアクセスで発生した警告つきのリターンコードだけ受け取ります。複数のレコードに対してアクセスする要求については，マニュアル「TP1/Financial Service Platform プログラム作成の手引」の次の項目を参照してください。

・「SDBハンドラ制御（ee_sdh_〜）（C言語）」の「ee_sdh_accs」

・「SDBハンドラ制御（CBLEESDH）」の「CBLEESDH('ACCS ')」

注※5

SDBデータベースを操作するAPIまたはDMLの実行時は省略またはNOUSEを指定してください。指定した場合，API実行時に変換対象となる文字列はエラーメッセージだけです。

(4)　SDBデータベースを操作するAPIまたはDMLの実行時にだけ指定できるクライアント環境定義

SDBデータベースを操作するAPIまたはDMLの実行時には，「表16-2　クライアント環境定義の一覧」で説明しているクライアント環境定義のオペランド以外に，次の表に示すオペランドが指定できます。

表16‒3　SDBデータベースを操作するAPIまたはDMLの実行時にだけ指定できるクライアント環境定義の一覧

番号

環境変数名

環境変数の分類

1

PDUAPEXERLOGDMLSZ

トラブルシュート

2

PDUAPEXERLOGDMLDATA

3

PDSDBUAPFILE

ユーザ実行環境

4

PDSDBUAPDIR

●PDUAPEXERLOGDMLSZ=DML履歴用バッファのサイズ

〜〈符号なし整数〉((0，6〜65,535))《80》（単位：キロバイト）

SDBデータベースを操作するAPIまたはDMLの実行時に確保するDML履歴用バッファのサイズをキロバイト単位で指定します。このオペランドに0を指定した場合は，DML履歴用バッファを確保しません。

DML履歴用バッファについては「16.5.4(2)　DML履歴用バッファ」を参照してください。

《見積もり方法》

指定値は，次の計算式から見積もってください。

指定値＝↑{(2.5＋ukey_size)×req_num}↑（単位：キロバイト）

ukey_size：操作するレコードのユーザキーのサイズ（単位：キロバイト）

req_num：同一トランザクション内でのSDBデータベースを操作するAPIの要求回数，または同一トランザクション内でのDMLの要求回数

《留意事項》

pdsdbexeコマンドを使ってアクセスする場合，見積もり方法の計算式で求めた値に，以下の計算式で求めた値を加算してください。

↑3.6×アクセスするSDBデータベースの数↑（単位：キロバイト）

見積もり方法の指定値は，平均的な使用を想定した場合の目安です。SDBデータベースを操作するAPIまたはDMLの実行時の要求内容によっては，DML履歴用バッファのサイズが不足することがあります。不足した場合，見積もり値より大きな値を指定してください。

一度の要求で複数のレコードに対してアクセスする要求の場合は，個々のアクセスごとに1回の要求として計算してください。複数のレコードに対してアクセスする要求については，マニュアル「TP1/Financial Service Platform プログラム作成の手引」の「SDBハンドラ制御（ee_sdh_〜）（C言語）」の「ee_sdh_accs」または「SDBハンドラ制御（CBLEESDH）」の「CBLEESDH('ACCS ')」を参照してください。

DML履歴用バッファに記録される情報が多くなるに従って，拡張SQLエラー情報に出力されるエリアダンプの出力量が増加します。その結果，拡張SQLエラー情報の出力に掛かる時間が増加します。SQL文，SDBデータベースを操作するAPIまたはDMLでエラーが発生した際の処理時間が，要求元のタイマ監視などで問題となる場合は，PDUAPEXERLOGDMLSZの指定値を見直してください。

DML履歴用バッファは，HiRDBサーバとの接続後，最初にSDBデータベースを操作するAPIまたはDMLが正常終了した際に確保されます。そのため，SQLしか要求しないでDML履歴用バッファを使用しない場合に，明示的に0を指定する必要はありません。

●PDUAPEXERLOGDMLDATA=｛YES｜NO｝

拡張SQLエラー情報の出力時，DMLINFの出力項目のうちSTORDATAをエラーログファイルに出力するかどうかを指定します。

YES：

DMLINFの出力項目STORDATAをエラーログファイルに出力します。

NO：

DMLINFの出力項目STORDATAをエラーログファイルに出力しません。

出力される拡張SQLエラー情報の詳細については，「16.5.4　拡張SQLエラー情報出力機能」を参照してください。

●PDSDBUAPFILE=SDB用UAP環境定義ファイル名

〜＜識別子＞((最大8文字))

このオペランドは，SDB用UAP環境定義に関するオペランドです。

UAPがSD FMBのSDBデータベースにアクセスする際に，使用するSDB用UAP環境定義ファイルの名称を指定します。

UAPを個別の実行環境で動作させる場合（実行するUAPに対してSDB用UAP環境定義を適用する場合），このオペランドを指定します。この指定をすることで，UAPごとに実行環境を切り替える運用ができます。

SDB用UAP環境定義については，次の個所を参照してください。

「4.9　SDB用UAP環境定義ファイルの準備【SD FMB】」

「9.3　SDB用UAP環境定義【SD FMB】」

このオペランドの指定例を次に示します。

（例）

PDSDBUAPFILE=uapenv01

《留意事項》

このオペランドに指定したSDB用UAP環境定義の指定内容に誤りがある場合は，UAPがHiRDBサーバにCONNECTしたときにエラーになります。

SDB用UAP環境定義ファイル中にSDB用UAP環境定義の指定がない場合，このオペランドの指定は無効になります。そのため，SDB用UAP環境定義ファイルがないものとして動作します（エラーにはなりません）。

●PDSDBUAPDIR=SDB用UAP環境定義ファイルの格納ディレクトリ名

〜＜識別子＞((最大8文字))

このオペランドは，SDB用UAP環境定義に関するオペランドです。

$PDCONFPATH/pdsdbuapenv下にSDB用UAP環境定義ファイルを格納するディレクトリを作成する場合に，このオペランドを指定します。

$PDCONFPATH/pdsdbuapenv下に格納するSDB用UAP環境定義ファイルの数が多くなると，HiRDB/SDがファイルサーチする際の処理時間が長くなります。そのため，SDB用UAP環境定義ファイルの数が多くなる場合は，業務システムなどの単位で，$PDCONFPATH/pdsdbuapenv下にさらにディレクトリを作成することを推奨します。

このオペランドの指定例を次に示します。

（例）

PDSDBUAPDIR=system01

上記の例のように指定した場合，$PDCONFPATH/pdsdbuapenv/system01下にSDB用UAP環境定義ファイルを格納する必要があります。

PDSDBUAPFILEオペランドおよびPDSDBUAPDIRオペランドの指定有無によって，適用されるSDB用UAP環境定義ファイルが次のように決まります。

PDSDBUAPFILEオペランドだけを指定した場合（PDSDBUAPDIRオペランドを指定しない場合）

（例）

PDSDBUAPFILE=uapenv01

$PDCONFPATH/pdsdbuapenv下に格納されているSDB用UAP環境定義ファイル（uapenv01）が適用されます。

PDSDBUAPFILEオペランドおよびPDSDBUAPDIRオペランドを指定した場合

（例）

PDSDBUAPFILE=uapenv01

PDSDBUAPDIR=system01

$PDCONFPATH/pdsdbuapenv/system01下に格納されているSDB用UAP環境定義ファイル（uapenv01）が適用されます。

16.4　UAP実行前の準備

ここでは，4V FMBまたは4V AFMのSDBデータベースを操作するUAPを実行する前の準備作業について説明します。UAPの実行手順，プリプロセスについては，次に示すマニュアルを参照してください。

UAPの実行手順

詳細については，マニュアル「HiRDB Version 9 UAP開発ガイド」の「UAPの実行手順」を参照してください。

プリプロセス

詳細については，マニュアル「HiRDB Version 9 UAP開発ガイド」の「プリプロセス」を参照してください。

SD FMBのSDBデータベースを操作するUAPを実行する前の準備作業（UAPの実行手順，プリプロセス）については，マニュアル「HiRDB Version 9 構造型データベース機能（UAP開発編）」の「UAPの実行前準備（UAPのプリプロセス，コンパイル，リンケージ）」を参照してください。

16.4.1　コンパイルとリンケージ

4V FMBまたは4V AFMのSDBデータベースを操作するUAPのコンパイルおよびリンケージをするときは，HiRDBが提供する次の表に示す共用ライブラリファイルを指定します。

表16‒4　コンパイルおよびリンケージをするときに指定する共用ライブラリファイル

項番

条件

共用ライブラリファイル名

備考

1

OLTP下でない場合

libzcltk64.so

複数接続機能に対応しています。

2

OLTP下の場合

libzcltyk64.so

トランザクション登録方式は，動的登録または静的登録となります。

16.5　UAPの障害対策

ここでは，UAP実行時の履歴やエラー情報を取得するトラブルシュート，およびUAPの障害の種別と回復方法について説明します。

16.5.1　トラブルシュート

UAPに障害が発生した場合に，トラブルシュート機能を利用して障害要因を調査できます。トラブルシュート機能には次のものがあります。

SQLトレース機能

クライアントエラーログ機能

拡張SQLエラー情報出力機能

UAP統計レポート機能

16.5.2　SQLトレース機能

実行したUAPのSQLトレース情報をSQLトレースファイルに取得します。SDBデータベースを操作するAPIまたはDMLの実行時にエラーが発生した場合，SQLトレース情報を参照すると，エラーの原因となるHiRDBの情報を特定できます。

SQLトレースファイルは，取得した情報で満杯になると，最も古い情報から順次新しい情報に書き替えられます。SQLトレース機能の詳細については，マニュアル「HiRDB Version 9 UAP開発ガイド」の「SQLトレース機能」を参照してください。

(1)　SQLトレース情報の見方

SDBデータベースを操作するAPIまたはDMLの実行時に出力されるSQLトレース情報の出力例を次の図に示します。

図16‒1　SQLトレース情報の出力例（クライアント環境定義PDSQLTRCFMTに1を指定した場合）

図16‒2　SQLトレース情報の出力例（クライアント環境定義PDSQLTRCFMTに2を指定した場合）

［説明］

SQLトレース情報に出力される各項目については，マニュアル「HiRDB Version 9 UAP開発ガイド」の「SQLトレース情報の見方」を参照してください。

ただし，上記の出力例で，枠で囲まれた部分の項目については，以下で説明します。

出力内容

説明

UAPEXERLOGDMLSZ

クライアント環境定義のPDUAPEXERLOGDMLSZオペランドの指定値

UAPEXERLOGDMLDATA

クライアント環境定義のPDUAPEXERLOGDMLDATAオペランドの指定値

SDBUAPFILE

クライアント環境定義のPDSDBUAPFILEオペランドの指定値

SDBUAPDIR

クライアント環境定義のPDSDBUAPDIRオペランドの指定値

*DML*

ヘッダ情報

(*4V△)

(*SD△)

要求元の識別記号

括弧で囲まれた4バイトで表示されます（△は半角空白を示します）。X'00'が含まれる場合は，スペースに置換されます。

HNDLNO

ハンドル番号

FNCCD

機能コード

1バイトで表示されます。X'00'が含まれる場合は，スペースに置換されます。

REQCD

要求コード

4バイトで表示されます。X'00'が含まれる場合は，スペースに置換されます。

DBNAME

SDBデータベース名

SDBデータベース名が，指定したサイズ分（最大30バイト）表示されます。

SDBデータベース名にX'00'が含まれる場合は，スペースに置換されます。

REQNUM

同時要求の個数

RECNAME

レコード型名

レコード型名が，指定したサイズ分（最大30バイト）表示されます。

レコード型名にX'00'が含まれる場合は，スペースに置換されます。なお，HiRDBサーバで実行された要求分だけ出力されます。

REQ+:STRT/FNSH※

個別開始/終了一括要求オプション指定時に表示されます。

REQ+:STRT(0)※

個別開始実行要求オプション指定時に表示されます。

次に示す下線部分には，SDBデータベースを操作するAPIを実行する際に入力されたハンドル番号が表示されます。

（例）

REQ+:STRT(0)

REQ+:STRT(1)

注※

個別開始/終了一括要求オプションと個別開始実行要求オプションを同時に指定した場合は，次のように並べて表示されます。

REQNUM:2   REQ+:STRT/FNSH
           REQ+:STRT(0)

(2)　パラメタトレース

SDBデータベースを操作するAPIまたはDMLの実行時に，パラメタトレースは出力されません。

16.5.3　クライアントエラーログ機能

HiRDBクライアントとHiRDBサーバ間の通信処理中，またはX/Openで規定したXAインタフェースでエラーが発生した場合，エラー情報をクライアントエラーログとしてクライアントエラーログファイルに取得します。

SQL文，SDBデータベースを操作するAPI，またはDMLの実行時にエラーが発生した場合，クライアントエラーログ情報を参照すると，エラーの原因となる情報を特定できます。

クライアントエラーログファイルは，取得した情報で満杯になると，最も古い情報から順次新しい情報に書き替えられます。

詳細については，マニュアル「HiRDB Version 9 UAP開発ガイド」の「クライアントエラーログ機能」を参照してください。

(1)　クライアントエラーログ情報の見方

クライアントエラーログ情報の見方については，マニュアル「HiRDB Version 9 UAP開発ガイド」の「クライアントエラーログ情報の見方」を参照してください。なお，「SQL文」は，「SDBデータベースを操作するAPI」または「DML」に読み替えてください。「SQL実行」は，「SDBデータベースを操作するAPIの実行」または「DML」に読み替えてください。

(2)　クライアントエラーログへのメッセージ出力抑止

クライアントエラーログへのメッセージ出力抑止については，マニュアル「HiRDB Version 9 UAP開発ガイド」のクライアント環境定義のPDERRSKIPCODEオペランドの説明を参照してください。

16.5.4　拡張SQLエラー情報出力機能

クライアントエラーログ機能の情報に，SQL文，およびパラメタ情報を加えてSQLエラーレポートファイルに取得します。

SDBデータベースを操作するためのAPIまたはDMLの実行時にエラーが発生した場合，SQLエラー情報を参照すると，エラーの原因となる情報を特定できます。

SQLエラーレポートファイルは，取得した情報で満杯になると，もう一方のファイルに出力先を切り替えます。切り替わったファイルでも，これを繰り返しながら2つのファイルを交互に使用します（切り替え先の古い内容は削除されます）。

詳細については，マニュアル「HiRDB Version 9 UAP開発ガイド」の「拡張SQLエラー情報出力機能」を参照してください。

(1)　SQLエラー情報の見方

SDBデータベースを操作するAPIまたはDMLの実行時に出力されるSQLエラー情報の出力例を図16-3と図16-4に示します。

図16‒3　SQLエラー情報の出力例（4V FMBのSDBデータベースの場合）

図16‒4　SQLエラー情報の出力例（SD FMBのSDBデータベースの場合）

［説明］

SQLエラー情報に出力される各項目については，マニュアル「HiRDB Version 9 UAP開発ガイド」の「SQLエラー情報の見方」を参照してください。このとき，「SQL文」は，「SDBデータベースを操作するAPI」または「DML」に読み替えてください。

ただし，図16-3と図16-4で，枠で囲まれた部分の項目については，以下で説明します。

出力内容

説明

UAP

UAP情報

SVR

サーバ情報

サーバプロセスが動作しているホスト名（出力文字数は最大30バイト）

サーバプロセスの通信ポート番号（出力文字数は最大5バイト）

フロントエンドサーバのサーバ名（出力文字数は最大8バイト）

クライアントライブラリが対応しているプラットフォーム（出力文字数は最大6バイト）

SQLINF

SQL情報

SQL最適化オプションの値（10進数形式）（出力文字数は最大10バイト）

SQL拡張最適化オプションの値（10進数形式）（出力文字数は最大10バイト）

データ保証レベルの値（出力文字数は最大10バイト）

SQL

SDBデータベースを操作するAPIまたはDMLの実行時にはアスタリスク（*）が表示されます。

DMLINF

各エリアの情報

各エリアのサイズが表示されます。エリアサイズが0以下の場合は，エリア名とエリアサイズだけが表示されます。

各エリアの内容がダンプ形式で表示されます（1行に16バイト分が並びます）。同様のデータが2行以上続く場合は，「--- SAME n LINES ---"（nは行数）」が表示されます。ASCII文字はアスタリスク（*）で囲まれて表示されます。

*NO

SQLカウンタ

コネクト要求を1とし，SQL文，SDBデータベースを操作するAPI，またはDMLの実行1回ごとに1カウントアップした値が出力されます。

START TIME

DML要求開始時刻

HiRDBクライアントからフロントエンドサーバに，SDBデータベースを操作するAPIまたはDMLの実行要求を送信した時刻が，YYYY/MM/DD hh:mm:ssの形式で出力されます。

YYYY：年

MM：月

DD：日

hh：時

mm：分

ss：秒

END TIME

DML要求終了時刻

フロントエンドサーバからHiRDBクライアントに，SDBデータベースを操作するAPIまたはDMLの実行結果を返却した時刻が，YYYY/MM/DD hh:mm:ssの形式で出力されます。

YYYY：年

MM：月

DD：日

hh：時

mm：分

ss：秒

HNDCOM

共通エリアの内容

4VCNTROL

4V固有エリア（管理部）の内容

SDCNTROL

SD固有エリア（管理部）の内容

4VREQUEST※

4V固有エリア（要求部）の内容

SDREQUEST

SD固有エリア（要求部）の内容

KEYCONDITION※

キーの条件の条件ブロックエリアの内容

DATACONDITION※

キー以外の条件の条件ブロックエリアの内容

KEYVALUE※

キーの条件の値ブロックエリアの内容

DATAVALUE※

キー以外の条件の値ブロックエリアの内容

この項目で出力されるエリアダンプは，最大64バイトで打ち切られます。エリアサイズには，元々の値が出力されます。

INPUTDATA※

データ指定エリアの内容

STORDATA※

データ格納エリアの内容

この項目は，クライアント環境定義のPDUAPEXERLOGDMLDATAオペランドにYESを指定した場合に出力されます。

この項目で出力されるエリアダンプは，最大64バイトで打ち切られます。エリアサイズには，元々の値が出力されます。

ELMAREA※

構成要素指定エリアの内容

KEYREPORT※

キー報告エリアの内容

RESULTSAVE※

処理結果退避エリアの内容

RDAREANAME※

RDエリア名称格納エリアの内容

SDREQUEST2

SD固有エリア（要求部2）の内容

注※

一度の要求で複数のレコードに対してアクセスする要求の場合は，すべてのアクセス分が表示されます。複数のレコードに対してアクセスする要求については，マニュアル「TP1/Financial Service Platform プログラム作成の手引」の「SDBハンドラ制御（ee_sdh_〜）（C 言語）」の「ee_sdh_accs」を参照してください。

なお，SD FMBのSDBデータベースの場合，複数のレコードに対してアクセスする要求はできません。

DMLINF以降の出力内容については，エラー発生時の要求およびクライアント環境定義のPDUAPEXERLOGDMLSZオペランドの指定値によって，次の情報に対応する内容が出力されます。DML履歴用バッファについては，「(2)　DML履歴用バッファ」を参照してください。

SQLでのエラー発生時（PDUAPEXERLOGDMLSZ＞0の場合）

DML履歴用バッファに記録されたSDBデータベースを操作するAPIまたはDMLの入力情報が出力されます。「図16-3　SQLエラー情報の出力例（4V FMBのSDBデータベースの場合）」または「図16-4　SQLエラー情報の出力例（SD FMBのSDBデータベースの場合）」の出力例の［2］が該当します。

SQLでのエラー発生時（PDUAPEXERLOGDMLSZ=0の場合）

出力されません。DMLINFの文字列も出力されません。

SDBデータベースを操作するAPIまたはDMLでのエラー発生時（PDUAPEXERLOGDMLSZ＞0の場合）

エラー発生時のSDBデータベースを操作するAPIと，DML履歴用バッファに記録されたSDBデータベースを操作するAPIの入力情報が出力されます。

または，エラー発生時のDMLと，DML履歴用バッファに記録されたDMLの入力情報が出力されます。

「図16-3　SQLエラー情報の出力例（4V FMBのSDBデータベースの場合）」または「図16-4　SQLエラー情報の出力例（SD FMBのSDBデータベースの場合）」の出力例の［1］および［2］が該当します。

SDBデータベースを操作するAPIまたはDMLでのエラー発生時（PDUAPEXERLOGDMLSZ＝0の場合）

エラー発生時のSDBデータベースを操作するAPIまたはDMLの入力情報が出力されます。「図16-3　SQLエラー情報の出力例（4V FMBのSDBデータベースの場合）」または「図16-4　SQLエラー情報の出力例（SD FMBのSDBデータベースの場合）」の出力例の［1］が該当します。

留意事項

クライアント環境定義のPDUAPERLOGオペランドに0以外の値を指定した場合，拡張SQLエラー情報の出力が途中で中断されて「--- DATA OMITTED ---」と出力されることがあります。この場合，「（2＋PDUAPEXERLOGDMLSZオペランドの指定値）×5120」以上の値をPDUAPERLOGオペランドに指定してください。その結果，拡張SQLエラー情報が中断されないで出力されるようになります。

(2)　DML履歴用バッファ

DML履歴用バッファとは，CONNECT文を要求してからDISCONNECT文が要求されるまでの間に入力された情報をクライアントライブラリ内に記録するバッファのことです。

SDBデータベースを操作するAPIまたはDMLが正常終了してフロントエンドサーバから実行結果が返却された際に，実行結果を反映した情報をバッファ内に記録します。このとき，バッファの空きがない場合は，古い情報から上書きして記録されます。

DML履歴用バッファの記録イメージを次の図に示します。

図16‒5　DML履歴用バッファの記録イメージ

DML履歴用バッファに格納された情報は，SQL文，SDBデータベースを操作するAPI，またはDMLの実行時の拡張SQLエラー情報出力時にエリアダンプとして出力されます。「図16-3　SQLエラー情報の出力例（4V FMBのSDBデータベースの場合）」または「図16-4　SQLエラー情報の出力例（SD FMBのSDBデータベースの場合）」の出力例の［2］が該当します。

留意事項

エリアダンプの出力量が多くなるほど，拡張SQLエラー情報の出力に掛かる時間が増加します。SQL文，SDBデータベースを操作するAPI，またはDMLでエラーが発生した際の処理時間が，要求元のタイマ監視などで問題となる場合は，次の指定値を見直してください。

クライアント環境定義のPDUAPEXERLOGDMLSZ

DML履歴用バッファのサイズを小さくすると，エリアダンプの出力量が少なくなります。

クライアント環境定義のPDUAPERLOG

0以外の値を指定すると，エリアダンプの出力量が指定したサイズに制限されます。

16.5.5　UAP統計レポート機能

UAP実行時のUAP統計レポートをUAP統計レポートファイルに取得します。

次に示すSDBデータベースを操作するためのAPIまたはDMLを実行した場合，UAP統計レポートを参照すると，アクセスパス情報および位置指示子情報を特定できます。

レコードの検索（FETCH）

位置指示子の位置づけ（FIND）

複数レコードの検索（FETCHDB ALL）

レコードの格納（STORE）

レコードの更新（MODIFY）

レコードの削除（ERASE）

レコードの一括削除

構成情報取得

注意事項

次のAPIまたはDMLの場合は，アクセスパス情報と位置指示子情報は出力されません。

ユティリティが内部的に実行したAPIまたはDML

エラーが発生したAPIまたはDML

終端検知（レコードの検索時に最終のレコードかどうかを判定する）のためにHiRDB/SDが内部的に実行したAPI

UAP統計レポートの詳細については，マニュアル「HiRDB Version 9 UAP開発ガイド」の「UAP統計レポート機能」を参照してください。

(1)　UAP統計レポートの取得方法

UAP統計レポートは，クライアント環境定義のPDCLTPATH，PDSQLTRACE，およびPDUAPREPLVL（pまたはa指定）を設定すると取得できます。

(2)　UAP統計レポートの見方

UAP統計レポートの見方については，マニュアル「HiRDB Version 9 UAP開発ガイド」の「UAP統計レポートの見方」を参照してください。なお，「SQL文」は，「SDBデータベースを操作するAPI」または「DML」に読み替えてください。

SDBデータベースを操作するAPIまたはDMLの実行時に出力される情報の出力例とその説明を次に示します。

サポートしていない情報が設定されていた場合は，'(UNK)'が出力されます。

(a)　アクセスパス情報

［出力例］

［説明］

出力内容

説明

EXEC ID

各IDの情報が表示されます。

それぞれ出力文字数は最大10バイトです。

各IDは，トランザクション開始時に1から開始し，要求ごとに1ずつ増え，最大値4,294,967,295まで増えます。最大値の次の値は0になります。

SDBハンドラの要求ごとに割り振られたブロックID

出力対象外となっている個別開始・個別終了もカウントされます。

SDBデータベース内でフロントエンドサーバからバックエンドサーバへ，SDBデータベースを操作するAPIまたはDMLを送信した回数を示すCALL ID

SDBハンドラの要求の中のSDBデータベースを操作するAPIまたはDMLごとに割り振られたDML ID

SDBデータベース内で実行した，SDBデータベースを操作するAPIまたはDMLごとに割り振られたEXEC ID

DML Type

SDBデータベース内で実行したデータベース操作（出力文字数は最大11バイト）

FETCH：レコードの検索，または位置指示子の位置づけ※

STORE：レコードの格納

ERASE：レコードの削除

MODIFY：レコードの更新

NULLIFY：位置指示子への空値設定

FETCHDB ALL：複数レコードの検索

Record Name

操作対象のレコード型名（出力文字数は最大30バイト）

複数レコードの検索（FETCHDB ALL）の場合はルートレコード型名が表示されます。

Bes Name

操作対象のバックエンドサーバ名（出力文字数は最大8バイト）

RDAREA

次の情報が表示されます。

DML Type がNULLIFYの場合は出力されません。

操作対象のRDエリア名（インナレプリカ機能使用時はオリジナルRDエリア名）（出力文字数は最大30バイト）

操作対象のRDエリアID（16進数形式）（出力文字数は最大10バイト）

Pointer Code

HiRDB/SD内で実行された指示コード（出力文字数は最大4バイト）

文字として表示できない場合は16進形式で表示されます。

Direction

HiRDB/SD内で実行された検索コード（出力文字数は最大4バイト）

文字として表示できない場合は16進形式で表示されます。

レコードの検索時（FETCH），または位置指示子の位置づけ（FIND）のときに指示コードにU以外が指定されている場合，0x00が表示されます。

Pointer Opt

HiRDB/SD内で実行したポインタオプション（出力文字数は最大4バイト）

文字として表示できない場合は16進形式で表示されます。

Insert Code

HiRDB/SD内で実行した挿入位置検索の種別

ORDER LAST：子レコード実現値群の最後に格納します。

ORDER SORTED：子レコードで指定したキー項目の値に従って，昇順または降順に格納します。

KEYDATA

KEYDATA（出力文字数は最大512バイト）

ルートレコードの検索（FETCH），または位置指示子の位置づけ（FIND）の場合：対象となるレコードのKEYDATA（シーケンシャルインデクスキー）を16進形式で表示します。

子レコードの検索（FETCH）の場合：対象となるレコードのKEYDATA（一連番号）を10進形式で表示します。

複数レコードの検索（FETCHDB ALL）の場合：ルートレコードのKEYDATA（シーケンシャルインデクスキー）を16進形式で表示します。

Index Name

レコードの検索に使用したインデクス名（出力文字数は最大30バイト）

インデクスを使用しない場合，この行は表示されません。

SearchCnd

サーチ条件の種類およびサーチ条件の絞り込み範囲（出力文字数は最大105バイト）

インデクスを使用した検索を行わない場合，この行は表示されません。

サーチ条件については，マニュアル「HiRDB Version 9 コマンドリファレンス」の「サーチ条件」を参照してください。

アクセスパス情報では，？パラメタにSDBデータベース内で生成した番号が付与されます。

例：SearchCnd：AT [?(1)]

1つのユーザの条件値を複数の条件から参照している場合，番号は等しくなります。

KeyCnd

キー条件

キー条件がない場合，この行は表示されません。

キー条件については，マニュアル「HiRDB Version 9 コマンドリファレンス」の「キー条件」を参照してください。

アクセスパス情報では，？パラメタにSDBデータベース内で生成した番号が付与されます。

例：MAM_CHILD1.DBNAME>?(3)

1つのユーザの条件値を複数の条件から参照している場合，番号は等しくなります。

RowCnd

システムが使用する内部情報

Parameter

次の情報が表示されます。

サーチ条件，キー条件，ロー条件がない場合，この行は表示されません。

？パラメタに付与された，SDBデータベース内で生成された番号（昇順）（出力文字数は最大2バイト）

上記の番号に対応するサーチ条件，キー条件，ロー条件で使用する条件値（16進数形式）（単位：バイト）

Search Status

複数レコードの検索時の検索状態

0x00：検索結果がNOT FOUNDとなった場合

FINISH：1つのファミリをすべて検索した場合

HALFWAY：1つのファミリのレコードの格納中に，データ格納エリアが満杯になった場合

Unused Len

複数レコードの検索時のデータ格納エリアの余り領域長（出力文字数は最大5バイト）（単位：バイト）

検索結果がNOT FOUNDのときは，データ格納エリアの領域長が表示されます。

Record List

複数レコードの検索時に検索したレコードのレコード型名（出力文字数は最大30バイト）

SDBディレクトリ情報に対応するレコード型名が設定されていない場合は，*****が表示されます。

複数レコードの検索時に検索したレコードごとの検索レコード数（出力文字数は最大3バイト）

注※

FIND文（位置指示子の位置づけ）のSDBデータベースの操作種別は'FETCH'と表示されます。

(b)　位置指示子情報

位置指示子情報には，SDBデータベースを操作するAPIまたはDMLの実行時に使用した位置指示子について，APIまたはDMLの実行後の状態が出力されます。

SDBデータベースを操作するAPIまたはDMLと，出力される位置指示子情報の関係を次の表に示します。

SDBデータベースを操作するAPIまたはDML

レコード位置指示子

親子集合位置指示子

FETCH

ルートレコード

○

×

子レコード

×

○

FIND

○

×

STORE

ルートレコード

○

×

子レコード

×

○

MODIFY

○

×

ERASE

○

×

NULLIFY

○

×

FETCHDB ALL

×

×

（凡例）

○：出力されます。

×：出力されません。

［出力例］

［説明］

出力内容

説明

Cursor Type

位置指示子種別（出力文字数は最大13バイト）

RECORD CURSOR：レコード位置指示子

SET CURSOR：親子集合位置指示子

Record Name

レコード位置指示子に対応するレコードビュー名（出力文字数は最大30バイト）

位置指示子種別がSET CURSOR（親子集合位置指示子）の場合，この行は表示されません。

レコードビュー名が設定されていない場合，“*****”が表示されます。

P Rec Name

親子集合位置指示子の親に対応するレコードビュー名（出力文字数は最大30バイト）

位置指示子種別がRECORD CURSOR（レコード位置指示子）の場合，この行は表示されません。

レコードビュー名が設定されていない場合，“*****”が表示されます。

C Rec Name

親子集合位置指示子の子に対応するレコードビュー名（出力文字数は最大30バイト）

位置指示子種別がRECORD CURSOR（レコード位置指示子）の場合，この行は表示されません。

レコードビュー名が設定されていない場合，“*****”が表示されます。

SDBKEY※

レコード位置指示子が指すSDBKEY（16進数形式）（出力文字数は最大34バイト）

位置指示子種別がSET CURSOR（親子集合位置指示子）の場合，この行は表示されません。

SDBKEY(P)※

親子集合位置指示子が指す親のSDBKEY（16進数形式）（出力文字数は最大34バイト）

位置指示子種別がRECORD CURSOR（レコード位置指示子）の場合，この行は表示されません。

SDBKEY(C1)※

親子集合位置指示子が指す子のSDBKEY（16進数形式）（出力文字数は最大34バイト）

位置指示子種別がRECORD CURSOR（レコード位置指示子）の場合，この行は表示されません。

SDBKEY(C2)※

親子集合位置指示子が指す子のSDBKEY（16進数形式）（出力文字数は最大34バイト）

位置指示子種別がRECORD CURSOR（レコード位置指示子）の場合，この行は表示されません。

また，位置指示子種別がSET CURSOR（親子集合位置指示子）であっても，親子集合位置指示子が複合状態でない場合，この行は表示されません。

Complex

親子集合位置指示子が複合状態であるかどうか（出力文字数は最大3バイト）

YES：複合状態である

NO：複合状態でない

位置指示子種別がRECORD CURSOR（レコード位置指示子）の場合，この行は表示されません。

EraseRetain

システムが使用する内部情報

Idx Name1

位置指示子に対応するインデクスのインデクス名（出力文字数は最大30バイト）

位置指示子中にインデクスの情報を保持していない場合，この行は表示されません（領域だけ存在している場合，“*****”が表示されます）。

Idx Key Len1

位置指示子に対応するインデクスのインデクスキー長（出力文字数は最大3バイト）

位置指示子中にインデクスの情報を保持していない場合，この行は表示されません。

Idx Key1

位置指示子に対応するインデクスのインデクスキー（16進数形式）（出力文字数は最大1,016バイト）

位置指示子中にインデクスの情報を保持していない場合，またはインデクスキー長が0の場合，この行は表示されません。

Idx Name2

位置指示子に対応するインデクスのインデクス名（出力文字数は最大30バイト）

位置指示子中にインデクスの情報を2本分保持していない場合，この行は表示されません（領域だけ存在している場合，“*****”が表示されます）。

Idx Key Len2

位置指示子に対応するインデクスのインデクスキー長（出力文字数は最大3バイト）

位置指示子中にインデクスの情報を2本分保持していない場合，この行は表示されません。

Idx Key2

位置指示子に対応するインデクスのインデクスキー（16進数形式）（出力文字数は最大1,016バイト）

位置指示子中にインデクスの情報を保持していない場合，またはインデクスキー長が0の場合，この行は表示されません。

注※

SDBKEYは空値であっても，0x00000000000000000000000000000000のように値が出力されます。

(c)　増加するアクセスパス情報および位置指示子情報の容量

アクセスパス情報および位置指示子情報を表示すると，SQLトレースファイルの容量が次の式で示す容量分増えます。SQLトレースファイルの見積もり時には注意してください。ただし，SDBデータベースの定義，およびSDBデータベースを操作するAPIまたはDMLによって，容量は大きく変わります。次の式で見積もった値は，ある程度の目安にしてください。

増加量（単位：キロバイト）＝60×SDBデータベースを操作するAPIまたはDMLの実行回数

(d)　アクセスパス情報および位置指示子情報が省略された場合

通信量の制限によってアクセスパス情報および位置指示子情報が省略された場合，その個数が次のように出力されます。

（例）

The number of omitted blocks of DML Optimizer and SDB Cursor is 10.

(e)　UAP単位の情報

UAP単位の情報に，次の項目が出力されます。

終端検知用の検索実行回数（SDTFC）

UAPからのSDBデータベースを操作するAPIの実行要求時，HiRDB/SDが内部的に実行する終端検知用の（レコードの検索時に最終のレコードかどうかを判定するための），FETCHまたはFETCHDB ALLを実行した回数が出力されます。

UAP単位の情報に出力される上記以外の項目については，マニュアル「HiRDB Version 9 UAP開発ガイド」の「UAP統計レポートの見方」を参照してください。

16.5.6　トラブルシュート機能に関する注意事項

次のトラブルシュート機能については，SDBデータベースに関する情報は出力されません。

SQLトレース動的取得機能

HiRDB SQL Tuning Advisor

17　DMLリファレンス【SD FMB】

この章では，SD FMBのSDBデータベースを操作するDMLの機能と文法について説明します。

17.1　DMLの一覧

SD FMBのSDBデータベースを操作するDMLの一覧を次の表に示します。

表17‒1　SD FMBのSDBデータベースを操作するDMLの一覧

項番

分類

DML

機能

1

操作系DML

ERASE

レコード実現値を削除します。

2

FETCH

レコード実現値を検索して，レコード実現値を取得します。また，検索したレコードに対して位置づけを行います。

3

FIND

レコード実現値に位置指示子を位置づけます。

4

MODIFY

レコード実現値を更新します。

5

STORE

レコード実現値を格納します。

注意事項

4V FMBまたは4V AFMのSDBデータベースをDMLで操作することはできません。

17.2　基本項目

DMLを使用する際の基本項目について説明します。

17.2.1　DMLの記述形式

(1)　オペランドの指定順序

オペランドは，各DMLの形式で記述している順序に従って指定してください。

(2)　キーワードの指定

DMLの名称（FETCH，MODIFYなど）のように，機能を使用するために指定する語をキーワードといいます。キーワードは，システムの予約語として登録されているため，決められた位置以外には記述できません。キーワードの例を次に示します。

予約語については，「付録O.1　DMLの予約語」を参照してください。

(3)　区切り文字の挿入

区切り文字には，次の文字を指定できます。

空白（X'20'）

タブ（X'09'）

区切り文字を挿入する位置については，マニュアル「HiRDB Version 9　SQLリファレンス」の「区切り文字の挿入」を参照してください。

(4)　注釈（コメント）

DML中に囲み注釈「/*　　*/」や，単純注釈「--」などを記述できません。

(5)　DMLで使用できる文字

DMLで使用できる文字については，マニュアル「HiRDB Version 9 SQLリファレンス」の「SQLで使用できる文字」を参照してください。

(6)　DMLの最大長

1つのDML文は，区切り文字も含めて1,024バイトまで記述できます。

(7)　名前の指定

名前の指定方法には，引用符（"）で囲んで指定する方法と，引用符で囲まないで指定する方法があります。引用符で囲んで指定する方法を推奨します。

推奨する理由

名前には，予約語と同じ名前を指定できませんが，引用符で囲んだ場合は，予約語と同じ名前を指定できます。

DMLの機能拡張に伴い，将来予約語が増える可能性があります。名前をあらかじめ引用符で囲んでおくと，将来指定した名前が予約語と重複しても，DMLを書き換える必要が生じません。

注意事項

名前を引用符（"）で囲んだ場合，半角英小文字と半角英大文字が区別されます。

次に示す名前は，引用符（"）で囲まないでください。

・埋込み変数名

名前については，「11.4.1（1）　名前の規則」を参照してください。

埋込み変数名については，マニュアル「HiRDB Version 9 構造型データベース機能（UAP開発編）」を参照してください。

17.2.2　DMLのデータ型

(1)　DMLのデータ型

DMLで操作するレコードのデータ型については，「2.3.4（1）　データ項目」を参照してください。

(2)　変換（比較）できるデータ型

変換（比較）できる定数の指定形式を次の表に示します。埋込み変数を使用した変換（比較）については，マニュアル「HiRDB Version 9 構造型データベース機能（UAP開発編）」を参照してください。

表17‒2　変換（比較）できるデータ型

項番

DMLのデータ型

指定値の形式※

指定例

備考

1

CHARACTER

文字列定数

ELM01＝'AAABBB'

レコードの構成要素が基本項目の場合，データ型がCHARACTERであれば，DMLのデータ型はCHARACTERになります。

レコードの構成要素がルートレコードのデータベースキーの場合，すべての構成要素のデータ型がCHARACTERであれば，DMLのデータ型はCHARACTERになります。

2

16進文字列

定数

ELM01＝

X'414141424242'

3

INTEGER

整数定数

ELM01＝100

レコードの構成要素が基本項目の場合，データ型がINTEGERであれば，DMLのデータ型はINTEGERになります。

レコードの構成要素がルートレコードのデータベースキーの場合，構成要素数が1つでデータ型がINTEGERであれば，DMLのデータ型はINTEGERになります。

4

16進文字列

定数

ELM01＝X'64000000'

5

SMALLINT

整数定数

ELM01＝100

レコードの構成要素が基本項目の場合，データ型がSMALLINTであれば，DMLのデータ型はSMALLINTになります。

レコードの構成要素がルートレコードのデータベースキーの場合，構成要素数が1つでデータ型がSMALLINTであれば，DMLのデータ型はSMALLINTになります。

6

16進文字列

定数

ELM01＝X'6400'

7

PACKED DECIMAL FIXED

10進数定数

ELM01＝123.456

レコードの構成要素が基本項目の場合，データ型がPACKED DECIMAL FIXEDであれば，DMLのデータ型はPACKED DECIMAL FIXEDになります。

レコードの構成要素がルートレコードのデータベースキーの場合，構成要素数が1つでデータ型がPACKED DECIMAL FIXEDであれば，DMLのデータ型はPACKED DECIMAL FIXEDになります。

8

16進文字列

定数

ELM01＝X'0123456C'

9

上記以外

16進文字列

定数

ELM01＝

X'010241414164000000'

なし

注※

各定数の表記方法については，マニュアル「HiRDB Version 9　SQLリファレンス」の「定数」を参照してください。

指定した定数に対して，HiRDB/SDはパディング（データを追加して長さを合わせる処理）や，切り捨てなどのデータの加工は行いません。

また，DMLのデータ型によっては，次の条件を満たす必要があります。

DMLのデータ型がCHARACTERまたはXCHARACTERの場合

データ長が一致している必要があります。

DMLのデータ型がPACKED DECIMAL FIXED，INTEGER，またはSMALLINTの場合

指定値はDMLのデータ型で表現できる範囲の値でなければなりません。また，指定値を16進文字列定数で指定した場合，指定値の長さは，構成要素の長さと等しくする必要があります。

なお，DMLのデータ型がPACKED DECIMAL FIXEDの場合，指定値に指定した文字数で整数部桁数および小数部桁数が決まります。

（例）

01234.000 → 整数部桁数5，小数部桁数3
.12345 → 整数部桁数0，小数部桁数5

上記の例のようにゼロサプレスはされません。指定値の整数部桁数および小数部桁数が，構成要素の整数部桁数および小数部桁数以下になるようにしてください。

(3)　PACKED DECIMAL FIXED使用上の注意事項

DMLのデータ型にPACKED DECIMAL FIXEDを使用する場合の注意事項については，「2.3.4（1）　データ項目」を参照してください。

17.2.3　埋込み変数

DMLとUAPとの間で値の受け渡しをする際に，埋込み変数を使用します。埋込み変数の指定形式と機能について説明します。

DMLに埋込み変数を指定する場合の形式を以下に示します。

形式

:埋込み変数

注意事項

コロン（:）と埋込み変数の間に区切り文字を記述しないでください。

機能および用途

埋込み変数の機能および用途を次の表に示します。

表17‒3　埋込み変数の機能および用途

機能

用途

埋込み変数を記述するDML

検索結果のレコードの値の受け取り

レコードの値を受け取ります。

FETCH文

条件値の指定

検索条件に指定した構成要素と比較する値を指定します。

FETCH文，FIND文

更新値の指定

更新後のレコードの値を指定します。

MODIFY文

格納値の指定

格納するレコードの値を指定します。

STORE文

埋込み変数のデータ型とCOBOL言語のデータ記述の関係

埋込み変数をUAP中に記述するときのデータ型とデータ記述の関係については，マニュアル「HiRDB Version 9 構造型データベース機能（UAP開発編）」を参照してください。

埋込み変数の修飾指定

埋込み変数を集団項目で修飾できません。

17.3　構成要素の詳細

DML中に記述する構成要素について説明します。

17.3.1　キーの条件の指定

(1)　機能

DML中に記述したキーの条件に従って論理演算が実行され，その結果が真のものだけが検索対象になります。キーの条件は次の個所に指定できます。

FETCH文のWHERE句

FIND文のWHERE句

(2)　形式

キーの条件：：＝｛（ルートレコードのデータベースキー｛＝｜＞｝条件値）
　　　　　　　　｜（ルートレコードのデータベースキー＞＝条件値
　　　　　　　　 AND ルートレコードのデータベースキー＜＝条件値）｝

　　条件値：：＝｛:埋込み変数
　　　　　　　　｜ルートレコードのデータベースキーに対応する値
　　　　　　　　｜（構成要素に対応する値〔,構成要素に対応する値〕…）｝

(3)　説明

●:埋込み変数

ルートレコードのデータベースキーの構成要素全体に対して指定する値です。

●ルートレコードのデータベースキーに対応する値

ルートレコードのデータベースキーの構成要素全体に対して指定する値です。1つの定数を指定できます。

●構成要素に対応する値

ルートレコードのデータベースキーの1つの構成要素に対して指定する値です。1つの定数を指定できます。

指定規則を次に示します。

（　）内に指定できる「構成要素に対応する値」の数は1〜7です。

指定個数と指定順序は，ルートレコードのデータベースキーの構成要素と一致させてください。

(4)　留意事項

埋込み変数を指定する場合，ルートレコードのデータベースキーと基本項目の構成が一致していて，かつ比較できるデータ型である必要があります。埋込み変数のデータ型については，マニュアル「HiRDB Version 9 構造型データベース機能（UAP開発編）」を参照してください。

ルートレコードのデータベースキーに対応する値，および構成要素に対応する値の指定形式については，「17.2.2(2)変換（比較）できるデータ型」を参照してください。

17.4　操作系DML

操作系DMLの機能，構文形式，および規則について説明します。

操作系DMLは，レコード型のデータを操作するとき，および位置指示子を操作するときに使用します。

17.4.1　ERASE文

(1)　機能

レコード実現値を削除します。

(2)　形式

ERASE
    レコード名
    ALL

(3)　オペランドの説明

●レコード名

〜＜識別子＞((1〜30バイト))

レコード実現値を削除するレコード名を指定します。

注意事項

レコード名に英小文字を使用している場合は，レコード名を引用符（"）で囲んでください。引用符で囲まないと，英小文字は英大文字と見なされます。

レコード名に空白またはハイフン（-）を使用している場合は，レコード名を引用符（"）で囲んでください。

●ALL

最下位レベルのレコードに位置づけしている場合は，位置づけしているレコードのレコード実現値だけを削除します。

最下位レベル以外のレコードに位置づけしている場合は，位置づけしているレコードのレコード実現値と，その下位レベルのレコードのレコード実現値を削除します。

(4)　共通規則

削除対象のレコードを，次のどれかのDMLで位置づけておく必要があります。

FIND文（位置決め目的にUPDATEを指定する）

FETCH文（位置決め目的にUPDATEを指定する）

STORE文

(5)　使用例

例1

ルートレコードRECAから，位置づいているレコード実現値と子レコードを削除します。

ERASE "RECA" ALL

例2

最下位の子レコードRECBから，位置づいているレコード実現値だけを削除します。

ERASE "RECB" ALL

17.4.2　FETCH文

(1)　機能

レコードを検索して，レコード実現値を取得します。また，検索したレコードに対して位置づけを行います。

(2)　形式

FETCH
    〔FOR UPDATE〕
    ｛FIRST｜NEXT｜LAST｜PRIOR｝
      レコード名
      INTO :埋込み変数
     〔WITHIN 親子集合型名〕
     〔WHERE キーの条件〕

(3)　オペランドの説明

●FOR UPDATE

検索したレコードを更新するかどうかを指定します。

検索したレコードを更新する場合は，FOR UPDATEを指定してください。

検索したレコードを更新しない場合は，FOR UPDATEを省略してください。

●｛FIRST｜NEXT｜LAST｜PRIOR｝

検索の基点となるレコードと，検索の方向を示す指示コードを指定します。

レコード名にルートレコードを指定した場合

表17‒4　検索の基点となるレコードと検索の方向（ルートレコード）

指示コード

基点となるレコード

検索方向

FIRST

ルートレコードのデータベースキーの最小値を持つレコード

キー値の昇順

NEXT

位置づけされているルートレコードのデータベースキー値の，次のキー値を持つレコード

位置指示子が空値の場合は，ルートレコードのデータベースキーの最小値を持つレコード

キー値の昇順

LAST

指定できません。

該当しません。

PRIOR

指定できません。

該当しません。

レコード名に子レコードを指定した場合

表17‒5　検索の基点となるレコードと検索の方向（子レコード）

指示コード

基点となるレコード

検索方向

FIRST

親レコードのFIRSTポインタが指すレコード

NEXTポインタの順

NEXT

位置指示子に位置づけされているレコードのNEXTポインタが指すレコード

位置指示子が空値の場合は，親レコードのFIRSTポインタが指すレコード

NEXTポインタの順

LAST

親レコードのLAST ポインタが指すレコード

PRIORポインタの順

PRIOR

位置指示子に位置づけされているレコードのPRIORポインタが指すレコード

位置指示子が空値の場合は，親レコードのLASTポインタが指すレコード

PRIORポインタの順

●レコード名

〜＜識別子＞((1〜30バイト))

検索対象のレコード名を指定します。

注意事項

レコード名に英小文字を使用している場合は，レコード名を引用符（"）で囲んでください。引用符で囲まないと，英小文字は英大文字と見なされます。

レコード名に空白またはハイフン（-）を使用している場合は，レコード名を引用符（"）で囲んでください。

●INTO :埋込み変数

検索したレコード実現値を読み込むための埋込み変数を指定します。

埋込み変数の宣言方法については，マニュアル「HiRDB Version 9 構造型データベース機能（UAP開発編）」を参照してください。

●WITHIN親子集合型名

〜＜識別子＞((1〜30バイト))

検索対象とする親子集合の親子集合型名を指定します。検索対象のレコードが子レコードの場合に指定してください。

注意事項

親子集合型名に英小文字を使用している場合は，親子集合型名を引用符（"）で囲んでください。引用符で囲まないと，英小文字は英大文字と見なされます。

親子集合型名に空白またはハイフン（-）を使用している場合は，親子集合型名を引用符（"）で囲んでください。

●WHERE キーの条件

検索条件を指定します。検索条件は，検索対象がルートレコードの場合に指定できます。

キーの条件については，「17.3.1　キーの条件の指定」を参照してください。

(4)　共通規則

子レコードを検索する場合，検索対象のレコードの親レコードまでを次のどれかのDMLで位置づけておく必要があります。

FIND文

FETCH文

STORE文

(5)　使用例

例1

条件値に埋込み変数を指定して，ルートレコードRECAを検索します。

FETCH FOR UPDATE FIRST "RECA" INTO :WRECA
    WHERE("KEYDATA"=:WKEYDATA)

例2

条件値にルートレコードのデータベースキーに対応する値を指定して，ルートレコードRECAを検索します。

FETCH FOR UPDATE FIRST "RECA" INTO :WRECA
    WHERE("KEYDATA"='0001')

例3

条件値に構成要素に対応する値を指定して，ルートレコードRECAを検索します。

FETCH FOR UPDATE FIRST "RECA" INTO :WRECA
    WHERE("KEYDATA"=('FS','aa'))

例4

子レコードCHILD_RECBを検索します。

FETCH FOR UPDATE FIRST "CHILD_RECB" INTO :WCHILD_RECB
    WITHIN "SET_AB"

17.4.3　FIND文

(1)　機能

レコード実現値に位置指示子を位置づけます。

(2)　形式

FIND
     〔FOR UPDATE〕
     ｛FIRST｜NEXT｝
      レコード名
     〔WHERE キーの条件〕

(3)　オペランドの説明

●FOR UPDATE

位置づけたレコードを更新するかどうかを指定します。

位置づけたレコードを更新する場合は，FOR UPDATEを指定してください。

位置づけたレコードを更新しない場合は，FOR UPDATEを省略してください。

●｛FIRST｜NEXT｝

レコード走査の基点となるレコードとレコード走査の方向を示す指示コードを指定します。

表17‒6　レコード走査の基点となるレコードとレコード走査の方向

指示コード

基点となるレコード

レコード走査方向

FIRST

ルートレコードのデータベースキー値の最小値を持つレコード

キー値の昇順

NEXT

位置づけされているルートレコードのデータベースキー値の，次のキー値を持つレコード

位置指示子が空値の場合は，ルートレコードのデータベースキーの最小値を持つレコード

キー値の昇順

●レコード名

〜＜識別子＞((1〜30バイト))

位置づけるルートレコード名を指定します。

注意事項

レコード名に英小文字を使用している場合は，レコード名を引用符（"）で囲んでください。引用符で囲まないと，英小文字は英大文字と見なされます。

レコード名に空白またはハイフン（-）を使用している場合は，レコード名を引用符（"）で囲んでください。

●WHERE キーの条件

位置づけるレコード実現値を決定するためのキーの条件を指定します。

キーの条件については，「17.3.1　キーの条件の指定」を参照してください。

(4)　使用例

例1

レコード実現値を更新するための位置づけを行います。

FIND FOR UPDATE FIRST "RECA"
    WHERE("KEYDATA"=:WKEYDATA)

例2

レコードを検索するための位置づけを行います。

FIND FIRST "RECA" WHERE("KEYDATA"='0001')

17.4.4　MODIFY文

(1)　機能

レコード実現値を更新します。更新するデータは，FROM句の埋込み変数で指定します。

(2)　形式

MODIFY
     レコード名
     FROM :埋込み変数

(3)　オペランドの説明

●レコード名

〜＜識別子＞((1〜30バイト))

レコード実現値を更新するレコード名を指定します。

注意事項

レコード名に英小文字を使用している場合は，レコード名を引用符（"）で囲んでください。引用符で囲まないと，英小文字は英大文字と見なされます。

レコード名に空白またはハイフン（-）を使用している場合は，レコード名を引用符（"）で囲んでください。

●FROM :埋込み変数

更新対象のレコードの更新値を指定します。

埋込み変数の宣言方法については，マニュアル「HiRDB Version 9 構造型データベース機能（UAP開発編）」を参照してください。

(4)　共通規則

更新対象のレコードを，次のどれかのDMLで位置づけておく必要があります。

FIND文（位置決め目的にUPDATEを指定する）

FETCH文（位置決め目的にUPDATEを指定する）

STORE文

ルートレコードのデータベースキーの構成要素，および一連番号として定義した構成要素の値は変更できません。変更していても変更後のキー値に対応するレコードではなく，位置づいているレコードが更新されます。

埋込み変数で指定したレコードデータのうち，ルートレコードのデータベースキーの構成要素，および一連番号の構成要素に対応するデータは無視されます。

(5)　使用例

例

ルートレコードRECAのレコード実現値の値を更新します。

MODIFY "RECA" FROM :WRECA

17.4.5　STORE文

(1)　機能

レコード実現値を格納します。格納するデータは，FROM句の埋込み変数で指定します。

(2)　形式

STORE
    レコード名
    FROM :埋込み変数

(3)　オペランドの説明

●レコード名

〜＜識別子＞((1〜30バイト))

レコード実現値を格納するレコード名を指定します。

注意事項

レコード名に英小文字を使用している場合は，レコード名を引用符（"）で囲んでください。引用符で囲まないと，英小文字は英大文字と見なされます。

レコード名に空白またはハイフン（-）を使用している場合は，レコード名を引用符（"）で囲んでください。

●FROM :埋込み変数

格納対象のレコードの格納値を指定します。

埋込み変数の宣言方法については，マニュアル「HiRDB Version 9 構造型データベース機能（UAP開発編）」を参照してください。

(4)　共通規則

子レコードにレコードを格納する場合，次のどれかのDMLで，格納レコードの親レコードまでの位置づけをしておく必要があります。

FIND文（位置決め目的にUPDATEを指定する）

FETCH文（位置決め目的にUPDATEを指定する）

STORE文

子レコードにレコードを格納する場合，埋込み変数に設定した値のうち，親レコードから引き継いだ構成要素に対応する値は無視されます。この場合，位置づいている親レコードと同じ値が格納されます。

子レコードにレコードを格納する場合，埋込み変数に設定した値に対応する親レコードの子レコードとして格納されるのではなく，位置づいている親レコードの子レコードとして格納されます。

(5)　使用例

例

ルートレコードRECAにレコードを格納します。

STORE "RECA" FROM :WRECA

17.5　埋込み言語文法

埋込み言語の機能，構文形式，および規則について説明します。

埋込み言語は，埋込み型のUAPを作成する際に，プログラム用DMLと一緒に使用するDMLです。埋込み言語には，次の2つがあります。

DML先頭子

DML終了子

17.5.1　DML先頭子

(1)　機能

DMLの始まりを示します。

(2)　形式

EXEC DML

(3)　規則

各DMLを，DML先頭子とDML終了子で囲む必要があります。

UAP中に記述するDMLの規則については，マニュアル「HiRDB Version 9 構造型データベース機能（UAP開発編）」を参照してください。

(4)　使用例

例

FETCH文をDML先頭子とDML終了子で囲みます。

EXEC DML
    FETCH FIRST "RECA" INTO :RECA_DATA
END-DML.

17.5.2　DML終了子

(1)　機能

DMLの終わりを示します。

(2)　形式

END-DML

(3)　規則

各DMLを，DML先頭子とDML終了子で囲む必要があります。

UAP中に記述するDMLの規則については，マニュアル「HiRDB Version 9 構造型データベース機能（UAP開発編）」を参照してください。

(4)　使用例

例

FETCH文をDML先頭子とDML終了子で囲みます。

EXEC DML
    FETCH FIRST "RECA" INTO :RECA_DATA
END-DML.

18　メッセージ

この章では，HiRDBが出力するメッセージについて説明します。

18.1　HiRDBが出力するメッセージ

HiRDBが出力するメッセージについては，マニュアル「HiRDB Version 9 メッセージ」を参照してください。

なお，マニュアル「HiRDB Version 9 メッセージ」を初めて参照する場合は，「HiRDB Version 9 メッセージ」の次の個所をお読みください。

「メッセージの概要」の「メッセージの記述形式」

「メッセージの概要」の「HiRDB Structured Data Access Facility Version 9を使用している場合の留意事項」

付録

付録A　未サポート機能の一覧

HiRDBのマニュアルに記載している機能のうち，未サポートの機能，および機能制限がある機能を次の表に示します。

表A‒1　未サポートの機能，および機能制限がある機能

項番

分類

サポートしていない，または機能制限のある機能・コマンド・インタフェース，もしくは連携できない製品

説明

1

環境設定

簡易セットアップツール

簡易セットアップツールは使用できません。

2

プログラムメンテナンス機能

単体版HiRDBから統合版HiRDBへの入れ替え，または統合版HiRDBから単体版HiRDBへの入れ替えには使用できません。

3

運用

インメモリデータ処理（バッチ高速化機能）

SDBデータベースへのアクセスでは，バッチ高速化機能は使用できません。

4

系切り替え機能

次に示す系切り替え機能が使用できます。

どちらの場合も使用できるクラスタソフトウェアはHAモニタだけです。

モニタモード

高速系切り替え機能

なお，連動系切り替えはできません。

5

リアルタイムSANレプリケーション（ディザスタリカバリシステム）

次に示す処理方式が使用できます。

全非同期方式

6

アクセス権限

SDBデータベースに対して，アクセス権限は使用できません。

7

OSログインユーザの簡易認証機能

次に示すコマンドには，OSログインユーザの簡易認証機能を使用できません。

pdsdbdef

pdsdblod

pdsdbrog

pdsdbarc

8

共用RDエリア

SDBデータベースを格納するRDエリアとして，共用RDエリアは使用できません。

9

インデクス用グローバルバッファ

SDBデータベースのインデクスに対して，インデクス用グローバルバッファは使用できません。

10

LOB用グローバルバッファ

SDBデータベースを格納するRDエリアに対して，LOB用グローバルバッファは使用できません。

11

ローカルバッファ

データ用ローカルバッファ

インデクス用ローカルバッファ

SDBデータベースを格納するRDエリア，およびSDBデータベースのインデクスに対して，ローカルバッファは使用できません。

12

プリフェッチ機能

SDBデータベースへのアクセスに対して，プリフェッチ機能は使用できません。

13

非同期READ機能

SDBデータベースへのアクセスに対して，非同期READ機能は使用できません。

14

MIBパフォーマンス情報監視機能

MIBパフォーマンス情報監視機能で構造型DB機能に関する情報は収集できません。

15

UAP環境定義

SDBデータベースにアクセスする場合，次のUAP環境定義のオペランドは指定できません。

pd_uap_wait

pdlbuffer

16

回復不要FES

SDBデータベースへのアクセスと併用できません。

17

JP1との連携

SDBデータベースはJP1とは連携できません。

18

Cosminexusとの連携

SDBデータベースはCosminexusとは連携できません。

19

運用コマンド・ユティリティ

運用コマンド，ユティリティの制限については，「10.1　運用コマンドおよびユティリティの実行方法と実行可否」を参照してください。

20

UAPの開発および実行

HiRDB OLE DBプロバイダ

HiRDB OLE DBプロバイダを使用して，SDBデータベースにアクセスできません。

21

HiRDB.NETデータプロバイダ（ADO.NET2.0対応）

HiRDB.NETデータプロバイダを使用して，SDBデータベースにアクセスできません。

22

SQLJ

SQLJを使用したUAPからは，SDBデータベースにアクセスできません。

23

ODBCドライバ

ODBCドライバを使用して，SDBデータベースにアクセスできません。

24

JDBCドライバ

JDBCドライバを使用して，SDBデータベースにアクセスできません。

25

クライアント環境定義

クライアント環境定義の指定可否については，「16.3.1(3)　クライアント環境定義の一覧」を参照してください。

26

ストアドプロシジャ，ストアドファンクション

SDBデータベースにアクセスする場合，ストアドプロシジャ，ストアドファンクションは使用できません。

27

Javaストアドプロシジャ，Javaストアドファンクション

SDBデータベースにアクセスする場合，Javaストアドプロシジャ，Javaストアドファンクションは使用できません。

28

Cストアドプロシジャ，Cストアドファンクション

SDBデータベースにアクセスする場合，Cストアドプロシジャ，Cストアドファンクションは使用できません。

29

埋込み型UAP

4V FMBまたは4V AFMのSDBデータベースにアクセスする場合，埋込み型UAPは作成できません。

30

インタフェース領域

SQL記述領域

列名記述領域

型名記述領域

文字集合名記述領域

SDBデータベースにアクセスする場合，左記のインタフェース領域は使用しません。

31

空白変換機能

SDBデータベースにアクセスする場合，空白変換機能は使用できません。

32

ブロック転送機能

SDBデータベースにアクセスする場合，ブロック転送機能は使用できません。

33

スナップショット方式によるページアクセス

SDBデータベースに対しては，スナップショット方式によるページアクセスは適用されません。

更新可能なオンライン再編成の追い付き反映キー対応表には，スナップショット方式によるページアクセスが適用されます。

34

メモリDB

SDBデータベースにアクセスする場合，メモリDBは使用できません。

35

XDSクライアント

XDSクライアントからSDBデータベースにアクセスできません。

36

拡張SQLエラー情報出力機能

拡張SQLエラー出力機能を使用して，APIまたはDML関連情報が出力されます。

ただし，クライアント側のクライアントエラーログファイルに，APIまたはDMLの要求内容がダンプで出力されますが，サーバ側のSQLエラーレポートファイルには，APIまたはDMLの要求内容のダンプは出力されません。

37

データ保証レベル

SDBデータベースにアクセスする場合，データ保証レベルの指定は無効になります。

38

UAPからのコマンド実行

次に示すコマンドはUAPから実行できません。

pdsdbdef

pdsdblod

pdsdbrog

pdsdbexe

pdsdbarc

pdsdborcrt

39

インデクスキー値排他

インデクスキー値排他機能は使用できません。

40

残存エントリによる排他待ちの回避（行識別子の再利用抑止）

SDBデータベースにアクセスする場合，残存エントリによる排他待ちの回避（行識別子の再利用抑止）機能は使用できません。

41

関連プログラムプロダクト

HiRDB Control Manager

SDBデータベースを運用管理の対象にできません。

42

HiRDB RealTime Monitor

HiRDB RealTime MonitorではSDBデータベースに関する情報は出力されません。

43

HiRDB SQL Executer

定義系SQLなどを実行する際に使用します。

44

HiRDB SQL Tuning Advisor

SQL Tuning AdvisorではSDBデータベースへのアクセスに関する情報は出力されません。

45

HiRDB SQL Tuning Advisor用アクセスパス情報ファイル

SDBデータベースへのアクセスに関する情報は出力されません。

46

HiRDB Dataextractor

SDBデータベースはHiRDB Dataextractorとは連携できません。

47

HiRDB Datareplicator

SDBデータベースはHiRDB Datareplicatorとは連携できません。

48

HiRDBの各種プラグイン製品

SDBデータベースはHiRDBの各種プラグイン製品とは連携できません。

49

HiRDB Adapter for XML

SDBデータベースはHiRDB Adapter for XMLとは連携できません。

50

JP1/Performance Management - Agent Option for HiRDB

SDBデータベースに関するパフォーマンスデータは収集できません。

51

DABroker

SDBデータベースはDABrokerとは連携できません。

52

DATAFRONT

SDBデータベースはDATAFRONTとは連携できません。

53

DBPARTNER2

SDBデータベースはDBPARTNER2とは連携できません。

54

Image Database Access

SDBデータベースはImage Database Accessとは連携できません。

55

DocumentBroker

SDBデータベースはDocumentBrokerとは連携できません。

56

HiRDB Configuration Assistant

SDBデータベースの環境構築はできません。

付録B　ディクショナリ表

ディクショナリ表には，レコード型やインデクスの定義情報など，SDBデータベースの定義情報が表形式で格納されています。

付録B.1　ディクショナリ表の一覧

ディクショナリ表の一覧を次の表に示します。

表B‒1　ディクショナリ表の一覧

項番

ディクショナリ表

説明

1

SQL_SDB_DB表

SDBデータベース定義の定義情報が格納されています。

2

SQL_SDB_STORAGE_DB表

SDBデータベース格納定義の定義情報が格納されています。

3

SQL_SDB_DIR表

SDBディレクトリ情報が格納されています。

4

SQL_RDAREAS表

RDエリアの定義情報が格納されています。

5

SQL_TABLES表

スキーマ内のレコード型の情報が格納されています。

6

SQL_COLUMNS表

レコード型の構成要素の情報が格納されています。

7

SQL_INDEXES表

インデクスの定義情報が格納されています。

8

SQL_TABLE_PRIVILEGES表

レコード型の所有者の情報が格納されています。

9

SQL_DIV_TABLE表

SDBデータベースの横分割の情報が格納されています。

10

SQL_INDEX_COLINF表

インデクスを構成する構成要素名の情報が格納されています。

11

SQL_DIV_INDEX表

インデクスの横分割の情報が格納されています。

12

SQL_AUDITS表

監査対象の情報が格納されています。

13

SQL_DIV_TABLE_REGULARIZE表

システムで使用する内部情報が格納されています。

14

SQL_SDB_DB_VIEW表

システムで使用する内部情報が格納されています。

15

SQL_SDB_NAME_CODE表

システムで使用する内部情報が格納されています。

なお，上記以外のディクショナリ表については，マニュアル「HiRDB Version 9 UAP開発ガイド」の「ディクショナリ表の詳細」を参照してください。

付録B.2　ディクショナリ表の詳細

ディクショナリ表に格納されている情報について説明します。

なお，各ディクショナリ表にVARCHARまたはMVARCHARのデータ型の列がありますが，これはデータベース初期設定ユティリティ（pdinit），またはデータベース構成変更ユティリティ（pdmod）のdictionary datatypeオペランドで，データ型をどちらにするか設定してください。

(1)　SQL_SDB_DB表

SQL_SDB_DB表には，SDBデータベース定義の定義情報が格納されています。1行に1SDBデータベース定義の情報が格納されています。SQL_SDB_DB表に格納されている情報を次の表に示します。

表B‒2　SQL_SDB_DB表に格納されている情報

項番

列名

データ型

内容

1

DB_SCHEMA

VARCHAR(30)，またはMVARCHAR(30)

SDBデータベースの所有者

2

DB_NAME

VARCHAR(30)，またはMVARCHAR(30)

SDBデータベース名

3

DB_ID

SMALLINT

SDBデータベースのID

SDBデータベース名ごとにHiRDB/SDが一意の管理番号を設定します。

4

CREATE_TIME

CHAR(16)

SDBデータベース定義の作成日時（YYYYMMDDHHMMSSTH）

5

CHANGE_TIME

CHAR(16)

SDBデータベース定義の変更日時（YYYYMMDDHHMMSSTH）

6

DEF_INF_LEN

INTEGER

SDBデータベースの定義情報長

7

DEF_INF

BINARY

システムで使用する情報

(2)　SQL_SDB_STORAGE_DB表

SQL_SDB_STORAGE_DB表には，SDBデータベース格納定義の定義情報が格納されています。1行に1SDBデータベース格納定義の情報が格納されています。SQL_SDB_STORAGE_DB表に格納されている情報を次の表に示します。

表B‒3　SQL_SDB_STORAGE_DB表に格納されている情報

項番

列名

データ型

内容

1

STORAGE_DB_SCHEMA

VARCHAR(30)，またはMVARCHAR(30)

SDBデータベース格納定義の所有者

2

STORAGE_DB_NAME

VARCHAR(30)，またはMVARCHAR(30)

SDBデータベース格納名

3

DB_SCHEMA

VARCHAR(30)，またはMVARCHAR(30)

SDBデータベースの所有者

4

DB_NAME

VARCHAR(30)，またはMVARCHAR(30)

SDBデータベース名

5

STORAGE_DB_ID

SMALLINT

SDBデータベース格納定義のID

SDBデータベース格納名ごとにHiRDB/SDが一意の管理番号を設定します。

6

DB_ID

SMALLINT

SDBデータベースのID

SDBデータベース名ごとにHiRDB/SDが一意の管理番号を設定します。

7

CREATE_TIME

CHAR(16)

SDBデータベース格納定義の作成日時（YYYYMMDDHHMMSSTH）

8

CHANGE_TIME

CHAR(16)

SDBデータベース格納定義の変更日時（YYYYMMDDHHMMSSTH）

9

CHECK_TIME

CHAR(16)

SDBデータベース格納定義の整合性チェック日時

（YYYYMMDDHHMMSSTH）

整合性チェックをしていない場合，ナル値となります。

10

DEF_INF_LEN

INTEGER

SDBデータベース格納定義の定義情報長

11

DEF_INF

BINARY

システムで使用する情報

(3)　SQL_SDB_DIR表

SQL_SDB_DIR表には，SDBディレクトリ情報が格納されています。1行に1SDBディレクトリ情報（1SDBデータベース情報または1SDBデータベースビュー情報）が格納されています。SQL_SDB_DIR表に格納されている情報を次の表に示します。

表B‒4　SQL_SDB_DIR表に格納されている情報

項番

列名

データ型

内容

1

DIR_INF_KIND

SMALLNT

その行に格納されるSDBディレクトリ情報種別

1：SDBデータベース情報

2：SDBデータベースビュー情報

2

DB_SCHEMA

VARCHAR(30)，またはMVARCHAR(30)

データベースの所有者

3

DB_NAME

VARCHAR(30)，またはMVARCHAR(30)

SDBデータベース名

4

DB_VIEW_SCHEMA

VARCHAR(30)，またはMVARCHAR(30)

SDBデータベースビューの所有者

DIR_INF_KIND列の値が1（SDBデータベース情報）の場合は，ナル値となります。

5

DB_VIEW_NAME

VARCHAR(30)，またはMVARCHAR(30)

SDBデータベースビュー名

DIR_INF_KIND列の値が1（SDBデータベース情報）の場合は，ナル値となります。

6

DB_ID

SMALLNT

SDBデータベースのID

SDBデータベース名ごとにHiRDB/SDが一意の管理番号を設定します。

7

DB_VIEW_ID

SMALLNT

SDBデータベースビューID

SDBデータベースビュー名ごとにHiRDB/SDが一意の管理番号を設定します。

DIR_INF_KIND列の値が1（SDBデータベース情報）の場合は，ナル値となります。

8

CREATE_TIME

CHAR(16)

SDBディレクトリ情報の作成日時（YYYYMMDDHHMMSSTH）

9

CHANGE_TIME

CHAR(16)

SDBディレクトリ情報の更新日時（YYYYMMDDHHMMSSTH）

10

DIR_INF_LEN

INTEGER

SDBディレクトリ情報長

11

DIR_INF

BINARY

システムで使用する情報

(4)　SQL_RDAREAS表

SQL_RDAREAS表には，RDエリアの定義情報が格納されています。1行に1RDエリアの定義情報が格納されています。SQL_RDAREAS表に格納されている情報を次の表に示します。

表B‒5　SQL_RDAREAS表に格納されている情報

項番

列名

データ型

内容

7

N_TABLE

INTEGER

格納レコード型数（定義数）

SDBデータベースの定義または削除時に，格納レコード型数が更新されます。

8

N_INDEX

INTEGER

格納インデクス数（定義数）

SDBデータベースの定義時に，格納インデクス数が加算されます。

SDBデータベースの削除時に，格納インデクス数からレコード型に定義されているインデクス数分が減算されます。

21

DATA_MODEL

CHAR(1)

データベースの形式

'S'：構造型

NULL：リレーショナル

次の場合はナル値となります。

ユーザ用RDエリア以外

data modelオペランド未指定時

data modelオペランドにrelationalを指定した場合

注

上記の表の項番は，マニュアル「HiRDB Version 9 UAP開発ガイド」の「SQL_RDAREAS表の内容」の表の項番と対応しています。

上記の表に記載されている以外のSQL_RDAREAS表の列情報については，マニュアル「HiRDB Version 9 UAP開発ガイド」の「SQL_RDAREAS表の内容」を参照してください。

(5)　SQL_TABLES表

SQL_TABLES表には，スキーマ内のレコード型の情報が格納されています。1行に1レコード型の定義情報が格納されています。SQL_TABLES表に格納されている情報を次の表に示します。

表B‒6　SQL_TABLES表に格納されている情報

項番

列名

データ型

内容

1

TABLE_SCHEMA

VARCHAR(30)，またはMVARCHAR(30)

レコード型の所有者

2

TABLE_NAME

VARCHAR(30)，またはMVARCHAR(30)

レコード型名

SDBデータベース定義のRECORD句に指定したレコード型名が格納されます。

3

TABLE_TYPE

CHAR(16)

レコード型のタイプ

SDB RECORD TYPE：構造型DBのレコード型

4

TABLE_ID

INTEGER

レコード型ID

SDBデータベース定義のRECORDID句の指定に関係なく，システムが設定したユニークな内部IDが格納されます。

5

N_COLS

SMALLINT

構成要素数

SDBデータベース定義のRECORD句に指定した構成要素数が格納されます。

データ属性を持たない構成要素は，構成要素数に含まれません。

SDBデータベース定義にOCCURS句を指定した場合，繰り返し回数分生成された構成要素の数が加算されます。

6

N_INDEX

SMALLINT

インデクス定義数

レコード型定義時

SDBデータベース格納定義のSEQUENTIAL句に指定したインデクス個数となります。

インデクス定義時

インデクス定義数が更新（+1）されます。

7

DCOLUMN_NAME

VARCHAR(30)，またはMVARCHAR(30)

分割列名

SDBデータベースを横分割している場合は，RDエリア分割キーの構成要素名となります。SDBデータベースを横分割していない場合は，ナル値となります。

9

FREE_AREA

SMALLINT

ページ内の未使用領域の比率（%）

0〜99となります。

10

FREE_PAGE

SMALLINT

セグメント内の空きページ（未使用ページ）の比率（%）

0〜50となります。

12

CREATE_TIME

CHAR(14)

レコード型作成時刻（YYYYMMDDHHMMSS）

13

ENQ_RESOURCE_SIZE

CHAR(1)

排他資源単位

P：ページ単位

14

DEFAULT_COLUMN

SMALLINT

既定値（DEFAULT句またはWITH DEFAULT）の指定列数

ディクショナリ表の場合はナル値となります。それ以外は0となります。

15

RDAREA_NAME

VARCHAR(30)，またはMVARCHAR(30)

レコードを格納しているRDエリア名

SDBデータベースを横分割している場合は，ナル値となります。SDBデータベースを横分割していない場合は，SDBデータベース格納定義のWITHIN句に指定したRDエリア名となります。

18

N_RDAREA

INTEGER

格納先RDエリア数

1〜1,024となります。

23

N_NOTNULL

INTEGER

構成要素数

SDBデータベース定義のRECORD句に指定した構成要素数となります。

ディクショナリ表の場合は0となります。

データ属性を持たない構成要素は，構成要素数に含まれません。

SDBデータベース定義にOCCURS句を指定した場合，繰り返し回数分生成された構成要素の数が加算されます。

25

DIV_TYPE

CHAR(1)

SDBデータベースの横分割の種別

境界値分割の場合は'P'，それ以外はナル値となります。

29

CHANGE_TIME

CHAR(14)

レコード型の定義の変更時刻（YYYYMMDDHHMMSS）

インデクスを定義している場合はインデクスを定義した時間，インデクスを定義していない場合はナル値となります。

注

上記の表の項番は，マニュアル「HiRDB Version 9 UAP開発ガイド」の「SQL_TABLES表の内容」の表の項番と対応しています。

上記の表に記載されている以外のSQL_TABLES表の列情報については，マニュアル「HiRDB Version 9 UAP開発ガイド」の「SQL_TABLES表の内容」を参照してください。

(6)　SQL_COLUMNS表

SQL_COLUMNS表には，レコード型の構成要素の情報が格納されています。1行にレコード型の1構成要素の定義情報が格納されています。SQL_COLUMNS表に格納されている情報を次の表に示します。

表B‒7　SQL_COLUMNS表に格納されている情報

項番

列名

データ型

内容

1

TABLE_SCHEMA

VARCHAR(30)，またはMVARCHAR(30)

レコード型の所有者

2

TABLE_NAME

VARCHAR(30)，またはMVARCHAR(30)

構成要素を含むレコード型名

SDBデータベース定義のRECORD句に指定したレコード型名が格納されます。

3

COLUMN_NAME

VARCHAR(30)，またはMVARCHAR(30)

構成要素名

SDBデータベース定義のRECORD句に指定した構成要素名が格納されます。

なお，次の名称はシステムが使用する構成要素名です。

SYSTEM_FLAG_FIELD

SYSTEM_RECTYPE_NO

また，SDBデータベース定義にOCCURS句を指定した場合，繰り返し回数分生成された構成要素名が格納されます。

4

TABLE_ID

INTEGER

レコード型ID

SDBデータベース定義のRECORDID句の指定に関係なく，システムが設定したユニークな内部IDとなります。

5

COLUMN_ID

SMALLINT

構成要素ID

1から始まる正の整数です。

SDBデータベース定義にOCCURS句を指定した場合，繰り返し回数分生成された構成要素に対するIDとなります。

6

DATA_TYPE

CHAR(24)

データ型

SDBデータベース定義のRECORD句に指定した各構成要素のデータ型が格納されます。

データ型によって格納する値は次のように異なります。

CHARACTER，XCHARACTER：CHAR

PACKED DECIMAL FIXED：DECIMAL

INTEGER：INTEGER

SMALLINT：SMALLINT

7

DATA_LENGTH

CHAR(7)

列データ長

SDBデータベース定義のRECORD句に指定した文字列データの長さが格納されます。

データ型によって格納する値は次のように異なります。

PACKED DECIMAL FIXED型の場合：(a,b)の形式で文字列にして格納します（ただし，a：整数部桁数＋小数部桁数，b：小数部桁数。上位の0は空白にします）。

それ以外の場合：SQL記述領域（SQLDA）のSQLLENと同じ値を右詰めで文字形式にして格納します（上位の0は空白にします）。

9

DIVIDED_KEY

CHAR(1)

RDエリア分割キー

'Y'：RDエリア分割キー（データ種別1，2の指定がK，AまたはK，Mの構成要素）

'△'：RDエリア分割キーでない

22

DATA_TYPE_CODE

SMALLINT

データ型コード

データ型によって格納する値は次のように異なります。

CHARACTER，XCHARACTER：C4

PACKED DECIMAL FIXED：E4

INTEGER：F0

SMALLINT：F4

23

DATA_LENGTH_CODE

SMALLINT

列データ長コード

SDBデータベース定義のRECORD句に指定した長さを変換した値です。

SQL記述領域（SQLDA）のSQLLENと同じ値を格納します。データ型によって格納する値は次のように異なります。

DECIMAL型の場合：精度，位取りをそれぞれ1バイトに格納します。

それ以外の場合：2バイトの2進形式で長さを格納します。

注

上記の表の項番は，マニュアル「HiRDB Version 9 UAP開発ガイド」の「SQL_COLUMNS表の内容」の表の項番と対応しています。

上記の表に記載されている以外のSQL_COLUMNS表の列情報については，マニュアル「HiRDB Version 9 UAP開発ガイド」の「SQL_COLUMNS表の内容」を参照してください。

(7)　SQL_INDEXES表

SQL_INDEXES表には，インデクスの定義情報が格納されています。1行に1インデクスの定義情報が格納されています。SQL_INDEXES表に格納されている情報を次の表に示します。

表B‒8　SQL_INDEXES表に格納されている情報

項番

列名

データ型

内容

1

TABLE_SCHEMA

VARCHAR(30)，またはMVARCHAR(30)

レコード型の所有者

2

TABLE_NAME

VARCHAR(30)，またはMVARCHAR(30)

インデクスを含むレコード型名

SDBデータベース定義のRECORD句に指定したレコード型名

3

INDEX_NAME

VARCHAR(30)，またはMVARCHAR(30)

インデクス名称

SDBデータベース格納定義のSEQUENTIAL句に指定したシーケンシャルインデクス名，またはSECONDARY INDEX句に指定した二次インデクス名

4

INDEX_ID

INTEGER

インデクスID

5

TABLE_ID

INTEGER

レコード型ID

SDBデータベース定義のRECORDID句の指定に関係なく，システムが設定したユニークな内部IDとなります。

7

COLUMN_COUNT

SMALLINT

インデクスを構成する構成要素数

8

CREATE_TIME

CHAR(14)

インデクス作成時刻（YYYYMMDDHHMMSS）

9

RDAREA_NAME

VARCHAR(30)，またはMVARCHAR(30)

レコードを格納しているRDエリア名

SDBデータベース格納定義のWITHIN句に指定したRDエリア名

SDBデータベースを横分割している場合はナル値となります。

11

DIV_INDEX

CHAR(1)

インデクス構成列の先頭列の種別

'Y'：RDエリア分割キー（データ種別1，2の指定がK，AまたはK，Mの構成要素）

'N'：RDエリア分割キー以外

12

FREE_AREA

SMALLINT

ページ内の未使用領域の比率（%）

SDBデータベース格納定義のPCTFREE句に指定した未使用領域の比率

13

COLUMN_ID_LIST

VARCHAR(64)

インデクスを構成する構成要素IDリスト

＋，−で昇順降順を示します。常に＋となります。

26

DIV_IN_SRV

CHAR(1)

非分割キーインデクスのサーバ内横分割の有無

非分割キーインデクスをサーバ内分割している場合は'Y'となります。

上記以外の場合はナル値となります。

注

上記の表の項番は，マニュアル「HiRDB Version 9 UAP開発ガイド」の「SQL_INDEXES表の内容」の表の項番と対応しています。

上記の表に記載されている以外のSQL_INDEXES表の列情報については，マニュアル「HiRDB Version 9 UAP開発ガイド」の「SQL_INDEXES表の内容」を参照してください。

(8)　SQL_TABLE_PRIVILEGES表

SQL_TABLE_PRIVILEGES表には，レコード型のアクセス権限の定義情報が格納されています。1行に1ユーザの定義情報が格納されています。SQL_TABLE_PRIVILEGES表に格納されている情報を次の表に示します。

表B‒9　SQL_TABLE_PRIVILEGES表に格納されている情報

項番

列名

データ型

内容

1

GRANTOR

VARCHAR(30)，またはMVARCHAR(30)

レコード型の所有者

2

GRANTEE

VARCHAR(30)，またはMVARCHAR(30)

レコード型の所有者

3

TABLE_SCHEMA

VARCHAR(30)，またはMVARCHAR(30)

レコード型の所有者

4

TABLE_NAME

VARCHAR(30)，またはMVARCHAR(30)

レコード型名

5

SELECT_PRIVILEGE

CHAR(1)

SELECT権限の有無

G（許可される（所有者の場合））となります。

6

INSERT_PRIVILEGE

CHAR(1)

INSERT権限の有無

G（許可される（所有者の場合））となります。

7

DELETE_PRIVILEGE

CHAR(1)

DELETE権限の有無

G（許可される（所有者の場合））となります。

8

UPDATE_PRIVILEGE

CHAR(1)

UPDATE権限の有無

G（許可される（所有者の場合））となります。

9

GRANT_TIME

CHAR(14)

該当する権限を受け取った時刻（YYYYMMDDHHMMSS）

注

上記の表の項番は，マニュアル「HiRDB Version 9 UAP開発ガイド」の「SQL_TABLE_PRIVILEGES表の内容」の表の項番と対応しています。

上記の表に記載されている以外のSQL_TABLE_PRIVILEGES表の列情報については，マニュアル「HiRDB Version 9 UAP開発ガイド」の「SQL_TABLE_PRIVILEGES表の内容」を参照してください。

(9)　SQL_DIV_TABLE表

SQL_DIV_TABLE表には，レコード型の横分割情報が格納されています。1行または複数行に1レコード型の横分割情報が格納されています。SQL_DIV_TABLE表に格納されている情報を次の表に示します。

表B‒10　SQL_DIV_TABLE表に格納されている情報

項番

列名

データ型

内容

1

TABLE_SCHEMA

VARCHAR(30)，またはMVARCHAR(30)

レコード型の所有者

2

TABLE_NAME

VARCHAR(30)，またはMVARCHAR(30)

レコード型名

3

DIV_NO

INTEGER

分割条件指定順序

該当するレコード型内で1から始まるユニークな値で，分割条件の指定順に1を加えた値となります。

4

TABLE_ID

INTEGER

レコード型ID

5

DCOND

CHAR(2)

分割条件コード

格納される値は，分割方法によって次のように異なります。

格納条件分割の場合： =

境界値分割の場合： <= または 空白

6

DCVALUES

VARCHAR(256)，またはMVARCHAR(256)

分割条件値

RDエリア分割キー値の指定なし：ナル値となります。

上記以外：RDエリア分割キー値※となります。

7

RDAREA_NAME

VARCHAR(30)，またはMVARCHAR(30)

横分割したSDBデータベースのレコードを格納しているRDエリア名

注

上記の表の項番は，マニュアル「HiRDB Version 9 UAP開発ガイド」の「SQL_DIV_TABLE表の内容」の表の項番と対応しています。

上記の表に記載されている以外のSQL_DIV_TABLE表の列情報については，マニュアル「HiRDB Version 9 UAP開発ガイド」の「SQL_DIV_TABLE表の内容」を参照してください。

注※

RDエリア分割キー値をX'＜16進数字＞'形式で指定した場合，16進数字のコードに対応する文字で設定されます。

（例）X'41414141'を指定した場合，AAAAが設定されます。

RDエリア分割キー値に指定した16進数字は，次のどちらかの方法で確認してください。

SDB定義文ファイルを参照して確認する。

スカラ関数HEXを使用して，16進文字列表現に変換して確認する。

(10)　SQL_INDEX_COLINF表

SQL_INDEX_COLINF表には，インデクスを構成する構成要素の情報が格納されています。1行または複数行に1インデクスの情報が格納されています。SQL_INDEX_COLINF表に格納されている情報を次の表に示します。

表B‒11　SQL_INDEX_COLINF表に格納されている情報

項番

列名

データ型

内容

1

TABLE_SCHEMA

VARCHAR(30)，またはMVARCHAR(30)

レコード型の所有者

2

TABLE_NAME

VARCHAR(30)，またはMVARCHAR(30)

インデクスが定義されているレコード型名

SDBデータベース格納定義のSTORAGE RECORD句に指定した格納レコード名

3

INDEX_NAME

VARCHAR(30)，またはMVARCHAR(30)

インデクス名称

SDBデータベース格納定義のSEQUENTIAL句に指定したシーケンシャルインデクス名，またはSECONDARY INDEX句に指定した二次インデクス名

4

INDEX_ID

INTEGER

インデクスID

5

INDEX_ORDER

INTEGER

インデクスを構成する構成要素名順を識別する番号

SDBデータベース格納定義のORDER句に指定した構成要素の順番

6

COLUMN_NAME

VARCHAR(30)，またはMVARCHAR(30)

インデクスを構成する構成要素名

SDBデータベース格納定義のORDER句に指定した構成要素名

なお，次の名称はシステムが使用する構成要素名です。

SYSTEM_FLAG_FIELD

SYSTEM_RECTYPE_NO

7

ASC_DESC

CHAR(1)

昇順，または降順

A（昇順）となります。

注

上記の表の項番は，マニュアル「HiRDB Version 9 UAP開発ガイド」の「SQL_INDEX_COLINF表の内容」の表の項番と対応しています。

(11)　SQL_DIV_INDEX表の内容

SQL_DIV_INDEX表には，インデクスの横分割情報が格納されています。1行または複数行に1インデクスの横分割情報が格納されています。SQL_DIV_INDEX表に格納されている情報を次の表に示します。

表B‒12　SQL_DIV_INDEX表に格納されている情報

項番

列名

データ型

内容

1

TABLE_SCHEMA

VARCHAR(30)，またはMVARCHAR(30)

レコード型の所有者

2

TABLE_NAME

VARCHAR(30)，またはMVARCHAR(30)

インデクスが定義されているレコード型名

SDBデータベース格納定義のSTORAGE RECORD句に指定した格納レコード名

3

INDEX_NAME

VARCHAR(30)，またはMVARCHAR(30)

インデクス名称

SDBデータベース格納定義のSEQUENTIAL句に指定したシーケンシャルインデクス名，またはSECONDARY INDEX句に指定した二次インデクス名

4

DIV_NO

INTEGER

RDエリア定義順序

該当するインデクス内で1から始まるユニークな値で，RDエリアの定義順序に1を加えた値※となります。

5

INDEX_ID

INTEGER

インデクスID

6

RDAREA_NAME

VARCHAR(30)，またはMVARCHAR(30)

分割格納先RDエリア名

注

表の項番は，マニュアル「HiRDB Version 9 UAP開発ガイド」の「SQL_DIV_INDEX表の内容」の表の項番と対応しています。

注※

SQL_DIV_INDEXのDIV_NOの値と，SQL_DIV_TABLEのDIV_NOの値は，関連性はありません。

(12)　SQL_AUDITS表の内容

SQL_AUDITS表には，監査対象の情報が格納されています。1行に，1オブジェクトまたは1ユーザに対する1イベント分の情報が格納されています。SQL_AUDITS表に格納されている情報を次の表に示します。

表B‒13　SQL_AUDITS表に格納されている情報

項番

列名

データ型

内容

1

EVENT_TYPE

VARCHAR(30)

CREATE AUDIT FOR 操作種別で指定したイベントタイプの名称※1または'ANY'

2

EVENT_SUBTYPE

VARCHAR(30)

イベントサブタイプの名称※2または'ANY'

CREATE AUDIT FOR ANYを指定した場合はナル値となります。

注

表の項番は，マニュアル「HiRDB Version 9 UAP開発ガイド」の「SQL_AUDITS表の内容」の表の項番と対応しています。

上記の表に記載されている以外のSQL_AUDITS表の列情報については，マニュアル「HiRDB Version 9 UAP開発ガイド」の「SQL_AUDITS表の内容」を参照してください。

注※1

イベントタイプを次に示します。

SESSION，PRIVILEGE，DEFINITION，ACCESS，UTILITY，SDB_UTILITY，およびSDB_ACCESS

注※2

イベントサブタイプを次に示します。

CONNECT，AUTHORIZATION，DISCONNECT，GRANT，REVOKE，CREATE，DROP，ALTER，SELECT，INSERT，UPDATE，DELETE，PURGE，CALL，ASSIGN LIST，LOCK，NEXT VALUE，PDLOAD，PDRORG，PDEXP，PDCONSTCK，PDSDBDEF，PDSDBLOD，PDSDBROG，FETCH，FETCH FIRST，STORE，MODIFY，ERASE，CLEAR，およびFETCHDB ALL

付録C　ユティリティの最大同時実行数およびコマンドの同時接続数

付録C.1　ユティリティの最大同時実行数

ユティリティの最大同時実行数を「表C-1　ユティリティの最大同時実行数」に示します。この表に示す最大同時実行数は，各ユティリティを単独で同時実行したときの値です。pd_max_usersオペランドの値に依存するユティリティの最大同時実行数は，ほかのユティリティ実行数とUAPの実行数に影響されます。

最大同時接続数を超えると，ユティリティは次に示すどれかの動作をします。

異常終了します。

実行中のユティリティが終了するまで無応答になります。

プロセス割り当て時の要求電文を格納するための共用メモリ中のバッファが不足し，ユティリティが異常終了します。

表C‒1　ユティリティの最大同時実行数

ユティリティ

最大同時実行数

pd_utl_exec_mode=0

pd_utl_exec_mode=1

HiRDB/SD定義ユティリティ（pdsdbdef）

1（ただし，最大同時実行数のチェックは行っていません）

HiRDB/SDデータベース作成ユティリティ（pdsdblod）

MIN（32，pd_max_usersオペランドの値）

pd_max_usersオペランドの値

HiRDB/SDデータベース再編成ユティリティ（pdsdbrog）

HiRDB/SDデータベースアクセスユティリティ（pdsdbexe）

pd_max_usersオペランドの値

上記以外のユティリティの最大同時実行数については，マニュアル「HiRDB Version 9　コマンドリファレンス」の「ユティリティの最大同時実行数」を参照してください。

■複数のユティリティの同時実行数

複数のユティリティを同時実行して，次に示す式を満たす場合，pd_utl_exec_modeオペランドに1を指定してください。

システム内のバックエンドサーバ数×2×すべてのユティリティの同時実行数≧824

付録C.2　コマンドの同時接続数

コマンド（運用コマンドおよびユティリティ）の中には，HiRDBに対して内部的に接続処理をするコマンドがあります。そのため，pd_max_usersオペランドの指定値を決定する場合，次の点に注意する必要があります。

コマンドの接続時には，pd_max_usersオペランドで指定した接続枠を使用するため，ユーザから接続できる数が一時的に減少します。

コマンド実行時に，接続枠の空きよりコマンドの接続数の方が多くなる場合，接続エラーとなり，コマンドがエラー終了することがあります。

コマンドの同時接続数を次の表に示します。

表C‒2　コマンドの同時接続数

コマンド名

同時接続数

pdsdbdef

1

pdsdblod

pdsdbrog

pdsdbexe

pdsdbarc

pdsdborcrt

上記以外のコマンドの同時接続数については，マニュアル「HiRDB Version 9　コマンドリファレンス」の「コマンドの同時接続数」を参照してください。

付録D　HiRDB/SDの最大値・最小値

HiRDB/SDの最大値・最小値を次の表に示します。そのほかの最大値・最小値については，マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「HiRDBの最大値・最小値」を参照してください。

表D‒1　HiRDB/SDの最大値・最小値

項番

項目

最小値

最大値

単位

1

SDBデータベース定義

SDBデータベース名

1

30

バイト

2

レコード型名

1

30

バイト

3

レベル番号

（1レコード型内での構成要素型の階層レベル）

2

49

−

4

構成要素名

1

30※4

バイト

5

CHARACTER

（データ型）

1

30,000

バイト

6

XCHARACTER

（データ型）

1

30,000

バイト

7

PACKED DECIMAL FIXED（整数部）

（データ型）

0

38※1

桁

8

PACKED DECIMAL FIXED（小数部）

（データ型）

0

38※1

桁

9

OCCURS句の繰り返し回数

1

4,000

回

10

OCCURS句の次元

1

4

次元

11

親子集合型名

1

30

バイト

12

SDBデータベース定義中の親子集合型数

0

127

個

13

1SDBデータベース内のレコード型数

1

128

個

14

一連番号

1

2,147,483,647

−

15

1レコード型が持つことができる構成要素の数

1

30,000

個

16

1子レコード型が持つことができる親レコード型の数

1

1

個

17

階層数

1

15

階層

18

SDBデータベース格納定義

1レコード型中の構成要素の合計長

1

30,000

バイト

19

シーケンシャルインデクスのキー長

1

255※2

バイト

20

シーケンシャルインデクスの構成要素数

1

7

個

21

格納条件分割で指定可能なRDエリア数

1

256

個

22

格納条件分割で指定可能な格納条件のキー値の数

1

4,000

個

23

格納条件分割で指定可能な1RDエリア当たりの格納条件のキー値の数

1

4,000

個

24

境界値分割で指定可能なRDエリア数

2

3,000（1,024）※3

個

25

二次インデクスのキー長

4

576

バイト

26

二次インデクスの構成要素数

2

4V FMBのSDBデータベースの場合：16

4V AFMのSDBデータベースの場合：8

個

27

サブページ分割数

2

16

個

28

SDBデータベース操作

1ファミリ当たりの，確保可能な事前割り当てページ数

1

2,147,483,647

ページ

29

1ファミリ当たりの，確保可能な事前割り当てサブページ数

1

2,147,483,647

サブページ

（凡例）−：該当しません。

注※1

整数部と小数部の桁数の和が1〜38桁となります。

注※2

4V AFMのSDBデータベースの場合，システム用構成要素が付加されるため，ユーザが定義した構成要素に関するキー長の最大値は249バイトになります。

注※3

3,000は，境界値分割をする場合，SDBデータベース格納定義のWITHIN句に指定できるRDエリア名の延べ数の最大値です。1,024は，WITHIN句にRDエリア名を重複して指定する場合，RDエリア名の重複を排除して数えたときの最大値です。

ここでいうWITHIN句は，格納レコード用RDエリア名を指定するWITHIN句，シーケンシャルインデクス用RDエリア名を指定するWITHIN句，および二次インデクス用RDエリア名を指定するWITHIN句を示しています。

注※4

SDBデータベース定義でOCCURS句を指定する場合，システム内で繰り返し回数分生成される構成要素の構成要素名の最大長が30バイトになります。

付録E　HiRDB/SDで起動するプロセス

HiRDB/SDで起動するプロセスを次の表に示します。

なお，次の表に示すプロセス以外にも，HiRDB/SDで起動するプロセスがあります。詳細については，マニュアル「HiRDB Version 9 システム導入・設計ガイド」の「HiRDB/パラレルサーバで起動するプロセス」を参照してください。

表E‒1　HiRDB/SDで起動するプロセス

サーバ種別

プロセス名

説明

プロセス数

サーバ名称

表記

プロセス名称

ユティリティサーバ

pdsdbdef制御プロセス

pdsdbdef

定義ユティリティ制御

1

−

pdsdblod制御プロセス

pdsdblodm

データロード制御

pdsdblodコマンドの同時実行数

0msdldN※1

pdsdbrog制御プロセス

pdsdbrogm

データベース再編成制御

pdsdbrogコマンドの同時実行数

0msdrgN※1

pdorend反映プロセス

pdsdborendl

更新可能なオンライン再編成の追い付き反映処理

pdorendコマンドの-mオプションの指定値

0soreX0※2

（凡例）　−：該当しません。

注※1

末尾のNは16進数字になります。

注※2

サーバ名称は，pdorendコマンドの-mオプションに指定値によって決まります。例えば，-mオプションに3を指定した場合，サーバ名称は0sore30になります。

付録F　単調増加ファイル

HiRDB/SDを使用すると単調増加するファイルを情報の種別ごとに示します。ここに説明のない単調増加ファイルについては，マニュアル「HiRDB Version 9 システム導入・設計ガイド」を参照してください。

なお，*は任意の英数字です。また，ファイル名またはディレクトリ名には，標準のパス名を記載しています。システムによっては異なる場合があります。

付録F.1　簡易ダンプ

簡易ダンプに関する単調増加ファイルを次の表に示します。

表F‒1　単調増加ファイル（簡易ダンプ）

項番

ファイル名またはディレクトリ名

説明

ファイルサイズの概算値

ファイル数

最大サイズの制限可否

1

$PDDIR/spool/pdfesdump/*

フロントエンドサーバ用の簡易ダンプファイルです。pdfesプロセスセグメンテーション障害，またはアボート時に生成されます。

自動で削除する場合：

次のどれかのオペランドを指定します。

pd_spool_cleanup_interval

pd_spool_cleanup_interval_level

pd_spool_cleanup

pd_spool_cleanup_level

手動で削除する場合：

pdcspoolコマンドを実行します。

なお，$PDDIR下が容量不足となった場合はユニットダウンします。

システム共通定義pd_structured_shmpool_dicsizeオペランド指定値

＋数MB

ディレクトリ：

$PDDIR/spool/pdfesdump，pdfesdump1，pdfesdump2でディレクトリ3世代のループ

ファイル：

ディレクトリ下に無制限

×

2

$PDDIR/spool/pdbesdump/*

バックエンドサーバ用の簡易ダンプファイルです。pdbesプロセスセグメンテーション障害，アボート，ユーザ用RDエリア閉塞時に生成されます。

自動で削除する場合：

次のどれかのオペランドを指定します。

pd_spool_cleanup_interval

pd_spool_cleanup_interval_level

pd_spool_cleanup

pd_spool_cleanup_level

手動で削除する場合：

pdcspoolコマンドを実行します。

なお，$PDDIR下が容量不足となった場合はユニットダウンします。

システム共通定義pd_structured_shmpool_dicsizeオペランド指定値

＋インデクス一括作成機能用ワークエリアサイズ※1

＋排他制御用ワークエリアサイズ※2

＋FETCHDB ALL用ワークエリアサイズ※3＋数MB

ディレクトリ：

$PDDIR/spool/pdbesdump，pdbesdump1，pdbesdump2でディレクトリ3世代のループ

ファイル：

ディレクトリ下に無制限

×

（凡例）

×：最大サイズを制限できません。

注※1

「3.6.1(1)　HiRDB/SDデータベース作成ユティリティ（pdsdblod）実行時のファイルの容量」にあるlindxaの値です。ただし，インデクス一括作成機能を使用したpdsdblodコマンド実行中以外の場合，値は0です。

注※2

10×pd_max_rdarea_noの値（単位：バイト）です。

注※3

「3.4.3(2)(c)　変数SDAの求め方」の計算式Bを参照して，算出してください。

付録F.2　トラブルシュート情報

トラブルシュート情報に関する単調増加ファイルを次の表に示します。

表F‒2　単調増加ファイル（トラブルシュート情報）

項番

ファイル名またはディレクトリ名

説明

ファイルサイズの概算値

ファイル数

最大サイズの制限可否

1

$PDDIR/spool/save/コマンド名*.txt

pdsdblodコマンド，pdsdbrogコマンドのトラブルシュート情報です。コマンドのタイムアウト時に生成されます。

自動で削除する場合：

次のどれかのオペランドを指定します。

pd_spool_cleanup_interval

pd_spool_cleanup_interval_level

pd_spool_cleanup

pd_spool_cleanup_level

手動で削除する場合：

pdcspoolコマンドを実行します。

なお，$PDDIR下が容量不足となった場合はユニットダウンします。

数KB〜数十KB（そのときに実行していたHiRDB/SDのプロセス数や，排他待ち資源数によって変化します）

コマンドのプロセスIDごとに1ファイル

×

（凡例）

×：最大サイズを制限できません。

付録F.3　ユティリティおよびコマンド実行時の出力ファイル

ユティリティおよびコマンド実行時に出力されるファイルのうち，単調増加ファイルを次の表に示します。

表F‒3　単調増加ファイル（ユティリティおよびコマンド実行時の出力ファイル）

項番

ファイル名

説明

ファイルサイズの概算値

ファイル数

最大サイズの制限可否

1

/environment文のmsglogオペランドに指定したディレクトリ※1/SDBDEF-*

pdsdbdefコマンドの実行結果を出力するファイル（実行結果ファイル）です。

SDB定義文ファイルサイズ×1.2

毎回異なるファイル名で1ファイル

×

2

/load文のstorinfオペランドに指定したディレクトリ※1/SDBLOD-*

pdsdblodコマンドの実行結果を出力するファイル（実行結果ファイル）です。

「3.6.1(1)　HiRDB/SDデータベース作成ユティリティ（pdsdblod）実行時のファイルの容量」を参照してください。

毎回異なるファイル名で1ファイル

×

3

load文のerrdataオペランドに指定した論理エラー情報ファイル

pdsdblodコマンドのエラーレコード情報（論理エラー情報ファイル）です。

「3.6.1(1)　HiRDB/SDデータベース作成ユティリティ（pdsdblod）実行時のファイルの容量」を参照してください。

load文のerrdataオペランドの指定が毎回同じ場合は1，毎回異なる場合は無制限

○

4

/ワークディレクトリ※2/PDSDBLOAD-*

インフォメーションメッセージを出力するワークファイルです。

「3.6.1(1)　HiRDB/SDデータベース作成ユティリティ（pdsdblod）実行時のファイルの容量」を参照してください。

environment文infmsglvl=lvl2を指定し，インデクス一括作成モードを選択する場合，毎回異なるファイル名で1ファイル

×

5

/unload文のunldinfオペランドに指定したディレクトリ※1/SDBROG-*

pdsdbrogコマンドのアンロード情報を出力するファイル（アンロードの実行結果ファイル）です。

「3.6.1(2)　HiRDB/SDデータベース再編成ユティリティ（pdsdbrog）実行時のファイルの容量」を参照してください。

毎回異なるファイル名で1ファイル

×

6

/report文のdml_skip_infoオペランドに指定したディレクトリ※1/pdskipdml_*

pdorendコマンドの実行時に作成される，追い付き反映時のDMLスキップ情報出力ファイルです。

700×スキップしたSDBデータベースを操作するAPI数（単位：バイト）

pdorendコマンドの対象RDエリアが存在するBES数

×

7

idxload文のworkdirオペランドの指定時

指定ディレクトリ/SDBLOD-*

idxload文のworkdirオペランドの省略時

/tmp/SDBLOD-*（pd_tmp_directoryオペランド指定時は，pd_tmp_directoryディレクトリ下）

pdsdblodコマンドによるインデクス作成時のインデクス情報ファイル

idxload文のsortdirオペランドの指定値

インデクスの作成時，毎回異なるファイル名で「インデクス数×インデクス格納用RDエリア数」作成

×

8

idxload文のsortdirオペランド指定時

指定ディレクトリ/rs*

idxload文のsortdirオペランド省略時

/tmp/sr*（pd_tmp_directoryオペランド指定時は，pd_tmp_directoryディレクトリ下）

pdsdblodコマンドによるインデクス作成時のソート用ワークファイル

「3.6.1(1)　HiRDB/SDデータベース作成ユティリティ（pdsdblod）実行時のファイルの容量」を参照してください。

インデクスの作成時，毎回異なるファイル名で1個作成

×

（凡例）

○：最大サイズを制限できます。

×：最大サイズを制限できません。

注※1

オペランドを省略している場合は，次の優先順位（1の指定がいちばん上位）に従って出力先のディレクトリが決まります。

システム定義のpd_tmp_directoryオペランドに指定したディレクトリ

環境変数TMPDIRに指定したディレクトリ

/tmpディレクトリ

注※2

次の優先順位（1の指定がいちばん上位）に従って出力先のワークディレクトリが決まります。

システム定義のpd_tmp_directoryオペランドに指定したディレクトリ

環境変数TMPDIRに指定したディレクトリ

/tmpディレクトリ

付録G　ユティリティが出力するファイル

次のユティリティが出力するファイルを次の表に示します。

HiRDB/SD定義ユティリティ（pdsdbdef）

HiRDB/SDデータベース作成ユティリティ（pdsdblod）

HiRDB/SDデータベース再編成ユティリティ（pdsdbrog）

表G‒1　ユティリティが出力するファイル

項番

ユティリティ名

出力ファイルまたは出力ディレクトリ

ファイルの出力先

自動削除の対象可否

1

pdsdbdef

実行結果ファイル

environment文の指定先

×

2

SDBディレクトリ情報ファイル（pdsdbdir）

dirinf文の指定先

×

3

SDBディレクトリ情報ファイルの格納ディレクトリ

×

4

配布元一時フォルダ（SDBDEF-AS_プロセスID_プロセス開始時刻）

ワークディレクトリ※

○

5

処理結果ファイル（SDBDEF-result＋ホスト名+ユニット名＋生成日時）

配布元一時フォルダの直下

○

6

配布先一時フォルダ（SDBDEF-AD_ユニット名）

ワークディレクトリ※

○

7

多重起動防止ファイル（SDBDEF-run）

配布先一時フォルダの直下

○

8

処理結果ファイル（SDBDEF-result＋ホスト名＋ユニット名＋生成日時）

○

9

リモートコピー時の一時ファイル（SDBDEF-tmp_プロセスID_プロセスの開始時刻）

○

10

スキップファイル（SDBDEF-skip）

ユニット制御情報定義のpd_structured_directory_pathオペランドに指定したディレクトリ

○

11

リモートコピー時の一時ファイル（SDBDEF-tmp_プロセスID_プロセスの開始時刻）

○

12

pdsdbdirのバックアップ用一時ファイル（pdsdbdir_bk_生成日時）

○

13

pdsdblod

実行結果ファイル

load文の指定先

×

14

論理エラー情報ファイル

×

15

インデクス情報ファイル

idxload文の指定先

○

16

ソート用ワークファイル

○

17

ワークファイル

environment文の指定先

×

18

中間ファイル

oreload文の指定先

○

19

pdsdbrog

アンロードの実行結果ファイル

unload文の指定先

×

20

アンロードデータファイル

×

（凡例）

○：ユティリティの終了時，ファイルが自動的に削除されます。

×：ユティリティの終了時，ファイルが自動的に削除されることはありません。ファイルは残ります。

注　（　）内はファイル名です。

注※　次のディレクトリを意味しています。

ユニット制御情報定義のpd_tmp_directoryオペランドに指定したディレクトリ

環境変数TMPDIRに指定したディレクトリ

/tmp

付録H　ユティリティの排他制御モード

次のユティリティの排他制御モードを次に示します。

HiRDB/SD定義ユティリティ（pdsdbdef）

HiRDB/SDデータベース作成ユティリティ（pdsdblod）

HiRDB/SDデータベース再編成ユティリティ（pdsdbrog）

なお，ここに説明のないユティリティの排他制御モードについては，マニュアル「HiRDB Version 9 コマンドリファレンス」を参照してください。

付録H.1　HiRDB/SD定義ユティリティ（pdsdbdef）の排他制御モード

HiRDB/SD定義ユティリティ（pdsdbdef）の排他制御モードは，HiRDB/SD定義ユティリティが処理の延長で発行するSQL文によって決まります。SQL文の排他モードについては，マニュアル「HiRDB Version 9 UAP開発ガイド」の「排他制御のモード」を参照してください。

なお，マニュアル「HiRDB Version 9 UAP開発ガイド」の「排他制御のモード」を参照する際，次の表に示す個所を参照してください。

表H‒1　HiRDB/SD定義ユティリティ（pdsdbdef）の排他制御モード

実行するSDB定義文

「排他制御のモード」で参照するSQL文

*ENTRY DICTIONARY文

*CHECK DICTIONARY文

インデクス定義

*ENTRY DICTIONARY文

*ENTRY DIRECTORY文

インデクス定義

*ALTER DICTIONARY文

*CHECK DICTIONARY文

レコード型追加

インデクス定義※1

格納RDエリア変更

表定義変更（主キーの追加および削除は除く）

全行削除※2

*ALTER DICTIONARY文

*ALTER DIRECTORY文

レコード型追加

インデクス定義※1

格納RDエリア変更

表定義変更（主キーの追加および削除は除く）

全行削除※2

*DELETE DICTIONARY文

*CHECK DICTIONARY文

表削除

インデクス削除

*DELETE DICTIONARY文

*DELETE DIRECTORY文

表削除

インデクス削除

注※1

追加したレコード型にインデクスを定義する場合

注※2

「表11-23　RDエリアの定義変更時のデータの削除有無（格納条件指定の横分割の場合）」または「表11-24　RDエリアの定義変更時のデータの削除有無（境界値指定の横分割の場合）」の同期点を取得するケース（表の※1）が該当します。

付録H.2　HiRDB/SDデータベース作成ユティリティ（pdsdblod）の排他制御モード

HiRDB/SDデータベース作成ユティリティ（pdsdblod）の排他制御モードを次の表に示します。

HiRDB/SDデータベース作成ユティリティ（pdsdblod）の追い付き反映キー対応表に対する排他制御モードを「表H-5　HiRDB/SDデータベース作成ユティリティ（pdsdblod）の追い付き反映キー対応表に対する排他制御モード」に示します。

表H‒2　HiRDB/SDデータベース作成ユティリティ（pdsdblod）の排他制御モード

SDBデータベース種別

実行環境

areaオペランド

資源

RDエリア※1

ルートレコード型

ルートレコード型（NOWAIT検索時）※2

シーケンシャルインデクスID

二次インデクスID

データベース複写ユティリティ※3

ページまたはサブページ

レコード格納用

シーケンシャルインデクス格納用

二次インデクス格納用

RDエリア管理ブロック※4

4V FMBまたはSD FMB

SDBデータベースの横分割なし

指定なし

SU

SU

SU

SR

EX

EX

EX

EX

SU

−

SDBデータベースの横分割あり※5

EX

SU

SU

SR

SR※7

EX

EX※6

EX※6

SU

−

指定あり

EX

SU

SU

SR

SR※7

−

EX※6

EX※6

SU

−

4V AFM

SDBデータベースの横分割なし

指定なし

SU

SU

SU

SR

EX

EX

EX

EX

SU

−

SDBデータベースの横分割あり※5

EX

SU

SU

SR

−

EX

EX※6

EX※6

SU

−

指定あり

EX

SU

SU

SR

−

−

EX※6

EX※6

SU

−

（凡例）

EX：排他モードの排他が掛かります。

SR：意図共用モードの排他が掛かります。

SU：意図排他モードの排他が掛かります。

−：排他は掛かりません。

注※1

インナレプリカ機能使用時は，次のRDエリアを対象とします。

pdsdblod制御文のenvironment文にあるgenerationオペランドの指定

対象とするRDエリア

あり

指定した世代番号のRDエリア

なし

カレントRDエリア

注※2

environment文のpurgeオペランドにyesを指定した場合は，データを削除するときにルートレコード型（NOWAIT検索時）の資源に対して，EXモードで排他を掛けます。

注※3

load文のidxmodeオペランドにcreateを指定した場合は，データ格納の終了処理でインデクス格納用RDエリアのセグメントに対して，SUモードで排他を掛けます。

environment文のpurgeオペランドにyesを指定した場合は，データを削除するときにSUモードで排他を掛けます。

注※4

RDエリア中のセグメントの追加，セグメントの削除など，セグメントを操作する可能性があるプロセスが排他を掛ける領域を指します。

注※5

格納対象のRDエリアに対してだけ排他を掛けます。格納対象のRDエリアは，次の表を参照してください。

表H‒3　SDBデータベースの横分割状態とareaオペランドの指定の有無の組み合わせによる格納対象

SDBデータベースの横分割

areaオペランドの指定

格納対象

なし

なし

すべてのRDエリアをデータロードの対象とします。

あり

KFPB63301-Eが出力され，エラーとなります。

あり

なし

serverオペランドで指定したバックエンドサーバ上のRDエリアだけをデータロードの対象とします。

あり

areaオペランドで指定したRDエリアだけをデータロードの対象とします。

SDBデータベースの横分割種別は，次のとおりです。

格納条件分割

境界値分割

注※6

SDBデータベースが横分割されている場合，インデクスIDに排他を掛けるのではなく，該当するインデクス格納用RDエリアに格納されているインデクスに対してだけEXモードで排他が掛かるため，RDエリア単位のデータロードを同時に実行できます。

注※7

pdsdblod制御文のオペランドの指定とルートレコード型の排他の関係を次の表に示します。

表H‒4　pdsdblod制御文のオペランドの指定とルートレコード型の排他の関係

environment文のpurgeオペランドの指定

load文

ルートレコード型の排他

idxmodeオペランドの指定

dupkeyckオペランドの指定

yes

createまたは省略

yesまたは省略

−

no

−

sync

yesまたは省略

−

no

−

noまたは省略

createまたは省略

yesまたは省略

SR

no

−

sync

yesまたは省略

−

no

−

（凡例）

SR：意図共用モードの排他が掛かります。

−：排他は掛かりません。

表H‒5　HiRDB/SDデータベース作成ユティリティ（pdsdblod）の追い付き反映キー対応表に対する排他制御モード

排他が取得されるタイミング

資源

インナレプリカ※1

RDエリア

表ID

インデクスID

ページ

行

表ID

インデクスID

RDエリア管理ブロック※2

追い付き反映キー対応表のチェック時（KFPB63000-I出力後）

SR

SR

SR

−

SR

−

−

PR

追い付き反映キー対応表へのデータ格納時（KFPB63042-I出力後）

−

SU

SU

SR

SU

SU

−

EX

（凡例）

EX：排他モードの排他が掛かります。

PR：共用モードの排他が掛かります。

SR：意図共用モードの排他が掛かります。

SU：意図排他モードの排他が掛かります。

−：排他は掛かりません。

注※1

インナレプリカ構成管理情報またはレプリカグループ構成管理情報のことです。

システム共通定義のpd_inner_replica_lock_shiftオペランドの指定によって，対象となる資源が次のように異なります。

pd_inner_replica_lock_shiftオペランドにYを指定した場合は，レプリカグループ構成管理情報に排他が掛かります。

pd_inner_replica_lock_shiftオペランドにNを指定したか，または指定を省略した場合は，インナレプリカ構成管理情報に排他が掛かります。

注※2

RDエリア管理ブロックとは，RDエリア中のセグメントの追加または削除など，セグメントの操作を行う可能性があるプロセスが排他を掛ける領域のことです。

表H‒6　HiRDB/SDデータベース作成ユティリティ（pdsdblod）のインデクス再作成機能使用時の排他制御モード

SDBデータベース種別

実行環境

資源

RDエリア※2

ルートレコード型

シーケンシャルインデクスID※3

二次インデクスID※3

データベース複写ユティリティ

ページまたはサブページ

レコード格納用

シーケンシャルインデクス格納用

※3

二次インデクス格納用※3

RDエリア管理ブロック※1

4V FMBまたはSD FMB

SDBデータベースの横分割なし

SU

SU

SU

SR

EX

EX

EX

SU

−

SDBデータベースの横分割あり

EX

SU

SU

SR

−

EX

EX

SU

−

4V AFM

SDBデータベースの横分割なし

SU

SU

SU

SR

EX

EX

EX

SU

−

SDBデータベースの横分割あり

EX

SU

SU

SR

−

EX

EX

SU

−

（凡例）

EX：排他モードの排他が掛かります。

SR：意図共用モードの排他が掛かります。

SU：意図排他モードの排他が掛かります。

PR：共用モードの排他が掛かります。

−：排他は掛かりません。

注※1

RDエリア中のセグメントの追加，セグメントの削除など，セグメントを操作する可能性があるプロセスが排他を掛ける領域です。

注※2

インナレプリカ機能使用時は，次のRDエリアを対象とします。

pdsdblod制御文のenvironment文のgenerationオペランドの指定

対象とするRDエリア

あり

指定した世代番号のRDエリア

なし

カレントRDエリア

注※3

インデクス格納用RDエリアおよびインデクスは，シーケンシャルインデクスまたは二次インデクスのどちらかだけに排他が掛かります。

付録H.3　HiRDB/SDデータベース再編成ユティリティ（pdsdbrog）の排他制御モード

HiRDB/SDデータベース再編成ユティリティ（pdsdbrog）の排他制御モードを次の表に示します。

表H‒7　HiRDB/SDデータベース再編成ユティリティ（pdsdbrog）の排他制御モード

SDBデータベース種別

実行環境

資源

RDエリア※1

ルートレコード型

シーケンシャルインデクスID

二次インデクスID

ページまたはサブページ

レコード格納用

シーケンシャルインデクス格納用

二次インデクス格納用

RDエリア管理ブロック※2

4V FMBまたはSD FMB

SDBデータベースの横分割なし

SR

SR

SR

SR

PR

−

−

−

SDBデータベースの横分割あり

PR

PR

PR

SR

SR

−

−

−

4V AFM

SDBデータベースの横分割なし

SR

SR

SR

SR

PR

−

−

−

SDBデータベースの横分割あり

PR

PR

PR

SR

SR

−

−

−

（凡例）

PR：共用モードの排他が掛かります。

SR：意図共用モードの排他が掛かります。

−：排他は掛かりません。

注※1

インナレプリカ機能使用時は，次のRDエリアを対象とします。

pdsdblod制御文のenvironment文にあるgenerationオペランドの指定

対象とするRDエリア

あり

指定した世代番号のRDエリア

なし

カレントRDエリア

注※2

RDエリア中のセグメントの追加，セグメントの削除など，セグメントを操作する可能性があるプロセスが排他を掛ける領域を指します。

付録I　ユティリティ実行時の留意事項

次のユティリティ実行時の留意事項について説明します。

HiRDB/SD定義ユティリティ（pdsdbdef）

HiRDB/SDデータベース作成ユティリティ（pdsdblod）

HiRDB/SDデータベース再編成ユティリティ（pdsdbrog）

付録I.1　RDエリアの状態によるユティリティの実行可否

ユティリティを実行する場合，RDエリアのオープン契機，およびRDエリアの状態によって実行可否が決まります。RDエリアの状態によるユティリティの実行可否を次に示します。

インナレプリカ機能使用時の，RDエリアの状態ごとのHiRDB/SD定義ユティリティ（pdsdbdef）の実行可否については，「付録J.2　RDエリアの状態ごとのHiRDB/SD定義ユティリティ（pdsdbdef）の実行可否」を参照してください。

また，HiRDB/SDデータベースアクセスユティリティ（pdsdbexe）の実行可否については，UAPの実行可否と同じになります。RDエリアの状態によるUAPの実行可否については，マニュアル「HiRDB Version 9 コマンドリファレンス」の「RDエリアの状態によるユティリティおよびUAPの実行可否」を参照してください。

表I‒1　RDエリアの状態によるユティリティの実行可否（オープン契機がINITIALの場合）

RDエリアの状態

ユティリティの実行可否

pdsdbdef

pdsdblod

pdsdbrog

閉塞なし

オープン

○

○

○

クローズ

×

×

×

コマンド閉塞

オープン

×

○

○

クローズ

×

×

×

参照可能閉塞

オープン

×

○

○

クローズ

×

×

×

参照可能バックアップ閉塞

オープン

×

×

○

クローズ

×

×

×

更新可能バックアップ閉塞

オープン

×

×

×

障害閉塞

オープン

×

×

×

クローズ

×

×

×

ログレス閉塞

オープン

×

×

×

クローズ

×

×

×

同期化閉塞

オープン

×

×

×

クローズ

×

×

×

オンライン再編成閉塞

オープン

×

○※1，※2

○※1

クローズ

×

×

×

（凡例）

○：実行できます。

×：実行できません。

注※1

レプリカRDエリアに対しては実行できません。

同一レプリカグループ内のオンライン再編成閉塞のオリジナルRDエリアが，カレントRDエリアの場合は実行できません。

注※2

インデクスの再作成機能は実行できません。

追加データロード機能は実行できません。

表I‒2　RDエリアの状態によるユティリティの実行可否（オープン契機がDEFERまたはSCHEDULEの場合）

RDエリアの状態

ユティリティの実行可否

pdsdbdef

pdsdblod

pdsdbrog

閉塞なし

オープン

○

○

○

クローズ

×

○

○

コマンド閉塞

オープン

×

○

○

クローズ

×

×

×

参照可能閉塞

オープン

×

○

○

クローズ

×

○

○

参照可能バックアップ閉塞

オープン

×

×

○

クローズ

×

×

○

更新可能バックアップ閉塞

オープン

×

×

×

障害閉塞

オープン

×

×

×

クローズ

×

×

×

ログレス閉塞

オープン

×

×

×

クローズ

×

×

×

同期化閉塞

オープン

×

×

×

クローズ

×

×

×

オンライン再編成閉塞

オープン

×

○※1，※2

○※1

クローズ

×

○※1，※2

○※1

（凡例）

○：実行できます。

×：実行できません。

注※1

レプリカRDエリアに対しては実行できません。

同一レプリカグループ内のオンライン再編成閉塞のオリジナルRDエリアが，カレントRDエリアの場合は実行できません。

注※2

インデクスの再作成機能は実行できません。

追加データロード機能は実行できません。

付録I.2　ユティリティ実行中の割り込みによる強制終了

ユティリティ実行中は，シグナル割り込み（例えば，CTL＋C，CTL＋¥，pdkillコマンドなど）を使用してユティリティを強制終了させないでください。タイミングによっては，HiRDBが終了することがあります。ユティリティは，pdcancelコマンドで終了させてください。

付録I.3　LANG環境変数の設定

ユティリティには，LANG環境変数の設定が必要なものがあります。

LANG環境変数を指定しなくても，LC_ALLまたはLC_*環境変数を指定していれば，こちらの設定が有効となります。また，LC_ALLまたはLC_*環境変数を指定していない場合はLANG環境変数の設定が有効となります。

LANG環境変数の設定が必要なユティリティについては，これらを考慮して実行するようにしてください。

付録I.4　ユティリティ実行時に取得される統計情報

ユティリティ実行時に取得される統計情報は，SDBデータベース定義を取得するために行うディクショナリ検索時に実行されるSQLが対象となります。

ユティリティ実行時に取得される統計情報を次の表に示します。

表I‒3　ユティリティ実行時に取得される統計情報

項番

ディクショナリ検索時に取得される統計情報

ユティリティ

pdsdblod

pdsdbrog

1

システムの稼働に関する統計情報

○

○

2

UAPに関する統計情報

○

○

3

SQLに関する統計情報

○

○

4

グローバルバッファに関する統計情報

○

○

5

データベース操作に関するHiRDBファイルの統計情報

○

○

6

SQL静的最適化に関する統計情報

○

○

7

SQL動的最適化に関する統計情報

○

○

8

SQLオブジェクト実行に関する統計情報

○

○

9

SQL文の履歴に関する統計情報

○

○

10

CONNECT/DISCONNECTに関する統計情報

○

○

11

デファードライト処理に関する統計情報

○※

○※

12

インデクスに関する統計情報

○※

○※

13

SQLオブジェクト転送に関する統計情報

○

○

（凡例）

○：統計情報を取得します。

注※

イベントが発生しなければ値が0となります。

付録J　インナレプリカ機能使用時のHiRDB/SD定義ユティリティ（pdsdbdef）の実行【4V FMB，4V AFM】

インナレプリカ機能を使用する場合のpdsdbdefコマンドを実行するための条件，および注意事項について説明します。

付録J.1　HiRDB/SD定義ユティリティ（pdsdbdef）を実行するための条件

インナレプリカ機能を使用する場合，pdsdbdefコマンドはオリジナルRDエリアとレプリカRDエリアの対象のレコード型に関連するすべてのRDエリアに対して処理を行います。

pdsdbdefコマンドを実行するためには，次に示す条件を満たしている必要があります。（a），（b）および（c）の条件を満たしていない場合，pdsdbdefコマンドはエラーになります。SDB定義文ごとにチェック条件が異なります。チェック条件については，「表J-3　チェックが発生するSDB定義文の一覧とそのチェック内容」を参照してください。

(a)SDB定義文で指定する格納RDエリア名

指定された格納RDエリアがオリジナルRDエリアである。

(b)対象のレコード型と関連RDエリアのレプリカRDエリアの複製定義

対象のレコード型と関連RDエリアが複数になる場合，次の条件を満たすかどうか。

各RDエリアのレプリカRDエリアの定義数が同じである。

各RDエリアのレプリカRDエリアを定義した世代が同じである。

(c)RDエリアの状態

対象のレコード型と関連RDエリアが，すべての世代（オリジナルRDエリアも含む）でHiRDB/SD定義ユティリティを実行できる状態である。

RDエリアの状態の確認手順を次に示します。RDエリアの状態ごとのpdsdbdefコマンドの実行可否については，「付録J.2　RDエリアの状態ごとのHiRDB/SD定義ユティリティ（pdsdbdef）の実行可否」を参照してください。

(1)　RDエリアの状態の確認手順

*ENTRY DIRECTORY文，*ALTER DIRECTORY文，*CHECK DICTIONARY文，または*DELETE DICTIONARY文を実行する前に，次の手順に従ってRDエリアの状態を確認します。

レコード型の関連RDエリア（レコード型，およびインデクスを格納するRDエリア）を調べます。

＜*ENTRY DIRECTORY文，*ALTER DIRECTORY文，または*CHECK DICTIONARY文の場合＞

SDBデータベース格納定義に記述するRDエリアを確認します。

＜*DELETE DICTIONARY文の場合＞

pdrdreflsコマンドの-tオプションに各SDBデータベースの任意のレコード型名を指定して，SDBデータベースごとに実行します。

インデクスを格納するRDエリアにほかのSDBデータベースのレコード型のインデクスが定義されている場合，pdrdreflsコマンドで表示される関連RDエリアには，それらの情報も表示されます。そのため，実際にpdsdbdefコマンドが対象とする関連RDエリアよりも範囲が広い場合があります。-aオプション指定で表示されるレコード型名またはインデクス名から対象RDエリアを判断してください。

1.で調べたRDエリアで，すべてのオリジナルRDエリアが更新可能状態であることをpddblsコマンドで確認します。

1.で調べたRDエリアで，レプリカRDエリアの状態をpddblsコマンドで確認します。pdsdbdefコマンドを実行できる条件を次に示します。

＜オリジナルRDエリアがすべてカレントRDエリアである場合＞

すべてのレプリカRDエリアが，各世代内で次のどちらかの状態で統一されている必要があります。

・更新可能な状態

・コマンド閉塞かつクローズ状態※

＜オリジナルRDエリアがカレントRDエリアでない場合＞

(i)　pddblsコマンドに-Cオプションを指定して，1.で調べたオリジナルRDエリアのレプリカRDエリアを調べます。

(ii)　pddblsコマンドの-qオプションに(i)のレプリカRDエリアの世代番号を指定して，すべてのレプリカRDエリアのカレントRDエリアが更新可能状態であることを確認します。

(iii)　上記以外のレプリカRDエリアが，各世代内で次のどちらかの状態で統一されている必要があります。

・更新可能な状態

・コマンド閉塞かつクローズ状態※

注※

世代の処理対象となるレコード型に関連するすべてのRDエリアがコマンド閉塞かつクローズ状態の場合は，定義処理がスキップされます。定義処理がスキップされた場合，KFPH22032-Wメッセージが出力されます。定義処理が正常に完了し，KFPH22032-Wメッセージが出力されている場合は，スキップした世代のRDエリアはデータディクショナリ用RDエリアの定義情報と不整合となります。そのため，閉塞を解除する前にRDエリアの再作成が必要になります。詳細については「付録J.3(1)　KFPH22032-Wメッセージの出力と対処」を参照してください。

付録J.2　RDエリアの状態ごとのHiRDB/SD定義ユティリティ（pdsdbdef）の実行可否

RDエリアの状態ごとのpdsdbdefコマンドの実行可否を，次に示します。

表J‒1　RDエリア状態ごとのHiRDB/SD定義ユティリティ（pdsdbdef）の実行可否（オープン契機がINITIALの場合）

RDエリアの状態

ユティリティの実行可否

オリジナル世代またはカレントRDエリアの世代

左記以外のレプリカRDエリアの世代

閉塞なし

オープン

○

○

クローズ

×

×

コマンド閉塞

オープン

×

×

クローズ

×

○※１

参照可能閉塞

オープン

×

×

クローズ

×

×

参照可能バックアップ閉塞

オープン

×

×

クローズ

×

×

更新可能バックアップ閉塞

オープン

×

×

クローズ

×

×

障害閉塞

オープン

×

×

クローズ

×

×

ログレス閉塞

オープン

×

×

クローズ

×

×

同期化閉塞

オープン

○※２

○※２

クローズ

×

×

オンライン再編成閉塞

オープン

×

×

クローズ

×

×

（凡例）

○：実行できます。

×：実行できません。

注※1

世代の処理対象となるレコード型に関連するすべてのRDエリアがコマンド閉塞かつクローズ状態の場合は，定義処理がスキップされます。この場合，KFPH22032-Wメッセージが出力され，閉塞を解除する前にRDエリアを再作成する必要があります。詳細は「付録J.3(1)　KFPH22032-Wメッセージの出力と対処」を参照してください。

注※2

排他待ちになります。

表J‒2　RDエリア状態ごとのHiRDB/SD定義ユティリティ（pdsdbdef）の実行可否（オープン契機がDEFERまたはSCHEDULEの場合）

RDエリアの状態

ユティリティの実行可否

オリジナル世代またはカレントRDエリアの世代

左記以外のレプリカRDエリアの世代

閉塞なし

オープン

○

○

クローズ

○

○

コマンド閉塞

オープン

×

×

クローズ

×

○※１

参照可能閉塞

オープン

×

×

クローズ

×

×

参照可能バックアップ閉塞

オープン

×

×

クローズ

×

×

更新可能バックアップ閉塞

オープン

×

×

クローズ

×

×

障害閉塞

オープン

×

×

クローズ

×

×

ログレス閉塞

オープン

×

×

クローズ

×

×

同期化閉塞

オープン

○※２

○※２

クローズ

○※２

○※２

オンライン再編成閉塞

オープン

×

×

クローズ

×

×

（凡例）

○：実行できます。

×：実行できません。

注※1

世代の処理対象となるレコード型に関連するすべてのRDエリアがコマンド閉塞かつクローズ状態の場合は，定義処理がスキップされます。この場合，KFPH22032-Wメッセージが出力され，閉塞を解除する前にRDエリアを再作成する必要があります。詳細については「付録J.3(1)　KFPH22032-Wメッセージの出力と対処」を参照してください。

注※2

排他待ちになります。

インナレプリカ機能使用時のpdsdbdefコマンドは，処理対象となるオリジナルRDエリアとレプリカRDエリアすべてに対して，RDエリア内の定義情報を変更します。このため，処理対象となるレコード型に関連するすべてのRDエリアに対して，処理できる状態かどうかをチェックします。チェック対象となるpdsdbdefコマンドのSDB定義文を次の表に示します。次の表に記載のないSDB定義文については，インナレプリカ機能の使用の有無に関係なく実行できます。

表J‒3　チェックが発生するSDB定義文の一覧とそのチェック内容

SDB定義文

内容

チェック内容※

（a）

（b）

（c）

*ENTRY DIRECTORY文

SDBディレクトリ情報の追加

○

○

○

*ALTER DIRECTORY文

SDBディレクトリ情報の変更

○

○

○

*CHECK DICTIONARY文

データベース定義のチェック

○

○

×

*DELETE DICTIONARY文

SDBディクショナリ情報の削除

×

○

○

（凡例）

○：チェックします。

×：チェックしません。

注※

チェック内容については，「付録J.1　HiRDB/SD定義ユティリティ（pdsdbdef）を実行するための条件」を参照してください。

付録J.3　インナレプリカ機能を使用中にHiRDB/SD定義ユティリティ（pdsdbdef）を実行する場合の注意事項

pdsdbdefコマンドを実行するときは，次の点に注意してインナレプリカの運用方法を決定してください。

対象となるレコード型に関連するすべてのRDエリア※1は，複製定義数を一致させ，レプリカRDエリアの世代番号※2をすべてそろえて運用してください。ただし，SDBデータベースのサーバ間横分割をしている場合は，複製定義数または世代番号はサーバ内でそろっていれば問題ありません。

RDエリア内に複数のレコード型のレコードまたはインデクスがある場合は，すべてのレコード型に関連する格納RDエリアを一組にして運用してください。

複数の世代にpdsdbdefコマンドを実行する場合は，世代数分の処理時間と排他資源が必要になります。

レプリカRDエリアの実体がオリジナルRDエリアと別になっている状態でKFPH22032-Wメッセージが出力された場合，レプリカRDエリアの再作成が必要です。詳細については「付録J.3(1)　KFPH22032-Wメッセージの出力と対処」を参照してください。

注※1

pdrdreflsコマンドで関連RDエリアを確認できます。

注※2

レプリカRDエリアの定義数または世代番号の確認には，pddblsコマンドを使用します。

(1)　KFPH22032-Wメッセージの出力と対処

(a)　出力

RDエリアがコマンド閉塞かつクローズ状態のため，定義処理がスキップされると該当する世代のサーバで，バックエンドサーバごとにKFPH22032-Wメッセージが出力されます。

なお，KFPH22032-Wメッセージは複数回出力されます。*ENTRY DIRECTORY文の場合は，「（レコード型数＋インデクス数）×該当する世代数（定義処理をスキップした世代数）」の数だけ，KFPH22032-Wメッセージが出力されます。例えば，レコード型数が2でインデクス数が1，該当する世代が3の場合，KFPH22032-Wメッセージは9回（（2＋1）×3）出力されます。

DELETE DIRECTORY文の場合は，「レコード型数×該当する世代数」の数だけKFPH22032-Wメッセージが出力されます。

(b)　対処

コマンド閉塞かつクローズ状態のため定義処理がスキップされたRDエリアは，RDエリア内の定義情報が変更されていません。ペアを分離しているなど，オリジナルRDエリアの更新が自動でレプリカRDエリアに反映される状態でない場合，RDエリアの内容は，データディクショナリ用RDエリアにあるレコード型やインデクスの定義情報と不整合となります。この状態でレプリカRDエリアの閉塞を解除して使用すると，pdsdbdefコマンドがエラーとなったり，RDエリアが障害閉塞したりします。

RDエリアの閉塞を解除する前に次のどちらかの方法で，RDエリアの内容とレコード型やインデクスの定義情報を一致させてください。

該当するRDエリアにオリジナルRDエリア，またはカレントRDエリアをコピーして，レプリカデータベースを再作成します。この場合，コピー元とコピー先のRDエリアの構成情報（構成ファイル数，ページ長，セグメントサイズ，およびセグメント数）が不一致のときはpdmodコマンドのRDエリアの構成情報複写で実体に合わせてRDエリアの定義情報もコピーします。

pdmodコマンドで該当するRDエリアを再初期化します。再初期化するとRDエリアのデータはすべて削除されるため，データを再度登録します。

付録K　横分割時の検索範囲，検索範囲決定の契機，および入力情報とキーの定義の関係

付録K.1　横分割時の検索範囲

RDエリアの指定種別，およびレコード検索時の基点条件の組み合わせによる検索範囲について，次の表に示します。

なお，SD FMBのSDBデータベースの場合，個別開始時の指定は，RDエリア指定有効オプション'Y'，RDエリア指定種別X'00'になります。

表K‒1　RDエリア指定種別，およびレコード検索時の基点条件の組み合わせによる検索範囲

レコード検索時※1の指定

個別開始時の指定

検索対象※3

アクセス種別

検索範囲の説明の参照先

基点条件※2

RDエリア指定有効オプション

RDエリア指定種別※6

基点となるRDエリア

なし

−

'Y'

−

指定されたRDエリアを「格納値」※4の昇順に検索します。

RDエリア指定検索※5

付録K.1(1)(a)，付録K.1(2)(a)

X'00'

−

すべてのRDエリアを「格納値」※4の昇順に検索します。

付録K.1(1)(b)，付録K.1(2)(b)

あり

'Y'

'Y'

含む

条件で指定された検索開始位置からそのRDエリアおよび指定されたRDエリアを「格納値」※4の昇順に検索します。

付録K.1(1)(c)，付録K.1(2)(c)

含まない

条件で指定された「格納値」※4を含むレコード実現値と指定されたRDエリアを「格納値」※4の昇順に検索します。

付録K.1(1)(d)，付録K.1(2)(d)

X'00'

−

条件で指定された検索開始位置からすべてのRDエリアを「格納値」※4の昇順に検索します。

付録K.1(1)(e)，付録K.1(2)(e)

X'00'

−

−

条件で指定された検索開始位置からそのRDエリアだけをインデクスの昇順に検索します。

基点検索

付録K.1(1)(f)，付録K.1(2)(f)

（凡例）−：状態を問いません。

注※1

レコードの検索および複数レコードの検索を指します。

注※2

基点条件は，検索範囲の開始位置を指定するキー条件のことです。条件式の比較記号が「GT or >」，「GE or >=」，「EQ or =」の場合に基点条件が「あり」となります。

例えば，「DBKEY>B」や「DBKEY=B」は検索範囲の開始位置Bが指定されているため，基点条件が「あり」となります。「DBKEY<H」は開始位置が指定されていないので基点条件は「なし」となります。

また，格納条件値分割をしたレコードの場合，基点条件の条件値であるRDエリア分割キー値が，SDBデータベース格納定義のWITHIN句で定義されたRDエリア分割キー値でないときは，エラーとなります。

注※3

検索範囲の決定は，「表K-2　4V FMBまたはSD FMBのSDBデータベース検索時の検索範囲決定」，「表K-3　4V AFMのSDBデータベース検索時の検索範囲決定」に記載の契機で行われます。以降のNEXTおよびPRIOR指定の検索は，そのときに決定した検索範囲を対象に行われます。

注※4

境界値分割の場合，「格納値」を「境界値に指定された値の範囲」と読み替えてください。

注※5

シーケンシャルインデクスの先頭の構成要素以外を，RDエリア分割キーに指定したレコード型に対してRDエリアを指定して検索する場合，次の条件を満たしていないときは，エラーとなります。

RDエリア分割キーに指定した構成要素よりも前のすべての構成要素に対してKEYDEF句を指定している。

1.で指定したKEYDEF句ごとのDATA句で定義したキー値は1つだけである。

注※6

4V AFMのSDBデータベースでRDエリア指定種別がX'00'の場合は，この表で決定される検索範囲から，さらに範囲が限定されます。

検索対象となる範囲の例を次に示します。

(1)　DBKEYの先頭列を指定したときの格納条件指定による横分割の定義例

DBKEYの先頭列を指定したときの格納条件指定による横分割の定義例を次に示します。

WITHIN ( (RDAREA1)TENBAN=(A,G)
       , (RDAREA2)TENBAN=(B,F)
       , (RDAREA3)TENBAN=(C,H))

(a)　RDエリアの指定にRDAREA1およびRDAREA3を指定した場合

RDエリアの指定にRDAREA1およびRDAREA3を指定した場合，点線枠内が検索範囲となります。分割条件値が昇順となるA→C→G→Hの順に検索します。

(b)　すべてのRDエリアを指定した場合

すべてのRDエリアを指定した場合，点線枠内が検索範囲となります。分割条件値が昇順となるA→B→C→F→G→Hの順に検索します。

(c)　基点となる条件に「DBKEY≧Ahi」を指定，RDエリアの指定にRDAREA1およびRDAREA2を指定した場合

基点となる条件に「DBKEY≧Ahi」を指定した場合，RDエリアの指定にRDAREA1およびRDAREA2を指定したとき，点線枠内が検索範囲となります。分割条件値が昇順となるA→B→F→Gの順に検索します。

(d)　基点となる条件に「DBKEY≧Ahi」を指定，RDエリアの指定にRDAREA2を指定した場合

基点となる条件に「DBKEY≧Ahi」を指定した場合，RDエリアの指定にRDAREA2を指定したとき，点線枠内が検索範囲となります。分割条件値が昇順のA→B→Fの順に検索します。

(e)　基点となる条件に「DBKEY≧Ahi」を指定，RDエリアの指定に0x00を指定した場合

基点となる条件に「DBKEY≧Ahi」を指定した場合，RDエリアの指定に0x00を指定したとき，点線枠内が検索範囲となります。分割条件値が昇順となるA→B→C→F→G→Hに検索します。

(f)　基点となる条件に「DBKEY≧Ahi」を指定した場合

基点となる条件に「DBKEY≧Ahi」を指定した場合，点線枠内が検索範囲となります。インデクスキーの昇順に検索します。

(2)　境界値指定による横分割の定義例

境界値指定による横分割の定義例を次に示します。

DEPENDING ON C1
 WITHIN ( (RDAREA1)10, (RDAREA2)20, (RDAREA3)30, (RDAREA2)40, (RDAREA1)50,
          (RDAREA3))

(a)　RDエリアの指定にRDAREA1およびRDAREA3を指定した場合

RDエリアの指定にRDAREA1およびRDAREA3を指定した場合，点線枠内が検索範囲となります。分割条件値の範囲が，1〜10→21〜30→41〜50→51〜となるように検索します。

(b)　すべてのRDエリアを指定した場合

すべてのRDエリアを指定した場合，点線枠内が検索範囲となります。分割条件値が，1〜10→11〜20→21〜30→31〜40→41〜50→51〜となるように検索します。

(c)　基点となる条件に「DBKEY≧5hi」を指定，RDエリアの指定にRDAREA1およびRDAREA2を指定した場合

基点となる条件に「DBKEY≧5hi」を指定した場合，RDエリアの指定にRDAREA1およびRDAREA2を指定したとき，点線枠内が検索範囲となります。分割条件値が，5〜10→11〜20→31〜40→41〜50となるように検索します。

(d)　基点となる条件に「DBKEY≧5hi」を指定，RDエリアの指定にRDAREA2を指定した場合

基点となる条件に「DBKEY≧5hi」を指定した場合，RDエリアの指定にRDAREA2を指定したとき，点線枠内が検索範囲となります。分割条件値が，5〜10→11〜20→31〜40となるように検索します。

(e)　基点となる条件に「DBKEY≧5hi」を指定，RDエリアの指定に0x00を指定した場合

基点となる条件に「DBKEY≧5hi」を指定した場合，RDエリアの指定に0x00を指定したとき，点線枠内が検索範囲となります。分割条件値が，5〜10→11〜20→21〜30→31〜40→41〜50→51〜となるように検索します。

(f)　基点となる条件に「DBKEY≧5hi」を指定した場合

基点となる条件に「DBKEY≧5hi」を指定した場合，点線枠内が検索範囲となります。インデクスキーの昇順に検索します。

付録K.2　検索範囲決定の契機

検索範囲（検索条件によって決定されるレコードの集合ではなく，検索対象となるRDエリアの集まりを指す）は，検索要求時および格納要求時に決定されます。検索範囲が決定される場合と，決定されない場合について，次に示します。

検索範囲が決定されない場合は，前回の検索/格納時に決定された範囲を検索範囲とします。検索範囲が決定された場合，「表K-1　RDエリア指定種別，およびレコード検索時の基点条件の組み合わせによる検索範囲」にあるRDエリアが検索範囲となります。

4V AFMのSDBデータベースの場合は，「表K-1　RDエリア指定種別，およびレコード検索時の基点条件の組み合わせによる検索範囲」で決定されたRDエリアから，個別開始時のRDエリアの指定種別がX'00'のとき，最初に検索した仮想ルートレコードの子レコードだけに限定されます。

検索および格納の操作，およびSDBデータベース種別の組み合わせごとに，検索範囲の決定契機を次に示します。

表K‒2　4V FMBまたはSD FMBのSDBデータベース検索時の検索範囲決定

レコードの検索時または位置指示子の位置づけ時の指定

前回の検索要求または格納要求の結果

検索範囲の決定

レコード種別

指示コード

レコード型名

（指定必須）

ルートレコード

F

指定あり

−

○

N

指定あり

SQLCODE≧0（100を除く）

×

SQLCODE＜0またはSQLCODE＝100

○

結果なし（前回の検索要求および格納要求が未実施）

○

子レコード

F/N/L/P/U

指定あり

−

×

（凡例）

○：検索範囲が決定されます。

×：検索範囲が決定されません。

−：該当しません。

F：FIRSTポインタから検索します。

N：NEXTポインタから検索します。

L：LASTポインタから検索します。

P：PRIORポインタから検索します。

U：USERポインタから検索します。

表K‒3　4V AFMのSDBデータベース検索時の検索範囲決定

レコード検索時の指定

前回の検索要求または格納要求の結果

そのほかの条件

検索範囲の決定

レコード種別

指示コード

レコード型名

子レコード※

F/L

指定あり

−

−

○

指定なし

−

−

○

N/P

指定あり

SQLCODE≧0（100を除く）

直前に一括削除を実行

実行あり

○

実行なし

ユーザ指定のレコード型名と，前回検索および格納したレコード型名

同じ

×

異なる

○

SQLCODE＜0またはSQLCODE＝100

−

○

結果なし（前回の検索要求または格納要求が未実施）

−

○

指定なし

SQLCODE≧0（100を除く）

−

×

SQLCODE＜0またはSQLCODE＝100

−

○

結果なし（前回の検索要求または格納要求が未実施）

−

○

（凡例）

○：検索範囲が決定されます。

×：検索範囲が決定されません。

−：該当しません。

F：FIRSTポインタから検索します。

N：NEXTポインタから検索します。

L：LASTポインタから検索します。

P：PRIORポインタから検索します。

注※

ユーザは仮想ルートレコードを意識しないで，子レコードに対してアクセス要求します。

表K‒4　4V FMBまたはSD FMBのSDBデータベース格納時の検索範囲決定

レコード格納時の指定

検索範囲の決定

レコード種別

レコード型名（指定必須）

ルートレコード

指定あり

○

子レコード

指定あり

×

（凡例）

○：検索範囲が決定されます。

×：検索範囲が決定されません。

表K‒5　4V AFMのSDBデータベース格納時の検索範囲決定

レコード格納時の指定

検索範囲の決定

レコード種別

レコード型名

子レコード（ユーザは仮想ルートレコードを意識しないで，子レコードに対してアクセス要求）

指定あり，またはなし

○

（凡例）

○：検索範囲が決定されます。

付録K.3　入力情報とキーの定義の関係【4V FMB，4V AFM】

4V FMBまたは4V AFMのSDBデータベースの場合の，入力情報とキーの定義の関係について，次に示します。

表K‒6　入力情報とキーの定義の関係（1/2）

要求

SDBデータベース種別と定義

機能

レコード型名

DBKEY

RDエリアの指定

4V FMB

4V AFM

DBKEYはK，Nの構成要素

DBKEYはK，Lの構成要素

DBKEYはK，Aの構成要素

DBKEYはK，L＋K，Nの構成要素

DBKEYはK，A＋K，Nの構成要素

子レコード型数は1

キーの定義例

(a)

(b)

(c)

(d)

(e)

レコードの検索

指定あり

指定あり

指定あり

○

○

○

○

○

○

指定なし

○

○

○

○

○

○

指定なし

指定あり

○

○

○※11

○※11

○※11

○※11

指定なし

○

○

○※1

○※1

○※1

○※1

指定なし

指定あり

指定あり

−

○※2

○※2

○※2

○※2

○※2

指定なし

−

○※2

○※2

○※2

○※2

○※2

指定なし

指定あり

−

○

○※11

○※11

○※11

○※11

指定なし

−

○※2

○※3

○※3

○※3

○※3

レコードの格納

指定あり

指定あり

○

○

○

○

○

○

指定なし

○

○

○※4

×

SQLCODE=-66214

○※4

×

SQLCODE=-66214

指定なし

指定あり

−

○※2

○※2

○※2

○※2

○※2

指定なし

−

○※2

○※5

×SQLCODE=-66214

○※5

×SQLCODE=-66214

レコードの更新

指定あり

指定あり※8

−

−

−

−

−

−

指定なし

○

○※6

○※6

○※6

○※6

○※6

指定なし

指定あり※8

−

−

−

−

−

−

指定なし

−

○※7

○※7

○※7

○※7

○※7

レコードの削除

指定あり

指定あり※8

−

−

−

−

−

−

指定なし

○

○

○

○

○

○

レコードの一括削除

指定あり

指定あり

−

−

−

−

−

−

指定なし

−

−

−

−

−

−

指定なし

指定あり

−

○※2

○※2

○※2

○※2

○※2

指定なし

−

○※2

×

SQLCODE=-66213

×

SQLCODE=-66213

×

SQLCODE=-66213

×

SQLCODE=-66213

表K‒7　入力情報とキーの定義の関係（2/2）

要求

SDBデータベース種別と定義

機能

レコード型名

DBKEY

RDエリアの指定

4V DAMまたは4V MAM

4V DAM

そのほか

DBKEYはK，RまたはK，Mの構成要素

DBKEYはK，R＋K，NまたはK，M＋K，Nの構成要素

DBKEYはK，RまたはK，Mの構成要素

DBKEYはK，R＋K，NまたはK，M＋K，Nの構成要素

キー値とレコードの対応は1対1

キー値とレコードの対応はn（2以上）対1

子レコード型数はn

キーの定義例

(f)

(g)

(h)

(i)

(j)

レコードの検索

指定あり

指定あり

指定あり

○

○

○

○

○

指定なし

○

○

○

○

○

指定なし

指定あり

○

○

○※12

○※12

○※11

指定なし

○※9

○※9

×

SQLCODE=-66213

×

SQLCODE=-66213

×

SQLCODE=-66213

指定なし

指定あり

指定あり

○※5

○※5

○※5

○※5

○※5

指定なし

○※5

○※5

○※5

○※5

○※5

指定なし

指定あり

○※13

○※13

○※12

○※12

○※11

指定なし

×

SQLCODE=-66217

×

SQLCODE=-66217

×

SQLCODE=-66217

×

SQLCODE=-66217

×

SQLCODE=-66217

レコードの格納

指定あり

指定あり

○

○

○

○

○

指定なし

○※9

○※9

×

SQLCODE=-66214

×

SQLCODE=-66214

×

SQLCODE=-66214

指定なし

指定あり

○※10

○※10

○※10

○※10

○※10

指定なし

×

SQLCODE=-66214

×

SQLCODE=-66214

×

SQLCODE=-66214

×

SQLCODE=-66214

×

SQLCODE=-66214

レコードの更新

指定あり

指定あり

−

−

−

−

−

指定なし

○※6

○※6

○※6

○※6

○※6

指定なし

指定あり

−

−

−

−

−

指定なし

○※7

○※7

○※7

○※7

○※7

レコードの削除

指定あり

指定あり※8

−

−

−

−

−

指定なし

○

○

○

○

○

レコードの一括削除

指定あり

指定あり

−

−

−

−

−

指定なし

−

−

−

−

−

指定なし

指定あり

○※10

○※10

○※10

○※10

○※10

指定なし

×

SQLCODE=-66213

×

SQLCODE=-66213

×

SQLCODE=-66213

×

SQLCODE=-66213

×

SQLCODE=-66213

（凡例）

○：要求できます。

×：要求できません。

−：APIでエラーとなります。

空白：該当しません。

(a)〜(j)のキーの定義例については，「付録K.3(1)　キーの定義例」の(a)〜(j)を参照してください。

DBKEYについては，4V FMBのSDBデータベースの場合は「11.5.1(5)(d)　レベル番号，ITEM」を参照してください。4V AFMのSDBデータベースの場合は「11.6.1(5)(d)　レベル番号，ITEM」を参照してください。

注※1

KEYDEF句の定義からキー（K，LまたはK，A）を取得します。

キーが定義されていない場合は，SQLCODE=-66220となります。キーが複数定義されている場合は，SQLCODE=-66213となります。

注※2

SDBデータベース定義からレコード型名を取得します。

注※3

SDBデータベース定義からレコード型名を取得します。キー（K，LまたはK，A）はKEYDEF句の定義から取得します。

キーが定義されていない場合は，SQLCODE=-66220となります。キーが複数定義されている場合は，SQLCODE=-66213となります。

注※4

KEYDEF句の定義からキー（K，L）を取得します。

キーが定義されていない場合は，SQLCODE=-66220となります。キーが複数定義されている場合は，SQLCODE=-66214となります。

注※5

定義からレコード型名を取得します。キー（K，L）はKEYDEF句の定義から取得します。

キーが定義されていない場合は，SQLCODE=-66220となります。キーが複数定義されている場合は，SQLCODE=-66214となります。

注※6

レコード型名が指定ありで，検索または格納で更新対象のレコードに位置づけしていることが前提となります。レコード型名が指定ありで，位置づけしていない場合は，SQLCODE=-66207となります。

注※7

レコード型名が指定なしで，検索または格納で更新対象のレコードに位置づけしていることが前提となります。レコード型名が指定なしで位置づけしていない場合は，SQLCODE=-66207となります。

注※8

条件式が指定されていても，その指定は無効となります。

注※9

レコード分割キーは，指定のレコード型名とKEYDEF句の定義から取得します。

注※10

指定のDBKEY（レコード分割キー）からレコード型名を取得します。

注※11

4V固有エリア（要求部）の一連番号指定，またはキー以外の条件でユーザキーを指定する場合，KEYDEF句の定義でシーケンシャルインデクスキーのキー値が複数定義されているときは，SQLCODE=-66213となります。

注※12

4V固有エリア（要求部）の一連番号指定，またはキー以外の条件でユーザキーを指定する場合は，SQLCODE=-66213となります。

注※13

4V固有エリア（要求部）の一連番号指定，またはキー以外の条件でユーザキーを指定する場合は，SQLCODE=-66217となります。

(1)　キーの定義例

TYPE K，RまたはTYPE K，Mを指定した場合，子レコード型は2つ以上指定が必要ですが，ここでは記載を省略しています。

(a)　DBKEYが一連番号だけの場合

   RECORD R1
     02 DBKEY_L1   CHARACTER  4  TYPE D,L
   RECORD A1
     02 DBKEY_L1   CHARACTER  4  TYPE D,L
     02 DBKEY
       03 DBKEY_LN INTEGER       TYPE K,N

(b)　DBKEYがそのほかのキー（TYPE K，L）だけの場合

   RECORD R1
     02 DBKEY_L1   CHARACTER  4  TYPE D,L
     02 DBKEY_L2   CHARACTER  4  TYPE K,L
   RECORD A1
     02 DBKEY_L1   CHARACTER  4  TYPE D,L
     02 DBKEY
       03 DBKEY_L2 CHARACTER  4  TYPE K,L
     02 DBKEY_NN   INTEGER       TYPE N,N

(c)　DBKEYがRDエリア分割キー（TYPE K，A）だけの場合

   RECORD R1
     02 DBKEY_L1   CHARACTER  4  TYPE D,L
     02 DBKEY_L2   CHARACTER  4  TYPE K,A
   RECORD A1
     02 DBKEY_L1   CHARACTER  4  TYPE D,L
     02 DBKEY
       03 DBKEY_L2 CHARACTER  4  TYPE K,A
     02 DBKEY_NN   INTEGER       TYPE N,N

(d)　DBKEYがそのほかのキー（TYPE K，L）と一連番号だけの場合

   RECORD R1
     02 DBKEY_L1   CHARACTER  4  TYPE D,L
     02 DBKEY_L2   CHARACTER  4  TYPE K,L
   RECORD A1
     02 DBKEY_L1   CHARACTER  4  TYPE D,L
     02 DBKEY
       03 DBKEY_L2 CHARACTER  4  TYPE K,L
       03 DBKEY_KN INTEGER       TYPE K,N

(e)　DBKEYがRDエリア分割キー（TYPE K，A）と一連番号だけの場合

   RECORD R1
     02 DBKEY_L1   CHARACTER  4  TYPE D,L
     02 DBKEY_L2   CHARACTER  4  TYPE K,A
   RECORD A1
     02 DBKEY_L1   CHARACTER  4  TYPE D,L
     02 DBKEY
       03 DBKEY_L2 CHARACTER  4  TYPE K,A
       03 DBKEY_KN INTEGER       TYPE K,N

(f)　DBKEYがレコード分割キー（TYPE K，R）またはレコード分割キー＋RDエリア分割キー（TYPE K，M）だけの場合

   RECORD R1
     02 DBKEY_L1   CHARACTER  4  TYPE D,L
     02 DBKEY_L2   CHARACTER  4  TYPE K,R　(またはTYPE K,M)
   RECORD A1
     02 DBKEY_L1   CHARACTER  4  TYPE D,L
     02 DBKEY
       03 DBKEY_L2 CHARACTER  4  TYPE K,R　(またはTYPE K,M)
     02 DBKEY_NN   INTEGER       TYPE N,N

(g)　DBKEYがレコード分割キー（TYPE K，R）と一連番号だけの場合（またはレコード分割キー＋RDエリア分割キー（TYPE K，M）と一連番号だけの場合）

   RECORD R1
     02 DBKEY_L1   CHARACTER  4  TYPE D,L
     02 DBKEY_L2   CHARACTER  4  TYPE K,R　(またはTYPE K,M)
   RECORD A1
     02 DBKEY_L1   CHARACTER  4  TYPE D,L
     02 DBKEY
       03 DBKEY_L2 CHARACTER  4  TYPE K,R　(またはTYPE K,M)
       03 DBKEY_KN INTEGER       TYPE K,N

(h)　DBKEYがレコード分割キー（TYPE K，R）またはレコード分割キー＋RDエリア分割キー（TYPE K，M）だけの場合

   RECORD R1
     02 DBKEY_L1   CHARACTER  4  TYPE D,L
     02 DBKEY_L2   CHARACTER  4  TYPE K,R　(またはTYPE K,M)
   RECORD A1
     02 DBKEY_L1   CHARACTER  4  TYPE D,L
     02 DBKEY
       03 DBKEY_L2 CHARACTER  4  TYPE K,R　(またはTYPE K,M)
     02 DBKEY_NN   INTEGER       TYPE N,N

(i)　DBKEYがレコード分割キー（TYPE K，R）と一連番号だけの場合（またはレコード分割キー＋RDエリア分割キー（TYPE K，M）と一連番号だけの場合）

   RECORD R1
     02 DBKEY_L1   CHARACTER  4  TYPE D,L
     02 DBKEY_L2   CHARACTER  4  TYPE K,R　(またはTYPE K,M)
   RECORD A1
     02 DBKEY_L1   CHARACTER  4  TYPE D,L
     02 DBKEY
       03 DBKEY_L2 CHARACTER  4  TYPE K,R　(またはTYPE K,M)
       03 DBKEY_KN INTEGER       TYPE K,N

(j)　DBKEYがレベル2〜7のキーと一連番号の場合

   RECORD R1
     02 DBKEY_L1   CHARACTER  4  TYPE D,L
     02 DBKEY_L2   CHARACTER  4  TYPE K,L
     02 DBKEY_L3   CHARACTER  4  TYPE K,L
     02 DBKEY_L4   CHARACTER  4  TYPE K,L
     02 DBKEY_L5   CHARACTER  4  TYPE K,L
     02 DBKEY_L6   CHARACTER  4  TYPE K,L
     02 DBKEY_L7   CHARACTER  4  TYPE K,R
   RECORD A1
     02 DBKEY_L1   CHARACTER  4  TYPE D,L
     02 DBKEY
       03 DBKEY_L2 CHARACTER  4  TYPE K,L
       03 DBKEY_L3 CHARACTER  4  TYPE K,L
       03 DBKEY_L4 CHARACTER  4  TYPE K,L
       03 DBKEY_L5 CHARACTER  4  TYPE K,L
       03 DBKEY_L6 CHARACTER  4  TYPE K,L
       03 DBKEY_L7 CHARACTER  4  TYPE K,R
       03 DBKEY_KN INTEGER       TYPE K,N

付録L　SDBデータベースを操作するAPIまたはDMLと，データページの排他解除の有無の関係

排他自動解除機能を使用すると，SDBデータベースを操作した結果，レコード位置指示子が指さなくなったレコード実現値が格納されているデータページ（ページまたはサブページ）に対する排他を，APIまたはDMLによるSDBデータベースの操作完了時に解除します。

SDBデータベースを操作するAPIまたはDMLと，データページの排他解除の有無（排他自動解除機能の対象となるデータページ）の関係を次の表に示します。

表L‒1　SDBデータベースを操作するAPIまたはDMLと，データページの排他解除の有無の関係

実行するSDBデータベースを操作するAPIまたはDML

対象となるレコード位置指示子

対象となるレコード位置指示子に対する操作

生成

消滅※1

更新

空

X

空 → 空

空 → X

X → 空

X → X

個別開始

操作対象となるSDBデータベースに対応するすべての位置指示子

△

−

−

−

−

−

−

個別終了

−

△

○

−

−

−

−

4V FMBまたはSD FMB

レコードの検索（FETCH）

操作対象となるレコードビュー※6に対応する位置指示子

−

−

−

△

△

○

○

操作対象となるレコードビューの定義上，下位に位置するレコードビューに対応する位置指示子

−

−

−

△

−

○

−

位置指示子の位置づけ（FIND）

操作対象となるレコードビュー※6に対応する位置指示子

−

−

−

△

△

○

○

操作対象となるレコードビューの定義上，下位に位置するレコードビューに対応する位置指示子

−

−

−

△

−

○

−

複数レコードの検索（FETCHDB ALL）

なし

−

−

−

−

−

−

−

レコードの格納（STORE）

操作対象となるレコードビューに対応する位置指示子

−

−

−

−

△

−

○

操作対象となるレコードビューの定義上，下位に位置するレコードビューに対応する位置指示子

−

−

−

△

−

○

−

レコードの削除（ERASE）

操作対象となるレコードビューに対応する位置指示子

−

−

−

−

−

△

−

操作対象となるレコードビューの定義上，下位に位置するレコードビューに対応する位置指示子

−

−

−

△

−

△

−

レコードの更新（MODIFY）

なし

−

−

−

−

−

−

−

4V AFM

レコードの検索（FETCH）

仮想ルートレコードに対応する位置指示子

操作対象となるレコード実現値の仮想ルートレコード実現値に位置づいていない場合

−

−

−

△

△

○

○

上記以外

−

−

−

−

−

−

−

操作対象となるレコードビューに対応する位置指示子

−

−

−

△

△

○

○

操作対象となるSDBデータベースに対応する，上記以外の位置指示子※3

操作対象となるレコード実現値の仮想ルートレコード実現値に位置づいていない場合

−

−

−

△

−

○

−

上記以外

−

−

−

−

−

−

−

レコードの格納（STORE）※2

仮想ルートレコードに対応する位置指示子

操作対象となるレコード実現値の仮想ルートレコード実現値に位置づいていない場合

−

−

−

−

△

−

○

上記以外

−

−

−

−

−

−

−

操作対象となるレコードビューに対応する位置指示子

−

−

−

−

△

−

○

操作対象となるSDBデータベースに対応する，上記以外の位置指示子※3

操作対象となるレコード実現値の仮想ルートレコード実現値に位置づいていない場合

−

−

−

△

−

○

−

上記以外

−

−

−

−

−

−

−

レコードの削除（ERASE）

仮想ルートレコードに対応する位置指示子

−

−

−

−

−

−

−

操作対象となるレコードビューに対応する位置指示子

−

−

−

−

−

△

−

操作対象となるSDBデータベースに対応する上記以外の位置指示子※3

−

−

−

−

−

−

−

レコードの更新（MODIFY）

なし

−

−

−

−

−

−

−

レコードの一括削除

仮想ルートレコードに対応する位置指示子

−

−

−

△

△

○

○

操作対象となるSDBデータベースに対応する上記以外の位置指示子※3

−

−

−

△

−

○

−

構成情報取得

仮想ルートレコードに対応する位置指示子

−

−

−

△

△

○

○

操作対象となるSDBデータベースに対応する上記以外の位置指示子※4

−

−

−

−

△

−

−

（凡例）

○：該当する操作があります（排他は解除されます※5）。

△：該当する操作があります（排他は解除されません）。

−：該当する操作はありません。

X：対象となるレコード位置指示子が，対応する任意のレコード実現値を指している状態

空：対象となるレコード位置指示子がどのレコード実現値も指していない状態（空値）

A→B：A（APIまたはDML実行前）→B（APIまたはDML実行後）

注※1

空値のレコード位置指示子を消滅させる場合と，レコード実現値を指している位置指示子を消滅させる場合では，排他自動解除機能の動作は変わります。

注※2

4V AFMのSDBデータベースのレコードの格納（STORE）には，次の3種類があります。

仮想ルートレコードのレコード実現値の追加を伴うもの

子レコード実現値だけを追加するもの

内部的にレコードの更新（MODIFY）を行うもの

これらを実行した場合の位置指示子の動きと排他自動解除機能の動作に差はありません。

注※3

「操作対象となるSDBデータベースに対応する上記以外の位置指示子」とは，次の例でのレコード位置指示子RBのことを指します。

4V AFMのSDBデータベースで仮想ルートレコード型Aとその配下に子レコード型BとCが定義されたSDBデータベースで，仮想ルートレコード実現値A1，レコード実現値B1を検索（FETCH）します。レコード位置指示子RAは，仮想ルートレコード実現値A1，レコード位置指示子RBは子レコード実現値B1に位置づけられます。

レコード実現値C1を検索（FETCH）します。レコード位置指示子RAは，仮想ルートレコードのレコード実現値A2に位置づけられ，レコード位置指示子RBは空値になります。

この場合，各レコード位置指示子の説明は，次のとおりです。

RA：仮想ルートレコードに対応する位置指示子

RC：操作対象となるレコードビューに対応する位置指示子

RB：（操作対象となるSDBデータベースに対応する）上記以外の位置指示子

注※4

構成情報取得はSDBデータベースの操作前だけ実行できるため，仮想ルートレコードに対応する位置指示子以外のレコード位置指示子が位置づいていることはありません（空値から空値への更新は発生します）。

注※5

「2.9.5(9)　排他自動解除機能の使用時に排他が解除されないケース」で説明する，解除対象外になるデータページについては，解除されません。

注※6

HiRDB/SD定義ユティリティ（pdsdbdef）がSDBデータベース定義の情報を基に作成したSDBデータベースビュー定義で定義されたレコード型を指します。

付録M　複数レコードの検索時の，データ格納エリアに対するレコードの格納形式【4V FMB】

複数レコードの検索時の，データ格納エリアに対するレコードの格納形式を次の図に示します。

図M‒1　複数レコードの検索時の，データ格納エリアに対するレコードの格納形式

複数レコードの検索時にデータ格納エリアに設定される値を次の表に示します。

表M‒1　複数レコードの検索時にデータ格納エリアに設定される値

項番

説明

長さ

内容

1

レコード数

4

データ格納エリアに格納したレコード数

2

予備

28

予備（0x00が設定されます）

3

レコード全体長

4

項番3〜項番14の全体の長さ

4

レコード型名の長さ

2

レコード名称の長さ

5

レコード型名

30

レコード名称を左詰めで格納（余りは空白となります）

6

予備

16

予備（0x00が設定されます）

7

レコード実現値長

4

項番14のレコード実現値の長さ

8

ユーザデータのオフセット

4

ユーザデータの開始位置（項番14のレコード実現値の先頭からのバイト数）

9

ファイル通番の長さ

4

データ種別がTYPE U，Fのユーザデータがある場合に長さを設定します。TYPE U，Fのユーザデータがない場合は0となります。

10

予備

3

予備（0x00が設定されます）

11

フラグ

1

'U'：親レコードのUSERポインタで示されるレコードの場合に設定されます。

'△'：上記以外の場合に設定されます（ルートレコードの場合も含まれます）。

12

ユーザデータの長さ

4

項番14のレコード実現値のうち，ユーザデータ部分の長さ

13

一連番号

4

一連番号の値

ルートレコードの場合は0となります

データ種別がTYPE N，Nの構成要素がある子レコードの場合は1となります。

データ種別がTYPE K，Nの構成要素がある子レコードの場合は1以上の値となります。

14

レコード実現値

レコード実現値の長さ

レコード実現値（データベースキー，ユーザデータ）

付録N　障害調査のために必要な情報

問題解決支援またはQ&Aのサポートサービスを御利用になる場合，次の表に示す情報が必要になることがあります。性能の問題，無応答，異常終了の3つの場合に分けて要否を示します。そのほかに必要となる情報については，マニュアル「HiRDB Version 9　システム運用ガイド」の「障害調査のために必要な情報」を参照してください。

表N‒1　障害調査のために必要な情報

区分

取得する情報

取得方法

性能

無応答

異常終了

HiRDB/SD

SDB定義文

HiRDB/SD定義ユティリティ（pdsdbdef）実行時に使用したSDB定義文ファイルを取得してください。

○

−

○

（凡例）

○：必要

−：情報を取得する必要はありません。

付録O　予約語の一覧

システムに登録されている予約語を示します。

付録O.1　DMLの予約語

DML中に記述するキーワードは，予約語としてシステムに登録されています。システムに登録されている予約語を次の表に示します。

注意事項

次の表に示す予約語を名前としてDML中に記述する場合は，その予約語を引用符（"）で囲んでください。予約語を引用符（"）で囲むと，一般の文字列と同じようにDML中で名前として使用できます。

表O‒1　DMLの予約語の一覧

頭文字

予約語

A

ACSMODE，ACSRDAREA，ADVANCING，ALL，ALLOCATE，ALSO，ALTER，AND，AREA，ASSIGN，AUTODEQ

B

BUFFER_SIZE，BY

C

CALL，CHANGE，CHILD ，CLEAR，COMMENT，COMMIT，CONNECT，CONTAINS，CONTENT，CREATE，CURRENCY，CURRENT

D

DATA，DBKEY，DEALLOCATE，DEFAULT ，DELETE，DIRECTION，DISCONNECT，DROP，DYNAMIC

E

EMPTY，ENQOPT，EQUAL，ERASE，EXCLUSIVE

F

FETCH，FETCHDB_ALL，FIND，FINISH，FIRST，FOR，FOUND，FROM

G

GET，GRANT，GREATER

I

INDEXED，INSERT，INTO，IS

K

KEY

L

LAST，LESS，LOCK

M

MEMBER，MODIFY

N

NEXT，NO，NONE，NOSET，NOT，NOUSE，NULL，NULLIFY

O

OCCUPY，OCCURRENCE，OF，ONLY，OR，OWNER

P

PAGENUM，PAGESWITCH，PARENT ，PCTFREEVAL，PRIOR，PURGE

R

RDAREAVAL，READ，RECNAME，RECORD，RELATIVE，RETAINING，REVOKE，ROLLBACK，ROOT

S

SDBDEFINF，SDBNAME，SECIDXSUP，SEGMENT，SELECT，SET，SHARE，SKIP，SQLCA，SQLIOA，START，STORE，SUMMARY，SYSTEM

T

T4VIF_DATA，T4VIF_KEY，T4VIF_KEYCOND，T4VIF_TABLE，TARGET，TERMOPT，THAN，TO

U

UNTIL，UPDATE，USERKEY，USERPTROPT，USING

W

WHERE，WITH，WITHIN

Y

YES

その他

#DESCRIBE，#DISPLAY，#EXIT，#HELP，#USAGE

付録O.2　pdsdbcblコマンドの予約語

pdsdbcblコマンドが使用する予約語は，UAPソースファイル中で名前として使用できません。予約語を引用符（"）で囲むと，次の名前については，一般の文字列と同じように名前として使用できます。

SDBデータベース節で指定するSDBデータベース名

埋込み変数名を除いたDML中の名前

pdsdbcblコマンドの予約語の一覧を次の表に示します。

表O‒2　pdsdbcblコマンドの予約語の一覧

頭文字

予約語

D

DATA，DIVISION，DML

E

END，END-DML，ERASE，EXEC

F

FETCH，FIND

I

ID，IDENTIFICATION

L

LENGTH，LINKAGE

M

MODIFY

N

NAME

P

PROCEDURE，PROGRAM，PROGRAM-ID

R

RECORD

S

SDB，SDB-DATABASE，SECTION，STORE

W

WORKING-STORAGE

付録P　4V FMBまたは4V AFMのSDBデータベースとSD FMBのSDBデータベースの機能差一覧

4V FMBまたは4V AFMのSDBデータベースと，SD FMBのSDBデータベースの機能差一覧を次の表に示します。

表P‒1　4V FMBまたは4V AFMのSDBデータベースと，SD FMBのSDBデータベースの機能差一覧

項番

分類

項目

説明

4V

SD

1

環境定義

文字コード

UTF-8の使用

○

×

2

構造型DB

階層構造を持たないAFMのデータベース（TMS-4V/SPがサポートしているDAM，MAM，TAM，またはSAMのデータベースに相当）

○

×

3

インデクス

二次インデクスの定義

○

×

4

SDB用UAP環境定義

SDB用UAP環境定義の適用

×

○

SD排他モード，アクセス目的指定

×

○

排他自動解除指定

×

○

5

ルートレコードのデータベースキーの集団項目名

シーケンシャルインデクスの構成要素から成る集団項目の名称：任意

4V FMBまたは4V AFMの場合は「DBKEY」固定です。

×

○

6

運用コマンド・ユティリティ

HiRDB/SD データベースアクセスユティリティ（pdsdbexe）

DMLコマンドの実行

○

×

7

HiRDB/SD データベース作成ユティリティ（pdsdblod）

オンライン再編成中の実行

○

×

フォーマットライト（4V DAMの機能）

○

×

dbinf文（4V FMBの機能）

○

×

8

HiRDB/SD データベース再編成ユティリティ（pdsdbrog）

オンライン再編成中の実行

○

×

unload文のunldkind=lod_4v指定

○

×

dbinf文の指定

○

×

9

オンライン再編成関連コマンド

pdorbegin，pdorchg，pdorcreate，pdorgls，pdrdrefls，pdsdborcrt，pdorcheck，pdorendコマンドの実行

○

×

10

HiRDB/SD 定義ユティリティ（pdsdbdef）

DBTYPE 4V指定

○

×

DBTYPE SD指定

×

○

データ型のSMALLINT指定

×

○

TYPE U,K指定

○

×

TYPE N,N指定

○

×

OCCURS句の指定

×

○

FUNCTION句の指定

○

×

ORDER SORTED DUPLICATES PROHIBITED指定

○

×

KEY句の指定

○

×

OCCURRENCE NUMBER 0指定

○

×

REUSE NO指定

○

×

SDBOPTION FUNCTION句の指定

○

×

POINTER AREA SIZE句の指定

○

×

SECONDARY INDEX句の指定

○

×

OWNER POINTER FOR FIRST LAST USER指定

○

×

KEYDEF句の指定

○

×

*ALTER DICTIONARY文の実行

○

×

11

DMLプリプロセサ（pdsdbcbl）

埋込み型UAP

×

○

12

インナレプリカ機能

pddbchgコマンドの実行

○

×

13

リアルタイムSANレプリケーションの構成確認（pdrisechk）

全非同期方式

○

×

14

UAPの開発および実行

DML

ERASE

×

○

FETCH [FOR UPDATE句]

×

○

FIND [FOR UPDATE句]

×

○

MODIFY

×

○

STORE

×

○

15

SQLトレース機能

FIND

×

○

16

PRFトレース機能

FIND

×

○

FOR UPDATEの指定の有無

×

○

17

監査証跡機能

FIND

×

○

CLEAR

○

×

FETCHDB ALL

○

×

18

UAP 統計レポート機能

FIND

×

○

19

運用

SDBデータベースの操作機能

一括削除

○

×

複数レコードの検索

○

×

構成情報取得（容量情報）

○

×

SDBデータベースの操作機能（検索範囲）

次の条件が重なるレコード

キーの条件

キーの条件の開始位置のRDエリア

○

×

次の条件が重なるレコード

キーの条件

キーの条件の開始位置のRDエリアまたはユーザが指定したRDエリア

○

×

次の条件が重なるレコード

キーの条件

キーの条件の開始位置のレコード実現値またはユーザが指定したRDエリア

○

×

20

個別開始

個別開始要求なしでDMLの要求ができるオプション

個別開始/終了一括要求オプション

○

×

個別開始実行要求オプション

○

×

個別開始要求をしないオプション

×

○

個別開始実行後の要求でのハンドル番号指定

個別開始要求をしないオプション指定ありの場合：ハンドル番号指定不要

×

○

21

レコードの検索，格納時のキーの条件とキー以外の条件の扱い

レコード検索時のキーの条件

子レコード

○

×

レコード検索時のキー以外の条件

ルートレコード

○

×

子レコード

○

×

22

排他制御

レコード格納用RDエリア

アクセスモードの指定に従って決定されます。

'R'（参照モード）の場合：SR

'U'（更新モード）の場合：SU

○

×

UAP環境定義の指定

次のSD排他モードとアクセス目的の組み合わせに従って決定されます。ただし，ユティリティ実行時の排他制御は4V FMBまたは4V AFMと同じです。

sharedとretrieveの場合：SR

sharedとupdateの場合：SU

protectedとretrieveの場合：PR※1

protectedとupdateの場合：PU

exclusiveとretrieveの場合：EX※1

exclusiveとupdateの場合：EX※1

×

○

ルートレコード型

アクセスモードの指定に従って決定されます。ただし，ユティリティ実行時の排他制御は4V FMBまたは4V AFMと同じです。

'R'（参照モード）の場合：SR

'U'（更新モード）の場合：SU

ただし，ログレスモードのときはEX（このとき，下位資源の排他は確保しない）となります。

○

×

UAP環境定義の指定に従って決定されます。

retrieve（アクセス目的）の場合：SR

update（アクセス目的）の場合：SU

ログレスモードのときはEX（このとき，下位資源の排他は確保しない）となります。

×

○

ページまたはサブページ

排他オプションの指定に従い決定

○

×

DML種別，FOR UPDATEオペランド指定の有無，レコード種別，およびアクセス目的に従って決定されます。

更新DMLの場合：4V FMBまたは4V AFMと同じ

検索DMLでFOR UPDATEオペランドの指定なしの場合：SR※2

検索DMLでFOR UPDATEオペランドの指定ありの場合：PU※2

×

○

23

ページの割り当て

事前ページ割り当て

○

×

ページ切り替えオプション

○

×

PCTFREE有効化オプション

○

×

24

インナレプリカ機能を使用したオンライン再編成

○

×

25

リアルタイムSAN レプリケーション（ディザスタリカバリシステム）

全非同期方式

○

×

（凡例）

4V：4V FMBまたは4V AFMのSDBデータベース

SD：SD FMBのSDBデータベース

○：使用できる機能

×：使用できない機能

注※1

ページまたはサブページの排他は確保されません。

注※2

アクセス目的がupdateで，ルートレコードの場合はEXになります。

付録Q　用語解説

ここに記載されている以外の用語については，マニュアル「HiRDB Version 9 解説」の「用語解説」を参照してください。

（英字）

AFMのデータベース

階層構造を持たないデータベースです。

1つのレコード型は，1つまたは複数の構成要素から構成されます。UAPとのデータの受け渡しは，レコード単位または構成要素単位となります。

AFMのデータベースは，メインフレームのTMS-4V/SPがサポートするDAM，MAM，TAM，およびSAMのデータベースに相当します。

FMBのデータベース

階層構造を持つデータベースです。

1つのレコード型は，複数の構成要素から構成されます。UAPとのデータの受け渡しは，レコード単位となります。

FMBのデータベースは，次のデータベースに相当します。

メインフレームのTMS-4V/SPがサポートしているFMBのデータベース

メインフレームのXDM/SDがサポートしている階層型モデルのデータベース

SDB定義文

pdsdbdefコマンドで操作するSDBデータベースの定義情報が指定されている制御文のことです。

SDBディレクトリ情報ファイル

SQL_SDB_DIR表に格納されている，SDBデータベースへのアクセスに必要な情報を出力したファイルです。

SDBデータベース

レコード，インデクス，親子集合など構造型DBを構成するデータ群の総称です。

SDBデータベース格納定義

構造型DBの格納構造の定義です。インデクスの構成要素や親子関係を実現するためのポインタなどを定義します。

SDBデータベース種別

SDBデータベースの種類のことです。SDBデータベース種別を次の表に示します。

表Q‒1　SDBデータベース種別

SDBデータベース種別

説明

4V FMB

階層構造を持つデータベースで，メインフレームのTMS-4V/SPがサポートしているFMBのデータベースに相当します。

4V AFM

階層構造を持たないデータベースで，メインフレームのTMS-4V/SPがサポートしているDAM，MAM，TAM，またはSAMのデータベースに相当します。

4V AFMのSDBデータベースは，さらに次のSDBデータベース種別に分けられます（4V AFMは次のSDBデータベース種別の総称です）。

4V DAM

4V MAM

4V TAM

4V SAM

SD FMB

階層構造を持つデータベースで，メインフレームのXDM/SDがサポートしているデータベースに相当します。

SDBデータベース定義

構造型DBの論理構造の定義です。データ操作の対象となるレコードの構成やレコード間の親子関係などを定義します。

SDBデータベースの横分割

SDBデータベースを複数のRDエリアに分割して格納することをSDBデータベースの横分割といいます。SDBデータベースの横分割は，SDBデータベース格納定義で定義します。

SDBデータベースビュー

SDBデータベース定義から，UAPが使用する部分（レコード型など）を抜き出したものです。SDBデータベースビュー定義はHiRDB/SDがSDBデータベース定義を基に内部的に作成します。

SDBデータベースを操作するためのインタフェース

4V FMBまたは4V AFMのSDBデータベースの場合

4V FMBまたは4V AFMのSDBデータベースを操作するためのインタフェースは，TP1/FSPが提供するライブラリ関数として提供されます。構造型DBを操作するためのインタフェースには，次のものがあります。

・個別開始

・個別終了

・レコードの検索（FETCH）

・レコードの格納（STORE）

・レコードの更新（MODIFY）

・レコードの削除（ERASE）

・レコードの一括削除

・複数レコードの検索（FETCHDB ALL）

・構成情報取得

詳細については，次のマニュアルを参照してください。

・「TP1/Financial Service Platform 使用の手引」

・「TP1/Financial Service Platform プログラム作成の手引」

・「TP1/Server Base Enterprise Option　プログラム作成の手引」

SD FMBのSDBデータベースの場合

SD FMBのSDBデータベースを操作するためのインタフェースは，埋込み型UAPのDMLとして提供されます。構造型DBを操作するためのDMLには，次のものがあります。

・レコードの検索（FETCH）

・位置指示子の位置づけ（FIND）

・レコードの格納（STORE）

・レコードの更新（MODIFY）

・レコードの削除（ERASE）

DMLの詳細については，「17．DMLリファレンス【SD FMB】」を参照してください。

SDB用UAP環境定義ファイル

SDB用UAP環境定義を記述したファイルです。SDB用UAP環境定義には，SD FMBのSDBデータベースにアクセスするUAPの実行環境を定義します。

（ア行）

アクセスパス情報

SDBデータベースを操作するためのAPI（FETCH，STORE，MODIFY，ERASE），またはDML（FETCH，FIND，STORE，MODIFY，ERASE）を実行した結果，UAP統計レポートに出力される情報をアクセスパス情報といいます。アクセスパス情報には，SDBデータベース内で実行したAPIまたはDMLの種類，操作対象のレコード型名やバックエンドサーバ名などが出力されます。

位置指示子

構造型DBでは，操作中のレコードや親子集合の位置を識別するための情報を保持します。この情報のことを位置指示子といいます。

一連番号

基本項目のデータベースキーのうち，HiRDB/SDがレコードの発生順に，自動的に採番して管理する番号を一連番号といいます。

インデクス

レコード実現値中の特定の構成要素の値に従ってデータを処理する場合，該当する構成要素の値と，その値を持つレコード実現値の格納位置を管理します。この管理情報をインデクスといいます。

HiRDB/SDには，次の2種類のインデクスがあります。

シーケンシャルインデクス

二次インデクス

追い付き状態管理表

更新可能なオンライン再編成の追い付き反映処理時に，HiRDB/SDが使用する表です。

追い付き反映キー対応表

オリジナルRDエリアとレプリカRDエリアのデータを対応づける情報が格納されている表です。更新可能なオンライン再編成のデータロード時に，追い付き反映キー対応表にデータが登録されます。登録された情報は追い付き反映処理時に使用されます。

親子集合

構造型DBでは，各レコードは互いに関連を持ちます。レコード間の論理的な関連を親子の関係で表現されます。これを親子集合といいます。

親子集合位置指示子

最後に操作した親レコード，および子レコードの位置を示す位置指示子を親子集合位置指示子といいます。親子集合位置指示子は，親子集合型ごとに生成されます。

親子集合型

親レコード型と子レコード型をモデル化したものを親子集合型といいます。親子集合型はSDBデータベース定義で定義します。

親レコード

親子集合で，親に当たるレコードを親レコードといいます。親レコードのレコード型を親レコード型といいます。

オリジナルRDエリア

レプリカRDエリアを作成するときに，基となるRDエリアをオリジナルRDエリアといいます。

（カ行）

回復追い付き反映処理

更新可能なオンライン再編成の追い付き反映処理時に，レプリカRDエリア側のロールバックで回復した内容をオリジナルRDエリア側に反映する処理を回復追い付き反映処理といいます。

仮想親子集合

親子集合を構成しない（階層構造を持たない）データベースを構築する場合，HiRDB/SDでは仮想のルートレコード（仮想ルートレコード）を親レコードとして設定し，仮想的な親子集合を構成します。これを仮想親子集合といいます。

仮想ルートレコード

仮想親子集合を構成する場合に，親レコードとして設定する仮想のルートレコードのことです。仮想ルートレコードのレコード型を仮想ルートレコード型といいます。

カレントRDエリア

HiRDBクライアント環境定義，UAP環境定義，または運用コマンドで指定がないときには，決まったRDエリア（デフォルトのRDエリア）にアクセスします。このRDエリアをカレントRDエリアといいます。

基準サブページ

基準レコードが格納されているサブページを基準サブページといいます。

基準ページ

基準レコードが格納されているページを基準ページといいます。

基準レコード

HiRDB/SDはレコードを格納する際に，基準とするレコードから，格納するレコードの位置を決定します。この基準とするレコードを基準レコードといいます。

空値

位置指示子がどのレコードも指していないか，または位置指示子に親子集合中のレコードを検索するために必要なデータベースキーが設定されていない状態のことを空値といいます。

更新追い付き反映処理

更新可能なオンライン再編成の追い付き反映処理時に，レプリカRDエリア側での更新内容をオリジナルRDエリア側に反映する処理を更新追い付き反映処理といいます。

構成要素

データベースの中で取り扱える情報の最小単位であるデータ項目を，論理的な単位にまとめたものを構成要素といいます。1つのデータ項目が1つの構成要素となるだけでなく，関連する2つ以上のデータ項目をまとめて1つの構成要素とする場合もあります。

子レコード

親子集合で，子に当たるレコードを子レコードといいます。子レコードのレコード型を子レコード型といいます。

（サ行）

サーバプロセス

APの処理要求を実行するプロセスです。1つのAPに対して，1つのサーバプロセスが起動します。

サブページ

データページ（レコードを格納するページ）を複数の領域に分割した際の，1つの領域をサブページといいます。1データページは，2〜16のサブページに分割できます。

サブページ間の関連づけ

HiRDB/SDでは，同一のルートレコード下のレコードを格納するサブページを関連づけて管理します。これをサブページ間の関連づけといいます。

シーケンシャルインデクス

シーケンシャルインデクスは，次の構成要素に定義するインデクスです。

4V FMBまたはSD FMBのSDBデータベースの場合

ルートレコードの先頭の集団項目に指定した基本項目の構成要素

4V AFMのSDBデータベースの場合

仮想ルートレコードに指定した基本項目の構成要素

シーケンシャルインデクスは，SDBデータベース格納定義のSEQUENTIAL句で定義します。定義された構成要素の値をキーとして，キーの昇順に作成されます。

事前常駐領域

SDBデータベースの定義追加または定義変更後に作成したSDBディレクトリ情報を常駐する共用メモリ上の領域を事前常駐領域といいます。SDBディレクトリ情報を事前常駐領域に常駐したあとに，事前常駐領域と常用常駐領域を切り替えます。HiRDBの再起動を必要としないSDBデータベースの定義追加または定義変更をする際に，事前常駐領域が必要になります。

事前割り当てサブページ

ルートレコードの格納時に指定数分だけ確保する，ファミリ専用のサブページを事前割り当てサブページといいます。事前割り当てサブページをあらかじめ確保しておくことで，SDBデータベースを操作するAPI（STORE，ERASE）を繰り返し実行した場合でも，連続したデータページ内にレコードを配置できます。

事前割り当てページ

ルートレコードの格納時に指定数分だけ確保する，ファミリ専用のデータページを事前割り当てページといいます。事前割り当てページをあらかじめ確保しておくことで，SDBデータベースを操作するAPI（STORE，ERASE）を繰り返し実行した場合でも，連続したデータページ内にレコードを配置できます。

常用常駐領域

SDBディレクトリ情報を常駐する共用メモリ上の領域を常用常駐領域といいます。HiRDB/SDは，常用常駐領域に常駐するSDBディレクトリ情報を使用します。

（タ行）

データ種別

構成要素の用途を区別して，さらに詳細な種別を指定したものをデータ種別といいます。

（ナ行）

二次インデクス

二次インデクスは，子レコードの構成要素に定義するインデクスです。SDBデータベース格納定義のSECONDARY INDEX句で定義します。

二次インデクスを使用すると，特定の子レコードに直接アクセスできるので，NEXTポインタまたはPRIORポインタに従って順アクセスするよりも，検索性能を向上させることができます。

（ハ行）

ファミリ

ルートレコードおよびルートレコード下のレコード群を総称してファミリといいます。

ファミリ内接続サブページ

HiRDB/SDでは，同一のルートレコード下のレコードを格納するサブページを関連づけて管理します。関連づけられたサブページをファミリ内接続サブページといいます。

ファミリ内接続ページ

HiRDB/SDでは，同一のルートレコード下のレコードを格納するページを関連づけて管理します。関連づけられたページをファミリ内接続ページといいます。

フォーマットライト

4V DAMのSDBデータベースで，pdsdbdefコマンドで定義したデータベースに初期値を格納し，インデクスを作成します。初期値はHiRDB/SDが自動的に作成します。この処理をフォーマットライトといいます。

ページ間の関連づけ

HiRDB/SDでは，同一のルートレコード下のレコードを格納するページを関連づけて管理します。これをページ間の関連づけといいます。

ポインタ

親子集合で表現したレコード間の論理的な親子関係を，データベース中で関係づけることができます。これをポインタといいます。

FIRSTポインタ

親レコードが子レコードを持つ場合，先頭の子レコードの位置情報を親レコードが管理するために持っているポインタをFIRSTポインタといいます。

LASTポインタ

親レコードが子レコードを持つ場合，最終の子レコードの位置情報を親レコードが管理するために持っているポインタをLASTポインタといいます。

USERポインタ

親レコードが子レコードを持つ場合，任意の子レコードの位置情報をレコード型ごとに1つだけ持つことができます。これをUSERポインタといいます。

NEXTポインタ

同一レコード型の子レコードが，1つの親レコードに関連づけられたレコードの範囲内で，次のレコード（次の一連番号またはユーザキーを持つレコード）の位置情報を管理するために持っているポインタをNEXTポインタといいます。

PRIORポインタ

同一レコード型の子レコードが，1つの親レコードに関連づけられたレコードの範囲内で，直前のレコード（1つ前の一連番号またはユーザキーを持つレコード）の位置情報を管理するために持っているポインタをPRIORポインタといいます。

（ヤ行）

優先サブページ

SDBデータベースを操作するAPI（STORE）によって，事前ページ割り当て機能を適用しているファミリの子レコードを格納する際，基準サブページが属するページに格納できないときにHiRDB/SDが優先的に格納を試みる事前割り当てサブページを優先サブページといいます。

優先ページ

SDBデータベースを操作するAPI（STORE）によって，事前ページ割り当て機能を適用しているファミリの子レコードを格納する際，基準ページに格納できないときにHiRDB/SDが優先的に格納を試みる事前割り当てページを優先ページといいます。

（ラ行）

ルートレコード

階層構造の最上位のレコードをルートレコードといいます。ルートレコードのレコード型をルートレコード型といいます。

レコード

構造型DBでは，データベース中に存在する情報の基本単位のことをレコードといいます。レコードは情報の論理的な単位であると同時に，データを検索したり，更新したりするときの単位でもあります。

レコード位置指示子

最後に操作したレコードの位置を示す位置指示子をレコード位置指示子といいます。レコード位置指示子は，レコード型ごとに生成されます。

レコード型

構造型DBでは，あるレコードをモデル化したものをレコード型といいます。レコード型はSDBデータベース定義で定義します。

レコード実現値

レコード型に対応してデータベース中で，実際のデータ値を持って存在するものをレコード実現値といいます。なお，このマニュアルでは，特に誤解を与えない場合にはレコード実現値を単にレコードといいます。

レコードビュー

SDBデータベースビュー定義で定義されたレコード型をレコードビューといいます。

レプリカRDエリア

オリジナルRDエリアを基に複製したRDエリアをレプリカRDエリアといいます。

索引

記号

*ALTER DICTIONARY文[1]

*ALTER DIRECTORY文[1]

*CHECK DICTIONARY文[1]

*DELETE DICTIONARY文[1]

*DELETE DIRECTORY文[1]

*ENTRY DICTIONARY文[1]

*ENTRY DIRECTORY文[1]

#EXIT〔pdsdbexeサブコマンド〕[1]

#HELP〔pdsdbexeサブコマンド〕[1]

#USAGE〔pdsdbexeサブコマンド〕[1]

数字

16進データ[1]

A

ACSMODE〔STARTコマンド〕[1]

ACSRDAREA〔STARTコマンド〕[1]

ADD〔SDBデータベース定義〕[1]、[2]

afmtype〔pdsdbrog制御文〕[1]

AFMのデータベース[1]

AFMのデータベース〔用語解説〕[1]

ALLERASE〔SDBデータベース定義〕[1]、[2]

area

pdsdblod制御文[1]

pdsdbrog制御文[1]

ASCENDING〔SDBデータベース定義〕[1]、[2]

AUTODEQ〔STARTコマンド〕[1]

B

BUFFER_SIZE〔FETCHDB_ALLコマンド〕[1]

C

CHARACTER[1]

CHARACTER〔SDBデータベース定義〕[1]、[2]、[3]

checkmode[1]

CLEAR

DMLコマンド[1]

CLUSTERED〔SDBデータベース格納定義〕[1]、[2]、[3]

COMMIT〔SQLコマンド〕[1]

CONNECT〔SQLコマンド〕[1]

CONNECT権限の付与[1]

CREATE SCHEMA[1]

D

data model

pdinit[1]

pdmod[1]

data〔pdsdblod制御文〕[1]

DATA〔SDBデータベース格納定義〕[1]、[2]

DBA権限の付与[1]

dbinf文

pdsdblod制御文[1]

pdsdbrog制御文[1]

DBLODUTL〔SDBデータベース定義〕[1]、[2]

DBSCHM

*ALTER DIRECTORY文[1]

*DELETE DIRECTORY文[1]

*ENTRY DIRECTORY文[1]

DBTYPE

SDBデータベース格納定義[1]、[2]、[3]

SDBデータベース定義[1]、[2]、[3]

DECIMAL型[1]

DEPENDING ON〔SDBデータベース格納定義〕[1]、[2]

DESCENDING〔SDBデータベース定義〕[1]、[2]

DIRECTION〔STOREコマンド〕[1]

dirinf文[1]

DISCONNECT〔SQLコマンド〕[1]

divermsg〔pdsdblod制御文〕[1]

dml_error[1]

dml_skip_info[1]

DMLコマンド[1]

共通の規則[1]

ひな形の出力[1]

DML終了子[1]

DMLスキップ情報出力ファイル[1]

DMLスキップ情報出力ファイルの出力形式[1]

DML先頭子[1]

DMLで使用できる文字[1]

DMLの記述形式[1]

DMLの最大長[1]

DMLのデータ型[1]

DMLの予約語[1]

DMLプリプロセサ[1]

DMLリファレンス[1]

DML履歴用バッファ[1]

DML履歴用バッファのサイズ[1]

dupkeyck〔pdsdblod制御文〕[1]

E

END SCHEMA〔SDBデータベース定義〕[1]、[2]、[3]

END STORAGE SCHEMA〔SDBデータベース格納定義〕[1]、[2]、[3]

ENQOPT〔STARTコマンド〕[1]

environment文

pdsdblod制御文[1]

pdsdbrog制御文[1]

SDB制御文[1]

ERASE

API[1]

DML[1]

DMLコマンド[1]

SDBデータベース定義[1]、[2]

ERASE文[1]

errdata〔pdsdblod制御文〕[1]

exectime[1]

pdsdblod制御文[1]

pdsdbrog制御文[1]

EXモード[1]

F

FETCH

API[1]

DML[1]

DMLコマンド[1]

FETCHDB_ALL

DMLコマンド[1]

FETCHDB_ALL ONLY〔STRATコマンド〕[1]

FETCHDB ALL[1]

排他資源数の見積もり[1]

FETCHオプション

CREATE AUDIT[1]

DROP AUDIT[1]

FETCH文[1]

FIND[1]

FIND文[1]

FINISH〔DMLコマンド〕[1]

FIRSTポインタ[1]

FMBのデータベース[1]

FMBのデータベース〔用語解説〕[1]

FORMAT〔SDBデータベース定義〕[1]

FOR RECORD〔SDBデータベース格納定義〕[1]、[2]、[3]

FOR UPDATE

FETCH文[1]

FIND文[1]

FUNCTION〔SDBデータベース定義〕[1]、[2]

G

generate[1]

generation

pdsdblod制御文[1]

pdsdbrog制御文[1]

H

HAモニタの環境設定

高速系切り替え機能[1]

HiRDB/SDからの切り離し[1]

HiRDB/SD定義ユティリティ[1]

HiRDB/SDデータベースアクセスユティリティ[1]

HiRDB/SDデータベース再編成ユティリティ[1]

HiRDB/SDデータベース作成ユティリティ[1]

HiRDB/SDの位置づけ[1]

HiRDB/SDの環境設定

高速系切り替え機能[1]

HiRDB/SDの最大値・最小値[1]

HiRDB/SDの特長[1]

HiRDB/SDへの接続[1]

HiRDB Advanced High Availability[1]

HiRDB ServerとHiRDB Structured Data Access Facilityの入れ替え手順[1]

HiRDB Staticizer Option[1]

HiRDBシステム定義[1]

HiRDBシステム定義の作成

高速系切り替え機能[1]

HiRDBシステム定義の変更[1]

HiRDBのアンインストール[1]

HiRDBのインストール[1]

HiRDBの開始方法[1]

高速系切り替え機能[1]

HiRDBの終了方法[1]

HiRDBのバージョンアップ[1]

Hitachi Unified Storage VM[1]

I

idxarea[1]

idxload文〔pdsdblod制御文〕[1]

idxmode〔pdsdblod制御文〕[1]

idxname[1]

idxremode[1]

index文〔pdsdblod制御文〕[1]

infmsglvl〔pdsdblod制御文〕[1]

INSERTION〔SDBデータベース定義〕[1]、[2]、[3]

INTEGER

SDBデータベース定義[1]、[2]、[3]

データ型[1]

IPアドレスの構成例〔高速系切り替え機能〕[1]

ITEM〔SDBデータベース定義〕[1]、[2]、[3]

J

JP1/NETM/Audit用監査ログ出力ファイル[1]

JP1/NETM/Audit用監査ログ出力ユティリティ[1]

K

KEYDEF〔SDBデータベース格納定義〕[1]、[2]

KEY〔SDBデータベース定義〕[1]、[2]

KFPB31010-Eメッセージ[1]

L

LAST〔SDBデータベース定義〕[1]、[2]、[3]

LASTポインタ[1]

load文〔pdsdblod制御文〕[1]

lockrangeオペランド[1]

logmode〔pdsdblod制御文〕[1]

M

MEMBER POINTER FOR〔SDBデータベース格納定義〕[1]、[2]、[3]

MEMBER〔SDBデータベース定義〕[1]、[2]、[3]

midfile[1]

MODIFY

API[1]

DML[1]

DMLコマンド[1]

MODIFY文[1]

msglog[1]

N

NEXTポインタ[1]

O

OCCURRENCE NUMBER〔SDBデータベース定義〕[1]、[2]、[3]

OCCURRENCE WARNING〔SDBデータベース定義〕[1]、[2]、[3]

OCCURS〔SDBデータベース定義〕[1]

ORDER KEY〔SDBデータベース格納定義〕

シーケンシャルインデクス[1]、[2]、[3]

二次インデクス[1]、[2]

ORDER〔SDBデータベース定義〕[1]、[2]、[3]

oreload文〔pdsdblod制御文〕[1]

OSの時刻を変更する方法[1]

OWNER POINTER FOR〔SDBデータベース格納定義〕[1]、[2]、[3]

OWNER〔SDBデータベース定義〕[1]、[2]、[3]

P

PACKED DECIMAL FIXED

SDBデータベース定義[1]、[2]、[3]

データ型[1]

pagecflg

データロード[1]

フォーマットライト[1]

pagenum

pdsdbrog制御文[1]

データロード[1]

PAGESWITCH〔STOREコマンド〕[1]

PCTFREE〔SDBデータベース格納定義〕

シーケンシャルインデクス[1]、[2]、[3]

二次インデクス[1]、[2]

レコード[1]、[2]、[3]

PCTFREEVAL〔STOREコマンド〕[1]

PCTFREE有効化オプション

サブページ分割をしない場合[1]

サブページ分割をする場合[1]

pd_assurance_index_no[1]

pd_cmd_exec_time[1]

pd_cmd_process_conwaittime[1]

pd_dbreuse_remaining_entries[1]

pd_dec_sign_normalize[1]

pd_fes_lck_pool_size[1]

pd_ha_agent[1]

pd_indexlock_mode[1]

pd_key_resource_type[1]

pd_lck_pool_size[1]、[2]

pd_lck_until_disconnect_cnt[1]

pd_lock_uncommited_delete_data[1]

pd_max_access_tables[1]

pd_max_commit_write_reclaim_no[1]

pd_max_open_fds[1]

pd_max_resident_rdarea_no[1]

pd_max_users[1]

pd_nowait_scan_option[1]

pd_pageaccess_mode[1]

pd_rise_disaster_mode[1]

pd_rise_fence_level[1]

pd_rise_pairvolume_combination[1]

pd_rorg_predict[1]

pd_rpl_hdepath[1]

pd_shared_rdarea_use[1]

pd_space_level[1]

pd_spd_syncpoint_skip_limit[1]

pd_sql_object_cache_size[1]

pd_structured_advance_resident[1]

pd_structured_directory_path[1]

pd_structured_shmpool_dicsize[1]

pd_table_def_cache_size[1]

pd_tmp_directory[1]

pd_uap_wait[1]

pd_utl_buff_size[1]

pd_utl_exec_mode[1]

pd_utl_exec_time[1]

pd_utl_file_buff_size[1]

pd_work_buff_mode[1]

pd_work_buff_size[1]

pdacunlck[1]

pdadmvr[1]

pdaudatld[1]

pdaudbegin[1]

pdaudend[1]

pdaudput[1]、[2]

pdaudrm[1]

pdaudswap[1]

PDAUTORECONNECT[1]

pdbkupls[1]、[2]

pdbuffer[1]、[2]

pdbufls[1]

pdbufmod[1]

pdcancel[1]

pdcat[1]

pdcbl[1]

pdchgconf[1]

pdchprc[1]

pdclibsync[1]

pdclose[1]

pdclttrc[1]

pdcmt[1]

pdconfchk[1]

pdconfchkコマンドでチェックできるオペランド[1]

pdconstck[1]

pdcopy[1]

pdcpp[1]

pdcspool[1]

pddbchg[1]

pddbfrz[1]

PDDBLOG[1]

pddbls[1]、[2]

pddbst[1]、[2]

pddef[1]

pddefrev[1]

pdexp[1]

pdfbkup[1]

pdffsck[1]

pdfgt[1]

pdfls[1]

pdfmkfs[1]

pdfrm[1]

pdfrstr[1]

pdfstatfs[1]

pdgetcst[1]

pdhold[1]

pdinfoget[1]

pdinit[1]、[2]

pditvstop[1]

pditvtrc[1]

pdjarsync[1]

pdlbuffer[1]

pdlistls[1]

pdload[1]

pdlodsv[1]

pdlogadpf[1]

pdlogatul[1]

pdlogchg[1]

pdlogcls[1]

pdloginit[1]

pdlogls[1]

pdlogopen[1]

pdlogrm[1]

pdlogswap[1]

pdlogsync[1]

pdlogucat[1]

pdlogunld[1]

pdls[1]

pdmemdb[1]

pdmemsv[1]

pdmod[1]、[2]

pdobils[1]

pdobjconv[1]

pdocb[1]

pdocc[1]

pdopen[1]

pdopsetup[1]

pdorbegin[1]、[2]

pdorcheck[1]、[2]

pdorchg[1]

pdorcreate[1]

pdorend[1]、[2]

pdparaload[1]

pdpfresh[1]

pdpgbfon[1]、[2]

pdplgrgst[1]

pdplgset[1]

pdprgcopy[1]

pdprgrenew[1]

pdrbal[1]

pdrbk[1]

pdrdrefls[1]、[2]

pdreclaim[1]

pdreginit[1]

pdrels[1]

pdrisechk[1]

pdrisedbto[1]

pdriseset[1]

pdrorg[1]、[2]

pdrpause[1]

pdrplstart[1]

pdrplstop[1]

pdrstr[1]

pdsdbarc[1]、[2]

pdsdbcbl[1]

pdsdbcblコマンドの予約語[1]

pdsdbdef[1]、[2]

pdsdbexe[1]

pdsdbexeコマンド[1]

規則[1]

コマンド実行前の作業[1]

コマンドの形式[1]

トラブルシューティング[1]

リターンコード[1]

留意事項[1]

pdsdbexeコマンドの終了[1]

pdsdbexeサブコマンド[1]

pdsdbexe操作コマンド[1]

指定規則[1]

pdsdblod[1]

pdsdblodコマンド[1]

RDエリアの容量不足[1]

異常終了した場合[1]

タイムアウト[1]

無応答状態になった場合[1]

pdsdblodコマンドの異常終了〔障害対処方法〕[1]

pdsdblod制御文[1]

pdsdborcrt[1]、[2]

pdsdbrog[1]

pdsdbrogコマンド

異常終了した場合[1]

タイムアウト[1]

無応答状態になった場合[1]

pdsdbrog制御文[1]

PDSDBUAPDIR[1]

PDSDBUAPFILE[1]

pdsetup[1]

pdsql[1]

pdstart[1]

pdstbegin[1]

pdstedit[1]、[2]

pdstend[1]

pdstjswap[1]

pdstjsync[1]

pdstop[1]

pdstscls[1]

pdstsinit[1]

pdstsopen[1]

pdstsrm[1]

pdstsswap[1]

pdsvhostname[1]

pdtrndec[1]

pdtrnqing[1]

PDUAPEXERLOGDMLDATA[1]

PDUAPEXERLOGDMLSZ[1]

pdvrup[1]

pdvwopt[1]

pdwork[1]

POINTER AREA SIZE〔SDBデータベース格納定義〕[1]、[2]

prefix

pdsdblod制御文[1]

pdsdbrog制御文[1]

PRFトレース機能[1]

PRFトレース情報の詳細と取得ポイント[1]

PRIORポインタ[1]

PRモード[1]

purge〔pdsdblod制御文〕[1]

PUモード[1]

R

RAID Manager[1]

RDAREAVAL〔STARTコマンド〕[1]

RDエリア指定有効オプション〔STARTコマンド〕[1]

RDエリア単位の状態解析

物理的解析[1]

論理的解析[1]

RDエリアの空き容量の確認方法[1]

RDエリアの回復[1]

RDエリアの再初期化[1]

RDエリアの削除[1]

pdmod[1]

RDエリアの状態表示[1]

RDエリアの設定変更[1]

RDエリアの属性変更[1]

RDエリアの追加[1]

RDエリアの容量拡張[1]

RDエリアの容量不足〔pdsdblod〕[1]

recfree〔pdsdblod制御文〕[1]

recnomsg

pdsdblod制御文[1]

pdsdbrog制御文[1]

record

pdsdblod制御文[1]

pdsdbrog制御文[1]

RECORD[1]、[2]、[3]

RECORDID〔SDBデータベース定義〕[1]、[2]、[3]

REFER〔SDBデータベース定義〕[1]、[2]

reflection文〔pdorendコマンド〕[1]

report文〔pdorendコマンド〕[1]

RETENTION〔SDBデータベース定義〕[1]、[2]、[3]

REUSE〔SDBデータベース定義〕[1]、[2]、[3]

ROLLBACK〔SQLコマンド〕[1]

S

schema

pdsdblod制御文[1]

pdsdbrog制御文[1]

SCHEMA〔SDBデータベース定義〕[1]、[2]、[3]

SDBOPTION

SDBデータベース格納定義[1]、[2]

SDBデータベース定義[1]、[2]、[3]

SDB制御文[1]

SDB定義文[1]

SDB定義文の記述規則[1]

SDB定義文〔用語解説〕[1]

SDBディクショナリ情報[1]

SDBディクショナリ情報の削除[1]

*DELETE DICTIONARY文[1]

SDBディクショナリ情報の追加[1]

*ENTRY DICTIONARY文[1]

SDBディクショナリ情報の変更[1]

*ALTER DICTIONARY文[1]

SDBディレクトリ情報[1]

SDBディレクトリ情報が一致しているか確認する方法[1]

SDBディレクトリ情報長の計算式[1]

SDBディレクトリ情報の削除[1]

*DELETE DIRECTORY文[1]

SDBディレクトリ情報の常駐化[1]

SDBディレクトリ情報の常駐領域サイズの見直し[1]

SDBディレクトリ情報の追加[1]

*ENTRY DIRECTORY文[1]

SDBディレクトリ情報のファイル出力[1]

SDBディレクトリ情報の不一致が発生したときの対処[1]

SDBディレクトリ情報の変更[1]

*ALTER DIRECTORY文[1]

SDBディレクトリ情報の変更の流れ[1]

SDBディレクトリ情報ファイルの配布方法[1]

SDBディレクトリ情報ファイル〔用語解説〕[1]

SDBデータベース[1]

SDBデータベース格納定義

4V AFM[1]

4V FMB[1]

SD FMB[1]

SDBデータベース格納定義〔用語解説〕[1]

SDBデータベース種別[1]

SDBデータベース種別〔用語解説〕[1]

SDBデータベース操作イベント[1]

SDBデータベース操作イベント種別

CREATE AUDIT[1]

DROP AUDIT[1]

SDBデータベース定義

4V AFM[1]

4V FMB[1]

SD FMB[1]

SDBデータベース定義〔用語解説〕[1]

SDBデータベースの再編成

インナレプリカ機能を使用しない場合[1]

オンライン再編成[1]

更新可能なオンライン再編成[1]

SDBデータベースの再編成の手順[1]

SDBデータベースの操作[1]

SDBデータベースの操作と位置指示子の関係[1]

位置指示子の位置づけ[1]

個別開始[1]

個別終了およびトランザクションの終了[1]

子レコードの格納（子レコードの追加）[1]

子レコードの検索[1]

子レコードの更新[1]

子レコードの削除[1]

複数レコードの検索[1]

ルートレコードの格納（ルートレコードの追加）[1]

ルートレコードの検索[1]

ルートレコードの削除[1]

SDBデータベースの定義[1]

SDBデータベースの定義削除〔HiRDB/SDの再起動を必要とする場合〕[1]

SDBデータベースの定義追加

HiRDB/SDの再起動を必要としない場合[1]

HiRDB/SDの再起動を必要とする場合[1]

SDBデータベースの定義追加，定義変更，または定義削除

HiRDB/SDの再起動を必要とする場合[1]

ディザスタリカバリシステム[1]

SDBデータベースの定義追加または定義変更

HiRDB/SDの再起動を必要としない場合[1]

ディザスタリカバリシステム[1]

SDBデータベースの定義変更

HiRDB/SDの再起動を必要としない場合[1]

HiRDB/SDの再起動を必要とする場合[1]

SDBデータベースの定義例

4V DAM[1]

4V FMB[1]

SD FMB[1]

SDBデータベースの横分割[1]

SDBデータベースの横分割数を増やす方法[1]

SDBデータベースの横分割〔用語解説〕[1]

SDBデータベースビュー〔用語解説〕[1]

SDBデータベースへのデータロードの手順[1]

SDBデータベース〔用語解説〕[1]

SDBデータベースを操作するAPI[1]

SDBデータベースを操作するためのインタフェース〔用語解説〕[1]

SDBハンドラ[1]

SDBユティリティ操作イベント[1]

SDBユティリティ操作イベント種別

CREATE AUDIT[1]

DROP AUDIT[1]

SDB用UAP環境定義[1]、[2]

指定例[1]

文法規則[1]

SDB用UAP環境定義の変更方法[1]

SDB用UAP環境定義ファイル

格納ディレクトリの作成[1]

SDB用UAP環境定義ファイルの作成[1]

SDB用UAP環境定義ファイル〔用語解説〕[1]

SDTFC〔UAP単位の情報〕[1]

SD排他モード[1]

SECIDXSUP

FETCHコマンド[1]

STOREコマンド[1]

SECONDARY INDEX〔SDBデータベース格納定義〕[1]、[2]

seqkeyck〔pdsdblod制御文〕[1]

SEQUENTIAL 〔SDBデータベース格納定義〕[1]、[2]、[3]

server

pdsdblod制御文[1]

pdsdbrog制御文[1]

SET

SDBデータベース格納定義[1]、[2]、[3]

SDBデータベース定義[1]、[2]、[3]

SETOPTION〔SDBデータベース定義〕[1]、[2]、[3]

SMALLINT

SDBデータベース定義[1]

データ型[1]

sortdir〔pdsdblod制御文〕[1]

SORTED DUPLICATES PROHIBITED〔SDBデータベース定義〕[1]、[2]

source文[1]

SQL_AUDITS表[1]

SQL_COLUMNS表[1]

SQL_DIV_INDEX表[1]

SQL_DIV_TABLE表[1]

SQL_INDEX_COLINF表[1]

SQL_INDEXES表[1]

SQL_RDAREAS表[1]

SQL_SDB_DB表[1]

SQL_SDB_DIR表[1]

SQL_SDB_STORAGE_DB表[1]

SQL_TABLE_PRIVILEGES表[1]

SQL_TABLES表[1]

SQLエラー情報の出力例[1]

SQLコマンド[1]

SQLトレース機能[1]

SQLトレース情報の出力例[1]

SRモード[1]

START〔DMLコマンド〕[1]

STORAGE RECORD〔SDBデータベース格納定義〕[1]、[2]、[3]

STORAGE SCHEMA〔SDBデータベース格納定義〕[1]、[2]、[3]

STORE

API[1]

DML[1]

DMLコマンド[1]

STORE文[1]

storinf〔pdsdblod制御文〕[1]

SUBPAGE NUMBER[1]、[2]、[3]

subschemaオペランド[1]

SUモード[1]

T

TAMMODE〔SDBデータベース定義〕[1]

TAMのデータベースの無排他検索機能[1]

TARGET〔ERASEコマンド〕[1]

TERMOPT〔FETCHDB_ALLコマンド〕[1]

TERMOPT〔FETCHコマンド〕[1]

TMS-4V/SP情報[1]

TP1/FSP[1]

transfer[1]

TrueCopy[1]

type〔pdsdblod制御文〕[1]

TYPE〔SDBデータベース定義〕[1]、[2]、[3]

U

UAP単位の情報〔UAP統計レポート〕[1]

UAP統計レポート機能[1]

UAPの障害対策[1]

UAPの設計[1]

unit〔dirinf文〕[1]

Universal Replicator[1]

unldfile〔pdsdbrog制御文〕[1]

unldinf〔pdsdbrog制御文〕[1]

unldkind〔pdsdbrog制御文〕[1]

unload文〔pdsdbrog制御文〕[1]

UNTIL NOT FOUND〔FETCHDB_ALLコマンド〕[1]

UPDATE〔SDBデータベース定義〕[1]、[2]

userpflg

pdsdblod制御文[1]

pdsdbrog制御文[1]

USERPTROPT

MODIFYコマンド[1]

STOREコマンド[1]

USERポインタ[1]

USERポインタフラグ[1]

USERポインタフラグの開始位置[1]

W

WARNING〔SDBデータベース定義〕[1]、[2]、[3]

WITHIN〔SDBデータベース格納定義〕

シーケンシャルインデクス[1]、[2]、[3]

二次インデクス[1]、[2]

レコード[1]、[2]、[3]

WITHIN親子集合型名[1]

workdir〔pdsdblod制御文〕[1]

write〔pdsdblod制御文〕[1]

X

XCHARACTER

SDBデータベース定義[1]、[2]、[3]

データ型[1]

あ

空きセグメント[1]

アクセス順序[1]

アクセスパス情報〔用語解説〕[1]

アクセスモード〔STARTコマンド〕[1]

アンインストール[1]

アンロード[1]

SDBデータベースが横分割されている場合[1]

実行結果ファイル[1]

実行結果ファイルの出力形式[1]

アンロードおよびデータロードの例

4V FMB[1]

4V MAM[1]

SD FMB[1]

オンライン再編成の場合[1]

アンロードデータファイル[1]

アンロードデータファイルの出力形式[1]

アンロードデータファイルをUAPの入力情報として使用する[1]

アンロードの例〔アンロードデータファイルをUAPの入力情報として使用する場合〕

4V FMB[1]

4V MAM[1]

い

位置指示子[1]

位置指示子の位置づけ[1]

位置指示子の種類[1]

位置指示子〔用語解説〕[1]

一連番号[1]

一連番号使用比率の指定

OCCURRENCE WARNING[1]、[2]、[3]

WARNING[1]、[2]、[3]

一連番号の監視[1]

一連番号〔用語解説〕[1]

意図共用モード[1]

意図排他モード[1]

イベントサブタイプ[1]

イベントタイプ[1]

入れ替え手順[1]

インストール

HiRDB[1]

付加PP[1]

インデクス[1]

インデクス一括作成モード[1]

インデクス検索時の排他制御[1]

インデクス更新モード[1]

インデクス情報ファイル[1]

インデクス情報ファイルの名称[1]

インデクスの再作成[1]

インデクスの再作成手順[1]

インデクスの再作成の例

4V FMB[1]

SD FMB[1]

インデクスの作成モード[1]

インデクスの残存エントリ[1]

インデクスの未完状態[1]

インデクスページ[1]

インデクス〔用語解説〕[1]

インデクスを格納するページ数の見積もり[1]

インナレプリカ機能[1]

環境設定[1]

更新可能なオンライン再編成[1]

う

埋込み言語文法[1]

埋込み変数[1]、[2]

運用項目の一覧[1]

お

追い付き状態管理表〔用語解説〕[1]

追い付き状態管理表を格納するRDエリア[1]

追い付き反映キー対応表[1]

pdsdborcrtコマンド[1]

格納RDエリアを確認する[1]

用語解説[1]

追い付き反映キー対応表のインデクス[1]

追い付き反映キー対応表の操作[1]

追い付き反映キー対応表を格納するRDエリアの容量見積もり[1]

追い付き反映処理[1]

APIのエラーをスキップしたい場合[1]

格納配置制御[1]

状態を確認する[1]

追い付き反映制御ファイル[1]

オペレーティングシステムパラメタの見積もり[1]

親子集合[1]

親子集合位置指示子[1]

親子集合位置指示子〔用語解説〕[1]

親子集合型[1]

親子集合型名[1]

親子集合型〔用語解説〕[1]

親子集合〔用語解説〕[1]

親レコード[1]

ポインタの種類[1]

用語解説[1]

親レコード型[1]

オリジナルRDエリア〔用語解説〕[1]

オンライン再編成の手順[1]

か

カーネルパラメタの見積もり[1]

開始方法[1]

高速系切り替え機能[1]

階層構造[1]

回復追い付き反映処理〔用語解説〕[1]

拡張SQLエラー情報出力機能[1]

格納位置を検索する方向[1]

格納条件指定による横分割[1]

格納配置制御〔追い付き反映処理〕[1]

仮想親子集合[1]

仮想親子集合〔用語解説〕[1]

仮想ルートレコード[1]

仮想ルートレコード〔用語解説〕[1]

カレントRD エリア〔用語解説〕[1]

環境設定方法〔セキュリティ監査機能〕[1]

環境変数の設定[1]

監査証跡[1]

監査証跡の参照方法[1]

監査証跡の絞り込み[1]

監査証跡の出力契機の例

一括削除をした場合[1]

複数レコードを検索した場合[1]

レコードを格納した場合[1]

レコードを検索した場合[1]

レコードを更新した場合[1]

レコードを削除した場合[1]

監査証跡の取得契機[1]

監査証跡のレコード項目

pdsdbdefコマンドの場合[1]

pdsdblodコマンドの場合[1]

pdsdbrogコマンドの場合[1]

複数レコードの検索の場合[1]

レコードの一括削除の場合[1]

レコードの格納の場合[1]

レコードの検索の場合[1]

レコードの更新の場合[1]

レコードの削除の場合[1]

監査証跡表の自動データロード機能[1]

監査証跡表の列構成[1]

監査証跡表へのデータ登録[1]

監査証跡表を格納するRDエリア[1]

監査証跡ファイル

出力される情報[1]

監査証跡ファイルの運用[1]

高速系切り替え機能[1]

監査証跡ファイルの容量見積もり[1]

監査対象イベント[1]

監査対象イベントの定義[1]

監査対象イベントの定義の削除[1]

監査対象になるイベント[1]

監査人[1]

関連RDエリアの表示[1]

関連するプログラムプロダクト[1]

き

キーの条件の指定[1]

キーワード[1]

キーワードの指定[1]

基準サブページ[1]

基準サブページ〔用語解説〕[1]

基準ページ[1]

基準ページ〔用語解説〕[1]

基準レコード

サブページ分割をしない場合[1]

サブページ分割をする場合[1]

用語解説[1]

基本項目[1]

機密保護機能[1]

境界値指定による横分割[1]

共用意図排他モード[1]

共用メモリの見積もり[1]

共用モード[1]

近傍配置[1]

く

空値[1]

空値〔用語解説〕[1]

区切り文字の挿入[1]

クライアントエラーログ機能[1]

クライアント環境定義[1]

グローバルバッファ[1]

グローバルバッファ常駐化ユティリティ[1]

グローバルバッファの先読み入力[1]

グローバルバッファの設計[1]

グローバルバッファの定義

高速系切り替え機能[1]

グローバルバッファの割り当て方法[1]

け

計画系切り替えの手順

高速系切り替え機能[1]

検索コード[1]

検索の基点となるレコード[1]

検索の方向[1]

こ

更新追い付き反映処理〔用語解説〕[1]

更新可能なオンライン再編成[1]、[2]

運用手順[1]

追い付き反映[1]

追い付き反映キー対応表の操作[1]

準備作業[1]

障害対処[1]

操作を取り消す[1]

対象RDエリアの状態を確認する[1]

注意事項[1]

データベース静止化[1]

適用条件チェック[1]

更新コピー[1]

更新バッファ[1]

更新ログ取得方式[1]

構成情報取得[1]

構成要素[1]

構成要素の詳細[1]

構成要素〔用語解説〕[1]

構造型DB[1]

構造型DB機能に関するユーザ権限の設定[1]

高速系切り替え機能[1]

HAモニタの環境設定[1]

IPアドレスの構成例[1]

環境設定[1]

システム構成例[1]

個別開始

API[1]

DML[1]

STARTコマンド[1]

個別開始/終了一括要求オプション[1]

個別開始実行要求オプション[1]

個別終了

API[1]

DML[1]

FINISHコマンド[1]

コマンドの同時接続数[1]

コミットしていない削除データの排他制御[1]

コメント[1]

子レコード[1]

ポインタの種類[1]

用語解説[1]

子レコード型[1]

さ

サーバプロセス〔用語解説〕[1]

サーバモード[1]

最小値[1]

最初に作成するファイル[1]

最大値[1]

最大同時実行数〔ユティリティ〕[1]

再編成

インナレプリカ機能を使用しない場合[1]

オンライン再編成[1]

更新可能なオンライン再編成[1]

再編成状態〔更新可能なオンライン再編成〕[1]

再編成の手順[1]

作業表用ファイル[1]

作業表用ファイル〔HiRDBファイルシステム領域の設計〕[1]

サブページ[1]

サブページ間の関連づけ[1]

サブページ間の関連づけ〔用語解説〕[1]

サブページ切り替え[1]

サブページ長の設計[1]

サブページ長の設計方針[1]

サブページ内の未使用領域の比率[1]

適用基準[1]

サブページの解放[1]

サブページの確保[1]

サブページの状態[1]

サブページの設計[1]

サブページの適用基準[1]

サブページ分割[1]

サブページ分割数[1]、[2]、[3]

サブページ分割数の設計方針[1]

サブページ〔用語解説〕[1]

参照バッファ[1]

残存エントリ[1]

し

シーケンシャルインデクス[1]

シーケンシャルインデクス〔用語解説〕[1]

時刻を変更する方法[1]

指示コード

FETCH文[1]

FIND文[1]

システム共通定義

オペランドの説明[1]

システム構成を変更する方法[1]

システム構築手順[1]

システムの状態監視[1]

システムファイル[1]

システムファイルの作成[1]

システムマネジャ[1]

システム用RDエリア[1]

システムログ量の見積もり[1]

事前常駐領域[1]

事前常駐領域〔用語解説〕[1]

事前ページ割り当て機能[1]

ファミリの格納例[1]

事前ページ割り当て機能〔サブページ分割している場合〕[1]

ファミリの格納例[1]

事前割り当てサブページ数の算出[1]

事前割り当てサブページ〔用語解説〕[1]

事前割り当てページ数の開始位置[1]

事前割り当てページ数の算出[1]

事前割り当てページ〔用語解説〕[1]

実行結果ファイル

pdsdbdefコマンド[1]

pdsdblodコマンド[1]

pdsdbrogコマンド[1]

実行結果ファイルの出力形式

pdsdbdefコマンド[1]

pdsdblodコマンド[1]

pdsdbrogコマンド[1]

自動再接続機能[1]

自動データロード機能〔セキュリティ監査機能〕[1]

終端検知用の検索実行回数[1]

集団項目[1]

終了方法[1]

障害調査のために必要な情報[1]

障害発生時の対処方法[1]

pdsdblodコマンドの異常終了時[1]

更新可能なオンライン再編成[1]

高速系切り替え機能[1]

定義追加または定義変更前の状態に戻す場合[1]

ディザスタリカバリシステム[1]

障害閉塞[1]

使用中空きセグメント[1]

使用中サブページ[1]

使用中セグメント[1]

使用中ページ[1]

使用中満杯サブページ[1]

使用中満杯ページ[1]

常用常駐領域[1]

常用常駐領域〔用語解説〕[1]

初期値〔フォーマットライト〕[1]

初期データロード[1]

初期データロードの例

4V FMB[1]

4V MAM[1]

SD FMB[1]

二次インデクスを定義している場合[1]

す

スキーマ[1]

スキーマ定義権限の付与[1]

スキーマの削除[1]

スキーマの追加[1]

せ

制御文ファイル

pdsdblodコマンド[1]

pdsdbrogコマンド[1]

制限事項

更新可能なオンライン再編成[1]

整数データ[1]

セキュリティ[1]

セキュリティ監査機能[1]

運用方法[1]

環境設定方法[1]

セグメント[1]

セグメントサイズの設計[1]

セグメント内の空きページの比率[1]、[2]

セグメントの確保と解放[1]

セグメントの状態[1]

セグメントの設計[1]

セマフォ所要量の見積もり[1]

選択オプション[1]、[2]

全非同期方式[1]

そ

操作系DML[1]

操作種別[1]

ソート用ワークファイル[1]

属性[1]

た

タイムアウト

pdsdbdefコマンド[1]

pdsdblodコマンド[1]

pdsdbrogコマンド[1]

単体版HiRDB[1]

単体版HiRDBから統合版HiRDBへの入れ替え手順[1]

単調増加ファイル[1]

ち

中間ファイル[1]

容量見積もり式[1]

中間ファイルの格納ディレクトリ[1]

注釈[1]

つ

追加データロード[1]

追加データロードの例

4V FMB[1]

SD FMB[1]

て

ディクショナリサーバ[1]

ディクショナリ操作機能[1]

ディクショナリ表[1]

ディクショナリ表のインデクス[1]

ディクショナリ表の参照権限の設定[1]

ディザスタリカバリシステム[1]

SDBデータベースの定義追加，定義変更，または定義削除[1]

SDBデータベースの定義追加または定義変更[1]

運用[1]

構築[1]

ディスク容量の見積もり[1]

ディレクトリ操作機能[1]

ディレクトリページ[1]

データ格納エリア[1]

データ型[1]

データ型〔SDBデータベース定義〕[1]、[2]、[3]

データ構造[1]

データ項目[1]

データ種別1〔SDBデータベース定義〕[1]、[2]、[3]

データ種別2〔SDBデータベース定義〕[1]、[2]、[3]

データ種別3〔SDBデータベース定義〕[1]

データ種別〔用語解説〕[1]

データディクショナリ用RDエリア[1]

データディレクトリ用RDエリア[1]

データ反映方式〔ディザスタリカバリシステム〕[1]

データページ[1]

データベースキー[1]

データベース構成変更ユティリティ[1]

データベース再編成ユティリティ[1]

データベース状態解析ユティリティ[1]

データベース初期設定ユティリティ[1]

データベース静止化[1]

データベース定義のチェック[1]

*CHECK DICTIONARY文[1]

データベースの回復[1]

データ用グローバルバッファ[1]

データロード[1]

SDBデータベースが横分割されている場合[1]

データロードの手順[1]

デッドロック[1]

デッドロックプライオリティ値[1]

と

統計解析情報の取得

高速系切り替え機能[1]

統計解析ユティリティ[1]

統計情報の取得[1]

統合版HiRDB[1]

統合版HiRDBから単体版HiRDBへの入れ替え手順[1]

動作条件[1]

同時接続数〔コマンド〕[1]

同時にバックアップを取得する必要があるRDエリア[1]

トラブルシューティング

pdsdbexeコマンド[1]

pdsdblodコマンド[1]

pdsdbrogコマンド[1]

トランザクションの正常終了[1]

トランザクションの取り消し[1]

な

名前[1]

名前の規則[1]

名前の指定[1]

に

二次インデクス[1]

効果が期待できるケース[1]

子レコード格納時の使用有無[1]

子レコード検索時の使用有無[1]

使用有無の確認[1]

用語解説[1]

入力データの論理エラー[1]

入力データファイル[1]

入力データファイルの形式[1]

は

排他オプション〔STARTコマンド〕[1]

排他資源[1]

排他資源数[1]

排他資源数の見積もり[1]

排他自動解除オプション〔STARTコマンド〕[1]

排他自動解除機能[1]

排他制御[1]

排他制御モード

pdsdbdefコマンド[1]

pdsdblodコマンド[1]

pdsdbrogコマンド[1]

排他の期間[1]

排他モード[1]

排他モード指定による無排他検索機能[1]

配布方法〔SDBディレクトリ情報ファイル〕[1]

バックアップの取得[1]

バックアップファイルの情報表示[1]

バックエンドサーバ[1]

パラメタトレース[1]

ひ

日立ディスクアレイサブシステム[1]

非同期コピーの特徴[1]

一筆書き順[1]

ふ

ファイルの容量見積もり

pdcopyコマンド[1]

pddbstコマンド[1]

pdsdbcblコマンド[1]

pdsdblodコマンド[1]

pdsdbrogコマンド[1]

pdsteditコマンド[1]

ファミリ[1]

ファミリ内接続サブページ[1]

ファミリ内接続サブページ〔用語解説〕[1]

ファミリ内接続ページ[1]

ファミリ内接続ページ〔用語解説〕[1]

ファミリ〔用語解説〕[1]

フォーマットライト[1]

SDBデータベースが横分割されている場合[1]

用語解説[1]

フォーマットライトの例[1]

付加PP[1]

付加PPのインストール[1]

複合状態[1]

複数レコードの検索[1]

FETCHDB_ALLコマンド[1]

排他資源数の見積もり[1]

符号正規化機能[1]

符号付きパック形式[1]

符号付きパック形式10進データ[1]

符号部[1]

符号部の変換規則〔データ格納時〕[1]

物理的解析[1]

プラットフォーム[1]

プリフィクス部[1]

プリフィクス部のデータ形式[1]

プロセス固有メモリの見積もり[1]

フロントエンドサーバ[1]

分割格納条件の変更機能[1]

へ

ページ[1]

ページ間の関連づけ[1]

ページ間の関連づけ〔用語解説〕[1]

ページ切り替え[1]

ページ切り替えオプション

サブページ分割をしない場合[1]

サブページ分割をする場合[1]

ページ切り替えオプション〔STOREコマンド〕[1]

ページ切り替えフラグ[1]

ページ切り替えフラグの扱い[1]

ページ切り替えフラグの開始位置[1]

ページ長の設計[1]

ページ長の設計方針[1]

ページ内の未使用領域の比率[1]

ページの解放[1]

ページの解放〔サブページ分割している場合〕[1]

ページの確保[1]

ページの確保〔サブページ分割している場合〕[1]

ページの状態[1]

ページの設計[1]

ヘルプ情報の出力〔pdsdbexeサブコマンド〕[1]

ほ

ポインタ[1]

ポインタオプション〔STOREコマンド〕[1]

ポインタ管理領域[1]

ポインタ管理領域の予備領域[1]

ポインタ検索[1]

ポインタ〔用語解説〕[1]

ま

マスタディレクトリ用RDエリア[1]

マルチHiRDBの設計[1]

満杯セグメント[1]

み

未完状態〔インデクス〕[1]

未使用サブページ[1]

未使用セグメント[1]

未使用ページ[1]

む

無排他検索機能[1]、[2]

め

メインサイト[1]

メインフレーム[1]

メッセージ[1]

メッセージキューの見積もり[1]

メモリ所要量の見積もり

pdcopyコマンド[1]

pddbstコマンド[1]

pdrstrコマンド[1]

pdsdbcblコマンド[1]

pdsdbexeコマンド[1]

pdsdblodコマンド[1]

pdsdbrogコマンド[1]

メモリ容量の見積もり[1]

も

文字コード[1]

文字コードの指定[1]

文字列データ[1]

モニタモード[1]

ゆ

ユーザキー[1]

ユーザ権限[1]

ユーザデータ[1]

ユーザ用RDエリア[1]

ユーザ用RDエリアの容量見積もり[1]

追い付き反映キー対応表を格納するRDエリア[1]

優先サブページ〔用語解説〕[1]

優先ページ〔用語解説〕[1]

ユティリティが出力するファイル[1]

ユティリティの最大同時実行数[1]

ユニット制御情報定義

オペランドの説明[1]

ユニットの状態を確認する

高速系切り替え機能[1]

よ

横分割[1]

横分割数を増やす手順

HiRDB/SDの再起動を必要としない場合[1]

HiRDB/SDの再起動を必要とする場合[1]

再定義をする場合[1]

予約語[1]

予約語の一覧[1]

り

リアルタイムSANレプリケーション[1]

リターンコード

pdsdbdefコマンド[1]

pdsdbexeコマンド[1]

pdsdblodコマンド[1]

pdsdbrogコマンド[1]

リモートサイト[1]

リレーショナルDBを格納するRDエリア[1]

る

ルートレコード[1]

ルートレコード型[1]

ルートレコード〔用語解説〕[1]

れ

レコード[1]

レコード位置指示子[1]

レコード位置指示子〔用語解説〕[1]

レコード格納時のサブページ切り替え[1]

レコード格納時のページ切り替え[1]

レコード型[1]

レコード型〔用語解説〕[1]

レコード識別コード〔SDBデータベース定義〕[1]、[2]、[3]

レコード実現値[1]

レコード実現値の削除範囲[1]

レコード実現値〔用語解説〕[1]

レコード操作キー情報[1]

レコード長[1]

レコードのアクセス順序[1]

レコードのアンロード[1]

レコードの位置づけ[1]、[2]

レコードの一括削除[1]

CLEARコマンド[1]

レコードの格納[1]

STOREコマンド[1]

レコードの格納順序

アンロードデータファイル[1]

入力データファイル[1]

レコードの検索[1]

FETCHコマンド[1]

レコードの検索範囲[1]

レコードの更新[1]

MODIFYコマンド[1]

レコードの削除[1]

ERASEコマンド[1]

レコードの集約度の見積もり方法[1]

レコードのデータ形式

アンロードデータファイル[1]

入力データファイル[1]

レコードの特定方法[1]

レコードの配置制御

サブページ分割をしない場合[1]

サブページ分割をする場合[1]

レコードビュー〔用語解説〕[1]

レコード〔用語解説〕[1]

レコードを格納するデータページ数[1]

レプリカRDエリアの作成[1]

レプリカRDエリア〔用語解説〕[1]

レベル番号〔SDBデータベース定義〕[1]、[2]、[3]

ろ

ログ取得モード[1]

logmode[1]

ログレス閉塞[1]

ログレスモード[1]

logmode[1]

論理エラーが発生したときの対処[1]

論理エラー情報ファイル[1]

論理エラー情報ファイルの出力形式[1]

論理エラーの詳細[1]

論理エラー番号[1]

論理的解析[1]