Oracle数据库日常维护手册 (oracle数据库)

教程大全 2025-07-20 19:15:55 浏览

Oracle数据库 运行期间,DBA应该对数据库的运行日志及表空间的使用情况进行监控,及早发现数据库中存在的问题。Oracle数据库的日常维护工作也是非常重要的,下文中将为大家带来Oracle数据库的日常维护介绍,下文中将要讲到的内容对数据库管理员来说是非常有用的。

一、Oracle警告日志文件监控

Oracle在运行过程中,会在警告日志文件(alert_SID.log)中记录数据库的一些运行情况:

数据库的启动、关闭,启动时的非缺省参数;

数据库的重做日志切换情况,记录每次切换的时间,及如果因为检查点(checkpoint)操作没有执行完成造成不能切换,会记录不能切换的原因;

对数据库进行的某些操作,如创建或删除表空间、增加数据文件;

数据库发生的错误,如表空间不够、出现坏块、数据库内部错误(ORA-600)

DBA应该定期检查日志文件,根据日志中发现的问题及时进行处理

问题处理

启动参数不对检查初始化参数文件

因为检查点操作或归档操作没有完成造成重做日志不能切换如果经常发生这样的情况,可以考虑增加重做日志文件组;想办法提高检查点或归档操作的效率;

有人未经授权删除了表空间检查数据库的安全问题,是否密码太简单;如有必要,撤消某些用户的系统权限

出现坏块检查是否是硬件问题(如磁盘本生有坏块),如果不是,检查是那个数据库对象出现了坏块,对这个对象进行重建

表空间不够增加数据文件到相应的表空间

出现ORA-600根据日志文件的内容查看相应的TRC文件,如果是Oracle的bug,要及时打上相应的补丁

二、数据库表空间使用情况监控(字典管理表空间)

数据库运行了一段时间后,由于不断的在表空间上创建和删除对象,会在表空间上产生大量的碎片,DBA应该及时了解表空间的碎片和可用空间情况,以决定是否要对碎片进行整理或为表空间增加数据文件。

select tablespace_Name,

count(*) chunks ,

max(bytes/1024/1024) max_chunk

from dba_free_space

group by tablespace_name;

上面的SQL列出了数据库中每个表空间的空闲块情况,如下所示:

TABLESPACE_NAME CHUNKS MAX_CHUNK

INDX 1 57.9921875

RBS 3 490.992188

RMAN_TS 1 16.515625

SYSTEM 1 207.296875

TEMP 20 70.8046875

TOOLS 1 11.8359375

USERS 67 71.3671875

其中,CHUNKS列表示表空间中有多少可用的空闲块(每个空闲块是由一些连续的Oracle数据块组成),如果这样的空闲块过多,比如平均到每个数据文件上超过了100个,那么该表空间的碎片状况就比较严重了,可以尝试用以下的SQL命令进行表空间相邻碎片的接合:

alter tablespace 表空间名 coalesce;

然后再执行查看表空间碎片的SQL语句,看表空间的碎片有没有减少。如果没有效果,并且表空间的碎片已经严重影响到了数据库的运行,则考虑对该表空间进行重建。

MAX_CHUNK列的结果是表空间上最大的可用块大小,如果该表空间上的对象所需分配的空间(NEXT值)大于可用块的大小的话,就会提示ORA-1652、ORA-1653、ORA-1654的错误信息,DBA应该及时对表空间的空间进行扩充,以避免这些错误发生。

对表空间的扩充对表空间的数据文件大小进行扩展,或向表空间增加数据文件,具体操作见“存储管理”部份。

三、查看数据库的连接情况

DBA要定时对数据库的连接情况进行检查,看与数据库建立的会话数目是不是正常,如果建立了过多的连接,会消耗数据库的资源。同时,对一些“挂死”的连接,可能会需要DBA手工进行清理。

以下的SQL语句列出当前数据库建立的会话情况:

