首页 > 其他分享 >[20231013]rename IDL_UB1$的恢复.txt

[20231013]rename IDL_UB1$的恢复.txt

时间:2023-10-23 21:57:49浏览次数:41  
标签:20231013 rename UB1 SYS IDL book ---------- NAME

[20231013]rename IDL_UB1$的恢复.txt

--//看了https://www.anbob.com/archives/7545.html链接,对方rename操作,导致无法建立表操作.
--//idl_ub1$表是用来存储PL/SQL的代码单元的,包括DIANA等,IDL在这里代表Interface Definition Language.
--//这个对象的含义可以从Ixora找到一点提示:

It is an intermediate language in which the structure of database tables and the logic of PL/SQL program units can
be consistently represented as attributed trees. Oracle uses the DIANA IDL, which comes from compilers for the Ada
programming language. DIANA stands for Descriptive Intermediate Attributed Notation for Ada. Anyway, this is one of
four tables in the data dictionary used to store the DIANA for PL/SQL program units, and the database objects that
they reference.
--//翻译:
它是一种中间语言,其中数据库表的结构和PL/SQL程序单元的逻辑可以一致地表示为属性树。Oracle使用DIANA IDL,它来自于Ada编程语
言的编译器。戴安娜代表Ada的描述性中间属性符号。无论如何,这是数据字典中用于存储PL/SQL程序单元的DIANA以及它们引用的数据库
对象的四个表之一。

--//对方rename后没有重启,通过修改数据字典obj$完成恢复,我先重复原始链接的测试。

1.环境:
SYS@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

SELECT *
  FROM (SELECT   BYTES, segment_name, segment_type, owner
            FROM dba_segments
           WHERE tablespace_name = 'SYSTEM'
        ORDER BY BYTES DESC)
 WHERE ROWNUM < 10
/

     BYTES SEGMENT_NAME    SEGMENT_TYPE OWNER
---------- --------------- ------------ -----
 285212672 IDL_UB1$        TABLE        SYS
  75497472 SOURCE$         TABLE        SYS
  32505856 IDL_UB2$        TABLE        SYS
  25165824 C_TOID_VERSION# CLUSTER      SYS
  13631488 I_SOURCE1       INDEX        SYS
  12582912 C_OBJ#          CLUSTER      SYS
  12582912 ARGUMENT$       TABLE        SYS
  12582912 JAVA$MC$        TABLE        SYS
  11534336 IDL_CHAR$       TABLE        SYS
9 rows selected.
--//285212672/1024/1024 = 272M.

2.事前准备:
SYS@book> select rowid,owner#,name from obj$ where name='IDL_UB1$';
ROWID                  OWNER# NAME
------------------ ---------- ----------------------------------------
AAAAASAABAAAADzAAX          0 IDL_UB1$

SYS@book> @ rowid AAAAASAABAAAADzAAX
    OBJECT       FILE      BLOCK        ROW ROWID_DBA            DBA                  TEXT
---------- ---------- ---------- ---------- -------------------- -------------------- ----------------------------------------
        18          1        243         23   0x4000F3           1,243                alter system dump datafile 1 block 243 ;

$ strings -t d /mnt/ramdisk/book/system01.dbf | grep 'IDL_UB1\$'| awk '{print int($1/8192), " ",$1-int($1/8192)*8192, " " ,$2}'
243   6325   IDL_UB1$
351   5692   IDL_UB1$
375   5692   IDL_UB1$
17086   4802   IDL_UB1$
34025   5594   SELECT
34029   5278   COMMIT"SELECT
36154   5278   COMMIT"SELECT
95511   4482   IDL_UB1$l
--//注:显示的第一个字段对应块号,第一个字段对应相应数据块的偏移.        
--//主要关注数据块243,351,375,17086,95511.

SYS@book> @ find_objz 1 243 '' 1
   FILE_ID   BLOCK_ID     BLOCKS SEGMENT_TYPE         OWNER  SEGMENT_NAME              PARTITION_NAME   EXTENT_ID      BYTES TABLESPACE_NAME                RELATIVE_FNO     SEGTSN     SEGRFN     SEGBID
---------- ---------- ---------- -------------------- ------ ------------------------- --------------- ---------- ---------- ------------------------------ ------------ ---------- ---------- ----------
         1        240          8 TABLE                SYS    OBJ$                                               0      65536 SYSTEM                                    1          0          1        240

SYS@book> @ find_objz 1 351 '' 1
   FILE_ID   BLOCK_ID     BLOCKS SEGMENT_TYPE         OWNER  SEGMENT_NAME              PARTITION_NAME   EXTENT_ID      BYTES TABLESPACE_NAME                RELATIVE_FNO     SEGTSN     SEGRFN     SEGBID
---------- ---------- ---------- -------------------- ------ ------------------------- --------------- ---------- ---------- ------------------------------ ------------ ---------- ---------- ----------
         1        344          8 INDEX                SYS    I_OBJ2                                             0      65536 SYSTEM                                    1          0          1        344

