データベース技術調査ブログ

LinuxやPostgreSQL、Oracleデータベース、AWSの知識をアウトプットしていきます

Oracle検証環境構築手順〜Databaseの作成〜

本記事は次の記事の中の手順です。
jimatomo.hatenablog.com


前の記事
jimatomo.hatenablog.com


次の記事
jimatomo.hatenablog.com



5-1)「/etc/init.d/oracledb_ORCLCDB-19c」によるサンプルDBの作成

いよいよDB作成です。今回は自動でサンプルDBを作成してくれるスクリプトを実行します。
(一般的にはDBCA(GUIの構成ツール)で作成するか、カスタマイズした作成スクリプトを使用しますが、今回は気軽にできることをモットーにしているので、デフォルトで入っているスクリプトを使用します。)

「/etc/init.d/oracledb_ORCLCDB-19c」の実行
[root@ol76-19c tmp]# # # サンプルDB構築スクリプトの実行(rootユーザで実行)
[root@ol76-19c tmp]# ls -l /etc/init.d/oracledb_ORCLCDB-19c
ls -l /etc/init.d/oracledb_ORCLCDB-19c
[root@ol76-19c tmp]# 
[root@ol76-19c tmp]# /etc/init.d/oracledb_ORCLCDB-19c configure
Configuring Oracle Database ORCLCDB.
DB操作の準備
8%完了
データベース・ファイルのコピー中
31%完了
Oracleインスタンスの作成および起動中
32%完了
36%完了
40%完了
43%完了
46%完了
データベース作成の完了
51%完了
54%完了
プラガブル・データベースの作成
58%完了
77%完了
構成後アクションの実行
100%完了
データベースの作成が完了しました。詳細は、次の場所にあるログ・ファイルを参照してください:
/opt/oracle/cfgtoollogs/dbca/ORCLCDB。
データベース情報:
グローバル・データベース名:ORCLCDB
システム識別子(SID):ORCLCDB
詳細はログ・ファイル"/opt/oracle/cfgtoollogs/dbca/ORCLCDB/ORCLCDB.log"を参照してください。

Database configuration completed successfully. The passwords were auto generated, you must change them by connecting to the database using 'sqlplus / as sysdba' as the oracle user.
[root@ol76-19c tmp]# 




5-2) .bash_profileの編集

oracleユーザの.bash_profileを編集します。

これによって、いちいち環境変数を設定しなくて済むようにします。

[root@ol76-19c tmp]# # .bash_profileの編集
[root@ol76-19c tmp]# su - oracle
最終ログイン: 2019/05/26 (日) 00:47:15 JST日時 pts/0
[oracle@ol76-19c ~]$ 
[oracle@ol76-19c ~]$ id
uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(dba),54323(oper),54324(backupdba),54325(dgdba),54326(kmdba),54330(racdba) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[oracle@ol76-19c ~]$ pwd
/home/oracle
[oracle@ol76-19c ~]$ 
[oracle@ol76-19c ~]$ ls -la
合計 24
drwx------. 3 oracle oinstall 4096  5月 26 00:50 .
drwxr-xr-x. 3 root   root       20  5月 25 23:48 ..
-rw-------. 1 oracle oinstall  149  5月 26 00:26 .bash_history
-rw-r--r--. 1 oracle oinstall   18  8月 24  2018 .bash_logout
-rw-r--r--. 1 oracle oinstall  193  8月 24  2018 .bash_profile
-rw-r--r--. 1 oracle oinstall  231  8月 24  2018 .bashrc
-rw-r--r--. 1 oracle oinstall  172  8月 31  2018 .kshrc
drwxr-x---. 2 oracle oinstall   40  5月 26 00:50 .oracle_jre_usage
[oracle@ol76-19c ~]$ 
[oracle@ol76-19c ~]$ cp -p .bash_profile .bash_profile.bak
[oracle@ol76-19c ~]$ ls -la .bash_profile*
-rw-r--r--. 1 oracle oinstall 193  8月 24  2018 .bash_profile
-rw-r--r--. 1 oracle oinstall 193  8月 24  2018 .bash_profile.bak
[oracle@ol76-19c ~]$ 
[oracle@ol76-19c ~]$ 
[oracle@ol76-19c ~]$ cat .bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
	. ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/.local/bin:$HOME/bin

