sql server日志文件总结及日志满的处理办法

sql server日志文件总结及日志满的处理办法
sql server日志文件总结及日志满的处理办法

sql server日志文件总结及日志满的处理办法

交易日志(Transaction logs)是数据库结构中非常重要但又经常被忽略的部分。由于它并不像数据库中的schema那样活跃,因此很少有人关注交易日志。交易日志是针对数据库改变所做的记录,它可以记录针对数据库的任何操作,并将记录结果保存在独立的文件中。对于任何每一个交易过程,交易日志都有非常全面的记录,根据这些记录可以将数据文件恢复成交易前的状态。从交易动作开始,交易日志就处于记录状态,交易过程中对数据库的任何操作都在记录范围,直到用户点击提交或后退后才结束记录。每个数据库都拥有至少一个交易日志以及一个数据文件。

出于性能上的考虑,SQL Server将用户的改动存入缓存中,这些改变会立即写入交易日志,但不会立即写入数据文件。交易日志会通过一个标记点来确定某个交易是否已将缓存中的数据写入数据文件。当SQL Server重启后,它会查看日志中最新的标记点,并将这个标记点后面的交易记录抹去,因为这些交易记录并没有真正的将缓存中的数据写入数据文件。这可以防止那些中断的交易修改数据文件。

维护交易日志

因为很多人经常遗忘交易日志,因此它也会给系统带来一些问题。随着系统的不断运行,日志记录的内容会越来越多,日志文件的体积也会越来越大,最终导致可用磁盘空间不足。除非日常工作中经常对日志进行清理,否则日志文件最终会侵占分区内的全部可用空间。日志的默认配置为不限容量,如果以这种配置工作,它就会不断膨胀,最终也会占据全部可用空间。这两种情况都会导致数据库停止工作。

对交易日志的日常备份工作可以有效的防止日志文件过分消耗磁盘空间。备份过程会将日志中不再需要的部分截除。截除的方法是首先把旧记录标记为非活动状态,然后将新日志覆盖到旧日志的位置上,这样就可以防止交易日志的体积不断膨胀。如果无法对日志进行经常性的备份工作,最好将数据库设置为"简单恢复模式"。在这种模式下,系统会强制交易日志在每次记录标记点时,自动进行截除操作,以新日志覆盖旧日志。

截除过程发生在备份或将旧标记点标为非活动状态时,它使得旧的交易记录可以被覆盖,但这并不会减少交易日志实际占用的磁盘空间。就算不再使用日志,它依然会占据一定的空间。因此在维护时,还需要对交易日志进行压缩。压缩交易日志的方法是删除非活动记录,从而减少日志文件所占用的物理硬盘空间。

通过使用DBCC SHRINKDATABASE语句可以压缩当前数据库的交易日志文件,DBCC SHRINKFILE语句用来压缩指定的交易日志文件,另外也可以在数据库中激活自动压缩操作。当压缩日志时,首先会将旧记录标记为非活动状态,然后将带有非活动标记的记录彻底删除。根据所使用的压缩方式的不同,你可能不会立即看到结果。在理想情况下,压缩工作应该选在系统不是非常繁忙的时段进行,否则有可能影响数据库性能。

恢复数据库

交易记录备份可以用来将数据库恢复到某一指定状态,但交易记录备份本身不足以完成恢复数据库的任务,还需要备份的数据文件参与恢复工作。恢复数据库时,首先进行的是数据文件的恢复工作。在整个数据文件恢复完成前,不要将其设为完成状态,否则交易日志就不会被恢复。当数据文件恢复完成,系统会通过交易日志的备份将数据库恢复成用户希望的

状态。如果在数据库最后一次备份后,存在多个日志文件的备份,备份程序会按照它们建立的时间依次将其恢复。

另一种被称为log shipping的过程可以提供更强的数据库备份能力。当log shipping 配置好后,它可以将数据库整个复制到另一台服务器上。在这种情况下,交易日志也会定期发送到备份服务器上供恢复数据使用。这使得服务器一直处于热备份状态,当数据发生改变时它也随之更新。另一个服务器被称作监视(monitor)服务器,可以用来监视按规定时间间隔发送的shipping信号。如果在规定时间内没有收到信号,监视服务器会将这一事件记录到事件日志。这种机制使得log shipping经常成为灾难恢复计划中使用的方案。

性能优化

交易日志对数据库有重要作用,同时它对系统的整体性能也有一定影响。通过几个选项,我们可以对交易日志的性能进行优化。由于交易日志是一个连续的磁盘写入过程,在这当中不会发生读取动作。因此将日志文件放在一个独立的磁盘,对优化性能有一定作用。

另一项优化措施与日志文件的体积有关。我们可以设置日志文件的体积不超过硬盘空间的百分之几,或者确定它的大小。如果将其设置的过大会浪费磁盘空间,而如果设置的过小则会强制记录文件不断尝试扩展,导致数据库性能下降。

事务日志文件Transaction Log File是用来记录数据库更新情况的文件,扩展名为ldf。

在SQL Server 7.0 和SQL Server 2000 中,如果设置了自动增长功能,事务日志文件将会自动扩展。

一般情况下,在能够容纳两次事务日志截断之间发生的最大数量的事务时,事务日志的大小是稳定的,事务日志截断由检查点或者事务日志备份触发。

然而,在某些情况下,事务日志可能会变得非常大,以致用尽空间或变满。通常,在事务日志文件占尽可用磁盘空间且不能再扩展时,您将收到如下错误消息:Error:9002, Severity:17, State:2

The log file for database '%.*ls' is full.

除了出现此错误消息之外,SQL Server 还可能因为缺少事务日志扩展空间而将数据库标记为SUSPECT。有关如何从此情形中恢复的其他信息,请参见 SQL Server 联机帮助中的“磁盘空间不足”主题。

另外,事务日志扩展可能导致下列情形:

·非常大的事务日志文件。

·事务可能会失败并可能开始回滚。

·事务可能会用很长时间才能完成。

·可能发生性能问题。

·可能发生阻塞现象。

原因

