prement global_name from being modified illegally

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

作为只读的物化视图,是不可以更改的

www.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 view

Elapsed: 00:00:00.02

Related Posts

留下评论