export PATH
[oracle@ol76-19c ~]$ 
[oracle@ol76-19c ~]$ # 編集内容は下記参照
[oracle@ol76-19c ~]$ vi .bash_profile
[oracle@ol76-19c ~]$ 
以下の内容を追記します。

(差分をdiffコマンドで表示しているので、4つのexport文を末尾に追加してください。

[oracle@ol76-19c ~]$ diff .bash_profile .bash_profile.bak
13,17d12
< export ORACLE_BASE=/opt/oracle/
< export ORACLE_HOME=/opt/oracle/product/19c/dbhome_1/
< export PATH=$PATH:$ORACLE_HOME/bin
< export NLS_LANG=Japanese_Japan.AL32UTF8
< export ORACLE_SID=ORCLCDB
[oracle@ol76-19c ~]$ 
編集後は次の通り
[oracle@ol76-19c ~]$ cat .bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
	. ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/.local/bin:$HOME/bin

export PATH
export ORACLE_BASE=/opt/oracle/
export ORACLE_HOME=/opt/oracle/product/19c/dbhome_1/
export PATH=$PATH:$ORACLE_HOME/bin
export NLS_LANG=Japanese_Japan.AL32UTF8
[oracle@ol76-19c ~]$ 




5-3) SQL*Plusでの接続とパスワードの変更

DBに接続できるか確認してみます。
[oracle@ol76-19c ~]$ # 接続できるか確認
[oracle@ol76-19c ~]$ . .bash_profile
[oracle@ol76-19c ~]$ env | grep ORA
ORACLE_SID=ORCLCDB
ORACLE_BASE=/opt/oracle/
ORACLE_HOME=/opt/oracle/product/19c/dbhome_1/
[oracle@ol76-19c ~]$ 
[oracle@ol76-19c ~]$ # なぜか再起動しないと接続に失敗する(俺だけ?)
[oracle@ol76-19c ~]$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on 日 5月 26 02:34:37 2019
Version 19.3.0.0.0

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

ERROR:
ORA-12547: TNS: 接続を失いました。


ユーザー名を入力してください: ^C
[oracle@ol76-19c ~]$ 

謎の接続できない現象に悩まされましたが、再起動をしてみたら何とか接続できるようになりました。なんだこの仕様(?)は...(^▽^;)

再起動してから再接続
[root@ol76-19c tmp]# # 接続できない場合は再起動してみる
[root@ol76-19c tmp]# systemctl reboot
Last login: Sun May 26 00:45:50 2019 from 192.168.56.1
[root@ol76-19c ~]# 
[root@ol76-19c ~]# su - oracle
最終ログイン: 2019/05/26 (日) 02:32:38 JST日時 pts/0
[oracle@ol76-19c ~]$ 
[oracle@ol76-19c ~]$ id
uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(dba),54323(oper),54324(backupdba),54325(dgdba),54326(kmdba),54330(racdba) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[oracle@ol76-19c ~]$ 
[oracle@ol76-19c ~]$ env | grep ORA
ORACLE_SID=ORCLCDB
ORACLE_BASE=/opt/oracle/
ORACLE_HOME=/opt/oracle/product/19c/dbhome_1/
[oracle@ol76-19c ~]$ 
[oracle@ol76-19c ~]$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on 日 5月 26 11:50:21 2019
Version 19.3.0.0.0

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

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

SQL> show user
ユーザーは"SYS"です。
SQL> -- ついでに起動
SQL> startup
ORACLEインスタンスが起動しました。

Total System Global Area 1543500832 bytes
Fixed Size		    9135136 bytes
Variable Size		  922746880 bytes
Database Buffers	  603979776 bytes
Redo Buffers		    7639040 bytes
データベースがマウントされました。
データベースがオープンされました。
SQL> 
SQL> select instance_name , status from v$instance;

INSTANCE_NAME	 STATUS
---------------- ------------
ORCLCDB 	 OPEN

