在recovery-from-updating-global_name-set-global_name.html中提到错误地修改global_name会导致数据库发生严重的错误,甚至不能启动。
其实,这种错误还是可以避免的。因为global_name是基于props$的视图,我们把这个视图创建为物化视图就可以了。
【重要:更改删除或误修改这个视图后千万不要退出或有新的登陆,否则就很杯具!】
www.ads1st.com> drop view global_name;
View dropped.
Elapsed: 00:00:02.81
www.ads1st.com> create materialized view global_name as select value$ from sys.props$ where name = ‘GLOBAL_DB_NAME’;
Materialized view created.
Elapsed: 00:00:01.59
www.ads1st.com> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
www.ads1st.com> startup
ORACLE instance started.Total System Global Area 377487360 bytes
Fixed Size 1267572 bytes
Variable Size 159385740 bytes
Database Buffers 209715200 bytes
Redo Buffers 7118848 bytes
Database mounted.
Database opened.www.ads1st.com> update global_name set global_name=”;
update global_name set global_name=”
*
ERROR at line 1:
ORA-00904: “GLOBAL_NAME”: invalid identifier
作为只读的物化视图,是不可以更改的
Related Postswww.ads1st.com> update global_name set value$=”;
update global_name set value$=”
*
ERROR at line 1:
ORA-01732: data manipulation operation not legal on this viewElapsed: 00:00:00.02