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

原创 2015年11月21日 18:54:22

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



Oracle迁移之批量迁移INDEX、SEQUENCE、VIEW

通过java程序处理oracle数据库索引(INDEX)、序列(SEQUENCE)、视图(VIEW)、触发器(TRIGGER)、函数(FUNCTION)等的迁移。...
  • loongshawn
  • loongshawn
  • 2016年01月26日 11:54
  • 1913

ORACLE下如何获得全部的索引创建语句

 ORACLE下如何获得全部的索引创建语句  今天打算将一个数据库的索引在另一个测试库上重新创建一遍,研究了一下。set pagesize 0set long 90000set feedback of...
  • wwwlh
  • wwwlh
  • 2010年01月01日 20:48
  • 6454

将当前表空间下的用户的表和索引迁移到另一个表空间

set term off verify off head off feedback off echo off  spool mvddl.sql  select 'alter '||segment_...
  • u010692693
  • u010692693
  • 2015年10月23日 15:30
  • 447

Oracle按用户批量重建索引

按用户批量重建索引: 按用户将此用户下面非临时表上面的索引全部重建,此过程建议在SYS用户下面执行: Sql代码 CREATE OR REPLACE PRO...
  • yudehui
  • yudehui
  • 2012年10月22日 11:25
  • 1258

ORACLE导出创建非唯一索引脚本的方法

导出创建非唯一索引脚本的方法   在ORACLE里用逻辑备份工具exp导出数据时,如果使用默认参数, 会把创建索引的语句一起导出来。当数据和索引小的时候,我们可能不太会计较导入时间; 如果数据和索引大...
  • langzitianya
  • langzitianya
  • 2007年08月07日 00:57
  • 3117

oracle 11g导出表和索引的定义

先将表的信息导入到2.dmp expdp test/test directory=dump_0420 dumpfile=2.dmp  tables=A,B logfile=lcam_0421.log...
  • guogang83
  • guogang83
  • 2016年05月10日 15:05
  • 1484

Oracle如何批量重建数据库索引

查询数据库索引的方法: select * from user_indexes 由此我们可以查到该数据库下面的所有索引信息,然后批量生成sql重建语句。 sql的索引重建语句如...
  • ZZY1078689276
  • ZZY1078689276
  • 2015年09月22日 14:32
  • 2624

【DB.Oracle】create index注意n如果是大表建立索引,切记加上ONLINE参数

转自: http://wmcxy.iteye.com/blog/891224 这几天在做数据库的优化,有个2亿记录的表,发现需要添加一个联合索引,结果就采用普通的create ind...
  • robinjwong
  • robinjwong
  • 2014年12月23日 17:05
  • 6030

Oracle复合类型:嵌套表、可变数组与索引表

一、 在pl/sql中使用嵌套表和可变数组1、在pl/sql中使用嵌套表在PL/SQL中使用嵌套表,此时嵌套表就相当于其他语言中的数组。①、示例:set SERVEROUTPUT ON DECLARE...
  • yu766588220
  • yu766588220
  • 2017年02月24日 11:04
  • 224

ORACLE 表和索引迁移表空间

表做空间迁移时,使用如下语句:   例1:alter table tb_name move tablespace tbs_name;   索引表空间做迁移,使用如下语句:   例2:...
  • gaobudong1234
  • gaobudong1234
  • 2017年10月23日 11:30
  • 187
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ORACLE迁移中的一些经验(三)批量导出index 建索引、用户、权限等语句
举报原因:
原因补充:

(最多只允许输入30个字)