Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2923509
  • 博文数量: 412
  • 博客积分: 3010
  • 博客等级: 中校
  • 技术积分: 7374
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-25 15:15
个人简介

学习是一种信仰。

文章分类

全部博文(412)

文章存档

2014年(108)

2013年(250)

2010年(11)

2009年(43)

我的朋友

分类: Oracle

2013-03-13 17:03:39

精通Oracle10g系统管理
王海亮、于三禄、王海凤、郑建茹等编著
中国水利水电出版社
2005年2月

第1章  Oracle体系结构
Oracle Server组成;实程组成;数据库组成;表空间、段、区、数据块;语句执行原理;
1、Oracle Server
Oracle Server由实例(Instance)和数据库(Database)组成;
Instance是内存结构和后台进程的集合,内存结构主要包括:数据缓冲区、日志缓冲区、缓冲池,总称为SGA(System Global Area);后台进程包括很多数据库后台进程;
Database是一组OS文件的集合,包括数据文件、控制文件、日志文件;

PGA(Program Global Area)存放服务器进程的数据及控制信息,它是独立于SGA的一块内存区;
当用户进程连接到Oracle Server时,Oracle Server为每个用户进程分配PGA;
PGA有排序区(Sort Area)、会话信息(Session Information)、游标状态(Cursor State)、堆栈空间(Stack Space);
2、数据库物理结构
数据文件、日志文件、控制文件、其他文件;
3、数据库逻辑结构
表空间、段、区(分配单元)、数据块(IO单元,OS块整数倍);

第2章  开始使用Oracle Server
安装、建库(dbca)、网络配置、OEM、sqlplus、isqlplus(sqlplus在浏览器中的实现方式);

第3章  管理实例
初始化参数文件、启动\停止实例、打开\关闭数据库;
1、常用初始化参数:
db_name:数据库名,create database后的名字;
db_domain:域名,指定数据库在分布式网络环境中的逻辑位置,db_name.db_domain为全局数据库名;
instance_name:实例名,单实例数据库中与db_name一致;在RAC中用于标示同一个数据库下的不同实例名;
service_name:服务名,客户连接实例时使用,默认为db_name.db_domain;
。。。。。。
2、参数文件:
文本参数文件pfile,服务器参数文件spfile,oracle建议使用spfile,简化管理,且可使用reman备份恢复;
pfile可以直接编辑,spfile使用alter system命令修改;
确定实例所使用的参数文件:show parameter spfile;(若无返回值,则正在使用pfile)
生成pfile:create pfile [=pfile_name] from spfile [=spfile_name];
生成spfile:create spfile [=spfile_name] from pfile [=pfile];

显示参数:show parameter [parameter_name];
查询参数:select * from v$parameter;
修改所有会话动态参数:alter system set...;
修改当前会话动态参数:alter session set ...;
3、诊断文件:
set lines、set pages只对查询结果有用,对show parameter无用;
包括预警文件、后台跟踪文件、用户跟踪文件;
(1)预警文件:按时间记录连续的消息和错误。
     存放位置由参数background_dump_dest指定,alter_SID.log;
(2)后台进程跟踪文件:诊断后台进程的警告和错误信息;
存放位置由参数background_dump_dest指定,SID_processname_SPID.trc,SPID为后台进程对应的OS进程号;
(3)用户进程跟踪文件:收集客户应用SQL语句的统计信息;
存放位置由参数user_dump_dest指定,SID_ora_SPID.trc;
SQL> show parameter user_dump_Dest
NAME                                     TYPE         VALUE
------------------------------------ ----------- ------------------------------
user_dump_dest                             string         C:\ORACLE\PRODUCT\10.2.0\ADMIN\JSSBOOK\UDUMP
要诊断sql语句性能,并作出相应的性能调整规划,需sql_trace为ture;                                                
SQL> show parameter sql_trace
NAME                                     TYPE         VALUE
------------------------------------ ----------- ------------------------------
sql_trace                             boolean         FALSE

第4章  建立数据库
oradim管理实例服务、create database
1、oradim管理实例服务:
(1)建立实例服务:ORADIM -NEW -SID sid | -SRVC service_name [-INTPWD password] [-MAXUSER number] [-STARTMODE a|m] [-PFILE pfile]
D:\>oradim -new -sid test -intpwd test
实例已创建。
D:\>oradim -new -srvc Oracleservicetest1 -intpwd test1
实例已创建。
-----多了四个服务
(2)编辑实例服务:ORADIM -EDIT -SID sid ...
D:\>oradim -edit -sid test -intpwd testtest -startmode auto
(3)删除实例服务 ORADIM -DELETE -SID sid | -SRVC servece_name
D:\>oradim -delete -sid test1
实例已删除。
2、建立数据库
windows环境下手工方式建立数据库步骤:建立实例服务、建立参数文件、nomount方式启动实例、建立数据库、运行脚本完成后续操作
(1)建立实例服务:
D:\>oradim -new -sid DEMO -intpwd DEMO
实例已创建。
(2)建立参数文件
先建立pfile,若机器上现有实例用pfile启动,直接copy一个pfile:initDEMO.ora;若机器现有实例用spfile启动,先create pfile from spfile再copy;
修改initDEMO.ora,建立相应目录;
建立spfile,create spfile=spfileDEMO.ora from pfile=initDEMO.ora;
(3)nomount启动实例
D:\>set ORACLE_SID=DEMO
D:\>sqlplus sys/sys as sysdba
SQL> show parameter instance_name
ORA-01034: ORACLE not available
SQL> startup nomount
ORACLE 例程已经启动。
(4)create database
create database DEMO
        MAXINSTANCES        8
        MAXLOGHISTORY        1
        MAXLOGFILES        16
        MAXLOGMEMBERS        3
        MAXDATAFILES        100
LOGFILE GROUP 1 'D:\Oracle_Database\DEMO\redo01.log' size 10M,
        GROUP 2 'D:\Oracle_Database\DEMO\redo02.log' size 10M
DATAFILE 'D:\Oracle_Database\DEMO\system01.dbf' size 100M
        AUTOEXTEND ON NEXT 10M EXTENT MANAGEMENT LOCAL
SYSAUX DATAFILE 'D:\Oracle_Database\DEMO\sysaux01.dbf' size 30M
        AUTOEXTEND ON NEXT 10M
DEFAULT TEMPORARY TABLESPACE TEMP
TEMPFILE 'D:\Oracle_Database\DEMO\temp.dbf' size 10M
        AUTOEXTEND ON NEXT 10M
UNDO TABLESPACE UNDOTBS1 DATAFILE 'D:\Oracle_Database\DEMO\undotbs1.dbf' size 20M
CHARACTER SET ZHS16GBK
NATIONAL CHARACTER SET AL16UTF16
USER SYS IDENTIFIED BY DEMO
USER SYSTEM IDENTIFIED BY DEMO;       
(5)安装建立数据库的后续任务
1安装数据字典视图,必须用sys用户
SQL> conn sys/DEMO as sysdba
SQL> @%oracle_home%\RDBMS\ADMIN\catalog.sql
PL/SQL 过程已成功完成。
----运行中有错误信息
2安装oracle系统包,必须用sys用户
SQL> @%oracle_home%\RDBMS\ADMIN\catproc.sql
PL/SQL 过程已成功完成。
SQL>
----运行中有错误信息
3安装PRODUCT_USER_PROFILE表,用户级安全补充,必须用system用户
SQL> conn system/DEMO as sysdba
SQL> @%oracle_home%\sqlplus\admin\pupbld.sql
----运行中有错误信息,要删除的表或视图不存在
3、配置网络
(1)服务器端配置监听程序
1编辑修改%oracle_home%\NETWORK\ADMIN\listern.ora;
2使用net manager,监听程序——listen——数据库服务——添加数据库;
配置之后重启监听服务。
服务摘要..
服务 "DEMO" 包含 1 个例程。
  例程 "DEMO", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
服务 "PLSExtProc" 包含 1 个例程。
  例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
服务 "jssbook" 包含 1 个例程。
  例程 "jssbook", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
命令执行成功
(2)客户端配置网络服务名
使用net manager,服务命名——添加
4、配置OEM      
手工创建database之后,要使用OEM管理,必须用dbca配置该database;
dbca——配置数据库选项——DEMO——。。。
登录OEM地址为:http://172.16.80.166:5500/em-----http://ncut-zhj:5500/em
-----jssbook为:http://ncut-zhj:1158/em
-----OEM是分实例管理的

第5章  数据字典和动态性能视图
数据字典记录了数据库的系统信息,包括只读的表和视图,属于SYS用户,存储在system表空间;
数据字典包括数据字典基表和数据字典视图,视图基于基表建立,普通用户不能访问基表,视图包括:USER_XXX、ALL_XXX、DBA_XXX;
动态性能视图记录实例活动信息,是动态变动的;

oracle中,用户和scheme(方案)是一一对应的,scheme是用户所拥有对象的集合,用户可以被其他用户授权从而访问其他用户的对象;
USER_XXX用于显示当前用户所拥有的所有对象;
ALL_XXX用于返回当前用户可以访问的所有对象;
DBA_XXX用于显示数据库的所有对象信息,需要具有DBA角色或SELECT_CATALOG_ROLE角色的用户才能查询;

