oracle 12创建pdb
Oracle 12 创建PDB
Oracle database 12c 之后,容器(container)数据库是一个新的概念。一个容器数据库包含一个或多个多租户数据库的容器。每个多租户数据库称为一个可插拔数据库(PDB)。 在容器数据库中,系统级数据(如元数据和参数文件)是容器级别的,而非PDB级别。 这意味着在容器级别上对数据库实例和配置进行更改是一种新的操作。本文主要介绍在 Oracle 12c中如何创建PDB。
首先,我们需要创建一个容器database并确保container=TRUE:
CREATE DATABASE
USER SYS IDENTIFIED BY
USER SYSTEM IDENTIFIED BY
SET CONTROL_FILES = ''
MAXLOGFILES 10
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
CHARACTER SET
NATIONAL CHARACTER SET
ENABLE PLUGGABLE DATABASE
SEED
其中是需要创建的数据库名称。此外,也可以定义CONTROL_FILES、LOG_FILES、LOG_MEMBERS、DATA_FILES、DEFAULT_TEMPORARY_TABLESPACE、DEFAULT_PERMANENT_TABLESPACE 等其他参数。
接下来,我们可以创建PDB,如下:
CREATE PLUGGABLE DATABASE
ADMIN USER
IDENTIFIED BY
DEFAULT TABLESPACE
DATAFILE '' SIZE 500M AUTOEXTEND ON
PATH_PREFIX = '
'
FILE_NAME_CONVERT = ('','');
其中,
是需要创建的可插拔数据库的名称。我们还为PDB指定了一个管理用户(
)和一个表空间()。
如果创建PDB时指定了 CREATE PLUGGABLE DATABASE … AS SEED,则可以使用 SEED option 将当前PDB创建为另一个PDB的副本。例如,执行以下命令将创建一个以hrpdb为SEED的PDB:
CREATE PLUGGABLE DATABASE hrpdb_clone
ADMIN USER admin IDENTIFIED BY
FILE_NAME_CONVERT = ('/opt/oracle/oradata/cdb1/hrpdb','/opt/oracle/oradata/cdb1/hrpdb_clone')
NOCOPY;
这将使用 hrpdb 数据库中存在的所有信息和结构来创建 hrpdb_clone。
另外一种情况是复制已存在的非容器数据库以创建PDB,这可以通过以下步骤实现:
- 将非容器数据库作为PDB创建并启用CDB
- 生成合适的PDB定义文件dbca.rsp
- 在CDB控制下创建从PDB定义文件的新PDB
以下是一个创建从PDB定义文件的新PDB的例子:
[oracle@db ~]$ dbca -silent -createPluggableDatabase \
-sourceDB dent -pdbName my_dentpdb \
-createAsClone true \
-pdbAdminPassword passwd -templateName General_Purpose.dbc \
-sysPassword System_passwd -systemPassword System_passwd
在这个例子中,我们使用了一个dbca.rsp文件,其内容如下:
SOURCE_DATABASE_NAME=dent
PDB_NAME=my_dentpdb
USE_EXISTING_EXTPWD_FILE=true
PDB_CREATE_AS_CLONE=true
DB_UNIQUE_NAME=myhr_pdb
SYSPASSWORD=pass
SYSTEMPASSWORD=pass
GENERATE_CUSTOM_DB_NAME=false
TEMPLATE_NAME=General_Purpose.dbc
CHARACTERSET=AL32UTF8
NATIONALCHARACTERSET=AL16UTF16
在完成上述命令后,我们就可以使用新创建的PDB了。
总结
Oracle 12c引入容器(container)数据库概念,它可以包含一个或多个多租户数据库的容器。每个多租户数据库被称为一个可插拔数据库(PDB)。本文主要介绍了在 Oracle 12c中如何创建PDB的步骤,包括创建容器database和创建PDB,以及在现有数据库的基础上复制创建PDB的方式。