ORACLE9I简单介绍

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

安装目录不能有空格和中文!
Oracle 版本oracle 8i (8.1.7)、oracle 9i(9.0) 临时版本,由于有问题,很快升级到
Oracle 9i(9.2.0.1) 、oracle9i(9.2.0.4)、oracle10g
Oracle 9i 的三个重要特征:
客户机/服务器结构(client/server)。

面向对象数据库。

用于关键业务。

如银行等业务,不允许出现错误。

(备份)
第一课Oracle 9i 体系结构
Oracle 9i 数据库:由实例和数据库组成。

实例是指访问数据库文件的内存和进程。

重点:实例和数据库的关系。

(以ORCL数据库为例讲解)
正常情况下,实例和数据库是一一对应的。

在NT上,实例是作为服务运行的。

服务名:OracleServiceORCL。

OracleServiceORCL oracleserviceerp
数据库名数据库名
在Unix和Linux上,实例是作为Daemon运行的。

组成一个Oracle 9i数据库的文件
控制文件(.ctl)、数据文件(.dbf)、联机重做日志文件(.log)。

讲解Oracle 9i数据库的工作原理图。

讲解Oracle 9i数据库的体系结构图。

实例的组成:
1. 系统全局区(SGA)(system global area)
共享池(shared pool):包括library cache、dictionary cache。

通过shared_pool_size设置。

library cache:存放执行SQL语句的二进制文件,执行速度快。

dictionary cache:存放系统表数据。

数据库缓冲区高速缓存(database buffer cache):存放数据文件的。

通过db_cache_size设置。

重做日志缓冲区(redo log buffer): 通过log_buffer设置。

存放重做日志的。

Java Pool、Large Pool。

2. Oracle 后台进程
必须:系统监控和进程监控进程(SMON和PMON)
数据库写进程(DBWR)、日志写进程(LGWR)、归档进程(ARCH)、检查点(CKPT)可选:调度进程(Dnnn)、恢复进程(RECO)、快照进程(SNPn)、锁进程(LCKn)、并行查询进程(Pnnn)
PGA(Program Global Area):用户和服务器进程
第二课. 开始使用Oracle 9i
初始用户
用户名:密码:(不区分大小写)
sys
system
Oracle数据库的系统管理员默认是由操作系统验证。

所以可以以任意用户名和密码进入,因为已经进入了操作系统,就不再验证了,例:aa/bb;aa/cc;a/c等
可以修改C:\oracle\ora92\network\admin\sqlnet.ora文件取消操作系统验证。

Sqlnet.ora内容如下:
# SQLNET.ORA Network Configuration File: c:\oracle\ora92\network\admin\sqlnet.ora
# Generated by Oracle configuration tools.
SQLNET.AUTHENTICA TION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES)
在SQLNET.AUTHENTICA TION_SERVICES= (NTS)语句前加注释,去掉此语句,则可实现由oracle来验证用户,这样只有oracle的合法用户名和密码才能进行oracle。

使用SQL * Plus 来管理Oracle数据库
查看SQL * Plus的命令
SQL>help index
与实例联接、断开联接
SVRMGR>connect sys/oracle@orcl as sysdba|sysoper(sys用户可以,system不可以。

)
用户名/密码@数据库名
SQL>connect / as sysdba|sysoper
“/ “自动启动注册表HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0\ ORACLE_SID值所指定的数据库。

SQL>disconnect
作为普通用户登录不能shutdown和startup。

使用dgmgrl 来管理Oracle数据库注:此命令已经用的很少了。

C:\>dgmgrl
dgmgrl> connect sys/oracle@orcl
dgmgrl>help
dgmgrl>shutdown abort
dgmgrl>startup
修改sys用户的密码:
sys 是实例用户,其密码保存在专门的密码文件中。

每个数据库都有一个对应的密码文件,文件名为pwd+数据库名。

用命令方式修改sys用户的密码
C:\>orapwd file=C:\oracle\ora92\database\pwdorcl.ora password=oracle entries=5
数据库名新口令
(原密码文件要先删掉!)
注意:修改完毕后要重启实例的对应的服务。

服务名为:OracleServiceorcl
数据库名
使用图形界面修改sys用户的密码:在oracle enterprise manager console中,数据库 实例数据库 安全性 用户 选定指定用户 右边窗口一般属性中直接修改用户密码。

口令即刻失效指用户用此密码首次登录后就要求修改密码。

第三课. 管理实例(数据库的启动和关闭)
与Oracle 9i有关的注册表
路径:HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0
讲解一些重要项目的含义。

检查实例的状态
SQL>show sga
关闭数据库(三种方式)
SQL>shutdown normal/immediate/abort/transactional
重点:四种方式的区别
normal 关闭时所有用户要断开到Oracle的联接。

