Oracle Database Administration I (1Z0-082-JPN) サンプル問題

 

【第1問】

データベース・インスタンスに関して正しい記述はどれですか。

 

選択肢

1.       インスタンスがデータベースなしで存在することは不可能である。

2.       データベース・ファイルを管理する一連のメモリー構造である。

3.       リスナーが終了すると、インスタンスも終了する。

4.       サーバー・プロセスが終了すると、インスタンスも終了する。

 

解答

データベース・ファイルを管理する一連のメモリー構造である。

 

解説

データベース・ファイルを管理する一連のメモリー構造をデータベース・インスタンスと呼びます。

データベース作成前の状態では、インスタンスは存在しません。

リスナーやサーバー・プロセスが終了してもインスタンスは終了しません。

 

【第2問】

システム・モニター・プロセスについて正しい記述はどれですか。

 

選択肢

1.       リスナー・プロセスにサービスの稼働状況を登録する。

2.       インスタンス障害後、自動的にインスタンス・リカバリを行う。

3.       REDOログ・バッファの内容をREDOログ・ファイルに書き出す

4.       サーバー・プロセスの異常終了後、プロセス・リカバリを実行する。

 

解答

インスタンス障害後、自動的にインスタンス・リカバリを行う。

 

解説

インスタンス障害後、自動的にインスタンス・リカバリを行うのはシステム・モニター・プロセスです。

リスナー・プロセスにサービスの稼働状況を登録するのは、リスナー登録プロセスです。

REDOログ・バッファの内容をREDOログ・ファイルに書き出すのはログ・ライター・プロセスです。

サーバー・プロセスの異常終了後、プロセス・リカバリを実行するのはプロセス・モニター・プロセスです。

 

【第3問】

Enterprise Manager Database Expressに関して正しい記述はどれですか。

 

選択肢

1.       データベースのバックアップを取得するために使用できる。

2.       常にSYSもしくはSYSTEMユーザーでアクセスする必要がある。

3.       アクセスするためにはTCPディスパッチャを起動しておく必要がある。

4.       リスナーの起動を行うことができる。

 

解答

アクセスするためにはTCPディスパッチャを起動しておく必要がある。

 

解説

Enterprise Manager Database Expressにアクセスするためには、TCPディスパッチャやリスナー、データベース・インスタンスを起動しておく必要があります。

Enterprise Manager Database Expressでバックアップを取得することはできません。

Enterprise Manager Database Expressにアクセスするためのロール、EM_EXPRESS_BASICもしくはEM_EXPRESS_ALLを持っていればアクセス可能です。

 

【第4問】

次のコマンドでインスタンスを停止しました。

SQL> SHUTDOWN  IMMEDIATE

その後、次のコマンドを発行しました。

SQL> STARTUP  NOMOUNT

上記のコマンドによりどのような状態になりますか。

 

選択肢

1.       SYSTEM表領域がOPENされる。

2.       バックグラウンド・プロセスが起動される。

3.       制御ファイルが読み込まれる。

4.       オンラインREDOログ・ファイルがOPENされる。

 

解答

バックグラウンド・プロセスが起動される。

 

解説

NOMOUNTなので、バックグラウンド・プロセスが起動された状態となります。

SYSTEM表領域をはじめとしてデータファイルがOPENされるのはOPENのタイミングです。制御ファイルが読み込まれるのはMOUNTのタイミングです。

 

【第5問】

トレース・ファイルに関して正しい記述はどれですか。

 

選択肢

1.       SQLをチューニングする目的で、手動でSQLトレース機能を有効化することができる。

2.       単一のトレース・ファイルにすべてのバックグラウンド・プロセスが書き込んでいる。

3.       トレース・ファイルはORACLE_HOME/rdbmsに書き込まれる。

4.       古いトレース・ファイルは、不要になっても消去してはいけない。

 

解答

SQLをチューニングする目的で、手動でSQLトレース機能を有効化することができる。

 

解説

トレース・ファイルには、バックグラウンド・プロセスが生成するトレース・ファイルとサーバー・プロセスが生成するトレース・ファイルとがあります。

プロセスごとに別個のトレース・ファイルが生成されます。トレースファイルは自動診断リポジトリ(ADR)に生成されます。

 

【第6問】

PFILEを使用してデータベース・インスタンスを起動しました。

次のコマンドを実行しました。

SQL> ALTER SYSTEM SET DB_CACHE_SIZE=2048M;

どのような結果になりますか。

 