SYS@book> @ find_objz 1 375 '' 1
   FILE_ID   BLOCK_ID     BLOCKS SEGMENT_TYPE         OWNER  SEGMENT_NAME              PARTITION_NAME   EXTENT_ID      BYTES TABLESPACE_NAME                RELATIVE_FNO     SEGTSN     SEGRFN     SEGBID
---------- ---------- ---------- -------------------- ------ ------------------------- --------------- ---------- ---------- ------------------------------ ------------ ---------- ---------- ----------
         1        368          8 INDEX                SYS    I_OBJ5                                             0      65536 SYSTEM                                    1          0          1        368

SYS@book> @ find_objz 1 17086 '' 1
   FILE_ID   BLOCK_ID     BLOCKS SEGMENT_TYPE         OWNER  SEGMENT_NAME              PARTITION_NAME   EXTENT_ID      BYTES TABLESPACE_NAME                RELATIVE_FNO     SEGTSN     SEGRFN     SEGBID
---------- ---------- ---------- -------------------- ------ ------------------------- --------------- ---------- ---------- ------------------------------ ------------ ---------- ---------- ----------
         1      17024        128 CLUSTER              SYS    C_TOID_VERSION#                                   18    1048576 SYSTEM                                    1          0          1       3464

BBED> set dba 1,17086
        DBA             0x004042be (4211390 1,17086)

BBED> map
 File: /mnt/ramdisk/book/system01.dbf (1)
 Block: 17086                                 Dba:0x004042be
------------------------------------------------------------
 KTB Data Block (Table/Cluster)
 struct kcbh, 20 bytes                      @0
 struct ktbbh, 72 bytes                     @20
 struct kdbh, 14 bytes                      @92
 struct kdbt[3], 12 bytes                   @106
 sb2 kdbr[3]                                @118
 ub1 freespace[7842]                        @124
 ub1 rowdata[222]                           @7966
 ub4 tailchk                                @8188
--//offset =4802 在freespace 区间,不用修改.

SYS@book> @ ind2 obj$
Display indexes where table or index name matches obj$...
TABLE_OWNER TABLE_NAME INDEX_NAME POS# COLUMN_NAME                    DSC
----------- ---------- ---------- ---- ------------------------------ ----
SYS         OBJ$       I_OBJ1        1 OBJ#
                                     2 OWNER#
                                     3 TYPE#
                       I_OBJ2        1 OWNER#
                                     2 NAME
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                                                                                      
                                     3 NAMESPACE
                                     4 REMOTEOWNER
                                     5 LINKNAME
                                     6 SUBNAME
                                     7 TYPE#
                                     8 SPARE3
                                     9 OBJ#
                       I_OBJ3        1 OID$
                       I_OBJ4        1 DATAOBJ#
                                     2 TYPE#
                                     3 OWNER#
                       I_OBJ5        1 SPARE3
                                     2 NAME
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                                     3 NAMESPACE
                                     4 TYPE#
                                     5 OWNER#
                                     6 REMOTEOWNER
                                     7 LINKNAME
                                     8 SUBNAME
                                     9 OBJ#

INDEX_OWNER TABLE_NAME INDEX_NAME IDXTYPE    UNIQ STATUS   PART TEMP  H     LFBLKS           NDK   NUM_ROWS       CLUF LAST_ANALYZED       DEGREE VISIBILIT
----------- ---------- ---------- ---------- ---- -------- ---- ---- -- ---------- ------------- ---------- ---------- ------------------- ------ ---------
SYS         OBJ$       I_OBJ1     NORMAL     YES  VALID    NO   N     2        250         87018      87018       1158 2023-08-30 22:00:13 1      VISIBLE
            OBJ$       I_OBJ2     NORMAL     YES  VALID    NO   N     3        876         87018      87018      64485 2023-08-30 22:00:13 1      VISIBLE
            OBJ$       I_OBJ3     NORMAL     NO   VALID    NO   N     2         16          3421       3421        249 2023-08-30 22:00:13 1      VISIBLE
            OBJ$       I_OBJ4     NORMAL     NO   VALID    NO   N     2        383          9358      87018       3237 2023-08-30 22:00:13 1      VISIBLE
            OBJ$       I_OBJ5     NORMAL     YES  VALID    NO   N     3        876         87018      87018      64473 2023-08-30 22:00:13 1      VISIBLE
--//I_OBJ2,I_OBJ5都是obj#的索引,里面都包含name字段,换一句话讲如果使用bbed恢复.这3块都需要恢复.

3.开始测试:

SYS@book> rename IDL_UB1$ to IDL_UB1X;
Table renamed.

SYS@book> alter system checkpoint;
System altered.

SYS@book> @ ddl scott.dept
BEGIN dbms_metadata.set_transform_param(dbms_metadata.session_transform, 'PRETTY',true); END;

*
ERROR at line 1:
ORA-00604: error occurred at recursive SQL level 1
ORA-00942: table or view does not exist
BEGIN dbms_metadata.set_transform_param(dbms_metadata.session_transform, 'SQLTERMINATOR', true); END;