一、数据字典:记录了oracle数据库的所有系统信息,包括数据字典和数据字典视图
内容包括:
1、对象定义
执行create时,存放对象定义,使用包dbms_metadata可以取得对象定义;
D:\>sqlplus sys/sys as sysdba
SQL> select dbms_metadata.get_ddl('TABLE','EMP') ddl from dual;
ERROR:
ORA-31603: 对象 "EMP" 属于类型 TABLE, 在方案 "SYS" 中未找到
ORA-06512: 在 "SYS.DBMS_METADATA", line 1546
ORA-06512: 在 "SYS.DBMS_METADATA", line 1583
ORA-06512: 在 "SYS.DBMS_METADATA", line 1901
ORA-06512: 在 "SYS.DBMS_METADATA", line 2792
ORA-06512: 在 "SYS.DBMS_METADATA", line 4333
ORA-06512: 在 line 1
SQL> conn scott/tiger
SQL> select dbms_metadata.get_ddl('TABLE','EMP') ddl from dual;
DDL
--------------------------------------------------------------------------------
  CREATE TABLE "SCOTT"."EMP"
   (        "EMPNO" NUMBER(4,0),
        "ENAME" VARCHAR2(10),

2、对象占用空间
创建表、索引、簇时,oracle分配段存放这些对象,可以分析段占用的空间;
SQL> select bytes from user_segments where segment_name='EMP';
     BYTES
----------
     65536
要查看段已使用空间和剩余空间需先分析表:
SQL> conn scott/tiger
已连接。
SQL> analyze table EMP compute statistics;
表已分析。
SQL> select blocks,empty_blocks from user_tables where table_name='EMP';
    BLOCKS EMPTY_BLOCKS
---------- ------------
         5            3

3、列信息
SQL> set linesize 1000 pagesize 1000
SQL> select column_name,data_type,data_default from user_tab_columns where table
_name='DEPT';
COLUMN_NAME                    DATA_TYPE
                                                          DATA_DEFAULT
------------------------------ -------------------------------------------------
--------------------------------------------------------- ----------------------
----------------------------------------------------------
DEPTNO                         NUMBER
DNAME                          VARCHAR2
LOC                            VARCHAR2

SQL> col column_name format a15
SQL> col data_type format a15
SQL> col data_default format a15
SQL> select column_name,data_type,data_default from user_tab_columns where
_name='DEPT';

COLUMN_NAME     DATA_TYPE       DATA_DEFAULT
--------------- --------------- ---------------
DEPTNO          NUMBER
DNAME           VARCHAR2
LOC             VARCHAR2

4、约束信息
查询数据字典视图:USER_CONSTRAINTS,USER_CONS_COLUMNS;

5、用户、角色、权限信息
DBA_USERS:所有数据库用户信息;
DBA_SYS_PRIVS:用户或角色的系统权限;
DBA_TAB_PRIVS:用户或角色的对象权限;
DBA_COL_PRIVS:用户或角色的列权限;
DBA_ROLE_PRIVS:用户或角色所具有的其他角色;
SQL> select username from dba_users;
USERNAME
------------------------------
MGMT_VIEW
SYS
SYSTEM
DBSNMP
SYSMAN
SCOTT
OUTLN
MDSYS
ORDSYS
CTXSYS
ANONYMOUS
EXFSYS
DMSYS
WMSYS
XDB
ORDPLUGINS
SI_INFORMTN_SCHEMA
OLAPSYS
MDDATA
DIP
TSMSYS

6、其他许多系统信息

常用数据字典:
1、DICT:显示当前用户可访问的所有数据字典视图;
select table_name from dict;
已选择659行。
SQL> show user;
USER 为 "SCOTT"
SQL> select table_name from dict where comments like '%grant%';
TABLE_NAME
------------------------------
USER_COL_PRIVS
ALL_COL_PRIVS
USER_COL_PRIVS_MADE
ALL_COL_PRIVS_MADE
USER_COL_PRIVS_RECD
ALL_COL_PRIVS_RECD
USER_ROLE_PRIVS
USER_SYS_PRIVS
USER_TAB_PRIVS
ALL_TAB_PRIVS
USER_TAB_PRIVS_MADE
ALL_TAB_PRIVS_MADE
USER_TAB_PRIVS_RECD
ALL_TAB_PRIVS_RECD
USER_AUDIT_STATEMENT
COLUMN_PRIVILEGES
ROLE_ROLE_PRIVS
ROLE_SYS_PRIVS
ROLE_TAB_PRIVS
TABLE_PRIVILEGES

2、DICT_COLUMNS:显示数据字典视图每个列的作用
SQL> select * from dict_columns where table_name='DICT';
TABLE_NAME                       COLUMN_NAME
------------------------------ ------------------------------
COMMENTS
--------------------------------------------------------------------------------
DICT                               TABLE_NAME
Name of the object

DICT                               COMMENTS
Text comment on the object

3、dual:用于取得函数的返回值
SQL> select user from dual;
USER
------------------------------
SCOTT

4、global_name:用于显示当前数据库的全名
SQL> select * from global_name;
GLOBAL_NAME
--------------------------------------------------------------------------------
JSSBOOK

5、IND:显示当前用户的索引及索引统计信息
SQL> select index_name,index_type from ind where table_name='EMP';
INDEX_NAME                       INDEX_TYPE
------------------------------ ---------------------------
PK_EMP                               NORMAL

6、OBJ:显示当前用户的对象信息
SQL> select object_name,object_id,created from obj where object_type='TABLE';
OBJECT_NAME                                                                                                                          OBJECT_ID CREATED
-------------------------------------------------------------------------------------------------------------------------------- ---------- --------------
DEPT                                                                                                                                      51155 08-10月-11
EMP                                                                                                                                      51157 08-10月-11
BONUS                                                                                                                                      51159 08-10月-11
SALGRADE                                                                                                                              51160 08-10月-11
OBJECTS                                                                                                                               51170 09-10月-11

7、SEQ:显示当前用户的序列信息

8、SYN:显示当前用户所拥有的同义词及同义词所对应的数据库对象名

9、TAB:显示当前用户所拥有的表、视图、序列
SQL> select * from tab;
TNAME                               TABTYPE        CLUSTERID
------------------------------ ------- ----------
DEPT                               TABLE
EMP                               TABLE
BONUS                               TABLE
SALGRADE                       TABLE
OBJECTS                        TABLE

二、动态性能视图:记录当前实例的活动信息
动态性能视图在实例启动时创建,实例停止时删除;
数据字典从数据文件中读取,动态性能视图从SGA和控制文件中读取;
动态性能视图的所有者为SYS,多数只能由特权用户或DBA用户查询;
维护和调整数据库性能时经常用到;

常用动态性能视图:
1、v$fixed_table:列出所有可用的动态性能视图和动态性能表
SQL> select name from v$fixed_table;
----1383行;
2、V$INSTANCE:列出当前实例的详细信息
SQL> select * from v$instance;
INSTANCE_NUMBER INSTANCE_NAME         HOST_NAME                                                          VERSION            STARTUP_TIME   STATUS        PAR    THREAD# ARCHIVE LOG_SWITCH_WAIT LOGINS          SHU DATABASE_STATUS        INSTANCE_ROLE           ACTIVE_ST BLO
--------------- ---------------- ---------------------------------------------------------------- ----------------- -------------- ------------ --- ---------- ------- --------------- ---------- --- ----------------- ------------------ --------- ---
              1 jssbook          NCUT-ZHJ                                                          10.2.0.1.0            26-12月-11           OPEN         NO             1 STARTED                       ALLOWED          NO  ACTIVE                PRIMARY_INSTANCE   NORMAL    NO
3、V$SGA:显示SGA主要组成部门
SQL> select * from v$sga;
NAME                          VALUE
-------------------- ----------
Fixed Size                1251196
Variable Size              637536388
Database Buffers      838860800
Redo Buffers                7135232
4、V$SGAINFO:显示SGA更详细信息
SQL> select * from v$sgainfo;
NAME                                      BYTES RES
-------------------------------- ---------- ---
Fixed SGA Size                            1251196 No
Redo Buffers                            7135232 No
Buffer Cache Size                  838860800 Yes
Shared Pool Size                  318767104 Yes
Large Pool Size                   209715200 Yes
Java Pool Size                          109051904 Yes
Streams Pool Size                          0 Yes
Granule Size                            8388608 No
Maximum SGA Size                 1484783616 No
Startup overhead in Shared Pool    41943040 No
Free SGA Memory Available                  0
5、V$PARAMETER:取得初始化参数详细信息
6、V$VERSION:取得oracle版本详细信息
SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE        10.2.0.1.0        Production
TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production
7、V$OPTION:显示已经安装的oracle选项
true为安装,false为未安装;
8、V$SESSION:显示会话详细信息
SQL> select SID,serial#,username from v$session;
       SID    SERIAL# USERNAME
---------- ---------- ------------------------------
       126          185 SYSMAN
       127          866 SYS
       128          165 DBSNMP
       131           34 DBSNMP
       134          226 SYSMAN
       137          445 SCOTT
       139           52 SYSMAN
       142            2
       143          991 SYSMAN
       146          439
       150            1
       156            3
       157            3
       158            4
       160            1
       161            1
       162            1
       163            1
       164            1
       165            1
       166            1
       167            1
       168            1
       169            1
       170            1
----username为null表示是后台进程
9、V$PROCESS:与oracle相关的所有进程信息
10、V$BGPROCESS:显示后台进程详细信息
SQL> select * from v$bgprocess where paddr<>'00';
PADDR           PSERIAL# NAME  DESCRIPTION                                                                ERROR
-------- ---------- ----- ---------------------------------------------------------------- ----------
6F27A8DC          1 PMON  process cleanup                                                   ##########
6F27AECC          1 PSP0  process spawner 0                                                   ##########
6F27B4BC          1 MMAN  Memory Manager                                                   ##########
6F27BAAC          1 DBW0  db writer process 0                                                   ##########
6F2807DC          1 ARC0  Archival Process 0                                                   ##########
6F280DCC          1 ARC1  Archival Process 1                                                   ##########
6F2813BC          1 ARC2  Archival Process 2                                                   ##########
6F27C09C          1 LGWR  Redo etc.                                                           ##########
6F27C68C          1 CKPT  checkpoint                                                           ##########
6F27CC7C          1 SMON  System Monitor Process                                           ##########
6F27D26C          1 RECO  distributed recovery                                                   ##########
6F27D85C          1 CJQ0  Job Queue Coordinator                                            ##########
6F2819AC          1 QMNC  AQ Coordinator                                                   ##########
6F27DE4C          1 MMON  Manageability Monitor Process                                    ##########
6F27E43C          1 MMNL  Manageability Monitor Process 2                                   ##########
11、v$database:当前数据库详细信息
12、v$controlfile:当前控制文件信息
SQL> col name format a30
SQL> select * from v$controlfile;

STATUS        NAME                               IS_ BLOCK_SIZE FILE_SIZE_BLKS
------- ------------------------------ --- ---------- --------------
        D:\ORACLE_DATABASE\JSSBOOK\JSS NO        16384                 430
        BOOK\CONTROL01.CTL

        D:\ORACLE_DATABASE\JSSBOOK\JSS NO        16384                 430
        BOOK\CONTROL02.CTL

        D:\ORACLE_DATABASE\JSSBOOK\JSS NO        16384                 430
        BOOK\CONTROL03.CTL

SQL> col name format a50
SQL> select * from v$controlfile;

STATUS        NAME                                                   IS_ BLOCK_SIZE FILE_SIZE_BLKS
------- -------------------------------------------------- --- ---------- --------------
        D:\ORACLE_DATABASE\JSSBOOK\JSSBOOK\CONTROL01.CTL   NO            16384             430
        D:\ORACLE_DATABASE\JSSBOOK\JSSBOOK\CONTROL02.CTL   NO            16384             430
        D:\ORACLE_DATABASE\JSSBOOK\JSSBOOK\CONTROL03.CTL   NO            16384             430
13、v$datafile:当前数据文件信息
SQL> select file#,name,bytes from v$datafile;
     FILE# NAME                                                    BYTES
---------- -------------------------------------------------- ----------
         1 D:\ORACLE_DATABASE\JSSBOOK\JSSBOOK\SYSTEM01.DBF     513802240
         2 D:\ORACLE_DATABASE\JSSBOOK\JSSBOOK\UNDOTBS01.DBF    319815680
         3 D:\ORACLE_DATABASE\JSSBOOK\JSSBOOK\SYSAUX01.DBF     335544320
         4 D:\ORACLE_DATABASE\JSSBOOK\JSSBOOK\USERS01.DBF         5242880
         5 D:\ORA_DATABASE\JSSBOOK\SCOTT_TBS01.DBF               104857600
         6 D:\ORA_DATABASE\JSSBOOK\SCOTT_TBS02.DBF              1048576000
         7 D:\ORA_DATABASE\JSSBOOK\SCOTT_TBS03.DBF              2097152000
14、v$dbfile:数据文件编号
SQL> select * from v$dbfile;
     FILE# NAME
---------- --------------------------------------------------
         1 D:\ORACLE_DATABASE\JSSBOOK\JSSBOOK\SYSTEM01.DBF
         2 D:\ORACLE_DATABASE\JSSBOOK\JSSBOOK\UNDOTBS01.DBF
         3 D:\ORACLE_DATABASE\JSSBOOK\JSSBOOK\SYSAUX01.DBF
         4 D:\ORACLE_DATABASE\JSSBOOK\JSSBOOK\USERS01.DBF
         5 D:\ORA_DATABASE\JSSBOOK\SCOTT_TBS01.DBF
         6 D:\ORA_DATABASE\JSSBOOK\SCOTT_TBS02.DBF
         7 D:\ORA_DATABASE\JSSBOOK\SCOTT_TBS03.DBF
15、v$logfile:日志文件信息
SQL> select group#,member from v$logfile;
    GROUP# MEMBER
----------
         1 D:\ORACLE_DATABASE\JSSBOOK\JSSBOOK\REDO01.LOG
         2 D:\ORACLE_DATABASE\JSSBOOK\JSSBOOK\REDO02.LOG
         3 D:\ORACLE_DATABASE\JSSBOOK\JSSBOOK\REDO03.LOG
16、v$log:显示日志详细信息
SQL> select group#,members,bytes,status from v$log;
    GROUP#    MEMBERS           BYTES STATUS
---------- ---------- ---------- ----------------
         1            1        52428800 INACTIVE
         2            1        52428800 INACTIVE
         3            1        52428800 CURRENT
17、v$thread:重做线程详细信息
18、v$lock:显示锁信息,与v$session连接可以查询占有锁的会话、等待锁的会话;
SQL> select a.username,a.machine,b.lmode,b.request
  2  from v$session a, v$lock b
  3  where a.sid=b.sid and a.type='USER';
SQL> 未选定行
19、v$tablespace:显示表空间信息
SQL> select * from v$tablespace;
       TS# NAME                                               INC BIG FLA ENC
---------- -------------------------------------------------- --- --- --- ---
         0 SYSTEM                                              YES NO  YES
         1 UNDOTBS1                                              YES NO  YES
         2 SYSAUX                                              YES NO  YES
         3 TEMP                                               NO  NO  YES
         4 USERS                                              YES NO  YES
         5 SCOTT_TBS                                              YES NO  YES
20、v$tempfile:显示当前数据库所包含的临时文件
SQL> select name from v$tempfile;
NAME
--------------------------------------------------
D:\ORACLE_DATABASE\JSSBOOK\JSSBOOK\TEMP01.DBF
。。。。。。

====================================================================================================================================
启动服务OracleServiceDEMO--------运行DEMO实例
D:\>set oracle_sid=DEMO
D:\>sqlplus sys/DEMO as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on 星期一 12月 26 17:48:13 2011
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
SQL> set lines 10000
SQL> select * from v$instance;
ORA-01034: ORACLE not available
SQL> startup open
ORACLE 例程已经启动。
Total System Global Area 1484783616 bytes
Fixed Size                    1251196 bytes
Variable Size                  637536388 bytes
Database Buffers          838860800 bytes
Redo Buffers                    7135232 bytes
SQL> select * from v$instance;
INSTANCE_NUMBER INSTANCE_NAME         HOST_NAME                                                          VERSION            STARTUP_TIME   STATUS        PAR    THREAD# ARCHIVE LOG_SWITCH_WAIT LOGINS          SHU DATABASE_STATUS        INSTANCE_ROLE           ACTIVE_ST BLO
--------------- ---------------- ---------------------------------------------------------------- ----------------- -------------- ------------ --- ---------- ------- --------------- ---------- --- ----------------- ------------------ --------- ---
              1 demo                 NCUT-ZHJ                                                          10.2.0.1.0            26-12月-11           OPEN         NO             1 STOPPED                       ALLOWED          NO  ACTIVE                PRIMARY_INSTANCE   NORMAL    NO

SQL> select * from v$database;
      DBID NAME      CREATED            RESETLOGS_CHANGE# RESETLOGS_TIME PRIOR_RESETLOGS_CHANGE# PRIOR_RESETLOG LOG_MODE         CHECKPOINT_CHANGE# ARCHIVE_CHANGE# CONTROL CONTROLFILE_CR CONTROLFILE_SEQUENCE# CONTROLFILE_CHANGE# CONTROLFILE_TI OPEN_RESETL VERSION_TIME   OPEN_MODE  PROTECTION_MODE      PROTECTION_LEVEL     REMOTE_A ACTIVATION# SWITCHOVER# DATABASE_ROLE    ARCHIVELOG_CHANGE# ARCHIVEL SWITCHOVER_STATUS    DATAGUAR GUARD_S SUPPLEME SUP SUP FOR PLATFORM_ID PLATFORM_NAME                                                                                               RECOVERY_TARGET_INCARNATION# LAST_OPEN_INCARNATION# CURRENT_SCN FLASHBACK_ON          SUP SUP DB_UNIQUE_NAME                 STANDBY_BECAME_PRIMARY_SCN FS_FAILOVER_STATUS          FS_FAILOVER_CURRENT_TARGET         FS_FAILOVER_THRESHOLD FS_FAIL FS_FAILOVER_OBSERVER_HOST
---------- --------- -------------- ----------------- -------------- ----------------------- -------------- ------------ ------------------ --------------- ------- -------------- --------------------- ------------------- -------------- ----------- -------------- ---------- -------------------- -------------------- -------- ----------- ----------- ---------------- ------------------ -------- -------------------- -------- ------- -------- --- --- --- ----------- ----------------------------------------------------------------------------------------------------- ---------------------------- ---------------------- ----------- ------------------ --- --- ------------------------------ -------------------------- --------------------- ------------------------------ --------------------- ------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
3514387243 DEMO      19-12月-11                     1 19-12月-11                           0                    NOARCHIVELOG             313670             289639 CURRENT 19-12月-11                             326              313822 26-12月-11     NOT ALLOWED 19-12月-11     READ WRITE MAXIMUM PERFORMANCE  UNPROTECTED            ENABLED   3514397227  3514397227 PRIMARY                               0 DISABLED SESSIONS ACTIVE      DISABLED NONE        NO         NO  NO  NO               7 Microsoft Windows IA (32-bit)                                                                                                          1                         1        313925 NO                  NO  NO  DEMO                                                          0 DISABLED                                                                     0

SQL> select * from v$dbfile;
     FILE# NAME
---------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
         1 D:\ORACLE_DATABASE\DEMO\SYSTEM01.DBF
         2 D:\ORACLE_DATABASE\DEMO\UNDOTBS1.DBF
         3 D:\ORACLE_DATABASE\DEMO\SYSAUX01.DBF

SQL> select * from v$controlfile;
STATUS        NAME                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  IS_ BLOCK_SIZE FILE_SIZE_BLKS
------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --- ---------- --------------
        D:\ORACLE_DATABASE\DEMO\CONTROL01.CTL                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  NO           16384            430
        D:\ORACLE_DATABASE\DEMO\CONTROL02.CTL                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  NO           16384            430
        D:\ORACLE_DATABASE\DEMO\CONTROL03.CTL                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  NO           16384            430

SQL>

=====================================================================================================================================
启动服务OracleServiceJSSBOOK
D:\>set oracle_sid
oracle_sid=DEMO
D:\>set oracle_sid=JSSBOOK
D:\>sqlplus sys/sys as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on 星期一 12月 26 17:55:35 2011
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL> startup open
ORA-01081: 无法启动已在运行的 ORACLE - 请首先关闭它
SQL> select instance_name from v$instance;
INSTANCE_NAME
----------------
jssbook

SQL> exit
With the Partitioning, OLAP and Data Mining options 断开
D:\>
D:\>set oracle_sid
oracle_sid=JSSBOOK
D:\>set oracle_sid=DEMO
D:\>sqlplus sys/sys as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on 星期一 12月 26 17:59:01 2011
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL> select instance_name from v$instance;
INSTANCE_NAME
----------------
demo

=====================================================================================================================
总结:
一个机器可以建多个实例,但只能有一个实例处于运行中,取决于oracle_sid;

第6章  管理控制文件
----控制文件的增(多元化)、删(有损坏时)、改(改文件、改参数)、查
一、控制文件简介
1、控制文件较小,一般2M—10M之间,主要记录了以下信息:
数据库名称;
数据文件名称及位置;
日志文件名称及位置;
表空间名称;
当前日志序列号;
检查点信息;
日志历史信息;
RMAN信息;
2、如果不使用RMAN,在不改变永久参数的情况下,控制文件的大小保持不变,个数最多为8个;
二、多元化控制文件
1、使用pfile多元化控制文件:
(1)手工修改初始化参数:control_file
启动OracleServiceDEMO服务;
D:\>set oracle_sid=DEMO
D:\>sqlplus sys/DEMO as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on 星期五 12月 30 10:26:51 2011
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
已连接到空闲例程。
SQL> show parameter instance
ORA-01034: ORACLE not available
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 1484783616 bytes
Fixed Size                  1251196 bytes
Variable Size             637536388 bytes
Database Buffers          838860800 bytes
Redo Buffers                7135232 bytes
数据库装载完毕。
数据库已经打开。
SQL>
修改C:\oracle\product\10.2.0\db_1\database\initDEMO.ora:
    control_files='D:\Oracle_Database\DEMO\control01.ctl','E:\Oracle_Database\DEMO\control02.ctl','F:\Oracle_Database\DEMO\control03.ctl'
(2)关闭数据库
SQL> shutdown immedi
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL>
(3)复制控制文件
安装数据库时的三个控制文件时互为镜像的;
SQL> host copy D:\Oracle_Database\DEMO\control02.ctl E:\Oracle_Database\DEMO\control02.ctl
系统找不到指定的路径。
已复制         0 个文件。
SQL> host mkdir E:\Oracle_Database\DEMO
SQL> host mkdir F:\Oracle_Database\DEMO
SQL> host copy D:\Oracle_Database\DEMO\control02.ctl E:\Oracle_Database\DEMO\control02.ctl
已复制         1 个文件。
SQL> host copy D:\Oracle_Database\DEMO\control03.ctl E:\Oracle_Database\DEMO\control03.ctl---------导致后面ora-00205错
已复制         1 个文件。
SQL>
(4)启动数据库
使用修改过的pfile启动数据库;
SQL> startup pfile=%oracle_home%\database\initDEMO.ora
ORACLE 例程已经启动。
Total System Global Area 1484783616 bytes
Fixed Size                  1251196 bytes
Variable Size             637536388 bytes
Database Buffers          838860800 bytes
Redo Buffers                7135232 bytes
数据库装载完毕。
数据库已经打开。
SQL> show parameter controlfile
SQL> show parameter control_file
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
control_file_record_keep_time        integer     7
control_files                        string      D:\ORACLE_DATABASE\DEMO\CONTRO
                                                 L01.CTL, D:\ORACLE_DATABASE\DE
                                                 MO\CONTROL02.CTL, D:\ORACLE_DA
                                                 TABASE\DEMO\CONTROL03.CTL
SQL>
SQL> show parameter spfile
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                               string
SQL> host set oracle_home
环境变量 oracle_home 没有定义
SQL> shutdown
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup pfile=C:\oracle\product\10.2.0\db_1\database\initDEMO.ora
ORACLE 例程已经启动。
Total System Global Area 1484783616 bytes
Fixed Size                  1251196 bytes
Variable Size             637536388 bytes
Database Buffers          838860800 bytes
Redo Buffers                7135232 bytes
ORA-00205: ?????????, ??????, ???????
The system could not find a control file of the specified name and size.
SQL> show parameter control_file
NAME                                 TYPE                   VALUE
------------------------------------ ---------------------- --------------------
----------
control_file_record_keep_time        integer                7
control_files                        string                 D:\ORACLE_DATABASE\DEMO\CONTRO
                                                            L01.CTL, E:\ORACLE_DATABASE\DE
                                                            MO\CONTROL02.CTL, F:\ORACLE_DA
                                                            TABASE\DEMO\CONTROL03.CTL
SQL>
SQL> shutdown abort
ORACLE 例程已经关闭。
SQL> host copy D:\Oracle_Database\DEMO\control02.ctl E:\Oracle_Database\DEMO\control02.ctl
已复制         1 个文件。
SQL> host copy D:\Oracle_Database\DEMO\control03.ctl F:\Oracle_Database\DEMO\control03.ctl
已复制         1 个文件。
SQL> startup pfile=C:\oracle\product\10.2.0\db_1\database\initDEMO.ora
ORACLE 例程已经启动。
Total System Global Area 1484783616 bytes
Fixed Size                  1251196 bytes
Variable Size             637536388 bytes
Database Buffers          838860800 bytes
Redo Buffers                7135232 bytes
数据库装载完毕。
数据库已经打开。
SQL> show parameter control_file
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
control_file_record_keep_time        integer     7
control_files                        string      D:\ORACLE_DATABASE\DEMO\CONTRO
                                                 L01.CTL, E:\ORACLE_DATABASE\DE
                                                 MO\CONTROL02.CTL, F:\ORACLE_DA
                                                 TABASE\DEMO\CONTROL03.CTL
SQL>

2、使用spfile多元化控制文件
执行startup 命令时(无参数),Oracle启动的顺序是
1 寻找spfile.ora 如果没有
2 寻找spfile.ora 如果没有
3 寻找init.ora 如果没有
4.报错
(1)修改初始化参数control_files
SQL> alter system set control_files='D:\Oracle_Database\Demo\Control01.ctl','D:\Oracletest\Control02.ctl' SCOPE=SPFILE;
系统已更改。
SQL> show parameter control_files
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
control_files                        string      D:\ORACLE_DATABASE\DEMO\CONTRO
                                                 L01.CTL, E:\ORACLE_DATABASE\DE
                                                 MO\CONTROL02.CTL, F:\ORACLE_DA
                                                 TABASE\DEMO\CONTROL03.CTL
SQL>
(2)关闭数据库
(3)复制文件
(4)启动数据库
SQL> show parameter spfile
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                               string      C:\ORACLE\PRODUCT\10.2.0\DB_1\
                                                 DATABASE\SPFILEDEMO.ORA
SQL> show parameter control_files
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
control_files                        string      D:\ORACLE_DATABASE\DEMO\CONTRO
                                                 L01.CTL, D:\ORACLETEST\CONTROL
                                                 02.CTL
SQL>

三、建立控制文件
1、控制文件全部丢失
把d盘的两个控制文件损坏(改后缀);
启动时报ora-00205错:The system could not find a control file of the specified name and size.
(1)nomount状态下修改参数control_files参数
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 1484783616 bytes
Fixed Size                  1251196 bytes
Variable Size             637536388 bytes
Database Buffers          838860800 bytes
Redo Buffers                7135232 bytes
ORA-00205: ?????????, ??????, ???????
SQL> startup nomount
ORA-01081: ????????? ORACLE - ??????
SQL> shutdown abort
ORACLE 例程已经关闭。
SQL> startup nomount
ORACLE 例程已经启动。
Total System Global Area 1484783616 bytes
Fixed Size                  1251196 bytes
Variable Size             637536388 bytes
Database Buffers          838860800 bytes
Redo Buffers                7135232 bytes
SQL> alter system set control_files='d:\Oracle_database\demo\control01.ctl','d:\
oracletest\control02.ctl' scope=spfile;
系统已更改。
SQL>
(2)重启数据库至nomount状态
SQL> shutdown immediate
ORA-01507: ??????
ORACLE 例程已经关闭。
SQL> startup nomount
ORACLE 例程已经启动。
Total System Global Area 1484783616 bytes
Fixed Size                  1251196 bytes
Variable Size             637536388 bytes
Database Buffers          838860800 bytes
Redo Buffers                7135232 bytes
SQL> show parameter control_files
NAME                                 TYPE
------------------------------------ ----------------------
VALUE
------------------------------
control_files                        string
D:\ORACLE_DATABASE\DEMO\CONTRO
L01.CTL, D:\ORACLETEST\CONTROL
02.CTL
SQL>
(3)建立控制文件
SQL> CREATE CONTROLFILE DATABASE demo NORESETLOGS
     LOGFILE
        GROUP 1 'D:\Oracle_Database\DEMO\redo01.log' size 10M,
        GROUP 2 'D:\Oracle_Database\DEMO\redo02.log' size 10M
     DATAFILE
        'D:\Oracle_Database\DEMO\system01.dbf',
        'D:\Oracle_Database\DEMO\sysaux01.dbf',
        'D:\Oracle_Database\DEMO\undotbs1.dbf',
        'D:\Oracle_Database\DEMO\temp.dbf'
     CHARACTER SET ZHS16GBK;
 ----------ORA-01967 invalid option for CREATE CONTROLFILE
SQL> CREATE CONTROLFILE DATABASE demo NORESETLOGS
     LOGFILE
        GROUP 1 'D:\Oracle_Database\DEMO\redo01.log' size 10M,
        GROUP 2 'D:\Oracle_Database\DEMO\redo02.log' size 10M
     DATAFILE
        'D:\Oracle_Database\DEMO\system01.dbf',
        'D:\Oracle_Database\DEMO\sysaux01.dbf',
        'D:\Oracle_Database\DEMO\undotbs1.dbf'
     CHARACTER SET ZHS16GBK;
(4)打开数据库
SQL> alter database open;
数据库已更改。
SQL>
(5)建立临时文件
SQL> alter tablespace temp add tempfile 'd:\Oracle_Database\DEMO\temp.dbf'
  2  size 10M REUSE AUTOEXTEND OFF;
表空间已更改。
SQL>
2、修改永久参数
(1)nomount状态下重建控制文件
     CREATE CONTROLFILE REUSE DATABASE "demo" NORESETLOGS
        MAXLOGFILES 10
        MAXLOGMEMBERS 4
     LOGFILE
        GROUP 1 'D:\Oracle_Database\DEMO\redo01.log' size 10M,
        GROUP 2 'D:\Oracle_Database\DEMO\redo02.log' size 10M
     DATAFILE
        'D:\Oracle_Database\DEMO\system01.dbf',
        'D:\Oracle_Database\DEMO\sysaux01.dbf',
        'D:\Oracle_Database\DEMO\undotbs1.dbf'
     CHARACTER SET ZHS16GBK;
(2)打开数据库
(3)建立临时文件
3、修改数据库名称
----修改初始化参数db_name;重建控制文件;
(1)修改初始化参数db_name;
db_name不能通过alter database修改spfile,只能通过编辑pfile修改;
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 1484783616 bytes
Fixed Size                  1251196 bytes
Variable Size             637536388 bytes
Database Buffers          838860800 bytes
Redo Buffers                7135232 bytes
数据库装载完毕。
数据库已经打开。
SQL> show parameter spfile;
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                               string      C:\ORACLE\PRODUCT\10.2.0\DB_1\
                                                 DATABASE\SPFILEDEMO.ORA
SQL> create pfile from spfile;
文件已创建。
----修改生成的initDEMO.ora,db_name改为example;
生成临时spfile:
SQL> create spfile='spfiletemp.ora' from pfile='initDEMO.ora';
文件已创建。
(2)使用新的spfile重启数据库至nomount状态;
SQL> host copy C:\oracle\product\10.2.0\db_1\database\spfiletemp.ora C:\oracle\product\10.2.0\db_1\database\spfiledemo.ora
已复制         1 个文件。
SQL> startup nomount
ORACLE 例程已经启动。
Total System Global Area 1484783616 bytes
Fixed Size                  1251196 bytes
Variable Size             637536388 bytes
Database Buffers          838860800 bytes
Redo Buffers                7135232 bytes
SQL> show parameter db_name
NAME                                 TYPE
------------------------------------ ----------------------
VALUE
------------------------------
db_name                              string
example
SQL>
(3)建立控制文件;
SQL> CREATE CONTROLFILE REUSE SET DATABASE "example" RESETLOGS
     LOGFILE
        GROUP 1 'D:\Oracle_Database\DEMO\redo01.log' size 10M,
        GROUP 2 'D:\Oracle_Database\DEMO\redo02.log' size 10M
     DATAFILE
        'D:\Oracle_Database\DEMO\system01.dbf',
        'D:\Oracle_Database\DEMO\sysaux01.dbf',
        'D:\Oracle_Database\DEMO\undotbs1.dbf'
     CHARACTER SET ZHS16GBK;
----REUSE:覆盖现有控制文件
(4)打开数据库
SQL> alter database open resetlogs;
数据库已更改。
(5)增加临时文件
SQL> alter tablespace temp add tempfile 'd:\Oracle_Database\DEMO\temp.dbf'
  2  size 10M reuse autoextend off;
表空间已更改。

4、删除控制文件
(1)修改初始化参数control_files
SQL> show parameter control_files;
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
control_files                        string      D:\ORACLE_DATABASE\DEMO\CONTRO
                                                 L01.CTL, D:\ORACLETEST\CONTROL
                                                 02.CTL
SQL> alter system set control_files='d:\Oracle_database\demo\control01.ctl' scop
e=spfile;
系统已更改。
(2)重启数据库
SQL> show parameter control_files;
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
control_files                        string      D:\ORACLE_DATABASE\DEMO\CONTRO
                                                 L01.CTL
(3)多元化控制文件

5、使用OEM管理控制文件

第7章  管理重做日志
----重做日志的增(add)删(drop)改(rename)查
日志文件组(redo logfile group),多组的话,循环写;
日志文件成员(redo logfile member),一组至少一个,多个的话互为镜像;
DEMO有两个日志文件组,每个组有一个成员:redo01.log,redo02.log;
SCN(System Change Number):记录数据库变化的唯一标示号,执行事务操作时顺序递增;
日志序列号:日志切换时顺序递增;
实例恢复:当出现断电、硬件故障等时,实例失败退出(相当于shutdown abort),再次启动时,由后台进程SMON执行实例恢复(根据SCN比较控制文件、数据文件、日志文件的不同步,执行redo和undo,使他们达到一致状态);
1、增加日志文件组
SQL> alter database add logfile group 3 'd:\Oracle_Database\DEMO\redo03.log'
  2  size 10M;
数据库已更改。
SQL> col member format a50;
SQL> select group#,member from v$logfile;
    GROUP# MEMBER
---------- --------------------------------------------------
         2 D:\ORACLE_DATABASE\DEMO\REDO02.LOG
         1 D:\ORACLE_DATABASE\DEMO\REDO01.LOG
         3 D:\ORACLE_DATABASE\DEMO\REDO03.LOG
SQL>
2、增加日志文件成员
alter database add logfile member
'd:\Oracle_Database\DEMO\redo01b.log' to group 1,
'd:\Oracle_Database\DEMO\redo02b.log' to group 2,
'd:\Oracle_Database\DEMO\redo03b.log' to group 3;
SQL> select group#,member from v$logfile;
    GROUP# MEMBER
---------- --------------------------------------------
         2 D:\ORACLE_DATABASE\DEMO\REDO02.LOG
         1 D:\ORACLE_DATABASE\DEMO\REDO01.LOG
         3 D:\ORACLE_DATABASE\DEMO\REDO03.LOG
         1 D:\ORACLE_DATABASE\DEMO\REDO01B.LOG
         2 D:\ORACLE_DATABASE\DEMO\REDO02B.LOG
         3 D:\ORACLE_DATABASE\DEMO\REDO03B.LOG
已选择6行。
3、删除日志文件成员
把redo03b.log改名或删除;
SQL> alter database drop logfile member 'd:\Oracle_Database\DE
数据库已更改。
SQL> select group#,member from v$logfile;
    GROUP# MEMBER
---------- --------------------------------------------------
         2 D:\ORACLE_DATABASE\DEMO\REDO02.LOG
         1 D:\ORACLE_DATABASE\DEMO\REDO01.LOG
         3 D:\ORACLE_DATABASE\DEMO\REDO03.LOG
         1 D:\ORACLE_DATABASE\DEMO\REDO01B.LOG
         2 D:\ORACLE_DATABASE\DEMO\REDO02B.LOG
SQL>
4、删除日志文件组
SQL> alter database drop logfile group 3;
数据库已更改。
SQL> select group#,member from v$logfile;

    GROUP# MEMBER
---------- -----------------------------------------
         2 D:\ORACLE_DATABASE\DEMO\REDO02.LOG
         1 D:\ORACLE_DATABASE\DEMO\REDO01.LOG
         1 D:\ORACLE_DATABASE\DEMO\REDO01B.LOG
         2 D:\ORACLE_DATABASE\DEMO\REDO02B.LOG
SQL>
不能删除当前正在使用的日志文件,要删除需先手工进行日志切换:
SQL>alter system switch logfile;
5、清除重做日志
SQL>alter database clear logfile group 2;
6、修改重做日志
(1)确定重做日志状态
select a.group#,a.status from v$log a, v$logfile b
where a.group#=b.group#
and b.member='D:\ORACLE_DATABASE\DEMO\REDO02B.LOG';
SQL> select group#,status from v$log;
    GROUP# STATUS
---------- ----------------
         1 UNUSED
         2 CURRENT
(2)移动位置
SQL>  host copy d:\Oracle_Database\DEMO\REDO02B.LOG e:\Oracle_Database\DEMO\REDO02B.LOG
已复制         1 个文件。
SQL> alter system switch logfile;
系统已更改。
SQL>  host copy d:\Oracle_Database\DEMO\REDO01B.LOG e:\Oracle_Database\DEMO\REDO
01B.LOG
已复制         1 个文件。
SQL>
(3)改变控制文件中记录的重做日志文件指针
SQL> alter database rename file 'D:\Oracle_Database\DEMO\REDO01B.LOG' to 'E:\Ora
cle_Database\DEMO\REDO01B.LOG';
数据库已更改。
SQL> alter system switch logfile;
系统已更改。
SQL> alter database rename file 'D:\Oracle_Database\DEMO\REDO02B.LOG' to 'E:\Ora
cle_Database\DEMO\REDO02B.LOG';
数据库已更改。
SQL>
7、使用OEM管理重做日志

第8章  管理归档日志
----归档日志的增删改查(archive_log_dest_n)
归档日志(archive log):非活动重做日志的备份,恢复数据库时,通过数据文件备份、归档日志、重做日志可以完全恢复数据库;
1、改变日志模式
SQL> select log_mode from v$database;
LOG_MODE
------------
NOARCHIVELOG
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount
ORACLE 例程已经启动。
Total System Global Area 1484783616 bytes
Fixed Size                  1251196 bytes
Variable Size             637536388 bytes
Database Buffers          838860800 bytes
Redo Buffers                7135232 bytes
数据库装载完毕。
SQL> alter database archivelog;
数据库已更改。
SQL> alter database open;
数据库已更改。
SQL> select log_mode from v$database;
LOG_MODE
------------
ARCHIVELOG
SQL>
2、配置归档位置和文件名格式
SQL> show parameter log_archive_dest
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest                     string
log_archive_dest_1                   string      location=d:\Oracle_Database\archive
log_archive_dest_10                  string
log_archive_dest_2                   string
log_archive_dest_3                   string
log_archive_dest_4                   string
log_archive_dest_5                   string
log_archive_dest_6                   string
log_archive_dest_7                   string
log_archive_dest_8                   string
log_archive_dest_9                   string
log_archive_dest_state_1             string      enable
log_archive_dest_state_10            string      enable
log_archive_dest_state_2             string      enable
log_archive_dest_state_3             string      enable
log_archive_dest_state_4             string      enable
log_archive_dest_state_5             string      enable
log_archive_dest_state_6             string      enable
log_archive_dest_state_7             string      enable
log_archive_dest_state_8             string      enable
log_archive_dest_state_9             string      enable
SQL>
----使用log_archive_dest_n配置多个归档位置,本地或远程,互为镜像;
SQL> alter system set log_archive_dest_2='location=E:\Oracle_Database\archive';
系统已更改。
SQL> alter system set log_archive_dest_3='location=F:\Oracle_Database\archive';
系统已更改。
SQL> show parameter log_archive_dest
3、显示归档日志信息
(1)使用archive log list命令
SQL> archive log list;
数据库日志模式            存档模式
自动存档             启用
存档终点            F:\Oracle_Database\archive
最早的联机日志序列     7
下一个存档日志序列   8
当前日志序列           8
SQL>
(2)显示归档日志操作模式
SQL> select name,log_mode from v$database;
NAME      LOG_MODE
--------- ------------
EXAMPLE   ARCHIVELOG
(3)显示归档日志位置
SQL> select dest_name,destination,status from v$archive_dest;
DEST_NAME                      DESTINATION                    STATUS
------------------------------ ------------------------------ ---------
LOG_ARCHIVE_DEST_1             d:\Oracle_Database\archive     VALID
LOG_ARCHIVE_DEST_2             E:\Oracle_Database\archive     VALID
LOG_ARCHIVE_DEST_3             F:\Oracle_Database\archive     VALID
LOG_ARCHIVE_DEST_4                                            INACTIVE
LOG_ARCHIVE_DEST_5                                            INACTIVE
LOG_ARCHIVE_DEST_6                                            INACTIVE
LOG_ARCHIVE_DEST_7                                            INACTIVE
LOG_ARCHIVE_DEST_8                                            INACTIVE
LOG_ARCHIVE_DEST_9                                            INACTIVE
LOG_ARCHIVE_DEST_10                                           INACTIVE
已选择10行。
SQL>
4、使用OEM管理归档日志

第9章  管理表空间和数据文件
----表空间和数据文件的增(建立)删改(修改、扩展、移动)查
一、建立表空间
1、建立本地管理表空间(local managed tablespace)
SQL> create tablespace user01 datafile 'd:/Oracle_Database/DEMO/user01.dbf'
  2  size 10M uniform size 128k;
表空间已创建。
----uniform:指定区尺寸;
SQL> create tablespace user02 datafile 'd:/Oracle_Database/DEMO/user02.dbf'
  2  size 10M autoallocate;
----autoallocate:区尺寸大小由系统自动分配;
表空间已创建。
2、建立字典管理表空间(dictionary-managed tablespace)
为与早期版本兼容,本地管理表空间更优,Oracle建议采用本地管理表空间;
3、建立大文件表空间
10g新特性,最多可以有4G可数据块,若数据块为8k,则可达32TB;大文件表空间只能包含一个数据文件;
create bigfile tablespace big_tbs datafile 'd:/Oracle_Database/DEMO/big.dbf' size 100G;
4、建立undo表空间
SQL> create undo tablespace undotbs datafile 'd:/Oracle_Database/DEMO/undotbs.dbf' size 10M;
表空间已创建。
5、建立临时表空间
(1)建立本地管理临时表空间
SQL> create temporary tablespace temp01 tempfile 'd:/Oracle_Database/DEMO/temp01.dbf' size 10M uniform size 256k;
表空间已创建。
(2)建立大文件临时表空间
SQL>create bigfile temporary tablespace temp02 tempfile 'd:/Oracle_Database/DEMO/temp02.dbf' size 100G;
(3)使用临时表空间组
SQL> create temporary tablespace temp02 tempfile 'd:/Oracle_Database/DEMO/temp02.dbf' size 5M tablespace group group1;
表空间已创建。
SQL> alter tablespace temp01 tablespace group group2;
表空间已更改。
SQL> alter tablespace temp01 tablespace group group1;
表空间已更改。
6、建立非标准块表空间
SQL> show parameter db_block_size
NAME                                 TYPE        VALUE
------------------------------------ ----------- ----------
db_block_size                        integer     8192
SQL>
(1)分配非标准数据高速缓存
SQL> show parameter db_cache_size
NAME                                 TYPE        VALUE
------------------------------------ ----------- ----------
db_cache_size                        big integer 800M
SQL> alter system set db_cache_size=700M;
系统已更改。
SQL> alter system set db_16K_cache_size=100M;
alter system set db_16K_cache_size=100M
*
第 1 行出现错误:
ORA-02097: 无法修改参数, 因为指定的值无效
ORA-00384: 没有足够的内存来增加高速缓存的大小
SQL> show parameter db_cache_size
NAME                                 TYPE        VALUE
------------------------------------ ----------- --------------------------
db_cache_size                        big integer 704M
SQL> alter system set db_16K_cache_size=10M;
系统已更改。
(2)建立非标准块表空间
SQL> create tablespace tbs_16k datafile 'd:\Oracle_Database\DEMO\tbs_dbf' size 10M blocksize 16k;
表空间已创建。
SQL>
二、维护表空间
1、改变表空间可用性(脱机、联机)
SQL> alter tablespace user01 offline;
表空间已更改。
SQL> alter tablespace user01 online;
表空间已更改。
SQL> alter database datafile 'D:\ORACLE_DATABASE\DEMO\USER01.DBF' offline
数据库已更改。
SQL> alter database datafile 'D:\ORACLE_DATABASE\DEMO\USER01.DBF' online;
alter database datafile 'D:\ORACLE_DATABASE\DEMO\USER01.DBF' online
*
第 1 行出现错误:
ORA-01113: 文件 4 需要介质恢复
ORA-01110: 数据文件 4: 'D:\ORACLE_DATABASE\DEMO\USER01.DBF'
SQL> select * from v$dbfile;
     FILE# NAME
---------- ----------------------------------------------------
         2 D:\ORACLE_DATABASE\DEMO\UNDOTBS1.DBF
         3 D:\ORACLE_DATABASE\DEMO\SYSAUX01.DBF
         1 D:\ORACLE_DATABASE\DEMO\SYSTEM01.DBF
         4 D:\ORACLE_DATABASE\DEMO\USER01.DBF
         5 D:\ORACLE_DATABASE\DEMO\USER02.DBF
         6 D:\ORACLE_DATABASE\DEMO\UNDOTBS.DBF
         7 D:\ORACLE_DATABASE\DEMO\TBS_DBF
已选择7行。
SQL> alter database datafile 6 offline;
数据库已更改。
SQL> alter database datafile 6 online;
alter database datafile 6 online
*
第 1 行出现错误:
ORA-01113: 文件 6 需要介质恢复
ORA-01110: 数据文件 6: 'D:\ORACLE_DATABASE\DEMO\UNDOTBS.DBF'
SQL> col name format a50;
SQL> select file#,name,status from v$datafile;
     FILE# NAME                                               STATUS
---------- -------------------------------------------------- -------
         1 D:\ORACLE_DATABASE\DEMO\SYSTEM01.DBF               SYSTEM
         2 D:\ORACLE_DATABASE\DEMO\UNDOTBS1.DBF               ONLINE
         3 D:\ORACLE_DATABASE\DEMO\SYSAUX01.DBF               ONLINE
         4 D:\ORACLE_DATABASE\DEMO\USER01.DBF                 RECOVER
         5 D:\ORACLE_DATABASE\DEMO\USER02.DBF                 ONLINE
         6 D:\ORACLE_DATABASE\DEMO\UNDOTBS.DBF                RECOVER
         7 D:\ORACLE_DATABASE\DEMO\TBS_DBF                    ONLINE
已选择7行。
2、改变表空间可读写状态
SQL> alter tablespace user02 read only;
表空间已更改。
SQL> alter tablespace user02 read write;
表空间已更改。
3、修改表空间名称
SQL> alter tablespace user02 rename to user03;
表空间已更改。
4、修改数据库用户的默认表空间
SQL> alter database default tablespace user01;
数据库已更改。
SQL> alter database default temporary tablespace temp01;
数据库已更改。
SQL> alter database default temporary tablespace group1;
数据库已更改。
5、删除表空间
SQL> drop tablespace tbs_16k including contents and datafiles;
表空间已删除。
三、扩展表空间
1、为表空间增加数据文件
SQL> alter tablespace user01 add datafile 'd:\Oracle_Database\DEMO\user01_2.dbf' size 10M;
表空间已更改。
2、改变数据文件尺寸
SQL> alter database datafile 'd:\Oracle_Database\DEMO\user02.dbf' resize 20M;
数据库已更改。
3、允许数据文件自动扩展
SQL> alter database datafile 'd:\Oracle_Database\DEMO\user02.dbf' autoextend on next 10M maxsize 1G;
数据库已更改。
四、移动数据文件
1、open状态下移动数据文件
(1)offline表空间
(2)移动文件
(3)alter tablespace
(4)online表空间
2、mount状态下移动数据文件
system和sysaux表空间不能脱机;
(1)数据库重启到mount状态
(2)移动文件
(3)alter database
(4)打开数据库
五、显示表空间和数据文件信息
1、显示表空间信息
SQL> select * from dba_tablespaces;
SQL> select * from v$tablespace;
2、显示表空间数据文件信息
SQL> select *from dba_data_files;
SQL> select *from v$datafile;
3、显示临时表空间和临时文件信息
SQL> select * from dba_tablespace_groups;
SQL> select * from dba_temp_files;;
SQL> select * from v$tempfile;;
六、使用OEM管理表空间和数据文件
增删改查

第10章  管理UNDO表空间
----UNDO表空间的增删改查
当执行了DML操作(insert、update、delete)时,oracle会将这些操作的旧数据存入undo表空间;
9i之前用回滚段,9i可以用回滚段或undo表空间,10g已完全放弃回滚段;
undo段功能:回退事务、读一致性、事务恢复(实例恢复的一部分)、倒叙查询(flashback query);
一、undo段参数
1、UNDO_MANAGEMENT:UNDO数据管理方式,auto为自动,manual为手工(使用回滚段);
2、UNDO_TABLESPACE:实例所要使用的undo表空间;
3、UNDO_RETENTION:undo数据的最大保留时间(默认900s),决定flashback query的可查询时间;
二、增删改查
三、使用OEM管理UNDO表空间

第11章  管理对象空间
数据块:IO的最小单位;
区:分配的逻辑单位;
段:有一个或多个区组成;
表空间:一个表空间可以包含一个或多个段,一个段只能属于一个表空间;
一、段
1、段分类:
(1)、表段:一个表分一个段;
(2)、表分区段:大表分区,每个分区分一个表分区段;提高IO性能;
(3)、簇段:一个簇包括一个或多个表,一个簇分一个簇段;提高需要访问多个表时的IO性能;
(4)、索引段:
(5)、索引分区段:
(6)、索引组织表段:以B+树组织表数据;
(7)、UNDO段:
(8)、临时段:
(9)、LOB段:存放LOB数据;
(10)、LOB索引段:
(11)、嵌套表段:
(12)、根引导段:又称cache段;
2、查看段信息:
SQL> select distinct segment_type from dba_segments;
SEGMENT_TYPE
------------------
LOBINDEX
INDEX PARTITION
TABLE PARTITION
NESTED TABLE
ROLLBACK
LOB PARTITION
LOBSEGMENT
INDEX
TABLE
CLUSTER
TYPE2 UNDO
SQL> select count(*) from dba_segments;
  COUNT(*)
----------
      2670
二、管理存储参数(区的)
1、一些存储参数
(1)INITIAL
字典管理表空间时,用于指定为段分配的第一个区的尺寸;
本地管理表空间时,假定本地管理区尺寸为5M,如果MINEXTENTS=1,若INITIAL=1M,则分配一个区;若INITIAL=7M,则分配两个区;
(2)NEXT
第二个区的尺寸
(3)PCTINCREASE
第三个区开始,后一个区是前一个区的百分比;
(4)MIXEXTENTS
段所包含的初始区个数;
(5)MAXEXTENTS
段能包含的最大区个数;
2、查看区信息
dba_extents
三、管理数据库空间
1、块参数:
(1)PCTFREE
数据块内为update操作预留空间的百分比;
(2)PCTUSED
将数据库标记为可重用块的已用空间最低百分比;
2、查看块空间信息
簇的块空间参数:dba_clusters;
表的块空间参数:dba_tables;
索引的块空间参数:dba_indexs;

第12章  管理用户
----用户的增删改查
scheme:方案(scheme)是用户所拥有的数据库对象的集合;方案与用户一一对应,且名字相同;
1、建立用户
(1)建立DB验证用户
SQL> create user devep identified by devep
  2  default tablespace user01
  3  temporary tablespace temp
  4  quota 3M on user01
  5  password expire;
用户已创建。
SQL> conn devep/devep
ERROR:
ORA-28001: 口令已经失效
更改 devep 的口令
新口令:
重新键入新口令:
ERROR:
ORA-01045: 用户 DEVEP 没有 CREATE SESSION 权限; 登录被拒绝
口令未更改
警告: 您不再连接到 ORACLE。
SQL>
----新建用户没有任何权限
SQL> grant create session to devep;
授权成功。
SQL> conn devep/devep;
访问 PRODUCT_USER_PROFILE 时出错
警告: 未加载产品用户概要文件信息!
您需要将 PUPBLD.SQL 作为 SYSTEM 运行
已连接。
SQL>
(2)建立OS验证用户
SQL> create user "OPS$WANGHAILIANG\WHL"
  2  identified externally
  3  default tablespace user01
  4  quota 3M on user01;
用户已创建。
SQL> grant connect to "OPS$WANGHAILIANG\WHL";
授权成功。
SQL>
2、修改用户信息
alter user;
修改密码、表空间配额、锁、解锁、设置默认角色;
3、删除用户
drop user;
删除用户oracle会从数据字典中删除用户、方案及其所有方案对象;
4、显示用户信息
5、使用OEM管理用户

第13章  管理权限
系统权限:执行特定SQL命令的权力,100多个,create table,create any table,any表示可以在任何方案中执行系统权限;
对象权限:访问其他方案对象的权限;
1、管理系统权限
(1)授予系统权限
GRANT system_priv [,system_priv,...]
TO  user|role|public [,user|role|public,...]
[WITH ADMIN OPTION]
public:授予所有用户该系统权限;
WITH ADMIN OPTION:被授权用户、角色可以把响应系统权限授予其他用户、角色。
(2)查看系统权限
SQL> select count(name) from system_privilege_map;
COUNT(NAME)
-----------
        166
SQL> set lines 1000 pages 1000
SQL> select * from dba_sys_privs where grantee='devep';
未选定行
SQL> select * from dba_sys_privs where grantee='DEVEP';
GRANTEE                        PRIVILEGE                                ADM
------------------------------ ---------------------------------------- ---
DEVEP                          CREATE SESSION                           NO
SQL> select count(*) from session_privs;
  COUNT(*)
----------
       166
(3)收回系统权限
REVOKE system_priv [,system_priv,...]
FROM  user|role|public [,user|role|public,...]
2、管理对象权限
8种:insert、delete、update、select、alter、index、execute、reference;
列权限3种:insert、update、reference
(1)授予对象权限:
GRANT object_priv [(column_list)] [,object_priv [(column_list)],...]|ALL[privileges]
ON scheme.object
TO  user|role|public [,user|role|public,...]
[WITH GRANT OPTION]
(2)显示对象权限
dba_tab_privs:显示对象权限;
dba_col_privs:显示列权限;
all_tab_privs_recd:用户所具有的对象权限;
all_col_privs_recd:用户所具有的列权限;
user_tab_privs_made:用户授出的对象权限;
user_col_privs_made:用户授出的列权限;
(3)收回权限
REVOKE object_priv [(column_list)] [,object_priv [(column_list)],...]|ALL[privileges]
ON scheme.object
FROM  user|role|public [,user|role|public,...]
3、使用OEM管理权限

第14章  管理角色
一、预定义角色
1、connect角色:应用开发人员所具有的多数权限;
2、resource角色:开发人员,如建立存储过程、触发器等;
3、DBA角色:默认DBA用户是system;
4、execute_catalog_role:对系统所有pl/sql包的execute权限;
5、select_catalog_role:
6、delete_catelog_role:
7、exp_full_database:导出数据库;
8、imp_full_database:
9、recovery_catelog_owner:恢复目录所有者;
二、管理自定义角色
1、建立角色
SQL> create role public_role not identified;
角色已创建。
SQL> create role private_role identified by private;
角色已创建。
2、角色授权
SQL> grant public_role,private_role to devep;
授权成功。
SQL> grant insert,update,delete on scott.emp to private_role;
grant insert,update,delete on scott.emp to private_role
    第 1 行出现错误:
ORA-00942: 表或视图不存在
3、激活、禁止角色
4、修改角色
5、删除角色
6、显示角色信息
dba_roles、dba_role_privs、session_roles;
三、使用OS角色
OS角色是使用OS管理角色的方式,初始化参数OS_ROLES为TRUE,此时数据库角色不起作用;
在OS局域网中(假定为windows),建立OS角色后,要为windows用户建立组,为每个windows用户分配组;
四、精细访问控制
使用函数、策略实现更精细的安全访问控制;
oracle会在sql语句后增加where条件,使不同数据库用户的相同sql语句返回不同结果;
五、使用OEM管理角色

第15章  管理PROFILE
----profile文件的增删改查
profile是口令限制、资源限制的命名集合;
一、使用profile管理口令
客户端环境变量ORA_ENCRYPT_LOGIN设置为true时,发送用户名和口令时,Oracle会对口令进行加密;
建立profile;
profile有7个口令管理选项,用参数控制:
1、账户锁定
2、口令有效期和终止期
3、口令历史
4、口令复杂性校验
二、使用profile管理资源
在大而复杂的多用户数据库环境中,用参数管理资源;
激活资源限制:
SQL> alter system set resource_limit=true;
系统已更改。
1、限制会话资源:
2、限制调用资源:
3、限制其他资源;
三、修改、删除profile
四、显示profile信息
五、OEM管理profile

第16章  审计
审计(audit)用于监控和记载数据库用户所执行的各种操作;
分类:特权用户审计(审计特权用户操作)、数据库审计(审计一般用户操作)、应用审计(审计数据库数据变化);
1、特权用户审计
alter system set audit_sys_operations=true scope=spfile;
2、数据库审计
alter system set sudit_trail=db scope=spfile;
(1)语句审计:审计与特定SQL语句相关的操作;
(2)权限审计:审计与系统权限相关的操作;
(3)对象审计:审计特定方案对象上的SQL操作;
3、应用审计
记录下DML操作所引起的数据变化;
4、精细审计
不需要激活oracle审计,使用系统包DBMS_FGA实现;

第17章  管理表
1、Oracle表的类型:
(1)普通表:数据已无序方式存放在表段中;
(2)索引表:使用B-树存放数据,其中页块不仅包括键列,也包含非键列;organization index;
(3)分区表:
(4)簇表:
(5)外部表:表结构存放在数据字典中,表数据存放在OS文件中;organization external;
在外部表上可以实现查询、insert(但不能update,不能建索引),OS文件和数据库文件之间交换,从而实现SQLLoad的功能;
2、截断表
truncate与delete的区别:truncate(DDL)释放空间,不能回退,占用较少undo;delete(DML)不释放空间,可以回退,占用较多undo;

第18章  管理索引
1、索引管理的指导方针:
(1)装载数据后再建立索引:提高数据装载速度;
(2)选择合适的表和列;
(3)指定索引所在表空间:索引和表在相同表空间易于管理,在不同表空间更能提高性能;
(4)使用nologging选项建立索引:节省redo空间,提高索引建立效率;       
2、建立类型:
(1)B-树索引:最常用;
(2)位图索引:B-树索引用在重复值不多,位图索引用在重复值较多;
(3)反向索引:索引顺序按列值反序存放;reverse;
(4)函数或表达式索引:常用某个函数或表达式时;
3、重建索引:
在索引列上频繁delete或update时,数据变了,但是索引数据只是逻辑变了,索引块上的空间还不能使用,应定期重建索引以提高索引块空间利用率;
alter index department_name REBUILD;

第19章  使用约束
保证数据完整性,同sqlserver;

第20章  管理分区表和分区索引
使用分区表,将一个大表的数据分布到多个表分区段;使用分区索引,将一个大索引的数据分布到多个索引分区段;
一、建立分区表
执行SQL语句访问分区表时,服务器进程直接访问某个分区表段,而不需要访问整张表的所有数据,从而减少IO,提高系统性能;
Oracle提供了范围分区、散列分区(HASH分区)、列表分区、组合分区四种分区方法:
1、范围分区
例如:sales表年数据1000G,每个季度250G,使用4个分区表段存放四个季度数据,统计季度数据时,只用访问某一个表段即可;
(1)建立范围分区表
指定分区方法(RANGE)、分区列、列值范围;
alter session set nls_date_language=american;
alter session set nls_date_format='dd-mon-yyyy';
CREATE TABLE sales(
        sale_id        NUMBER(10),
        order_id        NUMBER(10),
        customer_id        NUMBER(10),
        sale_amount        NUMBER(10,2),
        sale_date        DATE
)PARTITION BY RANGE(sale_date) (
        PARTITION p1 VALUES LESS THAN ('01-APR-2011') TABLESPACE USER01,
        PARTITION p2 VALUES LESS THAN ('01-JUL-2011') TABLESPACE USER02,
        PARTITION p4 VALUES LESS THAN ('01-OCT-2011') TABLESPACE USER03,
        PARTITION p5 VALUES LESS THAN ('01-JAN-2012') TABLESPACE USER04
);
SQL> select tablespace_name,status from dba_tablespaces;
TABLESPACE_NAME                STATUS
------------------------------ ---------
SYSTEM                         ONLINE
UNDOTBS1                       ONLINE
SYSAUX                         ONLINE
TEMP                           ONLINE
USER01                         ONLINE
USER03                         ONLINE
UNDOTBS                        ONLINE
TEMP01                         ONLINE
TEMP02                         ONLINE
SQL> col name format a50;
SQL> select file#,status,enabled,name from v$datafile;
     FILE# STATUS  ENABLED    NAME
---------- ------- ---------- --------------------------------------------------
         1 SYSTEM  READ WRITE D:\ORACLE_DATABASE\DEMO\SYSTEM01.DBF
         2 ONLINE  READ WRITE D:\ORACLE_DATABASE\DEMO\UNDOTBS1.DBF
         3 ONLINE  READ WRITE D:\ORACLE_DATABASE\DEMO\SYSAUX01.DBF
         4 RECOVER READ WRITE D:\ORACLE_DATABASE\DEMO\USER01.DBF
         5 ONLINE  READ WRITE D:\ORACLE_DATABASE\DEMO\USER02.DBF
         6 RECOVER READ WRITE D:\ORACLE_DATABASE\DEMO\UNDOTBS.DBF
         7 ONLINE  READ WRITE D:\ORACLE_DATABASE\DEMO\USER01_2.DBF
SQL> c/user03 include/user01 including
  1* drop tablespace user01 including contents and datafiles
SQL> r
  1* drop tablespace user01 including contents and datafiles
drop tablespace user01 including contents and datafiles
*
第 1 行出现错误:
ORA-12919: 不能删除默认永久表空间
SQL> alter tablespace user01 online;
alter tablespace user01 online
*
第 1 行出现错误:
ORA-01113: 文件 4 需要介质恢复
ORA-01110: 数据文件 4: 'D:\ORACLE_DATABASE\DEMO\USER01.DBF'
SQL> recover datafile 'D:\ORACLE_DATABASE\DEMO\USER01.DBF';
ORA-00279: 更改 360842 (在 01/04/2012 16:28:45 生成) 对于线程 1 是必需的
ORA-00289: 建议: F:\ORACLE_DATABASE\ARCHIVE\ARC00008_0771675870.001
ORA-00280: 更改 360842 (用于线程 1) 在序列 #8 中
指定日志: {=suggested | filename | AUTO | CANCEL}
已应用的日志。
完成介质恢复。
SQL> alter tablespace user01 online;
表空间已更改。
(2)插入数据
Oracle会根据分区列的列值范围自动把数据插入对应表分区;
SQL> insert into sales values (2011001001,2011000001,2011010001,2502.20,'25-JAN-2011');
已创建 1 行。
SQL> insert into sales values (2011001002,2011000011,2011040001,12502.20,'25-APR-2011');
已创建 1 行。
SQL> insert into sales values (2011001022,2011002011,2011090002,102.20,'21-SEP-2011');
已创建 1 行。
SQL> insert into sales values (2011001022,2011002011,2011120002,102.20,'21-DEC-2011');
已创建 1 行。
(3)查询表所有数据
SQL> select *from sales;
   SALE_ID   ORDER_ID CUSTOMER_ID SALE_AMOUNT SALE_DATE
---------- ---------- ----------- ----------- --------------
2011001001 2011000001  2011010001      2502.2 25-jan-2011
2011001002 2011000011  2011040001     12502.2 25-apr-2011
2011001022 2011002011  2011090002       102.2 21-sep-2011
2011001022 2011002011  2011120002       102.2 21-dec-2011
(4)查询某个分区的数据
SQL> select *from sales PARTITION(p1);
   SALE_ID   ORDER_ID CUSTOMER_ID SALE_AMOUNT SALE_DATE
---------- ---------- ----------- ----------- --------------
2011001001 2011000001  2011010001      2502.2 25-jan-2011
(5)在where条件中引用分区列
Oracle会根据条件列的取值自动扫描特定分区
(6)显示分区段信息
user_segments
2、散列分区(哈希分区)
按照Oracle提供的散列(HASH)函数计算列值数据,根据结算结果分区大表数据;
(1)建立哈希分区表
CREATE TABLE product(
        product_id        number(6),
        description       varchar2(50)
) PARTITION BY HASH(product_id) (
        PARTITION p1 TABLESPACE user01,
        PARTITION p2 TABLESPACE user02,
        PARTITION p3 TABLESPACE user03,
        PARTITION p4 TABLESPACE user04
);
(2)插入数据
Oracle自动根据内置Hash函数计算分区列数据,根据结果分布数据;
insert into product values(1,'pliphs');
insert into product values(2,'totoya');
insert into product values(3,'pliphss');
insert into product values(4,'pSliphs');
insert into product values(5,'pliFphs');
insert into product values(6,'pliSphs');
insert into product values(7,'pliFphs');
insert into product values(8,'pliGphs');
insert into product values(9,'pDSliphs');
insert into product values(10,'pliGGSDphs');
insert into product values(11,'pliGDphs');
insert into product values(12,'plDDiphs');
insert into product values(13,'pliDGHJphs');
(3)查询数据
SQL> select * from product;
SQL> select * from product where product_id=1;
(4)显示分区段信息
user_segments;
3、列表分区
(1)建立列表分区
CREATE TABLE sales_by_region(
        sale_id        number(10),
        address        varchar2(30)
)PARTITION BY LIST(address)(
        PARTITION p1 VALUES ('北京','天津') TABLESPACE user01,
        PARTITION p2 VALUES ('上海','重庆') TABLESPACE user02,
        PARTITION p3 VALUES ('河南','河北') TABLESPACE user03,
        PARTITION p4 VALUES ('广东','香港') TABLESPACE user04
);
4、组合分区
(1)范围、哈希组合分区
(a)建立范围、哈希组合分区表:
假设经常需要按季度统计、且按产品统计;
CREATE TABLE sales_product(
        sale_id        NUMBER(10),
        product_id        NUMBER(10),
        sale_date        DATE
)PARTITION BY RANGE(sale_date)
         SUBPARTITION BY HASH(product_id) SUBPARTITIONS 4
                STORE IN(user01,user02,user03,user04) (
        PARTITION p1 VALUES LESS THAN ('01-APR-2011') TABLESPACE USER01,
        PARTITION p2 VALUES LESS THAN ('01-JUL-2011') TABLESPACE USER02,
        PARTITION p4 VALUES LESS THAN ('01-OCT-2011') TABLESPACE USER03,
        PARTITION p5 VALUES LESS THAN ('01-JAN-2012') TABLESPACE USER04
);
(b)查看分区信息
SQL> select segment_name,partition_name,tablespace_name from user_segments where segment_name='SALES_PRODUCT';
SEGMENT_NAME                                                                      PARTITION_NAME         TABLESPACE_NAME
--------------------------------------------------------------------------------- ------------------------------ -------
-----------------------
SALES_PRODUCT                                                                     SYS_SUBP21             USER01
SALES_PRODUCT                                                                     SYS_SUBP22             USER01
SALES_PRODUCT                                                                     SYS_SUBP23             USER01
SALES_PRODUCT                                                                     SYS_SUBP24             USER01
SALES_PRODUCT                                                                     SYS_SUBP25             USER02
SALES_PRODUCT                                                                     SYS_SUBP26             USER02
SALES_PRODUCT                                                                     SYS_SUBP27             USER02
SALES_PRODUCT                                                                     SYS_SUBP28             USER02
SALES_PRODUCT                                                                     SYS_SUBP29             USER03
SALES_PRODUCT                                                                     SYS_SUBP30             USER03
SALES_PRODUCT                                                                     SYS_SUBP31             USER03
SALES_PRODUCT                                                                     SYS_SUBP32             USER03
SALES_PRODUCT                                                                     SYS_SUBP33             USER04
SALES_PRODUCT                                                                     SYS_SUBP34             USER04
SALES_PRODUCT                                                                     SYS_SUBP35             USER04
SALES_PRODUCT                                                                     SYS_SUBP36             USER04
已选择16行。
(2)范围、列表组合分区
(a)建立范围、列表组合分区表
假设经常要按季度统计,且按地区统计;
CREATE TABLE sales_region(
        sale_id        number(10),
        sale_date        date,
        address        varchar2(30)
)PARTITION BY RANGE(sale_date) SUBPARTITION BY LIST(address)(
        PARTITION r1 VALUES LESS THAN ('01-APR-2011') TABLESPACE USER01(
                SUBPARTITION r1_1 VALUES('北京','天津'),
                SUBPARTITION r1_2 VALUES('上海','重庆'),
                SUBPARTITION r1_3 VALUES('河南','河北'),
                SUBPARTITION r1_4 VALUES(DEFAULT)
        ),
        PARTITION r2 VALUES LESS THAN ('01-JUL-2011') TABLESPACE USER02(
                SUBPARTITION r2_1 VALUES('北京','天津'),
                SUBPARTITION r2_2 VALUES('上海','重庆'),
                SUBPARTITION r2_3 VALUES('河南','河北'),
                SUBPARTITION r2_4 VALUES(DEFAULT)
        ),
        PARTITION r3 VALUES LESS THAN ('01-OCT-2011') TABLESPACE USER03(
                SUBPARTITION r3_1 VALUES('北京','天津'),
                SUBPARTITION r3_2 VALUES('上海','重庆'),
                SUBPARTITION r3_3 VALUES('河南','河北'),
                SUBPARTITION r3_4 VALUES(DEFAULT)
        ),
        PARTITION r4 VALUES LESS THAN ('01-JAN-2012') TABLESPACE USER04(
                SUBPARTITION r4_1 VALUES('北京','天津'),
                SUBPARTITION r4_2 VALUES('上海','重庆'),
                SUBPARTITION r4_3 VALUES('河南','河北'),
                SUBPARTITION r4_4 VALUES(DEFAULT)
        )
);
(b)查看分区信息       
SQL> select segment_name,partition_name,tablespace_name from user_segments where segment_name='SALES_REGION';
SEGMENT_NAME                                                                      PARTITION_NAME         TABLESPACE_NAME
--------------------------------------------------------------------------------- ------------------------------ -------
-----------------------
SALES_REGION                                                                      R1_1                   USER01
SALES_REGION                                                                      R1_2                   USER01
SALES_REGION                                                                      R1_3                   USER01
SALES_REGION                                                                      R1_4                   USER01
SALES_REGION                                                                      R2_1                   USER02
SALES_REGION                                                                      R2_2                   USER02
SALES_REGION                                                                      R2_3                   USER02
SALES_REGION                                                                      R2_4                   USER02
SALES_REGION                                                                      R3_1                   USER03
SALES_REGION                                                                      R3_2                   USER03
SALES_REGION                                                                      R3_3                   USER03
SALES_REGION                                                                      R3_4                   USER03
SALES_REGION                                                                      R4_1                   USER04
SALES_REGION                                                                      R4_2                   USER04
SALES_REGION                                                                      R4_3                   USER04
SALES_REGION                                                                      R4_4                   USER04
已选择16行。
二、修改分区表
1、增加分区
ALTER TABLE sales ADD PARTITION p5 VALUES LESS THAN('01-APR-2012');
alter table sales SPLIT PARTITION p4 AT('01-08-2011') INTO(PARTITION p4_1,PARTITION p4_2)
SQL> alter table sales_region add partition r5 values less than('01-04-2012');
表已更改。
SQL> alter table sales_region modify partition r5 add subpartition r5_1 values('山东','山西');
alter table sales_region modify partition r5 add subpartition r5_1 values('山东','山西')
            *
第 1 行出现错误:
ORA-14621: 在 DEFAULT 子分区已存在时无法添加子分区
SQL> alter table sales_region add partition r6 values less than('01-08-2012') (subpartition r6_1 values('黑龙江','辽宁','吉林'));
表已更改。
SQL> alter table sales_region modify partition r6 add subpartition r6_2 values('新疆','西藏');
表已更改。
2、删除分区
alter table ... drop partition...
3、截断分区
alter table ... trancate partition ...
4、修改分区名称
alter table ... rename partition ... to ...
5、合并分区
alter table ... merge partition ...,... into partition ...
6、交换分区数据
将分区表某个分区的数据同普通表交换
SQL> create table sale_1 as select * from sales;
表已创建。
SQL> select * from sale_1;
   SALE_ID   ORDER_ID CUSTOMER_ID SALE_AMOUNT SALE_DATE
---------- ---------- ----------- ----------- ----------
2011001001 2011000001  2011010001      2502.2 25-01-2011
2011001002 2011000011  2011040001     12502.2 25-04-2011
2011001022 2011002011  2011090002       102.2 21-09-2011
2011001022 2011002011  2011120002       102.2 21-12-2011
SQL> delete from sale_1 where 1=1;
已删除4行。
SQL> alter table sales exchange partition p1 with table sale_1;
表已更改。
SQL> select * from sale_1;
   SALE_ID   ORDER_ID CUSTOMER_ID SALE_AMOUNT SALE_DATE
---------- ---------- ----------- ----------- ----------
2011001001 2011000001  2011010001      2502.2 25-01-2011
三、建立全局索引和分区索引
1、建立全局索引
SQL> create index gbl_sale_date on sales(sale_date) GLOBAL;
索引已创建。
2、建立分区索引
只能基于分区表建立分区索引,索引数据存放在多个分区段中,且分区个数与分区表个数完全一致;
SQL> create index lcl_sale_date on sales(sale_date) LOCAL;
create index lcl_sale_date on sales(sale_date) LOCAL
                                  *
第 1 行出现错误:
ORA-01408: 此列列表已索引
SQL> drop index gbl_sale_date;
索引已删除。
SQL> create index lcl_sale_date on sales(sale_date) LOCAL;
索引已创建。
四、显示分区表和分区索引相关信息
分区信息:dba_part_tables, all_part_tables, user_part_tables;
表分区:dba_tab_partitions, all_tab_partitions, user_tab_partitions;
子分区:dba_tab_subpartitions, all_tab_subpartitions, user_tab_subpartitions;
分区列:dba_part_key_columns, all_part_key_columns, user_part_key_columns;
子分区列:dba_subpart_key_columns, all_subpart_key_columns, user_subpart_key_columns;
分区索引信息:dba_part_indexs, all_part_indexs, user_part_indexs;
索引分区:dba_ind_parttitions, all_ind_partitions, user_ind_partitions;
索引子分区:dba_ind_subparttitions, all_ind_subpartitions, user_ind_subpartitions;
五、使用OEM管理分区表和分区索引

 

第21章  管理簇
簇是存储表数据的一种可选方法,它有共享相同数据块的一组表组成。
将表组织到簇后,Oracle会将不同表的相关数据存放到相同数据块,这样不仅降低了簇键列所占用的磁盘空间,而且可以大大降低特定SQL操作的IO次数。

================以下实验在oracle11g上操作=================
第22章  管理视图、序列和同义词
一、视图
是一个表或多个表的逻辑表示,对应于一条SQL语句,也被称为虚表,对应的表称为基表。
视图不另外存储数据,对视图的增删改查相当于对基表的增删改查,只是对视图的增删改查是有限制的。
二、序列
提供唯一值。
序列的增删改查;
1、创建序列:
CREATE SEQUENCE sequence_name
        [INCREMENT BY n] [START WITH n]
        [{MAXVALUE n | NOMAXVALUE}] [{MINVALUE n | NOMINVALUE}]
        [{CYCLE | NOCYCLE}] [{CACHE n | NOCACHE}]
CREATE SEQUENCE  "SCOTT"."SEQ_BAG_BARCODE"  MINVALUE 500001 MAXVALUE 99999999 INCREMENT BY 1 START WITH 503312 NOCACHE  NOORDER  NOCYCLE;
2、使用序列:
select seq_bag_barcode.nextval from dual;
----503312
----第一次使用一个序列时使用nextval;
3、修改序列:
alter
4、删除序列:
drop
5、查询序列:
SQL> select sequence_name,min_value,max_value from dba_sequences where sequence_owner='SCOTT';
SEQUENCE_NAME                        MIN_VALUE  MAX_VALUE
------------------------------ ---------- ----------
SEQ_BAG_BARCODE                    500001   99999999
6、使用OEM管理序列:
方案——对象——序列
7、使用Oracle Sql Developer管理序列:
建立数据库连接——序列
三、同义词
同义词是对象的别名,目的是为了对象访问的简便和安全。
同义词的增删改查(公共同义词、私有同义词)
1、建立同义词
SQL> create public synonym public_emp for scott.emp;
......
SQL> select * from scott.emp;
......
SQL> select * from public_emp;
......
SQL> create synonym private_emp for scott.emp;
2、删除同义词
drop
3、查询同义词
SQL> select * from dba_synonyms where owner='SCOTT';

第23章  EXPDP和IMPDP
exp和imp是客户端应用工具,可以在客户端或服务端使用;
expdp和impdb是服务端工具,只能在服务端应用。
使用数据泵(Data Dump)导出、导入包括4种模式:导出表、导出方案、导出表空间、导出数据库。
E:\>expdp -help
Export: Release 11.2.0.1.0 - Production on 星期四 3月 14 16:14:02 2013
Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
数据泵导出实用程序提供了一种用于在 Oracle 数据库之间传输数据对象的机制。该实用程序可以使用以下命令进行调用:
   示例: expdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp
您可以控制导出的运行方式。具体方法是: 在 'expdp' 命令后输入各种参数。要指定各参数, 请使用关键字:
   格式:  expdp KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)
   示例: expdp scott/tiger DUMPFILE=scott.dmp DIRECTORY=dmpdir SCHEMAS=scott
               或 TABLES=(T1:P1,T1:P2), 如果 T1 是分区表
