ITPub博客

首页 > 数据库 > Oracle > [20241104]21c下bbed编译.txt

[20241104]21c下bbed编译.txt

原创 Oracle 作者:lfree 时间:2024-11-06 20:11:04 0 删除 编辑

[20241104]21c下bbed编译.txt

--//前一段时间在21c下使用bbed遇到的问题,我想偷懒直接拷贝11g下自己做好的安装文件,参考链接:[20240811]bbed使用问题.txt
$ cp  libnnz11.so /u01/app/oracle/product/21.0.0/dbhome_1/lib/

$ locate libnnz11.so
/home/oracle/bbed/libnnz11.so
/u01/app/oracle/product/21.0.0/dbhome_1/lib/libnnz11.so
--//这样可以正常运行,但是使用x命令存在问题,还是选择重新编译bbed,记录在21c下bbed的编译与安装过程。

1.环境:
SCOTT@book01p> @ver2
==============================
PORT_STRING                   : x86_64/Linux 2.4.xx
VERSION                       : 21.0.0.0.0
BANNER                        : Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
BANNER_FULL                   : Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
Version 21.3.0.0.0
BANNER_LEGACY                 : Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
CON_ID                        : 0
PL/SQL procedure successfully completed.

2.测试:
SCOTT@book01p> select rowid,dept.* from dept where deptno= 10;
ROWID                  DEPTNO DNAME                          LOC
------------------ ---------- ------------------------------ -------------
AAASmfAAMAAAACDAAA         10 ACCOUNTING                     NEW YORK

SCOTT@book01p> @ rowid AAASmfAAMAAAACDAAA
DATA_OBJECT_ID       FILE      BLOCK        ROW ROWID_DBA            DBA                  TEXT
-------------- ---------- ---------- ---------- -------------------- -------------------- ----------------------------------------
         76191         12        131          0  0x3000083           12,131               alter system dump datafile 12 block 131

BBED> set dba 12,131
        DBA             0x03000083 (50331779 12,131)

BBED> x /rncc *kdbr[1]
rowdata[44]                                 @8140
-----------
bbed: symbol lookup error: bbed: undefined symbol: kdrrea2
--//安装版本出现以上错误,不知道为什么报错。

