Oracle学习笔记.docx
- 文档编号:121292
- 上传时间:2023-04-28
- 格式:DOCX
- 页数:23
- 大小:26.71KB
Oracle学习笔记.docx
《Oracle学习笔记.docx》由会员分享,可在线阅读,更多相关《Oracle学习笔记.docx(23页珍藏版)》请在冰点文库上搜索。
Oracle学习笔记
Oracle10g学习笔记
1.数据库的启动和关闭
1.1正常情况下启停数据库和监听
启动数据库,在oracle用户下,输入sqlplus'/assysdba'进入sqlplus模式,输入startup来启动数据库,出现数据库启动完成等中或英文字样则表示启动成功;关闭数据库则输入shutdown或者shutdownimmediate(快速关闭)
启动监听:
lsnrctlstart
关闭监听:
lsnrctlstop
查看监听:
lsnrctlstatus
1.2数据库启动的三种模式
1、Startupnomount (nomount模式)启动实例不加载数据库。
Nomount模式中oracle仅为实例创建各种内存结构和服务进程,不会打开任何数据库文件,
所以说:
1) 创建新数据库
2) 重建控制文件
这2种操作都必须在这个模式下进行。
2、Startupmount(mount模式)启动实例加载数据库但不打开数据库
Mount模式中oracle只装载数据库但不打开数据库,所以说:
1)重命名数据文件
2)添加、删除和重命名重做日子文件
3)执行数据库完全恢复操作
4)改变数据库的归档模式
这4种操作都必须在这个模式下进行
3、Startup(open模式)启动实例加载并打开数据库,就是我们上面所用的命令
当然还有其它一些情况,在我们open模式下可以将数据库设置为非受限状态和受限状态
在受限状态下,只有DBA才能访问数据库,所以说:
1)执行数据导入导出
2)使用sql*loader提取外部数据
3)需要暂时拒绝普通用户访问数据库
4)进行数据库移植或者升级操作
这4种操作都必须在这个状态下进行
1.3数据库停止
如数据库业务不繁忙可以用shutdownimmediate停止数据库,如数据库业务比较繁忙时用shutdownimmediate停数据库可能要花很长时间(5分钟以上),此种情况想要块数停止数据库,可以采用以下三个步骤
1、shutdownabort强行关闭数据库(可能导致不一致);
2、startup启动数据库,确保一致
3、shutdown或shutdownimmediate关闭数据库
2、数据库的备份和恢复
2.1备份表空间数据文件
在数据库没有open的情况下,可以直接用copy命令备份整个表空间数据文件。
在open模式下,备份某个表空间数据文件需要以下步骤
1、在oracle用户下,输入sqlplus'/assysdba'进入sqlplus模式
2、输入altertablespace表空间名offline;使表空间脱机;
3、输入altertablespace表空间名renamedatafile'备份数据文件路径'to'新数据文件路径';更改表空间数据文件
4、输入altertablespace表空间名online;使表空间重新联机
2.2恢复表空间数据文件
启动数据库到mount模式下,在sqlplus模式下输入以下命令更换表空间名
1、recoverdatafile'备份的数据库文件路径'(修复数据文件)
2、ALTERDATABASERENAMEFILE'原数据文件路径'TO'备份的数据库文件路径';(改名)
3、alterdatabaseopen;(打开数据库)
3、数据库性能监控
3.1空间使用情况
1)查看表空间占用情况
SELECTtotal_d.tablespace_name,
NVL(ROUND(total_d.total_bytes/1073741824,2),0)"Total/G",
NVL(ROUND(free_d.free_bytes/1073741824,2),0)"Free/G",
(100-ROUND(NVL(free_d.free_bytes,0)/
(NVL(total_d.total_bytes,0)+0.000001),
4)*100)used_pct
FROM(SELECTtablespace_name,SUM(bytes)total_bytes
FROMsys.dba_data_filesddf
wheretablespace_name<>'UNDOTBS1'
GROUPBYddf.tablespace_name)total_d,
(SELECTtablespace_name,SUM(bytes)free_bytes
FROMsys.dba_free_spacedfs
wheretablespace_name<>'UNDOTBS1'
GROUPBYdfs.tablespace_name)free_d
WHEREfree_d.tablespace_name(+)=total_d.tablespace_name
ORDERBY4desc
2)查看表空间中表的占用情况
selectsegment_name,segment_type,sum(bytes)/1024/1024MB
fromsys.dba_segments
whereowner='PM'
andtablespace_name='GSMDATA'
groupbysegment_name,segment_type
orderby3desc;
3.2告警
1)数据库告警日志路径
/oracle/admin/OSSDB10/bdump/alert_OSSDB10.log
3.3死锁
1)检查死锁
方法一
selecta.object_name,--被锁的资源
dd.*
from(selecta.sid,
'Wait'"Status",--表明该进程锁住了某个资源,WAIT表示该进程正在等待某个资源
a.username,--ORACLE用户名
a.machine,--ORACLE机器
a.serial#,
a.last_call_et"Time",--表示该进程最后一次进行操作至当前的时间(秒)
a.program,--产生死锁的语句主要来自哪个应用程序
mand,
a.lockwait,--死锁的状态,如果有内容表示被死锁
b.id1,--锁标识。
某个LOCK状态的ID1与某个WAIT状态的ID1相同,可说明锁的正是另一个进程等待的
c.sql_text"SQL"--锁住资源的SQL语句
fromv$sessiona,v$lockb,v$sqltextc
wherea.usernameisnotnull
anda.lockwait=b.kaddr
andc.hash_value=a.sql_hash_value
union
selecta.sid,
'Lock'"Status",
a.username,
a.machine,
a.serial#,
a.last_call_et"Time",
a.program,
mand,
a.lockwait,
b.id1,
c.sql_text"SQL"
fromv$sessiona,v$lockb,v$sqltextc
whereb.id1in(selectdistincte.id1
fromv$sessiond,v$locke
whered.lockwait=e.kaddr)
anda.usernameisnotnull
anda.sid=b.sid
andb.request=0
andc.hash_value=a.sql_hash_value)ddleftjoinv$locked_objectoondd.sid=
o.session_idleftjoin
all_objectsaon
o.object_id=a.object_id
方法二
selectobject_nameas对象名称,
s.sid,s.serial#,p.spidas系统进程号
fromv$locked_objectl,dba_objectso,v$sessions,v$processp
wherel.object_id=o.object_id
andl.session_id=s.sid
ands.paddr=p.addr;
2)解除死锁
altersystemkillsession'sid,serial#';
3)查看当前连接数
selectcount(*)
fromsys.v_$processp,sys.v_$sessions
wheresid>6
andp.addr=s.paddr;
3.4查看数据库初始化文件
查看数据库启动的是spfile还是pfile,可以以管理员身份登录sqlplus执行以下语句
showparameterspfile或showparameterpfile
如出现如下显示
NAMETYPEVALUE
-----------------------------------------------------------------------------
spfilestring/oracle/product/10.2.0/db_1/db
s/spfileOSSDB10.ora
则表示为spfile
如出现如下显示
NAMETYPEVALUE
-----------------------------------------------------------------------------
spfilestring
则表示为pfile,在oracle8i上默认启动为pfile,而在oracle9i以后默认启动为spfile,spfile为二进制文件,查看参数时可以执行以下指令
showparameters--查看所有参数
showparameterxxxx--查看某个特定参数
修改spfile参数
altersystemsetlog_archive_start=falsescope=spfile;
3.5数据库内存设置
1)查看内存大小
以dba身份执行showparametersga;
SQL>showparametersga;
NAMETYPEVALUE
-----------------------------------------------------------------------------
lock_sgabooleanFALSE
pre_page_sgabooleanFALSE
sga_max_sizebiginteger1536M
sga_targetbiginteger1536M
2)内存大小设置
根据操作系统的内存大小,增加SGA的大小,SGA不能超过系统内存80%,SGA设置超过2g的话,需要确认数据库是64位的,另外操作系统的最大共享内存,需要大于数据库SGA大小,设置语句如下
altersystemsetsga_target=2048mscope=spfile;
执行完后需要重启数据库
4、用户管理
4.1创建用户
必须是管理员身份
createusershaidentifiedbyadmin
可以写Defaulttablespaceuser指定存储对象使用的默认空间表默认是system
Temporarytablespacetemp;保存临时对象所使用的空间表默认是system
上面的俩行,可以写空间表为user临时为temp;不写就默认
完整语句
createusershaidentifiedbyadmin
Defaulttablespaceuser
Temporarytablespacetemp;
4.2添加用户权限
Grant是授予权限的如:
Grantcreatesessiontosha;--授予sha连接数据的权限
系统权限如下:
系统特权
允许执行的操作
Createsession
连接数据库
Createsequence
创建序列
Createsynonym
创建同名对象
Createtable
创建表
Createanytable
创建任何模式的表
Droptable
删除表
Createprocedure
创建存储过程
Executeanyprocedure
执行任何模式的存储过程
Createuser
创建用户
Createview
创建视图
Dropuser
删除用户
Dropanytable
删除任何模式的表
4.3向用户授予系统特权
Grantexecuteanyproceduretoshawithadminoption
此句意思为为sha用户创建系统特权并且可以用sha为别的用户授予权限
连接sha用户connectsha/admin
可以创建别的用户
4.4查看用户权限
要查看某个用户的权限,需要以其用户身份登录,然后执行Select*fromuser_sys_privs;可以查看到一个列表,列代表用户名权限是否可以给别的用户附加权限(N、Y)行代表权限都有那些
4.5撤销用户授予的权限
必须以管理员用户登录,撤销权限revoke是系统撤销权限的关键词,如执行语句
Revokeexecuteanyprocedurefromsha
4.6更改用户密码
1)用户修改自己的密码
以用户身份登录connectsha/admin
执行指令Password输入旧密码输入新密码两遍完毕
或者执行指令alterusershaidentifiedbyxinmima
2)管理员修改指定用户的密码
以管理员身份登录,执行指令alterusershaidentifiedbyxinmima
4.7删除用户
必须以管理员身份登录,执行指令Dropusersha;
4.8为用户授予角色
必须是管理员身份
Grantdbatosha;--为sha用户授予dba角色
Grantconnecttosha;
创建用户并授予于角色
createusershaidentifiedbyadmin
Defaulttablespaceuser
Temporarytablespacetemp;
Granrunlimitedtablespacetosha;--权限
Grantdbatosha;--角色
Grantconnecttosha
4.9用户解锁
必须要有管理员身份
执行语句alterusershaaccountunlock;
5、表空间管理
5.1创建表空间
需要有管理员身份
CREATE TABLESPACE pasm_defaultDATAFILE '/opt/oracle/oradata/OSSDB/pasm_default.dbf' SIZE 1024M AUTOEXTEND ON EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M;
标黄部分为可选,表示表空间文件大小可自动增长,增长步长为1M,oracle的一个表空间文件最大限制为30G,所以一个表空间文件最大只能增长到30G,如还需要扩展表空间则需要添加多个表空间文件。
5.2修改表空间文件大小
alterdatabasedatafile'/export/home/oracle/oradata/nms/ultranms_default.dbf'resize1024M;
alterdatabasedatafile'/export/home/oracle/oradata/nms/ultranms_default.dbf'autoextendonnext50mmaxsize200m;
5.3添加表空间文件
alter tablespace MLOG_NORM_SPACE add datafile '/oracle/oms/oradata/mlog/Mlog_Norm_data001.dbf' size 10M autoextend on maxsize 20G;
以上语句为表空间MLOG_NORM_SPACE添加一个表空间文件路径为/oracle/oms/oradata/mlog/Mlog_Norm_data001.dbf,大小为10M,可自动增长,最大可增长为20G
alter tablespace MLOG_NORM_SPACE add datafile '/oracle/oms/oradata/mlog/Mlog_Norm_data001.dbf' size 10M autoextendoff;
以上语句与第一句类似,区别为不能自动增长。
5.4删除表空间
需要有管理员身份,删除表空间前,必须保证要删除的表空间已不被使用,再执行以下语句
droptablespaceTOMAS_PMINCLUDINGCONTENTS;
5.5表空间上线和离线
1)表空间离线
altertablespaceULTRACMDB_DEFAULToffline;
2)表空间上线
altertablespaceULTRACMDB_DEFAULTonline;
在要进行更换表空间文件的时候,需要先离线,更换后再上线。
5.6更换表空间文件(更名)
altertablespaceULTRACMDB_DEFAULTrenamedatafile'/export/home/oracle/oradata/nms/ultracmdb_default.dbf'to'/export/home/oracle/oradata/nms/ultracmdb_default_n.dbf';
6、归档模式
6.1查看归档模式
在sqlplus下以管理源身份执行archiveloglist;
未开归档模式如下显示
SQL>archiveloglist;
DatabaselogmodeNoArchiveMode
AutomaticarchivalDisabled
ArchivedestinationUSE_DB_RECOVERY_FILE_DEST
Oldestonlinelogsequence11137
Currentlogsequence11139
开归档模式如下显示
SQL>archiveloglist;
DatabaselogmodeArchiveMode
AutomaticarchivalEnabled
Archivedestination/backup/archivelog
Oldestonlinelogsequence11137
Currentlogsequence11139
6.2数据库日志模式的设置
在创建数据库时,可以在CREATEDATABASE语句中指定数据库的日志模式。
假如没有指明,则缺省为NOARCHIVELOG模式。
由于如果在创建数据库时指明是ArchiveMode的话,会增加约20%的创建时间,而在以后启动INSTANCE时再设置的话,一般只用去几秒的时间,所以一般在创建数据库时是不设置为ARCHIVEMODE的。
将数据库的日志模式设置切换(ArchiveMode和NoArchiveMode之间的切换)的步骤和操作如下:
1.关闭运行的数据库实例
SQL>shutdown
在进行日志模式切换之前,必须将运行的数据库正常关闭。
2.备份数据库
该备份跟以后产生的日志一起用于将来的灾难恢复(很重要,如要改为归档日志模式,没有这个数据库备份,仅有日志文件是无法从该时间点恢复的)。
3.启动数据库实例到mount状态,但不要打开。
SQL>startupmount
4.切换数据库日志模式。
SQL>alterdatabasearchivelog;(设置数据库为归档日志模式)或
SQL>alterdatabasenoarchivelog;(设置数据库为非归档日志模式)
5.打开数据库
SQL>alterdatabaseopen;
6.确认数据库现在处于归档日志模式。
SQL>archiveloglist;
DatabaselogmodeArchiveMode
AutomaticarchivalEnabled
Archivedestinationforexample:
$ORACLE_HOME/dbs/arch
Oldeston-linelogsequence275
Nextlogsequence277
Currentlogsequence278
7.将这个时间点的redologs归档
SQL>archivelogall;
6.3自动归档模式设置(Automaticarchival,可为Enabled和Disabled)
在该模式下,数据库启动一个arch进程,专门负责将redologs写到系统归档设备的相应目录下。
在数据库的参数文件中设置参数(一般是在$ORACLE_HOME/dbs/init*.ora文件中):
LOG_ARCHIVE_START=
LOG_ARCHIVE_DEST=
LOG_ARCHIVE_FORMAT=
LOG_ARCHIVE_START:
如要求自动归档的话,则设为TRUE,如要求为非自动归档的话,则设为FALSE
LOG_ARCHIVE_DEST:
该参数设定了archivelogs归档存放的路径
LOG_ARCHIVE_FORMAT:
该参数设定了archivelogs的命名格式。
例如,如将格式设为:
arch%s.arc
log文件将为:
arch1.arc,arch2.arc,arch3.arc
这几个参数设置只有在数据库实例启动前设置才能生效,如果在数据库运行中进行设置,要使其生效,必须重起数据库。
如果数据库正在运
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Oracle 学习 笔记