1、设置初始化参数文件:
查询参数可以从v$parameter (从实例中取得数值) 和v$spparameter(从参数文件取值。)
两个参数文件:
1.pfile(parameter file,参数文件)
pfile是文本格式的参数文件,实例启动时只加载一次,通常认为是静态的.
新版本Oracle已逐步取消pfile文件了
默认名称: initSID.ora
默认位置: $ORACLE_HOME/dbs/
/u01/app/oracle/product/12.1.0/db_1/dbs/pfileSID.ora
新版本Oracle已逐步取消pfile用spfile代替了,在位置$ORACLE_HOME/dbs/已经找不到这个pfile文件了.
创建数据库后会保存一份pfile到以下位置,当spfile有问题时可以使用这个pfile来启动.
/u01/app/oracle/admin/sid/pfile/init.ora.xxxxxxxxxxx
2.spfile(server parameter file,服务器参数文件)
spfile是二进制的参数文件,在实例运行时能读取和更新spfile文件,通常认为是动态的
默认名称: spfileSID.ora, spfile.ora
默认位置: $ORACLE_HOME/dbs/
/u01/app/oracle/product/12.1.0/db_1/dbs/spfileSID.ora
搜索顺序:
$ORACLE_HOME/dbs/spfileSID.ora
$ORACLE_HOME/dbs/spfile.ora (通常只用于RAC环境,一个文件可以启动多个实例)
$ORACLE_HOME/dbs/initSID.ora
使用指定参数文件启动实例.
startup pfile=$ORACLE_HOME/dbs/initSID.ora
startup spfile=$ORACLE_HOME/dbs/spfileSID.ora
通过pfile创建spfile.
create spfile[=‘spfilename‘] from pfile[=‘pfilename‘];
create spfile=‘/u01/app/oracle/product/12.1.0/db_1/dbs/spfile‘ from pfile=‘/u01/app/oracle/product/12.1.0/db_1/dbs/pfile‘;
通过spfile创建pfile.
create pfile[=‘pfilename‘] from spfile[=‘spfilename‘];
create pfile=‘/u01/app/oracle/product/12.1.0/db_1/dbs/pfile‘ from
spfile=‘/u01/app/oracle/product/12.1.0/db_1/dbs/spfileSID.ora‘;
静态参数和动态参数:
静态参数: 有些参数在实例启动后就固定了.
动态参数: 有些参数可以在实例运行时更改.
查看当前运行的实例中生效的参数值
select name,value from v$parameter order by name;
查看spfile参数文件中的参数值
select name,value from v$spparameter order by name;
查看参数类型:
select name,value,issys_modifiable from v$parameter order by name;
select distinct issys_modifiable from v$parameter;
IMMEDIATE -- 动态参数,立即生效
FALSE -- 静态参数
DEFERRED -- 动态参数,延迟生效
查看静态参数:
select name,value from v$parameter where issys_modifiable=‘FALSE‘ order by name;
基本参数和高级参数
基本参数: 应该为每个数据库使用基本参数.
select name,value from v$parameter where isbasic=‘TRUE‘ order by name;
select s.name,s.value
from v$spparameter s join v$parameter p
on s.name=p.name
where p.isbasic=‘TRUE‘
order by name;
高级参数: 只要高级参数使用了默认值设置,大多数数据库实例都可以完美运行。
实际上还有一些隐式参数,通常不可见,只能在Oracle Support的指导下进行设置。
修改初始化参数
语法:
alter system set parameter=value [comment=‘text‘] [deferred] [scope={spfile|both|memory}] [sid=‘sid|*‘];
deferred延迟生效.
scope的三个可选值:
memory: 只改变当前运行的实例.
spfile: 只改变spfile文件的设置.
both: (默认值)改变实例及spfile文件的设置.
如果修改的是静态参数,则必须指定scope=spfile,下次启动实例时参数才生效.
修改静态参数不指定scope=spfile,则会出现错误: ORA-02095: specified initialization parameter cannot be modified.
使用BOTH选项等同不带scope参数的alter system语句.
如果使用pfile启动实例,设置scope=spfile将失败.
有些参数可以在系统级别修改,也可以在会话级别修改.
alter system set optimizer_mode=all_rows;
alter session set optimizer_mode=first_rows;
有些参数只能在会话级别进行修改,如: NLS_DATE_FORMAT.
alter session set nls_date_format=‘dd-mm-yy hh24:mi:ss‘;
重设参数为默认参数(reset)
alter system reset log_archive_start scope=spfile;
常用参数
cluster_database -- 数据库是RAC还是单实例
compatible -- 模仿的版本,一般是实际版本
control_files -- 控制文件副本的名称和位置
db_block_size -- 数据文件默认块大小
db_create_file_dest -- 数据文件的默认位置
db_create_online_log_dest_1 -- 联机重做日志文件的默认位置
db_create_online_log_dest_2 -- 联机重做日志文件多重副本的默认位置
db_domain -- 网络域名
db_name -- 数据库名称(唯一不具有默认值的参数),和域名一起组成全局数据库名称. --alter database rename global_name
-- 更改全局数据库名称需要重启实例并重建控制文件
db_recovery_file_dest -- 闪回区域的位置
db_recovery_file_dest_size -- 闪回区域容量
db_unique_name -- 唯一标识符,如果安装了两个相同名称的数据库,则需要使用唯一标识符
instance_number -- 用于区分两个打开同一数据库的RAC实例.
job_queue_processes -- 运行所调度作业可用的进程数
log_archive_dest_1 -- 归档重做日志文件的目标
log_archive_dest_2 -- 归档重做日志文件的多重副本的目标
log_archive_dest_state_1 -- 指示是否启用了目标
log_archive_dest_state_2 -- 指示是否启用了目标
nls_language -- 实例的语言
nls_territory -- 实例的地理位置
open_cursors -- 会话一次可以打开的SQL工作区数量
pga_aggregate_target -- 实例可以分配给PGA的总内存量
processes -- 可以连接到实例的最大进程数量(包括会话服务器进程)
remote_listener -- 此实例注册到远程计算机的侦听器的地址,与RAC有关的参数.
remote_login_passwordfile -- 是否使用外部口令文件,以便允许口令文件身份验证.
rollback_segments -- 差不多废弃,被后面的UNDO参数替代
sessions -- 允许连接到实例的最大会话数量
sga_target -- 系统全局区域SGA内存大小
shared_servers -- 要启动的共享服务器进程数量.
star_transformation_enabled -- 是否允许优化器重写将事实表的维度连接在一起的查询
undo_management -- 在撤销表空间中自动管理撤销数据,还是在回滚段中手工管理
undo_tablespace -- 在使用自动撤销管理的情况下,确定撤销数据的位置.
2、描述启动和关闭的多个状态。
1)database control的启动和关闭
emctl start dbconsole
emctl stop dbconsole
前提是这是 oracle_home oracle_sid path 三个环境变量。
访问: https://hostname:端口号/em
需要监听
2)监听启动和关闭工具:
lsnrctl工具;
windows服务器
dbconsole
启动和停止侦听器语法:
lsnrctl status [listener]
lsnrctl start [listener]
lsnrctl stop [listener]
3)sqlplus启动
4)数据库的启动和关闭
2.启动和关闭数据库
(1)使用适当的权限进行连接
要启动和关闭数据库,需要先连接进行身份验证。身份验证类型:
·默认为数据字典身份验证
·口令文件身份验证
·操作系统身份验证
普通用户无权限启动或关闭数据库,原因在于普通用户依据数据字典进行身份验证。
从逻辑上讲,只有在打开数据库之后,才能读取到数据字典,因此无法启动实例并打开数据库。
要启动和关闭数据库必须使用一些外部身份验证方式来连接数据库: 操作系统身份验证或口令文件身份验证.
SYSOPER和SYSDBA是具有特殊功能的特殊权限,只有用户使用外部身份验证方式连接时才能启用这些权限.
口令文件位置: $ORACLE_HOME/dbs/orapwSID
使用sqlplus工具或使用Database Control工具来连接和操纵数据库.
sqlplus文件位置: $ORACLE_HOME/bin/
连接语法:
sqlplus /nolog -- 打开sqlplus程序
connect user/pass[@connect_alias] -- 普通用户身份验证
connect user/pass[@connect_alias] as sysdba -- 口令文件身份验证
connect user/pass[@connect_alias] as sysoper -- 口令文件身份验证
connect / as sysdba -- 操作系统身份验证
connect / as sysoper -- 操作系统身份验证
启动并连接数据库的快捷语法: sqlplus / as sysdba
(2)启动(startup)
启动经历三个阶段: 未加载(nomount),加载(mount),打开(open)
·未加载(nomount) -- 启动实例
·读取数据库参数文件
·启动后台进程并按参数文件中的定义分配内存
·将进展情况写入警告日志文件中.
·加载(mount) -- 读取控制文件,
·确定数据文件和重做日志文件的名称和位置
·确定数据库名
·确定最新系统更改号.
·打开(open) -- 打开数据库
·所有联机数据文件的头与控制文件信息比较
·所有文件同步后,数据库打开.
shutdown -> nomount -- 读取初始化参数文件,实例被构建在内存中,启动某些后台进程,将进展情况写入警告日志文件中,参数文件找不到则不能到nomount.
nomount -> mount -- 定位并读取控制文件,控制文件损坏和丢失则不能到mount,可以在nomount状态修复控制文件.
mount -> open -- 打开数据文件和重做日志文件,数据文件和重做日志文件存在问题或不同步则不能到open状态,可以在mount状态修复.
启动语法:
startup [nomount|mount|open]
startup -- 经历nomount、mount、open阶段
startup nomount
alter database mount
alter database open
执行startup命令时,Oracle会尝试定位参数文件:
$ORACLE_HOME/dbs/spfileSID.ora
$ORACLE_HOME/dbs/spfile.ora
$ORACLE_HOME/dbs/initSID.ora
初始化参数control_files指示控制文件的位置,控制文件指示数据文件和重做日志文件的位置.
(3)关闭(shutdown)
关闭的四个参数(normal,transactional,immediate,abort)
·normal: 默认选项,不许可新的用户连接,但允许继续当前的连接,所有用户退出时,数据库才能真正关闭.
·transactional: 不许可新的用户连接,不存在某个事务中的会话将被终止,处于事务中的会话完成事务后终止.所有会话终止,数据库将被关闭。
·immediate: 不许可新的用户连接,当前所有连接的会话都被终止,任何活动的事物都将回滚,随后数据库被关闭
·abort: 相当于断电,实例被立即终止.
关闭语法:
shutdown [normal|transactional|immediate|abort]
normal、immediate和transactional关闭模式通常称为干净的、一致的或有序的关闭。在所有会话终止后,PMON进程会回滚任何未结束的事务。接下来,CKPT进程发布一个检查点,从而促使DBWn进程将所有被更新的数据从数据库高速缓冲区写入数据文件,同时LGWR进程也将仍然存在于内存当中的所有变化矢量转储到日志文件,随后文件头被更新,文件句柄被关闭。这意味着数据库处于一致的状态:所有已提交的事务都位于数据文件中,不存在需要回滚的、被挂起的未提交事务,并且所有数据文件和日志文件同步。
abort模式通常被称为无序的关闭,并且会使数据库处于不一致的状态:
因为已提交的事务只存在于内存中,而DBWn进程还未将它们写入数据文件,所以这些事务极有可能丢失,同样,数据文件中的未提交事务也可能尚未回滚。也就是可能丢失了已提交的事务,也可能存储了未提交的事务。这些讹误必须通过实例恢复来修复。abort模式相当于服务器断电和重启。
startup force = shutdown abort + startup
4)使用警报日志和跟踪文件。
一.关于警报日志和跟踪文件
警报日志中记录关键操作包括:
·所有启动和关闭命令,包括中间命令,如alter database mount
·实例的所有内部错误(ORA-600错误,只能报告给Oracle Support解决)
·任何检测到的数据文件块损坏情况
·任何已经发生的记录锁定死锁.
·影响数据库物理结构的所有操作,如创建或重命名数据文件和联机重做日志。
·调整内部参数值的alter system命令
·所有日志开关和日志归档文件.
跟踪文件由各个后台进程生成,一般在遇到错误时发生,在诊断问题时,生成的跟踪文件非常有用
二.旧版本中的警报日志和跟踪文件
在Oracle10g及以前版本中,警报日志和跟踪文件的位置由参数background_dump_dest确定
select value from v$parameter where name=‘background_dump_dest‘;
默认位置: /u01/app/oracle/product/12.1.0/db_1/rdbms/log
警报日志: alert_sid.log (文本格式)
跟踪文件: sid_***.trc
三.新版本中的警报日志和跟踪文件
在Oracle11g以后版本中,警报日志和跟踪文件的位置有改变.
select * from v$diag_info;
1.查看警报日志
select value from v$diag_info where name =‘Diag Alert‘;
默认位置: /u01/app/oracle/diag/rdbms/sid/sid/alert
警报日志: log.xml (xml格式)
2.查看跟踪文件
select value from v$diag_info where name =‘Diag Trace‘;
默认位置: /u01/app/oracle/diag/rdbms/sid/sid/trace
跟踪文件: sid_***.trc
警报日志: alert_sid.log (文本格式)
参数background_dump_dest位置也有一部分跟踪文件
select value from v$parameter where name=‘background_dump_dest‘;
默认位置: /u01/app/oracle/product/12.1.0/db_1/rdbms/log
跟踪文件: sid_***.trc
四.SQL語句跟踪
1.用户级自我跟踪
alter session set sql_trace=true;
在同一个session中执行SQL语句,将会产生跟踪文件sid_ora_spid.trc(spid为系统进程id):
/u01/app/oracle/diag/rdbms/sid/sid/trace/sid_ora_spid.trc
spid:系统进程id,可以通过语句查看:
select s.username,s.sid,s.serial#,p.spid,s.program
from v$session s,v$process p
where s.paddr = p.addr
and s.username is not null
and p.background is null;
alter session set sql_trace=false;
2.系统级跟踪
alter system set sql_trace=true scope=memory;
在任何session中执行SQL语句,产生跟踪文件sid_ora_spid.trc(spid为系统进程id):
/u01/app/oracle/diag/rdbms/sid/sid/trace/sid_ora_spid.trc
alter system set sql_trace=false scope=memory;
3.用户级的DBA跟踪
使用Oracle的PL/SQL包DBMS_SYSTEM
(1)从v$session中查出用户的sid和serial#.
select s.username,s.sid,s.serial#,p.spid,s.program
from v$session s,v$process p
where s.paddr = p.addr
and s.username is not null
and p.background is null;
USERNAME SID SERIAL# SPID PROGRAM
------------------------------ ---------- ---------- ------------------------ -----------------------------
SYSTEM 13 35114 9172 plsqldev.exe
SYSTEM 248 32295 9225 plsqldev.exe
SYS 14 36202 9111 [email protected] (TNS V1-V3)
(2)跟踪用户会话
execute sys.dbms_system.set_sql_trace_in_session(248,32295,true);
在任何id为248的session中执行SQL语句,产生跟踪文件sid_ora_spid.trc(spid为系统进程id):
/u01/app/oracle/diag/rdbms/sid/sid/trace/sid_ora_9225.trc
(3)停止跟踪
execute sys.dbms_system.set_sql_trace_in_session(248,32295,true);
4.SQL_TRACE跟踪SQL语句执行情况的内容
·解析、执行、取数据的计数
·CPU时间和占用时间
·物理读和逻辑读
·处理行数目
·所解析的用户名
·每次提交和回滚的情况.
五.格式化跟踪文件(tkprof)
使用tkprof程序可以将跟踪文件转化成可以阅读的文本文件,tkprof语法:
tkprof tracefile outputfile [explain=user/password] [table=schema.tablename]
[print=integer] [insert= ] [sys= ] [sort= ] ...
$ tkprof tracefile outputfile
------------------------------
4)数据字典和动态性能视图
一.数据字典视图
一般为前缀dba_ all_ user_
dba_objects
dba_data_files
dba_users
dba_tables
dba_tablespaces
dba_alert_history
数据字典视图只允许在打开数据库及数据字典后查询。
二.动态性能视图
v_$前缀: 视图
v$前缀: 同义词
有些动态性能视图根据实例填充,在实例处于NOMOUNT模式就已可用,例如:
v$instance
v$sysstat
由控制文件填充的动态性能视图(只有在已经加载数据库的情况下可用),例如:
v$database
v$datafile
v$logfile
v$tablespace
v$视图与数据字典视图之间存在一些重叠,如:v$tablespace,dba_tablespaces
三.查询视图了解数据库物理结构
1.表空间和数据文件
select t.name,d.name,d.bytes
from v$tablespace t join v$datafile d
on t.ts#=d.ts#
order by t.name
select t.tablespace_name,d.file_name,d.bytes
from dba_tablespaces t join dba_data_files d
on t.tablespace_name=d.tablespace_name
order by tablespace_name;
2.所有控制文件副本
select * from v$controlfile;
select value from v$parameter where name=‘control_files‘;
3.联机重做日志文件成员的位置和大小
select m.group#,m.member,g.bytes
from v$log g join v$logfile m
on m.group#=g.group#
order by m.group#,m.member;
四.常用动态性能视图
v$parameter -- 初始化参数
v$spparameter -- spfile文件初始化参数
v$pwfile_users -- 通过口令文件验证用户列表(sysdba,sysoper)
v$instance -- 实例
v$database -- 数据库
v$controlfile -- 控制文件
v$tablespace -- 表空间
v$datafile -- 数据文件
v$tempfile -- 临时文件
v$log -- 联机日志组
v$logfile -- 联机日志组成员文件
v$archive_dest -- 归档位置
v$archived_log -- 归档日志文件
v$session -- 会话
v$process -- 进程
v$locked_object -- 锁对象
v$sqltext -- SQL语句(显示在多行)
v$sqlarea -- SQL语句(显示在一行)
v$sysstat -- 系统状态
v$sgastat -- SGA状态
v$pgastat -- PGA状态
v$undostat -- 撤消状态
v$sesstat -- Session状态
v$transaction -- 事务
v$shared_pool_advice -- 共享池顾问
v$java_pool_advice -- Java池顾问
v$streams_pool_advice -- 流池顾问
v$db_cache_advice -- 数据库缓冲区顾问
v$sga_target_advice -- SGA自动管理顾问
v$pga_target_advice -- PGA自动管理顾问
v$memory_target_advice -- 内存自动管理顾问(SGA+PGA)
v$diag_info -- 警报和跟踪文件位置
五.常用数据字典
dba_tablespaces -- 表空间
dba_data_files -- 数据文件
dba_segments -- 段
dba_extents -- 区间
dba_users -- 用户
dba_roles -- 角色
dba_objects -- 对象
dba_tables -- 表
dba_tab_columns -- 列
dba_tab_cols -- 列
dba_indexes -- 索引
dba_views -- 视图
dba_sys_privs -- 系统权限
dba_tab_privs -- 对象权限
dba_role_privs -- 角色权限
dba_waiters -- 等待锁的会话
dba_source -- PL/SQL程序代码
dba_db_links -- 数据库链接
参考网址:
https://blog.csdn.net/gyming/article/details/42387911
https://blog.csdn.net/gyming/article/details/43086461
https://blog.csdn.net/gyming/article/details/42045199
https://blog.csdn.net/gyming/article/details/42046117
原文地址:https://www.cnblogs.com/hezt1114/p/8972614.html