$ strace  -Ttt -y -f -p 4084
Process 4084 attached
15:59:17.333584 read(0</dev/pts/8>, "x /rncc *kdbr[1]\n", 1024) = 17 <6.923919>
15:59:24.257847 write(7</home/oracle/bbed/log.bbd>, "BBED> x /rncc *kdbr[1]\n", 23) = 23 <0.000028>
15:59:24.257972 mmap(NULL, 143360, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f7f32373000 <0.000044>
15:59:24.258192 write(1</dev/pts/8>, "rowdata[44]                     "..., 54) = 54 <0.000031>
15:59:24.258276 write(1</dev/pts/8>, "-----------\n", 12) = 12 <0.000011>
15:59:24.258324 write(7</home/oracle/bbed/log.bbd>, "rowdata[44]                     "..., 54) = 54 <0.000013>
15:59:24.258365 write(7</home/oracle/bbed/log.bbd>, "-----------\n", 12) = 12 <0.000010>
15:59:24.258418 writev(2</dev/pts/8>, [{"bbed", 4}, {": ", 2}, {"symbol lookup error", 19}, {": ", 2}, {"bbed", 4}, {": ", 2}, {"undefined symbol: kdrrea2", 25}, {"", 0}, {"", 0}, {"\n", 1}], 10) = 59 <0.000028>
15:59:24.258494 exit_group(127)         = ?
15:59:24.259153 +++ exited with 127 +++
--//还是选择重新编译bbed。

4.编译bbed:

$ cd $ORACLE_HOME/rdbms/lib
$ make -f ins_rdbms.mk $ORACLE_HOME/rdbms/lib/bbed

Linking BBED utility (bbed)
rm -f /u01/app/oracle/product/21.0.0/dbhome_1/rdbms/lib/bbed
/u01/app/oracle/product/21.0.0/dbhome_1/bin/orald -o /u01/app/oracle/product/21.0.0/dbhome_1/rdbms/lib/bbed -m64 -z noexecstack -Wl,--disable-new-dtags   -L/u01/app/oracle/product/21.0.0/dbhome_1/rdbms/lib/ -L/u01/app/oracle/product/21.0.0/dbhome_1/lib/ -L/u01/app/oracle/product/21.0.0/dbhome_1/lib/stubs/  /u01/app/oracle/product/21.0.0/dbhome_1/lib/s0main.o /u01/app/oracle/product/21.0.0/dbhome_1/rdbms/lib/ssbbded.o /u01/app/oracle/product/21.0.0/dbhome_1/rdbms/lib/sbbdpt.o `cat /u01/app/oracle/product/21.0.0/dbhome_1/lib/ldflags`    -lncrypt -lnsgr -ln -lnl -lngsmshd -ldbtools -lclntsh -lclntshcore  `cat /u01/app/oracle/product/21.0.0/dbhome_1/lib/ldflags`    -lncrypt -lnsgr -ln -lnl -lngsmshd -lnro `cat /u01/app/oracle/product/21.0.0/dbhome_1/lib/ldflags`    -lncrypt -lnsgr -ln -lnl -lngsmshd -lnnz21 -lzt -lztkg -lztkg -lclient -lnnetd  -lcommon -lgeneric -lmm -lsnls -lnls  -lcore -lsnls -lnls -lcore -lsnls -lnls -lxml -lcore -lunls -lsnls -lnls -lcore -lnls `cat /u01/app/oracle/product/21.0.0/dbhome_1/lib/ldflags`    -lncrypt -lnsgr -ln -lnl -lngsmshd -lnro `cat /u01/app/oracle/product/21.0.0/dbhome_1/lib/ldflags`    -lncrypt -lnsgr -ln -lnl -lngsmshd -lclient -lnnetd  -lcommon -lgeneric   -lsnls -lnls  -lcore -lsnls -lnls -lcore -lsnls -lnls -lxml -lcore -lunls -lsnls -lnls -lcore -lnls -lclient -lnnetd  -lcommon -lgeneric -lsnls -lnls  -lcore -lsnls -lnls -lcore -lsnls -lnls -lxml -lcore -lunls -lsnls -lnls -lcore -lnls   `cat /u01/app/oracle/product/21.0.0/dbhome_1/lib/sysliblist` -Wl,-rpath,/u01/app/oracle/product/21.0.0/dbhome_1/lib -lm    `cat /u01/app/oracle/product/21.0.0/dbhome_1/lib/sysliblist` -ldl -lm   -L/u01/app/oracle/product/21.0.0/dbhome_1/lib
/usr/bin/ld: cannot find /u01/app/oracle/product/21.0.0/dbhome_1/rdbms/lib/ssbbded.o: No such file or directory
/usr/bin/ld: cannot find /u01/app/oracle/product/21.0.0/dbhome_1/rdbms/lib/sbbdpt.o: No such file or directory
make: *** [/u01/app/oracle/product/21.0.0/dbhome_1/rdbms/lib/bbed] Error 1
--//缺少sbbdpt.o,ssbbded.o两个文件。从旧机器上拷贝上来,10g的机器现在很少了,看来要单独保留这2个文件包括bbedus.ms*。

# mv /mnt/windows/*.o /u01/app/oracle/product/21.0.0/dbhome_1/rdbms/lib
*/
# cd /u01/app/oracle/product/21.0.0/dbhome_1/rdbms/lib
# chown oracle:oinstall sbbdpt.o
# chown oracle:oinstall ssbbded.o
# chmod 644 /u01/app/oracle/product/21.0.0/dbhome_1/rdbms/lib/ssbbded.o
# chmod 644 /u01/app/oracle/product/21.0.0/dbhome_1/rdbms/lib/sbbdpt.o

--//还需要拷贝10g下的bbedus.ms*文件到/u01/app/oracle/product/21.0.0/dbhome_1/rdbms/mesg/目录,过程略。
$ ls -l bbedus.ms*
-rw-r--r--. 1 oracle oinstall  8704 2021-03-11 09:24:22 bbedus.msb
-rwxr-xr-x. 1 oracle oinstall 10299 2021-03-11 09:24:22 bbedus.msg

--//开始编译bbed。
$ make -f ins_rdbms.mk $ORACLE_HOME/rdbms/lib/bbed

Linking BBED utility (bbed)
rm -f /u01/app/oracle/product/21.0.0/dbhome_1/rdbms/lib/bbed
/u01/app/oracle/product/21.0.0/dbhome_1/bin/orald -o /u01/app/oracle/product/21.0.0/dbhome_1/rdbms/lib/bbed -m64 -z noexecstack -Wl,--disable-new-dtags   -L/u01/app/oracle/product/21.0.0/dbhome_1/rdbms/lib/ -L/u01/app/oracle/product/21.0.0/dbhome_1/lib/ -L/u01/app/oracle/product/21.0.0/dbhome_1/lib/stubs/  /u01/app/oracle/product/21.0.0/dbhome_1/lib/s0main.o /u01/app/oracle/product/21.0.0/dbhome_1/rdbms/lib/ssbbded.o /u01/app/oracle/product/21.0.0/dbhome_1/rdbms/lib/sbbdpt.o `cat /u01/app/oracle/product/21.0.0/dbhome_1/lib/ldflags`    -lncrypt -lnsgr -ln -lnl -lngsmshd -ldbtools -lclntsh -lclntshcore  `cat /u01/app/oracle/product/21.0.0/dbhome_1/lib/ldflags`    -lncrypt -lnsgr -ln -lnl -lngsmshd -lnro `cat /u01/app/oracle/product/21.0.0/dbhome_1/lib/ldflags`    -lncrypt -lnsgr -ln -lnl -lngsmshd -lnnz21 -lzt -lztkg -lztkg -lclient -lnnetd  -lcommon -lgeneric -lmm -lsnls -lnls  -lcore -lsnls -lnls -lcore -lsnls -lnls -lxml -lcore -lunls -lsnls -lnls -lcore -lnls `cat /u01/app/oracle/product/21.0.0/dbhome_1/lib/ldflags`    -lncrypt -lnsgr -ln -lnl -lngsmshd -lnro `cat /u01/app/oracle/product/21.0.0/dbhome_1/lib/ldflags`    -lncrypt -lnsgr -ln -lnl -lngsmshd -lclient -lnnetd  -lcommon -lgeneric   -lsnls -lnls  -lcore -lsnls -lnls -lcore -lsnls -lnls -lxml -lcore -lunls -lsnls -lnls -lcore -lnls -lclient -lnnetd  -lcommon -lgeneric -lsnls -lnls  -lcore -lsnls -lnls -lcore -lsnls -lnls -lxml -lcore -lunls -lsnls -lnls -lcore -lnls   `cat /u01/app/oracle/product/21.0.0/dbhome_1/lib/sysliblist` -Wl,-rpath,/u01/app/oracle/product/21.0.0/dbhome_1/lib -lm    `cat /u01/app/oracle/product/21.0.0/dbhome_1/lib/sysliblist` -ldl -lm   -L/u01/app/oracle/product/21.0.0/dbhome_1/lib
--//OK!

$ mv bbed /u01/app/oracle/product/21.0.0/dbhome_1/bin/
‘bbed’ -> ‘/u01/app/oracle/product/21.0.0/dbhome_1/bin/bbed’

5.测试:
export RLWRAP=$(which rlwrap)
export BBED=$(which bbed)

$ type rlbbed
rlbbed is a function
rlbbed ()
{
    cd /home/oracle/bbed;
    $RLWRAP -s 9999 -c -r -i -f /usr/local/share/rlwrap/bbed $BBED parfile=bbed.par cmdfile=cmd.par
}
--//我喜欢定义函数,也可以定义别名:
alias rlbbed='cd /home/oracle/bbed;$RLWRAP -s 9999 -c -r -i $BBED parfile=bbed.par cmdfile=cmd.par'

$ cat bbed.par
blocksize=8192
listfile=filelist.txt
mode=edit
PASSWORD=blockedit
SPOOL=Y

$ cat cmd.par
set count 64
set width 160

SYS@book> select to_char(file#,'9999')||chr(32)||name c80 from v$dbfile order by file#;
C80
--------------------------------------------------------------------------------
    1 /u01/oradata/BOOK/system01.dbf
    3 /u01/oradata/BOOK/sysaux01.dbf
    4 /u01/oradata/BOOK/undotbs01.dbf
    5 /u01/oradata/BOOK/pdbseed/system01.dbf
    6 /u01/oradata/BOOK/pdbseed/sysaux01.dbf
    7 /u01/oradata/BOOK/users01.dbf
    8 /u01/oradata/BOOK/pdbseed/undotbs01.dbf
    9 /u01/oradata/BOOK/book01p/system01.dbf
   10 /u01/oradata/BOOK/book01p/sysaux01.dbf
   11 /u01/oradata/BOOK/book01p/undotbs01.dbf
   12 /u01/oradata/BOOK/book01p/users01.dbf
11 rows selected.
--//拷贝以上内容到filelist.txt。

$ rlbbed
BBED: Release 2.0.0.0.0 - Limited Production on Mon Nov 4 16:22:35 2024
Copyright (c) 1982, 2021, Oracle and/or its affiliates.  All rights reserved.
************* !!! For Oracle Internal Use only !!! ***************

BBED> set count 64
        COUNT           64

BBED> set width 160
        WIDTH           160

BBED> set dba 12,131
        DBA             0x03000083 (50331779 12,131)

BBED> x /rncc *kdbr[0]
rowdata[66]                                 @8162
-----------
flag@8162: 0x2c (KDRHFL, KDRHFF, KDRHFH)
lock@8163: 0x01
cols@8164:    3

col    0[2] @8165: 10
col   1[10] @8168: ACCOUNTING
col    2[8] @8179: NEW YORK

5.收尾:
$ diff <(ldd $BBED| sort ) <(ldd /home/oracle/bbed.OLD/bbed|sort)
1,12c1,14
<       /lib64/ld-linux-x86-64.so.2 (0x00007fe79a2ca000)
<       libaio.so.1 => /lib64/libaio.so.1 (0x00007fe79466a000)
<       libclntshcore.so.21.1 => /u01/app/oracle/product/21.0.0/dbhome_1/lib/libclntshcore.so.21.1 (0x00007fe79596e000)
<       libclntsh.so.21.1 => /u01/app/oracle/product/21.0.0/dbhome_1/lib/libclntsh.so.21.1 (0x00007fe795f1f000)
<       libc.so.6 => /lib64/libc.so.6 (0x00007fe79408f000)
<       libdl.so.2 => /lib64/libdl.so.2 (0x00007fe794f94000)
<       libm.so.6 => /lib64/libm.so.6 (0x00007fe794c91000)
<       libnnz21.so => /u01/app/oracle/product/21.0.0/dbhome_1/lib/libnnz21.so (0x00007fe7951c0000)
<       libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fe794a75000)
<       libresolv.so.2 => /lib64/libresolv.so.2 (0x00007fe794450000)
<       librt.so.1 => /lib64/librt.so.1 (0x00007fe79486d000)
<       linux-vdso.so.1 =>  (0x00007fffaf1d7000)
---
>       /lib64/ld-linux-x86-64.so.2 (0x00007f728ac07000)
>       libaio.so.1 => /lib64/libaio.so.1 (0x00007f7284bb0000)
>       libclntshcore.so.21.1 => /u01/app/oracle/product/21.0.0/dbhome_1/lib/libclntshcore.so.21.1 (0x00007f72843e5000)
>       libclntsh.so.11.1 => /u01/app/oracle/product/21.0.0/dbhome_1/lib/libclntsh.so.11.1 (0x00007f728685c000)
>       libc.so.6 => /lib64/libc.so.6 (0x00007f7285769000)
>       libdl.so.2 => /lib64/libdl.so.2 (0x00007f7286262000)
>       libm.so.6 => /lib64/libm.so.6 (0x00007f7285f60000)
>       libnnz11.so => /u01/app/oracle/product/21.0.0/dbhome_1/lib/libnnz11.so (0x00007f728648e000)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>       libnnz21.so => /u01/app/oracle/product/21.0.0/dbhome_1/lib/libnnz21.so (0x00007f7284fba000)
>       libnsl.so.1 => /lib64/libnsl.so.1 (0x00007f7285b2a000)
~~~~~~~~~~~~~~~~~~~~~~~
>       libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f7285d43000)
>       libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f7284995000)
>       librt.so.1 => /lib64/librt.so.1 (0x00007f7284db2000)
>       linux-vdso.so.1 =>  (0x00007ffdae5fe000)
--//能力有限,看不出怎么问题,但是现在旧版本的bbed也可以正常使用,不知道为什么。

--//删除前面拷贝的库文件。
--//$ rm /u01/app/oracle/product/21.0.0/dbhome_1/lib/libnnz11.so


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/267265/viewspace-3045433/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
熟悉oracle相关技术,擅长sql优化,rman备份与恢复,熟悉linux shell编程。

注册时间:2008-01-03

  • 博文量
    4006
  • 访问量
    7969544