ホームページ >データベース >mysql チュートリアル >Oracle データベースで ora-12899 エラーが発生した場合の対処方法

Oracle データベースで ora-12899 エラーが発生した場合の対処方法

小云云
小云云オリジナル
2017-12-11 14:54:173923ブラウズ

ORACLEを使用する過程で、さまざまな問題やエラーが発生します。その中で、ORA-12899は、以前ローカルマシンにデータをインポートしたときに発生し続けていた問題ですが、幸いなことに、この問題は解決されました。 . 皆さんのお役に立てれば幸いです。

ORA-12899 が表示されます。これは、中国語が UTF-8 で 3 バイト、ZHS16GBK で 2 バイトを占めることが原因です。次に、ソース dmp ファイルの文字セットが ZHS16GBK ライブラリからダンプされたデータであることが原因です。ターゲット文字セットが UTF-8 であるライブラリにインポートすると、ORA-12899 が表示されます

実際、この問題は ORACLE の文字セットを変更することでうまく解決できます;

しかし、文字セットを変更するときに、 sys アカウントのパスワードを忘れてしまい、それが悲劇でした。そのため、まず sys ユーザーのパスワードを変更する必要がありました

パスワードを変更するにはいくつかの状況があります。以下に 1 つずつリストします。

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-一時ファイル、.log-redo ログ ファイル、.ctl-control ファイル🎜🎜 .ora-parameter ファイル、.dat-Oracle システム ファイル 🎜🎜🎜 を識別するだけですデータ ファイルの場合は、ora/dat/dbf であっても同じであり、違いはありません。私も個人的にはそう思います。みんなの意見はどうだろうか? 🎜🎜関連する推奨事項: 🎜🎜🎜🎜Oracle はテーブルスペースのデータファイルの場所をどのように変更しますか? 🎜🎜🎜🎜 mysql および oracle データベースを停止および開始するためのバッチファイル 🎜🎜🎜🎜 Oracle Clob の保存の問題を解決する方法フィールドが長すぎますか? 🎜🎜

以上がOracle データベースで ora-12899 エラーが発生した場合の対処方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。