事务日志扩展可能由于以下原因或情形而发生:

·未提交的事务

·非常大的事务

·操作:DBCC DBREINDEX 和CREATE INDEX

·在从事务日志备份还原时

·客户端应用程序不处理所有结果

·查询在事务日志完成扩展之前超时,您收到假的“Log Full”错误消息

·未复制的事务

解决方法

日志文件满而造成SQL数据库无法写入文件时,可用两种方法:

一种方法:清空日志。

1.打开查询分析器,输入命令

DUMP TRANSACTION 数据库名 WITH NO_LOG

2.再打开企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了。

另一种方法有一定的风险性,因为SQL SERVER的日志文件不是即时写入数据库主文件的,如处理不当,会造成数据的损失。

1: 删除LOG

分离数据库企业管理器->服务器->数据库->右键->分离数据库

2:删除LOG文件

附加数据库企业管理器->服务器->数据库->右键->附加数据库

此法生成新的LOG,大小只有500多K。

注意:建议使用第一种方法。

如果以后,不想要它变大。

SQL2000下使用:

在数据库上点右键->属性->选项->故障恢复-模型-选择-简单模型。

或用SQL语句:

alter database 数据库名 set recovery simple

另外,如上图中数据库属性有两个选项,与事务日志的增长有关:

Truncate log on checkpoint

(此选项用于SQL7.0,SQL 2000中即故障恢复模型选择为简单模型)

当执行CHECKPOINT 命令时如果事务日志文件超过其大小的70% 则将其内容清除在开发数据库时时常将此选项设置为True

Auto shrink

定期对数据库进行检查当数据库文件或日志文件的未用空间超过其大小的25%时,系统将会自动缩减文件使其未用空间等于25% 当文件大小没有超过其建立时的初始大小时不会缩减文件缩减后的文件也必须大于或等于其初始大小对事务日志文件的缩减只有在对其作备份时或将Truncate log on checkpoint 选项设为True 时才能进行。

注意:一般立成建立的数据库默认属性已设好,但碰到意外情况使数据库属性被更改,请用户清空日志后,检查数据库的以上属性,以防事务日志再次充满。

重做日志文件

重做日志文件(redo log file)对于Oracle数据库至关重要。它们是数据库的事务日志。通常只用于恢复,不过也可以用于以下工作: q 系统崩溃后的实例恢复 q 通过备份恢复数据文件之后恢复介质 q 备用(standby)数据库处理 q 输入到流中,这是一个重做日志挖掘过程,用于实现信息共享(这也是一种奇特的复制) 重做日志文件的主要目的是,万一实例或介质失败,重做日志文件就能派上用场,或者可以作为一种维护备用数据库(standby database)的方法来完成故障恢复。如果数据库所在主机掉电,导致实例失败,Oracle会使用在线重做日志将系统恢复到掉电前的那个时刻。如果包含数据文件的磁盘驱动器出现了永久性故障,Oracle会使用归档重做日志以及在线重做日志,将磁盘驱动器的备份恢复到适当的时间点。另外,如果你“无意地”删除了一个表,或者删掉了一些重要的信息,而且提交了操作,则可以恢复一个备份,并让Oracle使用这些在线和归档重做日志文件将其恢复到意外发生前的那个时刻。 你在Oracle中完成的每个操作几乎都会生成一定的redo信息,并写入在线重做日志文件。向表中插入一行时,插入的最终结果会写入重做日志。删除一行时,则会在重做日志中写入你删除了这一行这一事实。删除一个表时,删除的效果会写入重做日志。从表中删除的数据不会写入;不过,Oracle删除表时执行的递归SQL确实会生成redo。例如,Oracle从SYS.OBJ$表(和其他内部字典对象)中删除一行时,这就会生成redo,另外如果支持不同模式的补充日志(supplemental logging ),还会把具体的DROP TABLE语句写入重做日志流。 有些操作可能会以尽量少生成redo的模式完成。例如,可以使用NOLOGGING属性创建一个索引。这说明,最初创建索引数据的操作不会记入日志,但是Oracle完成的所有递归SQL会写入日志。例如,创建索引后,将向SYS.OBJ$表中插入一行表示索引存在,这个插入会记入日志,以后使用SQL插入、更新和删除等操作完成的修改也会记入日志。但是,最初向磁盘写索引结构的操作不会记入日志。 前面我提到了两种类型的重做日志文件:在线(online)和归档(archived)。下面几节将详细介绍这两类重做日志文件。在第9章中,我们还会结合回滚段来讨论redo,看看它们对开发人员有什么影响。现在,我们只关注这些重做日志文件是什么,它们有什么用途。 3.7.1 在线重做日志 每个Oracle数据库都至少有两个在线重做日志文件组。每个重做日志组都包含一个或多个重做日志成员(redo按成员组来管理)。这些组的单个重做日志文件成员之间实际上形成彼此真正的镜像。这些在线重做日志文件的大小是固定的,并以循环方式使用。Oracle先写日志文件组1,当到达这组文件的最后时,会切换至日志文件组2,从头到尾重写这些文件的内容。日志文件组2填满时,再切换回到日志文件组1(假设只有两个重做日志文件组;如果有3个重做日志文件组,当然会继续写第3个组)。如图3-4所示。 4 日志文件组 图3-

连接SQLServer2008数据库的方法

连接SQLServer2008数据库的方法 一、设置SQLServer2008: SQL server 2008 1433端口开启解决方案 查看电脑开放端口命令为:netstat -an SQL Server 2008一般默认的端口为 1433 ,但有时会遇到无法连接端口1433的问题,检查端口1433是否启用的方法为: 开始–>输入cmd –>回车–>telnet localhost 1433->回车出现黑屏,表示本机连接端口1433成功。 否则按照以下顺序进行配置: (1)关闭数据库引擎 打开配置管理器,找到 SQL Server(SQEXPRESS),右键单击,选择停止,即可停止数据库引擎

