• 概念描述
• 测试验证
• 知识总结
• 参考文档
概念描述
在Oracle AI database 26ai中基于alert日志梳理pdb创建的过程。
测试验证
1、创建pdb命令
...
sql
2026-01-29T02:16:46.895316-05:00
CREATE PLUGGABLE DATABASE "xfpdb" ADMIN USER pdbadmin identified by * ROLES=(CONNECT) PARALLEL file_name_convert=('/u01/app/oracle/oradata/CDBXF/pdbseed/undotbs01.dbf','/u01/app/oracle/oradata/CDBXF/xfpdb/undotbs01.dbf',
'/u01/app/oracle/oradata/CDBXF/pdbseed/sysaux01.dbf','/u01/app/oracle/oradata/CDBXF/xfpdb/sysaux01.dbf',
'/u01/app/oracle/oradata/CDBXF/pdbseed/system01.dbf','/u01/app/oracle/oradata/CDBXF/xfpdb/system01.dbf',
'/u01/app/oracle/oradata/CDBXF/pdbseed/temp01.dbf','/u01/app/oracle/oradata/CDBXF/xfpdb/temp01.dbf') STORAGE INHERIT
2026-01-29T02:16:47.157285-05:00
PDB$SEED(2): AUDSYS.AUD$UNIFIED (SQL_TEXT) - CLOB populated
...
pdb创建仍然像19c,12c版本一样使用的
CREATE PLUGGABLE DATABASE XXX ADMIN ... file_name_convert=...
子句。
2、修改基表file$
sql
Completed: CREATE PLUGGABLE DATABASE "xfpdb" ADMIN USER pdbadmin identified by * ROLES=(CONNECT) PARALLEL file_name_convert=('/u01/app/oracle/oradata/CDBXF/pdbseed/undotbs01.dbf','/u01/app/oracle/oradata/CDBXF/xfpdb/undotbs01.dbf',
'/u01/app/oracle/oradata/CDBXF/pdbseed/sysaux01.dbf','/u01/app/oracle/oradata/CDBXF/xfpdb/sysaux01.dbf',
'/u01/app/oracle/oradata/CDBXF/pdbseed/system01.dbf','/u01/app/oracle/oradata/CDBXF/xfpdb/system01.dbf',
'/u01/app/oracle/oradata/CDBXF/pdbseed/temp01.dbf','/u01/app/oracle/oradata/CDBXF/xfpdb/temp01.dbf') STORAGE INHERIT
alter pluggable database "XFPDB" open
XFPDB(3):Autotune of undo retention is turned on.
XFPDB(3):Deleting old file#2 from file$
XFPDB(3):Deleting old file#4 from file$
XFPDB(3):Deleting old file#6 from file$
XFPDB(3):Deleting old file#8 from file$
XFPDB(3):Deleting old file#9 from file$
XFPDB(3):Adding new file#12 to file$(old file#2). fopr-1, newblks-44800, oldblks-19200
XFPDB(3):Adding new file#13 to file$(old file#4). fopr-1, newblks-51200, oldblks-15360
XFPDB(3):Adding new file#14 to file$(old file#9). fopr-1, newblks-12800, oldblks-12800
XFPDB(3):Bug 38433601: Check for update service name
XFPDB(3):Bug 38433601: Call ksws_update_pdb_attr
2026-01-29T02:16:50.180579-05:00
pdb创建完成后对file$ 基表进行了修改delete了2,4,6,8,9add file#12,13,14
在pdb中查询file$
sql
SQL> alter session set container=xfpdb;
Session altered.
SQL> select FILE# ,CRSCNWRP,SPARE4 from file$;
FILE# CRSCNWRP SPARE4
---------- ---------- ---------
13 0
15 0
12 0
14 0
file$sys用户下的数据字典基表,他对应的是cdb_data_files和dba_data_files。
sql
SQL> select owner,OBJECT_NAME,con_id from cdb_objects where OBJECT_NAME='FILE$';
OWNER OBJECT_NAM CON_ID
---------- ---------- ----------
SYS FILE$ 3
SQL>
SQL> EXPLAIN PLAN FOR select file_name,FILE_ID,TABLESPACE_NAME from cdb_data_files;
Explained.
SQL> SELECT plan_table_output FROM TABLE(DBMS_XPLAN.DISPLAY('PLAN_TABLE'));
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Plan hash value: 1403926647
------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 2 | 576 | 4 (0)| 00:00:01 |
| 1 | VIEW | DBA_DATA_FILES | 2 | 576 | 4 (0)| 00:00:01 |
| 2 | UNION-ALL | | 2 | 774 | 4 (0)| 00:00:01 |
| 3 | NESTED LOOPS | | 1 | 369 | 2 (0)| 00:00:01 |
| 4 | NESTED LOOPS | | 1 | 359 | 1 (0)| 00:00:01 |
| 5 | NESTED LOOPS | | 1 | 333 | 1 (0)| 00:00:01 |
|* 6 | FIXED TABLE FULL | X$KCCFN | 1 | 323 | 0 (0)| 00:00:01 |
|* 7 | TABLE ACCESS BY INDEX ROWID | FILE$ | 1 | 10 | 1 (0)| 00:00:01 |
|* 8 | INDEX UNIQUE SCAN | I_FILE1 | 1 | | 0 (0)| 00:00:01 |
|* 9 | FIXED TABLE FIXED INDEX | X$KCCFE (ind:1) | 1 | 26 | 0 (0)| 00:00:01 |
| 10 | TABLE ACCESS CLUSTER | TS$ | 1 | 10 | 1 (0)| 00:00:01 |
|* 11 | INDEX UNIQUE SCAN | I_TS# | 1 | | 0 (0)| 00:00:01 |
| 12 | NESTED LOOPS | | 1 | 405 | 2 (0)| 00:00:01 |
| 13 | NESTED LOOPS | | 1 | 395 | 1 (0)| 00:00:01 |
| 14 | NESTED LOOPS | | 1 | 369 | 1 (0)| 00:00:01 |
| 15 | NESTED LOOPS | | 1 | 330 | 1 (0)| 00:00:01 |
|* 16 | FIXED TABLE FULL | X$KCCFN | 1 | 323 | 0 (0)| 00:00:01 |
|* 17 | TABLE ACCESS BY INDEX ROWID| FILE$ | 1 | 7 | 1 (0)| 00:00:01 |
|* 18 | INDEX UNIQUE SCAN | I_FILE1 | 1 | | 0 (0)| 00:00:01 |
|* 19 | FIXED TABLE FIXED INDEX | X$KTFBHC (ind:1) | 1 | 39 | 0 (0)| 00:00:01 |
|* 20 | FIXED TABLE FIXED INDEX | X$KCCFE (ind:1) | 1 | 26 | 0 (0)| 00:00:01 |
| 21 | TABLE ACCESS CLUSTER | TS$ | 1 | 10 | 1 (0)| 00:00:01 |
|* 22 | INDEX UNIQUE SCAN | I_TS# | 1 | | 0 (0)| 00:00:01 |
------------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
6 - filter("FNNAM" IS NOT NULL AND ("CON_ID"=0 OR "CON_ID"=3) AND "FNTYP"=4 AND
"INST_ID"=USERENV('INSTANCE') AND BITAND("FNFLG",4)<>4)
7 - filter("F"."SPARE1" IS NULL)
8 - access("FNFNO"="F"."FILE#")
9 - filter(("CON_ID"=0 OR "CON_ID"=3) AND "CON_ID"=TO_NUMBER(SYS_CONTEXT('USERENV','CON_ID'
)) AND "FENUM"="F"."FILE#")
11 - access("F"."TS#"="TS"."TS#")
16 - filter("FNNAM" IS NOT NULL AND ("CON_ID"=0 OR "CON_ID"=3) AND "FNTYP"=4 AND
"INST_ID"=USERENV('INSTANCE') AND BITAND("FNFLG",4)<>4)
17 - filter("F"."SPARE1" IS NOT NULL)
18 - access("FNFNO"="F"."FILE#")
19 - filter(("CON_ID"=0 OR "CON_ID"=3) AND "FNFNO"="KTFBHCAFNO")
20 - filter(("CON_ID"=0 OR "CON_ID"=3) AND "FENUM"="F"."FILE#" AND
"CON_ID"=TO_NUMBER(SYS_CONTEXT('USERENV','CON_ID')))
22 - access("KTFBHCTSN"="TS"."TS#")
Note
-----
- this is an adaptive plan
52 rows selected.
3、重建temp表空间
sql
Completed: alter pluggable database "XFPDB" open
2026-01-29T02:16:55.557564-05:00
XFPDB(3):CREATE SMALLFILE TEMPORARY TABLESPACE TEMP_NON_ENC TEMPFILE '/u01/app/oracle/oradata/CDBXF/xfpdb/temp01_NON_ENC.dbf' SIZE 84M REUSE AUTOEXTEND ON NEXT 8192K MAXSIZE 4095M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1024K
XFPDB(3):Tablespace created: TEMP_NON_ENC ts# 5
XFPDB(3):Completed: CREATE SMALLFILE TEMPORARY TABLESPACE TEMP_NON_ENC TEMPFILE '/u01/app/oracle/oradata/CDBXF/xfpdb/temp01_NON_ENC.dbf' SIZE 84M REUSE AUTOEXTEND ON NEXT 8192K MAXSIZE 4095M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1024K
XFPDB(3):ALTER DATABASE DEFAULT TEMPORARY TABLESPACE "TEMP_NON_ENC"
XFPDB(3):Completed: ALTER DATABASE DEFAULT TEMPORARY TABLESPACE "TEMP_NON_ENC"
ALTER PLUGGABLE DATABASE "XFPDB" CLOSE IMMEDIATE
2026-01-29T02:16:55.667448-05:00
XFPDB(3):JIT: pid 60281 requesting stop
XFPDB(3):TABLE SYS.ACTIVITY_TABLE$: ADDED INTERVAL PARTITION SYS_P503 (1) VALUES LESS THAN (106)
XFPDB(3):Buffer Cache flush started: 3
XFPDB(3):Buffer Cache flush finished: 3
Completed: Pluggable database XFPDB closed services=None
Completed: ALTER PLUGGABLE DATABASE "XFPDB" CLOSE IMMEDIATE
alter pluggable database "XFPDB" open
XFPDB(3):Autotune of undo retention is turned on.
2026-01-29T02:16:56.887292-05:00
XFPDB(3):Opening pdb with no Resource Manager plan active
Completed: Pluggable database XFPDB opened read write
2026-01-29T02:16:57.602788-05:00
Completed: alter pluggable database "XFPDB" open
XFPDB(3):drop tablespace TEMP including contents and datafiles
2026-01-29T02:16:57.978035-05:00
XFPDB(3):Deleted file /u01/app/oracle/oradata/CDBXF/xfpdb/temp01.dbf
XFPDB(3):Tablespace dropped: TEMP ts# 3
XFPDB(3):Completed: drop tablespace TEMP including contents and datafiles
XFPDB(3):CREATE SMALLFILE TEMPORARY TABLESPACE TEMP TEMPFILE '/u01/app/oracle/oradata/CDBXF/xfpdb/temp01.dbf' SIZE 84M REUSE AUTOEXTEND ON NEXT 8192K MAXSIZE 4095M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1024K
XFPDB(3):Tablespace created: TEMP ts# 3
XFPDB(3):Completed: CREATE SMALLFILE TEMPORARY TABLESPACE TEMP TEMPFILE '/u01/app/oracle/oradata/CDBXF/xfpdb/temp01.dbf' SIZE 84M REUSE AUTOEXTEND ON NEXT 8192K MAXSIZE 4095M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1024K
XFPDB(3):ALTER DATABASE DEFAULT TEMPORARY TABLESPACE "TEMP"
ALTER PLUGGABLE DATABASE "XFPDB" CLOSE IMMEDIATE
XFPDB(3):JIT: pid 60281 requesting stop
XFPDB(3):Buffer Cache flush started: 3
XFPDB(3):Buffer Cache flush finished: 3
2026-01-29T02:16:58.646017-05:00
Completed: Pluggable database XFPDB closed services=None
Completed: ALTER PLUGGABLE DATABASE "XFPDB" CLOSE IMMEDIATE
alter pluggable database "XFPDB" open
XFPDB(3):Autotune of undo retention is turned on.
2026-01-29T02:16:59.379553-05:00
XFPDB(3):Opening pdb with no Resource Manager plan active
2026-01-29T02:16:59.678638-05:00
Completed: Pluggable database XFPDB opened read write
Completed: alter pluggable database "XFPDB" open
XFPDB(3):drop tablespace TEMP_NON_ENC including contents and datafiles
XFPDB(3):Deleted file /u01/app/oracle/oradata/CDBXF/xfpdb/temp01_NON_ENC.dbf
XFPDB(3):Tablespace dropped: TEMP_NON_ENC ts# 5
XFPDB(3):Completed: drop tablespace TEMP_NON_ENC including contents and datafiles
创建TEMP_NON_ENC临时表空间 ,drop temp临时表空间并重建,drop TEMP_NON_ENC 临时表空间。将数据库的默认临时表空间修改为temp表空间。
TEMP_NON_ENC从名称来看是非加密临时表空间。
从数据库日志看在创建pdb过程中,有创建temp和drop temp动作,根据官网描述应该是表空间转换。
About Encryption Conversion for Tablespaces and Databases

