第一篇:MSCS+FailSafe ORACLE数据库双机集群做HA小结
最近做了oracle HA 应用的方案,小结一下以供大家参考
硬件配置:
两台联想万全T630服务器((标配,每台服务器都有两块intel 82550网卡)
万全SUREFIRE200R磁盘阵列柜,配备13块18G的硬盘。它将用作群集磁盘
网络要求:
· 唯一的 NetBIOS 群集名称。
· 五个唯一的静态 IP 地址:两个用于专用网络的网卡,两个用于公用网络的网卡,还有一个用于群集本身。
· 用于群集服务的域用户帐户(所有节点必须是同一域的成员)。
· 每个节点都应该有两个网卡一个与公用网络连接,另一个与只包含群集节点的专用网络连接。
专用网络适配器建立节点对节点的通讯、群集状态信号和群集管理。每个节点的公用网络适配器都将群集与客户机所在的公用网络连接。
验证所有的网络连接是否正确,专用网络适配器只与其它专用网络适配器连接,而公用网络适配器与公用网络连接。这些连接如下面图 1 所示。在继续安装共享磁盘之前在每个群集节点上执行这些步骤。
第三步安装磁盘略过:
第四步装活动目录:
群集中的所有节点必须是同一域的成员,并能访问域控制器和 DNS 服务器。可以将它们配置为成员服务器或域控制器。如果您决定将一个节点配置为域控制器,那么您应该将同一域中的所有其它节点都配置为域控制器。此次把两个节点配置为域控制器。
注意事项:
如果域中没有DNS服务器,在安装活动目录时,使用第一个节点服务器作为DNS服务器,那么在安装第二台服务器的活动目录之前,在配置网卡的ip时,将DNS配置为第一台服务器的IP地址,这样,安装第二台服务器的活动目录,就可以做出正确的域名解析。
正确的做完以上几步就可以进行MSCS 的安装了:
备注 在第一个节点安装群集服务的过程中,在 Windows 2000 启动之前,要么将其它所有节点切断电源,要么使其停止运行。应该开启所有共享存储设备的电源。
1.单击开始,单击设置,然后单击控制面板。
2.双击添加/删除程序。
3.双击添加/删除 Windows 组件。
4.选择群集服务。单击下一步。
5.群集服务文件位于 Windows 2000 Advanced Server 或 Windows 2000 Datacenter Server CD-ROM 中。输入 x:i386(其中 x 是 CD-ROM 的驱动器号。)如果是从网络安装的 Windows 2000,则应输入适当的网络路径。(如果显示 Windows 2000 安装闪屏,则应将其关闭。)单击确定。
6.单击下一步。
7.单击我理解接受下述条件:只有硬件兼容列表上硬件的群集服务才能得到支持。
8.因为这是群集中的第一个节点,您必须创建群集本身。选择群集中的第一个节点,然后单击下一步。
9.按照表1输入群集名称,然后单击下一步。
10.键入在预先安装时创建的群集服务帐户的用户名。(在本例中,此用户名是 cluster。)不设密码。键入域名,然后单击下一步。
备注 一般说来您应该为此用户帐户提供一个安全的密码。
此时群集服务配置向导验证用户帐户和密码。
11.单击下一步。
配置群集磁盘
备注 默认情况下,不与系统盘在同一总线上的所有 SCSI 磁盘将出现在“被管理的磁盘”列表中。因此,如果节点有多个 SCSI 总线,那么也可能列出一些不用作共享存储设备(例如,内部的 SCSI 驱动器)的磁盘。应该将这样的磁盘从“被管理的磁盘”列表中删除。
1.在添加或删除被管理的磁盘对话框指定群集服务将使用共享 SCSI 总线上的哪些磁盘。按需要添加或删除磁盘,然后单击下一步。
2.单击配置群集网络对话框中的下一步。
3.一定要确保网络名称和 IP 地址符合“公用”网络的网络接口。
4.选中为群集使用启用这个网络复选框。
5.选择选项只用于客户访问(公用网络)。
6.单击下一步。
7.在下一个对话框中配置专用网络。一定要确保网络名称和 IP 地址符合“专用”网络的网络接口。
8.选中为群集使用启用这个网络复选框。
9.选择选项只用于内部群集通讯。
10.单击下一步。
11.确保列表中的第一个连接是专用群集连接,然后单击下一步。
要点 设置连接的顺序时一定要将专用群集连接放在列表的第一位。
12.按照表1输入群集唯一的 IP 地址和子网掩码,然后单击下一步。
群集服务配置向导自动将群集 IP 地址与一个公用网络或混合网络相关联。它使用子网掩码来选择正确的网络。
13.单击完成以完成第一个节点的群集配置。
群集服务安装向导复制完成群集服务安装所需要的文件,从而结束第一个节点的安装过程。复制完文件后,将创建群集服务注册表项,在仲裁资源上创建日志文件,然后在第一个节点上启动群集服务。
会出现一个对话框,告诉您群集服务已成功地启动。
14.单击确定。
15.关闭添加/删除程序窗口。
可以验证群集安装
使用“群集管理器”管理单元来验证第一个节点上的群集服务安装是否成功。
配置第二个节点
备注 在本节中,让节点 1 和所有共享磁盘的电源保持打开状态。开启第二个节点的电源。
在第二个节点上安装群集服务所需要的时间比第一个节点要少。安装过程基于第一个节点的配置,配置第二个节点的群集服务网络设置。
在第二个节点上安装群集服务开始时的步骤与第一个节点完全相同。在第二个节点的安装过程中,第一个节点必须运行。
安装过程与在第一个节点上安装群集服务所采用的步骤基本相同,只是有下面几点区别:
1.在创建或加入群集对话框中,选择群集中的第二个或下一个节点,然后单击下一步。
2.输入前面创建的群集名称(在实验中是 LegendCluster),然后单击下一步。
3.不要选中用下面帐户连接到群集。群集服务配置向导将自动提供在安装第一个节点时选择的用户帐户的名称。要使用安装第一个群集节点时所使用的同一帐户。
4.输入帐户的密码(如果有的话)然后单击下一步。
5.在下一个对话框中,单击完成以完成配置。
6.群集服务将启动。单击确定。
7.关闭添加/删除程序。
配置集群属性
用右键单击ClusterGroup,然后单击属性。为了测试系统故障转移和故障回复的性能,在实验中,设定首选服务器为SRV1,故障转移阈值设为0,并选定故障回复为立即。
正确的完成以上步骤时,oracle HA 应用基本上就已经完成了一大半,接下来就可以进行FAILSAFE 的安装了,如果没有正确安装MSCS,是不能进行以下的安装的,因为Oracle Fail Safe 是架构在 Microsoft Cluster Server(MSCS)上的一个 Oracle 产品,必须确保其安装的正确性。
安装步骤:
1、在节点一上安装 Oracle 9.0.1,选择自定义安装,安装过程中选择部创建数据库;
2、重新启动节点一;
3、在节点二上安装 Oracle 9.0.1,选择自定义安装,安装过程中选择部创建数据库;
4、重新启动节点二;
5、在节点一上创建要添加到集群中的数据库,新数据库不要配置 Net8,即不要配置 listener.ora 和 tnsnames.ora 文件。注意 Control 文件、redo log files 和 data files 必须创建在磁盘柜的共享分区上;
6、在节点一和节点二的注册表中相应位置添加第五步所创建的数据库的 ORACLE_SID;
7、在节点一上安装 FailSafe 3.2;
8、重新启动节点一;
9、在节点二上安装 FailSafe 3.2;
10、重新启动节点二;
11、在两台机器上修改文件c:winntsystem32driversetchosts 如下:
192.0.35.1 clunode1(节点1)
192.0.35.2 clunode2(节点2)
192.0.35.100 mycluster(MSCS Cluster 的别名,也就是虚拟 IP的别名)
注意节点上listener 使用的 IP 地址应该是虚拟 IP;
12、打开 Oracle Fail Safe Manager
Start-> Programs-> OraHome91>-> Oracle Fail Safe Manager
打开后出现 Add Cluster to Tree 对话框,在该对话框里输入 CLUSTER 名称,会
提示输入在域里有管理权限的用户名和密码;输入后会出现 Verify Cluster 对话
框,对该集群各项资源进行有效性验证;
13、在每台节点机上检查是否有服务 OracleMSCSServices,并启动该服务;
14、在每台节点机上启动集群管理器(启动-> 程序-> 管理工具-> 集群管理器),在 Cluster Group 检查是否有 Oracle Services for MSCS 这一项;并检查 Resource Types 中是否有 Oracle Database 和 Oracle TNS Listener。
15、在 Oracle Fail Safe Manager 中的Groups 菜单里选择 Create;打开 Create Group Wizard 后可以设置 failover 和 failback 策略,并自动打开 Add Resource to Group Wizard 可以向组添加virtual address(选择Resources,然后Add to Group)。
16、在 Troubleshooting 菜单上选择 Verify Standalone Database 验证 Oracle数据库以及 Oracle Net 配置,该命令确认 Oracle Fail Safe 可以访问数据库,并且 standlone 数据库位于共享分区上;
17、在 Resources 菜单上选择 Add to Group,然后选择 Oracle Database打开 Add Resource to Group Wizard,该向导用来将 single-instance Oracle database server 配置为基于 MSCS 的高可用性数据库服务器;
其他说明:
在安装完 fail safe 后,Windows 2000 中的群集管理器中 群集配置 –〉 资源类型 –〉 下会出现两个资源类型:Oracle Database 和 Oracle TNS Listener,两者使用的资源 DLL 都是 FsResOdbs.dll。
在 FailSafe 里添加组 grptest 并将数据库群集添加后,在群集管理器里也增加了该组,组包含的内容有:IP Address、Network Name scsi817、Disk R:、OracleOraHome81TNSListenerFslscsi817 和 LEGEND(数据库实例名)
其中:(C:winntsystemdriversetc 的内容如下:)
192.0.35.1 t630r
192.0.35.3 t630l
192.0.35.100 mycluster(群集的名称)
192.168.34.71 scsi817(Oracle 集群使用的 IP 和网络名称)
基本上ORACLE HA 就已经完成了,接下来就是把应用做成服务添加到集群管理器里。
这种方式,安装应用都非常方便,又可以做到系统的高可靠性,应该说物廉价美吧,不过有些缺点就是不能做流量均衡等。
第二篇:数据库集群实施方案
柳州东投数据库系统配置实施文档 技术背景 数据库系统安全性 安全性介绍 数据库系统安全是指为数据库系统采取的安全保护措施,防止系统软件和其中数据不遭到破坏、更改和泄漏。
数据库安全的核心和关键是其数据安全。数据安全是指以保护措施确保数据的完整性、保密性、可用性、可控性和可审查性。由于数据库存储着大量的重要信息和机密数据,而且在数据库系统中大量数据集中存放,供多用户共享,因此,必须加强对数据库访问的控制和数据安全防护。
数据库系统安全的层次与结构 一般数据库系统安全涉及 5 个层次:
(1)用户层:侧重用户权限管理及身份认证等,防范非授权用户以各种方式对数据库及数据的非法访问;(2)物理层:系统最外层最容易受到攻击和破坏,主要侧重保护计算机网络系统、网络链路及其网络节点的实体安全;(3)网络层:所有网络数据库系统都允许通过网络进行远程访问,网络层安全性和物理层安全性一样极为重要;(4)操作系统层:操作系统在数据库系统中,与 DBMS 交互并协助控制管理数据库。操作系统安全漏洞和隐患将成为对数据库进行非授权访问的手段;(5)数据库系统层:数据库存储着重要程度和敏感程度不同的各种数据,并为拥有不同授权的用户所共享,数据库系统必须采取授权限制、访问控制、加密和审计等安全措施。
为了确保数据库安全,必须在所有层次上进行安全性保护措施。若较低层次上安全性存在缺陷,则严格的高层安全性措施也可能被绕过而出现安全问题。
数据库系统安全 解决方案概述 环境安全 环境安全是指数据库所运行的软硬件环境的安全控制。正确的架构设计是数据库及其他应用稳定、安全的运行最有力保障,一个正确的架构设计可以较好的体现在物理环境中,通过比较简单的对物理环境的设定,就可以屏蔽大量的安全隐患。
错误的架构设计会导致物理结构散乱,无论从运维还是管理上来说,都有相当大的困难,较多的物理漏洞必须通过繁杂的软件安全控制来屏蔽风险,抛开安全本身无法较好保证而言,更换服务器时对软件的设置相当困难。
软硬件架构 按照较大的框架进行分割,我们可以知道任何安全的架构都是传统三层架构的扩展,根本还是在于表示层,业务逻辑层,数据访问层,对于数据库看来则是应用层,中间层,数据层。
逻辑上实现三层架构比较容易,在软件中分离数据访问即可,但是往往我们都忽略了物理三层架构的设置,很多系统往往在软件上实现了三层架构,但是对应的三层架构缺共同存储与一台设备上,这是比较危险的做法,当然从成本出发这是比较节省的方案,存在的问题也显而易见,管理混乱,安全性降低,如果系统没有做好较好的安全控制,那么这个系统就会形成一通百通的局面。
不过成本、效率、高可用性永远是软件系统的铁三角,不同的系统对三者的要求也不一样,我们刚才说到的物理三层结构从成本上来说是最高的,但是大大提高了效率和高可用性中的安全性与稳定性。
数据库架构 数据库自身也是一个应用软件,自身也分为三层架构,应用层,交换层,数据层。如何使数据库具有高效性,高可用性是数据库运维中的重点。
一般来说负荷较大的应用系统都会使用共享存储的模式将数据存储剥离开来,应用服务本身则是使用负载均衡的模式进行部署。这样的好处是结构清晰可靠,高可用,高性能,数据库可快速或无缝切换,但是相对其他普通方案而言成本较高。
物理访问控制 物理访问控制主要是指在现实世界中对服务器、数据存储的访问控制。物理访问控制主要出现在自建机房中,因托管机房访问控制是由托管服务提供商完成的。
主要的物理访问控制机制要满足,可审计性,非单一性,访问限制等条件。
访问限制:通过各类门禁隔绝非相关人员。
非单一性:进入核心机房任何情况下必须有两人同行。
可审计性:对于一切操作(包括进出机房,操作数据等)必须留下操作痕迹。
操作系统设置 操作系统是安装数据库应用服务的基础,很难想象一个不健康的操作系统之上能够运行一个稳定高效的数据库服务。
在操作系统的层面,就安全而言主要还是控制非法终端绕过中间层对数据库进行直接访问。
其主要方法有:
1、数据库系统的宿主操作系统除提供数据库服务外,不得提供其它网络服务,这主要是为了尽量减少端口开放数量以及访问量。
2、应在宿主操作系统中设置本地数据库专用帐户,并赋予该账户除运行各种数据库服务外的最低权限; 3、对数据库系统安装目录及相应文件访问权限进行控制,如:禁止除专用账户外的其它账户修改、删除、创建子目录或文件。
网络安全控制 应用系统及数据库系统的网络安全控制其实类似于操作系统安全控制,核心内容是通过网络技术,分割物理或虚拟网络,并通过限制端口,限制访问终端,甚至限制访问内容,从而使非法终端不能绕过中间层直接连接到数据库或直接访问底层数据。
建设思路:所有独立的数据库应用均只能由指定的前端代理、HA 或中间层服务器进行访问,其他机器均不能访问数据库服务以及相应端口。为方便运维人员进行日常维护,可添加一至两台安全性较高的终端进入可访问列表,进行日常维护。
如能充分保证内网内其他机器的安全性,可适当降低该数据库访问列表权限,使内网均可访问。
应用安全 应用安全是泛指与数据库自身相关联的各种应用与设置安全,包括数据账户控制,数据库应用控制,数据库应用规范等。
数据库在安装成功后首先应该对数据库进行安全设置与性能调校,然后导入或新建数据库实例(非实例类为库),并制定相应的数据库操作、开发、维护规范,形成有效的管理机制,对于多实例对方案运行的数据库,必须针对不同的数据实例针对性地写出相应的巡检计划与警告、异常阀值,减少数据库因宕机造成的安全异常。
账户控制 帐户安全和口令策略是任何应用系统安全控制的核心机制,数据库也不例外。
账户设置原则 严禁不同的数据库系统使用相同的账户与口令; 重新命名数据库管理员帐户; 数据库应用账户必须与数据库管理员帐户分离; 删除或停用不需要的默认账户以及空账户。
账户分离原则 系统管理员:能够管理数据库系统中的所有组件及数据库; 应用数据库管理员:能够管理本数据库中的账户、对象及数据; 数据库应用用户:只能以特定的权限访问特定的数据库对象,不具有数据库管理权限。
权限控制原则 针对每个数据库账户按最小权限原则设置其在相应数据库中的权限; 系统管理权限:账户管理、服务管理、数据库管理等; 数据库管理权限:包括创建、删除、修改数据库等; 数据库访问权限:包括插入、删除、修改数据库特定表记录等。
使用数据库系统分配账户的方式鉴别数据库用户,不可使用宿主操作系统的账户鉴别代替数据库账户鉴别。
注:较高安全等级的数据库一般来说只给用户提供调用特定存储过程和函数的权限,该用户本身对数据库对象不可见。
应用控制 数据库应用控制是指应用系统或管理维护人员在操作数据库时的安全控制。
相关应用系统以及管理员必须使用满足操作条件的最小权限用户接入数据库。
数据库操作人员在操作数据库时,必须留有痕迹,最好是记录详尽的操作细节。
应用系统在开发中,最好对流程性对象(存储过程,函数等)中所做的对数据库数据有增、删、改的操作留下记录,写入相应的事件表。
流程性对象在开发完毕后应给予应用用户调用权限,并对对象本身进行封装加密,防止结构泄露。
操作系统管理员与数据库管理员原则上不应为同一人(SQL SERVER 除外),任何应用系统都应该制定审计制度,负责审计数据库操作。
应用系统接入数据库时的所有的连接串必须通过可更改的参数文件获取相关连接信息,不允许在程序开发中直接写入数据库相关信息。
所有数据库所执行的应用级操作均不得使用管理员账户进行操作,管理员账户仅仅用于数据库管理员进行维护、调优、与其他设置类操作。
针对于较高安全等级的数据库,数据库操作应尽量封装在流程性对象中,这样对安全性、高效性、可审计性都有极大提升。前端应用使用数据库时,只通过调用流程性对象完成。
禁止未授权的数据库系统远程管理访问,对于已经批准的远程管理访问,应采取安全措施增强远程管理访问安全,对于高级应用应修改数据库服务端口。
数据库规范 数据库规范是我们安全、高效地使用数据库的有力保障,也是我们快速查找问题,减少维护压力强有力的工具。
针对不同的数据库与应用系统在效能、安全、高可用性上有不同的要求。数据库工程师在制定数据库应用规范框架时,应保障各系统通用性与良好的扩展性。
根据数据库应用规范框架,对每个数据库系统最好建立独立的数据库规范文档,包括命名规范,操作规范,用户管理规范、运行维护规范等。
操作人员在对数据库进行维护,调优及其他操作时必须按照“规范”中描述的内容进行操作,并予以记录。
下级规范的制定必须定位于总体规范框架之内,如与规范框架有冲突,应及时对框架进行评估,并进行调整。
数据安全 数据安全范围比较大,概括来说可以包含:数据物理文件安全,系统冗余、容错,数据备份恢复等。数据安全的中心思想就是如何保证数据文件本身的安全及如何减少数据库中的脏数据问题。
数据库往往是一个应用系统的核心系统,而数据库的核心也就是数据库中的数据,如何保障数据文件的安全稳定是数据库最为重要又最为薄弱的一环。
同时,正确的数据可以让数据库稳定地运行,过多的错误数据不但影响用户正常使用,也会降低数据库运行效率,还可能导致数据库服务停机,更为严重的是感染正确数据,如何避免错误数据的产生?产生错误数据后如何进行清洗?这些问题都是数据库开发、应用中经常碰到的问题。
数据文件安全 数据文件是指存放电子数据的物理文件。
核心操作系统安全控制 物理文件拷贝复制管理 内外网文件传递管理 防火墙过滤关键字
数据库应用安全管理 我们通过以上形式来提升数据文件的安全系数,从根本上来说也就是通过“环境安全”与“应用安全”实现了数据文件安全。
数据备份恢复 数据备份及恢复 在数据库系统每次成功升级后,数据库管理员都应备份相应的数据库系统软件; 数据库管理员应制定数据备份计划,并按照计划定期备份数据库系统中的数据,妥善安全保存这些备份数据,防止备份数据的丢失、泄露与被篡改。
系统及数据恢复,要求数据库管理员应制定数据库系统及数据恢复流程,并至少对恢复流程作三次演练。
系统冗余、容错 数据库系统冗余是指对数据库服务以及核心数据通过冗余的方式,提高系统的稳定性。其主要实现手段还是使用各种集群服务通过共享存储的形式使用数据库。
容错这里主要指除开系统冗余之外的软件自身容错,比如异常的判定,预期异常的排除,错误代码处理,通过进行容错处理,可以降低系统以及数据库运行时产生错误的几率与错误数据产生几率,从而使系统更为稳定的运行。
注:数据库容错方面最好使用强判定模式,弱判定模式比较容易形成错误数据以及异常。
SQL server 2012 高可用性 高可用性介绍 自从 SQL Server 2005 以来,微软已经提供了多种高可用性技术来减少宕机时间和增加对业务数据的保护,而随着 SQL Server 2008,SQL Server 2008 R2,SQL Server 2012 的不断发布,SQL Server中已经存在了满足不同场景的多种高可用性技术。
在本项目组中,我们期待创建一个任何时刻都在线的数据库系统。但由于各种各样的因素,无法预估的灾难,需要提前采取各种措施来预防突发情况。微软的 SQL Server 提供了多种高可用性技术,这些技术主要包括:集群、复制、镜像、日志传送、AlwaysOn 可用性组以及其它诸如文件组备份还原、在线重建索引等单实例的高可用性技术。
数据库 高可用设计遵循的原则 RTO(Recovery Time Objective)
恢复时间目标,意味着允许多少宕机时间,通常用几个 9 表示,比如说 99.999%的可用性意味着每年的宕机时间不超过 5 分钟、99.99%的可用性意味着每年的宕机时间不超过 52.5 分钟、99.9%的可用性意味着每年的宕机时间不超过 8.75 小时。值得注意的是,RTO 的计算方法要考虑系统是 24*365,还是仅仅是上午 6 点到下午 9 点等。您还需要注意是否维护窗口的时间在算在宕机时间之内,如果允许在维护窗口时间进行数据库维护和打补丁,则更容易实现更高的可用性。
RPO(Recovery Point Objective)
恢复点目标,意味着允许多少数据损失。通常只要做好备份,可以比较容易的实现零数据损失。但当灾难发生时,取决于数据库损坏的程度,从备份恢复数据所需要的时间会导致数据库不可用,这会影响 RTO 的实现。一个早期比较著名的例子是某欧美的银行系统,只考虑的 RPO,系统里只存在了完整备份和日志备份,每 3 个月一次完整备份,每 15 分钟一次日志备份,当灾难发生时,只能够通过完整备份和日志备份来恢复数据,因此虽然没有数据丢失,但由于恢复数据花了整整两天时间,造成银行系统 2 天时间不可用,因此流失了大量客户。另外一个相反的例子是国内某在线视频网站,使用 SQL Server 作为后端关系数据库,前端使用了 No-SQL,定期将 No-SQL 的数据导入关系数据库作为备份,当灾难发生时最多允许丢失一天的数据,但是要保证高可用性。
预算 RTO 和 RPO 统称为 SLA(服务水平协议),设计高可用性策略时,要根据业务来衡量满足何种程度的 SLA,这要取决于预算以及衡量不同 SLA 在故障时所造成的损失。SLA 并不是越高越好,而是要基于业务需求,通常来说,在有限的预算之下很难实现很高的 SLA,并且即使通过复杂的架构实现较高的 SLA,复杂的架构也意味着高运维成本,因此需要在预算范围之内选择合适的技术来满足 SLA。
SQL Server 高可用性解决方案概述 SQL Server 的高可用性方案有以下几种方式来实现:
故障转移集群 故障转移集群为整个 SQL Server 实例提供高可用性支持,这意味着在集群上某个节点的 SQL Server 实例发生了硬件错误、操作系统错误等会故障转移到该集群上的其它节点。通过多个服务器(节点)共享一个或多个磁盘来实现高可用性,故障转移集群在网络中出现的方式就像单台计算机一样,但是具有高可用特性。值得注意的是,由于故障转移集群是基于共享磁盘,因此会存在磁盘单点故障,因此需要在磁盘层面部署 SAN 复制等额外的保护措施。最常见的故障转移集群是双节点的故障转移集群,包括主主节点和主从节点。
事务日志传送 事务日志传送提供了数据库级别的高可用性保护。日志传送可用来维护相应生产数据库(称为“主数据库”)的一个或多个备用数据库(称为“辅助数据库”)。发生故障转移之前,必须通过手动应用全部未还原的日志备份来完全更新辅助数据库。日志传送具有支持多个备用数据库的灵活性。如果需要多个备用数据库,可以单独使用日志传送或将其作为数据库镜像的补充。当这些解决方案一起使用时,当前数据库镜像配置的主体数据库同时也是当前日志传送配置的主数据库。事务日志传送可用于做冷备份和暖备份的方式。
数据 库镜像 数据库镜像实际上是个软件解决方案,同样提供了数据库级别的保护,可提供几乎是瞬时的故障转移,以提高数据库的可用性。数据库镜像可以用来维护相应生产数据库(称为“主体数据库”)的单个备用数据库(或“镜像数据库”)。
因为镜像数据库一直处于还原状态,但并不会恢复数据库,因此无法直接访问镜像数据库。但是,为了用于报表等只读的负载,可创建镜像数据库的数据库快照来间接地使用镜像数据库。数据库快照为客户端提供了快照创建时对数据库中数据的只读访问。每个数据库镜像配置都涉及包含主体数据库的“主体服务器”,并且还涉及包含镜像数据库的镜像服务器。镜像服务器不断地使镜像数据库随主体数据库一起更新。
数据库镜像在高安全性模式下以同步操作运行,或在高性能模式下以异步操作运行。在高性能模式下,事务不需要等待镜像服务器将日志写入磁盘便可提交,这样可最大程度地提高性能。在高安全性模式下,已提交的事务将由伙伴双方提交,但会延长事务滞后时间。数据库镜像的最简单配置仅涉及主体服务器和镜像服务器。在该配置中,如果主体服务器丢失,则该镜像服务器可以用作备用服务器,但可能会造成数据丢失。高安全性模式支持具有自动故障转移功能的备用配置高安全性模式。这种配置涉及到称为“见证服务器”的第三方服务器实例,它能够使镜像服务器用作热备份服务器。从主体数据库至镜像数据库的故障转移通常要用几秒钟的时间。数据库镜像可用于做暖备份和热备份。
复制 复制严格来说并不算是一个为高可用性设计的功能,但的确可以被应用于高可用性。复制提供了数据库对象级别的保护。复制使用的是发布-订阅模式,即由主服务器(称为发布服务器)向一个或多个辅助服务器或订阅服务器发布数据。复制可在这些服务器间提供实时的可用性和可伸缩性。它支持筛选,以便为订阅服务器提供数据子集,同时还支持分区更新。订阅服务器处于联机状态,并且可用于报表或其他功能,而无需进行查询恢复。SQL Server 提供四种复制类型:快照复制、事务复制、对等复制以及合并复制。
AlwaysOn AlwaysOn 故障转移群集实例利用 Windows Server 故障转移群集(WSFC)功能通过冗余在服务器实例级别(故障转移群集实例(FCI))提供了本地高可用性。FCI 是在 Windows Server 故障转移群集(WSFC)节点上和(可能)多个子网中安装的单个 SQL Server 实例。在网络上,FCI 表现得好像是在单台计算机上运行的 SQL Server 实例,但它提供了从一个 WSFC 节点到另一个 WSFC 节点的故障转移(如果当前节点不可用)。当服务器上出现硬件或软件故障时,连接到该服务器的应用程序或客户端将会停机。在将 SQL Server 实例配置为 FCI(而非独立实例)时,该 SQL Server 实例的高可用性受到 FCI 中提供的冗余节点的保护。在 FCI 中,一次只能有一个节点拥有 WSFC 资源组。
在出现故障(硬件故障、操作系统故障、应用程序或服务故障)或进行计划的升级时,该资源组的所有权就会转移至另一个 WSFC 节点。此过程对于连接到 SQL Server 的客户端或应用程序是透明的,可以最大限度地缩短出现故障时应用程序或客户端的停机时间。
故障转移群集实例提供的一些主要优点:
通过冗余提供实例级的保护 在出现故障(硬件故障、操作系统故障、应用程序或服务故障)时自动进行故障转移 支持多种存储解决方案,包括 WSFC 群集磁盘(iSCSI、光纤信道等)和服务器消息块(SMB)文件共享 使用多子网 FCI 或在 AlwaysOn 可用性组中运行 FCI 托管数据库的灾难恢复解决方案。
利用 Microsoft SQL Server 2012 中的新的多子网支持功能,多子网 FCI 不再需要虚拟 LAN,因此可提高多子网 FCI 的可管理性和安全性 故障转移过程中无需重新配置应用程序和客户端 用于实现自动故障转移的针对具体触发器事件的灵活的故障转移策略 通过使用专用和持久的连接执行定期的详细运行状况检测,实现可靠的故障转移 通过间接后台检查点在故障转移期间实现可配置性和可预测性 故障转移期间限制对资源的使用 AlwaysOn 可用性组基于数据库(组)级别,是将一组用户数据库(可以是一个或多个)划到一个组中。每组可用性数据库都由一个可用性副本承载。可用性副本包括一个主副本和一到四个辅助副本。
主副本用于承载主数据库,辅助副本则承载一组辅助数据库并作为可用性组的潜在故障转移目标。主副本使主数据库可用于客户端的读写连接,实现对数据库的更改操作。
同时在数据库级别进行同步。主副本将每个主数据库的事务日志记录发送到每个辅助数据库。
每个辅助副本缓存事务日志记录,然后将它们还原到相应的辅助数据库。
主数据库与每个连接的辅助数据库独立进行数据同步。因此,一个辅助数据库可以挂起或失败而不会影响其他辅助数据库,一个主数据库可以挂起或失败而不会影响其他主数据库。此外,用户可以借助辅助数据库来实现近实时的报表查询,将查询的负载分担到只读副本。相对于数据库群集及镜像来说,可以更好的利用硬件资源,从而提高 IT 效率并降低成本。
数据库 系统 实施 方案 技术方案概述 考虑到本项目的需求和最佳性能,为了达到最佳可用性,方案采用两台数据库服务器做故障转移集群,连接同一台存储做数据库的共享存储,实现故障自动转移。
数据库系统处于单独一个 VLAN,与其他系统默认进行网络隔离。通过交换机访问规则,控制业务系统与数据库系统的访问,提升系统的安全性。
规划部署图 数据库服务器10.0.10.101数据库服务器10.0.10.102云服务器主域控制器10.0.10.103云服务器副域控制器10.0.10.104磁盘阵列核心交换机 环境要求 硬件要求 序号 名称 数量 配置要求 备注 1 主域控制器 1 CPU 双核 2.2GHz,8G 内存,100G 硬盘 云主机 2 副域控制器 1 CPU 双核 2.2GHz,8G 内存,100G 硬盘 云主机 3 数据库服务器 2 4 颗 Intel 10 核处理器 Xeon E7-4830 v2,内存 64GB 华为 RH5885 V3 4 磁盘柜 1 8 个 8G FC 和 8 个 10GE 前端主机接口;8 个48Gbps SAS3.0 磁盘通道 华为 OceanStor 5800 V3
软件要求 序号 名称 数量 配置要求 备注 1 操作系统 4 Windows Server 2012 R2 标准版
数据库软件 2 SQL Server 2012 企业版
网络 环境要求 1.安装实施期间,服务器要求能实现互联网访问。
2.运行维护期间,仅允许应用服务器 IP 访问数据库服务端口;仅允许数据库服务器访问域控制器服务器;禁止其余出站访问。
IP 地址划分
节点一 节点二 外网地址 10.0.10.101/24 10.0.10.102/24 网关 10.0.10.1 10.0.10.1 心跳地址 172.30.0.1/30 172.30.0.2/30 群集地址 10.0.10.105/24 MSDTC 地址 10.0.10.106/24 SQL Server 地址 10.0.10.107/24 主域服务器地址 10.0.10.103/24(以实际为准)副域控制器地址 10.0.10.104/24(以实际为准)首选 DNS 服务器 10.0.10.103(以实际为准)备用 DNS 服务器 10.0.10.104(以实际为准)实施 步骤 故障转移集群的前提条件
使用 Windows 域帐户
基于 Windows Server Fail-over Cluster
共享存储至少提供一个 LUN,数据库文件(mdf/ndf/ldf)将安装在该 LUN
SQL Server 标准版/商业智能版(仅直接 2 个节点),或者企业版/数据中心版本(最多 16个节点)
部署 SQL Server 群集的步骤
确认 Windows Fail-over Cluster
安装 MSDTC(推荐)
安装单节点的 SQL Server Fail-over Cluster
向 SQL Server Fail-over Cluster 添加节点
数据库运维 ?? 运行监控 ??? 备份策略 ??? 应急恢复 ??? 附件:数据库集群部署操作文档 Windows server 2012 系统主域的安装配置 配置 IP 地址和 DNS 以及属性设置
关闭防火墙
域功能的添加 打开服务器管理中的仪表板 点“添加角色和功能”
点“下一步”
点“下一步”
选择本机服务器名称 点“下一步”
把 Active Directory 域服务勾选 点“下一步”
什么都不选,点“下一步”
点“下一步”
点“安装”
域功能的安装 域功能添加完成后不关闭此窗口(如果关闭此窗口,可在服务器管理中的仪表板 点“更多”->操作->将此服务器提升为域控制器),点“将此服务器提升为域控制器”
选择“添加新林(F)
” 并填入根域名(R)
点“下一步”
填入服务还原模式密码后,点“下一步”
点“下一步”
点“下一步”
点“下一步”
点“下一步”
点“安装”
安装完成后将自动重启。
进系统后关闭域网络设置防火墙
SQL 用户的创建和组策略的设置 创建 SQL 用户 服务器管理器->工具->Active Directory 用户和计算机
在填写姓名和用户登录名
填写密码以及修改密码属性
填写密码以及修改密码属性
SQL 用户创建完成 设置组策略 在 服务器管理器->工具->组策略管理
点 Default Domain Policy->设置 右键“策略”点“编辑”
点开“计算机配置”子选项的“密码策略”
修改密码最长使用期限为密码不过期,其他密码策略可根据实际情况设置
Windows server 2012 额外域控制器的安装配置 配置 IP 地址和 DNS 以及属性设置
关闭防火墙
加入域 右键计算机 属性->
更改设置->更改->选择“域”并填入主域名->点“确定”->填写账户名(administrator)密码******->点“确定”
提示欢迎加入 XXXX.com 域
点“确定”服务器自动重启
重启后必须用域账户登录 域名(yy)账户名(administrator)
域功能的添加 域功能的添加和主域一样 域功能的安装 域功能添加完成后不关闭此窗口(如果关闭此窗口,可在服务器管理中的仪表板 点“更多”->操作->将此服务器提升为域控制器)
点“将此服务器提升为域控制器”
选择“将域控制器添加到现有域(D)”并填写或选择域名
填写密码并点“下一步”
点“下一步”
点“下一步”
点“下一步”
点“下一步”
点“安装”
安装完成后自动重启,重启后用域账户登录。
进系统后关闭域网络设置防火墙。
群集的配置创建 节点一配置 1.外网 IP
掩码 网关 DNS 的设置
2.心跳 IP 的设置 填写 IP 地址并点“高级(V)
”
在 DNS 选项中“去掉在 DNS 中注册此链接的地址(R)”
在你 WINS 选项中“去掉禁用 TCP/IP 上的 NetBIOS(S)”
3.网口绑定顺序调整
在网络连接里调出菜单栏
点 高级->高级选项 在“连接”里把外网调到顶端 心跳调到外网下面
4.NET Framework 3.5 功能和故障转移群集添加 安装.NET Framework 3.5 功能(安装 SQL 数据库必须安装此功能)和故障转移群集
在次向导要“指定备用源路径”(即光驱所在路径)
把系统盘放入光驱(.NET Framework 3.5 功能需要光盘安装)
填入路径(即 光盘所在盘符:sourcessxs)
开始安装
5.加入域 完成后加入域不能升级额外的域控制器(加入域和额外的域控制器加入域一样) 加入域后服务器会自动重启 重启后一定要用域账户登录即:域名administrator 进系统后关闭域网络设置防火墙
节点二 配置 外网 IP
掩码 网关 DNS
心跳 IP
其他设置都和节点一一样
群集的创建 在创建群集之前一定要确定两节点域服务器之间能够相互通讯 然后在两节点任意一节点打开“服务器管理器->工具->故障转移群集管理器”
点“验证配置(L)”
点“下一步”
点“浏览->高级->立即查找”然后选择要创建群集的两节点 点“确定”
点“下一步”
点“完成”
开始测试
点“下一步”
填写群集名和群集 ip 后 点“下一步”
点“下一步”
开始创建群集
点“完成”
创建成功后打开“故障转移群集管理器”查看资源联机情况
MSDTC 创建 右键群集名进入“配置角色(R)”
点“下一步”
选择“分布式事物协调器(DTC)” 点“下一步”
填写角色名称和 ip 地址 点“下一步“
选择磁盘
点“下一步”
完成安装
SQL Server 2012 安装 节点一上 SQL Server 2012 安装 进入 SQL Server 2012 安装文件 双机 setup 点“安装”后选择“新的 SQL Server 故障转移群集安装”
检测安装规则
在此可选择版本
选择“我接受许可条款(A)” 点“下一步”
产品更新检测(此次测试环境应连接外网检测到有一更新包并自动下载)点“下一步”
产品更新检测(此次测试环境应连接外网检测到有一更新包并自动下载)点“下一步”。
补丁自动安装。
安装环境检测全部通过(如果环境没连接外网可能会生成一警告即:Microsoft.net 应用程序 安全)
点“下一步”
点“下一步”
点“下一步”
点“下一步”
填写SQL Server 网络名称(W)以及更改其他设置后 点“下一步”
点“下一步”
点“下一步”
选择数据盘后点“下一步”
填写SQL Server 2012 的ip 地址 点“下一步”
选择账户名
选择 浏览->高级->立即查找 选择账户并点“确定”(此账户是在域控器服务器中创建的数 据库账户)
填写密码后 点“下一步”
填写 sa 账户密码并添加账户(此处添加的是当前用户)
查看数据目录是否正确
查看 FILESTREAM 设置 点“下一步“
添加账户(此处添加的是当前用户)
查看数据目录是否正确 点“下一步“
点“下一步“
点“下一步“
点“下一步“
点“安装“
正在安装
安装完成节点二上 SQL Server 2012 安装 进入 SQL Server 2012 安装文件 双机 setup 点“安装”后选择“向 SQL Server 故障转移群集添加节点”
安装规则检测
在此可选择版本(和节点一要一致)
选择“我接受许可条款(A)” 点“下一步”
产品更新检测(此次测试环境应连接外网检测到有一更新包并自动下载)点“下一步”
补丁自动安装
安装环境检测全部通过(如果环境没连接外网可能会生成一警告即:Microsoft.net 应用程序安全)
点“下一步“
点“下一步“
点“下一步“
填入 sql 账户密码 点“下一步”
点“下一步”
添加节点规则检测通过 点“下一步”
点“安装”
正在安装
安装完成
第三篇:数据库小结
数据库总结
1、数据库开课6天,到今天已全部结束
2、学习内容
一、数据库的安装与删除:已独立上机操作实现。
二、数据利器sql 1)用sql进行单表查询:
查询语句: select 所查内容 from 表 where 条件
排序: select 所查内容 from 表 where 条件order by排序的依据
分组:select 所查内容 from 表 where 条件 group by 分组依据 其他要显示的内容(having 条件)
字段运算查询:select 运算 from表
变换查询:select 原名 新名 from 表
2)多表查询:
无条件多表查询 select 所差内容 from 多个表
等值多表查询
select 所差内容 from 多个表 where 一个
表内容=另一个表内容
非等值多表查询select 所差内容 from 多个表 where 一个
条件 and(or)其他条件
3)嵌套查询
带in、any(some)、all、exist的嵌套查询:
select 所查内容 from 表 where 内容 in(select 所查
内容 from 表 where 条件)
注意:any(some)包括等于条件、all不包括
并(union)、交(intersect)、差操作(minus): 4)常用的函数查询
Ceil(n)取大于等于n的最小整数
Floor(n)取小于等于n的最大整数
Mod(m,n)取m整除n后的余数
Pow(m,n)取m的n次方
Round(m,n)取四舍五入,保留小数点后n位
Sign(n)n》0取1;n=0取0;n《0取-1
Avg(字段名)求平均值
Count(字段名)或者count(*)统计总数
Min(字段名)计算数值型字段最小数
Max(字段名)计算数值型字段最大数
Sum(字段名)计算总数 5)录入数据
单行录入:Insert into 数据表(字段1,2。。)values
(字段1的值,2的值。。)
多行录入:insert into 数据表(字段1,2。)(select
(字段1或运算,2或运算。。)from
数据表 where 条件)表间数据复制:create table 表名 as(select 字段from原
有的表where 条件)
6)删除记录
删除记录:Delete from 数据表 where 条件
整表数据删除:truncate table 数据表 7)更新数据
直接赋值更新:update 数据表 set 字段名1=新的赋值,字段名2=新的赋值。where条件
嵌套更新:update 数据表 set 字段名1=(select 字段列
表 from 数据表 where 条件),字段名(select字段列表 from 数据表 where条件)。。
三、编程进阶Pl/sql 1)程序结构
Delacre
定义语句段
Begin
执行语句段
Exception
异常处理语句段 End 2)基本语法
定义变量%type:获得字段的数据类型
定义变量%rowtype:获得整个记录的数据类型f 定义记录类型变量 :type 记录类型 is record()
定义一维表类型变量:type 表类型 is table of 类型 index by
binary_integer, 表变量名 表类型
定义多维表类型变量
3)表达式
数值表达式:加+,减-,乘*,除/,乘方**
字符表达式:连接符号||
关系表达式(9种): 4)事务处理
提交:Committee
回滚:rollback
保存点:savepoint 5)游标
定义、打开、提取、关闭 6)过程
创建、查询、修改、执行
·
第四篇:数据库问题小结
学习小结 1.前言:
前段时间的学习一直都没有融入实际的操作,因此这个阶段的学习我想结合着数据库来对配置数据进行一个定位。为了达到这个目的我就决定再我自己机子上安装oracle数据库,并安装omm网管服务器软件,虽然这个过程自己自认为已经相当娴熟了,(呵呵)可是实际的操作中由于数据库,网管软件安装的先后顺序不同出现了很多的问题。在这里我就想把我所遇到的问题以及解决办法告诉大家。
2.安装数据库
首先声明下我是在window下安装我的数据库软件的,因此配置过程不像linux上面安装时需要做诸多修改。虽然自己以前也装过,但是为了提高准确性还是从网管部人那里要了一个安装文档,一切按部就班按着文档走也没出现什么问题。直到配置监听程序时候出现了点问题:这里需要解释下我的数据库实例名为:tomc,IP为:10.62.88.71。
2.1 监听问题
在配置完监听程序之后我按照文档在listener.ora文件中加入了
(SID_DESC =(SID_NAME = tomc(ORACLE_HOME = D:oracleproduct10.2.0db_1)(global_dbname = tomc)也就是加了一个tomc的数据库监听实例,本来这个文件里面是有一个默认的监听实例,想想也是有道理的我就没多想,继续进行本地net服务名配置,在即将结束的时候输入网络服务名,一般默认输入数据库实例名(记住这点和listener.ora文件里的监听实例是必须对应的)。可是文档中输入的是:
开始我也没细想,就按照文档完成了输入,结果进行连接测试的时候老测试不成功。出现这样的提示:
我就对前面的配置进行了检查最后发现应该是刚才那个网络服务名出现了错误。如果设置成tomc_10.61.88.71的话在tnsnames.ora文件中会相应的生成
TOMC_10.61.88.71 =(DESCRIPTION =(ADDRESS =(PROTOCOL = TCP)(HOST = 10.61.88.718)(PORT = 1521))(CONNECT_DATA =(SID = TOMC)))而我们前面的监听程序里面却是tomc,因此导致连接不成功。意识到这一点之后我决定不按照文档了(反正这一段自己以明白),在配置监听程序的时候listener.ora文件我不做修改采用默认,本地Net服务名配置时网络名我设置成tomc_10.62.88.71,其余按照规定的填写。可是奇怪的事情又发生了,当我测试连接的时候:
然后貌似卡住了,什么都不显示了。。
2.2 注册表问题
我百思不得其解,颇为郁闷,自信心受到严重的打击,哈。不过既然问题出来了,就要想办法解决,首先我对前面的配置数据默默的回想了一遍确定没什么问题,然后考虑到是否是上一次配置失败对这次的连接有了影响从而导致局部死机的情况出现。
1.我想到了关闭进程,在任务管理器中我讲自己怀疑有可能的进程都一一关掉,结果丝毫没有发生任何变化。。。。。。失败。2.最后打开注册表编辑器(运行regedit),我搜索 oracle 字段,鼠标直到:
具体的东西也看不明白,不过看到OracleOraDb10g_home1TNSListener这个子树。我就意识到或许是由于它在作祟,第一次错误配置时已经在注册表中生成了相应的信息,后面的配置可能无法对他进行覆盖。虽然原因不是很明白但是大概可以定位到这里了,我就将这个表项删除,然后重启机器。(不知道linux服务器遇到是否会遇到这个问题)机器起来后按照刚才的监听配置完成之后测试:
成功!
3.导入数据库备份数据
这里先做个说明:早先我从网管服务器上导出了一份数据,此时我想讲这份数据导入到我自己数据库中,这样我自己也可以随时查看并做修改。文件存放的目录为:D:网管版本包
3.1缺少指定导入用户参数
懒得用工具了,我就随手打开命令端口输入:
结果导入失败 生成相应的日志文件,内容如下:
连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0Production With the Partitioning, OLAP and Data Mining options
经由常规路径由 EXPORT:V10.02.01 创建的导出文件
已经完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的导入.正在将 SYSTEM 的对象导入到 SYSTEM.正在将 UEP 的对象导入到 UEP IMP-00003: 遇到 ORACLE 错误 1435 ORA-01435: 用户不存在
成功终止导入, 但出现警告。
这个时候我真郁闷,开始我怀疑命令错误了,可是这个命令自己早已经乱熟于心了。不过我还是进入D:NetNumenums-svrtoolsoraEIPT打开了网管软件里面提供的工具,我用UltraEdit-32 软件打开run.bat,先讲这个工具里代码的调用关系理清然后找到导入文件那一段代码:
通过代码也坚定了我的命令内容,格式的正确性。(如果有兴趣的兄弟可以把那些工具都打开然后仔细地看看里面的内容,其实还蛮有意思)
3.3 真相大白
排除了命令的原因之后,实在想不到还有什么问题。无奈之下给黄建军总共发了一封邮件,说了一下情况,还是人家黄总猛啊,我问题一说黄总马上就答复我了:
黄总一说我也顿时明白了,我刚装的数据库里面还没有和网管匹配的表结构,这样导入数据时数据就不知道在数据口中如何的分布。在这里黄总还提到了一点数据库版本有对上号,oracle 10g的数据和oracle 9i的数据就不能兼容。此外还要考虑到网关版本的问题,不同的网管版本其表结构也不一样,因此在数据导入的时候一定要注意到这点。
余下的安装omm服务器就没什么好说的了,然后再次导入之后果然成功了。
4.查看数据库
安装完数据库之后,我自然没有忘记我的初衷(根据网管配置数据再查看相应的数据库表)。在这里向大家介绍一款工具,PLSQL Developer,这款工具是数据库开发者的最爱,里面有图形化的操作界面,可以图形化进行创建,插入,删除等操作,十分方便。由于大学中我经常用这个工具因此一切轻车熟路。
进去之后,直接点开索引寻找库里的表:
然而貌似没有我在参数字典上看到的那些熟悉的表名,问了研发部的一个哥们,才知道自己犯了多么愚蠢的一个错误。在网管软件中我们所有的配置数据都在数据库中的uep用户下保存(此时我才真正明白了uep的含义,同时也明白了为什么导出数据的时候都是导出uep用户的),而所有告警信息都存放在trns_pm 用户下。明白了这点,我马上在网管的相关属性文件里找到了这两个用户的密码:
trns_pmtrnspm uepu_tywg_2008
后面的事情就没什么好说的了。呵呵
4.经验总结
上面遇到的这些问题如果大家都用脚本运行的话,估计都不会出什么错误,但是我认为作为一个高级技术支持人员还是要对一些东西理解的清晰一点,通过发现问题----思索问题---定位问题----解决问题 这个过程我增强了自己对系统的理解,并提高了自己的动手以及解决问题的能力。
第五篇:操作数据库小结
一.查询操作
对数据进行查询操作时,有两种情况:一是查询单个值,二是 查询若干条记录。
1、查询单个值
需要使用Command对象的ExecuteScalar()方法:步骤如下:(1)、创建Connection对象(数据库连接对象)。(2)、创建查询用的SQL语句。(3)、利用SQL语句和Connection对象创建Command对象。(4)、打开数据库连接,调用Connection对象的Open()方法。(5)、调用Command对象的ExecuteScalar()方法,返回一个标量值。(6)、操作完成后关闭数据库连接,调用Connection对象的Close()方法。
2、查询若干条记录
需要使用Command对象的ExecuteReader()方法:步骤如下:(1)、创建Connection对象(数据库连接对象)。(2)、创建查询用的SQL语句。(3)、利用SQL语句和Connection对象创建Command对象。(4)、打开数据库连接,调用Connection对象的Open()方法。(5)、调用Command对象的ExecuteReader()方法,返回一个DataReader对象。(6)、调用DataReader对象的Read()方法逐行读取记录,如果读到记录返回Ture,否则返回False.(7)、使用(type)dataReader[列名或索引]的方式读取这一行中某一列的值。(8)、关闭DataReader对象(9)、操作完成后关闭数据路连接,调用Connection对象的Close()方法。
二、非查询操作
对数据库执行非查询操作时,包括增加,修改,删除数据,都使用Command对象的ExecuteNonQuery()方法,步骤如下:
(1)、创建Connection对象(数据库连接对象)(2)、创建增删改用的SQL语句。(3)、利用SQL语句和Connection对象创建Command对象。(4)、打开数据库连接,调用Connection对象的Open()方法。(5)、调用Command对象的ExecuteNonQuery()方法执行命令,返回受影响的行数。(6)、操作完成后关闭数据库连接,调用Connection对象的Close()方法。
本章总结
1、使用DataReader查询数据记录,通过Command对象的ExecuteReader()方法返回一个DataReader对象。
2、使用DataReader读取数据室每次调用Read()方法读取一行数据。
3、DataReader使用完后要调用它的Close()方法关闭。
4、使用Command对象的ExecuteNonQuery()方法对数据进行增删改的操作。
5、ExecuteNonQuery()方法返回受影响的行数。
6、ListView(列表视图)控件有5种视图模式,重点是Details 列表视图的Items属性表示包含在空间中的所有项的结合,每一个项都是一个ListViewItem,使用Items.Add()方法向列表视图中添加一项 调用列表视图项的SubItems.AddRange()方法添加它的子项
ListViewItem lviStudent = new ListViewItem(loginID);创建一个ListView项 lviStudent.Tag=(int)dataReader[“StudentId”];lvStudent.Items.Add(lviStudent);//向ListView中添加一个新项 lviStudent.SubItems.AddRange(new string[] {studentName,studentNo,userState});//向当前项中添加子项
7、ContextMenuStrip(快捷菜单)控件可以与其他控件结合使用,通过设置控件的ContextMenuStrip属性来指定它的快捷菜单。
想鼠标右键单击文本框时出现快捷菜单,就选中文本框在属性窗口中找到它的ContextMenuStrip属性,选择已有的右键菜单控件 txtLoginId.Focus():
下拉列表:
创建Command对象调用Command对象的ExecuteReader()方法创建DataReader对象(sqlDataReader dataReader=command.ExecuteReader())使用DataReader的Reader()方法逐行读取数据(放回bool类型)读取当前行的某列的数据(cboGrade.Items.Add(dataReader[“列名”]))关闭DataReader对象,Close()方法
向数据库中添加数据:
创建Connection对象定义要执行的SQL语句创建Command对象执行ExecuteNonQuery()方法根据返回的结果进行后续的处理
双击显示出ID:
MessageBox.show(dataGridView1.SelectedRows[0].cells[“ColID”].value.ToString());
刷新:
1,BindStudentByLoginID(txtBox.Text)2,listView.Items.RemoveAt(Listview1.SelectedIndices[0])//只能删除选中的行(选中第几个)