(2) .配置服务器端和客户端的TCP/IP协议: 在SQL Server网络配置中选择SQLEXPRESS的协议,选择TCP/IP ,右键单击,选择属性 选择IP 地址选项卡 把"IP1"和"IP2"中"TCP端口"为1433,"已启用"改为"是" 把“IP地址”下“IPALL”的端口改为“1433”。

(3)SQL Native Client 10.0 配置->客户端协议->TCP/IP (4).开启数据库引擎

这样就开启了1433的端口了 先停止SQLServer2008服务。 1.启用1433端口 S1:执行“配置工具”下的“SQL Server配置管理器”。打开如下窗口: S2:右击“SQL Server网络配置”右边的“TCP/IP”,从快捷菜单中选择“属性”,打开下图所示窗口

2.设置登录方式(使用SQL Server登录方式,而不是Windows方式) 打开“SQL Server Management Studio”,打开如下图所示快捷菜单,选择“属性”

Oracle 改变重做日志位置或名称

Oracle 改变重做日志位置或名称 在所有后台进程中,LGWR进程活动最为频繁,它需要不断地将事务变化由重做日志缓冲区写入重做日志中。在数据库文件、控制文件和重做日志这3种文件中,重做日志的I/O操作最频繁。为了提高I/O性能,应将重做日志分布到I/O操作相对较少、速度最快的磁盘设备上。规划重做日志时,应将同一个日志组的不同日志成员尽可能地分布到不同磁盘上,以防止磁盘损坏而导致所有日志成员丢失。例如,假设在初始阶段,日志组二中的日志成员被放在同一块磁盘上,但是后来出于完全和性能方法的考虑,DBA为服务器新增加了一块磁盘,并且将日志组二中的一个日志成员移动到新磁盘上,此时就需要改变该日志成员的存放位置。 下面修改重做日志文件的名称和位置的具体操作步骤如下: (1)关闭数据库。 SQL> connect /as sysdba SQL> shutdown (2)复制或移动日志成员到目标位置。当闭数据库后,DBA就可以使用操作系统命令复制或移动日志成员到新位置。例如,修改原日志文件的名称。 (3)重新启动数据库实例,加载数据库,但是不打开数据库。 SQL> startup mount; (4)使用带RENAME FILE子句的ALTER DATABASE语句重新设置重做日志文件的路径和名称。 SQL> alter database rename file 2 'd:\app\Administrator\oradata\orcl\redo03.log', 3 'd:\app\Administrator\oradata\orcl\redo02.log', 4 'd:\app\Administrator\oradata\orcl\redo01.log' 5 to 6 'd:\app\Administrator\oradata\orcl\redo03a.log', 7 'd:\app\Administrator\oradata\orcl\redo02a.log', 8 'd:\app\Administrator\oradata\orcl\redo01a.log'; 数据库已更改。 (5)打开数据库 SQL> alter database open; (6)备份控制文件 重新启动数据库后,对联机重做日志文件的修改将生效。通过查询数据字典V$LOGFILE 可以获知数据库现在所使用的重做日志文件。

Oracle丢失归档日志文件的数据库恢复方法

Oracle丢失归档日志文件的数据库恢复方法 丢失归档日志文件的数据库恢复方法,从一个不能正常打开的数据库(由于一个/多个数据库文件与其他文件不一致)中提取数据。场景:一个磁盘损坏了并且丢失了一个数据库文件。从一周前的热备转储数据文件,不幸的是丢失了几个归档日志文件。但是有问题的数据文件包含了最重要的表,如何能够挽救数据呢? 每个DBA都知道这是有问题的,一定会丢失数据,因为某些事务丢失了,问题是会丢失多少数据?Oracle 使用硬线路位置并且由于存在完整性约束问题,因此不允许正常打开数据。但是如果使用非常规的方法让Oracle删除其硬线路属性,那么应该能够提取尽可能多的数据。而通常这会比损失全部数据要好很多。 详细过程通常如果仅仅丢失了堆表的索引,或者某些能够很容易重建的数据,那么最好的方法应该是删除表空间并重建这些对象然后重新输入。但是如果丢失的数据文件包含了重要数据并且很难恢复,而且只有前一次的备份却又丢失了某些归档日志,那么用户可能希望能够尽可能多的从有问题的表空间恢复数据并且删除和重建表空间。 主要的步骤如下: 1. 对当前拥有的数据进行一个冷备; 2. 转储丢失的数据库文件备份并应用可以应用的日志; 3. 设置未文档化的初始化参数,其允许你在当前状态打开数据库; 4. 执行exp并提取全部可以从有问题的表空间提取的数据; 5. 从先前的冷备转储数据库; 6. 使毁坏的数据文件offline; 7. 执行exp并提取第4步没有提取的额外数据; 8. 在一次从冷备转储; 9. 删除有问题的表空间; 10. 重建有问题的表空间; 11. 使用第四步和第七步提取的数据重建数据; 使用案例描述:ORDTAB表空间的一个数据文件ordtab03.dbf毁坏,其包含很多ORDERS表的分区,数据文件热备于July 4,2004,July 4—至今的某些归档日志丢失。 第一步:备份数据库第一步的任务是冷备当前拥有的任何数据文件,在线重做日志,和控制文件。如果丢失了一个/多个数据文件但是数据库仍然是open的,那么对每个剩余的数据文件进行热备并确保备份期间/之后的归档被安全保存。

Oracle大型数据库 实验五 重做日志文件、表空间管理操作

集美大学计算机工程学院实验报告 课程名称:大型数据库技术班级:计算12实验成绩: 指导教师:杨艳华姓名: 实验项目名称:重做日志文件、表空间管理操作学号:20上机实践日期:2014.12实验项目编号:实验五组号:上机实践时间:2学时 一、实验目的 1、理解重做日志文件的基本概念; 2、掌握重做日志文件组及其成员的添加、移动、删除等操作; 3、掌握归档重做日志的设置; 4、理解表空间的基本概念和分类; 5、掌握永久表空间的创建和管理操作; 6、掌握还原表空间的管理。 二、实验要求 1、完成重做日志文件组及其成员文件的管理操作; 2、完成归档重做日志的设置; 3、完成永久表空间和临时表空间的管理操作; 4、完成还原表空间的管理。 三、实验内容 (1)查看数据库当前重做日志文件组及成员的设置情况,然后,为数据库添加一组重做日志,组内包含两个成员文件,分别为redo4a.log和redo4b.log,大小分别为5MB。

