ホームページ >データベース >Oracle >オラクルの面接での質問の概要

オラクルの面接での質問の概要

coldplay.xixi
coldplay.xixi転載
2020-07-31 16:39:314807ブラウズ

オラクルの面接での質問の概要

1. 削除と切り捨ての違いは何ですか?

1) Truncate は DDL ステートメントであり、DELETE は DML ステートメントです。

2) Truncate は DELETE よりもはるかに高速です;

理由は次のとおりです: DELETE 操作を実行すると、最初にすべての表データがロールバック表スペースに COPY され、データ量が異なります。時間です。 TRUNCATE は、ロールバック表スペースに入らずにデータを直接削除します。

3) データを削除すると、データのロールバックのためにロールバックを実行できます。 Truncate は完全に削除され、ロールバックすることはできません。

4) Truncate 操作はテーブルの削除トリガーをトリガーしませんが、削除は通常どおりトリガーされます。

5) Truncate ステートメントでは where 条件を指定できません。つまり、すべてのデータは削除のみ可能ですが、DELETE ではデータを削除する where 条件を指定できます。

6) Truncate 操作ではテーブルの最高水準点 (High Water Mark) がリセットされますが、削除操作ではリセットされません。

[トピックの推奨事項]:2020 Oracle 面接の質問の概要 (最新)

2、集合演算子

Union : あります重複する値は含まれておらず、デフォルトでは最初のクエリの最初の列によって昇順に並べ替えられます。

すべて結合: 完全な結合には重複した値が含まれます。整理されていません。

マイナスには重複する値が含まれていないため、並べ替えられません。

3. データベースの 3 つの主要なパラダイムは何ですか?

1) 第一正規形: アトミック部分。各列の値をそれ以上分割できないことが必要です。

2) 第 2 正規形: テーブルは 1 つのエンティティのみを記述します (列に冗長データがある場合は満たされません)

3) 第 3 正規形: すべての列と主キー値 D.

4 トランザクション (ACID) の特徴は何ですか?

1) アトミック: トランザクション内のすべての操作を実行するか、まったく実行しない必要があります。いずれかの操作が失敗すると、トランザクション全体が失敗します。

2) 一貫性: トランザクション終了後のシステム状態は同じです。

3) 分離: 同時に実行されるトランザクションは、互いの中間状態を確認できません。

4) 耐久性: トランザクションの完了後、致命的な障害が発生した場合でも、障害後にログと同期バックアップを通じてデータを再構築できます。

5 Mysql データベースと Oracle データベースの違いは何ですか?

1. アプリケーションの観点から見ると、Mysql は中小規模のアプリケーション向けのデータベースです。主に個人や中小企業が利用します。 Oracle は大規模なデータベースであり、通常、かなりの規模のエンタープライズ アプリケーションに使用されます。

2. 自動増加するデータ型: MySQL には自動増加するデータ型があります。 Oracle には自動拡張データ型がありません。自動インクリメントシーケンスを作成する必要があります。

3、group by の使用法: Mysql では、group by は SELECT ステートメント内で自由に使用できますが、ORACLE では、クエリ ステートメントにグループ関数がある場合、他のカラムはそのグループによって処理される必要があります。関数または group by 句を使用しない場合、エラーが報告されます。

4. ガイダンスの観点: MySQL では、一重引用符と二重引用符を使用して文字列をラップできますが、Oracle では一重引用符のみを使用して文字列をラップできます。 #Oracle と SQL Server 2005 年の違い?

巨視的に: 1). 最大の違いはプラットフォームです。Oracle はさまざまなプラットフォームで実行できますが、SQL Server は Windows プラットフォームでのみ実行できます。 Windows プラットフォームのセキュリティは、SQL サーバーの安定性とセキュリティに影響します

2). Oracle で使用されるスクリプト言語は PL-SQL ですが、SQL サーバーで使用されるスクリプトは T-SQL です

微視的に: データ型から、データベース構造等 回答


7. Oracleのカーソルの使い方は?

1). Oracle のカーソルは、表示カーソルと暗黙カーソルに分けられます

2). 表示カーソルは、cursor...is コマンドで定義されたカーソルであり、クエリ ステートメント (select) を返すことができます 複数のレコード暗黙的カーソルは、単一レコードを返す挿入、削除、更新および問合せ(選択)文の実行時にPL/SQLによって自動的に定義されます。

3). 明示的なカーソル操作: カーソルのオープン、カーソルの操作、カーソルのクローズ。PL/SQL は暗黙的に SQL カーソルをオープンし、SQL 文を内部で処理してからクローズします


