下面是工作中对Oracle日常管理操作的一些总结,都是一些基本的oracle操作和SQL语句写法,在此梳理成手册,希望能帮助到初学者(如有梳理不准确之处,希望指出)。

一、数据库的启动和关闭

1.1  数据库的正常启动步骤
要想启动或关闭ORACLE系统必须首先切换到ORACLE用户
[root@kevin ~]# su - oracle 

以DBA的身份登录数据库(oracle用户下执行)
[oracle@kevin ~]$ sqlplus "/as sysdba"

执行启动数据库命令
SQL> startup
ORACLE instance started.
Total System Global Area  285212672 bytes
Fixed Size                  1218968 bytes
Variable Size              88082024 bytes
Database Buffers          188743680 bytes
Redo Buffers                7168000 bytes
Database mounted.
Database opened.

启动和关闭监听(oracle用户下执行)
[oracle@kevin ~]$ lsnrctl start
[oracle@kevin ~]$ lsnrctl stop

1.2  数据库的正常关闭步骤
同样以DBA的身份登录数据库
[oracle@kevin ~]$ sqlplus "/as sysdba"

执行数据库关闭命令
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
1.3 几种关闭数据库方法对比
shutdown有四个参数:normal、transactional、immediate、abort。缺省不带任何参数时表示是normal。
shutdown normal:   不允许新的连接、等待会话结束、等待事务结束、做一个检查点并关闭数据文件。启动时不需要实例恢复,这种方法往往不能关闭数据库或等待很长时间。
shutdown transactional:  不允许新的连接、不等待会话结束、等待事务结束、做一个检查点并关闭数据文件。启动时不需要实例恢复。
shutdown immediate:  不允许新的连接、不等待会话结束、不等待事务结束、做一个检查点并关闭数据文件。没有结束的事务是自动rollback的。启动时不需要实例恢复。最常用的方法。
shutdown abort:  不允许新的连接、不等待会话结束、不等待事务结束、不做检查点且没有关闭数据文件。启动时自动进行实例恢复。一般不推荐采用,只有在数据库无法关闭时使用,可能造成数据库的不一致。

----------------------------------------------------------------------------------------------------------

Oracle数据库的启动关闭的几种方式

--> 启动数据库
Oracle启动过程涉及几种模式,这些模式涉及不同的文件,每个状态下数据库做不同的事情,同时这些模式适用于不同的维护需求,主要的模式有三种:NOMOUNT、MOUNT、OPEN。

NOMOUNT:启动数据库实例, 此时读取参数文件,但是不加载数据库;
MOUNT:启动数据库实例,加载数据库,但是数据库处于关闭状态;
OPEN:启动数据库实例,加载并打开数据库;
FORCE:终止实例并重启数据库,这种模式在数据库关闭或者启动遇到问题时使用,这种方式不到万不得已时不要使用,会有数据丢失;

1)NOMOUNT
这种模式只会创建实例(创建Oracle实例的各种内存结构与服务进程,其中有5个进程必须启动, DBWR、LGWR、SMON、PMON、CKPT),并不加载数据库,也不会打开任何数据文件。

先关闭数据库

SQL> start nomount;

数据库的启动过程记录在警告追踪文件中,该警告追踪文件中包括数据库启动信息,它存放在参数BACKGOUND_DUMP_DEST定义的目录下,警告日志的名字为alert_orcl.log

进入到目录查看警告日志关于startup nomount过程记录

测试在nomount状态时数据字典是否打的开,下图说明数据库字典在nomount状态下是无法访问的,因为数据字典需要从控制文件获取文件的信息,而此时控制文件没有打开所以无法查看。

但是在nomount下可以通过参数文件获得控制文件的位置,因为此时参数文件已经打开

2)MOUNT
这种模式将启动实例,加载数据库并保持数据库关闭状态。数据库启动到MOUNT状态有两种方式,一是可以直接启动数据库到MOUNT,二是如果数据库已经启动到NOMOUNT状态,使用alter database mount把数据库切换到MOUNT状态;

