Oracle12c数据库,为什么有些表收集不了统计信息?报错如下,请帮看看

我来答
添加附件
收藏
复制链接
微信扫码分享

在小程序上查看
分享
添加附件
问题补充
7条回答
默认
最新
有锁,其他事物占用着,超过了等待时间限制就报错了,可以查询一下是那个会话是源头锁,kill掉源头锁再试试


打赏 0

试下正在运行的是否包含了相关表,会引起锁的
1.正在运行的sql
SELECT
s.sid, -- 会话ID
s.serial#, -- 会话序列号
s.username, -- 登录用户名
s.status, -- 会话状态
s.machine, -- 客户端机器名
s.program, -- 客户端程序名
s.sql_id, -- 当前SQL的ID
q.sql_text, -- 当前SQL的文本
s.prev_sql_id, -- 上一个SQL的ID
pq.sql_text AS prev_sql_text -- 上一个SQL的文本
,pq.sql_fulltext -- 上一个SQL的全文本
FROM
v$session s
LEFT JOIN
v$sql q ON s.sql_id = q.sql_id
LEFT JOIN
v$sql pq ON s.prev_sql_id = pq.sql_id
WHERE
s.status = 'ACTIVE' -- 只查询活跃会话
AND s.type = 'USER'; -- 只查询用户会话
复制
2. 正在运行的事务
SELECT
s.sid, -- 会话ID
s.serial#, -- 会话序列号
s.username, -- 登录用户名
t.start_time, -- 事务开始时间
t.status, -- 事务状态
t.used_ublk, -- 使用的undo块数
t.used_urec, -- 使用的undo记录数
t.log_io, -- 逻辑I/O数
t.phy_io, -- 物理I/O数
t.cr_get, -- 一致性读次数
t.cr_change -- 一致性读更改次数
FROM
v$session s
JOIN
v$transaction t ON s.taddr = t.addr
WHERE
s.status = 'ACTIVE'; -- 只查询活跃会话
复制


打赏 0
desc dbms.stats然后找function是gather_table_stats这个,里面收集统计信息有个参数FORCE,你加上这个参数就可以跳过lock直接收集我遇到过这个


打赏 0
回答交流
Markdown
一级标题
二级标题
三级标题
四级标题
五级标题
六级标题
添加图片链接
上传图片
导航目录
Markdown语法参考
请输入正文
提示
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
