Oracle DBA 应该掌握的 100 条命令(建议收藏)
前言Oracle DBA 的日常工作并不是简单地执行几条 SQL。数据库启动失败、会话阻塞、表空间告警、UNDO 异常、SQL 性能下降、归档堆积、备份失效、Data Guard 延迟这些问题最终都需要通过命令和动态性能视图定位。本文整理了 Oracle DBA 工作中使用频率较高的 100 条命令覆盖实例管理、参数配置、会话排查、锁分析、SQL 性能、表空间、用户权限、UNDO、临时表空间、RMAN、Data Guard、RAC、Data Pump 和操作系统诊断等场景。文中的用户名、路径、SID、SQL_ID、表空间名称和数据文件编号均为示例执行时需要根据实际环境替换。涉及删除、恢复、强制终止会话等操作时应先确认影响范围避免直接在生产环境中照搬执行。一、实例与数据库管理1. 以 SYSDBA 身份登录数据库sqlplus / as sysdba远程登录可以使用sqlplus sysorcl as sysdba2. 启动数据库STARTUP;该命令依次完成实例启动、控制文件加载和数据库打开。3. 启动数据库到 MOUNT 状态STARTUP MOUNT;MOUNT 状态通常用于数据库恢复、启用归档模式、修改数据文件路径等操作。4. 启动数据库到 NOMOUNT 状态STARTUP NOMOUNT;NOMOUNT 状态通常用于创建数据库、重建控制文件或恢复控制文件。5. 将数据库从 MOUNT 状态打开ALTER DATABASE OPEN;如果需要以只读方式打开ALTER DATABASE OPEN READ ONLY;6. 正常关闭数据库SHUTDOWN IMMEDIATE;生产环境通常优先使用IMMEDIATE它会回滚未提交事务并断开用户连接不需要等待所有会话主动退出。7. 查看实例状态SELECT instance_name, host_name, version, status, database_status, startup_time FROM v$instance;8. 查看数据库状态和角色SELECT name, open_mode, database_role, log_mode, protection_mode, switchover_status FROM v$database;9. 查看数据库是否启用归档模式ARCHIVE LOG LIST;也可以执行SELECT log_mode FROM v$database;10. 查看数据库数据文件总大小SELECT ROUND(SUM(bytes) / 1024 / 1024 / 1024, 2) AS datafile_gb FROM dba_data_files;该结果只统计永久数据文件不包括临时文件、控制文件、联机重做日志和归档日志。二、参数、控制文件和重做日志11. 查看数据库参数SHOW PARAMETER processes;也可以查询动态性能视图SELECT name, value, isdefault, issys_modifiable FROM v$parameter WHERE name processes;12. 在线修改数据库参数ALTER SYSTEM SET open_cursors 1000 SCOPEBOTH SID*;常用的SCOPE取值MEMORY只修改当前实例重启后失效SPFILE只修改参数文件重启后生效BOTH同时修改内存和 SPFILE13. 从 SPFILE 中删除参数ALTER SYSTEM RESET open_cursors SCOPESPFILE SID*;删除静态参数后通常需要重启实例。14. 根据 SPFILE 创建 PFILECREATE PFILE/tmp/initorcl.ora FROM SPFILE;该命令常用于备份当前实例参数或修改无法正常启动的 SPFILE。15. 根据 PFILE 创建 SPFILECREATE SPFILE FROM PFILE/tmp/initorcl.ora;RAC 环境应确认 SPFILE 是否位于 ASM 或共享存储中不能直接覆盖正在使用的错误位置。16. 查看控制文件位置SHOW PARAMETER control_files;也可以执行SELECT name FROM v$controlfile;17. 查看联机重做日志组和成员SELECT l.group#, l.thread#, l.sequence#, l.bytes / 1024 / 1024 AS size_mb, l.status, l.archived, f.member FROM v$log l JOIN v$logfile f ON l.group# f.group# ORDER BY l.thread#, l.group#, f.member;18. 手工切换联机重做日志ALTER SYSTEM SWITCH LOGFILE;该操作会结束当前日志组的写入并切换到下一个可用日志组。19. 手工执行检查点ALTER SYSTEM CHECKPOINT;检查点会推进控制文件和数据文件头中的检查点信息但不等于将所有脏块立即写完。20. 归档当前重做日志ALTER SYSTEM ARCHIVE LOG CURRENT;与SWITCH LOGFILE相比该命令会等待当前日志完成归档在备份和 Data Guard 运维中使用较多。三、会话、事务和锁排查21. 查看当前活动会话SELECT sid, serial#, username, status, machine, program, event, sql_id, last_call_et FROM v$session WHERE type USER AND status ACTIVE ORDER BY last_call_et DESC;22. 查看指定会话的详细信息SELECT sid, serial#, username, osuser, machine, program, module, action, status, event, wait_class, sql_id, prev_sql_id, logon_time FROM v$session WHERE sid 123;23. 按用户和程序统计连接数SELECT username, machine, program, status, COUNT(*) AS session_count FROM v$session WHERE type USER GROUP BY username, machine, program, status ORDER BY session_count DESC;该命令适合排查连接池连接泄漏、异常程序连接增长和数据库进程数不足。24. 查看长时间运行的操作SELECT sid, serial#, opname, target, sofar, totalwork, units, ROUND(sofar / NULLIF(totalwork, 0) * 100, 2) AS progress_pct, elapsed_seconds, time_remaining FROM v$session_longops WHERE sofar totalwork ORDER BY start_time;并不是所有 SQL 都会出现在v$session_longops中通常大表扫描、备份恢复、统计信息收集等操作更容易被记录。25. 查看被阻塞的会话SELECT sid, serial#, username, blocking_session, event, seconds_in_wait, sql_id FROM v$session WHERE blocking_session IS NOT NULL ORDER BY seconds_in_wait DESC;26. 查看锁等待关系SELECT a.sid AS blocker_sid, b.sid AS waiter_sid, a.id1, a.id2, b.request, b.lmode FROM v$lock a JOIN v$lock b ON a.id1 b.id1 AND a.id2 b.id2 WHERE a.block 1 AND b.request 0;该查询可以快速找到持锁会话和等待会话之间的关系。27. 查看被锁定的对象SELECT s.sid, s.serial#, s.username, o.owner, o.object_name, o.object_type, l.locked_mode FROM v$locked_object l JOIN dba_objects o ON l.object_id o.object_id JOIN v$session s ON l.session_id s.sid ORDER BY s.sid;28. 强制终止会话ALTER SYSTEM KILL SESSION 123,4567 IMMEDIATE;其中123是 SID4567是 SERIAL#RAC 环境中可以指定实例ALTER SYSTEM KILL SESSION 123,4567,2 IMMEDIATE;29. 断开数据库会话ALTER SYSTEM DISCONNECT SESSION 123,4567 IMMEDIATE;如果希望等待当前事务完成后再断开ALTER SYSTEM DISCONNECT SESSION 123,4567 POST_TRANSACTION;30. 查看正在使用 UNDO 的事务SELECT s.sid, s.serial#, s.username, t.start_time, t.used_ublk, t.used_urec, ROUND( t.used_ublk * TO_NUMBER((SELECT value FROM v$parameter WHERE name db_block_size)) / 1024 / 1024, 2 ) AS undo_mb FROM v$transaction t JOIN v$session s ON t.ses_addr s.saddr ORDER BY t.used_ublk DESC;四、SQL 性能诊断31. 查看指定会话正在执行的 SQLSELECT s.sid, s.serial#, s.sql_id, q.sql_text FROM v$session s LEFT JOIN v$sql q ON s.sql_id q.sql_id AND s.sql_child_number q.child_number WHERE s.sid 123;32. 根据 SQL_ID 查看完整 SQL 文本SELECT sql_text FROM v$sqltext_with_newlines WHERE sql_id sql_id ORDER BY piece;33. 查看累计执行时间最高的 SQLSELECT * FROM ( SELECT sql_id, executions, ROUND(elapsed_time / 1000000, 2) AS elapsed_seconds, ROUND( elapsed_time / NULLIF(executions, 0) / 1000000, 4 ) AS avg_elapsed_seconds, sql_text FROM v$sql WHERE executions 0 ORDER BY elapsed_time DESC ) WHERE ROWNUM 20;34. 查看 CPU 消耗最高的 SQLSELECT * FROM ( SELECT sql_id, executions, ROUND(cpu_time / 1000000, 2) AS cpu_seconds, ROUND( cpu_time / NULLIF(executions, 0) / 1000000, 4 ) AS avg_cpu_seconds, sql_text FROM v$sql WHERE executions 0 ORDER BY cpu_time DESC ) WHERE ROWNUM 20;35. 查看逻辑读最高的 SQLSELECT * FROM ( SELECT sql_id, executions, buffer_gets, ROUND( buffer_gets / NULLIF(executions, 0), 2 ) AS gets_per_exec, sql_text FROM v$sql WHERE executions 0 ORDER BY buffer_gets DESC ) WHERE ROWNUM 20;36. 查看物理读最高的 SQLSELECT * FROM ( SELECT sql_id, executions, disk_reads, ROUND( disk_reads / NULLIF(executions, 0), 2 ) AS reads_per_exec, sql_text FROM v$sql WHERE executions 0 ORDER BY disk_reads DESC ) WHERE ROWNUM 20;37. 使用 EXPLAIN PLAN 查看执行计划EXPLAIN PLAN FOR SELECT * FROM app_user.orders WHERE order_id 10001; SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);EXPLAIN PLAN展示的是优化器预估执行计划不一定等于 SQL 实际运行时使用的计划。38. 查看 SQL 实际执行计划SELECT * FROM TABLE( DBMS_XPLAN.DISPLAY_CURSOR( sql_id sql_id, cursor_child_no NULL, format ALLSTATS LAST PEEKED_BINDS OUTLINE ) );要查看准确的每一步实际行数SQL 执行时需要开启行源统计例如使用SELECT /* GATHER_PLAN_STATISTICS */ ...39. 查看 SQL 捕获到的绑定变量SELECT sql_id, child_number, name, position, datatype_string, value_string, last_captured FROM v$sql_bind_capture WHERE sql_id sql_id ORDER BY child_number, position;绑定变量不会在每次执行时都被捕获因此该视图中的值可能为空或不是最新值。40. 查看指定会话累计等待事件SELECT * FROM ( SELECT event, total_waits, time_waited, average_wait, max_wait FROM v$session_event WHERE sid 123 ORDER BY time_waited DESC ) WHERE ROWNUM 20;该结果是会话生命周期内的累计等待情况不只是当前 SQL 的等待数据。五、表空间和数据文件管理41. 查看永久表空间使用率并计算自动扩展上限SELECT d.tablespace_name, ROUND(d.bytes / 1024 / 1024 / 1024, 2) AS current_gb, ROUND( (d.bytes - NVL(f.bytes, 0)) / 1024 / 1024 / 1024, 2 ) AS used_gb, ROUND(NVL(f.bytes, 0) / 1024 / 1024 / 1024, 2) AS free_gb, ROUND( (d.bytes - NVL(f.bytes, 0)) / d.bytes * 100, 2 ) AS current_used_pct, ROUND(d.maxbytes / 1024 / 1024 / 1024, 2) AS max_gb, ROUND( (d.maxbytes - d.bytes NVL(f.bytes, 0)) / 1024 / 1024 / 1024, 2 ) AS remaining_to_max_gb FROM ( SELECT tablespace_name, SUM(bytes) AS bytes, SUM( CASE WHEN autoextensible YES THEN maxbytes ELSE bytes END ) AS maxbytes FROM dba_data_files GROUP BY tablespace_name ) d LEFT JOIN ( SELECT tablespace_name, SUM(bytes) AS bytes FROM dba_free_space GROUP BY tablespace_name ) f ON d.tablespace_name f.tablespace_name ORDER BY current_used_pct DESC;42. 查看数据文件信息SELECT file_id, tablespace_name, file_name, ROUND(bytes / 1024 / 1024 / 1024, 2) AS current_gb, autoextensible, ROUND(maxbytes / 1024 / 1024 / 1024, 2) AS max_gb, status FROM dba_data_files ORDER BY tablespace_name, file_id;43. 查看临时文件信息SELECT file_id, tablespace_name, file_name, ROUND(bytes / 1024 / 1024 / 1024, 2) AS current_gb, autoextensible, ROUND(maxbytes / 1024 / 1024 / 1024, 2) AS max_gb, status FROM dba_temp_files ORDER BY tablespace_name, file_id;44. 为表空间增加数据文件ALTER TABLESPACE USERS ADD DATAFILE /u01/oradata/ORCL/users02.dbf SIZE 10G AUTOEXTEND ON NEXT 1G MAXSIZE 40G;执行前应确认文件系统剩余空间、Oracle 用户权限、数据库块大小和数据文件最大块数限制。45. 调整数据文件大小ALTER DATABASE DATAFILE /u01/oradata/ORCL/users02.dbf RESIZE 20G;缩小数据文件时如果目标位置之后仍存在已使用数据块会返回ORA-03297。46. 开启数据文件自动扩展ALTER DATABASE DATAFILE /u01/oradata/ORCL/users02.dbf AUTOEXTEND ON NEXT 1G MAXSIZE 40G;不建议无规划地设置为MAXSIZE UNLIMITED尤其是在文件系统空间有限的环境中。47. 将表空间设置为只读ALTER TABLESPACE ARCHIVE_DATA READ ONLY;恢复读写状态ALTER TABLESPACE ARCHIVE_DATA READ WRITE;48. 将表空间脱机或联机ALTER TABLESPACE APP_DATA OFFLINE IMMEDIATE;恢复联机ALTER TABLESPACE APP_DATA ONLINE;不要随意对SYSTEM、SYSAUX、当前 UNDO 和当前默认临时表空间执行脱机操作。49. 创建表空间CREATE TABLESPACE APP_DATA DATAFILE /u01/oradata/ORCL/app_data01.dbf SIZE 20G AUTOEXTEND ON NEXT 1G MAXSIZE 100G EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;50. 删除表空间及其数据文件DROP TABLESPACE APP_DATA INCLUDING CONTENTS AND DATAFILES;这是不可逆的高风险操作。执行前必须确认对象归属、备份状态和业务影响。六、段、对象、用户和权限51. 查看数据库中最大的段SELECT * FROM ( SELECT owner, segment_name, partition_name, segment_type, tablespace_name, ROUND(bytes / 1024 / 1024 / 1024, 2) AS size_gb FROM dba_segments ORDER BY bytes DESC ) WHERE ROWNUM 30;52. 查看各 Schema 占用空间SELECT owner, ROUND(SUM(bytes) / 1024 / 1024 / 1024, 2) AS size_gb FROM dba_segments GROUP BY owner ORDER BY size_gb DESC;53. 查看指定表段的大小SELECT owner, segment_name, segment_type, ROUND(SUM(bytes) / 1024 / 1024 / 1024, 2) AS size_gb FROM dba_segments WHERE owner APP_USER AND segment_name ORDERS GROUP BY owner, segment_name, segment_type;该查询只统计指定名称的段。如果表包含 LOB、分区和索引还需要分别统计相关段。54. 查看索引状态SELECT owner, index_name, table_name, index_type, status, visibility, tablespace_name, last_analyzed FROM dba_indexes WHERE owner APP_USER ORDER BY table_name, index_name;Oracle 11g 中如果视图不存在VISIBILITY列可以从查询中删除该列。55. 查看失效对象SELECT owner, object_type, object_name, status FROM dba_objects WHERE status INVALID ORDER BY owner, object_type, object_name;56. 编译指定 Schema 下的失效对象EXEC DBMS_UTILITY.COMPILE_SCHEMA( schema APP_USER, compile_all FALSE );数据库升级或批量变更后也可以执行 Oracle 自带脚本?/rdbms/admin/utlrp.sql57. 创建数据库用户CREATE USER app_user IDENTIFIED BY StrongPassword_2026 DEFAULT TABLESPACE app_data TEMPORARY TABLESPACE temp PROFILE default;在 Oracle 12c 及以上 CDB 环境中应先确认当前容器避免在 CDB 根容器中错误创建本地用户。58. 授予用户登录权限GRANT CREATE SESSION TO app_user;根据业务需要再授予对象创建权限不建议直接授予DBA角色。例如GRANT CREATE TABLE, CREATE VIEW, CREATE PROCEDURE, CREATE SEQUENCE TO app_user;59. 分配表空间配额ALTER USER app_user QUOTA 20G ON app_data;授予无限配额ALTER USER app_user QUOTA UNLIMITED ON app_data;60. 锁定、解锁或强制用户修改密码锁定用户ALTER USER app_user ACCOUNT LOCK;解锁用户ALTER USER app_user ACCOUNT UNLOCK;强制下次登录修改密码ALTER USER app_user PASSWORD EXPIRE;修改密码并解锁ALTER USER app_user IDENTIFIED BY NewPassword_2026 ACCOUNT UNLOCK;七、临时表空间、UNDO 和统计信息61. 查看临时表空间使用情况SELECT tablespace_name, ROUND(SUM(bytes_used) / 1024 / 1024 / 1024, 2) AS used_gb, ROUND(SUM(bytes_free) / 1024 / 1024 / 1024, 2) AS free_gb, ROUND( SUM(bytes_used) / NULLIF(SUM(bytes_used) SUM(bytes_free), 0) * 100, 2 ) AS used_pct FROM v$temp_space_header GROUP BY tablespace_name;62. 查看占用临时空间最多的会话SELECT s.sid, s.serial#, s.username, s.sql_id, u.tablespace, u.segtype, ROUND( u.blocks * t.block_size / 1024 / 1024, 2 ) AS temp_mb FROM v$tempseg_usage u JOIN v$session s ON u.session_addr s.saddr JOIN dba_tablespaces t ON u.tablespace t.tablespace_name ORDER BY temp_mb DESC;63. 查看临时段整体使用情况SELECT tablespace_name, current_users, used_blocks, free_blocks, ROUND(used_blocks * block_size / 1024 / 1024, 2) AS used_mb, ROUND(free_blocks * block_size / 1024 / 1024, 2) AS free_mb FROM v$sort_segment;64. 增加临时文件ALTER TABLESPACE TEMP ADD TEMPFILE /u01/oradata/ORCL/temp02.dbf SIZE 20G AUTOEXTEND ON NEXT 1G MAXSIZE 50G;65. 调整临时文件大小ALTER DATABASE TEMPFILE /u01/oradata/ORCL/temp02.dbf RESIZE 30G;缩小临时文件前应确认当前临时段高水位和正在使用临时空间的会话。66. 查看 UNDO 区间状态SELECT tablespace_name, status, ROUND(SUM(bytes) / 1024 / 1024 / 1024, 2) AS size_gb FROM dba_undo_extents GROUP BY tablespace_name, status ORDER BY tablespace_name, status;UNDO 区间常见状态ACTIVE正在被事务使用UNEXPIRED事务已结束但仍在保留期内EXPIRED可以被重新使用67. 查看占用 UNDO 最多的活动事务SELECT s.sid, s.serial#, s.username, s.sql_id, t.start_time, t.used_ublk, t.used_urec, ROUND( t.used_ublk * TO_NUMBER((SELECT value FROM v$parameter WHERE name db_block_size)) / 1024 / 1024, 2 ) AS undo_mb FROM v$transaction t JOIN v$session s ON t.ses_addr s.saddr ORDER BY undo_mb DESC;68. 查看和修改 UNDO_RETENTIONSHOW PARAMETER undo_retention;修改保留时间为 3600 秒ALTER SYSTEM SET undo_retention 3600 SCOPEBOTH;UNDO_RETENTION并不意味着所有 UNDO 一定会保留指定时间。当 UNDO 空间不足且未启用RETENTION GUARANTEE时未过期区间仍可能被覆盖。69. 收集 Schema 统计信息BEGIN DBMS_STATS.GATHER_SCHEMA_STATS( ownname APP_USER, estimate_percent DBMS_STATS.AUTO_SAMPLE_SIZE, method_opt FOR ALL COLUMNS SIZE AUTO, degree DBMS_STATS.AUTO_DEGREE, cascade TRUE ); END; /70. 收集指定表的统计信息BEGIN DBMS_STATS.GATHER_TABLE_STATS( ownname APP_USER, tabname ORDERS, estimate_percent DBMS_STATS.AUTO_SAMPLE_SIZE, method_opt FOR ALL COLUMNS SIZE AUTO, degree DBMS_STATS.AUTO_DEGREE, cascade TRUE, no_invalidate FALSE ); END; /生产环境收集大表统计信息时需要评估并行度、采样比例、执行窗口和执行计划变化风险。八、RMAN 备份和恢复以下命令在 RMAN 中执行。71. 登录 RMANrman target /远程连接示例rman target sysorcl72. 查看 RMAN 当前配置SHOW ALL;重点检查保留策略控制文件自动备份备份设备类型备份并行度归档日志删除策略73. 查看数据库文件结构REPORT SCHEMA;该命令可以查看数据文件编号、数据文件大小和所属表空间恢复单个数据文件时经常使用。74. 查看备份摘要LIST BACKUP SUMMARY;查看更详细的数据库备份LIST BACKUP OF DATABASE;75. 校验备份记录并清理失效记录CROSSCHECK BACKUP; DELETE NOPROMPT EXPIRED BACKUP;EXPIRED表示 RMAN 仓库中有记录但实际备份文件无法找到不等于备份已经超过保留策略。76. 备份数据库和归档日志BACKUP AS COMPRESSED BACKUPSET DATABASE PLUS ARCHIVELOG;是否使用压缩备份集应根据 CPU 资源、备份窗口和存储空间综合判断。77. 备份归档日志并删除已备份文件BACKUP ARCHIVELOG ALL DELETE INPUT;Data Guard 环境中必须结合归档日志删除策略避免归档日志尚未传输或应用就被删除。78. 删除超过保留策略的备份REPORT OBSOLETE; DELETE NOPROMPT OBSOLETE;执行删除前建议先运行REPORT OBSOLETE检查即将删除的备份范围。79. 校验数据库和归档日志BACKUP VALIDATE CHECK LOGICAL DATABASE ARCHIVELOG ALL;也可以验证现有备份是否能够被读取RESTORE DATABASE VALIDATE;VALIDATE不会真正恢复数据文件但可以检查备份片可读性和部分物理、逻辑损坏。80. 恢复单个数据文件假设需要恢复 7 号数据文件RUN { SQL ALTER DATABASE DATAFILE 7 OFFLINE; RESTORE DATAFILE 7; RECOVER DATAFILE 7; SQL ALTER DATABASE DATAFILE 7 ONLINE; }SYSTEM、当前 UNDO、控制文件和数据库非归档模式下的数据文件恢复处理流程可能不同不能直接套用该命令。九、Data Guard、RAC 和 PDB81. 查看 Data Guard 数据库角色和保护模式SELECT name, database_role, open_mode, protection_mode, protection_level, switchover_status FROM v$database;82. 查看归档目标状态SELECT dest_id, status, destination, target, archiver, process, transmit_mode, error FROM v$archive_dest_status WHERE status INACTIVE ORDER BY dest_id;如果ERROR列有内容应进一步检查网络、服务名、归档路径、密码文件和备库状态。83. 查看 Data Guard 日志缺口SELECT thread#, low_sequence#, high_sequence# FROM v$archive_gap;该视图通常一次只显示当前需要处理的一个日志缺口修复后可能还会显示后续缺口。84. 查看备库日志应用进程SELECT process, status, thread#, sequence#, block#, blocks FROM v$managed_standby ORDER BY process;常见进程包括RFS接收主库日志MRP0日志应用协调进程ARCH归档进程85. 启动备库实时日志应用ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;较新版本中即使不显式指定USING CURRENT LOGFILE也可能默认使用实时应用但在不同版本环境中应以实际行为为准。86. 停止备库日志应用ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;进行备库维护、切换或恢复操作前经常需要先停止 MRP。87. 查看备库最后接收和应用的日志序列SELECT thread#, MAX(sequence#) AS last_received, MAX( CASE WHEN applied YES THEN sequence# END ) AS last_applied FROM v$archived_log GROUP BY thread# ORDER BY thread#;仅比较日志序列号不能完整反映延迟时间还应结合归档日志时间、v$dataguard_stats和业务恢复点综合判断。88. 查看 RAC 各实例状态SELECT inst_id, instance_name, host_name, version, status, database_status, startup_time FROM gv$instance ORDER BY inst_id;89. 统计 RAC 各实例会话数SELECT inst_id, username, status, COUNT(*) AS session_count FROM gv$session WHERE type USER GROUP BY inst_id, username, status ORDER BY inst_id, session_count DESC;该命令可以检查业务连接是否均衡分布在 RAC 各节点。90. 查看并打开 PDBOracle 12c 及以上版本可以执行SHOW PDBS;打开全部 PDBALTER PLUGGABLE DATABASE ALL OPEN;保存 PDB 打开状态ALTER PLUGGABLE DATABASE ALL SAVE STATE;查看当前容器SHOW CON_NAME;十、Scheduler、Data Pump、监听和操作系统诊断91. 查看 Scheduler 作业状态SELECT owner, job_name, enabled, state, last_start_date, last_run_duration, next_run_date, failure_count FROM dba_scheduler_jobs ORDER BY owner, job_name;92. 手工运行 Scheduler 作业BEGIN DBMS_SCHEDULER.RUN_JOB( job_name APP_USER.JOB_SYNC_DATA, use_current_session FALSE ); END; /设置为FALSE时作业在后台运行设置为TRUE时当前会话会等待作业执行完成。93. 强制停止 Scheduler 作业BEGIN DBMS_SCHEDULER.STOP_JOB( job_name APP_USER.JOB_SYNC_DATA, force TRUE ); END; /强制停止作业可能导致业务事务中断应先确认作业当前正在执行的内容。94. 创建 Data Pump 目录首先在操作系统中创建目录mkdir -p /backup/dump chown oracle:oinstall /backup/dump chmod 750 /backup/dump然后在数据库中创建目录对象CREATE OR REPLACE DIRECTORY DUMP_DIR AS /backup/dump; GRANT READ, WRITE ON DIRECTORY DUMP_DIR TO app_user;Oracle 数据库不会自动创建操作系统目录。95. 使用 expdp 导出 Schemaexpdp systemorcl \ schemasAPP_USER \ directoryDUMP_DIR \ dumpfileapp_user_%U.dmp \ logfileapp_user_exp.log \ parallel4 \ filesize20G \ compressionall多文件并行导出时DUMPFILE中应包含%U。96. 使用 impdp 导入并映射 Schemaimpdp systemorcl \ directoryDUMP_DIR \ dumpfileapp_user_%U.dmp \ logfileapp_user_imp.log \ remap_schemaAPP_USER:APP_USER_TEST \ remap_tablespaceAPP_DATA:APP_DATA_TEST \ parallel4如果目标用户不存在应根据导出内容和导入方式确认是否需要提前创建用户、表空间和配额。97. 查看监听状态lsnrctl status查看监听支持的服务lsnrctl services启动和停止监听lsnrctl start lsnrctl stop98. 测试 Oracle 网络服务名tnsping orcltnsping只能验证客户端能否解析服务名并访问监听地址不能证明数据库用户一定可以成功登录。真正测试数据库连接应使用sqlplus app_userorcl99. 使用 ADRCI 查看告警日志查看诊断目录adrci execshow homes查看最近 100 行告警日志adrci execset homepath diag/rdbms/orcl/orcl; show alert -tail 100 -term持续跟踪告警日志adrci execset homepath diag/rdbms/orcl/orcl; show alert -tail -f其中homepath需要根据show homes的实际结果修改。100. 在操作系统中查找 Oracle 实例和高 CPU 进程查看服务器上的 Oracle 实例ps -ef | grep [o]ra_pmon查看 CPU 使用率最高的 Oracle 进程ps -eo pid,ppid,%cpu,%mem,etime,args \ --sort-%cpu | grep [o]ra_ | head -20拿到操作系统进程号后可以在数据库中反查会话SELECT p.spid, s.sid, s.serial#, s.username, s.status, s.event, s.sql_id, s.machine, s.program FROM v$process p JOIN v$session s ON p.addr s.paddr WHERE p.spid os_pid;写在最后Oracle DBA 真正需要掌握的并不是“记住多少条命令”而是知道每条命令应该在什么场景下执行、查询结果说明了什么、下一步应该验证什么。看到 CPU 高不能只查高 CPU SQL还要判断是 SQL 计算量大、解析频繁、并行失控还是大量会话被唤醒后争抢 CPU看到表空间使用率高也不能立即增加数据文件而应先区分真实业务增长、异常段膨胀、回收站占用、LOB 增长还是数据文件自动扩展配置不合理。命令只是入口判断路径才是 DBA 的核心能力。更多 Oracle、MySQL、PostgreSQL、SQL Server 数据库实战内容可以访问 DBA 学习平台ora100.com

