はじめに
Database Cloud Service(以下 DBCS) で、PDB を新規作成すると、TEMP 表領域と UNDO 表領域が Smallfile で作成されます。Smallfile では、Block Size が 8kb のときに、1個のデータファイルの容量上限が32GB になります。容量上限に達する前に、データファイルを手動で追加しないと、容量不足で使えなくなります。使用済み容量を常時監視しておいて、容量不足になりそうになったら人手で追加しないといけないわけです。
これは手間なので、Bigfile を使うことで、たくさんのデータファイルを作る必要がなくなり、運用の手間が軽減します。というわけで、今回の記事では、DBCS に新規で作成したときにデフォルトで作成されるTEMPとUNDO表領域を Bigfile に変更する方法を検証してみます。
PDB の作成
まず、DBCS でdbcli create-pdb
コマンドを使いPDB を新規作成します。CREATE PLUGGABLE DATABASE
で作成すると、PDB 上で追加の表領域を作成する際に、TDE に関するエラーが発生するため、dbcli create-pdb
で作成するのがお勧めです。次のナレッジベースにも書かれているので、必要に合わせて参照してください。
https://support.oracle.com/knowledge/Oracle%20Cloud/2438598_1.html
DBCS に SSH でログインして、root ユーザーへスイッチします
[opc@odb19hp ~]$ sudo su -
Last login: Fri Dec 4 14:43:46 UTC 2020
[root@odb19hp ~]#
dbcli コマンドを実行する際に、事前に次のディレクトリを作成しないとエラーになる場合がありました。念のため実施するのがいいかもしれません。
mkdir -p /var/opt/oracle/log/dbaastools/cfgtoollogs/dbca
chmod 777 /var/opt/oracle/log/
chmod 777 /var/opt/oracle/log/dbaastools/
chmod 777 /var/opt/oracle/log/dbaastools/cfgtoollogs/
chmod 777 /var/opt/oracle/log/dbaastools/cfgtoollogs/dbca/
chmod 777 /var/opt/oracle/log/dbaastools/cfgtoollogs/dbca/
dbcli
をつかって、ID を確認します。
[root@odb19hp ~]# dbcli list-databases
ID DB Name DB Type DB Version CDB Class Shape Storage Status DbHomeID
---------------------------------------- ---------- -------- -------------------- ---------- -------- -------- ---------- ------------ ----------------------------------------
2ade7d88-d6f1-4006-800c-3306e72bce0a odb19hp Si 19.8.0.0.0 true Oltp ASM Configured dea03a03-5bb3-4fbb-a72b-cfd3282e880c
create-pdb で、PDB を新規に作成します。
dbcli create-pdb --dbId 2ade7d88-d6f1-4006-800c-3306e72bce0a \
--pdbName pdb02 \
--pdbAdminPassword "your password" \
--tdePassword "your password"
実行例です。PDB 作成のジョブが実行されます。この段階では進捗は 0% です。
[root@odb19hp ~]# dbcli create-pdb --dbId 2ade7d88-d6f1-4006-800c-3306e72bce0a \
> --pdbName pdb02 \
> --pdbAdminPassword saoibui28fasdjio83 \
> --tdePassword "mIfoO8_fai12#-gai897fao"
Job details
----------------------------------------------------------------
ID: 70df3013-de88-426c-9942-fa3c3c428cf5
Description: Create Pluggable Database :PDB02 in database:odb19hp
Status: Created
Created: December 1, 2020 1:09:44 PM UTC
Progress: 0%
Message:
Task Name Start Time End Time Status
------------------------------------------------------------------------ ----------------------------------- ----------------------------------- ----------
進捗確認コマンドです。
dbcli describe-job -i 70df3013-de88-426c-9942-fa3c3c428cf5
98% で処理途中です
[root@odb19hp ~]# dbcli describe-job -i 70df3013-de88-426c-9942-fa3c3c428cf5
Job details
----------------------------------------------------------------
ID: 70df3013-de88-426c-9942-fa3c3c428cf5
Description: Create Pluggable Database :PDB02 in database:odb19hp Status: Running
Created: December 1, 2020 1:09:44 PM UTC
Progress: 98%
Message:
Task Name Start Time End Time Status
------------------------------------------------------------------------ ----------------------------------- ----------------------------------- ----------
Create pluggable Database:pdb02 December 1, 2020 1:09:47 PM UTC December 1, 2020 1:11:33 PM UTC Success
Configure init params December 1, 2020 1:11:33 PM UTC December 1, 2020 1:11:36 PM UTC Success
[root@odb19hp ~]#
完了
[root@odb19hp ~]# dbcli describe-job -i 70df3013-de88-426c-9942-fa3c3c428cf5
Job details
----------------------------------------------------------------
ID: 70df3013-de88-426c-9942-fa3c3c428cf5
Description: Create Pluggable Database :PDB02 in database:odb19hp
Status: Success
Created: December 1, 2020 1:09:44 PM UTC
Progress: 100%
Message:
Task Name Start Time End Time Status
------------------------------------------------------------------------ ----------------------------------- ----------------------------------- ----------
Create pluggable Database:pdb02 December 1, 2020 1:09:47 PM UTC December 1, 2020 1:11:33 PM UTC Success
Configure init params December 1, 2020 1:11:33 PM UTC December 1, 2020 1:11:36 PM UTC Success
[root@odb19hp ~]#
無事に PDB02
が作成されて、Read Write の状態になっています
SQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB01 READ WRITE NO
4 PDB02 READ WRITE NO
SQL>
PDB の UNDO と TEMP表領域を BIGFILE に変更する
PDB 作成と同時に、PDB の UNDO表領域と TEMP表領域が作成されています。これを直接 Bigfile に変更は出来ないので、新たな UNDO表領域と TEMP表領域を Bigfile で作成して、そちらに切り替えていきます。
UNDO表領域
SQL Developer で Undo 領域を新たに作成していきます。
各種パラメータを入れます。パラメータは既存の表領域の指定をまねています。
File Type を Big File にして OK を押します
Bigfile の UNDOTBS2
が作成されました
ちなみに、SQLで作成する時はこんな感じです
CREATE BIGFILE UNDO TABLESPACE "UNDOTBS2" DATAFILE
'+DATA/ORA19SE_NRT1C4/B5766BC79168C1E7E0532C00000A91FB/DATAFILE/undotbs2' SIZE 36700160
AUTOEXTEND ON NEXT 5242880 MAXSIZE 32767M
BLOCKSIZE 8192
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
ENCRYPTION USING 'AES128' ENCRYPT;
SQL Plus でPDB02 に接続します
alter session set container=PDB02;
念のため UNDOTBS2
が作成されているか確認します
SQL> select FILE_NAME, TABLESPACE_NAME from dba_data_files where tablespace_name = 'UNDOTBS2';
FILE_NAME
--------------------------------------------------------------------------------
TABLESPACE_NAME
------------------------------
+DATA/ORA19SE_NRT1C4/B5766BC79168C1E7E0532C00000A91FB/DATAFILE/undotbs2
UNDOTBS2
SQL>
初期化パラメータでは、UNDOTBS1
を使うことになっているので、これを変更します。
SQL> SELECT name, value FROM v$parameter WHERE name = 'undo_tablespace';
NAME
--------------------------------------------------------------------------------
VALUE
--------------------------------------------------------------------------------
undo_tablespace
UNDOTBS1
SQL>
UNDOTBS2
を使うように変更します
ALTER SYSTEM SET undo_tablespace = 'UNDOTBS2' SCOPE = BOTH;
TEMP表領域
次に TEMP表領域です。SQL Developer で Temp 表領域を新たに作成します。
適当にパラメータを指定します
BigFile を忘れずに指定します。
作成される
ちなみにSQLで作成する時はこんな感じです
CREATE SMALLFILE TEMPORARY TABLESPACE TEMP2
TEMPFILE
'+DATA/ORA19SE_NRT1C4/B5766BC79168C1E7E0532C00000A91FB/TEMPFILE/TEMP2' SIZE 51380224 AUTOEXTEND ON NEXT 655360 MAXSIZE 34358689792
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1048576;
PDB02 に接続
alter session set container=PDB02;
TEMP表領域を確認します。Bigfile で作成したTEMP2
が見えます
SQL> select tablespace_name, file_name, bytes/1024/1024 as "size(MB)" from dba_temp_files;
TABLESPACE_NAME
------------------------------
FILE_NAME
--------------------------------------------------------------------------------
size(MB)
----------
TEMP
+DATA/ORA19SE_NRT1C4/B5766BC79168C1E7E0532C00000A91FB/TEMPFILE/temp.273.10580781
61
49
TEMP2
+DATA/ORA19SE_NRT1C4/B5766BC79168C1E7E0532C00000A91FB/TEMPFILE/temp2
TABLESPACE_NAME
------------------------------
FILE_NAME
--------------------------------------------------------------------------------
size(MB)
----------
49
SQL>
Database Properties では、デフォルトの一時表領域が TEMP となっている
SQL でも TEMP
が使われている事を確認します
SQL> select property_name, property_value from database_properties where property_name = 'DEFAULT_TEMP_TABLESPACE';
PROPERTY_NAME
--------------------------------------------------------------------------------
PROPERTY_VALUE
--------------------------------------------------------------------------------
DEFAULT_TEMP_TABLESPACE
TEMP
SQL>
TEMP2
を参照するように変更します
SQL> alter database default temporary tablespace TEMP2;
Database altered.
SQL>
元々使っていた Table Space を削除
念のためOracle Database のサーバー再起動します
sudo shutdown -r now
再起動後に、元々使っていた表領域を削除します
DROP TABLESPACE "TEMP";
DROP TABLESPACE "UNDOTBS1";
これで、Bigfile の表領域に切り替えが出来ました
参考URL