oracle常见问题处理集锦

时间:2025-04-12 06:58:31

oracle常见问题处理集锦

  • oracle常见问题处理集锦
        • ORA-03001:未实施的功能
        • ORA:28000 the count is locked

oracle常见问题处理集锦

ORA-03001:未实施的功能
  • 问题

ORA-03001:未实施的功能

在datagrip中修改表名称,使用的语法是:

rename old_name to new_name
  • 原因
    表示尝试执行的操作在当前上下文中不被支持或未被正确实现。

  • 解决方案

出现该报错,基本可以断定是因为sql写错了。

ALTER TABLE old_name RENAME TO new_name;
ORA:28000 the count is locked
  • 问题

ORA-28000: 账户已被锁定

  • 原因
  • 多次密码输错(触发密码策略中的失败登录次数限制)
  • 管理员手动锁定了账户
  • 密码过期但没有及时更新
  • 长期未使用该用户账户(也可能被策略自动锁定)
  • 解决方案

你需要用 具有DBA权限的账户 登录数据库,然后执行以下语句来解锁账户:

# 查看用户状态
SELECT username, account_status FROM dba_users WHERE username = 'HR';

# 解锁账号
ALTER USER 用户名 ACCOUNT UNLOCK;

# 重置密码并解锁
ALTER USER 用户名 IDENTIFIED BY 新密码 ACCOUNT UNLOCK;

# demo
ALTER USER HR IDENTIFIED BY NewPass123 ACCOUNT UNLOCK;

同时查询登录失败策略

# 查询失败登录次数限制策略
SELECT * FROM dba_profiles WHERE resource_name = 'FAILED_LOGIN_ATTEMPTS';

# 临时设置为“无限制”以避免再次锁定:
ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED;

# 找出谁在尝试用错误密码登录(部分系统可能需要启用审计功能)
# Returncode = 1017 表示用户名或密码错误
SELECT username, userhost, terminal, timestamp 
FROM dba_audit_session 
WHERE returncode = 1017
ORDER BY timestamp DESC;

若未开启审计功能

# 查看当前审计模式:
SELECT VALUE FROM V$OPTION WHERE PARAMETER = 'Audit Options';

# 查看是否启用了统一审计(Unified Auditing)
SELECT VALUE FROM V$OPTION WHERE PARAMETER = 'Unified Auditing';

# 启用数据库级别的审计功能(如果尚未启用)
ALTER SYSTEM SET audit_trail = DB SCOPE = SPFILE;
#'NONE':不记录审计信息
#'OS':将审计记录写入操作系统日志
#'DB, EXTENDED':记录 SQL 语句文本和绑定变量

# 重启数据库
SHUTDOWN IMMEDIATE;
STARTUP;

# 启用你想要的审计项目(例如登录失败)
# 审计所有登录尝试(成功和失败)
AUDIT SESSION;

# 只审计失败的登录:
AUDIT SESSION WHENEVER NOT SUCCESSFUL;

# 审计某个表上的操作:
AUDIT SELECT, INSERT, UPDATE, DELETE ON scott.emp BY ACCESS;

# 查看审计日志(如果你使用的是 AUDIT_TRAIL=DB,可以通过以下视图查询审计记录)
# 登录相关信息:
SELECT username, userhost, returncode, timestamp 
FROM dba_audit_session
ORDER BY timestamp DESC;

# 表操作相关信息:
SELECT * FROM dba_audit_trail 
ORDER BY timestamp DESC;

# 关闭或清理审计(可选)
# 关闭审计:
NOAUDIT ALL;

# 清理历史审计记录(注意备份):
DELETE FROM dba_audit_trail;
COMMIT;