oracle数据库由两部分组成:数据库和实例。
数据库是指磁盘构成数据库的物理文件的集合。共有8种:参数文件(parameter file),跟踪文件(trace file),
警告文件(alert file),数据文件(data file),临时文件(temp file),控制文件(control file),重做日志文件(redo log file)
密码文件(password file)。
--------oracle 10G开始,又增加了两种新的可选文件类型。
修改跟踪文件(change tracking file):它可以建立真正的增量备份,与数据库备份和恢复有关。
闪回日志文件(flashback log file):这些文件存储数据库块的”前映像“,以便完成新增加的flashback database命运。
实例则是数据库运行所需内存结构及后台进程的集合。
以上文件,重要的是数据文件和重做日志文件。因为只要有着两个文件,就算其他文件没有了,也可以恢复出需要的数据。
但这里主要讲:
参数文件。
跟踪文件。
控制文件。
重做日志文件。
数据文件。
-----------参数文件。
参数文件的作用?
参数文件的存储位置?
如何查看参数文件?
如何设置参数文件?该如何设置才是最优?
如何修复参数文件-(spfile)?
参数文件的作用(以下是教材的原话)
oracle的参数文件定义了许多数据库启动时需要使用的重要参数。数据库启动时首先读取参数文件,
根据各参数值,分配各个内存区的大小,配置后台进程,定位在数据库运行时各种文件。
修改参数文件可以调优数据库运行状态。
oracle参数文件有两种:
pfile与spfile
pfile文件是文本文件,名称:init<ORACLE_SID>.ora, 9I之前的产物,可用记事本,vim编辑。(oracle_sid是变量值)
spfile文件是二进制文件,名称:spfile<ORACLE_SID>.ora, 用oracle命令才能修改其参数。
oracle数据库会优先使用spfile文件。
------------若想查看当前数据库使用了哪些参数文件,你可以试一试:
-----show parameter spfiel (system级用户下)
参数文件存储的位置?
无论在window还是Unux下,都可以用这样的命令查询:
------show parameter spfiel
或-
---select name,value from v$parameter where name='spfile';
如果我的参数文件突然损坏了,该如何修复呢?
--pfile损坏,用spfile修复pfile
create pfile from spfile;
--spfile损坏,用pfile修复spfile
create spfile from pfile;
若是spfile文件和pfile一起损坏,那也没事,也能通过命令修复。
Unix上:
[oracle@yzh ~]$ cd $ORACLE_HOME/dbs
[oracle@yzh dbs]$ strings spfile$ORACLE_SID.ora
myoracle.__db_cache_size=167772160
myoracle.__java_pool_size=4194304
myoracle.__large_pool_size=4194304
myoracle.__oracle_base='/home/app/oracle'#ORACLE_BASE set from environment
window上:
用写字板打开spfile文件,把里面的内容粘贴到spfile<oracle_sid>.ora中即可。
如何查询参数文件中的内容呢?参数文件中定义了哪些参数呢?
两个数据字典视图记录着参数文件的参数。
---v$parameter 记录着当前会话中生效的参数值
---v$system_parameter 记录整个实例生效的参数值。
----查询语句;
select name,value from v$parameter where name like '列名';
或------
show parameter sort_area_size -----show parameter 命令会自动在参数名称添加%通配符。
上面的命令等价于
show paremeter %sort_area_size% -----匹配中间有sort_area_size字符串的行。
如何设置修改参数文件呢?
两种命令,作用也不同。
alter session -- 可以修改部分参数,作用当前会话。
--v$parameter中的isses_modifiable列如果为true,则可用alter session修改
alter system -- 可以修改所有参数,作用整个实例。
--v$parameter中的issys_modifiable列如果为false,immediate,deferred,
则可用alter system修改,添加选项子句,可以指定生效时间。
v$parameter中的isses_modifiable列选项子句有:false,immediate,deferred.
false:
执行alter system命令时,需加上 scope=spfile。修改后的值,重启数据库之后生效。
例:SQL> alter system set sort_area_size=655555 scope=spfile;
innediate:
执行alter system命令时,不加选项(等于加 scope=both),会修改当前参数值,会修改spfile文件,且
重启oracle后生效。
执行alter system命令时,添加scope=memory,只修改当前运行值。
执行alter system命令时,添加scope=spfile,只修改spfiel,重启后生效。
deferred:
需要添加deferred和scope=spfile。
执行alter system时,添加deferred,修改的值在下一个会话生效,值会存入spfile,重启之后也会生效。
执行alter system时,添加scope=spfile,修改的值只会在重启之后生效。
-----------跟踪文件。
以下内容包括:
跟踪文件的作用。
跟踪文件存储在哪?
ADR错误诊断文件有哪些?存放在哪?
跟踪文件的作用:
跟踪文件可以提供调试信息,诊断信息,运行状态信息。服务器遇到错误时,会生产大量的跟踪文件,里面记录着诊断信息。
跟踪文件存储在哪?
oracle 11G之后,引入了自动诊断资料档案的概念,ADR(Automatic Diagnostic Repository),管理这些跟踪文件。
--可以通过v$diag_info视图查个究竟。
例:select name,value from v$diag_info;
一般的,ADR文件存放的位置由Diagnostic_dest参数设定。
----oracle 若设置了oracle_base变量,则存放位置为$ORACLE_BASE;
----若oracle没有设置oracle_base变量,则存放为$ORACLE_HOMR/log;
例:(我的oracle设置了ORACLE_BASE变量)
SQL>show parameter diagno
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
diagnostic_dest string /home/app/oracle
ADR中的另外文件有?
SQL> show parameter dump_dest
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
background_dump_dest string /home/app/oracle/diag/rdbms/orcl/myoracle/trace
core_dump_dest string /home/app/oracle/diag/rdbms/orcl/myoracle/cdump
user_dump_dest string /home/app/oracle/diag/rdbms/orcl/myoracle/trace
前台和后台进程跟踪文件:前,后台进程产生的跟踪信息,存储于 $ORACLE_BASE/diag/rdbms/orcl/$ORACLE_SID/trace
警告文件:(最常用到的跟踪文件)文本形式的警告文件,存储于$ORACLE_BASE/diag/rdbms/orcl/$ORACLE_SID/trace
核心转储文件:存储于$ORACLE_BASE/diag/rdbms/orcl/$ORACLE_SID/cdump
意外事件转储文件:存储于$ORACLE_BASE/diag/rdbms/orcl/$ORACLE_SID/incident/incdit_n
跟踪文件于转储文件的区别:
跟踪文件是较为连续的输出,而转储是响应事件而进行一次性输出,核心是特定端口的二进制内存存储。(不理解。)
最常用的跟踪文件--警告文件!
警告文件(alert file):是数据库整个生命周期的记录,包括每次启动及关闭时间,启动过程,日志切换,
创建表空间操作,各种错误发生时间与错误原因等信息。
---说到这里,应该说说,oracle 11G引进的一个专门管理alert,trace,dump文件的工具--adrci工具。
---adrci工具的参数文件由--homepath定义。
---这个工具可以快速查询错误相关的所有trace文件,并将这些文件打包到一个zip文件,
以便将问题相关的信息提供给Oracle的技术支持。(便利呀!)
以Linux为例,简单说说adrci工具的使用。
[oracle@yzh ~]$ adrci
ADRCI: Release 11.2.0.1.0 - Production on Sun Oct 19 06:20:28 2014
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
ADR base = "/home/app/oracle"
----进入adrci命令操作界面。(我Linux的$PATH变量设置好了adrci二进制文件的路径。)
----adrci命令行是严格区分大小写。
adrci> help
HELP [topic]
Available Topics:
CREATE REPORT
ECHO
EXIT
HELP
HOST
IPS
PURGE
RUN
SET BASE
SET BROWSER
SET CONTROL
SET ECHO
SET EDITOR
SET HOMES | HOME | HOMEPATH
SET TERMOUT
SHOW ALERT
SHOW BASE
SHOW CONTROL
SHOW HM_RUN
SHOW HOMES | HOME | HOMEPATH
SHOW INCDIR
SHOW INCIDENT
SHOW PROBLEM
SHOW REPORT
SHOW TRACEFILE
SPOOL
There are other commands intended to be used directly by Oracle, type
"HELP EXTENDED" to see the list
---help命令列出adrci的命令用法。
--如我想知道,某个警告文件的存储位置:(通过选项可以所需的警告文件。)
adrci> SHOW alert
Choose the alert log from the following homes to view:
1: diag/rdbms/orcl/myoracle
2: diag/tnslsnr/yzh/listener
Q: to quit
Please select option:
当前会话跟踪文件(default trace file):
为了诊断数据库问题,有时需要导出数据块内容和某写文件内容,导入当前的用户的跟踪文件中,(即转储文件中)。
当前会话跟踪文件的命名规律:<oracle_sid>_ora_<process_id>.trc
--举例来说明。(以教材为例)
----重建控制文件,生成了转储文件:
SQL> alter database backup controlfile to trace;
-----通过v$diag_info定位转储文件位置。
SQL> select name,value from v$diag_info where name='Default Trace File';
----若没有权限查看v$diag_info呢?怎样得到当前会话跟踪文件的位置呢?
---通过tracefile_identifier给转储文件加个“标志”。
SQL> alter session set tracefile_identifier='mytrace'; -----给转储文件命名里添加上“mytrace”
---查询
SQL> !ls /home/app/oracle/diag/rdbms/orcl/myoracle/trace/*mytrace*
ls: 无法访问/home/app/oracle/diag/rdbms/orcl/myoracle/trace/*mytrace*: 没有那个文件或目录
转载于:https://www.cnblogs.com/yzhl/p/4226850.html