USERID 必须是命令行中的第一个参数。
------------------------------------------------------------------------------
以下是可用关键字和它们的说明。方括号中列出的是默认值。
ATTACH 连接到现有作业。
例如, ATTACH=job_name。

COMPRESSION 减少转储文件大小。
有效的关键字值为: ALL, DATA_ONLY, [METADATA_ONLY] 和 NONE。

CONTENT 指定要卸载的数据。
有效的关键字值为: [ALL], DATA_ONLY 和 METADATA_ONLY。

DATA_OPTIONS 数据层选项标记。
有效的关键字值为: XML_CLOBS。

DIRECTORY 用于转储文件和日志文件的目录对象。

DUMPFILE 指定目标转储文件名的列表 [expdat.dmp]。
例如, DUMPFILE=scott1.dmp, scott2.dmp, dmpdir:scott3.dmp。

ENCRYPTION 加密某个转储文件的一部分或全部。
有效的关键字值为: ALL, DATA_ONLY, ENCRYPTED_COLUMNS_ONLY, METADATA_ONLY 和 NONE。

ENCRYPTION_ALGORITHM 指定加密的方式。
有效的关键字值为: [AES128], AES192 和 AES256。

ENCRYPTION_MODE 生成加密密钥的方法。
有效的关键字值为: DUAL, PASSWORD 和 [TRANSPARENT]。

