Vagrant + Oracle8Linux + OracleXE 21cのインストール
Vagrant Boxを設定する
OralceLinuxは、Oracleが管理しているリポジトリから取得する為、box_urlを指定する必要がある
Vagrant.configure("2") do |config| # Boxを分けてDBとプログラムを分ける方が管理しやすいので名前を付ける config.vm.define "oracleDB" do |server| server.vm.box = "oraclelinux/8" server.vm.box_url = "https://oracle.github.io/vagrant-projects/boxes/oraclelinux/8.json" server.vm.network "private_network", ip: "192.168.33.11" end endOracle Linux Vagrant Boxes:https://yum.oracle.com/boxes/
Boxを起動する
Vagrantを立ち上げ
> vagrant up oracleDB
SSHで接続する
> vagrant ssh oracleDB
OracleXE 21cをインストールする
参考:https://docs.oracle.com/cd/E96517_01/xeinl/procedure-installing-oracle-database-xe.htmlVagrantのSSHは、ユーザ:vagrantで接続するのでsuコマンドでrootにする
$ sudo su -
RPMをダウンロードしてインストールをする
# curl -o oracle-database-preinstall-21c-1.0-1.el7.x86_64.rpm https://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/oracle-database-preinstall-21c-1.0-1.el7.x86_64.rpm # yum -y localinstall oracle-database-preinstall-21c-1.0-1.el7.x86_64.rpm
サービス構成スクリプトを起動する
SYS, SYSTEM, PDBADMINといった管理者用のパスワードの設定をすることになる。
開発用のBox設定なので、忘れづらいもの(vagrant)とかを入力しておく。
# /etc/init.d/oracle-xe-21c configure
OracleXEのパスを通す
環境変数を設定する
$ export ORACLE_SID=XE $ export ORAENV_ASK=NO
oraenvコマンドを実行する。
$ . /opt/oracle/product/21c/dbhomeXE/bin/oraenv
何らかのエラーメッセージが出てくるが気にせず、以下の行が出てきたら「/opt/oracle/product/21c/dbhomeXE」と入力する
ORACLE_HOME = [] ? /opt/oracle/product/21c/dbhomeXE The Oracle base has been set to /opt/oracle
OracleXEの起動
systemctlコマンドで起動する
$ systemctl start oracle-xe-21c
起動できているか念のため確認
$ lsnrctl status
以下のような表示がされれば起動している
LSNRCTL for Linux: Version 21.0.0.0.0 - Production on 09-JUL-2022 03:10:55 Copyright (c) 1991, 2021, Oracle. All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for Linux: Version 21.0.0.0.0 - Production Start Date 09-JUL-2022 03:10:27 Uptime 0 days 0 hr. 0 min. 28 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Default Service XE Listener Parameter File /opt/oracle/homes/OraDBHome21cXE/network/admin/listener.ora Listener Log File /opt/oracle/diag/tnslsnr/localhost/listener/alert/log.xml Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=localhost)(PORT=5500))(Security=(my_wallet_directory=/opt/oracle/homes/OraDBHome21cXE/admin/XE/xdb_wallet))(Presentation=HTTP)(Session=RAW)) Services Summary... Service "XE" has 1 instance(s). Instance "XE", status READY, has 1 handler(s) for this service... Service "XEXDB" has 1 instance(s). Instance "XE", status READY, has 1 handler(s) for this service... Service "e11a70b25b8634e0e055000000000001" has 1 instance(s). Instance "XE", status READY, has 1 handler(s) for this service... Service "xepdb1" has 1 instance(s). Instance "XE", status READY, has 1 handler(s) for this service... The command completed successfully
PDBの確認
まずは以下のコマンドでアクセスする
sqlplus sys/{パスワード} as sysdba
接続が出来たら存在するPDBの一覧を確認する
SQL> show pdbs
以下のようにデフォルトでXEPDB1というものが存在するはず
CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 XEPDB1 READ WRITE NO
ユーザを作成する
セッションをつなぐ
SQL> alter session set container = XEPDB1;
ユーザを作成(user名:vagrant, パスワード:vagrant)
SQL> CREATE USER vagrant IDENTIFIED BY "vagrant";
権限を付与(全権限付与)
SQL> GRANT ALL PRIVILEGES TO vagrant;
接続できるか確認
ホストPCなどで接続を試す。以下はPHPの例
<?php // [ユーザー名], [パスワード], //[ホスト名]:[ポート]/[DBサービス名] $c = oci_pconnect("vagrant", "vagrant", "//192.168.33.11:1521/XEPDB1"); $s = oci_parse($c, "SELECT 'Hello World!'FROM dual"); oci_execute($s); oci_fetch_all($s, $res); echo "<pre>\n"; var_dump($res); echo "</pre>\n";OCI8モジュール:https://pecl.php.net/package/oci8
Oracle Instant Client:https://www.oracle.com/database/technologies/instant-client/downloads.html