设为首页 收藏本站
查看: 1026|回复: 0

[经验分享] 5_Oracle_Admin_Oracle的启动模式和关闭

[复制链接]

尚未签到

发表于 2018-9-11 09:38:31 | 显示全部楼层 |阅读模式
DSC0000.jpg

  只使用startup命令,将按照默认值启动数据库,供普通用户使用;而指定PFILE则会根据自定义的参数来启动数据库。
  [FORCE]表示强制启动数据库,使用该选项通常是因为上次关闭数据库时没有关闭完整,表现为数据文件或联机日志文件不干净,也可能在内存中残留一些东西如ipcs资源等,从而导致启动失败(因为内存中已经有资源了),这就需要使用FORCE选项,将内存中残留的数据都清空。
DSC0001.png

  [RESTRICT]受限模式是只数据库只对部分具有特定权限的用户开发,通常是数据库管理员在进行备份恢复时采取的模式。(DBA在进行备份恢复可以有两种方式:将数据库变为mount模式,但是mount模式下可执行的操作有限;使用RESTRICT模式open数据库,这样除了部分授权用户可以连接数据库,其他用户都不能连接数据库了。)
  如果数据库已经是open状态了,则可以使用alter命令将其调整为restrict模式:
  SQL>>
Database altered.  SQL>>
System altered.  /*=====演示RESTRICT模式下用户连接的状况=======*/
  [oracle@localhostdbs]$ lsnrctl start
LSNRCTL for Linux:Version 11.2.0.1.0 - Production on 09-SEP-2014 04:47:47  

  
Copyright (c) 1991, 2009,Oracle.  All rights reserved.
  

  
TNS-01106: Listener usinglistener name LISTENER has already been started
  
# 启动litsner
  
  [oracle@localhost ~]$sqlplus /nolog
SQL*Plus: Release11.2.0.1.0 Production on Tue Sep 9 04:48:29 2014  

  
Copyright (c) 1982, 2009,Oracle.  All rights reserved.
  SQL> conn / assysdba

  Connected to an>  
  SQL> startup
ORACLE instance started.  

  
Total System GlobalArea  422670336 bytes
  
Fixed Size                  1336960 bytes
  
Variable Size             318769536 bytes
  
Database Buffers           96468992 bytes
  
Redo Buffers                6094848 bytes
  
Database mounted.
  
Database opened.
  SQL> create usermickey>
  
User created.
  
-- 创建一个普通用户
  SQL> grantconnect, resource to mickey;
Grant succeeded.  
--为该用户授权
  [oracle@localhost ~]$sqlplus /nolog
SQL*Plus: Release11.2.0.1.0 Production on Tue Sep 9 04:54:24 2014  

  
Copyright (c) 1982, 2009,Oracle.  All rights reserved.
  SQL> connmickey/123
Connected.  
--用户mickey已经可以连接到数据库了
  
  SQL> select *from dual;
  
D
  
-
  
X
  
--mickey可以正常使用数据库
  
  SQL> quit
Disconnected from OracleDatabase 11g Enterprise Edition Release 11.2.0.1.0 - Production  
With the Partitioning,OLAP, Data Mining and Real Application Testing options
  
-- mickey用户退出数据库
  SQL>>
-- 切换成SYSDBA用户,alter数据库的模式为RESTRICT。  
System altered.
  [oracle@localhost ~]$sqlplus mickey/123
  
SQL*Plus: Release11.2.0.1.0 Production on Tue Sep 9 04:58:11 2014
  
Copyright (c) 1982, 2009,Oracle.  All rights reserved.
  

  
ERROR:
  
ORA-01035: ORACLE onlyavailable to users with RESTRICTED SESSION privilege
  
-- mickey用户已经无法连接数据库了,因为该用户只有connect 和 resource权限,而没有RESTRICTED SESSION权限。
  
  [oracle@localhost ~]$sqlplus system
  
SQL*Plus: Release11.2.0.1.0 Production on Tue Sep 9 04:59:54 2014
  

  
Copyright (c) 1982, 2009,Oracle.  All rights reserved.
  

  
Enter password:
  
Connected to:
  
Oracle Database 11gEnterprise Edition Release 11.2.0.1.0 - Production
  
With the Partitioning,OLAP, Data Mining and Real Application Testing options
  
