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

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

  1. oracle能否生成mdb,oracle怎么导入.mdb文件

    匿名用户 1级 2015-12-09 回答  导出 导出具体的分为:导出表,导出方案,导出数据库三种方式. 导出使用exp命令来完成的,该命令常用的选项有: userid: 用于指定执行导出操作的用 ...

  2. shell脚本执行php文件_分享两个shell脚本实例--批量生成随机字符文件名和批量改名...

    概述 在计算机科学中,for循环(英语:for loop)是一种编程语言的迭代陈述,能够让程式码反复的执行. 它跟其他的循环,如while循环,最大的不同,是它拥有一个循环计数器,或是循环变数.这使得 ...

  3. python批量生成图_利用Python批量生成任意尺寸的图片

    实现效果 通过源图片,在当前工作目录的/img目录下生成1000张,分别从1*1到1000*1000像素的图片. 效果如下: 目录结构 实现示例 # -*- coding: utf-8 -*- imp ...

  4. 在线html批量生成工具,在线网址链接批量生成器

    批量下载功能可以方便的创建多个包含共同特征的下载任务.例如网站A提供了10个这样的下载链接: http://www.a.com/01.zip http://www.a.com/02.zip ...(中 ...

  5. oracle导入 表 卡住了,oracle数据库怎么导入dmp,只导入数据不导入表结构?

    使用方法: Exp parameter_name=value or Exp parameter_name=(value1,value2--) 只要输入参数help=y就可以看到所有帮助. EXP常用选 ...

  6. oracle数据泵到处表结构,数据泵导出数据库所有表结构

    Oracle11g中数据的倒库和入库操作以及高版本数据导入低版本数据可能引发的问题 文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaov ...

  7. 【Unity编辑器扩展】语言国际化工具,生成多语言Excel自动翻译并导出多语言表

    工具效果如图: 多语言是个非常简单且常用的功能.但是重复工作量大,程序手动把多语言Key配置到多语言表经常会出现错漏,或者几经改版,有些Key已经不用却没有剔除,久而久之造成冗余.这中简单且重复的工作 ...

  8. 查看表结构索引_索引策略–第1部分–选择正确的表结构

    查看表结构索引 介绍 (Introduction) Among many different things that can affect SQL Server performance, some a ...

  9. 使用shell批量生成数据整合式迁移的脚本(r8笔记第52天)

    对于数据整合式迁移,基本就是小霸王的二合一,四合一,八合一这样的节奏,把几个尽可能相关业务的数据库中的数据整合到一个库里.彼此还是独立的schema,倒也是相安无事.

最新文章

  1. 中国海上风力发电行业战略调研与投资风险分析报告2022-2028年
  2. linux 文件目录操作,Linux系统下文件与目录操作
  3. 【城市沙龙】LiveVideoStack Meet|合肥:在“霸都”邂逅音视频技术
  4. 太强了!顶尖高校学霸“神仙笔记”刷屏,这10类专业绝了
  5. mysql8.0依赖_分享MySql8.0.19 安装采坑记录
  6. 查看服务器大文件,linux 查看服务器大文件
  7. python实现二分搜索binary_search
  8. 【三维路径规划】基于matlab GUI蚁群算法无人机三维路径规划【含Matlab源码 254期】
  9. c语言字符统计程序源代码,c语言程序实例大全-220个详细程序源代码.rar
  10. rap开发与rcp开发_使用RAP将RCP应用程序转换为Web应用程序
  11. 利用Winhex,OllyDbg和W32Dasm破解USB监控器
  12. 赛尔号桌面版_赛尔号电脑版下载 赛尔号电脑版下载
  13. matlab spline三次样条插值x,Spline(三次样条插值)
  14. Elasticsearch的ETL利器——Ingest节点
  15. Cmake预设变量清单
  16. python学习笔记之爬虫框架scrapy(十七)
  17. 什么是粉红喜马拉雅盐,比普通盐更好吗?
  18. iOS 13 适配,关闭黑暗模式(夜间模式)
  19. g1gc调优的一次实战记录
  20. tv3描述文件代理服务器,tvos14描述文件-tvos14beta描述文件更新官网 v1.0预约_手机乐园...

热门文章

  1. C++重载下标运算符
  2. C语言中的正负数及其输出
  3. 西安工程大学计算机科学学院刘宝宝,计算机科学学院召开研究生国家奖学金答辩会...
  4. oracle数据库12下载地址,Oracle 数据库和补丁下载地址 12.1.0.2 11.2.0.4 11.2.0.1
  5. 灰色关联与TOPSIS法 —— python
  6. 【OpenCV 例程200篇】73. 二维连续傅里叶变换
  7. linux c 数据库编程,linux c 编程操作数据库(sqlite3应用)
  8. python编译2的n次方计算器_用PYTHON2做个计算器,哪位高手能用Python写出计算器的代码,需要加减乘除和退出,谢谢!...
  9. python中selenium打开浏览器拿不到url_Selenium打开浏览器,但在Chrome和Firefox中都无法获取URL...
  10. delphi if多个条件_判断(if)语句