ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
Oracle Database 全体アーキテクチャ
Oracle Database は他の RDBMS と異なり、「インスタンス」と「データベース」を明確に分離します。MySQL では「データベース」が論理スキーマを指しますが、Oracle では「データベース」=ディスク上のファイル群です。
| 概念 | 正体 | 消えると |
|---|---|---|
| インスタンス | メモリ (SGA) + プロセス群 | 再起動で消える (一時的) |
| データベース | ディスク上のファイル群 | 永続データ (消したら復旧必要) |
1 つのインスタンスは 1 つのデータベースに接続して動きます (Oracle RAC では複数インスタンスが 1 DB を共有)。
インスタンスの内部構造
SGA (System Global Area)
| コンポーネント | 役割 |
|---|---|
| Database Buffer Cache | データブロックのキャッシュ (最大コンポーネント) |
| Shared Pool | SQL 解析結果 / 実行計画キャッシュ / データディクショナリキャッシュ |
| Redo Log Buffer | REDO ログを Online Redo Log Files に書き込む前のバッファ |
| Large Pool | バックアップ / RMAN / 並列クエリ用 |
| Java Pool | Java VM 用メモリ |
| Streams Pool | Streams / GoldenGate 用 |
主なバックグラウンドプロセス
| プロセス | 役割 |
|---|---|
| DBWn (Database Writer) | Buffer Cache の変更を Data File へ書き込み |
| LGWR (Log Writer) | Redo Log Buffer を Online Redo Log Files へ書き込み |
| CKPT (Checkpoint) | チェックポイント発生時に Data File と Control File を更新 |
| SMON (System Monitor) | インスタンス起動時の Crash Recovery、一時 Tablespace 領域回収 |
| PMON (Process Monitor) | 異常終了したユーザープロセスのクリーンアップ |
| ARCn (Archiver) | 満杯になった Online Redo Log を Archive Log に退避 |
| MMON / MMNL | AWR スナップショット、自動メンテナンス |
データベースの物理構成
| ファイル種別 | 役割 | 失うと |
|---|---|---|
| Data Files (.dbf) | 実データ・インデックスを格納 | 該当データ消失 |
| Control Files (.ctl) | DB 構造・ファイルパス・SCN 管理 | DB 起動不可 (バックアップ必須) |
| Online Redo Log Files (.log) | 変更履歴 (現在進行中) | 復旧不可 |
| Archive Log Files | 満杯になった Redo の退避 | PITR 不可 |
| Parameter File (init.ora / spfile.ora) | 初期化パラメータ | デフォルト値で起動 |
| Password File (orapwSID) | SYSDBA 等の特権ユーザー認証 | OS 認証で再作成 |
| Alert Log / Trace Files | エラーログ・トレース | 履歴消失のみ |
Tablespace (表領域)
Oracle は論理的なストレージ管理単位として Tablespace を用います。物理 Data File をグループ化したものが Tablespace で、テーブルは Tablespace に作成されます。
| Tablespace | 用途 |
|---|---|
| SYSTEM | データディクショナリ (システムのメタデータ) |
| SYSAUX | SYSTEM の補助 (AWR・Statspack 等) |
| UNDO (UNDOTBS1) | ロールバックセグメント (Read Consistency) |
| TEMP | ソート・ハッシュ結合・一時表用 |
| USERS | ユーザーテーブルのデフォルト |
| 業務用 (例: APP_DATA) | 個別アプリ向けに作成 |
-- 表領域作成
CREATE TABLESPACE app_data
DATAFILE '/u01/oradata/orcl/app_data01.dbf' SIZE 1G
AUTOEXTEND ON NEXT 100M MAXSIZE 10G
EXTENT MANAGEMENT LOCAL;
-- 表領域にテーブル作成
CREATE TABLE users (
id NUMBER,
name VARCHAR2(100)
) TABLESPACE app_data;
-- 表領域一覧
SELECT tablespace_name, status, contents FROM dba_tablespaces;
-- 使用量
SELECT tablespace_name,
ROUND(SUM(bytes)/1024/1024) AS mb_used
FROM dba_segments
GROUP BY tablespace_name;
CDB / PDB (Multitenant: Oracle 12c+)
Oracle 12c から導入されたマルチテナント構成。1 つの Container DB (CDB) の中に複数の Pluggable DB (PDB) を配置し、リソースを集約します。19c 以降は CDB 必須 (Non-CDB 廃止)。
| 概念 | 内容 |
|---|---|
| CDB$ROOT | 全 PDB 共通のメタデータ・SYS ユーザー |
| PDB$SEED | 新規 PDB 作成用テンプレート |
| PDB1, PDB2, ... | 業務アプリ用 PDB (テナント) |
-- 現在の接続先確認
SHOW CON_NAME;
SELECT name, con_id, open_mode FROM v$pdbs;
-- PDB 切替
ALTER SESSION SET CONTAINER = PDB1;
-- PDB 作成
CREATE PLUGGABLE DATABASE pdb_app1
ADMIN USER pdb_admin IDENTIFIED BY pass
FILE_NAME_CONVERT = ('/seed/', '/pdb_app1/');
ALTER PLUGGABLE DATABASE pdb_app1 OPEN;
-- 接続: tnsnames.ora で SERVICE_NAME = pdb_app1
Net Services / Listener
クライアントはOracle Listener (TCP/1521 デフォルト) 経由でインスタンスに接続します。
# tnsnames.ora (クライアント側)
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = db.example.com)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
# listener.ora (サーバ側)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = db.example.com)(PORT = 1521))
)
)
# 操作
lsnrctl start
lsnrctl status
lsnrctl services
動的パフォーマンスビュー (v$)
-- インスタンス情報
SELECT instance_name, host_name, version, startup_time, status
FROM v$instance;
-- データベース情報
SELECT name, dbid, created, log_mode, open_mode FROM v$database;
-- データファイル
SELECT file#, name, bytes/1024/1024 AS mb, status FROM v$datafile;
-- セッション
SELECT sid, serial#, username, program, status FROM v$session
WHERE username IS NOT NULL;
-- 待機イベント (どこで詰まっているか)
SELECT event, total_waits, time_waited
FROM v$system_event
ORDER BY time_waited DESC FETCH FIRST 10 ROWS ONLY;
-- SGA サイズ
SELECT * FROM v$sgainfo;
初期化パラメータ (init.ora / spfile)
-- 現在の値
SHOW PARAMETER sga_target;
SELECT name, value FROM v$parameter WHERE name = 'db_cache_size';
-- 動的変更 (spfile + memory)
ALTER SYSTEM SET sga_target = 2G SCOPE=BOTH;
-- spfile のみ変更 (再起動後反映)
ALTER SYSTEM SET processes = 500 SCOPE=SPFILE;
SHUTDOWN IMMEDIATE;
STARTUP;
-- 主要パラメータ
-- sga_target : SGA 自動管理サイズ
-- pga_aggregate_target : PGA 自動管理サイズ
-- processes : 最大プロセス数
-- sessions : 最大セッション数
-- open_cursors : 1 セッションあたり最大カーソル数
-- db_block_size : ブロックサイズ (8K がデフォルト、DB 作成後変更不可)
FAQ
Q: ORACLE_SID と DB_NAME と SERVICE_NAME の違いは?
A: ORACLE_SID = OS から見たインスタンス識別子、DB_NAME = データベース固有名、SERVICE_NAME = Listener 経由で接続するサービス名 (1 DB に複数可)。
Q: NOARCHIVELOG モードと ARCHIVELOG モードの違いは?
A: ARCHIVELOG なら満杯になった Online Redo Log が Archive Log に保存され、PITR (Point-in-Time Recovery) 可能。本番は必須。NOARCHIVELOG はバックアップ時点までしか戻せません。
Q: PDB と Schema の違いは?
A: Schema = 1 ユーザーの所有オブジェクト群 (DB 内の名前空間)、PDB = 独立したデータベース (独自の SYS、独自のスキーマ群を持つ)。マルチテナント分離が PDB の存在意義。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?