oracle批量生成索引,ORACLE迁移时批量导出索引、存储过程,表结构等

[toc]

ORACLE迁移中的一些经验(一)批量导出sequence

批量导出squence

在网上找到这样一条语句:

select 'create sequence ' || sequence_name || ' minvalue ' || min_value ||

' maxvalue ' || max_value || ' start with ' || last_number ||

' increment by ' || increment_by || (case

when cache_size = 0 then

' nocache'

else

' cache ' || cache_size

end) || ';'

from dba_sequences;

但实际操作中,很多时候避免新库取值是不重复使用老库序列,需要增大序列的值,所以修改上面语句

select 'create sequence '||sequence_name||

' minvalue '||min_value||

' maxvalue '||max_value||

' start with '|| to_number(last_number +1000) ||

' increment by '||increment_by||

(case when cache_size=0 then ' nocache' else ' cache '||cache_size end) ||';' from dba_sequences;

当然增加的数量要更加实际的情况而定(MAX_VALUE的值),我这里的是增加1000.

ORACLE迁移中的一些经验(二)批量导出job,并在目标库创建

1、 批量导出创建job,语句如下:

SELECT 'SYS.dbms_job.submit(job => :job,what => '''||what||''',next_date => to_date('''||to_char(next_date,'dd-mm-yyyy hh24:mi:ss')||''', ''dd-mm-yyyy hh24:mi:ss''),interval => '''||INTERVAL||''');' FROM dba_jobs;

例子:

SQL> SQL> SELECT 'SYS.dbms_job.submit(job => :job,what => '''||what||''',next_date => to_date('''||to_char(next_date,'dd-mm-yyyy hh24:mi:ss')||''', ''dd-mm-yyyy hh24:mi:ss''),interval => '''||INTERVAL||''');' FROM dba_jobs;

'SYS.DBMS_JOB.SUBMIT(JOB=>:JOB,WHAT=>'''||WHAT||''',NEXT_DATE=>TO_DATE('''||TO_CHAR(NEXT_DATE,'DD-MM-YYYYHH24:MI:SS')||''',''DD-MM-YYYYHH24:MI:SS''),INTERVAL=>'''||INTERVAL||''');'

SYS.dbms_job.submit(job => :job,what => 'xyz_pkg.xyz_p1;',next_date => to_date('21-11-2015 15:26:22', 'dd-mm-yyyy hh24:mi:ss'),interval => 'sysdate+1/1440');

SYS.dbms_job.submit(job => :job,what => 'xyz_pkg.xyz_p2;',next_date => to_date('21-11-2015 15:26:17', 'dd-mm-yyyy hh24:mi:ss'),interval => 'sysdate+1/1440');

2、新库创建JOB

将上面产生的语句加入至:

VAR job NUMBER

begin

SYS.dbms_job.submit(job => :job,what => ‘xyz_pkg.xyz_p1;’,next_date => to_date(‘21-11-2015 15:26:22’, ‘dd-mm-yyyy hh24:mi:ss’),interval => ‘sysdate+1/1440’);

SYS.dbms_job.submit(job => :job,what => ‘xyz_pkg.xyz_p2;’,next_date => to_date(‘21-11-2015 15:26:17’, ‘dd-mm-yyyy hh24:mi:ss’),interval => ‘sysdate+1/1440’);

COMMIT;

END;

/

使用SYS执行就可以了。

2、然后修改job的属主

脚本如下:

set serveroutput on

declare

v_job_id number;

v_user varchar2(50);

v_nlsenv VARCHAR2(4000);

cursor c_tab is select job,schema_user,nls_env from dba_jobs where log_user=‘SYS’;

begin

open c_tab;

loop

fetch c_tab into v_job_id,v_user,v_nlsenv;

exit when c_tab%NOTFOUND;

sys.dbms_ijob.CHANGE_ENV(v_job_id,‘TONY’,‘TONY’,‘TONY’,v_nlsenv); ----修改目标用户

commit;

end loop;

close c_tab;

end;

/

修改完属主,JOB就迁移完成了。

3. 批量导出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 1800

set pages 999

set long 90000

spool /home/oracle/craete_index02.sh

–设置按单词换行

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);

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’);

spool off

===========================================

set linesize 1800

set pages 999

set long 90000

col aa format 99999999

col aa for a200 wrapped word

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);

spool F:\zhangzhemin\craete_index02.sh

SELECT DBMS_METADATA.GET_DDL(u.OBJECT_TYPE, u.object_name,u.OWNER) as aa

FROM DBA_OBJECTS u

where u.OBJECT_TYPE=‘INDEX’ AND u.owner in(‘IPTVCIMP’);

spool off

导出表空间

set linesize 180

set pages 999

set long 90000

col a for a200 wrapped word

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);

spool F:\zhangzhemin\craete_tablespace.sh

SELECT DBMS_METADATA.GET_DDL(‘TABLESPACE’, TS.tablespace_name)

FROM DBA_TABLESPACES TS;

spool off

4. --导出表空间

方法 一

set linesize 180

set pages 999

set long 90000

col a for a200 wrapped word

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);

spool /home/oracle/tablespace_name02.sh

SELECT DBMS_METADATA.GET_DDL(‘TABLESPACE’, TS.tablespace_name)

FROM DBA_TABLESPACES TS;

spool off

方法二

set linesize 180

set pages 999

set long 90000

declare

cursor c2 is select tablespace_name from dba_tablespaces where contents='PERMANENT' ;

v_tablespac c2%rowtype;

begin

DBMS_OUTPUT.ENABLE(buffer_size => null);

open c2;

loop

fetch c2 into v_tablespac ;

exit when c2%notfound;

DBMS_OUTPUT.put_line(to_char(dbms_metadata.get_ddl('TABLESPACE',v_tablespac.tablespace_name))||';');

end loop;

close c2;

end;

/

5. – 创建用户脚本

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;

/

6.—授权系统权限脚本

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’

);

7. --授角色脚本

select ‘grant ‘||granted_role||’ to ‘||grantee||’;’ from dba_role_privs

where grantee not in

(‘SPATIAL_WFS_ADMIN_USR’,

‘DIP’,

‘MDDATA’

);

8. – 表权限

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

/

9. 导出dblink的ddl语句

SELECT DBMS_METADATA.GET_DDL(‘DB_LINK’, u.object_name,u.OWNER) as aa

FROM DBA_OBJECTS u

where u.OBJECT_TYPE=‘DATABASE LINK’ ;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/574001.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

myeclipse 怎么安装与激活

摘录自:http://blog.csdn.net/u012318074/article/details/71310553 第一步:安装完成后不要运行MyEclipse 第二步:下载对应的破解文件 第三步:解压并打开破解文件 第四步:打开文件夹patch,将里面的文件全部…

oracle insert select 大 批量 数据_芬兰 Vaisala维萨拉 HM70手持式温湿度表 型号:FL15/HM70+HMP75【北京中西华大吧】...

陈经理18910282263芬兰 Vaisala维萨拉 HM70手持式温湿度表 型号:FL15/HM70HMP75库号:M72537 相对湿度测量范围 0…100 % RH多种语言用户界面显示图形趋势维萨拉HUMICAP 传感器技术3个探头, 温度范围-70 至180 C湿度探头、露点探头和二氧化碳探头均可连接显示多种湿度…

android.hardware.Camera类及其标准接口介绍

android.hardware.Camera类及其标准接口介绍,API level 19 http://developer.android.com/reference/android/hardware/Camera.html转载于:https://www.cnblogs.com/zl1991/p/5203504.html

c++思维导图_必看|用好思维导图,别神话思维导图

不知不觉,时间已经划至5月中旬,20级的萌新们也从当初的“小白”不断进阶,化身老司机指日可待~相信从备考到现在,各位一定对“思维导图”这四个大字都听倦了!不管是老学长老学姐们公开课上传授的经验,还是刚…

oracle 性能优化 常用,Oracle數據庫常用性能優化

1、 查兩張以上表時,把記錄少的放在右邊2、 WHERE子句中的連接順序ORACLE采用自上而下的順序解析WHERE子句,根據這個原則,那些可以過濾掉最大數量記錄的條件應寫在WHERE子句最后。例如:查詢員工的編號,姓名,工資,部門名…

如何在cmd命令行中查看、修改、删除与添加环境变量

首先明确一点: 所有的在cmd命令行下对环境变量的修改只对当前窗口有效,不是永久性的修改。也就是说当关闭此cmd命令行窗口后,将不再起作用。永久性修改环境变量的方法有两种:一种是直接修改注册表(此种方法目前没试验过…

linux进程实际内存大小,Linux进程内存用量分析之堆内存篇

本文将介绍几种内存泄漏检测工具,并通过实际例子介绍一种分析堆内存占用量的工具和方法,帮助定位内存膨胀问题。背景进程的内存管理是每一个开发者必须要考虑的问题,对于C程序进程来说,出现问题很多情况下都与内存挂钩。进程崩溃问…

spring处理循环依赖时序图_Maven依赖管理系统

【思考】首先,简单讲述一下为什么需要这样一个系统?不知道大家有没有思考,在一个可能有上千个模块/产品的公司,对于模块之间有较多相互依赖的情况,以下问题该如何解决:我们把一个生命周期结束的组件移除之后…

好友消息和群消息区别

好友消息类型&#xff1a;$message is 空军建军节群消息类型: $message is 33623fd04e4001687be9b5d85b1e2958950adc947c2398c59225d8904ff98bea:<br/>hhhgf转载于:https://www.cnblogs.com/zhaoyangjian724/p/6200407.html

linux入门命令菜鸟,经典:Linux菜鸟入门级命令大全

经典&#xff1a;Linux菜鸟入门级命令大全1. man 对你熟悉或不熟悉的命令提供帮助解释eg:man ls 就可以查看ls相关的用法注&#xff1a;按q键或者ctrlc退出&#xff0c;在linux下可以使用ctrlc终止当前程序运行。2. ls 查看目录或者文件的属*&#xff0c;列举出任一目录下面的文…

java 获取本机ip_linux获取本机IP

获取网口名称直接输出所有的网口信息ifconfig | grep -v ^ | grep -v ^bashifconfig | awk -F: /^[^ ]/{print$1}ip a | awk -F": " /^[^ ]/{print$2}获取所有的IP直接输出所有的IPifconfig | grep inet | awk {print $2}ip a | awk /inet /{print$2} | sed s#/.*#…

python语言基本控制结构有哪些-以下不属于Python语言控制结构的是()

【单选题】以下程序的输出结果是() x10 y0 if(x>5)or(x/y>5): print("Right") else: print("Wrong")(1.0分) 【单选题】以下代码的输出结果是() def young(age): if 25<age<30: print("年轻有前途") elif age<25: print("参…

手持移动扫描终端 PDA移动开单系统-批发零售管理

条码数据采集器通过扫描商品条码移动开单&#xff0c;实现便携式办公&#xff0c;伴随式销售&#xff0c;是我公司的一款最新便携式开单配套产品&#xff0c;采集器能通过WIFI无线局域网、GPRS互联网直接与主机连接&#xff0c;让公司业务人员能随时随地了解公司产品信息&#…

Linux 把文件内容发送给用户,linux上给其他在线用户发送信息(wall, write, talk, mesg)...

linux上给其他在线用户发送信息(wall, write, talk, mesg)2018-11-30设置登录提示/etc/motd文件的用途/etc/motd即message of today(布告栏信息)&#xff0c;每次用户登录时&#xff0c;/etc/motd文件的内容会显示在用户的终端。系统管理员可以在文件中编辑系统活动消息&#x…

sd卡测速工具_拍完照回家发现SD卡损坏,拯救你的照片就用这个办法!

SD卡可以说是目前相机存储的主要工具&#xff0c;一旦拍照结束后出了问题&#xff0c;那可是最头疼的事情。我昨天就碰到了这样奇怪的事情&#xff0c;拍照回来正要导出数据&#xff0c;发现电脑系统提示要格式化存储卡&#xff0c;经过几次插拔发现依然不能识别。如果按照提示…

linux中vim如何替换字符串,vim中替换字符串的方法有哪些

vim中替换字符串的方法有哪些发布时间&#xff1a;2020-06-04 11:41:18来源&#xff1a;亿速云阅读&#xff1a;238作者&#xff1a;Leah这篇文章为大家带来有关vim中替换字符串的方法介绍&#xff0c;如果在日常学习或工作遇到这个问题&#xff0c;希望大家通过这篇文章的几种…

ELK Stack (1) —— ELK + Redis安装

ELK Stack (1) —— ELK Redis安装 摘要 安装Elasticsearch、Logstash、Kibana与Redis以实现一个日志收集平台 版本 elasticsearch版本: elasticsearch-2.2.0 logstash版本: logstash-2.2.2 kibana版本: kibana-4.3.1-darwin-x64 jdk版本: jdk1.8.0_65 内容 目标架构 Logstash…

智能机器人路径规划及代码_AI割草机器人用ML+传感器自动规划路径

作者&#xff1a;DIGITIMES谢明珊Graze Mowing发表全新自动割草机器人&#xff0c;可针对中大型商用空间提高景观维护效率&#xff0c;吸引来自世界各地的高尔夫球场以及景观维护公司的询问&#xff0c;已累积1,900多万美元预购订单和商业合约&#xff0c;可望为劳力密集的造景…

request.get... getHeader 能取得的信息 参数

转载▼StringTokenizer st new StringTokenizer(agent,";"); st.nextToken(); //得到用户的浏览器名 String userbrowser st.nextToken(); System.out.println(userbrowser); //得到用户的操作系统名 String useros st.nextToken(); System.out.println(useros)…

同一个浏览器打开不同端口的程序登录_【BI报表制作】单点登录与个性化开发...

无法正常登录&#xff1f;想将报表内默认的奥威BI软件logo换成自己家的&#xff1f;想连接Excel数据源做可视化&#xff1f;想实现单点登录&#xff08;公开分享&#xff09;&#xff1f;本期的实用课程OurwayBI单点登录与个性化开发可不要错过了。修改端口奥威BI软件默认的端口…