实例用来访问数据库,instance在启动的第一个阶段(nomount 阶段)会读取初始化参数文件(init parameter files),该文件是管理实例相关启动参数
初始化参数类型:
基本初始化参数:大约20个左右(见联机文档)
初始化参数:300个左右
隐含参数:Oracle不推荐使用
select count(*) from v$parameter;
动态参数:可以直接在内存中修改,并对当前instance立即生效
静态参数:必须修改参数文件,下次启动后生效
select count(*),issys_modifiable from v$parameter group by issys_modifiable;
IMMEDIATE 动态参数
FALSE 静态参数
DEFERRED 延迟参数,session下次连接有效
select count(*),isses_modifiable from v$parameter group by isses_modifiable;
TRUE:可以alter session修改不同会话参数值
pfile特点:
默认dbca创建数据库后,使用的是spfile,没有pfile文件,可以使用create pfile from spfile来创建对应的pfile文件
create pfile from spfile;
spfile特点:
show parameter spfile;
如果value有值, 说明数据库实例启动时读的是spfile
alter system set 参数=值 [scope=memory|spfile|both]
①scope=memory参数修改立刻生效,但不修改 spfile 文件(动态参数)
②scope=spfile修改了spfile文件, 重启后生效
③scope=both前两种都要满足。要求spfile参数文件存在、动态参数
④不写scope限定词,缺省③。但不如③严格,即spfile如果不存在,仅仅修改内存中参数
如果不修改参数文件,将无法更改静态参数
优先使用spfile,没有spfile使用pfile。dbca建库后默认使用spfile
pfile和spfile可以互相生成:
create pfile from spfile;
注意:使用spfile启动后不能重写spfile,但可以指定其他路径名称创建
create spfile=‘spfilePROD.bak‘ from pfile;
ORACLE 11g以后的新特性,可以根据内存来生成spfile和pfile:
create pfile=‘pfilePROD.mem‘ from memory; create spfile=‘spfilePROD.mem‘ from memory;
方式一:
show parameter spfile;
如果value有值,说明数据库实例启动时读的是spfile
方式二:
看v$spparameter(spfile参数视图)中的参数memory_target的isspecified字段值,如果是TRUE说明是spfile启动的
select name,isspecified from v$spparameter where name=‘memory_target‘;
尽可能使用spfile,pfile一般留做备用,特殊情况也可以使用pfile启动
关闭实例,使用pfile启动
shutdown immediate startup pfile=$ORACLE_HOME/dbs/initorcl.ora
show parameter spfile select name,isspecified from v$spparameter where name=‘memory_target‘
关闭实例
shutdown immediate
读取初始化参数文件、分配内存、启动后台进程(生成instance)
startup nomount; select status from v$instance;
查看告警日志信息,查看后台进程
ps -ef | grep ora_
nomount状态可以查看参数信息
show parameter sga
读取控制文件,获取文件位置和数据库相关信息(控制文件是二进制文件,记录数据库的物理状态,维护数据库的一致性)
alter database mount; select status from v$instance;
mounted状态可以查看v$视图信息
select name from v$datafile;
v$instance特殊,nomount状态也能查
1、 检查所有的datafile、redo log、group 、password file正常
2、 检查数据库的一致性(controlfile、datafile、redo file的检查点是否一致)
select file#,checkpoint_change#,last_change# from v$datafile; --从控制文件读出 select file#,checkpoint_change# from v$datafile_header; --从数据文件读出
注意:启动到mount状态时,last_change#不为空说明之前是干净的关闭数据库
alter database open; select status from v$instance;
startup force; 相当于shutdown abort后再接startup
startup nomount; (启动到nomount状态,alter database mount;alter database open;)
startup mount; (启动到mount状态,alter database open;)
startup upgrade 只有sysdba能连接
startup restrict 有restrict session权限才可登录,sys不受限制
alter system enable restricted session; open后再限制
alter database open read only; 只读方式开库,scn不会增长
SCN:system change number系统改变号
oracle内部时钟,不断增长,记录事务发生的先后顺序
controlfile、logfile、datafile_header、block
select current_scn,dbms_flashback.get_system_change_number from v$database;
shutdown normal 拒绝新的连接,等待当前会话结束,生成检查点
shutdown transactional 拒绝新的连接,等待当前事务结束,生成检查点
shutdown immediate 拒绝新的连接,未提交的事务回滚,生成检查点
shutdown abort 事务不回滚,不生成检查点,下次启动需要做instance recovery
ADR(Automatic Diagnostic Repository)是11g新特性,存储在操作系统下的一个目录(树)结构,包括:①告警日志文件 ②跟踪文件 ③健康记录 ④DUMP 转储文件等
show parameter diagnostic_dest
$ORACLE_BASE=/u01/app/oracle,是ADR的基目录
对应ADR-HOME=<diagnostic_dest>/diag/rdbms/<dbname>/<instname>
如果没有设置ORACLE_BASE环境变量,Oracle 你设置的ADR基目录是$ORALE_HOME/log
show parameter dump
在oracle12C中,故障诊断及跟踪的文件路径改变较大,告警文件分别xml的文件格式和普通文本格式两种形式存在。这两份文件的位置分别是V$DIAG_INFO中的Diag Alert和Diag
Trace对应的目录
1) 后台进程的跟踪文件(Bdump)
SID_processname_PID.trc 如: _lgwr_5616.trc
2) 服务器进程的跟踪文件(Udump)
SID_ora_PID.trc 如: _ora_10744.trc
另外增加.trm(trace map)文件,记录trc文件的结构信息
col name for a25 col value for a70 select name,value from v$diag_info;
以文本格式保存告警日志,命名是:alter_SID.log,它包含通知性的消息,如数据库启动或关闭, 以及有关数据库物理结构变化的信息,也包括一些内部错误信息等。
告警日志会不断增长,定期清理是必要的
cat /dev/null > alert_orcl.log --将文件清空
告警日志文件丢失,下次启动会自动创建
tail -f /u01/app/oracle/diag/rdbms/orcl/ORCL/trace/alert_orcl.log
特点:
如:sqlplua / as sysdba
是一种通过网络的远程认证方式,只有sysdba权限的用户可以使用口令文件,登录时必须输入密码和网络连接符
如:sqlplus sys/oracle@oracle as sysdba
普通用户是指没有sysdba权限的用户,比如system、scott或者是damon等,不管是本地还是远程,普通用户登录时必须在数据库open下输入口令,它们的口令密码保管在数据字典里
是sysdba用户的远程认证密码文件,主要用于sys用户(严格来说是具有 sysdba 系统权限的用户)的远程登录认证
mv orapworcl orapworcl.bak sqlplus scott/tiger@orcl sqlplus sys/oracle@orcl as sysdba
scott用户登陆正常,sys as sysdba登陆报错
注意口令的复杂度及长度要求
orapwd file=orapworcl password=qaz#WSX1
sqlplus sys/qaz#WSX1@orcl as sysdba
file=orapw+sid的写法,不能拼错
sqlplus sys/qaz#WSX1@orcl as sysdba force=y
force=y:原密码文件存在时强制覆盖原文件
原文:https://www.cnblogs.com/jsxxd/p/14853647.html