发生checkpoint。

immediate 关闭时可以有用户联接到Oracle,直接结束已联接用户未完成的事务,也即回退未完成的事务。

关闭时发生checkpoint。

abort 关闭时可以有用户联接到Oracle,关闭时不发生checkpoint。

下次启动是需要进行实例恢复,也即回退已联接用户未完成的事务。

就相当于断电一样。

transactional 关闭时所有事务要结束后才断开联接。

发生checkpoint进程,则将数据存储到硬盘中。

启动数据库
重点:Oracle 9i 数据库三种状态的区别。

SQL>startup nomount (实例启动)
SQL>alter database mount; (文件锁定)
SQL>alter database open; (在此状态下,用户才能正常操作,这也是默认状态)
注:在oracle命令执行时后,结尾可以加分号也可以不加,但在sql语句后面必须加分号。

三种状态只能由nomount mount open状态,不能反过来,要反过来,只能先断开联接,再开始为指定的状态
会话(Session)的监视
在oracle enterprise manager console中,数据库 实例数据库 例程 会话中可显示已有的会话。

每个会话都有一个会话ID(sid)和序列号(serial#)来唯一标识。

使用Instance Manager来监视会话。

会话有关的数据字典。

SQL> SELECT * FROM v$session;
管理会话。

SQL> alter system kill session '7,217' immediate;
SQL> alter system disconnect session '7,217' immediate;
SQL> alter system disconnect session '7,217' post_transaction;(关闭时所有事务要结束后才断开联接)
第四课Oracle 9i 的网络配置
Oracle 9i 的网络配置保存在三个文件中。

服务器端进行监听。

OracleOraHome92TNSListener服务(缺省)。

服务器端:d:\oracle\ora92\network\admin\listener.ora。

修改完listener.ora后要重新启动OracleOraHome92TNSListener服务。

IPC(Inter Process Communication)
客户端进行联接。

文件名:
d:\oracle\ora92\network\admin\tnsnames.ora和sqlnet.ora。

服务器端进行监听(listener.ora)文件内容:
LISTENER =
监听名
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = kh26)(PORT = 1521))
协议主机名端口号
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
SID_LIST_LISTENER =
对应监听名所监听的数据库
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = c:\oracle\ora92)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = erp.kh26)
全局数据库名唯一标识
(ORACLE_HOME = c:\oracle\ora92)
(SID_NAME = erp)
例程系统标识符
)
(SID_DESC =
(GLOBAL_DBNAME = OEMREP)
全局数据库名唯一标识
(ORACLE_HOME = c:\oracle\ora92)
(SID_NAME = OEMREP)
例程系统标识符
)
SID_NAME:数据库至少由一个oracle9i例程引用,此例程由oracle系统标识符(SID)唯一标识以区别于该计算机上的任何其他例程。

客户端进行联接sqlnet.ora文件内容:
# SQLNET.ORA Network Configuration File: c:\oracle\ora92\network\admin\sqlnet.ora
# Generated by Oracle configuration tools.
# SQLNET.AUTHENTICA TION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES, HOSTNAME)
联接方式:本地命名主机命名
联接方式若为tnsnames,为本地命名方法,则表通过本地方式,即找tnsnames.ora文件进行联接。

客户端进行联接Tnsnames.ora文件内容:
# TNSNAMES.ORA Network Configuration File: c:\oracle\ora92\network\admin\tnsnames.ora # Generated by Oracle configuration tools.
ERP =
服务名
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = kh26)(PORT = 1521))
协议服务器名端口号
)
(CONNECT_DA TA =
(SERVER = DEDICATED)
(SERVICE_NAME = ERP.kh26)
数据库名
)
ERP1 =
服务名
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = kh42)(PORT = 1521))
协议服务器名端口号
)
(CONNECT_DA TA =
(SERVER = DEDICATED)
(SERVICE_NAME = ERP.kh42)
数据库名
)
服务名为用sql*plus联接时,主机字符串前面的部份,erp as sysdba
erp1 as sysdba 联接另一台服务器时,要求对应数据库服务要启动,对应的监听服务要启动。

端口号:数据库所在服务器必须有一个监听此端口号的服务
可用图形工具和直接修改文件两种方法进行网络配置。

图形工具:执行Net Configuration Assistant可以配置监听程序,命名方法,本地net服务名,目录使用(不用)。

可以配置多个监听程序,当一个有问题,可以用另外一个。

一个监听对应一个服务,服务名为:oracleorahome92tnslistener
重点:对上述文件修改前要先备份。

命名方法:本地命名方法和主机命名方法。

