一、连接你的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 |
|