sybase数据迁移记录,记录迁移中的问题以及知识点(一)

sybase必备技能

1、实例初始化(linux)

/sybase/ASE-15_0/init/sample_resource_files下存放了资源文件的模版,可以拷贝下面2个资源文件的模版进行修改。

srvbuild.adaptive_server.rs    数据库主服务

srvbuild.backup_server.rs      备份服务

然后执行/sybase/ASE-15_0/bin/srvbuild  -r  资源文件的方式进行实例创建。

实例创建后需要修改/sybase/ASE-15_0/sysam下的服务名.properties文件中PE和LT的值与/sybase/SYSAM-2.0/licenses/XXX.lic license文件中的一致。否则一个月试用期过后,数据库会无法启动。

下面是个主服务资源文件的例子,绿色为需要修改的部分。

sybinit.release_directory: USE_DEFAULT

sybinit.product: sqlsrv

sqlsrv.server_name: JXGYRSSD

sqlsrv.sa_password: XXXXXXXX

sqlsrv.new_config: yes

sqlsrv.do_add_server: yes

sqlsrv.network_protocol_list: tcp

sqlsrv.network_hostname_list: 141.xx.xx.102

sqlsrv.network_port_list: 6000

sqlsrv.application_type: USE_DEFAULT

sqlsrv.server_page_size: 16K

sqlsrv.force_buildmaster: no

sqlsrv.master_device_physical_name: /database/rssddata/master.dat

sqlsrv.master_device_size: 370

sqlsrv.master_database_size: 240

sqlsrv.errorlog: /sybase/ASE-15_0/install/JXGYRSSD.log

sqlsrv.do_upgrade: no

sqlsrv.sybsystemprocs_device_physical_name: /database/rssddata/sysprocs.dat

sqlsrv.sybsystemprocs_device_size: 220

sqlsrv.sybsystemprocs_database_size: 220

sqlsrv.sybsystemdb_device_physical_name: /database/rssddata/systemp.dat

sqlsrv.sybsystemdb_device_size: 120

sqlsrv.sybsystemdb_database_size: 120

sqlsrv.tempdb_device_physical_name: /database/rssddata/tempdb.dat

sqlsrv.tempdb_device_size: 220

sqlsrv.tempdb_database_size: 220

sqlsrv.default_backup_server: JXGYRSSD_BS

 

下面是个备份服务资源文件的例子,绿色为需要修改的部分。

sybinit.release_directory: USE_DEFAULT

sybinit.product: bsrv

bsrv.server_name: abcd_bs

bsrv.new_config: yes

bsrv.do_add_backup_server: yes

bsrv.do_upgrade: no

bsrv.network_protocol_list: tcp

bsrv.network_hostname_list: 192.168.70.137

bsrv.network_port_list: 5001

bsrv.language: USE_DEFAULT

bsrv.character_set: USE_DEFAULT

bsrv.tape_config_file: USE_DEFAULT

bsrv.errorlog: USE_DEFAULT

#bsrv.addl_cmdline_parameters: PUT_ANY_ADDITIONAL_COMMAND_LINE_PARAMETERS_HERE

 

2、数据库修改字符集

1.安装utf8字符集到数据库

cd /sybase/charsets/utf8/

charset -SJXGYTJ -Usa -PXXXXXXXX binary.srt utf8

2.修改数据库字符集为utf8

isql -SJXGYTJ -Usa -PXXXXXXXX -w2000

1> sp_configure 'default character set id',190

2> go

 

3.重启数据库,数据库修改字符集成功后会自动关闭

 

4.启动数据库,检查服务器端字符集

isql -SJXGYTJ -Usa -PXXXXXXXX -w2000

1> sp_helpsort

2> go

 

 

3、数据库设备创建

 

disk init name = '数据设备名’,physname = '/设备文件路径/数据设备文件名', size = '大小'

disk init name = '日志设备名’,physname = '/设备文件路径/日志设备文件名', size = '大小'

 

4、数据库库创建

 

create database 库名 on 数据设备='大小' log on '日志设备’='大小'

 

5、数据库扩段空间

 

alter database on 数据设备= '大小'

alter database log on 日志设备= '大小'

 

6、数据库备份

 

dump database 库名 to '/备份路径/备份文件名'

 

7、备份有效性验证方法

 

load database ABC from '/备份路径/备份文件名' with headeronly

 

此命令并不真正进行load操作,只是读取一下备份文件头,可以用来验证备份是否可用。

 

8、数据库全库备份(拼SQL实现全库备份)

1.先写出2个备份的命令

dump database master to  '/backup/master.dmp'

dump database JCSZ     to  '/backup/JCSZ.dmp'

可以看到除了库名部分,其他部分为固定字符串。而所有库的库名可以从通过select name from master..sysdatabases查询得到。

2.因此将不变的部分,用引号引起来(注意单双引号不要冲突),变量部分用查询语句从系统表中查询得到。char(10)表示回车

select "dump database "+name+" to '/备份路径/"+name+".dmp'"+char(10)+'go' from master..sysdatabases

 

9、数据库库备份单张表的方法(sqldbx/select * into/bcp)

1.SqlDbx导出单张表成insert语句

 

2.select * into 表名_bak from 表名

会自动创建一个叫表名_bak的表,同时插入数据。执行这个select * into命令的前提是备份表所在库要求开启'select into/bulkcopy/pllsort'属性。

