千家信息网

Oracle中有哪些常用的运维命令

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,今天就跟大家聊聊有关Oracle中有哪些常用的运维命令,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一、oracle建库与删库命令(1)ora
千家信息网最后更新 2026年11月01日Oracle中有哪些常用的运维命令

今天就跟大家聊聊有关Oracle中有哪些常用的运维命令,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

一、oracle建库与删库命令

(1)oracle11g

建库(一般习惯配置gdbname与sid名一样,sys密码与system密码一样,以方便记忆)

[oracledb@ ~]$ dbca -silent -createDatabase -templateName /u01/oracle/product/11.2.0/dbhome_1/assistants/dbca/templates/General_Purpose.dbc -gdbname GDBNAME -sid SIDNAME -characterSet AL32UTF8 -NATIONALCHARACTERSET UTF8 -sysPassword SYSPASSWORD -systemPassword SYSTEMPASSWORD -TOTALMEMORY 2048

删库方法一:

[oracledb@ ~]$ dbca -silent -deleteDatabase -sourceDB  SIDNAME -sysDBAUserName sys -sysDBAPassword SYSPASSWORD

删除库方法二:

#步骤1:配置回应文件:  [oracledb@ ~]$ cat /u01/oracle/response/dbca.rsp  OPERATION_TYPE = "deleteDatabase"  SOURCEDB = "SIDNAME"  SYSDBAUSERNAME = "sys"  SYSDBAPASSWORD = "SYSPASSWORD"   #步骤2:执行回应文件删库:  [oracledb@ ~]$ dbca -silent -responseFile /u01/oracle/response/dbca.rsp

(2)oracle12c 建库

[oracledb@ ~]$ dbca -silent -createDatabase -templateName /u01/oracle/product/orahome/assistants/dbca/templates/General_Purpose.dbc  -gdbname GDBNAME -sid SIDNAME -characterSet AL32UTF8 -NATIONALCHARACTERSET UTF8 -sysPassword SYSPASSWORD -systemPassword SYSTEMPASSWORD -TOTALMEMORY 2048 #删库命令同上,注意运行删库命令之后,需要手动删除遗留的目录

(3)删除一般会自动删除以下路径或文件中的库信息

A:/u01/oracle/admin/SIDNAME  B:cat /etc/oratab  C:/u01/oracle/oradata/SIDNAME

以下路径需要手动清理

D:/u01/oracle/cfgtoollogs/dbca/SIDNAME  E:/u01/oracle/diag/rdbms/SIDNAME  F:/u01/oracle/product/11.2.0/dbhome_1/dbs/hc_SIDNAME.dat

二、创建库对应的账号密码

1、切换SID

[oracledb@ ~]$ export ORACLE_SID=SIDNAME

2、切换字符集

#查看oracle数据库的字符集  SQL> select userenv('language') from dual;  #查看oracle数据库的编码  SQL> select * from nls_database_parameters where parameter ='NLS_CHARACTERSET';  [oracledb@ ~]$ set NLS_LANG=AMERICAN_AMERICA.AL32UTF8     #windows_os  [oracledb@ ~]$ export NLS_LANG=AMERICAN_AMERICA.AL32UTF8  #linux_os

3、创建库对应的用户信息

SQL> create temporary tablespace SIDNAME_temp tempfile '/u01/oracle/oradata/SIDNAME/SIDNAME_temp.dbf 'size 64m autoextend on next 64m maxsize unlimited extent management local; SQL> create tablespace SIDNAME_data logging datafile '/u01/oracle/oradata/SIDNAME/SIDNAME_data.dbf' size 64m autoextend on next 64m maxsize 2048m extent management local; SQL> create user USERNAME identified by USERPASSWORD default tablespace SIDNAME_data temporary tablespace SIDNAME_temp; SQL> grant connect,resource to USERNAME; SQL> grant create view to USERNAME;  SQL> grant unlimited tablespace to USERNAME;  SQL> grant create public synonym to USERNAME;  SQL> grant drop public synonym to USERNAME;  SQL> create or replace directory dir_dump  as '/u01/oracle/backup';  SQL> grant read,write on directory dir_dump to USERNAME;  SQL> ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

—根据实例环境修改processes与sessions参数值(需要重启oracle数据库)

SQL> alter system set processes=1000 scope=spfile;    SQL> alter system set sessions=1105 scope=spfile;

知识点:

  • oracle11g:sessions值的定义应该大于或者定于1.1processes+5,如果小于1.1processes+5,则oracle在启动时自动将该参数设置为1.1processes+5。这主要是考虑到后台进程发起的session和大约10%的递归session。

  • oracle12c:1.1processes+22