(2)为上面新添加的那组重做添加一个日志成员,命名为“redo4c-姓名简拼.log”,实现重做日志的多路存储。 (3)把数据库从非归档模式修改为归档模式,之后创造条件让数据库立即归档,并检查归档是否成功 (4)创建永久表空间 ?创建一个表空间名为“TB+学号后三位+姓名简拼” ?空间的大小为50M ?表空间包括两个数据文件:表空间名_01.dbf(30M)和表空间名_02.dbf(20M),大 小均不能自动扩展 ?数据文件均存放在Oracle的安装根目录下 ?区的分配方式为统一大小,192K ?段管理采用自动方式

(5)改变上述永久表空间的可用性 ?先将表空间脱机 ?再进行联机 (6)创建一个4K的非标准块表空间,命名为“tbf+学号后三位+姓名简拼”,数据文件存储在”\oradata\orcl\姓名简拼”目录下,大小为(学号后三位*2)M。 (7)创建一个临时表空间 ?名为“TTB+学号后三位+姓名简拼” ?包含一个数据文件:表空间名_01.dbf,大小为(学号后三位*2)M,存储 在”\oradata\orcl\姓名简拼”目录下,文件的大小可以自动扩 展。 ?将该临时表空间设置为数据库的默认临时表空间 ?再将该临时表空间设置为scott用户的默认临时表空间 ?查询相关的数据字典验证上面的设置。

ORACLE使用数据文件恢复数据库

ORACLE使用数据文件恢复数据库 一、问题描述 Oracle控制文件丢失,数据文件完整,导致数据库实例不能启动。在修改数据库服务器的计算机名称、IP地址后,修改listener.ora和tnsnames.ora文件中的HOST地址后不能启动数据库实例或启动后不能登录使用数据,以及未能查找并解决数据库启动失败原因时可以通过重建控制文件的方式对数据库实例进行恢复。 二、恢复方法 1、恢复前准备工作 1)备份数据文件,文件路径为%ORACLE_NOME%/oradata/xxxx(xxxx为数据库实例)。 2)备份ORACLE安装路径下的Oracle\product\10.2.0\admin\xxxx\bdump\alert_xxxx.log (xxxx为数据库实例)。 3)ORACLE安装文件 2、恢复步骤 1)安装oracle数据库,安装时不要创建数据库实例 2)创建数据库实例:安装完成后创建数据库实例,实例名与原数据库实例相同,并创建监听服务。 3)拷贝数据文件:停止oracle相关服务,拷贝备份的数据文件到新安装的oracle数据库安装位置对应路径下,删除新成的控制文件及日志文件(%ORACLE_NOME%/oradata/ 下所有文件)、完成后重启oracle相关服务。 4)准备重建控制文件脚本:打开事先备份的alert_xxxx.log文件,查找最后一个create controlfile语句并修改以下几部分。 a)若该语句中包含NORESETLOGS,则将其修改为RESETLOGS;原因是重做日志文件 已经丢失。 b)LOGFILE段是指定重做日志文件到期望的文件位置。 c)DATAFILE段是指定到数据文件的实际文件位置。不能包含临时表空间用到的文件, 否则报错(ora-01503,ora-01160,ora-01110)。 注意:create controlfile语句中如果包含NOARCHIVELOG,则为非归档模式,如为 ARCHIVELOG,则为归档模式,没有则保持没有。 5)重建控制文件 a)打开sqlplus,使用DBA(sys)用户登录到数据库 示例:打开cmd,执行sqlplus /nolog 回车 SQL>Conn sys/password as sysdba b)关闭数据库 示例:SQL>Shutdown immediate; c)启动数据库,但不挂载数据文件 SQL>Startup nomount;

Oracle 增加重做日志

Oracle 增加重做日志 如果发现LGWR经常处于等待状态,则就需要考虑添加日志组及其成员,一个数据库最多可以拥有MAXLOGFILES个日志组。增加重做日志是使用ALTER DA TABASE语句完成的,执行该语句时要求用户必须具有ALTER DATABASE系统权限。 1.增加重做日志组 当管理重做日志时,为防止后台进程LGWR等待写入日志组,DBA必须选择合适的日志组个数。要增加重做日志组,可以使用带ADD LOGFILE子句的ALTER DATABASE语句。例如,下面的语句向数据库中添加了一个新的重做日志组: SQL> alter database add logfile 2 ('d:\app\Administrator\oradata\orcl\redo04.log', 3 'e:\oradata\orcl\redo04b.log') 4 size 10m; 数据库已更改。 新增的重做日志组具有两个成员,每个成员文件的大小均为10MB。一般情况下,日志文件的大小在10MB到50MB之间,Oracle默认的日志文件大小为50MB。 如果在ALTER DA TABASE ADD LOGFILE语句指定GROUP子句,Oracle将自动为新建的重做日志组设置编号,例如:下面的语句可以在创建日志组时指定为第4组:SQL> alter database add logfile group 4 2 ('d:\app\Administrator\oradata\orcl\redo04.log', 3 'e:\oradata\orcl\redo04b.log') 4 size 10m; 数据库已更改。 使用组号可以更加方便地管理重做日志组,但是,对日志组的编号必须为连续的,不要跳跃式地指定日志组编号。也就是说,不要将组号编为10,20,30等这样不连续的数。否将会耗费数据库控制文件中的空间。 如果要创建一个非复合的重做日志文件,则可以使用如下的语句: alter database add logfile 'd:\app\Administrator\oradata\orcl\redo01.log' reuse; 如果要创建的日志文件已经存在,则必须在ALTER DTABASE语句中使用REUSE子句,覆盖已有的操作系统文件。在使用了REUSE的情况下,不能再使SIZE子句设置重做日志文件的大小,重做日志文件的大小将由已存在日志文件的大小决定。 2.创建日志成员文件 建立日志组时,至少要为日志组指定一个日志成员。为了防止日志成员损坏而导致日志组无法使用,Oracle建议每个日志组至少包含两个或两个以上的日志成员。如果日志组只有一个日志成员,并且该日志成员出现损坏,那么当后台进程LGWR切换到该日志组时,Oracle 会停止工作,并对该数据库执行不完全恢复。 为重做日志组添加新的成员时,只需要使用带ADD LOG MEMBER子句的ALTER DA TABASE语句即可。例如,下面示例为第1组重做日志添加了一个新的成员日志文件:SQL> alter database add logfile member

