Hey!! Sky!

Jan 10, 2006

[个人经验]exp/imp 使用案例

从 mliv 中用 system 用户导出 stsc的所有对象——既 mliv 的备份:

exp system/apsmgr@mliv owner= stsc direct=y file=E:\DBBackup\mliv.dmp log=E:\DBBackup\log\mliv.log


现需从 mliv.dmp 中恢复 FCSTDRAFT 表的数据,防止影像生产库,故新建一个表空间和用户作测试:


CREATE TABLESPACE SKYTEST DATAFILE
  'D:\ORADATA\SDB\SKYTEST.ORA' SIZE 265M AUTOEXTEND ON NEXT 8K MAXSIZE UNLIMITED
LOGGING
ONLINE
PERMANENT
EXTENT MANAGEMENT LOCAL AUTOALLOCATE;


CREATE USER SKY
  IDENTIFIED BY apspass
  DEFAULT TABLESPACE SKYTEST
  TEMPORARY TABLESPACE SDBTEMP;


  GRANT CONNECT TO SKY;
  GRANT DBA TO SKY;


开始恢复表:


IMP SKY/apspass@sdb file=Q:\mliv5.dmp  tables=fcstdraft grants=n
Import: Release 8.1.7.0.0 - Production on 星期二 1月 10 15:56:40 2006


(c) Copyright 2000 Oracle Corporation.  All rights reserved.



连接到: Oracle8i Release 8.1.7.0.0 - Production
JServer Release 8.1.7.0.0 - Production


经由直接路径导出由EXPORT:V08.01.07创建的导出文件


警告: 此对象由 SYSTEM 导出, 而不是当前用户


已经完成ZHS16GBK字符集和ZHS16GBK NCHAR 字符集中的导入
. 正在将SYSTEM的对象导入到 SKY
IMP-00033: 警告: 在导出文件中未找到表 "FCSTDRAFT"
成功终止导入,但出现警告。


以为是大小写问题,修改大小写:


IMP SKY/apspass@sdb file=Q:\mliv5.dmp  tables=FCSTDRAFT grants=n


结果依旧产生 IMP-00033 错误


在群中得到建议,将表名加引号:


IMP SKY/apspass@sdb file=Q:\mliv5.dmp  tables="FCSTDRAFT" grants=n


错误依旧


google IMP-00033:


IMP SKY/apspass@sdb file=Q:\mliv5.dmp fromuser=STSC tables=FCSTDRAFT grants=n
Import: Release 8.1.7.0.0 - Production on 星期二 1月 10 16:17:59 2006


(c) Copyright 2000 Oracle Corporation.  All rights reserved.



连接到: Oracle8i Release 8.1.7.0.0 - Production
JServer Release 8.1.7.0.0 - Production


经由直接路径导出由EXPORT:V08.01.07创建的导出文件


警告: 此对象由 SYSTEM 导出, 而不是当前用户


已经完成ZHS16GBK字符集和ZHS16GBK NCHAR 字符集中的导入
. 正在将SYSTEM的对象导入到 SKY
. 正在将STSC的对象导入到 STSC
IMP-00017: 由于 ORACLE 错误1435,以下的语句失败
 "ALTER SCHEMA = "STSC""
IMP-00003: ORACLE 错误1435出现
ORA-01435: 用户不存在
. 正在将STSC的对象导入到 STSC
IMP-00017: 由于 ORACLE 错误1435,以下的语句失败
 "ALTER SCHEMA = "STSC""
IMP-00003: ORACLE 错误1435出现
ORA-01435: 用户不存在^C


再试:
IMP SKY/apspass@sdb file=Q:\mliv5.dmp fromuser=SYSTEM tables=FCSTDRAFT grants=n


依旧是:IMP-00033


后找到:http://www.unix8.net/help3/a/v/185169.htm


When <Table owned by user A> is imported into the schema of <user B>
on a different database, and is running the import with:

$imp system/manager file=<dumpfile> fromuser=<user A> touser=<
user B>
tables=<Table owned by user A> grants=N

Then the import will:
1. Import table <Table owned by user A>
2. Import all indexes (default value of INDEXE)


测试:


IMP system/apsmgr@sdb file=Q:\mliv5.dmp fromuser=STSC touser=SKY tables=FCSTDRAFT grants=n


Import: Release 8.1.7.0.0 - Production on 星期二 1月 10 17:02:43 2006


(c) Copyright 2000 Oracle Corporation.  All rights reserved.



连接到: Oracle8i Release 8.1.7.0.0 - Production
JServer Release 8.1.7.0.0 - Production


经由直接路径导出由EXPORT:V08.01.07创建的导出文件


已经完成ZHS16GBK字符集和ZHS16GBK NCHAR 字符集中的导入
. . 正在导入表                     "FCSTDRAFT"    3320345行被导入^C


成功!!


再测试:
IMP sky/apspass@sdb file=Q:\mliv5.dmp fromuser=STSC touser=SKY tables=FCSTDRAFT grants=n


Import: Release 8.1.7.0.0 - Production on 星期二 1月 10 17:02:43 2006


(c) Copyright 2000 Oracle Corporation.  All rights reserved.



连接到: Oracle8i Release 8.1.7.0.0 - Production
JServer Release 8.1.7.0.0 - Production


经由直接路径导出由EXPORT:V08.01.07创建的导出文件


警告: 此对象由 SYSTEM 导出, 而不是当前用户


已经完成ZHS16GBK字符集和ZHS16GBK NCHAR 字符集中的导入
. . 正在导入表                     "FCSTDRAFT"    3320345行被导入^C


也成功!


至此,测试结束,结论:导出用户对象之后,再导入需要指明 fromuser 为对象拥有者,以及 touser 为需要导入到的用户。