相关新闻

蚂蚁InTech奖最后7天冲刺指南:技术评审逻辑与高效申报策略

蚂蚁InTech奖最后7天冲刺指南:技术评审逻辑与高效申报策略

1. 项目概述:一场不容错过的技术盛宴如果你是一位在人工智能、数据科学、区块链或金融科技领域深耕的技术人,最近一定被“蚂蚁InTech奖”刷屏了。这个由蚂蚁集团发起的奖项,已经走到了第三届,而今年的申报窗口,只剩下最…

2026/10/12 23:20:35 阅读更多 →
5分钟掌握OneMore:让OneNote文档排版效率提升300%的终极指南

5分钟掌握OneMore:让OneNote文档排版效率提升300%的终极指南

5分钟掌握OneMore:让OneNote文档排版效率提升300%的终极指南 【免费下载链接】OneMore A OneNote add-in with simple, yet powerful and useful features 项目地址: https://gitcode.com/gh_mirrors/on/OneMore 还在为OneNote文档排版而烦恼吗?手…

2026/10/11 1:08:03 阅读更多 →
CMAKE备忘录

CMAKE备忘录

目录 CMake 是什么? 1.set() 2.file() 用于 文件和目录操作 1. 查找文件(最常用) 查找 .cpp 文件 递归查找 2. 读取文件 3. 写文件 4. 复制文件 5. 创建目录 6. 删除文件 7. 获取绝对路径 常用场景 自动添加源码 复制配置文件…

