Oracle Database 18c XE インストールと制限
対応バージョン
Oracle Database 18.4
RedHat Enterprise Linux 7
CentOS 7
2018-11-12記事公開
Oracle Database の無償エディションである、 Oracle Database 18c XE(Express Edition) がリリースされました。
本記事では、Linux 7へのインストールおよび制限値について確認しています。実施したのはCentOSですが、RHELも同様です。Oracle Linuxについては、基本的にデータベース向けに事前設定がされている部分などがあるため、不要な手順があるかと思います。
Oracle Database XE ダウンロード
現在バージョンは 18.4.0 となっています。12cとパッチバージョンの考え方が変わっているので注意してください。一応 12cR2 と同等のバージョンとされています。
以下のURLよりダウンロード可能です。
以下の2つのファイルをダウンロードしてください。
Oracle Database 18c Express Edition for Linux x64:
-- Oracle Database 本体です。(2.5GB程度)
Oracle Database Preinstall RPM for RHEL and CentOS:
-- OS の初期設定を行うrpmです。自分で設定する場合は不要です。(18KB程度)
インストレーション・ガイドもありますが、現在(2018/11/12)は英語版のみでした。
https://docs.oracle.com/en/database/oracle/oracle-database/18/xeinl/installation-guide.html要件と制限
インストール前の重要な要件と制限については、以下の通りです。
- Oracle Database XEに推奨される最小スワップ領域は、2 GBまたはRAMの2倍のうちの小さい方です。
- データベースのユーザー・データの最大量は12ギガバイトを超えることはできません。
- データベースで使用されるRAMの最大量は、2ギガバイトを超えることはできません。
- 自動的に2つのコアに処理を制限します。
- ユーザーが使用可能なPDBの数は3つまでです。
- ディスクスペースは最低10GB必要です。
インストール後、USERS表領域を12GBまで拡張したところ、OS、rpm、ユーザーデータなどを含めて27GB程度でしたので、ログやシステム表領域の拡張に備えて、ディスクは40GB程度準備するとよいと思います。(rpmインストール後:9.2G、DB作成直後:13G)
Oracle Database XE インストール
インストールについては、以下のコマンドで可能です。
1 2 3 4 |
# yum -y localinstall oracle-database-preinstall-18c-1.0-1.el7.x86_64.rpm # chown -R oracle:oinstall /opt/oracle # yum -y localinstall oracle-database-xe-18c-1.0-1.x86_64.rpm # /etc/init.d/oracle-xe-18c configure |
Oracle Database XE インストール 詳細版
3つのコマンドで変更された箇所などの詳細を記載します。この項目は詳細が知りたい人向けです。詳細不要の方は「環境変数の設定」に進んでください。
バイナリファイルのチェック
まずは、配置後のファイルが破損していないか確認です。sha256sum の値は、ダウンロードページから確認可能です。preinstallのrpmは記載が確認できなかったのですが、念のため結果だけ記載しておきます。
1 2 3 4 5 6 7 8 |
# ls -l -rw-r--r-- 1 root root 18244 Nov 8 16:27 oracle-database-preinstall-18c-1.0-1.el7.x86_64.rpm -rw-r--r-- 1 root root 2574155124 Nov 8 16:44 oracle-database-xe-18c-1.0-1.x86_64.rpm # sha256sum oracle-database-preinstall-18c-1.0-1.el7.x86_64.rpm 462b2253e0e012e8211d1b6ceac0c66ecb636de1c7a27ca6a1419e3cb64d160d oracle-database-preinstall-18c-1.0-1.el7.x86_64.rpm # sha256sum oracle-database-xe-18c-1.0-1.x86_64.rpm 308c044444342b9a3a8d332c68b12c540edf933dc8162d8eda3225e662433f1b oracle-database-xe-18c-1.0-1.x86_64.rpm |
OS事前設定用rpmのインストール
マニュアルに従って事前設定用のrpmをインストールします。未インストールのrpm群についてもここでインストールされます。以下インストール時に追加されたパッケージ群です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# yum -y localinstall oracle-database-preinstall-18c-1.0-1.el7.x86_64.rpm ... 省略 ... Dependency Installed: compat-libcap1.x86_64 0:1.10-7.el7 compat-libstdc++-33.x86_64 0:3.2.3-72.el7 gssproxy.x86_64 0:0.7.0-17.el7 keyutils.x86_64 0:1.5.8-3.el7 ksh.x86_64 0:20120801-137.el7 libICE.x86_64 0:1.0.9-9.el7 libSM.x86_64 0:1.2.2-2.el7 libXext.x86_64 0:1.3.3-3.el7 libXi.x86_64 0:1.7.9-1.el7 libXinerama.x86_64 0:1.1.3-2.1.el7 libXmu.x86_64 0:1.1.2-2.el7 libXrandr.x86_64 0:1.5.1-2.el7 libXrender.x86_64 0:0.9.10-1.el7 libXt.x86_64 0:1.1.5-3.el7 libXtst.x86_64 0:1.2.3-1.el7 libXv.x86_64 0:1.0.11-1.el7 libXxf86dga.x86_64 0:1.1.4-2.1.el7 libXxf86misc.x86_64 0:1.0.3-7.1.el7 libXxf86vm.x86_64 0:1.1.4-1.el7 libaio-devel.x86_64 0:0.3.109-13.el7 libbasicobjects.x86_64 0:0.1.1-29.el7 libcollection.x86_64 0:0.7.0-29.el7 libdmx.x86_64 0:1.1.3-3.el7 libevent.x86_64 0:2.0.21-4.el7 libini_config.x86_64 0:1.3.1-29.el7 libnfsidmap.x86_64 0:0.25-19.el7 libpath_utils.x86_64 0:0.2.1-29.el7 libref_array.x86_64 0:0.1.5-29.el7 libverto-libevent.x86_64 0:0.2.5-4.el7 nfs-utils.x86_64 1:1.3.0-0.54.el7 psmisc.x86_64 0:22.20-15.el7 xorg-x11-utils.x86_64 0:7.5-22.el7 xorg-x11-xauth.x86_64 1:1.0.9-1.el7 ... 省略 ... |
ユーザー、グループの追加確認
1 2 3 4 5 6 7 8 9 10 11 12 |
# cat /etc/passwd ... 省略 ... oracle:x:54321:54321::/home/oracle:/bin/bash # cat /etc/group ... 省略 ... oinstall:x:54321:oracle dba:x:54322:oracle oper:x:54323:oracle backupdba:x:54324:oracle dgdba:x:54325:oracle kmdba:x:54326:oracle racdba:x:54330:oracle |
カーネルパラメータの追加確認
実際は1行ごとに追加した旨のコメントがあります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# cat /etc/sysctl.conf ... 省略 ... fs.file-max = 6815744 kernel.sem = 250 32000 100 128 kernel.shmmni = 4096 kernel.shmall = 1073741824 kernel.shmmax = 4398046511104 kernel.panic_on_oops = 1 net.core.rmem_default = 262144 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 1048576 net.ipv4.conf.all.rp_filter = 2 net.ipv4.conf.default.rp_filter = 2 fs.aio-max-nr = 1048576 net.ipv4.ip_local_port_range = 9000 65500 # diff /etc/sysctl.conf /etc/sysctl.d/99-oracle-database-preinstall-18c-sysctl.conf |
※ diff結果無し(99-initial-sysctl.confというファイル名で、変更前のバックアップがありました)
他エディションのインストール・ガイドでは /etc/sysctl.d/97-oracle-database-sysctl.conf に設定する旨が記載されていますが、rpmでは99番で設定しているようでした。
APIPAの無効化設定確認
1 2 3 4 |
# cat /etc/sysconfig/network ... 省略 ... # oracle-database-preinstall-18c : Add NOZEROCONF=yes NOZEROCONF=yes |
透過的ヒュージページおよび、NUMAの無効化確認
1 2 3 4 |
# cat /etc/default/grub ... 省略 ... GRUB_CMDLINE_LINUX="vconsole.font=latarcyrheb-sun16 consoleblank=0 nomodeset elevator=noop net.ifnames=0 biosdevname=0 console=tty1 console=ttyS0,115200 numa=off transparent_hugepage=never" ... 省略 ... |
元ファイルから numa=off transparent_hugepage=never の2つのパラメータが追加されていました。
ユーザーリミットの設定確認
実際は1行ごとに追加した旨のコメントがあります。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# cat /etc/security/limits.d/oracle-database-preinstall-18c.conf oracle soft nofile 1024 oracle hard nofile 65536 # oracle-database-preinstall-18c setting for nproc soft limit is 16384 # refer orabug15971421 for more info. oracle soft nproc 16384 oracle hard nproc 16384 oracle soft stack 10240 oracle hard stack 32768 # oracle-database-preinstall-18c setting for memlock hard limit is maximum of 128GB on x86_64 or 3GB on x86 OR 90 % of RAM oracle hard memlock 134217728 # oracle-database-preinstall-18c setting for memlock soft limit is maximum of 128GB on x86_64 or 3GB on x86 OR 90% of RAM oracle soft memlock 134217728 |
カーネルパラメータ、OS起動時のパラメータ変更を行っているため、念のためOSの再起動をしておくことをお勧めします。
1 |
# shutdown -r now |
データベースのインストール(runInstaller)
runInstallerに当たる部分の操作を実施します。ORACLE_HOMEの作成をします。
1 2 |
# yum -y localinstall oracle-database-xe-18c-1.0-1.x86_64.rpm ... 省略 .. |
データベースのインストール(NETCA/DBCA)
NETCA/DBCAに当たる部分の操作を実施します。一部パラメータを/etc/sysconfig/oracle-xe-18c.confから設定できます。リスナーのポート番号変更や、データファイル出力位置(デフォルト:/opt/oracle/oradata)を変更したい場合などに使用してください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# cat /etc/sysconfig/oracle-xe-18c.conf #This is a configuration file to setup the Oracle Database. #It is used when running '/etc/init.d/oracle-xe-18c configure'. # LISTENER PORT used Database listener, Leave empty for automatic port assignment LISTENER_PORT= # EM_EXPRESS_PORT Oracle EM Express URL port EM_EXPRESS_PORT=5500 # Character set of the database CHARSET=AL32UTF8 # Database file directory # If not specified, database files are stored under Oracle base/oradata DBFILE_DEST= # SKIP Validations, memory, space SKIP_VALIDATIONS=false # /etc/init.d/oracle-xe-18c configure ... 省略 ... |
環境変数の設定
インストール後に環境変数の設定を行います。マニュアルを見ると、毎回コマンドを実行して設定するようになっていましたが、面倒かと思いますので、.bashrcか.bash_profileに記載します。
1 2 3 4 5 6 7 8 9 10 11 |
# echo "ORACLE_SID=XE" >> ~oracle/.bash_profile # echo "ORACLE_BASE=/opt/oracle" >> ~oracle/.bash_profile # echo "ORACLE_HOME=/opt/oracle/product/18c/dbhomeXE" >> ~oracle/.bash_profile # echo "PATH=\${ORACLE_HOME}/bin:\${PATH}" >> ~oracle/.bash_profile # echo "export ORACLE_SID ORACLE_BASE ORACLE_HOME PATH" >> ~oracle/.bash_profile # su - oracle -c "env | grep ORACLE_" ORACLE_SID=XE ORACLE_BASE=/opt/oracle ORACLE_HOME=/opt/oracle/product/18c/dbhomeXE # su - oracle -c "env | grep PATH=" PATH=/opt/oracle/product/18c/dbhomeXE/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/oracle/.local/bin:/home/oracle/bin |
データベースの起動
データベースの作成が終わったら、起動を行います。最初からPDBが一つ作られています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# su - oracle $ sqlplus / as sysdba SQL*Plus: Release 18.0.0.0.0 - Production on Mon Nov 12 22:29:43 2018 Version 18.4.0.0.0 Copyright (c) 1982, 2018, Oracle. All rights reserved. Connected to: Oracle Database 18c Express Edition Release 18.0.0.0.0 - Production Version 18.4.0.0.0 SQL> startup SQL> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 XEPDB1 MOUNTED SQL> alter session set container = XEPDB1; SQL> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 3 XEPDB1 MOUNTED SQL> startup Pluggable Database opened. SQL> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 3 XEPDB1 READ WRITE NO |
本記事では割愛しますが、自動起動スクリプトなど仕込んでおくと便利かと思います。
データベースの制限確認
ここでは実際にメモリの制限、PDBの制限、ファイルサイズの制限について確認しています。
メモリの制限
初期状態では以下のメモリ設定がされていました。リソースマネージャなどの利用をしない場合、全てのPDBでメモリ領域を共有しますので、全体で2GBまでというのが確認できます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
SQL> conn / as sysdba SQL> show parameter sga_target NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ sga_target big integer 1200M SQL> show parameter pga_aggregate_target NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ pga_aggregate_target big integer 395M SQL> show parameter pga_aggregate_limit NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ pga_aggregate_limit big integer 2G SQL> alter system set pga_aggregate_target = 1000M; alter system set pga_aggregate_target = 1000M * ERROR at line 1: ORA-02097: parameter cannot be modified because specified value is invalid ORA-56752: Oracle Database Express Edition (XE) memory parameter invalid or not specified |
SGAとPGA合わせて2GBを超えた値を指定しているためエラーが発生しました。
PDBの制限
ユーザーが使用できるPDBの数は3つまでです。以下実際に作ってみようとしたところ、ORA-65010が発生しました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
SQL> CREATE PLUGGABLE DATABASE xepdb2 2 ADMIN USER PDBSYS IDENTIFIED BY &&inputPassword. 3 ROLES = (dba) 4 DEFAULT TABLESPACE USERS 5 DATAFILE '/opt/oracle/oradata/XE/XEPDB2/users01.dbf' SIZE 256M AUTOEXTEND ON NEXT 10M 6 FILE_NAME_CONVERT = ('/opt/oracle/oradata/XE/pdbseed/' 7 ,'/opt/oracle/oradata/XE/XEPDB2/') 8 STORAGE UNLIMITED; SQL> CREATE PLUGGABLE DATABASE xepdb3 2 ADMIN USER PDBSYS IDENTIFIED BY &&inputPassword. 3 ROLES = (dba) 4 DEFAULT TABLESPACE USERS 5 DATAFILE '/opt/oracle/oradata/XE/XEPDB3/users01.dbf' SIZE 10M AUTOEXTEND ON NEXT 10M 6 FILE_NAME_CONVERT = ('/opt/oracle/oradata/XE/pdbseed/' 7 ,'/opt/oracle/oradata/XE/XEPDB3/') 8 STORAGE UNLIMITED; Pluggable database created. SQL> CREATE PLUGGABLE DATABASE xepdb4 2 ADMIN USER PDBSYS IDENTIFIED BY &&inputPassword. 3 ROLES = (dba) 4 DEFAULT TABLESPACE USERS 5 DATAFILE '/opt/oracle/oradata/XE/XEPDB4/users01.dbf' SIZE 10M AUTOEXTEND ON NEXT 10M 6 FILE_NAME_CONVERT = ('/opt/oracle/oradata/XE/pdbseed/' 7 ,'/opt/oracle/oradata/XE/XEPDB4/') 8 STORAGE UNLIMITED; CREATE PLUGGABLE DATABASE xepdb4 * ERROR at line 1: ORA-65010: maximum number of pluggable databases created SQL> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 XEPDB1 READ WRITE NO 4 XEPDB2 MOUNTED 5 XEPDB3 MOUNTED SQL> |
作ったPDBを削除する場合は以下のコマンドで削除できます。
1 2 3 4 5 6 7 8 9 10 11 |
SQL> drop pluggable database xepdb3 including datafiles; Pluggable database dropped. SQL> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 XEPDB1 READ WRITE NO 4 XEPDB2 MOUNTED |
ファイルサイズの制限
ファイルサイズの制限を確認します。
ファイルサイズを超えた後にPDBを再起動しようとしたところ、起動しなくなりましたので注意して下さい。復旧自体ができなくなります。(制限のない他のDBにリストアするなどの処置で戻るかもしれませんが、試していません。)
まずは12GBを超過したファイルサイズの拡張を試します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
$ sqlplus / as sysdba SQL> set pagesize 1000 line 120 trim on SQL> col FILE_NAME for a45 SQL> col TABLESPACE_NAME for a10 SQL> select CON_ID, TABLESPACE_NAME 2 , FILE_NAME, BYTES/1024/1024 as FILE_MB 3 , MAXBYTES/1024/1024 as FILE_MAX_MB 4 , AUTOEXTENSIBLE 5 from cdb_data_files 6 where tablespace_name = 'USERS' 7 order by 1,2; CON_ID TABLESPACE FILE_NAME FILE_MB FILE_MAX_MB AUT ---------- ---------- --------------------------------------------- ---------- ----------- --- 1 USERS /opt/oracle/oradata/XE/users01.dbf 5 32767.9844 YES 3 USERS /opt/oracle/oradata/XE/XEPDB1/users01.dbf 142.5 32767.9844 YES SQL> alter session set container = XEPDB1; SQL> alter database datafile '/opt/oracle/oradata/XE/XEPDB1/users01.dbf' resize 20G; alter database datafile '/opt/oracle/oradata/XE/XEPDB1/users01.dbf' resize 20G * ERROR at line 1: ORA-12954: The request exceeds the maximum allowed database size of 12 GB. |
ORA-12954(ファイルサイズの制限を超えた旨)が発生することが確認できました。12GBまで拡張してみます。
1 2 3 |
SQL> alter database datafile '/opt/oracle/oradata/XE/XEPDB1/users01.dbf' resize 12G; Database altered. |
成功しましたが、DB全体で制限がかかっているため、実は 12GB + α が実際の制限値となっています。他の表領域を増やしたのち、12GBに拡張しようとするとORA-12954が発生します。このまま停止・起動を行うと、CDB$ROOTの拡張などが伴った場合に冒頭の通りPDB自体起動できなくなることがあります。
実際利用する場合は、以下くらいで制限をかけておくことをお勧めします。
1 2 3 4 5 6 |
SQL> alter session set container = SQL> alter database tempfile '/opt/oracle/oradata/XE/XEPDB1/temp01yyyy-mm-dd_hh-mi-ss-nnn-PM.dbf' autoextend on next 16M maxsize 1G; SQL> alter database datafile '/opt/oracle/oradata/XE/XEPDB1/sysaux01.dbf' autoextend on next 16M maxsize 2G; SQL> alter database datafile '/opt/oracle/oradata/XE/XEPDB1/system01.dbf' autoextend on next 16M maxsize 1G; SQL> alter database datafile '/opt/oracle/oradata/XE/XEPDB1/undotbs01.dbf' autoextend on next 16M maxsize 2G; SQL> alter database datafile '/opt/oracle/oradata/XE/XEPDB1/users01.dbf' autoextend on next 16M maxsize 7G; |
XEPDB1が一杯の状態でも他にPDBの作成は可能ですが、作成したPDBは起動しようとするとORA-12954が発生します。CDBで稼働しているPDB全体で12GBを超えないように留意する必要があります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
SQL> CREATE PLUGGABLE DATABASE xepdb3 2 ADMIN USER PDBSYS IDENTIFIED BY &inputPassword. 3 ROLES = (dba) 4 DEFAULT TABLESPACE USERS 5 DATAFILE '/opt/oracle/oradata/XE/XEPDB3/users01.dbf' SIZE 10M AUTOEXTEND ON NEXT 10M 6 FILE_NAME_CONVERT = ('/opt/oracle/oradata/XE/pdbseed/' 7 ,'/opt/oracle/oradata/XE/XEPDB3/') 8 STORAGE UNLIMITED; Pluggable database created. SQL> alter session set container = XEPDB3; Session altered. SQL> startup ORA-12954: The request exceeds the maximum allowed database size of 12 GB. |
その他所感など
使ってみるのはこれからですが、CPU2つまで可能となったのは大きいと思います。11gR2の時は、CPU1つを使い切るSQLを実行すると終わりでしたので・・。
Excelをアプリケーション化して少し拡張するくらいであれば問題ないですが、やはりディスクサイズが小さいので圧縮処理も検討してもよいと思います。
Oracle APEXを利用しようとしてデータベースのインストールを行ったのですが、Oracle APEXがデフォルトで導入されていませんでした。Oracle APEXを利用する場合は別途インストールする必要があります。
Oracle APEXのインストールについては以下に記事を記載しています。ご参考にどうぞ。
Oracle APEXのインストール(Oracle Application Express)(CDB環境)