oracle12c-学习笔记

                                        oracle12c

 

                                目录

oracle12c 1

一、oracle架构 2

1.1总体结构 2

1.1.1内存结构 2

1.1.2进程结构 3

1.1.3 oracle存储结构 4

二、 oracle管理工具 4

三、数据库实例 5

3.1 instance启动停止 6

3.2 参数文件错误处理 7

四、oracle network 7

五、管理存储 9

六、data concurrency 数据并发(locks) 12

七、adminstering user security 13

八、implementing oracle database auditing 数据库审计 15

九、数据库的backup 17

9.1 moving data数据泵 17

9.2 Sql*loader 18

9.3 back and recovery (物理备份) 20

9.4 back and recover concepts (概念) 22

9.5 rman (revover manager) 23

Restore恢复 29

Redo 日志恢复 33

不完全恢复(整体还原) 35

disaster recovery --灾难性恢复 38

还原到新主机--不完全恢复 40

rman加密恢复 44

pitr 基于时间点的还原 47

Transporting data 可传输表空间 49

Rman 调优 51

十、 闪回 51

1、闪回查询 52

2、闪回版本查询(两点之间的变化) 52

3、闪回事务查询 53

4、闪回表 54

5、闪回drop 54

6、闪回数据归档 55

7、闪回数据库 56

十一、managing spaces 57

Block space management 57

Tablespace monitoring 58

Shrinking segments 58

Managing Resumable space allocation 61

Memory manager 64

Install grid 65

 

 

   archive log list;

   backup database plus archivelog delete input;

   alter system archive log current;

  Report schema;

       Report obsolete; --查看过期备份

       delete obsolete; --删除过期文件(包括过期归档日志)

            删除找不到的文件。

             Crosscheck copy(类型);--检查一下

             Delete expired copy;  --expired 找不到文件的源数据记录

       List copy;

---删除了所有的归档日志处理办法

   List archivelog all;

   Crosscheck archivelog all;

   Delete archivelog all;

   backup database plus archivelog delete input;

备份后--alter system archive log current;--对日志进行归档

配置退格键支持

# echo "stty erase '^H'" >> /home/oracle/.bashrc

# echo "stty erase '^H'" >> /home/grid/.bashrc

 

一、oracle架构

oracle database architecture 架构

user process 客户端进程

server process 服务端进程(前台进程)

1.1总体结构 

server

 instance = sgapga + process structures(代码程序)

 database (storage structures)

 

cdb pdb

session

1.1.1内存结构 

memory stuctures 内存结构

sga

  shared pool 共享池 :

          library cache(sql area和执行计划)

          data dictionary cache (数据库表记录各种对象记录) 字典缓存

           v$  dba_

         server result cache 服务器结果缓存

         reserved pool 保留池

  database buffer cache (数据块data blocks:         

  redo log buffer (数据库变更日志缓存):

  large pool :

        session memory for the shared server and the oracle XA interace

        io  

        backup

        parallel query

        流技术

  java pool :

  streams pool :

  

pga :(共享服务器模式uga 会放到sgalarge pool里面)

  stack space:

  user global area :

 

12c新特性:in-memory column store(列式存储)

          full database in-memory caching(全库缓存)

 

1.1.2进程结构 

process architecture (进程结构)

  user process

  database processes

  daemon / application processes

1database writer process(dbwn)(把数据写到磁盘)(modified - dirty)(有时间就写脏块)

  全局检查点(full checkpoint):

    shutdown immediate;

    alter system checkpoint;

  增量检查点 incremental checkpoint)(每三秒写一次):

  其他检查点:

    switch logfile

    begin backup

    offline datafile

 

2log writer processlgwr):(写日志进程)

  什么时候写日志

    提交时commit

    日志切换时:

    日志到规定存储写(1/3 或者1M):

    dbwn写赃块之前写:  

    每三秒:

 

3checkpoint process(ckpt)

  记录检查点

  sinals dbwn to write blocks to disk

4system monitor processsmon

  实例恢复

  cleans up unused temporary segments

5process monitor processpmon)进程监视

  回收用户process

  动态注册(11g前)

  监视会话超时时间(idle session

6recoverer processreco)(多个数据库)

  恢复分布式事务(distributed transactions

7listener registration processlreg)(12c动态注册)

8archiver processesarcn)(归档进程)

  非归档模式(日志不保存)

  

----------------------

desc dict--字典表

--内存视图

desc v$sgainfo;--sga

v$memory_dynamic_components

--进程视图

v$process;

 

1.1.3 oracle存储结构 

database storage architecture --oracle存储结构

  control files (记录数据库的物理信息、物理文件在哪)(可以有一份或多份,每一份都是一样的)

     1、查看控制文件select name from v$controlfile; 

     2show parameter control

       strings /u01/app/oracle/oradata/orcl/control01.ctl

       数据库文件路径

       归档日志文件路径

       备份数据路径

       数据库检查点信息

     

  data files dba_data_filesv$datafile

  online redo log files (redo)(v$logfile)

  archive redo log files (v$archived_log)

  parameter file(参数文件)show parameter pfile

  backup files(备份文件)

  password file (密码文件、sys的密码)$oracle_home/dbs/orapw-sid-db

  alert log and trance files  (警告和追踪文件)(v$diag_info)    

 

----

logical and physical database strure

--逻辑架构

database - tablespaces - segment(段、表) - extent() - oracle data block(标准大小8k)

 

二、 oracle管理工具 

 

sql-plus

sql developer

oracle enterprise manager database express

oracle enterprise manager cloud control

 

sql-plus 运行脚本

1sqlplus / as sysdba

   @aa.sql

2sqlplus / as sysdba @aa.sql

shell 脚本

./patch_sqlplus.sh

sqlplus / as sysdba <<EOF | sed -n '/----------/,+1p'|tail -n 1|awk '{print $1}'

select count(*) from v\$process;

quit;

EOF

三、数据库实例 

