Oracle 12c修改字符集的方法(解决数据导入后中文乱码,ORA-12899错误 列 的值太长)

之前在Windows上安装的Oracle,现在迁移到Linux上,把dmp文件导入Linux的时候发现字段的注释和存储过程中的中文是问号?,而且导入的时候还会报ORA-12899错误。其实这些都是字符集问题。

1、查询当前字符集

select * from nls_database_parameters where parameter='NLS_CHARACTERSET';

如果不是ZHS16GBK说明确实是字符集问题。

2、关闭数据库

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.

3、启动数据库到mount状态

SQL> startup mount
ORACLE instance started.
Total System Global Area  205520896 bytes
Fixed Size                  1266608 bytes
Variable Size             100666448 bytes
Database Buffers          100663296 bytes
Redo Buffers                2924544 bytes
Database mounted.

4、限制session

SQL> alter system enable restricted session;
System altered.

5、禁用作业调度进程,确保无进程调用数据库

        先查询之前的值

SQL> show parameter job_queue_processes;

        把参数置为0

SQL> alter system set job_queue_processes=0;
System altered.

6、打开数据库

alter database open;

7、修改字符集

SQL> alter database character set internal_use ZHS16GBK;          
Database altered.

8、查询当前字符集

SQL> select * from nls_database_parameters where parameter='NLS_CHARACTERSET';
PARAMETER                                VALUE
---------------------------------------- ----------------------------------------
NLS_CHARACTERSET                         ZHS16GBK

9、重复2关闭数据库和3启动数据库到mount状态并将作业调度进程参数调回之前的值

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.

SQL> startup mount
ORACLE instance started.
Total System Global Area  205520896 bytes
Fixed Size                  1266608 bytes
Variable Size             100666448 bytes
Database Buffers          100663296 bytes
Redo Buffers                2924544 bytes
Database mounted.

SQL> alter system set job_queue_processes=110;
System altered.

10、恢复session

SQL> ALTER SYSTEM DISABLE RESTRICTED SESSION;
System altered.

11、打开数据库

SQL> alter database open;
Database altered.

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
修改 Oracle 12c字符集需要以下步骤: 1. 确认当前的字符集 首先需要确认当前的数据库字符集,可以执行以下 SQL 语句: ``` SELECT * FROM nls_database_parameters WHERE parameter='NLS_CHARACTERSET'; ``` 如果当前字符集为 AL32UTF8,则无需修改。 2. 创建新的字符集 如果需要修改字符集,需要先创建一个新的字符集。可以执行以下 SQL 语句: ``` CREATE DATABASE <database_name> CHARACTER SET <new_character_set>; ``` 其中,`<database_name>` 为数据库名称,`<new_character_set>` 为新的字符集名称。 3. 迁移数据 创建新的字符集后,需要将原数据库中的数据迁移到新的数据库中。可以使用 Oracle 提供的工具 `CSSCAN` 和 `CSALTER`。具体步骤如下: - 运行 `CSSCAN` 工具扫描数据库中所有字符数据类型的,生成一个转换表。 - 运行 `CSALTER` 工具将转换表中的数据转换为新的字符集。 - 将转换后的数据导入到新的数据库中。 4. 修改字符集数据迁移至新的数据库后,需要修改数据库字符集。可以执行以下 SQL 语句: ``` ALTER DATABASE <database_name> CHARACTER SET <new_character_set>; ``` 其中,`<database_name>` 为数据库名称,`<new_character_set>` 为新的字符集名称。 修改字符集后,需要重启数据库才能生效。 注意:修改字符集可能会影响到应用程序和数据库中的数据,需要谨慎操作。建议在测试环境进行测试后再在生产环境中执行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值