ORACLE用户管理和起停数据库

来源:百度文库 编辑:神马文学网 时间:2024/04/27 14:37:08
一、连接你的oracle数据库    SQL> sqlplus /nolog    SQL> connect /as sysdba二、修改oracle账户信息       1、修改账户的口令,使用下面的语句:                SQL> ALTER  USER  username  IDENTIFIED  BY  password       2、修改已锁定的账户口令,使用下面的语句:                SQL> ALTER  USER  username  IDENTIFIED  BY  password  ACCOUNT  UNLOCK       3、如果要锁定账户,使用下面的语句:                SQL> ALTER  USER  username  ACCOUNT  LOCK        4、如果要解锁账户,使用下面的语句:                SQL> ALTER  USER  username  ACCOUNT  UNLOCK三、创建一个账户并且赋予SYSDBA权限         1、创建用户(username=yzq,password=yezhuangqiao),使用下面的语句:                SQL> CREATE  USER  yzq  IDENTIFIED  BY  "yezhuangqiao"  ACCOUNT  UNLOCK         2、把SYSDBA和SYSOPER权限赋予yzq这个用户:                SQL> GRANT  SYSDBA  TO  yzq;                SQL> GRANT  SYSDBA  TO  yzq;         3、利用下面的语句回收用户的权限:                SQL> REVOKE  SYSDBA  FROM  yzq;                SQL> REVOKE  SYSOPER  FROM  yzq;                4、测试登陆的连通性:                SQL> CONNECT  yzq/yezhuangqiao  AS  SYSDBA四、oracle启动或登陆方式         1、启动实例不加载数据库(NOMOUNT模式)       这种启动模式只创建实例,并不加载数据库,Oracle仅为实例创建各种内存结构和服务进程,不会打开任何数据库文件。       如果要执行下列维护工作,必须在NOMOUNT启动模式下进行:       a、创建新数据库       b、重建控制文件        下面显示在SQL*Plus中启动数据库进入NOMOUNT模式的过程:               SQL> STARTUP  NOMOUNT          2、启动实例加载数据库但不打开数据库(MOUNT模式)         如果要执行下列维护工作,必须在MOUNT启动模式下进行:         a、重命名数据文件。         b、添加、删除或重命名重做日志文件。         c、执行数据库完全恢复操作。         d、改变数据库的归档模式。         下面显示在SQL*Plus中启动数据库进入MOUNT模式的过程:                SQL> STARTUP  MOUNT           3、启动实例加载并打开数据库(OPEN模式)       这是正常启动模式。普通数据库用户要对数据库进行操作,比如连接数据库并进行查询,数据库必须处于OPEN启动模式        下面显示了在SQL*Plus中启动数据库进入OPEN模式的过程:               SQL> STARTUP          2、使用下面语句以DBA身份连接到Oracle:          (1)  操作系统认证方式                   SQL> CONNECT  /  AS  SYSDBA          (2)  口令文件认证方式                   SQL> CONNECT username/password  AS  SYSDBA            其中username/password必须是一个具有SYSOPER或SYSDBA权限的数据库用户账户,比如SYS或SYSTEM。五、转换启动模式          1、为实例加载数据库       在执行一些特殊的管理维护操作时,需要进入NOMOUNT启动模式。在完成操作后,可以使用如下语句为实例加载数据库,切换到MOUNT启动模式:       ALTER  DATABASE  MOUNT;          2、从加载状态进入打开状态       为实例加载数据库后,数据库可能仍然处于关闭状态。为了使用户能够访问数据库,可以使用如下语句打开数据库,切换到OPEN启动模式:        ALTER  DATABASE  OPEN;4.1.7   切换受限和只读状态          1、受限状态       在正常启动模式下,即OPEN启动模式下,可以选择将数据库设置为非受限状态或受限状态。       在受限状态下,只有具有管理权限的用户(DBA)才能够访问数据库。当需要进行如下数据库维护操作时,必须将数据库置于受限状态下:       a、执行数据导入或导出操作。       b、使用SQL*Loader提取外部数据库。       c、需要暂时拒绝普通用户访问数据库。       d、进行数据库移植或者升级操作。       使用下面的语句启动数据库,数据库将进入受限状态的OPEN模式:               STARTUP  RESTRICT       如果在完成管理操作后需要将数据库恢复为非受限状态,可以使用ALTER  SYSTEM语句来改变数据库的状态,执行该语句的用户必须具有ALTER  SYSTEM系统权限。比如:               ALTER  SYSTEM  DISABLE  RESTRICTED  SESSION;       如果需要在数据库运行过程中由非受限状态切换到受限状态,同样可以通过ALTER  SYSTEM语句来实现。比如:               ALTER  SYSTEM  ENBALE  RESTRICTED  SESSION;            2、只读状态       当数据库处于只读状态时,用户只能查询数据库,但是不能以任何方式对数据库对象进行修改。       可以使用ALTER  DATABASE语句在数据库运行过程中切换为只读模式,执行该语句的用户必须具有ALTER  DATABASE系统权限。比如:               ALTER  DATABASE  OPEN  READ  ONLY;        同样可以利用ALTER  DATABASE语句重新将数据库设置为读写状态,比如:               ALTER  DATABASE  OPEN  READ  WRITE;4.1.8    强行启动数据库       在某些情况下,使用上述各种启动模式可能都无法成功启动数据库,这时需要强行启动数据库。在如下几种情况下需要强行启动数据库:       a、无法使用SHUTDOWN  NORMAL、SHUTDOWN  IMMEDIATE或者SHUTDOWN  TRANSACTIONAL语句关闭数据库实例。       b、在启动实例时出现无法恢复的错误。       出现上述情况时,可以通过强行方式来重新启动一个新的数据库实例,以便进行故障查找和排除操作。强行启动数据库需要使用带有FORCE子句的STARTUP语句,比如:            STARTUP  FORCE;4.2.2    正常关闭方式(NORMAL)       如果对关闭数据库的时间没有限制,通常会使用正常方式来关闭数据库。使用带有NORMAL子句的SHUTDOWN语句将以正常方式关闭数据库。下面显示了在SQL*Plus中以正常方式关闭过程:           SQL> SHUTDOWN  NORMAL;       正常方式关闭数据库时,Oracle将执行如下操作:       a、阻止任何用户建立新的连接。       b、等待当前所有正在连接的用户主动断开连接。正在连接的用户能够继续他们当前的工作,甚至能够提交新的事务。       c、一旦所有用户都断开连接,立刻关闭、卸载数据库,并终止实例。4.2.3    立即关闭方式(IMMEDIATE)        立即方式能够在尽可能短的时间内关闭数据库。通常在如下几种情况下需要使用立即方式来关闭数据库:         a、即将启动自动数据备份操作。         b、即将发生电力供应中断。         c、当数据库本身或某个数据库应用程序发生异常,并且这时无法通知用户主动断开连接,或者用户根本无法执行断开操作。       使用带有IMMEDIATE子句的SHUTDOWN语句将以立即方式关闭数据库,比如:                SHUTDOWN  IMMEDIATE       立即方式关闭数据库时,Oracle将执行如下操作:       a、阻止任何用户建立新的连接,同时阻止当前连接的用户开始任何新的事务。       b、任何未提交的事务均被回退。       c、Oracle不再等待用户主动断开连接,直接关闭、卸载数据库,并终止实例。4.2.4    事务关闭方式(TRANSACTIONAL)       事务方式介于正常方式与立即方式之间,它能够使用尽可能短的时间关闭数据库,但是所有能保证当前所有的活动事务都可以被提交。使用事务方式关闭数据库时,Oracle将等待所有未提交的事务完成后再关闭数据库。       使用带有TRANSACTIONAL子句的SHUTDOWN语句将以事务方式关闭数据库,比如:              SHUTDOWN  TRANSACTIONAL       事务方式关闭数据库时,Oracle将执行如下操作:       a、阻止任何用户建立新的连接,同时阻止当前连接的用户开始任何新的事务。       b、等待所有未提交的活动事务提交完毕,然后立即断开用户的连接。       c、关闭、卸载数据库,并终止实例。       提示:事务关闭方式既能保证用户不会丢失当前工作的信息,又可以尽可能快地关闭数据库。事务关闭方式也是最常用的数据库关闭方式。如果以事务方式关闭数据库,在下次启动数据库时不需要进行任何恢复操作。4.2.5     终止关闭方式(ABORT)       如果上述三种关闭方式都无法成功关闭数据库,说明数据库产生了严重的错误。这时只能使用终止方式来关闭数据库。终止关闭方式将丢失一部分数据信息,会对数据库的完整性造成损害,需要在下一次启动数据库时进行恢复,因此应当尽量避免使用终止方式来关闭数据库。       在如下几种特殊情况中,应当使用终止关闭方式:       a、数据库本身或某个数据库应用程序发生异常,并且使用其他关闭方式均无效时。       b、出现紧急情况,需要立刻关闭数据库(比如得到通知将在一分钟内发生电力供应中断)。       c、在启动数据库实例的过程中产生错误。       使用带有ABORT子句的SHUTDOWN语句将以终止方式关闭数据库,比如:              SHUTDOWN  ABORT       终止方式关闭数据库时,Oracle将执行如下操作:       a、阻止任何用户建立新的连接,同时阻止当前连接的用户开始任何新的事务。       b、立即终止当前正在执行的SQL语句。       c、任何未提交的事务均不被回退。       d、立即断开所有用户的连接,关闭、卸载数据库,并终止实例。       如果以终止方式关闭数据库,由于当前未完成的事务并不会被回退,所以当下次启动数据库时需要进行数据库恢复。4.3.1    静默状态       1、静默状态的特点       有时DBA会需要将数据库置于静默状态。在静默状态下,只有具有DBA权限的用户能够在数据库中执行查询、更新操作,运行PL/SQL程序,任何非DBA用户都不能在数据库中执行任何操作。       DBA在执行某些操作时,必须排除其他用户的活动。这类操作包括如下两类:       a、某些操作在执行过程中,如果有其他用户访问操作的对象,该操作将会失败。比如,当DBA在某个表添加一个新的字段时,如果有用户恰好正在使用这个表,添加字段的操作将失败。       b、某些操作在执行过程中产生的中间结果不应当被其他用户看到。比如,假设DBA要执行一项分为多个步骤的操作:首先要导出一个表的数据,然后删除这个表,最后再重新导入数据库建立新的表,以达到重建该表的目的。而如果有某个用户在删除表之后,重建表之前访问这个表,将会得到错误的结果。       如果没有静默功能,要保证成功完成上述类型的操作必须首先关闭数据库,然后再使用受限模式打开数据库。这样做的代价是很大的,尤其是在必须保证数据库不间断运行的环境中(7×24系统)。而使数据库进入静默状态可以快速达到相同的目的,但是却并不需要中断数据库的运行。       注意:在Oracle9i中,处于静默状态时只允许SYS和SYSTEM两个DBA用户执行操作,其他用户即使被授予DBA角色或SYSDBA权限,也不能够在静默状态的数据库中进行操作。因此,静默状态是比受限状态更为“干净”的状态。        2、进入静默状态       在数据库运行过程中,执行如下语句将进入静默状态:               ALTER  SYSTEM  QUIESCE  RESTRICTED;       注意:只有SYS和SYSTEM用户有权限执行ALTER  SYSTEM  QUIESCE  RESTRICTED语句,具有DBA权限的其他用户不能将数据库置为静默状态。       在静默状态中,即使某个非DBA用户试图执行一条SQL语句强行激活某个会话,该SQL语句也会被挂起。当数据库从静默状态中恢复时,停止的会话将继续执行,前面被挂起的SQL语句也会继续执行。       由于等待所有的非DBA用户会话都被终止可能会要很长一段时间,在这个过程中如果执行ALTER  SYSTEM语句的会话被意外终止,进入静默状态的操作将被撤销,已经暂停的会话将被恢复。       3、退出静默状态       如果数据库正处于静默状态,执行如下语句将从静默状态恢复为正常状态:              ALTER  SYSTEM  UNQUIESCE;       4、查询静默状态       可以通过使用动态性能试图V$INSTANCE来查询当前数据库是否处于静默状态。V$INSTANCE视图中的ACTIVE_STATUS字段显示了数据库当前的活动状态:       a、NORMAL     正常状态(非静默状态)。       b、QUIESCING     正在进入静默状态(仍然存在活动的非DBA用户会话)。       c、QUIESCED     静默状态(已经没有活动的非DBA用户会话)。       在下面的示例中显示了如何改变和查询数据库的静默状态:              SQL> ALTER SYSTEM QUIESCE RESTRICTED;              系统已更改。              SQL> SELECT ACTIVE_STATE FROM V$INSTANCE;              ACTIVE_ST
              ---------
              QUIESCED              SQL> ALTER SYSTEM UNQUIESCE;              系统已更改。              SQL> SELECT ACTIVE_STATE FROM V$INSTANCE;              ACTIVE_ST
              ---------
              NORMAL 4.3.2   挂起状态       1、挂起状态的特点       当数据库处于挂起状态时,数据库所有的物理文件(控制文件、数据文件以及重做日志文件)的I/O操作都被暂停。这样就能保证数据库在没有任何I/O操作的情况下进行物理备份。挂起状态与静默状态的区别是:它并不禁止非DBA用户进行数据库操作,只是暂时停止所有用户的I/O操作。       当数据库处于挂起状态时,可以首先为数据库创建硬盘镜像,然后再从镜像中分离出备份文件,这样就提供了一种进行数据库备份和恢复的替代办法。比如,数据库原本运行在一个具有硬盘镜像的系统中,但是在存在硬盘I/O操作的情况下,无法将镜像文件分离出来。这时可以先将数据库置为挂起状态,然后在停止所有I/O操作的状态下进行分离操作。       在数据库进入挂起状态时,当前的所有I/O操作能够继续进行,但是所有新提交的I/O操作不会执行,而是被放入一个等待队列中。一旦数据库恢复到正常状态,这些I/O操作将从队列中取出并继续执行。       2、进入挂起状态       挂起数据库操作可以通过ALTER  SYSTEM语句完成,执行该语句的用户必须具有ALTER  SYSTEM系统权限。比如:              ALTER  SYSTEM  SUSPEND;       3、退出挂起状态       如果要将数据库从挂起状态中恢复,可以使用如下语句:              ALTER  SYSTEM  RESUME;        4、查询挂起状态        可以通过使用动态性能视图V$INSTANCE来查询当前数据库是否处于挂起状态。V$INSTANCE视图中的DATABASE_STATUS字段显示了数据库当前的活动状态:         a、SUSPENDED    挂起状态。         b、ACTIVED    正常状态(非挂起状态)。          下面的示例显示了如何改变和查询数据库的挂起状态:                SQL> ALTER SYSTEM SUSPEND;                系统已更改。                SQL> SELECT DATABASE_STATUS FROM V$INSTANCE;                DATABASE_STATUS
                -----------------
                SUSPENDED                SQL> ALTER SYSTEM RESUME;                系统已更改。                SQL> SELECT DATABASE_STATUS FROM V$INSTANCE;                DATABASE_STATUS
                -----------------
                ACTIVE