公司数据库人员走了,留下一个sybase备份的文件,leader要求我把数据库文件还原并部署。以前从来没有接触过sybase,从怎么进入sybase的命令行一步一步开始,废话不多说开始。
环境:windows 目的:实现dump文件还原
操作步骤:新建服务、新建设备、新建数据库、使用load导入dump文件、数据库用户新建、数据库用户权限分配、设置字符集
一、新建服务
开始-->sybase-->server config-->create adapter server-->任意输入一个server的名字(本人取名为YGT) continue-->选择合适的服务器页大小(此处页大小选定后不可修改如果发现选择的页大小和原备份系统不一致则导入不成功,此处本人会通过后边爆出来的错误来说明) continue --->选择主设备存储位置(如果不修改会覆盖安装时默认生成的,此处我们选择安装目录下data02[自己手动新建一个文件夹]目录)continue --》修改过程设备存储位置(同样放在data02下)continue---》
设置xpserver(点击xpserver--》network address--》add--》协议tcp、connection输入ip和端口,注:ip和端口间用逗号隔开,选择未被占用的端口不然创建服务后无法启动 --》保存)--》
设置network address(同xpserver) continue--》此时开始创建服务(耐心等待)--》服务新建完成(此时无法启动服务,重启电脑)
二、新建设备
在服务中启动刚才新建的服务--》程序、cmd 打开控制台--》登录sybase命令行(isql -Usa -P -SYGT 注:标识和内容间没有空格-U用户-P密码-S服务)-->
USE master Go DISK INIT name = 'YGTdev', physname = 'd:\sybase\YGT.dat' , size = '4G',dsync = 'false' Go DISK INIT name = 'YGTLOGdev', physname = 'd:\sybase\YGTLOG.dat', size = '1G',dsync = 'false' Go
设备分为数据设备和日志设备-->在刚才添加的设备上创建数据库use master go create database DB_YGT on YGTdev=100 log on YGTLOGdev=100 go
创建完成,开始导入dump文件load database DB_YGT from "D:\sybaseBackup\cq_ygt3.dump"
提示错误未开启备份服务--》启动YGT_BS服务(此时服务开启,用sybase自带工具Dsedit utility 测试也ping不通)--》打开sybase安装目录在修改ini文件下的sql.ini把刚才使用的备份服务器中Msg 7205, Level 17, State 2: Server 'YGT', Line 1: Can't open a connection to site 'SYB_BACKUP'. See the error log file in the SQL Server boot directory. Msg 7205, Level 18, State 3: Server 'YGT', Line 1: Can't open a connection to site 'SYB_BACKUP'. See the error log file in the SQL Server boot directory.
[YGT_BS] master=NLWNSCK,admin,5001 query=NLWNSCK,admin,5001
电脑的名字改成ip(重要)[YGT_BS] master=NLWNSCK,192.168.0.117,5001 query=NLWNSCK,192.168.0.117,5001
修改后重启服务重新打开命令行执行load命令出现如下错误1> load database DB_YGT from "D:\sybaseBackup\cq_ygt3.dump" 2> GO Backup Server session id is: 5. Use this value when executing the 'sp_volchanged' system stored procedure after fulfilling any volume change request from the Backup Server. Backup Server: 4.177.2.1: The database page size of<strong><span style="color:#ff6666;"> 2048</span></strong> bytes obtained from ASE is different from the database page size of<strong><span style="color:#ff6666;"> 16384</span></strong> bytes read from the dump header. The LOAD session must exit. Backup Server: 1.14.2.2: Unrecoverable I/O or volume error. This DUMP or LOAD session must exit. Backup Server: 6.32.2.3: D:\sybaseBackup\cq_ygt3.dump: volume not valid or not requested (server: , session id: 5.) Backup Server: 1.14.2.4: Unrecoverable I/O or volume error. This DUMP or LOAD session must exit. Msg 8009, Level 16, State 1: Server 'YGT', Line 1: Error encountered by Backup Server. Please refer to Backup Server messages for details.
从出现的错误上看到说当先的数据库分页大小是2048个字节也就是2K的而要还原这个dump文件需要的是16384个字节的(16k)因此我们需要创建一个16k的服务重复【一】过程
新建一个16K的服务后再次load dump时出现如下错误
错误说明:当前load的dump文件的排序不一致或者字符编码不一致,执行首先添加添加字符集到系统中去(Backup Server session id is: 5. Use this value when executing the 'sp_volchanged' system stored procedure after fulfilling any volume change request from the Backup Server. Backup Server: 6.28.1.1: Dumpfile name 'cq_ygt3121650BA42' section number 1 mounted on disk file 'D:\sybaseBackup\cq_ygt3.dump ' Msg 3120, Level 16, State 1: Server 'YGT01', Line 1: The database you are attempting to LOAD was DUMPed under a different sort order ID (42) or character set ID (2) than the ones running on this server (SortOrd = 50, CharSet = 2). If the sort orders differ, at least one of them is non-binary.
没有说明找了我一个小时偶然原因在网上看到了一个不区分大小写的字符集试了一次果然是)
转到$sybase\ASE-12_5\bin目录(非isql命令)
执行命令 charset -Usa -P -SYGT01 nocase.srt cp850
备注:cp850为$sybase/charsets目录下的字符集*.srt为该字符集下的排序方式
此时使用命令查看字符排序C:\sybase\ASE-12_5\bin>charset -Usa -P -SYGT01 nocase.srt cp850
1> select name,id from syscharsets 2> go name id ------------------------------ --- ascii_8 0 iso_1 1 cp850 2 defaultml 20 thaidict 21 iso14651 22 utf8bin 24 binary 25 altnoacc 39 <span style="color:#ff0000;"> nocase_cp850 42</span> altdict 45 altnocsp 46
提示重启生效(重启服务两次第一次启动服务失败,第二次就成功了)1> sp_configure 'default sortorder id',42 2> go
此时执行load命令结果如下
错误说明:数据库大小不足还需要45660M的空间 (数据库的总大小)1> load database DB_YGT from "D:\sybaseBackup\cq_ygt3.dump " 2> go Backup Server session id is: 16. Use this value when executing the 'sp_volchanged' system stored procedure after fulfilling any volume change request from the Backup Server. Backup Server: 6.28.1.1: Dumpfile name 'cq_ygt3121650BA42' section number 1 mounted on disk file 'D:\sybaseBackup\cq_ygt3.dump ' Msg 3105, Level 16, State 1: Server 'YGT01', Line 1: Data on dump will not fit into current database.<span style="color:#ff0000;"> Need 45960 Mbyte database.</span>
采用一下方法设置大小后就能成功导入了 导入后更具结果提示数据库用户
增加数据库空间:有两种方法
两种方法,一是增加原来设备的大小,二是增加新的设备
1、增加原来设备的大小:
use master
go
disk resize name='DEV_DB_CLIENT_DAT01',size='200m'
alter database DB_YGT01 on test01dev='200m'
disk resize name='DEV_DB_CLIENT_LOG01',size=200m
alter database DB_CLIENT log on DEV_DB_CLIENT_LOG01='200m'
2、增加新的设备
use master
go
disk init name='DEV_NEW', physname='e:\DB_CLIENT_NEW.dat', size='200m'
go
disk init name='DEV_NEW_LOG',physname='e:\DB_CLIENT_NEW_LOG.dat',size='200m'
go
------------------------------------------------------创建用户部分----------------------------------------------------------------------------------------------------
--创建kylwsp_gather.dump 所需用户 kylwsp (登录号)
sp_addlogin loginame, passwd
--创建用户
sp_adduser loginame
--分配权限
grant all | select,insert,delete,update
on table_name | view_name | stored_procedure_name
to username