小路 的 Blog


六月 17th, 2010

Oracle数据库备份与恢复(3):OS备份数据

No Comments, 网络应用, by 小路, 143 views.

  用户管理的备份与恢复也称 OS物理备份,是指通过数据库命令设置数据库为备份 状态,然后用操作系统命令,拷贝需要备份或恢复的文件。这种备份与恢复需要用户的 参与手工或自动完成。

  对于使用 OS拷贝备份的数据文件,可以使用 DBVERTIFY 进行检验。DBVERTIFY是一个外部工具,主要用于校验数据文件或备份的数据文件的数据块是否正确。 例:

  dbv /u01/oradata/oracle/users01.dbf BLOCKSIZE=8192

  参数说明:

关键字 说明 (默认)
FILE 要检验的文件 (NONE)
START 起始块 (文件的第一个块)
END 结束块 (文件的最后一个块)
BLOCKSIZE 逻辑块大小 (2048)
LOGFILE 输出日志 (NONE)
FEEDBACK 显示进程 (0)
  Recover 还可以进行测试,检测恢复的错误,错误信息记载在 alert_SID.log 文件中,通过测试,我们可以知道该恢复操作是否能正常完成。

  SQL> RECOVER TABLESPACE sales TEST;

  SQL> RECOVER DATABASE UNTIL CANCEL TEST;

  3.1 相关设置

  3.1.1 设置ARCHIVELOG与NONARCHIVELOG模式

  重做日志组是以循环方式使用的,重做日志组会被覆盖重做日志信息就会丢失。为了保存历史以来的重做日志,数据库可以运行在日志归档模式下(archivelog mode)。 在日志归档模式下,当日志组撤换到下一个组时后台进程 ARCn 将上一个日志文件复制到另一个地方(oracle 10g 使用快速恢复区会归档到该区)保存。数据库默认为非归档模式(noarchivelog mode)。

  设置ARCHIVELOG模式步骤:

  1. 关闭数据库,备份已有的数据,改变数据库的运行方式是对数据库的重要改动,所以要对数据库做备份,对可能出现的问题作出保护。

  2. 修改初试化参数: 使用 PFILE,修改初始化参数文件 init[SID].ora log_archive_start=true #启动自动归档 log_archive_format=ARC%T%S.arc #归档文件格式 log_archive_dest=/arch12/arch #归档路径

  3. 启动 Instance 到 Mount状态,即加载数据库但不打开数据库:SQL > startup mount;

  4. 发出修改命令SQL > alter database archivelog; SQL > alter database open;设置 NONARCHIVELOG模式步骤同上,只需修改相应参数值即可。

  3.1.2 LOGGING 与 NOLOGGING

  表空间、表、索引、分区可以设置为 NOLOGGING,用于快速装入数据(Direct Load)。 在插入数据时只写入最小的重做日志和回滚数据。在归档数据库模式下,执行 Direct Load 操作后应立即进行备份,否则不能使用之前的备份进行恢复。另外,用户可以设置数据库的 强制日志模式,使用所有操作都记入日志。

  LOGGING 与 NOLOGGING 的区别:

