在Debian上使用SQLPlus前,需先安装Oracle Instant Client并配置环境变量:
basiclite(基础包)和sqlplus(命令行工具包)压缩包(如instantclient-basiclite-linux.x64-21.5.0.0.0dbru.zip、instantclient-sqlplus-linux.x64-21.5.0.0.0dbru.zip)。/usr/local目录,合并文件夹并创建sqlplus符号链接:wget https://download.oracle.com/otn_software/linux/instantclient/215000/instantclient-basiclite-linux.x64-21.5.0.0.0dbru.zip
unzip instantclient-basiclite-linux.x64-21.5.0.0.0dbru.zip -d /usr/local
unzip instantclient-sqlplus-linux.x64-21.5.0.0.0dbru.zip -d /usr/local
mv /usr/local/instantclient_21_5 /usr/local/sqlplus
ln -s /usr/local/sqlplus/sqlplus /usr/local/bin/sqlplus
~/.bash_profile,添加以下内容并使生效:export ORACLE_HOME=/usr/local/sqlplus
export LD_LIBRARY_PATH=$ORACLE_HOME
export PATH=$ORACLE_HOME:$PATH
source ~/.bash_profile
SQLPlus的核心功能是与Oracle数据库建立连接,常见方式如下:
sqlplus / as sysdba
sqlplus username/password@//hostname:port/service_name
# 示例:sqlplus scott/tiger@//remotehost:1521/orcl
sqlplus username/password@service_name
# 示例:sqlplus scott/tiger@orcl
连接后,可通过以下命令完成基础数据库操作:
SELECT * FROM v$version;
SELECT user FROM dual;
-- 创建表
CREATE TABLE employees (employee_id NUMBER PRIMARY KEY, first_name VARCHAR2(50), last_name VARCHAR2(50), email VARCHAR2(100));
-- 插入数据
INSERT INTO employees (employee_id, first_name, last_name, email) VALUES (1, 'John', 'Doe', 'john.doe@example.com');
-- 查询数据
SELECT * FROM employees;
-- 更新数据
UPDATE employees SET email = 'john.newemail@example.com' WHERE employee_id = 1;
-- 删除数据
DELETE FROM employees WHERE employee_id = 1;
-- 删除表
DROP TABLE employees;
-- 创建视图
CREATE VIEW employee_names AS SELECT first_name, last_name FROM employees;
-- 创建索引
CREATE INDEX idx_employee_last_name ON employees(last_name);
SQLPlus支持执行PL/SQL块和存储过程:
CREATE OR REPLACE PROCEDURE add_employee(p_first_name IN VARCHAR2, p_last_name IN VARCHAR2) AS
BEGIN
INSERT INTO employees (employee_id, first_name, last_name) VALUES (employee_seq.NEXTVAL, p_first_name, p_last_name);
END;
/
BEGIN
add_employee('Jane', 'Smith');
END;
/
提升使用效率的辅助命令:
HELP
# 查看特定命令帮助(如SELECT)
HELP SELECT
-- 设置每页显示行数(0表示不换页)
SET PAGESIZE 0
-- 设置每行字符数
SET LINESIZE 100
-- 显示当前设置
SHOW PAGESIZE
SHOW LINESIZE
SELECT * FROM v$sql;
EXIT
# 或
QUIT
rlwrap工具,实现命令历史记录和上下文切换:sudo apt-get install rlwrap
echo "alias sqlplus='rlwrap sqlplus'" >> ~/.bash_profile
source ~/.bash_profile
$ORACLE_HOME/sqlplus/admin/glogin.sql文件,自定义默认输出格式(如设置标题、列宽)。@命令执行SQL脚本文件(如@script.sql)。-- 列出缓冲区内容
LIST
-- 清除缓冲区
CLEAR BUFFER
以上命令覆盖了Debian系统上SQLPlus的基础与进阶使用场景,可根据实际需求灵活组合使用。