数据库

本类阅读TOP10

·SQL语句导入导出大全
·SQL Server日期计算
·SQL语句导入导出大全
·SQL to Excel 的应用
·Oracle中password file的作用及说明
·MS SQLServer OLEDB分布式事务无法启动的一般解决方案
·sqlserver2000数据库置疑的解决方法
·一个比较实用的大数据量分页存储过程
·如何在正运行 SQL Server 7.0 的服务器之间传输登录和密码
·SQL中两台服务器间使用连接服务器

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
漫谈数据库的启动和关闭

作者:未知 来源:月光软件站 加入时间:2005-5-13 月光软件站

对于DBA们来说,关闭和重新启动数据库以便优化、调整应用的运行是经常碰到的事情。如果用户已经log进如了数据库,你用SHUTDOWN IMMEDIATE 或SHUTDOWN ABORT命令来执行关闭数据库,那用户将不能连接,直到数据库重新启动,用户时常会抱怨:怎么又要重起。其实,每次这样的启动关闭都是为了数据库能更好的运做。这篇文章将具体介绍shutdown/startup操作时应想到的步骤和许多注意事项,或许这些能对你有所帮助。

NOTE:在执行第一步前,SHUT DOWN 数据库,不要提前关闭SQL*NET,直到你确认关闭了SERVER上的数据库后再关闭SQL*NET。因为一旦你关闭了SQL*NET,用户将将失去和数据库的会话。

第一步---存档或删除老的trace files 和 logs
当你启动ORACLE的一个实例(INSTANCE)时,ORACLE把关于该实例的诊断信息写入指定的trace 和 log文件。每个后台进程都增加一个TRACE文件,它被存储在指定的目录(该路径由INIT.ORA 或CONFIG.ORA文件中的BACKGROUND_DUMP_DEST参数指定)。用户在数据库中遇到一个内部错误时也增加 USERS' TRACE文件,该文件的位置由INIT.ORA 或 CONFIG.ORA 文件中的USER_DUMP_DEST参数指定。

TRACE文件的个数和名称形式由你的操作系统决定。例如在UNIX下,文件名是一个数字加下画线加后台进程号,类似3_12345.trc,当你下一次启动实例时,一个新的文件将被产生,因为进程号的不同,文件名可能是3_13245.trc 。

由于每次启动和关闭数据库时,ORACLE并不自动删除TRACE文件,所以如果忽略这个步骤,那这些没有用的文件将占据大量的自由空间。所以DBA应该主动的管理这些文件,或删除或存档在别的指定目录下,如何管理主要是根据你自己的开发环境需要而订了。 SQL*NET也产生LOG文件,一般叫LISTENER.LOG,为了能知道他的位置,可以键入命令
lsnrctl status

LISTENER.LOG文件大小也随着启动的次数不断的变大,所以通过妥善管理它也能有效的利用空间。

第二步---改名ALERT LOG文件
ALERT LOG文件也是用来记录INSTANCE的诊断信息的。它的存放目录也通过BACKGROUND_DUMP_DEST参数来指定。一般情况下ALERT LOG文件命名方式为:ALERT_.LOG。ALTER LOG文件包括了一些数据库主要事件信息,例如:startup,dhutdown, redo log 的使用,tablespace的改变,文件的改变,内部错误信息,tablespace-backup的状态的改变等。ALTER LOG文件是重要的,同时该文件的大小增长的速度也很惊人,如果你不检查他,一段时间后你想看看它将是很费劲,因为它已经很大了,查起来也费劲。

为了既能留下这些有用的信息,同时不至于浪费很大的空间,可以用改名的方法。你可以在任何时候更改ALTER LOG文件名,甚至在DATABASE OPEN时。当ORACLE不能找到被BACKGROUND_DUMP_DESC指定的文件时,他将增加一个新的ALTER LOG文件。虽然改名不要求SHUTDOW,但选择在SHUTDOWN/STARTUP数据库时更改名字是一个好的主意。

NOTE:下面的几步是在restart数据库时做的。

第三步---产生一个增加控制文件(CREATE CONGROLFILE )命令的文件
为了recover一个被破坏的数据库,你不得不用CREATE CONTROLFILE 命令来重建control files。CREATE CONTROLFILE命令有两个使用:
1、在你的现有CONTROL FILES文件破化后重建它
2、在ALTER DATABASE 级别的参数时,如:MAXDATAFILES

你可以手输入命令,但最好在STARTUP前发送一命令,以便你拥有最新版本的CREATE CONTROLFILE命令。从进入SQLDBA,SERVER MANAGER或者SQL*PLUS,输入:
alter database backup controlfile to trace;

该命令在USER_DUMP_DESC参数指定的路径产生一个TRACE文件,名字可能是SIDNAME_PROCESSID.TRC,该文件将包含针对你的数据库的完整的CREATE CONTROLFILE 语法。

第四步--把PACKAGES 和 PROCEDURES驻留SGA区
众所周知,当PL/SQL OBJECTS被一个用户调用时,它将被存储在SGA区的SQL共享池中,当别人再度调用该OBJECT时直接从SGA区读取,能感受到明显的速度提升。所以,把常用的PACKAGES 和 PROCEDURES在STARTUP时就载入并驻留SGA,将提高应用的整体性能。通过从新编译、调用等方法可以调用OBJECT(PROCEDURES 或 CURSORS)进SGA,然后用DBMS_SHARED_POOL.KEEP来驻留SGA。如下:
alter package APPOWNER.ADD_CLIENT compile;
execute DBMS_SHARED_POOL.KEEP('APPOWNER.ADD_CLIENT','P');
(P代表PROCEDURES,C代表CURSORS)

一般每个数据库包括两类驻留程序:
1、数据库的核心PACKAGES
2、用户自定义的PACKAGES
核心PACKAGES包括SYS 所有的PACKAGES,STANDARD,DBMS_SQL, DBMS_UTILITY, DIUTIL,为了查看你的INSTANCE中那些被驻留了,查询DBA_OBJECT_SIZE,用下面的语句:
select Owner,
Name,
Type,
Source_Size+Code_Size+Parsed_Size+Error_Size Total_Bytes
from DBA_OBJECT_SIZE
where Type = 'PACKAGE BODY' order by 4 desc;




相关文章

相关软件