Oracle Linux 8.3にOracle 19cを構築する (DB構築後編)

Database Database

前回記事の続きです。

今回は、Oracle Database 19cをインストールして、DBを構築します。

あと、この記事執筆の動機は、自分が最新の知識をキャッチアップする目的も兼ねているので(11g, 12cが最後に使ったやつなので)、前提知識が古いと感じるかもしれませんが、ご了承下さい。

また、前回記事でも書きましたが、一連の記事の目的は.NET 5.0(C#)のプログラムと連携させる目的での学習用データベース構築なので、あまり込み入ったことはしていませんし、きっちりしてない部分があるかもしれません。そこは、ご理解頂けると嬉しいです。

ODP.NET Core Managed Driverの実装方法は下の記事で解説しています。

TL;DR

昔は専用ユーザー(oracle)やグループ(oinstall)を自分で作成して、その後はインストーラーを実行して、要は手動インストールしてやる必要がありましたが、今はパッケージ(RPM)で可能です。これを使うとほぼ自動化してくれるので、効率よく作業できます。

なので、やる作業としては、

  1. Oracle Preinstallation RPMのインストール
  2. Oracle Database 19cのインストール
  3. DBCAでデータベース作成
  4. データベースの起動・動作確認
  5. F/Wの設定

となります。

Oracle Preinstallation RPM

前提パッケージの自動インストール、インストール用ユーザーの自動作成など、事前作業を自動化してくれるものです。

以下のコマンドでインストール。

$ sudo dnf install oracle-database-preinstall-19c.x86_64

確認がでたら「y」を押し、無事できたかを確認します。

Oracle Database Install

oracleユーザーができているか、確認してみます。

$ id oracle

ちゃんとできていますね。

Oracle Database Install

Oracle Database 19cインストール

ダウンロードします。
RPMパッケージのURLは以下のページから取得可能です。

アカウントを作成する必要があるので、まだ作成していない場合はします。

ダウンロードできたら、とりあえず、ホームディレクトリにrpmを置くことにします。

Oracle Database Install

ファイルが壊れてないか、チェックします(SHA256で)。
ハッシュ値は、先ほどのダウンロードページに掲載されています。
checksum.txtというファイルを作り、ハッシュ値[半角スペース]ファイル名という内容にします。

Oracle Database Install
$ sha256sum -c checksum.txt

を実行。

「完了」と出たら、OKです。ファイルが壊れていたり改ざんされていると(あまりないだろうけど)、「一致しません」という文言が出ると思います。

Oracle Database Install

下のコマンドでインストールします。

$ sudo dnf localinstall oracle-database-ee-19c-1.0-1.x86_64.rpm

確認がでたら「y」を(まぁ、-yオプションつけて確認スキップしてもいいのですが、慎重にやりたい)。

Oracle Database Install

完了しました。

データベースを作成

今回はDatabaseの構築自体が勉強ではないので、特殊な用途ではない基本的な構成のデータベースを作成します(データファイル、表領域、PDBの作成などは、また時間があれば書きます)。

環境変数設定

先に、ORACLE_HOMEなどの環境変数を設定します。個々のユーザーごと(.profile)に追記してもいいのですが、全ユーザーで使いますので、共通の場所に追記します。

$ sudo nano /etc/profile

一番下に、以下を追記。
SIDは識別子で、今回作成するデータベースです。
文字コードの設定も追加しておきます。

export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=/opt/oracle/product/19c/dbhome_1
export PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_SID=orcl
export NLS_LANG=Japanese_Japan.AL32UTF8

保存して、次のコマンドで反映します。

$ source /etc/profile

echo $ORACLE_HOMEを実行して、ちゃんとできてるか確認。

Oracle Database Install

DBCAでデータベース作成

DBCA (Database Configuration Assistant)は、Databaseの作成を行うツールです。

で、これはoracleユーザーで実行するのですが、oracleユーザーはパスワードが設定されていないので、設定します。

$ sudo passwd oracle

で、一旦GUIからログアウトし、oracleユーザーでログインします(これをしないと、ウィンドウが立ち上がらない)。
言語設定は「English」にしておきます。というのも、日本語にすると文字が「□□」になって化けてしまうからです。まぁ日本語にしてもいいのですが、別途Java実行環境を入れないといけないのと、DBCAの起動スクリプトを編集する手間が増えるので、今回はこのまま英語で行います(あくまでテスト用DB作成なので)。

ちなみに、日本語化を正しく表示させたい方は、最新のOracle JDKをインストールし(個人利用なら無償)、$ORACLE_HOME/bin/DBCAをviなりnanoで開いて、JRE_DIRのパスを変えてやる必要があります。

話を戻すと、英語のGUI環境にログインしてターミナルを開き、dbcaを起動します。

Oracle Database Install
$ dbca
Oracle Database Install

上の「Create a database」を選びます(なぜか、ラジオのチェックが表示が変ですが、選択はされているみたいです)。

Oracle Database Install

下の「Advanced configuration」を選択して、「Next」。

Oracle Database Install

General Purpose or Transaction Processing」を選択して、「Next」。

Oracle Database Install

以下の箇所だけ変更します(まぁ、でも名前は好きなように)。
– PDB name:pdb1

Oracle Database Install

PDBとは、プラガブル・データベースの略で12cから導入された機構です。

簡単に説明すると、CDBと呼ばれる親となるコンテナがあり、その中に1つ以上のPDBが内包されます。PDBは従来の表領域・スキーマとなるものの、セットになります。これにより、パッチ適用などの個別にしていた作業が効率化できるという仕組み。

SIDのorclは後々また使うので、覚えておいて下さい(ちなみに、Oracleではこのorclがよく使われる)。

Use template file for database stroage attributes」を選択して、「Next」。

Oracle Database Install

Specify Fast Recovery Area」を選択して、後はデフォルトのまま、「Next」。

Oracle Database Install

Create a new listener」にチェックを入れ、以下をセット。リスナーは、クライアントからの処理要求を受け付けるサービスのことです。ここで指定したポート番号(1521)は、クライアントから接続した時に使います。

  • Listener name:LISTENER
Oracle Database Install

「Data Vault Config Option」は何も選択せず、「Next」。

Oracle Database Install

「Configuration Options」はいくつか設定項目があります。
Memoryは、「User Automatic Shared Memory Management」を選択(値はそのまま)。

Oracle Database Install

Character setsは、
– User Unicode (AL32UTF8)を選択
– National character set:UTF8
– Default language:Japanese
– Default territory:Japan

Oracle Database Install

Connection modeは、「Dedicated server mode」を選択。

Oracle Database Install

Sample schemaが必要な場合は、「Add sample schemas to the database」にチェックをいれます(文字通り、サンプルのデータが入る)。

Oracle Database Install

「Management Options」はデフォルトのまま、「Next」。
Enterprise Managerは、ブラウザ上からDBの状態確認などができるツールです。

Oracle Database Install

管理者はそれぞれ別パスワードにしてもいいのですが、今回は同じにします。OracleにはSYS,SYSTEMなど、複数の管理者ユーザーが存在します。

Oracle Database Install

デフォルトのまま「Create database」にチェックが入っていることを確認し、「Next」を押します。

Oracle Database Install

「Finish」を押します。すると、データベース作成が開始します。かなり長い作業なので、気長に待ちましょう。

Oracle Database Install

気長に待ちましょう。

Oracle Database Install

問題なく終了すると、この画面になります。この画面の情報は後々使いますので控えるなりスクリーンショットを取るなりし、「Close」で終了させます。

Oracle Database Install

これで、データベース構築は終わりです。

リスナー起動

リスナーが起動していないので、oracleユーザーのまま、lsnrctlコマンドを実行し、startと実行します。

LSNRCTL> start
The Command completed successfully

と出たら、OK。
exitでlsnrctlを抜けます。

データベース起動

oracleユーザーのまま、sqlplusでアイドルインスタンスに繋ぎます。

$ sqlplus / as sysdba

startupで起動します。

SQL> startup

データベースがオープンされましたと出たら、OK。

Oracle Database Install

tnsname.oraに接続識別子を追加

PDB1に接続するための識別子を追加しておきます(クライアント側でも、場合によっては、この作業をすることがあります)。これを追記しておくと、サーバーのIPアドレスとかポート番号をその都度書かなくても、識別子を指定して接続ができるようになります。

nanoで、設定ファイルを開き、

$ nano /opt/oracle/product/19c/dbhome_1/network/admin/tnsnames.ora

以下のPDB1の識別子を追加します(クライアントから接続するのに使う)。
次回以降の記事では、このPDB1に対して表とデータを作成していきます。

PDB1 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = pdb1)
    )
  )