SQLServer数据库入门学习总结

SQL Server数据库入门学习总结 经过一段时间的学习,也对数据库有了一些认识。 数据库基本是由表,关系,操作组成;对于初学者首先要学的: 1.数据库是如何存储数据的 表,约束,触发器 2.数据库是如何操作数据的 insert,update,delete T-sql 函数存储过程触发器 3.数据库是如何显示数据的 select SQLServer数据库学习总结 1.SQL基础 SQL Server2000安装、配置,服务器启动、停止,企业管理器、查询分析器 第一代数据库--网状数据库和层次数据库;第二代数据库--关系数据库 数据库(DB);数据库管理系统(DBMS);数据库系统(DBS) SQL Server 2000 提供了不同版本:企业版、标准版、个人版、开发版 SQL Server中的数据类型:整数:int,smallint,tinyint,bigint;浮点数:real,float,decimal;二进制:binary,varbinary;逻辑:bit;字符:char,nchar,varchar,nvarchar;文本和图形:text,ntext,image;日期和时间:datetime,smalldatetime;货币:money,smallmoney 数据库的创建和删除;数据库表的创建、修改和删除 数据完整性:实体完整性:Primary Key,Unique Key,Unique Index,Identity Column;域完整性:Default,Check,Foreign Key,Data type,Rule;参照完整性:Foreign Key,Check,Triggers,Procedure;用户定义完整性:Rule,Triggers,Procedure;Create Table中得全部列级和表级约束 SQL Server中有5种约束:主键约束(Primary Key Constraint)、默认约束(Default Constraint)、检查约束(Check Constraint)、唯一性约束(Unique Constraint)、外键约束(Foreign Key Constraint). 关系图 数据库设计的步骤:需求分析、概念结构设计、逻辑结构设计、数据库物理设计、数据库实施、数据库运行和维护 两个实体之间的联系:一对一(1:1)、一对多(1:n)、多对多(m:n) 实体关系模型-- E-R图

一个控制文件相应的数据文件和重做日志文件恢复数据

rem 只有相关数据库文件的恢复. 恢复环境:oracle 10.2.0.1.0,windows xp,有一个控制文件,相应的数据文件和重做日志文件 我已经先创建好了一个数据库,sid=shan,下面模拟一下恢复的环境。 sqlplus /nolog conn /as sysdba shutdown immediate;(先关闭数据库) 下面移动一下一个数据文件和日志文件的位置 alter database mount; select file#,name from v$datafile; select group#,member from v$logfile; 在操作系统里把E:\ORACLE\PRODUCT\10.2.0\ORADATA\SHAN\REDO03.LOG 剪切到'C:\REDO03.LOG' 在操作系统里把E:\ORACLE\PRODUCT\10.2.0\ORADATA\SHAN\USERS01.DBF 剪切到'C:\USERS01.DBF' alter database rename file 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\SHAN\REDO03.LOG' to 'C:\REDO03.LOG'; alter database rename file 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\SHAN\USERS01.DBF' to 'C:\USERS01.DBF'; alter database open;(正常打开) shutdown immediate;(关闭数据库),这里将所有的数据文件,控制文件, 在开始菜单里>用dbca删除该数据库. 下面开始恢复 1 windows下设置相关的环境变量,为复制数据库创建所有的必要路径 set ORACLE_SID=shan set ORACLE_BASE=E:\oracle\product\10.2.0 set ORACLE_HOME=%ORACLE_BASE%\db_1 set ORACLE_DATA=%ORACLE_BASE%\oradata\%ORACLE_SID% set ORACLE_ADMIN=%ORACLE_BASE%\admin\%ORACLE_SID% mkdir %ORACLE_ADMIN% mkdir %ORACLE_ADMIN%\pfile mkdir %ORACLE_ADMIN%\adump mkdir %ORACLE_ADMIN%\bdump mkdir %ORACLE_ADMIN%\cdump mkdir %ORACLE_ADMIN%\dpdump mkdir %ORACLE_ADMIN%\udump mkdir %ORACLE_DATA%

SQLServer数据库基本介绍

SQLServer数据库基本介绍 数据库用于存储结构化数据。数据的组织有多种数据模型,目前主要的数据模型是关系数据模型,以关系模型为基础的数据库就是关系数据库。一,数据库的概述1)关系数据库术语 表:用于存储数据,它以行列式方式组织,可以使用SQL从中获取、修改和删除数据库。表是关系数据库的基本元素记录:记录是指表中的一行,在一般情况下,记录和行的意思是相同的。字段:字段是表中的一列,在一般情况下,字段和列所致的内容是相同的。关系:关系是一个从数学中来的概念,在关系代数中,关系是指二维表,表既可以用来表示数据,也可以用来表示数据之间的联系索引:索引是建立在表上的单独的物理结构,基于索引的查询使数据获取更为快捷。索引是表中的一个或多个字段,索引可以是唯一的,也可以是不唯一的,主要是看这些字段是否允许重复。主索引是表中的一列和多列的组合,作为表中记录的唯一标识。外部索引是相关联的表的一列或多列的组合,通过这种方式来建立多个表之间的联系。视图:视图是一个真实表的窗口,视图不能脱离表。视图和表的区别是,表是实际存在的(需要存储在计算机中,占用存储空间),而视图是虚拟表(仅存储真实表的视图表现形式),它用于限制用户可以看到和修改的数据量,以简化数据的表达。存储过程:存储过程是一个编译过的SQL程序。在该过程中,可以嵌入条件逻辑、传递参数、定义变量和执行其他编程任务。 2)数据库管理系统提供的功能数据库管理系统简称为DBMS,是一种操作和管理数据库的大型软件,用于建立、使用维护数据库。基本功能如下