补充结论:
    今天,又读了点关于 exp/imp 的书,关于 fromuser 和 touser 有以下使用原则,当以用户模式,表空间模式导出数据之后,在导入时,如果不指定 fromuser 和 touser,默认会将数据导入到和导出时的 schema 相同的 schema 下,如果此时该用户不存在,就会出现错误,解决方法:创建该用户,或者用 touser 改变对象的属主。
参考网站:http://yangtingkun.itpub.net/post/468/13902

Dec 19, 2005

[小结]WINDOWS 环境下如何使用操作系统认证登录 ORACLE 数据库

一、普通用户

1. 在 windows 下创建用户 niu,或将域用户加入本地组。

2. 修改参数文件 os_authent_prefix 默认值“ops$”。

3. 修改注册表,oracle/home0 下添加 OSAUTH_PREFIX_DOMAIN 项,如果使用域,设为 true,否则设为 false;如果不是在域中,并且将其设为 true,域用机器名代替,如果不添加该项,默认值为 true。

4. 修改 SQLNET.ORA 中的 SQLNET.AUTHENTICATION_SERVICES = (NTS) 或将其注释掉,不能设为 NONE。(该项说明使用操作系统认证)

5. 连接到 Oracle,创建相应的用户:

OSAUTH_PREFIX_DOMAIN 为 TRUE 时:

Create User “OPS$DOMAIN_NAME\NIU” IDENTIFIED EXTERNALLY;
注:在使用 DOMAIN_NAME\ 时,因为有特殊符号 \,所以要用双引号包起来,此时双引号中所有字符必须用大写。

OSAUTH_PREFIX_DOMAIN为 FALSE 时:
Create User OPS$niu IDENTIFIED EXTERNALLY;
赋予给用户一些权限,如:
SQL>GRANT CONNECT TO "OPS$DOMAIN_NAME\NIU"(OPS$niu);
Grant succeeded.
SQL>
6. 以 NIU 用户登录操作操作系统
SQL> connect /
connected
SQL> show user;
USER is "<OPS$><DOMAIN_NAME>\niu"
SQL>
7. 通常情况下,数据库用户登录后,即使没有 ALTER USER 的权限,也是可以修改自己密码的,但若是以此认证方式登录数据库,则不可以(未经确认,只是尝试失败得到的结论,但仔细想想,这样要求也合理)

 

二、超级管理员用户

1. 与普通用户差不多,需要在创建 windows 中创建组 ora_dba(默认情况安装 oracle 的时候已经建立,ORA_<sid>_DBA 只对指明的 sid 有超级管理员权限),并将本地用户或域用户加入该组。(无需再创建 oracle 用户,相当于用 sys 登陆,os_authent_prefix 也就不起作用。)

2. 用该用户登陆 windows
连接 oracle :

SQL> connect / as sysdba
connected
SQL> show user;
USER is "sys"
SQL>

 

三、几个参数说明

1. 初始化文件中的 os_authent_prefix: 指明 Oracle 帐户对应 OS 帐户的前缀。

2. 注册表中的 OSAUTH_PREFIX_DOMAIN :如果不指明域(或机器名),一定要将其设为 false,通常这是造成认证失败的原因。

3. sqlnet.orasqlnet.authentication_services=(nts) 否则产生 ora-01004 错误。

4. 初始化文件中 remote_os_authent=true :该参数不一定要设,除非要用到客户端的操作系统认证(没有试验)。

5. 初始化文件中 REMOTE_LOGIN_PASSWORD :只是用于超级管理员用户,设为 NONE 则只使用操作系统认证,EXCLUSIVE 可用非共享的密码文件认证,SHARED 可用共享的密码文件认证(但只能有 sys 用户为超级管理员)。注:操作系统认证优先于密码文件认证。

四、参考:

http://www.itpub.net/showthread.php?s=&threadid=207909
http://www.itpub.net/162971,1.html
http://www.cnoug.org/viewthread.php?tid=15082
http://www.cnoug.org/viewthread.php?tid=27294&sid=DU7tZYea
http://www.cnblogs.com/zyk/archive/2004/11/09/61786.aspx

Dec 09, 2005

Oracle 内存分配与调整

Oracle.SGA.Allocated.and.Tuning.pdf

Dec 07, 2005

Oracle 1z0031 学习笔记

    呵呵,正在看 1z0031,还没为 blog 找到空间也就懒得写学习笔记。好记性不如烂笔头,学了之后能总结才算真正的学会吧,看到网上有人进度和我差不多,写得学习笔记也不错,就暂时拿来用一下,等有了空间再自己写吧 :)


 


第一章 架构

oracle 2部分组成实例和Database

database一个物理存在,数据组合。
实例就是操作Oracledatase的一种手段。后台进程和内存结构

实例(instance):memory structure,background process;
   memory structure--SGA:sharedpool,database buffer cache,redo log buffer cache,large pool,java pool。
   后台进程:PMON,SMON,DBWR,LGWR,CKPT,Others--ARCHIVE,RECOVER  (可选和必须2部分)
等。

database 必须的文件:数据文件(data files),Control files,redo log files。
可选的文件:parameters file,passwordfile,archived log files。

用户进程和Server进程。是1对1的用户和Server进程。Oracle用户进程无法直接修改Databse的数据,只能通过连接服务器进程来修改数据。

control file是用来连接实例和database的桥梁。

startup nomount--开启一个实例
alter database mount;--读取控制文件
alter database open;--对database和数据文件和控制文件的一致性验证。

database ---- instance   是1对多的关系。

set wrap off
set linesize 200
select * from v$bgprocess;----所有可能会使用倒的后台进程。并不是所有的进程都是必须的。
必须的进程:select * from v$bgprocess where paddr<>'00';
PMON,SMON,DBWR,LGWR,CKPT,RECO.