#查询当前oracle的并发连接数:  SQL> select count(*) from v$session where status='ACTIVE';  #查看不同用户的连接数:  SQL> select username,count(username) from v$session where username is not null group by username;  #查看所有用户:  select * from all_users;  #当前的连接数  select count(*) from v$process;  #数据库允许的最大连接数  select value from v$parameter where name = 'processes';

三、数据库的还原与备份命令

查看expdp导出备份存储路径:

sql> select * from dba_directories;

1、针对整个库备份与还原操作

  • (1)、数据库的备份(注意有时SIDNAME与SCHEMASNAME不一致,要注意使用时区分,一般配置一样的名称,方便记忆的同时,也方便运维。parallel参数根据服务器内存等配置情况添加合理的数值。)

#备份: [oracledb@ ~]$  expdp USERNAME/USERPASSWORD@SIDNAME schemas=SCHEMASNAME dumpfile=SIDNAME`date +%Y%m%d`.dmp directory=dir_dump parallel=2 12
  • (2)、还原

情况1、原始库与目标库实例名不同(注意有些环境的数据表空间名不是SIDNAME_data,使用时注意核实)

#格式:  [oracledb@ ~]$ impdp USERNAME/USERPASSWORD@SIDNAME schemas=SCHEMASNAME DUMPFILE=XXXX.dmp  DIRECTORY=dir_dump remap_schema=源SCHEMASNAME:目标SCHEMASNAME remap_tablespace=源_data:目标_data

情况2:源库与目标库实例名相同

#格式:  [oracledb@ ~]$ impdp USERNAME/USERPASSWORD@SIDNAME schemas=SCHEMASNAME DUMPFILE=XXXX.dmp  DIRECTORY=dir_dump EXCLUDE=STATISTICS

知识扩展:使用EXCLUDE=STATISTICS还原时排除统计,可以使用如下命令完成统计

#命令如下:  SQL> exec dbms_stats.gather_schema_stats(ownname=>'SIDNAME',estimate_percent=>10,degree=>8,cascade=>true,granularity=>'ALL');

2、针对单表备份与还原操作

  • (1)、备份单表

格式:  [oracledb@ ~]$ expdp USERNAME/USERPASSWORD@SIDNAME dumpfile=tablenameXXXX.dmp DIRECTORY=dir_dump tables=TABLENAME
  • (2)、还原单表

#格式:  [oracledb@ ~]$ impdp USERNAME/USERPASSWORD@SIDNAME dumpfile=tablenameXXXX.dmp DIRECTORY=dir_dump TABLES=TABLENAME TABLE_EXISTS_ACTION=REPLACE

扩展:table_exists_action参数说明

使用imp进行数据导入时,若表已经存在,要先drop掉表,再进行导入。  而使用impdp完成数据库导入时,若表已经存在,有四种的处理方式:  参数(1) skip:默认操作  参数(2) replace:先drop表,然后创建表,最后插入数据  参数(3) append:在原来数据的基础上增加数据  参数(4) truncate:先truncate,然后再插入数据
  • (3)备份多张表

#格式:  [oracledb@ ~]$ expdp USERNAME/USERPASSWORD@SIDNAME dumpfile=tablenameXXXX.dmp DIRECTORY=dir_dump TABLES=源TABLENAME1,源TABLENAME2,.....
  • (4)还原多张表

#格式:  [oracledb@ ~]$ impdp USERNAME/USERPASSWORD@SIDNAME dumpfile=tablenameXXXX.dmp DIRECTORY=dir_dump remap_table=源TABLENAME1:目标TABLENAME11 TABLE_EXISTS_ACTION=REPLACE [oracledb@ ~]$ impdp USERNAME/USERPASSWORD@SIDNAME dumpfile=tablenameXXXX.dmp DIRECTORY=dir_dump remap_table=源TABLENAME2:目标TABLENAME22 TABLE_EXISTS_ACTION=REPLACE

3、扩展知识

  • 1)扩展1:

情况1、高版本往低版本导出还原时,如12往11还原时,在12c执行导出时,添加低版本的版本号version=11.1.0.2.0

#格式:  [oracledb@ ~]$ expdp USERNAME/USERPASSWORD@SIDNAME schemas=SCHEMASNAME dumpfile=XXX.dmp DIRECTORY=dir_dump version=11.1.0.2.0

情况2、低版本往高版本还原时,高版本一般兼容低版本,目前个人运维工作中11往12还原没遇到什么问题。

  • 2)扩展2:

(1)、按指定大小备份,如每份5G大小(parallel是多线程处理,线程数要小于生成文件个数,线程要小于 cpu 线程数)