ENCRYPTION_PASSWORD 用于在转储文件中创建加密数据的口令密钥。

ESTIMATE 计算作业估计值。
有效的关键字值为: [BLOCKS] 和 STATISTICS。

ESTIMATE_ONLY 计算作业估计值而不执行导出。

EXCLUDE 排除特定对象类型。
例如, EXCLUDE=SCHEMA:"='HR'"。

FILESIZE 以字节为单位指定每个转储文件的大小。

FLASHBACK_SCN 用于重置会话快照的 SCN。

FLASHBACK_TIME 用于查找最接近的相应 SCN 值的时间。

FULL 导出整个数据库 [N]。

HELP 显示帮助消息 [N]。

INCLUDE 包括特定对象类型。
例如, INCLUDE=TABLE_DATA。

JOB_NAME 要创建的导出作业的名称。

LOGFILE 指定日志文件名 [export.log]。

NETWORK_LINK 源系统的远程数据库链接的名称。

NOLOGFILE 不写入日志文件 [N]。

PARALLEL 更改当前作业的活动 worker 的数量。

PARFILE 指定参数文件名。

QUERY 用于导出表的子集的谓词子句。
例如, QUERY=employees:"WHERE department_id > 10"。

REMAP_DATA 指定数据转换函数。
例如, REMAP_DATA=EMP.EMPNO:REMAPPKG.EMPNO。

