きさま!見ているなッ!!

【Oracle】データベース(非CDB)を作成する

  • 2019-08-22
  • 2019-08-28
  • Oracle

Oracle Database 11g R2 までは、非マルチテナント・アーキテクチャ(非CDB)でした。12c 以降では、非推奨のアーキテクチャとなっていますので、お早めにマルチテナント・アーキテクチャ(CDB)にアップグレードしたほうがよいでしょう。

12c でも非CDBは作成できますので、今回は、非CDBをコマンドラインで作成してみましょう。

環境

環境情報です。

OSRDBMS
CentOS 7.6Oracle Database 12c R2 Enterprise Edition

今回作成するデータベースの情報です。

データベースタイプ単一インスタンス
アーキテクチャ 非マルチテナント
データベース記憶域 ローカル・ストレージ
高速リカバリ領域 ローカル・ストレージ

Oracleの環境がない方は、こちらの記事をどうぞ。

Oracle Net Servicesの構成

環境変数の設定

$ export ORACLE_BASE=/u01/app/oracle
$ export ORACLE_HOME=/u01/app/oracle/product/12.2.0/dbhome_1
$ export ORACLE_HOSTNAME=testdb.oracle12c.jp
$ export ORACLE_SID=orcl

必要な環境変数を設定します。

環境変数設定値説明
ORACLE_BASE/u01/app/oracleOracleディレクトリ・ツリーのルート
ORACLE_HOME/u01/app/oracle/product/12.2.0/dbhome_1Oracleソフトウェアのインストール先
ORACLE_HOSTNAMEtestdb.oracle12c.jpPCのホスト名
ORACLE_SIDorclインスタンス識別子(SID)

listener.ora

LISTENER=
  (DESCRIPTION=
    (ADDRESS_LIST=
      (ADDRESS=(PROTOCOL=tcp)(HOST=testdb.oracle12c.jp)(PORT=1521))
    )
  )

Oracle Net Listener 構成ファイルを作成します。デフォルトリスナー(LISTENER)を構成し、クライアント接続要求をサポートします。

格納先ディレクトリファイル名内容
$ORACLE_HOME/network/adminlistener.ora上記参照
項目設定値説明
リスナー名LISTENERデフォルトのリスナー名
ホストtestdb.oracle12c.jpPCのホスト名 or IPアドレス
プロトコルtcpTCP/IP
ポート1521デフォルトのポート番号
$ lsnrctl start

リスナーを起動しておきます。

tnsnames.ora

orcl=
  (DESCRIPTION=
    (ADDRESS=
      (PROTOCOL=tcp)(HOST=testdb.oracle12c.jp)(PORT=1521)
    )
    (CONNECT_DATA=
      (SERVICE_NAME=orcl.oracle12c.jp)
    )
  )

listener_orcl=
  (DESCRIPTION=
    (ADDRESS=(PROTOCOL=tcp)(HOST=testdb.oracle12c.jp)(PORT=1521))
  )

ネット・サービス名で OracleDB に接続できるように、ローカル・ネーミング・メソッドを構成します。

格納先ディレクトリファイル名内容
$ORACLE_HOME/network/admin tnsnames.ora上記参照
項目設定値説明
ネット・サービス名orclOracleDBに接続する際の接続識別子
ホストtestdb.oracle12c.jpLISTENERの設定値
プロトコルtcpLISTENERの設定値
ポート1521LISTENERの設定値
サービス名orcl.oracle12c.jpOracleDBのSERVICE_NAMES

OracleDB がローカル・リスナーを識別するように、動的サービス登録を構成します。

項目設定値説明
ローカル・リスナーの別名listener_orclOracleDBの初期化パラメータ・ファイルの LOCAL_LISTENER に設定する
ホストtestdb.oracle12c.jpLISTENERの設定値
プロトコルtcpLISTENERの設定値
ポート1521LISTENERの設定値

データベース作成

パスワード・ファイル作成

$ orapwd FILE=$ORACLE_HOME/dbs/orapworcl

Enter password for SYS: 
$

データベース管理者の認証方式でパスワード・ファイル認証が使用できるように、パスワード・ファイルを作成します。

格納先ディレクトリファイル名
$ORACLE_HOME/dbsorapworcl

初期化パラメータ・ファイル作成

db_name='orcl'
sga_target=3G
pga_aggregate_target=1G
processes=150
db_block_size=8192
db_domain='oracle12c.jp'
db_recovery_file_dest='/u01/app/oracle/flash_recovery_area'
db_recovery_file_dest_size=10G
diagnostic_dest='/u01/app/oracle'
dispatchers='(PROTOCOL=TCP)'
open_cursors=300
remote_login_passwordfile='EXCLUSIVE'
undo_tablespace='UNDOTBS1'
control_files=(/u01/app/oracle/oradata/orcl/control01.ctl
, /u01/app/oracle/oradata/orcl/control02.ctl
)
compatible='12.0.0'
local_listener='listener_orcl'

Oracleインスタンス起動時に読み込まれる「初期化パラメータ・ファイル」を作成します。パラメータ・設定値は、環境に合わせて追加・修正してくださいね。

