Oracle 11g常用命令有哪些?

Oracle 11g作为企业级关系数据库管理系统,其常用命令涵盖了数据库管理、用户权限、数据操作、性能监控等多个核心场景,以下从不同维度详细梳理Oracle 11g的常用命令及操作逻辑,帮助用户高效完成日常运维与开发任务。

oracle11g常用命令
(图片来源网络,侵删)

数据库启动与关闭命令

Oracle数据库的启动与关闭是运维的基础操作,需根据业务场景选择不同模式。

  • 启动数据库
    -- 启动到nomount状态(仅加载实例,未加载数据文件)
    STARTUP NOMOUNT;  
    -- 启动到mount状态(加载控制文件,未打开数据文件)
    STARTUP MOUNT;  
    -- 启动到open状态(完全启动,可访问数据)
    STARTUP;  
    -- 强制启动(覆盖已存在的实例,需谨慎使用)
    STARTUP FORCE;  
  • 关闭数据库
    -- 正常关闭(等待会话断开,提交未提交事务)
    SHUTDOWN NORMAL;  
    -- 事务关闭(等待事务提交后关闭,默认选项)
    SHUTDOWN TRANSACTIONAL;  
    -- 立即关闭(未提交事务回滚,快速终止会话)
    SHUTDOWN IMMEDIATE;  
    -- 终止关闭(强制关闭,可能导致数据不一致,仅紧急情况使用)
    SHUTDOWN ABORT;  

用户与权限管理命令

Oracle通过用户与权限控制数据访问安全性,需合理分配角色与权限。

  • 用户管理
    -- 创建用户(需指定表空间、密码、配额)
    CREATE USER username IDENTIFIED BY password  
    DEFAULT TABLESPACE users  
    TEMPORARY TABLESPACE temp  
    QUOTA 100M ON users;  
    -- 修改用户密码
    ALTER USER username IDENTIFIED BY new_password;  
    -- 锁定/解锁用户
    ALTER USER username ACCOUNT LOCK;  
    ALTER USER username ACCOUNT UNLOCK;  
    -- 删除用户( CASCADE选项会删除用户所有对象)
    DROP USER username CASCADE;  
  • 权限与角色管理
    -- 授予系统权限(如DBA、CONNECT、RESOURCE)
    GRANT CREATE SESSION, CREATE TABLE TO username;  
    -- 授予对象权限(如SELECT、UPDATE、DELETE)
    GRANT SELECT, UPDATE ON schema.table TO username;  
    -- 授予角色(如预定义角色)
    GRANT CONNECT, RESOURCE TO username;  
    -- 撤销权限
    REVOKE CREATE SESSION FROM username;  

表空间与数据文件管理

表空间是Oracle存储逻辑结构,合理规划表空间可提升性能与数据管理效率。

  • 表空间操作
    -- 创建表空间(指定数据文件路径、大小、自动扩展)
    CREATE TABLESPACE tbsp_data  
    DATAFILE '/u01/oradata/tbsp_data.dbf' SIZE 500M  
    AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED  
    EXTENT MANAGEMENT LOCAL;  
    -- 创建临时表空间
    CREATE TEMPORARY TABLESPACE tbsp_temp  
    TEMPFILE '/u01/oradata/tbsp_temp.dbf' SIZE 200M  
    AUTOEXTEND ON;  
    -- 扩展表空间(手动添加数据文件)
    ALTER TABLESPACE tbsp_data  
    ADD DATAFILE '/u01/oradata/tbsp_data_2.dbf' SIZE 300M;  
    -- 删除表空间(含数据文件)
    DROP TABLESPACE tbsp_data INCLUDING CONTENTS AND DATAFILES;  
  • 表空间状态查询
    -- 查看表空间信息(名称、大小、使用率)
    SELECT tablespace_name, ROUND(SUM(bytes)/1024/1024,2) AS size_mb  
    FROM dba_data_files  
    GROUP BY tablespace_name;  
    -- 查看表空间使用情况
    SELECT a.tablespace_name, ROUND(a.bytes/1024/1024,2) AS total_mb,  
           ROUND(b.bytes/1024/1024,2) AS used_mb,  
           ROUND((b.bytes/a.bytes)*100,2) AS used_pct  
    FROM dba_data_files a, dba_free_space b  
    WHERE a.tablespace_name = b.tablespace_name(+)  
    GROUP BY a.tablespace_name, a.bytes, b.bytes;  

