在创建SinoDB数据库时需要注意以下几点:
一、建库注意事项:
1. 选择合适的数据库名称
- 
数据库名称对于数据库服务器实例必须是唯一的
 - 
最多128个字符;
 - 
合法的名字包括:
字母:A 至 Z, a 至 z
数字:0 至 9
下划线 (_) 
2. 确定数据库日志模式
数据库日志用来记录内存中逻辑日志缓存区中的事务信息,然后刷新逻辑日志缓冲区至磁盘上的逻辑日志文件中。我们需要为数据库选择合适的日志模式。有以下4种类型的日志模式:
①No Logging
- 
UPDATE、 INSERT、 DELETE 记录不会写入逻辑日志;
 - 
DDL操作与数据库管理活动仍然会写入逻辑日志;
 - 
不支持事务。
 
②Unbuffered Logging
- 所有语句都会写入逻辑日志,并且通过COMMIT WORK语句随后刷新到磁盘上;
 - 由于每一次提交事务都会导致缓冲区被刷新到磁盘上,所以增加了磁盘I/O。
 
③Buffered Logging
- 所有语句都会写入逻辑日志,逻辑日志缓冲区变满时,内存中的逻辑日志才会被刷新到磁盘中的逻辑日志中。
 - 优点是减少执行的磁盘I/O数量,提高数据库性能。
 - 缺点是万一系统崩溃,逻辑日志缓冲内的所有信息都无法写入磁盘中,会造成数据丢失。
 
④MODE ANSI
- MODE ANSI 数据库总是使用unbuffered logging且日志不能被禁用。
 - 所有 SQL 语句都暗含在事务中,所以可以不用写BEGIN WORK;
 - 所有者命名是强制性的(必须完整写informix.table);
 - MODE ANSI 数据库的缺省隔离级别是repeatable read,会影响并行访问数据的性能;
 - 缺省表和同义词特权不会授予用户 PUBLIC;
 - 将数据库设置为 ANSI模式后,就不能再转换为其他模式。
 
3. 数据库所在的dbspace
当创建一个数据库时,需要为数据库指定一个 dbspace。这个 dbspace 也是数据库中其他表的缺省 dbspace。 如果没有指定数据库dbspace,数据库则默认建在root dbspace中,将不利于数据库的管理,也会影响数据库实例的性能。
4. 数据库使用的字符集
在建库之前,需要确定数据库所采用的字符集。SinoDB数据库默认的字符集为en_US.8859-1。在创建数据库之前,先通过环境变量设置数据库字符集,再进行建库操作:
export DB_LOCALE=en_US.8859-1
export CLIENT_LOCALE=en_US.8859-1
二、建库示例:
- 在 dbspace db_dbs 中创建一个no logging数据库
 
create database db in db_dbs;
- 在 dbspace db_dbs 中创建unbuffered logging数据库
 
create database db in db_dbs with log;
- 在 dbspace db_dbs 中创建buffered logging数据库
 
create database db in db_dbs with buffered log;
- 在 dbspace db_dbs 中创建MODE ANSI数据库
 
create database db in db_dbs with log mode ansi;
三、更改数据库的日志模式
可以使用 ondblog 或 ontape 来添加或更改日志记录。然后使用 ON-Bar 或 ontape 来备份数据。
1. ontape更改数据库日志模式
- 将数据库db转为no logging模式,创建0级备份
 
ontape –s –L 0 –N db
- 将数据库db转为unbuffered logging模式,创建0级备份
 
ontape –s –L 0 –U db
- 将数据库db转为buffered logging模式,创建0级备份
 
ontape –s –L 0 –B db
*将数据库db转为MODE ANSI模式,创建0级备份
ontape –s –L 0 –A db
2. ondblog更改数据库日志模式
使用ondblog更改数据库模式,需要在0级备份后才生效。
- 将数据库db转为no logging模式
 
ondblog nolog db
- 将数据库db转为unbuffered logging模式
 
ondblog unbuf db
- 将数据库db转为buffered logging模式
 
ondblog buf db
*将数据库db转为MODE ANSI模式
ondblog ansi db
四、sysmaster表:sysdatabases与sysdbslocale
1. sysdatabase
sysdatabases 表会为每一个创建的数据库保存一行信息,可以该表来查看数据库的日志模式,是否大小写敏感等信息。
[informix@vm84145 ~]$ dbaccess sysmaster -
Database selected.
> select * from sysmaster:sysdatabases;
name            sysmaster
partnum         1048580
owner           informix
created         01/31/2023
is_logging      1
is_buff_log     0
is_ansi         0
is_nls          0
is_case_insens  0
flags           -12279
name            testdb02
partnum         9437197
owner           informix
created         03/27/2023
is_logging      1
is_buff_log     0
is_ansi         0
is_nls          0
is_case_insens  0
flags           -12287
name            sysuser
partnum         1048951
owner           informix
created         02/14/2022
is_logging      1
is_buff_log     0
is_ansi         0
is_nls          0
is_case_insens  0
flags           -12255
name            sysadmin
partnum         1048694
owner           informix
created         02/14/2022
is_logging      1
is_buff_log     0
is_ansi         0
is_nls          0
is_case_insens  0
flags           -12255
name            testdb
partnum         9437696
owner           informix
created         06/16/2022
is_logging      1
is_buff_log     1
is_ansi         0
is_nls          0
is_case_insens  0
flags           -12285
name            testdb3
partnum         9437449
owner           informix
created         10/18/2022
is_logging      1
is_buff_log     0
is_ansi         0
is_nls          0
is_case_insens  0
flags           -12287
name            sysutils
partnum         1049126
owner           informix
created         01/31/2023
is_logging      1
is_buff_log     0
is_ansi         0
is_nls          0
is_case_insens  0
flags           -12255
2. sysdbslocale
sysdbslocale 表保存每个数据库的字符集信息。
> select * from sysdbslocale;
dbs_dbsname  sysmaster
dbs_collate  en_US.819
dbs_dbsname  testdb02
dbs_collate  zh_CN.57372
dbs_dbsname  sysuser
dbs_collate  en_US.819
dbs_dbsname  sysadmin
dbs_collate  en_US.819
dbs_dbsname  testdb
dbs_collate  zh_CN.57372
dbs_dbsname  testdb3
dbs_collate  en_US.819
dbs_dbsname  sysutils
dbs_collate  en_US.819