SQL> 
SQL> -- PDBもオープンしておく
SQL> ALTER PLUGGABLE DATABASE orclpdb1 OPEN;

プラガブル・データベースが変更されました。

SQL> 
SQL> 

SQL> 
SQL> 

SQL> 
ユーザーのパスワードを変更します。(大文字小文字が区別されるので注意しましょう)
SQL> -- お好きなパスワードに変更しておきましょう(XXXXXXXXを置き換えてください!)
SQL> ALTER USER sys IDENTIFIED BY XXXXXXXX;

ユーザーが変更されました。

SQL> 
SQL> ALTER USER system IDENTIFIED BY XXXXXXXX;

ユーザーが変更されました。

SQL> 
SQL> quit
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0との接続が切断されました。
[oracle@ol76-19c ~]$ 

5-4) tnsnames.oraにORCLPDB1を追加

PDBに直接接続するためにはtnsnames.oraにPDBにつなげるようなネットワーク名が必要になります。

tnsnames.oraにORCLPDB1を追加
[oracle@ol76-19c ~]$ # tnsnames.oraにORCLPDB1を追加
[oracle@ol76-19c ~]$ cd /opt/oracle/product/19c/dbhome_1/network/admin/
[oracle@ol76-19c admin]$ pwd
/opt/oracle/product/19c/dbhome_1/network/admin
[oracle@ol76-19c admin]$
[oracle@ol76-19c admin]$ ls -l tnsnames.ora*
-rw-r-----. 1 oracle oinstall 432  5月 26 00:58 tnsnames.ora
[oracle@ol76-19c admin]$
[oracle@ol76-19c admin]$ cat tnsnames.ora
# tnsnames.ora Network Configuration File: /opt/oracle/product/19c/dbhome_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

ORCLCDB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = ol76-19c.localdomain)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = ORCLCDB)
    )
  )

LISTENER_ORCLCDB =
  (ADDRESS = (PROTOCOL = TCP)(HOST = ol76-19c.localdomain)(PORT = 1521))


[oracle@ol76-19c admin]$ 
[oracle@ol76-19c admin]$ cp tnsnames.ora tnsnames.ora_`date +"%Y%m%d_%H%M"`
[oracle@ol76-19c admin]$ ls -l tnsnames.ora*
-rw-r-----. 1 oracle oinstall 432  5月 26 00:58 tnsnames.ora
-rw-r-----. 1 oracle oinstall 432  5月 26 13:20 tnsnames.ora_
-rw-r-----. 1 oracle oinstall 432  5月 26 13:20 tnsnames.ora_20190526_1320
[oracle@ol76-19c admin]$ 
[oracle@ol76-19c admin]$ vi tnsnames.ora
[oracle@ol76-19c admin]$ 
追加する記述は次の通りです。
[oracle@ol76-19c admin]$ diff tnsnames.ora tnsnames.ora_20190526_1320
16,23d15
< ORCLPDB1 =
<   (DESCRIPTION =
<     (ADDRESS = (PROTOCOL = TCP)(HOST = ol76-19c.localdomain)(PORT = 1521))
<     (CONNECT_DATA =
<       (SERVER = DEDICATED)
<       (SERVICE_NAME = ORCLPDB1)
<     )
<   )
[oracle@ol76-19c admin]$
変更後の記載は次の通りになっています。
[oracle@ol76-19c admin]$ cat tnsnames.ora
# tnsnames.ora Network Configuration File: /opt/oracle/product/19c/dbhome_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

ORCLCDB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = ol76-19c.localdomain)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = ORCLCDB)
    )
  )

LISTENER_ORCLCDB =
  (ADDRESS = (PROTOCOL = TCP)(HOST = ol76-19c.localdomain)(PORT = 1521))

ORCLPDB1 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = ol76-19c.localdomain)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = ORCLPDB1)
    )
  )

[oracle@ol76-19c admin]$



後は白本の学習用のスキーマを作成するのみです(*^-^*)


次の記事はこちら
jimatomo.hatenablog.com


前の記事
jimatomo.hatenablog.com