580 likes | 1.12k Views
Oracle for Tiptop 系统培训教程. 谢穗安 (易拓服务中心) xiesa@digitalchina.com. 神州数码管理系统有限公司 Digital China Management Systems Limited. Oracle 体系及架构 Oracle 内存 及 进程 Oracle 数据储存 Oracle 数据库启动和关闭 Oracle 表空间管理 Oracle 用户管理 Oracle 数据库备份和恢复 Oracle 警告日志和工具. 内容纲要. Instance. SGA. Shared pool.
E N D
Oracle for Tiptop系统培训教程 谢穗安 (易拓服务中心) xiesa@digitalchina.com 神州数码管理系统有限公司 Digital China Management Systems Limited
Oracle 体系及架构 Oracle 内存及进程 Oracle 数据储存 Oracle 数据库启动和关闭 Oracle 表空间管理 Oracle 用户管理 Oracle 数据库备份和恢复 Oracle 警告日志和工具 内容纲要
Instance SGA Shared pool Librarycache Server process User process Databasebuffer cache Redo logbuffer cache Data Dict.cache pmon smon dbwr lgwr chpt others PGA Archivedlog files Parameterfile Passwordfile Controlfiles Datafiles Redo logfiles Database Oracle 体系及架构 (1)
实例 – Instance 用来访问数据库文件集的存储结构及后台进程的集合; 实例为存取和控制一数据库的软件机制; 每一次在数据库服务器上启动一数据库时,称为系统全局区(System Global Area)的一内存区(简称SGA)被分配,有一个或多个Oracle进程被启动,该SGA和Oracle进程的结合称为一个Oracle数据库实例; 一个实例的SGA和进程为管理数据库数据而工作,为该数据库一个或多个用户服务而工作; 在Oracle系统中,首先是实例启动,然后由实例装配(Mount)数据库,最后才打开数据库。单个数据库可被多个实例装配,即多个实例共享同一物理数据库。 Oracle 体系及架构 (2)
实例与数据库文件之间的关系 实例1 实例2 实例 N SGA + 进程 SGA + 进程 SGA + 进程 Oracle 体系及架构 (3) 数据库文件 (Data Files)
模式和模式对象 一个数据库可以有多个用户; 每个用户都拥有一个模式(Schema); 每个用户模式是表和索引等数据库逻辑对象的集合; 创建了一个用户后,则该用户自动对应了一个模式,用户登录后,可以操作自己模式下的对象,但不可以操作其他用户模式下的对象,除非为该用户授权; Oracle数据库中的表是基于用户的,每个用户可以有名称相同的表而互不干扰。 Oracle 体系及架构 (4)
图解数据库、用户、模式、数据库对象的关系 system sys ds ds1 ds2 sysdba sysoper v$sgav$datafile ds1.gen_file … ds.gen_file … ds2.gen_file … ds1 ds ds2 db user schema object Oracle 体系及架构 (5)
Oracle 内存结构 SGA 系统全局区包括数据库缓冲存储区、字典缓存区、日志缓冲区和共享池等 软件代码区 PGA 程序全局区为单个用户进程分配的专用内存区域,私有的用户进程,不能共享;包括栈区和数据区 排序区 Oracle 内存及进程 (1)
Oracle 进程结构 系统为了使性能最好和协调多个用户,在多进程系统中使用一些附加进程,称为后台进程。每个后台进程与Oracle数据库的不同部分交互。 Oracle 后台进程的名字: ora_XXXX_YYYY XXXX 为进程的功能名称(我们把它理解成进程名称) YYYY 为数据库实例名称 如 ora_smon_topprod # ps –ef | grep ora_ Oracle 内存及进程 (2)
Oracle 进程结构 (续) 系统监控进程 (smon)数据库系统启动时执行恢复性工作,对有故障数据库进行修复 进程监控进程 (pmon)用于恢复失败的用户进程 数据库写入进程 (dbwr)将修改后的数据块内容写回数据库 日志写入进程 (lgwr)将内存中的日志内容写入日志文件 归档进程 (arch)日志归档(当数据库服务器以归档方式运行时) Oracle 内存及进程 (3)
Oracle 进程结构 (续) 检查点进程 (ckpt)标识检查(check point),用户减少数据库恢复所需的时间 恢复进程 (redo)用户分布式数据中的失败处理 锁进程 (lckn)在并行服务器模式下,保持数据的一致性 Oracle 内存及进程 (4)
物理结构 每一个 Oracle 数据库是由几种主要类型的物理文件组成: 数据文件 (Data File)用于存放所有的数据,扩展名为 .dbfSQL> select name from v$datafile; 重做日志文件 (Redo Log File)记录了对数据库进行的所有操作,扩展名为 .log 控制文件 (Control File)记录了数据库所有文件的控制信息,扩展名为 .ctl 除数据库实体文件以外,还有: 参数文件 (Parameter File) 备份文件 (Backup) 警告和跟踪日志 Oracle 数据存储 (1)
逻辑结构 数据库逻辑结构包含表空间(table space)、段(segment)、范围(extent)、数据块(block)。 一个数据库在逻辑上是由一个或多个表空间组成的。 一个表空间是由段所组成的。 一个段是由范围组成的。 一个范围是由一组连续的数据块组成的。 一个数据块对应于磁盘上的一个或多个物理的块。是数据库使用的 I/O 的最小单位, 数据块大小应该是操作系统块大小的倍数 Oracle 数据存储 (2)
Oracle 数据存储 (3) 数据库 Oracle数据库 表空间 表空间 表空间 表空间 逻辑对象 表 索引 视图 段 索引段 回滚段 临时段 数据段 数据段 范围 范围 范围 数据块 数据块 数据块
表空间 一个数据库划分为一个或多个逻辑单位,该逻辑单位称为表空间(TableSpace)。一个表空间可将相关的逻辑结构组合在一起。 System TableSpace Data TableSpace DataFile-1 DataFile-2 DataFile-3 DataFile-4 Disk 1 Disk 2 Oracle 数据存储 (3)
数据库启动顺序:启动实例 装配数据库 打开数据库 数据库关闭顺序:关闭数据库 卸下数据库 停止实例 Oracle 数据库启动和关闭 (1)
数据库启动命令: 运行 SQL*Plus 工具# sqlplus /nolog-启动SQL*Plus,不提供Oracle认证,连接到空闲实例# sqlplus oracle_username/password-启动 SQL*Plus,使用 Oracle 帐户认证 一次完成(连接实例、装载数据库、打开数据库)# sqlplus /nologSQL> connect userid/passwd as sysdba 或SQL> connect / as sysdbaSQL> startupSQL> show sga Oracle 数据库启动和关闭 (2)
数据库启动命令(续): 连接到实例,或更换用户和模式SQL> connectSQL> connect ds/dsSQL> connect / as sysdba 启动实例,但不装载数据库SQL> startup nomount 装载数据库,但不打开数据库SQL> startup mount Oracle 数据库启动和关闭 (3)
数据库启动命令(续) SQL> startup restrict启动实例、装载数据库、打开数据库,但限制访问数据库,仅允许具有create session和restricted session 两个系统权限的用户访问,常用于数据库排他的导入导出;SQL> startup force强制启动实例,当不能关闭当前实例和启动实例时遇到问题时使用;SQL> startup open recover启动例程、装载数据库并启动整个介质恢复SQL>startup db_name PFILE=init.ora启动指定数据库名和参数文件 Oracle 数据库启动和关闭 (4)
数据库关闭命令: SQL> shutdown immediate;立即关闭数据库,此命令发出后,不允许新的连接和事务启动,回滚未提交的事务,不等待当前用户与数据库断开连接,Oracle隐式地回滚活动的事务并且断开所有的连接用户。下次启动时不需任何实例恢复过程。 SQL> shutdown;或SQL> shutdown normal;正常关闭数据库,此命令发出后,不允许重新连接,并且在数据库被关闭前,Oracle等所有的当前被连接的用户从数据库断开。数据库下次启动时不需任何实例恢复过程。 Oracle 数据库启动和关闭 (5)
数据库关闭命令(续): SQL> shutdown transactional;事务性关闭数据库,此命令发出后,不允许新的连接和事务启动,等待事务完成提交后才断开用户的连接。下次启动时不需任何实例恢复过程。 SQL> shutdown abort;强制关闭数据库,此命令发出后,不允许新的连接和事务启动,当前Oracle处理的SQL语句被立即终止,回滚未提交的事务。Oracle隐式地回滚活动的事务并且断开所有的连接用户。下次启动时要求实例恢复过程。 Oracle 数据库启动和关闭 (6)
Oracle 网络监听服务 - Listener 启动监听服务lsnrctl start 停止监听服务lsnrctl stop 查看监听服务状态lsnrctl status Oracle 数据库启动和关闭 (7)
SQL> alter database open; -打开关闭的数据库 SQL> alter database open read only; -以只读模式打开数据库 SQL> alter database open read write; -以读写模式打开数据库 SQL> alter database mount; -以独占模式装载数据库但不打开 SQL> alter system disable restricted session; -取消对打开数据库限制访问控制 数据库的可用性(1)
SQL> alter system enable restricted session; -对打开数据库限制其的访问 SQL> alter system suspend;-挂起数据库 SQL> alter system resume;-恢复挂起的数据库 SQL> select database_status fromv$instance;-查看数据库状态 数据库的可用性(2)
显示当前使用服务器参数文件名SQL> show parameters spfile; 创建服务器参数文件SQL> create spfile='/tmp/spfile_test.ora' from pfile='/u1/oracle/dbs/init.ora';SQL> create spfile from pfile='/u1/oracle/dbs/init.ora';没有指定SPFILE名字,默认为spfile$ORACLE_SID.ora 导出服务器参数文件SQL> create pfile='/u1/oracle/dbs/init.ora' from spfile='/u1/oracle/dbs/spfile_test.ora';SQL> create pfile='/tmp/init.ora' from spfile; 服务器参数文件
系统表空间 (SYSTEM) 临时表空间 (TEMP) 工具表空间 (TOOLS) 用户表空间 (USERS) 数据及索引表空间 撤消表空间 Oracle 表空间管理 (1)
建立表空间 CREATETABLESPACEtablespacename DATAFILE ‘filename’ [autoexetend_clause][,...] [ MININUM EXTENT integer K/M | BLOCKSIZE integer K | { LOGGING | NOLOGGING } | DEFAULT storage_clause | { ONLINE | OFFLINE } | { PERMANENT | TEMPORARY } | extent_management_clause | segment_management_clause ]; Oracle 表空间管理 (2)
创建表空间范例 SQL> CREATE TABLESPACE dbs1 DATAFILE ‘/u1/oradb/oradata/dbs1-01.dbf’ SIZE 500M; SQL> CREATE TABLESPACE temptabs DATAFILE ‘/u1/oradb/oradata/temptabs.dbf’ SIZE 100M AUTOEXTEND ON NEXT 10M; SQL> CREATE UNDO TABLESPACE undotbs2 DATAFILE ‘/u1/oradb/oradata/undotbs21.dbf’ SIZE 50M; SQL> CREATE TEMPORARY TABLESPACE temp2 TEMPFILE ‘/u2/oradb/oradata/temp21.dbf’ SIZE 200M; Oracle 表空间管理 (3)
修改表空间 ALTER TABLESPACE tablespacename { datafile_tempfile_clauses | DEFAULT storage_clauses | MINIMU EXTENT integer [K|M] | ONLINE | OFFLINE [ NORMAL | TEMPORARY | IMMEDIATE | FOR RECOVER ] | { BEGIN | END } BACKUP | READ { ONLY | WRITE } | PERMANENT | TEMPORARY | COALESCE [ LOGGING | NOLOGGING ] }; Oracle 表空间管理 (4)
修改表空间范例 SQL> ALTER TABLESPACE temp ADD TEMPFILE ‘/u2/oradb/oradata/temp02.dbf’ size 2000M reuse autoextend on next 10M MAXSIZE 5000M; SQL> ALTER TABLESPACE undotbs1 ADD DATAFILE ‘/u2/oradb/oradata/undotbs02.dbf’ size 2000M reuse autoextend on next 10M MAXSIZE 5000M; SQL> ALTER TABLESPACE dbs1 ADD DATAFILE ‘/u1/oradb/oradata/dbs1-02.dbf’ SIZE 2000M; Oracle 表空间管理 (5)
删除表空间 DROP TABLESPACE tablespacename [ INCLUDING CONTENTS [ AND DATAFILES ] [ CASCADE CONSTRAINTS ] ] INCLUDING CONTENTS 删除包含有任何数据库对象的表空间时,必须指定该子句,其作用是删除表空间的全部内容。 AND DATAFILES 删除表空间时同时删除其数据文件 CASCADE CONSTRAINTS 删除其他表空间中的表的引用完整性约束,这些约束是对删除的表空间的表的主关键字或唯一关键字的引用。 Oracle 表空间管理 (6)
创建用户 CREATE USER user IDENTIFIED { BY password } | { EXTERNALLY } | { GLOBALLY AS ‘external_name’ } { [ DEFAULT TABLESPACE tablespace ] | [ TEMPORARY TABLESPACE tablespace ] | [{QUOTA [integer [K|M]] | [UNLIMITED] ON tablespace}] | PROFILE profile | PASSWORD EXPIRE | ACCOUNT LOCK | UNLOCK } Oracle 用户管理 (1)
创建用户(续) IDENTIFIED -指定如何验证用户 BY password-登录口令 DEFAULT TABLESPACE -指定用户建立对象缺省表空间, 默认为 SYSTEM 表空间 TEMPORARY TABLESPACE -指定用户建立对象的临时表空间, 默认为 SYSTEM 表空间 QUOTA -允许用户分配表空间的空间, 默认为UNLIMITED PROFILE -分配给用户的资源文件,默认分配DEFAULT这个资源给用户 PASSWORD EXPIRE -要求用户口令立即期满,强制用户 在首次登录到数据库时更改口令 ACCOUNT LOCK | UNLOCK -锁住或不锁住用户的账号 Oracle 用户管理 (2)
创建用户(续) SQL> create user ds1 identified by ds1 default tablespace dbs1 temporary tablespace temp; Oracle 用户管理 (3)
修改用户 ALTER USER user IDENTIFIED { BY password } | { EXTERNALLY } | { GLOBALLY AS ‘external_name’ } { [DEFAULT TABLESPACE tablespace] | [TEMPORARY TABLESPACE tablespace] | [{QUOTA [integer [K|M]] | [UNLIMITED] ON tablespace }] | PROFILE profile | PASSWORD EXPIRE | ACCOUNT LOCK | UNLOCK | DEFAULT ROLE role_name } DEFAULT ROLE 给用户指定缺省的角色。不能在 CREATE USER 语句中给用户一个缺省的角色。当创建一个用户时,设置的用户的缺省角色是ALL。 Oracle 用户管理 (4)
删除用户 DROPUSERuser[CASCADE] CASCADE 表示在删除用户前应该删除该用户模式的所有对象(表、索引等) Oracle 用户管理 (5)
# sqlplus system/manager; SQL> drop user ds1 cascade; SQL> connect system/manager; SQL> create user ds1 identified by ds1 default tablespace dbs1 temporary tablespace temp; SQL> grant create session, create table to ds1; SQL> grant resource to ds1; SQL> connect / as sysdba; SQL> grant drop any table to ds1; SQL> grant drop any sequence to ds1; SQL> grant create public synonym to ds1; SQL> grant create synonym to ds1; SQL> grant drop public synonym to ds1; SQL> grant select on sys.v_$session to ds1; SQL> exit Oracle 用户管理 (6)
备份方式 导出(exp)/导入(imp) 冷备份 热备份 Oracle 数据库备份和恢复 (1)
exp/imp 的三种模式: 用户模式(U方式)导出用户所有对象以及对象中的数据 表模式(T方式)导出用户所有表或者指定的表 整个数据库(Full方式)导出数据库中所有对象 Oracle 数据库备份和恢复 (2)
exp (导出)范例 $ exp system/managerowner=ds,ds1,ds2 file=backup.dmp $ exp ds/dstables=zx_file,zxy_filefile=backup.dmp $ exp system/managerfull=y file=full.dmp $ exp ds/ds file=ds.dmp Oracle 数据库备份和恢复 (3)
imp (导入)范例 $ imp system/managerfromUser=ds toUser=ds1file=backup.dmp $ imp ds3/ds3 tables=zx_file file=ds.dmp $ impds/dsfull=y ignore=y file=ds.dmp Oracle 数据库备份和恢复 (4)
冷备份 冷备份发生在数据库已经正常关闭的情况下,把数据库使用的每个文件都备份下来,这些文件包括: 所有数据文件 所有控制文件 所有联机 Redo Log 文件 init${ORACLE_SID}.ora 文件(可选) 值得注意的是冷备份必须是数据库关闭的情况下完成,当数据库开着的时候,执行数据库文件系统备份无效。 冷备份一般步骤是: 正常关闭要备份的实例 (instance) 备份整个数据库到一个目录 启动数据库 Oracle 数据库备份和恢复 (5)
热备份 热备份是在数据库运行的情况下,采用archivelog mode方式备份数据的方法,热备份的步骤: 刷新在线重做日志文件如:alter system archive log current; 拷贝init.ora文件到备份目录 对每个表空间的数据文件进行一个一个地备份。 3.1 设置表空间为备份状态(视图dba_tablespaces查看表空间) 如:alter tablespace users begin backup; 3.2 备份表空间的数据文件(视图v$datafile查看数据文件) 如:!cp /data/oradata/topprod/users01.dbf /backup 3.3 恢复表空间为正常状态 如:alter tablespace users end backup; Oracle 数据库备份和恢复 (6)
热备份(续) 3.4 用alter database backup controlfile命令来备份拷贝文件 如alter database backup controlfile to trace; 或alter database backup controlfile to ‘/tmp/control.0101’; 3.5通过在sqlplus上执行archive log list命令获取当前的日志顺 序号,从oldest online log sequence开始到current log sequence的联机redo日志应该是热备份的一部分。 在sqlplus上执行 alter system switch logfile 来强迫日志 切换,以便所有的日志都被归档。 3.6刷新在线重做日志文件,以确保备份过程中的改动已被存档 如:alter system archive log current; Oracle 数据库备份和恢复 (7)
警告日志所记录信息如下: 重做日志转换 检查点 关键性错误和信息 警告日志记录的重要事件如下: 数据库启动和关闭 对数据库结构的改变 对段状态的修改 Oracle 警告日志 (1)
警告日志物理上是 Oracle 产生的一种文本文件,其所在的目录由初始化参数 BACKGROUND_DUMP_DEST 指定。可由下面命令显示其值: SQL> show parameter BACKGROUND_DUMP_DEST; 或 SQL> select name,value from v$parameter where name=‘background_dump_dest’; BACKGROUND_DUMP_DEST 缺省位置为: $ORACLE_BASE/admin/$ORACLE_SID/bdump Oracle 警告日志(2)
SQL*Loader sqlldr username/passwordcontrol=xxx_file.ctl direct=true xxx_file.ctl(控制文件.ctl)的内容: load data infile ‘xxx.unl’ (xxx.unl为数据文件) truncate(或append)into table xxx_file (xxx_file为表名) fields terminated by ‘^A’ (‘^A’ 为分隔符) (aab01,aab02,aab04 ) SQL * Loader (1)
接上例: xxx.unl 数据文件内容样本: A001^Ademo^A01/07/27^A A002^Ademo^A01/07/27^A A003^Ademo^A01/07/27^A A004^Ademo^A01/06/07^A A005^Ademo^A01/06/07^A A006^Ademo^A00/01/05^A B001^Ademo^A00/01/05^A B002^Ademo^A00/01/05^A SQL * Loader (2)
Load 和 unload 所在的目录 - $TOP/ora/bin 命令用法loaddbname[tablename] [filename]unloaddbname[tablename][filename] 使用范例loaddszx_filezx_file.txt-从 zx_file.txt 文本文件中读取数据,写入数据库 ds 的 zx_file 表中unload dszx_file zx_file.txt-从数据库 ds 的 zx_file 表中读取数据,写入到文本文件 zx_file.txt 中 注意:文本数据文件各栏位分隔符要与环境参数DBDELIMITER的值一致,文本数据文件各栏位要与 tablename 的各栏位一致 使用 Tiptop 程式进行文本数据导入导出
$TOP/ora/scripts/* #oraq q_users $TOP/ds4gl2/bin/rebuild $TOP/ora/bin/createdb $TOP/ora/bin/analyze Tiptop 系统常用脚本工具