サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
災害への備え
www.t3.rim.or.jp/~buchi
基幹システムにおいて、まだまだCOBOL言語中心のシステム資産があり、捨てがたいものがあります。 しかし... 『先輩はCOBOLを知っているが、もうプログラムを組んでいない。』 『我々は、VB+Oracleでしかプログラムを組んだことが無い。』 『先輩にPro*COBOLのことを聞いても、ISAMしか知らないので教えてもらえない。』 このようなシステム部が増えているようです。 また、COBOL言語を利用したデータベースシステムの文献または講習会が非常に少なく開発に困っている方が多いようです。そこで、『Web版やさしくわかるPro*COBOL』を作りました。 今回は、COBOL言語よりデータベースを利用する際、埋め込みSQLを使用するのですが、そのSQL文のみを事前にコンパイルするプリコンパイラである『Oracle Pro*COBOL』について説明しています。 プログラミング例を載せていま
やさしくわかるPro*COBOL Top やさしくわかるSQL RDBMS入門 チューニング SQL相談室 Pro*COBOL入門 COBOL相談室 サブルーチン ここをクリックして開始 2004/06/05 = 目 次 = 1.やさしくわかるPro*COBOL 5.埋め込みSQL 9.可変長文字型(VARCHAR2) 13.カーソルとは 17.行の読込み 21.問合せ行に対する更新 25.標識変数 29.PL/SQL表と配列 33.変数の同値化 2.開発言語 6.ホスト変数の宣言 10.文字型の桁合せと型変換 14.カーソルの種類 18.エラー処理-1 22.問合せ時に行ロック 26.PL/SQLブロックの実行 30.サブルーチン間のセッション 3.Pro*COBOLとは 7.データ型 11.接続と切断 15.カーソルの宣言 19.エラー処理-2 23.表単位のロック 27.ストアド・プ
Oracleアーキテクチャ Top やさしくわかるSQL RDBMS入門 チューニング SQL相談室 Pro*COBOL入門 COBOL相談室 サブルーチン ここをクリックして開始 2004/05/15 = 目 次 = 1.Oracleアーキテクチャ 5.Oracleデータベース 9.セグメントとエクステント 13.テンポラリ表領域 17.パラレル・クエリー 21.マルチスレッド・サーバ構成 2.Oracleインスタンス 6.SQL文の流れ(SELECT) 10.Oracleデータブロック 14.データベースの起動と停止 18.新しい検索アルゴリズム 3.システム・グローバル領域 7.SQL文の流れ(DML) 11.Redoログ・ファイル 15.オンライン・バックアップ 19.クラスタと索引構成表 4.バックグラウンド・プロセス 8.データ・ファイルと表領域 12.ロールバック・セグメント
Oracle RDBMSでは、独自のアルゴリズムを採用することで、検索処理のパフォーマンス向上を実現します。 その独特なアルゴリズムについて2つ説明します。 まずは、『ハッシュ・ジョイン』です。 ハッシュ・ジョインは、表を結合する新しいアルゴリズムです。表の結合方法には下記の3種類があります。 1. ネステッド・ループ・ジョイン この結合方法は、表を読むループを入れ子(ネスト)にして処理を行います。 A行とB行ある表を結合する場合、AxB行のループが必要であり、行数が増えると膨大な処理時間が必要です。 2. ソート・マージ・ジョイン この結合方法は、結合キーにて各表をソートして結合する方法です。 A行とB行ある表を結合する場合、A・log( A ) + B・log( B ) 回の処理で行えるため、行数が増えてもそれほど処理が増えないため、ネステッド・ループ・ジョインに比べ高速に処理が行えま
『表』すなわち『セグメント』は、『エクステント』の集まりです。エクステントとは、連続したOracleデータブロックのことであり、複数のエクステントにて構成されるセグメントは、連続していないため、全表検索の場合ディスクのシークに時間がかかります。 ① このデータベースを使用する間に登録されるデータ量を将来のことまで考えて、表毎に見積り試算します。 表を作成する際、できるだけ初期エクステントのサイズ=表のサイズにして、表を1エクステントで構成するようにします。 エクステントのサイズは、CREATE TABLE文の記憶領域管理パラメータ(STORAGE句)にて指定します。 CREATE TABLE {表名} ( {列定義} … ) STORAGE ( INITIAL {n} NEXT {m} PCTINCREASE {o} ); 表を見積り、記憶領域管理パラメータを指定する場合は、将来のことまで
(2004/04/29) Oracleデータベースを利用するアプリケーションを開発する場合、Oracle Programmerというミドルウエアを利用します。Oracle Programmerには、Pro*C, Pro*COBOL, Oracle Object for OLE, ODBCドライバなどが入っており、開発する言語に合せて必要なミドルウエアを利用することができます。 しかし、アプリケーション・パッケージなど完結したソフトウエアを開発されている方は、これらのミドルウエアを利用すると、ライセンス、インストール、サポートとコストがかかる原因になっていると思います。 パッケージソフトを開発する場合は、Oracleデータベースにて提供されている Oracle Call Interface (以下、OCIと呼びます) を使用すると、これらのミドルウエアを経由しない完結したパッケージソフトを開
まず、設計フェーズにおけるデータベース・チューニング項目について説明していきます。 データベースに関わらず、システムを設計する場合は、下記の順に行います。 1. 概要設計 2. 外部設計 3. 内部設計 ○ 4. 詳細設計 上記『内部設計』の作業には次のような作業があります。 1. 項目の洗い出し 2. 正規化 ○ 3. コード/区分の仕様 4. フラグ/集計ファイルの追加 5. テーブル一覧表の作成 6. テーブルレイアウトの作成 (桁、型、列名の決定) 7. 制約の追加 8. 索引の追加 9. 表の見積り 10. SQL-DDLスクリプトの作成 11. オブジェクトの作成 ここでは、上記『正規化』の作業について説明します。 正規化とは、 1. 正規化とは、データの重複を排除するようにデータを分割することです。 2. データが複数の箇所に登録されていると値を変更する際に時間がかかります。
Oracle RDBMSが管理している物理ファイル群を『Oracleデータベース』と言います。 Oracleデータベースには、下記の物理ファイルがあります。 ① データファイル テーブルや索引など、ユーザのデータを記憶するファイル。 ソートを行うための一時ファイル、ロールバックを行うためのファイルなどがあります。 ※ Oracleをインストールした際に作られる標準データベースに、システム表領域用のデータ・ファイルがあります。このファイルは重要な情報が記憶されていますので、ユーザのデータを記憶する領域としては使用しないようにします。 ② 制御ファイル データベースのテーブル、索引などのオブジェクトと物理ファイルを関連付ける重要な情報を記憶しています。 非常に重要なため、二重化または三重化をお勧めします。 二重化するには、データベースを停止し、制御ファイルをコピーし、初期パラメータファイルにフ
Pro*COBOLは、Oracle Programmerという製品の中に入っています。Oracle Programmerには、Pro*C/C++、Pro*COBOL、Oracle ODBC Driver、Oracle Object for OLE(OO4O)などアプリケーションシステムを開発する為に必要な製品が1つのパッケージになっています。 (1998/05/03) なぜ、COBOL 言語に関する HP が無いのだろうか?よし!俺が作ろう!という事でこのページができました。COBOL だけでは面白くないので、これからの COBOL プログラマーの為に、RDB と関係する事を載せていきます。 このページは、パソコンのMicroFocus COBOL V3.1J~と、Oracle Pro*COBOL V1.7~について載せています。 Pro*COBOLとは? プリコンパイラです。MicorF
= 目 次 = 1.やさしくわかる PL/SQL 5.変数の宣言 9.繰り返し命令(LOOP) 13.カーソルの種類 17.行の読み込み 21.暗黙カーソルの属性 25.エラー処理関数 29.コメント文 33.プロシジャー 37.ストアド・ファンクション 41.DBMSパッケージ
Oracleデータベースの最小I/O単位を『Oracleデータブロック』と言います。 このOracleデータブロックの内部構造について説明します。 Oracleデータブロックのサイズは、データベースを作成する時に決め、その後変更することはできません。 既定値は2,048バイトですが、最近サーバの性能が向上し、扱うデータ量も増えてきたため、データベースを作成する際このデータブロックのサイズを指定するようになりました。Oracleデータブロックのサイズは、更新系のデータベースは小さい方がパフォーマンスが良く、検索系のデータベースは大きい方がパフォーマンスが良いです。(例えば、更新系なら8KB、検索系なら32KBぐらいにします) データ・ブロックに、複数の行データが格納されます。 データ・ブロックは、最小I/O単位ですので、1行のサイズよりデータ・ブロックのサイズを大きくします。そうしないと1行
やさしくわかるデータベース・チューニング Top やさしくわかるSQL RDBMS入門 チューニング SQL相談室 Pro*COBOL入門 COBOL相談室 サブルーチン ここをクリックして開始 2004/07/03 = 目 次 = 1.データベース・チューニング 5.クラスタ化の検討 9.ライブラリ・キャッシュを有効に! 13.コスト・ベースに切り替え 17.Redoログ・ファイルの見直し 21.名前解決とログ 2.正規化 6.SQL文の見直し 10.配列操作の検討 14.行連鎖のチェック 18.ディスクの配置 22.サーバの見直し 3.索引の検討 7.View表の見直し 11.ロック命令 15.メモリの使用状況を確認 19.ストライピング化の検討 23.クライアントの見直し 4.表のサイズを見積る 8.PL/SQL化 12.初期パラメータ・ファイルの見直し 16.マルチスレッド・サ
前頁において、データベースのメモリ使用量を増やしてパフォーマンスを上げる方法について説明しました。 次は、何の投資も無くデータベースのパフォーマンスを上げる手品のような方法を説明します。 データベースは、SQL文を実行する際に、どのようにアクセスするか『実行計画』を立てます。 Oracleデータベースには、実行計画を立てるエンジンが2つ備わっています。その機能を『オプティマイザー』と言います。 1. ルールベース・オプティマイザー 2. コストベース・オプティマイザー データベースのデフォルトは、ルールベースです。 後から表単位に、コストベースへ切り替えることができます。 実行計画の立て方をコストベースに切り替えると、劇的にパフォーマンスが向上する場合があります。 また、ルールベース・オプティマイザより、コストベース・オプティマイザの方が、SQL文の解釈に柔軟性があります。 この頁では、そ
次は、開発フェーズにおけるデータベース・チューニング項目について説明していきます。 開発者(プログラマー)は、単体テストまたは納品後のユーザからのクレーム等にて各処理のレスポンスが悪くチューニングが必要だと思った場合、その処理(プログラム)を特定してSQL文を見直します。これを『アプリケーション・チューニング』と言います。 ① SQL文が特定できた後、そのSQL文の実行計画を確認します。 実行計画は、EXPLAIN PLAN FOR {SELECT文}; にて確認できます。 ※ EXPLAIN PLANコマンドを実行する前にplan_table表を作成しなければいけません。Plan_table表の作成スクリプトと、EXPLAIN PLANコマンドの結果を見るスクリプトは、『便利なツール集』の⑧と⑨にあります。 実行計画を見て、TABLE ACCESSがFULLと表示された場合は、全表検索に
問題.日別売掛集計表を出力したい。出力する項目は、日付、売上伝票枚数、売上金額、入金伝票枚数、入金金額です。 このように、1つの表からある区分別に集計した値を列方向に出力する SQL 文をあなたは作れますか?(MS-Accessはクロスクエリーという ANSI に無い SQL コマンドがありますが...) 普通の SQL 文だけではできませんので、なんらかの言語を使用して集計しなければいけません。(実用に耐えれなくてもいいのなら JOIN で可能だが) しかし、DECODE という関数を使用すれば簡単に SQL 文1命令でできます。 DECODE 関数の文法は DECODE( a, b1, c1, [... bN, cN, ] d ) です。その機能は、 IF a = b1 THEN return( c1 ); | ELSE IF a = bN THEN return( cN ); ELS
データベースを制御するバッチファイル(11,12,13)と、設計/設定用紙(14,15)を追加しました。 Oracleデータベースを利用したシステムを構築する際、SEまたはプログラマーが良く使用するSQL文をスクリプトファイルにまとめてみました。 [使い方] このページにあるそれぞれのスクリプトファイルを右クリックにてダウンロードして下さい。 フロッピー等に保存しておくと、どこにでも持っていくことができます。 必要なときに、各パソコンからSQL*Plusを起動し、@コマンドにてスクリプトを実行できます。 [スクリプトファイル] ① テーブル一覧表 説明:現在データベースに接続しているユーザが作成したテーブル一覧表を表示します。 出力結果を doc_table_list.txt に記録します。 コマンド:@A:TOOL_TABLE_LIST [Enter] スクリプトファイル または ② 索
PL/SQLブロックまたはストアド・プログラムは、共にサーバ上にて動作するためデバッグが困ります。 ここでは、デバッグの仕方を2通り説明します。 まず1つ目の方法は、ワークテーブルに途中の値をINSERTする方法です。ログテーブルがある場合は、一時的にそのテーブルにINSERTしデバッグすることができます。 ※ INSERT命令の後に、COMMITを入れていないとエラーになった場合、値が登録されません。またCOMMITを入れていたため、途中のトランザクションが他のセッションに反映されたりもしますので注意して下さい。この方法は原因が解らず長期的なデバッグに向いています。 2つ目の方法は、後で詳しく説明しますが DBMS_OUTPUTパッケージを使用する方法です。 PL/SQLブロックを開発する場合は、いきなりホスト言語に埋め込むのではなく、メモ帳などのテキストエディタにてプログラムを記述し、
複数に分割して管理することを『パーティショニング』といいます。大規模なシステムにおいて、大きな表や索引ができてしまいます。 管理の面からも複数の表に分けたいところです。手動にて行うなら、表を分けておきUNION ALLでつないだVIEW表を作成し、検索する方法があります。 OracleRDBMSでは、大規模なデータをパーティショニングできるようにした『パーティションド・オブジェクト』がありますです。手動にて行うに対し、自動で行ってくれるパーティショニングのことを『リアル・パーティショニング』と言います。 各パーティションは、異なる表領域に格納しますので、別々にバックアップを取ることができます。 パーティションド・オブジェクトには下記の2種類あります。 1. パーティションド・テーブル 2. パーティションド・インデックス まず、パーティションド・テーブルについて説明します。 パーティション
Oracle RDBMSの基本構造について説明しています。 Oracleの仕組みを理解してみましょう! ( 21p)
(2004/04/28) 文例集を追加し100例になりました。 (2004/02/23) SQL言語について基礎から覚えたいが時間がない方のために、目的別にSQL命令の文例集を作っていこうと思います。(とりあえず50例です)
データベースを利用したシステムのパフォーマンスは、『チューニング』という作業によって大幅に改善されます。 プログラムを変更せずに、いきなり処理時間が500~1000分の1に短縮されることもマレではありません。データベース・チューニングって魔法みたいだと思いませんか? このテキストは、Oracleデータベースを使用したシステムのチューニング方法について詳しく説明していきます。 データベース・チューニングすなわちシステムの調整は、『設計』、『開発』、『運用』のフェーズにて行います。(システム構築とは『分析』→『選定』→『計画』→『設計』→『開発』→『導入』→『保守』→「分析」と、各フェーズが循環している) それぞれのフェーズ別に解説していますので、それぞれの担当者が、その段階にて各項目の内容を1つずつチェックして下さい。 チューニング方法について、22章68項目にまとめましたので、Oracle
Oracleデータベースを利用したアプリケーション・システムを一歩踏み込んで構築(計画、設計、開発、導入、運用、保守)されたい方は、Oracleデータベースの概念や基本構造を理解する必要があります。このページでは『Oracleアーキテクチャ』について説明しています。 Oracle独自の専門用語が多数でてきますが、何度も読み返して下さい。繰り返し読まれると理解が深まると思います。
Oracle DatabaseというRDBMS(Relational Database Management System)がサーバ上にて動作するのですが、Oracleサーバが動作するのに必要なアイテムは下記のように分類されます。 ① メモリー群 データベース・バッファ・キャッシュ、Redoログバッファ・キャッシュ、共有ブール領域などのメモリー群 ② プロセス群 DBライタ(DBWR)、ログライタ(LGWR)、プロセスモニタ(PMON)、システムモニタ(SMON)、アーカイバ(ARCH)などのバックグラウンド・プロセス群 ③ ファイル群 データファイル、制御ファイル、初期パラメータファイル、Redoログファイル、アーカイブファイルなどの物理ファイル群 その内、メモリー群とプロセス群を合せて、『Oracleインスタンス』と言います。 ※ Oracleインスタンスは、1台のサーバ上にて複数動作
『やさしくわかるSQL』の続編としまして、『やさしくわかるPL/SQL』をWeb版にて作成しました。 アプリケーション・システムを開発する場合、Visual Basic, COBOL, C等のホスト言語の中に、データベースにアクセスする為SQL言語を記述しなければなりません。このようなクライアント側アプリケーションたけではパフォーマンスの良いシステムを構築するのに限界があります。 大量のトランザクションを処理するようなバッチ処理など、データベースの操作に集中するような処理では、サーバ側にて動作するアプリケーションを組む方が非常にパフォーマンスが良くなります。 Oracle RDBMSには、PL/SQLというSQL言語に非常に良く似たサーバ側の言語を標準に持っています。 このPL/SQLを使えるようになると、データベースに登録するストアド・プログラムだけでなく、クライアントからもSQL言語の
このページを最初にブックマークしてみませんか?
『www.t3.rim.or.jp』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く