为了控制用户对Production数据库的更改,现在创建一个新用户Production_query和一个新角色V_TD_USR_QUERY_PRD_ROLE,该角色只对Production的table及view有查询权限,并且将该角色赋予给Production_query。 为了Production_query用户查询时方便,不用再table及view前加schema名字,可以再Production_query用户下建立Synonyms.
步骤如下:
运行1_CREATE_QUERY_PRD_ROLE.cmd,调用V_TD_USR_QUERY_PRD_ROLE.sql,运行2_CREATE_SYNONYM.cmd,创建Synonym.
[@more@]
1_CREATE_QUERY_PRD_ROLE.cmd
set
NLS_LANG=AMERICAN_AMERICA.AL32UTF8
sqlplus
sys/password@dbtest as sysdba @./V_TD_USR_QUERY_PRD_ROLE.sql
>1_CREATE_QUERY_PRD_ROLE.log
@echo
off
echo.
echo Grant
select on all tables and views of production schema to PRODUCTION_QUERY!
Pause
V_TD_USR_QUERY_PRD_ROLE.sql
SET
PAGESIZE 0
SET
LINESIZE 160
SET
DEFINE OFF;
-- Create a new user
CREATE
USER PRODUCTION_QUERY
IDENTIFIED
BY PRODUCTION_QUERY
DEFAULT
TABLESPACE USERS
TEMPORARY
TABLESPACE TEMP
PROFILE
DEFAULT
ACCOUNT
UNLOCK;
-- Create new role
CREATE
ROLE V_TD_USR_QUERY_PRD_ROLE NOT IDENTIFIED;
-- Grant select on all tables and views of production schema to
PRODUCTION_QUERY
SPOOL
grant_select_all_tables_views.sql
SELECT
'GRANT SELECT ON PRODUCTION.'||table_name||' TO V_TD_USR_QUERY_PRD_ROLE;'
FROM
dba_tables
WHERE
owner='PRODUCTION';
SELECT
'GRANT SELECT ON PRODUCTION.'||view_name||' TO V_TD_USR_QUERY_PRD_ROLE;'
FROM
dba_views
WHERE
owner='PRODUCTION';
SPOOL
OFF
@grant_select_all_tables_views.sql
GRANT
V_TD_USR_QUERY_PRD_ROLE TO PRODUCTION_QUERY;
ALTER
USER PRODUCTION_QUERY DEFAULT ROLE ALL;
GRANT
CREATE SESSION TO PRODUCTION_QUERY;
-- Edit SQL : Create synonym for all tables and views of production
schema
grant
create synonym to production_query;
SPOOL
create_synonym_for_tables_views.sql
SELECT
'CREATE SYNONYM '||view_name||' FOR PRODUCTION.'||view_name||';'
FROM
dba_views
WHERE
owner='PRODUCTION';
SELECT
'CREATE SYNONYM '||table_name||' FOR PRODUCTION.'||table_name||';'
FROM
dba_tables
WHERE
owner='PRODUCTION';
SPOOL
OFF
SET
PAGESIZE 14
SET
LINESIZE 80
quit
2_CREATE_SYNONYM.cmd
set
NLS_LANG=AMERICAN_AMERICA.AL32UTF8
sqlplus
production_query/production_query@dbtest @./create_synonym_for_tables_views.sql
> create_synonym_for_tables_views.log
@echo
off
echo.
echo
Create synonym for all tables and views of production schema!
pause
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/12472709/viewspace-1036315/ ,如需转载,请注明出处,否则将追究法律责任。