表与数据操作命令

表是Oracle存储数据的核心对象,掌握表与数据操作是开发的基础。

oracle11g常用命令
(图片来源网络,侵删)
  • 表管理
    -- 创建表(指定表空间、字段、约束)
    CREATE TABLE employees (  
      employee_id NUMBER(6) PRIMARY KEY,  
      first_name VARCHAR2(20),  
      last_name VARCHAR2(25),  
      hire_date DATE DEFAULT SYSDATE,  
      CONSTRAINT fk_dept FOREIGN KEY (department_id)  
      REFERENCES departments(department_id)  
    ) TABLESPACE users;  
    -- 修改表结构(添加字段、修改字段类型)
    ALTER TABLE employees ADD (salary NUMBER(10,2));  
    ALTER TABLE employees MODIFY (first_name VARCHAR2(30));  
    -- 删除表(CASCADE CONSTRAINTS会删除关联约束)
    DROP TABLE employees CASCADE CONSTRAINTS;  
  • 数据操作(DML)
    -- 插入数据(单行、多行、子查询)
    INSERT INTO employees (employee_id, first_name, last_name)  
    VALUES (1001, 'John', 'Doe');  
    INSERT INTO employees (employee_id, first_name, last_name)  
    SELECT employee_id, first_name, last_name FROM temp_employees;  
    -- 更新数据(带条件)
    UPDATE employees SET salary = salary * 1.1 WHERE department_id = 10;  
    -- 删除数据(带条件,慎用)
    DELETE FROM employees WHERE hire_date < TO_DATE('2020-01-01', 'YYYY-MM-DD');  

索引与约束管理

索引提升查询效率,约束保障数据完整性,二者是数据库优化的关键。

  • 索引操作
    -- 创建索引(普通索引、唯一索引、位图索引)
    CREATE INDEX idx_emp_name ON employees(last_name);  
    CREATE UNIQUE INDEX idx_emp_id ON employees(employee_id);  
    CREATE BITMAP INDEX idx_emp_dept ON employees(department_id);  
    -- 删除索引
    DROP INDEX idx_emp_name;  
  • 约束操作
    -- 添加主键约束(会自动创建唯一索引)
    ALTER TABLE employees ADD CONSTRAINT pk_emp_id PRIMARY KEY (employee_id);  
    -- 添加外键约束
    ALTER TABLE employees ADD CONSTRAINT fk_emp_dept  
    FOREIGN KEY (department_id) REFERENCES departments(department_id);  
    -- 禁用/启用约束
    ALTER TABLE employees DISABLE CONSTRAINT pk_emp_id;  
    ALTER TABLE employees ENABLE CONSTRAINT pk_emp_id;  

查询与性能监控命令

查询是数据库最频繁的操作,性能监控则保障系统稳定运行。

  • 基础查询
    -- 查询表数据(带排序、分组、连接)
    SELECT e.employee_id, e.first_name, d.department_name  
    FROM employees e JOIN departments d ON e.department_id = d.department_id  
    WHERE e.salary > 5000  
    ORDER BY e.hire_date DESC;  
    -- 分页查询(Oracle 11g使用ROWNUM)
    SELECT * FROM (  
      SELECT a.*, ROWNUM rn FROM (  
        SELECT * FROM employees ORDER BY salary DESC  
      ) a WHERE ROWNUM <= 10  
    ) WHERE rn >= 1;  
  • 性能监控
    -- 查看当前会话的SQL执行计划
    EXPLAIN PLAN FOR SELECT * FROM employees WHERE employee_id = 1001;  
    SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);  
    -- 查看等待事件(TOP 10)
    SELECT event, total_waits, time_waited  
    FROM v$system_event  
    ORDER BY time_waited DESC FETCH FIRST 10 ROWS ONLY;  
    -- 查看SQL执行统计(按执行次数排序)
    SELECT sql_text, executions, elapsed_time  
    FROM v$sql  
    ORDER BY executions DESC;  

备份与恢复命令

Oracle 11g支持多种备份方式,确保数据安全性与业务连续性。

  • 数据泵导出/导入(EXPDP/IMPDP)
    # 导出用户数据(命令行执行)
    expdp username/password DIRECTORY=dpump_dir DUMPFILE=exp.dmp  
    # 导入表数据
    impdp username/password DIRECTORY=dpump_dir DUMPFILE=exp.dmp TABLES=employees  
  • RMAN备份(恢复管理器)
    -- 连接到RMAN
    rman target /  
    -- 执行完整备份
    BACKUP DATABASE PLUS ARCHIVELOG;  
    -- 恢复数据库(需在MOUNT状态下执行)
    RECOVER DATABASE;  

