Oracle迁移过程
重要:首先确定自己使用的数据库实例,在oracle用户下进行切换再行登陆操作。
1、 切换使用实例
export ORACLE_SID = mee (实例名称例如:orcl)
2、 使用dba登陆
sqlplus / as sysdba
【一】 导出导入数据库文件
注意事项:所以还原数库前请先行查询备份数据的字符集,修改新库实例中的字符集(同一实例可不考虑),确保数据交易前后字符集一致,不然会出现乱码问题,影响所有数据导入。
1、导出数据库文件
expdp trswcm52/trswcm52@orcl DIRECTORY=db_bak DUMPFILE=trswcmv7_$DATE.dmp logfile=trswcmv7_$DATE.log
DIRECTORY:数据库中创建的文件夹目录
创建文件夹目录:CREATE OR REPLACE DIRECTORY db_bak AS '/u01/backup/';
赋予目录地址读写权限:GRANT read,write ON DIRECTORY db_bak TO public;
查询目录列表: select * from dba_directories;
2、创建表空间 TRSWCM5219(表空间名称)
create tablespace TRSWCM5219
datafile '/data/tablespace/TRSWCM5219.dbf' size 30G
autoextend on
maxsize unlimited
default storage (initial 1024K
Next 1024K
minextents 1
maxextents unlimited
pctincrease 0);
3、增加数据文件
ALTER TABLESPACE TRSWCM5219 ADD DATAFILE '/data/tablespace/TRSWCM5219_1.dbf' SIZE 10G;
autoextend on
next 50M maxsize 20480;
ALTER TABLESPACE TRSWCM5219 ADD DATAFILE '/data/tablespace/TRSWCM5219_2.dbf' SIZE 10G;
autoextend on
next 50M maxsize 20480;
4、创建用户,赋予表空间
create user TRSWCM5219(用户名称) identified by TRSWCM5219(用户密码) default tablespace TRSWCM5219(默认表空间);
5、修改用户的表空间权限
alter user TRSWCM5219(用户名称) default tablespace TRSWCM5219(表空间名称可指向其他表空间);
6、赋予用户所有权限
grant connect,resource,dba to TRSWCM5219;
7、导入数据库备份脚本(将原表空间导入到新表空间中,老用户变更为新用户)
impdp TRSWCM5219/TRSWCM5219 DIRECTORY=db_bak DUMPFILE=trswcmv7.dmp logfile=trswcmv7_20191208_no3.log REMAP_SCHEMA=TRSWCM52:TRSWCM5219 remap_tablespace=TRSWCM52:TRSWCM5219
REMAP_SCHEMA=TRSWCM52:TRSWCM5219:(还原前用户名称:还原后用户名称)
remap_tablespace=TRSWCM52:TRSWCM5219:(还原前表空间名称:还原后表空间名称)
危险操作:
8、删除指定用户
drop user TRSWCM5219 cascade;
9、下线指定表空间
alter tablespace TRSWCM5219 offline;
10、删除表空间数据及文件
drop tablespace TRSWCM5219 including contents and datafiles;
11、解锁指定用户
ALTER USER TRSWCM5219 ACCOUNT UNLOCK;
12、查询实例表空文件
select name from v$datafile;
触发器
注意事项:由于原库中的触发器可能存在语句中写死问题,所以迁移后对比触发器按一下进行创建。(同实例中还原会有该问题,新建实例还原数据库不存在该类问题)
1、 查询数据库所有触发器的语句
SELECT DBMS_METADATA.GET_DDL('TRIGGER', U.OBJECT_NAME)
FROM USER_OBJECTS U
WHERE OBJECT_TYPE = 'TRIGGER';
SELECT * FROM ALL_TRIGGER WHERE OWNER = 'TRSWCM5219' ORDER BY TRIGGER_NAME ASC;
2、 删除实例数据库指定触发器
DROP TRIGGER CCICEDNEW_VIEW_UPDATE_D_TRIG;
3、 按1中查询出的语句进行创建触发器
CREATE OR REPLACE TRIGGER "TRSWCM5219"."CCICEDNEW_VIEW_UPDATE_D_TRIG" AFTER DELETE ON "TRSWCM5219"."WCMDOCUMENT"
FOR EACH ROW
BEGIN
INSERT INTO "CCICEDNEW_VIEW_UPDATE$_TEMP" VALUES("CCICEDNEW_VIEW_UPDATE$_SEQ".NEXTVAL,:OLD."DOCID",3,0);
END;
4、 修改表空间是否启动
ALTER TRIGGER "TRSWCM5219"."CCICEDNEW_VIEW_UPDATE_D_TRIG" DISABLE;
【二】修改数据库表空间目录位置
注意事项:
【1】保证读取文件路径存在
【2】保证alter修改文件目录的文件,拥有者和群组必须和之前的表空见一直(权限一致)
【3】备份数据库
【4】生产环境虚机镜像备份
生产环境WCM数据库 -----【重要】
1、下线实例表空间
alter tablespace TRSWCM52 offline;
2、拷贝表空间文件到新目录下
cp /u01/tablespace/trswcm52.dbf /data/tablespace/trswcm52.dbf
cp /u01/tablespace/trswcm52_1.dbf /data/tablespace/trswcm52_1.dbf
cp /u01/tablespace/trswcm52_2.dbf /data/tablespace/trswcm52_2.dbf
3、进入sqlplus / as sysdba,修改表空间文件的目录到新目录下
alter tablespace trswcm52 rename datafile '/u01/tablespace/trswcm52.dbf' to '/data/tablespace/trswcm52.dbf';
alter tablespace trswcm52 rename datafile '/u01/tablespace/trswcm52_1.dbf' to '/data/tablespace/trswcm52_1.dbf';
alter tablespace trswcm52 rename datafile '/u01/tablespace/trswcm52_2.dbf' to '/data/tablespace/trswcm52_2.dbf';
4、重构recover新目录的实例表空间文件
alter database recover datafile '/data/tablespace/trswcm52.dbf';
alter database recover datafile '/data/tablespace/trswcm52_1.dbf';
alter database recover datafile '/data/tablespace/trswcm52_2.dbf';
5、上线实例表空间
alter tablespace TRSWCM52 online;
6、查询时表空间及路径是否已更改
select name from v$datafile;
【三】常用oracle语句
1、查询用户所有表、视图等。
select * from all_tab_comments;
2、查询本用户的表、视图等信息。
select * from user_tab_comments;
3、查询所有用户的表的列名和注释
select * from all_col_comments;
4、查询本用户的表的列名和注释
select * from user_col_comments;
5、查询所有用户的表的列名等信息(详细但没有备注)
select * from all_tab_colums;
6、查询本用户的表的列名等信息(详细但没有备注)
select * from user_tab_colums;
7、表连接查询
(方法一:多表连接查询)
select t.table_name , t.comments from user_tab_comments t;
(方法二:from 子查询查询)
select r1 , r2 , r3 , r5
from (select a.table_name r1 , a.column_name r2 , a.comments r3
from user_col_comments a),
(select t.table_name r4 , t.comments r5 from user_tab_comments t)
where r4=r1;
8、查看当前用户的缺省表空间
select username,default_tablespace from user_users;
9、查看用户下所有的表
select * from user_tables;
10、解锁用户
alter user scott account unlock;
11、重设用户密码
scott/tiger为默认用户,alter user scott identified by tiger;
12、创建表
create table t1(c1 type 约束,c2 type 约束(not null,unique,check,primary key));
13、查看当前系统时间
select sysdate from dual;
14、修改oracle中内存占用大小
show parameter sga; --显示内存分配情况
alter system set sga_max_size=200m scope=spfile; --修改占用内存的大小
15、查询表空间是否自动扩展
select file_name,autoextensible,increment_by from dba_data_files;