精华内容
下载资源
问答
  • oracle数据仓库国宝级资料(全套)

    千次下载 热门讨论 2014-09-19 23:10:09
    oracle数据仓库国宝级资料(全套) 1、Oracle+10g数据仓库实践--数据仓库基础.pdf 2、Oracle+10g数据仓库实践--总体方案.pdf 3、Oracle+10g数据仓库实践--方案的总体优势.pdf 4、Oracle+10g据仓库实践--数据仓库工具的...
  • Oracle数据回滚

    万次阅读 2019-04-16 22:22:40
    最近在修复一个比较老的项目报表的bug的时候,因为对该项目不太熟悉,导致生产环境数据修改有误,于是求助导师帮忙回滚数据,现学习一下Oralce数据回滚以备不时之需。 查看某个时间点的表的数据 select * from ...

    最近在修复一个比较老的项目报表的bug的时候,因为对该项目不太熟悉,导致生产环境数据修改有误,于是求助导师帮忙回滚数据,现学习一下Oralce数据回滚以备不时之需。

    查看某个时间点的表的数据 

    select * from 表名  as of timestamp to_timestamp('2019-04-15 22:00:38', 'yyyy-mm-dd hh24:mi:ss');

    开启闪回,如果不开启无法进行闪回

    alter table 表名 enable row movement;

    关闭闪回,回滚数据之后需要进行关闭

    alter table 表名 disable row movement;

    闪回表数据到某个时间点

    flashback table 表名 to timestamp TO_TIMESTAMP('2019-04-15 22:00:38', 'yyyy-mm-dd hh24:mi:ss');

    drop表

    drop table 表名;

    查询数据库回收站记录

    select object_name,original_name, type from user_recyclebin;

    查询被删除的表对象

    上面的object_name便是这里被删除的表在数据库回收站中的临时表名BIN$djh3J69WQfGWda1D76/9NA==$0

    select * from "BIN$djh3J69WQfGWda1D76/9NA==$0"; 

    闪回恢复被删除的表对象

    FLASHBACK TABLE 表名 TO BEFORE DROP;

    查看 DELETE 及 UPDATE 操作修改的数据

    SELECT *
    FROM 表名 AS OF TIMESTAMP  to_timestamp('2019-04-16 21:43:38', 'yyyy-mm-dd hh24:mi:ss')
    MINUS
    SELECT *
    FROM 表名;

     

    恢复 DELETE 及 UPDATE 操作修改的数据

    将恢复 表至 2019-04-16 21:43:38 时点,恢复数据为因 DELETE 及 UPDATE 操作修改的数据。

    注意:需要通过唯一条件id 定位数据。

    MERGE INTO 表名 a
    USING (SELECT *
             FROM 表名 AS OF TIMESTAMP to_timestamp('2019-04-16 21:43:38', 'yyyy-mm-dd hh24:mi:ss')
           MINUS
           SELECT *
             FROM 表名) b
    ON (a.id = b.id)
    WHEN MATCHED THEN
      UPDATE
         SET a.col = b.col,
    WHEN NOT MATCHED THEN
      INSERT
      VALUES
        (b.id,
         b.col);

    查看 INSERT 操作修改的数据

    SELECT *
    FROM 表名
    MINUS
    SELECT *
    FROM 表名 AS OF TIMESTAMP  to_timestamp('2019-04-16 21:45:38', 'yyyy-mm-dd hh24:mi:ss');

    恢复 INSERT 操作修改的数据

    其中将恢复 表至 2019-04-16 21:45:38 时点,恢复数据为因 INSERT 操作修改的数据。

    注意:需要通过唯一条件 unique_id 定位数据。

    DELETE FROM 表名 a
    WHERE EXISTS (SELECT 1
              FROM (SELECT *
                      FROM 表名
                    MINUS
                    SELECT *
                      FROM 表名 AS OF TIMESTAMP to_timestamp('2019-04-16 21:45:38', 'yyyy-mm-dd hh24:mi:ss')) b
             WHERE a.id = b.id);

    如果相隔时间过长的话,数据就回滚不了了,所以一旦数据出现问题,就要立即进行处理。

    参考博客

    https://www.cnblogs.com/autopenguin/p/5952671.html

    https://www.jb51.net/article/147509.htm

     

     

    展开全文
  • oracle数据类型

    万次阅读 2009-06-27 11:25:00
    oracle数据类型 有道是,磨刀不误砍柴工。多了解一些底层的东西,对于Oracle开发、维护大有裨益。个人总结了一些Oracle数据类型集解,相信读者阅读了本文以后,Oracle数据库开发起来会事半功倍!在Oracle数据库中,...

     

     

    oracle数据类型 

     

     

    有道是,磨刀不误砍柴工。多了解一些底层的东西,对于Oracle开发、维护大有裨益。个人总结了一些Oracle数据类型集解,相信读者阅读了本文以后,Oracle数据库开发起来会事半功倍!


    在Oracle数据库中,每个关系表都由许多列组成。给每一列指派特定的数据类型来定义将在这个列中存储得数据类型。

    1、CHAR
    最多可以以固定长度的格式存储2000个字符或字节。默认指定为以字符形式进行存储,这个数据类型是固定长度的,并且当位数不够时,需要在其右边添加空格来补满。

    例如:
    CREATE TABLE test
    (name char(20))

    2、VARCHAR和VARCHAR2
    最多可以以可变长度来存储4000B,因此不需要空格来作补充。VARCHAR2 比 VARCHAR 更适合使用,由于兼容性的原因,所以仍然在 Oracle 数据库中保留着 VARCHAR 。

    例如:
    CREATE TABLE test
    (name varchar2(20))

    3、NCHAR
    NLS(national language support , 国际语言支持)的数据类型仅可以存储由数据库 NLS 字符集定义的 Unicode 字符集。该数据类型最多可以存储2000B。NCHAR 的列在位数不够时需要在右边填充空格。例如:
    CREATE TABLE test
    (name Nchar(20))
    注意:在 Oracle9i 数据库及其更新的版本中,仅使用 Unicode 数据类型

    4、NVARCHAR2
    NLS 的数据类型与 VARCHAR2 数据类型等价。这个数据类型最多可存储4000B 。例如:
    CREATE TABLE test
    (name Nvarchar2(20))
    注意:在 Oracle9i 数据库及其更新的版本中,仅使用 Unicode 数据类型

    5、NUMBER
    用于存储零、正数、定长负数以及浮点数。NUMBER 数据类型可以以 NUMBER(P,S)的

    形式来定义数字的精度和范围。 这里:p 表示精度 (1-38),它表示存储在列中数

    字的总长度是 p 位: s 表示范围,它表示小数点后的位数。该取值范围可以从-84 到 127 。例如:
    CREATE TABLE test
    (name number(5))
    使用精度 5 来定义一个正数(如 12345)。
    CREATE TABLE test
    (name number(5,2))
    使用精度 5 和范围 2 来定义一个数字。符合这种数据类型的数字值如 123.45 和 12.34

    6、LONG
    LONG 类型的列存储可变长度的字符串,最多可以存储 2GB 的数据。LONG 类型的列有很多在 VARCHAR2 类型列中所具有的特征。可以使用 LONG 类型的列来存储 LONG 类型的文本字符串。LONG 数据类型的使用是为了向前兼容的需要。建议使用 LOB 数据类型来代替 LONG 类型。例如:
    CREATE TABLE test
    (name long)

    7、DATE
    用于在数据库中存储日期和时间。存储时间的精度可以达到 1/100s。不提供时区的相关信息。例如:
    CREATE TABLE test
    (name DATE)

    8、TIMESTAMP
    使用年、月、日、小时、分钟、秒域来对日期/时间提供更详细的支持。最多可以使用 9 位数字的精度来存储秒(受底层操作系统支持的限制)。这个数据类型没有时区的相关信息,它可以在 Oracle9i 数据库及其更新的版本中使用。例如:
    CREATE TABLE test
    (timestamp_column TIMESTAMP);

    9、TIMESTAMP WITH TIME ZONE
    包含 TIMESTAMP 数据类型中的所有域,除此之外,还包含两个额外的域:timezone_hour 和 timezone_minute。这个数据类型包含支持时区的相关信息。这个数据类型可以在 Oracle9i 数据库及其更新的版本中使用。例如:
    CREATE TABLE test
    (timestamp_column
    TIMESTAMP WITH
    TIME ZONE);

    10、TIMESTAMP WITH LOCAL TIME ZONE
    除了在数据库中存储的时区采用标准化以外,所包含的其他域与 TIMESTAMP 数据类型中的域相同。当选择列时,将日期/时间标准为会话的时区。这个数据类型可以在 Oracle9i 数据库及其更新的版本中使用。例如
    CREATE TABLE test
    (timestamp_column
    TIMESTAMP WITH
    LOCAL TIME ZONE);

    11、INTERVAL YEAR TO MONTH
    用于存储一个时间段,由月份和年组成。需要 5B 来存储。这个数据类型可以在 Oracle9i 数据库及其更新的版本中使用。例如:
    SELECT INTERVAL
    '01-05'
    YEAR TO MONTH -
    INTERVAL '01-02' YEAR
    TO MONTH FROM dual;

    12、INTERVAL DAY TO SECOND
    用于存储一个时间段,由日和秒组成。需要 11B 来存储。这个数据类型可以在 Oracle9i 数据库及其更新的版本中使用。例如:
    SELECT INTERVAL
    '100 10:20:42.22'
    DAY(3) TO SECOND(2) -
    INTERVAL
    '101 10:20:42.22'
    DAY(3) TO SECOND(2)
    FROM dual;

    13、RAW
    用于存储 raw 类型的二进制数据。最多可以存储 2000B。建议使用 BLOB 来代替它。例如:
    CREATE TABLE test
    (raw_column
    RAW(2000));

    14、LONG RAW
    用于存储 raw 类型的二进制数据。最多可以存储 2GB 的数据。建议使用BLOB来代替它。例如:
    CREATE TABLE test
    (raw_column LONG RAW);

    15、ROWID
    表中 ROWID 类型的字符串表示。使用这个数据类型来存储由 ROWID 类型伪列的返回值。例如:
    CREATE TABLE test
    (rowid_column ROWID);

    16、UROWID
    在索引组织表中表示逻辑行地址。例如:
    CREATE TABLE test
    (urowid_column UROWID);

    17、CLOB
    用于存储基于字符的大对象。在 Oracle9i 数据库中最多可以存储 4GB 的数据,这比 Oracle10g 数据库中可存储的最大数据还要大,这也是现在数据库规定块大小的一个因素(~4GB* 数据块大小)。例如:
    CREATE TABLE test
    (clob_column CLOB);

    18、NCLOB
    可以使用由数据库国际字符集所定义的字符集来存储仅为 Unicode 类型的基于字符的数据。最多可以存储 4GB 的数据,这比 Oracle10g 数据库中可存储的最大数据还要大,这也是现在数据库规定块大小的一个因素(~4GB* 数据块大小)。例如:
    CREATE TABLE test
    (nclob_column NCLOB);

    19、BLOB
    最多可以存储 4GB 数据的二进制大对象,这比 Oracle10g数据库中可存储的最大数据还要大,这也是现在数据库规定块大小的一个因素(~4GB* 数据库块大小)。例如:
    CREATE TABLE test
    (blob_column BLOB);

    20、BFILE
    存储指向数据库外部文件的定位符。外部文件最大为 4GB。例如:
    CREATE TABLE test
    (bfile_column BFILE);

    21、BINARY_FLOAT
    该数据类型是一个基于 ANSI_IEEE745 标准的浮点数据类型。它定义了一个 32 位的双精度浮点数。这个数据类型需要 5B 的存储空间。例如:
    CREATE TABLE test
    (b_float BINARY_FLOAT);

    22、BINARY_DOUBLE
    该数据类型是一个基于 ANSI_IEEE745 标准的双精度浮点数据类型,它定义了一个32位的双精度浮点数。这个数据类型需要 9B 节的存储空间。例如:
    CREATE TABLE test
    (b_float BINARY_DOUBLE);


    关于各种数据类型的注释

    1、关于 CHAR 和 VARCHAR2 数据类型的注释
    由数据库字符集来确定特定的 CHAR、VARCHAR 或者 VARCHAR2 字符类型所占的字节数。多字节字符集中的字符可以存储 1~4B。CHAR 或 VARCHAR2 数据类型的大小由该数据类型可以存储的字节数或字符数来决定(这成为字符的语义)。所有定义的存储大小都是默认以字节为单位的。如果使用多字节字符集(大部分常见的西方字符集都是以单字节为单位的,而值得注意的是,有一个例外就是 UTF 字符集不是以单字节为单位的),则可能需要定义以字符为单位的存储,下面的例子说明了这个问题:

    CREATE TABLE test
    (name VARCHAR2(20 char));

    建议在表的末尾处创建一些值为 NULL 的列。通过使用这种方法,可以用 VARCHAR2 数据类型来存储一些数据,但不能使用 CHAR 数据类型来存储数据,因为 Oracle 数据库是以在一行中连续存储多个 NULL 值的方式来进行存储的。

    Oracle9i 数据库及其更新的版本提供数据压缩功能,该功能仅在包含于只读表空间中的表中使用(也就是说,表中的数据将不会改变)。仅当通过下面的批量装载(bulk-load)操作中的任意一种操作将数据装载进表中时,才会执行数据压缩操作


    使用 create table as select(CTAS)操作来创建表。
    在直接模式下的 insert 操作或者并行的 insert 操作。
    SQL*Loader 装载程序在直接模式下的操作。

    注意:
    如果使用 update 语句对数据进行了修改,则已经压缩过的数据块将不会再次压缩!因此,一张很小的表可以快速地增长成一张很大的表。通过使用 alter table move 命令可以在已经存在的表中压缩数据。下面是创建压缩表的例子和对已经存在的表进行压缩的例子:

    CREATE TABLE my_tab (id NUMBER,current_value VARCHAR2(2000)) COMPRESS;
    ALTER TABLE my_comp_tab MOVE COMPRESS;

    关于 CHAR 和 VARCHAR2 数据类型,常常会有这样一个问题:到底是用哪一个数据类型最好?下面是对这个问题的一些指导性建议:
    通常 VARCHAR2 数据类型比 CHAR 数据类型优先使用。
    如果数据大小是变化的则在数据库中使用 VARCHAR2 数据类型可以节省空间。
    如果 VARCHAR2 数据类型列中的数据需要频繁更新,则 VARCHAR2 数据类型列的扩展可能会导致行连接或者行迁移的发生。当最终需要使用 VARCHAR2 数据类型列总大小的时候,可以考虑使用 CHAR 数据类型来代替 VARCHAR2 数据类型。

    注意:
    通常来说,使用 VARCHAR2(1)数据类型比使用 CHAR(1)数据类型开销要大,但上面所讲的则是例外。

    2、关于 NUMBER 数据类型的注释
    NUMBER 数据类型内部使用科学计数法以可变长度格式来存储数据。使用 1B 存储指数,而另外 20B(这个字节数可以变化)用于存储该数字剩下的部分。这种存储模式使得 NUMBER 数据类型可以表示的精度为 38 位。

    如果想要确定给定的数字所占字节数的大小,可以使用 vsize 函数,如下所示:

    SQL>SELECT VSIZE(100) FROM dual;
    VSIZE(100)
    ----------
     2

    在上面的例子中,该 vsize 函数用于将数字的大小指定为100.使用 2B 存储。1B 存储数字,另 1B存储指数。
    也可以使用 dump 函数来确定任意列的具体大小,如下所示:
    SQL>SELECT id,dump(id) did FROM test;
     ID DID
    -----------------------------
     123 Typ=2 Len=3: 194,2,24
     141 Typ=2 Len=3: 194,2,42
         123456 Typ=2 Len=4: 195,13,35,57

    NUMBER 数据类型可以有若干种形式来定义。可以根据需要使用或禁用精度和范围的方式来定义 NUMBER 数据类型。如果使用特定的精度来定义 NUMBER 列,则当超过所定义的精度时,Oracle 数据库将会产生错误。例如,NUMBER(6,2) 在存储数字 1234.56 时,不会对该数字的值产生任何影响,而在存储数字 123.456 时将会对该数字进行四舍五入,最终存储的数字将变成 123.46;如果以相同的 NUMBER 数据类型来存储数字 12345.67 时,数据库将产生错误,因为该数字的精度是 7 而不是 6.

    最后需要注意的是,也可以将列定义为没有精度的 NUMBER 数据类型,这表明将把

    NUMBER 数据类型的列作为没有范围属性的整数来看待。

    3、关于 LONG RAW 数据类型的注释

    LONG RAW 数据类型用于存储数据库无法解释的二进制数据。这个数据类型最多能够存储 2GB 的数据并且它的存储容量是可变的。Oracle 数据库不鼓励使用 LONG RAW 数据类型,因为该数据类型已经由 BLOB 数据类型所代替了。Oracle 数据库

    (Oracle9i数据库及其更新的版本)已经提供了通过 alter table 命令将 LONG RAW 数据类型列转换到相应的 CLOB 数据类型的能力。也可以使用 to_lob 函数将 LONG RAW 数据格式转换为 BLOB 数据格式。

    4、关于 LONG 数据类型的注释

    LONG 数据类型用于存储大量的字符文本。LONG 数据类型会受到某些存储的限制,最多可以存储 2GB 的数据。Oracle 数据库不鼓励使用 LONG 数据类型,因为这个数据类型已经由 CLOB 数据类型所代替了。Oracle数据库(Oracle9i 数据库及其更新的版本)已经提供了通过 alter table 命令将 LONG 数据类型列转换到相应的 LOB 数据类型的能力。也可以使用 to_lob 函数将 LONG 数据格式转换成 CLOB 数据格式。
    在下面的 SQL 语句类型中可以引用 LONG 数据类型列:
    * select 列表
    * 在 update 语句的 set 子句中
    * 在 insert 语句的 values 子句中使用 LONG 数据类型将会受到许多的限制;
    * 在每个表中只允许使用一个 LONG 数据类型的列。
    * 不能使用 LONG 数据类型的属性创建对象类型。
    * Oracle 数据库的 where 子句或者完整性约束不能引用 LONG 数据类型,仅有一种例外的情况,就是 LONG 数据类型可以出现在 NULL 和 NOT NULL 约束中,或者可以作为 NULL 或者 NOT NULL 的 where 子句谓语的一部分。
    * 不能索引 LONG 数据类型的列。
    * 不能对包含 LONG 数据类型的列进行分布操作。所有包含 LONG 数据类型列的事务

    必须在同一个数据库中协同工作。
    * 复制不支持 LONG 数据类型。
    * 如果所创建的表有 LONG 和 CLOB 两种数据类型的列,则在同一 SQL 语句中,同时绑定到 LONG 和 CLOB 数据类型列上的数据不能超过 4000B。但是可以将超过 4000B 的数据单独绑定到 LONG 数据类型或者 CLOB 数据类型列上。
    除了前面所讲的约束外,当 LONG 数据类型出现在 SQL 语句中时,还有另一些关于 LONG 数据类型列的约束。首先需要注意的是,下面的操作不支持 LONG 数据类型列:

    * group by
    * order by
    * connect by
    * distinct
    * unique
    * 任何 SQL 的内建函数、表达式或者条件
    * 任何 select 语句(在该语句中,union、intersect 或者 minus 操作将查询或者子查询结合起来)
    也会存在关于 LONG 数据类型的 DDL 约束,如下所示:
    * 在 create cluster 语句的表列中不能包含 LONG 数据类型列。
    * 在 alter table ...move 语句中不能包含 LONG 数据类型列。
    * 在 create table as select 语句的选择列表中不能包含 LONG 数据类型列。

    在PL/SQL 程序单元和触发器中使用 LONG 数据类型列时,同样也存在一些约束,如下所示:
    * 不能使用 LONG 数据类型表示触发器中的变量。
    * 触发器变量 :new 和 :old 的数据类型不能是 LONG 数据类型列。
    * PL/SQL 存储函数不能返回 LONG 数据类型,但是 PL/SQL 程序中的变量或参数可以使用 LONG 数据类型,不过不能从 SQL 语句中调用这种 PL/SQL 程序单元。

    5、关于 DATE 数据类型的注释

    DATE 数据类型是 Oracle 数据库中自带的一种用于存储日期和时间的方法。当 DATE 数据类型存储在数据库中的时候,这个数据类型占据 7B 的内部存储空间。这些字节分别用来存储世纪、年、月、日、小时、分和秒的详细信息。
    默认的显示格式为 dd-mon-yy,它表示日、月以及两位数的年,由破折号(-)将其分离。例如默认格式为:01-FEB-01。如果要重新定义日期格式,可以在数据库参数文件中设置 nls_date_format 变量。如果要改变日期的格式,也可以为特定的会话使

    用 alter session 命令设置 nls_date_format 变量的值。如下所示:
    SQL>SELECT sysdate FROM dual;
    SYSDATE
    ---------
    24-MAY-03
    SQL>ALTER SESSION SET nls_date_format='mm/dd/yyyy hh24:mi:ss';
    Session altered.
    SQL>SELECT sysdate FROM dual;
    SYSDATE
    --------------------
    06/25/2009 16:49:09

    在上面的例子中,将日期格式的时间标志改变为 24 小时制格式的时间,并且在年的前面加上了世纪值。
    如果想要在特定系统的所有会话中使用不同的日期格式,可以设置 NLS_LANG 操作系统的环境变量,并且同时将 NLS_DATE_FORMAT 作为操作系统环境变量进行设置。这将使得每一次登录系统时,会发出 alter session 命令。需要注意的是,只有当同时设置了环境变量 NLS_LANG 时,环境变量 NLS_DATE_FORMATE 才会生效。

    注意:
    如果使用 RMAN(Oracle Recovery Manager,Oracle 恢复管理),则显示的左右日期格式都将是默认的日期格式。应该在启动 RMAN 之前设置 NLS_LANG 和 NLS_DATE_FORMAT 环境变量以设定所需要的日期格式。

    在 SQL 语句中为了改变输出的格式,需要使用 Oracle 数据库的内建函数 to_char。如果有基于字符的日期要插入到 DATE 数据类型列中,则需要使用 to_date 函数。关于 to_char 函数转换日期格式的例子如下所示:
    SQL>SELECT to_char(sysdate,'mm/dd/yyyy hh24:mi:ss') the_date FROM dual;
     THE_DATE
    -----------------
    06/25/2009 17:05:36

    在上面的例子中,将日期格式转化为由四位数表示的年以及 24 小时制、分钟、秒表示的时间格式。

    6、关于 TIMESTAMP 和 INTERVAL 数据类型的注释

    某些新的 TIMESTAMP 数据类型的值依赖于数据库中适当的时区设置。数据库的时区默认为当前操作系统的时区。在数据库创建的时候,可以通过在 create database 命令中使用 set time_zone 参数为数据库设置不同的时区。也可以通过使用 alter database set time_zone 命令改变已经存在的数据库时区。使用 alter session 命令可以在会话级上修改时区设置。可以定义基于UTC(Universal Time Coordinated,协调世界时)小时偏移的时区,或者使用一个指定的时区,如 CST 或 EST。下面是设置数据库时区的例子:
    ALTER DATABASE SET time_zone='CST';
    ALTER DATABASE SET time_zone='-05:00';

    一些转换函数可以用于 TIMESTAMP 和 INTERVAL 数据类型。这些函数包括 to_data、to_char、to_timestamp_tz、to_yminterval 和 to_dsinterval,同时 nls_timestamp_format 参数和 nls_timestamp_tz_format 参数也与 TIMESTAMP 和 INTERVAL 数据类型有一些特定的关联。
    当从 TIMESTAMP 数据类型列中获取数据时,可以使用其他的内建函数。extract 函数可以从 TIMESTAMP 数据类型列中获取特定的信息,如小时或者分钟的信息。如下所示(注意,从 sysdate 函数到 TIMESTAMP 数据类型格式的隐式转换):
    CREATE TABLE my_tab(test_col TIMESTAMP);
    INSERT INTO my_tab VALUES (sysdate);
    SELECT test_col,EXTRACT(HOUR FROM test_col) FROM my_tab;
    TEST_COL           HOUR
    -------------------------------------
    25-JUNE -09 05.18.50.000000 PM     9

     


    参考文献:【美】夫雷曼(Freeman.R.G.)《Oracle + DBA 必备技能详解》
    关于《Oracle + DBA 必备技能详解》中译本,作者有一本影印版的PDF格式的,40M大小,已经上传至作者 CSDN 资源共享给大家,有兴趣的朋友可以去看看,下载地址:http://download.csdn.net/source/1410669

    展开全文
  • Oracle数据迁移

    千次阅读 2018-08-24 07:09:00
    本文主要提及使用exp,imp以及Oracle数据泵等工具如何进行数据迁移: 一、数据迁移工具 1、数据迁移工具 (1)数据泵 (2)外部表:external table (3)数据加载工具:sqlloader可以将非ORACLE数据库的数据加载...

    本文主要提及使用exp,imp以及Oracle数据泵等工具如何进行数据迁移:

    一、数据迁移工具

    1、数据迁移工具

    (1)数据泵

    (2)外部表:external table

    (3)数据加载工具:sqlloader可以将非ORACLE数据库的数据加载到ORACLE数据库中

    (4)数据库备份工具:rman,recover manager恢复管理器

    2、逻辑导入导出工具

    (1)exp:逻辑导出工具

    (2)imp:逻辑导入工具

    3、数据泵

    (1)expdp:数据泵逻辑导出工具export data pump

    (2)impdp:数据泵逻辑导入工具import data pump

    4、数据库导出模式

    (1)全库导出

    (2)导出用户

    (3)导出表空间

    (4)导出表(数据泵)

    二、数据迁移实例

    使用exp,imp导入导出数据

    1、全库导出

    mkdir -p /home/oracle/backup/exp创建导出目录

    exp system/oracle file=all.dmp log=all_exp.log full=y

    2、导出用户

    select username from dba_users;先查看当前数据库拥有哪些用户

    (1)单用户hr导出

    单用户hr导入,在目标库中进行,导入库中需要提前创建用户hr,并赋予相应权限

    (2)多用户导出

    多用户导入

    3、导出表

    (1)单表导出

    导入

    (2)多表导出,导入

    使用数据泵导入导出数据

    通过调用dbms_datapump系统包来完成导入导出操作

    1、需要数据库创建目录对象,要把目录对象的读写权限授予相应的用户。

    (1)在操作系统中创建目录

    mkdir -p /home/oracle/backup/dir

    (2)在数据库中创建目录对象,指向上一步创建的目录

    create directory dbpump_dir as ‘/home/oracle/backup/dir’;

    (3)给相应用户读写权限,用到什么用户就赋予它读写权限

    grant read,write on directory dbpump_dir to system;

    (4)开始导入导出

    2、普通导入导出

    3、通过参数文件导入导出数据

    创建pfile.txt

    PARALLEL=1

    CLUSTER=NO

    COMPRESSION=ALL

    DUMPFILE=EXPORT_exp.DMP  

    DIRECTORY=DBPUMP_DIR   

    LOGFILE=EXPORT.LOG

    TABLES=

    (

     HR.EMPLOYEES,HR.DEPARTMENTS

     )

    QUERY=

    (

     "EMPLOYEES:WHERE DEPARTMENT_ID > 10",

     "DEPARTMENTS:WHERE DEPARTMENT_NAME LIKE '%IT%'"

    )

    导入同样需要在目标库建立数据库目录对象

    create directory dbpump_dir as ‘/home/oracle/backup/dir1’;

    4、通过参数文件导入导出用户

    pfile_user.txt

    PARALLEL=1

    CLUSTER=NO

    COMPRESSION=ALL

    DUMPFILE=EXPORT_USER.DMP  

    DIRECTORY=DBPUMP_DIR   

    LOGFILE=EXPORT_USER.LOG

    SCHEMAS=U2,U1

    导入用户

    5、通过参数文件导入导出表空间

    pfile_tbs.txt

    PARALLEL=1

    CLUSTER=NO

    COMPRESSION=ALL

    DUMPFILE=EXPORT_TBS.DMP  

    DIRECTORY=DBPUMP_DIR   

    LOGFILE=EXPORT_TBS.LOG

    TABLESPACES=TBS1,TBS2,TBS3

    (1)要把目标库的表空间创建好

    (2)把表空间所属对象创建好

    (3)赋予相应对象权限

    导入

    三、外部表

    ORACLE外部表用来存取数据库以外的文本文件(test file)或ORACLE专属格式文件。因此,建立外部表时不会产生段,区,块等数据结构,只有与表相关的定义放在数据字典中,外部表,就是存储在数据库外的表,当存取时才能从ORACLE专属格式文件中取得数据,外部表仅供查询,不能对外部表的内容修改。

    1、创建目录对象并授权,从9i开始,ORACLE数据库若要存取文件系统,就必须使用目录对象,以相对路径方式存取路径,强化数据库的安全性。

    2、从数据库导出数据到外部表

    create table ext_emp_query

    (first_name,last_name,department_name)

    organization external

    (type oracle_datapump

    default directory tab_dir

    location('emp1.exp','emp2.exp','emp3.exp')

    )

    parallel

    as

    select e.first_name,e.last_name,d.department_name

    from employees e,departments d

    where e.department_id=d.department_id and

    d.department_name in ('Marketing','Purchaing')

    3、外部插入数据

    create table hr.ext_tab2

    (id number,name varchar2(20))

    organization external

    (type oracle_loader

    default directory tab_dir

    location

    (tab_dir:'ext_tab1',

    tab_dir:'ext_tab2')

    );

    创建完成后需要自己到指定目录创建文件,如果文件提前存在,那么将无法查询到文件内容

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    1

    展开全文
  • Oracle数据仓库创建教程

    千次阅读 2016-03-22 21:13:51
    Oracle数据仓库创建教程。如何创建一个数据仓库,创建实例,最近开始Oracle的数仓建模学习,详细记录了图形界面下的 Oracle database 12C 数据仓库创建过程。本教程在Linux环境和Windows环境均可成功创建。注意:...

    Oracle数据仓库创建教程。如何创建一个数据仓库,创建实例,以为毕业设计要求,最近开始Oracle的数仓建模实践,详细记录了图形界面下的 Oracle database 12C 数据仓库创建过程。

    本教程在Linux环境和Windows环境均可成功创建。

    注意:不论是Linux下还是Windows下,前提是你已经正确安装了Oracle database 12C。

    共14步,每步至少一个图形介绍,力求详细。只要一步步安装就可以了。

    0.0 打开 Database Configuration Assistant(DBCA数据库配置助手),初始化是安装的一部分,也可以随时打开用来创建一个新的数据库实例。

    这里写图片描述

    1.0 选择创建数据库

    这里写图片描述

    2.0 创建模式选择高级模式

    这里写图片描述

    3.1 选择数据仓库

    这里写图片描述

    3.2 查看参数

    这里写图片描述

    4.0 数据库标识

    这里写图片描述

    5.0管理选项

    这里写图片描述

    6.0数据库身份证明

    这里写图片描述

    7.0 网络配置–默认配置

    这里写图片描述

    8.0 存储位置

    10

    9.0 数据库选项

    11

    10.1 初始化参数–内存

    12

    10.2 初始化参数–调整大小

    121

    10.3 初始化参数–字符集

    122

    10.4 初始化参数–连接模式

    123

    11.0 创建选项

    13

    12.0 先决条件检测

    13.0 概览,检查配置参数

    14

    14.0 开始创建

    15

    15.0 完成,成功创建

    16

    至此完成数据库实例创建,已经完成了数据仓库创建,接下来开始SQL、建模之旅吧。

    展开全文
  • Oracle数据类型与表管理

    万次阅读 2020-12-03 20:48:59
    Oracle数据类型与表管理前言1、Oracle数据类型2、 建表3、表删除4、表的修改 前言 提示:本文章是日常学习内容的总结,并非全部原创;仅供大家参考借鉴,并无其他商业用途。 1、Oracle数据类型 数据类型 描述 ...
  • oracle数据回退

    千次阅读 2017-09-30 14:18:25
    oracle数据回退,闪回
  • Oracle-数据字典解读

    千次阅读 2016-11-19 16:40:47
    概述官方文档Oracle数据库字典通常是在创建和安装数据库时被创建的,Oracle数据字典是Oracle数据库系统工作的基础,没有数据字典的支持,Oracle数据库系统就不能进行任何工作。数据字典中的表是不能直接被访问的,...
  • ORACLE_BASE是Oracle的根目录,ORACLE_HOME是oracle产品的目录ORACLE_BASE : 为Oracle目录结构的根,该环境变量为指定计算机上的所有Oracle产品目录 ORACLE_BASE下有admin和product /u01/app/oracle/ /u01/...
  • python读取oracle数据

    千次阅读 2018-03-27 10:09:49
    1、安装cx_Oracle pip install cx_Oracle 安装文档http://cx-oracle.readthedocs.io/en/latest/installation.html,里面有可能出现的问题的解决办法,如DPI-1047: Oracle Client library cannot be loaded 如果...
  • oracle数据块详解

    万次阅读 2012-07-14 18:10:26
     oracle数据块是oracle数据库存储基础,有磁盘空间的若干字节组成,数据块是oracle数据库的最小逻辑单元,可以定义数据块为2k、4k、8k、16k、32k甚至更大,默认oracle块大小是8k,通常我们称为oracle块。...
  • oracle安装目录详解

    千次阅读 2011-09-17 10:49:07
    Oracle 10G的Windows目录结构如下:  1.Oracle_Home目录  Oracle_Home主目录位于$Oracle_Base\product\10.2.0下,它包含与Oracle软件运行有关的子目录和网络文件以及选定的组件等; 若在主机上第一次且只安装了O
  • Oracle数据迁移__直接拷贝数据文件

    千次阅读 2019-05-31 17:01:42
    需要切换到 oracle 用户 使用 sqlplus 登录进 Oracle 数据库 sqlplus / as sysdba SQL> show parameter pfile SQL> show parameter control SQL> select * from v$logfile; SQL&...
  • oracle 数据迁移工具exp、imp

    千次阅读 2018-08-23 18:02:40
    数据迁移工具 两个数据之间,或是数据在升级的时候、生产环境到测试环境的数据移动   逻辑导出导入工具: exp----逻辑导出工具 imp----逻辑导入工具   1、数据导出模式: (1)全库导出 mkdir -p /home/...
  • oracle数据接入clickhouse

    千次阅读 2018-07-12 14:33:32
    oracle数据接入clickhouse oracle数据接入包括两个方面:一是CDC,基于日志做数据变化的捕捉,包括增删改;二是增量数据的准实时导入,依赖于自增id或时间字段,相对于CDC而言部署较为简单,适用场景也仅适用于增量...
  • Oracle 数据类型转换

    千次阅读 2015-06-19 16:23:11
    Oracle 为每种数据类型都提供了相应的函数,一般情况下它们之间的相互转换是非常简单的,Oracle 提供的函数有: CAST 将一种类型转成另一种类型 TO_DATE 将字符串转成 DATE TO_TIMESTAMP 将字符串转成 ...
  • ORACLE 安装目录介绍

    千次阅读 2009-12-25 15:29:00
    ORACLE 安装目录介绍系统环境: 1、操作系统:Windows 20002、数据库: Oracle 8i R2 (8.1.6) for NT 企业版3、安装路径:C:/ORACLE解释: Oracle 8i R2 (8.1.6) for NT 企业版默认安装完毕后会在所在盘符创建以下...
  • 1.数据的备份: 连接到oracle : su - oracle 备份命令: exp '用户名/"密码"@IP:端口号/数据库名' file=/home/oracle/***.dmp tables=表名(多个表用英文逗号隔开,*表示所有表) log==/home/oracle/**....
  • Oracle数据导入导出 图解
  • Oracle Directory目录的知识

    万次阅读 2014-04-28 22:22:54
    在上一章介绍expdp/impdp时曾使用过DIRECTORY这个概念,下面再...DIRECTORY变量指出了expdp导出数据泵或impdp导入数据泵将dump文件、log文件以及SQL文件(仅适用于impdp)写到什么路径。 因为导出数据泵和导入数据泵都
  • 手动修改oracle数据

    千次阅读 2018-02-01 17:57:49
    For update那是一种行级锁,一旦用户对某个行施加了行级加锁,则该用户可以查询也可以更新被加锁的数据行,其它用户只能查询但不能更新被加锁的数据行.如果其它用户想更新该表中的数据行,则也必须对该表施加行级锁...
  • 查看oracle数据库的数据文件的目录

    万次阅读 2017-11-02 15:22:55
    使用dba用户查询以下语句 Select * FROM DBA_DATA_FILES;
  • Oracle数据类型对应Java类型

    千次阅读 2017-11-13 11:01:05
    SQL数据类型 JDBC类型代码 标准的Java类型 Oracle扩展的Java类型   1.0标准的JDBC类型:     CHAR java.sql.Types.CHAR java.lang.String oracle.sql.CHAR VARCHAR2 jav
  • Oracle配置数据

    千次阅读 2019-06-01 17:33:02
    学习PowerDesiger时需要配置Oracle数据源,结果发现没有Oracle相关,后来才知道需要提前配置,SQL Server,Access同理类似 配置步骤如下 打来ODBC管理器,注意需要用管理员方式运行 选择系统DSN,点击添加 ...
  • ORACLE 修改数据

    千次阅读 2020-12-12 13:44:21
    今天说一下ORACLE修改数据库中数据的几种方法: 1、UPDATE 确定条件批量修改 --批量修改 UPDATE cux_oa_person_b t --表名 SET t.person_number = '111' --需要修改的数据 WHERE t.person_name = 'xxx' --条件 ...
  • Oracle删除数据文件

    万次阅读 2018-08-10 17:43:07
    在我们详细介绍之前,我们必须说清楚一点:Oracle不提供如删除表、视图一样删除数据文件的方法,数据文件是表空间的一部分,所以不能“移走”表空间。 一、使用offline数据文件的方法 非归档模式
  • 数据访问组件 (ODAC) 全称:Oracle Data Access Components 优点:由于微软在.net framework4中会将System.Data.OracleClient.dll deprecated,而且就访问效率和速度而言,System.Data.OracleClient.dll与 Oracle...
  • ORACLE数据类型之FLOAT

    万次阅读 2017-02-15 10:43:10
     NUMBER类型是一种变长的数据类型,占0~22字节存储空间(1个字节存储数据长度,1个字节存储符号和指数,20个字节存储数据)。    precision是NUMBER可存储的最大有效位数,scale是小数点右边的最大数字长度。 ...
  • Oracle数据文件占用空间释放resize

    万次阅读 2017-10-21 16:00:52
    Oracle数据库的数据占用空间较大,而其中存储的数据并未占据如此大的空间时,原因可能为用户删除了一些数据,但是数据文件大小并不会自动缩小。此时如果想要缩小数据文件的大小,可以采用如下的方式。 一、...
  • Oracle数据泵导入导出是日常工作中常用的基本技术之一,我们使用oracle数据库数据泵导入(impdp)导出(expdp)进行数据库备份,数据库迁移等数据库维护工作。本文主要说明oracle数据库导入导出的命令。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 843,908
精华内容 337,563
关键字:

oracle数据目录