第一课

5个目标点(知识点)
环境说明,连接实例,hash运算
dbs目录文件解释
参数文件解释
启动过程三阶段
实战演练

本次课程目标是讲解oracle实例的启动过程
首先了解一下本次实验环境
    之前已经创建好了一个数据库--wode,当前是关闭状态
    查看参数文件:ll $ORACLE_HOME/dbs
    查看SID:echo $ORACLE_SID,如果没有,可以export ORACLE_SID=wode一下
其次讲解基本原理
    1:ORACLE使用环境变量里(ORACLE_SID+ORACLE_HOME)的值进行hash运算,来确定SGA区的内存地址。
    2:如果当你使用sqlplus / as sysdba 连接到一个idle的instance时,表示你使用的(ORACLE_SID+ORACLE_HOME) hash后的值在内存中没有找到相应的sga区,一个可能是数据库没有启动,另一个可能是和当前正在运行的数据库的(ORACLE_SID+ORACLE_HOME)内容不相同,导致你没有正确的连接到当前的数据库的SGA。

参数文件
        参数文件里包含数据库初始化参数,用于设置数据库实例和数据库的运行特征及使用限制。
        oracle支持两种类型的参数文件,oracle按照参数文件的设定启动实例并打开数据库
        initorcl.ora是实例的文本参数文件        文本型必须通过手工修改
        spfileorcl.ora是实例的服务器参数文件,是默认启动文件    二进制型通过alter system命令修改
        pfile    文本型,通常命名为initSID.ora,pfile并不一定存在,可以手动创建,需要查看参数文件内容时,可以通过创建一个文本型的。因为spfile二进制的不能直接查看。过程如下
            sqlplus / as sysdba
            SQL> create pfile from spfile;
            File created.
            生成的文件为initSID.ora在ORACLE_HOME/dbs目录下
            也可以用 create spfile from pfile,二者可以相互转化。
        spfile   二进制,通常命名为spfileSID.ora。
        如何判断数据库启动是使用spfile还是pfile初始化文件.可以用下方法,默认是spfile
        show parameter spfile

注意事项
            可以这样用,startup pfile=$ORACLE_HOME/dbs/initorcl.ora
            但不可以这样用,startup spfile=$ORACLE_HOME/dbs/spfileorcl.ora
            虽然可以显式指定具体pfile作为启动数据库的参数文件,但这里需要注意的是,不可以显式指定某个spfile作为启动的参数文件。
            下面的用法是不正确的。
            SQL> startup spfile=$ORACLE_HOME/dbs/spfilefgy.ora
            SP2-0714: invalid combination of STARTUP options
            错误提示:startup命令后面跟随的选项不正确。原因很简单,spfile作为系统参数文件是在启动过程中自动识别到的,其命名规则也是固定的。因此请不要尝试显式的去使用spfile启动数据库。
            此时,如果我们显式的使用pfile是可以完成数据库的启动。
    启动过程:拿到了oracle_sid,oracle_home,参数文件,然后启动,挂载,打开
    启动实例:启动到nomount 状态,这个阶段数据库读取参数文件(spfile/pfile)文件中的参数,启动数据库实例。
              初始化参数文件默认位置在 $ORACLE_HOME/dbs 目录下,
               在提交startup命令之后,ORACLE_HOME/dbs目录下Oracle会自动按照如下的顺序查找参数文件完成数据库的启动。
           1)spfile$ORACLE_SID.ora
           2)spfile.ora
           3)init$ORACLE_SID.ora
              这一阶段主要是指定控制文件及数据库实例名,分配系统全局区,启动后台进程,打开alertSID.log文件和跟踪文件。
    挂载数据库:Mount数据库的过程是读参数文件中描述的控制文件,校验控制文件的正确性,将控制文件的内容读入到内存,mount是挂接的意思,是操作系统中的概念.一旦mount之后,就是将一个没有意义的实例和一个数据库发生了联系.因为实例是空壳.没有任何数据库和该实例发生关系,我们可以理解为实例是水泵,放到哪个水塘里就会抽取哪里的数据,实例是通用的.mount的意思是将一个通用的水泵放入到指定的水塘.
    打开数据库:Alter database open;
        读控制文件中描述的数据文件
        验证数据文件的一致性,如果不一致,使用日志文件将数据库文件恢复到一致的状态.
        数据库open后,普通用户才可以访问数据库
        用户的表才为可见