SQL> alert database mount;

SQL> startup mount

此时我们可以查看数据字典,因为控制文件已经打开

但是此时不能访问数据库的数据文件(表,视图),文件此时数据文件没有打开。

3)OPEN
这种模式将启动实例,加载并打开数据库,这是常规的启动模式,用户想要对数据库进行多种操作就必须使用OPEN模式启动数据库,启动到OPEN状态,有两种方式,一是直接启动到OPEN状态(使用startup或者startup open),二是如果数据库处于NOMOUNT或者MOUNT状态,可以通过alter database open切换到OPEN状态。

此时可以访问数据文件了

4)FORCE
这种模式将终止实例并重启数据库,这是一种强制性启动模式,只有在启动或者关闭出现问题时才使用,并且有一定的风险,会丢失数据,造成意外的问题。

--> 关闭数据库

与启动数据库顺序相反,也分三个步骤:关闭数据库(CLOSE 关闭数据文件),卸载数据库(关闭控制文件 DISMOUNT),关闭Oracle实例(SHUTDOWN)。同时关闭模式也有多种常见的有:
1)NORMAL
正常的关闭方式,如果对于关闭数据库的时间没有限制,通常采用这种方式,以NORMAL方式关闭数据库,Oracle将执行如下操作:

  • 阻止任何用户建立新的连接;
  • 等待当前所有正在连接的用户主动断开连接;
  • 当前所有用户的都断开连接后,将立即关闭数据库;

2)TRANSACTION
事务关闭方式,它的首要任务是保证当前所有活动的事务都可以被提交,并在尽可能短的时间内关闭数据库。以事务方式关闭,Oracle将执行如下操作:

  • 阻止用户建立新连接和开始新事务;
  • 等待所有活动事务提交后,再断开用户连接;
  • 当所有活动事务提交完毕,用户断开连接后,关闭数据库;

3)IMMEDIATE
立即关闭方式,可以较快且安全的关闭数据库,是DBA经常采用的关闭数据库的方式,立即关闭方式,Oracle执行如下操作:

  • 阻止用户建立新的连接和开始新的事务;
  • 中断当前事务,回滚未提交事务;
  • 强制断开所有用户连接和执行检查点把脏数据写到数据文件中;
  • 关闭数据库

----------------------------------------------------------------------------------------------------------

oracle几种启动方式说明
-----------------------------------------------------------------------------
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

oracle几种关闭方式说明
-----------------------------------------------------------------------------
有三种关闭方式:
1)shutdown normal
   正常方式关闭数据库。

2)shutdown immediate
   立即方式关闭数据库。
   在SVRMGRL中执行shutdown immediate,数据库并不立即关闭,
   而是在Oracle执行某些清除工作后才关闭(终止会话、释放会话资源),
   当使用shutdown不能关闭数据库时,shutdown immediate可以完成数据库关闭的操作。

3)shutdown abort
   直接关闭数据库,正在访问数据库的会话会被突然终止,
   如果数据库中有大量操作正在执行,这时执行shutdown abort后,重新启动数据库需要很长时间。

oracle关闭过程和启动相反,经历了close、dismount、shutdown。可以分步关闭,也可以直接关闭。
分步关闭:
1)close数据库:关闭数据文件、日志文件等。
SQL> alter database close;
数据库已更改。

2)dismount数据库:关闭控制文件。
SQL> alter database dismount;
数据库已更改。

3)shutdown数据库:关闭实例。
shutdown有4个参数:shutdown normal(默认)、shutdown immediate(推荐)、shutdown transactional、shutdown abort
SQL> shutdown
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。

oracle这几种启动和关闭方式之间的区别以及它们各自不同的功能
-----------------------------------------------------------------------------
1)启动和关闭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权限。

2)数据库的启动(STARTUP)
启动一个数据库需要三个步骤:
-> 创建一个Oracle实例(非安装阶段)
-> 由实例安装数据库(安装阶段)
-> 打开数据库(打开阶段)

