您的位置:首页 > 数据库 > Oracle

oracle数据库迁移过程中的常见问题及常见操作命令

2017-02-20 14:38 351 查看
本文地址:http://blog.csdn.net/shanglianlm/article/details/56012849

数据库导出:

使用sysdba 用户执行
create or replace directory expdir as 'E:\bak';
grant read,write on directory expdir to rm;
使用cmd命令行执行
expdp rm/xxx@orcl directory=expdir full=y parallel=4 logfile=rmExp.log dumpfile=rm.dmp;


1 ORA-39002,ORA-39070,ORA-39087 目录名无效

ORA-39002: 操作无效

ORA-39070: 无法打开日志文件。

ORA-39087: 目录名 EXPDIR 无效

使用SELECT * FROM dba_directories;查看发现EXPDIR 是否存在。

若存在

GRANT READ,WRITE ON DIRECTORY EXPDIR to rm;


否则执行

create or replace directory expdir as 'E:\bak';


2 ORA-12154:TNS:无法解析指定的连接标识符

UDE-12154:operation generated ORACLE error 12154
ORA-12154:TNS:无法解析指定的连接标识符




set oracle_sid=orcl


然后再imp xxx/xxx 后面不能带”@” 才能导入

3 expdp报错ORA-31631、ORA-39161 权限不足

ORA-31631: privileges are required
ORA-39161: Full database jobs require privileges


从报错提示信息来看,是权限不足造成的。当执行expdp操作指定remap_schema参数时,需要具备exp_full_database权限。给rm用户赋予exp_full_database权限。

grant exp_full_database to rm;


导入时报错

ORA-31631: privileges are required
ORA-39122: Unprivileged users may not perform REMAP_SCHEMA remappings.


同样处理方法,授权imp_full_database

grant imp_full_database to rm;


将oracle 11g导出的dmp文件导入到oracle10g 时提示:

IMP-00010: 不是有效的导出文件, 头部验证失败
IMP-00000: 未成功终止导入


用notepad++工具打开dmp文件,可以看到头部信息 --TEXPORT:V11.01.00,即为源数据库的版本号,将其修改为目的数据库的版本号,如10.02.01。

常见sql语句

1 oracle中查询某个库中所有的表以及所占的表空间大小

查某一用户下的表

select SEGMENT_NAME,TABLESPACE_NAME,sum(BYTES/1024/1024)||'M'  from USER_extents where SEGMENT_TYPE='TABLE'
group by SEGMENT_NAME,TABLESPACE_NAME


查所有的表

select SEGMENT_NAME,TABLESPACE_NAME,sum(BYTES/1024/1024)||'M'  from dba_extents where SEGMENT_TYPE='TABLE'
group by SEGMENT_NAME,TABLESPACE_NAME


2 查看所有表空间对应的数据文件

select tablespace_name,file_name from dba_data_files;


3 修改数据文件大小

alter database datafile 'h:\app\administrator\oradata\orcl\users01.dbf' resize 10240M;


4.查询数据库当前进程的连接数:

select count(*) from v$process;


5.查看数据库当前会话的连接数:

select count(*) from v$session;


6.查看数据库的并发连接数:

select count(*) from v$session where status='ACTIVE';


7.查看当前数据库建立的会话情况:

select sid,serial#,username,program,machine,status from v$session;


8.查询数据库允许的最大连接数:

select value from v$parameter where name = 'processes';


或者:

show parameter processes;


修改数据库允许的最大连接数:

alter system set processes = 300 scope = spfile;


(需要重启数据库才能实现连接数的修改)

9.查看当前有哪些用户正在使用数据:

select osuser,a.username,cpu_time/executions/1000000||'s',sql_fulltext,machine
from v$session a,v$sqlarea b
where a.sql_address = b.address
order by cpu_time/executions desc;


其他

oracle用expdp定时备份所有步骤详解

http://jingyan.baidu.com/article/9113f81b2040862b3314c757.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据库 oracle 迁移