这部分包含有关创建具有和不具有缺省页大小的标准和临时数据库空间的信息,创建数据 库空间时在数据库空间中为表空间 tblspace 指定第一个和下一个扩展数据块大小的信息, 以及向数据库空间或 BLOB 空间添加块的信息。 有关监视数据库空间的信息,请参阅监视存储空间。 创建使用缺省页大小的数据库空间 可以使用 onspaces 或 ON-Monitor 创建标准数据库空间和临时数据库空间。 有关创建具有非缺省页大小的数据库空间的信息,请参阅创建具有非缺省页大小的数据库 空间。 GBase 8s 管理员指南 南大通用数据技术股份有限公司 - 197 - 任何新添加的数据库空间及其镜像(如果存在一个镜像)立即可用。如果您使用镜像,那 么可在创建数据库空间时对其制作镜像。镜像可立即生效。 要使用 onspaces 创建标准数据库空间: 1. 在 UNIX™ 上,您必须以用户 gbasedbt 或 root 身份登录来创建数据库空间。 2. 请确保数据库服务器处于联机、管理或静默方式中。 3. 按分配磁盘空间中所述,为数据库空间分配磁盘空间。 4. 要创建数据库空间,请使用 onspaces -c -d 选项。 KB 是 -s size 和 -o offset 选项的缺省单位。 要将 KB 转换为 MB,可将该单位 数量乘以 1024(例如,10 MB = 10 * 1024 KB)。 如果要创建具有非缺省页大小的数据库空间,请参阅创建具有非缺省页大小的数据 库空间以获取有关附加 onspaces 选项的信息。 5. 如果不想为数据库空间中的表空间 tblspace 指定第一个和下一个扩展数据块大 小,请转至 6。 如果想要为数据库空间中的表空间 tblspace 指定第一个和下一个扩展数据块大 小, 表空间为表空间 tblspace 指定第一个和下一个扩展数据块大小中的其他信息。 6. 在创建数据库空间之后,必须对根数据库空间和新数据库空间执行 0 级备份。 以下示例显示了如何在 UNIX 上使用原始磁盘空间创建 10 MB 镜像数据库空间 dbspce1,对主块和镜像块的偏移量均为 5000 KB。 onspaces -c -d dbspce1 -p /dev/raw_dev1 -o 5000 -s 10240 -m /dev/raw_dev2 5000 有关使用 onspaces 创建数据库空间的更多信息,请参阅数据库空间和《GBase 8s 管理员 参考》中有关 onspaces 的信息。 要使用 ON-Monitor 创建数据库空间 (UNIX): 1. 选择数据库空间 > 创建选项。 2. 在字段数据库空间名称中输入新数据库空间的名称。 3. 如果您希望为初始数据库空间块创建镜像, 请在镜像字段中输入 Y。 否则, 输入 N。 4. 如果您正在创建的数据库空间是临时数据库空间,请在临时字段输入 Y。 否则, 输入 N。 5. 如果要为标准数据库空间指定页大小,请在页大小字段中输入大小(以 KB 计)。 大小必须为根数据库空间页大小的倍数。有关指定页大小的更多信息,请参阅创建 具有非缺省页大小的数据库空间。 数据库空间内的所有表、索引以及其他对象都将使用指定大小的页。 6. 在主块部分的完整路径名字段中输入数据库空间初始主块的完整路径名。 7. 在偏移量字段中指定偏移量。 8. 在大小字段中输入块的大小(以 KB 计)。 9. 如果要对该数据库空间制作镜像,请在屏幕的镜像块部分输入完整路径名、大小和 (可选)偏移量。 有关更多信息,请参阅《GBase 8s 管理员参考》中的 ON-Monitor 主题。 GBase 8s 管理员指南 南大通用数据技术股份有限公司 - 198 - 为表空间 tblspace 指定第一个和下一个扩展数据块大小 如果要减少表空间 tblspace 扩展数据块数,并降低发生必须将表空间 tblspace 扩展数据 块放入非主块的情况的频率,可以指定第一个和下一个扩展数据块大小。 (主块为数据库 空间中的初始块。) 可选择性地指定第一个扩展数据块大小、下一个扩展数据块大小,以及第一个和/或下一个 扩展数据块大小。如果不为表空间 tblspace 指定第一个或下一个扩展数据块大小,那么 GBase 8s 将使用现有的缺省扩展数据块大小。 可使用 TBLTBLFIRST 和 TBLTBLNEXT 配置参数为表空间 tblspace指定第一个或下一 个扩展数据块大小,该表空间位于在初始化服务器时创建的根数据库空间中。 可使用 onspaces 实用程序为非根数据库表空间中的表空间 tblspace 指定第一个和下一个 扩展数据块大小。 创建数据库空间时,可以仅指定第一个和下一个扩展数据块大小。创建数据库空间后,不 能改变第一个和下一个扩展数据块大小的规范。另外,您还不能指定临时数据库空间、智 能大对象空间、BLOB 空间或外部空间的扩展数据块大小。创建数据库空间之后,您将无 法改变第一个和下一个扩展数据块大小的规格。 要指定第一个和下一个扩展数据块大小,请执行以下操作: 1. 确定在表空间 tblspace 中所需的总页数。 页数等于表数 + 拆离索引数 + 可能位于数据库空间中的表分段数 + 表空间 tblspace 的一个 页面。 2. 计算页数所需的 KB 数。 此数字将取决于系统上的一个页面的 KB 数。 3. 通过考虑在创建数据库空间期间分配的表空间 tblspace 的所有扩展数据块的重要 性,以及是否必须连续分配这些扩展数据块来确定系统上的空间管理需求。 其中,最重要的就是第一个扩展数据块大小必须更大。如果不是很在意辅助块中存在不连 续扩 展数据块,那么第一个和下一个扩展数据块大小可以小一些。 4. 如下所示,指定扩展数据块大小: o 如果空间需求适用于根数据库空间,那么在 TBLTBLFIRST 配置参数中指定第一个扩 展数据块大小并在 TBLTBLNEXT 配置参数中指定下一个扩展数据块大小。 然后初始化数 据库服务器实例。 o 如果空间需求适用于非根数据库空间, 那么通过使用 onspaces实用程序在命令行上指示 第一个和下一个扩展数据块大小从而创建数据库空间。 扩展数据块大小必须以 KB 计,并且必须是页大小的倍数。指定第一个和下一个扩展数据 块大小时,请遵循以下指南: 扩展数据块的类型 最小大小 最大大小 GBase 8s 管理员指南 南大通用数据技术股份有限公司 - 199 - 扩展数据块的类型 最小大小 最大大小 非根数据库空间中的第一个 扩展数据块 相当于 50 页(以 KB 指 定)。这是系统缺省值。 例 如, 对于 2 KB 页面系统, 最 小长度为 100。 初始块的大小, 减去任何系统 对象 (如保留页、 数据库表空 间, 以及物理和逻辑日志) 所 需的空间。 根数据库空间中的第一个扩 展数据块 相当于 250 页(以 KB 指 定)。这是系统缺省值。 初始块的大小, 减去任何系统 对象 (如保留页、 数据库表空 间, 以及物理和逻辑日志) 所 需的空间。 下一个扩展数据块 为系统上磁盘页大小的 4 倍。 在任何类型的数据库空 间上,缺省值均为 50 页。 最大块大小减去 3 页。 可使用以下 onspaces 实用程序和-ef 和 -en 选项为非根数据库表空间中的表空间 tblspace 指定第一个和下一个扩展数据块大小: 第一个扩展数据块大小:-ef size_in_kbytes 下一个扩展数据块大小:-en size_in_kbytes 例如,可以指定: onspaces -c -d dbspace1 -p /usr/data/dbspace1 -o 0 -s 1000000 -e 2000 -n 1000 可使用 Oncheck -pt 和 oncheck -pT显示表空间 tblspace 的第一个和下一个扩展数据块大 小。 如果正在使用数据复制并且在主数据库服务器上创建了数据库空间,那么第一个和下一个 扩展数据块大小将通过 ADDCHK 日志记录传递到辅助数据库服务器。 有关 onspaces 实用程序、oncheck 命令以及为表空间 tblspace 指定第一个和下一个扩展 数据块大小的更多信息,请参阅《GBase 8s 管理员参考》。 创建具有非缺省页大小的数据库空间 如果需要的密钥长度比缺省页大小可提供的更长,那么可以指定标准或临时数据库空间的 页大小。 根数据库空间为缺省页大小。如果要指定页大小,该大小必须为缺省页大小的整数倍,且 不能超过 16 KB。 对于具有足够存储空间的系统,较大页大小的性能优势包括: 减少 B 型树索引的深度(甚至对于较小的索引键)。 减少检查点时间(通常出现在使用较大页大小时)。 其他的性能优势还体现在您可以: 将当前跨多个页(大小为缺省页大小)的长行分组到同一页上。 定义临时表的不同页大小,这样临时表具有单独的缓冲池。 使用 BUFFERPOOL 配置参数可创建与数据库空间的页大小相对应的缓冲池。(您可能想 要执行此操作来实现一种“专用缓冲池”。) GBase 8s 管理员指南 南大通用数据技术股份有限公司 - 200 - 一个表可在一个数据库空间中,而该表的索引可在另一个数据库空间中。这些分区的页大 小可以不同。 如果想要为数据库空间指定页大小,请指向以下任务: 1. 请运行 onmode -BC 2命令来启用大块方式。 缺省情况下,首次初始化或重新启动 GBase 8s 时,将启动 GBase 8s,并启用大块 方式。有关 onmode 实用程序的信息,请参阅《GBase 8s 管理员参考》。 2. 创建对应于数据库空间页大小的缓冲池。可使用 onparams实用程序或 BUFFERPOOL 配置参数。必须在创建数据库空间之前执行此操作。 如果创建的数据库空间其页大小没有对应的缓冲池,那么 GBase 8s 将使用在 onconfig 配置文件中定义的缺省参数自动创建缓冲池。 无法使多个缓冲池具体相同的页大小。 3. 创建数据库空间时,定义数据库空间的页大小。可使用 onspaces 实用程序或 ON-Monitor。有关更多信息,请参阅定义页大小。 例如,如果创建页大小为 6 KB 的数据库空间,那么必须创建大小为 6 KB 的缓冲池。如 果没有为新的缓冲池指定页大小,那么 GBase 8s会将操作系统缺省页大小(在大多数 UNIX™ 平台上为 2 KB)用作缓冲池的缺省页大小。 提示: 如果使用非缺省页大小,可能需要增大物理日志的大小。如果对非缺省页执行许多更新,那么可 能需要将物理日志大小增大 150% 到 200%。要调整物理日志,可能需要进行一些试验。可根据物理日志 触发器检查点的填充频率来按需调整物理日志的大小。 为非缺省页大小创建缓冲池 创建缓冲池时,可使用 BUFFERPOOL 配置参数或 onparams 实用程序来指定有关缓冲区 的信息(包括其大小)、指定缓冲池中 LRUS 的数量、指定缓冲池中缓冲区的数量,以及 的 lru_min_dirty 和 lru_max_dirty值。 使用 BUFFERPOOL 配置参数指定此信息。 BUFFERPOOL 配置参数由 onconfig.std 文件中的两行组成。 在 UNIX™ 系统上,这些行是: BUFFERPOOL default,buffers=10000,lrus=8,lru_min_dirty=50.00,lru_max_dirty=60.50 BUFFERPOOL size=2K,buffers=50000,lrus=8,lru_min_dirty=50,lru_max_dirty=60 第一行指定了使用的缺省值,这些值是当您创建的数据库空间的页大小没有对应在启动数 据库服务器时创建的缓冲池时被使用的。缺省行之后的以下行指定了缓冲池的数据库服务 器缺省值。 这些值以数据库服务器的缺省页大小为依据。 使用 onspaces 实用程序添加具有不同页大小的数据库空间时, 或者使用 onparams 实用程 序添加新的缓冲池时,将向 onconfig 文件的 BUFFERPOOL 配置参数添加一个新行。每 个缓冲池的页大小必须为您操作系统缺省页大小的倍数。以下示例显示了添加到 onconfig 文件中的第三个 BUFFERPOOL 行: GBase 8s 管理员指南 南大通用数据技术股份有限公司 - 201 - BUFFERPOOL default,buffers=10000,lrus=8,lru_min_dirty=50.00,lru_max_dirty=60.50 BUFFERPOOL size=2K,buffers=50000,lrus=8,lru_min_dirty=50,lru_max_dirty=60 BUFFERPOOL size=6K,buffers=3000,lrus=8,lru_min_dirty=50,lru_max_dirty=60 BUFFERPOOL 行中的字段不区分大小写,所以您可以指定 lrus、Lrus 或 LRUS)。这些 字段可按任何顺序显示。 如果没有为新的缓冲池指定页大小,那么 GBase 8s会将操作系统缺省页大小用作缓冲池的 缺省页大小。 如果 buffers 的值为零 (0),或者在 BUFFERPOOL 配置参数中缺少 buffers 的值,那么 GBase 8s 不会创建指定页大小的缓冲池。 重要: 使用BUFFERPOOL 配置参数输入的信息将取代先前使用不推荐的参数指定的任何信息。有关不 推荐的参数的更多信息,请参阅附录,其中包含《GBase 8s 管理员参考》中已终止的配置参数的信息。 下表为您使用 BUFFERPOOL 配置参数或 onparams 实用程序指定的值提供了说明。 字段 解释 值范围 size 指定页面中后跟后缀 K 的 KB 数。 大小可在 2K 或 4K 至 16 K 之间变化。2K 为缺省值。 buffers 指定页大小缓冲区的数量。 这是数据库服务器用户线程代表客户机 应用程序用于磁盘 I/O 的共享内存缓 冲区的最大数目。数据库服务器所需的 缓冲区数取决于应用程序。 例如,如果数据库服务器用了 90% 的时 间访问了 15% 的应用程序数据,那么必 须分配足够的缓冲区以保留该 15% 的 数据。增加缓冲区数量可提高系统性能。 缓冲区空间所需的物理内存百分比取决 于计算机上可用的内存量,以及用于其 他应用程序的内存量。对于具有大量可 用物理内存(4 千兆字节或以上)的系 统,缓冲区空间可达到物理内存的 90%。 对于可用物理内存量较小的系统,缓冲 区空间的范围可以为物理内存的 20% 到 25%。 必须在设置缓冲区空间 (buffers *system_page_size) 后计算所有其他 的共享内存参数。 对于 UNIX 上的 32 位平台 页大小等于 2048 字 节:100 到 1,843,200 个缓 冲区 (1843200 = 1800 * 1024) 页大小等于 4096 字 节: 100 到 921,600 个缓冲 区 (921,600 = ((1800 * 1024)/4096) * 2048 ) 对于 64 位平台:100 到 2 31-1 个缓冲区 (对于 64 位平台的实 际值, 请参阅发行说明。 Solaris 上缓冲区的最 大数为 536,870,912。) lrus 在共享内存缓冲池中为页大小指定 LRU(最近最少使用的)队列的数目。 可调整 LRUS、lru_min_dirty 和 lru_max_dirty 值以控制共享内存缓冲 1 到 128 GBase 8s 管理员指南 南大通用数据技术股份有限公司 - 202 - 字段 解释 值范围 区每隔多少时间清空到磁盘一次。 将 LRUS 设置得过高可能导致页清除程 序活动过多。 lru_min_dirty 指定已修改的页占 LRU 队列的百分 比,达到该百分比时页清除将不再是必 需的。在某些情况下,页清除程序可能 会超出该点继续清除。 用于清空检查点之间缓冲池的 LRU 值 对于检查点性能不是特别重要。 lru_min_dirty 值通常仅对于维持足够 数量的干净页以供替换而言是必要的。 通过设置 LRU 清空参数以将 lru_min_dirty 设置为 70 来启动。 有关更多信息,请参阅用于清空检查点 之间缓冲池的 LRU 值。 0 到 100(允许小数值) 如果超过值的范围指定参数, 那 么缺省值将被设置为 50.00%。 lru_max_dirty 指定已修改页占 LRU 队列的百分比, 达到该百分比时将清除队列。 用于清空检查点之间缓冲池的 LRU 值 对于检查点性能不是特别重要。 lru_max_dirty 值通常仅在维持足够数 量的干净页以供替换时才显得必要。通 过设置 LRU 清空参数以将 lru_max_dirty 设置为 80 来启动。 有关更多信息,请参阅用于清空检查点 之间缓冲池的 LRU 值。 0 到 100(允许小数值) 如果超过值的范围指定参数, 那 么缺省值将被设置为60.00%。 如果数据库服务器处于联机、静默或管理方式,那么您还可以使用 onparams 实用程序添 加不同大小的新缓冲池。使用 onparams 实用程序时,指定的信息将自动传输到 onconfig 文件的,并且会使用 BUFFERPOOL 关键字指定新值。不能通过编辑onconfig.std 文件更 改值。 当您使用 onparams 实用程序时,请如下指定信息: onparams -b -g -n -r -x -m 例如: onparams -b -g 6 -n 3000 -r 2 -x 2.0 -m 1.0 这添加了 3000 个大小为 6K 字节的缓冲区,每个缓冲区都具体 2 个 LRUS 并且 lru_max_dirty 被设置为 2%,而且lru_min_dirty 被设置为 1%。 GBase 8s 管理员指南 南大通用数据技术股份有限公司 - 203 - 有关 onparams 实用程序的更多信息,请参阅《GBase 8s 管理员参考》。 建议: 将 PHYSBUFF 配置参数至少设置为 128 KB。如果数据库服务器已配置为使用 RTO_SERVER_RESTART,请将 PHYSBUFF 配置参数至少设置为 512 KB。将 PHYSBUFF 设置为较低 的值可能会影响事务性能以及/或者导致服务器初始化期间出现性能警告。 LG_ADDBPOOL 日志记录和 sysbufpool 系统目录表包含有关每个缓冲池的信息。 当数据库服务器正在运行时添加的缓冲池将会进入虚拟内存而不是常驻内存中。根据正在 使用的内存的可用性, 仅在启动时在 onconfig 文件中指定的那些缓冲池条目会进入常驻内 存。 调整现有缓冲池大小 如果必须调整现有缓冲池的大小,必须关闭数据库服务器。然后在 onconfig 文件中更改缓 冲池的大小。 删除现有缓冲池 如果必须删除现有缓冲池,必须关闭数据库服务器。然后在 onconfig 文件中删除缓冲池。 定义页大小 可以使用 onspaces -k 选项或 ON-Monitor 以定义页大小。 如下所示设置页大小(以 KB 为单位): onspaces -c -d DBspace [-t] [-k pagesize] -p path -o offset -s size [-m path offset] 根数据库空间为缺省页大小。 如果指定页大小,页大小必须是缺省页大小的倍数,且不能超过 16 KB。 如果使用 ON-Monitor 创建数据库空间, 请确保在页大小字段中输入页大小 (以 KB 计) 。 通过使用直接 I/O 提高熟文件数据库空间的性能 在 UNIX™ 系统上,可通过使用直接 I/O 提高用于数据库空间块的熟文件的性能。 直接 I/O 必须可用并且文件系统必须支持用于数据库空间块的页大小的直接 I/O。 可以使用 GBase 8s 将原始设备或熟文件用于数据库空间块。通常,熟文件会较慢,因为 存在文件系统提供的额外开销和缓存。直接 I/O 绕过文件系统缓冲区的使用,因此对磁盘 的读写效率更高。使用 DIRECT_IO 配置参数指定直接 I/O。如果文件系统支持用于数据 库空间块的页大小的直接 I/O 并使用直接 I/O,那么熟文件的性能可能接近用于数据库空 间块的原始设备的性能。 要通过使用直接 I/O 提高熟文件数据库空间的性能,请执行以下操作: 1. 验证您是否具有直接 I/O 且文件系统是否对用于数据库空间块的页大小支持直接 I/O。 2. 通过将 DIRECT_IO 配置参数设置为 1 启用直接 I/O。 如果有 AIX® 操作系统,那么还可以为 GBase 8s 启用并行 I/O,以在对使用熟文件的块 执行读写时将其与直接 IO 一起使用。 GBase 8s 管理员指南 南大通用数据技术股份有限公司 - 204 - 有关使用直接 IO 或并发 IO 的更多信息,请参阅《GBase 8s 性能指南》。 将多个指定分段存储在单个数据库空间 对于使用基于表达式的分布方案或循环分布方案的分段表,可以创建可位于单个数据库空 间中的指定分段。 对于使用基于表达式、时间间隔、列表或循环法的分布方案的分段表,可以创建可位于单 个数据库空间中的指定分段。 将多个表或索引段存储到一个数据库空间中时的查询性能要优于将每个段存储到不同数据 库空间中时的查询性能,并且简化了数据库空间的管理。 假设您要使用基于表达式的分布方案创建分段表,该分布方案中的每个表达式都会指定放 置在特定分段中的数据集。您可决定使用某个数据库空间中某个月的 数据以及其他的 11 个数据库空间中的 11 个月的数据分割表中的数据。然而,如果要对所有年度数据仅使用 一个数据库空间,那么可以创建指定分段,使每个月的数据存储在一个数据库空间中。 如果创建具有指定分段的分段表,sysfragments 系统目录中每行的分区列中都会包含分段 名称。 如果创建没有指定分段的分段表, 那么数据库空间的名称位于分区列中。 sysfragments 目录中的标志列告诉您分段存储方案中是否具有指定分段。 可以创建具有指定分段的表和索引,并且可以使用 PARTITION 关键字和分段名称创建、 删除和修改指定分段。 要创建具有指定分段的分段表,请如以下示例中所示使用 SQL 语法: CREATE TABLE tb1(a int) FRAGMENT BY EXPRESSION PARTITION part1 (a >=0 AND a < 5) IN dbspace1, PARTITION part2 (a >=5 AND a < 10) IN dbspace1 ... ; 如果创建的表或索引分段包含指定分段,那么在使用 ALTER FRAGMENT 语句时必须使 用包含指定分段名称的语法,如以下示例中所示: ALTER FRAGMENT ON TABLE tb1 INIT FRAGMENT BY EXPRESSION PARTITION part_1 (a >=0 AND a < 5) IN dbspace1, PARTITION part_2 (a >=5 AND a < 10) IN dbspace1; ALTER FRAGMENT ON INDEX ind1 INIT FRAGMENT BY EXPRESSION PARTITION part_1 (a >=0 AND a < 5) IN dbspace1, PARTITION part_2 (a >=5 AND a < 10) IN dbspace1; 按此示例中所示,可使用 PARTITION BY EXPRESSION 子句替代 CREATE TABLE、 CREATE INDEX 和 ALTER FRAGMENT ON INDEX 语句中的 FRAGMENT BY EXPRESSION 子句: GBase 8s 管理员指南 南大通用数据技术股份有限公司 - 205 - ALTER FRAGMENT ON INDEX idx1 INIT PARTITION BY EXPRESSION PARTITION part1 (a <= 10) IN idxdbspc1, PARTITION part2 (a <= 20) IN idxdbspc1, PARTITION part3 (a <= 30) IN idxdbspc1; 使用 ALTER FRAGMENT 语法将不具有指定分段的分段表和索引更改为具有指定分段的 表和索引。以下语法显示了如何可将具有多个数据库空间的分段表转换为具有指定分段的 分段表: CREATE TABLE t1 (c1 int) FRAGMENT BY EXPRESSION (c1=10) IN dbs1, (c1=20) IN dbs2; ALTER FRAGMENT ON TABLE t1 MODIFY dbs2 TO PARTITION part_3 (c1=20) IN dbs1 以下语法显示了如何可将分段索引转换为包含指定分段的索引: CREATE TABLE t1 (c1 int) FRAGMENT BY EXPRESSION (c1=10) IN dbs1, (c1=20) IN dbs2, (c1=30) IN dbs3 CREATE INDEX ind1 ON t1 (c1) FRAGMENT BY EXPRESSION (c1=10) IN dbs1, (c1=20) IN dbs2, (c1=30) IN dbs3 ALTER FRAGMENT ON INDEX ind1 INIT FRAGMENT BY EXPRESSION PARTITION part_1 (c1=10) IN dbs1, PARTITION part_2 (c1=20) IN dbs1, PARTITION part_3 (c1=30) IN dbs1, 请参阅《GBase 8s 性能指南》以获取有关分段存储的更多信息,包括分段存储指南、分段 索引的过程、创建具有指定分段的连接和拆离索引的过程,以及用于创建包含指定分段的 连接和拆离索引的 SQL 语句的示例。 请参阅 《GBase 8s SQL 指南: 语法》 以获取更多的语法详细信息, 包括 GRANT FRAGMENT 和 REVOKE FRAGMENT 语句中有关指定分段的信息以及有关使用 ALTER FRAGMENT 语句的 DROP、DETACH 和 MODIFY 子句的详细信息。 创建临时数据库空间 要指定分配临时文件的位置,请创建临时数据库空间。 要定义临时数据库空间,请执行以下操作: 1. 使用带 -c -d -t 选项的 onspaces 实用程序。 有关更多信息,请参阅创建使用缺省页大小的数据库空间。 2. 使用 DBSPACETEMP 环境变量或配置参数可指定数据库服务器可用于临时存储 器的数据库空间。 DBSPACETEMP 配置参数可包含非缺省页大小的数据库空间。虽然可在 DBSPACETEMP 的参数列表中包含页大小不同的各个数据库空间,但数据库服务器只会使用页大小 和所列出的第一个数据库空间的页大小相同的数据库空间。 GBase 8s 管理员指南 南大通用数据技术股份有限公司 - 206 - 有关 DBSPACETEMP 的更多信息,请参阅 GBase 8s 管理员参考 中有关配置参数的 主题。 3. 如果创建了多个临时数据库空间, 那么这些数据库空间必须位于不同磁盘上以优化 I/O。 如果要创建临时数据库空间,那么必须通过设置 DBSPACETEMP 配置参数和/或 DBSPACETEMP 环境变量让数据库服务器知道存在新创建的临时数据库空间。 数据库服务 器直至您采取以下两个步骤之后才开始使用临时数据库空间: 设置 DBSPACETEMP 配置参数和/或 DBSPACETEMP 环境变量。 重新启动数据库服务器。 以下示例显示了如何创建名为 temp_space 的 5 MB 临时数据库空间,偏移量为 5000 KB: onspaces -c -t -d temp_space -p /dev/raw_dev1 -o 5000 -s 5120 有关更多信息,请参阅临时数据库空间。 磁盘空间不足时应执行的操作 当您正在创建的数据库空间的初始块是熟文件(在 UNIX™ 上)时,数据库服务器会验证 磁盘空间是否足够用于该初始块。如果块大小大于磁盘上的可用空间,将显示消息且不会 创建任何数据库空间。但是,未除去数据库服务器为初始块创建的熟文件。它的大小表示 在您创建数据库空间之前文件系统上剩余的空间。 除去该文件以回收该空间。 向数据库空间或 BLOB 空间添加块 当数据库空间、BLOB 空间或智能大对象空间将满或需要更多磁盘空间时添加块。 重要: 新添加的块及其相关联的镜像(如果存在一个镜像)立即可用。如果您正向已镜像的存 储空间添加块,那么必须还添加镜像块。 要使用 onspaces 添加块,请执行以下操作: 1. 在 UNIX™ 上,必须以用户 gbasedbt 或 root 身份登录来添加块。 2. 请确保数据库服务器处于联机、管理或静默方式,或快速恢复方式的清除阶段。 3. 按分配磁盘空间中所述,为块分配磁盘空间。 4. 要添加块,请使用 onspaces 的 -a 选项。 如果存储空间已镜像,那么必须为主块和镜像块都指定路径名。 如果指定了不正确的路径名、偏移量或大小,那么数据库服务器不会创建块,并且 会显示错误消息。另见磁盘空间不足时应执行的操作。 5. 在创建块之后, 必须对根数据库空间和包含该块的数据库空间、 BLOB 空间或智能 大对象空间执行 0 级备份。 以下示例将 10 兆字节的镜像块添加至 blobsp3。对主块和镜像块都指定了 200 KB 的偏 移量。如果您不添加镜像块,那么可省略 -m 选项。 onspaces -a blobsp3 -p /dev/raw_dev1 -o 200 -s 10240 -m /dev/raw_dev2 200 下一个示例以 5200 KB 的偏移量向数据库空间 dbspc3 添加 5 MB 的原始磁盘空间块。 GBase 8s 管理员指南 南大通用数据技术股份有限公司 - 207 - onspaces -a dbspc3 \\.\e: -o 5200 -s 5120 还可以定义当应用程序需要更多存储空间时,GBase 8s 可用于自动扩展块大小的信息。如 果有可扩展块,那么无需添加新块或耗费时间来尝试确定哪种存储空间(数据库空间、临 时数据库空间、智能大对象空间、临时智能大对象空间或 BLOB 空间)将耗尽空间,以及 何时将耗尽空间。 当启用 CHUNK_OVERLAP_PROTECTION 配置参数时,数据库服务器将确保新块不会与 其他块重叠。如果服务器发现块重叠,新块添加操作将失败。 使用 ON-Monitor 添加块 (UNIX™) 可以使用 ON-Monitor 将块添加到数据库空间。 要向数据库空间添加块,请遵循以下指示信息: 1. 选择添加块 > 数据库空间选项。 2. 使用 Enter 键或方向键来选择将接收新块的 BLOB 空间或数据库空间,并按 CTRL-B 或 F3 键。 3. 下一屏幕指示是否对 BLOB 空间或数据库空间制作镜像。如果是,那么在镜像字 段中输入 Y。 4. 如果您要向其中添加块的数据库空间是临时数据库空间,请在临时字段中输入 Y。 5. 如果您指示对数据库空间或 BLOB 空间制作镜像,那么主块和镜像块都必须要指 定。 在主块部分的完整路径名字段中输入新主块的完整路径名。 6. 在偏移量字段中指定偏移量。 7. 在大小字段中输入块的大小(以 KB 计)。 8. 如果要对该块制作镜像, 请在屏幕的镜像块部分中输入完整路径名、 大小和 (可选) 偏移量。 重命名数据库空间 如果您是用户 gbasedbt 或者具有 DBA 特权, 并且数据库服务器处于静默方式 (不是其他 方式),那么可使用 onspaces 实用程序来重命名数据库空间。 要重命名数据库空间,请使用以下 onspaces 实用程序命令: onspaces -ren old_dbspace_name-n new_dbspace_name 可重命名标准数据库空间和所有其他空间,包括 BLOB 空间、智能 BLOB 空间、临时空 间和外部空间。然而,您无法重命名任何关键数据库空间,比如根数据库空间或包含物理 日志的数据库空间。 可重命名数据库空间和智能大对象空间: 启用了 Enterprise Replication 时 启动数据复制时,在主数据库服务器上 无法在辅助数据库服务器上或者当辅助数据库服务器为 Enterprise Replication 配置的一部 分时重命名数据库空间和智能大对象空间 GBase 8s 管理员指南 南大通用数据技术股份有限公司 - 208 - 重命名数据库空间操作仅更改数据库空间名称;它不会重新组织数据。 重命名数据库空间命名更新所有存储该名称位置处的数据库空间名称。 这包含磁盘上 的保 留页、系统目录、ONCONFIG 配置文件和内存内数据结构。 重要: 重命名数据库空间后,对重命名的根数据库空间和根数据库空间执行 0 级归档。有关信息,请参 阅《GBase 8s 备份与复原指南》。 重命名数据库空间之后可能需要执行的其他操作 如果重命名数据库空间,必须重新写入和重新编译引用旧数据库空间名称的所有存储过程 代码。 例如,如果您的存储过程包含 ALTER FRAGMENT 关键字并引用了数据库空间名 称,那么必须重新写入和重新编译该存储过程。 如果您重命名在 DATASKIP 配置参数中指定的数据库空间,那么您必须在重命名数据库 空间后手动更新 DATASKIP 配置参数。