数据定义功能:定义数据库结构数据存取功能:提供数据操纵语言,实现对数据库数据的 基本存储操作数据库运行管理功能:提供数据控制功能,即数据的安全性,完整性和并发控制等对数据库运行进行有效的控制和管理数据库的建立和维护功能:包括数据库初始数据的嵌入,数据库的转储、恢复、重组织、系统性能监视、分析等功能数据库的传输:实现用户程序与DBMS之间的通信 3)数据库的存储结构 数据库文件主数据文件(Primary):是数据库的关键文件,用来存放数据,包含数据库启 动信息,每个数据库都必须包含也只能包含一个主数据文件,默认扩展名是.mdf次数据文件(Secondary):又称辅助文件,包含除主数据文件外的所有数据文件。次数据文件是可选的,有些数据库没有次数据文件,有些数据库则包含多个次数据文件.默认扩展名是.ndf事务日志 文件(Transaction Log):用来存放事务日志信息。事务日志记录了SQL Sever所有的事务 和由这些事务引起的数据库的变化。SQL Sever遵循先写日志再进行数据库修改的规则,所以 数据库中数据的任何变化在写到磁盘之前,这些改变先在事务日志中做了记录,每个数据库至 少有一个事务日志文件Lof File,也可以不止一个。默认扩展名是.ldf数据库文件组主文件组:包含主数据文件和所有没有被包含在其他文件组里的文件用户定义文件组:默认文件组:

实验五 管理控制文件、重做日志文件

实验五管理控制文件 一目的和要求 1 掌握控制文件的作用、内容 2 掌握创建控制文件的副本 3 掌握控制文件的备份 4 了解控制文件的创建和删除 5 会查看某个数据库服务器使用的控制文件 6 会在OEM中查看及管理控制文件 7 掌握重做日志文件的作用、内容 8 掌握重做日志文件的写入方式及日志切换 9 熟悉添加重做日志文件组及添加日志文件组的成员 10 熟悉删除重做日志文件组及删除日志文件组的成员 11 会清除(重新初始化)重做日志 二实验内容 1控制文件的作用和内容是什么? 2具体实验:(结果贴图表示) 1)查询当前数据库服务器使用的控制文件有哪些? SQL> show parameter control_files; 2)实现控制文件多路复用,位置是: ‘C:\oracle\product\10.2.0\oradata\orcl\control01.ctl’, ‘C:\oracle\product\10.2.0\oradata\orcl\control02.ctl’, ‘C:\oracle\product\10.2.0\oradata\orcl\control03.ctl’, ‘D:\control04.ctl’ 参考步骤:(注意,每一步必须成功,否则数据库就会不能正常装载) SQL> conn sys/o123 as sysdba; SQL>alter system set control_files=‘C:\oracle\product\10.2.0\oradata\orcl\control01.ctl’, ‘C:\oracle\product\10.2.0\oradata\orcl\control02.ctl’, ‘C:\oracle\product\10.2.0\oradata\orcl\control03.ctl’, ‘D:\control04.ctl’ scope=spfile; SQL>shutdown immediate

Oracle 显示重做日志信息

Oracle 显示重做日志信息 对于DBA而言,可能经常要查询重做日志文件,以了解其使用情况。要了解Oracle数据库的日志文件信息,可以查询如表11-2所示的数据字典视图和动态性能视图。 表11-2 包含重做日志文件信息的视图 视图说明 V$LOG 包含从控制文件中获取的所有重做日志文件的基本信息 V$LOGFILE 包含各个成员日志文件的信息,例如成员的状态和所属的重做日志组V$LOG_HISTROY 包含重做日志文件的历史信息 下面列出了V$LOG的结构信息: SQL> desc v$log 名称是否为空? 类型 ---------------------------- ------------------- -------------- GROUP# NUMBER THREAD# NUMBER SEQUENCE# NUMBER BYTES NUMBER MEMBERS NUMBER ARCHIVED V ARCHAR2(3) STATUS V ARCHAR2(16) FIRST_CHANGE# NUMBER FIRST_TIME DA TE 其中,GROUP#字段显示的是重做日志文件组的编号,THREAD#显示的是重做日志组所属的日志写入线程,SEQUENCE#字段显示的是重做日志组的日志序列号,BYTES字段显示重做日志组中各个成员的大小,MEMBERS字段显示的是重做日志组中的成员数,ARCHIVED字段显示的是重做日志的归档情况,STA TUS字段显示重做日志组的状态(CURRENT表示当前正在使用的,NACTIVE表示非活动组,ACTIVE表示归档未完成),FIRST_CHANGE#字段显示的是重做日志组上一次写入时的系统改变号SCN,FIRST_TIME 字段显示的是重做日志组上一次写入的时间。

Java连接SQLServer数据库全解

第一步:安装SQL SERVER 2000数据库软件,安装包解压之后的文件夹名为“SQL server 2000 个人版XP能用”。 安装方法:直接双击“SQL server 2000 个人版XP能用\SQL2000_PER”文件夹下的setup.bat (批处理文件)就可以进入安装程序。 在安装过程中一定要选择混合模式,设sa的密码为hw 或root 。以后登录“SQL 查询分析器”的时候就输入该密码(hw 或root)。 安装完“SQL server 2000 个人版”之后,还不能用Java连接SQL server 2000数据库。还必须安装“SQL2000-KB884525-SP4-x86-CHS”,简称“SP4”,即SQL server 2000的补丁。 安装界面如下: SP4解压缩完成之后,就会在C盘根目录下自动新建一个文件夹:C:\SQL2KSP4。 里面的内容如下:

