個人的な興味を書き記すメモサイト

カテゴリー: データベース

Oracle Data Guard環境を作る~DBインストール編~

前準備

パッケージのアップデート(rootユーザで実行)

yum -y update

hostsファイルの編集(rootユーザで実行)

vi /etc/hosts

末尾に以下を追記

192.168.0.71 ol7-db01
192.168.0.72 ol7-db02

Preinstallの実行

yum -y install oracle-database-preinstall-19c

上記コマンドでOracle Databaseに必要なカーネルパラメータやユーザ構成などが自動的に実行されます。

Databaseのインストール

Oracleのrpmパッケージをwinscpなどでサーバに転送しておく

なお、rpmパッケージは以下よりダウンロードできる

https://www.oracle.com/database/technologies/oracle-database-software-downloads.html

ローカルインストールを実行(rootユーザ)

yum -y localinstall oracle-database-ee-19c-1.0-1.x86_64.rpm

インストールイメージ

Oracle Databaseの構成パラメータの修正

Database構成スクリプトの修正

vi /etc/init.d/oracledb_ORCLCDB-19c

以下のパラメータを修正(2号機はEASTをWESTに設定)

# Setting the required environment variables
export ORACLE_HOME=/opt/oracle/product/19c/dbhome_1

export ORACLE_VERSION=19c
export ORACLE_SID=EASTCDB
export TEMPLATE_NAME=General_Purpose.dbc
export CHARSET=AL32UTF8
export PDB_NAME=EASTPDB
export LISTENER_NAME=EASTLISTENER
export NUMBER_OF_PDBS=1
export CREATE_AS_CDB=true

構成スクリプトのコピー(2号機はEASTをWESTに設定)

confファイルをORACLE_SIDで指定した名前に合わせる必要があるため、コピーを作成している。

cp /etc/sysconfig/oracledb_ORCLCDB-19c.conf /etc/sysconfig/oracledb_EASTCDB-19c.conf

Oracle Databaseの構築

以下のコマンドでDBをサイレントインストール

/etc/init.d/oracledb_ORCLCDB-19c configure

インストールイメージ

参考サイト

https://docs.oracle.com/cd/F19136_01/ladbi/running-rpm-packages-to-install-oracle-database.html#GUID-BB7C11E3-D385-4A2F-9EAF-75F4F0AACF02

https://www.fuku.tokyo/2020/07/oracle19c-install2/

Oracle Data Guard環境を作る~OSインストール編~

OSのインストールを行う

一番上のInstall Oracle Linux 7.8を選択

言語は日本語を設定

下にスクロールすると、システム項目がある

インストール先を設定

デフォルトのまま完了を選択

ネットワークとホスト名を選択

ホスト名を「OL7-DB01」に設定(2号機は「OL7-DB02」を設定)し、Ethernetをオンにする

右下の設定ボタンを選択

IPv4セッティングタブに移動

方式を手動に設定後、アドレスの追加ボタンを選択し、アドレス・ネットマスク・ゲートウェイ・DNSサーバを入力し保存

ほかの設定はデフォルトのままインストール

rootユーザのパスワードを入力し保存

目指せデータベーススペシャリスト①

本日より、2023年10月8日のデータベーススペシャリスト受験を目標に勉強したことを書き記していこうと思います。

デッドロック検出方法について

デッドロックを検出する方法は以下の2通りの方法がある

  • 待ちグラフ
  • 時間監視

待ちグラフ

互いの資源にロック要求を出すトランザクション間で、グラフに閉路が生じた場合にデッドロックを判定する方法。処理は複雑だが、デッドロックを直ちに検出することができる。

時間監視

ロック待ち時間が一定時間以上になった場合、待っているトランザクションを強制終了させる(タイムアウト)方式が一番シンプル。ほかにもトランザクションの開始時刻(時刻印)を使う方式もある。

カーソル操作SQLの構文について

社員表

社員番号氏名年齢

上記のテーブルに対してのカーソル操作

UPDATE 社員表
 SET 氏名 = '田中', 年齢 = '28'
 WHERE CURRENT OF カーソル名

ん?社員番号は使わないの?と思った方もいるかもしれません。

実はカーソルはPLSQL等のループ処理で使います。

そのため、一連の流れ(のイメージ)を書くと以下のようになります。

カーソルの宣言

DECLARE csr CURSOR FOR SELECT 社員番号 FROM 社員リスト

カーソルオープン

OPEN csr

データ取得処理

FETCH NEXT FROM csr INTO :社員番号

ループ処理

WHILE :FETCH_STATUS = 0
BEGIN
	UPDATE 社員表 SET :氏名='田中', :年齢='28'
	    WHERE CURRENT OF csr
	FETCH NEXT FROM csr INTO :社員番号
END

カーソルクローズ

CLOSE csr

のように書きます。…が上記を実行するとすべて28歳の田中さんになってしまうので、状況に合わせて書き換えましょう。

関数従属について

反射律

BがAの部分集合であれば、A→B が成立する

増加律

A→B であれば、同じCを加えた{A,C}→{B,C} が成立する

推移律

A→B かつ B→C であれば、A→C が成立する

合併律

A→B かつ A→C であれば、A→{B,C} が成立する

分解律

A→{B,C} であれば、A→B および A→C が成立する