全体はこんな感じになります。

Oracle Database Install

サーバーから動作確認

試しに繋いでみましょう。

$ sqlplus sys/[パスワード]@PDB1 as sysdba

こんな風に「接続されました」と出たら、OKです。

Oracle Database Install

ただ、このままだとPDBが使用できませんので、使用可能な状態にします。PDBにはオープンモードという状態があり、MOUNTEDだと書込・読込ができません。オープンモードがREAD WRITEである必要があります(OPEN MODEをMOUNTEDからOPENにする)。

Oracle Database Install

次のコマンドを実行します。

SQL>alter pluggable database open;

OPEN MODEがREAD WRITEになりました。

Oracle Database Install

これで、データベース構築は問題なくできました。

ユーザーの追加

SYSやSYSTEMは管理者ユーザーなので、普段使う用の一般ユーザーとスキーマ(Oracleで領域を表す概念)を作成しておきましょう。

SQL> create user yuki identified by [パスワード]
     default tablespace USERS
     temporary tablespace TEMP;

権限を与えます。
connectは接続するために必要な権限のセット(ロールと呼ぶ)ですが、最低限これが必要です。resourceは、紐づけたスキーマ内での・作成・変更・削除が可能です(要は一般的なユーザー)。ちなみに、管理者用にDBAロールがあります。

SQL> grant connect to yuki;
SQL> grant resource to yuki;

実行すると、こうなるはず。

Oracle Database Install

↓も必要です。

$ GRANT UNLIMITED TABLESPACE TO yuki;

試しに接続してみましょう。

$ sqlplus yuki@pdb1

sqlplus [ユーザー名]/[パスワード]@[接続識別子] にすることで、パスワードも一緒に指定できます。

接続できると、こうなるはずです。

Oracle Database Install

はい。これで、構築は完了。

ファイアーフォールの設定

suで昇格するなど、root権限で以下を実行します。

$ firewall-cmd --zone=public --add-port=1521/tcp --permanent
$ firewall-cmd --zone=public --add-port=5500/tcp --permanent
$ firewall-cmd --reload

これで、データベースの構築は完了です。
結構時間がかかりますねえ…。

仕事でやるならクライアント側からDBに接続可能かもテストするのですが、クライアント側はODP.NET Managed Driverを使用してC#でプログラムを作るので、そこは次回以降にしようと思います。

ちなみに、Enterprise Managerという管理用ツールにアクセスするには、https://DBサーバーのIPアドレス:5500/em/をブラウザで開きます。

Oracle Database Install

以上です。
次回は、.NET 5.0(C#)からOracle Database 19cに接続するコードを作成してみます。

参考リンク