Cài đặt Database Server Oracle 12c R2 Ubuntu 18.04

Tác giả CCNACCNP, Tháng tư 18, 2019, 12:56:54 PM

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 1 Khách đang xem chủ đề.

Cài đặt Database Server Oracle 12c R2 Ubuntu 18.04


Như thường lệ, điều này không thể làm những gì mà hầu hết các phần mềm khác có thể, mà không gặp rắc rối. Nhưng đó là bởi vì nó tốn một cánh tay và một chân, rõ ràng. Vì vậy, nếu bạn thực sự không thể sử dụng cơ sở dữ liệu PostgreSQL tuyệt vời - thì đây...


Tải chương trinh

Cài đặt gói:

Mã nguồn [Chọn]
sudo apt install libc6-i386
sudo apt install gcc-multilib g++-multilib libc6-dev-i386 libstdc++6:i386
sudo apt install alien autoconf automake autotools-dev elfutils rpm rpm-common
sudo apt install build-essential debhelper expat gawk gsfonts-x11 html2text sysstat
sudo apt install unixodbc unixodbc-dev doxygen ksh openssh-server pax perl-doc rlwrap
sudo apt install lsb lsb-core zlibc
sudo apt install lib32z1-dev lib32ncurses5 libaio1 libaio-dev
sudo apt install libelf-dev libodbcinstq4-1 libpth-dev libpthread-stubs0-dev libpthread-workqueue0 libpthread-workqueue-dev
sudo apt-get install libtiff5-dev libzthread-dev libqt4-opengl:i386 libodbcinstq4-1:i386 libglu1-mesa:i386
sudo apt-get install -s cabextract
sudo add-apt-repository ppa:nilarimogard/webupd8
sudo apt update
sudo apt install wimtools libwim-dev
sudo apt install -s libbz2-dev:i386


Tạo liên kết mềm:

Mã nguồn [Chọn]
sudo ln -s /usr/bin/basename /bin/basename
sudo ln -s bin/bash /usr/bin/bash
sudo ln -sf /bin/bash /bin/sh
sudo ln -s /usr/bin/rpm /bin/rpm
sudo ln -s /usr/bin/awk /bin/awk
sudo ln -s /usr/lib/x86_64-linux-gnu /usr/lib64
sudo ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /lib64/libstdc++.so.6
sudo ln -s /lib/x86_64-linux-gnu/libgcc_s.so.1 /lib64/libgcc_s.so.1
sudo ln -s /usr/lib/i386-linux-gnu/libpthread_nonshared.a /usr/lib/libpthread_nonshared.a
sudo ln -s /lib/lsb/init-functions /etc/init.d/functions


Và một số chi tiết khác cho các chương trình:

Mã nguồn [Chọn]
[if [ -z "$BASH_VERSION" -o -n "$ORALD_USE_GCC" ] ; then
  exec gcc "$@"
  exit 1
fi


Thay đổi các tùy chọn liên kết trong bin / orald:

Thêm tùy chọn -no-pie vào gcc tại đây:

Mã nguồn [Chọn]
if [ -z "$BASH_VERSION" -o -n "$ORALD_USE_GCC" ] ; then
  exec gcc -no-pie "$@"
  exit 1
fi


Tùy chọn thích hợp là -no-pie với dấu gạch ngang SINGLE trước nó! Có hai dấu gạch ngang dường như không báo cáo lỗi nhưng tùy chọn không hoạt động.

Bây giờ bắt đầu trình cài đặt và chạy nó mà KHÔNG tạo cơ sở dữ liệu.

Sau một thời gian bạn sẽ nhận được lỗi liên kết. Lúc đó chỉnh sửa rồi thực thi đoạn script sau:

Mã nguồn [Chọn]
#!/bin/bash

# Change the path below to point to your installation
export $ORACLE_HOME=/opt/oracle/12cr2

sudo ln -s $ORACLE_HOME/lib/libclntshcore.so.12.1 /usr/lib
sudo ln -s $ORACLE_HOME/lib/libclntsh.so.12.1 /usr/lib

cp $ORACLE_HOME/rdbms/lib/ins_rdbms.mk $ORACLE_HOME/rdbms/lib/ins_rdbms.bkp
cp $ORACLE_HOME/rdbms/lib/env_rdbms.mk $ORACLE_HOME/rdbms/lib/env_rdbms.bkp

sed -i 's/\$(ORAPWD_LINKLINE)/\$(ORAPWD_LINKLINE) -lnnz12/' $ORACLE_HOME/rdbms/lib/ins_rdbms.mk
sed -i 's/\$(HSOTS_LINKLINE)/\$(HSOTS_LINKLINE) -lagtsh/' $ORACLE_HOME/rdbms/lib/ins_rdbms.mk
sed -i 's/\$(EXTPROC_LINKLINE)/\$(EXTPROC_LINKLINE) -lagtsh/' $ORACLE_HOME/rdbms/lib/ins_rdbms.mk
sed -i 's/\$(OPT) \$(HSOTSMAI)/\$(OPT) -Wl,--no-as-needed \$(HSOTSMAI)/' $ORACLE_HOME/rdbms/lib/env_rdbms.mk
sed -i 's/\$(OPT) \$(HSDEPMAI)/\$(OPT) -Wl,--no-as-needed \$(HSDEPMAI)/' $ORACLE_HOME/rdbms/lib/env_rdbms.mk
sed -i 's/\$(OPT) \$(EXTPMAI)/\$(OPT) -Wl,--no-as-needed \$(EXTPMAI)/' $ORACLE_HOME/rdbms/lib/env_rdbms.mk
sed -i 's/^\(TNSLSNR_LINKLINE.*\$(TNSLSNR_OFILES)\) \(\$(LINKTTLIBS)\)/\1 -Wl,--no-as-needed \2/g' $ORACLE_HOME/network/lib/env_network.mk
sed -i 's/\$(SPOBJS) \$(LLIBSERVER)/\$(SPOBJS) -Wl,--no-as-needed \$(LLIBSERVER)/' $ORACLE_HOME/rdbms/lib/env_rdbms.mk
sed -i 's/\$(S0MAIN) \$(SSKFEDED)/\$(S0MAIN) -Wl,--no-as-needed \$(SSKFEDED)/' $ORACLE_HOME/rdbms/lib/env_rdbms.mk
sed -i 's/\$(S0MAIN) \$(SSKFODED)/\$(S0MAIN) -Wl,--no-as-needed \$(SSKFODED)/' $ORACLE_HOME/rdbms/lib/env_rdbms.mk
sed -i 's/\$(S0MAIN) \$(SSKFNDGED)/\$(S0MAIN) -Wl,--no-as-needed \$(SSKFNDGED)/' $ORACLE_HOME/rdbms/lib/env_rdbms.mk
sed -i 's/\$(S0MAIN) \$(SSKFMUED)/\$(S0MAIN) -Wl,--no-as-needed \$(SSKFMUED)/' $ORACLE_HOME/rdbms/lib/env_rdbms.mk
sed -i 's/^\(ORACLE_LINKLINE.*\$(ORACLE_LINKER)\) \($(PL_FLAGS)\)/\1 -Wl,--no-as-needed \2/g' $ORACLE_HOME/rdbms/lib/env_rdbms.mk
sed -i 's/\$LD \$LD_RUNTIME/$LD -Wl,--no-as-needed \$LD_RUNTIME/' $ORACLE_HOME/bin/genorasdksh
sed -i 's/\$(GETCRSHOME_OBJ1) \$(OCRLIBS_DEFAULT)/\$(GETCRSHOME_OBJ1) -Wl,--no-as-needed \$(OCRLIBS_DEFAULT)/' $ORACLE_HOME/srvm/lib/env_srvm.mk

sed -i 's/LDDISABLENEWDTAGS=-Wl,--disable-new-dtags/LDDISABLENEWDTAGS=-Wl,--no-as-needed,--disable-new-dtags/' $ORACLE_HOME/rdbms/lib/env_rdbms.mk
sed -i 's/LDDISABLENEWDTAGS=-Wl,--disable-new-dtags/LDDISABLENEWDTAGS=-Wl,--no-as-needed,--disable-new-dtags/' $ORACLE_HOME/crs/lib/env_has.mk;
sed -i 's/LDDISABLENEWDTAGS=-Wl,--disable-new-dtags/LDDISABLENEWDTAGS=-Wl,--no-as-needed,--disable-new-dtags/' $ORACLE_HOME/odbc/lib/env_odbc.mk;
sed -i 's/LDDISABLENEWDTAGS=-Wl,--disable-new-dtags/LDDISABLENEWDTAGS=-Wl,--no-as-needed,--disable-new-dtags/' $ORACLE_HOME/precomp/lib/env_precomp.mk;
sed -i 's/LDDISABLENEWDTAGS=-Wl,--disable-new-dtags/LDDISABLENEWDTAGS=-Wl,--no-as-needed,--disable-new-dtags/' $ORACLE_HOME/srvm/lib/env_srvm.mk;
sed -i 's/LDDISABLENEWDTAGS=-Wl,--disable-new-dtags/LDDISABLENEWDTAGS=-Wl,--no-as-needed,--disable-new-dtags/' $ORACLE_HOME/network/lib/env_network.mk;
sed -i 's/LDDISABLENEWDTAGS=-Wl,--disable-new-dtags/LDDISABLENEWDTAGS=-Wl,--no-as-needed,--disable-new-dtags/' $ORACLE_HOME/ldap/lib/env_ldap.mk;
sed -i 's/LDDISABLENEWDTAGS=-Wl,--disable-new-dtags/LDDISABLENEWDTAGS=-Wl,--no-as-needed,--disable-new-dtags/' $ORACLE_HOME/ord/im/lib/env_ordim.mk;
sed -i 's/LDDISABLENEWDTAGS=-Wl,--disable-new-dtags/LDDISABLENEWDTAGS=-Wl,--no-as-needed,--disable-new-dtags/' $ORACLE_HOME/plsql/lib/env_plsql.mk;
sed -i 's/LDDISABLENEWDTAGS=-Wl,--disable-new-dtags/LDDISABLENEWDTAGS=-Wl,--no-as-needed,--disable-new-dtags/' $ORACLE_HOME/ctx/lib/env_ctx.mk;
sed -i 's/LDDISABLENEWDTAGS=-Wl,--disable-new-dtags/LDDISABLENEWDTAGS=-Wl,--no-as-needed,--disable-new-dtags/' $ORACLE_HOME/sqlplus/lib/env_sqlplus.mk;


Nhấn nút "thử lại" trên trình cài đặt ít nhất là để cài đặt hoàn tất.

Nhưng kết quả cài đặt Oracle sẽ không thể khởi động một thể hiện: danh mục khởi động sẽ bị treo với quy trình Oracle BEQ bị bế tắc, hiển thị dấu vết ngăn xếp tương tự như sau:

Mã nguồn [Chọn]
#0  __lll_lock_wait_private () at ../sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:95
#1  0x00007fadc7f99376 in __tz_convert (timer=0x7fadc82b2c20 <tzset_lock>, use_localtime=1, tp=0x7fadc7437870) at tzset.c:579
#2  0x0000000010cd2fd6 in localtime_r ()
#3  0x0000000003e01f5f in slsstdts ()
#4  0x0000000003e01dbd in slsstdtscond ()
#5  0x0000000002d366fb in dbktWriteTimestampWCdbInfo ()
#6  0x0000000002a43917 in ssexhd ()
#7  0x00000000036c638f in sslssSynchHdlr ()
#8  0x00000000036c6086 in sslsshandler ()
#9  <signal handler called>
#10 0x00007fadc7f985e6 in update_vars () at tzset.c:132
#11 __tzset_parse_tz (tz=<optimized out>) at tzset.c:363
#12 0x00007fadc7f9ac60 in __tzfile_compute (timer=<optimized out>, use_localtime=use_localtime@entry=1,
    leap_correct=leap_correct@entry=0x7ffcf45fd9b0, leap_hit=leap_hit@entry=0x7ffcf45fd9ac, tp=tp@entry=0x7ffcf45fdaa0) at tzfile.c:684
