Oracle 关闭和启动 的几种方法 及 试验

最近 对oracle 比较感兴趣 所以想趁此机会多了解一点,作为一名程序员 其实最基础的就是学会使用那些常用的SQL 就可以了。不过本人一向比较喜欢 更多的了解一个东西,所以记录一下,也当做以后查询的时候备用,一下这些东西没有必要死记硬背,只要知道个大概,忘记的时候可以查看Oracle的帮助,或者 上网查一下就OK了,好了,开始写:

有以下几种启动方式:
1、startup nomount
非安装启动,这种方式启动下可执行:重建控制文件、重建数据库
读取init.ora文件,启动instance,即启动SGA和后台进程,这种启动只需要init.ora文件。
  

2、startup mount dbname
安装启动,这种方式启动下可执行:
  数据库日志归档、
  数据库介质恢复、
  使数据文件联机或脱机,
  重新定位数据文件、重做日志文件。

  执行“nomount”,然后打开控制文件,确认数据文件和联机日志文件的位置,
  但此时不对数据文件和日志文件进行校验检查。


3、startup open dbname
先执行“nomount”,然后执行“mount”,再打开包括Redo log文件在内的所有数据库文件,
  这种方式下可访问数据库中的数据。


4、startup
等于以下三个命令
  startup nomount
  alter database mount
  alter database open


5、startup restrict
约束方式启动
  这种方式能够启动数据库,但只允许具有一定特权的用户访问
  非特权用户访问时,会出现以下提示:
  ERROR:
  ORA-01035: ORACLE 只允许具有 RESTRICTED SESSION 权限的用户使用


6、startup force
  强制启动方式
  当不能关闭数据库时,可以用startup force来完成数据库的关闭
  先关闭数据库,再执行正常启动数据库命令


7、startup pfile=参数文件名
带初始化参数文件的启动方式
  先读取参数文件,再按参数文件中的设置启动数据库
  例:startup pfile=E:/Oracle/admin/oradb/pfile/init.ora


8、startup EXCLUSIVE

有三种关闭方式:
1、shutdown normal
  正常方式关闭数据库。


2、shutdown immediate
  立即方式关闭数据库。
  在SVRMGRL中执行shutdown immediate,数据库并不立即关闭,
  而是在Oracle执行某些清除工作后才关闭(终止会话、释放会话资源),
  当使用shutdown不能关闭数据库时,shutdown immediate可以完成数据库关闭的操作。


3、shutdown abort
直接关闭数据库,正在访问数据库的会话会被突然终止,
  如果数据库中有大量操作正在执行,这时执行shutdown abort后,重新启动数据库需要很长时间。


附:本人在做以上试验的时候,首先按照我们一般的方法 启动了Oracle的两个必须的服务,我的OS是 windows XP professional;

然后 进入sqlplus /nolog 放在运行里面执行也可以不带 /nolog,然后用一个已经存在的账户进去 conn userName/passWord@SID

如果是系统管理员就是我们常说的dba 那后面还要加上 as sysdba,否则进不去的 ^_^。

要做数据库启动和关闭的试验,必须要有足够的权限才可以的。我开始用system用户进去shutdown immediate结果权限不够,后来改用

sys用户就一切OK了。

执行完 shutdown immediate命令后 会显示:

数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。

然后这个时候我们想要做的就是试验一下 启动数据库的命令了,激动的时刻就要到来了,于是乎立刻输入

startup nomount; 输入后显示:

Total System Global Area  452984832 bytes
Fixed Size                  1249512 bytes
Variable Size             109055768 bytes
Database Buffers          335544320 bytes
Redo Buffers                7135232 bytes

上面的字节大小数目,大家的不一定和我的一样 这个没有关系。

然后紧接着输入 startup mount;输入后显示:

ORA-01081: ????????? ORACLE - ??????

额,怎么会这样,

然后又接着输入 startup open;输入后显示:

ORA-01081: ????????? ORACLE - ??????

问题依旧,这里要说明的一点就是 报错的?????根据我的经验判断因为我的安装的是oracl的字符集是简体中文的所以报错就出现了所谓的乱码,如果搞过jsp或者servlet的人 可能都经历过乱码的痛苦吧,前途是项目没有采用utf-8的编码的情况下,呵呵,反正我是遇见过而且不止一次,最初的一次也是最严重的一次是在做本科毕业设计的时候,那个时候用jsp+servlet做了一个简单的视频点播系统的时候,出现了很多处乱码,真糗。扯远了,^_^。言归正传,乱码问题暂时我们不在这里讨论,如果有人遇到了乱码问题,还没有解决,可以与我一起讨论一下,欢迎,因为我也准备等项目稍微不是那么紧张的时候,写一个关于乱码问题的小结。