--initialization parameter files --参数文件配置

  分类:

   spfile --spfile<sid>.ora (二进制文件)

   pfile  --ini<sid>.ora  (字符串

 

 show parameter pfile; --查看使用的类型

 show parameter  --查看所有生效的参数(内存的参数)

 show spparameter --查看文件中的参数

 desc v$parameter -参数表(内存)

 desc v$spparameter --参数表(物理)

set lines 400; --设置列宽

col name for a20; --设置结果name的显示宽

set pages 800;   --设置页大小

  参数分类:basic、高级参数 (v$parameter isbasic

 

changing initialization parameter values

--分类

  static parameter   (静态参数)

  dynamic parameter  (动态参数)

(v$parameter)  issys_modifiable(global,memory) --全局修改内存(immediate falsedeferred

                    immediate --- can modify memory

                    false -- can not modify memory  (can only modify the spfile or pfile, restart the instance)

                    deferred --- new session

 

               isses_modifiable(session,memory) --会话修改内存的参数

 

  

--session的参数修改方式:     alter session set 参数名称='';

--system 的参数修改(immediate(立即生效的)false(必须加上spfile重启生效))     

         alter system set 参数名称='' [scope=both|spfile|memory]

 

3.1 instance启动停止 

startup

 shutdown - nomount(instance started) - mount - open

 

startup nomount

  --找到参数文件,启动实例 $ORACLE_HOME/dbs

      先找spfile<sid>.ora 没得

      再找 init<sid>.ora (该文件可以手动修改)

  --打开alert_<sid>.log

     $ORACLE_BASE/diag/rdbms/dbname/instance_name/trace

 

alter database mount

   --读取控制文件(不检查控制文件存在性(控制文件有多份)

     show parameter control

alter database open

   --打开数据文件和日志文件

  

--selet status from v$instance;(started\mounted\open)

   

-------

shutdown

 A-abort          --掉电--启动时日志可以还原

 I-immediate      --没提交的都回滚,立即关闭

 T-transactional  --只要有人做事就不关闭

 N-normal         --只要有链接就不关闭

 

ITN一致性关闭)

 

startup force = shutdown abort + startup

--viewing the alert log

--日志文件路径

find / -name alert_<sid>.log

$ORACLE_BASE/diag/rdbms/dbname/instance_name/trace

 

--日志内容

  关于数据库的报错、全局操作

 

12c-ddl.log --新特性

reference 手册、参考

 

--动态性能视图 v$XXX 内存中(不同状态内容不同)

 

dba_*s    --所有的

all_*s    --权限内所有的

user_*s   --用户所有的

 

3.2 参数文件错误处理 

1、确定以前用的哪一类 pfile 可以直接修改

sql>create pfile from spfile;

sql>create spfile from pfile;

2、找到pfile进行参数修改

  vi $ORACLE_HOME/dbs/init<sid>.ora

3、修改错误参数

4、启动数据库

 

四、oracle network 

--监听文件 $ORACLE_HOME/network/admin/listener.ora

LISTENER =

  (DESCRIPTION=

       (ADDRESS=(PROTOCOL=tcp)(HOST=100.98.100.225)(PORT=1521))

   )

 

  lsnrctl status

--创建监听

  netca

--register database

  1、自动注册auto1521start instanceevery 60salter system register;

      server name = db_unlque_name.db_domain

  2、手动注册manual:该配置文件$ORACLE_HOME/network/admin/listener.ora

      netmgr

    

     SID_LIST_LISTENER=

         (SID_LIST=

             (SID_DESC=

               (GLOBAL_DBNAME = mylisner)--(服务名称)

               (SID_NAME = orcl)         --(实例名称)

                (ORACLE_HOME=/u01/app/oracle/product/12.1.0/dbhome_1)

              )

           )

 

--查看oralce错误 oerr ora 1515

 

 

--EZ connect:

   sqlplus sys/passwd@192.168.100.1:1521/orcl(监听服务名称) as sysdba;

 

--local naming:(客户端配置文件)

   $ORACLE_HOME/network/admin/tnsnames.ora

orcl2=

(DESCRIPTION=

   (ADDRESS=(PROTOCOL=TCP)(HOST=192.168.100.1)(PORT=1521))

   (CONNECT_DATA=(SERVICE_NAME=orcl))

)

 

 

 

   netca/netmgr

 

sqlnet.ora --特殊配置 超时、加密

tnsping--测试tns的配置文件语法

__________________________________________________________________________________________

1、共享服务器模式:不能用的情况 

  a、管理员操作

  b、备份恢复

  c、批处理大数据处理

  d、数据仓库操作

2、专有服务器模式

 

数据库与数据库之间通讯

dblink 高低版本之间连接问题:有的需要打补丁

CREATE DATABASE LINK locallink

CONNECT TO hr IDENTIFIED BY hr

USING 'orcl2';

--

CREATE DATABASE LINK link1

CONNECT TO hr IDENTIFIED BY hr

USING

'(DESCRIPTION=

   (ADDRESS=(PROTOCOL=TCP)(HOST=100.98.100.225)(PORT=1521))

   (CONNECT_DATA=(SERVICE_NAME=orcl))

)';

五、管理存储 

dba_tablespaces --所有表空间

3 classer permanet,undo ,tmporary

permanet --永久表空间

查询表空间使用率

set lines 800;

set pages 800;

col tablespace_name for a30;

col used_pct for a10;

 

select total.TABLESPACE_NAME TABLESPACE_NAME,

total.MAX_SIZE_MB MAX_SIZE_MB, total.SIZE_MB-free.USED_FREE_MB USED_SIZE_MB,

round(((total.SIZE_MB-free.USED_FREE_MB)/total.MAX_SIZE_MB)*100,2)|| '%'  USED_PCT,

total.MAX_SIZE_MB-(total.SIZE_MB-free.USED_FREE_MB) Free_MB

from

    (select TABLESPACE_NAME,

sum(BYTES)/1024/1024 SIZE_MB,

sum(decode(MAXBYTES, 0 , BYTES,MAXBYTES ))/1024/1024 MAX_SIZE_MB

 from dba_data_files

group by TABLESPACE_NAME) total,

    (select TABLESPACE_NAME,

sum(BYTES)/1024/1024 USED_FREE_MB

from dba_free_space

group by TABLESPACE_NAME) free

    where total.TABLESPACE_NAME=free.TABLESPACE_NAME

and total.TABLESPACE_NAME not like 'UNDO%' ;

 

创建表空间

select file_name from dba_data_files;

create tablespace cs datafile '/u01/app/oracle/oradata/orcl/cs1.dbf' size 1g autoextend on maxsize 30g;

--大块表空间创建

alter system set db_16k_cache_size=20M;

create tablespace cs datafile '/u01/app/oracle/oradata/orcl/cs1.dbf' size 1g autoextend on maxsize 30g blocksize 16k;

--添加表空间数据文件

alter tablespace cs add datafile...;

--删除表空间

drop tablespace cs including contents and datafiles;

--缩放表空间

alter database datafile '/u01/app/oracle/oradata/orcl/cs1.dbf' resize 20M;

 

dba_tablespaces 字段解析

  extent_management -区管理 localdictionary(不常用)

    allcation_type  --区管理方式autoallocate(system)uniform

  segment_space_management  -- 段空间管理 manualfreelist->dictionary)、(segment headerbitmapauto(常用)

  blocksize --表空间默认大小(8k

    show parameter block_dize;

    show parameter db_cache; 

    show parameter cache_size;

 

--数据文件类型

bigfile/smallfile(默认创建方式)(多个数据文件)

  8k-->32T bigfile(单个数据文件)(只能一个)

  create bigfile tablespace name....;

 

 

 

--表空间的ofline online

--offline

 normalall dirty buffer cache sync to diskthen offline

 temporarysync the buffer cache as mostthe ofline

 immediateoffline immediateno sync

--语法

alter talespace tablesname offline [normal\temporary\immediate];

alter talespace tablesname online;

archive log list;--查看归档模式

 

 

--表空间

systemdictionary、所有系统信息用户表

sysaux:辅助表空间awrstatistics统计信息)、em

usersdefault permanetn tablespace 默认的永久表空间(先放用户的默认表空间,然后建表没有指定表空间则放这表空间)

 

temp:temporary data 临时表空间

undo:undo data

 

--ofaoracle flxiable architecture

/u01/app/oracle/oradata...

--omforacle managed files

  db_create_file_dest-参数-指定数据文件目录

 

--moving or renaming an onlin data file (移动数据文件,或重命名)

 11g需要关闭数据库或者offline datafile

 1、方法

  shutdown

  移动文件到新目录

  statup mount

  alter database rename file '路径' to '新路径'

  alter database open

  12c在线移动(新特性)

  alter database move datafile '路径' to '新路径';

 

dba_temp_files

 临时表空间datafile 生成方式

   1restart instance

   2、新增数据文件,删除错误数据文件

--temporary tablespace

  1temporary datasort)(pga不够-磁盘)

     order by

     group by

     setexcept(排查) union all

     join

     create index

  2temporary table

     --消失数据

     acommit

     bsession end

create temporary tablespace temp2 tempfile '  ' size 5m;

create GLOBAL temporary table aa(id number(20)) tablespace temp2;

select * from aa

insert into aa values(1);

commit

drop tablespace _name

--database_properties  --数据库属性表(字符集)

 

---tablespace group(建临时表空间 指定组就生成了)

   dba_tablespace_group

  alter tablespace temp2 tablespace group grp;

  select * from dba_tablespace_groups

 

-------managing undo data-undo 表空间

a copy of original ,premdified data (修改之前,的数据)

undo 数据什么时候回收commit+900秒(事务没有结束不会被覆盖)

   select * from v$undostat;

 --作用 roolback operations

         redad-consistent queries (一致性查询)

         oracle falshback queryoracle flashback(闪回)

         recovery from failed trancefil

 each transaction is assigned to only one undo

 一个undo 段可以多transaction

 一个undo只能一个instance

 一个instance只能一个undo生效

 

undo 闪回 一致性查询

redo 恢复

 

undo 表空间 固定 fixed sizeingnore undo_retention(忽略undo配置时间)

alte tablespace undotbs1 retention guarantee;--强制保证900

_____________________________________________________________________________

 

六、data concurrency 数据并发(locks)

--locks

  prevent-防止

  escalate 升级

--locking mechanism

  行级锁

  查询没有锁

 自动队列管理

 事务提交解锁

--dml locks

 tm -rx表锁(防止表结构变更alter drop

 x 行锁

 lock tables emplyess in exclusive mode;-手动加锁

 --锁转换不用重新排队

--

数据库监控项目(找出阻塞者杀掉)

active session

session wait

process number

host memory

host cpu

db time

-lock confilicts 锁冲突

 原因 uncommitted changes

      long-running

      锁升级

 v$session -视图;

   字段 -blocking_session -堵塞的会话id

        select distinct sid from v$mystat--查看自己的session id

   serial#-串号

   alter system kill session 'sid,serial#';--杀掉锁

 

---------

desc v$session;

select distinct blocking_session from v$session where blocking_session is not null;  --查看堵塞的会话id

select SID,SERIAL#,USERNAME,OSUSER,MACHINE,TERMINAL,PROGRAM,SQL_ID from v$session  WHERE sid='125';

ALTER SYSTEM KILL SESSION '125,29489';  --杀掉堵塞会话

select * from v$session where blocking_session is not null;  --查看哪个会话被堵塞了

-----------

--dead locks 死锁(互相等)(oracle会杀死前一个等待的session,程序还是不能运行需要前一个会话rollback才能保持数据一致性)

----------

七、adminstering user security

--select * from dba_users;--查看用户属性

  schema--某个人的对象(用户)

用户syssystem 12c sysbackupsysdgsyskm

  sysdg --主从用户

 

权限 sysdbasysoper(实例管理员)、sysbackupsysdgsyskm(管理秘钥)

 

用户认证方式

  password externalglobal

管理员认证

  密码文件(网络连接@select * from v$pwfile_users;

 as sysdba)操作系统认证(用户在定义的组中就可以)

      cat $ORACLE_HOME/rdbms/lib/config.c

      $ mv config.o config.o.orig

      $ make -f ins_rdbms.mk ioracle

--------------------

--普通用户管理

  create user app identified by app;

  grant connect,resource,unlimited tablespace,create view to app; --一般普通用户权限

  alter user app default tablespace cs;

  alter user app account lock;

  alter user app identified by oracle; --改密码

--普通用户的操作系统认证ops$name

--权限分类

   systemdatabasesystem--select * from system_privilege_map;

   objectprivileges on object(某一个数据库对象)

   

   select * from system_privilege_map; --所有的系统权限

   select * from dba_sys_privs; --用户的系统权限配置情况

  

   select * from table_privilege_map --对象权限

   select * from dba_tab_privs;  --用户的对象权限

 

--分配权限

  分配系统权限:grant xx to xx;[with admin option]

  分配对象权限:grant xx on bb to yyy;[with grant option(可以传给别人)] grant select on app.t to py;

 

--回收

  系统和对象权限回收后 对对象(如建立的表)不影响

  系统权限回收 不牵连其他

  对象权限回收 级联停用下发的权限

  revoke create session from sys01;

 

--roles 角色(当成system权限)

  select * from dba_roles;

 

  grant select_catalog_role to app;--查询数据字典的权限(巡检用户配置这个权限)

  show parameter audit;--显示审计文件路径

 

  create role role_name;

  grant connect to role_name;

  grant select any table to role_name;

  --建用户

  grant role_name to app;

 

  select * from dba_role_privs; --角色分配情况

 

--查看用户权限

  1、查看用户system权限

  2、查看用户object权限

  3、查看用户角色。

    select * from dba_sys_privs where grantee='APP';

    select * from dba_tab_privs where grantee='APP';

    select * from dba_role_privs where grantee='APP';

--secure roles

  set role vacationdba;启用角色

 

---profiles and users

   作用

     管理用户密码策略

     管资源的限制 --resource_limit参数 必须为true 才生效

 

----密码策略

   文件模板$ORACLE_HOME/rdbms/admin |grep pwd --utlpwdmg.sql

   

   ALTER PROFILE DEFAULT LIMIT

   failed_login_attempts --几次数锁定

   password_lock_time --1--1

   password_life_time 过期时间

   password_grace_time 过期后几天可以登录

   password_reuse_time 密码从用时间

   password_reuse_max  密码从用次数

   PASSWORD_VERIFY_FUNCTION ora12c_verify_function;

 alter profile default limit password_life_time unlimited;

 select * from dba_profiles;--查看profile详情

 

--密码复杂度检查

-----------------------------------

--------------quota 配额

 1unlimite tablespacegrant unlimited tablespace to yh;

 2quota on some tablespacealter user yh quota 10m/unlimited on users;

 

--least privilege--最小权限

   public 对所有人的权限

   administrator privilege

 

八、implementing oracle database auditing 数据库审计

--数据库安全

  用户认证

  权限

  监控可疑活动

--审计分类

  审计路径文件 show parameter audit(没有开统一审计前)

  audit_sys_operations-参数--管理员(基本操作)审计(12c默认开启)

  mandatory auditing 强制审计日志 (默认开启)

    和审计相关的操作

    alter table against audsys(用户的表)

    管理员的开启、关闭实例

  standard database auditing -标准数据库审计

  value-based auditing  值的审计(基本不用了)(触发器)

  fine-grained auditingFGA) 细粒度的审计  

      1、审计的dml 操作

      

 

---v$option 数据库有什么功能视图

 

--12c打开统一审计模式(geno进程)

 

   SHUTDOWN IMMEDIATE

   lsnrctl stop

   cd $ORACLE_HOME/rdbms/lib

    make -f ins_rdbms.mk uniaud_on ioracle ORACLE_HOME=$ORACLE_HOME

 

    lsnrctl start

    startup

    SELECT value FROM v$option WHERE parameter = 'Unified Auditing'

------默认审计规则

    select * from audit_unified_policies

 

---编写审计规则、启用规则、停用审计、查看审计

   --创建统一审计:

   CREATE AUDIT POLICY my_audit_policy

   ACTIONS SELECT ON app.bb;

   AUDIT POLICY my_audit_policy;

   noaudit POLICY my_audit_policy;

   --创建fga审计

   begin

    dbms_fga.add_policy (

    object_schema => 'APP',

    object_name => 'bb',

    policy_name => 'audit_emps_salary',

    audit_column => 'id',

    enable => TRUE,

    statement_types => 'SELECT,UPDATE');

   end;

   /

   --查询审计信息

   select * from unified_audit_trail order by event_timestamp desc;

   

九、数据库的backup 

9.1 moving data数据泵

  greneral architecture

    data pump --数据泵

     expdp impdp expimp客户端和字符集相关)

 

