Oracle数据库中ora-12899错误的解决⽅法
在使⽤ORACLE的过程中,会出现各种各样的问题,各种各样的错误,其中ORA-12899就是前段时间我在将数据导⼊到我本地机器上的时候⼀直出现的问题.不过还好已经解决了这个问题,现在分享⼀下,解决⽅案;
出现ORA-12899,是字符集引起的,中⽂在UTF-8中占3个字节,ZHS16GBK中占2个字节,⽽源dmp⽂件字符集是ZHS16GBK库⾥倒出来的数据,现在要导⼊到⽬标字符集为UTF-8的库⾥,所以会出现ORA-12899
其实只要修改⼀下ORACLE 的字符集就可以很好的解决这个问题;
但是在修改字符集的时候,我发现,我把sys账户的密码给忘记了,这就悲剧了,所以我只好先修改sys⽤户的密码咯.
修改密码也是分好⼏种情况的,下⾯我就⼀⼀列举吧:
⼀、忘记除SYS、SYSTEM⽤户之外的⽤户的登录密码。
⽤SYS (或SYSTEM)⽤户登录。
CONN SYS/PASS_WORD AS SYSDBA;
使⽤如下语句修改⽤户的密码。
ALTER USER user_name IDENTIFIED BY newpass;
注意:密码不能全是数字。并且不能是数字开头。否则会出现:ORA-00988: ⼝令缺失或⽆效
⼆、忘记SYS⽤户,或者是SYSTEM⽤户的密码。
如果是忘记SYSTEM⽤户的密码,可以⽤SYS⽤户登录。然后⽤ALTER USER 密令
修改密码。
CONN SYS//PASS_WORD AS SYSDBA;
ALTER USER SYSTEM IDENTIFIED BY newpass;
如果是忘记SYS⽤户的密码,可以⽤SYSTEM⽤户登录。然后⽤ALTER USER 密令
修改密码。
CONN SYSTEM//PASS_WORD ;
ALTER USER SYSTEM IDENTIFIED BY newpass;
三、如果SYS,SYSTEM⽤户的密码都忘记或是丢失。
这⼀项尤其重要。
可以使⽤ORAPWD.EXE ⼯具修改密码。
开始菜单->运⾏->输⼊‘CMD',打开命令提⽰符窗⼝,输⼊如下命令:
orapwd file=D:/oracle/product/10.2.0/db_1/a
为什么oracle网站进不去password=newpass
这个命令重新⽣成了数据库的密码⽂件。密码⽂件的位置在ORACLE_HOME⽬录下
的/database⽬录下。
这个密码是修改sys⽤户的密码。除sys和system其他⽤户的密码不会改变。
修改过密码之后就能以dba的⾝份进⾏修改了,不是dba的话在执⾏修改命令的时候会提⽰你权限不⾜.
开始-->运⾏-->cmd,之后输⼊:"sqlplus sys/oracle@192.168.0.1/orcl as SYSDBA"
如果不能正常进⼊,那就需要你⼿动输⼊⽤户名和密码,进⼊之后会出现"SQL>"的提⽰,按照下⾯给出的命令依次执⾏就可以了,
SQL>SHUTDOWN IMMEDIATE
SQL>STARTUP MOUNT
SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION;
SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=0;
SQL>ALTER DATABASE OPEN;
SQL> ALTER DATABASE CHARACTER SET ZHS16GBK ;
ALTER DATABASE CHARACTER SET ZHS16GBK
*ERROR at line 1:
ORA-12712: new character set must be a superset of old character set
报字符集不兼容,此时下INTERNAL_USE指令不对字符集超集进⾏检查:
SQL>ALTER DATABASE CHARACTER SET INTERNAL_USE ZHS16GBK;
SQL>SHUTDOWN IMMEDIATE
SQL>STARTUP
这时候,这个ORA-12899就已经彻底解决了,就可以进⾏数据的导⼊了...
PS:下⾯给⼤家补充下:oracle ⾥*.ora⽂件是⼲什么⽤的?
为什么10g⾥边没有*.ora⽂件?
9i⾥边的*.ora 等于10g⾥边的*.dbf么?
DATAFILE ⽤于指定数据⽂件的具体位置和⼤⼩。但是我看到有些⽂章使⽤
*.ora⽂件,如DATAFILE 'D:\\ORACLE\\ORADATA\\ORA92\\a' SIZE 5M ,有些
则使⽤*.dbf⽂件,如DATAFILE 'D:\\ORACLE\\ORADATA\\ORA92\\LUNTAN.dbf' SIZE 5M 。
⽹上的说法是.dbf-数据⽂件, .tmp-临时⽂件, .log-重作⽇志⽂件(redo log file), .ctl-控制⽂件
.ora-参数⽂件, .dat-Oracle系统⽂件
只是通过扩展名来标识⽂件的类型⽽已,对于数据⽂件不管是ora/dat/dbf,都是⼀样的,没有什么区别。我个⼈觉得也是这样。不知⼤家的意见是怎样的?
总结
以上所述是⼩编给⼤家介绍的Oracle数据库中ora-12899错误的解决⽅法,希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。在此也⾮常感谢⼤家对⽹站的⽀持!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论