select sid,serial#,username,program,machine,status

from v$session;

输出结果为:

Oracle数据库日常维护手册

SID SERIAL# USERNAME PROGRAM MACHINE STATUS

1 1 ORACLE.EXE WORK3 ACTIVE

2 1 ORACLE.EXE WORK3 ACTIVE

3 1 ORACLE.EXE WORK3 ACTIVE

4 1 ORACLE.EXE WORK3 ACTIVE

5 3 ORACLE.EXE WORK3 ACTIVE

6 1 ORACLE.EXE WORK3 ACTIVE

7 1 ORACLE.EXE WORK3 ACTIVE

8 27 SYS SQLPLUS.EXE WORKGROUPWORK3 ACTIVE

11 5 DBSNMP dbsnmp.exe WORKGROUPWORK3 INACTIVE

其中,

SID 会话(session)的ID号;

SERIAL# 会话的序列号,和SID一起用来唯一标识一个会话;

USERNAME 建立该会话的用户名;

PROGRAM 这个会话是用什么工具连接到数据库的;

STATUS 当前这个会话的状态,ACTIVE表示会话正在执行某些任务,INACTIVE表示当前会话没有执行任何操作;

如果DBA要手工断开某个会话,则执行:

alter system kill session ‘SID,SERIAL#’;

注意,上例中SID为1到7(USERNAME列为空)的会话,是Oracle的后台进程,不要对这些会话进行任何操作。

四、控制文件的备份

在数据库结构发生变化时,如增加了表空间,增加了数据文件或重做日志文件这些操作,都会造成Oracle数据库控制文件的变化,DBA应及进行控制文件的备份,备份方法是:

执行SQL语句:


oracle表中怎么建序列

oracle表中创建序列语法:CREATE SEQUENCE name[INCREMENT BY n][START WITH n][{MAXVALUE n | NOMAXVALUE}][{MINVALUE n | NOMINVALUE}][{CYCLE | NOCYCLE}][{CACHE n | NOCACHE}]示例:increment by n:表明值每次增长n(步长)。 start with n: 从n开始。 {MAXVALUE n | NOMAXVALUE}: 设置最大值。 {MINVALUE n | NOMINVALUE}: 设置最小值,start with不能小于最小值。 CYCLE | NOCYCLE : 是否循环,建议不使用CACHE n | NOCACHE: 是否启用缓存。 2、插入数据到表中示例:INSERT INTO emp VALUES(emp_sequence , LEWIS, CLERK,7902, SYSDATE, 1200, NULL, 20);Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。 它是一种高效率、可靠性好的 适应高吞吐量的数据库解决方案。 ORACLE数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能。 扩展资料:sql server数据库里建序列:alter table cust_infoaddsequence intinsert into cust_info (sequence)select row_number() over(orderbycust_id) as cust_id_seq from cust_info

怎样安装和配置navicat链接数据库

方法如下:1、 启动Navicat ,连接->oracle,配置如下:连接名随便起2、Basic连接类型:连接类型有两种,我们先看用Basic的连接方式,此方法适合没有安装Oracle客户端的机器,配置好之后,点连接测试,如果你数据库没有问题,则能连接测试成功。 3,TNS连接类型:选择TNS监听连接类型,你首先要安装好oracle客户端,安装完成后,连接数据库时,先配置路径,Navicat->工具>选项>OCI,将路径设置成你安装客户端的路径,如本例:D:\app\Administrator\product\11.2.0\client_2\,4,还有一步要做,到连接的Oracle数据库目录下找到文件,一般路径在D:\oracle\product\10.2.0\db_1\NETWORK\ADMIN下,将该文件拷贝到你安装的oracle客户端目录下,如D:\app\Administrator\product\11.2.0\client_1\Network\Admin\,在连接时就可以直接用TNS方式连接了,程序会自动识别你的网络连接名,如果没有自动识别网络连接名,说明配置的不对,再检查下有说明漏的。 5,配置好之后,点连接测试,如果你数据库没有问题,则能连接测试成功。 注意:如果连接不上,检查下文件,看看(HOST = Localhost),如果你连接的是本地Oracle数据库,可能没问题,如果是远程的,一定要改成ip地址,我的配置如下:ORCL =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.129)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = orcl)))6,连接成功后,你就可以像操作其他数据库一样,可视化的管理Oracle数据库,建表,建字段,删除,修改,备份等都可以做.

