
・Oracle 23ai に新規PDBを作成する方法を知りたい。
・具体的な手順を教えてほしい。
こういった疑問に答えます。
本記事の内容

この記事を書いている私は、某SIerに勤務しながら、
WEB系エンジニア・インフラエンジニアに憧れて、プログラミングおよびインフラ技術の勉強をしています。
こういった私が、解説していきます。
私が実機で試したコマンドや画像を載せて書いています。
記事の信頼性担保に繋がると思います。
Oracle 23ai に新規PDBを作成する手順
CDBに接続
[oracle@a-oracl01 ~]$ sqlplus / as sysdba SQL*Plus: Release 23.0.0.0.0 - Production on 木 9月 4 14:00:56 2025 Version 23.9.0.25.07 Copyright (c) 1982, 2025, Oracle. All rights reserved. Oracle Database 23ai Free Release 23.0.0.0.0 - Develop, Learn, and Run for Free Version 23.9.0.25.07 に接続されました。
[SYS@FREE] SQL>show con_name
CON_NAME
------------------------------
CDB$ROOT
[SYS@FREE] SQL>
[SYS@FREE] SQL>show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 FREEPDB1 READ WRITE NO
PDB作成
[SYS@FREE] SQL>CREATE PLUGGABLE DATABASE PDB名(8文字) ADMIN USER ユーザー名 IDENTIFIED BY ★★★パスワード FILE_NAME_CONVERT = ('/opt/oracle/oradata/FREE/pdbseed/', '/opt/oracle/oradata/FREE/PDB名/'); プラガブル・データベースが作成されました。
[SYS@FREE] SQL>show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 FREEPDB1 READ WRITE NO
5 FINDTPDB MOUNTED

PDBのオープン,自動起動の設定
[SYS@FREE] SQL>alter pluggable database FINDTPDB open;
プラガブル・データベースが変更されました。
[SYS@FREE] SQL>show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 FREEPDB1 READ WRITE NO
5 FINDTPDB READ WRITE NO
[SYS@FREE] SQL>alter pluggable database FINDTPDB save state; プラガブル・データベースが変更されました。
PDBへ接続確認
[oracle@a-oracl01 ~]$ sqlplus / as sysdba; SQL*Plus: Release 23.0.0.0.0 - Production on 木 9月 4 14:18:04 2025 Version 23.9.0.25.07 Copyright (c) 1982, 2025, Oracle. All rights reserved. Oracle Database 23ai Free Release 23.0.0.0.0 - Develop, Learn, and Run for Free Version 23.9.0.25.07 に接続されました。 [SYS@FREE] SQL>alter session set container = FINDTPDB; セッションが変更されました。 [SYS@FREE] SQL>show con_name CON_NAME ------------------------------ FINDTPDB
tnsnames.oraの編集
/opt/oracle/product/23ai/dbhomeFree/network/admin/tnsnames.ora
# tnsnames.ora Network Configuration File: /opt/oracle/product/23ai/dbhomeFree/network/admin/tnsnames.ora # Generated by Oracle configuration tools. FREE = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = a-oracl01.blue-planet.internal)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = FREE) ) ) LISTENER_FREE = (ADDRESS = (PROTOCOL = TCP)(HOST = a-oracl01.blue-planet.internal)(PORT = 1521)) FINDTPDB = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = a-oracl01.blue-planet.internal)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = FINDTPDB) ) )
ログイン確認
[oracle@a-oracl01 ~]$ sqlplus findtadm/★★★パスワード@FINDTPDB SQL*Plus: Release 23.0.0.0.0 - Production on 木 9月 4 14:20:50 2025 Version 23.9.0.25.07 Copyright (c) 1982, 2025, Oracle. All rights reserved. Oracle Database 23ai Free Release 23.0.0.0.0 - Develop, Learn, and Run for Free Version 23.9.0.25.07 に接続されました。
Windows端末上のtnsnames.oraも編集

