邮区中心局oracle数据库维护手册24Word文档格式.docx
《邮区中心局oracle数据库维护手册24Word文档格式.docx》由会员分享,可在线阅读,更多相关《邮区中心局oracle数据库维护手册24Word文档格式.docx(18页珍藏版)》请在冰豆网上搜索。
![邮区中心局oracle数据库维护手册24Word文档格式.docx](https://file1.bdocx.com/fileroot1/2022-11/25/e074d8d5-2be6-4fc8-a6d8-42c9098d516f/e074d8d5-2be6-4fc8-a6d8-42c9098d516f1.gif)
6通过授权的方式来创建用户8
7建立与已有的表结构、数据一样的新表8
8向新表中导入旧表的数据(针对上一点:
表结构一样)8
9查看当前所有对象(表、视图等)8
10不借助工具且不改变列的顺序(表中有数据)情况下修改列名8
11建一个和a表结构一样的空表9
12如何查看用户表上的约束类型9
13如何查看后台进程10
14显示当前连接用户11
15连接字符串11
16查询当前日期11
17用户间复制数据11
18redologfile11
18.1redologfile的简单介绍11
18.2redologfile的大小和位置对数据库性能的影响12
18.3在联机状态改变redologfile大小的方法13
18.4跟redologfile有关的其它数据库参数13
19数据库察看命令14
19.1查看表空间的名称及大小14
19.2查看表空间物理文件的名称及大小15
19.3查看回滚段名称及大小15
19.4查看控制文件15
19.5查看日志文件15
19.6查看表空间的使用情况16
19.7查看数据库库对象16
19.8查看数据库的版本16
19.9查看数据库的创建日期和归档方式16
20备份操作17
20.1生产主备份17
20.2生产辅备份18
20.3历史主备份18
20.4历史主备份18
21恢复数据库18
21.1生产数据恢复19
21.1.1恢复前准备工作19
21.1.2完全恢复19
21.1.3不完全恢复20
21.1.4恢复结束20
21.1.4.1部分数据文件损坏20
21.1.5不完全完全恢复21
21.2历史库的恢复21
21.2.1归档数据的恢复21
21.2.2非归档数据的恢复21
1启动数据库
以数据库用户登陆,运行下面的命令(进入ORACLE数据库SERVER管理工具):
/usr/oracle>
svrmgrl
SVRMGR>
connectinternal
startup
exit
2关闭数据库
shutdownnormal
3建Dblink的实例
举例说明:
linux:
158.1.19.1有一yz库,有用户qgzx;
(全国中心数据库用)
NT:
158.1.19.233有一库yydd,用户jiek/jiek(长天全国中心数据接口)
qgzx需要访问jiek的表
步骤:
1、建立TNS,用于链接yydd
在/usr/oracle/network/admin下文件tnsnames.ora中加入如下内容
#diaoxiaoru
YYDD=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=158.1.19.233)(PORT=1521))
)
(CONNECT_DATA=
(SERVICE_NAME=YYDD)
2、赋予qgzx用户dba权限,sqlplus连到qgzx下执行如下语句,mylink为dl3:
CREATEDATABASELINKdl3CONNECTTOjiekIDENTIFIEDBYjiek;
4新增表的实例(授权方式建同义词的情况)
--在158.1.19.1的yz实例cnpost用户下(开发库)新增一个表的实例。
--说明:
cnpost是resource用户,具有所有的实体表、视图、同义词、存储过程等等,需要在test、zxj(这两个用户只有createsession权限)两个开发用户下给他们建同义词。
sqlpluscnpost
createtabletTMYJZLDZB(
CJDMchar(4)NotNull,
OLDYJZLchar
(1)NotNull,
NEWYJZLchar(3)NotNull
);
createuniqueindextTMYJZLDZB_un1ontTMYJZLDZB
(CJDM,OLDYJZL);
把cnpost上实体表tTMYJZLDZB在zxj、test用户下授予grantselect,update,delete,inse
rt权限:
grantselect,update,delete,insertontTMYJZLDZBtozxj;
grantselect,update,delete,insertontTMYJZLDZBtotest;
建同义词需要有dba权限,给zxj、test授予dba权限:
connectsystem/******
grantdbatozxj;
grantdbatotest;
在zxj、test建同义词cnpost.tTMYJZLDZB
connzxj/post
createSYNONYMtTMYJZLDZBforcnpost.tTMYJZLDZB;
conntest/lqj
收回zxj、test用户的dba权限
connectsystem/*******
revokedbafromzxj;
revokedbafromtest;
5新建用户实例
使用具有DBA权限的用户进入sqlplus
--sqlplussystem/******
创建用户:
CREATEUSERusernameIDENTIFIEDBYpasswd用户名和密码
DEFAULTTABLESPACEtablespacename指定缺省的表空间
TEMPORARYTABLESPACEtablespacename指定临时表空间
QUOTA100MONtablespacename指定配额表空间的大小
PROFILEDEFAULT
ACCOUNTUNLOCK
/
给用户授权,createsession是会话权限,每一个用户是必有的。
而connect,resource,dba权限看具体的用途而定:
--grantcreatesessiontousername;
会话权限,用于连接用户
--grantconnecttousername;
授予connect权限
--grantresourcetousername;
授予resource权限
--grantdbatousername;
授予dba权限
--GRANTUNLIMITEDTABLESPACETOusername;
授予用户可扩展的表空间
收回权限
--revokeconnectfromusername;
--revokeresourcefromusername;
--revokedbafromusername;
6通过授权的方式来创建用户
SQL>
grantconnect,resourcetotestidentifiedbytest;
conntest/test
7建立与已有的表结构、数据一样的新表
SQL>
CREATETABLEnew_tablenameASSELECT*FROMold_tablename;
表结构一样)
INSERTINTOold_tablenameSELECT*FROMnew_tablename;
9查看当前所有对象(表、视图等)
select*fromtab;
10不借助工具且不改变列的顺序(表中有数据)情况下修改列名
假设某表diao有两个字段dd和cc,有三条数据,现要把列dd改为rr,需要如下操作:
altertablediao_1renametodiao_1;
――相当于建立临时表diao_1
createtablediao_1(
rrchar(20)notnull,
ccchar
(1)notnull
);
――新建表diao,并把列dd用rr替换
insertintodiao_1(
rr,
cc
)
select
dd,
fromdiao_1;
――把diao_1中数据插入到diao中
commit;
――提交插入的数据
droptablediao_1;
――删除临时用表diao_1
11建一个和a表结构一样的空表
CREATETABLEbASSELECT*FROMaWHERE1=2;
createtableb(b1,b2,b3)asselecta1,a2,a3fromawhere1=2;
12如何查看用户表上的约束类型
descUSER_CONSTRAINTS――管理约束的表
descUSER_CONS_COLUMNS――约束表内容
名称空?
类型
-----------------------------------------------------------------
OWNERNOTNULLVARCHAR2(30)--用户名
CONSTRAINT_NAMENOTNULLVARCHAR2(30)--约束名
TABLE_NAMENOTNULLVARCHAR2(30)--约束类型
COLUMN_NAMEVARCHAR2(4000)--列名
POSITION
col用户名formata10
col约束名称formata15
col约束类型formata10
col表名formata10
col列名formata10
col约束内容formata20
selecta.OWNER用户名
a.CONSTRAINT_NAME约束名称,
a.CONSTRAINT_TYPE约束类型,
a.TABLE_NAME表名,
b.COLUMN_NAME列名,
a.SEARCH_CONDITION约束内容
fromUSER_CONSTRAINTSa,USER_CONS_COLUMNSb
wherea.CONSTRAINT_NAME=b.CONSTRAINT_NAME;
13如何查看后台进程
descv$bgprocess
名称空?
----------------------------------------------------------------
PADDRRAW(4)--进程状态对象地址
NAMEVARCHAR2(5)--后台进程名称
DESCRIPTIONVARCHAR2(64)--后台进程描述
ERRORNUMBER――后台进程运行中所遇到的错误数
colDESCRIPTIONformata40
select*fromv$bgprocess;
select*fromv$bgprocesswherepaddr<
>
'
00'
;
查看paddr中包含两个0的进程
SMON系统进程
PMON用户进程
DBWR数据库写入进程
LGWR日志写入进程
CKPT检查点进程用来减少实例恢复所需时间,init.oralog_checkpoint_interval=10000,此参数设置检查点出现的频度
ARCH归档进程将联机重做日志拷贝到磁盘或磁带,即将联机重做日志归档
RECO恢复进程用于分布式数据库中的分布式处理,init.ora中,distributed_transactions=10,此参数大于0时才被建立
SNPn快照进程数量取决于init.ora中参数job_queue_processes=4
LCKn锁进程可选项,用于并行服务器
Dnnn调度进程可选项,仅用于多线程服务器
14显示当前连接用户
showuser
15连接字符串
select列1||列2from表1;
selectconcat(列1,列2)from表1;
16查询当前日期
selectto_char(sysdate,'
yyyy-mm-dd,hh24:
mi:
ss'
)fromdual;
17用户间复制数据
copyfromuser1touser2createtable2usingselect*fromtable1;
18redologfile
我们知道Oracle里联机日志文件(Onlineredologfile)循环记录了数据库所有的事务(transaction)。
它的大小、个数和存储位置对数据库性能和恢复也是有重要影响的。
本文总结一下关于redologfile的一些内容。
18.1redologfile的简单介绍
它一般有大小相同的一组文件构成。
我们可以查看数据库视图v$logfile知道它的个数和存储位置。
SVRMGRL>
select*fromv$logfile;
查看数据库视图v$log知道它当前的状态。
select*fromv$log;
一个时间只有一组logfilegroup是工作状态(current),redologfile满了后会自动切换到下一个logfilegroup,如果数据库是归档方式同时写到归档日志文件。
这些文件不能用常规的文本编辑器查看,它以特定的格式存放,只有数据库或者专门的软件可以看懂它。
redologfile的最大数目是在创建数据库时指明的。
如果你想知道当前数据库redologfile的最大数值是多少,重新生成控制文件就可以知道。
alterdatabasebackupcontrolfiletotrace;
这条语句会在$ORACLE_BASE/admin/dbname/udump/路径下生成当前时间的一个*.trc文件,也就是数据库的控制文件,用文本编辑器,即可看到数据库创建时用的一些参数,包括redologfile的最大数(maxlogfiles)。
18.2redologfile的大小和位置对数据库性能的影响
如果用ORACLE的安装向导创建的典型数据库,它的redologfile大小为500K,这基本上是不能满足典型的OLTP应用的,在数据库日志文件(alert_orasid.log)里会记录着频繁的logswitch。
ORACLE推荐logswitch时间最好在15--30分钟之间,所以redologfile的大小由数据库DML操作数据的大小决定其最佳大小。
redologfile最好有多个存储位置,多组成员,使数据库恢复时有更多的选择。
典型的OLTP应用,redologfile大小可以为16M。
当然繁忙的数据库,例如当今的门户网站,这个值可以达到100M以上。
如果你发现当前数据库日志文件里logswitch的时间偏大或者偏小,不要紧。
ORACLE提供了在数据库联机状态来改变redologfile大小的方法。
18.3在联机状态改变redologfile大小的方法
假如原来有3个小的redologfile,下面是UNIX环境下的一个例子:
第一步:
往数据库添加三个大的redologfile
ALTERDATABASEADDLOGFILEGROUP4
('
/opt/oradata/app/redo04.log'
'
/ora_bak/oradata2/redolog/redo04.log'
)size16Mreuse;
ALTERDATABASEADDLOGFILEGROUP5
/opt/oradata/app/redo05.log'
/ora_bak/oradata2/redolog/redo05.log'
ALTERDATABASEADDLOGFILEGROUP6
/opt/oradata/app/redo06.log'
/ora_bak/oradata2/redolog/redo06.log'
第二步:
手工地做logswitch,使新建的redologfile起作用:
altersystemswitchlogfile;
此操作可以执行一到几次,使旧的redologfile成invalid状态.
第三步:
删除原来旧的redologfile.
alterdatabasedroplogfilegroup1;
alterdatabasedroplogfilegroup2;
alterdatabasedroplogfilegroup3;
18.4跟redologfile有关的其它数据库参数
1、log_buffer
log_buffer是ORACLESGA的一部分,所有DML命令修改的数据块先放在log_buffer里,如果满了或者到了check_point时候,系统通过lgwr后台进程写到redologfile里去。
它不能设得太大,这样在意外发生时会丢失很多改变过的数据。
它最好不要大于512K或者128K*CPU个数。
我们可以用下面的SQL语句检测log_buffer使用情况:
selectrbar.name,rbar.value,re.name,re.value,(rbar.value*100)/re.value||'
%'
"
radio"
fromv$sysstatrbar,v$sysstatre
whererbar.name='
redobufferallocationretries'
andre.name='
redoentries'
这个比率小于1%才好,否则增加log_buffer的大小。
2、log_checkpoint_interval
Oracle8.1版本后log_checkpoint_interval指的是两次checkpoint之间操作系统数据块的个数。
checkpoint时Oracle把内存里修改过的数据块用DBWR写到物理文件,用LGWR写到日志和控制文件。
一般UNIX操作系统的数据块为512bytes。
从性能优化来说log_checkpoint_interval=redologfilesizebytes/512bytes
3、log_checkpoint_timeout
Oracle8.1版本后log_checkpoint_timeout指的是两次checkpoint之间时间秒数。
Oracle建议不用这个参数来控制,因为事务(transaction)大小不是按时间等量分布的。
log_checkpoint_timeout=0
log_checkpoint_timeout=900
19数据库察看命令
19.1查看表空间的名称及大小
selectt.tablespace_name,round(sum(bytes/(1024*1024)),0)ts_size
fromdba_tablespacest,dba_data_filesd
wheret.tablespace_name=d.tablespace_name
groupbyt.tablespace_name;
19.2查看表空间物理文件的名称及大小
selecttablespace_name,file_id,file_name,
round(bytes/(1024*1024),0)total_space
fromdba_data_files
orderbytablespace_name;
19.3查看回滚段名称及大小
selectsegment_name,tablespace_name,r.status,
(initial_extent/1024)InitialExtent,(next_extent/1024)NextExtent,
max_extents,v.curextCurExtent
Fromdba_rollback_segsr,v$rollstatv
Wherer.segment_id=v.usn(+)
orderbysegment_name;
19.4查看控制文件
selectnamefromv$controlfile;
19.5查看日志文件
s