lsnrctl程序
c:\>lsnrctl
LSNRCTL> help
tnsping程序
c:\>tnsping 别名
NAMES.DIRECTORY_PATH= (TNSNAMES, HOSTNAME)
联接方式:本地命名主机命名
联接方式若为hostname,为主机命名方法,则表通过hosts文件方式,即找C:\WINNT\system32\drivers\etc\hosts文件进行联接。

用sql*plus联接时,主机字符串前面的部份,erone as sysdba
主机命名方法(监听端口必须是1521。

)
C:\WINNT\system32\drivers\etc\hosts文件。

Hosts文件结构如下:
Ip地址服务器名数据库名
192.168.8.50 cuug-qupvtrh2k6
192.168.100.21 userone erone
192.168.100.42 kh42 erp.kh42
第五课管理服务器的配置
介绍管理服务器的安装。

管理服务器(Management Server)的体系结构和作用。

资料档案库的创建和删除。

使用管理服务器前要启动OracleOraHome92ManagementServer服务。

管理服务器的用户名为sysman,初始密码为oem_temp。

节点的含义:可将每一个服务器做为一个节点来管理。

在通过管理服务器管理节点前要先搜索节点(导航器 搜索节点)。

注:要求各节点之间不能有同名的数据库,否则会搜索失败。

搜索节点前要启动节点上的OracleOraHome92Agent服务。

首选身份证明的含义和设置。

管理服务器管理中“配置”菜单 “首选项(p)”项 首选身份证明项
数据库的首选身份证明:采用数据库的管理员帐号。

一般用sys,角色为sysdba。

节点的首选身份证明:采用计算机的操作系统管理员帐号。

一般用Administrator。

注意:计算机的操作系统管理员Administrator一定要有密码。

同时要给Administrator分配“作为批处理作业登录”的权限。