管理者ユーザーの権限設定
[oracle@a-oracl01 ~]$ sqlplus / as sysdba SQL*Plus: Release 23.0.0.0.0 - Production on 木 9月 4 14:27:08 2025 Version 23.9.0.25.07 Copyright (c) 1982, 2025, Oracle. All rights reserved. Oracle Database 23ai Free Release 23.0.0.0.0 - Develop, Learn, and Run for Free Version 23.9.0.25.07 に接続されました。 [SYS@FREE] SQL>alter session set container = FINDTPDB; セッションが変更されました。 [SYS@FREE] SQL>show con_name CON_NAME ------------------------------ FINDTPDB
現在の権限確認
[SYS@FREE] SQL>select GRANTEE, GRANTED_ROLE, ADMIN_OPTION from SYS.DBA_ROLE_PRIVS where GRANTEE = 'FINDTADM'; GRANTEE GRANTED_ROLE ADMIN_OPTION ---------- -------------------- --------------- FINDTADM PDB_DBA YES [SYS@FREE] SQL>select GRANTEE, PRIVILEGE, ADMIN_OPTION from SYS.DBA_SYS_PRIVS where GRANTEE = 'PDB_DBA'; GRANTEE PRIVILEGE ADMIN_OPTION ---------- ---------------------------------------- --------------- PDB_DBA CREATE PLUGGABLE DATABASE NO PDB_DBA CREATE SESSION NO
PDB_DBAロールにDBA権限を付与
[SYS@FREE] SQL>grant DBA to PDB_DBA; 権限付与が成功しました。
[SYS@FREE] SQL>select GRANTEE, GRANTED_ROLE, ADMIN_OPTION from SYS.DBA_ROLE_PRIVS where GRANTEE = 'PDB_DBA'; GRANTEE GRANTED_ROLE ADMIN_OPTION ---------- -------------------- --------------- PDB_DBA DBA NO PDB_DBA WM_ADMIN_ROLE YES
管理者ユーザーでPDBへログイン
[oracle@a-oracl01 ~]$ sqlplus findtadm/★★★@FINDTPDB SQL*Plus: Release 23.0.0.0.0 - Production on 木 9月 4 14:40:46 2025 Version 23.9.0.25.07 Copyright (c) 1982, 2025, Oracle. All rights reserved. 最終正常ログイン時間: 木 9月 04 2025 14:24:02 +09:00 Oracle Database 23ai Free Release 23.0.0.0.0 - Develop, Learn, and Run for Free Version 23.9.0.25.07 に接続されました。 [FINDTADM@FINDTPDB] SQL>show con_name CON_NAME ------------------------------ FINDTPDB
ユーザー表領域の作成
[FINDTADM@FINDTPDB] SQL>create tablespace users datafile '/opt/oracle/oradata/FREE/FINDTPDB/users01.dbf' size 300M reuse autoextend on next 500K maxsize unlimited; 表領域が作成されました。

[FINDTADM@FINDTPDB] SQL>select tablespace_name, block_size, initial_extent, max_extents, max_size, status, contents from SYS.DBA_TABLESPACES; TABLESPACE_NAME BLOCK_SIZE INITIAL_EXTENT MAX_EXTENTS MAX_SIZE STATUS CONTENTS -------------------- ---------- -------------- ----------- ---------- --------- --------------------- SYSTEM 8192 65536 2147483645 2147483645 ONLINE PERMANENT SYSAUX 8192 65536 2147483645 2147483645 ONLINE PERMANENT UNDOTBS1 8192 65536 2147483645 2147483645 ONLINE UNDO TEMP 8192 1048576 2147483645 ONLINE TEMPORARY USERS 8192 65536 2147483645 2147483645 ONLINE PERMANENT [FINDTADM@FINDTPDB] SQL>select file_name, tablespace_name, bytes, blocks, status from SYS.DBA_DATA_FILES; FILE_NAME TABLESPACE_NAME BYTES BLOCKS STATUS -------------------------------------------------- ------------------ ---------- ------- --------- /opt/oracle/oradata/FREE/FINDTPDB/system01.dbf SYSTEM 293601280 35840 AVAILABLE /opt/oracle/oradata/FREE/FINDTPDB/sysaux01.dbf SYSAUX 429916160 52480 AVAILABLE /opt/oracle/oradata/FREE/FINDTPDB/undotbs01.dbf UNDOTBS1 104857600 12800 AVAILABLE /opt/oracle/oradata/FREE/FINDTPDB/users01.dbf USERS 314572800 38400 AVAILABLE
開発者ユーザーの作成
[FINDTADM@FINDTPDB] SQL>create user findtuser01 2 identified by ★★★ 3 default tablespace users 4 quota unlimited on users 5 temporary tablespace temp 6 / ユーザーが作成されました。
権限付与
[FINDTADM@FINDTPDB] SQL>grant create session to findtuser01; 権限付与が成功しました。 [FINDTADM@FINDTPDB] SQL>grant resource to findtuser01; 権限付与が成功しました。 [FINDTADM@FINDTPDB] SQL>grant unlimited tablespace to findtuser01; 権限付与が成功しました。 [FINDTADM@FINDTPDB] SQL>grant create view to findtuser01; 権限付与が成功しました。