株式会社コーソル

コーソルDatabaseエンジニアのブログ

技術ブログ

ORACLE MASTER Bronze DBA 試験対策セミナーフォローアップ1

目次

渡部です。10/15に開催した 「出版記念特別企画:黒本著者が解説 ORACLE MASTER Bronze DBA 試験対策セミナー」 に、非常に多くの方にご参加頂きました。ありがとうございました。

オンラインセミナーで取り上げたトピックについて説明しつつ、 それぞれのトピックで頂戴した質問についても、 当日回答できないかったものも含め、 回答してみたいと思います。

記事は前半と後半の2つに分かれています。

ORACLE MASTER 新Bronze DBA黒本オンラインセミナーについて

  • 名称 : 【オンライン限定】出版記念特別企画:黒本著者が解説 ORACLE MASTER Bronze DBA 試験対策セミナー
  • 日時 : 2020年10月15日(木) 15:00~17:00 (接続開始 14:30)
  • 定員 : 200名
  • 参加費 : 無料
  • 申込URL https://go.oracle.com/LP=98282?elqCampaignID=265287

ORACLE MASTER 新Bronze DBA黒本とは

歴史ある翔泳社さんの資格対策書籍シリーズである、いわゆる「黒本」の新Bronze DBA版です。 正式な書名は「オラクルマスター教科書 Bronze DBA Oracle Database Fundamentals」です。

この書籍は、2020年2月に開始された新しいORACLE MASTER試験である 「Bronze DBA Oracle Database Fundamentals(試験番号1Z0-085)」 の試験対策書籍です(以下、「新Bronze DBA黒本」と記載)。新Bronze DBA黒本は、2020年10月時点で、1Z0-085試験に対応する唯一の試験対策書籍です。

この試験に合格すると、ORACLE MASTER新体系における資格「ORACLE MASTER Bronze DBA」を取得できます。

詳細は以下をご確認下さいませ。

ORACLE MASTER Bronze DBA 2019試験対策本を執筆しました

新Bronze黒本 第1章 Oracleデータベース管理の概要

黒本の第1章の章構成とポイントは以下の通りです。

  • 1-1 データベースの基礎知識
  • 1-2 SQLの基礎知識
  • 1-3 Oracleデータベースの概要
  • 1-4 Oracleデータベースの基本的な動作と構造

オンラインセミナーでは、Oracleデータベースの基本的な動作と構造について説明しました。

Oracleデータベースの基本的な動作と構造

1. 初期状態

OS起動直後(マシン起動直後)の状態は、以下のように図示できます。

何もOracle関連のプロセス(プログラム)が起動しておらず、ファイルだけが存在しています。

  • クライアントマシンにはクライアントアプリケーションのプログラムファイルは存在しています。
  • データベースサーバーには、データベースファイルに分類される、データファイル、REDOログファイル、制御ファイルが存在しています。

2. サーバ側の常駐部分を起動

初期状態のままでは、Oracleを利用できません。

Oracleを利用するためには、インスタンスを起動する必要があります。 また、ネットワークを介して、データベースサーバー以外のマシンからOracleを利用できるようにするためには、 リスナーを起動する必要があります。

3. ネットワークを介して接続を確立

クライアントアプリケーションを起動し、プロセスを生成します。 Oracleでは、これをユーザープロセスと呼びます。

以降、図に示した手順に従うと、ネットワークを介して、クライアントマシンからOracleへの接続を確立できます。 プロセスという観点で見ると、接続が確立されるのは、ユーザープロセスとサーバープロセスの間です。

4. SQLの実行

確立された接続を用いて、ユーザープロセスはサーバープロセスのSQLを送信します。 送信したSQLはサーバープロセスにより処理され、処理結果がユーザープロセスに返送されます。

1章に関連する質問

オンラインセミナーでいただいた質問に回答します。

なお、自分の質問が抜けている、質問の主旨を取り違えているなどあれば、 Twitterで@wrcsus4 (私のTwitterアカウント)までご連絡をお願いします。

リスナープロセスが存在する理由

サーバプロセスとユーザプロセスで直接連携したほうが早いと思ったのですが、リスナープロセスを挟むのはなぜでしょうか?

3章で説明するローカル接続であれば、リスナーは不要です。

ただし、ネットワークを介した接続(リモート接続)の場合、Oracleではリスナープロセスが必要です。 Oracleはそのような設計になってしまっているのです。

