Oracle不正規操作導致drop表空間drop使用者報錯ora38301(記錄,未解決)
作業系統版本:
資料庫版本:
環境構造:
正規清理回收站的表:
1、使用 PURGE TABLE original_table_name; 這裡的 original_table_name 表示未 drop 以 前的名稱
2、使用 PURGE TABLE recyclebin_object_name; 這裡的 recyclebin_object_name 表示回 收站中的物件名稱
3、使用 PURGE TABLESPACE tablespace_name 從指定的表空間中清除所有的丟棄物件
4、使用 PURGE TABLESPACE tablespace_name USER user_name 從回收站中清除屬 於某個特定使用者的所有丟棄物件。
5、DROP USER user_name cascade 直接刪除指定使用者及其所屬的全部物件,也就是說, DROP USER 命令會繞過回收站進行直接刪除。
6、使用 PURGE RECYCLEBIN 命令清除使用者自己的回收站
7、PURGE DBA_RECYCLEBIN 從所有使用者的回收站清除所有物件
假如發生了這個場景,應該怎麼去解決?
-
[oracle@oracle trace]$ uname -a
-
Linux oracle.example.com 2.6.32-431.el6.x86_64 #1 SMP Sun Nov 10 22:19:54 EST 2013 x86_64 x86_64 x86_64 GNU/Linux
-
[oracle@oracle trace]$ lsb_release -a
-
LSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
-
Distributor ID: RedHatEnterpriseServer
-
Description: Red Hat Enterprise Linux Server release 6.5 (Santiago)
-
Release: 6.5
- Codename: Santiago
資料庫版本:
-
SYS@proc> select * from v$version where rownum=1;
-
-
BANNER
-
--------------------------------------------------------------------------------
- Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
環境構造:
-
SYS@proc> create table t(id int);
-
-
Table created.
-
-
SYS@proc> insert into t values(1);
-
-
1 row created.
-
-
SYS@proc> insert into t select * from t;
-
-
1 row created.
-
-
SYS@proc> /
-
-
2 rows created.
-
-
...省略相同步驟...
-
-
SYS@proc>/
-
-
1048576 rows created.
-
-
SYS@proc> commit;
-
-
Commit complete.
-
-
SYS@proc> select BYTES/1024/1024 mb from dba_segments where owner='SYS' and segment_name='T';
-
-
MB
-
----------
- 25
-
SYS@proc> create tablespace abc datafile '/u01/app/oracle/oradata/proc/abc01.dbf' size 26m;
-
-
Tablespace created.
-
-
SYS@proc> create user km identified by oracle account unlock;
-
-
User created.
-
-
SYS@proc> grant connect,create table to km;
-
-
Grant succeeded.
-
-
SYS@proc> alter user km quota 26m on abc;
-
-
User altered.
-
-
SYS@proc> select AUTOEXTENSIBLE from dba_data_files where tablespace_name='ABC';
-
-
AUT
-
---
- NO
-
SYS@proc> create table km.t tablespace abc as select * from t;
-
create table km.t tablespace abc as select * from t
-
*
-
ERROR at line 1:
-
ORA-01652: unable to extend temp segment by 128 in tablespace ABC
-
-
-
SYS@proc> col file_name for a50
-
SYS@proc> select file_name from dba_data_files;
-
-
FILE_NAME
-
--------------------------------------------------
-
/u01/app/oracle/oradata/proc/test01.dbf
-
/u01/app/oracle/oradata/proc/example01.dbf
-
/u01/app/oracle/oradata/proc/users01.dbf
-
/u01/app/oracle/oradata/proc/abc01.dbf
-
/u01/app/oracle/oradata/proc/sysaux01.dbf
-
/u01/app/oracle/oradata/proc/system01.dbf
-
/u01/app/oracle/oradata/proc/undotbs2_1.dbf
-
/u01/app/oracle/oradata/proc/undotbs2_2.dbf
-
-
8 rows selected.
-
-
SYS@proc> alter database datafile '/u01/app/oracle/oradata/proc/abc01.dbf' resize 30m;
-
-
Database altered.
-
-
SYS@proc> create table km.t tablespace abc as select * from t;
-
-
Table created.
-
-
SYS@proc> conn km/oracle
-
Connected.
-
-
KM@proc> drop table t;
-
-
Table dropped.
-
-
KM@proc> show recycle;
-
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
-
---------------- ------------------------------ ------------ -------------------
-
T BIN$Q38bmJwFDYXgU28cqMDtew==$0 TABLE 2016-12-13:07:03:11
-
KM@proc> conn / as sysdba
-
Connected.
-
SYS@proc> delete from recyclebin$; --不正規操作,正確應該在km使用者下執行purge table t或者purge table "BIN$Q38bmJwFDYXgU28cqMDtew==$0"
-
-
1 row deleted.
-
-
SYS@proc> commit;
-
-
Commit complete.
-
-
SYS@proc> conn km/oracle
-
Connected.
-
KM@proc> show recycle;
-
KM@proc> conn / as sysdba
-
Connected.
-
SYS@proc> create table km.t tablespace abc as select * from t;
-
-
create table km.t tablespace abc as select * from t
-
*
-
ERROR at line 1:
-
ORA-01536: space quota exceeded for tablespace 'ABC'
-
-
SYS@proc> alter user km quota unlimited on abc;
-
-
User altered.
-
-
SYS@proc> create table km.t tablespace abc as select * from t;
-
create table km.t tablespace abc as select * from t
-
*
-
ERROR at line 1:
-
ORA-01652: unable to extend temp segment by 128 in tablespace ABC --這裡可以看出雖然在km使用者執行show recycle已經是空的,但是真正的空間並沒被釋放。
-
-
-
SYS@proc> drop tablespace abc including contents and datafiles;
-
drop tablespace abc including contents and datafiles
-
*
-
ERROR at line 1:
-
ORA-00604: error occurred at recursive SQL level 1
-
ORA-38301: can not perform DDL/DML over objects in Recycle Bin
-
-
-
SYS@proc> drop user km cascade;
-
drop user km cascade
-
*
-
ERROR at line 1:
-
ORA-00604: error occurred at recursive SQL level 1
- ORA-38301: can not perform DDL/DML over objects in Recycle Bin
正規清理回收站的表:
1、使用 PURGE TABLE original_table_name; 這裡的 original_table_name 表示未 drop 以 前的名稱
2、使用 PURGE TABLE recyclebin_object_name; 這裡的 recyclebin_object_name 表示回 收站中的物件名稱
3、使用 PURGE TABLESPACE tablespace_name 從指定的表空間中清除所有的丟棄物件
4、使用 PURGE TABLESPACE tablespace_name USER user_name 從回收站中清除屬 於某個特定使用者的所有丟棄物件。
5、DROP USER user_name cascade 直接刪除指定使用者及其所屬的全部物件,也就是說, DROP USER 命令會繞過回收站進行直接刪除。
6、使用 PURGE RECYCLEBIN 命令清除使用者自己的回收站
7、PURGE DBA_RECYCLEBIN 從所有使用者的回收站清除所有物件
假如發生了這個場景,應該怎麼去解決?
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30174570/viewspace-2142410/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 由drop datafile導致的oracle bugOracle
- oracle多使用者使用同一個表空間_drop user cascade的影響Oracle
- MySQL Drop 大表的解決方案MySql
- MongoDB Drop集合不釋放磁碟空間的解決辦法MongoDB
- Oracle-禁止使用者對自己的表執行drop,alter操作Oracle
- drop物化檢視log表導致insert、delete、update報ORA-00942delete
- oracle 誤刪表 drop tableOracle
- Oracle表空間操作詳解Oracle
- oracle時間格式記錄異常導致OGG複製程式報錯Oracle
- mysql 無備份恢復drop資料-共享表空間MySql
- RMAN恢復單個表空間或被DROP/DELETE/TRUNCATE的表delete
- 解決使用者drop不掉的 ORA-01940 錯誤
- Oracle Drop表(purge)恢復(ODU)Oracle
- tarui drop失效,解決配置UI
- oracle表空間操作Oracle
- oracle drop columnsOracle
- oracle之EXP匯出表空間錯誤解決Oracle
- oracle表空間管理(簡單記錄)Oracle
- oracle BUG 5890312導致表空間瞬間暴漲Oracle
- Oracle資料庫快速Drop 大表Oracle資料庫
- 恢復oracle中drop掉的表Oracle
- 10g ORACLE_HOME空間滿導致SYSAUX表空間離線OracleUX
- Oracle 表空間 的操作Oracle
- drop表空間以及對應的資料檔案後空間不釋放的問題
- oracle的imp報表空間不存在的解決Oracle
- [oracle]undo表空間出錯,導致資料庫例項無法開啟Oracle資料庫
- 記錄下解決自定義 Feign 呼叫,響應content-type 格式不正確導致的解析錯誤
- mysql恢復drop表MySql
- 快速drop mysql大表MySql
- 物化檢視日誌表被DROP後建立物化檢視報錯
- 傳輸表空間操作-OracleOracle
- oracle表空間日常操作管理Oracle
- Oracle表空間相關操作Oracle
- Oracle表空間切換路徑,解決硬碟滿導致的ORA-01653問題Oracle硬碟
- Oracle中drop user和drop user cascade的區別Oracle
- oracle資料庫叢集新增表空間操作規範Oracle資料庫
- Oracle表空間操作詳解-入門基礎Oracle
- 815-Oracle規範(建立使用者,表空間和表)Oracle