conn/assysdba
startup
exit
EOF
exit
EON
:
wq
#echo"/app/oracle/oraclestart.sh">>/etc/rc.loca
4数据库配置
4.1数据库基本信息
Ø数据库类型:
Oracle
Ø数据库版本:
11.2.0.3.0
Ø数据库SID:
amdb
Ø数据库别名:
amdb
Ø语言:
AMERICAN_AMERICA
Ø数据库字符集(NLS_CHARACTERSET):
UTF8
Ø国家区域字符集(NLS_NCHAR_CHARACTERSET):
UTF8
4.2修改ORACLE核心参数
$sqlplus/assysdba;
altersystemsetnls_length_semantics=CHARscope=spfile;
altersystemsetsessions=3000scope=spfile;
altersystemsetprocesses=2500scope=spfile;
altersystemsetopen_cursors=3000scope=both;
altersystemsetdb_files=500scope=spfile;
altersystemsetjob_queue_processes=30scope=both;
altersystemsetnls_date_format=YYYY-MM-DDscope=spfile;
修改后重启数据库生效
Sql>shutdownimmediate;
Sql>startup;
4.3建数据库表空间
$sqlplus/assysdba;
4.4建数据库用户
$sqlplus/assysdba;
4.5导入数据
impsystem/oracle服务名fromuser=(XXX)touser=(XXX)ignore=yrecordlength=65535buffer=1048576000file=XXXX.dmplog=XXX.log
4.6用PLSQLDeveloper工具编译失效对象
PLSQL打开----工具----编译无效对象
或者用命令
$sqlplus/assysdba;
Sql>/oracle/product/11.2.0/dbhome_1/rdbms/admin/utlrp.sql
4.7修改用户密码
$sqlplus/assysdba;
alteruser用户名identifiedby密码;
5系统故障处理
5.1数据库文件损坏
口令文件损坏处理方法:
重新生成口令文件即可,采用orapwd命令进行生成相应的口令文件到指定的位置,然后重启数据库即可
单个控制文件损坏处理方法:
1、停止数据库,shutdownimmediate;
2、查看初始化文件/initpmdb.ora,确定所有控制文件的路径,一般初始化参数文件路径在$ORACLE_BASE/admin/pfile
3、用操作系统命令将其它正确的控制文件覆盖错误的控制文件
4、重启数据库,startup
5、用适当的方法进行数据库全备份
全部控制文件损坏处理方法:
1.确保数据库已经关闭,如果没有用下面的命令来关闭数据库:
>shutdownimmediate;
2.从相应的备份结果集中恢复最近的控制文件。
对于没有采用带库备份的点可以直接从磁带上将最近的控制文件备份恢复到相应目录;对于采用带库备份的点用相应的rman脚本来恢复最近的控制文件
3.用下面的命令来创建产生数据库控制文件的脚本:
>startupmount;
>alterdatabasebackupcontrolfiletotracenoresetlogs;
4.修改第三步产生的trace文件,将其中关于创建控制文件的一部分语句拷贝出来并做些修改,使得它能够体现最新的数据库结构。
假设产生的sql文件名字为createcontrol.sql.
注意:
Trace文件的具体路径可以在执行完第3)步操作后查看$ORACLE_BASE/admin/bdump/alert_ORCL.ora文件来确定
5.用下面命令重新创建控制文件:
>shutdownabort;
>startupnomount;
>createcontrol.sql;
6.用适当的方法进行数据库全备份
重做日志文件损坏处理方法:
(1)、确定损坏的重做日志的位置及其状态:
1.如果数据库处于可用状态:
select*fromv$logfile;
select*fromv$log;
2.如果数据库处于已经异常终止:
>startupmount;
>select*fromv$logfile;
>select*fromv$log;
其中,logfile的状态为INVALID表示这组日志文件出现已经损坏;log状态为Inactive:
表示重做日志文件处于非激活状态;Active:
表示重做日志文件处于激活状态;Current:
表示是重做日志为当前正在使用的日志文件
(2)、损坏的日志文件处于非激活状态:
1.删除相应的日志组:
>alterdatabasedroplogfilegroupgroup_number;
2.重新创建相应的日志组:
>alterdatabaseaddlogfilegroupgroup_number(’log_file_descritpion’,…)sizelog_file_size;
(3)、损坏的日志文件处于激活状态且为非当前日志:
1.清除相应的日志组:
>alterdatabaseclearunarchivedlogfilegroupgroup_number;
损坏的日志文件为当前活动日志文件:
用命令清除相应的日志组:
>alterdatabaseclearunarchivedlogfilegroupgroup_number;
如果清除失败,则只能做基于时间点的不完全恢复。
打开数据库并且用适当的方法进行数据库全备份:
>alterdatabaseopen;
非system表空间的数据文件损坏:
1.确定损坏的文件名字:
>selectnamefromv$datafilewherestatus=’INVALID’;
2.将损坏的数据文件处于offline状态:
>alterdatabasedatafile‘datafile_name’offline;
3.从相应的备份结果集中恢复关于这个数据文件的最近的备份。
对于没有采用带库备份的点可以直接从磁带上恢复;对于用带库备份的点用相应的rman脚本来恢复。
4.恢复数据文件:
>alterdatabaserecoverdatafile‘file_name’;
5.使数据库文件online:
>alterdatabasedatafile‘datafile_name’online;
6.用适当的方法进行数据库全备份。
system表空间的数据文件损坏:
1.以mount方式启动数据库
>startupmount;
2.从相应的备份结果集中恢复关于这个数据文件的最近的备份。
对于没有采用带库备份的点可以直接从磁带上恢复;对于用带库备份的点用相应的rman脚本来恢复。
3.恢复system表空间:
>alterdatabaserecoverdatafile‘datafile_name’;
4.打开数据库:
>alterdatabaseopen;
5.用适当的方法进行数据库全备份
非system表空间损坏:
1.将损坏的表空间处于offline状态:
>altertablespace‘tablespace_name’offline;
2.从相应的备份结果集中恢复关于这个表空间最近的备份。
对于没有采用带库备份的点可以直接从磁带上恢复;对于用带库备份的点用相应的rman脚本来恢复。
3.恢复表空间:
>alterdatabaserecovertablespace‘tablespace_name’;
4.使表空间online:
>altertablespace‘tablespace_name’online;
5.用适当的方法进行数据库全备份.
system表空间损坏:
1.以mount方式启动数据库
>startupmount;
2.从相应的备份结果集中恢复system表空间最近的备份。
对于没有采用带库备份的点可以直接从磁带上恢复;对于用带库备份的点用相应的rman脚本来恢复。
3.恢复system表空间:
>alterdatabaserecovertablespacesystem;
4.打开数据库:
>alterdatabaseopen;
5.用适当的方法进行数据库全备份。
整个数据库的所有文件损坏:
整个数据库所有文件的损坏一般是在共享磁盘阵列发生无法恢复的灾难时才发生,这种情况下只能对数据库进行恢复。
若数据库的归档目录也已经丢失,则数据库不可能做完全恢复,会有用户数据的丢失。
没采用带库备份的现场:
1.将最近的备份从磁带上把各个文件解包到相应的目录下。
2.以mount方式打开数据库:
>startupmount;
3.恢复数据库:
>recoverdatabaseuntilcancel;
4.打开数据库:
>alterdatabaseopenresetlogs;
5.用适当的方法进行数据库全备份。
采用带库备份的现场:
1.以nomount方式打开数据库:
>startupnomount;
2.通过相应的rman脚本进行数据库软恢复。
$rmancmdfile=hot_database_restore.rcv
3.打开数据库:
>alterdatabaseopenresetlogs;
4.用适当的方法进行数据库全备份。
存在最近的数据库完整冷备份前提下的一些经典紧急情况的处理:
数据文件,归档重作日志和控制文件同时丢失或损坏:
无新增archives时的状况:
条件和假设:
自上次镜像备份以来尚未生成新的archivelog(s);ArchivelogMode;有同步的datafile(s)和controlfile(s)的镜像(冷)拷贝
恢复步骤:
1.将镜像拷贝的datafile(s)和controlfile(s)抄送回原始地点:
$cp/backup/good_one.dbf/orig_loc/bad_one.dbf
$cp/backup/control1.ctl/disk1/control1.ctl
2.以mount选项启动数据库:
$sqlplus/nolog
>connect/assysdba
>startupmount
3.以旧的controlfile来恢复数据库:
>recoverdatabaseusingbackupcontrolfileuntilcancel;
***介质恢复完成
(必须马上cancel)
4.Resetthelogfiles(对启动而言不可省略):
>alterdatabaseopenresetlogs;
5.关闭数据库并做一次全库冷备份。
新增archives时的状况:
条件和假设:
自上次镜像备份以来已经生成新的archivelog(s);ArchivelogMode;有同步的datafile(s)和controlfile(s)的镜像(冷)拷贝;archivelog(s)可用。
恢复步骤:
1.如果数据库尚未关闭,则首先把它关闭:
$sqlplus/nolog
>connect/assysdba
>shutdownabort
2.将备份文件抄送回原始地点:
所有DatabaseFiles
所有ControlFiles(没有archive(s)或redo(s)的情况下,controlfiles的更新无任何意义)
所有On-LineRedoLogs(Notarchives)
init.orafile(选项)
3.启动数据库:
$sqlplus/nolog
>connect/assysdba
>startup
数据文件,重作日志和控制文件同时丢失或损坏:
条件和假设:
ArchivelogMode;有同步的所有所失文件的镜像(冷)拷贝;archivelog(s)可用
恢复步骤(必须采用不完全恢复的手法):
1.如果数据库尚未关闭,则首先把它关闭:
$sqlplus/nolog
>connect/assysdba
>shutdownabort
2.将备份文件抄送回原始地点:
所有DatabaseFiles
所有ControlFiles
所有On-Li