然后双击C:\SQL2KSP4文件夹中的setup.bat批处理文件进行安装,前面的实质上是SP4的解压,解压后的文件就是C:\SQL2KSP4,所以双击并不是安装过程,而实质上是一个加压缩的过程。 □不安装SP4,Java程序无法连接SQL server 2000数据库。 双击C:\SQL2KSP4文件夹中的setup.bat后的安装才是SP4真正的安装。 SP4安装完成之后,把SQL server 2000的Java驱动(三个jar包)全部加入到应用程序中,或同时加入到classpath环境变量中。 这三个jar包的名字依次是:msbase.jar ,mssqlserver.jar ,msutil.jar 。 注:这三个jar包必须同时使用,缺一不可。 连接代码: 连接SQL server 2000数据库的Java类:

实验1SQLServer数据库基本操作

实验1 SQL Server数据库基本操作 一、实验目的 本实验主要了解Microsoft SQL Server 2012中各组件的主要功能和基本使用方法;了解SQL Server数据库的逻辑结构和物理结构;了解数据表的结构特点以及索引的基本概念。通过本实验,读者将学会在“企业管理器”中创建和修改数据库和数据表结构、对数据表进行数据的添加、删除和更新操作以及在数据表上创建字段索引的操作。 二、实验环境 Microsoft SQL Server 2012 SSMS 三、实验内容 1. 创建一个名称为Book的数据库,支持教材订购信息管理,要求: (1)将主数据库文件Book_放置在的D:\DBF文件夹中,文件大小为5MB,最大值为50MB,文件增量为2MB。 (2)将事务日志文件Book_放置在的D:\DBF文件夹中,文件大小为5MB,最大值为100MB,文件增量为1MB。 【实验步骤】 1)在D:\下创建DBF文件夹。 2)在SSMS中的对象资源管理器窗口右单击“数据库”,从快捷菜单中选择“新建数据库”命令,出现“数据库属性”对话框。 3)在“数据库属性”对话框中选择“常规”选项卡,在名称文本框中输入:Book; 4)在“数据库属性”对话框中选择“数据文件”选项卡,设置数据文件的位置、大小、

最大值和文件增量等属性; 5)在“数据库属性”对话框中选择“事务日志”选项卡,设置事务日志文件的位置、大小、最大值和文件增量等属性。 6)点击“确定”按钮,建立“Book”数据库,如下图所示: 2. 在上题所建数据库Book中建立5张数据表结构。 字段名称字段说明类型定义属性限定索引外键AcadCode 学院代码Char(2) Primary Key √ AcadName 学院名称Varchar (50) Not Null

Oracle重做日志文件管理技巧

Oracle重做日志文件管理技巧 Oracle重做日志文件管理技巧 重做日志文件是Oracle数据库中一种非常重要的日志文件,也 是其一个很有特色的功能。重做日志文件会纪录对于数据库的任何 操作,如利用DML语句或者DDL语句对数据进行更改,或者数据库 管理员对数据库结构进行更改,都会在重做日志中进行记录。 可见,当数据被意外的删除或者修改,我们可以利用重新日志文件进行恢复;当出现例程失败或者介质失败的情况下,也可以利用日 志文件实现例程恢复或者介质恢复。所以说,我们若能够管理好重 做日志文件的话,对于保障数据库数据的安全是非常重要的。 下面笔者谈谈管理好Oracle数据库日志文件的几点经验技巧, 或许,能够给大家在重做日志文件的管理中带来一些启示。 一、合理确定重做日志文件的存放位置 我们知道,当数据库内部数据丢失或者被意外更改的情况下,数据库管理员可以利用重做日志文件实现数据库数据的恢复工作。当 数据库出现意外事故,如硬盘物理损坏、数据丢失时怎么办? 我们第一个就会想到利用数据库重做日志对数据进行恢复。可是当数据库重做日志跟数据库数据文件放在同一个硬盘的话,很明显,当硬盘损坏的时候,数据文件将跟日志文件共赴黄泉。此时,连天 皇老子都救不了我们。 所以,此时,我们就有必要把重做日志文件跟数据库数据文件放在两个不同的硬盘上面。此时,任何一个硬盘若发生损坏,我们都 可以凭借另外一块硬盘的数据,来挽回损失。如存放数据文件的硬 盘损坏时,我们就可以利用存放在另外一块硬盘上的数据重做日志 文件进行修复,挽回损失。 鸡蛋不能放在同一个篮子里,故重做日志文件与数据文件也不要放在同一块硬盘上。那时非常危险一个动作。

Sqlserver数据库转成mysql数据库

Sqlserver数据库转成mysql数据库 一、先安装sqlserver2005或者其他的版本,以sqlserver2005为例,xp的系统只支持sqlserver2005的开发版和个人版2008好像也是。 二、然后把sqlserver的倒出来的库文件导入到sqlserver2005中去。实例打开SQL Server Management Studio 点击连接——》右键数据库——》选择还原数据库

在点击选项

路径一定要正确好了再去看shiyan这个数据库就有表文件了 三、安装odbc从https://www.360docs.net/doc/0d11513143.html,/detail/daotianmi/3670315下载安装。 四、配置odbc 。 程序→控制面板→管理工具→数据源(ODBC) 图(1)数据源ODBC管理器 单击添加→图(2)创建新数据源

图(2)创建新数据源 选择MIicrosoft Paradax-treiber(*.db)→点完成→添加数据源名: SHJYT (如图(3)) 点选择目录选择D:\Program Files\KN\上海数据DB_DBF系统\data (即安装路径) →确定,配置ODBC完成 图(3)

图(4) 五、打开navicat工具新建库 例如在这里要注意mysql的数据库编码要跟sqlserver数据库的编码一致如果是utf-8的就都是utf-8右击表会出来导入向导,选择 odbc点击下一 步里选择

选取Microsoft OLE DB Provider for SQL Server 点击下一步 这是第二步建立的

Oracle在线重做日志文件详解

