oracle维护.docx
- 文档编号:16141160
- 上传时间:2023-07-10
- 格式:DOCX
- 页数:17
- 大小:49.95KB
oracle维护.docx
《oracle维护.docx》由会员分享,可在线阅读,更多相关《oracle维护.docx(17页珍藏版)》请在冰点文库上搜索。
oracle维护
数据导入导出:
导出数据:
1、将数据库testdb完全导出,用户名testuser密码iflytek导出到E:
/testdb.dmp中
exptestuser/iflytek@testdbfile=E:
/testdb.dmpfull=y
2、将数据库中testuser1用户与用户testuser2的表导出
expsystem/manager@testdbfile=E:
/testdb.dmp owner=(testuser1,testuser2)
3、将数据库中的表TableA,TableB导出
exptestuser/iflytek@testdb
file=E:
/testdb.dmp tables=(TableA,TableB)
4、将数据库中的表tableA中的字段filed1值为"王五"的数据导出
exptestuser/iflytek@testdb file=E:
/testdb.dmp
tables=(tableA) query='wherefiled1='王五''
注意:
1、如果表中有clob或者有nclob字段(例如有onebest文本的表),导出时请加上BUFFER=100000000(BUFFER数据缓冲区大小,这个值设置大些都可以),不然导出时会报错
2、如果想对dmp文件进行压缩,可以在上面命令后面加上compress=y来实现。
导入数据:
1、将备份数据库文件中的数据导入指定的数据库testdb中,如果testdb已存在该表,则不再导入;
imptestuser/password@testdbfile=e:
/testdb.dmpfull=y
2、将d:
/testdb.dmp中的表table1导入
imptestuser/password@testdbfile=e:
/testdb.dmptables=(table1)
3、将一个用户所属的数据导入另一个用户
impsystem/password@testdbfile=e:
\test.dmplog=e:
\1.txtfromuser=fusertouser=tuser
_____________________________________________________________
impsystem/manager@testdbfile=e:
\test.dmplog=e:
\1.txtfromuser=(fuser1,fuser2)touser=(tuser1,tuser2)
注意:
1、如果表中有clob或者有nclob字段(例如有onebest文本的表),导出时也请加上BUFFER=100000000(BUFFER数据缓冲区大小,这个值设置大些都可以),不然导出时会报错
管理表空间:
查询表空间数据文件信息
select
a.TABLESPACE_NAME表空间名称,
b.bytes大小bytes,
b.file_name数据文件名,
b.AUTOEXTENSIBLE是否自动扩展
fromdba_tablespacesa,dba_data_filesb
Wherea.TABLESPACE_NAME=b.TABLESPACE_NAME--anda.contents='USERS'
Orderbya.TABLESPACE_NAME,b.FILE_NAME
检查表空间的使用情况:
select
f.tablespace_name,
a.total,
f.free,
round((f.free/a.total)*100)"%Free"
from
(selecttablespace_name,sum(bytes/(1024*1024))totalfromdba_data_filesgroupbytablespace_name)a,
(selecttablespace_name,round(sum(bytes/(1024*1024)))freefromdba_free_spacegroupbytablespace_name)f
WHEREa.tablespace_name=f.tablespace_name(+)
orderby"%Free"
增加表空间
语法:
altertablespace
例子:
ALTERTABLESPACEUSERSADDDATAFILE
'H:
\ORACLE\VOICEINSIGHT\USERS02.DBF'SIZE10240M
AUTOEXTENDONNEXT100MMAXSIZEUNLIMITED;
分区管理:
当前用户分区的表:
select*fromUSER_PART_TABLES
分区使用情况:
selecttable_name,partition_name,tablespace_name,num_rowsfromuser_tab_partitions
wheretable_name='CALL_CALLRECORD'
如果想查看未使用的分区,在where条件后加入num_rows=0
增加分区:
ID区:
altertablecall_callrecord
addpartitionPART_81valueslessthan(24300001)tablespaceUSERS
时间分区:
altertablecall_problemcalladd
partitionPART_201212valueslessthan(TO_DATE('2013-01-0100:
00:
00','SYYYY-MM-DDHH24:
MI:
SS','NLS_CALENDAR=GREGORIAN'))
tablespaceUSERS
删除分区:
altertable[tbname]droppartition[ptname];
权限管理:
系统权限:
DBA:
拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。
RESOURCE:
拥有Resource权限的用户只可以创建实体,不可以创建数据库结构。
CONNECT:
拥有Connect权限的用户只可以登录Oracle,不可以创建实体,不可以创建数据库结构。
赋系统权限:
grantdba,connect,resourceto
voiceinsightcallwithadminoption;
实体权限:
实体权限分类:
select,update,insert,alter,drop
index,delete,all,execute
赋对象权限:
grantselect,update,insertonobject
tovoiceinsightcallWITHGRANTOPTION;
将权限授予全体用户:
grantallonobjecttopublicWITHGRANTOPTION;
检查数据库状态
确认所有的INSTANCE状态以listener状态正常,登陆到所有数据库或例程,检测ORACLE后台进程:
linux命令:
ps–ef|grepora
linux命令:
lsnrctlstatus
SQL语句:
selectstatusfromv$instance;
查看数据库会话信息
定时对数据库的连接情况进行检查,看与数据库建立的会话数目是不是正常,如果建立了过多的连接,会消耗数据库的资源。
同时,对一些“挂死”的连接,可能需要手工进行清理。
以下的SQL语句列出当前数据库建立的会话情况:
Selectcount(*)fromv$session;--查看当前会话连接数
Selectsid,serial#,username,program,machine,statusfromv$session;
其中,
SID会话(session)的ID号;
SERIAL#会话的序列号,和SID一起用来唯一标识一个会话;
USERNAME建立该会话的用户名;
PROGRAM这个会话是用什么工具连接到数据库的;
STATUS当前这个会话的状态,ACTIVE表示会话正在执行某些任务,INACTIVE表示当前会话没有执行任何操作;
锁表问题的处理
selectsid,serial#,username,SCHEMANAME,osuser,MACHINE,
terminal,PROGRAM,owner,object_name,object_type,o.object_id
fromdba_objectso,v$locked_objectl,v$sessions
whereo.object_id=l.object_idands.sid=l.session_id;
解锁处理:
altersystemkillsession'SID,SERIAL#';
注意:
截图中USERNAME列为空的会话,是Oracle的后台进程,不要对这些会话进行任何操作。
查看游标
查询游标数设置:
在PL/SQLDeveloper的File下打开New\CommandWindow执行语句:
ShowParametersCursors;--注意结尾带分号
修改游标最大数,执行完重启实例
altersystemsetopen_cursor='1500',scope=both;
要输入查询已经打开的游标信息
selecto.sid,osuser,machine,count(*)num_cursfromv$open_cursoro,v$sessionswhereo.sid=s.sidgroupbyo.sid,osuser,machineorderbynum_cursdesc;
查询当前用户正在执行的SQL语句:
selectuser_name,sql_textfromv$open_cursor;
查看进程
查询进程数设置:
selectvaluefromv$parameterwherename='processes';
查询当前运行进程数:
selectcount(*)fromv$process;
修改进程最大数,执行完重启实例
altersystemsetprocesses=300scope=spfile;
要输入查询已经打开的进程信息
select*fromv$process;
JOB:
运行job时,需要设置数据库job_queue_processes参数,这个变量的值指的是,同一时间并发运行job的数量。
查看job_queue_processes参数值:
showparameterjob;
修改job_queue_processes参数值:
altersystemsetjob_queue_processes=2
数据库恢复:
TablespaceRecycleBin
从Oracle10g开始,每个表空间都会有一个叫作回收站的逻辑区域,当用户执行drop命令时,被删除的表和表的关联对象(包括索引,约束,触发器,LOB段,LOBindex段)不会被物理删除,这些对象先转移到回收站中,这就给用户提供了一个恢复的可能。
初始化参数recyclebin用于控制是否启用recyclebin功能,缺省是ON,可以使用OFF
SQL>showparameterrecycle
recyclebinstringon
禁用TablespaceRecycleBin功能:
SQL>altersystemsetrecyclebin=off;
SQL>altersystemsetrecyclebin=on;
SQL>altersessionsetrecyclebin=off;
SQL>altersessionsetrecyclebin=on;
禁用后删除的对象将直接删除,不会写到Recycle中,当然在删除时,指定purge参数,表也将直接删除,不会写到recyclebin中。
清空TablespaceRecycleBin:
表空间的RecycleBin区域只是一个逻辑区域,而不是从表空间上物理的划出一块区域固定用于回收站,因此RecycleBin是和普通对象共用表空间的存储区域,或者说是RecycleBin的对象要和普通对象抢夺存储空间。
当发生空间不够时,Oracle会按照先入先出的顺序覆盖RecycleBin中的对象。
也可以手动的删除RecycleBin占用的空间。
Purgetablespacetablespace_name:
用于清空表空间的RecycleBin
Purgetablespacetablespace_nameuseruser_name:
清空指定表空间的RecycleBin中指定用户的对象
Purgerecyclebin:
删除当前用户的RecycleBin中的对象
Purgedba_recyclebin:
删除所有用户的RecycleBin中的对象,该命令要sysdba权限
Droptabletable_namepurge:
删除对象并且不放在RecycleBin中,即永久的删除,不能用Flashback恢复。
Purgeindexrecycle_bin_object_name:
当想释放Recyclebin的空间,又想能恢复表时,可以通过释放该对象的index所占用的空间来缓解空间压力。
因为索引是可以重建的。
将删除的表闪回:
flashbacktabletest1tobeforedrop;
如果出现这样的情况,表test1删除后,一个同名的对象test1(表或者procedure)被创建,闪回的时候需要重命名:
flashbacktabletest1tobeforedroprenametotestX
还有一种情况是;同名的表被多次drop到了recyclebin中,这时候遵循后进先出的原则.一旦完成闪回恢复,RecycleBin中的对象就消失了.查询回收站:
selectobject_name,original_name,typefromuser_recyclebin;
注意:
1、只能用于非系统表空间和本地管理的表空间
2、对象的参考约束不会被恢复,指向该对象的外键约束需要重建。
3、对象能否恢复成功,取决与对象空间是否被覆盖重用。
4、对于RecycleBin中的对象,只支持查询.
常用SQL语句:
删除违规语音重复数据:
1、删除problemcall重复数据:
deletefromCALL_PROBLEMCALLa
wherea.rowidnotin
(selectmin(b.rowid)fromCALL_PROBLEMCALLbgroupbyb.callidhavingcount(*)>1)
andcallidin(selectcallidfromCALL_PROBLEMCALLbgroupbyb.callidhavingcount(*)>1)
2、删除FINAL_ZHIJIANHEAD重复数据:
deletefromFINAL_ZHIJIANHEAD
whereidin(
selectb.idfromFINAL_ZHIJIANHEADa,FINAL_ZHIJIANHEADb
wherea.id>b.idanda.callid=b.callidanda.filterruleid=b.filterruleid)
3、删除FINAL_ZHIJIANDETAIL
deletefromFINAL_ZHIJIANDETAIL
whereidin(
selecta.idfromFINAL_ZHIJIANDETAILa,FINAL_ZHIJIANDETAILb
wherea.id>b.idanda.callid=b.callidanda.begintime=b.begintimeanda.endtime=b.endtime)
根据日期查询id区间:
selectto_char(t.starttime,'yyyy-mm-dd')asdatename,min(id)asminid,max(id)asmaxidfromCALL_CALLRECORDt
groupbyto_char(t.starttime,'yyyy-mm-dd')
orderbydatename
结果集的比较:
交集:
select*fromtable1
intersect
select*fromtable2
差集
select*fromtable1
minus
select*fromtable2
关联更新:
updatetable1a
seta.filed1=(selectb.field2fromtable2bwherea.id=b.id)
其他
oracle取消密码期限
取消密码期限:
alterprofiledefaultlimitPASSWORD_LIFE_TIMEUNLIMITED;
检查是否修改:
1、 查看用户的proifle是哪个,一般是default:
SELECTusername,PROFILEFROMdba_users;
2、 查看指定概要文件(如default)的密码有效期设置:
select*fromdba_profilesswheres.profile='DEFAULT'andresource_name='PASSWORD_LIFE_TIME';
3、 将密码有效期由默认的180天修改成“无限制”:
alterprofiledefaultlimitPASSWORD_LIFE_TIMEUNLIMITED;
修改之后不需要重启动数据库,会立即生效。
oracle临时表空间的增删改查
1、查看临时表空间(dba_temp_files视图)(v_$tempfile视图)
selecttablespace_name,file_name,bytes/1024/1024file_size,autoextensiblefromdba_temp_files;
selectstatus,enabled,name,bytes/1024/1024file_sizefromv_$tempfile;--sys用户查看
2、缩小临时表空间大小
alterdatabasetempfile'D:
\ORACLE\PRODUCT\10.2.0\ORADATA\TELEMT\TEMP01.DBF'resize100M;
3、扩展临时表空间:
方法一、增大临时文件大小:
SQL>alterdatabasetempfile‘/u01/app/oracle/oradata/orcl/temp01.dbf’resize100m;
方法二、将临时数据文件设为自动扩展:
SQL>alterdatabasetempfile‘/u01/app/oracle/oradata/orcl/temp01.dbf’autoextendonnext5mmaxsizeunlimited;
方法三、向临时表空间中添加数据文件:
SQL>altertablespacetempaddtempfile‘/u01/app/oracle/oradata/orcl/temp02.dbf’size100m;
4、创建临时表空间:
SQL>createtemporarytablespacetemp1tempfile‘/u01/app/oracle/oradata/orcl/temp11.dbf’size10M;
5、更改系统的默认临时表空间:
--查询默认临时表空间
select*fromdatabase_propertieswhereproperty_name='DEFAULT_TEMP_TABLESPACE';
--修改默认临时表空间
alterdatabasedefaulttemporarytablespacetemp1;
所有用户的默认临时表空间都将切换为新的临时表空间:
selectusername,temporary_tablespace,default_fromdba_users;
--更改某一用户的临时表空间:
alteruserscotttemporarytablespacetemp;
6、删除临时表空间
删除临时表空间的一个数据文件:
SQL>alterdatabasetempfile‘/u01/app/oracle/oradata/orcl/temp02.dbf’drop;
删除临时表空间(彻底删除):
SQL>droptablespacetemp1includingcontentsanddatafilescascadeconstraints;
7、查看临时表空间的使用情况(GV_$TEMP_SPACE_HEADER视图必须在sys用户下才能查询)
GV_$TEMP_SPACE_HEADER视图记录了临时表空间的使用大小与未使用的大小
dba_temp_files视图的bytes字段记录的是临时表空间的总大小
SELECTtemp_used.tablespace_name,
total-usedas"Free",
totalas"Total",
round(nvl(total-used,0)*100/total,3)"Freepercent"
FROM(SELECTtablespace_name,SUM(bytes_used)/1024/1024used
FROMGV_$TEMP_SPACE_HEADER
GROUPBYtablespace_name)temp_used,
(SELECTtablespace_name,SUM(bytes)/1024/1024total
FROMdba_temp_files
GROUPBYtablespace_name)temp_total
WHEREtemp_used.tablespace_name=te
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- oracle 维护