我们现在回想一下数据库启动的三个台阶,我们先读的是参数文件,参数文件可以由我们来编写.读完参数
文件后又读了控制文件,控制文件描述了数据文件和日志文件的信息,如果控制文件丢失可以重新建立,最
后是读数据文件.数据文件里才存放了我们的数据.数据库将启动分为三个台阶,目的是我们可以准确的知
道哪里有问题,迅速的排除.有点象老鼠拖木钎,大头在后面.由最开始的一个1k的参数文件,最后到几个t
的大型数据库.当我们只打startup而不加任何参数的时候.默认是到open,等于startup open;

第五实战演练
正常输出

sqlplus / as sysdba
startup nomount
select instance_name,status from v$instance;
show parameter pfile
select value from v$spparameter where name=‘control_files‘;
alter database mount;
select instance_name,status from v$instance;
select OPEN_MODE from v$database;
alter database open;
select instance_name,status from v$instance;
select OPEN_MODE from v$database;
select name from v$controlfile;
shutdown immediate

异常输出
模拟参数文件丢失或损坏,直接
rm spfilewode.ora
模拟控制文件丢失或损坏,直接
rm control01.ctl
两个控制文件缺一不可,而且还要一样,否则数据库不能启动
模拟数据文件的丢失或损坏,直接

正常启动关闭输出
[[email protected] dbs]$ ll
total 36
-rw-rw----. 1 oracle oinstall 1544 Oct 10 15:29 hc_orcl.dat
-rw-rw----. 1 oracle oinstall 1544 Oct 22 14:45 hc_wode.dat
-rw-r--r--. 1 oracle oinstall 2851 May 15  2009 init.ora
-rw-r-----. 1 oracle oinstall   24 Oct 10 15:27 lkORCL
-rw-r-----. 1 oracle oinstall   24 Oct 17 20:31 lkWODE
-rw-r-----. 1 oracle oinstall 1536 Oct 10 15:29 orapworcl
-rw-r-----. 1 oracle oinstall 1536 Oct 17 20:53 orapwwode
-rw-r-----. 1 oracle oinstall 2560 Oct 19 15:35 spfileorcl.ora
-rw-r-----. 1 oracle oinstall 2560 Oct 22 14:45 spfilewode.ora
[[email protected] dbs]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Sat Oct 22 14:46:14 2016

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> startup nomount
ORACLE instance started.

Total System Global Area 4142166016 bytes
Fixed Size		    2259760 bytes
Variable Size		 2348811472 bytes
Database Buffers	 1778384896 bytes
Redo Buffers		   12709888 bytes
SQL> select instance_name,status from v$instance;

INSTANCE_NAME	 STATUS
---------------- ------------
wode		 STARTED

SQL> show parameter pfile

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
spfile				     string	 /u01/app/oracle/product/11.2.0
						 /dbhome_1/dbs/spfilewode.ora
SQL> select value from v$spparameter where name=‘control_files‘;

VALUE
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/wode/control01.ctl
/u01/app/oracle/fast_recovery_area/wode/control02.ctl

SQL> alter database mount;

Database altered.

SQL> select instance_name,status from v$instance;

INSTANCE_NAME	 STATUS
---------------- ------------
wode		 MOUNTED

SQL> select OPEN_MODE from v$database;

OPEN_MODE
--------------------
MOUNTED

SQL> alter database open;

Database altered.

SQL> select OPEN_MODE from v$database;

OPEN_MODE
--------------------
READ WRITE

SQL> select instance_name,status from v$instance;

INSTANCE_NAME	 STATUS
---------------- ------------
wode		 OPEN

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.

异常输出

