ORA体系2
1.连接
查看session相关信息
show parameter session
口令文件:远程登陆
oracle启动监听,库内
lsnrctl start -----命令行,或库内加!
alter system register ---库内
远程命令行,sqlplus scott/scott@192.168.3.88:1521/prod
用户密码ip和实例
路径为$ORACLE_HOME/dbs/orapwprod
缺少这个文件后重建
which orapwd
进入路径后,启动文件,执行如下命令
orapwd file=/u01/oracle/dbs/orapwprod password=oracle entries=3
直接启动会有操作选项,后加生成位置和名称,路径
$ORACLE_HOME/dbs/orapw$sid ----参考格式,写必须要绝对路径
密码 最大连接数
2.自动诊断
相关路径查看
select * from v$diag_info;
adump —audit $ORACLE_BASE/admin/prod/audit
cdump —core
bdump —backgroup
udump —user
show parameter audit -----adump查看
show parameter dump ------其他dump查看
清空告警日志,
cat /dev/null > alert_prod.log
直接删掉也没有关系,下次启动会自动创建,
tail -f /u01/diag/rdbms/prod/prod/trace/alert_prod.log ---查看$ORACLE_BASE/diag/rdbms/$sid/$sid/tarce/alert_$sid.log
3.控制文件
控制文件,二进制文件,体积不大。
位置大致为$ORACLE_BASE/oradata/prod/
组成情况,
第一部分,db_name,archive_mode,datafile,logfile,charset
第二部分,scn,system change number(current scn ,checkpoint change两中scn ) ,timestamp-----scn,本质提供一致性
select current_scn from v$database;
select current_scn,scn_to_timestamp(current_scn) from v$database; -------函数可以相互转换,to前后的scn和时间戳
第三部分,rman,metadata,
rman作用为保护数据库
查看关于数据库信息
select name,dbid,log_mode,open_mode from v$database;
select name from v$controlfile;
保护控制文件
1.多路复用
开机状态下,先修改参数,control 路径为静态参数,
create pfile from spfile; ----- 库开启时,先备份
alter system set control_file='','','' scope=spfile; -----设置格式
alter system set control_files='/u01/fast_recovery_area/PROD/controlfile/o1_mf_kcwq7x83_.ctl','/u01/fast_recovery_area/PROD/controlfile/o1_mf_kcwq7xcs_.ctl','/home/oracle/control.ctl' scope=spfile;
设置完成后关机,复制该控制文件到新添加的路径下
然后启动,show该参数,发现生效
若其中一个控制文件发生损坏(其中一个控制文件被删除会报错no such file,此时abort关闭数据库后,进行从cp其他的控制文件过来,再次启动即可,此处模拟损坏方式为
dd if=/dev/zero of=/home/oracle/control.ctl bs=2m count=1
),可以在日志中查看到
tail -f /u01/diag/rdbms/prod/prod/trace/alert_prod.log ------具体路径结合实际
内容基本为
Errors in file /u01/diag/rdbms/prod/prod/trace/prod_ckpt_2561.trc:
ORA-00202: control file: '/home/oracle/control.ctl'
Errors in file /u01/diag/rdbms/prod/prod/trace/prod_ckpt_2561.trc (incident=12097):
ORA-00227: corrupt block detected in control file: (block 1, # blocks 1)
ORA-00202: control file: '/home/oracle/control.ctl'
Incident details in: /u01/diag/rdbms/prod/prod/incident/incdir_12097/prod_ckpt_2561_i12097.trc
Errors in file /u01/diag/rdbms/prod/prod/trace/prod_ckpt_2561.trc:
ORA-00227: corrupt block detected in control file: (block 1, # blocks 1)
ORA-00202: control file: '/home/oracle/control.ctl'
CKPT (ospid: 2561): terminating the instance due to error 227
Sat Jul 02 08:30:39 2022
System state dump requested by (instance=1, osid=2561 (CKPT)), summary=[abnormal instance termination].
System State dumped to trace file /u01/diag/rdbms/prod/prod/trace/prod_diag_2549_20220702083039.trc
Dumping diagnostic data in directory=[cdmp_20220702083039], requested by (instance=1, osid=2561 (CKPT)), summary=[abnormal instance termination].
Instance terminated by CKPT, pid = 2561
库内此时进行的操作和反应为
SYS@ prod>alter system checkpoint;
alter system checkpoint
*
ERROR at line 1:
ORA-03113: 通信通道的文件结尾 进程 ID:
2579
会话 ID: 1 序列号: 5
进行恢复,两种方式
控制文件恢复和取消该控制文件的路径
1.取消该报错文件
使用pfile进行启动数据库,并对pfile内容进行修改
删除spfile
rm -rf /u01/oracle/dbs/spfileprod.ora ----具体路径和文件名根据情况修改
create spfile from pfile; ----------根据之前备份的pfile进行恢复,数据库连接需要exit后重新连接,startup即可启动,此时恢复到了之前的只用两个控制文件的情况
2.备份控制文件
alter database backup controlfile to '/home/oracle/con.bak'
具体参照后期文章
3.重建控制文件
alter database backup controlfile to trace as '/home/oracle/con.bak.tarce' -------其中可以查看到control文件重建语句
先shutdown,然后模拟一个控制文件损坏(删除一个控制文件),启动nomount下,复制文件中语句,注意文本中是两条类似语句,需要复制靠上的一条
此时实例启动状态为mount,手动alter为open
还需粘贴文本中靠后的一句表空间设置
ALTER TABLESPACE TEMP ADD TEMPFILE '/u01/fast_recovery_area/PROD/datafile/o1_mf_temp_kcwq87p2_.tmp'
4.日志
1.redo日志
相关online redo log file
redo log buffer
日志组至少两个
查看视图路径,v
l
o
g
f
i
l
e
,
v
logfile,v
logfile,vlog,v$archived_log
member:镜像日志组,保护当前日志组,但是需要全部建立,因为每一个日志组都有可能成为当前日志组
查看日志组,col member for a60; ---------设置格式
select status,group#,member from v$logfile;
状态部分有字基本是坏了
alter system switch logfile; ---------进行切换
select * from v$log; -------------------查看使用的日志组
select name,sequence# from v$archived_log;
日志状态:current,active,inative,unused
active不能使用,不过一段时间后会变成inactive,刚切换的日志需要将数据写入(切换检查点会瞬间改变状态)
alter database add logfile group 4 '/u01/oradata/prod/redo04.log' size 50m; -----添加日志组
alter database add logfile member '/home/oracle/redo04b.log' to group 4; -----增加member镜面日志组,此处为单个的
alter database drop logfile member '/home/oracle/redo04b.log' ; -----删除日志组,当前日志组的镜像不能删除,active下,member可以删除,但是group日志不行,底层物理文件没有被删除
alter database drop logfile group 4; ---------删除组
删除组和添加日志组相互配合可实现日志组的扩容,删除日志组,并添加更大的日志组
2.归档日志
查看归档
archive log list;
开启归档需要
1.shutdown immediate
2.启动到mount
3.alter database archivelog
4.alter database open
show parameter recover;
查看快速恢复区,fra,fast recover area
使用show可以查看归档日志的format
手动设置归档
show parameter dest_1
alter system set log_archive_dest_1='location=/u01/arch'; --------语法注意,容易写错,确保目录存在、
额外参考
alter system set log_archive_format ='arch_%t_%r_%s.log' scope=spfile; ------指定格式
alter system archive log current; -----------在 RAC 下切换所有实例,仅适用于归档模式