当前位置:  数据库>oracle
本页文章导读:
    ▪[terry笔记]Oracle数据泵-schema导入导出 - kkterry      数据泵是10g推出的功能,个人倒数据比较喜欢用数据泵。其导入的时候利用remap参数很方便转换表空间以及schema,并且可以忽略服务端与客户端字符集问题(exp/imp需要排查字符集)。数据泵也.........
    ▪pl sql练习(1) - a_badegg      编写函数接受参数并返回字符串:Hello $var.然后赋值给绑定变量并打印; 1 create or replace function hello_function 2 ( pv_whom varchar2 ) return varchar2 is 3 begin 4 return 'Hello '||pv_whom||'.'; 5 end; 6 / 7 8 9 SQL> va.........
    ▪pl sql练习(2) - a_badegg        1.尽可能了解oracle的功能,因为很多业务逻辑oracle已经为我们做了,比如oracle已经预定义了大量的异常代码,我们不必要写自己的异常而增加代码的复杂度。例如oracle定义了当找不到符合.........

[1][terry笔记]Oracle数据泵-schema导入导出 - kkterry
    来源:    发布时间: 2013-10-29

数据泵是10g推出的功能,个人倒数据比较喜欢用数据泵。

其导入的时候利用remap参数很方便转换表空间以及schema,并且可以忽略服务端与客户端字符集问题(exp/imp需要排查字符集)。

数据泵也有不方便的地方,如果远程导出导入,必须安装数据库服务端(client不行);需要在数据库中创建一个路径directory(dba_directories);并且主流工具支持exp/imp的导入导出(plsql developer),所以发现数据泵流行程度没有想象中高。

以下简单介绍schema的导入导出

以schema方式导出生产库用户下所有对象,并导入测试库。

注:eamdb为生产库,eamprd为生产库用户,密码为eamprd

eamuat为测试库,eamprduat为测试库用户,密码为eamprduat

 

一、生产库的导出(以sqlplus命令行的方式)。

 1.以sys或者system用户身份登录生产数据库。

 2.创建schema导出路径(DUMP_DIR名称可替换),并在dba_directories中查看

create directory DUMP_DIR as ‘/xxx/xxx’;
select * from dba_directories;

 3.把导出路径与导出权限授权给eamprd,如果用system等高级帐号导出,则不用。

grant read,write on directory DUMP_DIR to eamprd;
grant exp_full_database to eamprd;

 4.退出sqlplus,在oracle系统用户下运行,导出对应的SCHEMA,推荐第二种。

expdp eamprd/eamprd@eamdb DIRECTORY=DUMP_DIR DUMPFILE=eamdb.dmp
expdp system/xxxx@eamdb directory=dump_dir dumpfile=eamdb.dmp schemas=eamprd

    导出重点参数:

    版本:高往低需加version=xx.x  导出某些张表tables=xxxx  content=metadata_only(只要结构)   content=data_only(只要数据)

 5.把eamdb.dmp拷贝到测试库。

 

二、测试库的导入

 1.以sys或者system身份登陆测试库。 

 2.建立导入表空间和临时表空间(名称、路径、表空间大小,请自行替换)。

create tablespace tbs_EAMUAT datafile '/xxxx/xxxxx/EAMUAT.DBF' size 10240M autoextent on next 1024M maxsize 20480M;
create temporary tablespace EAMUAT_TEMP tempfile '/xxx/xxx/EAMUAT_TEMP.DBF' size 5120M;

 3.建立用户及赋予权限(也可以不建立用户),导入时最好给予用户dba权限,以防导入时创建某些对象权限不够,注意需要回收其对users表空间的权限。

create user eamprduat identified by eamprduat default tablespace tbs_EAMUAT temporary tablespace EAMUAT_TEMP;
grant connect,resource,create view,create session,dba to eamprduat;
revoke unlimited tablespace from eamprduat;
alter user eamprduat quota unlimited on tbs_EAMUAT;

 4.建立导入路径(把eamdb.dmp放在此路径下),并授权。

create directory DUMP_DIR as '/xxxxx/xxxxx';
grant read,write on directory DUMP_DIR to eamprduat;

 5.导入数据(在oracle系统用户下运行),注意remap_schema参数,请自行替换

impdp eamprduat/eamprduat@eamuat DIRECTORY=DUMP_DIR DUMPFILE=eamdb.dmp LOGFILE=impdp.log remap_schema=eamprd:eamprduat;

 导入重点参数:

remap_schema=eamprd:eamprduat,eamxxx:xxx,xxx:xxx

remap_tablespace=eamdev:eamxxx,eamxxx:xxx,xxx:xxx

table_exists_action=replace(替换)append(追加)

 