格納先ディレクトリ ファイル名内容
$ORACLE_HOME/dbsinitorcl.ora上記参照
パラメータ設定値説明
db_nameorclデータベース識別子(必須):最大8文字
sga_target3GSGAのサイズ:自動共有メモリー管理
pga_aggregate_target1GPGAのサイズ:自動共有メモリー管理
processes150同時接続プロセスの最大数
db_block_size8192ブロック・サイズ(バイト)
db_domainoracle12c.jp分散システムの場合に設定
db_recovery_file_dest/u01/app/oracle/flash_recovery_area高速リカバリ領域の場所
db_recovery_file_dest_size10G高速リカバリ領域のサイズ
diagnostic_dest/u01/app/oracle自動診断リポジトリ(ADR)の場所
dispatchers(PROTOCOL=TCP)共有サーバー・アーキテクチャの構成
open_cursors3001つのセッションで同時オープンできるカーソルの最大数
remote_login_passwordfileEXCLUSIVEOracleがパスワード・ファイルを確認するかどうかの設定
undo_tablespaceUNDOTBS1インスタンス起動時に使用するUNDO表領域
control_files/u01/app/oracle/oradata/orcl/control01.ctl
, /u01/app/oracle/oradata/orcl/control02.ctl
制御ファイル名
compatible12.0.0Oracleのバージョン番号
local_listenerlistener_orclローカル・リスナーのネットワーク名

ディレクトリ作成

$ mkdir -p /u01/app/oracle/oradata/orcl
$ mkdir -p /u01/app/oracle/flash_recovery_area

初期化パラメータ・ファイルに設定したディレクトリを作成しておきます。

サーバー・パラメータ・ファイル作成

$ sqlplus / as sysdba

SQL*Plus: Release 12.2.0.1.0 Production on 水 8月 21 02:03:40 2019

Copyright (c) 1982, 2016, Oracle.  All rights reserved.

アイドル・インスタンスに接続しました。

SQL> CREATE SPFILE FROM PFILE;

File created.

SQL> 

SYSDBA管理権限でインスタンスに接続します。

OracleDB からの初期化パラメータ変更を永続的に反映させるように、サーバー・パラメータ・ファイルを作成します。

データベース(非CDB)作成

SQL> STARTUP NOMOUNT
ORACLE instance started.

Total System Global Area 3221225472 bytes
Fixed Size		    8625856 bytes
Variable Size		  738197824 bytes
Database Buffers	 2466250752 bytes
Redo Buffers		    8151040 bytes
SQL> 

インスタンスをマウントせずに起動します。この時点で初期化パラメータ・ファイルが読み込まれます。

SQL> CREATE DATABASE orcl
   USER SYS IDENTIFIED BY oracle
   USER SYSTEM IDENTIFIED BY oracle
   LOGFILE GROUP 1 ('/u01/app/oracle/oradata/orcl/redo01.log') SIZE 100M BLOCKSIZE 512,
           GROUP 2 ('/u01/app/oracle/oradata/orcl/redo02.log') SIZE 100M BLOCKSIZE 512,
           GROUP 3 ('/u01/app/oracle/oradata/orcl/redo03.log') SIZE 100M BLOCKSIZE 512
   MAXLOGHISTORY 1
   MAXLOGFILES 16
   MAXLOGMEMBERS 3
   MAXDATAFILES 1024
   CHARACTER SET AL32UTF8
   NATIONAL CHARACTER SET AL16UTF16
   EXTENT MANAGEMENT LOCAL
   DATAFILE '/u01/app/oracle/oradata/orcl/system01.dbf'
     SIZE 500M REUSE AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED
   SYSAUX DATAFILE '/u01/app/oracle/oradata/orcl/sysaux01.dbf'
     SIZE 300M REUSE AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED
   DEFAULT TABLESPACE USERS
      DATAFILE '/u01/app/oracle/oradata/orcl/users01.dbf'
      SIZE 500M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED
   DEFAULT TEMPORARY TABLESPACE TEMPTS1
      TEMPFILE '/u01/app/oracle/oradata/orcl/temp01.dbf'
      SIZE 50M REUSE AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED
   UNDO TABLESPACE UNDOTBS1
      DATAFILE '/u01/app/oracle/oradata/orcl/undotbs01.dbf'
      SIZE 300M REUSE AUTOEXTEND ON NEXT 5120K MAXSIZE UNLIMITED
   USER_DATA TABLESPACE USERTBS
      DATAFILE '/u01/app/oracle/oradata/orcl/usertbs01.dbf'
      SIZE 300M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED
;

CREATE DATABASE文を発行し、データベース「orcl」を作成します。各項目の設定値は、環境に合わせて変更してください。

データ・ディクショナリ・ビュー作成

SQL> @?/rdbms/admin/catalog.sql
SQL> @?/rdbms/admin/catproc.sql
SQL> @?/rdbms/admin/utlrp.sql

SYSDBA管理権限で上記スクリプトを実行し、必要なデータ・ディクショナリ・ビューやPL/SQLパッケージなどを作成します。

SQL> conn system/oracle
SQL> @?/sqlplus/admin/pupbld.sql

SYSTEMユーザーで上記スクリプトを実行し、SQL*Plusに必要な設定を実施します。

まとめ

Database Configuration Assistant(DBCA)でデータベースを作成すると、いろいろと自動化されていて便利ですが、処理フローの理解が曖昧な部分もあったかと思います。

今回のようにコマンドラインで実施すると、処理フローが明確になりますね。コマンドラインのほうが手順書にまとめやすいと思いますので、GUIでもCUIでも対応できるようにしておきましょう。

【Oracle】データベース(非CDB)を作成する
最新情報をチェックしよう!