database的物理结构:
3类文件,可能有多个文件组成。
select * from v$controlfile;
select * from v$datafile;
select * from v$logfile;

oracle 内存结构:
SGA--,系统一级可以share的,包括shared pool,database buffer cache,redo log buffer cache,large pool,java pool,lock,latch等。
PGA--,Server 进程特用的,不能共享的。


SGA定义:
show parameter shared;
show parameter db_cache_size;
show parameter log_buffer;                   oracle 9i 可以动态调整,但是SGA总和不能超过SGA_MAX_SIZE

alter session set nls_language=american;

alter system set db_cache_size=64m;
l;
c /64/20/
run

shared_pool_size:
--library cache : 当前库经常执行的SQL、PL/SQL等执行计划,编译数,以及文本等,提高代码共享性
  SQL语句--library cache检索是否有已经编译的执行计划--有直接执行|没有--语法分析--编译--得到执行计划后执行。提高性能的重要参数,保持在99%上。使用LRU算法,最近使用法。只能通过shared_pool_size来定义。

--data dictionary cache  : 用户的权限信息,访问数据对象,database结构信息,又称为行Cache(row cache)具体包括:数据文件信息,表信息,index信息,表列信息,用户信息,权限信息和其他数据对象信息的缓存。÷

不同cache_size 大小
db_cache_size:
db_16k_cache_size:
db_2K_cache_size:

db_block_buffers:  oracle 8 i,块数量的大小;4096 =4k
block_size=4096   那么db_buffer大小为:4096×db_block_buffers M.


database buffer cache:
db_cache_size:
db_keep_cache_size:
db_recycle_size:
可以动态调整:

db_cache_advice:  oracle系统建议值。

alter system set db_cache_advice=on;  根据系统运行Oracle给出的建议db_cache_size大小

redo_log_buffer_cache:
主要用于系统恢复


largepool:backup and restore;mts 方式(共享服务器方式)主要用有放置UGA的内存;可以动态改变
java pool:java_pool_size:

PGA:程序全局区,
dedicated server:Stack Space,Session information, sort area,cursor information;
shared server:Stack Space, sort area,cursor information;

process information:进程信息
用户进程----服务进程----后台进程
用户进程:客户端发起,不能直接操作数据
服务进程:根据用户进程开启的服务端进程,
后台进程:select * from v$bgprocess where paddr<>'00';

后台进程:
DBWn,写入修改后的数据(将DBBuffer中的dirtys数)
条件:check point,Buffer到阀值,no free buffer,timeout 3s,表空间的offline,表空间备份,表空间的readonly,
表结构清空和删除。
LGWR,日志写进程,把日志中Buffer中写道日志
条件:commit命令,1/3满Buffer,1M的redo,每3秒,开始写数据。
写日志优先:即写数据前必须先开始写日志。
SMON,系统监控进程
负责instance 恢复,
系统自由空间的整理
临时断的清空:
PMON,进程监控进程用户进程数据回滚清空整理,释放Lock,释放其它资源,重启死调的dispatchers(调度器,sharedServer mode)

CKPT,同步用,强制把Buffer中的数据写到datafiles;
更新数据文件和控制文件的Header,同步所需要的信息。实现数据库的信息的周期性同步。

ARCn,自动备份再线日志。

数据库的Logic Structure:
tablespaces,
segments,
extents,分区,空间的分配单位
block,空间的使用单位,如读,写等。


第二章  Oracle入门工具

主要内容:基本DBA工具,Oracle 安装工具OUI,OFA优化结构,口令文件,OEM管理工具。


OUI:安装升级,删除,
DBCA:建库工具,配置帮手
口令文件:可以管理特权用户的认证。
SQL/pLUS,


OUI:安装升级,修改Oracle应用组建,
安静的安装模式:
./runInstaller -responsefile myrespfile -silent
--myrespfile为指定的安装参数文件,
--sielt 表示安静安装模式,无需人工干预

DBCA:

OFA:Optimal Flexible Architechture
直观的管理Oracle的体系架构,可以支持多Database和多racle banb

DBA user:sys和system
sys/change_on_install:Owner of the database data dictionary
system/manager:Owner of additional internal tables and views userd by Oracle tools.

DBA 认证(authentication)方法:
  Os authentication:借助操作系统的认证。
     create os user id,
     create os group-ora_dba,ora_fox_dba
                     ora_oper,ora_fox_oper
     add os user id to ora_dba group
     edit sqlnet.ora "sqlnet.authentication_services=(nts)
     ?就可通过connect / as sysdba 来连接数据库   
  use a password file:用于在数据库启动前的用户验证,可以启动、关闭数据库。
     1。orapwd file=d:\oracle\ora90\database\pwdfox.ora password=admin1 entries=10;(需要重启DB后生效)
     2。edit initSID.ora file:
         REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
     3.GRANT SYSDBA TO USER02;  (select * from v$pwfile_users;)revoke sysdba from user02;

sqlplus/sqlplusw:
  set autocommit on;
  set linesize 1000;
  是一个工具,有自己的一套命令,同时也可以运行标准的SQL命令,和pl/SQL编程语言。
  oracle 9i 开始停用svrmgrl
  

OEM,是一个三层结构的应用工具,它通过各种Agent来实现对多个Oracle数据的集中管理:
独立登陆:可以直接连上数据库,但是不能做一些操作如备份之类

OEM服务登陆:OEM CONSOLE---Repository(资料库)---oracle agent
  必须先配置服务器

OEM工具:


第三章  管理Oracle Instance

任务:
   Create和管理,修改initSID.ora文件
   配置OMF,配置Oracle表空间,日志文件的路径等。
   Oracle启动和关闭过程-nomount,mount,open.
   
