Oracle数据库的启动和关闭 一、数据库启动三阶段: 1、nomount:只加载实例(SGA+后台进程) 查看数据库状态:select instance_name,status from v$instance; ==> STARTED select * from v$sgainfo; ==> 与内存相关的 如何启动:在停止状态 ==> startup nomount 数据库已经启动 ==> startup force nomount 这3个状态只能按nomount.mount,open的顺序往上启动 数据库作了什么: (启动instance) 1.读取参数文件 2.产生警报日志 3.分配了内存 4.后台进程启动 需要什么条件: (1)参数文件,目的分配内存和后台进程; (2)实例管理(告警日志和追踪文件)的存储目录,目的写警报日志($ORACLE_BASE/admin/$ORACLE_SID/{a|b|c|u}dump) adump:audit_file_dest bdump:background_dump_dest cdump:core_dump_dest udump:user_dump_dest 如果不设置,默认使用$ORACLE_HOME/rdbms/log/里 我们可以作什么: 1)查看部分动态性能视图,即v$(v$instance v$sga v$process v$bgprocess)等(参数与内存和后台进程相关的视图) 2)修改初始化参数 可以向上兼容,在另外两个阶段也可以做 3)创建数据库 4)重新创建控制文件 只能在nomount阶段做 此阶段不能看数据字典(以dba_ ,all_ ,user_ 开头的) 数据字典的数据来源是以$结尾的基表 动态性能视图的数据来源是以x$开头的内存表|固定表 SYS@ora10g> startup nomount ORACLE instance started. Total System Global Area 230686720 bytes Fixed Size 1218676 bytes Variable Size 75499404 bytes Database Buffers 150994944 bytes Redo Buffers 2973696 bytes SYS@ora10g> select instance_name,status from v$instance; INSTANCE_NAME STATUS ------------------------ ---------- ora10g STARTED SYS@ora10g> 2、mount 如何启动:(1)startup mount (2)已经启动的状态,从nomount到mount状态 ==> alter database mount 数据库作了什么:从参数文件中获得控制文件的位置 加载控制文件到内存 控制文件包含数据库的物理结构(DBF+REDO)和数据库的状态信息(SCN(system change number)) 需要什么条件:需要所有的控制文件都在,并且状态是一致的(最多8份,最少1份,互为镜像) 如果找不到报错ORA_205 :把控制文件放到show parameter control;查到的目录里 或者修改此目录alter system set control_files='/../control01.ctl','control02.ctl','control03.ctl',; 相互间版本不一致报错ORA_214:用高版本覆盖低版本(cp) 控制文件在哪:由初始化参数 control_file 决定,该参数指向几个控制文件,数据库就需要几个文件 如何查看:MOUNTED 我们可以作什么: (1)可以查看大多数动态性能视图(v$xxx,可以查看文件头信息v$datafile_header) 但不能查询数据字典 (2)可以移动数据文件(dbf)和联机日志文件(redo)、tempfile alter database rename file 'OLD_NAME' to 'NEW_NAME'; 移动的条件: 'new'在目的地存在(验证文件头) 'old'在控制文件存在(验证源) 被移动的文件必须是静态的 (3)可以备份还原恢复数据库(用rman) (4)可以作数据库级别的 offline 和 online ,但不能作表空间的 offline 和 online (5)可以修改数据库的归档模式 (6)可以打开和关闭闪回数据库的功能 3、open 如何启动:从mount状态修改到open状态 ==>alter database open 数据库作了什么:按照控制文件的指针寻找到数据库文件和联机日志文件,并且要校验文件的有效性 需要什么条件:需要所有的物理文件都在,并且是好的 找到对应文件,并且验证文件状态(一致性) 不一致要经历介质恢复或实例恢复 介质恢复 需要DBA参与 实例恢复 需要恢复内存丢失的数据,自动完成 1扫描日志,找到需要恢复的数据 2开始应用日志去恢复(前滚) 3打开数据库 4找到未提交的事务,进行回滚 5释放资源(延迟释放) 实例崩溃后,再启动只能保证已提交的事务 控制文件在哪:由初始化参数 control_file 决定,该参数指向几个控制文件,数据库就需要几个文件 我们可以作什么: 数据文件 日志文件都已打开 随意查看 修改使用 但有些操作只能在mount下和nomount下完成 例如改归档模式就只能在mount open并不是一切皆可 nomount mount open没有子集包含的关系. 二、数据库的关闭 是否允许新连接 是否等待当前会话结束 是否等待当前事务处理结束 强制选择检查点并关闭文件 abort 否 否 否 否 immediate 否 否 否 是 transactional 否 否 是 是 normal 否 是 是 是 三、数据库的生命周期 nomount-->mount-->open-->close-->dismount-->shutdown alter database close;了数据库就从open进入到mount阶段,此时就不能再alter database open;了 四、查看数据库的启动阶段 select open_mode from v$database; 12c查看数据库的启动阶段,可以用上面的命令也可以用下面的命令 select name,open_mode from v$pdbs; alter session set container=...;切换容器的命令 |
|
来自: peijs5201314 > 《Oracle》