ORACLE 常用操作语句规范和注意事项

规范: i. 尽量避免大事务操作,慎用holdlock子句,提高系统并发能力。 ii. 尽量避免反复访问同一张或几张表,尤其是数据量较大的表,可以考虑先根据条件提取数据到临时表中,然后再做连接。 iii. 尽量避免使用游标,因为游标的效率较差,如果游标操作的数据超过1万行,那么就应该改写;如果使用了游标,就要尽量避免在游标循环中再进行表连接的操作。 iv. 注意where字句写法,必须考虑语句顺序,应该根据索引顺序、范围大小来确定条件子句的前后顺序,尽可能的让字段顺序与索引顺序相一致,范围从大到小。 v. 不要在where子句中的“=”左边进行函数、算术运算或其他表达式运算,否则系统将可能无法正确使用索引。 vi. 尽量使用exists代替select count(1)来判断是否存在记录,count函数只有在统计表中所有行数时使用,而且count(1)比count(*)更有效率。 vii. 尽量使用“>=”,不要使用“>”。 viii. 注意一些or子句和union子句之间的替换 ix. 注意表之间连接的数据类型,避免不同类型数据之间的连接。 x. 注意存储过程中参数和数据类型的关系。 xi. 注意insert、update操作的数据量,防止与其他应用冲突。 如果数据量超过200个数据页面(400k),那么系统将会进行锁升级,页级锁会升级成表级锁。 b) 索引的使用规范: i. 索引的创建要与应用结合考虑,建议大的OLTP表不要超过6个索引。 ii. 尽可能的使用索引字段作为查询条件,尤其是聚簇索引,必要时可以通过index index_name来强制指定索引 iii. 避免对大表查询时进行table scan,必要时考虑新建索引。 iv. 在使用索引字段作为条件时,如果该索引是联合索引,那么必须使用到该索引中的第一个字段作为条件时才能保证系统使用该索引,否则该索引将不会被使用。 v. 要注意索引的维护,周期性重建索引,重新编译存储过程。 c) tempdb的使用规范: i. 尽量避免使用distinct、order by、group by、having、join、cumpute,因为这些语句会加重tempdb的负担。 ii. 避免频繁创建和删除临时表,减少系统表资源的消耗。 iii. 在新建临时表时,如果一次性插入数据量很大,那么可以使用select into代替create table,避免log,提高速度;如果数据量不大,为了缓和系统表的资源,建议先create table,然后insert。 iv. 如果临时表的数据量较大,需要建立索引,那么应该将创建临时表和建立索引的过程放在单独一个子存储过程中,这样才能保证系统能够很好的使用到该临时表的索引。 v. 如果使用到了临时表,在存储过程的最后务必将所有的临时表显式删除,先truncate table,然后drop table,这样可以避免系统表的较长时间锁定。 vi. 慎用大的临时表与其他大表的连接查询和修改,减低系统表负担,因为这种操作会在一条语句中多次使用tempdb的系统表。 d) 合理的算法使用: 根据上面已提到的SQL优化技术和ASE Tuning手册中的SQL优化内容,结合实际应用,采用多种算法进行比较,以获得消耗资源最少、效率最高的方法。 具体可用ASE调优命令:Set statistics io on, set statistics time on , set showplan on 等。

本文版权声明本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站客服,一经查实,本站将立刻删除。

发表评论

热门推荐