#备份格式  [oracledb@ ~]$ expdp USERNAME/USERPASSWORD@SIDNAME schemas=SCHEMASNAME DIRECTORY=dir_dump dumpfile=XXX_%U.dmp logfile=expdpXXX.log filesize=5G parallel=16

(2)、多个备份文件还原:

#还原格式  [oracledb@ ~]$ impdp USERNAME/USERPASSWORD@SIDNAME schemas=SCHEMASNAME DIRECTORY=dir_dump dumpfile=XXX_%U.dmp logfile=impdpXXX.log parallel=16

3)扩展3

导出过滤不导出某张表:

#格式  [oracledb@ ~]$ expdp USERNAME/USERPASSWORD@SIDNAME schemas=SCHEMASNAME DIRECTORY=dir_dump dumpfile=XXX.dmp  exclude=TABLE:\"IN \'TABLENAME\'\"

4)扩展4

不同库还原时不改变数据结构使用truncate参数:

#格式  [oracledb@ ~]$ impdp USERNAME/USERPASSWORD@SIDNAME schemas=SCHEMASNAME DIRECTORY=dir_dump dumpfile=XXX.dmp remap_schema=源SCHEMASNAME:目标SCHEMASNAME remap_tablespace=源_data:目标_data TABLE_EXISTS_ACTION=truncate

5)扩展5

导出备份时保留表,清除表数据(query参数):

#格式  [oracledb@ ~]$ expdp USERNAME/USERPASSWORD@SIDNAME schemas=SCHEMASNAME DIRECTORY=dir_dump dumpfile=XXX.dmp logfile=expdpXXX.log  query=TABLENAME1:'" where 1=2"',TABLENAME2:'" where 1=2"',........

6)扩展6

导出备份时保留表,清除表数据,同时过滤某两张表

#格式  [oracledb@ ~]$ expdp USERNAME/USERPASSWORD@SIDNAME schemas=SCHEMASNAME DIRECTORY=dir_dump dumpfile=XXX.dmp logfile=expdpXXX.log  query=TABLENAME1:'" where 1=2"',TABLENAME2:'" where 1=2"' exclude=TABLE:\"IN \'TABLENAME1\'\'TABLENAME2\'\"

7)扩展7

仅统计数据库各表数据,但不导出,参数estimate_only=y

#格式  [oracledb@ ~]$ expdp USERNAME/USERPASSWORD@SIDNAME schemas=SCHEMASNAME DIRECTORY=dir_dump estimate_only=y

8)扩展8

导入单表到某临时表:

#格式(涉及统计与索引时添加参数EXCLUDE=STATISTICS EXCLUDE=INDEX)  —sql实现从这张表复制到另一张临时表  SQL> CREATE TABLE 目标TABLENAME  AS (SELECT * FROM 源TABLENAME);  —清空表中的数据  SQL> delete  from 目标TABLENAME;  [oracledb@ ~]$ impdp USERNAME/USERPASSWORD@SIDNAME DIRECTORY=dir_dump DUMPFILE=tablenameXXX.dmp remap_table=源TABLENAME:目标TABLENAME TABLE_EXISTS_ACTION=REPLACE EXCLUDE=STATISTICS EXCLUDE=INDEX   [oracledb@ ~]$ expdp USERNAME/USERPASSWORD@SIDNAME schemas=SCHEMASNAME ESTIMATE_ONLY=y NOLOGFILE=y FULL=y

9)扩展9

个别sql脚本内容很长,使用PLSQL Developer工具执行时会一直卡住无响应时除使用PLSQL Developer工具的在命令窗口中执行外,也可以使用shell终端执行

#格式  [oracle@localhost ~]$ export ORACLE_SID=SIDNAME  [oracle@localhost ~]$ sqlplus  / as sysdba  sql> conn USERNAME/USERPASSWORD@SIDNAME  sql> @/u01/oracle/backup/XXX.sql

10)扩展10

如何正确终止expdp与impdp任务,操作步骤如下:

步骤1、查看视图dba_datapump_jobs  select job_name,state from dba_datapump_jobs;  步骤2、正确停止expdp导出任务使用stop_job  expdp USERNAME/USERPASSWORD@SIDNAME attach=SYS_EXPORT_SCHEMA_02  步骤3、停止任务  Export> stop_job=immediate   Are you sure you wish to stop this job ([yes]/no): yes    步骤4、查看系统中的备份job状态  select owner_name,job_name ,state from dba_datapump_jobs;

扩展:下列命令在交互模式下有效:

HELP: 总结交互命令。  KILL_JOB: 分离和删除作业。  PARALLEL: 更改当前作业的活动 worker 的数目。PARALLEL=.2  START_JOB: 启动/恢复当前作业。  START_JOB=SKIP_CURRENT 在开始作业之前将跳过作业停止时执行的任意操作。  STATUS :在默认值(0)将显示可用时的新状态的情况下,要监视的频率(以秒计)作业状态。  STATUS[=interval]  STOP_JOB: 顺序关闭执行的作业并退出客户机。STOP_JOB=IMMEDIATE 将立即关闭数据泵作业。

11)扩展11

#查看DB中的NLS_CHARACTERSET的值  SQL> select * from v$nls_parameters  where parameter='NLS_CHARACTERSET';   SQL> select * from nls_database_parameters t where t.parameter='NLS_CHARACTERSET';

12)扩展12

关于exp、imp、expdp、impdp

(1)、exp和imp是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用。  (2)、expdp和impdp是服务端的工具程序,他们只能在oracle服务端使用,不能在客户端使用。  (3)、imp只适用于exp导出的文件,不适用于expdp导出文件;impdp只适用于expdp导出的文件,而不适用于exp导出文件。  (4)、对于10g以上的服务器,使用exp通常不能导出0行数据的空表,而此时必须使用expdp导出。

13)扩展13

oracle用户密码有@符号时,expdp与sqlplus连接方式及使用rar压缩备份的文件

@echo off  rem ---- dmp backup directory, same as dump dir  set backup_dir=e:\app\oracle\backup  rem ---- today, day for dmp file remaining  set day=%date:~0,4%%date:~5,2%%date:~8,2%  set remain_day=7  rem --- delete files before 7 days  forfiles /p "%backup_dir%" /d -%remain_day%  /c "cmd /c del /f @path"  rem --- export oracle data to dmp file  expdp 用户名/\"xxx@yyy\"@orcl directory=dir_dump dumpfile=用户名_%day%.dmp logfile=用户名_%day%.log schemas=用户名 parallel=4 compression=ALL rem --- sqlplus conn  sqlplus 用户名/"""xxx@yyy"""@orcl  rem ---- if compress the dumpfile and delete source dumpfile, unmark rem  set rar="C:\Program Files (x86)\WinRAR\WinRAR.exe"   %rar% a -df %backup_dir%\用户名_%day%.rar %backup_dir%\用户名_%day%.dmp %backup_dir%\用户名_%day%.log

四、清理(还原时出错,清用户表空间)

1、删除数据表空间:

#执行语句:  [oracledb@ ~]$ sqlplus / as sysdba  SQL> drop tablespace mepro_data including contents and datafiles cascade constraint;

2、删除临时表空间:

#执行语句:  SQL> drop tablespace mepro_temp including contents and datafiles cascade constraints;

3、删除用户:

#执行语句:  SQL> drop user srmhdld cascade;

4、报用户正在连接,无法删除的解决方法

---方法1:重启并迅速执行drop user语句(个人推荐)  SQL> shutdown immediate;  SQL> startup  ---方法2:删除正在连接的session(连接的session连接着很多时,清理耗时,没有方法1快速)  #查询用户会话  SQL> select username,serial#,sid,program,machine,status from v$session where username='USERNAME' AND STATUS='ACTIVE';;  SQL> select saddr,sid,serial#,paddr,username,status from v$session where username is not null;  ---删除相关用户会话  SQL> alter system kill session 'serial#, sid';  https://www.toutiao.com/a6885684732139569675/

看完上述内容,你们对Oracle中有哪些常用的运维命令有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

数据 用户 格式 备份 参数 目标 文件 命令 数据库 版本 用户名 作业 步骤 情况 方法 服务 内容 客户 密码 工具 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广州为想互联网科技有限公司 科技制造互联网公司 北京互联网科技公司 万易互联网科技有限公司 易通互联网络科技有限公司 天扬科技互联网广告 成都玖崟互联网科技有限公司乐商圈怎么样 互联网科技博主是什么意思 创业天下互联网科技有限公司 随着互联网科技发展 广州市恰铎互联网科技有限公司 民营互联网公司国防科技 徐州市互联网科技有限公司 互联网科技公司营业执照怎么办理 群盈汇互联网科技有限公司 深圳互联网科技的发展 厦门江牛科技互联网 易租星互联网科技有限公司 玉溪新华互联网科技怎么选 北京品多多互联网科技有限公司 互联网科技工作委员会 麻工互联网科技 互联网未来科技 杭州互联网科技公司 贷财互联网科技 百单互联网科技有限公司 互联网科技公司需要的职位 互联网风格科技公司名称 广东猫王互联网科技有限公司电话 互联网大会出现的黑科技
0