10年没碰oracle了。工作需要做oracle导出导入,又捡起来学习了下。
处理问题的思路:首先看报错日志,如果没有报错日志,就去看alert日志,根据日志显示的问题处理。期间遇到了死锁问题,遇到了磁盘满问题。
另外,oracle同一个表空间下,不同用户同名的表确实是以多个表的方式保存的,数据互不干扰,测试验证了。导入的时候才敢加上table_exists_action=replace
一、常用命令
看磁盘使用df -hl
服务器进入oracle模式:su - oracle
进入sql模式:sqlplus / as sysdba
退出sql模式:quit
查看日志 show parameter dump 找到日志目录,然后tail去看日志
查看死锁 select l.session_id,o.owner,o.object_name from v$locked_object l,dba_objects o where l.object_id=o.object_id;
SELECT sid, serial#, username, oSUSEr, terminal,program ,action, prev_exec_start FROM v$session where sid = 34;
处理死锁 alter system kill session '34,5415';
查看任务:select * from dba_datapump_jobs;
查看运行中的进程
top -ci
SELECT sql_text, sql_fulltext, FIRST_LOAD_TIME, LAST_LOAD_TIME FROM v$sql WHERE sql_id = (SELECT sql_id FROM v$session WHERE paddr = (SELECT addr FROM v$process WHERE spid = 17336));
查看表空间
SELECT a.tablespace_name "表空间名",
total/1024/1024 "表空间大小单位M",
free/1024/1024 "表空间剩余大小单位M",
(total - free)/1024/1024 "表空间使用大小单位M",
Round((total - free) / total, 4) * 100 "使用率 [[%]]"FROM
(SELECT tablespace_name,Sum(bytes) free FROM DBA_FREE_SPACE GROUP BY tablespace_name) a,
(SELECT tablespace_name,
Sum(bytes) total FROM DBA_DATA_FILES GROUP BY tablespace_name) b WHERE a.tablespace_name = b.tablespace_name;
二、导出命令
expdp system/mima@x.x.x.x/orcl schemas=kingdeelx DIRECTORY=EXPIMPDIR DUMPFILE=20231007.dmp logfile=20231007dmp.log compression=all;
三、导入命令
impdp system/mima directory=EXPIMPDIR table_exists_action=replace dumpfile=20231007.dmp REMAP_SCHEMA= kingdeelx:kingdeelx2 remap_tablespace=SPACE1:SPACE2 EXCLUDE=USER
导入导出看https://cloud.tencent.com/developer/article/2064219 这个帖子讲的比较具体
四、oracle后台进程
DBRM:数据库资源管理进程, (The database resource manager process),负责设置资源计划和其他的资源管理的工作。
DIAG:数据库诊断进程, (The diagnosibility process) ,负责维护管理各种用于诊断的转储文件,并执行oradebug命令。
DIA0:另一个数据库诊断进程,负责检测Oracle数据库中的挂起(hang)和死锁的处理。
PSP0:process spawner,用于产生oracle进程
SMCO:space management coordinator,该进程负责空间管理协调管理工作,负责执行空间的分配和回收。
Wnnn;命名为W000,W001,W002.....,由smcO动态产生执行上述相关任务。