在Startup命令中,可以通过不同的选项来控制数据库的不同启动步骤。
1)STARTUP NOMOUNT
NONOUNT选项仅仅创建一个Oracle实例。读取init.ora初始化参数文件、启动后台进程、初始化系统全局区(SGA)。Init.ora 文件定义了实例的配置,包括内存结构的大小和启动后台进程的数量和类型等。实例名根据
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方式打开数据库,也就是说实例已经创建,但是数据库没有安装和打开。这是必须运行下面的两条命令,数据库才能正确启动。
SQL> ALTER DATABASE MOUNT;
SQL> ALTER DATABASE OPEN;

而假如以STARTUP MOUNT方式启动数据库,只需要运行下面一条命令即可以打开数据库:
SQL> ALTER DATABASE OPEN.

4)其他打开方式
除了前面介绍的三种数据库打开方式选项外,还有另外其他的一些选项。
STARTUP RESTRICT
这种方式下,数据库将被成功打开,但仅仅答应一些特权用户(具有DBA角色的用户)才可以使用数据库。这种方式常用来对数据库进行维护,如数据的导入/导出操作时不希望有其他用户连接到数据库操作数据。

STARTUP FORCE
该命令其实是强行关闭数据库(shutdown abort)和启动数据库(startup)两条命令的一个综合。该命令仅在关闭数据库碰到问题不能关闭数据库时采用。

ALTER DATABASE OPEN READ ONLY;
该命令在创建实例以及安装数据库后,以只读方式打开数据库。对于那些仅仅提供查询功能的产品数据库可以采用这种方式打开。

二、创建数据库用户

2.1  以DBA用户登录数据库(如system,sys)
SQL> conn system/oracle@orcl

注:如果在本地服务器登录@orcl可以去掉

2.2  用create user语法创建用户
SQL> CREATE USER user_name IDENTIFIED BY user_passwordDefaultTablespace tbs_users;

user_name为数据库用户的用户名
user_password为数据库用户的密码
tbs_users为用户使用的表空间,默认是users表空间。

例如:
SQL> CREATE USER cmsuser IDENTIFIED BY passwordDefaultTablespace users;

2.3  赋表空间使用权限
SQL> alter user user_name quota unlimited on user_tablespace quota unlimited on user_tablespace;

2.4  给用户赋权限
SQL> GRANT connect, resource TO cmsuser;
Connect用户能登录数据库的权限
Resource用户能创建一些数据库对像的权限,表、视图,存储过程,一般是授予开发人员的

2.5  删除用户
SQL> DropUser cmsuser Cascade;
使用cascade参数可以删除该用户的全部objects

Oracle日常运维操作总结-数据库的启动和关闭的更多相关文章

  1. oracle 日常运维

    1.查询表或存储过程.函数异常 select * from user_errors where name ='TEST_TABLE' 2.查询表是否存在 select * from user_tabl ...

  2. Hadoop记录-日常运维操作

    1.Active NameNode hang死,未自动切换 #登录当前hang死 Active namenode主机,停止Namenode,触发自动切换.hadoop-daemon.sh stop n ...

  3. MySQL日常运维操作---持续更新

    1.查看当前连接数: 这些参数都是什么意思呢? Threads_cached ##mysql管理的线程池中还有多少可以被复用的资源 Threads_connected ##打开的连接数 Threads ...

  4. 运维案例 | Exchange2010数据库损坏的紧急修复思路

    ​​关注嘉为科技,获取运维新知 Exchange后端数据库故障,一般都会是比较严重的紧急故障,因为这会直接影响到大面积用户的正常使用,而且涉及到用户数据.一旦遇到这种级别的故障,管理员往往都是在非常紧 ...

  5. mysql日常运维与参数调优

    日常运维 DBA运维工作 日常 导数据,数据修改,表结构变更 加权限,问题处理 其它 数据库选型部署,设计,监控,备份,优化等 日常运维工作: 导数据及注意事项 数据修改及注意事项 表结构变更及注意事 ...

  6. hadoop日常运维与升级总结

    日常运维 升级 问题处理方法 日常运维 进程管理 由于配置文件的更改,需要重启生效, 或者是进程自己因某种致命原因终止, 或者发现进程工作出现异常等情况下,需要进行手动进程的关闭或启动, 或者是增删节 ...

  7. zookeeper 用法和日常运维

    本文以ZooKeeper3.4.3版本的官方指南为基础:http://zookeeper.apache.org/doc/r3.4.3/zookeeperAdmin.html,补充一些作者运维实践中的要 ...

  8. Jenkins日常运维笔记-重启数据覆盖问题、迁移、基于java代码发版(maven构建)

    之前在公司机房部署了一套jenkins环境,现需要迁移至IDC机房服务器上,迁移过程中记录了一些细节:1)jenkins默认的主目录放在当前用户家目录路径下的.jenkins目录中.如jenkins使 ...

  9. Docker Swarm 日常运维命令笔记

    之前介绍了Docker管理工具-Swarm部署记录,这里简单总结下Docker Swarm的日常维护命令,以作为平时运维笔记. Swarm作为一个管理Docker集群的工具,首先需要将其部署起来,可以 ...

