oracle9I学习笔记
- 格式:docx
- 大小:1.99 MB
- 文档页数:31
第2讲Oracle9i数据库的基本对象目的:1.掌握Oracle9i的基本对象2.掌握Oracle9i的数据类型:3.Oracle9i数据库的概念:数据库,例程,方案,表空间,表,视图等4.基本SQL的类型:DML, DDL, DCL,授课内容:[] Oracle9i的逻辑结构(基本的对象)2.1.1 数据库(Database)2.1.2 表空间(Table space)2.1.3 方案(Schema):2.1.4 用户(User)2.1.5 角色(Role)2.1.6 表(Table): 表由字段和记录组成2.1.7 视图(View):虚拟表2.1.8 索引(Index)2.1.9 序列(Sequence)2.1.10 约束(Constraint)2.1.11 存储过程(Store Procedure)2.1.12 函数(Function)2.1.13 包(Package)2.1.14 触发器(Trigger)图Oracle 数据库,表控件,和数据文件的关系图图Oracle数据库中,表空间,表,索引对象的关系(物理的和逻辑的[] 逻辑对象-[] Oracle SQL的基本组成元素1.Data Type 数据类型2.Literal 字符集3.Format Model 格式模式4.Nulls 空值ments 注释6.Database Objects 数据库对象7.Schema object name and qualifiers 模式对象名称和限定8.[] Oracle Data TypeBuiltin datatype 内置数据类型ANSI Supported data type ANSI支持的数据类型User-defined data type 用户自定义的数据类型Oracle Supplied Datatype Oracle提供的数据类型[] Oracle9i内置数据类型1.Character datatype2.Number datatype3.long and raw datatype4.Datetime datatyperge object datatype6.ROWID datatype[] Oracle的内置数据类型-字符类型(Character datatype)[] Oracle内置数据类型-数值类型(NUMBER DATATYPE)[] Oracle 内置数据类型- 日期类型(Datetime datatype)[] Oracle内置数据类型–加长和二进制类型(long and raw datatype)[] Oracle内置数据类型–大对象数据类型(large object datatype)[] Oracle内置数据类型–行编号数据类型(ROWID datatype)[] ANSI supported Datatype (ANSI支持的数据类型)[] Oracle额外提供的数据类型– Oracle Supplied datatype[] Oracle内置数据类型的规格说明Datatype Specification Oracle内置据类型的技术参数[] Oracle Date Formatthe standard Oracle default date format is DD-MON-RR. For example:'13-NOV-1992'TO_DATE ('November 13, 1992', 'MONTH DD, YYYY')使用NLS_DATE_FORMAT 修改日期的格式alter session set NLS_DATE_FORMAT='YYYY-MM-DD'[] Oracle9i SQL的分类操纵Oracle9i数据库的语言是SQL.可以直接对数据库的编程语言是PL/SQL.操作数据库的对象和对象中的数据可以使用SQL或相关的工具。
一:第一讲1:Oracle server:管理系统管理信息包含oracle instance +oracle database2:oracle instance:实例:访问oracle database的中介一个instance只能访问对应一个database 多个instance可以对应一个databaseInstance包含了memory and peocess (内存和进程)3:connection 连接:oracle客户端(user peocess)和后台服务器进程(server peocess)建立的tcp链接Peocess:包含了server peocess user peocess background processes 后台进程4:session会话:与连接相对应5:oracle database:包含data files(以dbf结尾的)数据文件control files(以ctl结尾的)控制文件redolog files(以log结尾的)重做日志文件(用于恢复数据文件记录数据文件的变化)parameter file参数文件archived log files 归档文件(与redolog files文件相关)password file 存储口令6:linux ora9i启动Sqlplus /nologConn /as sysdbaStartup!(切换到linux shell)7:memory structure (内存结构):包含了SGA(system global area 系统全局区)+PGA(program global area)一个oracle instance(实例)只有一个SGA (主要消耗内存的地方)实现方式为共享内存一个server process 对应一个PGA(一个后台进程对应一个PGA)第二讲:内存结构1:SGA:包含share pool (关系数据库性能)+database buffer cache +redo log buffer(ps –ef |grep oracle)查看SGA :show sgaSGA_MAX_SIZE :SGA最大尺寸基本单位叫granules 4M(<128)/16M(>128)查看granules大小select component, granule_size from v$sga_dynamic_components;2:shared pool 共享池(解析好的SQL语句)包含library cache+data dictionary cache更改shared pool尺寸alter system set shared_pool_size=64M3:library cache(存储经过编译解析过的sql语句)4:data dictopmary cache(存储数据库控制信息)数据字典5:database bugger cache 访问数据时首先查询database bugger cache里有没有没有database bugger cache会向硬盘索要在返回给用户Database bugger cache包含了db_cache_size +b_keep_cache+size +b_recycle_cache_size 可以通过alter system set db_cache_size=96M 调整尺寸6:redo log buffer 对应的是redo log files7:large pool:处理额外工作8:java pool9:PGA第三讲:进程结构1:process structure 包含了user process +server process+ background processes2:user process 客户端进程3:windows下通过sqlplus 连接oraCmdCd\Sqlplus system(用户名)/oracle(口令)@oeacle9ivm(数据库)4:server process 与客户端进程对应的5:background process 包含了6:DBWn(0-9,a-g) :database writer(将sga中的database buffer cache的内容写入datafeiles) 7: log writer (将sga 中的redo log buffer 的内容写入redo log files)8: system monitor 系统管理器清理未释放的SGA内容9:process monitor 监控其他服务正常运作10:checkpoint11: archiver12:oracle logical structure :ora逻辑结构一个ora ser上只有一个ora database一个database可以有多个tablespace(表空间)组成一个tablespace 可以有多个segment组成一个segment可以有多个extent组成一个extent是有连续的blocks(一个8k)组成13:ora处理sql语句的过程连接—安全检查—解析---绑定变量---执行—返回值第五讲:oracle ser入门:1:DBA工具2:oracle universal installer:安装升级删除软件java编写的./runinstaller (安装程序linux下) 图形界面下运行安装可以在字符不要以root用户安装3:oracle DBCA :ora数据库配置助手(需要在图形界面运行)4:自动创建账户SYS(超级用户)+ SYSTEM(仅次于sys)SYS默认口令为change_on_install (可以创建数据库)SYSTEM口令为manager5:SQL*Plus 与数据库交换关闭启动数据库启动sql plusSqlpkus /nologConn / as sysdbaStartup6:oracle enterprise manager 管理很多个企业级数据库的工具第六讲:管理一个ora实例1:initialization parameter files 初始化参数文件:Spfiledb01.ora (启动时读取的初始化文件定义了ora instance的相关参数)2:启动ora以ora用户登录到linuxSqlplus /nolongConn / as sysdba(以sysdba身份登录)Startup (读参数文件按照参数文件规定启动)!(切换到linux shell)3:desc v$parameter (ora视图参数)Select name, value from v$parameter where name=’pga_aggregate_target’;查看pga_参数值或者使用show parameter pga_(省略写法ora会自动匹配)4:参数文件分为pfile +spfile位置linux位于$oracle_home(ora安装目录)/dbsWindows位于位于$oracle_home(ora安装目录)/databaseInit.ora示例文件(可以基于此文件改动ora)5:参数文件命名管理initSID.oraEnv |grep ORACLE 查看ORACLE SID=?加入ORACLE_SID=Wilson则参数文件为initwilson.ora(前体是使用的是Pfile 如果使用的是spfile则参数文件为spfilewilson.ora)第七讲:参数文件pfile和spfile的区别数据库在运行期间所修改的参数只能保存在内存中间不能保存在pfile里只有把database关闭后修改;spflie(2进制文件)则不同修改后直接保存在spfile里1:怎么创建一个PFILE(参数文件)拷贝系统初始的init.ora到数据库安装目录下的/dbs/initSID.ora(拷贝并重命名)不推荐使用init.ora版本太老可以考别人的配置自己改编辑initSID.ora 需要修改的DBname=SID+db_block_size=8192Control_file= (‘控制文件1位置’,‘控制文件2位置’)关闭数据库shutdown abort;2:SPFILE---spfileSID.ora(2进制文件不能用VI等编辑只能使用ora命令编辑) 怎么创建一个spfile?通过一个pfile创建一个spfile (created spfile from pfile)Created spfile =’所要创建的spfile位置以及名称’fom pfile = ‘pfile所在位置’;怎么查看spfile内容?Strings spfileSID.ora | more (strings是提取一个二进制文件里可打印的字符出来)第八讲:1:修改Spfile里面的内容Alter system set parameter=value <comment=’text’><scope=memory|spfile|both> <sid=’sid|*’> :设置parameter=valueSid=’sid|*’:代表所修改的参数是针对哪个SID的如果是*则代表针对所有Scope=memory|spfile|both :代表修改范围内存里|磁盘文件|2个都改不写则代表bothComment=’text’:代表对这个值作注释Deferred :代表下次有效Alter system restet parameter sid=’*|sid’;:将parameter重置为ora缺省值2:show parameter [] :查看某个参数在内存中的值第九讲:ora的启动和关闭关闭数据库:shutdown immediate1:ora启动的时候查找的参数文件顺序SpfileDIS.ora ----default SPFILE[spfile.ora]------initSID.ora-----default Pfile2:如果在启动中项优先使用pfile即initSID.ora 则使用Startup pfile = $oracle_home/dbs/initSID.ora startup 后面只能使用pfile3: 如果想使用非缺省的spflie启动呢?则可以在$ORACLE_HOME/dbs/ 建立一个pfile如abc.ora 然后在文件中写入Spfile=非缺省的spfile.ora的位置4:who can startup DB? System administrator+ sys+sysoper+ system+ sysdba5:启动数据库的阶段Showdown----ora未启动只是一堆磁盘文件Startup nomount后Nomount-----根据pfile/spfile找到control_files根据CONTROL_FILES 挂载db 将DB于instance 建立连接Mount----- :alter database mountCONTROL_FILES 中指定的文件查找初始文件重做日志文件如果没有则会报错Open ------ :alter database openAlter database xx open read only 把一个数据从open状态变为只读第十讲:create user USERNAME identified by PASSWORD;创建一个用户Grant connect, resource to boobke;授予连接权限1:STARTUP相关参数Force 强制启动Restricted 将数据库启动为只有某些有特权的用户可以连接此数据库这个状态用来管理员维护数据库Alter system enable restricted session;将数据从open转换到上面的状态2:将用户踢出数据库首先查询目前连接数据库的用户select sid, serial#, username from v$session;踢出用户alter system kill session ’SID,SERIAL#’Startup mountalter database open read only:将数据库启动为只读模式3:关闭数据库的阶段Close a database 将SGA中的数据写到磁盘文件中,将连接的数据文件redo log file文件关闭,control files文件依然打开Umount a database 关闭控制文件instance 依然存在Shut down an instance 释放内存杀掉进程4: Shutdown 参数A=abort 关闭所有I = immediate 推荐T =transactional(等用户commit; (提交)时才关闭N= noramal (使用shurdown noramal时只有当用户的会话或者链接断开时数据库才会关闭)第11讲:创建表create table tablename(id integer, name char(20));Insert into tablename values(0, ‘wilson’); 插入内容Commit; 提交1:diagnostic files 诊断文件包含后台一些重大事件的信息帮助DBA日常管理2:诊断文件分为Alert文件和trace文件Alert文件名为alertSID.log filesTrace文件分为background trace files和user trace filesBackground trace files文件名为SID_processname_PID.trcUser trace files文件名为SID_ora_trc不同平台不同版本还有些许差别3:alertSID.log:记录了所有操作重大事件结果每个事件都有时间戳位置有参数BACKGROUND_DUMP_DEST决定可以通过show parameter dump查看此参数参数后面会表明此log file位置可以通过此日志中的相关参数来构造pfile文件[pfile文件丢失后4.Background trace file :后台进程日志文件记录后台错误进程[只有遇到后台错误才写日志]此文件的位置由参数BACKGROUND_DUMP_DEST决定5:user trace files:一个用户连接后台ora进程如果此连接出现错误则写入此文件位置由USER_DUMP_DEST 决定大小由MAX_DUMP_FILE_SIZE6:用户会话中除了出现错误记录外还可以设置任何操作都记录(查询错误的时候开启一般关闭)在session level设置ALTER SESSION SET SQL_TRACE = TRUE (建议)直接在用户会话端设置在instance level设置SQL_TRACE = TRUR第12讲:1:利用alertSID.log文件内的参数信息创建一个spfile/pfileAlert-SID.log 文件的结尾一段记录了与pfile相同的参数如果pfile文件丢失,则可以复制其中的内容建立一个pfile文件注意其中的字符串必须加引号2:taif –f 查看文件新增内容3:将数据库置于只读状态Shutdown immediateStartup mount;Alter database open read only;4:使用HR用户密码HR插入内容(HR用户创建数据库的时候会生成但是出于锁定状态)解锁HR用户Ora所有用户都位于表dba_users内可以使用desc dba_users;来查看使用select username,account_status from dba_users; 来查看用户状态使用alter user hr account unlock;来解锁这个用户使用alter user hr identified by hr;将hr置于open状态(可连接数据库状态)Sqlplus hr/hrInsert into regions values(5. ‘Mars’)第四章:创建database第13讲:1:创建数据库之前需要考虑的因素数据库的目的数据库大致分为LTP连接事务处理OLIP数据仓库文件、数据的布局数据库名2:创建数据库/迁移/升级3:OFA:oracle推荐的布局规则建立统一的目录结构,把不同的对象放在不同的表空间内,将不同的文件放在不同的磁盘块上4:目录规范5:正式创建一个数据库拥有一个账户操作系统的或者ora的拥有足够的内存和磁盘空间来启动oraOracle 用户口令文件等存在$oracle_home/dbs/orapwSID内Ora的登陆认证方式第14讲:如果要让远端的客户端连接进ora 必须在ora服务器上使用lsnrctl start命令1:ora psswd管理软件orapwdOracle口令文件默认存放于$oracle_home/dbs/orapwSID内可以使用:来创建一个口令文件,(其中password=admin:意思是SYS用户的密码为admin)创建完口令文件后还需要在初始化配置文件中加入:REMOTE_LOGIN_PASSWORDFILE=’EXCLUSIVE’ (pfile/spfile)在口令文件中加入用户也可以赋权:grant sysdba to username;2:创建数据库1:使用DBCA创建2:使用命令手动创建A:使用DBCA创建数据看1:修改完前期配置文件后dbca(可以选择使用不同的账户来创建不同的数据库,或者使用不同的用户SID来创建不同的数据库,EXPORT ORACLE_SID=XX)选择数据库模板数据名和用户的SID相同env | grep username参数信息可以通过ALL Initial修改各个文件的路径可以通过password managerment设置其他用户并开启状态第15讲:B:手工创建数据库.选定一个名字.选择字符集.设置环境变量.创建初始化参数文件pfile.将数据库实例instance启动到nomount状态.执行create database.在数据库中加入数据字典包等.增加额外的tabalespacesC:1:SID2:设置环境变量3:确定DBA的认证方式4:创建pfile5:(windows)创建instanse6:连接至instance7:create a server parameter file8:start the instance9: issue the crtate database statement10: create additional tablespaces11:run scripts to build data dictionary views12:run scripts to install additional options(optional) 13:back up the database14:(optional) enable automatic instance startupD:使用手工方式创建简单数据库1:设置环境变量2:创建初始化文件Vi pfile3:连接至instanceSqlplus /nologConn /as sysdba4:利用pfile 至spfile 【可选】Create spfile from pfileSpfile生效必须重启5:start the instanceStartup nomount6:create database databasename;第16讲:上图替换wilson为bbk 替换*. 为无‘.’为特殊字符需要用‘\’转换手动创建数据库1:创建初始化参数文件spfileSID.ora通过拷贝已有的数据库初始化参数文件spfile 来生成一个pfile文件然后通过更改pfile文件来Strings spfileSID.ora > initSID.oraVi initSID.ora替换原有文件的实例名去掉文档中的’*.’2:根据初始化参数文件中的内容创建需要的目录使用oracle用户1:$ORACLE_HOME/oradata/实例名2:$ORACLE_HOME/oradata/实例名/archive3:$ORACLE_HOME/admin/实例名4:$ORACLE_HOME/admin/实例名/bdump5:$ORACLE_HOME/admin/实例名/cdump6:$ORACLE_HOME/admin/实例名/create7:$ORACLE_HOME/admin/实例名/pfile8:$ORACLE_HOME/admin/实例名/udump9:$ORACLE_HOME/dbs/orapwSID (orapwd file=orapwSID password=PASSWDentries=用户数)3:准备create database 命令文件创建一个.sql结尾的语句命令文件加入如下关于数据库具体配置参数设置的命令(其中相关参数要与初始化参数配置文件中的对应如UNDO TABLESPACE “UNDOTAS1”则spfile中的undo_tablespace=’UNDOTBS1’)4:设置环境变量(可以事先创建以.env结尾的文件,加入如下内容设置环境变量时使用命令‘. ./xxx.env’即可)5:sqlplus /nologConn /as sysdbaCreate spfile from pfile(从步骤2中的pfile生成spfile文件)Startup nomount; (启动数据库实例)@$ORACLE_HOME/dbs/xx.sql ;(执行4步骤中所建立的create database 命令文件):创建系统表空间创建中可以tail –f alert_SID.log文件查看过程及错误(admin/实例名/bdump)如果在创建过程出现错误则必须删除3中几个文件夹下的生成的内容6:创建用户表空间(可选项建议执行)7:创建数据字典执行下列语句每执行一个sql语句前前键入spool log1.log 将执行过程记录在log1.log文件内;第五章:数据字典data dictionary 动态性能表dynamic performance views第18讲:1:data dictionary:oracle database核心组件、数据库对象只读方式存储在system tablespace 文件内由SYS所有数据库自己修改2:DD表分为base table基表(由命令sql.bsq)+data dictionary views(基于基表创建的视图表由命令catalog.sql语句创建的)3:数据字典提供的信息存储了数据的物理结构和逻辑结构每个对象的定义和空间分配情况数据完整性的约束用户信息角色信息特权信息审计信息4:数据字典的用处第19讲:dynamic performance tables第6章:了解掌握控制文件的用处内容(控制文件的入门)第20讲:Control Files2进制文件、定义了数据库当前的物理状态,保证数据库完整性,一个控制文件对应一个数据库一个数据库对应多个数据文件、丢失控制文件可以恢复大小主要有create database命令决定1:startup nomount:状态数据库所作的的查找spfileSID.oraSGA启动进程打开alertSID.log +trace file2:mount:从1:中读取的参数文件中所指定的contorl file文件位置找到contorl file 并读取到内存中3:openOpen data filesOpen redo log files4:control file文件内容entries数据库名字和数据库ID数据库创建的时间戳表空间以及名字记录的数据文件和连接文件的位置信息连机日志的顺序序号检查点信息Redo log archive informationBackup information5:控制文件应该对应2个以上并且放在不同的磁盘上第21讲:1:怎么实现增加控制文件.连接至数据库conn /as sysdba.查看control file文件信息show parameter control.执行增加语句的命令alter system set control_file=’CONTROL01 FILE位置’ , ’CONTROL02 FILE位置’scope=spfile;.关闭数据库shutdown immediate.退出ora 复制已有的control file文件至指定的新位置.strings sfpfileSID.ora | more 查看是否修改.启动数据库查看control file文件show parameter control2:管理control file第七章:maintaining online redo log files 维护联机重做日志第22讲:redo log file1:redo log file 特点主要用来备份恢复数据库记录数据库的所以操作提供了一种恢复机制至少有2组联机重做日志文件,分别属于2个组2:online redo log file groupMember 成员3:LGER:负责写联机重做日志的进程4:多路复用:为了确保联机日志文件不被损坏避免单点故障。