如导入报错:ORA-31684: Object type USER:"xxxxx" already exists,不用理会,因为之前建立了用户。

也可以在导入的语句中直接remap一个不存在的用户,会自动生成,其密码和权限与导出时候一样,但其表空间如果不想用users,必须手工创建。

  


本文链接:http://www.cnblogs.com/kkterry/p/3274945.html,转载请注明。


    
[2]pl sql练习(1) - a_badegg
    来源:    发布时间: 2013-10-29
  • 编写函数接受参数并返回字符串:Hello $var.然后赋值给绑定变量并打印;
  • 1 create or replace function hello_function
    2 ( pv_whom varchar2 ) return varchar2 is
    3 begin
    4 return 'Hello '||pv_whom||'.';
    5 end;
    6 /
    7
    8
    9 SQL> variable result varchar2(20);
    10 SQL> call hello_function('Sam') into :result;
    11
    12 Call completed.
    13
    14 SQL> print :result

      2.获取系统精确时间和精确到天的时间

    1 declare
    2 lv_date_1 date :=sysdate;
    3 lv_date_2 date :=lv_date_1;
    4 begin
    5 dbms_output.put_line('lv_date_1: '||to_char(lv_date_1,'dd-mon-yy hh24:mi:ss'));
    6 dbms_output.put_line('lv_date_2: '||to_char(trunc(lv_date_2),'dd-mon-yy hh24:mi:ss'));
    7 end;
    8 /
    9
    10
    11 SQL>
    12 lv_date_1: 22-8鏈-13 16:33:18
    13 lv_date_2: 22-8鏈-13 00:00:00

     


    本文链接:http://www.cnblogs.com/charlie-badegg/p/3275380.html,转载请注明。


        
    [3]pl sql练习(2) - a_badegg
        来源:    发布时间: 2013-10-29

      1.尽可能了解oracle的功能,因为很多业务逻辑oracle已经为我们做了,比如oracle已经预定义了大量的异常代码,我们不必要写自己的异常而增加代码的复杂度。

    例如oracle定义了当找不到符合要求的数据时定义的异常:no_data_found,而很多开发人员经常使用自己的逻辑去判断是否找到数据。

    1 declare
    2 ln_deptno number;
    3 ln_tempno number:=1;
    4 begin
    5 select deptno into ln_deptno
    6 from scott.dept
    7 where deptno=ln_tempno;
    8 dbms_output.put_line(ln_deptno);
    9 exception
    10 when no_data_found then
    11 dbms_output.put_line('No deptno for: '||ln_tempno);
    12 end;
    13 /
    14
    15
    16 SQL> @a.sql;
    17 No deptno for: 1
    18
    19 PL/SQL procedure successfully completed.

     


    本文链接:http://www.cnblogs.com/charlie-badegg/p/3277251.html,转载请注明。


        
    最新技术文章:
    ▪current online redo log缺失后的恢复
    ▪ORA-600 2662错误解决实例
    ▪ORA-00600 2662错误解决方法
    ▪Oracle Hidden Parameter:_allow_resetlogs_corruption
    ▪Oracle诊断事件列表
    ▪Oracle 隐含参数 _disable_logging 详解
    ▪ORA-00600 [2662]错误解决过程
    ▪Oracle里常见的执行计划
    ▪Oracle里另外一些典型的执行计划
    ▪Oracle服务器自动备份
    ▪Oracle固定SQL的执行计划(一)---SQL Profile
    ▪Oracle固定SQL的执行计划(二)---SPM
    ▪同一环境下新建Standby RAC库
    ▪Oracle快速克隆安装
    ▪Oracle单实例启动多个实例
    ▪Oracle的PLSQL别名中文出现乱码解决方法
    ▪ORA-00379: no free buffers available in buffer pool DEFAULT ...
    ▪RMAN-06023: no backup or copy of datafile 16 found to restor...
    ▪RMAN还原数据库报错问题解决案例
    ▪OEL6.8_X86平台部署Oracle 10gR2检测失败问题
    ▪Oracle 性能优化建议
    ▪Oracle SQL语句优化心得
    ▪Oracle慢SQL监控脚本实现
    ▪Oracle dblink 查询 tns:无法解析指定的连接标识...
    ▪Red Hat Enterprise Linux 6使用udev配置Oracle ASM总结...
    ▪Linux6.6及以上版本配置Oracle ASM共享储存-UDEV
    ▪Oracle 12C 开启数据库归档模式
    ▪Solairs系统中配置Oracle 12c 开机启动
    ▪重建DBMS_STATS解决ORA-31626 ORA-21633以及ORA-04063 ORA...
    ▪Oracle ASMM 与AMM之间相互切换
     


    站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3