先了解几个基本语句
创建序列
create sequence SEQ_COMPANY_CODE_ID
minvalue 1
maxvalue 9999999999999999999999999999
start with 61
increment by 1
cache 20;
创建触发器
CREATE OR REPLACE TRIGGER TRIGGER_company_code
before insert on company_code
for each row
begin
select SEQ_company_code_ID.nextval into :new.id from dual;
end;
查看全部序列的创建语句,用于导出序列
select dbms_metadata.get_ddl('SEQUENCE',u.object_name) from user_objects u where object_type='SEQUENCE';
解决数据库迁移时,序列无法导入的问题:
1、用PLSQL从源数据库导出表;
2、查寻全部序列并导出查询结果为.sql文件,编辑该文件可查看到全部序列的创建语句,提取全部values里面的内容;
insert into user_objects (DBMS_METADATA.GET_DDL('SEQUENC)
values ('
CREATE SEQUENCE "FAW_SUPPLY"."SEQ_BOOKING_SPACE_ID" MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 41 CACHE 20 NOORDER NOCYCLE
');
3、将提取后内容在目标库SQL窗口执行,实现批量创建序列;
4、导入从源数据库导出来的.dmp文件;
具体导出/导入命令如下:
1 oracle导出操作
1)打开cmd(windows)或者bash(linux);
2)使用exp命令
语法: exp 用户名/密码@主机名或者主机ip/服务名 tables=表名 file=存入本地dmp目标地址 log=存入本地log目标地址 owner=要导出的用户名
① 导出表:exp hr/hr@ora/orcl tables=jobs file=D:/jobs.dmp log=D:/jobs.log
exp hr/hr@ora/orcl tables=jobs file=/home/ora/jobs.dmp log=/home/ora/jobs.log
② 导出数据库:去掉“ tables=表名 “ !
exp hr/hr@ora/orcl file=D:/full.dmp log=D:/full.log
exp hr/hr@ora/orcl file=/home/ora/full.dmp log=/home/ora/full.log
③ 导出该用户的数据库 :
exp hr/hr@ora/orcl file=D:/hr.dmp log=D:/hr.log owner=hr
exp hr/hr@ora/orcl file=/home/ora/hr.dmp log=/home/ora/hr.log owner=hr
2 oracle导入操作
1)打开cmd(windows)或者bash(linux);
2)使用imp命令
语法:imp 用户名/密码 BUFFER=64000 file=数据库表.dmp存放的地址 log=存入本地log目标地址 ignore=y full=y
imp hr/hr@ora/ORCL buffer=64000 file=/home/oracle/jobss.dmp log=/home/oracle/jobss.log ignore=y full=y
imp hr/hr@ora/ORCL buffer=64000 file=D:/jobss.dmp log=D:/jobss.log ignore=y full=y
说明:ignore=y是表示忽略创建错误,继续后面的操作;full=y表示导入文件中的全部内容,有可能有多个用户的内容,如果你链接的用户默认使用的表空间设置是system,则导入文件的内容会导到system上。