3.1 初始化参数文件:
  系统参数文件,spfile 一个二进制文件,不可以直接修改,可以alter system 命令修改。
  初始化参数文件initSID.ora,可以修改

  在Oracle参数中,如果没有特别指定,就使用默认值。分为2类:显试和隐含
  
  SPFILE,可以动态修改内存参数

  Oracle启动过程初始化参数文件的优先级:spfileSID.ora---spfile.ora---initSID.ora

  create spfile from pfile;
  create pfile from spfile;

  实例:
  create spfile='d:\oracle\admin\pfile\spfile.ora' from pfile;
  create pfile='d:\oracle\admin\pfile\pfilebak.ora' from spfile;

3.2 OMF Oracle managed file
  db_create_file_dest                  string   #create tablespace default db_files dir;
  db_create_online_log_dest_1          string
  db_create_online_log_dest_2          string
  db_create_online_log_dest_3          string
  db_create_online_log_dest_4          string

3.3 Instance startup and down process;
  start process:
     nomount--读初始化参数文件,写alertSID.ora文件,分配物理内存,启动后台进程,定位到控制文件
              用于create db,create controlfile
     mount--打开控制文件,确认databaes结构信息,只能访问数据库结构信息和内存信息,不能访问用户信息。
              用于修改归档模式,rename db_file,恢复数据库
     open--打开所有在控制文件中描述和当前Instance相关的文件,如果需要(如shutdown abort)对文件进行完整性校验,即recover。
              用正常操作数据。
  startup [nomount|mount|open]      [read only]
          pfile=
          restrict         #限制用户连接模式 只有拥有restricted权限的用户可以登陆
           recovery
           force            #忽略现有内存中的Instance,强制启动。
  数据是否启用read only 只有在启动时候觉定,启动后无法修改。
  
  shutdown 模式:
    normal:等待当前的Session、和事务(transactional)完毕,
    transactional:等待当前的事务(transactional)完毕,
    immediate:不等待,直接关闭库。对已经做的事情做Rollback
    abort:没有做check point 和关闭文件。需要在下次启动时候做Recovery
  
  在shutdown abort 和instance启动失败,或startup force后需要对数据库做Recovery,过程如下:
    Redo log对已做的事情进行重做--回滚段对已做的操作进行Rollback没有Commit的作业--释放资源
   
   
  通过监控诊断文件来管理Instance:
  3类诊断文件:
     AlertSID.log:记录Oracle内部信息,出现Oracle系统的错误信息。一般每天检查。放置background_dump_dest参数指定。       
     后台转存文件:后台进程出现错误的时候做日志记录。目录同AlertSID.log
     用户跟踪文件:缺省关闭,如果启动需要设定参数。放在USER_DUMP_DEST指定目录  sql_trace=true或者alter session set sql_trace=true;


第四章 create database 和管理

topic:
准备工作
DBCA建库
手工建库

4.1 准备工作
  特权用户,建立口令文件,足够的内存和磁盘空间。
  规划存储位置:
    至少2份不同位置的控制文件
    多份Redo log文件
    为了均衡系统负载,数据分开存放。系统表空间不要存放用户数据。
    设定系统环境变量:UNIX
    ORACLE_BASE:  d:\oracle  第一节子目录
    ORACLE_HOME:  d:\oracle\9.2.0\              管理文件所在的位置
    ORACLE_SID:     实例名称
    ORA_NLS33:                    语言环境变量,和字符集有关
    PATH:
    LD_LIBRARY_PATH:        文件库所在的路径
    设定系统环境变量:windows
    set ORACLE_SID=calay
    setenv ORACLE_BASE=D:\oracle
      
   
4。2 DBCA建库
    可以修改,删除,建立库,管理模板。

4。3 手工创建库
    1.确认唯一 的SID。
    2。确认字符集。
    3。设定系统变量:ORACLE_HOME 等
    4。编辑、修改初始化参数文件。
    5。启动实例。startup nomount
    6。执行create database 命令
    7。执行常用的Scripts和字典库的视图等。
   
   如果是windows下,需要 创建实例:(创建口令文件和Service)
   1.set ORACLE_SID=ca1;
   2.oradim -NEW -sid ca1 -INTPWD admin -pfile D:\oracle\product\10.2.0\db_1\database
   3.修改INITSID.ora文件:controlfile和DB_BLOCK_SIZE大小
   
CREATE DATABASE "ca1"
DATAFILE 'd:\oracle\product\10.2.0\oradata\ca1\system1.dbf' SIZE 50M AUTOEXTEND ON NEXT 4M MAXSIZE 128M
logfile group 1 ('d:\oracle\product\10.2.0\oradata\ca1\redo01a.log','d:\oracle\product\10.2.0\oradata\ca1\redo01b.log') SIZE 16384K,
        group 2 ('d:\oracle\product\10.2.0\oradata\ca1\redo02a.log','d:\oracle\product\10.2.0\oradata\ca1\redo02b.log') SIZE 16384K,
        group 3 ('d:\oracle\product\10.2.0\oradata\ca1\redo03a.log','d:\oracle\product\10.2.0\oradata\ca1\redo03b.log') SIZE 16384K
sysaux DATAFILE 'd:\oracle\product\10.2.0\oradata\ca1\sysaux.dbf' SIZE 50M
undo tablespace UNDO
datafile 'd:\oracle\product\10.2.0\oradata\ca1\undo01.dbf' size 10m   
default temporary tablespace TEMP
tempfile 'd:\oracle\product\10.2.0\oradata\ca1\temp1.dbf' size 10m
character set ZHS16GBK
   maxdatafiles 254
   maxinstances 8
   maxlogfiles 32
   ;


手工建库过程:

