首页 > 数据库 > Oracle > [20241104]21c下bbed编译.txt
[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/ ,如需转载,请注明出处,否则将追究法律责任。