指定数据库的SID来登入sqlplus

export ORACLE_SID=实例名

查询实例名

select instance_name from v$instance;

ORA-01000: 超出打开游标的最大数

方案一:
1、将默认游标数进行调大,但是不推荐该方案,该方案会有一个隐藏问题,当你执行数超过设置的游标数时,还是爆出此错误
2、要采用该方案的话,也可以改造代码将执行数控制在最大游标数之前执行。进行分批执行

// 查看数据库当前的游标数配置
show parameter open_cursors;

// 增大游标数
ALTER SYSTEM SET OPEN_CURSORS = 新的大小 SCOPE=BOTH;

方案二:更换执行方法为executeBatch() 但是在进行大批量数据库操作时,要进行分批执行

ORA-38301: 无法对回收站中的对象执行DDL/DML

原因: 脚本中引用到了被删除的对象, 需要下清空下回收站

// sys用户执行
purge dba_recyclebin;  

// 若没有sys用户,则使用应用链接的数据库用户执行: 
purge user_recyclebin;

统计表空间使用率

SELECT * FROM (
select t.tablespace_name tblspace_name,
       substr(t.contents, 1, 1) tipo,
       trunc(d.tbs_maxsize/1024/1024) "total_size(MB)",
       trunc((d.tbs_size-nvl(s.free_space, 0))/1024/1024) "used_size(MB)",
       trunc((d.tbs_maxsize - d.tbs_size + nvl(s.free_space, 0))/1024/1024) "free_size(MB)",
       decode(d.tbs_maxsize, 0, 0, trunc((d.tbs_size-nvl(s.free_space, 0))*100/d.tbs_maxsize)) "used_rate(%)" 
from
  ( select SUM(bytes) tbs_size,
           SUM(decode(sign(maxbytes - bytes), -1, bytes, maxbytes)) tbs_maxsize, tablespace_name tablespace
    from ( select nvl(bytes, 0) bytes, nvl(maxbytes, 0) maxbytes, tablespace_name
    from dba_data_files
    union all
    select nvl(bytes, 0) bytes, nvl(maxbytes, 0) maxbytes, tablespace_name
    from dba_temp_files
    )
    group by tablespace_name
    ) d,
    ( select SUM(bytes) free_space,
    tablespace_name tablespace
    from dba_free_space
    group by tablespace_name
    ) s,
    dba_tablespaces t
    where t.tablespace_name = d.tablespace(+) and
    t.tablespace_name = s.tablespace(+)
    order by 5)
    where tipo <>'T'
    and tipo <>'U';
Last modification:September 18, 2024
如果觉得我的文章对你有用,请随意赞赏