CREATE SPFILE='路径' FROM PFILE;
从PFILE创建SPFILE
CREATE PFILE='路径' FROM SPFILE;
col 字段名 format a10
格式化屏幕显示
v$spparameter SPFILE的参数值视图
select name,value from v$spparameter
startup pfile=$ORACLE_HOME/dbs/inittest.ora
startup spfile=$ORACLE_HOME/dbs/spfiletest.ora
指定pfile启动实例
spfileSID.ora->spfile.ora->initSID.ora
启动顺序
alter system set aq_tm_processes=1 scope=both;
修改SPFILE的参数值
alter system reset aq_tm_processes scope=spfile sid='*';
删除或重置值
ALTER SYSTEM SET 命令用于更改例程参数的值。
ALTER SYSTEM SET parameter_name = parameter_value
[COMMENT 'text'] [SCOPE = MEMORY|SPFILE|BOTH]
[SID= 'sid'|'*']
其中
parameter_name:要更改的参数的名称
parameter_value:要将参数更改为的值
COMMENT:添加在SPFILE 中被更改的参数旁的注释
SCOPE:确定应在内存中、在SPFILE 中还是同时在这两个位置进行更改
MEMORY:只能在当前运行的例程中更改参数值
SPFILE:只能在SPFILE 中更改参数值
BOTH:在当前运行的例程和SPFILE 中均可更改参数值
SID:标识要使用的SPFILE 的ORACLE_SID
'sid':更改SPFILE 时使用的特定SID
'*':使用缺省SPFILE
show parameters aq_tm_processes
显看SPFILE中的参数值
启动过程:
shutdown->nomount->mount->open
nomount
读取SPFILE->分配SGA->启动后进程->打开alertSID.log文件
mount
打开控制文件
open
打开数据文件及日志文件
STARTUP [FORCE] [RESTRICT] [PFILE=filename]
[OPEN [RECOVER][database]
|MOUNT
|NOMOUNT]
其中:
OPEN:使用户能够访问数据库
MOUNT:为某些DBA 活动加载数据库,但不允许用户访问数据库
NOMOUNT:创建SGA 并启动后台进程,但不允许访问数据库
PFILE=parfile:允许使用非缺省参数文件配置例程
FORCE:执行正常启动之前终止运行的例程。
RESTRICT:只允许具有RESTRICTED SESSION 权限的用户访问数据库。
RECOVER:在数据库启动时开始进行介质恢复。
startup nomount
alter database ora9i mount;
alter database ora9i open read only;
或
alter database ora9i open;
startup restrict
受限启动
alter system enable restricted session;
将现有的模式改变成受限模式
ALTER SYSTEM SQL 命令也可以将数据库设为受限模式:
ALTER SYSTEM [ {ENABLE|DISABLE} RESTRICTED SESSION ]
其中:
ENABLE RESTRICTED SESSION:仅允许具有RESTRICTED SESSION 权限的用
户在以后登录
DISABLE RESTRICTED SESSION:禁用RESTRICTED SESSION 以允许没有该权
限的用户可以登录
ALTER SYSTEM KILL SESSION 'sessionID' 命令一执行,将使后台进程PMON 立即执行以下步骤:
回退用户的当前事务
释放所有当前持有的表或行锁定
释放用户当前保留的所有资源
SHUTDOWN [NORMAL | TRANSACTIONAL | IMMEDIATE | ABORT ]
alertSID.log 文件:记录数据库日常操作的信息
后台跟踪文件:记录SMON、PMON、DBWn 和其它后台进程失败时产生的重要信息
用户跟踪文件:记录出现严重用户错误或用户强制执行跟踪文件时产生的重要信息
ALTER SESSION SET SQL_TRACE = TRUE
第一步:设置环境变量
第二步:准备好初始化参数文件
create database testdb
maxinstances 2
maxloghistory 5
maxlogfiles 5
maxlogmembers 5
maxdatafiles 100
datafile '$ORACLE_BASE/oradata/testdb/system01.dbf' size 200m
undo tablespace undotbs datafile
'$ORACLE_BASE/oradata/testdb/undotbs01.dbf'
size 200m autoextend on next 2048k maxsize unlimited
default temporary tablespace tempts TEMPFILE '$ORACLE_BASE/oradata/testdb/tmpts01.dbf' size
100M extent management local
character set AL32UTF8
national character set al16utf16
logfile group 1 ('$ORACLE_BASE/oradata/testdb/redo01.log') size 100m,
group 2 ('$ORACLE_BASE/oradata/testdb/redo02.log') size 100m,
group 3 ('$ORACLE_BASE/oradata/testdb/redo03.log') size 100m;
要点:
create database命令中的undo tablespace要与pfile中的参数一样
datafile的空间不能太少
temporary tablespace的TEMPFILE参数不能少,一定要指定文件路径
在dbs目录下生成密码文件,命令:orapwd file=$ORACLE_HOME/dbs/orapwtestdb password=bscy
entries=5
创建完后的脚本:
SQL>@?/rdbms/admin/catalog.sql
SQL>@?/rdbms/admin/catproc.sql
SQL>@?/rdbms/admin/catexp.sql
alter system set
control_files='/opt/ora9/oradata/testdb/control01.ctl','/opt/ora9/oradata/testdb/control02.c
tl','/opt/ora9/oradata/testdb/control03.ctl','/opt/ora9/oradata/testdb/control04.ctl'
scope=spfile;
注:control_files中的控制文件是要以逗号分隔的,且必须要是spfile的scope,不能同时修改内存。
mv control01.ctl control01.ctl.bak
mv control02.ctl control02.ctl.bak
mv control03.ctl control03.ctl.bak
mv control04.ctl control04.ctl.bak
mv control01.ctl.bak control01.ctl
mv control02.ctl.bak control02.ctl
mv control03.ctl.bak control03.ctl
mv control04.ctl.bak control04.ctl
注:如果找不到控制文件,数据库将不能进入mount状态,只能到达unmount状态
ALTER DATABASE ADD LOGFILE GROUP 4
('$ORACLE_BASE/oradata/testdb/log4a.rdo','$ORACLE_BASE/oradata/testdb/log4b.rdo') SIZE 1M;
alter system switch logfile;
alter system checkpoint;
alter system set fast_start_mttr_target = 600;
alter database add logfile member '$ORACLE_BASE/oradata/testdb/log5c.rdo' to group 5;
alter database drop logfile group 5;
alter database drop logfile member '$ORACLE_BASE/oradata/testdb/log4c.rdo';
alter database rename file '$ORACLE_BASE/oradata/testdb/log4a.rdo' to
'$ORACLE_BASE/oradata/testdb/log41.rdo'
重命名时,新的名字的文件必须要已存在
create tablespace userdata datafile '$ORACLE_BASE/oradata/testdb/userdata01.dbf' size 100M
autoextend on next 5M maxsize 500M;
create tablespace userdata datafile '$ORACLE_BASE/oradata/testdb/userdata01.dbf' size 100M
extent management local uniform size 128k;
create tablespace userdata datafile '$ORACLE_BASE/oradata/userdata01.dbf' size 100M extent
management dictionary default storage (initial 1M next 1M pctincrease 0);
默认不允许创建字典管理的表空间
create undo tablespace undo1 datafile '$ORACLE_BASE/oradata/undo01.dbf' size 40M;
只能使用DATAFILE 和EXTENT MANAGEMENT 子句
create temporary tablespace temp01 tempfile '$ORACLE_BASE/oradata/testdb/temp001.dbf' size
100M extent management local uniform size 4m
alter database default temporary tablespace temp01;
修改默认临时表空间
alter tablespace userdata read only;
在一次性写入 (WORM) 设备上创建只读表空间:
1. ALTER TABLESPACE...READ ONLY
2. 使用操作系统命令将表空间的数据文件移动到只读
3. ALTER TABLESPACE...RENAME DATAFILE
alter tablespace userdata offline;
alter tablespace userdata online;
CREATE TABLESPACE user_data
DATAFILE
'$ORACLE_BASE/oradata/userdata01.dbf' SIZE 50M
AUTOEXTEND ON NEXT 10M MAXSIZE 500M;
alter database datafile '/opt/ora9/oradata/testdb/userdata01.dbf' resize 150M
alter tablespace user_data add datafile '$ORACLE_BASE/oradata/testdb/userdata03.dbf' size
100M;
alter tablespace userdata rename datafile '$ORACLE_BASE/oradata/testdb/userdata03.dbf' to
'$ORACLE_BASE/oradata/testdb/userdata04.dbf'
重命名数据文件的步骤:
– 使表空间脱机。
– 使用操作系统命令移动或复制文件。
– 执行ALTER TABLESPACE RENAME DATAFILE 命令。
– 使表空间联机。
– 必要时使用操作系统命令删除该文件。
alter database rename file '$ORACLE_BASE/oradata/testdb/system01.dbf'
to '$ORACLE_BASE/oradata/testdb/system02.dbf';
因为 SYSTEM 表空间无法脱机,您必须使用该方法移动 SYSTEM 表空间内的数据文件。
使用如下进程重命名无法脱机的表空间内的文件:
1. 关闭数据库。
2. 使用操作系统命令移动文件。
3. 装载数据库。
4. 执行 ALTER DATABASE RENAME FILE 命令。
5. 打开数据库。
drop tablespace userdata including contents and datafiles;
create table customers (cust_code varchar2(3),name varchar2(50),region varchar2(5))
tablespace users;
alter table customers move tablespace system;
将表从一个表空间移动到另一个表空间后要重新建立索引,否则查询时会出错。
#使用RMAN备份数据库
sqlplus /nolog
conn /as sysdba
startup mount
alter database archivelog;
#修改为归档模式
alter database open;
alter system archive log start;
#开启自动归档
archive log list
rman nocatalog
connect target /
list backupset;
backup database;
#全备份
backup incremental level=0 database;
#0级增量备份,与全备份的区别在于0级增量备份可以作为1级增量备份的基础,而全备份则不可以。
backup incremental level 1 database;
#1级增量备份,以0级为基础进行增量备份
#从Oracle 10g开始才会单独的备份集来备份spfile和控制文件,Oracle 9i分两个备份集
backup database plus archivelog delete input;
备份归档日志文件
backup tablespace users;
backup current controlfile;
backup database include current controlfile;
report schema;
#显示系统信息
copy datafile ... to ...
run{
allocate channel cha1 type disk;
backup format '$ORACLE_BASE/rmanbak/full_%t'
tag full_backup_bat
database;
release channel cha1;
}
一周备份计划
#bakl0脚本
run {
allocate channel c1 type disk;
backup
incremental level 0
format "$ORACLE_BASE/rmanbak/inc0_%u_%T"
tag monday_inc0
database;
release channel c1;
}
rman target / msglog=bakl0.log cmdfile=bakl0
rman target / msglog=bakl1.log cmdfile=bakl1
rman target / msglog=bakl2.log cmdfile=bakl2
crontab -e -u oracle
#代表每周日的23点45分执行
45 23 * * 0 rman target / msglog=bakl0.log cmdfile=bakl0
45 23 * * 1 rman target / msglog=bakl0.log cmdfile=bakl2
45 23 * * 2 rman target / msglog=bakl0.log cmdfile=bakl2
45 23 * * 3 rman target / msglog=bakl0.log cmdfile=bakl1
45 23 * * 4 rman target / msglog=bakl0.log cmdfile=bakl2
45 23 * * 5 rman target / msglog=bakl0.log cmdfile=bakl2
45 23 * * 6 rman target / msglog=bakl0.log cmdfile=bakl2
service crond restart
#重启crontab服务
configure controlfile autobackup off/on;
show all
delete backupset 1;
backup database plus archivelog delete input;
#口令文件丢失:创建口令文件
orapwd file=orapwdbsid password=pass1234 entries=5
#entries=5代表特权用户可以有5个
#SPFILE丢失
rman target /
startup nomount;
set dbid 2540702947
restore spfile from autobackup;
restore spfile from '$ORACLE_BASE/dbs/full_8488775.dkp';
#指定具体的备份集跟径
shutdown immediate;
set dbid 2540702947
#于rman target /时可以看到dbid
startup
#controlfile丢失
sqlplus /nolog
shutdown abort
quit
rman
startup nomount;
restore controlfile from autobackup;
alter database mount;
recover database;
alter database open resetlogs;
#redolog file丢失
sqlplus /nolog
conn /as sysdba
shutdown immediate;
startup mount;
recover database until cancel;
alter database open resetlogs;
#可能丢失数据
#data file丢失
rman target /
report schema;
sql "alter database datafile 5 offline"
restore datafile 5;
recover datafile 5;
sql "alter database datafile 5 online";
#表空间恢复
rman target /
sql "alter tablespace users offline immediate"
restore tablespace users;
recover tablespace users;
sql "alter tablespace users online";
#非catalog方式完全恢复
sqlplus /nolog
conn /as sysdba
shutdown abort;
quit
rman target /
startup nomount;
restore controlfile from autobackup;
alter database mount;
restore database;
quit
sqlplus /nolog
conn /as sysdba
create pfile from spfile
quit
vi pfile
添加_allow_resetlogs_corruption='TURE'
sqlplus /nolog
conn /as sysdba
shutdown immediate;
startup pfile=/u01/oracle/dbs/pfile mount
alter database open resetlogs;
#基于时间点的恢复
rum{
set until time "to_date('07/01/02
15:00:00','mm/dd/yy hh24:mi:ss')"
restore database;
recover database;
alter database open resetlogs;
}
#基于备份集的SCN恢复
startup mount;
restore database UNTIL SCN 10000;
recover database UNTIL SCN 10000;
alter database open resetlogs;
#基于日志序列的恢复
startup mount;
restore database until sequence 1 thread 1;
recover database until sequence 1 thread 1;
alter database open resetlogs;
report schema
list backup
#读取控制文件的内容
crosscheck backup
#从物理盘上检查备份集的状态
delete
#Catalog mode:
#创建catalog所用表空间
sqlplus /nolog
conn /as sysdba
#如数据文件已存在则要加上reuse
create tablespace rman_ts datafile '' size 20M [reuse];
#创建RMAN用户并授权
create user rman identified by rman default
tablespace rman_ts quota unlimited on rman_ts;
grant recovery_catalog_owner to rman;
#创建恢复目录
rman catalog rman/rman
create catalog tablespace rman_ts;
register database;
rman target / catalog rman/rman