解决方案:
1.安装后oracle后,首先要修改字符集。
想要修改字符集,就要使用命令行行登录oracle,以及其后使用sqlplus连接oracle,此时配置oracle的配置文件是第一步,本人正确的配置如下。
参考者照着修改即可,安装路径要根据安装者实际安装位置决定。
配置文件中的意义不再阐述,不懂者请百度,这里很重要的就是Listener红线部分,这里配置错误会导致之后的sqlplus或者navicat访问失败。
2.配置确认
修改完这两个文件后就可以使用system账户登录oracle,进而修改字符集,首先配置服务器的字符集变量。
一般来讲还需要在系统变量里的path变量里添加sqlplus路径,如图
3.网上的教程一般都含有上述操作,但是下面这一步没有,这一步会导致用户修改字符集时,显示system无权限。
打开sqlnet文件,确认所标记的内容是否为一下内容。
如果这里为(NONE),则用system修改字符集时无法操作,即便是正确的密码也不行,只有sys用户并输入密码才可以(sys我没试过)。
所以这要把NONE先改为NTS,然后用system登录oracle,进而修改字符集。
注:在修改之前是可以用普通账户连接oracle并进行操作的,修改后可能会无法操作
修改oracle字符集
1.查看oracle现有字符集,select userenv('language') from dual
2.登陆到oracle,conn /as sysdba
3.依次执行下述命令
4.关闭数据库shutdown immediate;
5.启动数据库startup mount
6.限制数据库会话连接ALTER SYSTEM ENABLE RESTRICTED SESSION;
7.改变系统设置ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
ALTER SYSTEM SET AQ_TM_PROCESSES=0;
8.打开数据库ALTERdatabase open;
ALTER DATABASE CHARACTER SET ZHS16GBK;
ALTER DATABASE character set INTERNAL_USE ZHS16GBK;
ERROR at line 1:
ORA-12712: new character set must be a superset of old character set
这里会报出Error错误,意思为新字符集必须为旧字符集的超集,我们不管他,继续下面的操作。
9.查看字符集select * from v$nls_parameters;
10.关闭数据库shutdown immediate;
11.查看数据库startup
12.查看字符集select * from v$nls_parameters;
5.修改之前的sqlnet文件,将里面的NTS改回NONE并用普通用户连接oracle,连接正常