search
LoginSignup
0

More than 1 year has passed since last update.

posted at

[Oracle Cloud] DBCS に PDB を作成し、Bigfile 表領域に切り替え検証してみた

はじめに

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 領域を新たに作成していきます。

1606906532599.png

各種パラメータを入れます。パラメータは既存の表領域の指定をまねています。

1606899760705.png

File Type を Big File にして OK を押します

1606899813104.png

Bigfile の UNDOTBS2 が作成されました

1606900200405.png

ちなみに、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 表領域を新たに作成します。

1606906532599.png

適当にパラメータを指定します

1606906694788.png

BigFile を忘れずに指定します。

1606907865199.png

作成される

1606907923057.png

ちなみに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 となっている

1606907557854.png

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
0