那大家肯定会问 这到底是个什么错误呢,其实大家不用紧张。首先冷静的思考一下,你可能会恍然大悟,如果实在想不出原因,那就接着看,其实我觉得最程序员 有一向基本的技能应该会而且也是我认为必须会的,那就是查看api,做java开发大家可能会看对应版本jdk的api,一看一目了然,当然这里肯定不是看jdk的api来找原因了。oralce提供给我们一个它已经收集的错误记录的文档,大家可以到网删去下载,有html格式的也有chm格式的。如果大家不想去下也可以联系我 然后我发给大家一份 都是可以的。好了我把错误的原因卸载下面:

ORA-01081: cannot start already-running ORACLE - shut it down first
Cause: Obvious
Action: none
这就是文档中对于这个错误的说明那个,我的英语不好,所以就不在这里卖弄了,O(∩_∩)O,这句话的意思我相信大家都知道。
原因我也说了。
那么该如果解决这个问题对我们来说就非常的easy了,其实我觉得很多人不会和我一样犯这样的错误,因为我前面第四点已经说了
startup 等于以下三个命令
  startup nomount
  alter database mount
  alter database open
所以在这里强调一下就是语速则不达的道理。因为我是看完前三点然后就开始试验了,我是个急性子,所以很多时候会出现类似的错误,人嘛总要有点性格呵呵,更何况我是个程序员呢。开个玩笑。
输入完startup nomount命令后,我们要真正的查询摸个scheme下面的数据,还要继续执行 alter database monut;输入后显示:
数据库已更改。
然后再输入: alter database open;输入后显示:
数据库已更改。
这个时候就可以 用一个已经存在的账户登录进去 查询我们要的数据了。
注意:
问题写在这里 似乎已经完了,其实不然,还有一个问题没有说,那就是,如果我们在执行完shutdown immediate命令关闭掉数据库后,这个时候我们退出这个dos窗口。然后你在进入dos窗口启动数据库 这个时候,按照我们之前说的必须用以一个有权限的用户进去启动,你肯定立刻想到 用一个拥有系统管理员权限的用户进去 ,我们是不是立刻会使用如下命令进去:
conn sys/密码@sid as sysdba;
这个时候屏幕会打印出一个错误提示信息:
ERROR:
ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务
问题的原因是什么,到底问什么会这样呢??,这里我留在一个悬念给各位网友思考,因为我一向觉得:授人以鱼不如授人以渔。

但是为了能够让大家不是那么纠结也能够更好的做完这个试验,我给出解决这种问题的方法,其实对照我给出的这种方法,我觉得你应该明白上述问题的原因到底在哪里。方法如下:
输入命令: conn / as sysdba或者conn sys/密码 as sysdba;输入后显示:
已连接到空闲例程。
这个跟 conn sys/密码@sid as sysdba;主要区别在于没有加sid;
这里给出conn命令的说明:

用法: CONN[ECT] [logon] [AS {SYSDBA|SYSOPER}]
其中 <logon>  ::= <username>[/<password>][@<connect_identifier>] | /

看看conn这个命令的参数就应该明白个大概了吧。
然后再进行上面说过的操作就可以了。这里我用一个简单的命令来启动 数据库 startup open ;输入后显示:
ORACLE 例程已经启动。

Total System Global Area  452984832 bytes
Fixed Size                  1249512 bytes
Variable Size             113250072 bytes
Database Buffers          331350016 bytes
Redo Buffers                7135232 bytes
数据库装载完毕。
数据库已经打开。
其实之前为什么没有立刻用startup open目的就是让大家明白这个启动的过程,
这里给出startup命令的说明:

 STARTUP
 -------

 Starts an Oracle instance with several options, including mounting,
 and opening a database.

 STARTUP options | upgrade_options

 where options has the following syntax:
    [FORCE] [RESTRICT] [PFILE=filename] [QUIET] [ MOUNT [dbname] |
    [ OPEN [open_options] [dbname] ] |
    NOMOUNT ]

 where open_options has the following syntax:
    READ {ONLY | WRITE [RECOVER]} | RECOVER

 and where upgrade_options has the following syntax:
    [PFILE=filename] {UPGRADE | DOWNGRADE} [QUIET]
大家可以自己 多了解一下。
最后补充一点,就是用文字来叙述一下 oracle启动的简要过程:
1.找到参数文件 ;
2.通过参数文件找到控制文件;
3.通过控制文件 来控制 数据文件 和日志文件的 加载。
4.最后 orcle 启动成功。
这是我个人通过学习的出来的一个简要理解,有不对的地方还请大家多多指教。
好了,今天就这个话题就写到这里,欢迎与大家 多多探讨,交流,共同成长!!


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值