Oracle 19c 常用运维命令大全

Oracle 19c 常用运维命令大全

Oracle 19c(长期支持版本 LTS)默认采用 多租户架构(Multitenant):一个 CDB(Container Database,容器数据库)内可挂载多个 PDB(Pluggable Database,可插拔数据库)。日常运维中大量命令需要区分「操作 CDB 根容器」还是「操作某个 PDB」,这是与 11g 最大的差异。

本文按日常运维场景整理 19c 常用命令:环境变量与登录、监听器、实例启停、CDB/PDB 管理、表空间、用户权限、会话排查、数据泵、RMAN 备份等,适合作为案头速查手册。


一、环境变量与登录

Oracle 用户(一般为 oracle)常用环境变量:

bash 复制代码
# 通常在 ~/.bash_profile 或 /etc/profile 中配置
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.0.0/dbhome_1
export ORACLE_SID=orcl              # CDB 的实例名
export PATH=$ORACLE_HOME/bin:$PATH
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8

查看当前环境变量:

bash 复制代码
echo $ORACLE_HOME
echo $ORACLE_SID
env | grep -i ora

登录方式:

bash 复制代码
# 以 sysdba 身份本地登录(免密,操作系统认证)
sqlplus / as sysdba

# 先启动空会话再连接
sqlplus /nolog
SQL> conn / as sysdba

# 用户名密码登录本地实例
sqlplus system/password

# 通过网络服务名登录
sqlplus system/password@orclpdb

# 直连 PDB(easy connect 语法:主机:端口/服务名)
sqlplus system/password@//192.168.1.10:1521/orclpdb

二、监听器管理(lsnrctl)

监听器负责接收客户端连接请求,是数据库对外服务的入口,与数据库实例是独立进程,需单独启停。

bash 复制代码
lsnrctl status          # 查看监听器状态、已注册的服务
lsnrctl start           # 启动监听器
lsnrctl stop            # 停止监听器
lsnrctl reload          # 重新加载 listener.ora 配置(不中断现有连接)
lsnrctl services        # 查看详细服务注册信息
lsnrctl version         # 查看监听器版本

配置文件位置:

bash 复制代码
$ORACLE_HOME/network/admin/listener.ora   # 监听器配置
$ORACLE_HOME/network/admin/tnsnames.ora   # 客户端网络服务名配置

测试网络服务名连通性:

bash 复制代码
tnsping orclpdb

排查「监听正常但连不上库」时,先看 lsnrctl status 中服务是否为 READY 状态;若为 BLOCKED 说明实例还在 mount 阶段未 open。


三、实例启动与停止

需以 sysdba 身份操作。启动分三个阶段:NOMOUNT(读参数文件、启动实例)→ MOUNT(读控制文件)→ OPEN(打开数据文件,可对外服务)。

sql 复制代码
-- 完整启动(一步到 OPEN)
startup;

-- 分阶段启动
startup nomount;              -- 仅启动实例(用于创建数据库、重建控制文件)
alter database mount;         -- 挂载数据库(用于恢复、改归档模式)
alter database open;          -- 打开数据库

-- 以只读模式打开
startup mount;
alter database open read only;

-- 强制启动(上次异常关闭后)
startup force;

-- 用指定参数文件启动
startup pfile=/tmp/initorcl.ora;

关闭方式(4 种):

sql 复制代码
shutdown immediate;      -- 【推荐】回滚未提交事务,断开会话,干净关闭
shutdown transactional;  -- 等待当前事务完成后关闭
shutdown normal;         -- 等待所有会话主动断开(生产慎用,可能挂很久)
shutdown abort;          -- 强制立即终止,下次启动需实例恢复(应急才用)

生产环境标准重启:shutdown immediate; 然后 startup;。只有 immediate 挂住无响应时才考虑 abort


四、多租户 CDB / PDB 管理(19c 核心)

查看容器信息

sql 复制代码
-- 当前所在容器
show con_name;
SELECT SYS_CONTEXT('USERENV','CON_NAME') FROM dual;

-- 查看所有 PDB 及其状态
show pdbs;
SELECT con_id, name, open_mode, restricted FROM v$pdbs;
SELECT pdb_name, status FROM cdb_pdbs;

