周五给一套SIT环境配置物化视图,但存在于视图名相同的表名,需要先把表改名后在创建视图,但却没那么顺利...
费了一点小周折终于搞定,记录一下解决的思路。
1.alter table old_table rename to new_table;
收到报错,从报错内容上看是没有DDL权限的错误,像是人为写的trigger,于是考虑想禁掉这个trigger,却苦于不知道trigger的名字
2.找trigger名,有两种思路,一是找到确切的trigger,二是遍历所有trigger找到可疑的trigger,在尝试禁用,显然第一种方法是可靠的
3.开启session级别的trace,然后执行alter命令修改表名
4.收到报错后关闭trace,并到udump小找到trace文件,在11g中udump默认与alterSID.log在一起
5.在trace中找到alter 那行,在那附近就可以看到trigger的代码
6.根据源码中的特殊语句,在dba_source中找到具体的trigger名
---------------------------------------------------全文完------------------------------------------------------------