您好,我是小DAI,专注于数据库管理员相关的技术问答,请问有什么可以帮您?

sp_deviceattr

语法


sp_deviceattr  <logicalname>, <optname>, <optvalue>

参数

<logicalname>

是现有数据库设备的逻辑名称。该设备既可存储在操作系统文件上,也可以存储在原始分区上,但如果存储在原始分区上,dsync 设置将被忽略。

<optname>

要更改的属性的名称。有效值为 directio 或 dsync:

  • directio 允许 SAP ASE 服务器跳过操作系统的缓冲系统,直接将数据写入磁盘。SAP ASE 服务器将这些设备选项传递给 Backup Server,使 Backup Server 能够访问具有相应 directio 选项的数据库设备。

  • dsync 允许对设备的更新直接在存储介质上进行,或者由 UNIX 文件系统进行缓冲

    ⚠️

    directio 和 dsync 选项是互斥的;不能同时为两者指定“true”。

    <optvalue>

    可以是“true”或“false”。

    示例

    示例 1

    将名为“file_device1”的设备的 dsync 设置为打开:

    
    sp_deviceattr file_device1, dsync, true
    

    用法

    使用 sp_deviceattr 时,还存在一些其它注意事项:

  • 对于存储在 UNIX 文件上的数据库设备,dsync 确定对设备的更新是直接在存储介质上进行还是由 UNIX 文件系统进行缓冲。

    启用 dsync 时,可直接在物理存储介质上进行对数据库设备的写入操作,并且 SAP ASE 服务器可以在出现系统故障时恢复设备上的数据。

    当 dsync 关闭时,UNIX 文件系统可能会对数据库设备的写入进行缓冲。即使尚未修改物理介质,UNIX 文件系统仍可能将更新标记为已经完成。出现系统故障时,不能保证物理介质上已执行数据更新请求,并且 SAP ASE 服务器可能无法恢复数据库。

  • (仅限 UNIX)在原始设备上,不能通过 sp_deviceattr 存储过程将 directio 或 dsync 设置为 true。

    ⚠️

    对于 HPUX,只有 dsync 选项适用。

    此操作将返回如下所示的消息:

    a) You cannot set option dsync for raw device 'dev/raw/raw235'(不能设置原始设备 ‘dev/raw/raw235’ 的 dsync 选项)

    b) You cannot set attribute dsync for raw device 'myrawdisk1'(不能设置原始设备 ‘myrawdisk1’ 的 dsync 属性)

  • 使用 sp_deviceattr 更改 dsync 或 directio 设置后,重新启动 SAP ASE 服务器以使更改生效。

  • 如果为文件系统上的数据库设备禁用了 dsync 选项,sp_deviceattr 将显示一条警告消息。

  • 对于主设备文件,dsync 始终处于打开状态。不能用 sp_deviceattr 更改主设备文件的 dsync 设置。因此,不能为主设备设置 directio 选项。

  • 仅在出现系统故障且无需恢复设备上的数据库时,才能关闭 dsync 值。例如,对于只存储 tempdb 数据库的设备,可以考虑将 dsync 关闭。

  • SAP ASE 服务器将忽略存储在原始分区上的设备的 dsync 设置;不管 dsync 设置如何,都不会缓冲对这些设备的更新。

  • dsync 不能在 Windows 平台上使用。