sybase dump还原备忘

本文档详细记录了在Windows环境下,如何从Sybase的dump文件进行数据库还原的步骤,包括新建服务、设备、数据库,load导入,设置字符集,以及解决因页大小和字符集不匹配导致的问题。此外,还介绍了如何增加数据库空间和创建用户及分配权限。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        公司数据库人员走了,留下一个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"

提示错误未开启备份服务

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服务(此时服务开启,用sybase自带工具Dsedit utility 测试也ping不通)--》打开sybase安装目录在修改ini文件下的sql.ini把刚才使用的备份服务器中
[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时出现如下错误

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.
错误说明:当前load的dump文件的排序不一致或者字符编码不一致,执行首先添加添加字符集到系统中去(大哭没有说明找了我一个小时偶然原因在网上看到了一个不区分大小写的字符集试了一次果然是)

转到$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命令结果如下

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>
错误说明:数据库大小不足还需要45660M的空间  (数据库的总大小

采用一下方法设置大小后就能成功导入了  导入后更具结果提示数据库用户


增加数据库空间:有两种方法
两种方法,一是增加原来设备的大小,二是增加新的设备

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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值