Sybase安装。数据库
“不吃辣”通过精心收集,向本站投稿了10篇Sybase安装。数据库,下面是小编整理后的Sybase安装。数据库,欢迎大家阅读分享借鉴,欢迎大家分享。
篇1:Sybase安装。数据库
供参考 SQL SERVER11.0.xFORSCOOPENSERVER5 一.安装SCOOpenServer5.0.2PATCH(OS5.0.4以上无需此步骤) OSS437a OSS441a OSS446a 二.建立SYBASE帐号(使用scoadmin) 修改shell文件,增加SYBASEDSQUERYPATH环境变量, 1.shorksh(.profile): SYBASE=安装目录 DSQU
供参考
SQLSERVER 11.0.x FOR SCO OPENSERVER 5
一. 安装 SCO OpenServer 5.0.2 PATCH (OS5.0.4以上无需此步骤)
OSS437a
OSS441a
OSS446a
二. 建立SYBASE帐号(使用scoadmin)
修改shell文件,增加SYBASE DSQUERY PATH 环境变量。
1. sh or ksh (.profile):
SYBASE = 安装目录
DSQUERY =数据库服务器的名字(默认为SYBASE)
PATH = $SYBASE/bin:$SYBASE/install:$PATH:
export SYBASE DSQUERY PATH
或
2. csh (.cshrc)
setenv SYBASE 安装目录
setenv DSQUERY 数据库服务器的名字
set path = ($SYBASE/bin $SYBASE/install $path .)
三. 系统参数调整。
1. 共享内存。
编辑/etc/conf/cf.d/stune
加入:
SHMMAX67108864 (=64M内存)
NFILE11000
NOFILES1024
2. 激活异步I/O
将/etc/conf/sdevice.d/aio 文件“N”改为“Y”,
/etc/conf/sdevice.d/suds 文件“N”改为“Y”
3. 编辑/etc/rc2
在文件最后加入/etc/suds_ctrl -a
例:检查SYBASE用户所处组的组号如50(group),则为suds_ctrl -a 50
4. 重建内核
# /etc/conf/cf.d/link_unix
5. 重新启动计算机
# shutdown -y -g0 -i6
四. 安装SYBASE (注3)
1.安装11.0.3
# mount /dev/cd0 /cdrom
# su - sybase
% /cdrom/sybload -D
Y (确认安装目录)
L (本地安装)
/cdrom/sybimage
输入 CAS# (34个字母,不区分大小写和空格)
选择产品序号(按空回车结束)
Y (确认选择的产品)
# umount /cdrom
2.安装 Y2K EBF
# mount /dev/cd0 /cdrom
# su - sybase
% tar xvf /cdrom/ebfss/ebf7575.tar
% tar xvf /cdrom/ebfcs/ebf7791.tar
# umount /cdrom
3.配置 SQL Server
% $SYBASE/install/sybinit (注4)
注:
1)以sybase登录,使用id命令可以得到group id或通过 cat /etc/passwd | grep sybase 得到。
2)若安装SQL Server 过程中boot server时出现下面错误(可检查errorlog文件):ulinitspinlock:allocate mutex lock failed则是因为在执行suds_ctrl时SYBASE用户组的组号不对,重新执行suds_ctrl即可。
3)#号为使用root用户进行操作,%号为使用sybase用户操作。
4)详细步骤请查看安装手册
-------------------------------------------------
在SCOUnixware7.1上安装ASE11.92
一. 安装 SCO Unixware7.1 Patch
pft7401h
pft7406b
pft7408c
pft7413j
pft7424b
二. 建立SYBASE帐号(使用sysadmin)
修改shell文件,增加SYBASE DSQUERY PATH 环境变量。
1. sh or ksh (.profile):
SYBASE = 安装目录
DSQUERY = 数据库服务器的名字(默认为SYBASE)
PATH = $SYBASE/bin:$SYBASE/install:$PATH:.
export SYBASE DSQUERY PATH
或
2. csh (.cshrc)
setenv SYBASE 安装目录
setenv DSQUERY 数据库服务器的名字
set path = ($SYBASE/bin $SYBASE/install $path .)
三. 系统参数调整
1. 共享内存
编辑/etc/conf/cf.d/stune
加入:
SHMMNI 100
SHMSEG 15
SHMMAX 256000000
SHMALL 2048
NPROC 500
ARG_MAX 51200
SFNOLIM 400
SFSZLIM 0x7FFFFFFF
HFSZLIM 0x7FFFFFFF
SDATLIM 0x7FFFFFFF
HDATLIM 0x7FFFFFFF
SCORLIM 0x7FFFFFFF
HCORLIM 0x7FFFFFFF
SVMMLIM 0x7FFFFFFF
HVMMLIM 0x7FFFFFFF
SSTKLIM 0x7FFFFFFF
HSTKLIM 0x7FFFFFFF
2. 重建内核
# /etc/conf/bin/idbuild
3. 重新启动计算机
# shutdown -y -g0 -i6
四. 安装SYBASE
1.安装11.92
# mount /dev/cd0 /cdrom
# su - sybase
% /cdrom/sybload -D
Y (确认安装目录)
L (本地安装)
/cdrom/sybimage
输入 CAS# (34个字母,不区分大小写和空格)
选择产品序号(按空回车结束)
Y (确认选择的产品)
# umount /cdrom
2.修改资源文件
% cd $SYBASE/init/sample_source_files
% cp *ada* ase.rs
% cp *back* back.rs
编辑ase.rs和back.rs文件
3.配置 SQL Server 及 Backup Server
% srvbuildres -r ase.rs
% srvbuildres -r back.rs
注:
1)#号为使用root用户进行操作,%号为使用sybase用户操作,
2)详细步骤请查看安装手册
----------------------------------------------
ASE 11.9.2 forLinux安装步骤
以root 登录:
创建sybase用户及用户组(useradd,groupadd或linuxconf)
mount CDROM
#mount /mnt/cdrom (#mount -t iso9660 /dev/cdrom /mnt/cdrom)
unload SYBASE产品
(1)选用图形方式
#/mnt/cdrom/sybsetup
(2)选用字符方式
# rpm -hiv -prefix /usr/sybase /mnt/cdrom/RPMS/sybase-common-11.9.2-1.i386.rpm
# rpm -hiv -prefix /usr/sybase /mnt/cdrom/RPMS/sybase-ase-11.9.2-1.i386.rpm
更改sybase用户权限
#cd /usr/sybase
#chown sybase:sybase *
以sybase登录安装 ASE 11.9.2:
改sybase用户环境变量
编辑用户登录文件:
例:bash 用户,编辑bash_profile文件
$ vi bash_profile
SYBASE=/usr/sybase
DSQUERY=SYBASE
LD_LIBRARY_PATH=$SYBASE/lib
LANG=C
Export SYBASE DSQUERY LD_LIBRARY_PATH LANG
install ASE11.9.2
(1) 选用图形方式
$srvbuild
注意:sybase用户要具有对/tmp的写权限
(2) 选用字符方式
--编辑源文件(/init/sample_resourde_files/srvbuild.adaptive_server.rs,
/init/sample_resourde_files/srvbuild.backup_server.rs)
将源文件拷贝到备用目录/usr/sybase/user中:
$cp /init/sample_resourde_files/srvbuild.adaptive_server.rs /user/ase.rs
$cp /init/sample_resourde_files/srvbuild.adaptive_server.rs /user/backup.rs
编辑ase.rs,backup.rs
--运行源文件
$ cd /usr/sybase/bin
$srvbuildres -r /usr/sybase/user/ase.rs
$srvbuildres -r /usr/sybase/user/backup.rs
附:如何修改OS内存配置
在root用户登录文件中加入以下语句:
(以bash用户,.bash_profile为例,更改系统内存值为60M)
#vi .bash_profile
echo “62914560” > /pro/sys/kernel/shmmax
原文转自:www.ltesting.net
篇2:更改Sybase数据库
1.改变数据库属主
通常用户数据库有系统管理员创建,它的默认属主是dbo,系统过程sp_changeddbowner可改变数据库的属主关系,它必须由数据库管理员在要改变属主关系的数据库中执行。语法如下:
sp_changeddbowner login_name[,True]
其中参数True用于将权限一半传递给新属主。
2.扩展数据库
(1)扩展数据库空间
alter database 数据库名
on 设备名=扩展空间 //单位:M
如果扩展的设备对于数据库是新的,System和Default段会自动扩展到该设备上,
(2)扩展事务日志到新的设备上
sp_logdevice 数据库名,设备名
举例:将数据库另外扩充5M,用于存储日志
alter database my_db
on my_dev=5
go
sp_logdevice my_db,my_dev
go
3.删除数据库
drop database 数据库名
删除设备前必须删除其上的所有数据库,删除设备的命令是:sp_dropdevice
篇3:Sybase数据库简介数据库
一、Sybase数据库简介 1.版本 1984年,MarkB.Hiffman和RobertEpstern创建了Sybase公司,并在1987年推出了Sybase数据库产品,SYBASE主要有三种版本,一是 UNIX 操作系统下运行的版本,二是NovellNetware环境下运行的版本,三是 Windows NT环境下运行的版本。
一、Sybase数据库简介
1.版本
1984年,Mark B. Hiffman和Robert Epstern创建了Sybase公司,并在1987年推出了Sybase数据库产品。SYBASE主要有三种版本,一是UNIX操作系统下运行的版本,二是Novell Netware环境下运行的版本,三是WindowsNT环境下运行的版本。现在最新版本已经是 12.5,在各主流Unix操作系统中均有广泛应用。IBM AIX,HPunix,Digital Unix,Sun solaris等等。
2.Sybase数据库的特点
(1)它是基于客户/服务器体系结构的数据库
一般的关系数据库都是基于主/从式的模型的。在主/从式的结构中,所有的应用都运行在一台机器上。用户只是通过终端发命令或简单地查看应用运行的结果。 而在客户/服务器结构中,应用被分在了多台机器上运行。一台机器是另一个系统的客户,或是另外一些机器的服务器。这些机器通过局域网或广域网联接起来。客户/服务器模型的好处是:
● 它支持共享资源且在多台设备间平衡负载
● 允许容纳多个主机的环境,充分利用了企业已有的各种系统
(2) 它是真正开放的数据库
由于采用了客户/服务器结构,应用被分在了多台机器上运行。更进一步,运行在客户端的应用不必是Sybase公司的产品。对于一般的关系数据库,为了让其它语言编写的应用能够访问数据库,提供了预编译。Sybase数据库,不只是简单地提供了预编译,而且公开了应用程序接口DB-LIB,鼓励第三方编写DB-LIB接口。由于开放的客户DB-LIB允许在不同的平台使用完全相同的调用,因而使得访问DB-LIB的应用程序很容易从一个平台向另一个平台移植。
(3) 它是一种高性能的数据库
Sybase真正吸引人的地方还是它的高性能。体现在以下几方面:
● 可编程数据库
通过提供存储过程,创建了一个可编程数据库。存储过程允许用户编写自己的数据库子例程。这些子例程是经过预编译的,因此不必为每次调用都进行编译、优化、生成查询规划,因而查询速度要快得多。
● 事件驱动的触发器
触发器是一种特殊的存储过程。通过触发器可以启动另一个存储过程,从而确保数据库的完整性。
● 多线索化
Sybase数据库的体系结构的另一个创新之处就是多线索化。一般的数据库都依靠操作系统来管理与数据库的连接。当有多个用户连接时,系统的性能会大幅度下降。Sybase数据库不让操作系统来管理进程,把与数据库的连接当作自己的一部分来管理。此外,Sybase的数据库引擎还代替操作系统来管理一部分硬件资源,如端口、内存、硬盘,绕过了操作系统这一环节,提高了性能。
3.Sybase数据库的组成
Sybase数据库主要由三部分组成:
(1) 进行数据库管理和维护的一个联机的关系数据库管理系统Sybase SQL Server;
Sybase SQL Server是个可编程的数据库管理系统,它是整个Sybase产品的核心软件,起着数据管理、高速缓冲管理、事务管理的作用。
(2) 支持数据库应用系统的建立与开发的一组前端工具Sybase SQL Toolset;
ISQL是与SQL Server进行交互的一种SQL句法分析器。ISQL接收用户发出的SQL语言,将其发送给SQL Server,并将结果以形式化的方式显示在用户的标准输出上。
DWB是数据工作台,是Sybase SQL Toolset的一个主要组成部分,它的作用在于使用户能够设置和管理SQL Server上的数据库,并且为用户提供一种对数据库的信息执行添加、更新和检索等操作的简便方法。在DWB中能完成ISQL的所有功能,且由于DWB是基于窗口和菜单的,因此操作比ISQL简单,是一种方便实用的数据库管理工具。
APT是Sybase客户软件部分的主要产品之一,也是从事实际应用开发的主要环境。APT工作台是用于建立应用程序的工具集,可以创建从非常简单到非常复杂的应用程序,它主要用于开发基于表格(Form)的应用。其用户界面采用窗口和菜单驱动方式,通过一系列的选择完成表格(Form)、菜单和处理的开发。
(3) 可把异构环境下其它厂商的应用软件和任何类型的数据连接在一起的接口Sybase Open Client/Open Server,
通过Open Client的DB-LIB库,应用程序可以访问SQL Server。而通过Open Server的SERVER-LIB,应用程序可以访问其它的数据库管理系统。
二、SYBASE有关概念
Sybase SQL Server是一个多库数据库系统。这些数据库包括系统数据库和用户数据库。 而不论是系统数据库还是用户数据库,都建立在数据库设备上。
1. 数据库设备
所有的数据库都创建在数据库设备上。所谓数据库设备,不是指一个可识别的物理设备,而是指用于存储数据库和数据库对象的磁盘原始分区或操作系统文件。增加一个新的数据库设备时,必须对这些设备“初始化”。初始化的过程就是将物理磁盘、磁盘分区或操作系统文件变为SYBASE数据库可以识别的设备。初始化数据库设备使用DISK INIT命令:
DISK INIT
NAME=设备名,
PHYSNAME=物理设备名,
VDEVNO=虚拟设备号,
SIZE=块数
其中,NAME指数据库设备名,此名将用于CREATE DATABASE和ALTER DATABASE命令。PHYSNAME是原始磁盘分区或操作系统文件名。VDEVNO是数据库设备的标识号,在SQL Server中,它必须是唯一的。SIZE的单位是2K的块,对于新创建的数据库,最小的SIZE是model数据库的尺寸,即1024个2K的块(2M)。
例如:/*将/dev目录下400M的物理设备初始化为SYBASE的数据库设备tele114_log01*/
1>disk init
2>name=“tele114_log01”,
3>physname=“/dev/rtelelog”
4>vdevno=4
5>size=204800 /*2Kbyte*204800=400Mbyte*/
6>go
2、段
数据库设备从逻辑上被划分为数据库段以允许将某一特定的对象放置在指定的段上(创建对象时指定),一数据库设备可拥有多达192个段,一段可使用255个逻辑设备上的存储空间。当用户创建一个数据库时,SQL SERVER 会自动在该数据库中创建三个段: SYSTEM、LOGSEGMENT 、DEFAULT,这三个段分别用来存储数据库的系统表、事务日志和其他数据库对象 。
在数据库中创建段的步骤是:
x 先用Disk init 初始化物理设备
x 通过使用Create database 和alter database 的on 子句,使数据库设备对数据库可用,于是新设备自动增加到数据库的default 和system段。
一旦数据库设备存在并对数据库可用,使用存储过程Sp_addsegment 定义数据库的段。语法如下:
Sp_addsegment 段名,数据库名,设备名
3、 系统数据库
安装Sybase数据库时自动生成的下列系统数据库:
● 主数据库master;
● 模型数据库model;
● 系统过程数据库sybsystemprocs;
● 临时数据库tempdb。
也可选择下列数据库:
●安全审核数据库sybsecurity;
● 示例数据库pubs2;
● 命令语法数据库sybsyntax。
(1) master数据库
包含许多系统表和系统过程,从总体上控制用户数据库和SQL Server的操作,构成了SYBASE系统的数据字典。MASTER数据库主要记录信息为:
● 登录帐号(SQL服务器用户名);syslogins,sysremolelogins
● 正在执行的过程;sysprocesses
● 可修改的环境变量;sysconfigures
● 系统错误信息;sysmessages
● SQL服务器上每个数据库的信息;sysdatabases
● 每个数据库占用的存储空间;sysusages
● 系统上安装的磁带及磁带信息;sysdevices
● 活动锁信息;syslocks
共3页: 1 [2] [3] 下一页
原文转自:www.ltesting.net
篇4:sybase数据库恢复
使用load database加载备份到现有数据库,数据库可以是用于创建转储的数据库,也可以不是,语法为:
load database 数据库名 from 转储设备名/物理文件名
load transaction数据库名 from 转储设备名/物理文件名
●利用备份恢复数据库举例:
某数据库数据和日志分别存储在两个独立的磁盘上,正常运转时的执行的备份计划如下,每天的17:00执行整个数据库的备份,每天的10:00、12:00、14:00、16:00点执行增量备份:
周一17:00磁带1(100M)周二10:00磁带2(30M)周二12:00磁带3(30M)周二14:00磁带4(30M)周二16:00磁带5(30M)周二17:00磁带6(30M)
DumpdatabaseDumptransactionDumptransactionDumptransactionDumptransactionDumpdatabase
若数据磁盘在周二的下午六点损坏,可以采用如下步骤恢复数据库:
(1)使用dump transaction with no_truncate获得当前的事务日志转储,磁带7;
(2)使用load database最新的数据库转储,磁带6;(offline)
(3)使用load transaction提交最新的事务日志转储,磁带7;
(4)使用online database把数据库状态设置为online,
若数据磁盘在周二的下午4:50损坏,恢复过程如下:
(1)使用dump transaction with no_truncate获得当前的事务日志转储,磁带7;
(2)使用load database转载最新的数据库转储,磁带6;(offline)
(3)使用load transaction依次装载磁带2、3、4、5上的事务日志;
(4)使用load transaction提交最新的事务日志转储,磁带7;
(5)使用online database把数据库状态设置为online。
篇5:SYBASE事务数据库
事务 本篇文章描述了 数据库 事务隔离级对锁的影响,通过对比事务隔离级0和1,理解锁与脏读的关系, 实验内容:分别设置0和1级隔离级,执行两个不同但又有相关的事务。本实验环境如下: 1、有权访问用户数据库(在此是aca_database)和对数据库表有修改和查
事务
本篇文章描述了数据库事务隔离级对锁的影响,通过对比事务隔离级0和1,理解锁与脏读的关系。
实验内容:分别设置0和1级隔离级,执行两个不同但又有相关的事务。本实验环境如下:
1、 有权访问用户数据库(在此是aca_database)和对数据库表有修改和查询权限。
2、 数据库中有表auths,包含salary列(数据类型是money),有一定数据量(在此有1万行)。
步骤:
1、 如在同一台机器,可分别执行两次“SQLAdvantage”,分别用合法帐号登录,准备各自执行一个事务。
2、 在各自界面打开用户数据库aca_database,设置隔离级为1(此亦为缺省值):
set transaction isolation level 1,查看当前隔离级别用select @@isolation
3、 执行第一个事务的前两句,暂不执行后面的提交或回滚。
begin transaction
update auths set salary=salary+100
commit transaction
(rollback transaction)
4、 执行第二个事务 select sum(salary) from auths
5、 第一个事务正常执行结束,但只在内存缓冲区完成修改,事务并没有真正结束,相应也不释放锁,第二个事务处于等待状态,
可执行sp_lock和sp_who命令查看。
6、 执行第3步中的提交或回滚命令,第二个事务得到执行。
7、 改变事务隔离级为0,重复执行3-4步。第一个事务没有任何变化,第二个事务很快出来根据第一个事务修改数据而成的结果,似乎在执行响应上并不受第一个事务的影响。
8、 重复第6步结束。
通过上面的实验我们知道:
1、 隔离级0时事务允许脏读,隔离级1时事务不允许脏读,而只是等待前一个修改事务真正结束并释放锁。
2、 隔离级为0时,如果在修改事务的最后是回滚操作,则查询读事务将不能读到正确的数据。
3、 在确信事务中没有回滚操作的可能,并要求更高的执行效率和并行性,只有这时可考虑设置隔离级为0。
原文转自:www.ltesting.net
篇6:Sybase数据库函数库
这个函数库和 SQL Server 数据库函数库几乎完全相同,实际上是本函数先出现,之后才出现 SQL Server 数据库函数库,
而就用户观点 Sybase 和 MS SQL Server 6.x 也是几乎相同的。当然 MS SQL Server 7.0 之后的差异就比较大了。
sybase_affected_rows: 取得最后 query 影响的列数。
sybase_close: 关闭与数据库的连接。
sybase_connect: 连上数据库。
sybase_data_seek: 移动列指针。
sybase_fetch_array: 返回数组资料。
sybase_fetch_field: 取得字段信息。
sybase_fetch_object: 返回类资料。
sybase_fetch_row: 返回单列的各字段。
sybase_field_seek: 配置指针到返回值的某字段。
sybase_free_result: 释放返回占用内存。
sybase_num_fields: 取得返回字段的数目。
sybase_num_rows: 取得返回列的数目。
sybase_pconnect: 打开服务器持续连接。
sybase_query: 送出一个 query 字符串。
sybase_result: 取得查询 (query) 的结果。
sybase_select_db: 选择一个数据库。
sybase_affected_rows
取得最后 query 影响的列数。
语法: int sybase_affected_rows(int [link_identifier]);
返回值: 整数
函数种类: 数据库功能
内容说明: 本函数用来取得最后一次对数据库下 query 指令所影响的列数,会影响的为 INSERT、UPDATE 或 DELETE 等指令,而 SELECT 不会影响。参数 link_identifier 可省略,为打开数据库的连接代号。返回值即为列数。
sybase_close
关闭与数据库的连接。
语法: boolean sybase_close(int link_identifier);
返回值: 布尔值
函数种类: 数据库功能
内容说明: 本函数用来关闭与 Sybase 数据库的连接,能关闭的为使用 sybase_connect 函数打开的数据库,若使用 sybase_pconnect() 打开的数据库则不能以本函数关闭。参数 link_identifier 可省略,为打开数据库的连接代号。关闭成功则返回 true 值。
参考: sybase_connect() sybase_pconnect()
sybase_connect
连上数据库。
语法: int sybase_connect(string [servername], string [username], string [password]);
返回值: 整数
函数种类: 数据库功能
内容说明: 本函数用来打开与 Sybase 数据库的连接。参数 servername 为欲连上的数据库服务器名称。参数 username 及 password 可省略,分别为连接使用的帐号及密码。使用本函数需注意早点关闭数据库,以减少系统的负担。连接成功则返回数据库的连接代号,失败返回 false 值。
参考: sybase_close() sybase_pconnect()
sybase_data_seek
移动列指针。
语法: boolean sybase_data_seek(int result_identifier, int row_number);
返回值: 布尔值
函数种类: 数据库功能
内容说明: 本函数用来移动 Sybase 资料表中的列指针到指定的列上,可供 sybase_fetch_row() 等函数使用。参数 result_identifier 为查询的代号值。参数 row_number 则为欲移往的列数。若失败则返回 false 值。
参考: sybase_close() sybase_pconnect()
sybase_fetch_array
返回数组资料。
语法: array sybase_fetch_array(int result);
返回值: 数组
函数种类: 数据库功能
内容说明: 本函数用来将查询结果 result 拆到数组变量中,
若 result 没有资料,则返回 false 值。而本函数可以说是 sybase_fetch_row() 的加强函数,除可以将返回列及数字索引放入数组之外,还可以将文字索引放入数组中。
使用范例
这是 joey@samaritan.com (22-Feb-) 所提出的例子
$q = sybase_query(“SELECT COUNT(DISTINCT OPPORTUN99vY_ID) FROM M_OPP_INTERESTS WHERE INTEREST_ID = $i_id”, $db);
while ($op_by_int = sybase_fetch_arr
ay($q)) {
while (list($k, $v) = each($op_by_int)) {
echo “\$op[$k] =>$v\n”;
}
?>
返回资料如下
$op[0] =>2164
$op[computed] =>2164 sybase_fetch_field
取得字段信息。
语法: object sybase_fetch_field(int result, int field_offset);
返回值: 类
函数种类: 数学运算
内容说明: 本函数返回的类资料为 result 的字段 (Column) 信息。返回类的属性如下:
name - 字段名称
column_source -字段所在表格的资料表名称
max_length - 字段的最大长度
numeric - 若为 1 表示本字段为数字类型 (numeric)
参考: sybase_field_seek()
sybase_fetch_object
返回类资料。
语法: object sybase_fetch_object(int result);
返回值: 类
函数种类: 数据库功能
内容说明: 本函数用来将查询结果 result 拆到类变量中。使用方法和 sybase_fetch_array() 几乎相同,不同的地方在于本函数返回资料是类而不是数组。若 result 没有资料,则返回 false 值。另外值得注意的地方是,取回的类资料的索引只能是文字而不能用数字,这是因为类的特性。类资料的特性中所有的属性 (property) 名称都不能是数字,因此只好乖乖使用文字字符串当索引了。关于速度方面,本函数的处理速度几乎和 sybase_fetch_array() 及 sybase_fetch_row() 二函数差不多,要用哪个函数还是看使用的需求决定。
参考: sybase_fetch_array() sybase_fetch_row()
sybase_fetch_row
返回单列的各字段。
语法: array sybase_fetch_row(int result);
返回值: 数组
函数种类: 数据库功能
内容说明: 本函数用来将查询结果 result 之单列拆到数组变量中。数组的索引是数字索引,第一个的索引值是 0。若 result 没有资料,则返回 false 值。
参考: sybase_fetch_array() sybase_fetch_object() sybase_data_seek() sybase_result()
sybase_field_seek
配置指针到返回值的某字段。
语法: int sybase_field_seek(int result, int field_offset);
返回值: 整数
函数种类: 数据库功能
内容说明: 本函数配置目前的指针到返回值的特定字段中。参数 result 为返回值代码。参数 field_offset 则为指定的字段序数。
参考: sybase_fetch_field()
sybase_free_result
释放返回占用内存。
语法: int sybase_free_result(int result);
返回值: 整数
函数种类: 数据库功能
内容说明: 本函数可以释放目前 Sybase 数据库 query 返回所占用的内存。一般只有在非常担心在内存的使用上可能会不足的情形下才会用本函数。PHP 程序会在结束时自动释放。
sybase_num_fields
取得返回字段的数目。
语法: int sybase_num_fields(int result);
返回值: 整数
函数种类: 数据库功能
内容说明: 本函数可以得到返回字段的数目。参数 result 为返回值代码。
篇7:如何恢复Sybase数据库
有一天,你按下电脑电源开关后,没有像往常一样,一闪之后进入系统,而是告诉你你的系统盘坏掉了,
如何恢复Sybase数据库
。再你经过多种方法设法恢复系统而失败后,这时你最担心的就是你的数据。我装的sybase12,前几天系统突然莫名其妙的坏掉了。因为是自己的机子,所以我把软件全部安装到了d盘上,这可真是帮了我的大忙啦。可见,一个好的习惯是非常要得的。
我把系统重新安装后,数据库肯定是不能使用了,但是可不可以恢复呢?我最关心的最想要的是我的数据啊。想到使用oracle时,有一种方法可以恢复,就是将数据库系统按照原来安装的方式再装在系统上,然后将d盘上保留的数据文件等进行替换,数据库恢复好用,
在这种情况下,我当然是立马工作了。先把d盘上保留的自己要用的拷贝到另外一个地方;然后照上一次的,包括命名方式、选择目录等,进行安装sybase服务端和客户端,安装成功结束后。
我停止sybase服务,将原系统下sybase服务端目录下的data文件夹(我的环境下是在D: ybase ybase_s\data,也就是master设备文件)全部拷贝到新装的同一位置下,然后重新启动sybase服务啦。
重启成功,给了很大的信心;看看是不是原来的数据库全出来了,进入sybase centrel,发现原来有的现在都有了,啊,My God!一切都是ok。
不敢独用,特此拿来跟大家分享,当然了有了这一步,你根据自己的情况还可以进行其他的附带操作了。
篇8:Sybase数据库的碎片
对于像Sybase这样的大型DBMS系统而言,作为OLTP(联机事务处理)应用的基石,它需要能每天24小时, 每年365天不间断运行,由于其应用程序每天对数据库进行大量的插入、更新、删除等操作,在数据库的物理存储介质上产生了大量存储碎片,从而影响了存储的效率以及数据库应用运行的速度。是否可以像Windows操作系统的“碎片整理”程序一样,整理这些碎片,从而优化数据库存储,提高数据库的运行速度呢?答案是肯定的。本文将介绍Sybase 数据库的碎片类型以及碎片整理方法。 碎片类型
由于Sybase是通过OAM页、分配单元和扩展页来管理数据的,所以对OLTP应用的Database Server会十分频繁地进行数据删除、插入和更新等操作,时间一长就会出现以下几种情况:
1. 页碎片
即本来可以存放在一个页上的数据却分散地存储在多个页上。如果这些页存储在不同的扩展单元上,Database Server就要访问多个扩展单元,因此降低了系统性能。
2. 扩展单元碎片
在堆表中,当删除数据链中间的记录行时,会出现空页。随着空页的累积,扩展单元的利用率也会下降,从而出现扩展单元碎片。带cluster index的table也有可能出现扩展单元碎片。
当有扩展单元碎片存在,会出现以下问题:
● 对表进行处理时,常常出现死锁;
● 利用较大的I/O操作或增加I/O缓冲区的大小也无法改变较慢的I/O速度;
● 行操作的争用。
3. 扩展单元遍历
带有cluster index的table会由于插入记录而导致页分裂,但当删除记录后,页会获得释放,从而形成跨几个扩展单元和分配单元的数据,而要访问该数据就必须遍历几个扩展单元和分配单元。这将导致访问/查询记录的时间大大延长,开始时数据库的性能虽然较高,但使用一段时间后性能就会下降等问题。
实际上,数据在存储空间上排列得越紧密有序,Database Server访问的速度就越快,消除碎片有助于提高系统的性能和更有效地利用数据存储空间。
碎片优化方法
处理碎片有多种方法,如重新定义table的填充因子,根据table的定义删除并重新创建索引、重建表等。
本文给出的方法是通过BCP实用程序将用户数据库的数据以文本形式导出,然后将用户数据库彻底清空、截断,再将文本数据导入到数据库,从而达到消除碎片的目的,具有通用性。
下面以Sun Solaris 7操作系统下的Sybase Adaptive& nbspServer Enterprise 11.5为例,说明整理数据库数据的具体方法。
1. 备份数据库
为防止在数据库碎片整理过程中出现不可预见的问题,有必要先备份数据库。
2. 创建bcp out脚本并导出数据
● 创建包含下列SQL语句的文件:
cre_bcp_out.sql
elect “bcp” + name + “out ./” + name + “_out.txt -Udboname -Pdbopwd -Ssys_name -c” vfrom sysobjects where type = ‘U’
order by name
go
● isql -Udboname -Pdbopwd -Ssystemname < cre_bcp_out. sql >b_out
● 编辑输出文件,去掉文件第一行和最后两行无关的字符:vi b_out
● 执行脚本,将数据库的数据导出到文本文件:sh b_out
3. 创建truncate table脚本并截断数据库
● 创建包含下列SQL语句的文件:
cre_trunc_out.sql
elect “truncate table” + name from sysobjects where type = ‘U’
order by name
go
● isql -Udboname -Pdbopwd -Ssystemname < cre_ trunc_out. sql >trunc_out. sql
● 编辑输出文件,去掉文件第一行和最后两行无关的字符,并在最后一行加入 go构成完整的SQL语句:vi trunc_out
● 执行以下语句,清空数据库的数据:
isql -Udboname -Pdbopwd < trunc_out. sql
4. 创建bcp in脚本并导入数据
● 创建包含下列SQL语句的文件:
cre_bcp_in. sql
elect “bcp” + name + “in ./” + name + “_out.txt& nbsp-Udboname -Pdbopwd -Ssys_name -c”from sysobjects where type = ‘U’
order by name
go
● isql -Udboname -Pdbopwd -Ssystemname < cre_ bcp_in. sql >b_in
● 编辑输出文件,去掉文件第一行和最后两行无关的字符:vi b_in
● 从文本中导入数据:sh b_in
5. 更新数据库状态
Sybase不自动维护索引的统计信息,当用truncate table截断数据库时,索引并没有改变,所以必须用update statistics来确保索引的统计信息对应当前表数据的统计,
● 创建包含下列SQL语句的文件:
cre_upd_st. sql
elect “update statistics” + name from sysobjects where typ
e = “U” order by name go
● isql -Udboname -Pdbopasswd -Ssystemname < cre_upd_st. sql >upd_st. sql
● 编辑输出文件,去掉文件第一行和最后两行无关的字符,在最后一行加入 go构成完整的SQL语句:
vi upd_st. sql
● 更新数据库状态:
isql -Udboname -Pdbopasswd -Ssystemname < upd_st. sql
至此,基本上完成了数据库用户表的碎片整理工作。
小结
在整理过程中,有以下两点需要注意:
1. Tempdb的大小
当Sybase执行bcp in脚本时,会占用导入数据2倍的tempdb空间,因此在执行前要仔细估计最大的table的大小,保证有足够的tempdb空间。当空间不够时,要考虑用分割table或删除陈旧数据的方法缩小table的大小,或者考虑增加tempdb的大小。
2. 数据库配置选项的设置
当数据库执行bcp in脚本时会产生大量的log,为保证bcp in进程不致因为log溢出而中断,应该设置 database的选项“truncate log on chkpt”为“true”。
虽然Sybase数据库是自优化的,但只要数据库是动态的,数据库碎片现象就会存在。在OLTP应用的场合,随着数据的不断增大,系统变得越来越缓慢,并且经常出现死锁时,应该检查数据库的碎片,并且采用以上方法进行优化。
实际上,应该定期做数据库的碎片整理,保证数据库的物理存储经常处于最优状态,相对于增加硬件而言,这是一种更好的保持数据库性能的低成本的途径。
篇9:Sybase数据库死锁对策
死锁的发生对系统的性能和吞吐量都有重要影响,经检测发现,管理信息系统的死锁主要是因为两个或多个线程(登录)抢占同一表数据资源,引起长时间抢占同一资源不是因为我们需要处理的事务太复杂,时间太长,而往往是因为我们在前端应用程序对数据库作操作时忘了提交。本文介绍一种处理解决这种死锁的方法。 Sybase封锁原理
数据共享与数据一致性是一对不可调和的矛盾,为了达到数据共享与数据一致,必须进行并发控制。并发控制的任务就是为了避免共享冲突而引起的数据不一致。Sybase SQL Server并发控制的方法是加锁机制(LOCKING).
锁的类型
可申请的锁
已有的锁 S U X S ∨ ∨ × U ∨ × × X × × × Sybase SQL Server有三种封锁类型:排它锁(exclusive lock,简称X锁);共享锁(share lock,简称S锁);更新锁(update lock,简称U锁)。这三种锁的相容矩阵表如下:
×:表示不兼容。∨:表示兼容。
Sybase SQL Server是自动决定加锁类型的。一般来说,读(SELECT)操作使用S锁,写(UPDATE,INSERT和delete)操作使用X锁。U锁是建立在页级上的,它在一个更新操作开始时获得,当要修改这些页时,U锁会升级为X锁。
锁的力度
SQL Server有两级锁:页锁和表锁。通常页锁比表锁的限制更少(或更小)。页锁对本页的所有行进行锁定,而表锁则锁定整个表。为了减小用户间的数据争用和改进并发性,SQL Server试图尽可能地使用页锁。
当SQL Server决定一个语句将访问整个表或表的大多数页时,它用表锁来提供更有效的锁定。锁定策略直接受查询方案约束,如果update或delete语句没有可用的索引,它就执行表扫描或请求一个表锁定。如果update或delete语句使用了索引,它就通过请求页锁来开始,如果影响到大多数行,它就要请求表锁。一旦一个语句积累的页锁超过锁提升阈值,SQL Server就设法给该对象分配一个表锁。如果成功了,页锁就不再必要了,因此被释放。表锁也在页层提供避免锁冲突的方法。对于有些命令SQL Server自动使用表锁。
锁的状态
SQL SERVER加锁有三种状态:
1)意向锁(intend)—是一种表级锁,它表示在一个数据页上获得一个S或X锁的意向。意向锁可以防止其他事务在该数据页的表上获得排它锁。
2)阻塞(blocking,简记blk)—它表明目前加锁进程的状态,带有blk后缀的锁说明该进程目前正阻塞另一个需要获得锁的进程,只有这一进程完成,其他进程才可以进行。
3)需求锁(demand)—表示此时该进程企图得到一个排它锁。它可以防止在这一表或页上加过多的S锁,她表示某一事务是下一个去锁定该表和该页的事务。
需求锁是一个内部过程,因此用sp_lock是无法看见的。
死锁DEADLOCK
简单地说,有两个用户进程,每个进程都在一个单独的页或表上有一个锁,而且每个进程都想在对方进程的页或表上请求不相容锁时就会发生“死锁”。在这种情况下,第一个进程在等待另一进程释放锁,但另一进程要等到第一个进程的对象释放时才会释放自己的锁。
SQL Server检查是否死锁,并终止事务中CPU时间积累最小的用户(即最后进入的用户)。SQL Server回滚该用户的事务,并用消息号1205通知有此死锁行为的应用程序,然后允许其他用户进程继续进行,
在多用户情形下,每个用户的应用程序都应检查每个修改数据的事务是否有1205号消息,以此确定是否有可能死锁。消息号1025表示该用户的事务因死锁而终止并被回滚。应用程序必须重新开始这个事务处理。
查找死锁原因
既然管理信息系统长时间死锁的原因是由于我们提交或者是提交不当,那么我们就可以通过修改程序防止出现死锁。定位死锁出错处主要经过以下三步:
1)在死锁出现时,用SP_WHO,SP_LOCK获得进程与锁的活动情况。
2)结合库表sysobjects和相应的操作员信息表查出被锁的库表与锁住别人的操作员。
3)根据锁定的库表与操作员的岗位,可以估计出程序大约出错处。询问操作员在死锁时执行的具体操作即可完全定位出错处。最后查找程序并修改之。
用sp_who获取关于被阻碍进程的信息
系统过程sp_who给出系统进程的报告。如果用户的命令正被另一进程保持的锁阻碍,则:
◆status列显示“lock sleep”。
◆blk列显示保持该锁或这些锁的进程标识,即被谁锁定了。
◆loginame列显示登录操作员。结合相应的操作员信息表,便可知道操作员是谁。
Fid spid status loginame origname blk dbname cmd
0 1 lock sleep lm lm 18 QJYD SELECT
0 2 sleeping NULL NULL 0 master NETWORK HANDLER
0 3 sleeping NULL NULL 0 master NETWORK HANDLER
……
用sp_lock浏览锁
要得到关于当前SQL Server上保持的锁的报告,可用系统过程sp_lock [spid1[,spid2]],spid1,spid2是表master.dbo.sysprocesses中的sql server进程id号,用sp_who可以得到锁定与被锁定的spid号:
◆locktype列显示加锁的类型和封锁的粒度,有些锁的后缀还带有blk表明锁的状态。前缀表明锁的类型:Sh—共享锁,Ex—排它锁或更新锁,中间表明锁死在表上(”table”或’intent’)还是在页上(page). 后缀“blk”表明该进程正在障碍另一个需要请求锁的进程。一旦正在障碍的进程一结束,其他进程就向前移动。“demand”后缀表明当前共享锁一释放, 该进程就申请互斥锁。
◆table_id列显示表的id号,结合sysobjects即可查出被封锁的表名。
执行该进程后屏幕显示
Fid Spid locktype table_id page row dbname Class context
0 1 Sh_intent 678293476 0 0 QJYD Non Cursor LockFam dur
0 1 Sh_page 678293476 31764 0 QJYD Non Cursor Lock
0 18 Ex_intent 9767092 0 0 QJYD Non Cursor LockFam dur
……
定位出错处
根据sp_who与sp_lock命令的结果,结合sysobjects和相应的操作员信息表。得到操作员及其在死锁时所操作的库表,便大约可以知道应用程序的出错处,再询问操作员在死锁时执行什么操作以进一步认证。最后查找程序并修正之。
篇10:Sybase数据库死锁对策数据库
死锁的发生对系统的 性能 和吞吐量都有重要影响,经检测发现,管理信息系统的死锁主要是因为两个或多个线程(登录)抢占同一表数据资源,引起长时间抢占同一资源不是因为我们需要处理的事务太复杂,时间太长,而往往是因为我们在前端应用程序对 数据库 作操
死锁的发生对系统的性能和吞吐量都有重要影响,经检测发现,管理信息系统的死锁主要是因为两个或多个线程(登录)抢占同一表数据资源。引起长时间抢占同一资源不是因为我们需要处理的事务太复杂,时间太长,而往往是因为我们在前端应用程序对数据库作操作时忘了提交。本文介绍一种处理解决这种死锁的方法。
Sybase封锁原理
数据共享与数据一致性是一对不可调和的矛盾,为了达到数据共享与数据一致,必须进行并发控制。并发控制的任务就是为了避免共享冲突而引起的数据不一致。Sybase SQL Server并发控制的方法是加锁机制(LOCKING).
锁的类型
clearcase/“ target=”_blank" >cccccc>可申请的锁已有的锁SUXS∨∨×U∨××X×××
Sybase SQL Server有三种封锁类型:排它锁(exclusive lock,简称X锁);共享锁(share lock,简称S锁);更新锁(update lock,简称U锁)。这三种锁的相容矩阵表如下:
×:表示不兼容。∨:表示兼容。
Sybase SQL Server是自动决定加锁类型的。一般来说,读(SELECT)操作使用S锁,写(UPDATE,INSERT和delete)操作使用X锁。U锁是建立在页级上的,它在一个更新操作开始时获得,当要修改这些页时,U锁会升级为X锁。
锁的力度
SQL Server有两级锁:页锁和表锁。通常页锁比表锁的限制更少(或更小)。页锁对本页的所有行进行锁定,而表锁则锁定整个表。为了减小用户间的数据争用和改进并发性,SQL Server试图尽可能地使用页锁。
当SQL Server决定一个语句将访问整个表或表的大多数页时,它用表锁来提供更有效的锁定。锁定策略直接受查询方案约束,如果update或delete语句没有可用的索引,它就执行表扫描或请求一个表锁定。如果update或delete语句使用了索引,它就通过请求页锁来开始,如果影响到大多数行,它就要请求表锁。一旦一个语句积累的页锁超过锁提升阈值,SQL Server就设法给该对象分配一个表锁。如果成功了,页锁就不再必要了,因此被释放。表锁也在页层提供避免锁冲突的方法。对于有些命令SQL Server自动使用表锁。
锁的状态
SQL SERVER加锁有三种状态:
1)意向锁(intend)―是一种表级锁,它表示在一个数据页上获得一个S或X锁的意向。意向锁可以防止其他事务在该数据页的表上获得排它锁。
2)阻塞(blocking,简记blk)―它表明目前加锁进程的状态,带有blk后缀的锁说明该进程目前正阻塞另一个需要获得锁的进程,只有这一进程完成,其他进程才可以进行。
3)需求锁(demand)―表示此时该进程企图得到一个排它锁。它可以防止在这一表或页上加过多的S锁,她表示某一事务是下一个去锁定该表和该页的事务。
需求锁是一个内部过程,因此用sp_lock是无法看见的。
死锁DEADLOCK
简单地说,有两个用户进程,每个进程都在一个单独的页或表上有一个锁,而且每个进程都想在对方进程的页或表上请求不相容锁时就会发生“死锁”。在这种情况下,第一个进程在等待另一进程释放锁,但另一进程要等到第一个进程的对象释放时才会释放自己的锁。
SQL Server检查是否死锁,并终止事务中CPU时间积累最小的用户(即最后进入的用户)。SQL Server回滚该用户的事务,并用消息号1205通知有此死锁行为的应用程序,然后允许其他用户进程继续进行,
在多用户情形下,每个用户的应用程序都应检查每个修改数据的事务是否有1205号消息,以此确定是否有可能死锁。消息号1025表示该用户的事务因死锁而终止并被回滚。应用程序必须重新开始这个事务处理。
查找死锁原因
既然管理信息系统长时间死锁的原因是由于我们提交或者是提交不当,那么我们就可以通过修改程序防止出现死锁。定位死锁出错处主要经过以下三步:
1)在死锁出现时,用SP_WHO,SP_LOCK获得进程与锁的活动情况。
2)结合库表sysobjects和相应的操作员信息表查出被锁的库表与锁住别人的操作员。
3)根据锁定的库表与操作员的岗位,可以估计出程序大约出错处。询问操作员在死锁时执行的具体操作即可完全定位出错处。最后查找程序并修改之。
用sp_who获取关于被阻碍进程的信息
系统过程sp_who给出系统进程的报告。如果用户的命令正被另一进程保持的锁阻碍,则:
◆status列显示“lock sleep”。
◆blk列显示保持该锁或这些锁的进程标识,即被谁锁定了。
◆loginame列显示登录操作员。结合相应的操作员信息表,便可知道操作员是谁。
Fid spid status loginame origname blk dbname cmd
0 1 lock sleep lm lm 18 QJYD SELECT
0 2 sleeping NULL NULL 0 master NETWORK HANDLER
0 3 sleeping NULL NULL 0 master NETWORK HANDLER
……
用sp_lock浏览锁
要得到关于当前SQL Server上保持的锁的报告,可用系统过程sp_lock [spid1[,spid2]],spid1,spid2是表master.dbo.sysprocesses中的sqlserver进程id号,用sp_who可以得到锁定与被锁定的spid号:
◆locktype列显示加锁的类型和封锁的粒度,有些锁的后缀还带有blk表明锁的状态。前缀表明锁的类型:Sh―共享锁,Ex―排它锁或更新锁,中间表明锁死在表上(”table”或’intent’)还是在页上(page). 后缀“blk”表明该进程正在障碍另一个需要请求锁的进程。一旦正在障碍的进程一结束,其他进程就向前移动。“demand”后缀表明当前共享锁一释放, 该进程就申请互斥锁。
◆table_id列显示表的id号,结合sysobjects即可查出被封锁的表名。
执行该进程后屏幕显示
Fid Spid locktype table_id page row dbname Class context
0 1 Sh_intent 678293476 0 0 QJYD Non Cursor LockFam dur
0 1 Sh_page 678293476 31764 0 QJYD Non Cursor Lock
0 18 Ex_intent 9767092 0 0 QJYD Non Cursor LockFam dur
……
定位出错处
根据sp_who与sp_lock命令的结果,结合sysobjects和相应的操作员信息表。得到操作员及其在死锁时所操作的库表,便大约可以知道应用程序的出错处,再询问操作员在死锁时执行什么操作以进一步认证。最后查找程序并修正之。
(责任编辑:铭铭)原文转自:www.ltesting.net
【Sybase安装。数据库】相关文章:
7.安装合同
8.安装合同范本
9.安装承诺书
10.数据库应用简历






文档为doc格式