選択肢

1.       静的なパラメータのため、エラーとなる。

2.       PFILEを使用して起動しているため、エラーとなる。

3.       変更は現行のインスタンスに反映されるが、PFILEには反映されないため、再起動後も変更後の値を維持したい場合は手動でPFILEを編集する必要がある。

4.       変更は現行のインスタンスおよびPFILEに反映される。

 

解答

変更は現行のインスタンスに反映されるが、PFILEには反映されないため、再起動後も変更後の値を維持したい場合は手動でPFILEを編集する必要がある

 

解説

PFILEには、ALTER  SYSTEM文によるパラメータ値変更は反映されません。PFILEは手動で編集する必要があります。

 

【第7問】

Oracle Netの拡張接続オプションに関して正しい記述はどれですか(2つ選択してください)。

 

選択肢

接続時フェイルオーバーとソース・ルーティングは併用できる。

ロード・バランシングとソース・ルーティングは併用できる。

接続時フェイルオーバーを有効にしている時、接続を試行する回数は、リスト内のアドレス数で決まる。

ロード・バランシングと接続時フェイルオーバーを併用すると、接続に成功するまで各アドレスをランダムに試行する。

 

解答

接続時フェイルオーバーを有効にしている時、接続を試行する回数は、リスト内のアドレス数で決まる。

ロード・バランシングと接続時フェイルオーバーを併用すると、接続に成功するまで各アドレスをランダムに試行する。

 

解説

ロード・バランシングと接続時フェイルオーバーは併用できます。

ソース・ルーティング(SOURCE_ROUTE)というのは、アドレスの提供順に経由して接続する、という指定ですので、ロード・バランシングや接続時フェイルオーバーと併用できません。

 

【第8問】

権限分析に関して正しい記述はどれですか(2つ選択してください)。

 

選択肢

1.      SYSユーザーを含めて、すべてのユーザーが使用するすべての権限の分析を行える。

2.      ロールを介さずに直接付与された権限のみを分析できる。

3.      指定したロール経由で付与された権限を分析できる。

4.      権限分析は、DBMS_PRIVILEGE_CAPTUREパッケージを使用して行う。

 

解答

指定したロール経由で付与された権限を分析できる。

権限分析は、DBMS_PRIVILEGE_CAPTUREパッケージを使用して行う。

 

解説

権限分析を使用すると、SYSユーザー以外の処理を監視し、使用した権限、未使用の権限を分析できます。特定のロール経由で付与された権限について分析することもできますし、データベース全体での権限使用について分析することもできます。

 

【第9問】

表領域やデータファイルの情報を表示するためのビューのうち、MOUNT状態で問合せ可能なものはどれですか(2つ選択してください)。

 

選択肢

1.      DBA_TABLESPACES

2.      V$TABLESPACE

3.      DBA_DATA_FILES

4.      V$DATAFILE

 

解答

V$TABLESPACE

V$DATAFILE

 

解説

V$接頭辞のビューは動的パフォーマンスビューです。V$TABLESPACEV$DATAFILEは制御ファイルからデータを取りますので、MOUNT状態で問合せることができます。

 

【第10問】

データ・ブロックへの行データの格納に関して正しい記述はどれですか。

 

選択肢

1. 行移行によりROWIDは変更される。

2. PCTFREEを十分なサイズ確保すれば、行連鎖は回避できる。

3. UPDATE文によりデータ・ブロック内の空き領域が大きくなることはない。

4. 行は1つ以上の行断片に含まれ、各行断片は、行ヘッダーおよび列データで構成される。

 

解答

行は1つ以上の行断片に含まれ、各行断片は、行ヘッダーおよび列データで構成される。

 

解説

行は1つ以上の行断片に含まれ、各行断片は、行ヘッダーおよび列データで構成されます。

行移行が起きてもROWIDは変更されません。

PCTFREEを十分にとっても、一行のサイズが非常に大きい場合、行連鎖は回避できません。

列値のサイズが小さくなるようなUPDATEであれば、データブロック内の空き領域が増えます。

 

【第11問】

DEFERRED_SEGMENT_CREATIONTRUEに設定しています。

次のコマンドを発行しました。

CREATE TABLE employees (id NUMBER(5) PRIMARY KEY, name VARCHAR2(20), mail VARCHAR2(30) UNIQUE KYE);

セグメント作成のタイミングについて、正しい記述はどれですか。

 

選択肢

