005.Oracle数据库实例核心技术解析

前端之家收集整理的这篇文章主要介绍了005.Oracle数据库实例核心技术解析前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

oracle数据库环境变量优化设置

1.

linxu:.bash_profile

unix:.profile


2.

alert

alias alert="cd /oracle/app/oracle/diag/rdbms/db01/db01"

默认日志目录:/oracle/app/oracle/diag/rdbms/db01/db01/trace


3.


sqlplux "/as sysdba"

select name from V$datafile;


sqlplus里实现上下翻滚命令:源码安装 rlwrap

alias sqlplus="rlwrap sqlplus"

alias rman="rlwrap rman"


4.

glogin.sql


$ find /oracle -name glogin.sql

文件位置在:/oracle/app/oracle/product/11.2.0/sqlplus/admin/glogin.sql


添加参数代码

SET TERMOUT OFF

DEFINE sqlprompt=none

COLUMN sqlprompt NEW_VALUE sqlprompt

SELECT USER || '@' || NVL('&_CONNECT_IDENTIFIER',global_name )

sqlprompt

FROM global_name;

SET sqlPROMPT '&sqlprompt> '

UNDEFINE sqlprompt

SET TERMOUT ON

col NAME format a50

col VALUE format a50

set lin 250

set pagesize 500


五、Oracle参数文件修改与参数文件案例


如果是文件系统,读spfile

如果是ASM系统:先读pfile,再读spfile,但pfile里是存放的spfile的存放路径



spfile:


命名规则:spfile<SID>.ora

SORACLE_HOME/dbs/




pfile:

命名规则: init<SID>.ora


查看参数文件:cd $ORACLE_HOME/dbs/

spfile默认路径:/oracle/app/oracle/product/11.2.0/dbs


sqlplus查看pfile路径:

$ sqlplus "/as sysdba"

> show parameter pfile

pfile默认路径:/oracle/app/oracle/product/11.2.0/dbs/spfiledb01.ora


查看参数方式

> show parameter 查看所有参数

> show parameter 参数名 查看个别参数

如:

> show parameter pga

> show parameter sga

> select name,value from v$parameter;


修改参数语法 :

alter system/session set parameter_name = parameter_value [comment 'text' ] [scope =memory |spfile |both][sid='sid'|"] scope=spfile;

参数名 参数值 在什么地方生效 在什么地方修改


memory:即时生效,重启后失效

spfile:重启生效

both:重启永久生效


参数分为:动态参数,静态参数


create pfile='/oracle/pfile.back' from spfile; 从当前路径创建pfile

create pfile='/oracle/pfile.back' from spfile='path'; 从指定路径创建pfile


create spfile from pfile='/oracle/pfile.back' 从当前路径创建spfile

create spfile='path' from pfile='/oracle/pfile.back'; form spfile='path'; 从指定路径创建spfile



数据库找参数文件顺序:

spfile<sid>.ora > spfile.ora >inst<SID>.ora > init.ora


数据库无法启动时,修改参数文件,启动数据库,的思路

1.创建pfile

create pfile='/oracle/pfile.back' from spfile; 从当前路径创建pfile

或者:

create pfile='/oracle/pfile.back' from spfile='path'; 从指定路径创建pfile

2.修改 modify

3.启动

startup pfile='/oracle/pfile.back' (后可跟启动到状态 nomount,mount,不加默认为open状态)

4.创建一个新的spfile

create spfile form pfile='/oracle/pfile.back'

5.启动数据库

startup


例如:

> sqlplux "/as sysdba"

> create pfile='/oracle/pfile.back' from spfile;

> shutdown immediate;

exit

vi /oracle/pfile.back 修改 open_cursors=3 ,保存

sqlplus "/as sysdba"

> startup pfile='/oracle/pfile.back'

> show parameter open_cursors

> create spfile='/oracle/app/oracle/product/11.2.0/dbs/spfiledb01.ora' from pfile='/oracle/pfile.back';

或者:

> create spfile from pfile='/oracle/pfile.back';

> shutdown immediate;

quit

sqlplux "/as sysdba"

> startup

> show parameter open_cu

> show parameter pfile


更改参数文件方式 :

alter system

alter session




六、跟踪分析数据库启动的各个阶段

1、nomount

startup nomount

主要启动参数文件搜索spfile > 没有spfile 搜索pfile >启动加参数文件,分配SGA>启动后台进进程 > 打开一个alter日志文件,跟踪文件> 开始写日志

2、mount

alter database mount;

主要:将数据与实例关联 > 根据参数文件,找到控制文件 > 再获取信息,再到打开数据库

3、open

alter database open

主要:将数据库与实例关联,打开日志文件


数据库启动如何验证:

checkpoint cnt

scn

start scn

stop scn




如果安装ASM也可以按以下启动:

> srvctl start database -d db_name -o mount

或:

> srvctl start database -d db_name 直接到open 状态


tracefile_name:

10g/11g:

oradebug


跟踪trace 步骤:

> shutdown immediate;

> startup nomount;

> oradebug setmypid 设置当前会话

> oradebug tracefile_name 查看当前会话的trace文件

或者用:用视图查看

> --desc v$diag_info;

> --select VALUE from v$diag_info where name like '%Trace%';

> alter session set events '2862 trace name context forever,level 12'; -- 2691 是由oradebug tracefile_name找到的值。

> alter database mount;

> alter database open;


vi /oracle/app/oracle/diag/rdbms/db01/db01/trace/db01_ora_2691.trc


/oracle/app/oracle/diag/rdbms/db01/db01/trace/db01_ora_2691.trc


11g:

v$diag_info



数据库关闭过程

shutdown 接关闭状态

a. abort : 数据库关不了,才用此模式,关闭之前执行最少的任务。可能造成数据无法启动.

用 shutdown 时,

先用 alter system checkpoint (检查点切换)

alter system switch logfile; (日志切换)

i. immediate :最常用选项

t. transactional :允许完成现有事务处理,但不允许新的事务处理

n. normal :等所有会话断开再关闭


如果将了grid组件(ASM)可以用:

srvctl stop database -d dbname -o immediate; 关闭数据库

close

dismount

shutdown

alter database close


查看数据库警告日志文件

一般存放在: $oracle_base/diag/rdbms/<db_name>/<sid>/trace中。

$oracle_base/diag/rdbms/<db_name>/<sid>/trace目录中有一个xml


查看进程:

ps -ef | grep ora_

ps -ef | grep LOACL=NO 查看没有结束的进程

ORA-00600错误 :oracle发生内部错误

ORA-1578错误 :坏块

> show parameter dump 查看当前dump 参数文件位置

查看数据库监听日志文件

一般路径:/oracle/app/oracle/diag/tnslsnr/db01/listener/alert/log.xml

/oracle/app/oracle/diag/tnslsnr/db01/listener/trace/listener.log

10.你对oracle数据库实例了解多少


查看oracl多少位:

$ cd $ORACLE_HOME/bin/

$ file oracle 查看文件位数

$ du -sm oracle 查看文件大小

$ cat /proc/meminfo 查看是否启用大内存

HugePages_Total: 0

HugePages_Free: 0

HugePages_Rsvd: 0

HugePages_Surp: 0

Hugepagesize: 2048 kB

DirectMap4k: 8192 kB

> select * from v$process; 查看进程信息


查看用户用什么工具连接数据库

[oracle@db01 trace]$ ps -ef | grep LOCA

oracle 3332 2469 0 12:27 ? 00:00:01 oracledb01 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))

oracle 4167 1 0 14:20 ? 00:00:00 oracledb01 (LOCAL=NO)

oracle 4172 1 0 14:20 ? 00:00:00 oracledb01 (LOCAL=NO)

oracle 4213 2760 0 14:26 pts/2 00:00:00 grep LOCA

SYS@db01> select addr,pid,spid,username,program from v$process where spid=3332;


ADDR PID SPID USERNAME PROGRAM

---------------- ---------- ------------------------ --------------- ------------------------------------------------

00000000914BB858 19 3332 oracle


SYS@db01> select sid,serial#,module from v$session where paddr='00000000914BB858';


了解数据库运行多少时间

> select startup_time from v$instance;


在不知道任何参数时,怎么把数据库启动到 nomount 状态 :

1.在/oracle路径下创建一个pfile2.ora文件,输入:db_name=itpux (iptux指定的数据库名)

2. [oracle@db01 ~]$ export ORACLE_SID=itpux

[oracle@db01 ~]$ sqlplus /nolog

3. none> conn /as sysdba;

none> startup nomount pfile='/oracle/pfile2.ora';


查看数据库启动了多少个实例(如下:有两个)

[oracle@db01 oracle]$ ps -ef | grep smon

oracle 3321 1 0 12:27 ? 00:00:01 ora_smon_db01

oracle 4383 1 0 14:47 ? 00:00:00 ora_smon_itpux

oracle 4586 2760 0 15:11 pts/2 00:00:00 grep smon


[oracle@db01 oracle]$ ipcs -asmq 查看启动了几个实例

、------ Semaphore Arrays --------

key semid owner perms nsems

0xbdb51c9c 688130 oracle 640 154

0x5d54c4dc 819203 oracle 640 124


[oracle@db01 oracle]$ sysresv 查看当前实例

如何进入所需要实例:

linxu : $ export ORACLE_SID=所需实例名

windows: $ set oracle_sid=所需实例名



11.控制文件内容与心跳信息解析

查看控制文件的心跳

> select cphbt from X$KCCCP

或:

> select EVENT#,NAME from v$event_name where name like'%hear%';


或:

DUMP事件文件

> shutdown immediate;

> startup nomount;

> oradebug setmypid 设置当前会话

> oradebug tracefile_name 查看当前会话的trace文件

> set time on

> alter session set events 'immediate trace name CONTROLF forever,level 8';


> show parameter control 查看控制文件信息


[oracle@db01 db01]$ strings control01.ctl 显示控制文件(因为他是二进制文件


dump level :

1 :最低

2

3 :所有记录

4

5

8

10 :最详细的


dump控制文件

oradebug setmypid

oradebug dump controlf 3;


12、数据库的参数文件分析

show parameter sga

show parameter pga

show parameter processes 查看进程


> desc v$parameter

> select Name,value from v$parameter where name='processes';

> desc v$sgastat;

> select * from v$sgastat where name='processes';


跟踪步骤:

> show parameter sql_trace

> oradebug setmypid

> oradebug tracefile_name

> alter session set sql_trace=true;

> show parameter processes

> alter session set sql_trace=false;


X$KSPPI

X$KSPPCV


v$spparameter :记录当前spfile初始化参数,这个只显示一行

v$parameter :记录当前spfile初始化参数,这个只显示两行

v$system_parameter :显示当前实例级别生成文件

v$system_parameter2


> desc x$KSPSPFILE



> select SID,NAME,VALUE from v$spparameter where VALUE is not null;


重置SPFILE

1.不知道以前的值(例如修改 processes 参数 )

> alter system set processes=500 scope=spfile;

2.或者通过 reset修改

> alter system reset processes scope=spfile;

> show parameter spfile;

> show parameter process


13、如何设置event事件

alter system set event="10046 trace name context forever,level 12" scope=spfile;


cd /oracle/app/oracle/product/11.2.0/dbs 进入到spfile日志目录

[oracle@db01 dbs]$ strings spfiledb01.ora | grep event 查看event




sql

alter session set event '10046 trace name context forever,level12';


通常格式如下:

EVENT="<事件名称><动作><跟踪项目><范围限定>"


举例:

event=10231 trace name context forever,level 10'


alter system reset event scope=spfile sid='*'; 重置event级别


14、访问动态性能视图

select * from v$fixed_table 查看所有视图



15、深入理解oracle数据字典(数据库中所有的对象和属性

1.dab_ dab权限对象

2.all_ 所有用户都有权限对象

3.user_ 所有用户都有权限对象(与all_的区别就是少了 OWNER 列)


跟踪案例:

> set autotrace traceonly explain

> select * from v$parameter;

> desc x$KSPPI


oracle启动时

startup >X$ >GV$ and V$ > GV_$ > public synonym < catalog.sql


show parameter processes > V$PARAMETER > GV$PARAMETER >X$(X$KQFVI,X$KQFVT)


oracle创建和删除表的检查过程

table or view >synonym > public synonym > does not exist

原文链接:https://www.f2er.com/oracle/206977.html

猜你在找的Oracle相关文章