open_mode 常见值:MOUNTED(未打开)、READ WRITE(正常可用)、READ ONLYMIGRATE

容器间切换

sql 复制代码
-- 从 CDB 根切换到指定 PDB
alter session set container = orclpdb;

-- 切换回根容器 CDB$ROOT
alter session set container = CDB$ROOT;

PDB 启动与关闭

sql 复制代码
-- 打开单个 PDB
alter pluggable database orclpdb open;
alter pluggable database orclpdb open read only;

-- 打开全部 PDB
alter pluggable database all open;

-- 关闭 PDB
alter pluggable database orclpdb close immediate;

-- 关闭全部
alter pluggable database all close immediate;

-- 在指定 PDB 内部操作时(已 set container 或直连 PDB)
startup;          -- 等价于 open
shutdown immediate;

重要 :CDB 重启后 PDB 默认处于 MOUNTED 状态,不会自动打开。需配置保存状态,否则每次重启后要手动 open:

sql 复制代码
-- 保存 PDB 当前打开状态,CDB 重启后自动恢复
alter pluggable database orclpdb save state;

-- 查看已保存的状态
SELECT con_name, state FROM dba_pdb_saved_states;

PDB 创建 / 删除(了解)

sql 复制代码
-- 从种子 PDB 克隆创建
create pluggable database newpdb admin user pdbadmin identified by password;

-- 删除 PDB(含数据文件)
alter pluggable database newpdb close immediate;
drop pluggable database newpdb including datafiles;

五、数据库状态与信息查询

sql 复制代码
-- 数据库版本
SELECT * FROM v$version;
SELECT banner_full FROM v$version;

-- 实例状态(status 应为 OPEN,database_status 应为 ACTIVE)
SELECT instance_name, host_name, version, status, database_status,
       startup_time FROM v$instance;

-- 数据库基本信息(名称、创建时间、归档模式、open 模式)
SELECT name, dbid, created, log_mode, open_mode, cdb FROM v$database;

-- 是否为多租户 CDB
SELECT name, cdb, con_id FROM v$database;

-- 数据库启动时长
SELECT to_char(startup_time,'YYYY-MM-DD HH24:MI:SS') FROM v$instance;

-- 当前连接的用户与容器
SELECT USER, SYS_CONTEXT('USERENV','CON_NAME') AS container FROM dual;

-- 字符集
SELECT * FROM nls_database_parameters WHERE parameter LIKE '%CHARACTERSET%';

六、表空间管理

sql 复制代码
-- 查看所有表空间
SELECT tablespace_name, status, contents FROM dba_tablespaces;

-- 表空间使用率(含使用/剩余/百分比)
SELECT d.tablespace_name,
       ROUND(d.total_mb, 2)                AS total_mb,
       ROUND(d.total_mb - f.free_mb, 2)    AS used_mb,
       ROUND(f.free_mb, 2)                 AS free_mb,
       ROUND((d.total_mb - f.free_mb) / d.total_mb * 100, 2) AS used_pct
FROM (SELECT tablespace_name, SUM(bytes)/1024/1024 total_mb
      FROM dba_data_files GROUP BY tablespace_name) d,
     (SELECT tablespace_name, SUM(bytes)/1024/1024 free_mb
      FROM dba_free_space GROUP BY tablespace_name) f
WHERE d.tablespace_name = f.tablespace_name
ORDER BY used_pct DESC;

-- 数据文件列表与自动扩展设置
SELECT tablespace_name, file_name, bytes/1024/1024 AS mb,
       autoextensible, maxbytes/1024/1024 AS max_mb
FROM dba_data_files;

-- 新增数据文件
ALTER TABLESPACE users
  ADD DATAFILE '/u01/app/oracle/oradata/ORCL/users02.dbf'
  SIZE 1G AUTOEXTEND ON NEXT 100M MAXSIZE 10G;

-- 扩大现有数据文件
ALTER DATABASE DATAFILE '/u01/app/oracle/oradata/ORCL/users01.dbf' RESIZE 5G;

-- 创建表空间
CREATE TABLESPACE app_data
  DATAFILE '/u01/app/oracle/oradata/ORCL/app_data01.dbf'
  SIZE 500M AUTOEXTEND ON NEXT 100M MAXSIZE 20G;