1. 表作成時には表セグメントも索引セグメントも作成されず、データが挿入されるタイミングで表セグメントと索引セグメントが作成される。

2. 表作成時に表セグメントも索引セグメントも作成される。

3. 表作成時には表セグメントと主キー索引の索引セグメントのみ作成され、一意キー索引の索引セグメントはデータが挿入されるタイミングで作成される。

4. 表作成時には表セグメントのみ作成され、索引セグメントはデータが挿入されるタイミングで作成される。

 

解答

表作成時には表セグメントも索引セグメントも作成されず、データが挿入されるタイミングで表セグメントと索引セグメントが作成される。

 

解説

遅延セグメント作成が有効になっていますので、表作成時には表セグメントも索引セグメントも作成されず、表に一行目のデータが挿入されるタイミングで表セグメントと索引セグメントが作成されます。

 

【第12問】

Oracle Databaseのセグメントに分類されるものはどれですか。

 

選択肢

1.       ビュー

2.       パッケージ

3.       索引パーティション

4.       トリガー

 

解答

索引パーティション

 

解説

セグメントとは、表領域用に格納されるタイプのオブジェクトです。

パッケージやトリガー、ビューはスキーマ・オブジェクトですが、データ・ディクショナリに定義が格納されるだけですので、セグメントではありません。

 

【第13問】

UNDO管理に関する初期化パラメータに関して、正しい記述はどれですか。

 

選択肢

1. UNDO_MANAGEMENTTRUEに設定すると自動UNDO管理が有効になる。

2. 自動拡張可能なUNDO表領域で、且つ、現行のUNDO表領域に十分な領域がある場合にUNDO_RETENTIONで設定した秒数以上、UNDOが保存される。

3. UNDO_TABLESPACEに複数のUNDO表領域を指定すると、すべてのUNDO表領域がアクティブになる。

4. TEMP_UNDO_ENABLEDTRUEに設定すると一時表に対するトランザクションはロールバックできなくなる。

 

解答

自動拡張可能なUNDO表領域で、且つ、現行のUNDO表領域に十分な領域がある場合にUNDO_RETENTIONで設定した秒数以上、UNDOが保存される。

 

解説

UNDO保存期間の低しきい値を指定する初期化パラメータがUNDO_RETENTIONです。

自動UNDO管理を有効にするには、UNDO_MANAGEMENTAUTOに設定します。

UNDO_TABLESPACEには一つのUNDO表領域しか指定できません。

TEMP_UNDO_ENABLEDTRUEに設定すると一時UNDOが有効化されますが、一時表に対するトランザクションがロールバックできなくなるわけではありません。

 

【第14問】

EMPLOYEES表には、データ型がNUMBERSALARY列があります。休職中の社員はSALARY列がNULLになっています。

正常に実行される問合せはどれですか。2つ選択してください。

 

選択肢

1. SELECT employee_id, NVL(salary*1.1, 'On Leave') FROM employees;

2. SELECT employee_id, NVL2(salary*1.1, 'On Leave') FROM employees;

3. SELECT employee_id, NVL(TO_CHAR(salary*1.1), 'On Leave') FROM employees;

4. SELECT employee_id, NVL(salary*1.1, TO_NUMBER('On Leave')) FROM employees;

5. SELECT employee_id, NVL2(salary*1.1, TO_CHAR(salary*1.1), 'On Leave') FROM employees;

 

解答

SELECT employee_id, NVL(TO_CHAR(salary*1.1), 'On Leave') FROM employees;

SELECT employee_id, NVL2(salary*1.1, TO_CHAR(salary*1.1), 'On Leave') FROM employees;

 

 

解説

NVL関数、NVL2関数はNULLを指定された値で置き換える関数ですが、戻り値のデータ型が同じになる必要があります。そのため、TO_CHAR変換関数を用いてデータ型を揃えています。

 

【第15問】

EMPLOYEES表から部門IDと職種IDのリストを作成します。同じ組み合わせは一度しか表示しません。正しい問合せはどれですか。

 

選択肢

1. SELECT  UNIQUE  department_id,  job_id  FROM  hr.employees;

2. SELECT  UNIQUE  department_id,  UNIQUE  job_id  FROM  hr.employees;

3. SELECT  department_id,  DISTINCT  job_id  FROM  hr.employees;

4. SELECT  DISTINCT  department_id,  UNIQUE  job_id  FROM  hr.employees;

 

解答

SELECT  UNIQUE  department_id,  job_id  FROM  hr.employees;

 

