質問: ### 前提・実現したいこと Oracleをさわって1週間にも満たない初心者で、もともとエンジニアでもないため 用語の理解がそもそも間違っているかもしれません。上手く読み取っていただけますと幸いです。 また、間違えていたり、必要な情報が足りなければ教えてください。(;_;) 【環境】 ・Windows10 HOME 64bit ・Oracle Database 11g Express Edition 【参考サイト】 ・http://d.hatena.ne.jp/torazuka/20140328/expimp 【目的】 別サーバーにあるOracleDBの表データを、万が一のときに備えて ローカルにあるOracleDBにインポートできるようバックアップを取っておきたい。 【手順】 参考サイトを元に実行しました。一回目は、全体エクスポートをしたところうまくダンプファイルが作成できたのですが、 ローカルにインポートする際、失敗してしまい、おそらくデータの整合性がなかったため失敗したのかなと思い、ファイルを 一度削除してスキーマ単位でエクスポートしようとし実行したところ、エラーが発生するようになりました。 以下が私の手順です。 1ダンプファイルを置くフォルダを作成(expdir) 「ファイル名を指定して実行」アプリ起動 → 別サーバーのホスト名を入力 → 新規フォルダを作成 2ディレクトリオブジェクトを作成(expdp) 該当フォルダでPowerShell起動 → sqlplus起動(sqlplus ユーザ名/パスワード@ホスト名:ポート/サービス名) → ディレクトリオブジェクト作成(CREATE DIRECTORY expdp as '\\xxx.xxx.x.xxx\expdir';) 3権限を与える(実行ユーザ以外のパスワードが分からずできていないが、全体エクスポートはできた) 4テキストファイルを作成 参考サイト同様にテキストファイルを作成し、1で作成したフォルダ内に置く(内容は下記の通り) DIRECTORY=expdp DUMPFILE=dump201712xx.dmp LOGFILE=exp201712xx.log SCHEMAS=ユーザ名 JOB_NAME=job_exp1 5スキーマをエクスポートする(下記のエラー発生) expdp ユーザ名/パスワード@ホスト名:ポート/サービス名 parfile=exp201712xx.par 5全体エクスポートの場合(下記のエラー発生) expdp ユーザ名/パスワード@ホスト名:ポート/サービス名 directory=expdp full=y dumpfile=exdir.dmp logfile=exdir.log お手数おかけいたしますが、よろしくお願いいたします! ![イメージ説明](https://teratail.storage.googleapis.com/uploads/contributed_images/457d9dac8bc8562c6ba954f9f3397f16.png)
回答: 1. DBA権限を持つユーザで該当データベースに接続 ・まず、システム管理者であるSYSユーザで接続できますかね? PS ...> sqlplus SYS/パスワード@ホスト名:ポート/サービス名 as sysdba 2. ログインユーザ確認 → 「ユーザは"SYS"です。」 SQL> show user 3. テーブル修復 → エラーが出力されない。 SQL> alter table SYSTEM.LOGMNR_LOG$ modify (timestamp date); 4. コンパイル → エラーが出力されない。 SQL> alter package DBMS_INTERNAL_LOGSTDBY compile; 5. expdpで改めてエクスポート → 4.まで問題なく成功していれば成功する可能性が高い。