余談気味ですが、MySQLやPostgreSQLでは、リモート接続を受け付ける機能が、Oracleインスタンスに相当する、 いわゆる本体部分に含まれています。このため、MySQLやPostgreSQLには、リスナープロセスに相当する概念はありません。

言い換えると、ネットワークを介した接続のために、専用のプロセスが必要である、Oracleのアーキテクチャは 若干独特ではあります。でもしょうがないので、そういうモノだと受け入れてくださいませ ;-P

リスナープロセスが機能するタイミング

リスナープロセスは、接続時のみ使われるのでしょうか。

はい、ネットワークを介した接続(リモート接続)を確立するときのみ使用されます。 一旦、リモート接続が確立されれば、リスナープロセスは不要です。

たとえば、リモート接続の確立後にリスナープロセスは停止しても、 確立済みのリモート接続には影響はありません。すなわち、 確立済みのリモート接続を使ってユーザープロセスからサーバープロセスにSQLを送信し、 SQLを実行できます。

ただし、リスナープロセスを停止すると、それ以降、新規のリモート接続を確立することはできなくなります。

新Bronze黒本 第2章 Oracleソフトウェアのインストールとデータベースの作成

黒本の第2章の章構成とポイントは以下の通りです。

  • 2-1 Oracleソフトウェアのインストール
  • 2-2 Oracleデータベースの作成

オンラインセミナーでは、 Oracleを導入する作業の流れと使うツール(OUIとDBCA)について説明しました。

Oracle導入の流れ

Oracle Database 18c以降でのOracle導入の流れは以下の通りです。

Oracle Databaseソフトウェアのインストール先ディレクトリをORACLE_HOMEと呼びます。

ORACLE_HOMEにZIPファイル形式のインストールファイルを解凍し、解凍したファイルに含まれるインストーラ(OUI, Oracle Universal Installer)を起動してインストール作業を実行します。

それに続き、DBCA(Database Configuration Assistant)というツールでデータベースを作成します。ここで作成したデータベースには、アプリケーション固有のデータを格納されます。

なお、Oracle Database 12c R2以前では、若干手順が異なる点に注意してください。

18c以降では、ZIPファイル形式のインストールファイルはORACLE_HOMEに解凍しましたが、 12c R2以前では、ORACLE_HOMEではない任意の場所に解凍します。

[参考] 学習目的での無償利用

学習目的であれば、Oracle Databaseは無償利用可能です。

Oracle DatabaseはOTNからダウンロードできます。

2章に関連する質問

オンラインセミナーでいただいた質問に回答します。

なお、自分の質問が抜けている、質問の主旨を取り違えているなどあれば、 Twitterで@wrcsus4 (私のTwitterアカウント)までご連絡をお願いします。

OUIのプログラムファイル名は?

setup.exeを実行してインストールするのではないのですか?

OUIのプログラムファイル名はプラットフォーム(OS)により異なります。

Windows向けOracleでは、OUIのプログラムファイル名はsetup.exeです。 Linux/UNIX向けOracleでは、OUIのプログラムファイル名はrunInstallerです。

SQL Developerは無償で使用可能か?

SQL Developerをダウンロードするのにもライセンスは必要でしょうか?

Oracle SQL Developerは、無償で利用できます。以下のURLからダウンロードできます。

DBCAでのテンプレート作成

DBCAでのテンプレート作成で、既存データベース使用(データおよび構造)の場合、元のデータはローカルにある必要がある。と黒本に解説がありますが、ローカルとは何を意味しているのでしょうか?

既存のデータベースのデータと構造を元にテンプレートを作成する場合、 DBCAを実行するマシンと、テンプレートの元となるデータベースは同一のマシン上にある必要があります。 言い換えると、実行されたDBCAから見て「ローカル」にテンプレートの元となるデータベースがある必要があります。これが「ローカル」の意味です。

なお、既存のデータベースの構造だけ(データを含めない)を元にテンプレートを作成する場合は、リモートにあるデータベースからテンプレートの作成が可能です。

参考のため、DBCAのテンプレート作成画面を以下に示します。

新Bronze黒本 第3章 Oracle Enterprise Manager Database ExpressおよびSQL管理ツールの使用

黒本の第3章の章構成とポイントは以下の通りです。

  • 3-1 Oracle Enterprise Manager Database Express
  • 3-2 SQL*Plus

