当前位置:Linux教程 - Linux - Sybase SQL Anywhere数据库管理技巧

Sybase SQL Anywhere数据库管理技巧



        
    作者:蒙城、娄志勇、米嵩 

    Sybase SQL Anywhere数据库功能很强,结构也比较复杂。一般情况下,用户都是通过用PowerBuilder开发的应用程序界面来访问它。但应用程序固定的界面不能完全满足数据库管理员的特殊要求。这时,就需要用系统工具进行直接访问。

      案例环境:应用程序test,含三个SQL数据库文件:test1.db、test2.db、test3.db,存放在 C:\\test\\db下,可执行文件和动态链接库放在C:\\test\\exe下。

      同时启动多个后台数据库服务器进程
      Sybase SQL Anywhere可以同时启动多个后台数据库服务器进程,而每个进程又都可以至少控制一个SQL数据库,这大大方便了数据库的分类管理。

      操作方法是:

      1.开始→程序→MS-DOS方式→在命令行窗口里“C:\\test\\exe〉”提示符号下运行:dbstart -n db_server1。

      2.同样,打开第2个命令行窗口,键入:dbstart -n db_server2。

      这两条命令分别启动了名为db_server1、db_server2的数据库服务器进程,其中-n参数用来为进程命名。

      同时打开多个数据库
      在进行复杂的数据提取时,往往需要同时打开多个数据库。在下面的示例中,数据库服务器进程db_server1同时控制着数据库db_alias1(对应的物理数据库文件为C:\\test\\db\\test1.db)、db_alias2(对应的物理数据库文件为C:\\test\\db\\test2.db)。

      操作方法是:

      资源管理器→运行C:\\test\\exe\\scview.exe,打开SQL控制中心→“工具”选单→连接→弹出“SQL Anywhere Logon”数据库登录窗口→填入:用户标识:数据库管理员dba;口令:dba的口令;服务器进程名:db_server1;数据库名:为要打开的数据库任取一别名,这里是db_alias1;数据库文件:用“浏览”按钮选中物理数据库C:\\test\\db\\test1.db→点击OK按钮。这样就打开了第1个数据库db_alias1。

      为了打开第2个数据库,在SQL控制中心→选中数据库服务器db_server1图标→单击右键,弹出快捷选单→单击“启动数据库”项→弹出“启动SQL Anywhere数据库”窗口→在“With database name”文本框中填入要使用的数据库名db_alias2→在“Using database file”文本框中填入要使用的数据库文件名C:\\test\\db\\test2.db→点击“确定”按钮→选中db_alias2从右键选单中选“打开”→出现Logon界面→输入dba和口令→点击“确定”按钮。这样就打开了第2个数据库db_alias2。

      SQL命令工具的使用
      Sybase SQL Anywhere数据库包含了一个交互式SQL命令解释器----ISQL。有时,直接用SQL命令来操纵数据库,速度要比用Sybase图形界面工具高得多。

      1.操作方法是:选中要操作的数据库db_alias1→单击右键,弹出快捷选单→单击“打开ISQL”项→弹出ISQL界面,共有3个小窗口:数据窗口、状态窗口、命令窗口→在命令窗口里输入SQL命令,单击“执行”按钮,即可在“数据窗口”里显示命令结果,同时“状态窗口”也会显示一些系统提示信息。

      2.几个隐含功能:

      ●在“文件”选单中选“打开”,可以将事先编辑好的SQL命令过程调入,以批处理的方式执行。

      ●在“编辑”选单中选“插入”,可以看到当前数据库所包含的表的名称及其字段信息。

      ●在“命令”选单中选“重新调用”,可以看到历史命令列表,从中点取一个,ISQL自动将其粘贴进命令窗口等待编辑或执行,省去了重新录入的麻烦。

      数据库表的导出
      一个SQL Anywhere数据库往往包含上百个二进制格式的二维表。为了便于备份和管理,DBA经常需要将其导出存为文本格式。SQL Anywhere支持两种形式的数据库表导出:

      1.数据库停止状态下二维表的离线导出。这种形式的导出,比较安全完整,DBA可以在服务器比较空闲、无人使用数据库时进行。

      2.数据库正在运行时二维表的在线导出。这种形式的导出,DBA可以随时进行,便于为数据库的当前状态保存一个“快照”。

      操作步骤为:进入SQL控制中心窗口→在左窗格单击SQL Anywhere实用工具项→在右窗格列出当前可用的实用工具→选择Unload工具→出现导出询问窗口,选择离线导出或在线导出。若是离线导出,用“浏览”按钮选择物理数据库文件名;若是在线导出,录入数据库服务器名、数据库名。

      然后,单击“下一步” →以DBA名义登录→系统自动创建一个名为RELOAD.SQL的命令文件,用于以后的重新导入,您可以给它改名。单击“下一步”→出现导出位置选择窗口。一种是内部导出,导出文件放在网络服务器端;另一种是外部导出,导出文件放在网络客户端。需要DBA根据网络和存储设备的负载情况进行选择。系统将在指定位置下自动创建一个名为“UNLOAD”的文件夹,用于存放导出文件。单击“下一步”,出现导出内容选择窗口。可以选数据和结构全部导出,也可选只导出数据或结构。单击“下一步” →出现“确认”对话窗,如有需要更改的选项,单击“上一步”退回修改,否则,单击“完成”→出现导出状况动态显示窗口,实时显示某个数据库表正在被导出。需要注意的是,导出的文件主名由SQL Anywhere自行编号设定,和表名不一定相同,其后缀为dat,可用文本编辑器打开。

      数据库的压缩/解压缩
      通常,SQL数据库文件的体积都比较大,几百MB一个文件并不稀奇。所以,如果不进行压缩,备份起来费时费力,比较麻烦。幸好,SQL Anywhere自带了数据库压缩工具,而且效率也很高,一般可压缩掉70%以上。

      1.压缩

      ●比较快捷的方法是:在MS-DOS方式窗口中,直接使用dbshrink压缩命令。格式为:dbshrink 〈要压缩的数据库文件名〉 。

      以压缩test1.db为例,键入:dbshrink C:\\test\\db\\test1.db

      提示:将C:\\test\\db\\test1.db压缩为C:\\test\\db\\test1.cdb,然后自动进入压缩过程,生成名为test1.cdb的压缩文件。

      ●还有一种方法,利用SQL控制中心图形界面工具。

      选中SQL Anywhere实用工具项→选择“压缩数据库”项目→弹出“压缩SQL Anywhere 数据库”窗口→按“浏览”按钮选择要压缩数据库文件C:\\test\\db\\test1.db→在“压缩文件命名”选择默认文件名C:\\test\\db\\test1.cdb→在确认窗口单击“确定”即可。

      2.解压缩

      ●同样地,比较快捷的方法是:使用dbexpand解压缩命令,其格式为:dbexpand 〈压缩文件名〉 。

      要解压缩test1.cdb,键入dbexpand C:\\test\\db\\test1.cdb

      这时,屏幕出现:将C:\\test\\db\\test1.cdb解压缩为C:\\test\\db\\test1.db,同时 提示:C:\\test\\db\\test1.db已存在,是否覆盖?选“是”,即开始解压缩,覆盖掉当前数据库文件。

      ●利用SQL控制中心解压缩。

      选中SQL Anywhere实用工具→选择“解压缩数据库”项→弹出“解压缩SQL Anywhere 数据库”窗口,默认解压缩“C:\\test\\db\\test1.cdb”,按“浏览”按钮可以选择其他压缩文件→“下一步”,将弹出选择窗口,为解压缩后的数据库文件指定存放路径及名称,默认为C:\\test\\db\\test1.db→下一步,出现询问窗口,“是否替换已有的C:\\test\\db\\test1.db”,选“是”→在随后的确认窗口中单击“确定”→进入“解压缩进度”窗口→完成后单击“关闭”按钮。


    发布人:netbull 来自:赛迪网