可以通过sp_helpdb查看status的值。

 

同时可以通过下面命令开启

sp_dboption JCSZ ,'select into/bulkcopy/pllsort',true

3.bcp导出的方式备份

将YWST..T_MS_AJ导出到C:\T_MS_AJ.bcp文件

 bcp YWST..T_MS_AJ out c:\T_MS_AJ.bcp -Utusc99 -P 99csut -c -t"<!!>" -r"<~~>" -T 20971520 -Jutf8 -S np -b 1000 -e C:\errorlog

将C:\T_MS_AJ.bcp中备份的数据导入恢复到YWST..T_MS_AJ表(导入不会删除表内已有数据,因此若恢复数据,需手动truncate表的数据)

 bcp YWST..T_MS_AJ in  c:\T_MS_AJ.bcp -Utusc99 -P 99csut -c -t"<!!>" -r"<~~>" -T 20971520 -Jutf8 -S np -Y    -b 1000

 

-t每一列分隔符

-r每一行分隔符

-J导入时需要设置为服务器端字符集

-b是指每次导入多少行数据,不设置数据量大时,会导致数据库日志段满的问题。

 

10、数据库单个库的恢复

load database 库名 from '/备份路径/备份文件名'

go

online datbase 库名

go

 

11、数据库单个表的恢复

以恢复YWST中的T_MS_DSR的数据为例,说明步骤

  1. 建立临时设备,大小与原库一致

disk init name = 'TEMP1’,physname = '/database/TMP_DATA', size = '100M'

disk init name = 'TEMP2’,physname = '/database/TMP_LOG', size = '100M'

  1. 建立临时库YWST_TEMP

create database YWST_TEMP on TEMP1=100 log on TEMP2=100

  1. load恢复YWST的备份到YWST_TEMP库,并online

load database YWST_TEMP from '/backup/YWST.dmp'

go

online database YWST_TEMP

go

  1. 通过查询select * from YWST_TEMP..T_MS_DSR得到备份中的民事当事人表的数据,看情况进行全表恢复还是部分记录恢复。
  2. 删除YWST_TEMP库

drop database YWST_TEMP

  1. 删除建立的临时设备

sp_dropdevice TEMP1

go

sp_dropdevice TEMP2

go

12、数据库检查备份服务状态的方法

SYB_BACKUP…sp_who

可以得到查询结果,表示备份服务正常。若报如下错误,则需要检查备份服务:

 

Can't open a connection to site 'SYB_BACKUP'. See the error log file in the ASE

boot directory.

 

13、数据库更新统计值、整理碎片、清存储过程缓存任务计划的配置

更新统计值的语法

update all statistics 表名

批量生成更新统计值语句

select "update all statistics YYFZ.."+name+char(10)+"go" from YYFZ..sysobjects where type = 'U'

go

select "update all statistics YWST.."+name+char(10)+"go" from YWST..sysobjects where type = 'U'

go

select "update all statistics DB_ATY.."+name+char(10)+"go" from DB_ATY..sysobjects where type = 'U'

go

select "update all statistics JCSZ.."+name+char(10)+"go" from JCSZ..sysobjects where type = 'U'

go

 

整理碎片的语法

reorg rebuild 表名

批量生成整理碎片语句

select "reorg rebuild YYFZ.."+name+char(10)+"go" from YYFZ..sysobjects where type = 'U'

go

select "reorg rebuild YWST.."+name+char(10)+"go" from YWST..sysobjects where type = 'U'

go

select "reorg rebuild DB_ATY.."+name+char(10)+"go" from DB_ATY..sysobjects where type = 'U'

go

select "reorg rebuild JCSZ.."+name+char(10)+"go" from JCSZ..sysobjects where type = 'U'

go

针对特大表如几千万数据量,通过reorg rebuild命令一个晚上很可能无法执行完,影响第二天的业务。则可以换成下面的命令,表示执行整理碎片操作480分钟,然后停止。下次再运行可以继续上一次进行整理,分多个晚上完成单个大表的碎片整理工作。

reorg compact 表名 with resume, time=480

 

清存储过程缓存命令如下,建议配置到计划任务中定期执行,每5分钟执行一次。可以有效避免存储过程缓存占满导致的数据库cpu100%问题。

dbcc proc_cache(free_unused)

14、sybase 数据库查看blk阻塞锁、对应的进程、对应的应用及ip的方法

sp_lock  结果集中搜索blk,找到进程号,spid列的值

select program_name , ipaddr , * from master..sysprocesses where spid = 进程号

 

15、sybase 数据库通过进程号查看进程正在执行的SQL

dbcc traceon(3604)

go

dbcc sqltext(进程号)

go

16、sybase 数据库性能监控及参数使用情况监控

sp_sysmon ’00:01:00’  性能监控

sp_monitorconfig ‘all’  参数使用情况监控

17、sybase 各用户cpu使用情况监控

sp_clearstats

sp_reportstats  查询自上次执行sp_clearstats以来,各个数据库帐号使用的CPU占比情况。因此建议为每个应用建立单独的数据库帐号,这样可以得到每个应用所使用的数据库CPU占比情况。

上一篇:php – Codeigniter:如何设置与SQL服务器的连接(2008)


下一篇:使用PHP通过sqlsrv驱动程序在sql server中插入当前日期时间