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数据库名称1BUFFERPOOLbpnameINDEXBPbpnameSTOGROUP用户组名称CCSIDCCSID值
注意:
  • 1 同一条款不得重复出现。

描述 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        1149
ASCII 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;