如果参数文件损坏或丢失,可以从下面的地方复制一个到dbs目录下,并重命名为initSID.ora
[[email protected] dbs]$ rm -rf spfilewode.ora
下面这个文件本身是文本型的,所以即使重命名为spfilewode.ora,启动时也会报错
[[email protected] dbs]$ cp /u01/app/oracle/admin/wode/pfile/init.ora.9172016205213 spfilewode.ora
[[email protected] dbs]$ ll
total 36
-rw-rw----. 1 oracle oinstall 1544 Oct 10 15:29 hc_orcl.dat
-rw-rw----. 1 oracle oinstall 1544 Oct 22 14:23 hc_wode.dat
-rw-r--r--. 1 oracle oinstall 2851 May 15  2009 init.ora
-rw-r-----. 1 oracle oinstall   24 Oct 10 15:27 lkORCL
-rw-r-----. 1 oracle oinstall   24 Oct 17 20:31 lkWODE
-rw-r-----. 1 oracle oinstall 1536 Oct 10 15:29 orapworcl
-rw-r-----. 1 oracle oinstall 1536 Oct 17 20:53 orapwwode
-rw-r-----. 1 oracle oinstall 2560 Oct 19 15:35 spfileorcl.ora
-rw-r-----. 1 oracle oinstall 1635 Oct 22 14:24 spfilewode.ora
[[email protected] dbs]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Sat Oct 22 14:24:43 2016

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> startup nomount
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file ‘/u01/app/oracle/product/11.2.0/dbhome_1/dbs/initwode.ora‘
SQL> quit
Disconnected
[[email protected] dbs]$ mv spfilewode.ora initwode.ora
[[email protected] dbs]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Sat Oct 22 14:25:24 2016

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> startup
ORACLE instance started.

Total System Global Area 4142166016 bytes
Fixed Size		    2259760 bytes
Variable Size		 2248148176 bytes
Database Buffers	 1879048192 bytes
Redo Buffers		   12709888 bytes
Database mounted.
Database opened.
SQL> show parameter pfile

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
spfile				     string
SQL> create spfile from pfile;

File created.

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
[[email protected] dbs]$ ll
total 40
-rw-rw----. 1 oracle oinstall 1544 Oct 10 15:29 hc_orcl.dat
-rw-rw----. 1 oracle oinstall 1544 Oct 22 15:01 hc_wode.dat
-rw-r--r--. 1 oracle oinstall 2851 May 15  2009 init.ora
-rw-r-----. 1 oracle oinstall 1635 Oct 22 14:59 initwode.ora
-rw-r-----. 1 oracle oinstall   24 Oct 10 15:27 lkORCL
-rw-r-----. 1 oracle oinstall   24 Oct 17 20:31 lkWODE
-rw-r-----. 1 oracle oinstall 1536 Oct 10 15:29 orapworcl
-rw-r-----. 1 oracle oinstall 1536 Oct 17 20:53 orapwwode
-rw-r-----. 1 oracle oinstall 2560 Oct 19 15:35 spfileorcl.ora
-rw-r-----. 1 oracle oinstall 2560 Oct 22 15:01 spfilewode.ora
[[email protected] dbs]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Sat Oct 22 15:02:05 2016

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> startup
ORACLE instance started.

Total System Global Area 4142166016 bytes
Fixed Size		    2259760 bytes
Variable Size		 2248148176 bytes
Database Buffers	 1879048192 bytes
Redo Buffers		   12709888 bytes
Database mounted.
Database opened.
SQL> show parameter pfile

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
spfile				     string	 /u01/app/oracle/product/11.2.0
						 /dbhome_1/dbs/spfilewode.ora

[[email protected] wode]$ rm -rf control01.ctl
[[email protected] wode]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Sat Oct 22 15:10:42 2016

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> startup
ORACLE instance started.

Total System Global Area 4142166016 bytes
Fixed Size		    2259760 bytes
Variable Size		 2264925392 bytes
Database Buffers	 1862270976 bytes
Redo Buffers		   12709888 bytes
ORA-00205: error in identifying control file, check alert log for more info

SQL> select OPEN_MODE from v$database;
select OPEN_MODE from v$database
                      *
ERROR at line 1:
ORA-01507: database not mounted

SQL> select instance_name,status from v$instance;

INSTANCE_NAME	 STATUS
---------------- ------------
wode		 STARTED

SQL> select name from v$controlfile;

NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/wode/control01.ctl
/u01/app/oracle/fast_recovery_area/wode/control02.ctl
时间: 2024-10-13 11:18:47

第一课的相关文章

sql第一课笔记

这是我看了imooc的视频教程之后重新写的笔记. 虽然之前也是学习过SQL Server数据库,但是也是忘记得差不多了.现在重新捡起来,安装一次数据库练习,使用的是mysql. 第一课是最简单的创建,修改,查看,删除数据库: mysql 有密码之后在命令行登陆 用的是 shell>mysql -u root -p; 提示输入密码: 登陆成功之后,把提示符mysql变成以当前计算机帐户名@主机名 当前数据库的格式:prompt \[email protected]\h \d> prompt命令下

