ORA-04036怎么解决oracle12c?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ORA-04036怎么解决oracle12c?相关的知识,希望对你有一定的参考价值。

项目实施中遇到这个问题,怎么解决,烦请高手指点

PLSQL不可以直接连接64位Oracle数据库,只能连接32位的。想要连接64位Oracle数据库,需要借助32位的Oracle客户端,解决方法:

1、PLSQL Developer无法连接64位Oracle数据库,PLSQL数据库选项为空,如下图所示:

2、到Oracle官网上下载32位Oracle客户端,如下图所示:

3、一定要下载32位的Instant Client,点进去之后找到适合自己数据库版本的文件下载,我装的是Oracle12.2.0.1.0,如下图所示:

4、解压Instant Client。下载完成后解压到某个目录下,如下图所示:

5、复制oracle12c的tnsnames.ora文件到Instant Client相关目录。在instantclient_12_2文件夹下新建两层文件夹\NETWORK\\ADMIN,将Oracle根目录\product\\12.2.0\\dbhome_1\\network\\admin\\tnsnames.ora复制过来,如下图所示:

6、打开PLSQL,点击取消不进行登录,选择“工具”菜单下“首选项”,Oracle主目录名:D:\\instantclient_12_2。OCI库:‪D:\\instantclient_12_2\\oci.dll,如下图所示:

7、测试,如下图所示:

参考技术A PGA设置太小了
> show parameter pga
NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
pga_aggregate_limit big integer 1000M

SQL>alter system set pga_aggregate_limit=3000M scope=both;

ora-64203 怎么解决

参考技术A ORA-64203错误, 可以通过分块再拼接的方式来解决。

可参考如下:

使用to_char(wm_concat(item))的时候报ORA-64203错误
出错原因:由于concat的item项目太多,导致合成后的字符串长度超出数据库char字段的缓冲区限制

通过DBMS_LOB.SUBSTR把wm_concat(item)分成10块,取到后再拼接起来

Sql代码
DBMS_LOB.SUBSTR(wm_concat(item),1000,1),
DBMS_LOB.SUBSTR(wm_concat(item),1000,1001),
DBMS_LOB.SUBSTR(wm_concat(item),1000,2001),
DBMS_LOB.SUBSTR(wm_concat(item),1000,3001),
DBMS_LOB.SUBSTR(wm_concat(item),1000,4001),
DBMS_LOB.SUBSTR(wm_concat(item),1000,5001),
DBMS_LOB.SUBSTR(wm_concat(item),1000,6001),
DBMS_LOB.SUBSTR(wm_concat(item),1000,7001),
DBMS_LOB.SUBSTR(wm_concat(item),1000,8001),
DBMS_LOB.SUBSTR(wm_concat(item),1000,9001),
DBMS_LOB.SUBSTR(wm_concat(item),1000,10001)

或者直接在oracle中用||连接起来,直接返回

Sql代码
DBMS_LOB.SUBSTR(wm_concat(item),1000,1) ||
DBMS_LOB.SUBSTR(wm_concat(item),1000,1001) ||
DBMS_LOB.SUBSTR(wm_concat(item),1000,2001) ||
DBMS_LOB.SUBSTR(wm_concat(item),1000,3001) ||
DBMS_LOB.SUBSTR(wm_concat(item),1000,4001) ||
DBMS_LOB.SUBSTR(wm_concat(item),1000,5001) ||
DBMS_LOB.SUBSTR(wm_concat(item),1000,6001) ||
DBMS_LOB.SUBSTR(wm_concat(item),1000,7001) ||
DBMS_LOB.SUBSTR(wm_concat(item),1000,8001) ||
DBMS_LOB.SUBSTR(wm_concat(item),1000,9001) ||
DBMS_LOB.SUBSTR(wm_concat(item),1000,10001)
参考技术B ORA-64203: 目标缓冲区太小, 无法容纳字符集转换之后的 CLOB 数据。

字符串长度超出数据库栏位缓冲区限制, 修改缓冲区,或者调整栏位长度。

以上是关于ORA-04036怎么解决oracle12c?的主要内容,如果未能解决你的问题,请参考以下文章

ORACLE 12C 插入数据遇到 Error getting generated key or setting result to parameter object错误

安装oracle12c时出现无法检测指定的位置是不是位于cfs上,怎么解决

Oracle12c解锁scott测试用户

12C -- ORA-01033: ORACLE initialization or shutdown in progress

12C -- ORA-01033: ORACLE initialization or shutdown in progress

Oracle12c的sys和system账户都被锁定,怎么解决?