- 浏览: 982709 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
孤星119:
好熟悉的数据库字段啊, 上家公司做的项目每天都跟这些字段打招呼 ...
Oracle exp compress参数引起的空间浪费 -
itspace:
quxiaoyong 写道遇到个问题,网上一搜,全他妈这篇文章 ...
数据库连接错误ORA-28547 -
quxiaoyong:
遇到个问题,网上一搜,全他妈这篇文章。你转来转去的有意思吗?
数据库连接错误ORA-28547 -
hctech:
关于version count过高的问题,不知博主是否看过ey ...
某客户数据库性能诊断报告 -
itspace:
invalid 写道写的不错,我根据这个来安装,有点理解错误了 ...
AIX 配置vncserver
首先看一下这张表格smon_scn_time在9i和10g的结构变化
9i:
10g:
一般情况下,Oracle 9i和Oracle 10g对此表更新频率维持在5分钟左右,但Oracle 10g增加了TIM_SCN_MAP字段,通过这个字段可以scn和time的转换精确到6秒钟,而9i只能精确到5分钟左右。下面分别以9i做测试:
1、
可以看到通过2种闪回机制,用scn闪回可以看到精确的数据,用TIMESTAMP 只能模糊匹配。
在研究一下TIMESTAMP 匹配了哪个scn
scn的算法是
SCN_WRP*4294967296+SCN_BAS=9744664906096
可以看到
和timestamp保持一致了。
1、10g增加了函数scn_to_timestamp,可以看到精确度相差6秒
开启10046跟踪事件跟踪一下,发现没有用到smon_scn_time
delete smon_scn_time表格内容
再次查找
可以看到还是有结果,因为可能将结果保存在pga中,开启另外一个会话就查不到了
从另外一个角度证明了函数scn_to_timestamp是从smon_scn_time取到值的
从客户的一份statspack可以看出Oracle对smon_scn_time表格的操作
9i:
引用
SQL> desc smon_scn_time
Name Null? Type
----------------------------------------- -------- ----------------------------
THREAD NUMBER
TIME_MP NUMBER
TIME_DP DATE
SCN_WRP NUMBER
SCN_BAS NUMBER
Name Null? Type
----------------------------------------- -------- ----------------------------
THREAD NUMBER
TIME_MP NUMBER
TIME_DP DATE
SCN_WRP NUMBER
SCN_BAS NUMBER
10g:
引用
SQL> desc smon_scn_time
Name Null? Type
----------------------------------------- -------- ----------------------------
THREAD NUMBER
TIME_MP NUMBER
TIME_DP DATE
SCN_WRP NUMBER
SCN_BAS NUMBER
NUM_MAPPINGS NUMBER
TIM_SCN_MAP RAW(1200)
SCN NUMBER
ORIG_THREAD NUMBER
Name Null? Type
----------------------------------------- -------- ----------------------------
THREAD NUMBER
TIME_MP NUMBER
TIME_DP DATE
SCN_WRP NUMBER
SCN_BAS NUMBER
NUM_MAPPINGS NUMBER
TIM_SCN_MAP RAW(1200)
SCN NUMBER
ORIG_THREAD NUMBER
一般情况下,Oracle 9i和Oracle 10g对此表更新频率维持在5分钟左右,但Oracle 10g增加了TIM_SCN_MAP字段,通过这个字段可以scn和time的转换精确到6秒钟,而9i只能精确到5分钟左右。下面分别以9i做测试:
1、
引用
13:38:19 SQL> SELECT LOCALTIMESTAMP FROM dual;
LOCALTIMESTAMP
---------------------------------------------------------------------------
09-JUL-09 01.38.20.890171 PM
Elapsed: 00:00:00.00
13:38:20 SQL> select dbms_flashback.get_system_change_Number scn from dual;
SCN
-------------------
9744666467101
Elapsed: 00:00:00.00
13:38:20 SQL> insert into t select * from t where rownum<10;
9 rows created.
Elapsed: 00:00:00.00
13:38:20 SQL> commit;
Commit complete.
Elapsed: 00:00:00.00
13:38:20 SQL> SELECT count(*) FROM t AS OF TIMESTAMP TO_TIMESTAMP('09-JUL-09 01.38.20.890171 PM');
COUNT(*)
----------
259047
Elapsed: 00:00:00.42
13:38:36 SQL> SELECT count(*) FROM t AS OF scn 9744666467101;
COUNT(*)
----------
260181
Elapsed: 00:00:00.35
LOCALTIMESTAMP
---------------------------------------------------------------------------
09-JUL-09 01.38.20.890171 PM
Elapsed: 00:00:00.00
13:38:20 SQL> select dbms_flashback.get_system_change_Number scn from dual;
SCN
-------------------
9744666467101
Elapsed: 00:00:00.00
13:38:20 SQL> insert into t select * from t where rownum<10;
9 rows created.
Elapsed: 00:00:00.00
13:38:20 SQL> commit;
Commit complete.
Elapsed: 00:00:00.00
13:38:20 SQL> SELECT count(*) FROM t AS OF TIMESTAMP TO_TIMESTAMP('09-JUL-09 01.38.20.890171 PM');
COUNT(*)
----------
259047
Elapsed: 00:00:00.42
13:38:36 SQL> SELECT count(*) FROM t AS OF scn 9744666467101;
COUNT(*)
----------
260181
Elapsed: 00:00:00.35
可以看到通过2种闪回机制,用scn闪回可以看到精确的数据,用TIMESTAMP 只能模糊匹配。
在研究一下TIMESTAMP 匹配了哪个scn
引用
13:43:14 SQL> SELECT TIME_DP, SCN_WRP, SCN_BAS from SMON_SCN_TIME where TIME_DP < = to_date('2009-07-09 13:38:19','yyyy-mm-dd hh24:mi:ss' ) ORDER BY TIME_DP desc ;
TIME_DP SCN_WRP SCN_BAS
------------------- ---------- ----------
2009-07-09 13:33:20 2268 3680638917
TIME_DP SCN_WRP SCN_BAS
------------------- ---------- ----------
2009-07-09 13:33:20 2268 3680638917
scn的算法是
SCN_WRP*4294967296+SCN_BAS=9744664906096
可以看到
引用
13:44:06 SQL> SELECT count(*) FROM t AS OF scn 9744666466245;
COUNT(*)
----------
259047
COUNT(*)
----------
259047
和timestamp保持一致了。
1、10g增加了函数scn_to_timestamp,可以看到精确度相差6秒
引用
SQL> select scn_to_timestamp(9744666543478) from dual;
SCN_TO_TIMESTAMP(9744666543478)
---------------------------------------------------------------------------
09-JUL-09 03.33.47.000000000 PM
SQL> select scn_to_timestamp(9744666543477) from dual;
SCN_TO_TIMESTAMP(9744666543477)
---------------------------------------------------------------------------
09-JUL-09 03.33.41.000000000 PM
SCN_TO_TIMESTAMP(9744666543478)
---------------------------------------------------------------------------
09-JUL-09 03.33.47.000000000 PM
SQL> select scn_to_timestamp(9744666543477) from dual;
SCN_TO_TIMESTAMP(9744666543477)
---------------------------------------------------------------------------
09-JUL-09 03.33.41.000000000 PM
开启10046跟踪事件跟踪一下,发现没有用到smon_scn_time
引用
*** 2009-07-09 15:45:34.627
*** SERVICE NAME:(SYS$USERS) 2009-07-09 15:45:34.627
*** SESSION ID:(132.250) 2009-07-09 15:45:34.627
WAIT #3: nam='SQL*Net message to client' ela= 2 driver id=1650815232 #bytes=1 p3=0 obj#=-1 tim=1217896029909494
WAIT #3: nam='SQL*Net message from client' ela= 3616167 driver id=1650815232 #bytes=1 p3=0 obj#=-1 tim=1217896033525929
=====================
PARSING IN CURSOR #1 len=48 dep=0 uid=0 oct=3 lid=0 tim=1217896033527758 hv=2148814857 ad='3912114c'
select scn_to_timestamp(9744666543477) from dual
END OF STMT
PARSE #1:c=2000,e=1728,p=0,cr=0,cu=0,mis=1,r=0,dep=0,og=1,tim=1217896033527753
BINDS #1:
EXEC #1:c=0,e=48,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=1,tim=1217896033527918
WAIT #1: nam='SQL*Net message to client' ela= 2 driver id=1650815232 #bytes=1 p3=0 obj#=-1 tim=1217896033527950
FETCH #1:c=0,e=77,p=0,cr=0,cu=0,mis=0,r=1,dep=0,og=1,tim=1217896033528057
WAIT #1: nam='SQL*Net message from client' ela= 126 driver id=1650815232 #bytes=1 p3=0 obj#=-1 tim=1217896033528238
FETCH #1:c=0,e=1,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=0,tim=1217896033528268
WAIT #1: nam='SQL*Net message to client' ela= 1 driver id=1650815232 #bytes=1 p3=0 obj#=-1 tim=1217896033528293
*** SERVICE NAME:(SYS$USERS) 2009-07-09 15:45:34.627
*** SESSION ID:(132.250) 2009-07-09 15:45:34.627
WAIT #3: nam='SQL*Net message to client' ela= 2 driver id=1650815232 #bytes=1 p3=0 obj#=-1 tim=1217896029909494
WAIT #3: nam='SQL*Net message from client' ela= 3616167 driver id=1650815232 #bytes=1 p3=0 obj#=-1 tim=1217896033525929
=====================
PARSING IN CURSOR #1 len=48 dep=0 uid=0 oct=3 lid=0 tim=1217896033527758 hv=2148814857 ad='3912114c'
select scn_to_timestamp(9744666543477) from dual
END OF STMT
PARSE #1:c=2000,e=1728,p=0,cr=0,cu=0,mis=1,r=0,dep=0,og=1,tim=1217896033527753
BINDS #1:
EXEC #1:c=0,e=48,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=1,tim=1217896033527918
WAIT #1: nam='SQL*Net message to client' ela= 2 driver id=1650815232 #bytes=1 p3=0 obj#=-1 tim=1217896033527950
FETCH #1:c=0,e=77,p=0,cr=0,cu=0,mis=0,r=1,dep=0,og=1,tim=1217896033528057
WAIT #1: nam='SQL*Net message from client' ela= 126 driver id=1650815232 #bytes=1 p3=0 obj#=-1 tim=1217896033528238
FETCH #1:c=0,e=1,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=0,tim=1217896033528268
WAIT #1: nam='SQL*Net message to client' ela= 1 driver id=1650815232 #bytes=1 p3=0 obj#=-1 tim=1217896033528293
delete smon_scn_time表格内容
引用
SQL> alter system set events '12500 trace name context forever, level 10';
System altered.
SQL> delete from smon_scn_time;
1808 rows deleted.
SQL> commit;
Commit complete.
SQL> alter system set events '12500 trace name context off';
System altered.
System altered.
SQL> delete from smon_scn_time;
1808 rows deleted.
SQL> commit;
Commit complete.
SQL> alter system set events '12500 trace name context off';
System altered.
再次查找
引用
SQL> select scn_to_timestamp(9744666543478) from dual;
SCN_TO_TIMESTAMP(9744666543478)
---------------------------------------------------------------------------
09-JUL-09 03.33.47.000000000 PM
SCN_TO_TIMESTAMP(9744666543478)
---------------------------------------------------------------------------
09-JUL-09 03.33.47.000000000 PM
可以看到还是有结果,因为可能将结果保存在pga中,开启另外一个会话就查不到了
引用
SQL> select scn_to_timestamp(9744666543478) from dual;
select scn_to_timestamp(9744666543478) from dual
*
ERROR at line 1:
ORA-08181: specified number is not a valid system change number
ORA-06512: at "SYS.SCN_TO_TIMESTAMP", line 1
select scn_to_timestamp(9744666543478) from dual
*
ERROR at line 1:
ORA-08181: specified number is not a valid system change number
ORA-06512: at "SYS.SCN_TO_TIMESTAMP", line 1
从另外一个角度证明了函数scn_to_timestamp是从smon_scn_time取到值的
从客户的一份statspack可以看出Oracle对smon_scn_time表格的操作
引用
Buffer Gets Executions Gets per Exec %Total CPU-Time(s) Elapsd-Time (s) Hash Value
--------------- ------------ ---------- ----- ------ --------- -----------
delete from smon_scn_time where thread=0 and scn = (select min(
scn) from smon_scn_time where thread=0)
--------------- ------------ ---------- ----- ------ --------- -----------
delete from smon_scn_time where thread=0 and scn = (select min(
scn) from smon_scn_time where thread=0)
发表评论
-
buffer cache 的内部结构
2020-03-18 14:21 585BUFFER CACHE作为数据块的 ... -
Oracle OMC介绍
2020-03-18 13:19 496Oracle管理云服务(OMC)的大数据平台,自动收集的企业 ... -
参加Oracle勒索病毒防范专题培训会议
2019-09-27 17:15 5342019年7月22日,受邀参加Oracle勒索病毒防范专题培训 ... -
记一次内存换IO的Oracle优化
2019-09-27 16:50 836某客户数据库从P595物理 ... -
如何定位Oracle SQL执行计划变化的原因
2019-07-03 14:49 1474性能优化最难的是能够 ... -
如何定位Oracle SQL执行计划变化的原因
2018-10-30 09:24 1185性能优化最难的是能够 ... -
数据库性能优化目标
2018-10-08 10:59 529从数据库性能优化的场 ... -
数据库无法打开的原因及解决办法
2018-10-05 20:45 2148数据库的启动是一个相当复杂的过程。比如,Oracle在启动之前 ... -
怎么样彻底删除数据库?
2018-09-18 11:10 609Oracle提供了drop database命令用来删除数据库 ... -
Oracle减少日志量的方法
2018-09-10 10:17 872LGWR进程将LOG BUFFER中的 ... -
如何快速关闭数据库
2018-09-09 13:14 1242“一朝被蛇咬,十年怕井绳”。在没被“蛇”咬之前,很多DBA喜欢 ... -
关于《如何落地智能化运维》PPT
2018-05-17 10:19 1140在DTCC 2018发表《如何落地智能化运维》演讲,主要内容如 ... -
记录在redhat5.8平台安装oracle11.2容易忽视的几个问题
2018-05-11 19:58 588问题一:ping不通问题 在虚拟机上安装好linux系统后, ... -
《Oracle DBA实战攻略》第一章
2018-05-11 10:42 966即日起,不定期更新《OracleDBA实战攻略》一书电子版,请 ... -
Oracle 12c新特性
2018-05-11 10:33 908查询所有pdb [oracle@gj4 ~]$ sqlplu ... -
关于修改memory_target的值后数据库无法启动的问题
2017-02-28 12:24 3991操作系统:RHEL6.5 数据库版本:11.2.0.4 ... -
10g rac安装error while loading shared libraries libpthread.so.0 问题
2017-02-28 12:22 70511g rac安装在二节点跑脚本一般会报此错误: 解决这个问 ... -
记一次Oracle会话共享模式故障处理过程
2017-02-27 19:16 808故障简述 XXX第八人民医院HIS数据库7月13日11点左右从 ... -
RESMGR:cpu quantum等待事件处理过程
2017-02-27 18:23 2672由于数据库上线过程中出现大量的RESMGR:cpu quant ... -
谈谈log file sync
2014-03-19 14:18 1781数据库中的log file sync等待事件指的是,当user ...
相关推荐
本文主要介绍的是针对一个运行在AIX 5.3系统上的Oracle 10.1.0.2数据库进行升级的过程,特别是针对`smon_scn_time`相关的问题及解决方法。升级的目标版本为Oracle 10.2.0.4。 #### 升级前准备 1. **环境确认**:...
在数据库中,通过某些系统表如SMON_SCN_TIME可以查询SCN对应的时间信息,这在分析数据库状态和历史事件时非常有用。 SMON_SCN_TIME系统表记录了SCN到时间戳的转换信息。SMON(System Monitor)进程负责后台进程的...
SQL> CREATE INDEX "SYS"."SMON_SCN_TO_TIME_AUX_IDX" ON CLUSTER "SYS"."SMON_SCN_TO_TI PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE (INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS...
- **表映射**:Oracle在SYS模式下维护了一个名为`SMON_SCN_TIME`的表,用于存储系统时间标记与SCN之间的对应关系。 - **最大记录数**:该表最多可以存储1440条记录,每5分钟同步一次数据,因此最多可以支持最近5天的...
SMON还做了许多其他事情,例如,在DBA_TAB_MONITORING视图中的监控统计数据的洗刷,在SMON_SCN_TIME表中的时间戳定位信息的洗刷,等等。SMON在期间能消耗很多CPU,这应该被认为是正常的。SMON周期性的苏醒(或被其他...
锁定SMON的并行恢复(FAST_START_PARALLEL_ROLLBACK)无效,因为表SYS.smon_scn_time被锁住。此表用于记录SCN(System Change Number)到系统时间的映射,与UNDO表空间增长的时间一致。使用systemstate dump工具观察...
8. **后台进程与资源管理**:了解SMON、PMON、DBWR、LGWR等关键后台进程的工作方式,以及如何通过资源调度器(ResourceManager)限制用户和进程的资源使用,防止资源争抢。 9. **数据库连接管理**:优化连接池(如...
Oracle数据库通过多个后台进程协同工作来实现其功能,例如系统监控进程(SMON)、进程监控进程(PMON)等。 ### 应用程序开发 Oracle支持多种编程语言进行应用程序开发,包括SQL、PL/SQL、Java等。这些语言可以...
- `ora_smon_CKDB`:监控实例状态并执行实例恢复。 - `ora_pmon_CKDB`:监控客户端连接进程。 - `ora_arc0_CKDB`:负责归档操作。 - `ora_ckpt_CKDB`:执行检查点操作。 - `ora_reco_CKDB`:负责恢复操作。 ##### ...
- 当数据文件上的 SCN 变化时,控制文件上的 SCN 也会更新,以便于数据恢复。 - **Redo Log**: - 非直接写情况下,所有事务中的写操作会产生 Redo Log。 - Redo Log 不直接写入 Redo Log 文件,而是先写入 Log ...
- **控制文件**:记录数据库的物理结构,包括数据文件名、SCN(系统更改号)等。 - **重做日志文件**:用于记录事务执行过程中的变更,支持故障恢复。 - **其他关键文件** - **参数文件**:定义了实例运行时所需...
- **SMON (System Monitor):** 负责清理失败的进程和实例恢复。 - **DBWR (Database Writer):** 负责将缓冲区缓存中的脏块写入数据文件。 - **LGWR (Log Writer):** 负责将重做日志缓冲区中的记录写入在线重做日志...
《Oracle for AIX 维护手册》是一份详尽阐述在AIX操作系统上维护Oracle 9i数据库系统的专业文档。该手册旨在为xxx系统国家处理中心和城市处理中心的运维人员提供具体的指导,帮助他们在Oracle数据库系统投入生产后...
63 oracle@xz15saledb (SMON) xz15saledb ACTIVE 73 oracle@xz15saledb (RECO) xz15saledb ACTIVE 81 oracle@xz15saledb (CJQ0) xz15saledb ACTIVE 93 oracle@xz15saledb (ARC0) xz15saledb A ``` 通过上述...
然而,使用`SCN_TO_TIMESTAMP`可能会遇到`ORA-08181`错误,因为SCN与时间戳的转换依赖于`SMON_SCN_TIME`基表中的采样记录。由于SMON进程会定期清理旧的SCN记录,对于较早的SCN,转换可能会失败。 第二种方法是利用`...
其次,`ora_smon_ora10g`、`ora_pmon_ora10g`等进程是Oracle数据库的后台进程,它们负责数据库的管理和维护。例如,`ora_smon_ora10g`(System Monitor)负责实例的启动和恢复,`ora_pmon_ora10g`(Process Monitor...
如果在数据库运行过程中出现故障,那么当启动Oracle Server时,后台进程SMON会自动执行例程恢复。执行例程恢复时,Oracle会重做所有未应用的记录。然后打开数据库,回退未提交事务。 倒叙查询 倒叙查询用于取得某...
* 检查Oracle服务进程:检查Oracle服务进程,确保至少包含以下进程:ora_dbw0_ORCL、ora_lgwr_ORCL、ora_smon_ORCL、ora_pmon_ORCL、ora_arc0_ORCL、ora_ckpt_ORCL、ora_reco_ORCL。 * 检查Oracle监听状态:检查...