方式一:分步创建CDB和PDB
第一步:创建CDB容器数据库
使用DBCA静默方式创建CDB,不包含PDB:
dbca -silent-ignorePreReqs -ignorePrereqFailure -createDatabase-templateName General_Purpose.dbc -responseFile NO_VALUE \
-gdbname cdb19c -sid cdb19c \
-createAsContainerDatabase TRUE \
-sysPassword oracleora -systemPassword oracleora -pdbAdminPassword oracleora -dbsnmpPassword oracleora \
-datafileDestination'/oradata' \
-redoLogFileSize50 \
-characterset AL32UTF8 \
-sampleSchematrue \
-totalMemory1024 \
-databaseType MULTIPURPOSE \
-emConfiguration NONE
重要提示:执行过程中会出现密码安全性警告,建议在生产环境中使用符合Oracle标准的强密码。
第二步:验证CDB创建结果
创建完成后,检查数据库状态:
-- 查看PDB状态
SQL>show pdbs;
CON_ID CON_NAME OPENMODE RESTRICTED
------------------------------------------------------------
2 PDB$SEED READ ONLY NO
-- 查看数据文件分布
SQL> col file_name for a60
SQL>select con_id,file_name from cdb_data_files orderby1;
CON_ID FILE_NAME
----------------------------------------------------------------------
1 /oradata/CDB19C/system01.dbf
1 /oradata/CDB19C/users01.dbf
1 /oradata/CDB19C/undotbs01.dbf
1 /oradata/CDB19C/sysaux01.dbf
第三步:创建PDB可插拔数据库
基于种子容器创建新的PDB:
SQL>create pluggable database pdb1 admin user pdb1adm identified by oracle
file_name_convert=('/oradata/CDB19C/pdbseed','/oradata/CDB19C/pdb1');
Pluggable database created.
第四步:启动并配置PDB
-- 查看PDB状态(此时为MOUNTED状态)
SQL>show pdbs;
CON_ID CON_NAME OPENMODE RESTRICTED
------------------------------------------------------------
2 PDB$SEED READ ONLY NO
3 PDB1 MOUNTED
-- 打开所有PDB
SQL>alter pluggable databaseallopen;
Pluggable database altered.
-- 保存PDB状态,确保下次实例启动时自动打开
SQL>alter pluggable databaseall save state;
Pluggable database altered.
-- 验证文件分布
SQL>select con_id,file_name from cdb_data_files orderby1;
CON_ID FILE_NAME
----------------------------------------------------------------------
1 /oradata/CDB19C/system01.dbf
1 /oradata/CDB19C/users01.dbf
1 /oradata/CDB19C/undotbs01.dbf
1 /oradata/CDB19C/sysaux01.dbf
3 /oradata/CDB19C/pdb1/system01.dbf
3 /oradata/CDB19C/pdb1/undotbs01.dbf
3 /oradata/CDB19C/pdb1/sysaux01.dbf
7 rows selected.
方式二:CDB和PDB一键创建
使用单条命令同时创建CDB和PDB:
dbca -silent-createDatabase-templateName General_Purpose.dbc -responseFile NO_VALUE \
-gdbname CDB -sid CDB \
-createAsContainerDatabase TRUE \
-numberOfPDBs1 \
-pdbName prod \
-pdbAdminPassword oracleora \
-sysPassword oracleora -systemPassword oracleora \
-datafileDestination'/oradata' \
-redoLogFileSize50 \
-storageType FS \
-characterset AL32UTF8 -nationalCharacterSet AL16UTF16 \
-sampleSchematrue \
-totalMemory1024 \
-databaseType OLTP \
-emConfiguration NONE
创建完成后立即检查:
-- 查看PDB状态(已自动打开)
SQL>show pdbs;
CON_ID CON_NAME OPENMODE RESTRICTED
------------------------------------------------------------
2 PDB$SEED READ ONLY NO
3 PROD READWRITENO
-- 查看完整的数据文件分布
SQL>set linesize 400;
SQL>select con_id,file_name from cdb_data_files orderby1;
CON_ID FILE_NAME
------------------------------------------------------------------------------------------
1 /oradata/CDB/system01.dbf
1 /oradata/CDB/users01.dbf
1 /oradata/CDB/undotbs01.dbf
1 /oradata/CDB/sysaux01.dbf
3 /oradata/CDB/prod/system01.dbf
3 /oradata/CDB/prod/users01.dbf
3 /oradata/CDB/prod/undotbs01.dbf
3 /oradata/CDB/prod/sysaux01.dbf
8 rows selected.
方法对比与选择建议
分步创建(方式一)优势:
灵活控制:可以在CDB创建后根据需求决定PDB的创建时机
精细配置:每个PDB可以单独配置存储路径和参数
适合场景:需要精确控制PDB创建过程的环境
一键创建(方式二)优势:
高效便捷:单条命令完成所有创建工作
自动管理:PDB自动打开,无需手动干预
适合场景:快速部署标准化环境,开发测试环境
总结
通过这两种静默创建方式,DBA可以快速部署Oracle多租户数据库环境。方式一适合需要精细化控制的场景,方式二适合快速标准化部署。掌握这两种方法,将极大提升Oracle数据库的运维效率。
关注我,学习更多的数据库知识!

