|
|||
1. 一つの表あたりの最大カラム数は? |
|||
一つの表あたりの最大カラム数は252です。 |
|||
2. カラムのデータ型をintegerからfloatに変えることができますか? |
|||
はい。DmSQLツール又はJDBA Toolを使って変更することができます。 DmSQLを使っての変更 dmSQL> ALTER TABLE 表名 MODIFY カラム名 TYPE TO FLOAT; 例:カラムSalaryのデータ型を、float に変更する場合 dmSQL> ALTER TABLE t1 MODIFY salary TYPE TO FLOAT; JDBA Toolを使っての変更 1. オブジェクト・ツリーの表をクリックして下さい。 2. 修正する表名をダブルクリックして下さい。 3. 修正をクリックして下さい。 4. 変更するカラムの種類をfloat に変更して下さい。 5. 確認をクリックして下さい。 |
|||
3. 主キーの整合性と外部キーの整合性を確かにする方法は? |
|||
参照する表に外部キーを作成する際に、以下の4つの更新アクションから選択することができます。
・ No action ・ Set null ・ Cascade ・ Set default JDBA Toolを使って参照の整合性(外部キー)を作成する方法 1. オブジェクト・ツリーの外部キーをクリックして下さい。 2. 作成ボタンをクリックして下さい。 3. 外部キー作成ウィザードが開始しますので、手順に従って下さい。 |
|||
4. ビュー使用時にデータを更新できますか? |
|||
はい。バージョン3.0から単一の表のビューでのデータの更新が可能です。複数の表のビューでのデータの更新はできません。
|
|||
5. カラム名を修正する方法は? |
|||
2つの方法があります。 JDBA Toolを使った修正 1. オブジェクト・ツリーから表をクリックして下さい。 2. カラム名を修正する表を選択して下さい。 3. 修正をクリックして下さい。 4. 修正するカラムの名称を変更して下さい。 5. 確認をクリックして下さい。 dmSQLを使った修正 dmSQL> ALTER TABLE 表名 MODIFY カラム名 NAME TO 新しいカラム名; 例: 表t1のsalaryカラムをageに修正する。 dmSQL> ALTER TABLE t1 MODIFY salary NAME TO age; |
|||
6. 新しいデータと古いデータと比較して違いを見つける方法は?
|
6 | ||
2つの学生の表、student1(id
char(5),name char(20))と student2(id char(5),name char(20))を想定し、名前が同じで、idが異なる生徒を以下のコマンドで見つけることができます。
dmSQL> select student1.id,student2.id,student1.name 2> from student1,student2 3> where student1.name=student2.name and 4> student1.id<student2.id; |
|||
7. 統計の更新操作とは何ですか?
|
|||
DBMasterは、内部で表や索引のようなデータベース・オブジェクトの統計を記録しています。これらの統計は、
データ問合せをより効果的にするための問合せ最適化に役立ちます。より効果的な問合せのために、定期的に統計の更新操作をすることをお勧めします。定期的又は自動的に統計が更新されるように設定することも可能です。詳細については、CREATE
TABLE文を参照して下さい。 |
|||
8. WindowsからUnixへデータベースをポートする方法は?
|
|||
双方のプラットフォームが、同じCPU(例えば、インテルx86)を使用している場合、簡単にポートすることが出来ます。データベースのファイル(データ・ファイル、ジャーナル・ファイル、BLOBファイル)を一方のプラットフォ−ムから、もう一方のプラットフォームにコピーするだけです。そしてdmconfig.iniファイルからデータベースの全情報をコピーし、ポートするプラットフォームにそのdmconfig.iniファイルに適用させます。その際、DB_DbDir
、DB_JnFil 、 DB_BbFile などのようなキーワードを必ずすべて正しいディレクトリもしくはパスにセットして下さい。 逆に、両方のプラットフォームが異なるCPUを使用している場合は、Windowsのプラットフォームから全てのデータベースをアンロードする必要があります。さらに、拡張子が.s0 と .b0の2つのスクリプトファイルを、UNIXのプラットフォームにコピーします。そのファイルを使って、データベースをロードしてください。以下の手順は、WindowsプラットフォームからUNIXプラットフォームに、データベースdb1をポートする方法です。 1. Windowsプラットフォーム上で dmSQL を起動して、次のコマンドを入力してください (db1port はスクリプト・ファイルです。) dmSQL> connect to db1 SYSADM; dmSQL> unload db to db1port; 2. UNIXプラットフォーム上で UNIXプラットフォームに、ファイルdb1port.s0 と db1port.b0 をコピーして下さい。dmSQL を起動して、次のコマンドを実行してください。 dmSQL> create db db1; dmSQL> load db from db1port; |
|||
9. クライアントがデータベースに接続する時に「サーバ-に接続できません」というメッセージが表示されるのはなぜですか?
|
|||
以下の理由が考えられます。 ・ データベース・サーバがまだ起動していない。 ・ データベース・サーバのIPアドレス又は通信ポートが間違っている。 ・ 既に最大クライアント数に達している。 |
|||
10. 表を他のデータベースに移す方法は?
|
|||
dmSQL文のLOADとUNLOADを使うことができます。 UNLOAD文は、表と表のスキーマから外部ファイルへデータをダウンロードします。 この外部ファイルはスクリプト・ファイルで、表スキーマ、索引を作成、又は新規データ挿入のためのdmSQL文が含まれています。このファイルは、LOAD文を使って表をアップロードする時に使われます。 表で使えるUNLOAD文は2種類あります。 1.UNLOAD TABLE文。 この文はデータをダウンロードするだけでなく、表を作成するためのコマンドをファイルに記録します。 2. UNLOAD DATA文。このコマンドはデータをダウンロードするのみです。 下記の例は、dmSQLを使って表tb1 をデータベースdb1 からデータベースdb2 に移動する方法を示しています。 例1: dmSQL> connect to db1 SYSADM; dmSQL> unload table from tb1 to 'j:\database\tb1'; dmSQL> disconnect db1 ; dmSQL> connect to db2 SYSADM; dmSQL> load table from 'j:\database\tb1'; データベース全体をunloadする場合は、下記のコマンドを入力して下さい。 例2 : dmSQL> connect to database-name SYSADM; dmSQL> unload db to new-database-name ; |
|||
11. 表とカラム名は大文字・小文字を識別しますか?
|
|||
DBMasterの識別子は、初期設定では大文字・小文字を識別しますが、dmconfig.iniファイルのキーワードDB_IDCAPを設定して、大文字・小文字を識別しないように変更することができます。
注 : この設定は、データベースが作成されるまで無効です。 |
|||
12. DBMasterにはどのようなロック・レベルがありますか?
|
|||
DBMasterには、行ロック、ページロック、表ロックの3つのロックがあります。 |
|||
13. データベースが既にいっぱいの状態で、レコードを挿入する方法は?
|
|||
データベースの表領域のサイズを増やす以外に方法はありません。現在の表領域の種類が標準になっていますので(自動拡張表領域の場合、必要に応じて表領域が自動拡張されます)、2通りの方法でサイズを増やします。1つ目は、表領域にファイルを追加する方法です。2つ目は表領域にページを増やす方法です。DmSQLを使って表領域を拡張します。
表領域にファイルを追加する方法 データベースMY_DBの表領域ts1にデータファイルf7を追加する場合、dmconfig.iniファイルに次の1行を追加してください。 [MY_DB] f7 = /disk1/usr/f7.dat 3000 下記のSQL文で表領域ts1にデータファイルf7を追加します。 dmSQL> ALTER TABLESPACE ts1 ADD DATAFILE f7; 表領域にページを追加する方法 表領域に100ページ追加して、既存ファイルf1を拡張します。 dmSQL> ALTER DATAFILE f1 ADD 100 pages; |
|||
14. DBMasterではカラム単位で権限を与えることができますか?
|
|||
はい。DmSQLツールを使ってカラムのレベルを設定することができます。 ユーザーLynnにカラムCOMPANYの更新の権限を与える場合、その構文は以下のとおりです。 dmSQL> GRANT UPDATE(COMPANY) TO Lynn; |
|||
15. 保存可能な最大レコード数は?
|
|||
理論上は5.629499534213E+14レコード保存できます。この数は既存のハードウェアの容量を越えているので、実質的にはDBMasterが扱えるレコード数は無限です。
|
|||
16. データベース・ファイルを他のディレクトリに移したいのですが、どうすればよいですか? |
|||
現在、DBMasterは、自動移行機能を提供していません。手動でファイルを別のディレクトリに移動し、データベースの設定ファイル(dmconfig.ini)を修正してください。
下記は、ファイルの移動方法の説明です。: 1. データベースをシャットダウンします。 2. OSが提供しているファイル・システムでデータベースのファイルを新しいディレクトリに移動します。 3. dmconfig.ini の DB_DBDir, を修正し、新しいディレクトリを指定します。 4. データベースを再起動します。 |
|||
17. 異なるロック・レベルを利用する時、何に考慮すべきですか?
|
|||
最優先に考えるべきことは、異なるレベルのロックを使用する時、いかにシステムのリソースと同時処理能力(currency
control)のバランスを取るかということです。ユーザの多くは、最低レベルのロックを使用し、同時処理能力を向上させようとするかもしれません。しかし、この方法は、大量のシステムのリソースを必要とします。
DBMasterは、システムの一部分のリソースを使用してロックを管理できます。多くのローレベルのロック(Row-Level Lock)を使用すると、多くのシステム・リソースが必要です。その結果、リソースの不足でその他のリソースが必要なプロセス(Process)がリソースを使用できなくなり、システムのパフォーマンスを下げることになります。高レベルのロックを使用すると、システムのリソースの消費を削減できますが、システムの同時処理能力を下げてしまいます。最良の方法は、使用目的にもとづいて、使用するロックのレベルを決定します。 |
|||
18. あるユーザがデータ検索している時、他のユーザは、その検索している表に対してデータ修正やデータの追加を行えますか?
|
|||
検索時にSELECT …. FOR BROWSEコマンドやブラウザ・モデルの(DB_BROWS
=1)を実行すると、ロックがかかりません。この時、他のユーザは、この表に対して修正もしくは追加が行えます。 一般のSELECTコマンドやブラウザ・モードの停止(DB_BROWS =0)を実行時には、Sロックがかかります。その表に対する使用に対する制限は、ロックの設定レベルによって異なります。 行レベルロック: あるユーザが検索している行と他のユーザが修正している行が異なる場合、他のユーザは、データに対して追加や修正を行えます。同じ場合、他のユーザは、検索しているユーザの検索が終わるのを待ち、ロック解除後、データの修正もしくは追加が初めて実行できます。 ページレベルロック: あるユーザが検索時に使用しているデータ・ページと、他のユーザが修正しているページが異なる場合、他のユーザは、データに対して追加や修正を行えます。同じページの場合、他のユーザは、検索しているユーザの検索が終わるのを待ち、ロック解除後、データの修正もしくは追加が初めて実行できます 表レベルロック: 他のユーザが表を検索している場合、ユーザは、この表に対する検索しか実行できません。データを修正する場合、他のユーザは、検索しているユーザの検索が終わるのを待ち、ロック解除後、データの修正もしくは追加が初めて実行できます。 注意: 上記の説明は、表に索引がないと仮定した場合で、もし、索引がある場合、他のユーザが索引のページを検索しているかどうか考慮しなければなりません。ですから、索引ある場合、ロックはより複雑になります。 |
|||
19. DBMasterは、いつ、統計値更新を自動実行しますか?
|
|||
DBMasterは、ユーザが指定した時間に統計値の更新作業を行います。ユーザは、下記のdmSQLコマンドでそのスケジュール(Schedule)を指定できます。
ALTER TABLE table_name SET UPDATE STATISTICS EVERY n DAYS nは日数を意味します。 注意: ユーザは、DBMasterが行う統計値の更新作業時間を指定できますが、DBMasterがその指定した時間がきたら実行するとは限りません。先ず、データベースを閉じ、再起動します。この時、DBMasterは指定されたスケジュールどおりに統計値更新作業が行われたかどうか検査します。データベース再起動時に更新時間が過ぎていた場合、DBMasterは、更新作業を行います。そうでない場合、DBMasterは、更新作業を行いません。システム管理者に、定期的に手動で統計値を更新することをお薦めします。 |
|||
20. DBMasterの安全性はどうなっていますか?
|
|||
DBMasterは、さまざまな方法を使ってデータベースの安全性を保障します。 DBMasterは、アクセス権がないユーザがデータベースを使用することを防ぐために、データベースに接続するときにユーザにログインを要求します。 システム管理者は、DBMasterを使ってデータベースのオブジェクト設定権限を設定でき、悪質な破壊行為や権限のないユーザの使用を防ぎます。 DBMasterは、(View)機能を提供します。システム管理者は、この機能を使用して異なる安全レベルを設定し、ユーザが見ることができるデータを表示することができます。 DBMasterは、Commit時にWrite-Ahead Logで全てのトランザクション(Transaction)を確保します。これらのトランザクションに関するデータは、ジャーナル・ファイルに記録され、システム・クラッシュやデータベースが不正に閉じたときに、システム修復に使用されます。 DBMasterは、バックアップ機能を提供します。データを失った時、データベースが修復出来ない時、バックアップされたデータベースが保護機能を提供します。 |
|||
21. DBMasterのユーザー権限は、何段階に分かれていますか?
|
|||
DBMasterには、四つの権限レベルがあります。 Connect権のレベル: ・ データベースへの接続が可能。 ・ システムの表(System Tables)に対してSELECTコマンドを実行できる。 ・ 他のユーザが委譲した表に対する権限を有する ・ 高レベルの権限を指定する前に、Connectをまず指定しなければならない。 Resource権限レベル: ・ 表の作成、削除、ビュー(View)、ドメイン(Domain)、および同義字(Synonym)を実行できる。 ・ 他のユーザに委譲した自分の表権限を指定、キャンセルできる。 ・ 他のユーザが委譲した表に対する権限を有する。 ・ Connect権限レベルの全ての権限を有する。 DBA権限レベル: ・ システムの表以外に、全ての表権限を有する。 ・ 全てのユーザやグループに委譲するデータベース・オブジェクトの権限を指定、キャンセルできる。 ・ 一つのグループに対してユーザーの行為を追加、削除できる。 ・ 起動、データベースのシャット・ダウン、新規作成、削除および表領域の変更、データベースのバックアップが可能。 ・ ConnectとResourceの全ての権限を有する。 |
|||
22. DBMasterは、あるカラムに対してアクセス権を設定できますか?
|
|||
設定できます。各カラムの権限には、INSERT、UPDATE、REFERENCEの三種類の設定があります。
関係するSQL記述文は次のとおりです。 GRANT [UPDATE][,INSERT][,REFERENCE] column_name[,column_name…] ON table_name TO {user_id}{group_id|PUBLIC}[,{user_id|group_id} ]… 実例: 記述文は、次のとおりです。 dmSQL>grant UPDATE (Company) ON t1 to lynn; |
|||
23. DBMasterを再インストールする時、記録されているデータは、消えてしまいますか? |
|||
消えません。 |
|||
24. データベースを他のマシンに移動させる際にアプリケーションを設定する必要はありますか? |
|||
アプリケーションの設定は必要ありません。 環境設定ファイル内の DB_SvAdr を変更することのみが必要で、 DB_SvAdr 内の古いサーバIPアドレスを新しいものに変更してください。 |
|||
25. プログラム起動中にロックをかける方法はありますか? |
|||
プログラム起動中にロックをかける方法はLock Table dmSQL コマンドを実行します。
LOCK TABLE table_name {SHARE|EXCLUSIVE} MODE {WAIT|NO WAIT} |
|||
26. スクリプトファイルの実行方法は?
|
|||
スクリプトファイルを実行させるにはdmSQLツールが必要です。 RUNコマンドでスクリプトファイルを実行。 例:dmFund.sqlのスクリプトファイルがあれば以下のスクリプトファイルを実行できます。 dmSQL>run dmFund.sql; |
|||
27. プログラム動作中にすべての表をロックできますか? |
|||
SQLコマンド'Lock Table' を使用することで、プログラム動作中にすべての表に対してロックを掛けることができます。
LOCK TABLE table_name{SHARE|EXCLUSIVE} MODE {WAIT|NO WAIT}; |
|||
28. RUN-TIME中にロックを掛ける方法は?
|
|||
dmSQLを起動し、以下のコマンドを実行してロックを掛ける。 LOCK TABLE table_name {SHARE|EXCLUSIVE} MODE {WAIT|NO WAIT}; |
|||
29. クライアント・サーバモードでデータベースをスタートするにはどうしたらよいですか? |
|||
サーバ側 |
|||
|
|||