1.create database ..
2.运行buildall.sql---catalog.sql
3。catproc.sql建立标准的数据库包,和数据类型。
4.sqlplus/admin/pupbld.sql  建立SQLPLUS运行环境。以system用户登陆运行
5。sqlplus/help/helpbld.sql 建立SQLPLUS帮助环境


第五章  数据字典内容和用途
  数据字典 data dictionary
  在数据库创建过程中,会自动建立下面2类表:
    1 Data dictionary table:存放数据字典的静态信息。是只读,加密的系统表。用于描述Database的对象信息以及用户的权限信息,包括:
       base table:和database相关的结构信息。加密信息,无法直接查看。
       data Dictionary view:  显示base table 的信息
    2 Dynamic performace table :启动时候创建,关闭的时候删除的临时表,存放运行中的性能信息,是数据库优化的重要依据。
   
  5。1  数据字典的具体内容:
      1。数据库的逻辑和物理结构
      2。定义和分配对象的空间分配和使用。  
      3。完整性约束。
      4。用户
      5。角色
      6。权限
      7。审计信息。(可以记录到其它地方——)
      
   5。2 数据字典的用处:
      1。存储用户、数据对象、存储结构的信息。
      2。通过DDL语句来修改数据字典信息。
      
   5。3 数据字典分类:
      1 DBA_XXX,所有的数据对象
      2 ALL_XXX,可以访问到的数据对象信息。如自己拥有或者授权的对象。
      3 USER_XXX,用户自己用有的对象。
      
   5。4 查询数据字典视图和动态性能视图
   所有的视图:select * from dictionary;
   查看动态视图:select * from V$fixed_table;


第六章 管理维护控制文件
   记录Database的结构信息,如数据文件、临时文件
   在系统运行中,会周期性的同步database信息。
   
  内容:
  a。控制文件的用途
  b。控制文件的内容
  c。多份控制文件的分开存放
  d。OMF对控制文件的挂你
  e。获取控制文件的信息

  控制文件是一个二进制文件,是连接实例和database的一个桥梁,它定义了当前数据库物理信息的状态。
  要点:
      1。控制文件如果全部丢失,那么需要恢复控制文件,介质恢复。
      2。控制文件的Database在Mount的时候被Read。
      3。需要能正常的被操作
      4。1个控制文件只能连接到一个Database
      5。必须多份存放。
      6。CrontrolFile维护了Database的完整性。
      7。文件的大小是在CreateDatabase的时候建立的。在Nomount的状态下用alter create crontrolfile 重建控制文件。
   
   控制文件内容:
      1。Database的内容和标识。select * from v$database;
      2。Database的建立时间。
      3。表空间的信息。select * from v$tablespace;
      4。日志文件的信息。select * from v$logfile;
      5。当前Redo日志文件的次序号。 select * from v$log;
      6。数据库checkpoint同步信息。
      7。回滚断的开始和结束。
      8。RedoLog 归档信息。select * from v$archived_log;
      9。备份信息。  select * from v$backup;  (alter tablespace users begin backup;alter tablespace users end backup;)
      
    多份Controlfile过程:
    show parameter spfile;
    select * from v$controlfile;
    1。修改SPFILE
    alter system set control_files =
    'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL01.CTL',
    'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL02.CTL',
    'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL03.CTL',
    'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL04.CTL'
    scope=spfile;
    2。shutdown Database。
    3。Startup Database.
   
    查询ControlFile的信息:
    show parameter control;
    select * from v$controlfile_record_section;查询可以修改的信息
   
    备份和重建控制文件:
    alter database backup controlfile to 'c:\control.bak';
      alter database backup controlfile to trace;        #翻译城可以创建ControlFile的脚本。保存在UDMP目录下


第七章 Oracle Redo Log管理和维护

日志是记录数据库内容修改的任何记录。有2部分组成:在线日志文件和归档日志文件。
在线日志文件:可以重复利用
归档日志文件:把在线日志文件在覆盖前进行归档保存。

本章目标:
在线日志文件的目的。
在线日志文件的结构。
控制日志文件的Switch和Checkpoint。
多工和维护在线日志文件。
在OMF管理模式下管理在线日志文件。


7。1 使用Redo Log Files。
    RedoLog文件记录了所有的数据内容修改,并为数据库的基于介质恢复提供依据。
    Redo log文件以组来构成,每个数据库至少有2个或2个以上的组,每个组可以有多个日志文件,每个组中的文件称为成员。
    Redolog 日志通过循环的方式来写,通过LGWR来写,在写满一个组,改为下一个组的工程称为Switch。
    一个Switch过程会出发数据库的Checkpoint,即引起数据库同步。(写ControlFile和数据文件)可以通过命令来强行Switch:
    alter system switch logfile;
    alter system checkpoint;  来强制同步数据库
         
    当表空间发生备份、Offeline、drop的时候会自动Checkpoint。
    Mttr:mean time to recovery,
    FAST_START_MTTR_TARGET:控制数据库做一次Recovery的时间;(即同步时间间隔)
    FAST_START_IO_TARGET:ORACLE 8i参数。
    LOG_CHECKPOINT_INTERNAL:
    LOG_CHECKPOINT_TIMEOUT:
    同步的频率越高,系统进行Recovery需要的时间越短。如果设定了FAST_START_MTTR_TARGET,Oracle会自动计算为FAST_START_IO_TARGET和  LOG_CHECKPOINT_INTERNAL2个参数。
   
