Oracle Database Express Edition(以下Oracle Database XE)は、Oracle Database Enterprise Editionをベースに作られたOracle Database Editionの一種です。以前のバージョンにはOracle Database Express Edition 18cがありました。この記事でインストールするバージョンは、マルチテナントアーキテクチャ(multitenant architecture)でのみインストールされます。
ライセンス解釈(無料使用?)
Oracle Database Express Editionは支援・教育の目的であれば無料で利用可能です。しかし、機能やパフォーマンスに制限があり、パッチは提供されず、技術サポートも受けることができません。ライセンスに関する詳細は、Oracle Database Express Editionのライセンス公式サイトを参照してください。
リソース制限
使用可能なリソースの最大値は以下の通りです。詳細はこちらを参照してください。
- 2 CPUスレッド
- 論理環境ごとに1つのインスタンス
- 2GB RAM
- 使用者データは最大12GBまで
詳細オプションと仕様
- Multitenant PDBは最大3つまで作成可能です。
- Oracle SQL Developerを使用できます。
- パーティション機能が使用できます。
- データベース作成前に変更可能なデータベース文字セットはAL32UTF8です。Oracle ClientでUTF-8以外の文字コードをアプリケーションで使用したい場合、NLS_LANGのCharacter set設定で文字変換が可能なため、XEをインストールしても問題ありません。
- Database In-memoryの基本機能が使用可能です。
- セキュリティ関連機能としては、TDE(Transparent Data Encryption)を含むほとんどの機能が使用可能です。
- Spatial and Graphが使用可能です。
- 地理データベースやグラフデータベースとして使用できます。
- 圧縮関連機能のほとんどが使用可能です。
- Advanced Analyticsが使用可能です。
- 機械学習やデータマイニング、R言語でアクセス可能です。
使用不可能な内容は以下の通りです。
- 並列処理関連の機能は使用できません。
- Enterprise Managerオプションパックは使用できません。
- RAT(Real Application Testing)も使用できません。
- EM Expressは解除可能であれば使用できますが、初期はローカルでのアクセスが制限されています。
- RAC(Real Application Clusters)、DataGuard、Shardingなど複数ノードを連携させる機能は使用できません。
- また、GoldenGateも使用できません。
- APEX(Oracle Application Express)とORDS(Oracle REST Data Services)は含まれていませんが、別途ダウンロードして使用可能です。
Windows版インストール
作業環境
- エディション: Windows 11 Pro
- バージョン: 23H2
- インストール日: 2024年3月21日
- OSビルド: 22631.3296
- 体験: Windows Feature Experience Pack 1000.22687.1000.0
XEダウンロード
ダウンロードにはOracleアカウントが必要する場合があります。アカウントがない場合は、アカウント作成から始めてください。
Oracle Database 21c Express Edition for Windows x64を以下のサイトでダウンロードします。ダウンロードされるファイルはOracleXE213_Win64.zipです。
参照)以下のリンクは、最新バージョンのサイトURLであるため、バージョンが更新される場合、別のバージョンのインストールページになる可能性があります。
公式マニュアルは以下を参照してください。
XE setup.exeコマンドでインストール
- OracleXE213_Win64.zipを C:\temp\OracleXE213_Win64に展開します。
- setup.exeを実行します。
以下の画面のよう、「インストールの準備をしています。」というメッセージを表示し、次の画面に進みます。
[Oracle Database 21c Express Edition용 InstallShield ウィザードへようこそ] 画面で [次へ(N)]ボタンを押して次の画面に進みます。
[使用許諾条項] 画面で [使用許諾条項を受け入れます(A)]を選び、[次へ(N)]ボタンを押して次の画面に進みます。
[宛先フォルダ] 画面で [変更(C)…]ボタンを押し、 [Oracle Database 21c Express Editionのインストール先:]を C:\app\product\21.0.0\ に変更します。そのあと、[次へ(N)]ボタンを押して次の画面に進みます。
[Oracle Database情報]画面で「SYS、SYSTEM、PDBADMIN」のパスワードを「manager」に指定します。そのあと、[次へ(N)]ボタンを押して次の画面に進みます。
[サマリー]画面で、指定した宛先フォルダなどを確認して問題がなければ [インストール(I)]ボタンを押して次の画面に進みます。
[Oracle Database 21c Express Editionをインストール中] 進行画面が表示され、自動的に次へ進みます。
インストール中に「Java(TM) Platform SE binary」の通信許可するための [Windows セキュリティの重要な警告]画面が表示された場合、[プライベートネットワーク(ホームネットワークや社内ネットワークなど)(R)]を選択し、[アクセスを許可する(A)]ボタンを押して次の画面に進みます。
[Oracle Database 21c Express Editionをインストール中]が完了されると自動的に次の画面に進むので完了するまで待ちます。
インストールが正常的に終わると次のように [Oracle Database正常にインストールされました。] メッセージが表示されたインストール終了画面が表示されます。[完了(F)]ボタンを押して終了します。
- localhost:1521はマルチテナントコンテナデータベース(CDB)の RootコンテナであるCDB$ROOTに接続します。
- localhost:1521/XEPDB1はプラグイン可能なデータベース(PDB)に接続します。
環境変数の確認
Oracle Database 21c Express Edition용 InstallShield ウィザードは自動的に必要な環境変数を設定します。これを「regedit.exe」コマンドで確認すると以下になります。
[Windowsキー] + [R] を押して開いた「ファイル名を指定して実行」ダイヤログに”regedit”を入力して [レジストリ エディター] を開きます。
[コンピューター\HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDB21Home1] を選択すると右に環境変数「NLS_LANG、ORACLE_HOME、ORACLE_SID、ORACLE_BASE」が設定されていることが確認できます。
コマンドプロンプトで環境変数「%PATH%」の値をechoコマンドで見ると以下のように「C:\app\product\21.0.0\dbhomeXE\bin;」が追加されたことが確認できます。
データベースのサービス確認
[Windowsキー] + [R] を押して開いた「ファイル名を指定して実行」ダイヤログに”service.msc”を入力して [サービス] を開きます。
[サービス]のリストで「OracleOraDB21Home1TNSListener、OracleServiceXE」が実行中であることを確認します。
メニュー登録の確認
[Windowsキー] – [すべてのアプリ] – [Oracle – OraDB21Home1]を選択すると以下のように登録されているOracle Menuが確認できます。
sqlnet.oraのデフォルト値を確認
C:\app\product\21.0.0\homes\OraDB21Home1\network\admin\sqlnet.ora
SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
listener.oraの修正
デフォルト設定値が「HOST=PC-A.localdomain」である場合はIPアドレスが変わるとサービス起動ができなくなったり、リスナーに問題が発生する可能性があります。そのため、listener.oraファイルを以下のように修正します。PC-Aは各PCのホスト名です。
C:\app\product\21.0.0\homes\OraDB21Home1\network\admin\listener.ora
...省略...
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = PC-A.localdomain)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
...省略...
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = PC-A)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
tnsnames.oraの修正
デフォルト設定値が「HOST=PC-A.localdomain」である場合はIPアドレスが変わるとサービス起動ができなくなったり、リスナーに問題が発生する可能性があります。そのため、tnsnames.oraファイルを以下のように修正します。PC-Aは各PCのホスト名です。
C:\app\product\21.0.0\homes\OraDB21Home1\network\admin\tnsnames.ora
XE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = PC-A.localdomain)(PORT = 1521))
...省略...
LISTENER_XE =
(ADDRESS = (PROTOCOL = TCP)(HOST = PC-A.localdomain)(PORT = 1521))
...省略...
XE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = PC-A)(PORT = 1521))
...省略...
LISTENER_XE =
(ADDRESS = (PROTOCOL = TCP)(HOST = PC-A)(PORT = 1521))
...省略...
「OracleOraDB21Home1TNSListener, OracleServiceX」Eを再起動します。
Listenerの確認
以下のコマンドでOracle Listenerのステータスを確認します。
C:\> lsnrctl status
LSNRCTL for 64-bit Windows: Version 21.0.0.0.0 - Production on 12-5月 -2024 12:11:31
Copyright (c) 1991, 2021, Oracle. All rights reserved.
(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=PC-A)(PORT=1521)))に接続中
リスナーのステータス
------------------------
別名 LISTENER
バージョン TNSLSNR for 64-bit Windows: Version 21.0.0.0.0 - Production
開始日 12-5月 -2024 10:25:26
稼働時間 0 日 1 時間 46 分 4 秒
トレース・レベル off
セキュリティ ON: Local OS Authentication
SNMP OFF
デフォルト・サービス XE
パラメータ・ファイル C:\app\product\21.0.0\homes\OraDB21Home1\network\admin\listener.ora
ログ・ファイル C:\app\product\21.0.0\diag\tnslsnr\PC-A\listener\alert\log.xml
リスニング・エンドポイントのサマリー...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=PC-A)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1521ipc)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=127.0.0.1)(PORT=5500))(Security=(my_wallet_directory=C:\APP\PRODUCT\21.0.0\admin\XE\xdb_wallet))(Presentation=HTTP)(Session=RAW))
サービスのサマリー...
サービス"086af5c83467463286bfa532a048ec31"には、1件のインスタンスがあります。
インスタンス"xe"、状態READYには、このサービスに対する2件のハンドラがあります...
サービス"CLRExtProc"には、1件のインスタンスがあります。
インスタンス"CLRExtProc"、状態UNKNOWNには、このサービスに対する1件のハンドラがあります...
サービス"XE"には、1件のインスタンスがあります。
インスタンス"xe"、状態READYには、このサービスに対する2件のハンドラがあります...
サービス"XEXDB"には、1件のインスタンスがあります。
インスタンス"xe"、状態READYには、このサービスに対する1件のハンドラがあります...
サービス"xepdb1"には、1件のインスタンスがあります。
インスタンス"xe"、状態READYには、このサービスに対する2件のハンドラがあります...
コマンドは正常に終了しました。
sqlplus.exeコマンドでローカル接続確認
コマンドプロンプトで sqlplus system/manager を入力し、接続できるかを確認します。接続に問題がなければ以下のようなメッセージが表示されます。
C:\> sqlplus system/manager
SQL*Plus: Release 21.0.0.0.0 - Production on 日 5月 12 12:55:29 2024
Version 21.3.0.0.0
Copyright (c) 1982, 2021, Oracle. All rights reserved.
最終正常ログイン時間: 金 5月 10 2024 17:37:04 +09:00
Oracle Database 21c Express Edition Release 21.0.0.0.0 - Production
Version 21.3.0.0.0
に接続されました。
SQL>
外部マシンから sqlplus.exe でリモート接続の確認
外部マシンから sqlplus コマンドでリモート接続をすると次のようにエラーが発生します。
C:\> sqlplus system/manager@192.168.220.128/xe
SQL*Plus: Release 12.2.0.1.0 Production on Sun Sep 19 17:28:01 2021
Copyright (c) 1982, 2016, Oracle. All rights reserved.
ERROR:
ORA-12170: TNS: 接続タイムアウトが発生しました。
ユーザー名を入力してください:
“ORA-12170: TNS: 接続タイムアウトが発生しました。“ エラーを解決するためには以下のようにWindows Defender ファイヤーウォールで Oracle Listener Port 1521を許可します。
[コントロールパネル\すべてのコントロール パネル項目]で 「Windows Defender ファイアウォール」 を押し、[コントロール パネル\すべてのコントロール パネル項目\Windows Defender ファイアウォール]設定画面を開きます。
そして左メニューで [詳細設定] を押し、 [セキュリティーが強化された Windows Defender ファイヤーウォール] を開きます。
[セキュリティーが強化された Windows Defender ファイヤーウォール] の左側で「受信の規則」を押し、右側の [新しい規則…]を押して [新規の受信の規則ウィザード]を開きます。
[新規の受信の規則ウィザード]の [ステップ:規則の種類]で [ポート(O)]を選択し、 [次へ(N)]ボタンを押してください。
[ステップ:プロトコルおよびポート]で [TCP(T)]と[特定のローカル ポート(S)]を選択し、ポート番号「1521」を入力して [次へ(N)]ボタンを押してください。
[ステップ:操作]で [接続を許可する(A)]を選択し、[次へ(N)]ボタンを押してください。
[ステップ:プロフィール]で [ドメイン(D)], [プライベート(P)], [パブリック(U)] をすべてチェックし、[次へ(N)]ボタンを押してください。
[ステップ:名前]で [名前(N)]と[説明(オプション)(D)]を入力し、[完了(F)]ボタンを押してください。
[セキュリティーが強化された Windows Defender ファイヤーウォール]の受信の規則を右クリックして[最新の情報に更新]を押すと追加した受信の規則が確認できます。
Windows Defender ファイヤーウォールに Oracle Listener Port 1521を許可して、次のように外部マシンから sqlplusコマンドでリモート接続できることを確認できます。
C:\>sqlplus system/manager@192.168.220.128/xe
SQL*Plus: Release 12.2.0.1.0 Production on 일 9월 19 18:24:28 2021
Copyright (c) 1982, 2016, Oracle. All rights reserved.
最終正常ログイン時間: 日 5月 12 2024 13:28:07 +09:00
Oracle Database 21c Express Edition Release 21.0.0.0.0 - Production
Version 21.3.0.0.0
に接続されました。
XE CDB$ROOT コンテナデータベース(CDB)へ接続
以下のようにコンテナデータベース(CDB)の Rootコンテナ「CDB$ROOT」に接続します。そしてデータベースで使用可能なサービスをv$servicesから表示します。
C:\> sqlplus / as sysdba
COLUMN name FORMAT A15
COLUMN pdb FORMAT A10
SELECT name, pdb FROM v$services;
NAME PDB
--------------- ----------
xeXDB CDB$ROOT
SYS$BACKGROUND CDB$ROOT
SYS$USERS CDB$ROOT
xe CDB$ROOT
xepdb1 XEPDB1
SQL>
「show con_name」および「show con_id」コマンドで現在のコンテナ名とIDを表示します。
SQL> show con_name
CON_NAME
------------------------------
CDB$ROOT
SQL> show con_id
CON_ID
------------------------------
1
現在のコンテナがCDBの場合、show pdbsコマンドですべてのプラグインできるデータベース(PDB)を表示します。 PDB$SEEDは、新規のPDBを作成するためのテンプレートPDBです。 現在使用できるプラグインコンテナはXEPDB1です。21c Express Editionバージョンはあと2つ作ることができます。
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 XEPDB1 READ WRITE NO
XE CDB$ROOT コンテナデータベース(CDB)の基本情報
XE CDB$ROOT Oracle Default ユーザー確認
次のコマンドで、基本的に作成されたOracleユーザー名、アカウントの状態、適用Profileを確認することができます。
C:\> sqlplus / as sysdba
SQL*Plus: Release 21.0.0.0.0 - Production on 日 5月 12 16:28:09 2024
Version 21.3.0.0.0
Copyright (c) 1982, 2021, Oracle. All rights reserved.
Oracle Database 21c Express Edition Release 21.0.0.0.0 - Production
Version 21.3.0.0.0
に接続されました。
SQL> COLUMN username format A23
COLUMN account_status format A17
COLUMN profile FORMAT A16
SET PAGESIZE 100
SELECT username,account_status,profile FROM dba_users;
USERNAME ACCOUNT_STATUS PROFILE
----------------------- ----------------- ----------------
SYS OPEN DEFAULT
SYSTEM OPEN DEFAULT
... 省略 ...
SYSDG LOCKED DEFAULT
ORDSYS LOCKED DEFAULT
37行が選択されました。
SQL>
XE CDB$ROOT Oracleユーザーのdefault profile 設定値を確認
次のSQL文でOracleユーザのdefault profile設定値を確認することができます。次に、ログイン失敗許容回数(FAILED_LOGIN_ATTEMPTS)に対するそれぞれのプロファイル設定値を確認しています。
C:\> sqlplus / as sysdba
COLUMN profile FORMAT A16
COLUMN resource_type FORMAT A13
COLUMN limit FORMAT A6
SELECT profile,resource_type,limit
FROM dba_profiles
WHERE resource_name='FAILED_LOGIN_ATTEMPTS';
PROFILE RESOURCE_TYPE LIMIT
---------------- ------------- ------
DEFAULT PASSWORD 10
ORA_CIS_PROFILE PASSWORD 5
ORA_STIG_PROFILE PASSWORD 3
XE CDB$ROOT Oracle 初期パラメータ情報
次のSQL文でOracle XEインスタンスの作成直後の初期パラメータ情報を確認することができます。
C:\> sqlplus / as sysdba
spool oracle21c_xe_v_parameter.txt
set linesize 146
SET PAGESIZE 500
COLUMN value FORMAT A95
COLUMN name FORMAT A45
select name , value FROM v$parameter;
NAME VALUE
----------------------------------- ------------
lock_name_space
processes 480
sessions 744
timed_statistics TRUE
timed_os_statistics 0
... 省略 ...
pdb_template
shrd_dupl_table_refresh_rate 60
multishard_query_data_consistency strong
multishard_query_partial_results not allowed
shard_queries_restricted_by_key FALSE
native_blockchain_features
blockchain_table_max_no_drop
pmem_filestore
474行が選択されました。
SQL> spool off
XEPDB1 プラグインデータベース(PDB)に接続
localhost:1521/XEPDB1でプラグインデータベース(PDB)に接続します。ポート番号1521 は省略できます。
C:\> sqlplus /@localhost:1521/XEPDB1 as sysdba
COLUMN name FORMAT A15
COLUMN pdb FORMAT A10
SELECT name, pdb FROM v$services;
NAME PDB
--------------- ----------
xepdb1 XEPDB1
SQL>
「show con_name」及び「show con_id」コマンドで現在のコンテナ名とIDを表示します。
SQL> show con_name
CON_NAME
------------------------------
XEPDB1
SQL> show con_id
CON_ID
------------------------------
3
現在のコンテナがPDBの場合、show pdbsコマンドでは現在のコンテナXEPDB1のみ表示されます。
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
3 XEPDB1 READ WRITE NO
XEPDB1 プラグインデータベース(PDB)の基本情報
sqlplus /@localhost:1521/XEPDB1 as sysdba 接続で上記のXEコンテナデータベース(CDB)の基本情報のようなSQL文を使用した場合の相違は以下の通りです。
XEPDB1 Default ユーザー確認
実行の結果、次のユーザーが追加で出力されます。
PDBADMIN OPEN DEFAULT
SYS$UMF EXPIRED & LOCKED DEFAULT
XEPDB1 ユーザーのdefault profile設定値を確認
実行結果は XE CDB$ROOT コンテナデータベース(CDB)の結果値と同じです。
XEPDB1 初期パラメータ情報
次のパラメータ値のみ差があります。
XE CDB$ROOTコンテナデータベース(CDB)の場合
sga_target 1291845632
common_user_prefix C##
XEPDB1 ラグインデータベース(PDB)の場合
sga_target 0
common_user_prefix
コメント