>  기사  >  데이터 베이스  >  Oracle 데이터베이스에서 ora-12899 오류가 발생하면 어떻게 해야 합니까?

Oracle 데이터베이스에서 ora-12899 오류가 발생하면 어떻게 해야 합니까?

小云云
小云云원래의
2017-12-11 14:54:173869검색

ORACLE을 사용하는 과정에서 다양한 문제와 오류가 발생하게 되는데 그 중 ORA-12899는 얼마전 로컬 컴퓨터로 데이터를 가져올 때 계속 나타나는 문제였는데 다행히 이 문제는 해결되었습니다. 이제 공유하겠습니다. 모두에게 도움이 되기를 바랍니다.

ORA-12899는 문자 집합으로 인해 발생합니다. 중국어는 UTF-8에서 3바이트, ZHS16GBK에서 2바이트를 차지합니다. 이제 소스 dmp 파일의 문자 집합이 ZHS16GBK 라이브러리에서 덤프되어야 합니다. 대상 문자 집합이 UTF-8인 라이브러리로 가져오면 ORA-12899가 나타납니다

사실 이 문제는 ORACLE의 문자 집합을 수정하면 잘 해결될 수 있습니다.

그런데 문자 집합을 수정하다 보니 , sys 계정의 비밀번호를 잊어버려서 안타까운 일이 있어서 먼저 sys 사용자의 비밀번호를 변경해야 했습니다.

비밀번호를 변경하는 경우에는 여러 가지 상황이 있는데, 아래에 하나씩 나열하겠습니다.

1. SYS, SYSTEM 사용자 외의 로그인 비밀번호를 잊어버렸습니다.

SYS(또는 SYSTEM) 사용자로 로그인하세요.

CONN SYS/PASS_WORD AS SYSDBA; 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/database/pwdctcsys.ora 
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么?

在创建表a8da73ae7924bc0166fb7e2b785e4751空间5db79b134e9f6b82c0b36e0489ee08ed

 DATAFILE 用于指定数据文件的具体位置和大小。但是我看到有些文章使用

 *.ora文件,如DATAFILE 'D:\ORACLE\ORADATA\ORA92\LUNTAN.ora' SIZE 5M ,有些

 则使用*.dbf文件,如DATAFILE 'D:\ORACLE\ORADATA\ORA92\LUNTAN.dbf' SIZE 5M
사용자 비밀번호를 변경하려면 다음 명령문을 사용하세요.

ALTER USER user_name IDENTIFIED BY newpass;

참고: 비밀번호는 모두 숫자일 수 없습니다. 그리고 숫자로 시작할 수 없습니다. 그렇지 않으면 다음과 같이 표시됩니다: ORA-00988: 비밀번호가 누락되었거나 유효하지 않습니다.

2. SYS 사용자 또는 SYSTEM 사용자의 비밀번호를 잊어버렸습니다.


SYSTEM 사용자의 비밀번호를 잊어버린 경우 SYS 사용자로 로그인할 수 있습니다. 그런 다음 ALTER USER 비밀번호 를 사용하여 비밀번호를 변경하세요.

rrreee

SYS 사용자의 비밀번호를 잊어버린 경우 SYSTEM 사용자로 로그인할 수 있습니다. 그런 다음 ALTER USER 비밀번호

를 사용하여 비밀번호를 변경하세요.

rrreee🎜🎜🎜🎜🎜3.SYS 및 SYSTEM 사용자의 비밀번호를 잊어버리거나 분실한 경우. 🎜🎜🎜🎜이게 특히 중요합니다. 🎜🎜ORAPWD.EXE 도구를 사용하여 비밀번호를 변경할 수 있습니다. 🎜🎜시작 메뉴->실행->'CMD'를 입력하고 명령 프롬프트 창을 열고 다음 명령을 입력하십시오. 🎜

🎜rrreee🎜🎜🎜이 명령은 데이터 베이스. 비밀번호 파일의 위치는 ORACLE_HOME 디렉토리의 /database 디렉토리에 있습니다. 🎜🎜이 비밀번호는 sys 사용자의 비밀번호를 변경하기 위한 비밀번호입니다. sys 및 system을 제외한 다른 사용자의 비밀번호는 변경되지 않습니다. 🎜🎜🎜비밀번호를 변경한 후 dba로 변경할 수 있습니다. dba가 아닌 경우 수정 명령을 실행하면 권한이 부족하다는 메시지가 표시됩니다. 그런 다음 " sqlplus sys/oracle@192.168.0.1/orcl as SYSDBA"🎜🎜 정상적으로 입력할 수 없는 경우 사용자 이름과 비밀번호를 수동으로 입력해야 합니다. 입력 후 "SQL> " 프롬프트가 나타나면 다음을 따르십시오. 주어진 명령을 순서대로 실행하면 🎜

🎜rrreee🎜🎜🎜 문자 집합이 호환되지 않는다고 보고됩니다. 이때 INTERNAL_USE 명령은 문자를 확인하지 않습니다. set superset: 🎜

🎜rrreee🎜🎜🎜현재 이 ORA-12899는 완전히 해결되었으며 데이터를 가져올 수 있습니다...🎜🎜🎜🎜PS: 추가하겠습니다. 아래: 🎜🎜🎜🎜oracle *.ora 파일은 어떤 용도로 사용되나요? 🎜🎜🎜🎜10g에 왜 *.ora 파일이 없나요? 🎜🎜9i의 *.ora는 10g의 *.dbf와 동일합니까? 🎜🎜테이블 생성 시 7b3ca52bd248931a27c60ea469b9af68space5db79b134e9f6b82c0b36e0489ee08ed🎜🎜 DATAFILE을 사용하여 데이터 파일을 지정합니다. 특정 위치와 크기. 하지만 일부 기사에서는 DATAFILE 'D:\ORACLE\ORADATA\ORA92\LUNTAN.ora' SIZE 5M 과 같은 🎜🎜 *.ora 파일을 사용하고 일부 🎜🎜에서는 *.dbf 파일을 사용하는 것을 확인했습니다. , 예: DATAFILE 'D:\ORACLE\ORADATA\ORA92\LUNTAN.dbf' SIZE 5M . 🎜🎜🎜온라인에서 말하는 것은 .dbf-data 파일, .tmp-temporary 파일, .log-redo 로그 파일, .ctl-control 파일🎜🎜 .ora-parameter 파일, .dat-Oracle 시스템 파일 🎜🎜🎜이 단지 식별합니다 확장자를 통한 파일 형식입니다. 데이터 파일의 경우 ora/dat/dbf이든 동일하며 차이가 없습니다. 나 개인적으로도 그렇게 생각한다. 다들 의견이 어떤지 궁금하네요. 🎜🎜관련 권장 사항: 🎜🎜🎜🎜Oracle은 테이블 공간의 데이터 파일 위치를 어떻게 변경합니까? 🎜🎜🎜🎜mysql 및 oracle 데이터베이스를 중지하고 시작하기 위한 배치 파일 🎜🎜🎜🎜Oracle Clob 저장 문제를 해결하는 방법 필드가 너무 길어요? 🎜🎜

위 내용은 Oracle 데이터베이스에서 ora-12899 오류가 발생하면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.