SYSDBA: 允许执行任何数据库管理任务。
SYSOPER: 能启动和关闭数据库,但限制其他管理性任务,如访问非管理性方案对象等。
初始化参数文件(一个操作系统文件)决定了数据库的物理结构内存、数据库的极限及系统的大部分默认值,
是进行数据库设计与性能调整的重要文件。初始化参数文件保存了ORACLE启动例程时所要用到的初始化参数
信息,即ORACLE通过读取初始化参数文件来获得应该怎样确定、配置ORACLE例程和数据库特征及限制信息(
SGA的大小、数据库的名称、用户数和进程数的限制、指定撤销表空间等)。
STARTUP 执行顺序:先找SPFILE 服务器参数文件 ,如果没有SPFILE 则再找 PFILE 文本参数文件。
查找SPFILE、PFILE 位置方法: SHOW PARAMETERS SPFILE/PFILE
查看SPFILE、PFILE 参数文件中初始化参数文件内容:
SHOW PARAMETERS;
SELECT * FROM V$PARAMETER;
SELECT * FROM V$PARAMETER2;
SELECT * FROM V$SPPARAMETER;---显示服务器参数文件中的当前内容;
SPFILE和PFILE参数文件互相转换:
CREATE PFILE [='path'] FROM SPFILE [='path'];
CREATE SPFILE [='path'] FROM PFILE [='path'];
修改初始化参数文件中的参数:
ALTER SESSION --更改当前会话的参数设置,只对当前会话起作用。
ALTER SYSTEM ---使用于所有的会话。
ALTER SYSTEM 的三种选项: SCOPE=[SPFILE | MEMORY | BOTH]
说明:SPFILE 只更改服务器参数文件中的参数。对于动态/静态参数,这种更改将在下一次启动时生效并一直保留;
只有这种更改的SCOPE子句用于静态参数。
MEMORY 只更改内存中的参数。对于动态参数,更改立即生效,但不永久保留;不允许对静态参数做修改。(文本参数文件默认)
BOTH 既更改服务器参数文件中的参数,又更改内存中的参数。对于动态参数的更改会立即生效并永久保留;
但是不允许对静态参数的更改。(服务器参数文件默认)
如果没有使用服务器参数文件 则在指定 SPFILE 或 BOTH 时将报错;对于动态参数,在最后如果指定了DEFERRED ,则更改将只影响将来的会话。
COMMENT 子句允许为参数的更新 添加相关的备注字符串信息,备注信息将被写到服务器参数文件中(当使用 SPFILE 和 BOTH ).
查看数据库启动时使用的参数文件模式:
SHOW PARAMETER SPFILE/PFILE;
修改数据库启动为文本参数文件模式:
CREATE PFILE FROM SPFILE;
SHUTDOWN IMMEDIATE;
STARTUP PFILE='PATH';
STARTUP OPEN;
启动数据库的步骤
STARTUP [NOMOUNT | MOUNT |OPEN |FORCE |] [RESTRICT ][PFILE='PATH'] --- RESTRICT与MOUNT、NOMOUNT、OPEN 、FORCE可以相组合,并且没有顺序限制。
STARTUP NOMOUNT---启动例程但不装载数据库(通常用这种状态来创建数据库或创建一个新的控制文件)
1、读取参数文件(spfile 或 pfile)
2、根据参数文件,在内存中分配相应的空间信息(SGA等)
3、根据参数文件,启动相应的后台进程。
4、打开跟踪文件和警报文件。
在该模式下只能访问与SGA区相关的数据字典视图(v$parameter、v$sga、v$option、v$process、v$session、v$version、v$instance等)
STARTUP MOUNT ----装载数据库 但不打开数据库
1、根据参数文件,打开数据库的控制文件。
2、从控制文件中获取数据库名称、物理文件(数据文件、重做日志文件)的位置和名称等。
在本状态下方可实以下 任务:
A、重命名、增加、删除数据文件和重做日志文件;
B、执行数据库的完全恢复;
C、改变数据库的归档模式;(ALTER DATABASE ARCHIVELOG/NOARCHIVELOG;查看是否为归档模式: ARCHIVE LOG LIST)
D、改变数据库的运行读写方式;(ALTER DATABASE OPEN READ ONLY/WRITE;)
在该模式下可以访问与SGA相关的数据字典还可以访问与控制文件相关的数据字典(V$THREAD、v$controlfile、v$database、v$datafile、v$logfile等)
STARTUP OPEN; ----打开数据库
1、例程将打开所有处于联机状态的数据文件和重做日志文件;
FORCE ;-----在数据库异常关闭,例如数据库服务器突然停电终止,使得数据库处于一个必须使用FORCE的状态。
即FORCE首先异常关闭数据库,然后重新启动它,而不需要事先用SHUTDOWN 关闭数据库。
RESTRICT ---启动数据库并把它置入OPEN模式,但此时只有拥有RESTRICTED SESSION 权限的用户才能访问数据库。
要在OPEN模式下执行维和任务,又要保证此时其他用户不能在数据库上建立连接和执行任务,则必须使用 RESTRICT 选项
该模式下可以执行的任务:
A、执行数据库的导入或导出操作;
B、执行数据装载操作(用SQL*Loader);
C、暂时阻止一般的用户使用数据。
D、进行数据库移植或升级;
PFILE ----只有PFILE选项没有SPFILE选项;
关闭数据库操作:
SHUTDOWN [NORMAL | TRANSACTIONAL | IMMEDIATE | ABORT]; ---ABORT 选项下次启动数据库时需要进行数据库恢复操作。
NORMAL
关闭数据库没有时间限制,通常使用 NORMAL 关闭数据库。
NORMAL 选项关闭数据库时,ORACLE将执行的操作:
A、阻止任何用户建立新的连接;
B、等待当前所有正在连接的用户主动断开连接。当前连接的用户可以继续当前的工作和提交新的事务;
C、一旦所有的用户都断开连接,才进行关闭、卸载数据库,并终止例程;
V$SESSION 、V$INSTANCE 视图能够有助于掌握哪些连接到数据库的每一个例程的基本情况;这样DBA就可以给这些用户发送关闭数据库信息;
ALTER SYSTEM KILL SESSION 有助于删除会话。
TRANSACTIONAL
能在尽可能段的时间内关闭数据库。ORACLE 将等待所有当前未提交的事务完成后再关闭数据库。
TRANSACTIONAL 选项关闭数据库时,ORACLE将执行的操作:
A、阻止任何用户建立新的连接,同时阻止当前连接的用户开始任何新的事务;
B、等待当前未提交的事务提交完毕,然后立即断开用户的连接;
C、一旦所有用户都断开连接,才关闭、卸载数据库,并终止例程;
IMMEDIATE
使用该选项关闭数据库的情况:
A、即将启动自动数据库备份操作;
B、即将发生电力供应中断;
C、数据库本身或某个数据库应用程序发生异常,并且此时无法通知用户主动中断连接,或者用户根本无法执行断开操作;
当使用 IMMEDIATE 选项关闭数据库时,ORACLE 将执行的操作:
A、阻止任何用户建立新的连接,同时阻止当前连接的用户开始任何新的事务;
B、任何当前未提交的事务均被回退;
C、ORACLE 不再等待用户主动断开连接,而是直接关闭、卸载数据库,并终止例程;
ABORT ---下次启动数据库需要执行数据库恢复
如果以上方式都无法关闭数据库,则只能使用该选项来关闭数据库,ABORT 选项不会回退未完成的事务,所以会丢失一部分数据信息,
并对数据库的完整性造成损害。
如下特殊情况可以考虑使用 ABORT 选项来关闭数据库:
A、数据库本身或某个数据库应用程序发生异常,并且使用其他选项关闭数据库均失败;
B、出现紧急情况,需要立即关闭数据库;
C、在启动数据库例程的过程中产生错误。
当使用ABORT 选项关闭数据库时, ORACLE 将执行的操作:
A、阻止任何用户建立新的连接,同时阻止当前连接的用户开始任何新的事务;
B、立即终止当前正在执行的SQL语句;
C、任何未提交的事务均不被回退;
D、立即断开所有用户的连接,关闭、卸载数据库,并终止例程;
转换启动模式或修改数据库的状态
在数据库中各种启动模式之间的切换需要使用 ALTER DATABASE 语句
为例程卸载数据库:
ALTER DATABASE NOMOUNT;
为例程装载数据库:
ALTER DATABASE MOUNT;
暂停和重新开始数据库
执行数据库备份时,为了避免控制文件和数据文件之间的I/O冲突,
可以使用 ALTER SYSTEM SUSPEND 语句来暂停
使用 ALTER SYSTEM RESUME 语句来重新开始数据库;
启用和禁用受限会话模式
启用受限会话模式: ALTER SYSTEM ENABLE RESTRICTED SESSION;
禁用受限会话模式: ALTER SYSTEM DISABLE RESTRICTED SESSION;
查看所有会话信息 : SELECT * FROM V$SESSION (必须具备该权限)
删除(中断会话) : ALTER SYSTEM KILL SESSION 'SID,SERIAL#';
允许某个会话先完成当前的事务,然后再中断会话则:
ALTER SYSTEM DISCONNECT SESSION 'SID,SERIAL#' POST_TRANSACTION;
如果 ALTER SYSTEM [DISCONNECT ] SESSION 'SID,SERIAL#' 后跟 IMMEDIATE 则ORACLE 立即回退正在执行的事务,释放会话的所有锁。