(管理工具 本地安全策略—>本地策略—>用户权利指派中最后一项
第六课数据字典
数据字典的结构:SYS方案下的数据字典表、数据字典视图和动态性能视图。

(没有联机手册)
PUBLIC方案下的同义词。

(有联机手册)
结构、性能。

V$SYSSTAT。

V$SESSTAT。

ALL_、DBA_、USER_开头的区别。

例如:ALL_TABLES、DBA_TABLES、、USER_TABLES。

常用的数据字典:
V$parameter、V$SGA、V$option、V$process、V$session、V$version、V$instance。

V$thread、V$controlfile、V$database、V$datafile、V$logfile、V$log。

nls_database_parameters。

DBA_USERS、DBA_SYS_PRIVS;
V$parameter、V$SGA、V$option(当前oracle有哪些功能)、V$process(当前系统进程)、V$session(查看服务器有哪些会话)、V$version(服务器版本号)、V$instance(服务器有哪些实例)。

V$thread(服务器有哪些归档线程)、V$controlfile(控制文件.ctl)、V$database、V$datafile (数据文件.dbf)、V$logfile、V$log(当前正在对哪个日志文件进行写)。

nls_database_parameters(数据库的字符集)。

DBA_USERS(当前数据库有哪些用户)、DBA_SYS_PRIVS(有哪些权限);
V$datafile 和DBA_DA TA_FILES的区别:
1. V$datafile是单数,DBA_DATA_FILES是复数。

2. V$datafile中的数据在mount状态时可以访问,DBA_DA TA_FILES中的数据在open状态时才能访问。

3. V$datafile中的数据一般是小写,DBA_DATA_FILES中的数据一般是大写。

4. V$datafile中的数据在数据库关闭时会丢失。

是一个动态数据。

查Oracle联机手册。

第七课初始化参数文件的配置和初始化参数
Oracle 9i中每个实例有两种初始化参数文件:SPFILE(server parameter File)和PFILE。

它们的缺省路径为c:\oracle\ora92\database。

SPFILE:文件名为SPFILEORCL.ORA。

二进制格式。

其中的参数不能直接修改,要通过SQL 语句修
数据库名
改。

PFILE: 文件名为INITORCL.ORA。

文本格式。

其中的参数可以直接修改。

数据库名
默认只有spfile文件,文件名为spfileerp
数据库名
SPFILE和PFILE可以互相转化。

从SPFILE生成PFILE:
SQL>CREATE PFILE FROM SPFILE;
从PFILE生成SFILE:
SQL>CREATE SPFILE FROM PFILE;
查看用哪个文件启动的:在数据库 实例数据库 例程 配置 右边窗口下方显示由哪个文件启动的。

查看参数的值:SQL> show parameter fast; (查看所有以fast打头的参数)
或SQL> SELECT * FROM V$parameter;
Oracle 9i中初始化参数(257个参数)分类:
1、动态参数(修改完后马上生效,不需要重新启动数据库。

)
2、静态参数(修改完后需要重新启动数据库才能生效。


3、不能修改,只能在建库时指定。

如DB_BLOCK_SIZE。

4、与8i兼容的参数,在9i中不建议使用。

修改参数的值
SQL>alter system set fast_start_mttr_time= 600 scope=memory; (修改内存中当前值)
SQL>alter system set fast_start_mttr_time= 600 scope=spfile; (修改spfile值,内存中当前值没有变,只有在下次启动后,才有效)
SQL>alter system set fast_start_mttr_time= 600 scope=both;
指定用pfile启动数据库
若pfile文件不在默认位置,则启动时要指定pfile文件的位置,
SQL> STARTUP PFILE=d:\oracle\admin\cuug\pfile\init.ora
若数据库对应的spfile和pfile文件都没有,则数据库不能启动,会提示:无法打开参数文件”c:\..\initerp.ora”
Oracle 9i的初始化参数(257个)
查Oracle联机手册。

第八课SQL*PLUS的使用
SQL 用分号;结束,一次只能一个语句。

PL/SQL 用/运行
SQL*PLUS 不用分号;结束,直接运行。

若一行写不下,可用–符号联接下一行。

HOST命令
COPY命令
SQL>copy from scott/tiger@tcp-loopback to scott/tiger@tcp-loopback -
Create salesmen (empno,salesman) -
Using select empno,ename from emp
命令行的SQL*PLUS
C:\>sqlplus system/oracle@cuug @c:\bzf.txt
执行Sqlplus /nolog 可以进行Dos版本的sqlplus。

若监听服务没有启动,窗口下的sql*plus 不能运行,而dos下的sql*plus就可以运行,是因为在dos下可以通过命名管道连接到默认数据库。

只能连接到默认数据库。

Connect sys/oracle as sysdba
第九课安全性管理
在数据库 实例数据库 安全性 用户/角色/
1. 用户(user)
解释各选项的含义。

SQL>CREATE USER "BAOZF" PROFILE "DEFAULT"
IDENTIFIED BY "BAOZF" DEFAULT TABLESPACE "USERS"
ACCOUNT UNLOCK;
注意给用户在表空间分配限额!
预定义用户:
SYS用户:Oracle数据字典的所有者。

SYSTEM用户:Oracle数据库的系统管理员。

2.角色(role)
SQL> CREATE ROLE "MARKET" IDENTIFIED BY "MARKET";
预定义角色:CONNECT,RESOURCE,DBA。

EXP_FULL_DATABASE, IMP_FULL_DATABASE 用于逻辑备份和恢复。

DELETE_CATALOG_ROLE,EXECUTE_CATALOG_ROLE,
RECOVERY_CATALOG_OWNER,EXECUTE_CATALOG_ROLE
用于访问系统对象。

AQ_ADMINISTRATOR_ROLE,AQ_USER_ROLE,HS_ADMIN_ROLE,OEM_MONITOR_RO LE,SNMPAGENT 工具角色。

3.将角色授予用户和另一个角色。

SQL>GRANT ” DBA”TO ”BAO”;
SQL>ALTER USET ”BAO”DEFAULT ROLE ALL;
在给用户赋于某“角色”时,
默认值:指当用户一建立联接,就拥有此角色,否则,要使用命令,使此角色有效。

管理选项的含义:是指此用户是否有权力再将此角色赋予给别的用户。

在“对象”项内的:授权选项与上面的管理选项含义相同。

使角色有效
SQL>SET ROLE ”KF” IDENTIFIED BY ”KF”;
3.权限(privilege)
可用图形界面和SQL语句GRANT、REVOKE设置。

SQL>GRANT CREATE SESSION TO Richard;
SQL>GRANT REFERENCES (empno),UPDA TE (empno,sal ,comm) ON scott.emp T0 blake; SQL>REVOKE SELECT ON "SCOTT"."EMP"
FROM "BAOZF"
4.PROFILE概要文件和资源使用者组。

5.权限设置
权限的两种类型:系统权限和对象权限。

系统权限
CREATE、ALTER和DROP
CREATE TABLE(只能在此表中建立)
CREATE ANY TABLE可在任何空间建立表
RESTRICTED SESSION权限和限制模式。

SYSDBA:CREATE DA TABASE、基于时间点的恢复。

SYSOPER
对象权限
对表:SELECT、INSERT、UPDA TE、DELETE。

SP:EXECUTE。

SQL>GRANT SELECT ON "SCOTT"."EMP" TO "BAOZF" WITH GRANT OPTION;
撤消权限。

SQL>REVOKE UNLIMITED TABLESPACE FROM ”BAOZF”;
用户要授予SELECT_ANY_DICTIONRAY系统权限才能使用管理工具。

第十课管理控制文件
Oracle数据库的控制文件记录数据库的物理结构。

丢失控制文件数据库无法启动。

多个控制文件的内容是相同的。

作用是为了冗余。

每个数据库最多可有8个控制文件。

若在对应数据库的服务启动时,控制文件是不允许删除的。

例:oracleserviceERP服务在有一个控制文件完好的情况下启动数据库:可将好的控制文件复制后改名即可。

在丢失所有控制文件的情况下重建控制文件:
首先要在数据库好的时候生成重建控制文件的SQL语句:
SQL>alter database backup controlfile to trace;
跟踪文件的路径:d:\oracle\admin\orcl\udump目录下,查找最新建立的跟踪文件,用记事本打开此文件,将重建控制文件的语句拷贝出来,如下内容,然后在sql*plus中执行一遍即可。

创建控制文件的SQL语句:
SQL>STARTUP NOMOUNT
SQL>CREATE CONTROLFILE
REUSE DATABASE ” ORCL” NORESETLOGS ARCHIVILOG
MAXLOGFILES 32 MAXLOGMEMBERS 2 MAXDATAFILES 254 MAXINSTANCES 1 MAXLOGHISTORY 453
LOGFILE
GROUP 1 ‟D:\ORACLE\ORADA TA\ORCL\RED001.LOG‟ SIZE 1M,
GROUP 2‟D:\ORACLE\ORADATA\ORCL\RED002.LOG‟ SIZE 1M,
GROUP 3‟D:\ORACLE\ORADA TA\ORCL\RED003.LOG‟ SIZE 1M,
DA TAFILE
’D:\ORACLE\ORADATA\ORCL\SYSTEM01.DBF‟
’D:\ORACLE\ORADATA\ORCL\RBS01.DBF‟,
……
’D:\ORACLE\ORADATA\ORCL\TTT.ORA‟
CHARACTER SET ZHS16GBK;
备份控制文件的方法:
SQL>alter database backup controlfile to …D:\control.bak‟;
利用备份的控制文件来恢复控制文件:
SQL>RECOVER DA TABASE UNTIL CANCEL USING BACKUP CONTROLFILE;
SQL> ALTER DATABASE OPEN RESETLOGS;
用重置(RESETLOGS)日志的方式打开数据库的操作:
1. 重新生成所有的online redo log。

2. 将日志的序列好归为1。

跟控制文件有关的动态性能视图:V$CONTROLFILE、V$CONTROLFILE_RECORD_SECTION。

第十一课管理表空间和数据文件
表空间和数据文件的关系。

表空间的作用:分类、提高性能(RAID)。

表空间、数据文件、段(segment)、区间(extent)、数据块。

表空间的分类:永久、临时、还原。

创建一个新的表空间:
SQL> CREATE TABLESPACE "USERS03"
LOGGING
DA TAFILE 'D:\ORACLE\ORADATA\CUUG\USERS03.DBF' SIZE 5M,
'D:\ORACLE\ORADA TA\CUUG\USERS13.DBF' SIZE 5M EXTENT
MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;
表空间的本地管理:将表的信息存储到本地文件中,速度快,性能好。

9i用此方式。

表空间在字典中管理:将表的信息存储到数据字典中,使用时还要查找,速度慢。

ALTER TABLESPACE "USERS03"
ADD DATAFILE 'D:\ORACLE\ORADA TA\CUUG\USERS23.DBF' SIZE 5M;
CREATE
TEMPORARY TABLESPACE "TEMP03" TEMPFILE
'D:\ORACLE\ORADA TA\CUUG\TEMP03.DBF' SIZE 5M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M
LOGGING:生成重做日志,并可恢复。

NOLOGGING:快速更新,不生成重做日志,并不可恢复。

将数据文件脱机(数据库必须在归档模式才能够进行恢复!数据库必须在归档模式!否则不能脱机,提示信息:ORA-01145)
SQL>ALTER DATABASE DATAFILE
’C:\ORACLE\ORADATA\ORCL\TOOLS01. DBF‟ OFFLINE;
作用:1、丢失数据文件的情况下启动数据库。

2、在线恢复。

将数据文件联机
1、丢失数据文件的情况下启动数据库。

若数据文件丢失,进入sql*plus
SQL>shutdown abort
SQL>startup mount
SQL>ALTER DATABASE DATAFILE‟C:\ORACLE\ORADA TA\ORCL\TOOLS01.DBF‟ OFFLINE;
丢失的数据文件
SQL>alter database open;
此时可以打开现有的数据文件所存储的数据,也可进入oracle企业管理器中。

丢失数据文件的找到情况下恢复数据库:
首先恢复数据文件,进入sql*plus
SQL> RECOVER DA TAFILE ‟C:\ORACLE\ORADA TA\ORCL\TOOLS01. DBF‟
SQL>ALTER DATABASE DATAFILE
’C:\ORACLE\ORADATA\ORCL\TOOLS01. DBF‟ ONLINE;
此时就将丢失的数据文件恢复到数据库中。

对于数据库服务启动状态下,数据文件不允许删除。

将表空间脱机和只读
SQL>ALTER TABLESPACE ”TOOLS” READ ONL Y;
SQL>ALTER TABLESPACE ”TOOLS”OFFLINE NORMAL(正常/缺省)/TEMPORARY(临时)
/IMMEDIATE(立即)/FOR RECOVER(用于恢复);
对于将表空间由联机状态脱机到immediate 和for recover状态时,实例数据库必须是归档模式(例程 配置 恢复项进行设置)
移动数据文件(将文件改名):若磁盘空间不够等原因,可将表空间对应的数据文件拷贝到新的位置。

1、SQL> SHUTDOWN IMMEDIATE
2、SQL> STARTUP MOUNT。

3、将文件复制到另一位置。

4、SQL> ALTER DA TABASE RENAME FILE ’d:\oracle\oradata\erp\users.dbf’TO ’c:\users.dbf’;
5、SQL>recover datafile 'c:\users.dbf'’(恢复新的文件)
6、SQL> ALTER DATABASE OPEN;
7、将原来的文件删除。

若数据库非非正常情况下退出,可在sql*plus中,shutdown abort数据库,然后再启动。

第十二课管理重做日志文件
联机重做日志文件:
联机重做日志文件分成不同的组,每一个联机重做日志文件组有多个成员组成。

每一组的成员内容是完全相同的。

Oracle数据库在某一时刻只写一组联机重做日志文件。

联机重做日志文件采用循环的方位进行写,会不停地覆盖。

日志切换和检查点。

每一组联机重做日志文件的空间用完后会自动发生日志切换。

添加一组联机重做日志文件。

SQL>ALTER DATABASE
ADD LOGFILE GROUP 5 ('D:\ORACLE\ORADATA\CUUG\REDO05.LOG')
SIZE 102400K;
给一组联机重做日志文件添加成员。

SQL>ALTER DATABASE
ADD LOGFILE MEMBER 'D:\ORACLE\ORADA TA\CUUG\REDO22.LOG' TO
GROUP 2;
立即立即执行一个检查点进程:
SQL>Alter system checkpoint;
归档模式的概念
归档日志文件。

SQL> ARCHIVE LOG LIST (显示当前数据库的归档模式)
将数据库从非归档模式改成归档模式:
SQL>SHUTDOWN IMMEDIATE(注意不能是SHUTDOWN ABORT!)
SQL>STARTUP MOUNT
SQL>ALTER DATABSE ARCHIVELOG;
SQL>alter database open; (打开数据库)
归档模式下设置自动归档和归档日志文件的路径。

在实例数据库配置初始化参数中,
LOG_ARCHIVE_START参数:指定是否为归档日志模式,可将值改为true,则启动数据库后,自动进入归档日志模式,因为此值不是个动态参数,所以要重新联接,修改才能有效。

LOG_ARCHIVE_DEST参数:为归档重做日志文件存储的位置,可以设置10个,但一般3个就足够了。

ARC%S.%T
%Sequence。

(归档的序列号)
%T:Thread。

(一般值为001)
将数据库从归档模式改成非归档模式:
SQL>SHUTDOWN IMMEDIATE
SQL>STARTUP MOUNT
SQL>ALTER DATABSE NOARCHIVELOG;
SQL>ALTER DATABASE OPEN;
跟重做日志文件有关的动态性能视图:
V$LOG、V$LOGFILE、V$ARCHIVED_LOG、V$LOGHIST、V$LOG_HISTORY、V$ARCHIVE。

V$LOG(显示重做日志)、V$LOGFILE(显示重做日志文件)、V$ARCHIVED_LOG(显示归档重做日志文件)、V$LOGHIST(显示归档历史)、V$LOG_HISTORY(显示归档历史)、V$ARCHIVE。

第十二课管理回退段
数据文件中既包括提交事务、也包括未提交事务的数据。

回退段在9i中自动建立和管理,在8i中需要手工管理。

回退段(rollback segment)的工作原理
1、回退段在数据文件中,由区间和块组成。

2、对于Oracle数据库中的每一个事务,Oracle自动给它分配一个回退段。

3、一个回退段中可有多个活动事务。

4、一个事务占用的回退段空间在事务结束时释放。

5、回退段中存放事务更新操作更新前的值。

回退段的作用:事务回退(Transaction Rollback)、读一致性(Read Consistency)、实例恢复(Transaction Recovery)。

回退段可以放在任何一个表空间中,但处于管理的需要,一般单独创建一个表空间,专门存放回退段。

回退段在公用和专用回退段之间切换。

例程打开数据库后,一个专用回退段会通过一个例程获得。

公用回退段来自某个回退段池,需要回退段的任何例程都能够使用该池。

一般对于多于200个用户才使用公用方式建立回退段。

跟回退段有关的动态性能视图:
V$rollname、V$rollstat、V$transaction。

V$rollname(显示当前数据库中的所有回退段)、
V$rollstat(显示当前数据库中的回退段所对应的事务)(xacts项事务个数)、
V$transaction(显示当前数据库中的所有的事务)(xidusn回退段号)。

SYSTEM回退段、公用和专用回退段的区别。

回退段的管理:MANUAL(手工方式)、AUTO(自动方式)。

回退段的建立必须在手工方式下才能建立。

可以修改数据库的参数项UNDO_MANAGEMENT来进行设置。

数据库的参数:UNDO_MANAGEMENT参数。

可设置为MANUAL和AUTO方式。

SQL>CREATE ROLLBACK SEGMENT ”RBS30” TABLESPACE ”RBS”;
RBS表空间的段空间管理要是手动!
SQL>ALTER ROLLBACK SEGMENT ”RBS30” ONLINE;
给一个事务指定一个专门的回退段:
SQL>SET TRANSACTION USE ROLLBACK SEGMENT RBS30;
回退段要先OFFLINE(脱机)才能删除。

回退段的最佳大小:当事务结束后,回退段大小自动还原到最佳大小。

如何确定回退段的数量:最大事务数/4。

Oracle 9i中的还原表空间和回退段的自动创建。

UNDO_TABLESPACE参数。

第十三课创建数据库
用手工方式创建一个Oracle 9i 数据库
(以创建test数据库为例)
第一步:建两个目录
d:\oracle\oradata\test和d:\oracle\admin\test。

准备初始化参数文件。

重点:下面几个参数一定要修改:
db_name、instance_name、control_files.
第二步:创建实例
c:\>oradim –new -sid test
创建完实例后,自动建立检查服务(OracleServicetest)。

服务会自动启动。

Oradim.exe 位置c:\oracle\ora92\bin
第三步:修改网络配置
修改两个文件listener.ora、tnsnames.ora.
重新启动OracleOraHome92TNSListener服务,使修改有效。

此时可在sql*plus中可以测试是否能够连接到新的实例上。

注意连接文件sqlnet.ora的设置。

第四步,准备建数据的SQL语句。

CREATE DATABASE test
logfile GROUP 1 ('d:\oracle\oradata\test\redo01.log') SIZE 10M,
GROUP 2 ('d:\oracle\oradata\test\redo02.log') SIZE 10M,
GROUP 3 ('d:\oracle\oradata\test\redo03.log') SIZE 10M
datafile 'd:\oracle\oradata\test\system01.dbf' size 400M
undo tablespace UNDOTBS1
datafile 'd:\oracle\oradata\test\undotbs1.dbf' size 400M
default temporary tablespace temp
tempfile 'd:\oracle\oradata\test\temp01.dbf' size 58M
extent management local uniform size 128K
character set ZHS16GBK
national character set AL16UTF16;
将上面的语句保存到c:\createdb.sql文件中。

创建密码文件
c:\>orapwd file=d:\oracle\ora92\database\pwdtest.ora password=oracle entries=5
重启实例的服务OracleServicetest。

第五步,创建数据库
SQL>connect sys/oracle@test AS SYSDBA
SQL>STARTUP NOMOUNT PFILE=d:\oracle\admin\test\pfile\init.ora
(没有数据库,只能启动到nomount状态)
SQL>@c:\createdb.sql
第六步,创建数据字典
SQL> @d:\oracle\ora92\rdbms\admin\catalog.sql
SQL> @d:\oracle\ora92\rdbms\admin\catproc.sql
完成后对数据库进行检测。

SQL>create spfile from pfile='d:\oracle\admin\test\pfile\init.ora';
用图形界面创建数据库。

使用Database Configuration Assistant工具可管理(创建、配置、删除)数据库。

模板名:data warehouse:以便创建针对数据仓库进行优化的预配置的数据库。

例:图书馆。

general purpose:以便创建针对一般用途进行优化的预配置的数据库。

(一般用这个)。

new database:以便创建自定义的数据库。

transaction processing:以便创建针对事务处理过程进行优化的预配置的数据库。

例:证券交易,事务特别多的模板。

是否包括数据文件:是指是否包括oracle默有的一些数据文件。

用图形界面生成创建数据库的脚本。

1、使用Database Configuration Assistant工具创建数据库,在最后选项中,不选择“创建数据库”,而是选择“生成数据库创建脚本”即可生成生成创建数据库的脚本。

执行此脚本目录下的批处理文件就可以创建一个数据库。

2、配置c:\oracle\ora92\network\admin\listener.ora和tnsnames.ora文件,将新建数据库配置上。

3、重新启动服务。

第十四课创建表
方案(Schema)的概念:对象的创建者或所有者。

Oracle中的七种表:标准表、分区表、簇表、按索引组织表IOT(Index Organized Table)、对象表、临时表、嵌套表(Nested Table)。

1. 标准表
字段的数据类型:
CHAR 最长2000字节
V ARCHAR2 最长4000字节
LONG 最大2G
RAW 最大255字节
LONG RAW 最大2G。

NUMBER NUMBER(5)、NUMBER(7,2)、NUMBER。

DA TE
大对象(LOB):BLOB、CLOB、NCLOB、BFILE。

最大4G。

ROWID 和UROWID。

Oracle 自动对每个表建立一个rowid列,也称伪例。

ROWID的格式:OOOOOO-FFF-BBBBBB-RRR。

(18个字符)
OOOOOO- FFF- BBBBBB- RRR
对象号文件号对应文件的数据块号对应数据块中的行号
SQL>select rowid from scott.emp;
根据ROWID查一条记录在哪一个文件中。

SQL>SELECT dbms_rowid.rowid_relative_fno(rowid) FROM scott.emp;
建表的SQL语句:
SQL>CREATE TABLE "AAA"."CALL_TICKET" ("CALL_ID" NUMBER(10) NOT NULL, "CALL_NO" V ARCHAR2(10) NOT NULL, "CALLED_NO" V ARCHAR2(10) NOT
NULL, "START_CALL" DATE NOT NULL, "END_TIME" DATE NOT NULL,
"CALL_TIME" NUMBER(5) NOT NULL)
TABLESPACE "USERS";
照片字段类型一般为BloB类型
2. 分区表
将一个数据量大的表放在多个不同的表空间。

CREATE TABLE "BAO"."CALL_TICKET" ("CALL_ID" NUMBER(10) NOT NULL, "CALL_NO" V ARCHAR2(10) NOT NULL, "CALLED_NO" V ARCHAR2(10) NOT
NULL, "CALL_TIME" NUMBER(5) NOT NULL)
PARTITION BY RANGE ("CALL_ID") (PARTITION "P1"
V ALUES LESS THAN (1000000)
上限值
TABLESPACE "USERS" ,
PARTITION "P2"
V ALUES LESS THAN (2000000)
上限值
TABLESPACE "USERS02" ,
PARTITION "P3"
V ALUES LESS THAN (3000000)
上限值
TABLESPACE "USERS03" );
分区的字段一般是数字型或时间型。

上限值建好后不能再更改,但可以再增加新的分区。

3. 簇表(Cluster)
簇表由多个表组成。

这样的多个表的共同字段称为簇关键字列。

簇表的物理结构。

SQL>CREATE CLUSTER "BAO"."CLU_ED" ( "DEPT_NO" NUMBER(3) ) INDEX;
簇一定要建索引,才能访问表中的数据。

4. 按索引组织表IOT(Index Organized Table)
按索引组织表IOT是将索引数据和表的数据一起放在索引的B-树中。

按索引组织表必须要有主键!
SQL> CREATE TABLE "AAA"."EMP" ("ENO" NUMBER(5) NOT NULL, "ENAME"
V ARCHAR2(10) NOT NULL, "DEPTNO" V ARCHAR2(10) NOT NULL,
CONSTRAINT "PK_ENO" PRIMARY KEY("ENO")) ORGANIZATION
INDEX ;
5. 对象表
方案 表空间 用户类型 对象类型
SQL> CREATE TYPE "BAO"."BANK_ACCTS" AS OBJECT ( "ACCT_NO" V ARCHAR2(20), "CUST_NAME" V ARCHAR2(10), "BALANCE" NUMBER(10, 2) );
对象表
SQL> CREATE TABLE "BAO"."ACCTS" OF "BAO"."BANK_ACCTS";
在图形方式下建表,选择表类型为对象表
对象表没有字段,可将对象类型的属性做为对象表的字段。

使用构造函数初始化对象:
SQL> INSERT INTO accts V ALUES(bank_accts(…123456‟,‟bao‟,1000));
6. 临时表
SQL> CREATE GLOBAL TEMPORARY TABLE T2(c1 NUMBER(5),c2 varchar2(10) );。

相关文档
最新文档