ORACLE迁移中的一些经验(三)批量导出index 建索引、用户、权限等语句

1、批量导出INDEXES语句

SELECT DBMS_METADATA.GET_DDL(u.OBJECT_TYPE, u.object_name,u.OWNER)
FROM DBA_OBJECTS u
where u.OBJECT_TYPE='INDEX' AND u.owner in('TONY');


导出语句时需要格式化,方便使用。

set linesize 180
set pages 999
set long 90000

--设置按单词换行
col a for a200 wrapped word

--去除storage等多余参数
EXECUTE DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'STORAGE',FALSE);
--输出信息采用缩排或换行格式化
EXECUTE DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'PRETTY',true);
--确保每个语句都带分号
EXECUTE DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'SQLTERMINATOR',true);


2、-- 创建用户脚本
set serveroutput on 
set line 100
set pagesize 0
declare
cursor c1 is select username from dba_users a  where a.account_status='OPEN' ;
v_user c1%rowtype;
begin 
open c1;
loop 
   fetch c1 into  v_user ;
   exit when c1%notfound;
   DBMS_OUTPUT.put_line(to_char(dbms_metadata.get_ddl('USER',v_user.username))||';');
  end loop;
  close c1;
  end;
  /


3、---授权系统权限脚本
select 'grant '||t.privilege ||' to '||t.grantee || decode(t.admin_option,'YES',' with admin;',';') 
from dba_sys_privs t
where  t.grantee  not in 
('SPATIAL_WFS_ADMIN_USR',
'DIP'
);




4、--授角色脚本
select  'grant '||granted_role||' to '||grantee||';' from dba_role_privs 
where grantee not  in 
('SPATIAL_WFS_ADMIN_USR',
'DIP',
'MDDATA'
);


5、-- 表权限
select 'grant '||t.privilege||' on '||t.grantor||'.'||t.table_name||' to '||t.grantee||decode(t.grantable,'YES',' with grant;',';') 
from dba_tab_privs t
where t.grantor not in 
('SYS','SYSTEM','DBSNMP','PERFSTAT','OUTLN','WMSYS','CONNECT','DBA',
'EXP_FULL_DATABASE','IMP_FULL_DATABASE','OEM_MONITOR','RESOURCE','JAVADEBUGPRIV')
order by t.grantee



  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值