暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
RMAN-05541_ no archived logs found in target database - 小强斋太 - 博客园.pdf
23
116页
2次
2025-01-14
免费下载
oracle数据库,怎么给已有数据的表添加自增字段 - 小强斋太
场景:数据仓库,ODI为使用Oracle Incremental Update IKM,需要对一事实表增加主键。
思想:基于老表创建新表,添加自增字段(序列+触发器实现),把老数据导入新表,删除老表,修改新表名字为老
[1] 假如有一测试表DEPT,我们要给DEPT表增加ID字段
CREATE TABLE DEPT AS SELECT * FROM SCOTT.DEPT
或者自己创建
【2】创建一个新表DEPT1
方法1: 导出源表结构,增加一个字段ID
CREATE TABLE "DEPT1" (
"ID" NUMBER(2) PRIMARY KEY,
"DEPTNO" NUMBER(2) NOT NULL ,
"DNAME" VARCHAR2(14 BYTE) NULL ,
"LOC" VARCHAR2(13 BYTE) NULL
)
方法2:
---只会复制表数据和表结构,不会有任何约束
CREATE TABLE DEPT1 AS SELECT * FROM DEPT WHERE 1<>1
--添加列
ALTER TABLE "DEPT1" ADD ID NUMBER
ALTER TABLE "DEPT1" ADD PRIMARY KEY ("ID");
【3】创建自增序列
DROP SEQUENCE SEQ_DEPT
CREATE SEQUENCE SEQ_DEPT INCREMENT BY 1 START WITH 1 MINVALUE 1 NOMAXVALUE NOCYCLE NOCACHE;
【4】触发器实现ID自增加
DROP TRIGGER TRG_BEFORE_INSERT_DEPT
CREATE TRIGGER TRG_BEFORE_INSERT_DEPT BEFORE INSERT ON DEPT1
FOR EACH ROW
BEGIN
SELECT
SEQ_DEPT.NEXTVAL INTO :NEW.ID
FROM
DUAL ;
END ;
【5】老数据导入新表DEPT1
INSERT INTO DEPT1("DEPTNO", "DNAME", "LOC") SELECT * FROM DEPT
【6】删除旧表DEPT
DROP TABLE DEPT
【7】DEPT1改名为DEPT
在Windows操作系统上,当在DOS命令窗口中运行SQL*Plus的时候,可以使用向上,向下键来跳回之前已经执行过的
SQL语句.你可以根据需要修改他们,然后按Enter键重新提交执行.
然而,当在Linux Shell中运行SQL*Plus的时候,并不提供浏览历史命令行的功能.
为了在Linux中达到同样的目的,你可以安装rlwrap,这个程式本身是个Shell,可以运行任何你提供给它的命令包括参数,
并添加命令历史浏览功能.
:安装readline
[root@oracledb oracle]# yum install readline
[root@oracledb oracle]# yum install readline-devel
ORACLE SERVER由实例(Instance)和数据库(database)组成,数据库是指存储在磁盘上的一组物理文件。ORACLE
根据ORACLE_SID来寻找参数文件启动实例。实例是由一组后台进程和一块共享内存区域(SGA)组成。后台进程是数
据库和操作系统进行交互的通道。
据库启动
Oracle 的启动需要经历四个状态,SHUTDOWN –>NOMOUNT –>MOUNT –>OPEN
SHUTDOWN: 原始状态
NOMOUNT: 启动实例(后台进程开启 SGA组建成功)
MOUNT: 打开控制文件
OPEN: 打开控制文件中描述的文件,并对外提供数据库的正常服务
启动命令对应的状态:
startup nomount -----启动实例,不装载数据库
startup mount -----启动实例,装载数据库,不打开数据库
alter database mount -----前提是在nomount状态下
startup -----startup后面不加其它信息的话,系统会为我们直接启动到第4个状态
alter database open ----前提是mount状态下
查看状态的转换
SQL> startup nomount
ORACLE instance started.
Total System Global Area 3290345472 bytes
Fixed Size 2217832 bytes
Variable Size 1795164312 bytes
Database Buffers 1476395008 bytes
Redo Buffers 16568320 bytes
SQL> select status from v$instance;
STATUS
------------
STARTED
SQL> alter database mount;
Database altered.
SQL> select status from v$instance;
of 116
免费下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。