2026/10/12 15:12:34 阅读更多 →

最新新闻

用层次分析法(AHP)科学决策就业选择

用层次分析法(AHP)科学决策就业选择

1. 为什么就业选择不能只靠“感觉”和“听说”刚带完一届毕业设计,有位A同学连续三周来找我聊就业方向:一会儿说“听说算法岗钱多”,一会儿又焦虑“听说现在卷得不行”,最后拿出一张密密麻麻的Excel表,列了8家公司的岗…

2026/10/13 10:01:17 阅读更多 →
ICO头像制作与设置全指南:从选图到兼容性避坑

ICO头像制作与设置全指南:从选图到兼容性避坑

简介:关于ico小头像(即favicon)设置的实用指南,面向网站运营者、博客博主及前端入门用户,旨在解决站点图标缺失或显示异常的问题。文档围绕favicon的完整配置流程展开:先设计并生成16x16、32x32、64x64等多…

2026/10/13 10:01:17 阅读更多 →
编码智能体决策层实践:双引擎分工降低延迟与Token消耗

编码智能体决策层实践:双引擎分工降低延迟与Token消耗

我一直在折腾一个叫 Jev 的编码智能体,做的事情简单说就是:让程序自己读仓库、改代码、跑测试、修问题。前两版跑下来,我发现最头疼的还真不是模型不会写代码,而是它太能“纠结”了。每走一步都要反复权衡:先看哪个文件…

