iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >Oracle12.2怎么用对象数据类型来重定义表
  • 474
分享到

Oracle12.2怎么用对象数据类型来重定义表

2024-04-02 19:04:59 474人浏览 安东尼
摘要

本篇内容介绍了“oracle12.2怎么用对象数据类型来重定义表”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所

本篇内容介绍了“oracle12.2怎么用对象数据类型来重定义表”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

Oracle 12.2使用对象数据类型来重定义表,下面的例子将重定义表将列改变为对象属性,原始表为customer,定义如下:

sql> create table jy.customer(
  2  cid number not null,
  3  name varchar2(30),
  4  street varchar2(100),
  5  city varchar2(30),
  6  state varchar2(2),
  7  zip number(5)
  8  );
Table created

SQL> alter table jy.customer add constraint customer_pk primary key(cid);
Table altered

创建新的对象类型

SQL> create type jy.addr_t as object
  2  (
  3  street varchar2(100),
  4  city   varchar2(30),
  5  state  varchar2(2),
  6  zip    number(5,0)
  7  );
  8
  9  /
Type created

联机重定义操作如下:
1.用要执行联机重定义操作的用户登录数据库

SQL> conn jy/jy@jypdb
Connected.

2.验证表是否可以执行联机重定义,可以使用主键或伪主键来执行验证操作。

SQL> begin
  2  dbms_redefinition.can_redef_table(
  3   uname => 'jy',
  4   tname =>'customer',
  5   options_flag => DBMS_REDEFINITION.CONS_USE_PK);
  6  end;
  7  /
PL/SQL procedure successfully completed

3.创建中间表jy.int_customer

SQL> create table jy.int_customer
  2  (
  3  cid  number,
  4  name varchar2(30),
  5  addr addr_t
  6  );
Table created

4.因为customer是一个非常大的表,为了让下一步操作启用并行执行以下语句:

SQL> alter session force parallel dml parallel 4;
Session altered
SQL> alter session force parallel query parallel 4;
Session altered

5.使用主键来执行重定义操作