随机推荐

  1. vSphere ESXi 重新安装后的虚拟机恢复(转载)

    安装的 ESXi 的物理主机密码忘记,登录 不上了,需要重新安装 ESXi,安装后恢复原先物理主机上的 虚拟机的方法如下(VMFS分区完好): 关于 VMFS 分区: ESXi 的安装时会划分一个分区 ...

  2. asp.net mvc项目使用spring.net发布到IIS后,在访问提示错误 Could not load type from string value 'DALMsSql.DBSessionFactory,DALMsSql'.

    asp.net mvc项目使用spring.net发布到IIS后,在访问提示错误 Could not load type from string value 'DALMsSql.DBSessionFa ...

  3. python3的C3算法

    一.基本概念 1. mro序列 MRO是一个有序列表L,在类被创建时就计算出来. 通用计算公式为: mro(Child(Base1,Base2)) = [ Child ] + merge( mro(B ...

  4. GUI_键盘事件

    import java.awt.Button; import java.awt.FlowLayout; import java.awt.Frame; import java.awt.TextField ...

  5. 【Java多线程】AtomicLong和LongAdder

    AtomicLong简要介绍 AtomicLong是作用是对长整形进行原子操作,显而易见,在java1.8中新加入了一个新的原子类LongAdder,该类也可以保证Long类型操作的原子性,相对于At ...

  6. [USACO09JAN]安全出行Safe Travel

    题目 什么神仙题啊,我怎么只会\(dsu\)啊 我们考虑一个非常暴力的操作,我们利用\(dsu\ on \ tree\)把一棵子树内部的非树边都搞出来,用一个堆来存储 我们从堆顶开始暴力所有的边,如果 ...

  7. usb-cam (2)摄像机标定

    http://blog.csdn.net/heyijia0327/article/details/43538695 官方也给出了单目的标定教程和双目视觉的标定教程.本教程基于usb_cam  pack ...

  8. 树莓派3b安装Apache2+PHP+MySQL+phpyadmin

    树莓派型号:3B+ 系统环境:2017-04-10-raspbian-jessie 先更新一下源 BASIC sudo apt-get update 安装Apache2 BASIC sudo apt- ...

  9. 深入浅出的webpack构建工具--webpack4+vue+router项目架构(十四)

    阅读目录 一:vue-router是什么? 二:vue-router的实现原理 三:vue-router使用及代码配置 四:理解vue设置路由导航的两种方法. 五:理解动态路由和命名视图 六:理解嵌套 ...

  10. 【Codeforces 1132C】Painting the Fence

    Codeforces 1132 C 题意:给一些区间\([l_i,r_i]\),从中删掉两个,求剩下的区间最多能够覆盖的格子数量. 思路:首先枚举第一个删掉的区间,然后我们可以通过差分来求出每个格子被 ...