7。2Redo log文件的常规操作
    如果使用OMF管理文件,那么Oracle会自动产生相关文件和删除相关文件,并且按默认大小。
   
    1。添加Redo Log日志组:
       ALTER DATABASE ADD LOGFILE GROUP 4
       'D:\oracle\product\10.2.0\oradata\orcl\redolog04a.log'
       size 5M;
       建议:Oracle的每个Redo组使用相同的成员数,而且每个组大小相同。
      
    2。添加日志成员:
       ALTER DATABASE ADD LOGFIEL MEMBER
       'D:\oracle\product\10.2.0\oradata\orcl\redolog04b.log'  TO GROUP 4;
       注意:同一组内的成员大小相同
    3。 删除组:
       ALTER DATABASE DROP LOGFILE GROUP 4;
       注意:RESTRICTED:Current  log group,Active log group,unarchived 日志文件组不能被删除。
       需要手工删除OS文件:
    4。删除成员:
            ALTER DATABASE DROP LOGFILE MEMBER
            'D:\oracle\product\10.2.0\oradata\orcl\redolog04b.log';
            组中的最后一个文件不能被删除。   
      
  7。3 Clear,重新定位,和Rename 日志文件
                        Clear--Reinit日志文件:
                        ALTER DATABASE CLEAR LOGFILE GROUP 2;
                        ALTER DATABASE CLEAR LOGFILE 'D:\oracle\product\10.2.0\oradata\orcl\redolog04b.log';
                        ALTER DATABASE CLEAR UNARCHIVED LOGFILE GROUP 3;    -----------导致数据库的一个断点,需要做一个全库的备份。
                       
                        先在OS中重命名'D:\oracle\product\10.2.0\oradata\orcl\redolog01.log'文件:
      ALTER DATABASE RENAME FILE  'D:\oracle\product\10.2.0\oradata\orcl\redolog01.log' TO
      'D:\oracle\product\10.2.0\oradata\orcl\redolog01a.log';
      
      
  7。4 Redolog 配置:
       都份成员必须放在不同的HDISK上。
      
  7。5 使用OMF来管理Redolog:
        show db_create_online_log_dest_n(n=1-5)来自动管理日志成员文件:
        alter system set db_create_online_log_dest_1=
        'D:\oracle\product\10.2.0\oradata\orcl\log\';
        ALTER DATABASE ADD LOGFILE;
        ALTER DATABASE DROP LOGFILE GROUP 3;
        
        -----会自动创佳OS文件和删除OS文件:
   7。6 查看Redolog信息;
        v$log,V$logfile;
        v$log:log group 信息
              Status:/current/active/inactive/unused
        v$logfile:成员,Status为空表示正在用。statle,不完整。delete,被删除
        
    7。7 归档日志文件
         归档模式的用处:
         1。数据库恢复用,可以将数据库恢复到出现问题的时间点,通过归档日志来实现。
         2。支持数据库的在线备份(hotbackup热备份)。
         非归档模式只能做离线模式备份,只能做全备份。
         
         归档---非归档转换
         1)。shutdown immediate  干净的关闭数据库
         2)。startup mount   
         3). alter database archivelog /noarchivelog;
         4). alter database open;
         5). Full DB backup       ---------   
         6). archive log start;  开始自动归档
             alter system archive log all;     手动归档
         7)。archive log list;    检查模式;
         
         查看所有的归档日志文件信息:(保存在控制文件中)
         select * from v$archived_log;
     
     7。8 logminer:
     注意,在做前模拟数据修改:
     
         1) set directory utl_file_dir
         2) restartup db
         3) create directory file  (run catproc.sql)很慢
            SQL>execute dbms_logmnr_d.build('testdict.ora','d:\oracle\testlog');
            desc dbms_logmnr
         4) add/remove log file;(被分析的日志文件加到目录下)
            execute dbms_logmnr.add_logfile('d:\oracle\...\redo04a.log',dbms_logmnr.new);
            dbms_logmnr.removefile
            desc dbms_logmnr
         5)start logmnr     启动分析
            execute dbms_logmnr.start_logmnr(dictfilename='d:\oracle\testlog\testdict.ora');
         6) view 结构:v$logmnr_content;----SQLredo/sQLundo
            SQLredo:
            SQLundo:


第八章 管理和维护表空间和数据文件

