oracle常用命令积累

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;

上一篇:缩小Oracle的系统表空间(SYSTEM、TEMP、UNDOTBS1、SYSAUX)


下一篇:如何查看数据库的大小,和空间使用情况(oracle)