启动数据库

交互式启动

交互式启动时需要使用STARTUP命令。

语法

startup ::=

参数

filename

PFILE参数用filename指定数据库的参数文件(数据文件、日志文件等)所在的路径。如果不指定,则由环境变量SZ_OSCAR_HOME给出。如果该环境变量不存在,则路径与数据库服务器可执行文件所在目录相同。

NOMOUNT

启动一个实例,启动一实例的处理包含分配一个数据库信息使用的内存共享区和后台线程的建立。实例起动的执行先于该实例装载一数据库。如果仅启动实例,则没有数据库与内存储结构和线程相联系。

MOUNT

装载指定的数据库。装配数据库是将一数据库与已启动的实例相联。如果不指定dbname,则使用默认的数据库。默认的数据库可以通过命令设置,详见 SET DEFAULT DATABASE 命令。

OPEN

打开一数据库,打开一数据库是使数据库可以进行正常数据库操作的处理。当一数据库打开,所有用户可连接到该数据库来存取其信息。

READ ONLY

表示以只读方式启动数据库。

READ WRITE

表示以读写方式启动数据库。

注解

  • 将以OPEN READ WRITE方式打开默认的数据库。

关于该指令的更具体的说明,请参考《神通数据库 SQL语言参考手册》。

命令行启动

命令行启动时可以指定各种命令行参数:

  • -o normal 表示正常模式启动
  • -o upgrade 表示升级模式启动
  • -o dryupgrade 表示升级演习模式启动
  • -p file 表示PFILE = 'file'
  • -r 表示READ ONLY
  • -d dbname 表示启动dbname数据库

上述参数的意义可以与STARTUP命令中的对应起来,这里不再解释。

另外,命令行还可以有以下选项:

  • -o ni 表示非交互模式启动(NonInteractive),用于启动服务
  • -e "string" 表示执行string中的语句之后退出系统
  • -h OSCARhome 通过参数设置环境变量SZ_OSCAR_HOME

其中-o ni选项可以与-d dbname选项一起使用,见下面的说明。

DBA管理工具启动

在启动了OSCARAgent服务的情况下(默认会安装并自动启动),可以通过神通数据库管理工具在本地或者远程启动数据库系统(远程启动需要密码,默认也为szoscar55),但这种启动方式只能启动当前数据库,而不能启动非当前数据库。

服务方式启动

  • Windows NT-based 操作系

在把神通数据库安装成服务之后,就可以在服务管理器中选择启动。也可以通过命令行,使用-o ni选项启动服务,此时可以跟-d dbname指定要启动的数据库。这时只能以OPEN READ WRITE方式打开数据库。

  • Linux操作系统

在Linux系统下安装神通数据库服务器后,系统会自动创建服务脚本:/etc/init.d/OSCARd,该脚本会在Linux操作系统启动后自动运行神通数据库服务器。同样,用户也可以通过命令行,使用-o ni选项启动服务,此时可以跟-d dbname指定要启动的数据库。这时只能以OPEN READ WRITE方式打开数据库。

注解

如果以非root用户启动数据库导致访问某些文件权限不够,会报出没有权限读写xxx文件,请尝试使用root用户启动数据库。

神通数据库启动过程

在以上述某种方法启动之后,系统首先做各种初始化工作,包括初始化各种系统资源、启动一些定时执行的任务、读取配置文件信息等。随后,系统将根据用户指定的启动方式、数据库名等信息,OPEN / MOUNT / NOMOUNT该数据库。随后的过程,将根据启动方式做不同的处理:

  1. NOMOUNT:启动一个实例, 启动一实例的处理包含分配一个数据库信息使用的内存共享区和后台线程的建立。实例起动的执行先于该实例装载一个数据库。如果仅启动实例,则没有数据库与内存储结构和线程相联系。
  2. MOUNT数据库:装载指定的数据库,装配数据库是将一个数据库与已启动的实例相联。如果不指定dbname,则使用默认的数据库。
  3. OPEN数据库。将首先进行各种系统表Cache的初始化,在执行一些WARM UP脚本之后,系统将启动一个用于处理系统退出请求的任务,然后打开监听端口,进入监听状态,处理各种用户连接请求。

另外,如果系统上次非正常退出,那么在启动时将进行数据恢复工作,这可能会导致等待。

数据库启动方式

若启动神通数据库时指定了READ ONLY参数,则以只读方式启动数据库,不能对数据库有写操作。否则数据库就是可读写的。

启动步骤

启动数据库并使它可用有三步操作:

  1. 启动一个实例

启动一个实例的处理包含分配一个数据库信息使用的内存共享区和后台线程的建立。实例启动的执行先于该实例装载一个数据库。如果仅启动实例,则没有数据库与存储结构和进程相联系。

在这个状态下,可以创建数据库。

  1. 装载一个数据库

装配数据库是将一个数据库与已启动的实例相联。当实例安装一个数据库之后,该数据库保持关闭,仅DBA可存取。

在这个状态下,允许DBA做一些专门的维护操作,比如,增加日志文件组等任务只能当数据库在mount状态时执行。

  1. 打开一个数据库

打开一个数据库是使数据库可以进行正常数据库操作的处理。当一个数据库打开所有用户可连接到该数据库用存取其信息。在数据库打开时,数据文件和日志文件也被打开。

针对不同需求的启动实例

假设默认情况下数据库名为 OSRDB ,下面将根据不同的情形列出一些启动的例子。

  1. 装载数据库
  • 交互式方法
STARTUP MOUNT;
  1. 最简单的启动方法
  • 交互式方法
STARTUP;
  • 命令行方法
OSCAR.exe -o normal

注解

上述两种启动方法相当于交互式启动命令 "STARTUP OPEN READ WRITE OSRDB"。

  • 服务启动方法

在NT-based操作系统中,通过服务管理器找到神通数据库对应的服务,启动即可。

  1. 以可读写的方式启动指定数据库(以库名db1为例)
  • 交互式方法
STARTUP OPEN db1;
  • 命令行方法
OSCAR.exe -o normal -d db1
  1. 以只读的方式启动指定数据库(以库名db1为例)
  • 交互式方式
STARTUP OPEN READ ONLY db1;
  • 命令行方法
OSCAR.exe -o normal -r -d db1

注解

以只读方式启动数据库后不能对数据库进行写操作。