「SYSTEM」タグアーカイブ

Oracle:事前構成済の表領域

Oracle データベースを新規に作成すると、何も設定していなくても
いくつかの 「事前構成済の表領域」 が自動的に作られます。

これらは Oracle 本体の管理情報や、一時的な処理用領域、
一般ユーザーが使うためのデフォルト領域など、
データベース運用の土台になる重要な領域 です。

この記事では、Oracle が作成時に自動で用意してくれる主な表領域と、
それぞれがどのような役割を持っているのかを整理して解説します。


表領域とは何か?

まず前提として、表領域(tablespace) のイメージを簡単におさらいしておきます。

  • データベース内の 論理的な「入れ物」

  • 実体は 1 つ以上の データファイル(*.dbf など)

  • テーブルやインデックスなどのセグメントは、どこかの表領域に属して保存される

つまり、表領域は

「どの種類のデータを、どの物理ファイル群に格納するか」

を切り分けるための単位、と考えると分かりやすいです。


事前構成済の表領域

Oracle データベースを作成すると、デフォルトで次のような表領域が自動作成されます。

 

表領域説明
SYSTEMOracleサーバーがデータベースを管理するために使用する表領域
SYSAUXSYSTEM表領域の補助表領域
TEMPデータベースのデフォルトの一時表領域
UNDOTBS1UNDO表領域
USERS永続表領域
SYSやSYSTEMユーザー以外のユーザー用のデフォルト表領域
EXAMPLEデータベース作成時に「サンプル・スキーマの作成」を指定すると作成される表領域
 


各表領域の役割をもう少し詳しく

上の表だけだと、ニュアンスがつかみにくい部分もあるので、
代表的な表領域について、もう少し踏み込んで解説します。

SYSTEM 表領域

  • Oracle データベースの 中枢となる管理情報 が格納される領域

  • データディクショナリ(オブジェクト定義情報など)が含まれる

  • 原則として、アプリケーションのユーザーデータを入れるべきではない

SYSTEM をいっぱいにしてしまうと、
データベース全体がまともに動作しなくなる 危険があるため、
運用設計時点で「SYSTEM には触らない」というルールを決めておくことが多いです。


SYSAUX 表領域

  • SYSTEM 表領域の 補助表領域

  • さまざまなコンポーネント(Enterprise Manager など)の管理情報が格納される

  • Oracle 10g 以降で導入された、比較的新しい位置づけの表領域

SYSAUX は SYSTEM の負荷分散のために存在しているので、
こちらもアプリケーション用のオブジェクトを作成する場所ではありません。


TEMP 表領域

  • ORDER BY、GROUP BY、ソート、ハッシュ結合などの際に使われる
    一時的な作業領域

  • メモリに収まらなかったデータの「一時退避先」になる

TEMP が足りないと、次のような影響が出ます。

  • 大量データを扱う SQL の性能劣化

  • 場合によってはエラー(ORA-01652 など)で処理失敗

大量データ処理を行うシステムでは、
TEMP のサイズと使用状況を定期的に監視する運用 がほぼ必須です。


UNDOTBS1(UNDO 表領域)

  • 更新系処理の ロールバック情報(UNDO) を保存する表領域

  • トランザクションの取り消しや、一貫性のある参照(CONSISTENT READ)で利用される

UNDO が足りなくなると、

  • ロングトランザクションで古い UNDO が上書きされてしまう

  • 一貫性の保証ができなくなり、エラーが発生する

といった問題に繋がります。

特にバッチ処理など、長時間走る大量更新 があるシステムでは、
UNDO 表領域のサイズ設計が重要です。


USERS 表領域

  • 一般ユーザーがオブジェクトを作成するための デフォルト表領域

  • SYS / SYSTEM 以外のユーザーに割り当てられることが多い

小規模環境や検証用データベースでは、
「とりあえず USERS に全部作る」という運用もよくありますが、
本番環境では業務ごとに表領域を分割したり、
表とインデックスで表領域を分けるなどの設計を行う場合もあります。


EXAMPLE 表領域

  • データベース作成時に「サンプル・スキーマを作成する」を選んだ場合のみ作成される

  • サンプルスキーマ(HR, OE など)のオブジェクトが格納される

学習・検証用途には便利ですが、
本番環境では不要なことが多く、
作成しない or 不要であれば削除する といった扱いにするケースが一般的です。


実運用で意識しておきたいポイント

事前構成済の表領域は、
「最初からあるからそのまま使う」だけだと、
後から運用で困ることもあります。

実務では、特に次の点を意識しておくとトラブルを避けやすくなります。

1. SYSTEM/SYSAUX にユーザーデータを入れない

  • 管理系の表領域に業務テーブルを作らない

  • 開発時点で デフォルト表領域を USERS などに変更 しておく

2. TEMP と UNDO のサイズを定期的に確認する

  • 大量データを扱うバッチ処理の前後で使用量をチェック

  • 苦しくなってきたら、表領域の追加・拡張 を検討

3. USERS を「なんでも置き場」にしない

  • システムが大きくなる前に、業務単位で表領域を分ける設計を検討

  • バックアップ/リストア単位としても表領域分割は有効