# 8
Oracle の関数とプロシージャの違いは何ですか?

1). 関数はストアド プロシージャの一種であることが理解できます 2). 関数にはパラメータを含めることはできませんが、戻り値が必要です。ストアド プロシージャは次のことができます。パラメータがなく、戻り値も必要ありません 3)。関数の戻り値には戻りパラメータ モードがありません。ストアド プロシージャは、out パラメータを通じて値を返します。複数のパラメータを返す必要がある場合は、これをお勧めします。ストアド プロシージャを使用するため

4) SQL データ操作ステートメントでは関数のみを呼び出すことができます。ストアド プロシージャを呼び出すことはできません




9 Oracle をインポートおよびエクスポートするには、いくつかの方法があります、違いは何ですか?

1). oracle ツール exp/imp を使用します 2). plsql 関連ツールを使用します 方法 1. バイナリデータのインポート/エクスポート、2. plsql インポート/エクスポート テキストですSQL ステートメントのファイル

3) sqlloader

4) dblink

10. コールド バックアップとホット バックアップの違いとそれぞれの利点を説明してください。

コールド バックアップは、データベースが正常にシャットダウンされたときに、キー ファイルを別の場所にコピーする方法です。
ホット バックアップは、データベースの実行中にアーカイブ モードでデータをバックアップする方法です。

コールド スタンバイの長所と短所:
1)。これは非常に高速なバックアップ方法です (ファイルをコピーするだけです)
2)。アーカイブが簡単 (コピーするだけ)
3)。特定の時点への復元は簡単です (ファイルをコピーして戻すだけです)
4)。アーカイブ方法と組み合わせて、データベースの「最新の状態」を復元できます。 ###5).メンテナンスの負担は少なく、セキュリティは高い。

不十分なコールド バックアップ: 1).単独で使用すると、「ある時点」までの回復しか提供できません。 ###2)。バックアップの実装プロセス全体を通じて、データベースをバックアップする必要があり、他の作業は実行できません。つまり、コールド バックアップ プロセス中はデータベースを閉じる必要があります。 ###3).ディスク容量が限られている場合、コピーできるのはテープなどの他の外部ストレージ デバイスのみとなり、非常に時間がかかります。 ###4).テーブルまたはユーザーごとに復元することはできません。


ホットスタンバイの長所と短所

1)。表スペースまたはデータファイルレベルでバックアップでき、バックアップ時間は短くなります。 ###2)。データベースはバックアップ中も引き続き使用できます。 ###3).二次回復(ある時点までの回復)を実現します。 ###4).ほぼすべてのデータベース エンティティを復元できます。 ###5).リカバリは迅速であり、ほとんどの場合、データベースがまだ動作している間にリカバリが行われます。

ホット バックアップの欠点は次のとおりです:
1)。間違いを犯してはなりません。間違いを犯さないと、重大な結果が生じます。 ###2)。ホット バックアップが失敗した場合、その結果はポイントインタイム リカバリに使用できません。 ###3).メンテナンスが難しいため、特に注意が必要であり、「失敗で終わる」ことは許されません。


11
データ ブロック、エクステント、セグメントの違いを説明してください。
データ ブロック データ ブロックは Oracle の最小論理単位です。通常、Oracle がディスクから読み書きするのは、複数の隣接するブロック
segment で構成されるブロック
エクステント領域です。セグメント は、データベース内のデータが論理的に格納される領域
tablespace テーブルスペースのグループで構成されます。テーブルスペースには複数のデータ ファイルを含めることができます

12. デッドロックとは何か、およびその解決方法について説明しますOracle デッドロック状態ですか? 要するに、ロックはありますが、ロックは解除されていません。ロックがコミットまたはロールバックされていない可能性があります。テーブルレベルのロックの場合、テーブルは操作できません。クライアントは、待機状態です。行レベルのロックの場合、ロックされた行ではロックを操作できません


解決策:


1) ロックされたテーブルを見つけます

select b.owner,b.object_name ,a.session_id,a.locked_mode

from v$locked_object a,dba_objects b

where b.object_id = a.object_id;

select b .username,b.sid,b.serial# ,logon_time from v$locked_object a,v$session b where a.session_id = b.sid order by b.logon_time;
2). プロセス内のセッションを強制終了します


alter system kill session "sid,serial#";


13
dml の使用方法を簡単に説明しますoracle の ddl、および dcl

Dml データ操作言語 (select、update、delete、insert など) Ddl データ定義言語 (create table、drop table など)