# system这个用户可以正常连接,该用户有比较高的权限。
  
  /*============演示在restrict模式下如何踢除某些用户==============*/
  如上所示,system用户在restrict模式下还可以连接数据库,但是管理员不希望这个用户连接,那么可以将其踢除出去:
  SQL> descv$session;
Name                                     Null?    Type  
------------------------------------------------- ----------------------------
  
SADDR                                             RAW(4)
  
SID                                               NUMBER
  
SERIAL#                                           NUMBER
  
...
  
CREATOR_ADDR                                       RAW(4)
  
CREATOR_SERIAL#                                    NUMBER
  
ECID                                              VARCHAR2(64)
  SQL> selectsaddr, sid, serial# from v$session;
  SQL> select sid,serial#, username, saddr from v$session;
  
       SID   SERIAL# USERNAME                      SADDR
  
---------- ---------------------------------------- --------
  
         1          5 SYS                            38AF0070
  
         2          1                                38AED604
  
         3          1                                38AEAB98
  
      ...
  
        22          5                                38AB8594
  
        24          4                                38AB30BC
  
        25         33                                38AB0650
  
        27         44 SYSTEM                         38AAB178
  
        29          1                                38AA5CA0
  

  
23 rows selected.
  根据sid和serial#可以踢除相应的用户:
  SQL>>
  
System altered.
  /*=====切换成system用户,会发现已经不能使用数据库了======*/
  SQL> select *from dual;
select * from dual  
*
  
ERROR at line 1:
  
ORA-00028: your sessionhas been killed
  不能kill自己:
  SQL>>
alter system kill session'1,5'  
*
  
ERROR at line 1:
  
ORA-00027: cannot killcurrent session
DSC0002.jpg

  Read-Only模式,顾名思义只能做查询,不能做增删改命令;在Read-Only模式下,用户可以让某些data files 离线或上线,但不能对tablespaces离线或上线;也可以对offline状态下的data files和tablespaces进行恢复。
  /*=============演示只读模式下的用户连接状况===============*/
  SQL> shutdownimmediate
Database closed.  
Database dismounted.
  
ORACLE instance shutdown.
  SQL> startupmount;
ORACLE instance started.  

  
Total System GlobalArea  422670336 bytes
  
Fixed Size                  1336960 bytes
  
Variable Size             318769536 bytes
  
Database Buffers           96468992 bytes
  
Redo Buffers                6094848 bytes
  
Database mounted.
  SQL>>
  
Database altered.
  
-- 管理员将数据库调整为read-only模式
  
  /*===普通用户mickey登陆数据库===*/
  
  [oracle@localhost ~]$sqlplus mickey/123
SQL*Plus: Release11.2.0.1.0 Production on Tue Sep 9 05:17:29 2014  
Copyright (c) 1982, 2009,Oracle.  All rights reserved.
  

  

  
Connected to:
  
Oracle Database 11gEnterprise Edition Release 11.2.0.1.0 - Production
  
With the Partitioning,OLAP, Data Mining and Real Application Testing options
  SQL> createtable tastbl(id integer);
create table tastbl(idinteger)  
*
  
ERROR at line 1:
  
ORA-00604: error occurredat recursive SQL level 1
  
ORA-16000: database openfor read-only access
  
--普通用户不能创建表,因为是只读模式
  SQL> select *from dual;
D  
-
  
X
  
--但是可以进行查询操作
  
DSC0003.jpg

  关闭数据库和启动数据库的过程是对应的:
  一. Close a Database
  1.将SGA中的数据分别写入到datafiles和redo log files中;
  2.关闭联机数据文件和redolog file(离线的数据文件和tablespace不受影响)
  3.普通用户无法再访问数据库了,但好似controlfiles仍然是open状态,管理员还能继续使用。
  二. Unmounta Database
  1.断开数据库和实例的联系;
  2.实例仍然驻留在内存中;
  3.当数据库unmounted了之后,control files将关闭
  三. ShutDown an Instance
  1.关闭进程
  2.从内存中释放SGA占据的空间
  3.终止后台进程
DSC0004.jpg

  使用ABORT、IMMEDIATE和TRANSACTIONAL的方式会强制终止所有用户的会话,是一种比较粗暴的方式,其中ABORT方式会导致不完整关闭,因为无法完成检查点的创建,因此在下一次启动数据库时,smont进程会自动进行数据恢复。