2026/10/13 10:01:17 阅读更多 →
【安防AI工程实战系列五】AI智能摄像常见报错、终极排查与避坑指南

【安防AI工程实战系列五】AI智能摄像常见报错、终极排查与避坑指南

AI智能摄像常见报错、终极排查与避坑指南 在AI智能摄像头、机器视觉、边缘AI部署项目中,绝大多数开发者遇到的问题不是算法不准,而是环境报错、画面异常、推理卡顿、告警失效。很多项目代码没问题、模型没问题,最终卡死在设备调用、流传输、…

2026/10/13 10:01:17 阅读更多 →
MP4网页播放一直转圈?先看200还是206

MP4网页播放一直转圈?先看200还是206

我会先留住网页里一直转圈的那份 MP4,再确认网站把它怎样送到了播放器。重新导出也会换掉排查对象。这次本地复现中的同一份视频没有重新编码。仅改变服务器对请求的处理方式就让首帧等待中位数从 5.782 秒变成了 0.795 秒。文件还没动,现象已经变了。 …

2026/10/13 10:01:17 阅读更多 →
PowerContext挂接MiniMax Code:终结跨会话与跨Agent上下文断裂

PowerContext挂接MiniMax Code:终结跨会话与跨Agent上下文断裂

大约两个星期前,我把手头的项目从“上下文完全靠每次手动贴”的方式,切到了 PowerContext 挂接 MiniMax Code 的方式。困扰我很久的一个问题终于不再是问题:跨会话和跨 Agent 之间的项目上下文,不再断裂了。起因很简单。我开一个新…

2026/10/13 10:00:16 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →