数据库启动和关闭的⼏种⽅式
Oracle数据库提供了⼏种不同的数据库启动和关闭⽅式,本⽂将周详介绍这些启动和关闭⽅式之间的区别连同他们各⾃不同的功能。
⼀、启动和关闭Oracle数据库
对于⼤多数Oracle DBA来说,启动和关闭Oracle数据库最常⽤的⽅式就是在命令⾏⽅式下的Server Manager。从Oracle 8i以后,系统将Server Manager的任何功能都集中到了SQL*Plus中,也就是说从8i以后对于数据库的启动和关闭能够直接通过SQL*Plus来完成,⽽不再另外需要Server Manager,但系统为了保持向下兼容,依旧保留了Server Manager⼯具。另外也可通过图像⽤户⼯具(GUI)的Oracle Enterprise Manager来完成系统的启动和关闭,图像⽤户界⾯Instance Manager很简单,这⾥不再详述。
要启动和关闭数据库,必须要以具备Oracle 管理员权限的⽤户登陆,通常也就是以具备SYSDBA权限的⽤户登陆。⼀般我们常⽤INTERNAL⽤户来启动和关闭数据库(INTERNAL⽤户实际上是SYS⽤户以SYSDBA连接的同义词)。Oracle数据库的新版本将逐步淘汰INTERNAL这个内部⽤户,所以我们最好还是配置DBA⽤户具备SYSDBA权限。
⼆、数据库的启动(STARTUP)
启动⼀个数据库需要三个步骤:
1、创建⼀个Oracle实例(⾮安装阶段)
2、由实例安装数据库(安装阶段)
3、打开数据库(打开阶段)
在Startup命令中,能够通过不同的选项来控制数据库的不同启动步骤。
1、STARTUP NOMOUNT
NONOUNT选项仅仅创建⼀个Oracle实例。读取a初始化参数⽂档、启动后台进程、初始化系统全局区(SGA)。a⽂档定义了实例的配置,包括内存结构的⼤⼩和启动后台进程的数量和类型等。实例名根据Oracle_SID配置,不⼀定要和打开的数据库名称相同。当实例打开后,系统将显⽰⼀个SGA内存结构和⼤⼩的列表,如下所⽰:
SQL> startup nomount
ORACLE 例程已启动。
Total System Global Area 35431692 bytes
Fixed Size 70924 bytes
Variable Size 18505728 bytessql语句实现的四种功能
Database Buffers 16777216 bytes
Redo Buffers 77824 bytes
2、STARTUP MOUNT
该命令创建实例并且安装数据库,但没有打开数据库。Oracle系统读取控制⽂档中关于数据⽂档和重作⽇志⽂档的内容,但并不打开该⽂档。这种打开⽅式常在数据库维护操作中使⽤,如对数据⽂档的更名、改变重作⽇志连同打开归档⽅式等。在这种打开⽅式下,除了能够看到SGA系统列表以外,系统还会给出"数据库装载完毕"的提⽰。
3、STARTUP
该命令完成创建实例、安装实例和打开数据库的任何三个步骤。此时数据库使数据⽂档和重作⽇志⽂
档在线,通常还会请求⼀个或是多个回滚段。这时系统除了能够看到前⾯Startup Mount⽅式下的任何提⽰外,还会给出⼀个"数据库已打开"的提⽰。此时,数据库系统处于正常⼯作状态,能够接受⽤户请求。
假如采⽤STARTUP NOMOUNT或是STARTUP MOUNT的数据库打开命令⽅式,必须采⽤ALTER DATABASE命令来执⾏打开数据库的操作。例如,假如您以STARTUP NOMOUNT⽅式打开数据库,也就是说实例已创建,但是数据库没有安装和打开。这是必须运⾏下⾯的两条命令,数据库才能正确启动。
ALTER DATABASE MOUNT;
ALTER DATABASE OPEN;
⽽假如以STARTUP MOUNT⽅式启动数据库,只需要运⾏下⾯⼀条命令即能够打开数据库:
ALTER DATABASE OPEN.
4、其他打开⽅式
除了前⾯介绍的三种数据库打开⽅式选项外,更有另外其他的⼀些选项。
(1) STARTUP RESTRICT
这种⽅式下,数据库将被成功打开,但仅仅允许⼀些特权⽤户(具备DBA⾓⾊的⽤户)才能够使⽤数据库。这种⽅式常⽤来对数据库进⾏维护,如数据的导⼊/导出操作时不希望有其他⽤户连接到数据库操作数据。
(2) STARTUP FORCE
该命令其实是强⾏关闭数据库(shutdown abort)和启动数据库(startup)两条命令的⼀个综合。该命令仅在关闭数据库碰到问题不能关闭数据库时采⽤。
(3) ALTER DATABASE OPEN READ ONLY;
该命令在创建实例连同安装数据库后,以只读⽅式打开数据库。对于那些仅仅提供查询功能的产品数据库能够采⽤这种⽅式打开。
三、数据库的关闭(SHUTDOWN)
对于数据库的关闭,有四种不同的关闭选项,下⾯对其进⾏⼀⼀介绍。
1、SHUTDOWN NORMAL
这是数据库关闭SHUTDOWN命令的确省选项。也就是说假如您发出SHUTDOWN这样的命令,也即是SHUTDOWN NORNAL的意思。
发出该命令后,任何新的连接都将再不允许连接到数据库。在数据库关闭之前,Oracle将等待现在连接的任何⽤户都从数据库中退出后才开始关闭数据库。采⽤这种⽅式关闭数据库,在下⼀次启动时⽆需进⾏任何的实例恢复。但需要注意⼀点的是,采⽤这种⽅式,也许关闭⼀个数据库需要⼏天时间,也许更长。
2、SHUTDOWN IMMEDIATE
这是我们常⽤的⼀种关闭数据库的⽅式,想很快地关闭数据库,但⼜想让数据库⼲净的关闭,常采⽤这种⽅式。
当前正在被Oracle处理的SQL语句⽴即中断,系统中任何没有提交的事务全部回滚。假如系统中存在⼀个很长的未提交的事务,采⽤这种⽅式关闭数据库也需要⼀段时间(该事务回滚时间)。系统不等待连接到数据库的任何⽤户退出系统,强⾏回滚当前任何的活动事务,然后断开任何的连接⽤户。
3、SHUTDOWN TRANSACTIONAL
该选项仅在Oracle 8i后才能够使⽤。该命令常⽤来计划关闭数据库,他使当前连接到系统且正在活动
的事务执⾏完毕,运⾏该命令后,任何新的连接和事务都是不允许的。在任何活动的事务完成后,数据库将和SHUTDOWN IMMEDIATE同样的⽅式关闭数据库。
4、SHUTDOWN ABORT
这是关闭数据库的最后⼀招,也是在没有任何办法关闭数据库的情况下才不得不采⽤的⽅式,⼀般不要采⽤。假如下列情况出现时能够考虑采⽤这种⽅式关闭数据库。
1、数据库处于⼀种⾮正常⼯作状态,不能⽤shutdown normal或shutdown immediate这样的命令关闭数据库;
2、需要⽴即关闭数据库;
3、在启动数据库实例时碰到问题;
任何正在运⾏的SQL语句都将⽴即中⽌。任何未提交的事务将不回滚。Oracle也不等待现在连接到数据库的⽤户退出系统。下⼀次启动数据库时需要实例恢复,因此,下⼀次启动可能⽐平时需要更多的时间。
表1能够清楚地看到上述四种不同关闭数据库的区别和联系。
         关闭⽅式 A I T N
