菜鸟科技网

Linux Oracle命令大全有哪些核心命令?

Linux系统下Oracle数据库的管理涉及众多命令,涵盖数据库启动关闭、用户权限、表空间管理、性能监控等多个方面,以下从不同场景分类整理常用命令及操作示例,帮助用户高效管理Oracle数据库。

Linux Oracle命令大全有哪些核心命令?-图1
(图片来源网络,侵删)

数据库启动与关闭

  1. 启动数据库

    • 启动到 nomount 状态(仅加载参数文件):
      sqlplus / as sysdba
      SQL> startup nomount;
    • 启动到 mount 状态(加载数据文件,不打开):
      SQL> startup mount;
    • 启动到 open 状态(完全启动):
      SQL> startup;
    • 强制启动(需谨慎,可能引发数据损坏):
      SQL> startup force;
  2. 关闭数据库

    • 正常关闭(等待会话结束):
      SQL> shutdown normal;
    • 立即关闭(不等待会话结束):
      SQL> shutdown immediate;
    • 事务关闭(等待事务提交后关闭):
      SQL> shutdown transactional;
    • 终止关闭(强制关闭,可能导致数据丢失):
      SQL> shutdown abort;

用户与权限管理

  1. 创建用户

    SQL> CREATE USER username IDENTIFIED BY password DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp;
  2. 授权角色

    Linux Oracle命令大全有哪些核心命令?-图2
    (图片来源网络,侵删)
    SQL> GRANT connect, resource TO username;
    SQL> GRANT dba TO username; -- 超级管理员权限
  3. 撤销权限

    SQL> REVOKE dba FROM username;
  4. 查看用户信息

    SQL> SELECT username, default_tablespace, temporary_tablespace FROM dba_users WHERE username = 'USERNAME';

表空间与数据文件管理

  1. 创建表空间

    SQL> CREATE TABLESPACE tbs_data DATAFILE '/u01/oradata/tbs_data.dbf' SIZE 500M AUTOEXTEND ON NEXT 100M MAXSIZE 2G;
  2. 扩展表空间

    Linux Oracle命令大全有哪些核心命令?-图3
    (图片来源网络,侵删)
    SQL> ALTER TABLESPACE tbs_data ADD DATAFILE '/u01/oradata/tbs_data_01.dbf' SIZE 200M;
  3. 查看表空间使用情况

    SQL> SELECT tablespace_name, ROUND(used_space*8/1024, 2) "Used (GB)", ROUND(tablespace_size*8/1024, 2) "Total (GB)" 
         FROM dba_tablespace_usage_metrics;

表与索引管理

  1. 创建表

    SQL> CREATE TABLE emp (empno NUMBER(4), ename VARCHAR2(10)) TABLESPACE users;
  2. 创建索引

    SQL> CREATE INDEX idx_emp_ename ON emp(ename) TABLESPACE users;
  3. 重建索引

    SQL> ALTER INDEX idx_emp_ename REBUILD;

性能监控命令

  1. 查看当前会话

    SQL> SELECT sid, serial#, username, program FROM v$session WHERE username IS NOT NULL;
  2. 查看等待事件

    SQL> SELECT event, total_waits, time_waited FROM v$system_event WHERE total_waits > 0;
  3. 检查SQL执行计划

    SQL> EXPLAIN PLAN FOR SELECT * FROM emp WHERE ename = 'SMITH';
    SQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);

备份与恢复

  1. 使用RMAN进行备份

    rman target /
    RMAN> BACKUP DATABASE PLUS ARCHIVELOG;
  2. 数据泵导出(EXPDP)

    expdp system/password DIRECTORY=dpump_dir DUMPFILE=expdp.dmp SCHEMAS=hr
  3. 数据泵导入(IMPDP)

    impdp system/password DIRECTORY=dpump_dir DUMPFILE=expdp.dmp SCHEMAS=hr

常用Linux与Oracle结合命令

  1. 查看Oracle监听状态

    lsnrctl status
  2. 启动/停止监听

    lsnrctl start
    lsnrctl stop
  3. 查看Oracle进程

    ps -ef | grep ora_ | grep -v grep
  4. 查看Oracle日志

    tail -f $ORACLE_BASE/diag/rdbms/$ORACLE_SID/$ORACLE_SID/trace/alert_$ORACLE_SID.log

常用命令速查表

功能分类 命令示例
连接数据库 sqlplus / as sysdba
查看表空间大小 SELECT tablespace_name, SUM(bytes)/1024/1024 "Size(MB)" FROM dba_data_files GROUP BY tablespace_name;
查看锁表信息 SELECT object_name, machine, sid FROM v$locked_object, dba_objects, v$session WHERE v$locked_object.object_id=dba_objects.object_id AND v$locked_object.session_id=v$session.sid;
清理临时表空间 ALTER TABLESPACE temp SHRINK SPACE;
查看数据库版本 SELECT * FROM v$version;

FAQs

如何解决Oracle数据库启动时报错“ORA-01078: failure in processing system parameters”
解答:该错误通常因参数文件(spfile/pfile)路径错误或内容损坏导致,可通过以下步骤排查:

  • 检查$ORACLE_HOME/dbs目录下是否存在正确的spfile或pfile文件;
  • 确认ORACLE_SID环境变量是否正确设置;
  • 若使用pfile,检查参数文件中的db_name与实际数据库名称是否一致;
  • 尝试重新创建spfile:SQL> CREATE SPFILE FROM PFILE='/path/to/pfile.ora';

如何定位并杀死阻塞的Oracle会话?
解答:可通过以下步骤操作:

  • 查询阻塞源会话与被阻塞会话的对应关系:
    SELECT blocking_session, blocked_session FROM v$session阻塞;
  • 记录被阻塞会话的SIDSERIAL#
  • 强制终止会话:
    ALTER SYSTEM KILL SESSION 'sid,serial#';
  • 若需批量操作,可结合v$sessiondba_objects视图编写复杂查询筛选目标会话。
分享:
扫描分享到社交APP
上一篇
下一篇