つまりはよんでみればいいと思う。興味があったら※で自己主張すればいいと思う。
ORA-01536: 表領域'表領域名'に対する領域割当て制限を使い果たしました。
表領域の話です。
Oracleの表領域の設定の確認は以下のSQLで行います、行いました。
SELECT
TABLESPACE_NAME,
FILE_NAME,
AUTOEXTENSIBLE
FROM
DBA_DATA_FILES
WHERE
TABLESPACE_NAME = '表領域名';
そんでもって、AUTOEXTENSIBLEを確認したところ、
AUTOEXTENSIBLEが「YES」となっていました。
これは自動拡張機能が有効になっているということで
表領域のデフォルトよりもおっきくなっても増えていきますってことで理解しています。
あんまり詳しく知らない。
今回の問題点は、こうなっているのにもかかわらず、
SELECT
'表領域',
trunc(SUM(bytes)/(1024*1024)) "Free Size"
FROM
dba_free_space GROUP BY '表領域'
を実行して、まだもうちょい空いているのに、
「ORA-01536: 表領域'表領域名'に対する領域割当て制限を使い果たしました。」
が発生したのです。
もともとこのエラーが出る場合って、表領域が足りない=自動拡張設定がされてない
焦りつつ原因を調べたところによると、原因?というか同じ現象になったという方を見つけました。
http://d.hatena.ne.jp/kuronekojima/20070829/1188352403
同じ状況です。
原因は、表領域は自動拡張が付加されていたが、それを扱うユーザーがそれを使う権限をもっていなかった、ということみたいです。
select * from user_ts_quotas;
をそのユーザーで実行したところ、確かに
MAX_BLOCKSが0・・・。MAX_BYTEも0・・・。
無制限の場合はこのいずれもが-1になるはずなのですね。
UNLIMITEDをユーザーに付与すれば無制限になるはずなので、多分解決?のはずです。
先輩に報告報告♪理解してすっきりしました!
Oracleの表領域の設定の確認は以下のSQLで行います、行いました。
SELECT
TABLESPACE_NAME,
FILE_NAME,
AUTOEXTENSIBLE
FROM
DBA_DATA_FILES
WHERE
TABLESPACE_NAME = '表領域名';
そんでもって、AUTOEXTENSIBLEを確認したところ、
AUTOEXTENSIBLEが「YES」となっていました。
これは自動拡張機能が有効になっているということで
表領域のデフォルトよりもおっきくなっても増えていきますってことで理解しています。
あんまり詳しく知らない。
今回の問題点は、こうなっているのにもかかわらず、
SELECT
'表領域',
trunc(SUM(bytes)/(1024*1024)) "Free Size"
FROM
dba_free_space GROUP BY '表領域'
を実行して、まだもうちょい空いているのに、
「ORA-01536: 表領域'表領域名'に対する領域割当て制限を使い果たしました。」
が発生したのです。
もともとこのエラーが出る場合って、表領域が足りない=自動拡張設定がされてない
焦りつつ原因を調べたところによると、原因?というか同じ現象になったという方を見つけました。
http://d.hatena.ne.jp/kuronekojima/20070829/1188352403
同じ状況です。
原因は、表領域は自動拡張が付加されていたが、それを扱うユーザーがそれを使う権限をもっていなかった、ということみたいです。
select * from user_ts_quotas;
をそのユーザーで実行したところ、確かに
MAX_BLOCKSが0・・・。MAX_BYTEも0・・・。
無制限の場合はこのいずれもが-1になるはずなのですね。
UNLIMITEDをユーザーに付与すれば無制限になるはずなので、多分解決?のはずです。
先輩に報告報告♪理解してすっきりしました!
ORA-01779: キー保存されていない表にマップする列は変更できません
わすれがちだけど
LEFT OUTER JOIN の 「OUTER」は省略可能。
LEFT JOINのくっつけられるテーブル・・・右テーブルが、
左テーブルに対して複数紐付いた場合には、
複数の列が生成される。
昨日SQL発行したら変なデータが取れてあせった。
原因は、そのSQLにLEFT JOINを使用していて、
抽出条件にこの範囲内なら・・・っていうのがあって、
その部分かかわる場所が書き換えられており、
しかもその期間がかぶってるデータが存在していたつまり一意になっていなかった。
本題です。
今回作成していたSQL文の一部に、
JOINした結果をUPDATEしなければならない部分がありました。そこで発生したのが下記のエラーです。
「ORA-01779: キー保存されていない表にマップする列は変更できません」
原因はマッピングに使っているキーが一意ではないかららしい。
でも会社のデータベースだし、BYPASS_UJVC ヒント句を使うのかな?
というか一意になっていない時点でアレな気もする・・・。
まだ設計段階なので、先輩の耳に 入れておこうと思う。
覚書でした。
LEFT OUTER JOIN の 「OUTER」は省略可能。
LEFT JOINのくっつけられるテーブル・・・右テーブルが、
左テーブルに対して複数紐付いた場合には、
複数の列が生成される。
昨日SQL発行したら変なデータが取れてあせった。
原因は、そのSQLにLEFT JOINを使用していて、
抽出条件にこの範囲内なら・・・っていうのがあって、
その部分かかわる場所が書き換えられており、
しかもその期間がかぶってるデータが存在していたつまり一意になっていなかった。
本題です。
今回作成していたSQL文の一部に、
JOINした結果をUPDATEしなければならない部分がありました。そこで発生したのが下記のエラーです。
「ORA-01779: キー保存されていない表にマップする列は変更できません」
原因はマッピングに使っているキーが一意ではないかららしい。
でも会社のデータベースだし、BYPASS_UJVC ヒント句を使うのかな?
というか一意になっていない時点でアレな気もする・・・。
まだ設計段階なので、先輩の耳に 入れておこうと思う。
覚書でした。
〔Oracle〕一時テーブル
groval temporary table
一時テーブルは、2種類ある。
DELETE ROWSを設定すると、トランザクションごとにテーブルが作成される。
トランザクションが切れると、トランケートされる。
〔トランケート〕
全件DELETE的な。
高速で動くけど、ロールバック不可能。
drop table権限が必要。
ちなみにシノニムには使えない。
一時テーブルは、2種類ある。
DELETE ROWSを設定すると、トランザクションごとにテーブルが作成される。
トランザクションが切れると、トランケートされる。
〔トランケート〕
全件DELETE的な。
高速で動くけど、ロールバック不可能。
drop table権限が必要。
ちなみにシノニムには使えない。