まとめ

Oracle データベースを作成すると、
SYSTEM / SYSAUX / TEMP / UNDOTBS1 / USERS / EXAMPLE などの
事前構成済の表領域 が自動的に作成されます。

これらはそれぞれ、

  • データベース管理情報の領域

  • 各種コンポーネントの補助領域

  • ソートや一時処理用の領域

  • ロールバック情報(UNDO)用の領域

  • 一般ユーザー用のデフォルト領域

  • サンプルスキーマ用の領域

といった役割を持っており、
闇雲に使ってよい領域と、そうでない領域がはっきり分かれている のがポイントです。

開発や運用の現場では、

  • SYSTEM / SYSAUX にアプリのテーブルを作らない

  • TEMP / UNDO の使用状況を監視する

  • USERS を一時しのぎではなく、きちんと設計する

といった点を意識しておくと、
後からの障害対応やパフォーマンス劣化に悩まされにくくなります。

Oracle:管理者ユーザー「SYS」と「SYSTEM」のデフォルトパスワード

Oracle 初期パスワードとは?

Oracle 初期パスワードを確認したい/変更したい場合、多くのバージョンで仕様が異なるため注意が必要です。この記事では Oracle の初期アカウント(SYS・SYSTEM)について、パスワードの扱いと安全な運用方法を解説します。

SYSユーザーのデフォルトパスワード:change_on_install

  • sysユーザーでのログイン例です。

SYSTEMユーザーのデフォルトパスワード:manager

  • systemユーザーのログイン例です。

Oracle:管理者ユーザー「SYS」と「SYSTEM」のデフォルトパスワード

ユーザー初期パスワード例備考
SYSchange_on_installデータディクショナリを管理する最上位アカウント
SYSTEMmanager一般的な管理作業に使用可能な補助アカウント

セキュリティ上の注意点

変更必須

デフォルトのままでは外部からの攻撃に悪用されやすいため、必ずパスワード変更を行うこと。

最近の Oracle バージョンでの違い

  • 11g 以降:インストール時にユーザーが必ずパスワードを指定。

  • 12c 以降:パスワードポリシーが強化され、英数字・記号混在の複雑なものを要求。

  • 19c/21c:初期アカウントはロック状態になっている場合も多い。

補足:運用時の留意点と実践アドバイス

本稿でご紹介したように、デフォルトユーザー「SYS」「SYSTEM」の初期パスワードが設定されたまま運用を開始することは、非常に高いセキュリティリスクを伴います。特にネットワークに接続された環境やクラウド/仮想化されたデータベースでは、外部からの侵入・横展開の入口になり得ます。

そこで、実運用にあたっては以下の点もあわせてご検討ください:

  1. パスワード変更/ロックダウンの徹底
    ・前述の SQL コマンド(ALTER USER … IDENTIFIED BY …)で直ちに適用するだけでなく、変更したパスワードは社内ポリシーに基づき「使い捨て・非共有」設計としてください。
    ・可能であれば、管理者ユーザーを使用せずに特権を限定した別ユーザーを作成し、SYS/SYSTEM アカウントは緊急対応用にのみ残すと良いでしょう。

  2. アクセス制御・監査ログの有効化
    ・データベースに対するアクセスを IP・ネットワーク・時間帯別に制限することで、万一パスワードが流出しても被害を抑制できます。
    ・また、誰がいつどのユーザーでログイン/DDL/DMLを実行したかを追えるように監査ログを有効化することも推奨されます。

  3. バージョン・ポリシーの理解
    ・本記事でも触れられている通り、Oracle Database のバージョンによって初期アカウントの仕様(パスワード必須・アカウントロック等)が異なります。例えば 11g 以降、12c/19c ではより強固なパスワードポリシーと自動ロック機能が導入されています。 Write Remember
    ・そのため、運用している環境のバージョンを把握し、初期設定のまま稼働していないか定期的に確認することが重要です。

  4. 定期的なレビューと脆弱性対策
    ・初期アカウントだけでなく、標準サンプルスキーマやテスト用ユーザーも残していないかチェックしてください。攻撃者は「資料通りに」残された穴を狙う傾向があります。
    ・さらに、データベース自体だけでなく OS/ミドルウェア/接続前段のネットワーク構成も含めた総合的なセキュリティレビューを年1〜2回実施することを推奨します。

  5. 万一のインシデント対応準備
    ・万が一、アカウントの不正使用やパスワード流出が疑われた場合の初動手順をあらかじめ策定しておくと、被害の拡大を防ぐことができます。
    ・例えば、アカウントの即時ロック/パスワード強制リセット/ログの取得・分析/改ざんの有無確認などを、運用マニュアルに定義しておくと安心です。

最後に、本稿の内容をただ「変更・実施すれば終わり」とせず、定期的な「運用の振り返り」と「改善サイクル」の一部として組み込むことが、真に安全なデータベース運用の鍵になります。ぜひ、日常運用の中で今回の注意点を意識し、安心・安全な環境構築に役立ててください。