登録されているテーブルスペースの一覧を取得する
テーブルスペースの名称とパスを取得したいとき
select TABLESPACE_NAME,FILE_NAME from dba_data_files;
一時テーブルスペースの名称とパスを取得したいとき
select TABLESPACE_NAME,FILE_NAME from dba_temp_files;
テーブルスペースの名称とパスを取得したいとき
select TABLESPACE_NAME,FILE_NAME from dba_data_files;
一時テーブルスペースの名称とパスを取得したいとき
select TABLESPACE_NAME,FILE_NAME from dba_temp_files;
エラーのメッセージをそのまま読んでもよくわからないエラーメッセージで??になったが、要するに「impコマンドにて接続しようとしたユーザーではDBA権限がないから取り込めませんよ!」というエラーです。
つまり
imp username/password file=importfile
でエラーが出るのであれば、
grant dba to username;
をsystemユーザーで実行する必要がある。
生肉さんの暇潰し@hatenaがとても役に立つ。
Windowsではoracle.exeのプロセスが1つしかないため、SGA領域を大きく取ろうとするとこのエラーが起こる。アプリケーションサーバー再起動時にエラーがすぐ起こればよいが、接続数が多くなってきたときにこのエラーが起こると運用上問題があるので、SGA領域を変更するのであれば、十分な設計が必要。
パフォーマンスモニタでカウンタの追加を行い、
パフォーマンスオブジェクト Process
カウンタ Virtual Bytes
インスタンス oracle
で2GBを超えるかどうかで判断。
チューニングすべきパラメータはSGA_TARGET, PGA_AGGREGATE_TARGETであり、通常はOracle Enterprise Managerを利用して変更できる。コマンドラインから変更する方法については、Oracle管理者のためのSQLリファレンスが詳しい。
#SQL*Plusへのログイン
sqlplus sys/(password) as sysdba
#データベースの停止。ユーザーによるデータベースからの切断を待って終了。
shutdown normal
#TRANSACTIONALモードによるデータベースの停止。トランザクションの完了を待って終了。
shutdown transactional
#データベースの停止(即時停止)。コミットされていないトランザクションはすべてロールバックされるが、リカバリは不要
shutdown immediate
#強制終了によるデータベースの停止。インスタントリカバリの修復が必要。
shutdown abort
詳しくは@ITを参照してください。
ODBCにてOracleInstanceClientを登録しようとして完了ボタンを押すと
「ODBC ドライバのセットアップ プログラムを読み込むことができませんでした (エラーコード126)」が発生することがある。これはsystem32フォルダ内にmfc71.dllおよびmsvcp71.dllがないことが原因であるので、これらのDLLファイルをコピーして登録するとエラーが発生しないようになる。
アカウントがロックされていて利用できないので、sysもしくはsystemでログインし
select username, account_status, lock_date from dba_users;
で ACCOUNT_STATUS を確認する。
なお、
alter user (username) account unlock;
でアカウントを解除できる。
リモートのOracle DatabaseにSQLPlusから接続する方法について2通りある。
1.sqlplus (username)/(password)@(ネットサービス名)
リモートのリスナー名の登録は、Net Configuration Assistantを使って以下の手順にて登録できる。
(1)ローカル・ネット・サービス名構成を選んで次へを押す
(2)追加を選んで次へを押す
(3)サービス名にリモートのOracle Databaseがインストールされたマシンで登録済みのネットサービス名を入力し次へを押す
(4)プロトコルを選んで次へを押す
(5)ホスト名にIPアドレスを入力して次へを押す
(6)テストして登録を完了する
2.sqlplus (username)/(password)@(IPアドレス):1521/(ネットサービス名)
ここのネットサービス名はリモートのOracle Databaseがインストールされたマシンで登録済みのネットサービス名となる。1の方法でつないだ場合に「リスナーは接続記述子でリクエストされたサービスを現在認識していません」が表示される場合には、この方法を試して、リモートサーバーへまず接続できるかどうか試してみると良い。但し、Oracle 10g以降でサポートされた書式なので、9i以前では使用できない。
データベースインストール時に発生した問題。インストレーションガイドが役に立ちます。
TNSリスナーサービスが権限不足で起動できないために起こり、
ORA-24323: 値が許可されていません。
ORA-28547: サーバーへの接続が失敗しました。Oracle Netの管理エラーの可能性があります。
についてもあわせてエラーが表示されました。
もしAdministratorグループに所属していないユーザーにて実行している場合には、Administratorグループによるインストールを試してみると解決するかもしれません。(僕の場合には解決しました)
Oracle Databaseでインスタンスが突然停止してしまう問題が発生した。
原因は、Redoログが別のプロセスによってロックされてしまったためにロールバックに失敗して異常停止になったようだが、データベースが突然停止するなんていうのを始めて目の当たりにしただけにショックが大きい。
結局別プロセスというのがシステムのバックアップソフトだったわけだけど、バックアップでRedoログを取得するなんていうのは珍しい話ではないだけに、トランザクションが常時利いているOracle Databaseは意外なところで弱いのかもしれない。
文字コード設定をJA16SJISもしくはJA16EUCに設定した状態でUnicodeへの変換をどこかでやっていたりするとウェーブダッシュなどの文字が化けてしまう。これは、「~」という文字などがSJISとUnicodeのマッピングがOracleとMicrosoftの間で異なっているためだそうで。。。
これを解決する方法として、R9.0.1.4からJA16SJISTILDEやJA16EUCTILDEといったキャラクタセットが用意されているらしい。
詳しくはOracleのドキュメントが参考になる。
そんなときはこのサイトが参考になりましたが、こんな強引な削除は運用上よくありませんので、やらないことが懸命ですね。
MS-DOSプロンプトから
sqlplus /nolog
connect sys/(sysパスワード) as sysdba
alter database datafile '(表領域のパス)' offline drop;
recovery database;
shutdown;
startup;
※ファイル名が分からなければとりあえず、connectした後にstartupしてエラーを出せば分かります。
僕の場合には、
データベースがマウントされました。
ORA-01157: データファイル5を識別/ロックできません -
DBWRトレース・ファイルを参照してください
ORA-01110: データファイル5: '(DBFファイルのパス)
と表示されました。
なお、表領域はネットワークドライブ上には作れないらしいので容量が少ないときの回避策には使えないですね。
SQL*Plusを利用してクエリ結果を保存したり、予約文字になっている&を利用するためのテクニックについて。→SQL*Plusの色々な技
メモリ割り当てに失敗しているときに発生する。
一般的に、SGA(システムグローバル領域)とPGA(プログラムグローバル領域)が存在し、これらは自動的に割り当てが行われるものだが、手動で強制的に設定することもできる。
32ビットシステム機においては、SGAとPGAの合計値が2GBを超えるようなことは一般的にお勧めできない。
このエラーが発生している場合には、oracle_sidがセットされていないために、データベースのマウントならびにオープンが失敗している。とりあえずの対応方法は以下のとおり。
MS-DOSプロンプトを開く
set oracle_sid=(SID名)
sqlplus /nolog
connect sys/(sysユーザーパスワード) as sysdba
startup
これをやると
データベースがマウントされました
データベースがオープンされました
と表示されるので、接続できるようになる。
Windows起動時に正常に起動できる場合とそうでない場合があるようなことがあれば、【トラブル】OS起動時にDBが起動しないを参考にsqlnet.oraにある
SQLNET.AUTHENTICATION_SERVICES=(NTS)
を
SQLNET.AUTHENTICATION_SERVICES=(NONE)
へ変更してあげると良い。