一、 数据库的启动和关闭
1、Oracle Server主要由两部分组成:Instance和Database。Instance是指一组后台进程/线程和一块共享内存区域,
而Database是指存储在磁盘上的一组物理文件.
2、Oracle数据库的启动主要包含3个步骤:
(1)启动数据库到nomount(未加载)状态; startup nomount
(2)启动数据库到mount(加载)状态; alter database mount
(3)启动数据库到open(打开)状态; alter database open
3、启动的第一步,Oracle首先寻找参数文件(pfile/spfile),然后根据参数文件中的设置,创建实例,分配内存,
启动后台进程。
4、Oracle首先spfile<sid>.ora文件作为启动参数文件;如果该文件不存在,则选择spfile.ora,
然后是init<sid>.ora文件。
5、在SQL*PLUS中通过show parameter spfile命令来检查数据库是否使用了spfile文件。
6、参数文件中,通常需要最少的参数是 db_name,设置了这个参数之后,数据库实例就可以启动。
7、查看参数文件缺省路径:
show parameter dump_dest
show parameter control_files
show parameter db_name //显示实例名
show paramter compatible //显示兼容
8、在使用RMAN(Recovery Manager)时存在更为特殊的情况,Oracle允许在不存在参数文件的情况下启动一个实例,
数据库的 db_name会被缺省命名为DUMMY
9、LSNRCTL> status //查看监听状态
LSNRCTL> start //启动监听
10、关闭数据库 shutdown immediate 而非 shutdown, shutdown 会不正常关闭
shutdown 正常关闭,等待所有的用户断开连接
shutdown immediate 使用这个命令迫使每个用户执行完成当前的SQL语句后立即断开连接
shutdown transactional 执行Transaction关闭,迫使用户在当前执行完成后断开连接
shutdown abort 终止实例,停止所有的操作。恢复破坏的文件,数据库文件不能同其他数据库文件保持一致
11、启动数据库到mount状态
SQL>alter database mount;
在mount数据库过程中,Oracle需要找到控制文件并锁定控制文件。如果控制文件全部丢失此时就会报出如下错误:
ORA-00205:error in identifying controlfile,check alert log for more info
12、启动数据库open阶段
SQL>alter database open;
13、SCN (System Change Number) 系统改变号
//获取当前SCN select dbms_flashback.get_system_change_number from dual;
14、查检点 (Checkpoint) 减少崩溃恢复(Crash Recovery)时间
二、参数及参数文件
1、初始化参数的分类,分为3类:推导参数、操作系统依赖参数和可变参数
2、推导参数(Derived Parameters)
推导参数通常来自于其他参数的运算,依赖其他参数得出。所以这类参数通常不需要修改。如果强制修改,那么修改值会覆盖推导值。
常见的此类参数有很多,例如,SESSION参数,在Oracle文档中,该参数按以下公式运算得出:
SESSION = (1.1*PROCESSES) + 5
缺省情况下,当PROCESSES被修改时,此参数会自动计算并生效
3、操作系统依赖参数
某些参数的有效值或取值范围依赖或者受限于操作系统,如db_cache_size参数,设置Oracle使用的内存大小,该参数的最大值就要
受限于物理内存。这一类参数通常被称为操作系统依赖参数。
4.可变参数
可变参数通常可以调整,有些设置的是限制条件,如OPEN_CURSORS;有的参数是设置容量,如DB_CACHE_SIZE等。这类参数通常可以
为DBA或最终用户调整,从而产生限制性能变化,对Oracle至关重要。
5、初始化参数通常还有一些其他分类方式
a.按照修改方式划分,初始化参数又可以分为静态参数和动态参数。
静态参数只能在参数文件中修改,在重新启动后方能生效;动态参数可以动态调整,调整后通常可以立即生效。
b.按照获取方式不同,初始化参数又可以分为显示参数和隐式参数。
显示参数可以通过v$parameter查询得到;而隐含参数通常以“_”开关,必须通过查询系统表方能获得这些参数。
6、SPFILE的搜索顺序
重新启动数据库,使用startup命令,Oracle将会按照以下顺序在缺省目录中搜索参数文件。
(1) spfile<ORACLE_SID>.ora,其缺省目录如下:
UNIX: $ORACLE_HOME/dbs/
NT: %ORACLE_HOME%\database
(2) spfile.ora,其缺省目录如下:
UNIX: $ORACLE_HOME/dbs/
NT: %ORACLE_HOME%\database
(3) init<ORACLE_SID>.ora, 其缺省目录如:
UNIX: $ORACLE_HOME/dbs/
NT: %ORACLE_HOME%\database
创建了spfile,重新启动数据库,Oracle会按顺序搜索以上目录,spfile就会自动生效。
7、警报日志文件
控制警报日志文件位置的初始化参数是BACKGROUND_DUMP_DEST:
SQL> show parameter background_dump_dest
其缺省文件名为alert_<sid>.log
三、数据字典
1、数据字典由4部分组成:内部RDBMS(X$)表、数据字典表、动态性能(V$)视图和数据字典视图
2、数据字典表(Data Dictionary Table)用以存储表、索引、约束以及其它数据库结构的信息。
这些对象通常以"$"结尾(如tab$、obj$、ts$等)
sql.bsq是非常重要的一个文件,其中包含了数据字典表的定义及注释说明,该文件位于$ORACLE_HOME/rdbms/admin目录下。
3、动态性能视图(Dynamic Performance View) 记录了数据库运行时信息和统计数据
从Oracle 8开始,GV$视图开始被引入,其含义为Global V$,除了一些特例外,每个V$视图都有一个对应的GV$视图存在。
注意,每个V$视图都包含类似语句:
where inst_id = USERENV('Instance')
用于限制返回当前实例信息
4、Oracle的X$表信息可以从v$fixed_table中查到:
SQL> select count(*) from v$fixed_table where name like 'X$%';
四、内存管理
1、SGA 指系统全局区(System Global Area)
一块用于加载数据、对象并保存运行状态和数据库控制信息的一块内存区域,在数据库实例启动时分配,当实例关闭时释放,
每个实例都拥有自己的SGA区
2、数据缓冲区 (Buffer Cache) 的大小由初始化参数db_cache_size (8i中是db_block_size*db_block_buffers)决定
3、对于SGA各部分设置,可以从数据库的视图中查询得到:
select * from v$sga;
show sga
4、SGA总和受参数SGA_MAX_SIZE设置的影响
show parameter sga_max_size
Variable Size 包括 shared_pool_size、java_pool_size和large_pool_size部分
五、Buffer Cache 与 Shared Pool 原理
Buffer Cache 与 Shared Pool是SGA中的最重要和最复杂的两个部分
1、在Buffer Cache中,Oracle通过几个链表进行内存管理,其中最为熟知的是LRU List和Dirty List(也经常被称为Write List,从8i开始,
因为算法的改变,也被称为Checkpoint Queue),各种List上存放的是指向具体Buffer的指针。
六、重做(Redo)
1、重做(Redo)和撤消(Undo)是Oracle的重要特性,用以保证事务的可恢复性和可撤消性。
2、在数据库中,Redo的功能主要通过3个组件来实现:Redo Log Buffer、LGWR后台进程和Redo Log File(在归档模式下,
Redo Log File最终会写出为归档日志文件)
3、日志文件的状态:CURRENT、ACTIVE、INACTIVE和UNUSED
(1).CURRENT
指当前的日志文件,该日志文件是活动的,当前正在被使用的,在进行崩溃恢复时,CURRENT的日志文件是必须的。
(2).ACTIVE
指活动的非当前日志,该日志可以已经完成归档也可能没有归档,活动的日志文件在Crash恢复时会被用到。
(3).INACTIVE
指非活动日志,该日志在实例恢复时不再需要,但是在介质恢复时可能会用到。
日志是否完成归档,可以根据V$LOG.ARCHIVED字段进行判断
select * from v$log;
(4).UNUSED
指该日志从未被定入,这类日志可能是刚被添加到数据库或者在RESETLOGS之后被重置。被使用之后,该状态会被改变。
七、等待事件
1、通过查询V$EVENT_NAME视图
select count(*) from v$evnet_name;
2、等待事件可以分为空闲(idle)等待和非空闲(non-idle)等待事件
.空闲事件指Oracle正等待某种工作,在诊断和优化数据库的时候,不用过多注意这部分事件。
.非空闲等待事件专门针对Oracle的活动,指数据库任务或应用运行过程中发生的等待,在调整数据库的时候应该关注与研究
posted on 2010-12-20 10:07
谭明 阅读(405)
评论(0) 编辑 收藏 所属分类:
Oracle DBA