OpenCV 第一课(安装与配置)

OpenCV 第一课(安装与配置) win10,opencv-2.4.13, 安装, vs2013, 配置 下载安装软件 官网OpenCV下载地址下载最新版本,我下载的是opencv.2.4.13,然后解压安装,我写的路径是D:\Program Files.注意本文中绿色标注的要换成你自己的安装路径. 这里得说一点,可能是因为网速太差的原因,昨天晚上下载了几次安装时都提示说"cannott open file'opencv-2.4.13.exe' as archive".我当时一直不明

读书笔记 - 《格鲁夫给经理人的第一课》

这本书对我的启发远远超过其它的企业管理类图书,不愧是资深前辈写的书.虽然名为第一课,实际上对于中层经理人来说,已经不再需要第二课了.这本书从简单的早餐店开始,讲解了管理杠杆率.开会.决策.规划.矩阵组织.激励.绩效.招人.薪酬.培训,以浅显的语言讲解了几乎是一个中层经理人所需理解的全部工作,使我对工作的认识有了大幅度提高,已经基本可以摆脱漫无头绪的状态!这本书准备丢在公司,没事就翻看思考一下,在实践中继续深入领悟!

VC++编程之第一课笔记

第一课 Windows程序内部运行原理 API 操作系统把它所能够完成的功能以函数的形式提供给应用程序使用,应用程序对这些函数的调用就叫做系统调用.这些函数的集合就是Windows操作系统提供给应用程序编程的接口(Application Programming Interface),简称Windows API. 如Create Window就是一个API函数,应用程序调用这个函数,操作系统就会按照该函数提供的参数信息产生一个相应的窗口. MSG(消息结构体) 结构体定义如下: typedef s

EasyUI入门第一课

首先下载easyUI,最好是最新的,然后新建一个空web程序或是网站,不废话,代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="JqueryEasyUI.WebForm1" %> <!DOCTYPE html> <html xmlns="http://ww

第一课 C语言简明教程

1序言: 1与Java.C#等高级语言相比,C语言却非常简单,学习简单,使用也简单,但是也非常重要,到目前为止基本上操作系统的内核代码超过百分之九十使用C语言完成,因此学好C语言是学好计算机这门课程的基础,特别是进入系统编程尤为明显. 今天是本人复习C语言课程的第一课,主要重新记录一下C语言的基础知识,这节课涉及到C语言的结构.变量以及类型.输入输出.条件判断以及循环知识. 2知识点: 2.1 C语言的结构 2.1.1 通常情况下C语言程序是由: 1.相关的代码注释,使用/* ··· */可注释

微积分重点 第一课至第四课

1.微积分是关于两个函数间关系的学问 例如, 距离与速度的关系  f(t)  --- df/dt 高度与斜率的关系  y(x)  ---- dy/dx 函数1--->函数2:   求斜率 函数2--->函数1:   求面积,乘以自变量 两条曲线不同,但是包含了相同的信息 函数2表示了函数1在某一瞬间的变化率 2.导数的总览和计算 三个重要的基本函数:幂函数 三角函数 指数函数 求导过程: Δy/Δx 无限逼近取极限 就得到了 dy/dx sinx 在零点处斜率逼近1, 在pi/2处斜率为零,

第一课: 认识linux, 安装虚拟机和安装centOS 7

这是关于linux 学习的第一课 一周第一次课(5月26日)1.1 学习之初1.2 约定1.3 认识Linux1.4 安装虚拟机1.5 安装centos7资源:keepass.com  记录密码工具各种软件版本更新r.aminglinux.com课程用到的密码及命令老师: coding.net 课程用到的代码及命令centos7.aminglinux.comLINUX 应用Linux 是一个操作系统,Android 就是其一运行PPT,浏览网站,玩游戏等网站,游戏,QQ, 微信LInux起源:之

html第一课

第一段: <!DOCTYPE HTML> <!--html5--> <html> <heda> <meta charset="GB2312">   <!--设置字符集--> <title>html第一课</title> </heda> <body> <img src = "c.gif" width="400" height

linux第一课

linux第一课 1.C开发的LINUX系统的世界 (基于Red Hat Enterprise Linux Server release 6.3 (Santiago)) 2.查看CPU-----------cat /proc/cpuinfo 2.查看内存-------------cat /proc/meminfo 3.查看硬盘--------------smartctl -a /dev/sda