--目录对象创建 dba_directories -目录表 默认目录名称:data_pump_dir

   create directory mydir as '/u01/app/oracle';

   grant read,write on directory mydir to app;

 

   

--导出expdp help=y

   fullschema tabletablespace

   expdp \'/ as sysdba\' directory=mydir tablespaces=users ESTIMATE_ONLY=y  --计算导出文件大小

   expdp \'/ as sysdba\' directory=mydir dumpfile=app.dump logfile=mydir:app.log

     tables=app.bb  --倒表

     schemas=app     --倒用户(常用)

     exclude=statistics --排除统计数据

     tablespaces=cs1  --导出表空间

     full=y           --倒数据库

      

     expdp \'/ as sysdba\' directory=mydir dumpfile=app_%u.dump logfile=app_%u.log parallel=n    --并行数量

     

     compression=all --压缩

     version=11.2.04  --指定导出的版本

     content=all[data_only|metadata_only(表结构)]

     expdp parfile=app.para  --执行参数文件

------------------------

      cat app.para

        userid=app/app

        directory=mydir

        dumpfile=apppara.dump

        tables=app.bb

        QUERY=bb:"WHERE id = 7"

-------------------------

    --schema导入先建表空间、建用户

 

--导入impdp help=y| grep -i -C 3 table

     impdp app/app directory=mydir dumpfile=app.dump tables=bb;

      

      TABLE_EXISTS_ACTION=[APPEND, REPLACE, [SKIP] and TRUNCATE] --存在处理方式

      remap_table='employees':'emp' ----remap 更名导入的对象

 

      impdp app/app parfile=impdp.para

       --cat impdp.para

          directory=mydir

          dumpfile=apppara.dump

          tables=app.bb

          remap_table=app.bb:aa

9.2 Sql*loader

Sql*loader -将文本文件导入数据库

