自己寫的處理ora-8103 錯誤的指令碼,物件實際已經刪除了,但相關資訊還是保留在資料字典了,需要修改資料字典,最後是alter system flush shared_pool;因為資料字典環
快取是放在共享池裡的。
create or replace procedure del_dictionary(p_obj in number)
authid current_user
asv_file number;
v_block number;
v_cnt number :=2;
v_type number;
v_bo number;
v_count number;
begin
select count(1) into v_count from obj$ where obj#=p_obj;
--v_type=19 table partition
--v_type=20 index partition
if v_count=0 then
dbms_output.put_line('the obj# '||p_obj||' is alreay deleted!');
else
select type# into v_type from obj$ where obj#=p_obj;
if v_type=19 then
select bo#,file#,block# into v_bo,v_file,v_block from tabpart$ where obj#=p_obj;
dbms_output.put_line('file# is:'||v_file||' block# is:'||v_block);
dbms_output.put_line('the block is table partion');
delete from obj$ where obj#=p_obj;
delete from tabpart$ where obj#=p_obj;
delete from seg$ where file#=v_file and block#=v_block;
update partobj$ set partcnt =v_cnt where obj# =v_bo;
else
select bo#,file#,block# into v_bo,v_file,v_block from indpart$ where obj#=p_obj;
dbms_output.put_line('file# is:'||v_file||' block# is:'||v_block);
dbms_output.put_line('the block is index partion');
delete from obj$ where obj#=p_obj;
delete from indpart$ where obj#=p_obj;
delete from seg$ where file#=v_file and block#=v_block;
update partobj$ set partcnt =v_cnt where obj# =v_bo;
end if;
end if;
commit;
exception
--when v_raise then
when no_data_found then
end;
ORA 09817,ORA 01075報錯解決方法
sql conn as sysdba error ora 09817 write to audit file failed.svr4 error 28 no space left on device ora 01075 you are currently logged on sql 檢視硬碟空間發現...
ORA 12571 ORA 03113錯誤解決
問題現象 windows2000 環境下system 檔案壞掉了,不能啟動,修復以後機器是啟動了,但發現原來的 oracle 服務都不見了,也沒有什麼重要的資料,就重灌了一遍,裝完以後一切正常,連線 oracle 正常,重啟動機器以後發現連線 oracle 出現錯誤 ora 12571 tns 包寫...
ora 00604 ora 12705問題解決
ora 00604 error occurred at recursive sql level 1.1 ora 12705 invalid or unknown nls parameter value specified 到網上一搜都是關於oracle編碼的問題,但是我用jdbc連線卻沒有問題,可以...