#13 0x00007fadc7f9951e in __tz_convert (timer=timer@entry=0x7ffcf45fda88, use_localtime=use_localtime@entry=1,
    tp=tp@entry=0x7ffcf45fdaa0) at tzset.c:587
#14 0x00007fadc7f9657d in __localtime_r (t=t@entry=0x7ffcf45fda88, tp=tp@entry=0x7ffcf45fdaa0) at localtime.c:30
#15 0x00007fadc7f971dc in ranged_convert (tp=0x7ffcf45fdaa0, t=0x7ffcf45fda88, convert=<optimized out>) at mktime.c:310
#16 __mktime_internal (offset=0x7fadc82b2b98 <localtime_offset>, convert=<optimized out>, tp=0x7ffcf45fdb60) at mktime.c:478
#17 __GI_mktime (tp=0x7ffcf45fdb60) at mktime.c:591
#18 0x0000000003e02271 in slclts ()
#19 0x00000000029d6d7b in kzxslNotifier ()
#20 0x0000000003295609 in kscnfy ()
#21 0x0000000000f8cb02 in ksmcsg ()
#22 0x0000000001e73b26 in opistr_real ()
#23 0x0000000001e7257d in opistr ()
#24 0x0000000010c3a54d in opiodr ()
#25 0x0000000010ed4fa9 in ttcpip ()
#26 0x0000000001e6bc04 in opitsk ()
#27 0x0000000001e706dd in opiino ()
#28 0x0000000010c3a54d in opiodr ()


Điều này cho thấy sự bế tắc vì localtime () được nhập theo cách đệ quy do một số tín hiệu được xử lý - và giờ cục bộ không được phát lại nên nó chặn trên một khóa.

Giải pháp như sau:

    Xóa tất cả các thư viện libc * khỏi lib / stub /
    Xem lại tất cả

Mã nguồn [Chọn]
cd lib/stubs
rm libc*
cd ../../bin
./relink all


Sau khi xem lại, hãy kiểm tra tệp nhật ký của nó để đảm bảo rằng tất cả các liên kết đã thành công.

Sau này, bạn có thể chạy dbca để tạo cơ sở dữ liệu, được hỗ trợ hoặc không được hỗ trợ:

Mã nguồn [Chọn]
dbca -silent -createDatabase \
-templateName General_Purpose.dbc \
-gdbname $DBNAME -sid $DBNAME -responseFile NO_VALUE \
-characterSet AL32UTF8 \
-sysPassword oracle \
-systemPassword oracle \
-createAsContainerDatabase false \
-databaseType MULTIPURPOSE \
-automaticMemoryManagement false \
-totalMemory 2048 \
-storageType FS \
-datafileDestination "/opt/oracle/oradata/" \
-redoLogFileSize 500 \
-emConfiguration NONE \
-ignorePreReqs