PATH环境变量未包含SQL*Plus所在目录($ORACLE_HOME/bin)。ls $ORACLE_HOME/bin/sqlplus验证路径是否存在)。~/.bash_profile或/etc/profile,添加以下内容(根据实际安装路径调整):export ORACLE_HOME=/path/to/oracle/client
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
source ~/.bash_profile或source /etc/profile。ORACLE_HOME指向无效路径)、Oracle客户端文件损坏。echo $ORACLE_HOME确认路径正确;运行ldd $ORACLE_HOME/bin/sqlplus检查依赖库是否完整(如libaio.so.1等)。/u01/app/oracle/product/19c/client_1/bin/sqlplus,观察是否报错。SYSDBA身份登录(sqlplus / as sysdba),执行ALTER USER username IDENTIFIED BY new_password;。tnsnames.ora文件配置错误(如服务名拼写错误、主机名/IP无效)、ORACLE_SID或TWO_TASK环境变量设置不当。tnsnames.ora文件(位于$ORACLE_HOME/network/admin):确认SERVICE_NAME或SID与数据库实际配置一致。示例:ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
echo $ORACLE_SID(本地连接需正确设置);避免TWO_TASK指向无效标识符。lsnrctl start;检查状态:lsnrctl status(确认监听端口为1521,默认)。ping <数据库服务器IP>;测试端口:telnet <IP> 1521(若不通,检查防火墙)。ORACLE_SID未正确设置、监听器未注册实例。SYSDBA登录,执行STARTUP命令。ORACLE_SID:运行echo $ORACLE_SID,确保与数据库实例名一致(可通过ps -ef | grep pmon查看运行中的实例名)。sqlplus / as sysdba中执行ALTER SYSTEM REGISTER;。CREATE TABLE、SELECT ANY TABLE)。SYSDBA登录,执行GRANT CREATE TABLE, SELECT ANY TABLE TO username;。GRANT CONNECT, RESOURCE TO username;(RESOURCE角色包含常用权限)。COLUMN命令,如COLUMN username FORMAT A20(将username列宽设为20)。NLS_LANG环境变量(需与数据库字符集一致),如export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK";确保客户端与服务器字符集一致(可通过SELECT * FROM V$NLS_PARAMETERS WHERE PARAMETER IN ('NLS_CHARACTERSET', 'NLS_NCHAR_CHARACTERSET');查看服务器字符集)。firewall-cmd --permanent --add-port=1521/tcp;firewall-cmd --reload。setenforce 0(如需永久关闭,修改/etc/selinux/config中的SELINUX=disabled)。ping和telnet验证客户端与服务器的连通性。sqlplus -v查看SQL*Plus版本;通过SELECT * FROM V$VERSION查看数据库版本。NLS_LANG设置外,安装rlwrap改善交互体验(避免方向键乱码):yum install rlwrap -y
alias sqlplus='rlwrap sqlplus'
source ~/.bashrc
SHOW PARAMETER BACKGROUND_DUMP_DEST;(返回目录即为日志路径)。oracle用户对日志目录有写权限(chmod -R 775 $ORACLE_BASE/diag/rdbms/<SID>/<SID>/trace)。