データベース、ユーザー、スキーマという用語に本当に戸惑っています。誰もが彼らがお互いにどのように違うのか説明できますか?
それらが同じである場合、それらの間の類似点は何ですか?それらをどのように使用しますか?そして、それらをどのように作成しますか?
Oracleでは、ユーザーとスキーマは基本的に同じものです。ユーザーはデータベースへの接続に使用するアカウントであり、スキーマはそのアカウントに属するオブジェクト(テーブル、ビューなど)のセットであると考えることができます。
詳細と追加のリンクについては、スタックオーバーフローのこの投稿を参照してください: Oracleのユーザーとスキーマの違い? 。
create user
ステートメント。これにより、スキーマも「作成」されます(最初は空です)。このようにスキーマを作成することはできません。ユーザーに関連付けられています。ユーザーが作成されると、管理者はユーザーに特権を付与できます。これにより、テーブルの作成、select
クエリ、insert
、およびその他すべての実行が可能になります。
データベースとは、作成したすべてのユーザーとそのデータ(および全体を機能させる事前定義されたシステムユーザー、テーブル、ビューなど)を含むものです。概念ガイドの Oracleデータベースアーキテクチャ のドキュメントを参照してください(実際には、ページ全体を読む価値があります。そのページの上位にあるユーザーとスキーマに関するセクションがあります)。データベースとは、データベースインスタンスとは何か-2つの重要な概念です。
create database
ステートメント、Oracleソフトウェアスタックをインストールした後。ただし、 dbca
(データベース作成アシスタント)を使用する方が簡単です。
違いを理解するには、この命名法はOracleの誤りであると言っておく必要があると思います。
ERP TRITONと呼ばれる場合、データベースにTRITONという名前を付けたいと思うか、または私の会社がJENNY EXPORTと呼ばれる場合、データベースをJENNYEXPと呼ぶか、またはそのようなものと判断するかもしれません。同じ名前のユーザーは必要ありません。
Oracleでは、テーブルを作成する前にUSERを作成する必要があり、奇妙なことに、このTABLESのコレクションはSCHEMAと呼ばれます。
次に、実際のユーザーを作成し、この例のようにTRITONなどのデータベースを操作するための適切な権限を付与します。ちなみに、SQL開発者を介して接続する場合は、接続に名前を付ける必要があります。
ちょっとイライラしているように思えますが、MS SQL SERVERの命名規則の方が理にかなっており、SQL SERVERよりも前にOracleで作業したことを付け加えることができます。
用語の使い方によると、 時々使用されます 、USER
とSCHEMA
は多少似ています。しかし、大きな違いもあります。 USER
は、「SCHEMA
」がオブジェクトを所有している場合はUSER
と呼ばれ、それ以外の場合は「USER
」のままになります。 USER
が少なくとも1つのオブジェクトを所有すると、上記のすべての定義により、USER
をSCHEMA
と呼ぶことができます。
データベースは、実際にデータが保存されるデータのコレクションです。 DBMSソフトウェアがインストールされたコンピュータに接続され、そのメモリコンポーネント内のデータを操作する物理メモリコンポーネントです。dbmsソフトウェアがインストールされたコンピュータは、サーバーまたはデータベースサーバーと呼ばれます。サーバー(コンピュータ)とデータベース(メモリコンポーネント)は異なりますが、ほとんどの場合、状況に基づいて同じと呼ばれていました。
ユーザーとスキーマの両方の単語は交換可能です。そのため、ほとんどの人はこれらの単語で混乱します。
ユーザーはデータベース(サーバー)に接続するためのアカウントです。 CREATE USER IDENTIFIED BYを使用してユーザーを作成できます。
実際、Oracle Databaseには、データを処理するための論理的および物理的な構造が含まれています。データベース(メモリコンポーネント)内のデータを処理するためのスキーマも論理構造。ユーザー作成時にOracleによって自動的に作成されます。これには、そのスキーマに関連付けられたユーザーによって作成されたすべてのオブジェクトが含まれます。たとえば、santhosh
という名前のユーザーを作成した場合、Oracleはsanthosh
というスキーマを作成し、Oracleはユーザーsanthosh
によって作成されたすべてのオブジェクトをsanthosh
スキーマに格納します。
CREATE SCHEMA
ステートメントを使用してスキーマを作成できますが、Oracleはそのスキーマのユーザーを自動的に作成します。
DROP SCHEMA <name> RESTRICT
ステートメントを使用してスキーマを削除できますが、スキーマに含まれるオブジェクトを削除することはできないため、スキーマを削除するには空である必要があります。ここで、Wordの制限により、オブジェクトなしでそのスキーマを指定する必要があります。
オブジェクトを含むユーザーをスキーマにドロップしようとする場合、CASCADE
Wordを指定する必要があります。これは、Oracleではオブジェクトを含むユーザーを削除できないためです。
DROP USER <name> CASCADE
したがって、Oracleはスキーマ内のオブジェクトを削除してから、ユーザーを自動的に削除します。ビューやプライベートシノニムなど、他のスキーマからこれらのスキーマオブジェクトを参照するオブジェクトは無効な状態になります。