sqlldr 采集中文数据乱码问题
2016-03-31 11:37
399 查看
测试机上装入数据 发现中文字段全部变成???????,初步判断为字符集问题
更改
UPDATE sys.props$
SET VALUE$='WE8ISO8859P1'
where name like 'NLS%'
and value$='ZHS16GBK';
commit;
后发现sqlldr采集数据时,报错
SQL*Loader-704: Internal error: ulmtsyn: OCIStmtExecute(tabhp) [6552]
ORA-06552: PL/SQL: Compilation unit analysis terminated
ORA-06553: PLS-553: character set name is not recognized
查资料后发现原来更改字符集还需要在设置字符集时把数据库设置成RESTRICTED模式等诸多操作,进行以下操作后,sqlldr采集正常
>STARTUP MOUNT;
ORACLE instance started.
Total System Global Area 76619308 bytes
Fixed Size 454188 bytes
Variable Size 58720256 bytes
Database Buffers 16777216 bytes
Redo Buffers 667648 bytes
Database mounted.
SQL> ALTER SESSION SET SQL_TRACE=TRUE;
Session altered.
SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION;
System altered.
SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
System altered.
SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=0;
System altered.
SQL> ALTER DATABASE OPEN;
Database altered.
SQL> set linesize 120
SQL> ALTER DATABASE CHARACTER SET ZHS16GBK;
ORA-12712: new character set must be a superset of old character set
RROR at line 1:
>ALTER DATABASE character set INTERNAL_USE zhs16gbk;
>ALTER SESSION SET SQL_TRACE=FALSE;
更改
UPDATE sys.props$
SET VALUE$='WE8ISO8859P1'
where name like 'NLS%'
and value$='ZHS16GBK';
commit;
后发现sqlldr采集数据时,报错
SQL*Loader-704: Internal error: ulmtsyn: OCIStmtExecute(tabhp) [6552]
ORA-06552: PL/SQL: Compilation unit analysis terminated
ORA-06553: PLS-553: character set name is not recognized
查资料后发现原来更改字符集还需要在设置字符集时把数据库设置成RESTRICTED模式等诸多操作,进行以下操作后,sqlldr采集正常
>STARTUP MOUNT;
ORACLE instance started.
Total System Global Area 76619308 bytes
Fixed Size 454188 bytes
Variable Size 58720256 bytes
Database Buffers 16777216 bytes
Redo Buffers 667648 bytes
Database mounted.
SQL> ALTER SESSION SET SQL_TRACE=TRUE;
Session altered.
SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION;
System altered.
SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
System altered.
SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=0;
System altered.
SQL> ALTER DATABASE OPEN;
Database altered.
SQL> set linesize 120
SQL> ALTER DATABASE CHARACTER SET ZHS16GBK;
ORA-12712: new character set must be a superset of old character set
RROR at line 1:
>ALTER DATABASE character set INTERNAL_USE zhs16gbk;
>ALTER SESSION SET SQL_TRACE=FALSE;
相关文章推荐
- Oracle中in和exists的选择
- SQL学习总结(一)【计算字段&数据处理函数】
- 经典sql大全
- MySQL触发器
- SqlServer中的merge操作(转载)
- sql 语句大全 (基本查询,子查询,各种链接,和统计)
- Oracle 使用MERGE INTO 语句更新数据
- mysql常用命令
- MYSQL里AUTO_INCREMENT的字段如何insert?
- 官网mysql安装
- MySQL复制之gtid_purged与gtid_executed
- Oracle存储过程中临时表的使用技巧
- MongoDB学习入门相关资料索引
- Mysql数据库之索引优化
- SQL的四种连接-左外连接、右外连接、内连接、全连接
- 在express项目中使用redis
- 用PL/SQL导出SQL语句
- 数据库并发访问、事务与锁的关系
- oracle 安装错误码
- 将数据库自增列重置的sql