Dcl データ制御言語 (コミット、ロールバック、許可、呼び出しなど)

14 インデックスの作成方法、インデックス使用の原則、利点と欠点は何ですか

##標準インデックスを作成します: CREATE INDEX インデックスname ON テーブル名 (列名) TABLESPACE テーブルスペース名;

一意のインデックスの作成: CREATE unique INDEX インデックス名 ON テーブル名 (列名) TABLESPACE テーブルスペース名;

結合インデックスを作成します: CREATE INDEX インデックス名 ON テーブル名 (列名 1、列名 2) TABLESPACE テーブルスペース名;

リバースキーインデックスを作成します: CREATE INDEX インデックス名 ON テーブル名 (列名) reverse TABLESPACE テーブルスペース名;

インデックス使用原則: インデックス フィールドには NOT NULL 制約を確立することをお勧めします
Tables他のテーブルに接続されることが多い場合は、接続フィールドにインデックスを作成する必要があります。
Where 句に頻繁に表示され、フィルタリングが容易なフィールド、特に大きなテーブル内のフィールドにはインデックスを作成する必要があります。
選択性の高いキーワード、インデックスを確立する必要があります;
選択性の低いキーワードも使用できますが、データの値の分布が大きく異なる場合でも、選択データが比較的小さい場合はインデックスを使用して効率を向上させることができます。複合インデックスには慎重な分析が必要です。単一フィールド インデックスで置換することを検討してください:
A. 複合インデックスの最初のフィールドを正しく選択します。一般に、これは選択性が高く、where 句でよく使用されるフィールドです。
B. 複合インデックスのいくつかのコンポーネント フィールドが AND モードで Where 句に同時に出現することが多い場合は、複合インデックスを確立できます。そうでない場合は、単一のフィールド インデックスを確立できます。
C.複合インデックスは、Where 句に単独で現れることがよくありますが、複数の単一フィールドに分解されます。インデックス;
D。複合インデックスに 3 つ以上のフィールドが含まれている場合は、必要性を慎重に検討し、複合フィールドの数を減らすことを検討してください。
E. 単一のフィールド インデックスとこれらのフィールドの両方がある場合、複合インデックスは通常削除できます;
DML が頻繁に行われるテーブルの場合は、あまり多くのインデックスを作成しないでください;
頻繁に変更される列をインデックスとして使用しないでください列;


インデックスの長所と短所:
ある程度: 1. 一意のインデックスを作成して、データベース テーブル内のデータの各行の一意性 2 . データの取得を大幅に高速化しますが、これはインデックスを作成する主な理由でもあります
3 . 特に参照整合性の達成において、テーブル間の接続を高速化しますデータ。
4. データの取得にグループ化句と並べ替え句を使用すると、クエリ内のグループ化と並べ替えにかかる時間も大幅に短縮できます。


欠点: 1. インデックスはテーブルに作成され、ビューには作成できません 2. インデックスの作成と維持には時間がかかり、このような時間が増加しますデータ量が増えるにつれて
3. インデックスは物理スペースを占有する必要があります。データ テーブルが占有するデータ スペースに加えて、各インデックスも一定量の物理スペースを占有します。クラスター化インデックスを構築する場合は、
4. テーブル内のデータを追加、削除、変更する場合、インデックスを動的に維持する必要があるため、データの維持速度が低下します

15 Oracle ロックにはいくつかの種類があり、その定義は何ですか;

1. 行共有ロック (ROW SHARE)
2.行排他ロック (ROW EXCLUSIVE)
3. 共有ロック (SHARE)
4. 行排他共有ロック (SHARE ROW EXCLUSIVE)
5. 排他ロック (EXCLUSIVE)