*
ERROR at line 1:
ORA-00604: error occurred at recursive SQL level 1
ORA-00942: table or view does not exist


        all_objects
        *
ERROR at line 4:
ORA-00604: error occurred at recursive SQL level 1
ORA-00942: table or view does not exist

--//尝试改回原来的名字,操作如下:
SYS@book> rename IDL_UB1X to IDL_UB1$;
rename IDL_UB1X to IDL_UB1$
*
ERROR at line 1:
ORA-00604: error occurred at recursive SQL level 1
ORA-00942: table or view does not exist

--//现在已经破坏,许多命令无法执行,主要设计一些包的执行命令都有问题,通过修改数据字典执行如下:

SYS@book> update obj$ set name='IDL_UB1$'  where name='IDL_UB1X';
1 row updated.

SYS@book> commit ;
Commit complete.

--//再次重启数据库,问题消失,先自己尝试这样可以修复可行的。
--//下一个版本尝试使用bbed恢复,千万不要在生产系统做这样的测试!!

标签:20231013,rename,UB1,SYS,IDL,book,----------,NAME
From: https://www.cnblogs.com/lfree/p/17783560.html

相关文章

  • [20231019]rename IDL_UB1$的恢复测试前准备.txt
    [20231019]renameIDL_UB1$的恢复测试前准备.txt--//前几天看了https://www.anbob.com/archives/7545.html链接,对方renameIDL_UB1$表操作,导致无法建立表操作使用包的语句都有问题.--//测试时遇到许多其他事情打断了恢复工作,最后我仅仅简单尝试了修改数据字典obj$的恢复方式。--......
  • [20231020]rename IDL_UB1$后使用bbed的恢复.txt
    [20231020]renameIDL_UB1$后使用bbed的恢复.txt--//继续前面的测试:--//参考链接:[20231019]renameIDL_UB1$的恢复测试前准备.txt1.环境:SYS@book>@ver1PORT_STRING        VERSION   BANNER-------------------------------------------------------------------......
  • 20231013
    20231013NOIP#19(33daiOJ)总结时间安排7:25~8:00看题,\(A\)一点不会,\(B\)会\(15\)分,\(C,D\)各会一档。7:50~8:00写\(D\)的第一档。8:00~8:10写\(B\)的前两档。8:10~8:40写\(C\)的第一档。8:40~9:00想到写了\(B\)的\(n^2\)。9:00~10:25会了\(A\)题,但是......
  • linux rename的实现
    linuxrename可以批量重命名文件。renameexpressionreplacementfiles可以用bash实现:遍历文件file,用sed等替换file中的字符串,mv$fileecho$file|sed-i's/expression/replacement/'也可以用bash内置的parameterexpansion替换。代码如下:#!/bin/bash#Prompttheus......
  • rename
    rename用字符串替换的方式批量改变文件名补充说明rename命令存在两个版本用法上有所区别C语言版本,支持通配符[常用通配符说明]?表示一个任意字符*表示一个或一串任意字符Perl版本,支持正则表达式[常用正则表达式符号说明]^匹配输入的开始位置$匹配......
  • rsync 遇到中文乱码文件名无法同步,并报错:rsync: rename "/test1/abc/abc/opt/abc/abc/
    rsync遇到中文文件名乱码报错报错如下:rsync:rename"/test1/abc/def/efg/abc-V2/img_abc/.δ\#261\#352\#314\#342-3.jpg.wdPu5C"->"event/abc-V2/img_abc/δ\#261\#352\#314\#342-3.jpg":Input/outputerror(5)rsync:rename"/test1/abc/def/e......
  • 解决npm i 报错显示 code EPERM syscall rename等问题
    问题描述:npmERR!codeEPERMnpmERR!syscallrenamenpmERR!pathD:\ProgramFiles\nodejs\npm_global\node_modules\cnpm\node_modules\npm\node_modules\.node-gyp.DELETE\node_modules\@npmclinpmERR!destD:\ProgramFiles\nodejs\npm_global\node_modul......
  • ps批量处理图片分辨率 rename批量修改名称
    制作linux项目,需要批量处理部分图片分辨率录制动作注意此处存储,经过测试直接存储会导致失败,此处选择的是另存方式 文件->存储为(A)...   此处另存选择的是png格式  执行动作  文件修改完毕,有时候需要统一名称,可以自己写bat脚本,但是学习成本有点高,此......
  • node使用fs.rename重命名文件的时候,如果有该名称的文件会被替换的问题
    再项目中使用fs.rename给快捷方式重命名的时候,因为有两个版本,在开发人员电脑上都安装两个版本的时候,发现每次都只有快捷方式,然后在重新查看代码的时候。发现代码中使用到了fs.rename去重命名文件。于是做了以下处理letnewLnkPath=path.join(桌面地址,`{appName}.lnk`)if(exi......
  • 目录操作函数(mkdir rmdir rename chdir getcwd opendir closedir readdir dup dup2)
      /*创建文件#include<sys/stat.h>#include<sys/types.h>intmkdir(constchar*pathname,mode_tmode);参数:mode:权限移除文件#include<unistd.h>intrmdir(constc......