オンラインセミナーでは、 Oracleを導入する作業の流れと使うツール(OUIとDBCA)について説明しました。

ローカル接続とORACLE_SID

リモート接続とローカル接続

1章の解説で説明した接続方法はリモート接続です。ここではローカル接続について説明します。

リモート接続とローカル接続の比較を以下に示します。

ローカル接続とORACLE_SID環境変数

ローカル接続の場合、接続先データベースはORACLE_SID環境変数で指定します。 環境変数とはUNIX/Linux一般の概念で、実行環境の情報を設定する仕組みです。

ローカル接続を行うコマンド(ここではSQL*Plus)を実行するまえに、 そのコマンドのコマンド実行環境(シェル)にORACLE_SID環境変数を設定しておく必要があります。 それは、環境変数は、コマンド実行環境から起動したプロセスに引き継がれるためです。

以下にORACLE_SID環境変数に"orcl"を設定し、インスタンス識別子がorclであるデータベースにローカル接続する動作イメージを示します。

ローカル接続時のSQL*Plusのコマンド指定

SQL*Plusを使ってOracleデータベースにローカル接続する時のコマンド指定を以下に示します。

SYSTEMユーザーは強力な権限を持つ管理用途のユーザーですが、SYSDBA権限を持っていないため、扱いとしては一般ユーザーとなります。

SYSDBA権限を持つユーザーで接続する場合は、"AS SYSDBA"を指定することに注意してください。

データベース作成直後の状態で、SYSDBA権限を持つユーザーはSYSユーザーのみです。 SYSユーザー以外にもSYSDBA権限を持つユーザーを作成することも可能ですが、多くのシステムで、SYSDBA権限を持つユーザーはSYSユーザーのみだと思います。

なお、SQL*Plusを使ってOracleデータベースへの接続するときのコマンド指定方法には、 上に示したやり方以外にも、CONNECTコマンドを使用する方法などがあります。詳細は黒本の 「3-2-2 SQL*Plus の起動と接続」を参照して下さい。

[デモ] ローカル接続とORACLE_SID

オンラインセミナーでは、実際にターミナルでコマンドを実行してローカル接続の動作を確認しました。

デモの内容はスライドにまとめていませんでしたが、ORACLE_SIDに誤った値を設定したときの動作を以下に記載しておきます。

$ export ORACLE_SID=HOGEHOGE
$ sqlplus system/Password123

SQL*Plus: Release 19.0.0.0.0 - Production on 月 10月 5 00:22:27 2020
Version 19.3.0.0.0

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

ERROR:
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
Linux-x86_64 Error: 2: No such file or directory
Additional information: 4376
Additional information: 2017874279
プロセスID: 0
セッションID: 0、シリアル番号: 0

ユーザー名を入力してください: 

3章に関連する質問

オンラインセミナーでいただいた質問に回答します。

なお、自分の質問が抜けている、質問の主旨を取り違えているなどあれば、 Twitterで@wrcsus4 (私のTwitterアカウント)までご連絡をお願いします。

ローカル接続とOracle Client

ローカル接続の場合は、Oracle Clientをインスト―ルする必要はないのでしょうか?

Oracle Clientに相当するコンポーネントはOracle Databaseソフトウェアに含まれているため、 ローカル接続の場合、データベースサーバーにOracle Clientをインストールする必要は通常ありません。

例外としては、Oracle Databaseソフトウェアとは異なるリリースのOracle Clientを使用したい場合が考えられます。

sysユーザとsystemユーザの違い

sysユーザとsystemユーザの違いはアクセス権限の違いですか。

はい。 sysユーザはSYSDBA権限を持ち、インスタンスの起動停止などを実行できますが、 systemユーザSYSDBA権限を持たないため、インスタンスの起動停止を実行できません。

SYSユーザーでの接続時に"as sysdba"を付けないときの動作

SYSユーザーでの接続時に"as sysdba"を付けないとどうなりますか?

以下の通り、"as sysdba"を付けることを促されます。接続はできません。

$ sqlplus sys/Password123

SQL*Plus: Release 19.0.0.0.0 - Production on 月 10月 5 00:34:28 2020
Version 19.3.0.0.0

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

ERROR:
ORA-28009: SYSでの接続はSYSDBAまたはSYSOPERで行う必要があります

ユーザー名を入力してください:

sysdbaのユーザー名は「sys」で固定?

sysdbaのユーザー名は「sys」で固定ということでしょうか?