REUSE_DUMPFILES 覆盖目标转储文件 (如果文件存在) [N]。

SAMPLE 要导出的数据的百分比。

SCHEMAS 要导出的方案的列表 [登录方案]。

SOURCE_EDITION 用于提取元数据的版本。

STATUS 监视作业状态的频率, 其中默认值 [0] 表示只要有新状态可用, 就立即显示新状态。

TABLES 标识要导出的表的列表。
例如, TABLES=HR.EMPLOYEES,SH.SALES:SALES_1995。

TABLESPACES 标识要导出的表空间的列表。

TRANSPORTABLE 指定是否可以使用可传输方法。
有效的关键字值为: ALWAYS 和 [NEVER]。

TRANSPORT_FULL_CHECK 验证所有表的存储段 [N]。

TRANSPORT_TABLESPACES 要从中卸载元数据的表空间的列表。

VERSION 要导出的对象版本。
有效的关键字值为: [COMPATIBLE], LATEST 或任何有效的数据库版本。

------------------------------------------------------------------------------
下列命令在交互模式下有效。注: 允许使用缩写。

ADD_FILE 将转储文件添加到转储文件集。

CONTINUE_CLIENT 返回到事件记录模式。如果处于空闲状态, 将重新启动作业。

EXIT_CLIENT 退出客户机会话并使作业保持运行状态。

