2024年5月22日水曜日

Oracle Database 23ai Freeのユーザー・データ領域をAPEXで効率的に使用する

Oracle Database 23ai Freeでは、保存できるユーザー・データの上限は12GBとなっています。

https://www.oracle.com/database/free/#resources

Oracle Database 23ai Free offers the ability to experience Oracle Database, which businesses throughout the world rely on for their mission-critical workloads. The resource limits for Oracle Database Free are up to 2 CPUs for foreground processes, 2 GB of RAM and 12 GB of user data on disk. It is packaged for ease of use and simple download.

Oracle APEXをOracle Database 23ai Freeにインストールし、アプリケーションを開発することを想定します。

ワークスペースを作成するときに、同時にスキーマを作成できます。

以下の画面で作成するスキーマを指定します。


ワークスペースの作成にあたって確認画面にも表示されていますが、このときにスキーマの作成に加えて、新規に表領域も作成されます。APEXのワークスペースの領域割当て制限は、実際には表領域に含まれるデータファイルの最大サイズとして設定されています。


ビューCDB_DATA_FILESから、作成された表領域を構成しているデータ・ファイルの設定を確認します。
set pages 1000 lines 100
col tablespace_name format a22
col file_name format a60
col bytes format 999,999,999,999,999
col maxbytes format 999,999,999,999,999
col increment_by format 999,999,999,999
select tablespace_name, file_name, bytes, maxbytes, increment_by from cdb_data_files where con$name = 'FREEPDB1';

SQL> select tablespace_name, file_name, bytes, maxbytes, increment_by from cdb_data_files where con$name = 'FREEPDB1';SQL> SQL> SQL> SQL> SQL> SQL> 


TABLESPACE_NAME        FILE_NAME

---------------------- ------------------------------------------------------------

      BYTES MAXBYTES     INCREMENT_BY

-------------------- -------------------- ----------------

SYSTEM       /opt/oracle/oradata/FREE/FREEPDB1/system01.dbf

419,430,400   35,184,372,064,256     1,280


SYSAUX       /opt/oracle/oradata/FREE/FREEPDB1/sysaux01.dbf

838,860,800   35,184,372,064,256     1,280


UNDOTBS1       /opt/oracle/oradata/FREE/FREEPDB1/undotbs01.dbf

204,472,320   35,184,372,064,256       640


USERS       /opt/oracle/oradata/FREE/FREEPDB1/users01.dbf

  5,242,880   34,359,721,984       160


APEX_2341617247827838  /opt/oracle/oradata/FREE/FREEPDB1/APEX_2341617247827838.dbf

       1,048,641,536   10,485,825,536   128,000


APEX_2542543649405767  /opt/oracle/oradata/FREE/FREEPDB1/APEX_2542543649405767.dbf

  10,551,296       104,923,136     1,280



6 rows selected.


SQL> 


上記の出力例では、表領域APEX_2341617247827838は、領域割当てを10GBとして作成したワークスペースに紐づいています。表領域APEX_2542543649405767は、領域割当てを100MBとして作成したワークスペースに紐づいています。

作成したAPEXのワークスペースは、管理サービスの既存のワークスペースの一覧画面から削除できます。


削除を続行するかの確認チェックを入れ、へ進みます。


次のページに説明されていますが、APEXのワークスペースを削除しても、そのワークスペースに紐づいている表領域やスキーマは削除されません


表領域やスキーマは手動で削除する必要があります。そうすることによって、ユーザー・データの領域を最大限活用できます。


表領域はUSERSだけを使用しあらかじめスキーマを作成しておくと、APEXのワークスペースの作成や削除をするたびに、ユーザー・データの制限について意識する必要が無くなります。

alter session set container = freepdb1;
create user wksp_apexdev default tablespace users no authentication;
alter user wksp_apexdev quota unlimited on users;

bash-4.4$ sqlplus / as sysdba


SQL*Plus: Release 23.0.0.0.0 - Production on Wed May 22 02:34:32 2024

Version 23.4.0.24.05


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



Connected to:

Oracle Database 23ai Free Release 23.0.0.0.0 - Develop, Learn, and Run for Free

Version 23.4.0.24.05


SQL> alter session set container = freepdb1;


Session altered.


SQL> create user wksp_apexdev default tablespace users no authentication;


User created.


SQL> alter user wksp_apexdev quota unlimited on users;


User altered.


SQL> 


既存のスキーマを再利用はいとし、スキーマ名にあらかじめ作成したスキーマを指定します。APEXのワークスペースとして必要な権限は、ワークスペースを作成する際に追加されます。


ワークスペースの作成毎に表領域が作成されないため、制限されたユーザー・データの領域を最大限、有効に活用できます。