SQL> begin
  2  dbms_redefinition.start_redef_table(
  3    uname => 'jy',
  4    orig_table => 'customer',
  5    int_table => 'int_customer',
  6    col_mapping => 'cid cid, name name,
  7    addr_t(street, city, state, zip) addr');
  8  end;
  9  /
PL/SQL procedure successfully completed

6.复制依赖对象

SQL> declare
  2  num_errors pls_integer;
  3  begin
  4  dbms_redefinition.copy_table_dependents(
  5    uname => 'jy',
  6    orig_table => 'customer',
  7    int_table => 'int_customer',
  8    copy_indexes => DBMS_REDEFINITION.CONS_ORIG_PARAMS,
  9    copy_triggers => TRUE,
 10    copy_constraints => TRUE,
 11    copy_privileges => TRUE,
 12    ignore_errors => FALSE,
 13    num_errors => num_errors,
 14    copy_statistics => TRUE);
 15  end;
 16  /
PL/SQL procedure successfully completed

7.可选操作同步中间表

SQL> begin
  2  dbms_redefinition.sync_interim_table(
  3    uname => 'jy',
  4    orig_table => 'customer',
  5    int_table => 'int_customer');
  6  end;
  7  /
PL/SQL procedure successfully completed

8.完成重定义操作

SQL> begin
  2  dbms_redefinition.finish_redef_table(
  3    uname => 'jy',
  4    orig_table => 'customer',
  5    int_table => 'int_customer');
  6  end;
  7  /
PL/SQL procedure successfully completed
SQL> select dbms_metadata.get_ddl(object_type =>'TABLE',name =>'CUSTOMER',schema => 'JY') from dual;

DBMS_METADATA.GET_DDL(OBJECT_TYPE=>'TABLE',NAME=>'CUSTOMER',SCHEMA=>'JY')
--------------------------------------------------------------------------------

  CREATE TABLE "JY"."CUSTOMER"
   (    "CID" NUMBER NOT NULL ENABLE,
        "NAME" VARCHAR2(30),
        "ADDR" "JY"."ADDR_T" ,
         CONSTRAINT "CUSTOMER_PK" PRIMARY KEY ("CID")
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "TEST"  ENABLE
   ) SEGMENT CREATION IMMEDIATE
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
 NOCOMPRESS LOGGING
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "TEST"


1 row selected.

可以看到表jy.customer已经成功能联机重定义

9.等待任何查询中间表的语句执行完成后将其删除

SQL> desc jy.customer
Name Type         Nullable Default Comments
---- ------------ -------- ------- --------
CID  NUMBER
NAME VARCHAR2(30) Y
ADDR ADDR_T       Y

SQL> drop table jy.customer purge;
Table dropped

到此重定义操作就完成了。

“Oracle12.2怎么用对象数据类型来重定义表”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

您可能感兴趣的文档:

--结束END--

本文标题: Oracle12.2怎么用对象数据类型来重定义表

本文链接: https://www.lsjlt.com/news/59229.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Oracle12.2怎么用对象数据类型来重定义表
    本篇内容介绍了“Oracle12.2怎么用对象数据类型来重定义表”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所...
    99+
    2024-04-02
  • python怎么定义类和对象
    这篇“python怎么定义类和对象”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“python怎么定义类和对象”文章吧。定义简...
    99+
    2023-06-29
  • hive中怎么定义表的列名称及数据类型
    在Hive中定义表的列名称及数据类型可以通过使用CREATE TABLE语句和指定列的名称和对应的数据类型来实现。以下是一个示例: ...
    99+
    2024-04-02
  • sql怎么创建自定义数据类型
    在 SQL 中,创建自定义数据类型可以使用 `CREATE TYPE` 语句。以下是一个示例:```sqlCREATE TYPE e...
    99+
    2023-09-25
    sql
  • 怎样用C++数据类型定义编译器
    本篇文章给大家分享的是有关怎样用C++数据类型定义编译器,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。许多编程人员学习C++总结经验为,有的觉得C++语言是一门独立的语言,并不...
    99+
    2023-06-17
  • 怎么用JSON定义sites对象
    这篇文章主要介绍“怎么用JSON定义sites对象”,在日常操作中,相信很多人在怎么用JSON定义sites对象问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用JSON定...
    99+
    2024-04-02
  • JavaScript怎么定义对象和数组
    这篇文章主要介绍“JavaScript怎么定义对象和数组”,在日常操作中,相信很多人在JavaScript怎么定义对象和数组问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Ja...
    99+
    2024-04-02
  • C#中怎么使用Intersect自定义对象列表
    在C#中使用Intersect方法对自定义对象列表进行交集操作,需要重写自定义对象的Equals和GetHashCode方法,以确保...
    99+
    2024-04-02
  • java中怎么定义json格式数据类型
    在Java中,可以使用第三方库如Jackson、Gson等来操作JSON格式数据类型。使用Jackson库,可以先创建一个Java类...
    99+
    2023-09-27
    java json
  • 怎么在python中利用namedtuple自定义数据类型
    怎么在python中利用namedtuple自定义数据类型?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。python可以做什么Python是一种编程语言,内置了许多有效的工...
    99+
    2023-06-14
  • PHP 函数返回对象类型的数据有哪些含义?
    含义: php 函数返回对象类型数据时,表示创建了一个新对象的引用,并将其返回。对象动态创建并返回引用。对象可以在函数外部使用。优点:代码可重用性:对象封装状态和方法。信息封装:对象将数...
    99+
    2024-04-20
    php 对象类型
  • js怎样判断对象的数据类型
    这篇文章主要介绍js怎样判断对象的数据类型,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!判断对象的数据类型使用Object.prototype.toString配合闭包来实现对象数据...
    99+
    2024-04-02
  • C++类、对象、构造函数及析构函数怎么定义使用
    这篇文章主要介绍“C++类、对象、构造函数及析构函数怎么定义使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C++类、对象、构造函数及析构函数怎么定义使用”文章能帮助大家解决问题。C++类与对象C...
    99+
    2023-07-06
  • Java redis存Map对象类型数据怎么实现
    这篇文章主要介绍“Java redis存Map对象类型数据怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java redis存Map对象类型数据怎么实现”文章能帮助大家解...
    99+
    2023-06-30
  • python怎么定义int类型数组
    在Python中,可以使用列表(list)来表示数组,其中每个元素都可以是整数类型(int)。以下是定义整数类型数组的方法:1. 使...
    99+
    2023-09-04
    python
  • Java数据类型如何定义与使用
    这篇“Java数据类型如何定义与使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java数据类型如何定义与使用”文章吧。标...
    99+
    2023-06-30
  • mybatis-plus怎么配置自定义数据类型TypeHandle
    本文小编为大家详细介绍“mybatis-plus怎么配置自定义数据类型TypeHandle”,内容详细,步骤清晰,细节处理妥当,希望这篇“mybatis-plus怎么配置自定义数据类型TypeHandle”文章能帮助大家解决疑惑,下面跟着小...
    99+
    2023-06-26
  • Numpy对象与类型怎么应用
    这篇文章主要讲解了“Numpy对象与类型怎么应用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Numpy对象与类型怎么应用”吧!一、Numpy 对象:nda...
    99+
    2024-04-02
  • 什么是Python对象的实时数据类型?
    Python是一种动态语言,支持多种数据类型。在Python中,数据类型是指数据的种类和数据所占用的空间大小。Python的数据类型可以分为两种:实时数据类型和不可变数据类型。本文将介绍Python中的实时数据类型,并且会穿插演示代码。 P...
    99+
    2023-10-23
    对象 实时 数据类型
  • Linux 中的 ASP 对象数据类型是什么?
    ASP (Active Server Pages) 是一种基于服务器端的脚本语言,它允许开发人员使用 VBScript 或 JScript 编写动态网页。在 ASP 中,使用对象来代表数据和操作,这些对象被称为 ASP 对象。ASP 对象...
    99+
    2023-08-26
    对象 linux 数据类型
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作