[20210803]删除user$的恢复准备.txt
--//昨天看了链接https://www.xifenfei.com/2021/07/win-ora-600-kokasgi1.html,据说根据某厂商给出来的建议对对oracle的user$
--//的系统默认用户update等操作,很奇葩的事情,不知道是否类似等保的要求,还是自己内部打着等保的要求,提出这种建议。
--//我曾经在如下链接做了一些测试。
[20190531]ORA-600 kokasgi1故障模拟与恢复(后续).txt =>http://blog.itpub.net/267265/viewspace-2646419/
[20190531]ORA-600 kokasgi1故障模拟与恢复.txt =>http://blog.itpub.net/267265/viewspace-2646340/
--//http://blog.itpub.net/16807927/viewspace-2776888/ 提到了删除,我测试看看,先测试前看看sys.user$.
1.环境:
SCOTT@book> @ ver1
PORT_STRING VERSION BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx 11.2.0.4.0 Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
SYS@book> select owner,object_name,object_id,data_object_id from dba_objects where object_name='USER$';
OWNER OBJECT_NAME OBJECT_ID DATA_OBJECT_ID
------ -------------------- ---------- --------------
SYS USER$ 22 10
SELECT ROWNUM - 1 rn
,OWNER
,OBJECT_NAME
,SUBOBJECT_NAME
,OBJECT_ID
,DATA_OBJECT_ID
,OBJECT_TYPE
,CREATED
,LAST_DDL_TIME
,TIMESTAMP
,STATUS
FROM ( SELECT *
FROM dba_objects
WHERE owner = 'SYS' AND data_object_id = 10
ORDER BY object_id) a;
RN OWNER OBJECT_NAME SUBOBJECT_ OBJECT_ID DATA_OBJECT_ID OBJECT_TYPE CREATED LAST_DDL_TIME TIMESTAMP STATUS
--- ------ ----------- ---------- ---------- -------------- ------------------- ------------------- ------------------- ------------------- -------
0 SYS C_USER# 10 10 CLUSTER 2013-08-24 11:37:35 2013-08-24 11:37:35 2013-08-24:11:37:35 VALID
1 SYS USER$ 22 10 TABLE 2013-08-24 11:37:35 2013-08-24 11:59:25 2013-08-24:11:37:35 VALID
2 SYS TSQ$ 67 10 TABLE 2013-08-24 11:37:35 2013-08-24 11:37:35 2013-08-24:11:37:35 VALID
--//可以发现sys.user$仅仅是cluster table C_USER# 中的1个.而是是第1个表(从0算起,0是cluster table).
SYS@book> select * from dba_extents where owner='SYS' and segment_name='C_USER#'
2 @ prxx
==============================
OWNER : SYS
SEGMENT_NAME : C_USER#
PARTITION_NAME :
SEGMENT_TYPE : CLUSTER
TABLESPACE_NAME : SYSTEM
EXTENT_ID : 0
FILE_ID : 1
BLOCK_ID : 208
BYTES : 65536
BLOCKS : 8
RELATIVE_FNO : 1
PL/SQL procedure successfully completed.
--//仅仅占用1个段,恢复相对容易.
--//我以前的删除tab$恢复脚本就修改dba 1,208就ok了.有时间尝试看看.
$ echo "p /d dba 1,208" ktetb | rlbbed | egrep 'ktetbdba|ktetbnbk' |awk -v OFS== '{print $2,$4}' |paste -d ";" - -
ktetbdba=4194513;ktetbnbk=7
$ echo p /d dba 1,208 ktech.hwmark_ktech.blkno_ktehw | rlbbed | grep blkno_ktehw | awk '{print $5}' | tr -d " "
5
--//高水位标识在5,这样扫描的块更少.先看看我原来写的脚本,时间太久了,自己都差点读不懂程序代码.
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/267265/viewspace-2784843/ ,如需转载,请注明出处,否则将追究法律责任。