其他实用命令

  • 序列管理
    CREATE SEQUENCE seq_emp_id  
    START WITH 1001  
    INCREMENT BY 1  
    NOCACHE;  
    SELECT seq_emp_id.NEXTVAL FROM dual;  
  • 同义词管理
    -- 创建同义词(简化表名访问)
    CREATE SYNONYM emp FOR employees;  
    -- 删除同义词
    DROP SYNONYM emp;  

相关问答FAQs

Q1:Oracle 11g中如何查看当前用户的默认表空间?
A:可通过查询dba_usersuser_users视图获取当前用户的默认表空间信息,命令如下:

oracle11g常用命令
(图片来源网络,侵删)
SELECT username, default_tablespace FROM user_users WHERE username = USER;  

若需查看所有用户的默认表空间,可使用dba_users视图(需DBA权限)。

Q2:Oracle 11g中如何删除重复数据并保留最新记录?
A:可通过ROWNUM结合子查询实现,假设表employees存在重复的email字段,需保留hire_date最新的记录,操作如下:

-- 创建临时表存储重复数据的最小ID(或其他唯一标识)
DELETE FROM employees e  
WHERE ROWID NOT IN (  
  SELECT MIN(ROWID)  
  FROM employees  
  GROUP BY email  
);  

或使用分析函数(Oracle 8i及以上版本支持):

DELETE FROM employees  
WHERE ROWID IN (  
  SELECT ROWID FROM (  
    SELECT ROWID, ROW_NUMBER() OVER (PARTITION BY email ORDER BY hire_date DESC) AS rn  
    FROM employees  
  ) WHERE rn > 1  
);  

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/417201.html<

(0)
运维的头像运维
上一篇2025-10-22 16:13
下一篇 2025-10-22 16:16

相关推荐

  • Oracle清屏命令是什么?

    在Oracle数据库管理中,清屏操作是一个常见的需求,尤其是在频繁执行SQL命令或查看大量输出后,保持终端界面的整洁有助于提高工作效率,虽然Oracle数据库本身没有直接提供类似操作系统(如Linux的clear或Windows的cls)的独立清屏命令,但可以通过多种方式实现类似效果,具体方法取决于使用的客户端……

    2025-11-20
    0
  • JVM命令行有哪些常用参数?

    JVM命令行工具是Java开发者日常工作中不可或缺的利器,它们能够帮助开发者监控、诊断和优化Java应用程序的运行状态,通过合理使用这些命令行工具,我们可以深入了解JVM的内部机制,快速定位性能瓶颈,解决内存泄漏等问题,本文将详细介绍JVM命令行工具的使用方法及其在实际开发中的应用场景,JVM命令行工具主要分为……

    2025-11-17
    0
  • PostgreSQL数据库常用命令有哪些?

    PostgreSQL 是一款功能强大的开源关系型数据库管理系统,以其丰富的功能、高可靠性和良好的扩展性著称,掌握其常用命令是高效管理和操作数据库的基础,以下从数据库连接、用户与权限管理、数据库与对象操作、数据操作与查询、备份与恢复等方面详细介绍 PostgreSQL 的核心命令,数据库连接与退出连接 Postg……

    2025-11-16
    0
  • Oracle如何用命令导出SQL文件?

    在Oracle数据库管理中,将数据或结构导出为SQL文件是一项常见操作,可通过多种命令工具实现,如expdp(数据泵导出)、exp(传统导出)以及直接使用SQL查询生成脚本,以下是详细操作步骤及注意事项,使用数据泵导出工具(expdp)数据泵是Oracle推荐的高效导出工具,支持导出表、用户、表空间等对象,并生……

    2025-11-15
    0
  • MySQL 客户端命令有哪些常用操作?

    MySQL 客户端命令是数据库管理员和开发人员与 MySQL 数据库交互的核心工具,通过命令行界面可以高效地执行数据库操作、管理数据以及进行系统维护,以下是常用 MySQL 客户端命令的详细介绍,涵盖连接、数据库操作、表管理、数据查询与维护等核心功能,连接与退出 MySQL 服务器要使用 MySQL 客户端,首……

    2025-11-15
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注