Oracle12.2怎么用对象数据类型来重定义表
发表于:2024-11-16 作者:千家信息网编辑
千家信息网最后更新 2024年11月16日,本篇内容介绍了"Oracle12.2怎么用对象数据类型来重定义表"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够
千家信息网最后更新 2024年11月16日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 createdSQL> 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@jypdbConnected.
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 alteredSQL> 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.customerName Type Nullable Default Comments---- ------------ -------- ------- --------CID NUMBERNAME VARCHAR2(30) YADDR ADDR_T YSQL> drop table jy.customer purge;Table dropped
到此重定义操作就完成了。
"Oracle12.2怎么用对象数据类型来重定义表"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
对象
数据
类型
内容
更多
知识
语句
验证
原始
实用
学有所成
接下来
例子
功能
困境
实际
属性
情况
数据库
文章
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
多台电脑共用一个数据库
余姚探索者软件开发有限公司
esp不通过云服务器连接互联网
杭州易拓网络技术有限公司
编程软件开发要学什么软件
服务器自动关闭
软件开发项目甲方实施流程
三级网络技术多少题目
数据库配置文件夹名称
浙江计算机网络技术专升本考什么
软件开发需要关注边界
数据库上班
数据库and和or的区别及用法
2022服务器内存行情
网络安全排名2021最新排名
数据库获取
北京办公系统软件开发哪家正规
酒店开放式网络安全吗
FORTE字体软件开发
国家水稻基因组数据库
天津农行软件开发中心怎么样
天津荣丰软件开发公司
贵州物联智科软件开发有限公司
客户机服务器不可用
网络安全作业培训
轨行区调度系统软件开发
双星服务器电源
服务器代理高匿清洗
吉好网络技术有限公司
郑州网络安全科技馆EPC