wenjiangfan | 05 十二月, 2009 14:49 Oracle在线重做日志文件详解 1:查看数据库在线重做日志文件的归档方式 ARCHIVE LOG list; 2:查看日志组 SELECT * FROM v$log; 3:查看日志组成员 SELECT * FROM v$logfile; --备注:经分系统BONCBI数据库日志没做归档就不说了,既然只有3个日志组,而且既然每个日志组只有一个成员,悲剧啊! 4:新增一个日志组: ALTER DATABASE ADD LOGFILE GROUP 4 ('/dev/rlv_vgdb9_data22','/dev/rlv_vgdb9_data23','/dev/rlv_vgdb9_data24') SIZE 8191m; --这样,就最增一个日志组,且这个日志组里有3个成员每个成员8191MB大小。 5:给某个日志组新增一个成员 ALTER DATABASE ADD LOGFILE MEMBER '/dev/rlv_vgdb9_data25' TO GROUP 4; --注意,这里不需要指定日志组成员的大小。 6:删除日志组 ALTER DATABASE DROP LOGFILE GROUP 4; --注意:当前日志组不能删,活动的日志组不能删,没有归档的日志组不能删。 7:删除日志组成员 ALTER DATABASE DROP LOGFILE MEMBER '/dev/rlv_vgdb9_data25'; --注意:每个组至少要保留一个成员; 8:两个概念需要注意: 8.1:日志切换 ALTER SYSTEM SWITCH LOGFILE; --所谓日志切换就是停止写当前组,转而写一个新组,系统可以自动发生,也可以手工完成。--当发生SWITCH LOGFILE时,系统会在后台完成CHECKPOINT的操作 --手动切换日志组 --日志组A:当前正在写。 --日志组B:可写。 --CHECKPOINT保证控制文件,数据文件头,日志文件头的SCN一致是数据库保持数据完整性的一个重要机制 --手动切换日志组后,ORACLE开始往日志组B写日志,并进行一次CHECKPOINT,把日志组A里没有经过CHECKPOINT的那部分日志对应的DIRTY BUFFER从BUFFER CACHE里写到--数据文件里。CHECKPOING完成后 --日志组A:可写。 --日志组B:当前正在写。 --另外,ALTER TABLESPACE USER BEGIN BACKUP,DROP TABLE,TRUNCATE TABLE都会引发CHECKPOINT操作 --除了以上所手动,及自动CHECKPOINT之外,还可以通过一些参数来控制CHECKPOINT

SQLserver数据库课程设计范例

1 概述 课题简介 书店书目书种繁多,来源多样,购买者众多,图书信息、供应商信息、客户信息、销售信息庞大,不易管理。因此,很有必要创建一个小型书店管理系统,以便于书店对图书的管理。 设计目的 应用对数据库系统原理的理论学习,通过上机实践的方式将理论知识与实践更好的结合起来,巩固所学知识。 数据库应用课程实践:实践和巩固在课堂教学中学习有关知识,熟练掌握对于给定结构的数据库的创建、基本操作、程序系统的建立和调试以及系统评价。 数据库原理软件设计实践:实践和巩固在课堂教学中学习的关于关系数据库原理的有关知识和数据库系统的建立方法,熟练掌握对于给定实际问题,为了建立一个关系数据库信息管理系统,必须得经过系统调研、需求分析、概念设计、逻辑设计、物理设计、系统调试、维护以及系统评价的一般过程,为毕业设计打下基础。 设计内容 运用基于E-R 模型的数据库设计方法和关系规范化理论做指导完成从系统的分析到设计直至系统的最终实现,开发小型书店管理系统,完成小型书店管理系统的全部功能。 首先做好需求分析,并完成数据流图和数据字典。 其次做概念分析,利用实体联系的方法将需求分析的用户需求抽象为信息结构,得到

E-R 图。 然后就是逻辑结构设计,将E-R 图转换为计算机系统所支持的逻辑模型 2 需求分析 功能分析 首先,建立一些基本表(尽可能满足3N),对大部分基本信息组合、存储;其次通过建立视图实现对冗余数据的有必要保留(查询并计算基本表属性得到新的作为视图属性)并实现对以下基本信息的显示。 图书信息:图书名称、订购数量、订购时间、订购单价、金额、出版社名称、作者名称;供应商名称等; 供应商信息:供应商名称、地址、电话,联系人; 客户信息:客户编号、名称、年龄、性别、累计购书金额等; 销售信息:时间、销售名称、数量、销售单价、客户编号、客户名称、金额等。 在此基础上进行以下目标查询,由于有些查询常用且较复杂,为了简化其应用,所以将它们定义为存储过程。 查询当月书店销售金额、营业金额;(存储过程) 查询某种图书库存数量;(存储过程) 查询当月销量最好的图书信息;(存储过程) 按供应商名称查询订购信息;(普通查询)

JAVA与SQLServer数据库连接共有两种方式

JAVA与SQLServer数据库连接的两种方式 一.jdbc-odbc桥方式 1.1 建立ODBC数据源: 设置——〉控制面板——〉管理工具——〉数据源(ODBC)——〉系统DSN ——〉 添加——〉选择SQLServer驱动——>填写数据源名字——〉选择服务器——〉选择登陆方式(默认使用windows NT验证)——〉更改默认数据库为所有数据库——〉 完成测试成功则建立完毕。 1.2 导入包: import java.sql.*; 1.3 装载驱动: DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver()); 或者:Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 第一种方式比较常用,也容易理解; 1.4 建立连接: Connection con = DriverManager.getConnection("jdbc:odbc:xx"); 其中xx是1.1建立的数据源名字,如果建立的数据源选择的windowsNT验证方式,则上面语句即可; 如果1.1所建立的数据源登陆方式选择的是SQL用户验证,则这里要写成:Connection con = DriverManager.getConnection("jdbc:odbc:xx","用户名","密码"); 其中的"用户名","密码"分别是SQLServer所建立的“登陆”用户,并具有对所用库的操作权限; 1.5 建立载体: Statement st = con.createStatement(); 1.6 发出数据请求: 查询数据操作: ResultSet rs = st.executeQuery("select * from titles"); 该语句将sql语句传递给数据库并返回一个结果集rs,即查询结果放在rs对象中;

相关文档
最新文档