ALTER DATABASE 语句
ALTER DATABASE语句用于更改当前服务器上数据库的描述。
调用 ALTER DATABASE
此语句可嵌入应用程序中或者以交互方式发出。 这是一个可执行语句,只有在DYNAMICRULES RUN行为生效时才能动态准备。 更多信息,请参阅授权ID和动态SQL。
授权 ALTER DATABASE
以下定义的特权套装必须至少包含以下一项:
- 数据库中的DROP权限
- 数据库所有权
- 数据库的 DBADM 或 DBCTRL 权限
- SYSADM 或 SYSCTRL 权限
- 系统 DBADM
安装 SYSOPR 权限(当前进程的 SQLID 设置为 SYSINSTL 时)
如果数据库是隐式创建的,则权限必须位于隐式数据库或 DSNDB04 上。
权限设置:
如果语句嵌入到应用程序中,权限集就是软件包所有者所拥有的权限。 如果语句是动态准备的,则权限集是进程的每个授权ID和角色所拥有的权限集的并集。
语法 ALTER DATABASE
描述 ALTER DATABASE
- DATABASE 数据库名称
- 标识要更改的数据库。 名称必须标识当前服务器上存在的数据库,而不能标识隐式创建的系统数据库。
- BUFFERPOOL bpname
- 为数据库中的表空间指定默认缓冲池。 它不适用于数据库中已经存在的表格空间。
如果数据库是工作文件数据库,则无法指定8 KB和16 KB缓冲池。
如果隐式创建表空间,则 Db2 将按照隐式定义表空间中所述选择缓冲池。
有关bpname 的详细信息,请参阅 SQL中的命名约定。
- INDEXBP bpname
- 为数据库中的索引确定默认缓冲池。 它不适用于数据库中已经存在的索引。 该名称可以识别4 KB、8 KB、16 KB或32 KB的缓冲池。 有关bpname 的详细信息,请参阅 SQL中的命名约定。
- STOGROUP stogroup-name
- 根据需要将使用的存储组标识为默认存储组,以满足数据库中表空间和索引对DASD空间的需求。 它不适用于数据库中已经存在的表格空间和索引。
- CCSID CCSID值
- 标识数据库中表空间的默认CCSID。 它不适用于数据库中现有的表格空间。 ccsid-value 必须标识一个与数据库当前 CCSID 值兼容的 CCSID 值。 ALTER DATABASE的注释包含一个列表,显示特定CCSID可以更改为的CCSID。
CCSID 无法为工作文件数据库指定。
备注 ALTER DATABASE
- 改变CCSID
更改默认CCSID的能力使您能够切换到支持欧元符号的CCSID。 您只能在定义和不定义欧元符号的特定CCSID之间进行转换。 在大多数情况下,支持欧元符号的代码点会取代现有的代码点,例如国际货币符号(ICS)。
更换CCSID可能会对系统造成干扰,需要几个步骤。 对于系统的每种编码方案(ASCII、EBCDIC和Unicode), Db2 都支持SBCS、DBCS和混合CCSID。 因此,编码方案中所有数据库和表空间的全局CCSID应同时更改。 否则,可能会出现不可预测的结果。
建议的CCSID更改方法要求卸载并重新加载数据。 如需了解更改CCSID所需的步骤,例如运行安装CLIST以修改DSNHDECP中的CCSID数据、何时删除并重新创建视图以及何时重新绑定无效的包,请参阅使用国际数据。
下表列出了可转换的CCSID。 每对中的第二个CCSID是带有欧元符号的CCSID。 CCSID可以从不支持欧元符号的CCSID更改为支持欧元符号的CCSID,反之亦然。 例如,如果当前的CCSID为500,则可以更改为1148。EBCDIC CCSIDs --------------- 37 1140 273 1141 277 1142 278 1143 280 1144 284 1145 285 1146 297 1147 500 1148 871 1149ASCII CCSIDs --------------- 850 858 874 4970 1250 5346 1251 5347 1252 5348 1253 5349 1254 5350 1255 5351 1256 5352 1257 5353
示例 ALTER DATABASE
将数据库ABCDE中表空间和索引的默认缓冲池更改为 BP2。
ALTER DATABASE ABCDE
BUFFERPOOL BP2
INDEXBP BP2;