DSC0005.jpg

  IMMEDIATE是最为常用的关闭方式,因为NORMAL 和 TRANSACTION这两种方式都要等用户把活干完才能关,这样不但浪费时间,而且如果用户一直不结束任务,数据库就一直无法关闭。
  ===============演示NORMAL关闭过程========================
  [oracle@localhost ~]$sqlplus /nolog
SQL*Plus: Release11.2.0.1.0 Production on Wed Aug 27 19:44:25 2014  

  
Copyright (c) 1982, 2009,Oracle.  All rights reserved.
  SQL> conn / assysdba
Connected to an idleinstance.  SQL> startup
ORACLE instance started.  

  
Total System GlobalArea  422670336 bytes
  
Fixed Size                  1336960 bytes
  
Variable Size             318769536 bytes
  
Database Buffers           96468992 bytes
  
Redo Buffers                6094848 bytes
  
Database mounted.
  
Database opened.
  ===========开启另一个终端登录数据库===============
  [oracle@localhost ~]$sqlplus /nolog
SQL*Plus: Release11.2.0.1.0 Production on Wed Aug 27 19:47:19 2014  

  
Copyright (c) 1982, 2009,Oracle.  All rights reserved.
  SQL> conn mickey
Enter password:  
Connected.
  ===================切回SYS用户=======================
  SQL> select sid,serial#, username from v$session;
  
       SID   SERIAL# USERNAME
  
---------- ----------------------------------------
  
         1          5 SYS
  
         2          1
  

  
        28          1
  
        29         10 MICKEY
  

  
23 rows selected.
  SQL> shutdownnormal
  --此时光标一直在闪烁,数据库无法关闭,因为用户mickey还没有退出,NORMAL模式必须等用户退出才能关闭数据库
  ===================切回mickey用户=======================
  SQL> select *from dual;
D  
-
  
X
  
-- mickey用户还能进行查询操作
  
  SQL> exit
  -- mickey用户主动退出
  ===================切回SYS用户=======================
  SQL> shutdownnormal
Database closed.  
Database dismounted.
  
ORACLE instance shut down.
  
-- 数据库终于关闭了
  ===============演示TRANSACTIONAL的关闭过程========================
  SQL> startup
-- SYS 用户再次启动数据库  
ORACLE instance started.
  

  
Total System Global Area 422670336 bytes
  
Fixed Size                 1336960 bytes
  
Variable Size            318769536 bytes
  
Database Buffers          96468992 bytes
  
Redo Buffers               6094848 bytes
  
Database mounted.
  
Database opened.
  ==========mickey 用户登录建表===========
  [oracle@localhost ~]$ sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on Wed Aug 2720:57:59 2014  

  
Copyright (c) 1982, 2009, Oracle.  All rights reserved.
  SQL> connmickey/123
Connected.  SQL> createtable test(id integer, name char(10));
Table created.  SQL> insert into test values(0, 'mickey');
1 row created.  SQL> select *from test;
  
        ID NAME  
---------- ----------
  
         0 mickey
  
-- mickey用户建了表并插入了一条数据,但这个数据只保存在内存中,还没有写入data file里,因为没有commit。
  
  ==========SYS查看transaction ===========
  SQL> selectaddr, status from v$transaction;
  
ADDR     STATUS
  
-------- ----------------
  
37FD24A8 ACTIVE
  
-- 有一条记录,说明用户尚未commit
  
  ===========mickey用户提交数据==============
  SQL> commit
  
Commit complete.
  ==========SYS查看transaction ===========
  SQL> selectaddr, status from v$transaction;
  
no rows selected
  
-- 没有记录了,说明没有正在进行中的transaction
  
  ============mickey用户再插入一条数据================
  SQL> insert intotest values(1, 'chris');
1 row created.  

  
-- 没有commit
  ==========SYS查看transaction 并试图关闭数据库===========
  SQL> selectaddr, status from v$transaction;
  
ADDR     STATUS
  
-------- ----------------
  
37FD24A8 ACTIVE
  SQL> shutdowntransactional
  --光标闪烁,无法关闭,因为用户没有commit
  ===========mickey用户提交数据==============
  SQL> commit
Commit complete.  ==========SYS用户所在的终端显示数据库关闭===========
  SQL> shutdowntransactional
Database closed.  
Database dismounted.
  
ORACLE instance shut down.



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-571800-1-1.html 上篇帖子: 4_Oracle_Admin_Oracle的启动过程 下篇帖子: ORACLE EXP/IMP 参数详解
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表