4、创建users表空间
sql
XFPDB(3):CREATE BIGFILE TABLESPACE "USERS" LOGGING DATAFILE '/u01/app/oracle/oradata/CDBXF/xfpdb/users01.dbf' SIZE 7M REUSE AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO
XFPDB(3):Tablespace created: USERS ts# 6
XFPDB(3):Completed: CREATE BIGFILE TABLESPACE "USERS" LOGGING DATAFILE '/u01/app/oracle/oradata/CDBXF/xfpdb/users01.dbf' SIZE 7M REUSE AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO
XFPDB(3):ALTER DATABASE DEFAULT TABLESPACE "USERS"
XFPDB(3):Completed: ALTER DATABASE DEFAULT TABLESPACE "USERS"
创建USERS表空间并设为数据库默认表空间,26ai中users表空间是bigfile类型。
5、查询pdb中的表空间
sql
SQL> select con_id,TABLESPACE_NAME,BIGFILE from cdb_tablespaces;
CON_ID TABLESPACE_NAME BIG
---------- ------------------------------ ---
3 SYSTEM YES
3 SYSAUX YES
3 UNDOTBS1 YES
3 TEMP NO
3 USERS YES
26ai中创建pdb时的系统默认表空间类型是bigfile。
知识总结
26ai中通过dbca方式创建pdb总体与之前版本一致,默认表空间类型发生了变化,默认表空间SYSTEM,SYSAUX,UNDOTBS,USERS为bigfie,表空间类型的变化对于日常日常运维中表空间扩容的方式也发生变化。
-the end-