我有一个接近 4GB 文件系统限制大小的 firebird 数据库。如何将单个数据库文件拆分为多个文件?
1 回答
对于单个文件数据库,Firebird 数据库可以跨越数 TB。InterBase 6.0 手册中提到了 4GB 的限制,但该限制仅适用于不支持更大文件的文件系统。据我所知,几乎所有文件系统都支持比这更大的文件(一个值得注意的例外当然是 FAT(32))。另请参阅Firebird 数据库限制。
如果确实需要拆分文件,则需要添加辅助文件。有两种方法可以解决这个问题:
1)ALTER DATABASE
用于添加附加文件:
ALTER DATABASE ADD FILE '<path-to-file>' LENGTH <number> PAGES
STARTING AT PAGE <number>
请注意,指定STARTING AT PAGE
已创建的数字只会在分配下一页时创建文件。所以它不会从指定的页面开始,而是从<current page count>
+1开始。另见InterBase 6.0语言参考中的第22页(可从http://www.firebirdsql.org/en/reference-manuals/获得)或页面海伦·博里 (Helen Borrie ) 的《火鸟书》第238 - 240页。
2)(如果需要拆分现有数据库):备份数据库并恢复,同时指定多个文件和每个文件的大小:
gbak -C <backupfile> <file1> <maxsize of file1>
<file2> <maxsize of file2> .... <fileN>
对于您未指定大小的最后一个文件,它将增长直到达到文件系统限制(如果有),在这种情况下,您将需要添加额外的辅助文件,如上所述。另请参阅Interbase 6.0 Operations Guide的第 162 页(也可从http://www.firebirdsql.org/en/reference-manuals/获得)或The Firebird Book的第 825-827 页。
但正如我所说:在几乎任何(现代)文件系统上,4 GB 限制都不适用。