表空间:逻辑概念
数据文件:物理概念         
本章目标:
        描述逻辑结构Database,
        Create 表空间
        修改表空间大小,
        为临时Segment分配空间,
        修改表空间的状态,
        修改表空间的存储配置信息,
        实现OMF,
       
        8。1 Oracle database逻辑结构
                Database:3部分,datafiles/relologfiles/controlfiles;
                database 层次结构:
                逻辑:database----tablespace----segment----extent----OracleBlock
                                  ||                               ||              ||                          
    物理:                datafiles--------------------------|            OS Block
                    
    tablespace:数据库的逻辑结构
    segment:特定的所占用逻辑结构空间集合,类型有:table/index/temp/rollback 四种段类型 ,一个表空间有多个Segment,一个段不可一跨表空间,单可以跨Datafile;
    extent:是一个Oracle空间分配单位 ,多个OracleBlock组成,必须是BLOCK的整数倍。不可以块Datafile。
    OracleBlock,是使用和存储单位            
    查看表空间和数据文件的关系:
    select t1.name,t2.name from v$tablespace t1 ,v$datafile t2 where t1.ts=t2.ts;
   
   8。2系统表空间和非系统表空间
           系统表空间:数据字典信息和Undo segment,在database建立的时候创建。
           非系统表空间:分离Segment,方便空间管理,控制用户对空间的使用。
   8。3 create tablespace;
     create tablespace xxx
     [datafile 'xxx']  --OMF
     [size] xxx --KB,MB
     [extenet management local/dictionary]
     [default storage (xxx)] --initial/next/pctincrease/minextents/maxextents      非local管理
     
     create tablespace ca1
     datafile 'd:\oracle\datafile\ca1.dbf' size 5M
     extent management dictionary
     default storage (
     initial 100k
     next 100k
     pctincrease
     offline)
     ;
     create tablespace ca2
     datafile 'd:\oracle\dbfile\ca2.dbf'
     size 5m
     extent management local
     uniform size 1m
     ;
     
     推荐使用本地管理方式:
        减少数据字典表的争用。
        空间分配或回收不会产生回滚段
        没有碎片压缩的问题
     
     8.4 修改表空间的属性
     alter tablespace ca1
     mininum extent 10;
     alter table ca1
     default storage(
     initial 1m
     next 1m
     pctincrease 20
     );
   
    8.5 UNDO 表空间  回滚段
    UNDO Segment:是一个存储的环路,用于存储已经改变的Old数据。不可放其他任何数据,而且表空间必须是本地管理。
    主要作用:
    1)存储被修改的数据(没有提交)
    2)用有回滚数据,
    3)提供数据读一致性。
   
    Oracle 9开始允许Oracle自动管理回滚断,一般根据系统交易量来设定回滚断的存储参数。要尽量避免回滚断的争用。自动管理可以根据系统需要的量来自动管理
   
    show parameter undo;
    create undo tablespace ca4
    datafile 'd:\oracle\dbfile\ca4.dbf'
    size 10M
    extent management local;
    注意,系统回滚段肯定放置在系统表空间中。
   
   
    8。6 Temp Segment 临时表空间
    主要做排序用,不能存放永久的数据,建议使用本地管理表空间。
    create temporary tablespace tempca5
    tempfile 'd:\oracle\dbfile\tempca5.dbf' size 5m
    extent management local;   
   
    Default temporary tablespace:每个用户可以指定自己的临时表空间,如果没有指定,就使用Default Temporary tablespace 避免使用系统表空间来当临时表空间,导致系统异常。
    修改数据库的临时表空间:
    alter database default temporary tablespace tempca5;
   
    限制默认临时表空间:
    临时表空间不能被drop,offline,readonly,不能被变成永久的表空间。
      
      
    8。7 表空间的Offline/read only状态。
    目的:可以修改数据文件名称和位置,对数据文件进行修复等。
    可以部分的关闭数据库,除外:系统表空间,active undo tablespace ,default temporary space
    alter tablespace users offline;
    alter tablespace users read only;   #可以删除数据对象,对系统表空间操作
   
    8。8 drop tablespace
   
    drop tablespace users
    including contents and datafile;   
   
    8.9 resize tablespace
       1) add datafile
       2) set datafile autoextend
          手工修改数据文件的大小
       alter database datafile
          'd:\oracle\dbfile\ca1.dbf'
          autoextend on next 2m maxsize 30m
          ;
       alter database datafile
          'd:\oracle\dbfile\ca1.dbf'
          resize 3m
          ;            #resize 可以扩大或缩小
         
        alter tablespace ca1  
          add datafile 'd:\oracle\dbfile\ca11.dbf'
          size 1m
          ;  
      8.10 移动或改名数据文件
          1)必须先Offline tablespace。
          2)必须先OS Copy物理文件到目标地点。
        alter tablespace ca1
           rename datafile 'd:\oracle\dbfile\ca11.dbf'
              to datafile  'd:\oracle\dbfile\ca12.dbf'
              ;
              
           如果需要改变临时默认表空间、或系统表空间的名字和位置,需要SHutdown库,并到Mount状态下 。
           
           alter database rename
             file 'XXX'
             to 'yyy';
           YYY必须先存在准备好。
           
       8。11 配置OMF
       系统参数:DB_CREATE_FILE_DEST就是OMF默认的文件路径
       配置后会自动管理Datafile如:
       create tablespace ca1;
       会自动创建文件名和大小(默认100M)
      
       8.12 获取表空间的信息:
       DBA_TABLESPACES    V$TABLESPACE
       DBA_DATAFILES      V$DATAFILE;
       DBA_TEMPFILES      V$TEMPFILE;


第九章 存储结构和相互关系   
    9。1段的类型(type of segment)
    1)table
    2)table partition:物理上多个表,逻辑上一个整表
    3)cluster:多个逻辑表放在同意物理段里
    4)index
    5)index-organized table:经过Index排列的数据。
    6)index partition:
    7)undo segment:有序的循环使用
    8) temporary segment:排序用
    9)LOB Segment:放置大的数据对象如:BLOG,
    10)Nested table:嵌套表
    11)bootstrap segment:用于初始化Oracle实例,在启动的时候使用,用完后自动释放,无需维护和管理
    
    9。2 oracle存储参数的3个级别:Default/tablespace/segment,优先级由低到高。
    create table
    calay.test1
    (id int)
    tablespace ca1
    storage(initial 100k
    next 100k);
    这个存储参数就会覆盖default和tablespace的存储参数。
   
  
   9.3 extent 分配和回收
   分配:
      create
      extended
      alter table calay.ca1
      allocate extent (size 2m datafile 'd:\oracle\dbfile\ca1.dbf');
    回收:
     alter table calay.ca1
     deallcote unused
     keep 0;
    25MIN
           
   9.4 database block:Oracle系统的IO最小单位
   有多个OS的Block组成,在建表空间的时候指定,但是必须在系统参数中有相应的配置Block_cache_size.
  
   alter system set db_16k_cache_size=10m;
   create tablespace tb_ca2
   datafile 'd:\oracle\dbfile\tb_ca2.dbf' size 2m
   blocksize 16k;
   Block 内容:header---free space--data ,从头和尾分别向中间写,直到满。
   相关参数:
   initrans:1
   maxtrans:255  
   pctfree:预留多少空间
   pctuserd:控制块使用最小的比例。
   row migration:行一直。记录从一个Block到另外一个Block。增加IO开销。
  
   segment( 段)空间管理:本地和字典
   本地:
   create tablespace tb_ca3
   datafile 'd:\oracle\dbfile\tb_ca3.dbf' size 2m
   extent management local uniform size 64k
   segment space management  auto;
                    
    相关的数据字典:
    dba_tablespace,dba_data_file,dba_free_space;
    dba_tablespace,dba_segments,dba_extents;
   
    select sum(bytes) from dba_extents
