#CREATE DATABASE
# 通用描述
CREATE DATABASE用于创建一个新的数据库。该语句只能用于一个处于NOMOUNT状态的空实例(Instance)。创建完新数据库后,该实例会将数据库启动至OPEN状态。
创建数据库的过程中会在指定或默认位置创建物理文件,如过程中出现任何异常导致创建数据库失败时,这些已创建的文件将残留,用户需进行手动清理,未清理且使用相同文件再次CREATE DATABASE时将失败。
分布式部署中用户无法执行本语句。
# 语句定义
create database::=
logfiles_clause::=
tablespace_clause::=
datafiles_clause::=
extent_clause::=
databucket_clause::=
# database
该语句用于指定要创建的数据库的名称,不可省略,且需符合YashanDB的对象命名规范。
# user sys identified by
该语句用于指定SYS用户的口令,可省略,则数据库创建后SYS用户的口令仍为初始值,并可通过ALTER USER语句并更口令。
# controlfiles
该语句用于指定创建数据库时,同时创建的控制文件,多个控制文件用,
分隔,可省略,则系统根据CONTROL_FILES参数定义的默认值在磁盘上生成控制文件。YashanDB支持指定最多8个控制文件。
# maxdatafiles
该语句用于指定数据库能打开的数据文件的最大个数,该值决定了控制文件里Datafile Section所占的初始空间,可省略,则取系统默认值4096。YashanDB支持指定的最大值为16384。
# maxdatabuckets
该语句用于指定数据库能挂载的databucket的最大个数,可省略,则取系统默认值4096。YashanDB支持指定的最大值为16384。
# maxinstances
该语句用于指定能同时挂载(Mount)该数据库的最大实例个数,可省略,则取系统默认值8。YashanDB支持指定的最大值为64。
# character set
该语句用于指定数据库存储数据到文件所使用的字符集,可省略,则取系统默认值UTF8。YashanDB支持指定的字符集有ASCII、GBK、UTF8、ISO8859-1。
# national character set
该语句用于指定数据库使用的国家字符集,可省略,则取系统默认值UTF16。YashanDB支持指定的国家字符集仅有UTF16。
# undo_segments
该语句用于指定数据库可自动扩展回滚段的最大个数,可省略,则为默认值64。YashanDB支持指定的最大值为256。
# maxlogfiles
该语句用于指定redo日志文件的元数据预留个数,该值决定了控制文件里Redofile Section所占的初始空间,可省略,则取系统默认值256,YashanDB支持指定的最大值为4096。该值不限制实例可创建的redo日志文件个数,当创建的redo日志个数超过该值时,控制文件可能会扩展。
# maxloghistory
该语句用于指定归档日志文件的元数据预留个数,该值决定了控制文件里Archfile Section所占的初始空间,可省略,则取系统默认值64000。YashanDB支持指定的最大值为1000000。该值不限制实例可创建的归档日志文件个数,当创建的归档日志个数超过该值时,控制文件可能会扩展。
# archivelog|noarchivelog
该语句用于指定数据库是否开启归档模式,可省略,则取系统默认值NOARCHIVELOG。
# logfile logfiles_clause
该语句用于指定创建数据库时,同时创建的redo日志文件的路径和大小,可省略,则在系统默认的数据文件路径下创建三个名称为redo1/redo2/redo3,大小为128M,BLOCKSIZE为4K的文件。
# logfiles_clause
logfile:日志文件的名称,未包含路径时,取系统默认的数据文件路径。
SIZE:日志文件的大小。
BLOCKSIZE:日志文件的页面大小。默认是4K,最小512字节,最大32K。其值一般设置为操作系统BLOCK的大小,小于系统BLOCK大小的话,会有性能影响。一般不建议修改。
# double_write datafile dbwfile size size_clause
该语句用于指定创建数据库时,同时创建的双写文件的路径和大小,可省略,则在系统默认的数据文件路径下创建一个名称为dwf,大小为8192个BLOCK的文件。
当指定创建双写文件时文件过小会出现建库失败,双写文件的可用最小值受配置参数DBWR_BUFFER_SIZE和DBWR_COUNT影响,最小值近似公式:4 * DBWR_BUFFER_SIZE * DBWR_COUNT + 4M。
# tablespace_clause
该语句用于指定创建数据库时,同时创建SYSTEM/SYSAUX/UNDO/SWAP/TEMPORARY/DEFAULT表空间,可省略,则系统按下面各项给出的缺省值创建这些表空间。
# tempfile|datafile
表空间对应的数据文件类型,其中SWAP/TEMPORARY表空间的数据文件类型缺省为TEMPFILE,其他表空间缺省为DATAFILE。
# datafiles_clause
表空间对应的数据文件名称,多个数据文件用,
分隔。缺省在系统默认的数据文件路径下创建名称与表空间名称相同(DEFAULT表空间对应的数据文件名默认为users),大小为8192个BLOCK,开启自动扩展,每次扩展8192个BLOCK,最大可扩展到64MB个BLOCK(UNDO表空间为8MB个BLOCK)的数据文件。
# databucket_clause
当为表空间指定了DATABUCKET时,系统将按指定路径信息创建用于对象存储的目录。对于DEFAULT表空间,如未指定DATABUCKET,系统将在默认路径(local_fs)下创建users文件夹用于对象存储。
# extent
表空间对象申请extent时的空间分配方式,其中UNDO/SWAP表空间默认为UNIFORM SIZE 1个BLOCK的方式,其他表空间默认为AUTOALLOCATE(系统自动分配)。
# memory mapped
指定是否启用数据常驻内存模式,默认不启用。
示例
CREATE DATABASE yashan;
CREATE DATABASE yashan
CHARACTER SET utf8
NATIONAL CHARACTER SET utf16
ARCHIVELOG
LOGFILE ('/home/yasdb/YASDB_DATA/dbfiles/redo1' size 2G BLOCKSIZE 512,
'/home/yasdb/YASDB_DATA/dbfiles/redo2' size 2G BLOCKSIZE 512,
'/home/yasdb/YASDB_DATA/dbfiles/redo3' size 2G BLOCKSIZE 512,
'/home/yasdb/YASDB_DATA/dbfiles/redo4' size 2G BLOCKSIZE 512)
UNDO TABLESPACE DATAFILE '?/dbfiles/undo' size 2G autoextend ON NEXT 256M MAXSIZE 64G
SWAP TABLESPACE TEMPFILE '?/dbfiles/swap' size 2G autoextend ON NEXT 256M MAXSIZE 64G
SYSTEM TABLESPACE DATAFILE 'system' size 128M MEMORY MAPPED
DEFAULT TABLESPACE DATAFILE '?/dbfiles/users' size 5G;