例程管理
一、关闭例程
4种模式
正常关闭 shutdown normal
事务性关闭 transactional
立即 immediate
中止退出 abort(不做检查点,可能会丢数据,不建议)
二、启动
3个阶段
1 例程启动(nomount)
需要读初始化文件
只能访问一部分动态性能视图(内容来自内存)
2 加载数据库(mount)
需要访问控制文件
可以访问所有的动态性能视图
3 打开数据库(open)
需要访问联机redo log文件和数据文件
可以访问所有的文件
4 以只读方式打开数据库 startup open read only(mount状态,alter database open read only)
select name,open_mode from v$database;
5 以受限模式打开数据库,维护模式维护人员可连接 startup restrict(alter system enable/disable restricted session)
rovoke/grant restricted session to <user>;
6 记录ddl语句
xml /u01/app/oracle/diag/rdms/db12c/db12c/log/ddl
文本文件 /u01/app/oracle/diag/rdms/db12c/db12c/log
跟踪DDL语句,XML DDL log,Text DDL
7 常用查看警告日志文件的方法
adrci命令
show alert -tail 30
三、例程配置
1 初始化参数文件,优先用二进制文件
1)文本文件 pfile init<sid>.ora ---initdb12c.ora
2)二进制文件 spfile spfile<sid>.ora ---spfiledb12c.ora
2 查看初始化参数(show parameter)
3 了解初始化参数的含义
4 修改初始化参数
scope语句
1) memory
2) spfile
3) both
对于spfile,默认值是both
对于pfile,默认值是memory
5 将初始化参数还原成默认值
6 修复错误的初始化参数:根据spfile创建一个pfile(create pfile from spfile)
7 初始化错误,查看警告日志
8 根据pfile创建spfile(create spfile from pfile)
9 例程启动时选择初始化参数文件的顺序startup
1) spfile<sid>.ora
2) spfile.ora
3) init<sid>.ora
10 利用指定的初始化参数启动
11 结果集缓存(11g以后)
result_cache_mode:off/manual/force
12 列式存储
set autot on
inmemory
13 整库(强制)缓存
v$database force_full_db_caching
alter database (no) force full database caching
create table t1 pctfree 99 pctused 1 as select * from dba_objects;
exec dbms_stats.gather_table_status('sys','t1');
查看该表的数据块总数和OBJECT_ID
select count(distinct(dbms_rowid.rowid_bloack_number(rowid))) bloacks from t1;
select object_id from dba_objects where object_name='t1' and owner='sys';
select count(*) from v$bh where objd= ;
alter database force full database caching;(mount)
14 ADR(自动诊断资料档案库)
命令行:adrci
ips create package
select name from v$datafile
警告日志:重大的数据库事件、内部错误、数据坏块、死锁
15 后台进程跟踪文件trace file
16 用户进程跟踪文件
desc dbms_system
select sid,serial# from v$session where USERNAME='scott';
exec dbms_system.set_sql_trace_in_session(sid,serial#,true);
exec dbms_system.set_sql_trace_in_session(sid,serial#,false);
select s.sid,s.serial#,s.username,p.spid,from v$session s,v$process p
where s.paddr=p.addr and s.username='scott';
使用tkprof工具将.trc文件转换成易懂的文本文件
tkprof /u01/app/oracle/diag/rdbms/orc12c/orc12c/trace/orc12c_ora_11582.trc /u01/demo/trace01.txt sys=no
11582
语句执行的阶段:PRS、exe、fch
四、手工创建数据库
1 S
2 创建/编辑 一个初始化参数文件
3 创建相应的目录结构 mkdir -p
4 启动例程
5 执行创建数据库的语句
6 创建数据字典
$ORACLE_HOME/rdbms/admin
调用脚本@?/rdbms/admin/catalog
7 创建口令验证文件
orapwd file=orapwssales password=admin@123
8 创建spfile
create spfile from pfile
shutdown immediate
9 创建oracle的内部包
@?/rdbms/admin/catproc.sql
10 创建scott方案
@?/rdbms/admin/utlsampl
11 加载用户概要文件信息(@?/sqlplus/admin/pupbld.sql)
conn system/manager(alter user system identified by xxxx)
12 配置监听器(服务器端)和服务名(客户端)
动态注册、静态注册listener.ora
netmgr配置
13 配置EM Express
select dbms_xdb.sethttpport from dual;
execute dbms_xdb.sethttpport(9876);
http://192.168.23.120:9876
五、管理控制文件
1 控制文件的作用——instance与database的控制关系
2 控制文件的内容
3 查看控制文件的名称和内容
oradebug
4 控制文件的多路复用
alter system set control_files=路径 scope=spfile
5 重建控制文件
练习:
1 查看控制文件的位置和名称
select name from v$controlfile;
2 查看控制文件的内容
oradebug setmypid
oradebug tracefile_name
3 控制文件的多路复用
alter system set control_files='/u01/app/oracle/oradata/sales/control01.ctl','/u01/app/oracle/recovery_area/sales/control02.ctl','/u01/demo/control03.ctl' scope=spfile;
cp /u01/app/oracle/oradata/sales/control01.ctl /u01/demo/control03.ctl
4 重建控制文件
alter database backup controlfile to trace as 'u01/demo/create_controlf.sql';
shutdown
rm 3个控制文件
startup
CREATE CONTROLFILE REUSE DATABASE "SALES" NORESETLOGS NOARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 2
MAXDATAFILES 30
MAXINSTANCES 1
MAXLOGHISTORY 292
LOGFILE
GROUP 1 '/u01/app/oracle/oradata/sales/redo01.log' SIZE 10M BLOCKSIZE 512,
GROUP 2 '/u01/app/oracle/oradata/sales/redo02.log' SIZE 10M BLOCKSIZE 512,
GROUP 3 '/u01/app/oracle/oradata/sales/redo03.log' SIZE 10M BLOCKSIZE 512
-- STANDBY LOGFILE
DATAFILE
'/u01/app/oracle/oradata/sales/system01.dbf',
'/u01/app/oracle/oradata/sales/sysaux01.dbf',
'/u01/app/oracle/oradata/sales/undotbs01.dbf'
CHARACTER SET US7ASCII
;
select status from v$instance;
create database sales
datafile '/u01/app/oracle/oradata/sales/system01.dbf' size 400m
sysaux datafile '/u01/app/oracle/oradata/sales/sysaux01.dbf' size 400m
undo tablespace undotbs1 datafile '/u01/app/oracle/oradata/sales/undotbs01.dbf' size 50m
default temporary tablespace temp tempfile '/u01/app/oracle/oradata/sales/temp01.dbf' size 50m
logfile
group 1 ('/u01/app/oracle/oradata/sales/redo01.log') size 10m,
group 2 ('/u01/app/oracle/oradata/sales/redo02.log') size 10m,
group 3 ('/u01/app/oracle/oradata/sales/redo03.log') size 10m;
/u01/app/oracle/admin/sales/adump
/u01/app/oracle/oradata/sales
/u01/app/oracle/recovery_area/sales
创建默认表空间:
system
sysaux
undo tablespace
:1,$ s/orc12c/sales_lsx/g