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"SYSDBA
PASSWORD ="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@ ~]$exportORACLE_SID=SIDNAME
2、切换字符集
#查看oracle数据库的字符集
SQL> select userenv('language') from dual;
#查看oracle数据库的编码
SQL> select * from nls_database_parameterswhereparameter ='NLS_CHARACTERSET';
[oracledb@ ~]$setNLS_LANG=AMERICAN_AMERICA.AL32UTF8#windows_os
[oracledb@ ~]$exportNLS_LANG=AMERICAN_AMERICA.AL32UTF8#linux_os
3、创建库对应的⽤户信息
SQL> create temporary tablespace SIDNAME_temp tempfile'/u01/oracle/oradata/SIDNAME/SIDNAME_temp.dbf 'size 64m auto
SQL> create tablespace SIDNAME_data logging datafile'/u01/oracle/oradata/SIDNAME/SIDNAME_data.dbf'size 64m autoexten
SQL> create user USERNAME identified by USERPASSWORD default tablespace SIDNAME_data temporary tablespace SIDNAM
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> grantread,write on directory dir_dump to USERNAME;
SQL> ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
—根据实例环境修改processes与sessions参数值(需要重启oracle数据库)
SQL> alter systemsetprocesses=1000 scope=spfile; SQL> alter systemsetsessions=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$sessionwherestatus='ACTIVE';
#查看不同⽤户的连接数:
SQL> select username,count(username) from v$sessionwhereusername is not null group by username;
#查看所有⽤户:
select * from all_users;
#当前的连接数
select count(*) from v$process;
#数据库允许的最⼤连接数
select value from v$parameterwherename ='processes';
三、数据库的还原与备份命令
查看expdp导出备份存储路径:
sql> select * from dba_directories;
1、针对整个库备份与还原操作
(1)、数据库的备份(注意有时SIDNAME与SCHEMASNAME不⼀致,要注意使⽤时区分,⼀般配置⼀样的名称,⽅便记忆的同时,也⽅便
运维。parallel参数根据服务器内存等配置情况添加合理的数值。)
#备份:
[oracledb@ ~]$ expdp USERNAME/USERPASSWORD@SIDNAME schemas=SCHEMASNAME dumpfile=SIDNAME`date +%Y%m
12
(2)、还原
情况1、原始库与⽬标库实例名不同(注意有些环境的数据表空间名不是SIDNAME_data,使⽤时注意核实)
#格式:
[oracledb@ ~]$ impdp USERNAME/USERPASSWORD@SIDNAME schemas=SCHEMASNAME DUMPFILE=XXXX.dmp DIRECTO 源SCHEMASNAME:⽬标SCHEMASNAME remap_tablespace=源_data:⽬标_data
情况2:源库与⽬标库实例名相同
#格式:
[oracledb@ ~]$ impdp USERNAME/USERPASSWORD@SIDNAME schemas=SCHEMASNAME DUMPFILE=XXXX.dmp DIRECTO
知识扩展:使⽤EXCLUDE=STATISTICS还原时排除统计,可以使⽤如下命令完成统计
#命令如下:
SQL>execdbms_stats.gather_schema_stats(ownname=>'SIDNAME',estimate_percent=>10,degree=>8,cascade=>true,granularity
2、针对单表备份与还原操作
(1)、备份单表
格式:
[oracledb@ ~]$ expdp USERNAME/USERPASSWORD@SIDNAME dumpfile=tablenameXXXX.dmp DIRECTORY=dir_dump tables
(2)、还原单表
#格式:
[oracledb@ ~]$ impdp USERNAME/USERPASSWORD@SIDNAME dumpfile=tablenameXXXX.dmp DIRECTORY=dir_dump TABL
扩展: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 TABL 源TABLENAME1,源TABLENAME2,.....
(4)还原多张表
#格式:
[oracledb@ ~]$ impdp USERNAME/USERPASSWORD@SIDNAME dumpfile=tablenameXXXX.dmp DIRECTORY=dir_dump rema 源TABLENAME1:⽬标TABLENAME11 TABLE_EXISTS_ACTION=REPLACE
[oracledb@ ~]$ impdp USERNAME/USERPASSWORD@SIDNAME dumpfile=tablenameXXXX.dmp DIRECTORY=dir_dump rema 源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=
情况2、低版本往⾼版本还原时,⾼版本⼀般兼容低版本,⽬前个⼈运维⼯作中11往12还原没遇到什么问题。
2)扩展2:
(1)、按指定⼤⼩备份,如每份5G⼤⼩(parallel是多线程处理,线程数要⼩于⽣成⽂件个数,线程要⼩于 cpu 线程数)
#备份格式
[oracledb@ ~]$ expdp USERNAME/USERPASSWORD@SIDNAME schemas=SCHEMASNAME DIRECTORY=dir_dump dumpfile=
plsql12配置数据库连接(2)、多个备份⽂件还原:
#还原格式
[oracledb@ ~]$ impdp USERNAME/USERPASSWORD@SIDNAME schemas=SCHEMASNAME DIRECTORY=dir_dump dumpfile=
3)扩展3导出过滤不导出某张表:
#格式
[oracledb@ ~]$ expdp USERNAME/USERPASSWORD@SIDNAME schemas=SCHEMASNAME DIR
ECTORY=dir_dump dumpfile=
4)扩展4不同库还原时不改变数据结构使⽤truncate参数:
#格式
[oracledb@ ~]$ impdp USERNAME/USERPASSWORD@SIDNAME schemas=SCHEMASNAME DIRECTORY=dir_dump dumpfile=
源SCHEMASNAME:⽬标SCHEMASNAME remap_tablespace=源_data:⽬标_data TABLE_EXISTS_ACTION=truncate
5)扩展5导出备份时保留表,清除表数据(query参数):
#格式
[oracledb@ ~]$ expdp USERNAME/USERPASSWORD@SIDNAME schemas=SCHEMASNAME DIR
ECTORY=dir_dump dumpfile=
6)扩展6导出备份时保留表,清除表数据,同时过滤某两张表
#格式
[oracledb@ ~]$ expdp USERNAME/USERPASSWORD@SIDNAME schemas=SCHEMASNAME DIRECTORY=dir_dump dumpfile=
7)扩展7仅统计数据库各表数据,但不导出,参数estimate_only=y
#格式
[oracledb@ ~]$ expdp USERNAME/USERPASSWORD@SIDNAME schemas=SCHEMASNAME DIRECTORY=dir_dump estimate_only=
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 rema
源TABLENAME:⽬标TABLENAME TABLE_EXISTS_ACTION=REPLACE EXCLUDE=STATISTICS EXCLUDE=INDEX
[oracledb@ ~]$ expdp USERNAME/USERPASSWORD@SIDNAME schemas=SCHEMASNAME ESTI
MATE_ONLY=y NOLOGFILE=
9)扩展9个别sql脚本内容很长,使⽤PLSQL Developer⼯具执⾏时会⼀直卡住⽆响应时除使⽤PLSQL Developer⼯具的在命令窗⼝中执
⾏外,也可以使⽤shell终端执⾏
#格式
[oracle@localhost ~]$exportORACLE_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、停⽌任务
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论