【赵渝强老师】国产金仓数据库的数据库

b418

在金仓数据库中,一个数据库是数据库对象的集合。通常每个数据库对象属于并且只属于一个数据库。更准确地说,一个数据库是一个模式的集合,而模式包含表、函数等等各种数据库对象。因此数据库的完整层次应该包含如下组成部分:数据库服务器、数据库、模式、表或者某些其他对象类型,如存储过程、存储函数等等。当连接到数据库服务器时,客户端必须在它的连接请求中指定它要连接的数据库名,通过数据库实例来操作数据库中的对象。用户可能是在同一个数据库里,但可能在不同的模式中。视频讲解如下:

image.png
点击这里查看视频讲解:【赵渝强老师】国产金仓数据库的数据库

下面的步骤将查看金仓数据库中的数据库信息。
(1)使用ksql连接数据库实例。

$ ksql -U system -d kingbase
用户 system 的口令:
授权类型: 企业版.
输入 "help" 来获取帮助信息.

kingbase=# 

(2)查看已经存在的数据库实例。

kingbase=# \l

# 输出的信息如下:
                                        数据库列表
   名称    | 拥有者 | 字元编码 |  校对规则   |    Ctype    | ICU 排序 |     存取权限      
-----------+--------+----------+-------------+-------------+----------+-------------------
 kingbase  | system | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 |          | 
 security  | system | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 |          | 
 template0 | system | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 |          | =c/system        +
           |        |          |             |             |          | system=CTc/system
 template1 | system | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 |          | =c/system        +
           |        |          |             |             |          | system=CTc/system
 test      | system | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 |          | 
(5 行记录)

(3)查询现有数据库的集合,也可以查询系统表sys_database。

kingbase=# select datname from sys_database;

# 输出的信息如下:
  datname  
-----------
 test
 kingbase
 template1
 template0
 security
 scott
(6 行记录)

这里需要注意以下两点:

  • 创建数据库时实际上通过拷贝一个已有数据库进行工作的。在默认情况下,将拷贝名为template1的标准系统数据库。所以该数据库是创建新数据库的“模板”。如果为template1数据库增加对象,这些对象将被拷贝到后续创建的用户数据库中。这种行为允许对数据库中标准对象集合的进行修改。例如,如果把过程语言PL/Perl安装到template1中,那么在创建用户数据库后不需要额外的操作就可以使用该语言。
  • 系统里还有名为template0的第二个标准系统数据库。这个数据库包含和template1初始内容一样的数据,但只包含KingBase版本预定义的标准对象。在数据库集群被初始化之后,不应该对template0做任何修改。在创建数据库时通过指示使用template0取代template1进行拷贝,可以创建一个“纯净的”用户数据库,它不会包含任何template1中的站点本地附加物。

执行下面的语句可以查看当前已存在的数据库信息。

kingbase=# select oid,datname,datistemplate,datallowconn from sys_database;

# 输出的信息如下:
  oid  |  datname  | datistemplate | datallowconn 
-------+-----------+---------------+--------------
 14791 | test      | f             | t
 14792 | kingbase  | f             | t
     1 | template1 | t             | t
 14790 | template0 | t             | f
 14793 | security  | f             | t
 16384 | scott     | f             | t
(6 行记录)

其中有两个有用的标识:

  • datistemplate可以被设置来指示该数据库是不是要作为创建数据库的模板。如果设置了这个标志,那么该数据库可以被任何有createdb权限的用户克隆;如果没有被设置,那么只有超级用户和该数据库的拥有者可以克隆它。
  • 如果datallowconn为false,那么将不允许与该数据库建立任何新的连接。但已有的会话不会因为把该标志设置为false而被中止。

template0通常被标记为datallowconn = false来阻止对它的修改。template0和template1通常总是被标记为datistemplate = true。

posted @ 2025-12-25 09:26  赵渝强老师  阅读(2)  评论(0)    收藏  举报