LOGGING NOLOGGING
所有的更改写入 REDO 最小写入 REDO LOG
从最近备份中完全恢复 不能从最近备份中完全恢复
不需要增加备份 需要增加备份
  NOLOGGING 的操作:

  CREATE TABLE … NOLOGGING AS SELECT 语句

  INSERT /*+APPEND*/ INTO <表> NOLOGGING SELECT 语句

  INSERT /*+ PARALLEL(<表>,)达式*/ INTO <表> NOLOGGING SELECT 语句

  SQL*LOADER的DIRECT 方法

  例:

  SQL>CREATE TABLE emp1 NOLOGGING AS SELECT * FROM emp; SQL>SELECT name,unrecoverable_time FROM V$DATAFILE;

  SQL>INSERT /*+ APPEND */ INTO emp1 NOLOGGING SELECT* * FROM emp; SQL>SELECT name,unrecoverable_time FROM V$DATAFILE;

  SQL>ALTER DATABASE NO FORCE LOGGING;

  3.1.3 归档路径

  在归档模式下进行自动归档时,或者在恢复时设置归档所在的位置,需要设置归档路径初始化参数:

  LOG_ARCHIVE_DEST_n=“LOCATION=path MANDATORY|OPTIONAL REOPEN=n”

  LOG_ARCHIVE_DEST_n=“SERVICE=standby MANDATORY|OPTIONAL REOPEN=n
  3.2 NONARCHIVELOG 模式

  3.2.1 脱机冷备与恢复

  冷备份发生在数据库已经正常关闭的情况下,当正常关闭时会提供给我们一个完整的数据库。冷备份是将关键性文件拷贝到另外位置的一种说法。对于备份 Oracle 信息而言,冷备份是最快和最安全的方法。

  冷备份的优点:

  1.是非常快速的备份方法(只需拷贝文件)

  2.容易归档(简单拷贝即可)

  3.容易恢复到某个时间点上(只需将文件再拷贝回去)

  4.能与归档方法相结合,作数据库“最新状态”的恢复。

  5.低度维护,高度安全。

  冷备份的不足:

  1.单独使用时,只能提供到“某一时间点上”的恢复。

  2.在实施备份的全过程中,数据库必须要作备份而不能作其它工作。也就是说,在冷备份过程中,数据库必须是关闭状态。

  3.若磁盘空间有限,只能拷贝到磁带等其它外部存储设备上,速度会很慢。

  4.不能按表或按用户恢复。

  如果可能的话(主要看效率),应将信息备份到磁盘上,然后启动数据库(使用户可以 工作)并将所备份的信息拷贝到磁带上(拷贝的同时,数据库也可以工作)。冷备份中必须 拷贝的文件包括:1.所有数据文件2.所有控制文件3.所有联机 REDO LOG 文件4.参数化参数 Init.ora 文件(可选)。

  3.2.2 案例

  1.9i 脱机冷备/恢复的例子:

  (1) 关闭数据库

  $ sqlplus /nolog

  SQL> connect /as sysdba

  SQL> shutdown normal;

  (2) 用拷贝命令备份/恢复全部的时间文件、重做日志文件、控制文件、初始化参数 文件SQL > host cp xx xx;

  可以使用以下冷备脚本:

  #!/bin/bash

  ##################################################################

  ## 名称: coldback_gen.sh

  ## 功能: 本 shell 用于生成冷备份脚本, 进行冷备份同时生成相应的恢复命令

  ## 可以修改后在生成后立即执行

  ## 编者:

  ## 日期: 2006.12.13.

  ##################################################################

  ##设置变量

  ##设置临时文件名

   tempsql=./backup.sql

  ##设置备份文件存放路径

  backdate=`date -u +%Y%m%d`

  backupdir=/u04/oracle/coldback/$backdate

  mkdir $backupdir

  ##设置备份脚本文件名

  backupsh=$backupdir/coldback.sh

  rcvrsh=$backupdir/recovery.sh

  echo “正在生成冷备份脚本[$backupsh]……”

  ##检查 ORACLE数据库是否启动

  oraisrun=`ps -ef|grep -c ora_`

  if [ "$oraisrun" = "0" ] || [ "$oraisrun" = "1" ]

  then

  echo ”

  ORACLE 数据库尚未启动,请先启动 ORACLE”

  echo “”

  exit

  fi

  ##准备工作

  echo “set heading off ” > $tempsql

  echo “set feedback off ” >>$tempsql

  echo “set tab off ” >>$tempsql

  echo “set verify off ” >>$tempsql

  echo “set pagesize 0″ >>$tempsql

  echo “set linesize 800 ” >>$tempsql

  echo “select ‘#!/bin/bash’ from dual;” >> $tempsql

  echo “select ” from dual;” >> $tempsql

  echo “select ‘## 备份脚本生成时间: ” `date +%Y 年%m月%d日-%H:%M:%S` “‘

  from dual;” >> $tempsql

  echo “select ‘## 备份目的路径: $backupdir’ from dual; ” >> $tempsql

  echo “select ” from dual; ” >> $tempsql

  echo “” echo “select ‘echo ”开始进行脱机冷备……”’ from dual; ” >> $tempsql

  echo “select ‘echo ”备份目的路径: $backupdir ”’ from dual; ” >> $tempsql

  ##这里不直接关闭数据库,提示用户手工关闭为好。如果需要直接关闭,请修改

  echo “select ‘orarun=’||’\`’||’ps -ef|grep -c ora_’||’\`’ from dual;” >>$tempsql

  echo “select ‘if [ "\$orarun" != "0" ] && [ "\$orarun" != "1" ] ‘ from dual;” >>$tempsql

  echo “select ‘then’ from dual; ” >>$tempsql

  echo “select ‘echo ” ” ‘ from dual;” >>$tempsql

  echo “select ‘echo ”ORACLE 数据库已启动,请先关闭 ORACLE 数据库” ‘ from dual;”

  >>$tempsql echo “select ‘

  echo ” ” ‘ from dual;” >>$tempsql

  echo “select ‘exit’ from dual; ” >>$tempsql

  echo “select ‘fi’ from dual; ” >>$tempsql

  echo “select ‘echo ” ” ‘ from dual; ” >> $tempsql

  echo “select ‘echo ”正在备份控制文件……”’ from dual; ” >> $tempsql

  echo “select ‘cp ‘ ||name||’ $backupdir’ from v\$controlfile; ” >> $tempsql

 echo “select ‘echo ”控制文件备份完毕!”’ from dual; ” >> $tempsql

  echo “select ‘echo ” ” ‘ from dual; ” >> $tempsql

  echo “select ‘echo ”正在备份数据文件……”’ from dual; ” >> $tempsql

  echo “select ‘cp ‘ ||name||’ $backupdir’ from v\$datafile; ” >> $tempsql

  echo “select ‘echo ”数据文件备份完毕!”’ from dual; ” >> $tempsql

  echo “select ‘echo ”正在备份联机日志……”’ from dual; ” >> $tempsql

  echo “select ‘echo ” ” ‘ from dual; ” >> $tempsql

  echo “select ‘cp ‘||member||’ $backupdir’ from v\$logfile; ” >> $tempsql

  echo “select ‘echo ”联机日志备份完毕!”’ from dual;” >> $tempsql

  echo “select ‘echo ” ” ‘ from dual; ” >> $tempsql

  echo “select ‘echo ”脱机冷备完毕!”’ from dual;” >> $tempsql

  echo “select ‘echo ” ” ‘ from dual; ” >> $tempsql

  ##生成冷备份执行脚本

  sqlplus -s ‘ / as sysdba’ < $tempsql > $backupsh

  rm -f $tempsql

  chmod +x $backupsh

  cp $backupsh .

  echo “正在生成冷备对应的恢复脚本[$rcvrsh]……”

  ##准备工作

  echo “set heading off ” > $tempsql

  echo “set feedback off ” >>$tempsql

  echo “set tab off ” >>$tempsql

  echo “set verify off ” >>$tempsql

  echo “set pagesize 0″ >>$tempsql

  echo “set linesize 800 ” >>$tempsql

  echo “select ‘#!/bin/bash’ from dual;” >> $tempsql

  echo “select ” from dual;” >> $tempsql

  echo “select ‘## 恢复脚本生成时间: ” `date +%Y 年%m月%d日-%H:%M:%S` “‘

  from dual;” >> $tempsql

  echo “select ‘## 恢复文件所在路径: $backupdir’ from dual; ” >> $tempsql

  echo “select ” from dual; ” >> $tempsql

  echo “”

  echo “select ‘echo ”开始进行文件的复制恢复……”’ from dual; ” >> $tempsql

  echo “select ‘echo ”恢复文件所在的路径: $backupdir ”’ from dual; ” >> $tempsql

  ##这里不直接关闭数据库,提示用户手工关闭为好 如果需要直接关闭,请修改

  echo “select ‘orarun=’||’\`’||’ps -ef|grep -c ora_’||’\`’ from dual;” >>$tempsql

  echo “select ‘if [ "\$orarun" != "0" ] && [ "\$orarun" != "1" ] ‘ from dual;” >>$tempsql

  echo “select ‘then’ from dual; ” >>$tempsql

  echo “select ‘echo ” ” ‘ from dual;” >>$tempsql

  echo “select ‘echo ”ORACLE 数据库已启动,请先关闭 ORACLE 数据库” ‘ from dual;” >>$tempsql

  echo “select ‘echo ” ” ‘ from dual;” >>$tempsql

  echo “select ‘exit’ from dual; ” >>$tempsql

  echo “select ‘fi’ from dual; ” >>$tempsql

  echo “select ‘echo ” ” ‘ from dual; ” >> $tempsql

  echo “select ‘echo ”正在恢复控制文件……”’ from dual; ” >> $tempsql

  echo “select ‘cp ‘||’$backupdir’||’/'||substr(name,instr(name,’/',-1)+1,

  length(name)-instr(name,’/',-1) )||’ ‘||name from v\$controlfile; ” >> $tempsql

  echo “select ‘echo ”控制文件恢复完毕!”’ from dual; ” >> $tempsql

  echo “select ‘echo ” ” ‘ from dual; ” >> $tempsql

  echo “select ‘echo ”正在恢复数据文件……”’ from dual; ” >> $tempsql

  echo “select ‘cp ‘||’$backupdir’||’/'||substr(name,instr(name,’/',-1)+1,

  length(name)-instr(name,’/',-1) )||’ ‘||name from v\$datafile; ” >> $tempsql

  echo “select ‘echo ”数据文件恢复完毕!”’ from dual; ” >> $tempsql

  echo “select ‘echo ”正在恢复联机日志……”’ from dual; ” >> $tempsql

  echo “select ‘echo ” ” ‘ from dual; ” >> $tempsql

  echo “select ‘cp ‘||’$backupdir’||’/'||substr(member,instr(member,’/',-1)+1,

  length(member)-instr(member,’/',-1) )||’ ‘||member from v\$logfile; ” >> $tempsql

  echo “select ‘echo ”联机日志恢复完毕!”’ from dual;” >> $tempsql

  echo “select ‘echo ” ” ‘ from dual; ” >> $tempsql

  echo “select ‘echo ”脱机冷备恢复完毕!”’ from dual;” >> $tempsql

  echo “select ‘echo ” ” ‘ from dual; ” >> $tempsql

  ##生成冷备恢复的执行脚本

  sqlplus -s ‘ / as sysdba’ < $tempsql > $rcvrsh

  rm -f $tempsql

  chmod +x $rcvrsh

  cp $rcvrsh .

  echo “生成脱机冷备备份与恢复脚本完毕!

  ” echo “请检查脚本文件: [$backupsh]”

  echo ” [$rcvrsh]”

  echo “”

  #如果需要生成后立即执行备份,可增加关闭数据库的操作,然后将以一几行的注释#去掉即可

  #./$backupsh

  #echo “备份执行完毕,请检查!”

  #echo “”

  (3) 重启 Oracle 数据库

  $ sqlplus /nolog

  SQL> connect /as sysdba

  SQL> startup

  2.如果自从上次脱机冷备后,数据文件错误,联机日志没有被覆盖,可模拟不完全恢复。

  1. SQL> shutdown;

  2. $ cp …… ……; // 只恢复出错的数据文件

  3. SQL> startup mount;

  4. SQL> recover database;

  5. SQL> alter database open;

  3.3 ARCHIVELOG 模式

  3.3.1 脱机冷备与恢复

  同 NONARCHIVELOG模式

  3.3.2 联机热备

  联机热备是在数据库运行的情况下进行备份的方法。热备份要求数据库在 Archivelog方式下操作,并需要大量的档案空间。

  热备份的优点:

  1.可在表空间或数据文件级备份,备份时间短。

  2.备份时数据库仍可使用,支持 24*7不间断运行。

  3.可达到秒级恢复(恢复到某一时间点上)。

  4.可对几乎所有数据库实体作恢复。

  5.恢复是快速的,在大多数情况下在数据库仍工作时恢复。

  热备份的不足是:

  1.不能出错,否则后果严重。

  2.若热备份不成功,所得结果不可用于时间点的恢复。

  3.因难于维护,所以要特别仔细小心,不允许“以失败而告终”。

  注意:在热备过程中系统会生成更多的重做日志和回滚数据。所以必须在数据库较空闲时才进行备份。

  备份内容:(1) 数据文件: 一个表空间一个表空间地备份 sql> alter tablespace users begin backup; sql> $copy ‘/xx/xx.dbf ”/yy/yy.dbf’ ; sql> alter tablespace users end backup; sql> alter system checkpoint;(只读表空间直接拷贝,不用begin backup)

  (2) 备份归档 log文件

  1)临时停止归档进程 log_archive_max_processes=0

  2)log下那些在 archive redo log 目标目录中的文件

  3)重新启动 archive 进程

  4)备份归档的 redo log 文件

  (3) 备份联机的控制文件:sql> alter database backup controlfile to ‘/xx/xx.ctl’;

  (4) 备份初始化文件 配置文件 等:sql> $copy …… …… ;

  热备脚本:hotback.sql

  Rem 热备份脚本 for Linux

  Rem 执行该脚本必须保证数据库处于归档模式

  Rem db.dw.dm@gmail.com 2007-03-17

  Rem

  Rem 设置 SQL*Plus环境参数

  Rem

  set feedback off

  set pagesize 0

  set heading off

  set verify off

  set linesize 100

  set trimspool on

  Rem 设置备份相关的路径 For Linux

  Rem 设置数据文件备份路径

  define datafile_dir = ‘/u05/oracle/hotback/datafile’

  Rem 设置归档日志文件备份路径

  define archlog_dir = ‘/u05/oracle/hotback/archlog’

  Rem 设置控制文件备份路径

  define controlfile_dir = ‘/u05/oracle/hotback/controlfile’

  Rem 设置生成的备份脚本名

  define hotback = ‘/u05/oracle/hotback/open_hot_backup.sql’

  define spoolfile = ‘/u05/oracle/hotback/spool.tmp’

  define cpy = ‘cp’ prompt *** Spooling to &hotback

  Rem 产生备份数据文件、归档日志文件的命令

  set serveroutput on size 1000000

  spool &hotback

  prompt spool &spoolfile

  prompt archive log list;;

  prompt alter system switch logfile;;

  prompt alter system archive log all;;

  DECLARE

  CURSOR cur_tablespace IS

  SELECT tablespace_name

  FROM dba_tablespaces

  ORDER BY tablespace_name;

  CURSOR cur_datafile (tn VARCHAR) IS

  SELECT file_name

  FROM dba_data_files

  WHERE tablespace_name = tn

  ORDER BY file_name;

  CURSOR cur_arch_dest IS

  SELECT value

  FROM v$parameter

  WHERE name = ‘log_archive_dest’;

  BEGIN

  FOR ct IN cur_tablespace LOOP

  IF ct.tablespace_name!=’TEMP’ then

  dbms_output.put_line (’alter tablespace ‘||ct.tablespace_name||’ begin backup;’);

  FOR cd IN cur_datafile (ct.tablespace_name) LOOP

  dbms_output.put_line (’host &cp y ‘||cd.file_name||’ &datafile_dir’);

  END LOOP;

  dbms_output.put_line (’alter tablespace ‘||ct.tablespace_name||’ end backup;’);

  end if;

  END LOOP;

  FOR dest IN cur_arch_dest LOOP

  dbms_output.put_line (’host &cpy ‘|| dest.value || ‘/* &archlog_dir ‘);

  END LOOP;

  END;/ Rem 产生备份控制文件的命令

  prompt alter system archive log current;;

  prompt alter database backup controlfile to trace;;

  prompt alter database backup controlfile to ‘&controlfile_dir/control.bak’ REUSE;;

  prompt archive log list;;

  prompt prompt ***Hot Backup Finish***;

  prompt spool off spool off;

  host rm -f &spoolfile

  Rem 执行生成的脚本文件

  Rem @&hotback

  Rem host del &hotback

  3.3.3 联机热备的恢复

  3.3.3.1完全恢复

  一般步骤:

  1. 通过以下信息,找到故障数据文件

  alert.log

  background trace file v$recover_file v$recovery_lo通过这两个视图可以了解详细的需要恢复的数据文件与需要使用到的归档日志。

  2. 将故障数据文件对应的表空间 offline SQL> alter tablespace xxx offline;

  3. restore and recover SQL> host cp …… ……;SQL> [alter database] recover database/tablespace/datafile ‘xx’;

  4. 将表空间 online SQL> alter tablespace xxx online;

  3.3.3.2不完全恢复

  不完全恢复的方法只能恢复到过去某个时间点/SCN的数据库状态。

  一些限制:

  1. 必要条件

  一个有效的 online/offline 备份(包含所有的数据文件)

  自从备份到故障前的所有归档日志,有可能需要控件文件 (所有控件文件丢失,数据库结构已改变) SQL> recover database …… using backup controlfile;

  2. 只能恢复到所有备份数据文件的最大 SCN以后,

  3. 恢复后需要 resetlog,所以需要在恢复后马上备份

  三种不完全恢复的方法:

  1. 基于变化的不完全恢复 Change-based Recovery

  2. 基于用户干涉(取消)的不完全恢复 Cancel-based Recovery

  3. 基于时间的不完全恢复 Time-based Recovery

  获得信息:alert.log可以通过 LogMiner获得精确的时间/SCN,一般在备机上恢复,再 exp/imp到生产机。 查看需要恢复的文件,以及相关的提示信息SQL> select * from v$recover_file; SQL> select * from v$datafile;查看二者的 change#, 确定对应的在 v$log_history 中的范围,从而确定需要那个日志文件序列

  设置归档日志文件的路径: LOG_ARCHIVE_DEST

  设置 log 在不同的路径:SQL> SET LOGSOURCE ‘xx’;SQL> alter system archive log start to ‘xx’;

  恢复步骤:

  1. 关闭数据库,启动到 MOUNT 状态SQL> shutdown; SQL> startup mount;

  2. 恢复数据文件、日志文件、归档日志文件SQL> host cp …… ……; SQL> archive log list;SQL> archived log ==>LOG_ARCHIVE_DEST

  3. 执行恢复命令 基于变化:SQL> recover database until change 9999;基于时间:SQL> revover database until time ’2001-12-01 14:02:23′ using backup controlfile;基于取消:SQL> recover database until cancel;

  4. 重置日志,恢复后需要马上备份SQL> alter database open resetlogs;
  3.4 分类案例

  3.4.1 控件文件的备份与恢复

  一、备份

  1. 镜像控制文件手工备份 // 每当数据库结构发生变化时立即备份1.数据库关闭时,OS命令拷贝。

  2. 联机备份SQL> alter database backup controlfile to ‘ctl.bak’; SQL> alter database backup controlfile to trace;

  二、恢复

  1. 损坏一个控制文件:从镜像拷贝或修改 initSID.ora取消损坏的控制文件。

  2. 损坏所有的控制文件:利用备份的控制文件恢复,拷贝或在命令中恢复:SQL> recover database ……using backup controlfile;手工重建控制文件:NOMOUNT状态下执行SQL> CREATE CONYTROLFILE……; //注意联机日志和数据文件的路径和文件名SQL> alter database open resetlogs;

  3.4.2 联机日志文件的备份与恢复

  一、备份

  1. 镜像在不同的磁盘上。 //如果有镜像备份,不用恢复

  2. 非归档模式下,在数据库关闭时用 OS命令拷贝备份。

  3. 归档模式下,手工或自动归档。

  二、恢复 // 在恢复后一定要重做备份 丢失日志组成员:在有多个镜像时,一般不会报错,如果需要恢复,可以先删除再增加。

  1. 删除: SQL> alter database drop logfile member ‘xx’;

  2. 新增: SQL> alter database add logfile member ‘xx’ to group 2;( 如果丢失当前日志组成员: 可以先 alter system switch logfile; 再进行操作。) 以下恢复方法都是指丢失所有日志组成员的情况下的恢复。

  一、丢失非当前联机日志

  1. 重启数据库到 Mount状态:

  2. 重建丢失的日志:用命令清空日志组的方法//已归档,重建该日志SQL> alter database clear logfile group 2;//归档模式下如果没有归档SQL> alter database clear unarchived logfile group 2;

  二、丢失当前联机日志

  1. 如果数据库正常关闭:日志中没有未决事务需要实例恢复,同非当前联机日志方法。

  2. 如果是非正常关闭数据库的情况,未决事务需要实例恢复: 如果有备份,可通过备份进行不完全恢复。// until cancel 没有备份,进行强制性恢复 // 最后的办法,可能导致数据库的不一致

  3. 如果数据库当前为 Open状态,有活动的事务:尝试能否 Export 或热备份,如果可以,赶紧备份检查非当前日志是否正常,可先做 clear,然后尝试是否能 switch log,能否正常关闭 DB,如果可以 switch log 正常关闭 DB,方法同 1,否则同 2

  3.4.3 回滚数据文件的恢复

  1. 从可用备份中恢复非归档模式下的恢复会有数据丢失归档模式下,有可用备份,可完全恢复(需要关闭数据库)

  2. 没有可用备份时强行恢复:// offline drop,删除重建。

  // 需要先注释 undo_tablespace,或者重新指定一个系统回滚段表空间,然后再操作

  1. 数据库正常关闭 没有未决的事务

  (1). shutdown,修改 init参数文件,注释 undo_tablespace

  (2). SQL>startup restrict mount;

  (3). SQL>alter database datafile 2 offline drop;

  (4). SQL>alter database open;

  (5). SQL>drop tablespace xxx including contents;

  (6). 重建回滚段表空间

  (7). shutdown,修改 init参数文件,去掉注释设置新的 undo_tablespace

  (8). SQL> alter system disable restricted session;

  2. 非正常关闭 强制恢复 隐含参数:_CORRUPTED_ROLLBACK_SEGMENTS

  (1). shutdown,修改 init参数文件,删除 undo_tablespace

  (2). SQL>startup restrict mount;

  (3). SQL>alter database datafile 2 offline drop;

  (4). SQL>alter database open;

  (5). SQL>drop tablespace xxx including contents;如果出错:回滚段中有活动事务SQL>drop rollback segment rbs0; rbs1, 2 ……

  在第1步中,加入隐含参数_CORRUPTED_ROLLBACK_SEGMENTS = (_SYSSMU1$,_SYSSMU2$,_SYSSMU3$, ……)

  (6). 重建回滚段表空间,online

  (7). shutdown,修改 init参数文件,去掉注释设置新的 undo_tablespace去掉隐含参数

  (8). SQL>alter system disable restricted session;

  3.4.5 临时数据文件的恢复

  方法: 先将用户临时表空间置为其他,然后删除重建

  1. SQL> shutdown

  2. SQL> startup restrict mount;

  3. SQL> alter user xxx temporary tablespace TEMP2;

  4. SQL> alter database open;

  5. SQL> drop tablespace temp including contents;

  6. 重建临时表空间

  7. 重新分配给各用户

  8. SQL> alter system disable restricted session; 如果是默认的临时表空间,需要先将默认临时表空间置为其他 SQL> alter database default temporary tablespace temp_2;

六月 17th, 2010

Oracle数据库备份与恢复(2):SQL*Loader

No Comments, 网络应用, by 小路, 108 views.

  一、基本知识

  Oracle 的 SQL* LOADER 可以将外部格式化的文本数据加载到数据库表中。通常 与 SPOOL导出文本数据方法配合使用。

  1、命令格式

  SQLLDR keyword=value [,keyword=value,……]

  例:$ sqlldr user/pwd control=emp.ctl data=emp.dat bad=emp.bad log=emp.log

  2、控制文件

  SQL*LOADER 根据控制文件可以找到需要加载的数据。并且分析和解释这些数据。

  控制文件由三个部分组成,具体参数参考帮助文档:1. 全局选件,行,跳过的记录数等;2. INFILE 子句指定的输入数据;3. 数据特性说明。

  comment: ——注释

  例:

  load data infile *

  append ——除了 append外,还有 insert、replace、truncate等方式

  into table emp fields terminated b y ‘|’

  (

  no float external, name char(20),

  age integer external,

  duty char(1),salary float external,

  upd_ts date(14) ‘YYYYMMDDHH24MISS’)

  begindata

  100000000003|Mulder|000020|1|000000005000|20020101000000

  100000000004|Scully|000025|2|000000008000|20020101235959

  控制文件中infile选项跟sqlldr 命令行中data 选项含义相同,如使用infile *则表明数据在本控制文件以 begin data 开头的区域内。 一些选项:FIELDS TERMINATED BY WHITESPACE FIELDS TERMINATED BY x’09′ FILLER_1 FILLER, // 指定某一列将不会被装载

  DEPTNO position(1:2), DNAME position(*:16), // 指定列的位置SEQNO RECNUM //载入每行的行号

  SKIP n // 指定导入时可以跳过多少行数据

  3、数据文件

  按控制文件数据格式定义的数据行集,

  例:

  100000000001|Tom|000020|1|000000005000|20020101000000

  100000000002|Jerry|000025|2|000000008000|20020101235959

  固定格式、可变格式、流记录格式:

  固定格式:

  当数据固定的格式(长度一样)时且是在文件中得到时,要用 INFILE “fix n”

  load data

  infile ‘example.dat’ “fix 11″

  into table example

  fields terminated b y ‘,’ optionally enclosed by ‘”‘

  (col1 char(5), col2 char(7)) example.dat:

  001, cd, 0002,fghi,

  00003,lmn,

  1, “pqrs”,

  0005,uvwx,

  可变格式:

  当数据是可变格式(长度不一样)时且是在文件中得到时,要用 INFILE “var n”.如:

  load data

  infile ‘example.dat’ “var 3″

  into table example

  fields terminated b y ‘,’ optionally enclosed by ‘”‘

  (col1 char(5), col2 char(7)) example.dat:

  009hello,cd,010world,im,

  012my,name is,

  流记录格式: // Stream-recored format:load data infile ‘xx.dat’ “str ‘|\n’”

  into table xx field terminated b y ‘,’ optionally enclosed by ‘”‘

  (col1 char(5), col2 char(7))

  example.dat:

  hello, ccd,|

  world, bb,|

  4、坏文件

  bad=emp.bad坏文件包含那些被 SQL*Loader拒绝的记录。被拒绝的记录可能是不符合要求的记录。

  5、日志文件及日志信息

  log=emp.log当 SQL*Loader 开始执行后,它就自动建立 日志文件。日志文件包含有加载的总 结,加载中的错误信息等。
  二、高级选项

  1、Conventional Path Load与Direct Path Load

  Conventional-path Load:通过常规通道方式上载。

  特点:commit, always gen redo logs, enforce all constraints, fire insert triggers, can load into cluster, other user can make change

  rows:每次提交的记录数

  bindsize:每次提交记录的缓冲区

  readsize:与 bindsize 成对使用,其中较小者会自动调整到较大者

  sqlldr 先计算单条记录长度,乘以 rows,如小于 bindsize,不会试图扩张,rows以填充 bindsize;如超出,则以 bindsize 为准。 命令为:

  $ sqlldr dbuser/oracle control=emp.ctl log=emp.log rows=10000 bindsize=8192000

  Direct-Path Load:

  通过直通方式上载,可以跳过数据库的相关逻辑,不进行 SQL解析,而直接将数 据导入到数据文件中。

  特点:save, conditionly gen redo logs, enforce PK UK NN, not fire triggers, can not load into cluster, other user can not make change命令为:

  $ sqlldr dbuser/oracle control=emp.ctl log=emp.log direct=true

  2、SPOOL导出文本数据方法

  导入的数据文件可以用 SPOOL导出文本数据方法生成。

  SQL*PLUS环境设置

  SET NEWPAGE NONE HEADING OFF SPACE 0

  PAGESIZE 0 SET TRIMOUT ON TRIMSPOOL ON LINESIZE 2500

  注:LINESIZE 要稍微设置大些,免得数据被截断,它应和相应的 TRIMSPOOL结合使用防止导出的文本有太多的尾部空格。

  但是如果 LINESIZE 设置太大,会大大降低导出的速度,另外在 WINDOWS下导 出最好不要用 PLSQL导出,速度比较慢,直接用 COMMEND 下的 SQLPLUS命令最 小化窗口执行。对于字段内包含很多回车换行符的应该给与过滤,形成比较规矩的文本 文件。

  通常情况下,我们使用 SPOOL方法,将数据库中的表导出为文本文件,如下述:

  set trimspool on

  set linesize 120 pagesize 2000 newpage 1 heading off term off spool 路径+文件名

  select col1||’,’||col2||’,’||col3||’,’||col4||’……’ from tablename;

  spool off
  三、脚本

  1、将表中数据记录导出为字段值用分隔符’|'分开的。dat文件

  #!/bin/ksh

  ##################################################################

  ## 名称: unloadtable

  ## 功能: 本 shell 用于将表中数据记录导出

  ## 导出为字段值用分隔符’|'分开的。dat文件

  ## 编者:

  ## 日期: 2006.03.18

##################################################################

  if [ $# -ne 3 ]

  then echo “usage:unloadtable tablename username password.”

  exit 0

  fi

  ##准备工作

  echo “set heading off ” >/tmp/$1.col

  echo “set pagesize 0″ >>/tmp/$1.col

  echo “set linesize 800 ” >>/tmp/$1.col

  echo “set feedback off ” >>/tmp/$1.col

  echo “set tab off ” >>/tmp/$1.col

  echo “select column_name||’,’ from user_tab_columns where lower(table_name)=’$1′ order by

  column_id; ” >> /tmp/$1.col

  ##产生 select 语句

  echo “set heading off ” >/tmp/$1.sel

  echo “set pagesize 0″ >>/tmp/$1.sel

  echo “set linesize 800 ” >>/tmp/$1.sel

  echo “set feedback off ” >>/tmp/$1.sel

  echo “set tab off ” >>/tmp/$1.sel

  echo “select ” >>/tmp/$1.sel

  echo `sqlplus -s $2/$3 < /tmp/$1.col` |sed "s/,/||'|'||/g" |sed "s/||$//g"|sed "s/date/\"date\"/g"

  >>/tmp/$1.sel

  ##生成 dat文件

  #echo “from $1;\n/” >>/tmp/$1.sel 由于 / 导致多执行一次 select

  echo “from $1;\n” >>/tmp/$1.sel

  sqlplus -s $2/$3 < /tmp/$1.sel >$1_tmp.dat

  #awk ‘{if(FNR!=1) print $0}’ $1_tmp.dat >$1.dat FNR 选项使得第一条记录选不出

  awk ‘{print $0}’ $1_tmp.dat >$1.dat

  rm -f $1_tmp.dat

  2、将数据导入到相应表中

  #!/bin/ksh

  ##################################################################

  ## 名称:loadtable

  ## 功能:本 shell 用于将已经准备好的。dat数据文件导入相应的表中

  ## .dat 文件各个字段值用分隔符’|'分开。

  ## 编者:

  ## 日期: 2006.03.18

  ##################################################################

  if [ $# -ne 3 ]

  then

  echo “usage:loadtable tablename username password.” exit 0 fi

  ##准备工作

  echo “set heading off ” >/tmp/$1.colsql

  echo “set pagesize 0″ >>/tmp/$1.colsql

  echo “set linesize 800 ” >>/tmp/$1.colsql

  echo “set feedback off ” >>/tmp/$1.colsql

  echo “set tab off ” >>/tmp/$1.colsql

  echo “select column_name||’,’ from user_tab_columns where lower(table_name)=’$1′ order by

  column_id; ” >> /tmp/$1.colsql

  ##产生 ctl文件

  echo “load data” >/tmp/$1.ctl

  echo “infile *” >>/tmp/$1.ctl

  echo “into table $1″ >>/tmp/$1.ctl

  echo “fields terminated by ‘|’” >>/tmp/$1.ctl

  echo `sqlplus -s $2/$3 < /tmp/$1.colsql` |sed "s/,$/)/g" |sed "s/^/(/g" >>/tmp/$1.ctl

  ##开始导入数据

  echo “truncate table $1;” >/tmp/$1.sql

  sqlplus $2/$3 < /tmp/$1.sql

  sqlldr $2/$3 data=$1.dat control=/tmp/$1.ctl log=/tmp/$1.log

六月 17th, 2010

Oracle数据库备份与恢复(1):exp和imp

No Comments, 网络应用, by 小路, 105 views.

一、基本命令

  1、 获取帮助

  $ exp help=y

  $ imp help=y

  2、三种工作方式

  (1)交互式方式

  $ exp // 然后按提示输入所需要的参数

  (2)命令行方式

  $ exp user/pwd@dbname file=/oracle/test.dmp full=y // 命令行中输入所需的参数

  (3)参数文件方式

  $ exp parfile=username.par // 在参数文件中输入所需的参数

  参数文件 username.par 内容 userid=username/userpassword buffer=8192000

  compress=n grants=y

  file=/oracle/test.dmp full=y

  3、三种模式

  (1)表方式,将指定表的数据导出/导入。

  导出:导出一张或几张表:$ exp user/pwd file=/dir/xxx.dmp log=xxx.log tables=table1,table2

  导出某张表的部分数据

  $ exp user/pwd file=/dir/xxx.dmp log=xxx.log tables=table1 query=\“where col1=\‘…\’and col2 \<…\”

  导入:导入一张或几张表

  $ imp user/pwd file=/dir/xxx.dmp log=xxx.log tables=table1,

  table2 fromuser=dbuser touser=dbuser2 commit=y ignore=y

  (2)用户方式,将指定用户的所有对象及数据导出/导入。

  导出:$ exp user/pwd file=/dir/xxx.dmp log=xxx.log owner=(xx, yy)

  只导出数据对象,不导出数据 (rows=n )

  $ exp user/pwd file=/dir/xxx.dmp log=xxx.log owner=user rows=n

  导入:$ imp user/pwd file=/dir/xxx.dmp log=xxx.log fromuser=dbuser touser=dbuser2

  commit=y ignore=y

  (3)全库方式,将数据库中的所有对象导出/导入导出:

  $ exp user/pwd file=/dir/xxx.dmp log=xxx.log full=ycommit=y ignore=y

  导入:$ imp user/pwd file=/dir/xxx.dmp log=xxx.log fromuser=dbuser touser=dbuser2
  二、高级选项

  1、分割成多个文件

  以多个固定大小文件方式导出:这种做法通常用在表数据量较大,单个 dump文件可能会超出文件系统的限制的情况

  $ exp user/pwd file=1.dmp,2.dmp,3.dmp,…filesize=1000m log=xxx.log full=y

  以多个固定大小文件方式导入

  $ imp user/pwd file=1.dmp,2.dmp,3.dmp,… filesize=1000m

  tables=xxx fromuser=dbuser touser=dbuser2 commit=y ignore=y

  2、增量导出/导入

  // oracle 9i 以后 exp 不再支持 inctype

  必须为 SYS 或 SYSTEM 才可执行增量导出导入

  增量导出: 包括三个类型:

  (1)“完全”增量导出(Complete) // 备份整个数据库

  $ exp user/pwd file=/dir/xxx.dmp log=xxx.log inctype=complete

  (2)“增量型”增量导出 导出上一次备份后改变的数据。

  $ exp user/pwd file=/dir/xxx.dmp log=xxx.log inctype=incremental

  (3) “累计型”增量导出(Cumulative)只导出自上次“完全”导出之后数据库中变化 了的信息。

  $ exp user/pwd file=/dir/xxx.dmp log=xxx.log inctype=cumulative

  增量导入:$ imp usr/pwd FULL=y inctype=system/restore/inct ype

  其中:

  SYSTEM: 导入系统对象

  RESTORE: 导入所有用户对象

  3、以SYSDBA进行导出/导入

  (1)用于 Oracle 技术支持

  (2)用于表空间传输

  例:$ imp \'usr/pwd@instance as sysdba\' tablespaces=xx transport_tablespace=y file=xxx.dmp datafiles=xxx.dbf $ imp file=expdat.dmp userid=“”“sys/password as sysdba”“” transport_tablespace=y“datafile=(c:tempapp_data,c:tempapp_index)”

  4、表空间传输 (速度快)

  表空间传输是8i 新增加的一种快速在数据库间移动数据的一种办法,是把一个数据库上的格式数据文件附加到另外一个数据库中,而不是把数据导出成 dmp 文件,这 在有些时候是非常管用的,因为传输表空间移动数据就象复制文件一样快。

  (1)关于传输表空间有一些规则 (10g前):

  源数据库和目标数据库必须运行在相同的硬件平台上

  源数据库与目标数据库必须使用相同的字符集

  源数据库与目标数据库一定要有相同大小的数据块

  目标数据库不能有与迁移表空间同名的表空间

  SYS 的对象不能迁移

  必须传输自包含的对象集

  有一些对象,如物化视图,基于函数的索引等不能被传输(同字节序文件的跨平台可以用更换数据文件的文件头的方法)

  (10g 支持跨平台的表空间传输,只要操作系统字节顺序相同,就可以进行表空间 传输。需要使用 RMAN转换文件格式,略)

  (2)检测一个表空间是否符合传输标准的方法:

  SQL > exec sys.dbms_tts.transport_set_check(‘tablespace_name’,true); SQL > select * from sys.transport_set_violations;

  如果没有行选择,表示该表空间只包含表数据,并且是自包含的。对于有些非自包含的表空间,如数据表空间和索引表空间,可以一起传输。

  (3)简要使用步骤:

  如果想参考详细使用方法,也可以参考 ORACLE联机帮助。

  1).设置表空间为只读(假定表空间名字为 APP_Data 和 APP_Index)

  SQL > alter tablespace app_data read only; SQL > alter tablespace app_index read only;

  2).发出 EXP命令

  SQL> host exp userid=“”“sys/password as sysdba”“” transport_tablespace=y tablespaces=(app_data, app_index)

  以上需要注意的是。为了在 SQL 中执行 EXP,USERID 必须用三个引号,在 UNIX中也必须注意 避免“/”的使用。在 816和以后,必须使用 sysdba才能操作。这个命令在 SQL中必须放置在一行(这里是因为显示问题放在了两行)

  3).拷贝。dbf数据文件(以及。dmp文件)到另一个地点,即目标数据库可以是 cp(unix)或 cop y(windows)或通过 ftp传输文件(一定要在 bin方式)

  4).把本地的表空间设置为读写

  $ alter tablespace app_data read write;

  $ alter tablespace app_index read write;

  5).在目标数据库附加该数据文件 (直接指定数据文件名)

  (表空间不能存在,必须建立相应用户名或者用 fromuser/touser)

  $ imp file=expdat.dmp userid=“”“sys/password as sysdba”“” transport_tablespace=y datafiles=(“c:\app_data.dbf,c:\app_index.dbf”) tablespaces=app_data,app_index tts_owners=hr,oe

  6).设置目标数据库表空间为读写

  $ alter tablespace app_data read write;

  $ alter tablespace app_index read write;
  三、优化

  1、加快exp速度

  加大large_pool_size,可以提高 exp的速度 采用直接路径的方式(direct=y),数据不需要经过内存进行整合和检查。 设置较大的 buffer,如果导出大对象,小buffer会失败。

  export文件不在ORACLE使用的驱动器上,不要export到NFS文件系统。

  UNIX环境:用管道模式直接导入导出来提高 imp/exp的性能

  2、加快imp速度

  建立一个indexfile,在数据 import完成后在建立索引将import文件放在不同的驱动器上增加 DB_BLOCK_BUFFERS增加 LOG_BUFFER

  用非归档方式运行 ORACLE:ALTER DATABASE NOARCHIVELOG; 建立大的表空间和回滚段,OFFLINE其他回滚段,回滚段的大小为最大表的 1/2 使用 COMMIT=N

  使用 ANALYZE=N

  单用户模式导入

  UNIX环境:用管道模式直接导入导出来提高 imp/exp的性能

  3、通过unix/Linux PIPE管道加快exp/imp速度

  通过管道导出数据:

  (1)通过 mknod -p 建立管道

  $ mknod /home/exppipe p // 在目录/home下建立一个管道 exppipe注意参数 p

  (2)通过 exp和 gzip导出数据到建立的管道并压缩

  $ exp test/test file=/home/exppipe & gzip < /home/exppipe > exp.dmp.gz

  $ exp test/test tables=bitmap file=/home/newsys/test.pipe & gzip < /home/newsys/test.pipe > bitmap.dmp.gz

  (3)导出成功完成之后删除建立的管道

  $ rm -rf /home/exppipe

  导出脚本:

  ###UNIX下 ORACLE数据库通过 PIPE管道进行备份

  ###### using “export” and “tar” command to bakup oracle datebase #######

  trap “” 1 #nohup

  LOGFILE=/opt/bakup/log/bakup_ora.log

  export LOGFILE

  DUMPDIR=/archlog_node1

  export DUMPDIR

  exec >$LOGFILE 2>&1

  echo

  echo ‘ Begin at ‘ `date`

  echo

  # clear old result file

  cd $DUMPDIR

  if [ -f exp.dmp.Z ]

  then echo “clear old result file”

  rm exp.dmp.Z

  fi

  # make pipe

  mkfifo exp.pipe

  chmod a+rw exp.pipe

  # gain the dmp.Z file

  compress < exp.pipe > exp.dmp.Z &

  su -u oracle -c “exp userid=ll/ll file=$DUMPDIR/exp.pipe full=y buffer=20000000″

  echo

  echo ‘ exp end at ‘`date`

   echo

  # rm pipe

  rm exp.pipe

  # tar the dmp.Z file to tape

  mt -f /dev/rmt/0 rew

  tar cvf /dev/rmt/0 exp.dmp.Z

  echo

  echo ‘ tar end at ‘`date`

  echo

  通过管道导入生成的文件:

  (1)通过 mknod -p 建立管道

  $ mknod /home/exppipe p

  (2)导入生成的压缩文件

  $ imp test/test file=/home/exppipe fromuser=test touser=macro & gunzip < exp.dmp.gz > /home/exppipe

  (3)删除管道

  $ rm –fr /home/exppipe

  (4)全库导入的一般步骤

  注意:在导出时,需要通过toad或其他工具提取源数据库创建主键和索引的脚本

  (1)先全库加 rows=n 把结构导进去

  $ imp system/manager file=exp.dmp log=imp.log full=y rows=n indexes=n

  (2)使业务用户的触发器失效/删除主键和唯一索引

  spool drop_pk_u.sql

  select ‘alter table ‘||table_name||’ drop constraint ‘||constraint_name||’;’

  from user_constraints

  where constraint_type in (’P',’U');

  /

  spool off

  spool disable_trigger.sql

  select ‘alter trigger ‘||trigger_name||’ disable;’

  from user_triggers;

  /

  spool off

  @drop_pk_u.sql

  @disable_trigger.sql

  (3)以 ignore=y全库导入$ imp system/manager file=exp.dmp log=imp.log full=y ignore=y

  (4)通过 toad或其他工具提取源数据库创建主键和索引的脚本,在目标数据库中创建主键和索引。使触发器生效。
  四、常见问题

  1、字符集问题

  ORACLE多国语言设置是为了支持世界范围的语言与字符集,一般对语言提示, 货币形式,排序方式和 CHAR,VARCHAR2,C LOB,LONG 字段的数据的显示等有效。ORACLE 的多国语言设置最主要的两个特性就是国家语言设置与字符集设置,国家语 言设置决定了界面或提示使用的语言种类,字符集决定了数据库保存与字符集有关数据(如文本)时候的编码规则。

  ORACLE字符集设定,分为数据库字符集和客户端字符集环境设置。在数据库端,

  字符集在创建数据库的时候设定,并保存在数据库props$表中。

  在客户端的字符集环境比较简单,主要就是环境变量或注册表项 NLS_ LANG,注意 NLS_LANG的优先级别为:参数文件<注册表<环境变量

  使用一点点技巧,就可以使导出/导入在不同的字符集的数据库上转换数据。这里需要一个2进制文件编辑工具即可,如 uedit32.用编辑方式打开导出的dmp文件,获取 2 、3 字节 的内容 , 如 00 01 , 先把它转换 为 10 进制数,为1 ,使用函数

  NLS_CHARSET_NAME 即可获得该字符集:

  SQL> select nls_charset_name(1) from dual; NLS_CHARSET_NAME(1)

——————- US7ASCII

  可以知道该dmp文件的字符集为 US7ASCII,如果需要把该 dmp文件的字符集换成ZHS16GBK,则需要用 NLS_CHARSET_ID 获取该字符集的编号: SQL> select nls_charset_id(’zhs16gbk’) from dual; NLS_CHARSET_ID(’ZHS16GBK’)

————————–

  把852换成16进制数,为354,把 2、3字节的 00 01 换成03 54,即完成了把该 dmp文件字符集从us7ascii 到 zhs16gbk 的转化,这样,再把该dmp文件导入到 zhs16gbk 字符集的数据库就可以了。

  2、版本问题

  Exp/Imp很多时候,可以跨版本使用,如在版本7与版本8之间导出导入数据,但这样做必须选择正确的版本,规则为:总是使用IMP的版本匹配数据库的版本,如果要导入到 816,则使用816的导入工具。总是使用 EXP 的版本匹配两个数据库中低的那个版本,如在815与816之间互导,则使用815的EXP 工具。

  imp和exp版本不能往上兼容: imp可以导入低版本exp生成的文件, 不能导入高版本exp生成的文件。

六月 10th, 2010

如何获取国外大学资源

No Comments, 网络应用, by 小路, 167 views.
大学这几年我从互联网上学到的东西远比课堂里学到的多。今天咱要展示的就是如何在网上获取国外大学的优质教学资源。

一、直接参加国外大学的网上公开课程

加州大学伯克利分校
http://webcast.berkeley.edu/courses.php
作为美国第一的公立大学,伯克利分校提供了,可以跟踪最新的讲座。想看教授布置的作业和课堂笔记,可以点击该教授的网页,通常,他/她都会第一堂课留下网址。
麻省理工学院
http://ocw.mit.edu/OcwWeb/web/courses/courses/index.htm
麻省理工是免费开放教育课件的先驱,计划在今年把1800门课程的课件都放在网站上,提供课程与作业的PDF格式下载。三是,麻省理工只提供少数的视频讲座。坐过学生上麻省有一个绝对优势,麻省理工在中国大陆和中国台湾都建立了镜像网站,把麻省的课程都翻译成立中文。www.core.org.cn(中国大陆)推荐,www.myoops.org(中国台湾)
卡耐基梅隆大学
http://www.cmu.edu/oli/
卡耐基梅隆针对初入大学的大学生,提供10门学科的课程视频。与其他大学的免费课程一样,非卡耐基梅隆的学子能学习课程,但是为了使学生能够及时了解自己的课程进度,卡耐基梅隆建议造访者在网站上注册,建立自己的资料库。这样一来,你得在有限的时间内完成一门课程,还要参加几次考试,当然,即使你得了100分,卡耐基梅隆也不会给你开证明,更不会给你学分。
犹他大学
http://ocw.usu.edu/front-page/Courese_listing
犹他大学类似于麻省理工,提供大量的课程课件
塔夫茨大学
http://ocw.tufts.edu
塔夫茨大学也是“开放式教育课程”的先驱之一,初期提供的课程着重在本校专长的生命科学、跨领域方法、国际观点以及对美国地区性、全国性社群服务的基础理论。
英国公开大学
http://openlearn.open.ac.uk/course/index.php
英国十几所大学联合起来,组建了英国公开大学。有一部分课程是对注册学生开放的,但是有一批很好的课程是免费的,并提供视频。每门课还设立了论坛,在社区中,大家发表意见,提供其他的学习资源,互相取经。在这个网站里,最能锻炼自学者的能力,因为你要不停地淘,才能找到宝贝。
约翰霍普金斯大学
http://ocw.jhsph.edu/topics.cfm
只有极少数人能够进入约翰霍普金斯大学就读,但是,现如今有动机的人不用花一分钱,便能通过网站获得该校的前沿知识。约翰霍普金斯提供了本学院最受欢迎的课程,包括青少年健康、行为和健康、生物统计学、环境、一般公共卫生、卫生政策、预防伤害、母亲和儿童健康、心理卫生、营养、人口科学、公共卫生准备和难民卫生等。
Connexions
http://cnx.rice.edu
CNX.org由莱斯大学开发,号称是课程资源免费共享图书馆。与其他大学不同的事,CNX邀请教授学者建立自己的社区,把自己的最新成果公布于世,接受大家的评价。可以说CNX开辟了大学资源共享的新天地,尤其适合自学能力超强的大学生。有些课程有中文版。
索菲亚大学
http://sofia.ocw.cn/gallery
无论是想当一名管理者、作家、评论员、还是要从事设计和IT业的人,索菲亚大学的免费课程肯定让你受益匪浅。索菲亚大学提供了8门学科的课程,其中《企业网络安全实战》已翻译成中文。
华盛顿大学
http://www.cs.washington.edu/education/course-webs.html
华盛顿大学的计算机工程学比较强,相关的几百门课程都已经放到网上。不但本科生能找到所需要的课程,连研究生也能淘到宝贝。该网站还提供特色讲座,比如:妇女、计算机与合作。课程不但提供讲座介绍、课堂笔记、有些课程还提供视频。
牛津、斯坦福、耶鲁大学联合网站
http://www.alllearn.org
哥伦比亚大学
http://ci.columbia.edu/ci
伯克利音乐学院
http://www.berkleeshares.com
杜克大学法律中心
http://www.law.duke.edu/cspd/lectures
圣母大学
http://ocw.nd.edu
英国格雷莎姆学院
http://www.gresham.ac.uk/default.asp
加州大学Irvine分校
http://ocw.uci.edu
富布莱特学校
http://ocw.fetp.edu.vn/home.cfm
日本东京大学
http://ocw.u-tokyo.ac.jp/english
日本早稻田大学
http://www.waseda.jp/ocw/index.html
日本大阪大学
http://ocw.osaka-u.ac.jp/index.php
法国巴黎高科
http://graduateschool.paristech.org

二、查看国外大学的视频播客

普渡大学http://boilercast.itap.purdue.edu:1013/Boilercast
美国西南理工http://pocast.swtc.edu/lecture/index.php
加州大学洛杉矶分校http://www.bruincast.ucla.edu
西肯塔基大学http://blog.wku.edu/podcasts
Dupage学院http://www.cod.edu/multimedia/podcast/CODcast/Welcome.html
纽约城市大学http://podcast.york.cuny.edu/lectures
莱斯大学http://webcast.rice.edu
加州大学圣地亚哥分校http://podcast.ucsd.edu
剑桥大学http://mediaplayer.group.cam.ac.uk/main/Podcasts.html
美国大学华盛顿法律学院 http://www.wcl.american.edu/podcasts
杜克大学法律学院http://www.law.duke.edu/webcast
乔治敦大学 http://webcast.georgetown.edu
芝加哥大学商学院 http://www.chicagogsb.edu/multimedia/podcast
波士顿学院 http://frontrow.bc.edu
哈佛商学院在线 http://www.hbsp.harbard.edu/b02/en/hbr_ideacast.jhtml
威斯康星麦迪逊大学 http://havenscenter.org/audio/audio.htm
约翰霍普金斯大学 http://www.johnshopkins.edu/podcasts.index1.html
伦敦政治经济学院 http://www.lse.ac.uk/rescources/podcasts/Default.htm
普林斯顿大学 http://uc.princeton.edu/main/index.php
英国泰晤士报MBA http://uc.princeton.edu/main/index.php
耶鲁大学 http://www.yale.edu/opa/podcast/

三、去苹果的iTunes U

http://www.apple.com/education/itunes-u/
iTunes U是苹果的网络商城iTunes里面的一个专区,里面有很多大学的教学音频、视频、文档等资料。只要安装了Apple iTunes,我们可以很方便的在线查看以及下载这些资源。

四、在国内的分享网站下载

有些积极人士会在前面说的那些网站里面获取资料后分享到国内的一些分享网站上来;另外一些在国外大学读书的朋友有时也会分享些资料上来。例如VERYCD里面就有不少国外的大学资源。在分享网站里面找资源最大的好处就是不用费劲去看英文网站;另一方面别人看过的东西再发上来品质上也会有保证;最后国内网站的访问速度也会优于国外网站。
总之,对于获取国外大学资源,我的建议是从国内分享网站开始再到iTunes U再到网上公开课程再到播客,以一个循序渐进的过程来熟悉。有了这些资源,要想搞懂它,让它变为自己的知识,在英语上面一定得下苦功夫。

加州大学伯克利分校http://webcast.berkeley.edu/courses.php作为美国第一的公立大学,伯克利分校提供了,可以跟踪最新的讲座。想看教授布置的作业和课堂笔记,可以点击该教授的网页,通常,他/她都会第一堂课留下网址。麻省理工学院http://ocw.mit.edu/OcwWeb/web/courses/courses/index.htm麻省理工是免费开放教育课件的先驱,计划在今年把1800门课程的课件都放在网站上,提供课程与作业的PDF格式下载。三是,麻省理工只提供少数的视频讲座。坐过学生上麻省有一个绝对优势,麻省理工在中国大陆和中国台湾都建立了镜像网站,把麻省的课程都翻译成立中文。www.core.org.cn(中国大陆)推荐,www.myoops.org(中国台湾)卡耐基梅隆大学http://www.cmu.edu/oli/卡耐基梅隆针对初入大学的大学生,提供10门学科的课程视频。与其他大学的免费课程一样,非卡耐基梅隆的学子能学习课程,但是为了使学生能够及时了解自己的课程进度,卡耐基梅隆建议造访者在网站上注册,建立自己的资料库。这样一来,你得在有限的时间内完成一门课程,还要参加几次考试,当然,即使你得了100分,卡耐基梅隆也不会给你开证明,更不会给你学分。犹他大学http://ocw.usu.edu/front-page/Courese_listing犹他大学类似于麻省理工,提供大量的课程课件塔夫茨大学http://ocw.tufts.edu塔夫茨大学也是“开放式教育课程”的先驱之一,初期提供的课程着重在本校专长的生命科学、跨领域方法、国际观点以及对美国地区性、全国性社群服务的基础理论。英国公开大学http://openlearn.open.ac.uk/course/index.php英国十几所大学联合起来,组建了英国公开大学。有一部分课程是对注册学生开放的,但是有一批很好的课程是免费的,并提供视频。每门课还设立了论坛,在社区中,大家发表意见,提供其他的学习资源,互相取经。在这个网站里,最能锻炼自学者的能力,因为你要不停地淘,才能找到宝贝。约翰霍普金斯大学http://ocw.jhsph.edu/topics.cfm只有极少数人能够进入约翰霍普金斯大学就读,但是,现如今有动机的人不用花一分钱,便能通过网站获得该校的前沿知识。约翰霍普金斯提供了本学院最受欢迎的课程,包括青少年健康、行为和健康、生物统计学、环境、一般公共卫生、卫生政策、预防伤害、母亲和儿童健康、心理卫生、营养、人口科学、公共卫生准备和难民卫生等。Connexionshttp://cnx.rice.eduCNX.org由莱斯大学开发,号称是课程资源免费共享图书馆。与其他大学不同的事,CNX邀请教授学者建立自己的社区,把自己的最新成果公布于世,接受大家的评价。可以说CNX开辟了大学资源共享的新天地,尤其适合自学能力超强的大学生。有些课程有中文版。索菲亚大学http://sofia.ocw.cn/gallery无论是想当一名管理者、作家、评论员、还是要从事设计和IT业的人,索菲亚大学的免费课程肯定让你受益匪浅。索菲亚大学提供了8门学科的课程,其中《企业网络安全实战》已翻译成中文。华盛顿大学http://www.cs.washington.edu/education/course-webs.html华盛顿大学的计算机工程学比较强,相关的几百门课程都已经放到网上。不但本科生能找到所需要的课程,连研究生也能淘到宝贝。该网站还提供特色讲座,比如:妇女、计算机与合作。课程不但提供讲座介绍、课堂笔记、有些课程还提供视频。牛津、斯坦福、耶鲁大学联合网站http://www.alllearn.org哥伦比亚大学http://ci.columbia.edu/ci伯克利音乐学院http://www.berkleeshares.com杜克大学法律中心http://www.law.duke.edu/cspd/lectures圣母大学http://ocw.nd.edu英国格雷莎姆学院http://www.gresham.ac.uk/default.asp加州大学Irvine分校http://ocw.uci.edu富布莱特学校http://ocw.fetp.edu.vn/home.cfm日本东京大学http://ocw.u-tokyo.ac.jp/english日本早稻田大学http://www.waseda.jp/ocw/index.html日本大阪大学http://ocw.osaka-u.ac.jp/index.php法国巴黎高科http://graduateschool.paristech.org普渡大学http://boilercast.itap.purdue.edu:1013/Boilercast美国西南理工http://pocast.swtc.edu/lecture/index.php加州大学洛杉矶分校http://www.bruincast.ucla.edu西肯塔基大学http://blog.wku.edu/podcastsDupage学院http://www.cod.edu/multimedia/podcast/CODcast/Welcome.html纽约城市大学http://podcast.york.cuny.edu/lectures莱斯大学http://webcast.rice.edu加州大学圣地亚哥分校http://podcast.ucsd.edu剑桥大学http://mediaplayer.group.cam.ac.uk/main/Podcasts.html美国大学华盛顿法律学院 http://www.wcl.american.edu/podcasts杜克大学法律学院http://www.law.duke.edu/webcast乔治敦大学 http://webcast.georgetown.edu芝加哥大学商学院 http://www.chicagogsb.edu/multimedia/podcast波士顿学院 http://frontrow.bc.edu哈佛商学院在线 http://www.hbsp.harbard.edu/b02/en/hbr_ideacast.jhtml威斯康星麦迪逊大学 http://havenscenter.org/audio/audio.htm约翰霍普金斯大学 http://www.johnshopkins.edu/podcasts.index1.html伦敦政治经济学院 http://www.lse.ac.uk/rescources/podcasts/Default.htm普林斯顿大学 http://uc.princeton.edu/main/index.php英国泰晤士报MBA http://uc.princeton.edu/main/index.php耶鲁大学 http://www.yale.edu/opa/podcast/http://www.apple.com/education/itunes-u/iTunes U是苹果的网络商城iTunes里面的一个专区,里面有很多大学的教学音频、视频、文档等资料。只要安装了Apple iTunes,我们可以很方便的在线查看以及下载这些资源。有些积极人士会在前面说的那些网站里面获取资料后分享到国内的一些分享网站上来;另外一些在国外大学读书的朋友有时也会分享些资料上来。例如VERYCD里面就有不少国外的大学资源。在分享网站里面找资源最大的好处就是不用费劲去看英文网站;另一方面别人看过的东西再发上来品质上也会有保证;最后国内网站的访问速度也会优于国外网站。总之,对于获取国外大学资源,我的建议是从国内分享网站开始再到iTunes U再到网上公开课程再到播客,以一个循序渐进的过程来熟悉。有了这些资源,要想搞懂它,让它变为自己的知识,在英语上面一定得下苦功夫。

一月 11th, 2010

Pranav Mistry的互动世界

No Comments, 未分类, by 小路, 74 views.

MIT的印度天才Pranav Mistry搞了很多新玩意。虽然有一些类似的见过。

但是他把世界和数字相互融合在一起的想法还是很棒的!创意不能有束缚。我们需要out of box. More