您的位置:首页 > 数据库 > Oracle

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

2010-09-18 10:36 169 查看
最近 对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 启动成功。

这是我个人通过学习的出来的一个简要理解,有不对的地方还请大家多多指教。

好了,今天就这个话题就写到这里,欢迎与大家 多多探讨,交流,共同成长!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: