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;
UNDEFINE sqlprompt
SET TERMOUT ON
col NAME format a50
col VALUE format a50
set lin 250
set pagesize 500
如果是文件系统,读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-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=所需实例名
查看控制文件的心跳
> 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;
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
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