FILESIZE 用于后续 ADD_FILE 命令的默认文件大小 (字节)。

HELP 汇总交互命令。

KILL_JOB 分离并删除作业。

PARALLEL 更改当前作业的活动 worker 的数量。

REUSE_DUMPFILES 覆盖目标转储文件 (如果文件存在) [N]。

START_JOB 启动或恢复当前作业。
有效的关键字值为: SKIP_CURRENT。

STATUS 监视作业状态的频率, 其中默认值 [0] 表示只要有新状态可用, 就立即显示新状态。

STOP_JOB 按顺序关闭作业执行并退出客户机。
有效的关键字值为: IMMEDIATE。

E:\>impdp -help
Import: Release 11.2.0.1.0 - Production on 星期四 3月 14 16:49:58 2013
Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
数据泵导入实用程序提供了一种用于在 Oracle 数据库之间传输数据对象的机制。该实用程序可以使用以下命令进行调用:
     示例: impdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp
您可以控制导入的运行方式。具体方法是: 在 'impdp' 命令后输入
各种参数。要指定各参数, 请使用关键字:
     格式:  impdp KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)
     示例: impdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp
USERID 必须是命令行中的第一个参数。
------------------------------------------------------------------------------
以下是可用关键字和它们的说明。方括号中列出的是默认值。