-- 临时表空间使用情况
SELECT tablespace_name, bytes_used/1024/1024 AS used_mb,
       bytes_free/1024/1024 AS free_mb
FROM v$temp_space_header;

PDB 有独立的表空间,查询表空间前务必先 alter session set container 切到目标 PDB。


七、用户与权限管理

在 19c 多租户下,用户分为:公共用户 C##(在 CDB 全局)本地用户(仅在某个 PDB 内,推荐)。日常业务用户应在 PDB 内创建。

sql 复制代码
-- 先切到目标 PDB
alter session set container = orclpdb;

-- 创建本地用户
CREATE USER appuser IDENTIFIED BY "your_password"
  DEFAULT TABLESPACE app_data
  TEMPORARY TABLESPACE temp
  QUOTA UNLIMITED ON app_data;

-- 授权
GRANT CONNECT, RESOURCE TO appuser;
GRANT CREATE SESSION, CREATE TABLE, CREATE VIEW TO appuser;
GRANT SELECT ON hr.employees TO appuser;   -- 单表查询权限

-- 修改密码
ALTER USER appuser IDENTIFIED BY "your_new_password";

-- 锁定 / 解锁
ALTER USER appuser ACCOUNT LOCK;
ALTER USER appuser ACCOUNT UNLOCK;

-- 删除用户(含其所有对象)
DROP USER appuser CASCADE;

-- 密码永不过期(针对 profile)
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

