75 lines
2.3 KiB
SQL
75 lines
2.3 KiB
SQL
--------------------------------------------------------------------------------
|
|
--
|
|
-- Name: create_xviews.sql
|
|
-- Purpose: Create views, grants and synonyms for X$ fixed tables
|
|
-- to be accessible for all users
|
|
-- Usage: Run from sqlplus as SYS: @create_xviews.sql
|
|
--
|
|
--
|
|
-- Author: (c) Tanel Poder http://www.tanelpoder.com
|
|
--
|
|
-- Other: WARNING!!! You probably don't want to create X$ views for all
|
|
-- X$ tables in prodution environments!
|
|
-- Some X$ tables may be dangerous for your databases performance
|
|
-- and stability.
|
|
--
|
|
-- Also you may have issues with dropping those views after a database
|
|
-- upgrade (ORA-600s when dropping them etc)
|
|
-- So if you have such views, you should drop them before upgrade
|
|
-- and recreate afterwards.
|
|
--
|
|
-- This script will not overwrite any existing X_$% SYS objects as
|
|
-- those may be required by other performance tools
|
|
--
|
|
--------------------------------------------------------------------------------
|
|
|
|
@saveset
|
|
|
|
set pagesize 0
|
|
set linesize 500
|
|
set trimspool on
|
|
set feedback off
|
|
set termout off
|
|
set echo off
|
|
|
|
|
|
PROMPT Have you read the WARNING section in this scripts header?!
|
|
PROMPT Press enter to create views for X$ tables or CTRL+C to cancel...
|
|
|
|
spool create_xviews.tmp
|
|
|
|
select 'create view '||replace(name,'X$','X_$')||' as select * from '||name||';'
|
|
from (
|
|
select name from v$fixed_table where name like 'X$%'
|
|
minus
|
|
select replace(object_name,'X_$','X$') from dba_objects where owner = 'SYS' and object_name like 'X\_$%' escape '\'
|
|
);
|
|
|
|
|
|
select 'grant select on SYS.'||replace(name,'X$','X_$')||' to public;'
|
|
from (
|
|
select name from v$fixed_table where name like 'X$%'
|
|
minus
|
|
select replace(object_name,'X_$','X$') from dba_objects where owner = 'SYS' and object_name like 'X\_$%' escape '\'
|
|
);
|
|
|
|
select 'create public synonym '||name||' for SYS.'||replace(name,'X$','X_$')||';'
|
|
from (
|
|
select name from v$fixed_table where name like 'X$%'
|
|
minus
|
|
select replace(object_name,'X_$','X$') from dba_objects where owner = 'SYS' and object_name like 'X\_$%' escape '\'
|
|
);
|
|
|
|
spool create_xviews.lst
|
|
|
|
set termout on echo on feedback on
|
|
|
|
@create_xviews.tmp
|
|
|
|
host rm create_xviews.tmp
|
|
host del create_xviews.tmp
|
|
|
|
@loadset
|
|
|
|
prompt Done.
|