คำตอบ:
ก่อนอื่นคุณต้องดาวน์โหลด ดาวน์โหลดไคลเอนต์ทันที ติดตั้งแพ็กเกจเอเลี่ยนเพื่อให้คุณสามารถติดตั้งแพ็คเกจ rpm ได้โดยพิมพ์คำสั่งต่อไปนี้ในเทอร์มินัล
sudo apt-get install alien
เมื่อเสร็จแล้วให้ไปที่โฟลเดอร์ที่มีไฟล์ rpm และดำเนินการดังต่อไปนี้:
sudo alien -i oracle-instantclient*-basic*.rpm
sudo alien -i oracle-instantclient*-sqlplus*.rpm
sudo alien -i oracle-instantclient*-devel*.rpm
libaio.so
คุณต้องติดตั้ง พิมพ์คำสั่งต่อไปนี้เพื่อทำ:
sudo apt-get install libaio1
สร้างไฟล์กำหนดค่า Oracle:
sudo sensible-editor /etc/ld.so.conf.d/oracle.conf
วางบรรทัดนี้ในไฟล์นั้น:
/usr/lib/oracle/<your version>/client/lib/
หมายเหตุ - สำหรับการติดตั้ง 64 บิตพา ธ จะเป็น:
/usr/lib/oracle/<your version>/client64/lib/
อัพเดตคอนฟิกูเรชันโดยรันคำสั่งต่อไปนี้:
sudo ldconfig
ลองเชื่อมต่อโดยใช้:
sqlplus username/password@//dbhost:1521/SID
หรือ:
sqlplus testuser/password
โปรดทราบว่าหากคุณติดตั้งเวอร์ชัน 64 บิตไคลเอ็นต์จะถูกเรียกsqlplus64
ใช้
สิ่งต่างดาวไม่ทำงานเนื่องจาก:
Error: cannot open Name index using db5 - Permission denied (13)
ดังนั้นฉันจึงไปกับทางออกที่ง่าย: ดาวน์โหลดไฟล์zipจากOracle (พื้นฐานและ sqlplus) แยกไฟล์ออกและใส่โฟลเดอร์ที่คุณใส่ไฟล์โปรแกรม (เช่น/usr/share
) จากนั้นสร้างสคริปต์ที่รันไฟล์เรียกทำงานหลังจากตั้งค่าLD_LIBRARY_PATH
ตัวแปรเพื่อให้พบไลบรารี:
#!/bin/bash
DIR=/usr/share/instantclient_12_2 # <------- adjust this to the path you use
export LD_LIBRARY_PATH="$DIR"
"$DIR"/sqlplus "$@"
เรียกมันว่าsqlplus
ทำให้มันสามารถเรียกใช้งานได้ ( chmod 755 sqlplus
) และวางมันลงในไดเร็กตอรี่ของคุณPATH
(เช่น/usr/bin/
) เพื่อให้ bash พบ
เรียกใช้เช่น
sqlplus user/password@host:port/service
ถ้าคุณได้รับ
error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
ติดตั้งไลบรารีด้วย sudo apt-get install libaio1
ฉันคิดว่าลิงค์นี้จะช่วย มันเป็นคำอธิบายที่ค่อนข้างสวย ตรวจสอบให้แน่ใจว่าคุณทำตามขั้นตอนทั้งหมด ยังถ้าคุณมีปัญหาใด ๆ อย่าลังเลที่จะแสดงความคิดเห็น
แน่นอนว่าการติดตั้งที่ถูกต้องนั้นมาจากแพ็คเกจอย่างเป็นทางการเช่นด้านบน ( ดาวน์โหลดการดาวน์โหลดไคลเอนต์ทันที ) แต่คุณสามารถรับ sqlplus ที่ใช้งานได้เพียงแค่คัดลอกไฟล์เหล่านี้ (คุณสามารถพบมันได้ในคอมพิวเตอร์ทุกเครื่อง :
./sqlplus
./sqlplus/mesg
./sqlplus/mesg/sp1zhs.msb
./sqlplus/mesg/sp2zhs.msb
./sqlplus/mesg/sp2ptb.msb
./sqlplus/mesg/sp2us.msb
./sqlplus/mesg/sp1us.msb
./sqlplus/mesg/sp1ptb.msb
./sqlplus/mesg/cpyja.msb
./sqlplus/mesg/sp1ja.msb
./sqlplus/mesg/cpyus.msb
./sqlplus/mesg/cpyzhs.msb
./sqlplus/mesg/cpyptb.msb
./sqlplus/mesg/sp2ja.msb
./sqlplus/sqlplus
./README
./lib
./lib/libaio.so.1
./lib/libclntsh.so.11.1
./lib/libsqlplus.so
./lib/libnnz11.so
./lib/libociei.so
ในฐานะที่เป็นส่วนเพิ่มเติมฉันก็รวมlibaio.so
- มันสามารถติดตั้งได้sudo apt-get install libaio1
ดังนั้นการใช้ตัวอย่างสามารถ:
cd <PATH_OF_FILES>
ORACLE_HOME=$PWD LD_LIBRARY_PATH=$PWD/lib ./sqlplus/sqlplus user/pw@server:PORT/
เช่นเดียวกับภาคผนวกของ @Ketan Patel คำตอบที่ยอดเยี่ยม:
สคริปต์ที่เรียบง่ายนี้เก็บไว้พร้อมกับไฟล์ rpm ที่ดาวน์โหลดมาทำให้กระบวนการสำหรับการติดตั้งละเอียดยิ่งขึ้น:
#!/usr/bin/env sh
# /ubuntu//a/207145/585248
CURRDIR="$(pwd)";
cd $(dirname "${0}");
# Tools and dependencies:
sudo apt-get update
sudo apt-get install alien libaio1
# Oracle Packages:
echo "Installing instantclient-basic..."
sudo alien -i oracle-instantclient*-basic*.rpm
echo "Installing instantclient-sqlplus..."
sudo alien -i oracle-instantclient*-sqlplus*.rpm
echo "Installing instantclient-devel..."
sudo alien -i oracle-instantclient*-devel*.rpm
echo "Configuring LD path..."
# LD config:
echo /usr/lib/oracle/*/client64/lib \
| sort -V \
| tail -n 1 \
| sudo tee /etc/ld.so.conf.d/oracle.conf \
;
sudo ldconfig
cd "${CURRDIR}"
echo "DONE!!";
หมายเหตุ:มันติดตั้ง
libaio1
ซึ่งเป็นชื่อlibaioอย่างน้อยใน Ubuntu (และฉันก็คิดว่าเป็น Debian ด้วย) การกระจายอื่นอาจต้องปรับชื่อแพ็คเกจนี้เป็น "libaio" หรือชื่อแพคเกจที่เกี่ยวข้องจะเป็นอะไร
แก้ไข: ที่นี่เป็นรุ่น ehanced พร้อมการตัดแบบ readline (เจ้าหนี้สำหรับโพสต์นี้ ):
#!/usr/bin/env sh
# /ubuntu//a/207145/585248
CURRDIR="$(pwd)";
cd $(dirname "${0}");
# Tools and dependencies:
sudo apt-get update
sudo apt-get install alien libaio1 rlwrap
# Oracle Packages:
echo "Installing instantclient-basic..."
sudo alien -i oracle-instantclient*-basic*.rpm
echo "Installing instantclient-sqlplus..."
sudo alien -i oracle-instantclient*-sqlplus*.rpm
echo "Installing instantclient-devel..."
sudo alien -i oracle-instantclient*-devel*.rpm
# LD config:
echo "Configuring LD path..."
echo /usr/lib/oracle/*/client64/lib \
| sort -V \
| tail -n 1 \
| sudo tee /etc/ld.so.conf.d/oracle.conf \
;
sudo ldconfig
# Readline wrapping:
echo "Configuring readline wrapping..."
echo "WARNING: You need to manually execute this command or re-read /etc/profile"
echo "if you want readline wrapped 'sqlplus' alias to work in current session".
(cat | sudo tee /etc/profile.d/sqlplus_rlwrap.sh) <<!EOF
alias sqlplus="rlwrap -i -f ~/.sqlplus_history -H ~/.sqlplus_history -s 30000 sqlplus64"
!EOF
touch ~/.sqlplus_history
cd "${CURRDIR}"
echo "DONE!!";
ยังคงเป็น Oracle แต่อย่างน้อยก็ทำให้ความเจ็บปวดทนได้มากกว่านี้ ...
sudo alien -i