关于ORA-1658错误和用户表空间配额
如圖四川網(wǎng)省在導入總部導出的DMP文件中報1658錯誤,但是經(jīng)過查詢,表空間的使用率才10%,最后查明的用戶空間配額給的太小造成的問題。
用戶表空間配額與用戶表空間是完全不一樣的概念:如果對用戶進行了表空間配額限制,哪怕用戶就算擁有再大的表空間也只能使用被限制的那部分大小的表空間。
默認情況下用戶對所有表空間都是沒有配額限制的,即不受空間限制。
創(chuàng)建用戶時指定表空間限額:
CREATE USER SG_ODS IDENTIFIED BY SG_ODS DEFAULT TABLESPACE ODSVIEW TEMPORARY TABLESPACE temp QUOTA 1000M ON ODSVIEW;--執(zhí)行用戶的表空間配額如何查看某用戶是否有表空間限額:
在此可以使用dba_ts_quotas和use_ts_quotas來查詢,select * from quotas,如果max_bytes字段是-1則代表沒有表空間限額,如果有不為-1的值則代表有此值大小的表空間限額,單位是B。
說道表空間限額不得不說一下unlimited tablespace權限,該權限屬于系統(tǒng)權限:
1.首先是一個爭議,unlimited tablespace權限是否包含在resources和dba角色中,有人說是隱含在這兩個角色中,有人說不包含在這兩個角色中。本人認為是隱含在這兩個角色中的。
2.unlimited tablespace權限可以授予用戶,但是不能被授予角色。
3.unlimited tablespace權限不會隨著resources和dba角色授予其他角色而被授予用戶,例如我有一個角色SGOMCW,我將resources角色授予SGOMCW,然后我再把SGOMCW角色授予omcw_app用戶,你會發(fā)現(xiàn)unlimited tablespace權限沒有被授予omcw_app用戶(假設omcw_app用戶設定了配額)。
對于修改用戶的表空間限額有三種辦法。
1.alter user USERNAME quota 50M on TABLESPACENAME;
這種是對用戶的表空間限額進行重新修正。
2.alter user USERNAME quota unlimited on TABLESPACENAME;?
第二種是針對特定表空間來進行修正,使用戶在該表空間上沒有配額限制。
3.grant unlimited tablespace to USERNAME;
當授予用戶該權限時,會覆蓋所有單個表空間的配額,此時用戶擁有了對所有表空間的無限制配額,當然也包括system和sysaux表空間,這樣比較危險。
如何回收配額?
第一種和第二種的可以使用:alter user username quota 0 on tablespacename;來進行回收。
第三種可以使用 revoke?unlimited tablespace from username; 來進行回收
待編輯。
轉(zhuǎn)載于:https://www.cnblogs.com/JSD1207ZX/p/9386285.html
總結
以上是生活随笔為你收集整理的关于ORA-1658错误和用户表空间配额的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: bp神经网络训练过程matlab,bp神
- 下一篇: Ubuntu16 虚拟机全屏自适应