データベース作成直後の状態では、SYSDBA権限を持つユーザーはSYSユーザーのみです。

データベース作成後、SYSユーザー以外にもSYSDBA権限を持つユーザーを作成することも可能です。

(ただし・・・ 細かい話をすると、SYSDBA権限を持つどのユーザーからOracleに接続しても、 接続後はSYSユーザーになります・・・もちろん、この知識はBronze試験には不要ですし、実務的に大抵不要です・・・)

SYSのパスワード復旧

sysdba 権限を持つアカウント名が SYS しかいない時に SYS アカウントのパスワードが不明になった場合、復旧方法はあるのでしょうか?

OS認証が有効であれば、OS認証を用いてSYSユーザーでOracleに接続し、パスワードを変更して対応可能です。

systemユーザーとSYSOPER権限

systemはSYSOPER権限も持ってないのですか

はい、持っていません。ただし、SYSDBA権限などの特殊な管理権限以外の権限であれば、基本的に全て持っています。

sqlplus / as sysdba での接続

私たちの環境では"sqlplus / as sysdba"というコマンド指定でOracleに接続できておりますが何が違うのでしょうか。

試験傾向などを鑑みて、新Bronze黒本では、sqlplusコマンドにユーザー名とパスワードを指定するコマンド指定方法を中心に説明しています。

ただし、sqlplusコマンドを実行するOSユーザーが、ある特定のOSグループに所属している場合、 SYS ユーザーのユーザー名とパスワードの指定を省略できます。この動作をOS認証を用いた接続と呼びます。

具体例を以下に示します。 実行ユーザーはoracleで、OSグループ"dba"に所属しているため、接続に成功します。

認証の考え方としては、ある特定のOSグループに所属しているOSユーザーでOS接続しているということは、 OSレベルですでに認証をパスしているのだから、Oracleに接続して良いと判断してよかろう。という形です。

$ id
uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(dba),54323(oper),54324(backupdba),54325(dgdba),54326(kmdba),54330(racdba)
$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on 月 10月 5 00:41:46 2020
Version 19.3.0.0.0

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

Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
に接続されました。
SQL>

EM ExpressとSQL*Plusの機能

Oracle Enterprise Manager Database Expressで出来てsqlplusで出来ないことにはどんなものがありますか?

Oracle Enterprise Manager Database ExpressはGUIツールですから、メニューなどで 用意された処理しか実行できません。たとえば、表や索引の作成はできません。

SQL*Plusは、(権限がありさえすれば)全てのコマンド(全ての処理)を実行できます。

SQL*PlusとSQL Developerの機能

SQL*Plus と Oracle SQL Developer とのできる範囲は違いますか

Oracle SQL Developerは非常に多機能なツールで、SQL*Plusで実行可能な操作は ほとんど実行できると考えて良いはずです。 (すみません、Oracle SQL Developerが何ができないのかが私は把握できません・・・、それぐらい多機能ということです)

SQL*PlusのHOSTコマンド

SQL*PlusのHOSTコマンドのイメージが良くつかめません。

SQL*PlusのHOSTコマンドは、SQL*Plusの実行中にOSコマンドを実行するためのコマンドです。

HOSTコマンドがないと、SQL*Plusの実行中にOSコマンドを実行したい場合、一旦SQL*Plusの実行を終了し、シェルに戻る必要があります。


SQL> exit
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0との接続が切断されました。
$ ls
Desktop  Documents  Downloads  Music  Pictures  Public  Templates  Videos  setup1930.sh

しかし、HOSTコマンドを使うと、SQL*Plusの実行を終了する必要はありません。 HOSTコマンドを介して、SQL*Plusの実行中にOSコマンドを実行できます。

SQL> host ls
Desktop  Documents  Downloads  Music  Pictures  Public  Templates  Videos  setup1930.sh

4章~6章の解説と質問への回答

[参考] ORACLE MASTERについて

ORACLE MASTER新体系について

新体系ORACLE MASTER 2019の変更点と留意点 – 18c/19c対応

[参考] ORACLE MASTER Platinumとは何か

ORACLE MASTER Platinumとは何か / コーソルはPlatinum取得者数No.1!

プロフィール

On7tWW6m1Ul4

渡部 亮太

・Oracle ACE
・AWS Certified Solutions Architect - Associate
・ORACLE MASTER Platinum Oracle Database 11g, 12c 他多数

カテゴリー

アーカイブ