Info2softは、ウェブサイトでより快適で適切な閲覧体験を提供するためにCookieを使用しています。 プライバシーポリシー
Loading...
Oracleデータベースの作成手順はMySQLやPostgreSQLと大きく異なります。Oracleにおけるデータベースは物理的な記憶構造、バックグラウンドプロセス、制御ファイル、REDOログ、システム表領域、インスタンス全体を動作させる内部メタデータを一式含みます。
そのため、Oracleデータベースの作成には、他のデータベースにおける単純なCREATE DATABASEコマンドよりも多くの事前計画と設定作業が必要となります。
事前に留意点:既存のOracleインスタンス内にテーブルだけ作成したい場合は、本コマンドを使用する必要はありません。Oracleではスキーマはユーザーと紐付いており、CREATE USERを実行することで、MySQLで言うデータベースに相当する独立した作業領域を作成できます。以下の手順はDBAが完全に新規のOracleインスタンスをゼロから構築する際の内容です。
CREATE DATABASE文はディスク上の物理ファイル構造(データファイル、制御ファイル、REDOログファイル)を初期化します。また、システム内の全ユーザー、オブジェクト、各種メタデータを管理するOracle内部カタログであるデータディクショナリを生成します。
CREATE DATABASEは1つのインスタンスに対して1回限りの実行処理です。一度実行するとデータベースはディスク上に恒久的に存在し、同一インスタンスで再実行するには既存のファイルをすべて削除して再構築する必要があります。
Oracleデータベースを作成するには、実行前に記憶領域レイアウト、インスタンスパラメータ、アーキテクチャを事前計画し、作成完了後に追加設定作業を実施する必要があります。作成手法は手動スクリプトから完全管理型クラウドサービスまで4種類存在します。
使用する手法は環境と必要な制御粒度に応じて選択します。いずれの手法を実行する前にも、以下の事前計画作業を完了させてください。
これらの設定項目の一部はデータベース作成後に変更不可能なため、コマンド実行前に計画を確定させます。
手動手法はデータベース構造の全項目を完全に制御可能です。現在標準的な本番環境ではほとんど使用されませんが、DBCAなどのツール内部で実行される処理を理解するために有用です。
手順1:ORACLE_SIDの設定とディレクトリ作成
環境変数ORACLE_SIDを設定してインスタンスを識別し、サーバー上に必要なディレクトリを作成します。
export ORACLE_SID=testdb
mkdir -p $ORACLE_BASE/admin/testdb/adump
mkdir -p $ORACLE_BASE/oradata/testdb
手順2:パラメータファイル(init<SID>.ora)の作成・編集
初期化パラメータファイルはインスタンスの動作仕様を定義します。起動前に以下の重要パラメータを設定します。
CREATE DATABASE文に記載するデータベース名と完全一致させます。手順3:NOMOUNTモードでインスタンス起動
NOMOUNTモードではOracleはパラメータファイルを読み込みメモリ領域を初期化するだけで、ディスク上の既存データベースにアクセスしません。CREATE DATABASE実行に必須の状態です。
sqlplus / as sysdba
STARTUP NOMOUNT;
手順4:CREATE DATABASE文を実行
文を実行する前にOracleバージョンを確認してください。Oracle 21c以降はパラメータENABLE_PLUGGABLE_DATABASEの既定値がTRUEとなり、FALSEに設定するとCREATE DATABASEが失敗します。
Oracle 19c以降を使用する場合は、ENABLE PLUGGABLE DATABASE句を記述してCDBを作成することがOracle推奨です。CDB作成後、CREATE PLUGGABLE DATABASEでプラガブルデータベースを追加できます。
以下のSQL文はOracle 19c用の物理ファイル構造を作成する例です。
CREATE DATABASE testdb
USER SYS IDENTIFIED BY sys_password
USER SYSTEM IDENTIFIED BY system_password
-- トランザクション履歴用REDOロググループ定義
LOGFILE GROUP 1 ('/u01/oradata/testdb/redo01.log') SIZE 50M BLOCKSIZE 512,
GROUP 2 ('/u01/oradata/testdb/redo02.log') SIZE 50M BLOCKSIZE 512,
GROUP 3 ('/u01/oradata/testdb/redo03.log') SIZE 50M BLOCKSIZE 512
MAXLOGFILES 5
MAXLOGMEMBERS 5
MAXDATAFILES 100
-- 固定文字セット設定
CHARACTER SET AL32UTF8
NATIONAL CHARACTER SET AL16UTF16
EXTENT MANAGEMENT LOCAL
-- 必須システム表領域定義
DATAFILE '/u01/oradata/testdb/system01.dbf' SIZE 325M REUSE
SYSAUX DATAFILE '/u01/oradata/testdb/sysaux01.dbf' SIZE 325M REUSE
DEFAULT TABLESPACE users
DATAFILE '/u01/oradata/testdb/users01.dbf'
SIZE 500M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED
DEFAULT TEMPORARY TABLESPACE temp
TEMPFILE '/u01/oradata/testdb/temp01.dbf'
SIZE 20M REUSE
UNDO TABLESPACE undotbs1
DATAFILE '/u01/oradata/testdb/undotbs01.dbf'
SIZE 200M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;
手順5:作成後スクリプトを実行
SQL文の実行完了時点でディスク上にデータベースファイルは生成されますが、データディクショナリビューや組み込みパッケージは利用できません。SYSDBA権限で以下2つのスクリプトを実行します。
@?/rdbms/admin/catalog.sql
@?/rdbms/admin/catproc.sql
手順6:直ちにデータベースのフルバックアップを取得
アプリケーションデータを登録する前にOracle Recovery Manager(RMAN)でフルバックアップを取得し、クリーンな復旧基準点を作成します。
Oracle Database Configuration Assistant(DBCA)はOracle公式の推奨データベース作成ツールです。パラメータファイル作成、ディレクトリ配置、作成後スクリプト実行を自動化し、完了時点で完全設定済みのデータベースを生成します。DBCAはGUIウィザードとして起動するか、コマンドラインからサイレントモードで実行可能です。
dbcaを実行します。ディスプレイ環境が存在する場合はGUIウィザードが起動します。自動化・スクリプト実行環境の場合はサイレントモードを使用します。
dbca -silent -createDatabase \
-templateName General_Purpose.dbc \
-gdbName testdb \
-sid testdb \
-characterSet AL32UTF8 \
-sysPassword sys_password \
-systemPassword system_password \
-datafileDestination /u01/oradata \
-storageType FS
本手法は本番データベースの構造・設定と完全に一致するステージング環境または開発環境を作成する際に有用です。
Oracle Cloud Infrastructure(OCI)では手動で作成スクリプトを実行する必要がなく、以下2種類のサービスはOCIコンソールからデータベースをプロビジョニングします。
DBシステム事前にOracleソフトウェアがインストールされた仮想マシンまたはベアメタルサーバーを提供します。「Oracleデータベース→DBシステム→DBシステム作成」に進み、インスタンス形状、記憶領域、Oracleバージョン、ネットワーク設定を構成します。OSとデータベースの両方に完全なDBA権限でアクセス可能です。
自律型データベース完全管理型サービスで、パッチ適用、チューニング、バックアップをOracleが自動処理します。「Oracleデータベース→自律型データベース→自律型データベース作成」に進み、「トランザクション処理」などのワークロード種別と管理者認証情報を設定すると、数分でデータベースが利用可能になります。
自律型データベースではOS層やDBCAにアクセスできず、ADMINユーザーとして直接接続し、すぐに業務オブジェクトを作成できます。
Oracleデータベース作成には多くの手順が存在し、パラメータファイルのタイプミスやディレクトリ欠損1つで処理が完全に停止します。頻出エラーと対処法を記載します。
汎用的なエラーコードで、必ずより詳細な副次エラーコードが併記されます。アラートログを確認し根本原因を特定します。
$ORACLE_BASE/diag/rdbms///trace/alert_.log
CREATE DATABASE文に記載したDB名とinit.oraのDB_NAMEパラメータ値が不一致しています。双方を同一にするか、SQL文にDB名を記載せずパラメータファイルの値を継承させます。
SQL文にDB名が記載されておらず、初期化ファイルにDB_NAMEも設定されていません。init.oraにDB_NAME=任意のDB名を追加します。
インスタンスが必要な状態に遷移する前にコマンドを実行しています。新規作成時はNOMOUNT、保守作業時はMOUNTモードを使用します。
WE8ISO8859P1などの制限付き文字セットを選択すると、多言語データや特殊文字の格納ができなくなります。この設定はデータベース全体を再構築しなければ変更不可能なため、常にAL32UTF8を使用してください。
CREATE DATABASEが完了してもUSER_TABLESやDBA_OBJECTSに対するクエリがエラーを返す場合は、作成後スクリプトを実行していません。SYSDBA権限でcatalog.sqlとcatproc.sqlを実行し、データディクショナリビューと組み込みPL/SQLパッケージを作成します。
接続時に「プロトコルアダプタエラー」または「ORA-12560」が発生する場合は、環境変数ORACLE_SIDが正しく設定されていません。SQL*Plus起動前に設定を実行します。
# Linux
export ORACLE_SID=任意のSID
# Windows
set ORACLE_SID=任意のSID
データベースを本番環境に移行する前に以下の作業を完了させます。
データベース作成後に最初に実施すべき作業はバックアップ方針の定義です。Oracle標準のRecovery Manager(RMAN)は優秀なツールですが、スクリプト知識、手動によるスケジュール設定が必要で、複数のデータベース・サーバーを一元管理するコンソールが存在しません。複数のOracleインスタンスを管理する環境では運用負荷が大幅に増加します。
i2BackupはWebベースの一元管理コンソールを搭載したエンタープライズ向けバックアップソリューションで、RMANの保護機能を置き換えることなく、データベースバックアップの運用複雑さを低減します。
バックアップを超えた運用を求める企業向けに、Info2Softは高可用性・災害復旧ソリューションのi2Availability、Oracleを含む40種類以上のデータベースに対応するレプリケーションツールi2Streamも提供しています。これらの製品を組み合わせることで、バックアップから継続的可用性まで全領域のデータ保護を実現します。
Oracleデータベースの作成は単一コマンドで完了する作業ではありません。実行前に記憶領域レイアウト、文字セット、インスタンスパラメータを計画し、作成後にcatalog.sql、catproc.sqlなどの追加作業を実施して初めて完全に利用可能な状態になります。
適切な作成手法は業務環境に応じて選択します。手動CREATE DATABASEは全項目を細かく制御でき、Oracleのインスタンス初期化処理の理解に役立ちます。DBCAは大半の本番環境に対するOracle推奨手法で、複雑な処理を自動化します。テンプレートによるクローン作成は複数環境に同一設定を複製する際に適しています。Oracle CloudはOS層へのアクセスが不要な企業向けにインフラ管理作業を完全に省略します。
いずれの手法を使用した場合も、アプリケーションデータを登録する前にInfo2softのi2Backupなどのソリューションでバックアップを取得してください。クリーンな復旧基準点は設定ミスや初期段階のデータ損失に対する最も簡単な防衛策となります。