解説

同じ組み合わせは一度のみ、重複を表示しないので、DISTINCTもしくはUNIQUEを使用します。

 

【第16問】

NLS_DATE_FORMATDD-MON-RRNLS_DATE_LANGUAGEAMERICANに設定されています。
次の問合せのうち、エラーにならずに実行できるものはどれですか(2つ選択してください)

 

選択肢

1. SELECT * from hr.employees where hire_date > '31-03-20';

2. SELECT * from hr.employees where hire_date > '31-03-2020';

3. SELECT * from hr.employees where hire_date > '31-MAR-20';

4. SELECT * from hr.employees where hire_date > '31-MARCH-2020';

 

解答

SELECT * from hr.employees where hire_date > '31-MAR-20';

SELECT * from hr.employees where hire_date > '31-MARCH-2020';

 

解説

NLS_DATE_FORMATDD-MON-RRなので、月はMARもしくはMARCHと指定する必要があります。月を03と書いてしまうとエラーになります。

 

【第17問】

UNIONなどの集合演算子を用いた複合問合せについて正しい説明はどれですか。

 

選択肢

1.      複合問合せでは、各SELECTORDER BY句をつけることができる。

2.      最初の問合せによって返される各列のデータ型は、2番目の問合せによって返される対応する列のデータ型と一致する必要がある。

3.      ORDER BY句では、2番目の問合せで指定した別名で指定できる。

4.      すべての集合演算子で出力がソートされる。

 

解答

最初の問合せによって返される各列のデータ型は、2番目の問合せによって返される対応する列のデータ型と一致する必要がある。

 

解説

最初の問合せによって返される各列のデータ型と、返される列数は、2番目の問合せによって返される対応する列のデータ型、列数と一致する必要がある。

ORDER BY句は一番目の問合せで指定した列名で指定する必要があります。

UNION ALL句を使用した場合は、ソートされません。

 

【第18問】

内部結合と外部結合に関して正しい記述はどれですか。

 

選択肢

1.       外部結合は結合条件が一致しない行だけを返す。

2.       Oracle結合構文を使って完全外部結合を記述できる。

3.       Oracle結合構文を使って右側外部結合を記述することはできない。

4.       Oracle結合構文とSQL:1999準拠のANSI結合構文とで、パフォーマンスは変わらない。

 

解答

Oracle結合構文とSQL:1999準拠のANSI結合構文とで、パフォーマンスは変わらない。

 

解説

Oracle結合構文とSQL:1999準拠のANSI結合構文とで、パフォーマンスは変わりません。Oracle結合構文と呼んでいるのは、JOIN句は使わず、WHERE句で結合条件を指定するタイプの結合構文のことです。

 

【第19問】

シーケンスについて正しい記述はどれですか。

 

選択肢

1.       シーケンスを使って生成した主キー値に欠番が生じることはない。

2.       一つのシーケンスを複数の表の主キー値の生成で使用することができる。

3.       表を削除すると、その表の列値の生成に使用していたシーケンスは無効になる。

4.       シーケンスはシステム・オブジェクトに分類される。

 

解答

一つのシーケンスを複数の表の主キー値の生成で使用することができる。

 

解説

一つのシーケンスを複数の表の主キー値の生成で使用することは可能です。ただし、それぞれの表ごとに見ると、主キー値に欠番が生じます。

表とシーケンスは定義上の依存関係はありませんので、表を削除したからといってシーケンスが無効になることはありません。

シーケンスはスキーマ・オブジェクトに分類されます。

 

【第20問】

Oracle Databaseのタイム・ゾーン、日付データ型およびタイムスタンプ・データ型に関して正しい記述はどれですか。2つ選択してください。

 

選択肢

1. CURRENT_TIMESTAMPは、タイム・ゾーン無しのタイムスタンプを返す。

2. SESSIONTIMEZONEは、現行セッションのタイムゾーンを返す。

3. DBTIMEZONEは現行セッションのタイムゾーンを返す。

4. SYSDATEは現行セッションのタイム・ゾーン情報付きの結果を返す。

 

解答

SESSIONTIMEZONEは、現行セッションのタイムゾーンを返す。

 

解説

SESSIONTIMEZONEは、現行セッションのタイムゾーンを返します。CURRENT_TIMESTAMPは、タイムゾーン付きの結果を返します。

DBTMEZONEはデータベースのタイムゾーンを返します。

SYSDATEDBサーバーの日時を返します。