当前位置: 首页 > 科技观察

oracle常用运维命令整理

时间:2023-03-23 10:54:25 科技观察

一、oracle建库和删除命令(一)oracle11g建库(一般用于配置gdbname和sid名称相同,sys密码和system密码相同,方便记忆)【oracledb@~]$dbca-silent-createDatabase-templateName/u01/oracle/product/11.2.0/dbhome_1/assistants/dbca/templates/General_Purpose.dbc-gdbnameGDBNAME-sidSIDNAME-characterSetAL32UTF8-NATIONALCHARACTERSETUTF8-sysPasswordSYSPASSWORD-systemPasswordSYSTEMPASSWORD方法2@[删除oracle~]$dbca-silent-deleteDatabase-sourceDBSIDNAME-sysDBAUserNamesys-sysDBAPasswordSYSPASSWORD删除数据库方法二:#第一步:配置响应文件:[oracledb@~]$cat/u01/oracle/response/dbca.rspOPERATION_TYPE="deleteDatabase"SOURCEDB="SIDNAME"SYSDBAUSERNAME="sys"SYSDBAPASSWORD="SYSPASSWORD"#第二步:执行删除数据库的响应文件:[oracledb@~]$dbca-silent-responseFile/u01/oracle/response/dbca.rsp(2)oracle12c建立数据库[或acledb@~]$dbca-silent-createDatabase-templateName/u01/oracle/product/orahome/assistants/dbca/templates/General_Purpose.dbc-gdbnameGDBNAME-sidSIDNAME-characterSetAL32UTF8-NATIONALCHARACTERSETUTF8-sysPasswordSYSPASSWORD-systemPasswordSYSTEMPASSWORD-TOTALMEMORY2048#删除数据库命令同上。注意,运行删除数据库命令后,需要手动删除剩余的目录(3)删除会自动删除以下路径或文件中的库信息A:/u01/oracle/admin/SIDNAMEB:cat/etc/oratabC:/u01/oracle/oradata/SIDNAME以下路径需要手动清理D:/u01/oracle/cfgtoollogs/dbca/SIDNAMEE:/u01/oracle/diag/rdbms/SIDNAMEF:/u01/oracle/product/11.2.0/dbhome_1/dbs/hc_SIDNAME.dat2.创建数据库对应的账号密码1.切换SID[oracledb@~]$exportORACLE_SID=SIDNAME2。切换字符集#查看oracle数据库的字符集SQL>selectuserenv('language')fromdual;#查看oracle数据库的编码SQL>select*fromnls_database_parameterswhereparameter='NLS_CHARACTERSET';[oracledb@~]$setNLS_LANG=AMERICAN_AMERICA.AL32UTF8#windows_os[oracledb@~]$exportNLS_LANG=AMERICAN_AMERICA.AL32UTF38#linux_create数据库对应的用户信息SQL>createtemporarytablespaceSIDNAME_temptempfile'/u01/oracle/oradata/SIDNAME/SIDNAME_temp.dbf'size64mautoextendonnext64mmaxsizeunlimitedextentmanagement1data/SQL>datalogname/size_temp.dbf'size64mautoextendonnext64mmaxsizeunlimitedextentmanagement1acle/createtablespaceororadata/SIDNAME/SIDNAME_data.dbf'4sizeon6mmaxsize2048mextentmanagementlocal;SQL>createuserUSERNAMEidentifiedbyUSERPASSWORDdefaulttablespaceSIDNAME_datatemporarytablespaceSIDNAME_temp;SQL>grantconnect,resourcetoUSERNAME;SQL>grantcreateviewtoUSERNAME;SQL>grantunlimitedtablespacetoUSERNAME;SQL>grantcreatepublicsynonymtoUSERNAME;SQL>grantdroppublicsynonymtoUSERNAME;SQL>createorreplacedirectorydir_dumpas'/u01/oracle/backup';SQL>grantread,writeondirectorydir_dumptoUSERNAME;SQL>ALTERPROFILEDEFAULTLIMITPASSWORD_LIFE_TIMEUNLIMITED;--根据实例环境修改进程和会话的参数(需要重启oracle数据库)SQL>altersystemsetprocesses=1000scope=spfile;SQL>altersystemsetsessions=1105scope=spfile;知识点:oracle11g:定义session值应该大于或设置为1.1processes+5,如果小于1.1processes+5,oracle启动时会自动设置此参数为1.1processes+5。这里主要考虑后台进程发起的session和10%左右的recursivesession。oracle12c:1.1processes+22#查询当前oracle的并发连接数:SQL>selectcount(*)fromv$sessionwherestatus='ACTIVE';#查看不同用户的连接数:SQL>selectusername,count(username)fromv$sessionwhereusernameisnotnullgroupbyusername;#查看所有用户:select*fromall_users;#当前连接数selectcount(*)fromv$process;#数据库允许的最大连接数selectvaluefromv$parameterwherename='processes';3.数据库恢复备份命令查看expdpexport备份存放路径:sql>select*fromdba_directories;1、对整个数据库的备份和恢复操作(一)、数据库的备份(注意有时SIDNAME和SCHEMASNAME不一致,使用时注意区分,一般配置同名,方便记忆,方便操作和maintenance.parallel参数根据服务器内存等配置情况增加合理的值。)#Backup:[oracledb@~]$expdpUSERNAME/USERPASSWORD@SIDNAMEschemas=SCHEMASNAMEdumpfile=SIDNAME`date+%Y%m%d`.dmpdirectory=dir_dumpparallel=212(2)、还原情况1、原库和目标库实例名称不同(注意有些环境下的数据表空间名称不是SIDNAME_data,使用时请验证)SCHEMASNAMEremap_tablespace=source_data:Target_datacase2:源数据库的实例名称与目标数据库的实例名称相同知识扩展:恢复时使用EXCLUDE=STATISTICS排除统计,可以使用如下命令完成统计#命令如下:SQL>execdbms_stats.gather_schema_stats(ownname=>'SIDNAME',estimate_percent=>10,degree=>8,cascade=>true,granularity=>'ALL');2.对于单表的备份和恢复操作(一),备份单表格式:[oracledb@~]$expdpUSERNAME/USERPASSWORD@SIDNAMEdumpfile=tablenameXXXX.dmpDIRECTORY=dir_dumptables=TABLENAME(二),恢复单表#格式:[oracledb@~]$impdpUSERNAME/USERPASSWORD@SIDNAMEdumpfile=tablenameXXXX.dmpDIRECTORY=dir_dumpTABLES=TABLENAMETABLE_EXISTS_ACTION=REPLACEextension:table_exists_action参数说明使用imp导入数据时,如果表已经存在,必须先drop表,再导入。使用impdp完成数据库导入时,如果表已经存在,有四??种处理方式:参数(1)skip:默认操作参数(2)replace:先drop表,再create表,最后insert数据参数(3)append:在原有数据的基础上添加数据参数(4)truncate:先截断,再插入数据(3)备份多表#格式:[oracledb@~]$expdpUSERNAME/USERPASSWORD@SIDNAMEdumpfile=tablenameXXXX.dmpDIRECTORY=dir_dumpTABLES=sourceTABLENAME1,sourceTABLENAME2,.....(4)恢复多个表#格式:[oracledb@~]$impdpUSERNAME/USERPASSWORD@SIDNAMEdumpfile=tablenameXXXX.dmpDIRECTORY=dir_dumpremap_table=SourceTABLENAME1:目标TABLENAME11TABLE_ACTION=EXISTSREPLACE[oracledb@~]$impdpUSERNAME/USERPASSWORD@SIDNAMEdumpfile=tablenameXXXX.dmpDIRECTORY=dir_dumpremap_table=SourceTABLENAME2:目标TABLENAME22TABLE_EXISTS_ACTION=REPLACE3,扩展知识1)扩展1:情况1.从更高版本导出和恢复时on到低版本,比如从12还原到11,在12c上执行导出时,加上低版本的版本号version=11.1.0.2.0#格式:[oracledb@~]$expdpUSERNAME/USERPASSWORD@SIDNAMEschemas=SCHEMASNAMEdumpfile=XXX.dmpDIRECTORY=dir_dumpversion=11.1.0.2.0情况二、从低版本恢复到高版本时,高版本一般会兼容低版本。目前在个人运维工作中11次12次恢复没有遇到任何问题。2)扩展2:(1)按照指定大小备份,比如5G/份(并行是多线程处理,线程数必须小于生成文件数,线程数必须小于比cpu线程数)#备份格式[oracledb@~]$expdpUSERNAME/USERPASSWORD@SIDNAMEschemas=SCHEMASNAMEDIRECTORY=dir_dumpdumpfile=XXX_%U.dmplogfile=expdpXXX.logfilesize=5Gparallel=16(2),恢复多个备份文件:#restoreformat[oracledb@~]$impdpUSERNAME/USERPASSWORD@SIDNAMEORschemas=SCHEMASNAMEDIREC=dir_dumpdumpfile=XXX_%U.dmplogfile=impdpXXX.logparallel=163)Extended3导出过滤不导出某表:#Format[oracledb@~]$expdpUSERNAME/USERPASSWORD@SIDNAMEschemas=SCHEMASNAMEDIRECTORY=dir_dumpdumpfile=XXX.dmpexclude=TABLE:\"IN\'TABLENAME\'\"4)扩展4个不同的数据库进行恢复,不改变数据结构使用truncate参数:#Format[oracledb@~]$impdpUSERNAME/USERPASSWORD@SIDNAMEschemas=SCHEMASNAMEDIRECTORY=dir_dumpdumpfile=XXX.dmpremap_schema=SourceSCHEMASNAME:TargetSCHEMASNAMEremap_tablespace=source_data:target_dataTABLE_EXISTS_ACTION=truncate5)Extend5keeptablewhenexportingbackup,cleartabledata(查询参数):#Format[oracledb@~]$expdpUSERNAME/USERPASSWORD@SIDNAMEschemas=SCHEMASNAMEDIRECTORY=dir_dumpdumpfile=XXX.dmplogfile=expdpXXX.logquery=TABLENAME1:'"where1=2"',TABLENAME2:'"where1=2"',.....6)Extended6导出备份时保留表,清空表数据,同时过滤部分两张表#Format[oracledb@~]$expdpUSERNAME/USERPASSWORD@SIDNAMEschemas=SCHEMASNAMEDIRECTORY=dir_dumpdumpfile=XXX.dmplogfile=expdpXXX.logquery=TABLENAME1:'"where1=2"',TABLENAME2:'"where1=2"'exclude=TABLE:\"IN\'TABLENAME1\'\'TABLENAME2\'\"7)Extension7只统计数据库中每个表的数据,不导出。参数estimate_only=y#format[oracledb@~]$expdpUSERNAME/USERPASSWORD@SIDNAMEschemas=SCHEMASNAMEDIRECTORY=dir_dumpestimate_only=y8)Extension8导入单表到临时表:#Format(统计和索引时加参数EXCLUDE=STATISTICSEXCLUDE=INDEX涉及到)——sql实现从这个表复制到另一个临时表SQL>CREATETABLEtargetTABLENAMEAS(SELECT*FROMsourceTABLENAME);——清除表中的数据SQL>deletefrom目标TABLENAME;[oracledb@~]$impdpUSERNAME/USERPASSWORD@SIDNAMEDIRECTORY=dir_dumpDUMPFILE=tablenameXXX.dmpremap_table=SourceTABLENAME:目标TABLENAMETABLE_EXISTS_ACTION=REPLACEEXCLUDE=STATISTICSEXCLUDE=INDEX[oracledb@~]$expdpUSERNAME/USERPASSWORD@SIDNAMEschemas=SCHEMASNAMEMESTIMATE_ONLY=yNOLOGy9=yFULL很长的脚本)PLSQL开发执行oper工具时,会一直卡住,没有任何反应。除了在命令行窗口使用PLSQLDeveloper工具执行外,还可以使用shell终端执行#Format[oracle@localhost~]$exportORACLE_SID=SIDNAME[oracle@localhost~]$sqlplus/assysdbasql>connUSERNAME/USERPASSWORD@SIDNAMEsql>@/u01/oracle/backup/XXX.sql10)如何正确终止extension10中的expdp和impdp任务,操作步骤如下:Step1.查看视图dba_datapump_jobsselectjob_name,statefromdba_datapump_jobs;Step2.正确停止expdp使用stop_jobexpdpUSERNAME/USERPASSWORD@SIDNAMEattach=SYS_EXPORT_SCHEMA_02导出任务。Step3.停止任务Export>stop_job=immediateAreyousureyouwishtostopthisjob([yes]/no):yesStep4.查看系统中的备份作业状态selectowner_name,job_name,statefromdba_datapump_jobs扩展如下命令:交互模式下有效:HELP:Summarize交互式命令KILL_JOB:分离和删除作业。PARALLEL:更改当前作业的活动工人数。PARALLEL=.2START_JOB:开始/恢复当前作业。START_JOB=SKIP_CURRENT将跳过在开始作业之前停止作业时执行的任何操作。STATUS:监控作业状态的频率(以秒为单位),默认值(0)将在可用时显示新状态。STATUS[=interval]STOP_JOB:依次关闭正在执行的作业并退出客户端。STOP_JOB=IMMEDIATE将立即停止数据泵作业。11)Extension11#查看DB中NLS_CHARACTERSET的值SQL>select*fromv$nls_parameterswhereparameter='NLS_CHARACTERSET';SQL>select*fromnls_database_parameterstwhereet.parameter='NLS_CHARACTERSET';12)关于exp的扩展12、imp、expdp、impdp(1)exp和imp是客户端工具程序,在客户端和服务器端都可以使用。(2)、expdp和impdp是服务器端的工具程序,只能在oracle服务器端使用,不能在客户端使用。(3)、imp只适用于exp导出的文件,不适用于expdp导出的文件;impdp只适用于expdp导出的文件,不适用于exp导出的文件。(4)对于10g以上的服务器,通常不能用expdp导出0行数据的空表,但此时必须用expdp导出。13)展开13oracle用户密码带@符号时,expdp与sqlplus的连接方式及rar压缩备份的文件@echooffrem----dmpbackupdirectory,sameasdumpdirsetbackup_dir=e:\app\oracle\backuprem----today,dayfordmpfileremainingsetday=%date:~0,4%%date:~5,2%%date:~8,2%setremain_day=7rem---deletefilesbefore7daysforfiles/p"%backup_dir%"/d-%remain_day%/c"cmd/cdel/f@path"rem---exportoracledatatodmpfileexpdpusername/\"xxx@yyy\"@orcldirectory=dir_dumpdumpfile=username_%day%.dmplogfile=username_%day%.logschemas=usernameparallel=4compression=ALLrem---sqlplusconnsqlplususername/"""xxx@yyy"""@orclrem----ifcompressthedumpfileanddeletesourcedumpfile,unmarkremsetrar="C:\ProgramFiles(x86)\WinRAR\WinRAR.exe"%rar%a-df%backup_dir%\用户名_%day%.rar%backup_dir%\username_%day%.dmp%backup_dir%\username_%day%.log4.清理(恢复时出错,清除用户表空间)1.删除数据表空间:#Execute语句:[oracledb@~]$sqlplus/assysdbaSQL>droptablespacemepro_data包括内容和数据文件级联约束;2、删除临时表空间:#执行语句:SQL>droptablespacemepro_tem包括内容和数据文件级联约束;3、删除用户:#执行语句:SQL>dropusersrmhdldcascade;4、报用户正在连接无法删除的解决办法---方法一:重启并快速执行dropuser语句(个人推荐)SQL>shutdownimmediate;SQL>startup---方法二:删除正在连接的会话(当连接的session很多的时候,清理需要时间,没有快速方法1)#查询用户sessionSQL>selectusername,serial#,sid,program,machine,statusfromv$sessionwhereusername='USERNAME'ANDSTATUS='ACTIVE';;SQL>selectsaddr,sid,serial#,paddr,username,statusfromv$sessionwhereusernameisnotnull;---删除相关用户sessionSQL>altersystemkillsession'serial#,sid';https://www.今日头条/a6885684732139569675/

最新推荐
猜你喜欢