使用方法 :
SELECT * FROM order_master WHERE vencode="V002"
FOR UPDATE WAIT 5;
LOCK TABLE order_master IN SHARE MODE;
LOCK TABLE itemfile IN EXCLUSIVE MODE NOWAIT;
ORACLE ロックは、具体的に次のカテゴリに分類されます:
1. ユーザーとシステムに応じて、自動ロックと表示ロックに分類できます
自動ロック : データベース操作が実行されると、デフォルトでは、システムはこのデータベース操作に必要なすべてのロックを自動的に取得します。
表示ロック: 場合によっては、データベース操作をより適切に実行できるように、ユーザーはデータベース操作のロックに使用されるデータを表示する必要があります。表示ロックはユーザーによってデータベースに設定されます。物体。
2. ロック レベルに応じて、共有ロックと排他ロックに分けることができます
共有ロック: 共有ロックを使用すると、トランザクションは特定のデータベースへのアクセスを共有できます。リソース— —別のトランザクションもこのリソースにアクセスしたり、同じ共有ロックを取得したりできます。共有ロックはトランザクションに高い同時実行性を提供しますが、トランザクションの設計が不十分であると、デッドロックやデータ更新の損失が簡単に発生する可能性があります。
排他ロック: トランザクションが排他ロックを設定した後、トランザクションはこのリソースのみを取得します。このトランザクションがコミットされるまで、別のトランザクションは同じオブジェクトに対する共有ロックまたは排他ロックを取得できません。
3. 操作に応じて、DML ロックと DDL ロックに分けることができます
DML ロックは、行ロック、テーブル ロック、デッドロックに分けることができます
行ロック: トランザクションがデータベースの挿入、更新、および削除操作を実行すると、トランザクションは操作テーブル内の操作行に対する排他ロックを自動的に取得します。
テーブルレベルのロック: トランザクションが行ロックを取得すると、トランザクションは自動的に行のテーブル ロック (共有ロック) も取得し、他のトランザクションが更新に影響を与える DDL ステートメントを実行するのを防ぎます。レコード行の数。トランザクションは、プロセス中に共有ロックまたは排他ロックを取得することもできます。トランザクションが LOCK TABLE ステートメントを使用して排他ロックを明示的に定義した場合にのみ、トランザクションはテーブルに対して排他ロックを取得します。LOCK を使用して表示することもできます。 TABLE ステートメント: テーブルレベルの共有ロックを定義します (LOCK TABLE の具体的な使用方法については、関連ドキュメントを参照してください)。
デッドロック: 2 つのトランザクションが一連の競合するロックを必要とし、トランザクションを続行できない場合、デッドロックが発生します。
たとえば、トランザクション 1 はテーブル A のレコード #3 に排他ロックを持っており、トランザクション 2 がテーブル A のレコード #4 の排他ロックを解放するのを待っていますが、トランザクション 2 はテーブル A のレコード #4 に行を持っています。テーブル A. トランザクションをロックして待ちます; 1. テーブル A のレコード #3 で排他ロックを解除します トランザクション 1 とトランザクション 2 がお互いに待ち合うため、デッドロックが発生します。デッドロックは通常、トランザクション設計が不十分なために発生します。デッドロックは SQL を使用してのみ解決できます: alter system kill session "sid,serial#"; または関連するオペレーティング システムのプロセスを強制終了するコマンド (UNIX では kill -9 sid など) を使用するか、他のツールを使用してデッドロックを強制終了します。プロセス。
DDL ロックは、排他的 DDL ロック、共有 DDL ロック、分析ロックに分類できます。
排他的 DDL ロック: データベース オブジェクトの作成、変更、および削除 DDLステートメントは操作オブジェクトの排他ロックを取得します。たとえば、alter table ステートメントを使用する場合、データの完全性、一貫性、正当性を維持するために、トランザクションは排他的 DDL ロックを取得します。
共有 DDL ロック: データベース オブジェクト間の相互依存関係を確立する必要がある DDL ステートメントには、通常、共有 DDL ロックが必要です。
パッケージを作成すると、パッケージ内のプロシージャと関数は異なるデータベース テーブルを参照します。パッケージがコンパイルされると、トランザクションは参照テーブルの共有 DDL ロックを取得します。
分析ロック: ORACLE は共有プールを使用して、分析および最適化された SQL 文と PL/SQL プログラムを保存し、同じ文を実行するアプリケーションを高速化します。共有プールにキャッシュされたオブジェクトは、参照するデータベース オブジェクトの分析ロックを取得します。分析ロックは、ORACLE が共有プール オブジェクトとそれらが参照するデータベース オブジェクト間の依存関係を追跡するために使用する固有のタイプの DDL ロックです。トランザクションが共有プール内の分析ロックを保持するデータベース オブジェクトを変更または削除すると、ORACLE は共有プール内のオブジェクトを無効にします。次にこの SQL/PLSQL ステートメントが参照されるときに、ORACLE はこのステートメントを再分析してコンパイルします。
4. 内部ラッチ
内部ラッチ: これは ORACLE の特殊なロックで、内部システム構造への順次アクセスに使用されます。トランザクションがバッファに情報を書き込む必要がある場合、このメモリ領域を使用するには、ORACLE がこのメモリ領域に情報を書き込む前に、まずこのメモリ領域のラッチを取得する必要があります。

関連する学習に関する推奨事項: Oracle データベース学習チュートリアル

以上がオラクルの面接での質問の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。