-- 在 CDB 根创建公共用户(用户名必须 C## 开头)
CREATE USER c##dba IDENTIFIED BY password CONTAINER=ALL;

查询用户与权限:

sql 复制代码
-- 所有用户及状态、创建时间
SELECT username, account_status, created, default_tablespace,
       expiry_date FROM dba_users ORDER BY created DESC;

-- 被锁定的账户
SELECT username, account_status FROM dba_users
WHERE account_status != 'OPEN';

-- 某用户拥有的系统权限
SELECT privilege FROM dba_sys_privs WHERE grantee='APPUSER';

-- 某用户拥有的对象权限
SELECT owner, table_name, privilege
FROM dba_tab_privs WHERE grantee='APPUSER';

-- 某用户拥有的角色
SELECT granted_role FROM dba_role_privs WHERE grantee='APPUSER';

八、会话与进程管理

sql 复制代码
-- 当前会话数与最大会话数
SELECT COUNT(*) AS current_sessions FROM v$session WHERE type='USER';
SELECT resource_name, current_utilization, max_utilization, limit_value
FROM v$resource_limit WHERE resource_name IN ('sessions','processes');

-- 活动会话概览(用户、机器、程序、状态、执行的 SQL)
SELECT s.sid, s.serial#, s.username, s.status, s.machine,
       s.program, s.sql_id, s.event
FROM v$session s
WHERE s.type='USER' AND s.username IS NOT NULL
ORDER BY s.status;

-- 查看某会话正在执行的 SQL 全文
SELECT sql_fulltext FROM v$sql
WHERE sql_id = (SELECT sql_id FROM v$session WHERE sid=&sid);

-- 查找长时间运行的 SQL(执行超过 60 秒)
SELECT sid, serial#, opname, target,
       ROUND(elapsed_seconds) AS elapsed_s,
       ROUND(time_remaining) AS remain_s,
       ROUND(sofar/totalwork*100,1) AS pct
FROM v$session_longops
WHERE totalwork > 0 AND sofar != totalwork;

-- 查找阻塞的会话(blocker 阻塞了 waiter)
SELECT blocking_session AS blocker, sid AS waiter, username,
       event, seconds_in_wait
FROM v$session WHERE blocking_session IS NOT NULL;

-- 杀会话(先 immediate,杀不掉再 kill -9 对应 OS 进程)
ALTER SYSTEM KILL SESSION '145,28763' IMMEDIATE;

-- 找出会话对应的操作系统进程号(spid),用于 OS 层 kill
SELECT s.sid, s.serial#, p.spid, s.username, s.program
FROM v$session s JOIN v$process p ON s.paddr = p.addr
WHERE s.sid = &sid;

九、数据查询与常用数据字典

Oracle 数据字典视图分三个层级,普通业务用户日常只用前两类,DBA_* 需要 DBA 权限:

前缀 范围 是否需特权
USER_* 当前用户自己拥有的对象
ALL_* 当前用户有权访问的对象(自己的 + 被授权的)
DBA_* 全库所有对象 需 DBA / SELECT ANY DICTIONARY

普通用户登录后查看自己的业务表

以业务用户(非 sysdba)身份登录,最常见的操作就是「看看自己名下有哪些表、表里有多少数据」。

bash 复制代码
# 直连 PDB 登录(业务用户通常建在某个 PDB 内)
sqlplus appuser/your_password@//192.168.1.10:1521/orclpdb

# 或先配好 tnsnames.ora 后用服务名登录
sqlplus appuser/your_password@orclpdb
sql 复制代码
-- 我是谁、连在哪个容器
SELECT USER AS current_user,
       SYS_CONTEXT('USERENV','CON_NAME') AS container FROM dual;

-- 【核心】查看当前用户拥有的所有业务表
SELECT table_name, num_rows, last_analyzed
FROM user_tables ORDER BY table_name;

-- 只看表名(最简)
SELECT table_name FROM user_tables ORDER BY table_name;

-- 统计自己名下共有多少张表
SELECT COUNT(*) FROM user_tables;

-- 查看某张表的结构
DESC employees;
-- 或用数据字典查字段明细
SELECT column_name, data_type, data_length, nullable
FROM user_tab_columns WHERE table_name='EMPLOYEES'
ORDER BY column_id;

-- 查询表数据(表名默认大写,除非建表时用了双引号)
SELECT * FROM employees WHERE ROWNUM <= 10;

-- 精确统计某表行数
SELECT COUNT(*) FROM employees;

-- 查看自己拥有的索引 / 视图 / 序列
SELECT index_name, table_name, uniqueness FROM user_indexes;
SELECT view_name FROM user_views;
SELECT sequence_name, last_number FROM user_sequences;

-- 查看自己各表占用空间(MB,按大小排序)
SELECT segment_name, segment_type, bytes/1024/1024 AS mb
FROM user_segments WHERE segment_type='TABLE'
ORDER BY bytes DESC;

user_tables.num_rows上次统计信息收集时 的估算值,可能不准;要精确行数用 COUNT(*)。若为空可让 DBA 收集统计:EXEC DBMS_STATS.GATHER_SCHEMA_STATS('APPUSER');

查看被授权访问的其他用户的表

业务用户常需访问其他 schema(如公共维表)授予的表,用 ALL_* 视图:

sql 复制代码
-- 我能访问的、不属于自己的表(含被别人授权的)
SELECT owner, table_name FROM all_tables
WHERE owner != USER ORDER BY owner, table_name;

-- 我被授予了哪些对象权限(谁的什么表、什么权限)
SELECT owner, table_name, privilege
FROM user_tab_privs_recd ORDER BY owner, table_name;

-- 查询别的 schema 的表(需带 owner 前缀,且已被授权)
SELECT * FROM hr.departments WHERE ROWNUM <= 10;

DBA 视角(需 DBA 权限)

sql 复制代码
-- 查看某 schema 的表
SELECT owner, table_name, num_rows, last_analyzed
FROM dba_tables WHERE owner='HR';

-- 表结构(字段、类型、是否可空)
SELECT column_name, data_type, data_length, nullable
FROM dba_tab_columns WHERE owner='HR' AND table_name='EMPLOYEES'
ORDER BY column_id;
-- 或直接用 SQL*Plus 命令
DESC hr.employees;

-- 表的记录数(精确)
SELECT COUNT(*) FROM hr.employees;

-- 查看索引
SELECT index_name, table_name, uniqueness, status
FROM dba_indexes WHERE owner='HR' AND table_name='EMPLOYEES';

-- 查看视图、序列、约束
SELECT view_name FROM dba_views WHERE owner='HR';
SELECT sequence_name, last_number FROM dba_sequences WHERE sequence_owner='HR';
SELECT constraint_name, constraint_type, status
FROM dba_constraints WHERE owner='HR' AND table_name='EMPLOYEES';

-- 查表占用空间(段大小 MB)
SELECT segment_name, segment_type, bytes/1024/1024 AS mb
FROM dba_segments WHERE owner='HR'
ORDER BY bytes DESC;

-- 全库最大的 20 个对象
SELECT * FROM (
  SELECT owner, segment_name, segment_type, ROUND(bytes/1024/1024) AS mb
  FROM dba_segments ORDER BY bytes DESC
) WHERE ROWNUM <= 20;

-- 分页查询(19c 支持 OFFSET FETCH 语法)
SELECT * FROM hr.employees ORDER BY employee_id
OFFSET 20 ROWS FETCH NEXT 10 ROWS ONLY;

SQL*Plus 输出格式化(避免结果错乱):

sql 复制代码
SET LINESIZE 200
SET PAGESIZE 100
SET LONG 10000
COLUMN column_name FORMAT A30

十、参数查询与修改

sql 复制代码
-- 查看参数(模糊匹配)
SHOW PARAMETER memory;
SHOW PARAMETER processes;
SELECT name, value, isdefault FROM v$parameter WHERE name LIKE '%sga%';

-- 修改参数
-- scope=memory  仅当前生效,重启失效
-- scope=spfile  仅写入参数文件,重启后生效
-- scope=both    立即生效且持久(默认)
ALTER SYSTEM SET processes=1000 SCOPE=SPFILE;   -- processes 需重启
ALTER SYSTEM SET sga_target=4G SCOPE=BOTH;

-- 内存相关
SHOW PARAMETER sga_target;
SHOW PARAMETER pga_aggregate_target;
SELECT component, current_size/1024/1024 AS mb FROM v$sga_dynamic_components;

-- 查看隐含参数需用 sysdba
SELECT ksppinm, ksppstvl FROM x$ksppi a, x$ksppcv b
WHERE a.indx = b.indx AND ksppinm LIKE '\_%' ESCAPE '\';

十一、归档与日志

sql 复制代码
-- 查看归档模式
ARCHIVE LOG LIST;
SELECT log_mode FROM v$database;

-- 开启归档(需在 mount 状态)
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;

-- 手动切换日志、归档当前日志
ALTER SYSTEM SWITCH LOGFILE;
ALTER SYSTEM ARCHIVE LOG CURRENT;

-- 查看重做日志组
SELECT group#, thread#, bytes/1024/1024 AS mb, members, status
FROM v$log;
SELECT group#, member FROM v$logfile;

-- 查看归档日志空间使用(FRA 快速恢复区)
SELECT * FROM v$recovery_file_dest;
SELECT file_type, percent_space_used, percent_space_reclaimable
FROM v$recovery_area_usage;

日志文件(排障必看):

bash 复制代码
# 告警日志 alert log(ADR 目录下)
$ORACLE_BASE/diag/rdbms/<db_name>/<sid>/trace/alert_<sid>.log

# 用 adrci 工具查看
adrci
adrci> show alert -tail 50        # 查看最近 50 行告警日志
adrci> show problem               # 查看严重问题

十二、数据泵导入导出(expdp / impdp)

19c 推荐用数据泵替代旧版 exp/imp。需先在数据库中创建 directory 对象。

sql 复制代码
-- 创建目录对象(指向 OS 路径),并授权
CREATE OR REPLACE DIRECTORY dpdir AS '/u01/dump';
GRANT READ, WRITE ON DIRECTORY dpdir TO system;
bash 复制代码
# 导出整个 schema
expdp system/password@orclpdb schemas=HR \
  directory=dpdir dumpfile=hr_%U.dmp logfile=hr_exp.log \
  parallel=4 compression=all

# 导出单张表
expdp system/password@orclpdb tables=HR.EMPLOYEES \
  directory=dpdir dumpfile=emp.dmp logfile=emp_exp.log

# 全库导出
expdp system/password@orclpdb full=y \
  directory=dpdir dumpfile=full_%U.dmp logfile=full_exp.log parallel=4

# 导入 schema(并做重映射:换 schema、换表空间)
impdp system/password@orclpdb \
  directory=dpdir dumpfile=hr_%U.dmp logfile=hr_imp.log \
  remap_schema=HR:HR_NEW remap_tablespace=USERS:APP_DATA

# 只查看 dmp 内容不导入(生成 SQL 脚本)
impdp system/password@orclpdb directory=dpdir dumpfile=hr.dmp \
  sqlfile=hr_ddl.sql

查看正在运行的数据泵作业:

sql 复制代码
SELECT job_name, operation, job_mode, state
FROM dba_datapump_jobs;

十三、RMAN 备份常用

bash 复制代码
# 连接目标库
rman target /

# 或连接目标库 + 恢复目录
rman target / catalog rman/password@rmancat
sql 复制代码
-- 全库备份(含归档日志)
BACKUP DATABASE PLUS ARCHIVELOG;

-- 备份并压缩
BACKUP AS COMPRESSED BACKUPSET DATABASE PLUS ARCHIVELOG;

-- 增量备份(level 0 全量基线,level 1 增量)
BACKUP INCREMENTAL LEVEL 0 DATABASE;
BACKUP INCREMENTAL LEVEL 1 DATABASE;

-- 仅备份归档日志
BACKUP ARCHIVELOG ALL;

-- 备份单个 PDB
BACKUP PLUGGABLE DATABASE orclpdb;

-- 查看备份信息
LIST BACKUP SUMMARY;
LIST BACKUP OF DATABASE;

-- 校验备份可用性与检查坏块
RESTORE DATABASE VALIDATE;
BACKUP VALIDATE CHECK LOGICAL DATABASE;

-- 删除过期备份、清理已删归档
CROSSCHECK BACKUP;
DELETE EXPIRED BACKUP;
DELETE OBSOLETE;

-- 查看/设置保留策略
SHOW RETENTION POLICY;
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;

十四、常用故障排查速查

现象 排查方向
客户端连不上 lsnrctl status 看服务是否 READY;tnsping 测通;防火墙 1521 端口
ORA-01034 数据库未启动 sqlplus / as sysdbastartup
ORA-12514 服务名未注册 PDB 未 open,或 alter system register 重新注册监听
ORA-01555 快照过旧 增大 undo 表空间 / undo_retention 参数
ORA-00257 归档满 清理 FRA 归档日志,或扩大 db_recovery_file_dest_size
ORA-01652 临时段无法扩展 临时表空间不足,扩容 temp
ORA-28001 密码过期 ALTER USER ... IDENTIFIED BY ... 改密并调整 profile
会话被阻塞/锁 v$session.blocking_session 定位 blocker 后 kill
性能变慢 v$session_longopsv$sql(按 elapsed 排序)、生成 AWR 报告

生成 AWR 性能报告:

sql 复制代码
-- 查看可用快照
SELECT snap_id, begin_interval_time FROM dba_hist_snapshot ORDER BY snap_id DESC;

-- 交互式生成 AWR 报告(选择起止 snap_id)
@?/rdbms/admin/awrrpt.sql

排障时告警日志 alert log 是第一手资料,任何 ORA- 报错先去 ADR trace 目录看上下文。


总结

Oracle 19c 运维可以归纳为三条主线:

  1. 多租户 :时刻清楚自己在 CDB 还是 PDB(show con_name),PDB 记得 save state 避免重启后不自动打开
  2. 容量:定期检查表空间使用率、归档空间(FRA),提前扩容
  3. 备份:日常数据泵(expdp/impdp)做逻辑备份,RMAN 做物理备份与恢复验证

配合告警日志 alert log,绝大部分日常问题都能快速定位。

相关推荐
Cicada1281 小时前
Web 服务器怎么选
运维·服务器·前端
宗介波妞1 小时前
主站与场站多业务链路通断测试实战指南(电力自动化联调)
网络·数据库
邪修king1 小时前
MySQL数据库(二):操作详解:从创建、查看到备份恢复
数据库·mysql
tryxr1 小时前
Chat2Excel 项目用户服务开发
java·数据库·java项目·用户服务开发
海宇大数据1 小时前
分布式网格实战:基于海宇柠檬查出险-登记证构建自动化车辆合规网关
运维·人工智能·分布式·自动化
团子股股东峥哥1 小时前
day34-RHEL-管理SELinux的安全性
linux·运维·服务器
‎ദ്ദിᵔ.˛.ᵔ₎1 小时前
Linux 重定向
linux·运维·服务器
LRL_1 小时前
离线/纯内网环境下,Linux 服务器时间不准如何强制修改?(以 Oracle Linux 9 / RHEL 9 为例)
linux·服务器·oracle
kiss strong1 小时前
redis服务器登录(内网环境,无法使用客户端)
数据库·redis·缓存