最近 对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 启动成功。这是我个人通过学习的出来的一个简要理解,有不对的地方还请大家多多指教。好了,今天就这个话题就写到这里,欢迎与大家 多多探讨,交流,共同成长!!