当前用户的存储过程访问其他用户表的权限demo

测试oracle 存储过程 分区 索引
当前用户的存储过程访问其他用户表的权限demo
主要步骤:
1、
在用户itlife365 下创建表test 和索引
-- Create table
create table itlife365.TEST
(
  id   NUMBER,
  name VARCHAR2(100)
)
tablespace USERS
;
-- Create/Recreate indexes
create index itlife365.TEST_ID on ljs.TEST (ID)
  tablespace USERS
  ;

2、检查当前索引的状态
SQL> connect itlife365/itlife365
已连接。
SQL> select status from user_indexes where table_name='TEST';
STATUS
----------------
UNUSABLE
SQL>


使用itlife365用户授权,授予scott访问itlife365.test 表的权限:
grant alter any index to scott ;
grant create any index to scott ;
grant create any table to scott ;


3、测试不知道用户的存储过程执行情况
在用户scott下创建用户存储过程test,对表itlife365.test_id的索引进行禁用
create or replace procedure test is
    v_ddl_sql   varchar2(1024);
begin

  --禁用分区索引
  v_ddl_sql := 'alter index itlife365.test_id unusable';-- 需要赋予权限
  --v_ddl_sql := 'alter index test_id unusable';--不同用户下需要指定用户,否则会报ORA-01418:指定的索引不存在
  --  v_ddl_sql := 'alter index itlife365.text_id rebuild partition id_' ||lpad(i, 2, '0') || ' online nologging';--分区的时候
   --v_ddl_sql := 'alter index test_id rebuild online nologging';
 
  EXECUTE IMMEDIATE v_ddl_sql;
end test;

3、在scott用户下执行存储过程

4、在itlife365用户下检查当前索引的状态
/*--查询索引状态情况*/
select di.status from dba_indexes di where di.index_name='TEST_ID';
STATUS
N/A
/*分区*/
select di.status,di.*  from dba_ind_partitions di where di.index_name='TEST_ID';
USABLE
UNUSABLE

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2024年11月    »
123
45678910
11121314151617
18192021222324
252627282930
搜索
标签列表
网站分类
最新留言
    文章归档
    友情链接

    Powered By Z-BlogPHP 1.7.3

    Copyright Your WebSite.Some Rights Reserved.闽ICP备11018667号-2