ユーザーは、データベース・ユーザー・アカウントを介して、Oracle Database Express Editionにアクセスします。これらのアカウントの一部は、自動的に作成される管理アカウントで、このようなアカウントはデータベース管理権限を持っています。これらの管理アカウントにログインして、他のユーザー・アカウントの作成や管理、データベースのセキュリティの保守、およびその他のデータベース管理作業を行います。
この項の内容は次のとおりです。
ユーザー・アカウントはユーザー名で識別され、ユーザーの次の属性を定義します。
データベース認証パスワード
権限およびロール
データベース・オブジェクト用のデフォルトの表領域
問合せ処理の作業領域用のデフォルトの一時表領域
ユーザーを作成すると、そのユーザーのためのスキーマも同時に作成されます。スキーマは、表やビュー、トリガーなどの、データベース・オブジェクトの論理的なコンテナです。スキーマ名はユーザー名と同一で、ユーザーが所有するオブジェクトを参照するときに確実に使用できます。たとえば、HR.EMPLOYEES
はHR
スキーマでEMPLOYEES
と名付けられた表を参照します(EMPLOYEES
表はHR
に所有されます)。データベース・オブジェクトおよびスキーマ・オブジェクトという用語は同じ意味で使用されます。
ユーザーを削除する場合は、最初にそのユーザーのすべてのスキーマ・オブジェクトを削除するか、削除操作のカスケード機能(ユーザーと、そのユーザーのすべてのスキーマ・オブジェクトを同時に削除する機能)を使用する必要があります。
次の項目について説明します。
ユーザーを作成する場合は、データベースへの接続や、問合せの実行および更新、スキーマ・オブジェクトの作成を可能にする権限をユーザーに付与します。ユーザー権限には次の主な2つのタイプがあります。
システム権限: システム権限は特定のアクションまたは特定の種類のスキーマ・オブジェクトでステップを実行する権利です。たとえば、表を作成する権限や、データベース内のすべての表の行を削除する権限はシステム権限です。
オブジェクト権限: オブジェクト権限は、固有のスキーマ・オブジェクトに対して特定のアクションを実行する権限です。様々なスキーマ・オブジェクトのタイプに対して様々なオブジェクト権限が用意されています。オブジェクト権限の例には、DEPARTMENTS
表から行を削除する権限があります。
ロール(関連する権限のグループに名前を付けたもの)を使用すると、権限の管理と制御が簡単になります。ユーザーはロールを作成し、ロールにシステムおよびオブジェクト権限を付与し、その後ユーザーにロールを付与できます。スキーマ・オブジェクトとは異なり、ロールはいずれのスキーマにも含まれません。
表7-1に、Oracle Database XEで事前定義されている3つのロールを示します。Oracle Database XEのグラフィカル・ユーザー・インタフェースを使用してユーザーを作成する際に、これらのロールを付与できます。
表7-1 Oracle Database Express Editionで事前定義されているロール
ロール名 | 説明 |
---|---|
ユーザーのデータベースへの接続を可能にします。このロールをデータベース・アクセスが必要なユーザーまたはアプリケーションに付与します。 |
|
ユーザーが、そのユーザー自身のスキーマに、特定タイプのスキーマ・オブジェクトを作成できるようにします。このロールは開発者やスキーマ・オブジェクトの作成が必要なその他のユーザーにのみ付与されます。このロールはオブジェクトを作成するシステム権限のサブセットを付与します。たとえば、 |
|
ユーザーの作成および権限の付与、ロールの作成および付与、他のユーザーのスキーマでのスキーマ・オブジェクトの作成および削除などを含むほとんどの管理機能をユーザーが実行することを可能にします。これはすべてのシステム権限を付与しますが、データベースの起動および停止の権限は含まれません。デフォルトでは、 |
関連項目:
|
一部のユーザー・アカウントは、データベースの管理のために自動的に作成されます。たとえば、SYS
やSYSTEM
などがあります。その他のアカウントは、Oracle Database XEの個々の機能や製品がそれぞれ固有のスキーマを所有できるようにするために自動的に作成されます。たとえば、Oracle Text製品で使用されるCTXSYS
アカウントがあります。Oracle Textは、Oracle Database XEのオンライン・ヘルプの索引を作成するために使用されます。ヘルプの索引は、データベースのCTXSYS
スキーマに格納されます。
このように自動的に作成されるアカウントは内部ユーザー・アカウントと呼ばれ、それらのスキーマは内部スキーマと呼ばれます。
ログインに使用可能な内部アカウントはSYS
およびSYSTEM
アカウントのみですが、SYS
アカウントではログインしないことをお薦めします。他の内部アカウントでは、ログインしようとしないでください。詳細は、「SYSおよびSYSTEMユーザー」を参照してください。
管理アカウントおよび管理権限では、ユーザーの管理、データベースのメモリー管理、データベースの起動および停止などの管理機能を実行できます。
この項の内容は次のとおりです。
次の管理ユーザー・アカウントは、Oracle Database Express Edition (Oracle Database XE)をインストールしたときに自動的に作成されます。これらはいずれも、インストール時(Windowsオペレーティング・システム)または構成時(Linuxオペレーティング・システム)に指定したパスワードで作成されます。
SYSTEM
SYS
データベースのデータ・ディクショナリ用のすべての実表およびベース・ビューはSYS
スキーマに保存されます。これらの実表およびベース・ビューはOracle Database XEを操作する際に重要となります。データ・ディクショナリの整合性を保持するには、SYS
スキーマ内の表をデータベースのみで操作します。すべてのユーザーまたはデータベース管理者による変更は絶対に行わないでください。また、SYS
スキーマ内に表を作成しないでください。
通常、SYS
ユーザーでログインする理由はありません。起動と停止以外のすべての管理作業用として望ましいユーザーは、SYSTEM
です。詳細は、「起動と停止」を参照してください。
SYSDBA
は、SYS
ユーザーのみに割り当てられるシステム権限です。それにより、SYS
がデータベースの起動や停止といった上位レベルの管理タスクを行えるようになります。
通常は、データベースにSYS
ユーザーでログインする必要はありませんが、SQLコマンドライン(SQL*Plus)でSYS
でログインする場合は、データベースにAS
SYSDBA
で接続する必要があります。AS
SYSDBA
で接続すると、SYSDBA
権限が有効になります。SYS
ユーザーでのログイン時にAS
SYSDBA
句を省略した場合は、SQLコマンドラインでログインの試行が拒否されます。
次の例は、SQLコマンドラインから、SYSDBA
権限でデータベースに接続する方法を示しています。
SQL > connect sys/password as sysdba
password
は、SYS
ユーザー・アカウントのパスワードです。
オペレーティング・システム認証(OS認証)は、データベース・ユーザーの認証にオペレーティング・システムのログイン資格証明を使用する方法です。OS認証の1つの側面を使用して、データベース管理者を認証できます。Oracle Database XEのホスト・コンピュータに、オペレーティング・システムの特別なユーザー・グループ内のユーザー名でログインした場合は、SYSDBA
権限でのデータベースへの接続が許可されます。OS認証によって認証される管理者は、SYS
またはSYSTEM
アカウントのパスワードを知っている必要はありません。
OS認証が必要であるのは、たとえデータベースが停止している場合であっても、管理ユーザーを識別する方法が必要であるからです。この方法で認証されたユーザーは、データベースを起動できます。(詳細は、「起動と停止」を参照してください。)
表7-2に示すオペレーティング・システムのユーザー・グループに属するメンバー・ユーザーは、SYSDBA
権限でデータベースに接続できます。
各プラットフォームにOS認証ユーザー・グループが存在しない場合は、Oracle Database XEをインストールしたときに自動的に作成されます。また、Linuxプラットフォームへのインストール時には、oracle
ユーザー・アカウントが自動的に作成され、dba
グループに配属されます。Windowsプラットフォームへのインストール時には、インストールを実行しているユーザーが自動的にORA_DBA
グループに追加されます。どちらのプラットフォームでも、他のホスト・ユーザーをOS認証ユーザー・グループに追加して、そのユーザーがSYSDBA
権限でデータベースに接続できるようにすることができます。
Oracle Database Express Edition (Oracle Database XE)にログインして管理タスクを行うには、次の3つのログイン方法があります。
SYSTEM
ユーザーでログインします
DBA
ロールが付与されているユーザーでログインします
SYSDBA
でデータベースにログインして接続します
表7-3に、これらの各ログイン方法に関する情報を示します。
表7-3 データベース管理者のログイン方法
ログイン方法 | 許可される対象 | 備考 | 参照先 |
---|---|---|---|
|
Oracle Database XEのグラフィカル・ユーザー・インタフェースおよびSQLコマンドライン |
メモリーの管理やユーザーの管理など、日常的な管理タスク用。 |
|
|
Oracle Database XEのグラフィカル・ユーザー・インタフェースおよびSQLコマンドライン |
ユーザーの管理など、日常的な管理タスク用。最初に、管理者が、該当のユーザーに |
|
|
SQLコマンドライン |
データベースの起動および停止ならびに |
|
次のいずれかの方法を使用して、SYSTEM
ユーザーでログインできます。
SQL Developerを使用して、SYSTEMユーザーへのデータベース接続をオープンします。
SQLコマンドラインを使用して、次の文を入力します。
SQL> CONNECT SYTSTEM/<password>;
DBA
ロールが付与されているユーザーでログインする手順は、次の点を除き、SYSTEM
ユーザーでログインする手順と同じです。
ログイン時に、該当のユーザー・アカウントのユーザー名とパスワードを入力する必要があります。
あらかじめ、管理者がログインして該当のユーザーにDBA
ロールを付与しておく必要があります。
詳細は、「ユーザー権限とロール」を参照してください。
次のいずれかの方法を使用して、SYSDBA
でログインして接続できます。
SQL Developerを使用して、SYSユーザーへのデータベース接続をAS SYSDBAでオープンします。ローカル接続の作成機能を使用していてローカル接続が自動生成された場合、接続名は「/ as sysdba
」になります。
SQLコマンドラインを使用して、次のいずれかの文を入力します。
データベース認証を使用する場合:
SQL> CONNECT SYS/<password> AS SYSDBA;
オペレーティング・システム(OS)認証を使用する場合:
SQL> CONNECT / AS SYSDBA;
スラッシュ(/)は、ユーザーの認証にオペレーティング・システム(OS)認証を使用することを示します。OS認証で接続しているときは、実質的には、SYS
ユーザーでデータベースにログインしているということを覚えておいてください。
SYS
またはSYSTEM
ユーザーのパスワードを変更する手順は、次のとおりです。
SQLコマンドラインを使用して、SYSDBA
でデータベースに接続します。
手順については、「SYSDBAでのデータベースへのログインと接続」を参照してください。
次のコマンドのいずれかを入力します。
ALTER USER SYS IDENTIFIED BY newpassword; ALTER USER SYSTEM IDENTIFIED BY newpassword;
ここで、newpassword
は、任意の新しいパスワードです。
SQL DeveloperまたはSQLコマンドライン(SQL*Plus)を使用して、データベース・ユーザーを管理できます。この項では、SQL Developerの使用について説明し、内容は次のとおりです。
これらの操作を実行するには、SQL Developerの「接続」ナビゲータで接続をオープンします
SQL Developerの「接続」ナビゲータで、SYSTEM
ユーザーへの接続をオープンします。
このSYSTEM
接続の下のノード内の「他のユーザー」を展開します。
これにより、すべてのデータベース・ユーザーのノードが表示されます(いくつかのOracle提供の内部ユーザーも含まれます)。「接続」ナビゲータの階層は、たとえば次のように表示されます。
Connections
. . .
SYSTEM
Views
Editioning Views
. . .
Other Users
ANONYMOUS
APEX_040000
APEX_PUBLIC_USER
APQQOSSYS
CHRIS
CTXSYS
. . .
HR
MDSYS
新しいデータベース・ユーザーを作成するには、「接続」ナビゲータで、「他のユーザー」ノードを右クリックして、「ユーザーの作成」を選択します。
データベース・ユーザーに対するアクションを実行するには、階層内の該当のユーザーを右クリックして、該当するコマンド(「ユーザーの編集」または「ユーザーの削除」)を選択します。
関連項目: SQLコマンドライン(SQL*Plus)を使用してユーザーを管理する方法については、『Oracle Database SQL言語リファレンス』および『Oracle Databaseセキュリティ・ガイド』を参照してください。 |
新しいデータベース・ユーザーを作成するには、SQL Developerの「接続」ナビゲータで、「他のユーザー」ノードを右クリックして、「ユーザーの作成」を選択します。ユーザーを作成する前に、次を決定します。
ユーザーに対して、そのユーザー自身のスキーマへのデータベース・オブジェクトの作成を許可するかどうか。
そうする場合は、「データベース・ユーザーの作成」ページで、RESOURCE
ロールを付与するか、個別のオブジェクト作成システム権限を付与します。詳細は次のトピックを参照してください:
RESOURCE
ロールの詳細は、「ユーザー権限とロール」を参照してください。
システム権限の詳細は、『Oracle Databaseセキュリティ・ガイド』の「権限とロール認可の構成」を参照してください。
データベース・オブジェクトの詳細は、『Oracle Database Express Edition 2日で開発者ガイド』の「スキーマ・オブジェクトの作成および管理」を参照してください。
ユーザーにDBA権限を付与するかどうか。
そうする場合は、「データベース・ユーザーの作成」ページで、DBA
ロールを付与します。DBA
ロールの詳細は、「ユーザー権限とロール」を参照してください。
DBA権限では、すべてのスキーマにデータベース・オブジェクトを作成できるため、DBA
ロールを付与する場合は、RESOURCE
ロールや、個別のオブジェクト作成システム権限を付与する必要はありません。
期限切れのパスワードでユーザーを作成するかどうか。
これを行った場合、ユーザーに割り当てたパスワードは、そのユーザーの初回ログオン時にのみ使用されます。ユーザーは、初回ログオン時に新しいパスワードを選択するように要求されます。
Nickという名前のデータベース・アプリケーション開発者用のユーザー・アカウントを作成すると想定します。Nickは開発者であるので、アプリケーションで必要となるスキーマ・オブジェクトを作成できるように、彼にはすべてのCREATE
システム権限を付与します。また、firesignというパスワードで彼のアカウントを作成します。
Nick
というユーザーを作成する手順は、次のとおりです。
SQL Developerの「接続」ナビゲータで、「他のユーザー」ノードを右クリックして、「ユーザーの作成」を選択します。
「ユーザーの作成/編集」ダイアログ・ボックスの「ユーザー」タブで、次の図に示されている情報を入力します。
ユーザー名: NICK
「新規パスワード」および「パスワードの確認」: そのユーザーの任意のパスワード。
パスワードが期限切れです(ユーザーが変更する必要があります): 必要に応じて、選択するか選択を解除します。(図では、選択されていません。)
アカウントがロックされています: 必要に応じて、選択するか選択を解除します。(図では、選択されていません。)
エディション有効: 必要に応じて、選択するか選択を解除します。(図では、選択されていません。)
デフォルト表領域: USERS
一時表領域: TEMP
「ユーザーの作成/編集」ダイアログ・ボックスで、「ロール」タブをクリックし、「付与済」の下で次のロールを選択します。
CONNECT
RESOURCE
「ユーザーの作成/編集」ダイアログ・ボックスで、「システム権限」タブをクリックし、「付与済」の下で次の権限を選択します(これらをNICK
に付与することを確認するため)。
CREATE DATABASE LINK
CREATE MATERIALIZED VIEW
CREATE PROCEDURE
CREATE PUBLIC SYNONYM
CREATE ROLE
CREATE SEQUENCE
CREATE SYNONYM
CREATE TRIGGER
CREATE TYPE
CREATE VIEW
「ユーザーの作成/編集」ダイアログ・ボックスで、「適用」をクリックし、「閉じる」をクリックします。
「データベース・ユーザーの管理」ページを使用して、ユーザーを変更できます。ユーザーの変更とは、そのユーザーの一部の属性を変更することを意味します。ユーザー名、デフォルト表領域および一時表領域を除く、すべてのユーザー属性を変更できます。ユーザー名を変更する場合は、ユーザーを削除し、そのユーザーを別の名前で再作成する必要があります。(ユーザーを削除する前に、ユーザーのスキーマ・オブジェクトが今となってはもう必要ないことを確認するか、またはバックアップします(たとえば、それらをエクスポートします)。詳細は、「ユーザーの削除」を参照してください。)
変更可能な属性の1つは、ユーザーのパスワードです。これを行う場合は、ユーザーに新しいパスワードを連絡するか、またはユーザーに新しいパスワードを要求して、そのパスワードを入力する必要があります。簡単かつ安全な方法は、パスワードの変更を発生させるために、パスワードを期限切れにすることです。パスワードを期限切れにすると、そのユーザーは、次回のログイン時にパスワードを変更するように要求されます。詳細は、「ユーザー・パスワードの期限切れ」を参照してください。
たとえば、Nickが上級開発者に昇進して、日常的なデータベース管理作業の支援に関心を示すようになったと仮定します。NickにDBA
ロールを付与することにします。
Nickのユーザー・アカウントを変更する手順は、次のとおりです。
SQL Developerの「接続」ナビゲータで、SYSTEM
接続を展開し、「他のユーザー」ノードを右クリックします。
「NICK」を右クリックして、「ユーザーの編集」を選択します。
「ユーザーの作成/編集」ダイアログ・ボックスで、「ロール」タブをクリックします。
「付与済」の「DBA」を選択します。
「ユーザーの作成/編集」ダイアログ・ボックスで、「適用」をクリックし、「閉じる」をクリックします。
特定のユーザーのデータベースへのアクセスを一時的に拒否するには、ユーザー・アカウントをロックします。そのユーザーが接続しようとした場合、データベースによりエラー・メッセージが表示され、接続を禁止します。そのユーザーに対して再度データベースへのアクセスを許可する場合は、ユーザー・アカウントのロックを解除します。
注意: 多くの内部ユーザー・アカウントはロックされています(または、期限切れに設定されてロックされています)。これらのロックされているユーザー・アカウントでログインしようとしないでください。詳細は、「内部ユーザー・アカウント」を参照してください。サンプル・スキーマが含まれる |
ユーザー・アカウントをロックまたはロック解除するには、次のステップを実行します。
SQL Developerの「接続」ナビゲータで、SYSTEM
接続を展開し、「他のユーザー」ノードを右クリックします。
任意のユーザーを右クリックして、「ユーザーの編集」を選択します。
「ユーザーの作成/編集」ダイアログ・ボックスの「ユーザー」タブで、「アカウントがロックされています」を選択または選択を解除します(選択すると(チェックを付けると)アカウントはロックされ、選択を解除すると(チェックを外すと)アカウントのロックは解除されます)。
「ユーザーの作成/編集」ダイアログ・ボックスで、「適用」をクリックし、「閉じる」をクリックします。
パスワードを期限切れにすると、そのユーザーは、次回のログイン時にパスワードを変更するように要求されます。次の場合にパスワードの期限が切れます。
ユーザーのパスワードが漏洩した場合。
セキュリティ・ポリシーが表示され、定期的なパスワード変更を求める場合。
ユーザーがパスワードを忘れた場合。
この場合は、ユーザー・アカウントを変更し、新規の一時パスワードを割り当て、パスワードを期限切れにします。一時パスワードでログインすると、新しいパスワードを選択するように要求されます。
詳細は、「ユーザーの変更」を参照してください。
たとえば、Nickのパスワードが漏洩したので、彼に新しいパスワードを割り当てると仮定します。これを行う最も簡単な方法は、彼の現在のパスワードを期限切れにすることです。次回、Nickが漏洩したパスワードを使用してログインすると、新しいパスワードを選択するように要求されます。
Nickのパスワードを期限切れにする手順は、次のとおりです。
SQL Developerの「接続」ナビゲータで、SYSTEM
接続を展開し、「他のユーザー」ノードを右クリックします。
「NICK」を右クリックして、「ユーザーの編集」を選択します。
「ユーザーの作成/編集」ダイアログ・ボックスの「ユーザー」タブで、「パスワードが期限切れです(ユーザーは次回ログインを変更する必要があります)」を選択(チェック)します。
「ユーザーの作成/編集」ダイアログ・ボックスで、「適用」をクリックし、「閉じる」をクリックします。
ユーザーを削除すると、そのユーザーはデータベースから削除されます。ユーザーを削除するには、その前にまず、そのユーザーのすべてのスキーマ・オブジェクトを削除する必要があります。または、削除操作のカスケード機能を使用して、ユーザーと、そのユーザーのスキーマ・オブジェクトが同時に削除されるようにすることができます。ユーザーを削除すると、そのユーザーのすべてのスキーマ・オブジェクトが失われますが、それにかわる次の2つの方法があります。
ユーザーのスキーマ・オブジェクトを保持したまま、特定ユーザーのデータベースへのアクセスを一時的に拒否するために、そのユーザー・アカウントをロックできます。詳細は、「ユーザー・アカウントのロックおよびロック解除」を参照してください。
ユーザーを削除してもユーザーの表のデータは保持されるように、最初に表をエクスポートします。手順については、「メタデータおよびデータのエクスポートとインポート」を参照してください。
注意: いかなる場合も、SYS またはSYSTEM ユーザーや他の内部ユーザーアカウントは削除しようとしないでください。それを行った場合、Oracle Database XEが正常に動作しなくなる可能性があります。 |
たとえば、Nickのプロジェクトが中止になり、Nickは別の部門に異動することになったと仮定します。NICK
というユーザーと、すべての関連スキーマ・オブジェクトを削除します。
NICK
というユーザーと、彼が所有するすべてのスキーマ・オブジェクトを削除する手順は、次のとおりです。
SQL Developerの「接続」ナビゲータで、SYSTEM
接続を展開し、「他のユーザー」ノードを右クリックします。
「NICK」を右クリックして、「ユーザーの削除」を選択します。
「ユーザーの削除」ダイアログ・ボックスで、「カスケード」を選択します。
これは、ユーザーのスキーマ・オブジェクトも一緒に削除することを示します。ユーザーがスキーマ・オブジェクトを所有しているときに、このオプションを選択していない場合、削除操作を完了しようとすると、エラー・メッセージが表示されます。
「ユーザーの削除」ダイアログ・ボックスで、「適用」をクリックします。
この項では、ユーザー・アカウントを管理するための参考情報を提供します。内容は次のとおりです。
表7-4に、Oracle Database XEで事前定義されているユーザー・アカウントを示します。これらのアカウントの多くは、内部アカウントです。内部アカウントを削除したり、SYS
およびSYSTEM
アカウント以外の内部アカウントでログインしようとしないでください。
表7-4 Oracle Database Express Editionで事前定義されているユーザー・アカウント
ユーザー・アカウント名 | 用途 |
---|---|
|
内部。データベースへの匿名のHTTPアクセスで使用されます。Oracle Database XEのグラフィカル・ユーザー・インタフェースで必要とされます。このアカウントは、ロックが解除されたままの状態である必要があります。このアカウントのパスワードは、インストール時(Windows)または構成時(Linux)に設定されます。セキュリティを最適なものにするため、このアカウントのパスワードは変更しないようにしてください。 |
|
内部。 |
|
内部。 |
|
内部。 |
|
内部。 |
|
内部。 |
|
|
|
内部。 |
|
内部。 |
|
データ・ディクショナリの実表およびビューを所有します。このアカウントのパスワードは、インストール時(Windows)または構成時(Linux)に設定されます。 |
|
日常的なデータベース管理を行うには、このアカウントでログインします。このアカウントのパスワードは、インストール時(Windows)または構成時(Linux)に設定されます。 |
|
内部。 |
|
内部。 |