一、启动和关闭Oracle数据库
对于大多数Oracle
DBA来说,启动和关闭Oracle数据库最常用的方式就是在命令行方式下的Server Manager。从Oracle
8i以后,系统将Server
Manager的所有功能都集中到了SQLPlus中,也就是说从8i以后对于数据库的启动和关闭可以直接通过SQLPlus来完成,而不再另外需要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实例。读取initora初始化参数文件、启动后台进程、初始化系统全局区(SGA)。Initora文件定义了实例的配置,包括内存结构的大小和启动后台进程的数量和类型等。实例名根据Oracle_SID设置,不一定要与打开的数据库名称相同。当实例打开后,系统将显示一个SGA内存结构和大小的列表,如下所示:
SQL> startup nomount
ORACLE 例程已经启动。
Total System Global Area 35431692 bytes
Fixed Size 70924 bytes
Variable Size 18505728 bytes
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
shutdown-mode有如下几种模式:
1 smart: 等所有的连接中止后,关闭数据库。如果客户端连接不终止,则无法关闭数据库。
2 fast: 快速关闭数据库, 断开客户端的连接,让已有的事务回滚,然后正常关闭数据库。
3 immediate: 立即关闭数据库,立即停止数据库进程,直接退出,下次启动时会进行实例恢复。
本实验采用immediate方式模拟数据库异常关闭:
(1)创建测试表并插入测试数据
highgo=# select from t;
id |name
----+------
1 |a
(1 row)
highgo=# insert into t values(2,'a');
INSERT 0 1
highgo=# \q
(2)模拟数据库强制关闭
[highgo@sourcedb ~]$ pg_ctl stop -mimmediate
日志: 接收到立即 (immediate) 停止请求
警告: 中断联接, 因为其它服务器进程崩溃
详细信息: Postmaster 命令此服务器进程回滚当前事物并退出, 因为其它服务器进程不正常的退出可能毁坏了共享内存
提示: 一会儿你将可以重联接数据库并且重复你的命令
waiting for server to shut down done
server stopped
(3)再次启动后,数据库会进行实例恢复
[highgo@sourcedb ~]$ pg_ctl start
server starting
[highgo@sourcedb ~]$ 日志: 数据库系统中断;上一次的启动时间是在2017-04-04 07:58:13 CST
日志: 数据库系统没有正确的关闭; 处于自动恢复状态中
日志: redo 在 0/1929070 开始
日志: record with zero length at0/19291F0
日志: redo 在 0/19291C0 完成
日志: 上一次完成事务是在日志时间2017-04-04 07:58:22691571+08完成的
日志: MultiXact member wraparoundprotections are now enabled
日志: 数据库系统准备接受连接
日志: 已启动autovacuum
(4)验证数据一致性
[highgo@sourcedb ~]$ psql
Password:
psql (302)
Type "help" for help
highgo=# select from t;
id |name
----+------
1 |a
2 |a
(2rows)
启动的阶段和启动的命令如下:
1、nomount:alter database open,此阶段需要参数文件支持;
2、mount:alter database mount,此阶段需要控制文件支持;
3、open :alter database open,此阶段数据库会验证所有的数据文件和redo。
4、也可以一条命令直接起库:startup
具体方法/步骤:
打开命令行窗口界面,可以同时按住“ctrl+R”键,在d出来的运行窗口中输入cmd。
启动oracle服务,在命令行窗口中输入“net start oracleserviceXXXX”后面的XXXX实际是需要根据您自己的数据库实例名进行替换。如果您不知道,可以看下“计算机管理”界面下的服务中,能不能找到服务名类似的服务。提示“服务已经启动成功”就说明服务启动起来了。
启动监听程序,在命令行窗口输入lsnrctl start,等到提示“命令执行成功”就可以了。
接下来就开始加载数据库实例了。在命令行窗口输入“sqlplus / as sysdba”登录到一个空闲的例程。
登录完成后,输入“startup”。这个过程可能有点慢,直到出现“数据库已经打开”则表示实例启动成功了。
测试一下把,随便连接一个数据库用户,如果提示“连接成功”则说明数据库服务现在可以正常使用了。
sql server2005分离数据库时间不会太久,一般几十秒钟就可以了。
如何长时间没有分离成功,说明该数据库正在被使用,你需要关闭所有的sql文件,包括一打开的数据表、以及新建查询。之后再选择分离,再选中删除链接,再确定
以上就是关于Oracle启动和关闭方式的区别全部的内容,包括:Oracle启动和关闭方式的区别、如何解决这样的Postgres会突然关机后启动、oracle启动命令等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)