where owner='calay' and segment_name='jobs';   


http://bbs.loveunix.net/viewthread.php?tid=50796&extra=page%3D1

Nov 03, 2005

[WorkFlow] DPEEA 同步

C:\Documents and Settings\Administrator>d:


D:\>cd dbbackup


D:\DBBackup>set nls_lang=GERMAN_GERMANY.WE8ISO8859P1


D:\DBBackup>sqlplus system/manager@dpeea


SQL> drop user dpmgr cascade;


User dropped.


SQL> CREATE USER dpmgr
  2     IDENTIFIED BY dpmgr
  3     DEFAULT TABLESPACE dpdata
  4     TEMPORARY TABLESPACE temp;


User created.


SQL>
SQL> GRANT CONNECT, RESOURCE, DBA TO dpmgr WITH admin OPTION;


Grant succeeded.


SQL> exit
Disconnected from Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production
JServer Release 8.1.7.0.0 - Production


D:\DBBackup>imp dpmgr/dpmgr@dpeea file=dpliv3.dmp fromuser=dpmgr touser=dpmgr


Import: Release 8.1.7.0.0 - Production on Do Nov 3 11:46:54 2005


(c) Copyright 2000 Oracle Corporation.  All rights reserved.



Connected to: Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production
JServer Release 8.1.7.0.0 - Production


Export file created by EXPORT:V08.01.07 via direct path
import done in WE8ISO8859P1 character set and WE8ISO8859P1 NCHAR character set
IMP-00017: following statement failed with ORACLE error 2082:
 "CREATE DATABASE LINK "DPEEA.BIS.SWIREBEV.COM" CONNECT TO "DPMGR" IDENTIFIED"
 " BY "dpmgr" USING 'DPEEA'"
IMP-00003: ORACLE error 2082 encountered
ORA-02082: a loopback database link must have a connection qualifier
. . importing table                      "CCONFIG"          1 rows imported
. . importing table                     "DFUMATCH"          0 rows imported
. . importing table                     "DFUTLIST"         42 rows imported
. . importing table                      "DPEE_UC"         88 rows imported
. . importing table              "FFW_BEZMOD_HEAD"          7 rows imported
. . importing table               "FFW_BEZMOD_POS"         15 rows imported
. . importing table                 "FFW_CALENDAR"          2 rows imported
. . importing table                   "FFW_EXPORT"          7 rows imported
. . importing table             "FFW_EXPORT_PARAM"         18 rows imported
. . importing table               "FFW_FISCALYEAR"          0 rows imported
. . importing table                "FFW_H_ENTRIES"        661 rows imported
. . importing table                 "FFW_JOB_HEAD"         17 rows imported
. . importing table                  "FFW_JOB_POS"         17 rows imported
. . importing table                  "FFW_LICENSE"          3 rows imported
. . importing table                "FFW_MBE_CLASS"         41 rows imported
. . importing table               "FFW_MBE_GRAFIK"          6 rows imported
. . importing table                 "FFW_MBE_KRIT"          8 rows imported
. . importing table                "FFW_MRMO_HEAD"          1 rows imported
. . importing table                 "FFW_MRMO_POS"          4 rows imported
. . importing table                "FFW_NOMO_HEAD"          5 rows imported
. . importing table                 "FFW_NOMO_POS"         15 rows imported
. . importing table                   "FFW_SELDEF"         45 rows imported
. . importing table                 "FFW_SELRECON"        473 rows imported
. . importing table                    "FFW_SIGMA"          0 rows imported
. . importing table                "FFW_STRUCTDEF"         11 rows imported
. . importing table               "FFW_TSRELATION"       1077 rows imported
. . importing table                     "FFW_USER"          0 rows imported
. . importing table              "FORSYS_ERRTABLE"          3 rows imported
. . importing table               "FORSYS_FSBASIC"          1 rows imported
. . importing table                  "FORSYS_INFO"          0 rows imported
. . importing table               "FORSYS_MEANCHG"        243 rows imported
. . importing table                "FORSYS_OPSMTX"         13 rows imported
. . importing table               "FORSYS_SEPRCNT"       1192 rows imported
. . importing table                "FORSYS_SYSTEM"          1 rows imported
. . importing table               "FORSYS_TSBASIC"       1081 rows imported
. . importing table               "FORSYS_TSFCMOD"      14395 rows imported
. . importing table                 "FORSYS_TSMBE"       1081 rows imported
. . importing table             "FORSYS_TSMEANCHG"        243 rows imported
. . importing table                "FORSYS_TSPLAN"        688 rows imported
. . importing table               "FORSYS_TSSEABS"        619 rows imported
. . importing table             "FORSYS_TSSEPRCNT"       1197 rows imported
. . importing table              "FORSYS_TSTARGET"         89 rows imported
. . importing table                 "FORSYS_TSVEC"       5276 rows imported
. . importing table             "FORSYS_TSXSEASON"          2 rows imported
. . importing table               "FORSYS_XSEASON"          4 rows imported
. . importing table                       "KEYMAP"          0 rows imported
. . importing table                     "TEMP_LIR"         78 rows imported
. . importing table                     "TRANSERR"          0 rows imported
. . importing table                     "TRANSGRP"         31 rows imported
. . importing table                    "TRANSHIST"          0 rows imported
. . importing table                     "TRANSSEL"          0 rows imported
About to enable constraints...
Import terminated successfully with warnings.