Input data files-> control file->sql*load(field processing(列选择bad file)、record selection(行选择discard file)-.>database

/etc/group 导入数据库

  1、文件需要加后缀(拷贝文件加后缀)cp /etc/group group.txt

  2、建表 create table linuxgroup(

               groupname varchar2(30),

               grouppasswd char,

                groupid number(10),

               groupmem varchar2(20))

 3、写control file

      load data

      infile 'group.txt' "str '\n'"

      into table linuxgroup

      fields terminated by ':'

      TRAILING NULLCOLS

      (groupname char(30),grouppasswd char(1),groupid INTEGER EXTERNAL,groupmem char(20))

   --(TRAILING NULLCOLS 空值插入null)

   --modtime date ‘yyyy-mm-dd hh24:mi:ss’ --日期格式定义

 4、导入命令 sqlldr app/app control=linuxgroup.ctl

Truncate table linuxgroup;

 --loading methods

  Conventional load --一条一条加载commit

  Direct path load --以块方式保存 data saves

 

--external tables(只读)

   --表的定义在数据库中,表的数据在操作系统的文件上

 

文本文件(oracle_loader驱动)

--建表文本文件的外部表               

CREATE TABLE linuxgrouptxt

(groupname varchar2(30),

   grouppasswd char,

   groupid number(10),

   groupmem varchar2(20))

ORGANIZATION EXTERNAL --定义外部表

( TYPE ORACLE_LOADER DEFAULT DIRECTORY mydir --定义类型和文件路径

ACCESS PARAMETERS

( records delimited by newline

badfile mydir:'linuxgrouptxt.bad'

logfile mydir:'linuxgrouptxt.log'

fields terminated by ':'

missing field values are null   --空值设为null

( groupname,grouppasswd,groupid,groupmem))  --对应表字段

LOCATION ('group.txt') )    --读取文件名称

PARALLEL REJECT LIMIT UNLIMITED;

 

二进制文件(oracle_datapump

--导出二进制文件

CREATE TABLE linuxgroupdump

ORGANIZATION EXTERNAL --定义外部表

(

TYPE ORACLE_DATAPUMP

DEFAULT DIRECTORY mydir

LOCATION ('group.exp')

)

PARALLEL

AS

SELECT * from linuxgroup;  --根据查询建表

 

--导入二进制文件的外部表

CREATE TABLE linuxgroupimp

(

               groupname varchar2(30),

               grouppasswd char,

                groupid number(10),

               groupmem varchar2(20))

ORGANIZATION EXTERNAL --定义外部表

(

TYPE ORACLE_DATAPUMP  --外部文件为二进制

DEFAULT DIRECTORY mydir  --文件路径

LOCATION ('group.exp')   --文件名称

);

 

9.3 back and recovery (物理备份)

(物理备份)

Configuring for recoverability(配置可还原配置)

  --定期备份

  --控制文件的复用

   Show parameter control

   Alter system set control_files=’’,’’,’’ scop=spfile;

   Shutdown IMMEDIATE;

   Cp file

   startup

  --

Fra:(闪回区)(内容)

  1、控制文件的复用

  2redo的复用

  3backup files

  4、归档日志

  5flashback logflashback database

 配置(路径和大小)

 Show parameter recover

   db_recover_file_dest_size

   db_recover_file_dest

 

 --开启闪回区

   alter system set db_recovery_file_dest_size=1024M;

   alter system set db_recovery_file_dest='/u01/app/oracle/fast_recovery_area';

   查看闪回区大小

     Show parameter recover

      V$FLASH_RECOVERY_AREA_USAGE --查看各个闪回文件大小

      V$RECOVERY_FILE_DEST         --查看整个闪回区大小   

 

Redo log files

  复用(日志组)

   V$log --查看组

   V$logfile --查看组成员

 创建日志组

   Alter database add logfile group 4 ('xx.log','xx.log') size 50M [reuser];

  增加组成员(文件)

   Alter database add logfile memeber ‘xx.log’ to group 1

  删除成员

   Alter database drop logfile memeber ‘xx.log’;

  删除组

   Alter database drop logfile group 4;

 

  Select status from v$log --查看日志状态

      Current --正在用

      Acitive --bufer cach的日志的脏块没有落盘

      Inactive --写了库了

      Unused --没有用的    

 

   Alter system switch logfile; --切换日志

   Alter sysetm checkpoint; --切换检查点,dbwn

  Redo & omf  --默认日志路径

    Show parameter db_create

 

Archived redo log file --归档日志

   archive log list; --current log sequence --日志的切换次数

  开启归档

1shutdown immediate;

2startup mount;

3alter database archivelog;

4alter database open;

5archive log list;

   Log_archive_dest_1  --参数归档日志路径

      Fra:fra     ---归档日志开启了闪回区日志放闪回区

      No fra:$ORACLE_HOME/dbs   --没有开启闪回就放软件目录

 

--设置归档日志路径

(企业版、配置log_archive_dest_n

alter system set log_archive_dest_1='location=/u01/app/oracle/archive_area'  mandatory(必须成功)|[optional](默认可以成功);

alter system set log_archive_dest_2=’service=remotedb’

(标准版、配置log_archive_dest/log_archive_duplex_dest='/u01/app/oracle/archive_area'

   --log_archive_min_succeed_dest --归档日志最小成功系统才能用 默认值 1

作业:

 Redo :添加日志组、日志文件、修改日志组大小、路径管理

 archive :打开归档、修改路径

 

9.4 back and recover concepts (概念)

   Mtbf(在线时长) mttr    

--失败的分类

   

   1、语句级失败(定义、权限、没空间、业务逻辑) 

   2、用户进程失败select * from v$process   

   3、网络失败

   4、用户error(例如:错误删除):闪回

   5、实例故障 kill -9 pmon  启动startup 恢复

       Ckpt (检查点):实例恢复的起点

       检查点队列: 按照脏块第一次对脏的顺序串起来

       前滚 (将日志回写到内存)、回滚(undo(表空间))(没提交的写到内存撤销)

 

作业 :归档多份 归档必须成功几份 实例恢复过程

  6media failure(完全恢复、不完全恢复(重点))

      Point-in-time recover  ptr

  --备份恢复类型

Rman

Flashback

Adg

 

9.5 rman (revover manager)

Rman target /  --连接目标数据库

 

命令

 Standalone  --单条命令

 

 Job        

  Run{

   ....

     }

 

     Whole --全备

     Partial --部分备

     Offline --冷备 (可以直接用)

     Online --热备  (必须日志)

     Full --对某个数据文件 所有备份

     Incremental --对某个数据文件 增加的备

         Cumulative累计增量备份(和第一次备份做比较)

         Differential差异增量备份(和上一次比较)

 --osboracle secure backnbu

  Rman

  

Image copies(镜像拷贝)

Backup sets (备份集)(多个backup pice

 

----using the rman recovery catalog  (数据库)

     Rman>backup spfile;

  --备份文件两部分

--backup metadata --备份的源数据

    1、放在控制文件中(有时间限制)

    2、放catlog里面

--backup files --备份文件

 

--创建catlog

  1、创建数据库、表空间

  2、创建用户分权限

 

 

 

 

Grant unlimited tablespace to cataadmin;

  3、创建calog数据库

     rman catalog cataadmin/oracle  --链接catalog数据库

     create catalog;

     drop catalog;

  4、注册

     --数据库端

     rman target / catalog cataadmin/oracle@100.98.100.215:1521/xe

     register database;

     unregister database;

     --catalog端进行注册

     rman target sys/123qweQWE@100.98.100.225:1521/orcl catalog cataadmin/oracle

     register database;

     backup spfile;

作业:catalog概念 创建catalog数据库

create tablespace catlog datafile '/u01/app/oracle/oradata/orcl/catlogspace.dbf' size 20m autoextend on maxsize 30g;

create user cataadmin identified by oracle default tablespace catlog;

 

grant recovery_catalog_owner,unlimited tablespace to cataadmin;

 

rman catalog cataadmin/oracle

RMAN> create catalog

 

 

---partial full

--using rman stored scripts (使用rman脚本)

     Delete backup

      List backup;

 

Run {

  Backup spfile;

  Backup current controlfile;

}

 

----creating and using virtual private catalogs

---catalog command (手动添加源文件,收录到数据库)

  Catalog start with ‘路径’

  

--收录某类的文件

 

作业:注册数据库、创建脚本 、收录

--建立catalog数据库

-- 1、建表空间

create tablespace catlog datafile '/u01/app/oracle/oradata/xe/catlogspace.dbf' size 20m autoextend on maxsize 30g;

-- 2、建用户分权限

create user cataadmin identified by oracle default tablespace catlog;

grant recovery_catalog_owner,unlimited tablespace to cataadmin;

--链接catalogcatalog

rman catalog cataadmin/oracle

RMAN> create catalog

--源端链接catalog数据库进行注册

Rman target sys/123qweQWE@100.98.100.225/orcl catalog cataadmin/oracle

Register database;

--创建备份脚本、查看

create script backup_controlfile{

backup spfile;

Backup current controlfile;

}

list script names;

print script backup_controlfile;

--运行脚本

RUN { EXECUTE SCRIPT backup_controlfile;

}

--收录备份文件的源到catalog

catalog start with '/u01/app/oracle/fast_recovery_area/ORCL/backupset/2019_09_08';

--删除查看备份

delete backup;

list backup;

 

---performing backups

 backup show all 显示rman所有配置)

   1spfile,controlifile,datafile,(online redo),archive log,(password file),(alert),(trace) --rman不能备份打括号的

   2、备份命令

   CONFIGURE BACKUP OPTIMIZATION ON;  --打开备份的时候备份控制文件和参数文件的参数

   spfile backup spfile

   Controlfile :

     Rman> backup [as backupset] current controlfile;

     Rman> backup as copy current controlfile;

    --镜像拷贝

     SQL> alter database backup controlfile to '/tmp/control.ctl';

     SQL> alter database backup controlfile to trace  as '/tmp/control.trc';

 

  Datafile:

    Rman>report schema;

Rman>backup datafile 8|’xxxwjm’;

Sql>backup as copy datafile 8|’xxxwjm’;

  Tablespace,database:

Rman>backup tablespace xxx;

Rman>backup database;--包含spfile,controlifile,datafile

Rman>backup database plus archivelog delete input(删除备份了的归档); --全库备份

  Archivelog:

Rman>backup archivelog all [delete input];

 

9.6 incrementally updated backups (增量备份)

 

   Rman target /

 Rman >Report schema;

       backup incremental level 0 datafile 7;

       Backup [Differential/cumulative] incremental level 1 datafile 5;

       Differential(差异增量)/cumulative(累计增量和0比)

       List backup of datafile 5

 Fast incrementall back (快速备份)

      --启用快速备份(块跟踪)ctwf进行块写

      Alter database

        {enable|disable} block change tracking

        [using file ‘...’] (开启了omf可以不用写该文件,软件自己放路径)

        

       SELECT file#, avg(datafile_blocks),

avg(blocks_read),

avg(blocks_read/datafile_blocks)

* 100 AS PCT_READ_FOR_BACKUP,

avg(blocks)

FROM

v$backup_datafile

WHERE used_change_tracking = 'YES'

AND

incremental_level > 0

GROUP BY file#;

 

--查看备份块情况

查看备份情况

        List back of ...

       List copy of ..

       Report schema;

       Report obsolete; --查看过期备份

        Delete obsolete --删除过期文件

            删除找不到的文件。

             Crosscheck copy(类型);--检查一下

             Delete expired copy;  --expired 找不到文件的源数据记录

       List copy;

   

 备份压缩

   备份集才可以压缩(镜像拷贝不能压缩)

   Backup [as copy|as compressed backupset] datafile 5;

备份大文件方法

Backup daafile 5 section size =25M;(一般和并行用如下)

 

 

 

 

作业:增量备份、开启块追踪、删除过期、压缩备份、大文件备份

   backup incremental level 0 datafile 7;

   backup cumulative incremental level 1 datafile 7;

   list backup of datafile 7;

   alter database enable block change tracking;

   report obsolete;

   List copy;

   Crosscheck copy;

   Delete expired copy;

   backup as compressed backupset datafile 5;

 

   对备份集的备份

Backup backupset all;

Backup backupset 4;

备份多份

    方法1、修改rman 配置,指定备份地方

    

 

 

 

还原rman的配置用

CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO clean;

方法2、命令方式

 

Archival backups (打破默认的保存策略)指定过期时间

    

 

 

 

1、配置自动备份控制文件

2、开启归档模式

3、全库备份

 

Restore恢复

Resore & recovery

 

  1parameter file 参数文件问题

    方法一、

Create pfile from spfile;

pfile,启动数据库

方法二、自己配置参数文件

  2password file 密码文件恢复(远程的管理员用户)

     Cd $ORACLE_HOME/dbs

     Orapwd file=orapw<sid>

作业:备份多份、参数文件密码文件恢复

     backup database plus archivelog delete input;

     backup  copies 2 format '/tmp/datafile%U','/home/oracle/datafile%U' datafile 7;

     

     3crcial (关键性文件)

        Control file, system tbs,undo tbs,online redo log

 4datafile (数据文件损坏恢复)

    Creater table a(id int) tablespaces cs;

      --清理缓存

     

 

 

 

     --查看损坏文件

        Rman >Select  * from v$recover_file;

        Rman >validate database;

   方法rman

      1、离线数据文件

         Alter database datafile 2 offline;

      2、恢复

         Restore datafile 2;

      3、跑日志

         Recover datafile 2;

      4Alter database datafile 2 online;

  Tablespces

        

  数据库恢复

        

  System\undo:

        

Archvie log(恢复归档文件)

        List backup of Archivelog all;

        Restore archivelog all |sequence 65;

--查看数据文件和控制文件的头 必须一样才能启动

              

作业:数据库文件恢复、表空间恢复、归档文件恢复

      select table_name,TABLESPACE_NAME from dba_tables where TABLESPACE_NAME='USERS';

      mv /u01/app/oracle/oradata/prod/users01.dbf /u01/app/oracle/oradata/prod/users01.dbf.bak

      SQL> select * from OJDS$BINDINGS$;

      select * from OJDS$BINDINGS$

              *

           ERROR at line 1:

           ORA-01116: error in opening database file 6

           ORA-01110: data file 6: '/u01/app/oracle/oradata/prod/users01.dbf'

           ORA-27041: unable to open file

           Linux-x86_64 Error: 2: No such file or directory

           Additional information: 3

      Rman>validate database;

      --恢复

      Rman>Alter database datafile 6 offline;

            restore datafile 6;

            recover datafile 6;

            alter database datafile 6 online;

 

----------表空间恢复

            rm -rf example01.dbf

            restore tablespace example;

            recover tablespace example;

            alter database open;

------数据库的恢复

            

              rm -rf system01.dbf

              alter system flush buffer_cache;

              alter system flush shared_pool;

              Rman>validate database;

                   Restore database;

                   recover database;

                   Alter database open;

-----------controlfile控制文件恢复

Parameter ,controlfile:nomount模式下

     Rman>

           

作业:删除参数文件 控制文件 进行数据库恢复

     /u01/app/oracle/fast_recovery_area

     /u01/app/oracle/oradata/orcl/control01.ctl

     /u01/app/oracle/ fast_recovery_area/orcl/control02.ctl

  ----恢复参数、控制文件

     rman target /

     Startup nomount;

     restore spfile from autobackup recovery  area = '/u01/app/oracle/fast_recovery_area/' db_name = 'ORCL';

     Startup nomount force;

     restore controlfile from autobackup;

     Alter database mount;

     Recover database;

     Alter database open resetlogs;

    ----

     -重新进行备份

Rman>backup database plus archivelog delete input;

 

控制文件没有备份如何恢复

       1、另外一台oracle 生成模板

       

   2、修改配置

     修改库名称

   修改日志文件、数据文件路径

 

 

 

 

Redo 日志恢复v$log \v$logfile

 

(思路 建正在用的变成用过的,用过的变成没在用的,然后clear日志)

  如果不能实现,只能不完全恢复

   1、只是某个logdata损坏,删除新建

   2、某个日志组损坏。

       一、Inactive模式的日志

        A、做了归档

        B、直接   Alter database clear logfile group 4;

    

       二、active模式的日志

          写库 checkpoint 变成 inactive

          Alter system checkpoint;

           Clear日志

          Alter database clear logfile group 4;

 

       三、curent模式的日志

          日志切换 log switch

           Alter system switch logfile;

           变成 active,进行写盘

           Alter system checkpoint;

           Clear日志

           Alter database clear logfile group 4;

           

           

作业:通过模板恢复控制文件、redo日志的恢复

  ---inactive 日志文件恢复

select GROUP#,STATUS from v$log;

select group#,member from v$logfile;

alter database clear logfile group 1;

 

 --active 日志文件恢复

     SQL> select GROUP#,STATUS from v$log; --查看到3日志组待写盘

      GROUP# STATUS

       ---------- ----------------

         1 CURRENT

         2 INACTIVE

         3 ACTIVE

     rm -rf redo03.log       --删除3日志组

Alter system checkpoint;  --进行写盘操作

SQL> select GROUP#,STATUS from v$log; --日志组3变成了用过的日志

    GROUP# STATUS

---------- ----------------

         1 CURRENT

         2 INACTIVE

         3 INACTIVE

SQL> alter database clear logfile group 3;   --clear 将日志resetlog,生成新日志文件

 

--CURRENT 正在用的日志恢复

           Alter system switch logfile;

           变成 active,进行写盘

           Alter system checkpoint;

           Clear日志

           Alter database clear logfile group 4;

 

----手动编写控制文件

alter database backup controlfile to trace as '/tmp/contro.ctl';

不完全恢复(整体还原)

    

   1、找时间点(timescnsequence#restore point

       相关人员告诉

       分析日志

      Select group#, Firest_time,next_change# from v$log;

  还原

Run{

   Startup mont force;

   Set until scn 1323434;

   Restore database;

   Recover database;

   Alter database open resetlogs;

 }

Oracle 备份进度查看

 

作业 :不完全恢复

    --插入表数据

insert into a select * from a;

Cmmit;

--查看正在用的日志组

SQL> select GROUP#,STATUS from v$log;

 

    GROUP# STATUS

---------- ----------------

         3 CURRENT

         2 INACTIVE

         1 INACTIVE

--删除日志组

rm -rf /u01/app/oracle/oradata/orcl/redo3.log

--找到可以还原的时间点

SQL> select GROUP#,FIRST_CHANGE#,NEXT_CHANGE# from v$log;

 

    GROUP# FIRST_CHANGE# NEXT_CHANGE#

---------- ------------- ------------

         1       4976405      4977820

         2       4977820      4979576

         3       4979576   2.8147E+14

--全库还原

Run{

   startup mount force;

   set until scn 4979576;

   restore database;

   recover database;

   alter database open resetlogs;

 }

--进行全库备份

 backup database plus archivelog delete input;

 

-----建备份还原到新环境中

  Set newname for datafile and set newname for tempfile

  Set newname for tablespace

  Set newname for database

 

作业:nolongnewname

---nolong表情况 example is nolong表空间。

   create table b (id int) tablespace EXAMPLE;

   Rm-rf /u01/app/oracle/oradata/prod/example01.dbf

   alter database datafile 5 offline drop;

   Restore datafile 5;

   recover datafile 5;

   alter database datafile 5 online;

--newname 还原到新地方

  Run {

     Sql 'alter tablespace example offline immediate';

     Set newname for tablespace example to '/home/oracle/%b';

     Restore tablespace example;

     Switch datafile all;

     Recover tablespace example;

     Sql 'alter tablespace example online';

        }

  

 RMAN> report schema;

  

--镜像拷贝恢复(建现在用的文件用备份的镜像直接替换)

List copy of datafile 5;

alter database datafile 5 offline drop;

--copy的镜像替换datafile'/home/oracle/example01.dbf'

switch datafile '/home/oracle/example01.dbf' to copy;

recover datafile 5;

alter database datafile 5 online;

 

 

 

 

 recover copy of database with tag 'daily_inc';

Backup incremental level 1 for recover of copy with tag 'daily_inc' database;

 

---非归档模式的备份恢复alter database noarchivelog;

Noarchivelog

Full-全备:

Backup: mount -->backup(backup database;backup current controlfile;)

Restore: mount-->restore database;-->alter database open resetlogs;

增量:

Backup: mount -->

  第一天

  backup incremental leve 0 database;

  Backup current controlfile;

  第二天

   backup incremental leve 1 database;

   Backup current controlfile;

  ...........

Restor

 Restore latest controlfile;

 Mount;

 Restore database;

 Recover database noredo;

 alter database open resetlogs;

 

disaster recovery --灾难性恢复

  最小需求

  Backups of data files

  Corresponding archived redo logs files

  At least one control file autobackup

 

  ----数据文件不在、控制文件不在、参数文件不在

步骤

   1、恢复参数文件

      Rman

      A、启动哑实例:startup nomount

      B、恢复参数文件:

      

   2、以参数文件启动实例

      Startup nomount force;

      恢复控制文件

      

   3、使用控制文件启动到mount

      Alter database mount;

      恢复库(日志没丢完全恢复、丢日志不完全恢复)

      Restore database & recover database;

   4alter database open resetlogs;(改变了控制文件需要重写日志)

------alter system archive log current;--对日志进行归档

 

---删除了所有的归档日志处理办法

   List archivelog all;

   Crosscheck archivelog all;

   Delete archivelog all;

   backup database plus archivelog delete input;

备份后--alter system archive log current;--对日志进行归档

 

作业:灾难性恢复

   删除数据文件、控制文件、参数文件。

   Shutdown abort;

   Startup nomount;

   恢复参数文件

   restore spfile from autobackup recovery area='/u01/app/oracle/fast_recovery_area/' db_name='orcl';

   以参数文件启动实例

   Startup nomount force;

   恢复控制文件

   restore controlfile from autobackup ;

   Alter database mount;

   恢复数据库

   Restore database;

   Recover database;

   打开数据库;

   alter database open resetlogs;

 

还原到新主机--不完全恢复

 Archivelog mode+whole database;

   archive log list;

   backup database plus archivelog delete input;

   alter system archive log current;

1、控制文件

   Create pifile from spfile;

   Scp pifile 到新机器对应目录

   修改pifile 建目录

   export ORACLE_SID=prod

   Rman 启动到nomount

2、恢复controlfile文件

   Prod

List backup of controlfile;

Scp controlfile 到新主机

Restore controlfile from ‘控制文件路径’;

Alter database mount;

List backup;--找最新的archlogscn用于不完全恢复

3、恢复数据库

拷贝prod的最新备份文件到新主机相同目录下(建目录)

Restore & recover database

Run{

 Set until scn 15454;

 Restore database;

 Recover database;

}

 

 alter database open resetlogs;

 

作业:还原到新主机

   1、还原参数文件

   Prod

create pfile from spfile;

scp initprod.ora oracle@192.168.20.251:/u01/app/oracle/product/12.1.0/dbhome_1/dbs/

修改新主机的initprod.ora

mkdir -p /u01/app/oracle/admin/prod/adump /u01/app/oracle/oradata/prod /home/oracle/mydir /u01/app/oracle/fast_recovery_area /u01/app/oracle

新主机

  export ORACLE_SID=prod

  rman target /

  startup nomount;

2、恢复controlfile文件

       Prod

   List backup of controlfile;

   scp /u01/app/oracle/fast_recovery_area/PROD/autobackup/2019_10_13/o1_mf_s_1021547306_gt559b8s_.bkp oracle@192.168.20.251:/home/oracle/

  新主机

   Restore controlfile from '/home/oracle/o1_mf_s_1021547306_gt559b8s_.bkp';

   Alter database mount;

  Prod

   List backup;--找最新的archlogscn用于不完全恢复

       List of Archived Logs in backup set 25

       Thrd Seq     Low SCN    Low Time  Next SCN   Next Time

         ---- ------- ---------- --------- ---------- ---------

         1    29      2848763    13-OCT-19 2848803    13-OCT-19

      

     3、恢复数据库

     拷贝prod的最新备份文件到新主机相同目录下(建目录)

     新主机:mkdir -p /u01/app/oracle/fast_recovery_area/PROD/backupset

     Prodscp -r /u01/app/oracle/fast_recovery_area/PROD/backupset/2019_10_13    oracle@192.168.20.251:/u01/app/oracle/fast_recovery_area/PROD/backupset/

    新主机:

     Restore & recover database

        Run{

           Set until scn 2848803;

           Restore database;

           Recover database;

           }

 4、启动库

    alter database open resetlogs;

 

Duplicate database --复制数据库

  在线复制

  基于备份的复制(对生产没有影响)--(连接生产、不连接生产)--连接新主机

12c新概念

  The push process is based on image copies; 镜像拷贝  

  The pull process is based on backup sets;12c 新特性 (备份集拷贝)

---在线复制-复制成新实例名称

1、复制initorclt.ora到新主机

2、修改initoraclt.ora 的实例名称和路径、建立路径

3、启动到nomount

4、启动监听alter system register;

5、静态注册,改配置文件

6、准备脚本http://www.xuwang.online/index.php/archives/57/

7、准备密码文件 orapwd file=$ORACLE_HOME/dbs/orclpwdb01

8、

9、运行脚本

 

作业:在线复制数据库

   11prod 复制到251orcl

   1、复制initorclt.ora到新主机

scp initprod.ora oracle@192.168.20.251:/u01/app/oracle/product/12.1.0/dbhome_1/dbs/initorcl.ora

   2、修改initoraclt.ora 的实例名称和路径、建立路径

%s/prod/orcl/g

Mkdir -p /u01/app/oracle/admin/orcl/adump  /u01/app/oracle/oradata/orcl/

   3、启动到nomount

     export ORACLE_SID=orcl

     sqlplus / as sysdba

     Startup nomount;

   4、启动监听alter system register;

       静态注册,改配置文件

LISTENER =

  (DESCRIPTION=

       (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.20.251)(PORT=1521))

   )

 

SID_LIST_LISTENER=

  (SID_LIST=

    (SID_DESC=

       (GLOBAL_DBNAME = orclzc)

       (SID_NAME = orcl)

       (ORACLE_HOME=/u01/app/oracle/product/12.1.0/dbhome_1)

    )

  )

    6、准备脚本http://www.xuwang.online/index.php/archives/57/

    run{

SET NEWNAME FOR DATABASE TO '/u01/app/oracle/oradata/orcl/%b';

DUPLICATE TARGET DATABASE TO orcl

FROM ACTIVE DATABASE

NOFILENAMECHECK

logfile

group 1 ('/u01/app/oracle/oradata/orcl/redo01a.log') SIZE 50M REUSE,

group 2 ('/u01/app/oracle/oradata/orcl/redo02a.log') SIZE 50M REUSE,

group 3 ('/u01/app/oracle/oradata/orcl/redo03a.log') SIZE 50M REUSE;

}

    7rman连接目标库和还原库

 

    orapwd file=$ORACLE_HOME/dbs/orapworcl password=oracle

    rman target sys/oracle@192.168.20.11:1521/prod auxiliary sys/oracle@192.168.20.251:1521/orclzc

 

 backup-based duplicate  (orcl  ---> cfopdb)

 

 

1. Create an Oracle password file for the auxiliary instance. (optional)

$ orapwd file=orapwcfopdb

 

2. Establish Oracle Net connectivity to the auxiliary instance. (optional)

 

3. Create an initialization parameter file for the auxiliary instance.

 

4. Start the auxiliary instance in NOMOUNT mode.

[oracle@demo dbs]$ export ORACLE_SID=cfopdb

[oracle@demo dbs]$ rman target /

startup nomount;

 

5. Mount or open the target database.

SQL> select status from v$instance;

 

6. Ensure that backups and archived redo log files are available.

$ scp /u01/app/oracle/fast_recovery_area/ORCL/archivelog/2019_10_13/* 192.168.20.10:/u01/app/oracle/fast_recovery_area/ORCL/archivelog/2019_10_13/

 

7. Allocate auxiliary channels if needed.

8. Execute the DUPLICATE command.

 

$ rman target sys/oracle@192.168.20.250:1521/orcl auxiliary /

 

RMAN> RUN

{SET NEWNAME FOR DATABASE TO '/u01/app/oracle/oradata/cfopdb/%b';

DUPLICATE TARGET DATABASE to cfopdb NOFILENAMECHECK

logfile

group 1 ('/u01/app/oracle/oradata/cfopdb/redo01a.log') SIZE 50M REUSE,

group 2 ('/u01/app/oracle/oradata/cfopdb/redo02a.log') SIZE 50M REUSE,

group 3 ('/u01/app/oracle/oradata/cfopdb/redo03a.log') SIZE 50M REUSE;

}

rman加密恢复

  TDE(钱夹的方式 基于钥匙的加密)

  1、基于口令的加密

  

   恢复

   

  2、基于钥匙的加密

       http://www.xuwang.online/index.php/archives/140/

     A、建钥匙目录

        Mkdir /u01/wallet

     B、配置钱夹位置

        More $ORACLE_HOME/network/admin/sqlnet.ora

         

        Lsnrctl stop  /   start

     C、创建秘钥

         Sqlplus / as sysdba    

 

 

 

 

 

 

 

作业:秘钥加密、钱夹方式加密、双栈模式

  Rman

--密码加密备份

SET ENCRYPTION ON IDENTIFIED BY 'oracle' only; run{

  Backup datafile 6; }

      

alter database datafile 6 offline;

rm /u01/app/oracle/oradata/prod/users01.dbf;

--密码提供恢复

SET DECRYPTION IDENTIFIED BY 'oracle';run{

  restore datafile 6;

  recover datafile 6;}

--钱夹加密

  --建目录

   Mkdir /home/oracle/wallet

  --编辑sqlnet.ora

  --重启监听实例

  --sqlplus / as sysdba

  --创建keystore文件

  --打开keystore文件

  --生成key

  --打开wallet

ADMINISTER KEY MANAGEMENT CREATE KEYSTORE '/home/oracle/wallet' IDENTIFIED BY oracle;

ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY oracle;

ADMINISTER KEY MANAGEMENT SET KEY IDENTIFIED BY oracle WITH BACKUP USING 'for_12c';

ALTER SYSTEM SET ENCRYPTION WALLET OPEN IDENTIFIED BY "oracle";

rman

SET ENCRYPTION ON;

run {

backup datafile 6;

}

alter database datafile 6 offline;

restore datafile 6;

 

--diagnosing failures  

Adr(repository仓库)/ dra(advisor顾问)

--参数diagnostic_dest 指定adr 的路径

Dra 只支持单实例 不支持rac

支持主从切换

Dra 功能作用

Dra 步骤

   Validate database; --对数据库进行校验、检查是否有错误。

  Rman

List failure;

Advise failure;

Repair failure;

---cure日志出问题实例直接挂了

  启动到mount

  不完全恢复

--block 恢复

   物理坏块

     --查看坏块

     1Ora-01578 物理坏块

      2、告警日志

      3、看视图

     防止坏块参数(性能)

 

  恢复坏块:

     1、制作坏块

 

     2、人为校验 rman > validate database;

                       Validate datafile 5;

           Select * from v$database_block_corruption;

        

     3、修复

        Recover datafile 5 block 150;

        recover corruption list;

    ADG 主备库

   逻辑坏块

 

作业:物理坏块修复

1、制作坏块

   dd if=/dev/zero of=/u01/app/oracle/oradata/prod/users01.dbf count=2 seek=150 bs=8192 conv=notrunc

2、人为校验

       rman > validate database;

       Select * from v$database_block_corruption;

3、修复坏块

    Recover datafile 6 block 150;

    Recover datafile 6 block 151;

    recover corruption list;

 

 

pitr 基于时间点的还原

 Tspitr:表空间基于时间点的还原(启动辅助实例-导出源数据-修改原来的datafile

 Tpirt:表基于时间点的还原 (12c)(启动辅助实例-导出表数据-导入数据表)

   Target time:目标点

   Recover set:需要恢复的表空间集合

   Auxiliary set:辅助完成需要的集合

   Auxiliary destination --辅助实例目录

操作:

1Backup database;

2Select to_char(sysdate,’yyyy-mm-dd hh24:mi:ss’) from dual;

3Drop table name;

4-检查表空间是否self-contain(是否独立是否和其他表空间关联)

 

5--check lost object --检查是否有丢失数据

 

6、还原表空间到时间点

 

Users是永久表空间,不能删除,需要换一个表空间进行实验

 

作业:表空间、表的时间点的恢复

--表空间的时间点恢复

create tablespace cytbs datafile '/u01/app/oracle/oradata/prod/cytbs01.dbf' size 10m;

backup database;

create table hr.regionscp tablespace cytbs as select * from hr.regions;

SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;

 

TO_CHAR(SYSDATE,'YY

-------------------

2019-10-19 15:45:27

 

drop table hr.regionscp;

1. self-contain

 

exec DBMS_TTS.TRANSPORT_SET_CHECK ('CYTBS');

SELECT * FROM TRANSPORT_SET_VIOLATIONS;

2. check lost object

 

select owner, name,to_char(creation_time,'yyyy-mm-dd hh24:mi:ss') create_time

from ts_pitr_objects_to_be_dropped

where tablespace_name = 'CYTBS' and

creation_time > to_date('2019-10-19 15:45:27','yyyy-mm-dd hh24:mi:ss');

 

3. 还原表空间

mkdir /home/oracle/aux

rman target /

 

RECOVER TABLESPACE cytbs

UNTIL TIME "to_date('2019-10-19 15:45:27','yyyy-mm-dd hh24:mi:ss')"

AUXILIARY DESTINATION '/home/oracle/aux';

4alter tablespace cytbs online;

 

--表的时间点恢复

  Backup database

1、创建表

2、查找时间点

3、drop table (truncate 表不能还原(提示表存在,可以再次把表删除再还原))

4、检查self-containcheck lost object

4、还原表

create table hr.regionscp tablespace cytbs as select * from hr.regions;

SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;

TO_CHAR(SYSDATE,'YY

-------------------

2019-10-19 16:01:16

 

drop table hr.regionscp;

 

recover table hr.regionscp

until time "to_date('2019-10-19 16:01:16','yyyy-mm-dd hh24:mi:ss')"

auxiliary destination '/home/oracle/aux';

Transporting data 可传输表空间

   跨平台功能 版本10.0以上

   

表空间传输操作:

1、查看系统是否支持

2、检查表空间自包含

3、修改表空间read only

   Alter tablespace tabales_name read only;

4、倒源数据

   

5、转换数据 (不同系统)

  Rman >

   

   注:%U唯一名称

6、让生产库表空间可读

   Alter tablespace tabales_name read write;

7、传输源和转换后的数据文件到新主机

8、源数据放到data_pump_dir 目录下

Select * from dba_directories

9、新主机导入

   

   Alter tablespace tabales_name read write;

  

exclude=statistics  ---不导入统计信息

content=metadata_only  --只导出源数据

 

作业:传输表空间

 1select * from v$transportable_platform;

    execute dbms_tts.transport_set_check('CYTBS',true);

select * from transport_set_violations;

 2Alter tablespace CYTBS read only;

 3expdp system/oracle dumpfile=cytbs.tbs.metadata transport_tablespaces=CYTBS

******************************************************************************

Dump file set for SYSTEM.SYS_EXPORT_TRANSPORTABLE_01 is:

  /u01/app/oracle/admin/prod/dpdump/cytbs.tbs.metadata

******************************************************************************

Datafiles required for transportable tablespace CYTBS:

  /u01/app/oracle/oradata/prod/cytbs01.dbf

新主机

4、select * from dba_directories where directory_name='DATA_PUMP_DIR';

5、新主机导入

   impdp system/123qweQWE dumpfile=cytbs.tbs.metadata transport_datafiles='/u01/app/oracle/oradata/orcl/cytbs01.dbf';

   Alter tablespace CYTBS read write;

Rman troubleshooting  rman告警

   Debuge 选项

   Rman 三个阶段Readprocesswrite 读、 处理、 写

   Backup validate database 只进行读 处理 不写 (测试速度)

   V$backup_async_io   v$backup_sync_io  --异步io 同步io视图

   V$session_longops --时间很长的语句

    

rman 看进度

 

Rman 调优

 

BEST PRACTISE

 

1. whole ---> partial                           --部分备份

2. increamtal backups  (block change tracking)  --增量备份

3. multile channel( parallel)                   --多通道 并行

RMAN>run{

ALLOCATE CHANNEL c1 DEVICE TYPE disk;

ALLOCATE CHANNEL c2 DEVICE TYPE disk;

ALLOCATE CHANNEL c3 DEVICE TYPE disk;

backup database;

SQL 'ALTER SYSTEM ARCHIVE LOG CURRENT';

}

-----手工指定通道

BACKUP

INCREMENTAL LEVEL = 0

(DATAFILE 1,4,5 CHANNEL c1)

(DATAFILE 2,3,9 CHANNEL c2)

(DATAFILE 6,7,8 CHANNEL c3);

---

4. Compress                           --压缩

5. section size + parallel            --大文件分块+并行

6.

   a.CONFIGURE BACKUP OPTIMIZATION ON --rman自动优化参数(备了的就不备份了)

   b.backup archivelog delete input;   

   c.backup archivelog;

     delete archivelog until time "sysdate-1/24"  --删除一小时以前的所有归档

   

7. large pool                        --配置大池

8. minnus backup or restore          --最小备份恢复

Use block media recovery for isolated block corruptions.

 

 

十、闪回

 

准备配置:

  Flashback privileges

  Show parameter undo;

      undo_management  string  AUTO

 --显示当前数据库的scn

 

1、闪回查询

   

2、闪回版本查询(两点之间的变化)

 

作业:闪回查询

   create table a(id int);

   insert into a values(1);

   SQL> select current_scn from v$database;

 

CURRENT_SCN

-----------

3615339

update a set id=10 where id=1;

   SQL> select current_scn from v$database;

CURRENT_SCN

-----------

3615366

--闪回查询

select * from a as of scn 3615339 where id=1;

--闪回版本查询

select versions_xid,VERSIONS_STARTSCN,VERSIONS_ENDSCN,id from a  versions between scn 3615339

       and 3615366;

 

--闪回查询 做了ddl语句就不能生效

          发生段的收缩 不能查询

3、闪回事务查询

  (分析作用)(里面有undo sql

  Flashback_transaction_query --闪回事务查询表

  select * from FLASHBACK_TRANSACTION_QUERY where table_name='REGIONS';

  需要开附加日志

   Alter database Add supplemental log data;

  闪回事务

   select * from FLASHBACK_TRANSACTION_QUERY where table_name='A';

   Dbms_falshback.transaction_backout (调用闪回存储方法)

      declare

        xids sys.xid_array;

      begin

        xids := sys.xid_array('04000D00A9050000');

        dbms_flashback.transaction_backout(1,xids,options=>dbms_flashback.nocascade);

      end;

     /

   注意:闪回事务不自带提交

         Write-after-writer    多个事务更新,闪回前一个的时候

         Primary key depend  多个事务delet-insert,主键冲突 (对delete事务闪回)

         Foreign key depend  多个事务多张表 表一insert 表二引用表一的insert数据(对表一的事务闪回)

   Cascade(级联)、nocascadenocascade_forcenonconflict_only(闪回不冲突的)

  

作业:闪回事务

    --打开闪回事务日志(日志会变大)

Alter database Add supplemental log data;

--查询闪回信息记录表

select * from FLASHBACK_TRANSACTION_QUERY where table_name='A';

--输入xid闪回事务

      declare

        xids sys.xid_array;

      begin

        xids := sys.xid_array('0200180082100000');

        dbms_flashback.transaction_backout(1,xids,options=>dbms_flashback.nocascade);

      end;

     /

    --进行事务提交

 Commit;

4、闪回表

   In-place

   相关权限

   Alter table table_name enable row movement;  --开启表移动

   

  select current_scn from v$database;

  update hr.regions set region_name='sc';

  commit;

  flashback table hr.regions to scn 2476463;

   自带提交

注意:统计信息不能闪回

      操作时要锁表

      系统表不能闪回

      Ddl 不能跨越

      产生undo redo data

5、闪回drop

  Recycle bin(放在回收站)(默认开启)show parameter recycle

  Show recyclebin;

  Flashback table emjployes to before drop;

  flashback table regionscp to before drop rename to oldregionscp;

  flashback table "BIN$lT6QVYSWd+DgU/r+Gawd/A==$0" to before drop;

 

  Show recyclebin;--显示回收站信息

  Dba_free_space  ---数据库空间

  Purge table regionscp; --清理回收站最老的数据

  System\sys 用户操作没有回收站

6、闪回数据归档

  Temporal history11g

   把某个表的操作归档到表中(闪回归档)

   1、建表空间

   2、创建闪回归档

   3、表关联数据归档

   create tablespace fdatbs datafile '/u01/app/oracle/oradata/orcl/fdatbs01.dbf' size 10m;

   CREATE FLASHBACK ARCHIVE fda1 TABLESPACE fdatbs  QUOTA 10M RETENTION 1 YEAR; 

   ALTER TABLE HR.REGIONS FLASHBACK ARCHIVE fda1;

   

   表做了闪回归档,就不能删除了

  Temporal validity and history(12c)--数据自动归档

  作业:闪回表、闪回drop、配置某表的闪回归档

     --闪回表

        create table hr.cs(id int,name varchar2(20));

        insert into hr.cs values (1,'zhangs');

        SQL> select current_scn from v$database;  --查询scn号

 

       CURRENT_SCN

        -----------

        3736392

         insert into hr.cs values (2,'zhangs');     

         Commit;

         Alter table hr.cs enable row movement;         --配置行移动

         flashback table hr.cs to scn 3736392;    --闪回表到某个点

   

--闪回drop

    drop table hr.cs;

    Show recyclebin;                           --查看回收站      

    Flashback table hr.cs to before drop;           --闪回表

        

--配置某表的闪回归档

    

      create tablespace fdatbs datafile '/u01/app/oracle/oradata/prod/fdatbs01.dbf' size 10m;  --创建表空间

      CREATE FLASHBACK ARCHIVE fda1 TABLESPACE fdatbs  QUOTA 10M RETENTION 1 YEAR; --创建闪回归档

      ALTER TABLE HR.cs FLASHBACK ARCHIVE fda1;                             --表关联数据归档

      ALTER TABLE HR.cs no FLASHBACK ARCHIVE ; --撤销关联

    

7、闪回数据库

   逻辑闪回 rman物理还原

   

     前提: 开闪回区

            开归档

     开闪回数据库

         Shutdown immediate;

         Starup mount;

         Show parameter recover;

         archive log list;

         Alter database flashback on;

         Alter database open;  

      使用:

         select current_scn from v$database;

         Drop user hr cascade;  --删除用户及表

         Startup mount force;

         Flashback database to scn 3750985;

         Alter database open read only; --只读模式后可以多次进行闪回

         Alter database open resetlogs;

         --查询最早闪回时间

          

  Guaranteed restore points --强制还原点

     

 十一、managing spaces

      Block space management

       (ASMM)

     

      pctfree 作用) Row chain/row migrate 行连接(insert时) 行迁移(update

       Select chain_cnt,avg_row_len from user_tables where table_name='hr.cs';

       analyze table hr.cs compute statistics;--表分析

       alter table hr.cs move ;  --表移动可以消除块和指针分离的情况,提高查询速度 (表迁移索引会失效)

   Segments

   Understanding deferred segment creation --延迟段分配

   Show paramater defer; --参数

   下面三类不能延迟段分配:

     Iot表 (索引表)

     分区表

     字典类型表空间的表

   Alter index test_1 rebuild online;--在线建索引,不加online会锁表

     Unusable 不分配表空间,回收空间

  Table compression--表压缩

     Direct-path insert operations --基本压缩(一次性导入,其他在次insert没什么用)(直接路径加载)

         -默认-pctree=0 --内容不经常变得表

 

     Advanced row compression for dml dperations --高级压缩,所有的操作都可以(写数据要慢点、很耗cpu

         (12c语法

   

       高级压缩使用情况:

         堆表、分区表、nested table

       不能用情况:

          多余255列的表、基本压缩不能删除列,高级压缩可以删除列

   Select * from dba_segments;--段表

      

作业表压缩:基本压缩、高级压缩

      create table big as select * from dba_objects;

      insert into big select * from big;

      commit;

      create table nocompresst as select * from big;

      create table compresst COMPRESS BASIC as select * from big;

      create table compresst_oltp ROW STORE COMPRESS ADVANCED as select * from big where 1=2;

      insert into compresst_oltp select * from big;

      commit;

      --查看

      select segment_name,bytes/1024/1024 from dba_segments where segment_name in ('NOCOMPRESST','COMPRESST','COMPRESST_OLTP');

 

Tablespace monitoring --表空间监控

Shrinking segments 

      --收缩表空间

   操作(不能对sys表空间的表进行操作)

     Alter table table_name enable row movement;--行移动

     Alter table table_name shrink space compact;  --移数据

     Alter table bable_name shrink space;  --移水位线(锁表)

Rowid 变动 索引失效

--shrinking

  自动维护索引

  不会触发 触发器

  节省空间

  Iot表 建议重修rebuit二级索引

 Assm segments 自动表空间管理

段顾问(只能用在自动段空间管理的表空间)

   自动跑

 手动运行段顾问

 --分析表是否有空的高水位线

   variable id number;

begin

  declare

  name varchar2(100);

  descr varchar2(500);

  obj_id number;

  begin

  name:='advisor_cy test3';

  descr:='Segment Advisor Example';

 

  dbms_advisor.create_task (

    advisor_name     => 'Segment Advisor',

    task_id          => :id,

    task_name        => name,

    task_desc        => descr);

 

  dbms_advisor.create_object (

    task_name        => name,

    object_type      => 'TABLE',

    attr1            => 'HR',

    attr2            => 'BIGT',

    attr3            => NULL,

    attr4            => NULL,

    attr5            => NULL,

    object_id        => obj_id);

 

  dbms_advisor.set_task_parameter(

    task_name        => name,

    parameter        => 'recommend_all',

    value            => 'TRUE');

 

  dbms_advisor.execute_task(name);

  end;

end;

/

 

tablespace-based:

 

object_type:TABLESPACE

attr1: <tablespace-name>

attr2: NULL

----查看分析结果

col task_name format a10

col segname format a10

col partition format a10

col type  format a10

col message format a30

select af.task_name, ao.attr2 segname, ao.attr3 partition, ao.type, af.message

from dba_advisor_findings af, dba_advisor_objects ao

where ao.task_id = af.task_id

and ao.object_id = af.object_id

and lower(af.message) like '%shrink%';

 

作业:创建一个大表,删除数据 分析是否有空高水位线,进行shrink

     create table hr.big as select * from dba_objects;

     insert into hr.big select * from hr.big;

     Commit;

     Delete hr.big;

     ---进行分析

   variable id number;

begin

  declare

  name varchar2(100);

  descr varchar2(500);

  obj_id number;

  begin

  name:='advisor_cy test3';

  descr:='Segment Advisor Example';

 

  dbms_advisor.create_task (

    advisor_name     => 'Segment Advisor',

    task_id          => :id,

    task_name        => name,

    task_desc        => descr);

 

  dbms_advisor.create_object (

    task_name        => name,

    object_type      => 'TABLE',

    attr1            => 'HR',

    attr2            => 'BIG',

    attr3            => NULL,

    attr4            => NULL,

    attr5            => NULL,

    object_id        => obj_id);

 

  dbms_advisor.set_task_parameter(

    task_name        => name,

    parameter        => 'recommend_all',

    value            => 'TRUE');

 

  dbms_advisor.execute_task(name);

  end;

end;

/

--查看结果

col task_name format a10

col segname format a10

col partition format a10

col type  format a10

col message format a30

select af.task_name, ao.attr2 segname, ao.attr3 partition, ao.type, af.message

from dba_advisor_findings af, dba_advisor_objects ao

where ao.task_id = af.task_id

and ao.object_id = af.object_id

and lower(af.message) like '%shrink%';

--进行shrink

 Alter table hr.big enable row movement;--行移动

 Alter table hr.big shrink space compact;  --移数据

 Alter table hr.big shrink space;  --移水位线(锁表)

Managing Resumable space allocation 

    --空间不够暂停jobs 可唤醒表空间管理

  操作

   Show parameter resum;

   Alter session enable resumable timeout 3600;

   Select * from dba_resumable; --查看等待多少时间

   

   使用唤醒表空间的情况

     The following operations are resumable:

      Queries: SELECT statements that run out of temporary

      space (for sort areas)

       DML: INSERT,

       INSERT UPDATE,

       UPDATE and DELETE statements

       The following DDL statements:

       CREATE TABLE ... AS SELECT

       CREATE INDEX

       ALTER INDEX ... REBUILD

       ALTER TABLE ... MOVE PARTITION

       ALTER TABLE ... SPLIT PARTITION

       ALTER INDEX ... REBUILD PARTITION

       ALTER INDEX ... SPLIT PARTITION

       CREATE MATERIALIZED VIEW

 

Automat tasks --自动任务

   Schedule(时间) ---job ---program(任务块)

   SELECT t.* FROM  dba_jobs t; --查看所有的job

--创建job任务

   1. create program

 

BEGIN

DBMS_SCHEDULER.CREATE_PROGRAM(

program_name =>'my_pro1',

program_action =>'begin

              insert into hr.job_test1 values(sysdate);

              commit;

           end;',

program_type =>'PLSQL_BLOCK',

number_of_arguments =>0,

comments =>'insert sysdate into table',

enabled =>TRUE);

END;

/

 

2. create schedule

BEGIN

dbms_scheduler.create_schedule(

repeat_interval => 'FREQ=SECONDLY;INTERVAL=30',

start_date   => sysdate,

comments => 'Start Every 30 seconds',

schedule_name    => 'my_sch1');

END;

/

3. create job

BEGIN

dbms_scheduler.create_job(

job_name => 'my_job1',

program_name=> 'my_pro1',

schedule_name    => 'my_sch1',

comments=> 'insert sysdate into table',

enabled=> TRUE);

END;  

/

   Job chain -很多job 链接在一起

Resource manager --资源管理器

   多个系统使用同一个数据库

   作用对象 资源使用者组

      资源计划

   Using advanced scheduler features

 

 

 

  Thresholds

Memory manager 

 Amm-->asmm-->手动管理方式

 

  --内存管理

   Amm (automaitc memory managerment)         --自动管理所有内存

     Show parameter memory

      Memory_max_target  --最大限制,不给就以下面为准

      Memory_target   --以这个参数为准(启用了amm)(60-80%

   Asmm (automatic shared memory management)   --自动管理sga内存

      Memory_target = 0

Show parameter sga --开启asmm

   Sga_max_size

   Sga_target    ---设置memory80%

 

 Log buffer --修改后要重启实例(一般不改)

Pga_aggregate_target --pga参数(没什么用)

-------查看内存管理

先看memory  amm

    再看sga  asmm

----如果memorysga 都设置了值 sga设置的值为最小值

 Amm-->asmm-->手动管理方式

 重置内存参数,修改spfile

Huge page --开大页(2M)

  设置

关闭ammmemory

Sga_max_size

1、算页 Sga_max_size/2 + 100

2、打开限制

  More /etc/security/limits.conf

   Oracle soft memlock -1

   Oracle hard memlock -1

3、设置参数

      More /etc/sysctl.conf

       vm.nr_hugepages = ‘算出的页大小’

Sysctl -p (配置大页 很慢) --建议重启主机

查看大页

  grep -i huge /proc/meminfo

  Ipcs

Rac: off transparent hugepage --rac 关闭透明大页 

作业:开启huge page

   Show parameter target

   --关闭amm

   Alter system set memory_target=0;

   --计算大页个数

   Sga_max_size/2 + 100 = 260

   --打开限制,添加参数

    # vi /etc/security/limits.conf

          oracle  soft  memlock -1

          oracle  hard  memlock -1

   --设置参数,添加配置

      # tail -n 1 /etc/sysctl.conf

              vm.nr_hugepages = 260  [sysctl -a --查找参数]

   --reboot host and review

Install grid

优点:

  1、进程重启

  2、资源放asm

Oracle restart

Install db software

Dbca

Install grid software

Register to cluster software

1、建目录

  mkdir -p /u01/app/grid/12.1 /u01/app/grid_base

2、解压

3、Root

   xhost +

   Echo $DISPLAY

   Su - oracle

Export DISPLAY=:0

4、安装

  执行root命令时注意。

5、环境变量

6、注册

   加数据库、加监听(先关监听)

   srvctl add database -db prod -oraclehome /u01/app/oracle/product/12.1.0/dbhome_1

   Lsnrctl stop

   srvctl add listener

7、集群软件管理数据库

   srvctl start database -d orcl --启动数据库  

   srvctl status database -d orcl

   crsctl stat res -t

   select open_mode,status from v$database,v$instance;

   

Asm

  Raw(udev)

    http://www.xuwang.online/index.php/archives/124/

  Asmlib

asmca

 

冗余级别

  High     (3)

  Normal    (2)

  Externam(none)  (1)

 

Rebalancepower--加磁盘到组 oracle会自动平衡数据

删除盘 自动迁移数据到其他盘

Failgroup 失败组(不同磁盘分到同一个组)

 

Grid 实例

   Sqlplus / as sysasm

       V$asm_disk \ V$asm_diskgroup

       Show parameter asm_dis; --默认查找磁盘路径

 

--统计信息收集(系统定时晚上收集)(即字典对表信息的显示 如表多少行)

--手动收集统计信息(查询慢可以进行统计信息收集)

http://www.xuwang.online/index.php/archives/146/

 

作业:手动收集统计信息

  select * from DBA_AUTOTASK_CLIENT;

  select owner,table_name,num_rows from dba_tables where

   table_name='REGIONS';

  select count(*) from hr.regions;

  insert into hr.regions values(13,'1');

  commit;

  --查看统计信息没有变

   select owner,table_name,num_rows from dba_tables where

   table_name='REGIONS';

  --收集表统计信息

   exec dbms_stats.gather_table_stats(ownname => 'HR',tabname => 'EMPLOYEES',estimate_percent =>   10,method_opt=> 'for all indexed columns') ;

   --再次查看统计信息变化了

   select owner,table_name,num_rows from dba_tables where

   table_name='REGIONS';

Awr

  Mmon-->60minutes -->awr

--查看快照

  Select * from Dba_hist_snapshot

--拍摄快照(默认快照8天)

  

--基线(一段时间的快照集合)

生成awr 报告

  --配置起始快照位置

 @?/rdbms/admin/awrrpt.sql

 

Addm

  --monitor

--识别和修复不可用的对象

  

Cdb pdb

  http://www.xuwang.online/index.php/archives/46/

  

 

posted @ 2020-07-04 20:03  苍茫宇宙  阅读(1149)  评论(0编辑  收藏  举报