参数与expdp类似。

1、导出表
在E盘建立目录oracledump;
SQL> CREATE DIRECTORY dump_dir AS 'E:\oracledump';
SQL> GRANT READ,WRITE ON DIRECTORY dump_dir TO scott;
SQL> select table_name from dba_tables where owner='SCOTT';
TABLE_NAME
------------------------------
DEPT
EMP
BONUS
SALGRADE
SQL> quit
E:\>expdp scott/tiger DIRECTORY=dump_dir DUMPFILE=tab.dmp TABLES=dept,emp
Export: Release 11.2.0.1.0 - Production on 星期四 3月 14 17:03:07 2013
Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
启动 "SCOTT"."SYS_EXPORT_TABLE_01":  scott/******** DIRECTORY=dump_dir DUMPFILE=tab.dmp TABLES=dept,emp
正在使用 BLOCKS 方法进行估计...
处理对象类型 TABLE_EXPORT/TABLE/TABLE_DATA
使用 BLOCKS 方法的总估计: 128 KB
处理对象类型 TABLE_EXPORT/TABLE/TABLE
处理对象类型 TABLE_EXPORT/TABLE/INDEX/INDEX
处理对象类型 TABLE_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
处理对象类型 TABLE_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
. . 导出了 "SCOTT"."DEPT"                              5.937 KB       4 行
. . 导出了 "SCOTT"."EMP"                               8.570 KB      14 行
已成功加载/卸载了主表 "SCOTT"."SYS_EXPORT_TABLE_01"
******************************************************************************
SCOTT.SYS_EXPORT_TABLE_01 的转储文件集为:
  E:\ORACLEDUMP\TAB.DMP
作业 "SCOTT"."SYS_EXPORT_TABLE_01" 已于 17:03:51 成功完成

2、导出方案:
E:\>expdp scott/tiger DIRECTORY=dump_dir DUMPFILE=schemaScott.dmp SCHEMAS='SCOTT';

3、导出表空间:
E:\>expdp system/oracle directory=dump_dir dumpfile=tablespaceUsers.dmp ESTIMATE_ONLY

4、导出数据库:
E:\>expdp system/oracle directory=dump_dir dumpfile=database.dmp FULL=Y
----运行了8分钟。

5、导入表:
SQL> drop table scott.emp;
SQL> drop table scott.dept;
E:\>impdp scott/tiger directory=dump_dir dumpfile=tab.dmp tables=dept,emp

6、导入方案:
SQL> drop user scott cascade;
SQL> create user scott identified by tiger;
SQL> grant dba to scott;
E:\>impdp system/oracle directory=dump_dir dumpfile=schemaScott.dmp schemas=scott

7、导入表空间:
impdp system/oracle directory=dump_dir dumpfile=tablespaceUsers.dmp tablespaces=users

8、导入数据库:
impdp system/oracle directory=dump_dir dumpfile=database.dmp FULL=Y

使用expdp和impdp可以实现在不同平台之间迁移表空间

第24章  EXP和IMP
exp和imp有三种情况:导出导入表、导出导入方案、导出导入数据库。
E:\>exp -help
Export: Release 11.2.0.1.0 - Production on 星期五 3月 15 15:31:29 2013
Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
通过输入 EXP 命令和您的用户名/口令, 导出操作将提示您输入参数:
     例如: EXP SCOTT/TIGER
或者, 您也可以通过输入跟有各种参数的 EXP 命令来控制导出的运行方式。要指定参数, 您可以使用关键字:
     格式:  EXP KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)
     例如: EXP SCOTT/TIGER GRANTS=Y TABLES=(EMP,DEPT,MGR)
               或 TABLES=(T1:P1,T1:P2), 如果 T1 是分区表
USERID 必须是命令行中的第一个参数。
关键字   说明 (默认值)         关键字      说明 (默认值)
--------------------------------------------------------------------------
USERID   用户名/口令           FULL        导出整个文件 (N)
BUFFER   数据缓冲区大小        OWNER        所有者用户名列表
FILE     输出文件 (EXPDAT.DMP)  TABLES     表名列表
COMPRESS  导入到一个区 (Y)   RECORDLENGTH   IO 记录的长度
GRANTS    导出权限 (Y)          INCTYPE     增量导出类型
INDEXES   导出索引 (Y)         RECORD       跟踪增量导出 (Y)
DIRECT    直接路径 (N)         TRIGGERS     导出触发器 (Y)
LOG      屏幕输出的日志文件    STATISTICS    分析对象 (ESTIMATE)
ROWS      导出数据行 (Y)        PARFILE      参数文件名
CONSISTENT 交叉表的一致性 (N)   CONSTRAINTS  导出的约束条件 (Y)
OBJECT_CONSISTENT    只在对象导出期间设置为只读的事务处理 (N)
FEEDBACK             每 x 行显示进度 (0)
FILESIZE             每个转储文件的最大大小
FLASHBACK_SCN        用于将会话快照设置回以前状态的 SCN
FLASHBACK_TIME       用于获取最接近指定时间的 SCN 的时间
QUERY                用于导出表的子集的 select 子句
RESUMABLE            遇到与空格相关的错误时挂起 (N)
RESUMABLE_NAME       用于标识可恢复语句的文本字符串
RESUMABLE_TIMEOUT    RESUMABLE 的等待时间
TTS_FULL_CHECK       对 TTS 执行完整或部分相关性检查
TABLESPACES          要导出的表空间列表
TRANSPORT_TABLESPACE 导出可传输的表空间元数据 (N)
TEMPLATE             调用 iAS 模式导出的模板名
成功终止导出, 没有出现警告。

E:\>imp -help
Import: Release 11.2.0.1.0 - Production on 星期五 3月 15 15:41:02 2013
Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
通过输入 IMP 命令和您的用户名/口令, 导入操作将提示您输入参数:
     例如: IMP SCOTT/TIGER
或者, 可以通过输入 IMP 命令和各种参数来控制导入的运行方式。要指定参数, 您可以使用关键字:
     格式:  IMP KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)
     例如: IMP SCOTT/TIGER IGNORE=Y TABLES=(EMP,DEPT) FULL=N
               或 TABLES=(T1:P1,T1:P2), 如果 T1 是分区表
USERID 必须是命令行中的第一个参数。
关键字   说明 (默认值)        关键字      说明 (默认值)
--------------------------------------------------------------------------
USERID   用户名/口令           FULL       导入整个文件 (N)
BUFFER   数据缓冲区大小        FROMUSER    所有者用户名列表
FILE     输入文件 (EXPDAT.DMP)  TOUSER     用户名列表
SHOW     只列出文件内容 (N)     TABLES      表名列表
IGNORE   忽略创建错误 (N)    RECORDLENGTH  IO 记录的长度
GRANTS   导入权限 (Y)          INCTYPE     增量导入类型
INDEXES   导入索引 (Y)         COMMIT       提交数组插入 (N)
ROWS     导入数据行 (Y)        PARFILE      参数文件名
LOG     屏幕输出的日志文件    CONSTRAINTS    导入限制 (Y)
DESTROY                覆盖表空间数据文件 (N)
INDEXFILE              将表/索引信息写入指定的文件
SKIP_UNUSABLE_INDEXES  跳过不可用索引的维护 (N)
FEEDBACK               每 x 行显示进度 (0)
TOID_NOVALIDATE        跳过指定类型 ID 的验证
FILESIZE               每个转储文件的最大大小
STATISTICS             始终导入预计算的统计信息
RESUMABLE              在遇到有关空间的错误时挂起 (N)
RESUMABLE_NAME         用来标识可恢复语句的文本字符串
RESUMABLE_TIMEOUT      RESUMABLE 的等待时间
COMPILE                编译过程, 程序包和函数 (Y)
STREAMS_CONFIGURATION  导入流的一般元数据 (Y)
STREAMS_INSTANTIATION  导入流实例化元数据 (N)
DATA_ONLY              仅导入数据 (N)
下列关键字仅用于可传输的表空间
TRANSPORT_TABLESPACE 导入可传输的表空间元数据 (N)
TABLESPACES 将要传输到数据库的表空间
DATAFILES 将要传输到数据库的数据文件
TTS_OWNERS 拥有可传输表空间集中数据的用户
成功终止导入, 没有出现警告。

1、导出表:
E:\>exp system/oracle TABLES=scott.dept,scott.emp FILE=a.dmp
Export: Release 11.2.0.1.0 - Production on 星期五 3月 15 15:42:57 2013
Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
即将导出指定的表通过常规路径...
当前的用户已更改为 SCOTT
. . 正在导出表                            DEPT
. . 正在导出表                             EMP
成功终止导出, 没有出现警告。

2、导出方案:
E:\>exp system/oracle OWNER=scott FILE=b.dmp

3、导出数据库:
E:\>exp system/oracle FILE=c.dmp FULL=Y

4、导入表:
SQL> drop table scott.emp;
SQL> drop table scott.dept;
E:\>impdp scott/tiger file=a.dmp tables=dept,emp

5、导入方案:
SQL> drop user scott cascade;
SQL> create user scott identified by tiger;
SQL> grant dba to scott;
E:\>impdp scott/tiger file=b.dmp
E:\>impdp system/oracle file=b.dmp owner=scott
IMP-00031:
IMP-00000: 未成功终止导入

6、导入数据库:
impdp system/oracle file=c.dmp full=y

使用exp和imp可以实现在不同平台之间迁移表空间

第25章  使用其他工具

 

 

 

 


 

阅读(2369) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~