Oracle Serverでは、通常、1つのインスタンスに対して1つのデータベースが対応します。インスタンスごとにデータベースユーザーの設定は1つで、管理ユーザーのSYSまたはSYSTEMから他のユーザーを作成します。また、ユーザー作成時にデフォルト表領域、クォータ、プロファイルなどの設定をします。 SQL Serverでは、1つのインスタンスに対して複数データベースが対応します。そのため、インスタンスのログインアカウントとは別に、データベースのユーザーアカウントが必要です。そのデータベースユーザーは、インスタンスのログインに対応づけるように登録(作成)します。また、ユーザー登録時には、ログインしたときに最初に接続されるデータベースの設定をします。ユーザー登録にはSQL Server Enterprise Managerなどを使用します。
Oracle Serverのロールとは、「権限」をグループ化して名前をつけたものです。主に権限管理、つまりセキュリティ管理を容易にする目的で使用します。 それに対して、SQL Serverのロールは「ユーザー」をグループ化したものです。 ただし、その用途自体はOracle Serverと同じです。 SQL Serverのロールには、次の4種類があります。
・固定サーバーロール: ログインアカウントをグループ化するロール。 ・固定データベースロール: データベースユーザーをグループ化するロール。 Oracleの「事前定義済みロール」に相当。 ・アプリケーションロール: Oracleの「アプリケーション・ロール」とほぼ同様。パスワードが必要。 ・ユーザー定義データベースロール: Oracle同様、ユーザーが定義するロール。
☆さらに詳細はこちら→
Oracle Serverでのバックアップは、RMANやOSのユーティリティ、Exportユーティリティを使用して実行します。バックアップの単位としては「データベース全体」、「増分」、「表領域」、「データファイル」、「制御ファイル」、「ARCHIVELOGファイル」があります。 SQL Serverでは、Enterprise Manager、BACKUPステートメントなどを使用してバックアップを実行します。単位は「データベース全体」、「差分」、「ファイルグループおよびファイル」、「トランザクションログ」があります。 Oracle Serverとの大きな違いは「トランザクショログ」のバックアップです。 これを実行するとログが切り捨てられ、その切り捨てられた部分を再利用できます(「ログ・モード」参照)。また、Oracle Server、SQL Serverともにオンライン/オフラインでバックアップできますが、オフラインではバックアップ時点にしか戻せません。
Oracle Serverでは、各ユーザーにはそのユーザーが使用可能な複数のシステムリソースに関する制限を指したプロファイルが割り当てられます。ログイン失敗時のアカウントロックなどのパスワード制限、ユーザーが確立できる同時セッションの数などを設定し、名前をつけたものがプロファイルです。 一方、SQL Serverでは、そのようにユーザーに対する設定を1つのオブジェクトとして扱うという考え方はありません。もしパスワード制限をしたければ、WindowsユーザーをSQL Serverログインとして登録し、Windows上で複雑なパスワードを要求するなどの設定をします。その他ユーザー単位では、既定の言語を設定し、「何語のメッセージを返すか」といった設定が可能です。
Oracle Serverでは、各ユーザーに任意の表領域(一時表領域以外)に対する領域の割り当て制限を設定できます。この制限のことを「クォータ」といいます。ユーザーは、指定した表領域内に割り当てた制限以内でオブジェクトを作成できます。 SQL Serverでは、オブジェクトを作成するときの領域指定方法がOracle Serverとは異なります。Oracle Serverの場合、オブジェクトがデフォルトでどの領域に作成されるかは、作成するユーザーごとに決められています。SQL Serverのオブジェクトは、特に指定をしないとデータベースごとに決められた「デフォルトファイルグループ」に格納されます。SQL Serverでは、通常すべてのオブジェクトをdboユーザーが所有するように作成しますので、ユーザー単位に領域制限をするという考え方がないのです。
Oracle Serverにおいて、データベースユーザーのデータベースに対する権限は、「システム権限」で設定します。システム権限をひと言で表せば、「どのようなDDL文を発行できるのかを設定する権限」といえます。Oracle Serverでは、作成された直後のユーザーは一切権限を与えられていません。ユーザー作成後に、管理者により役割に応じた権限を付与します。 一方、SQL Serverにおいてはデータベースユーザーの権限は「ステートメント権限」にて設定します。ステートメント権限の付与には「GRANT」を、取り消しには「REVOKE」を使用します。ユーザーやロールに付与されているステートメント権限の確認には、sp_helprotectシステムプロシージャを使用して次のように指定します。
exec sp_helprotect NULL,NULL,NULL,'s'
なお、権限を付与する管理者は、固定データベースロールの「db_owner」または「db_securityadmin」を持つ必要があります。
ユーザー自身が所有するオブジェクトは無条件にアクセスができますが、他のユーザーが所有するオブジェクトに対してアクセスするためには、「オブジェクト権限」を付与してもらう必要があります。 Oracle ServerもSQL Serverも同様に、他ユーザーが所有するオブジェクトには、オブジェクト権限を使用してアクセスします。SQL Serverで提供するオブジェクト権限の「SELECT」、「INSERT」、「UPDATE」、「DELETE」は、表およびビューに対して付与できます。さらにSELECTおよびUPDATEは、列に対しても付与できます。INSERTおよびDELETEは、行全体の操作となります。「EXECUTE」は、ストアドプロシージャおよび関数に対して付与できます。オブジェクト権限を付与できるユーザーは、db_ownerまたはdb_securityadmin固定データベースロールを付与されている必要があります。 ユーザーに付与されているオブジェクト権限の確認は、次のように指定します。
exec sp_helprotect NULL,NULL,NULL,'o'