允许新的连接 × × × ×
等待直到当前会话中⽌ × × × √
等待直到当前事务中⽌ × × √ √
强制CheckPoint,关闭任何⽂档 × √ √ √
其中:A-Abort I-Immediate T-Transaction N-Nornal
pl/sql developer的Commander Windows下执⾏shutdown命令报“ORA-00900: ⽆效 SQL 语句”,
但在服务器本地sqlplus下却可以执⾏关闭数据库命令,PL/SQL DEVELOPER只⽀持部分的sql*plus命令?
另外在数据库unmount(instance 已经启动)的情况下,PL/SQL DEVELOPER⽆法连接上,
报“ORA-12528: TNS:监听程序:所有适⽤例程都⽆法建⽴新连接”。
在instance已经启动但数据库还没mount的情况下PL/SQL DEVELOPER等客户端都⽆法连接到实例上
如何查看Oracle当前数据库实例名
数据库实例名在编程的很多地⽅都需要⽤到,配置数据库的jdbc:oracle:thin:@192.168.2.1:1521:WW ,还有sqlPlus的连接字符串中也需要⽤到 conn  as sysdba; 如何查看当前数据库实例名呢?⽅式有三:
  ·使⽤SQL语句:select instance_name from v$instance;
  ·使⽤show命令:show parameter instance
  ·查看参数⽂件:查看a⽂件

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。