OCP笔记部分整理-学习参考

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:
  1.   database
    2.  instance
    3.  session
    4.  process
    5.  table
    6.  index 
    7.  transaction (事务)
    8.  lock
    9.  cursor
    10.  awr(auto workload repository)

    11.  service
    12.  data guard
    13.  rac

    查询服务器主机名:
    select host_name from v$instance;

    查询服务器IP
    select sys_context ('userenv','ip_address') from dual;

    创建或配置数据库:dbca
    net manager 调用:netmgr
    emca创建数据库
    手动创建数据库:emca -config dbcontrol db -repos create

    1\database:

    查看控制文件:
    select * from v$controlfile;

    查看数据文件:
    select * from dba_data_files;
    数据文件不包括临时文件

    日志文件:
    select * from v$log;
    select * from v$logfile
    切换日志文件:
    alter system switch logfile;

    参数文件:
    (server parameter file)spfile
    show parameter spfile

    口令文件:password file 
    select * from v$pwfile_users
    重要

    2\instance:

    oracle 五大进程:
    select * from v$process
      1.pmon( process monitor)
      2.smon(system monitor)
      3.dbwr(database write)
      4.lgwr(log write)
      5.ckpt(checkpoint)


    oracle 启动的几个状态:
    正常启动顺序:
    启动实例:instance ,读取系统参数文件
    读取控制文件
    打开数据库
    nomount -- mount-- open

    startup  open
    startup force (强制重启,模仿停电试验)

    shutdown == shutdown normal
    shutdown immediate
    shutdown abort(停电类似)==startup force
    shutdown transactional


    创建表空间:


    关于sys用户参数:
    show parameter O7
    里面有一个属性为false 如果更改为true就可以不需要as sysdba 连接。

    os认证:
    关于登录的"/ ",操作系统认证,省缺状态下只可以在数据服服务器生效。

    1、windows屏蔽操作系统认证:去掉ora_dba组里的相对应用户
    即可。
    2、更改E:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\tnsnames.ora下的文件

    关于服务命名与监听:
    show parameter service_name

    C:\>tnsping orcl 解释服务命名

    更改数据文件大小:
    SQL> alter database datafile 9 resize 100m;
    ntfs 最大的数据文件大小为32GB

    更改数据文件大小自动扩展:
    SQL>alter database datafile 9 autoextend on next 5m;每次增加5m

    表空间可以有多个数据文件:
    SQL> alter tablespace ming_tbs add datafile 'E:\ORACLE\ORADATA\MING_TBS2.DBF' si
    ze 2048m;

    表空间脱机:
    alter tablespace test2 offline;
    alter tablespace test2 onine;
    表空间只读:
    alter tablespace test2 read only
    更改为online
    alter tablespace ming_tbs read write

    删除表空间:
    drop tablespace test;
    删除表空间的同时删除表的内容与数据文件
    drop tablespace test including contents and datafile;

    表空间重命名:
    alter tablespace test2 rename to test;
    表重命名:
    rename table1 to table_1;

    清空回收站:purge recyclebin;

    查看数据库用户:
    select * from dba_users;
    修改数据库默认表空间,表间是由数据段组成
    alter database default tablespace test;
    alter user test default tabledpace test;
    一个用户能使用多少表空间不是通过权限控制quota
    quota unlimited 
    临时表空间如临时文件,虚拟内存,linux下的交换表空间
    创建临时表空间:
    create temporary tablespace temp1 tempfile 'e:\oracle\tem_f.dbf' size 10m
    创建用户同时指定其临时表空间:
    create user test identified by test default tablespace test temporary tablespace temp1 quota 10m on test;
    删除表空间指定的数据文件:
    alter tablespace test drop datafile 5;


    用户:
    创建用户时指定下次登录时需改修密码:
    cteate user test identified by test5 default tablespace test temporary tablespace temp1 password expire(过期);
    锁定用户:
    create user test identified by test5 default tablespace test temporary tablespace temp1 account lock;
    创建外部验证用户:
    create user "pgm/pgm-pc" identified externally;(操作系统用户验证)用户一定要用双引号,且要大写。

    权限(privilege):

    1、系统权限system
    SQL>select * from system_privilege_map (系统权限表)
    SQL>select * from dba_sys_privs where grantee='test'  查看一个用户拥有的系统权限(重要,常用)
    SQL>grant create any table to test;授予可以在其它表空间创建表,注意此权限较大,如test用户可以创建test1用户的表。
    create any table 
    unlimited tablespace 
    drop any table 

    2、对象权限 object
    SQL>select * from dba_tab_privs where grantee ='test' ;查看用户拥有的对象(表)权限 (重要,常用)
    授予用户对表t的相关权限:
    SQL>grant select ,insert,updata,delete on t to test;
    SQL>grant all on test1 to test  ;把关于test1所有的对象权限授予给test用户。
    SQL>grant all on test1 to test grant option (实现权限传递)
    收回权限revoke:
    SQL>revoke all on test1 from test 

    oracle 默认是不能权限传递

    角色(role):
    SQL>select * from dba_roles;
    SQL>create role role_test;创建角色
    SQL>grant create table,create session,create view to role_test;授予角色上述权限
    查看某个角色拥有哪些权限:
    SQL>select * from dba_role_privis where grantee='orle_test'
    授予用户某个角色:
    SQL>grant role_test to test; 

    控制用户资源使用:

    profiles 默认:用户密码输错10次被锁定
    创建用户时指定默认profiles
    SQL>create user test identified by test profile default; 
    修改用户profile
    SQL>alter user test3 profile profile_test;
    指定profiles 时需要注意设置以下参数为true时才可生效:
    show parameter limit
    SQL>alter system set resource_limit=true;

    例外:set time on 
    set time off

    关于SCHEMA.
    SQL>grant SELECT_GATALOG_ROLE to test1;
    授予查看视图等 权限

    查看某个用户所拥有的表:
    select * from dba_tables where owner = 'MING'

    修改表的列的属性:
    SQL>alter table tt modify emp varchar2(10);
    增加列:
    SQL>alter table tt add d int;

    增加表约束:
    alter table emp add constraint pk1 primary key (id);
    主键约束与唯一约束区别:一个可以为空,一个不可以为空

    创建check约束(男代表1,女代表0):
    SQL>alter table emp add constraint chk_t check (sex in ('0','1'));
    创建check约束,sal在1500与100000之间数值。
    SQL> alter table tt add constraint chk_tt check (sal >= 1500 and sal <=100000);

    添加非空约束:
    alter table tt add constraint not_null check (id is not null);

    not null 为列级约束,
    主键,外键,唯一,检查约束都为表级约束。

    查看某个用户的约束;
    select * from dba_constraints where owner = 'MING'

    视图(view):
    查看某个用户下拥有的视图:
    select * from dba_views where owner = 'MING'

    复杂视图与简单视图(可在视图里插入数据操作)
    创建一个复杂视图:
    create view or replace v$empd as 
    select t1.empno,t1.ename,t2.dname,t1.job,t1.hiredate,t1.sal from emp t1 join dept t2 on (t1.deptno=t2.deptno)
    创建视图同时指定为只读:
    create view v$v1 as 
    select * from emp with read only

    索引(index)
    1、b-tree (balance)平衡树
    2、bitmap
    查看某用户下的索引:
    select * from dba_indexes where owner = 'SCOTT'

    研究oracle时用的更改 session命令:
    SQL>alter session set events 'immediate trace name treedump level 12190(对象编号)'

    drop table tt purge;删除一个表不放到回收站里

    plsql:

    glogin.sql 初始化文件添加以下:
    set serveroutput on 

    procedure

    第四天 录像16\17先跳过,找一些关于PL/SQL相关资料再补一下, 42分


    关于帐户安全性:
    授予表为公共表:
     grant all on emp to public;
    撤销操作:
    revoke all on emp from public;

    revoke execute on utl_file from public; 收回执行权限

    关于审计:

    show parameter audit  查看上述参数,windows与linux不同

    启用审计,修改下述参数:
    alter system set audit_trail=db_extended scope=spfile;

    1、权限审计
    创建审计:
    audit  create session 所有用户都审计
    audit create session by ming  只审计ming用户
    删除审计:
    noaudit create session

    查看审计权限视图:
    select * from dba_priv_audit_opts; 
    审计日志视图:
    select * from dba_audit_trail

    2、对象审计:
    audit select on ming.emp;
    audit select on ming.emp by session;默认  针对同一个session
    audit select on ming.emp by access whenever successfull

    3、语句审计 

    audit table by ming审计用户ming关于表的操作

    查看表的审计日志:
    select * from dba_obj_audit_opts; 

    4、oracle提供的审计包:
    audit all  by emp;
    查看日志:
    select * from dba_stmt_audit_opts;

    audit all on default; 审计所有,只对创建其之后的对象生效
    查看日志:
    select * from all_def_audit_opts;

    5、例外:
    创建一个审计策略:
    execute
    dbms_fga.add_policy(
    object_schema=>'ming',
    object_name=>'emp',
    policy_name=>'audit_emp',
    audit_condition=>'empno=7900',
    audit_column=>'ename',
    handler_schema=>'secure',
    enable=>true,
    statement_types=>'select'
    );



    关于服务命名:
    配置时主要看lsnrctl里面的状态:ready 的肯定是能连接,unknow未必能连接。

    查看数据库是共享还是专用模式:
    show parameter shared
    如果shared_servers为大于0说明支持共享模式
    数据库默认连接类型选择共享模式,如果共享与专用共存时。

    研究进程时用的查看sid
    selelct sid from v$mystat where rownum=1;

    select server from v$session where sid ='??';


    关于无效对象处理:
    查看无效对象:
    select * from dba_objects where status='INVALID'

    HWM:(high water mark) 高水位

    分析sql语句执行:
    SQL>set autotrace traceonly
    SQL>analyze table t1 compute statistics ;分析表

    修改索引:
    alter index idx_t rebuild;重建索引
    alter index idx_t rebuild online; 在线重建索引,不影响insert updata delete 执行。

    sql>exec dbms_stats.gather_table_stats('sys','T1');
    关于上述包dbms_stats 收集统计信息

    undo表空间

    创建undo表空间
    create undo tablespace undo002 datafile ' e:\oracle\datafile\undo002.dbf' size 100m autoextend off next 20m;
    查看实例使用哪一个undo表空间:
    SQL>show parameter undo
    查看undo段:
    select * from dba_rollback_segs;
    select * from v$undostat
    每十分钟纪录一个
    select * from v$sql;

    block 阻塞
    SQL> show parameter db_block

    关于锁:lock
    select * from v$lock
    select * from v$locked_object  锁的对象

    TX:ROW 模式为:6 排他的 行级锁
    TM:TABLE  3 表级锁共5种:RS、 RX、 S、 SRX、 X 
    SQL>lock table t in exclusive mode ; x锁模式,死锁
    注:请不要手动随便加锁,数据库会自动所需加锁

    deadlock:
    指的是应用程序里的死循环等


    收集统计信息:
    select * from dba_scheduler_jobs   每晚十点系统的一个GATHER_STATS_JOB 任务
    select * from dba_scheduler_window_groups  

    查看等待session :
    select * from V$session_Wait
    select * from v$session_wait_history order by wait_time desc

    关于监控::

    ash:active session history  记录session纪录,每秒纪录一次,插入一次纪录。em里面的ash报告
    select * from v$active_session_history;
    命令下创建ash报告:
    SQL> @E:\oracle\product\10.2.0\db_1\RDBMS\ADMIN\ashrpt.sql

    awr:auto workload repository
    awr的表属于sys用户下,存储在SYSAUX表空间下面
    每一小时收集一次信息,保留7天,以下表可以查看:
    select * from dba_hist_wr_control
    修改其设置(但一般不建议修改):
    SQL>exec dbms_workload_repository.modify_snapshot_settings(retention=>1440,interval=>30);

    命令下创建awr报告:
    SQL> @E:\oracle\product\10.2.0\db_1\RDBMS\ADMIN\awrrpt.sq

    addm: auto database dia
    数据自动诊断建议
    命令下创建addm报告:
    SQL> @E:\oracle\product\10.2.0\db_1\RDBMS\ADMIN\addmrpt.sq

    查看表的大小:
    SQL>select bytes/1024/1024 m from dba_segments where segment_name='T1';
    创建表在指定的表空间中:
    SQL>create table t1 tablespace test as select * from dba_objects;
    SQL>insert into t1 select * from t1;

    关于度量metric:
    select * from dba_outstanding_alerts
    查看度量警告

    启用管理顾问参数:
    SQL> show parameter statistics
    statistics_level  string TYPICAL  当为typical时启用
    查看下述建议视图:
    select * from v$statistics_level


    关于备份:
    1、完全脱机备份
    2、部分脱机备份(只针对表空间操作)
    3、联机部分备份 (可以备份system表空间)
    4、rman备份(联机完全备份)
    5、逻辑备份(exp/imp expdp/impdp)

    sql>show parameter db_reco;(db_recover)
    查看归档备份日志的参数路径信息,包括其大小:默认为2g
    db_recovery_file_dest_size  关于经常出现归档日志超过2G大小问题


    scn : system change number  
    select dbms_flashback.get_system_change_number from dual;

    select file#,checkpoint_change# from v$datafile;
    select file#,checkpoint_change# from v$datafile_header;
    两个作对比查看检查点是否一致,如不是文件需恢复。

    更改某个表空间为热备份:
    alter tablespace users begin backup; (更改后可以联机拷文件)
    alter database begin backup; 更改所有表空间为热备
    查看:
    select * from  v$backup; 主要纪录起始检查点

    拷文件完后:
    alter tablespace users end backup;

    注:上述联机热备产生的日志比其它备份模式较大

    如果出现控制文件需恢复,把旧的控制文件拷来使用需添加以下命令:
    sql>recover database using backup controlfile;(申明控制文件不是最新 的)
    sql>recover database using backup controlfile until cancel;

    sql>alter database open resetlogs; 把 scn折断,当scn有损失时使用,即当联机日志存在时使用。否则用noresetlog

    关于日志文件的备份恢复

    添加一组日志文件:
    SQL> alter database add logfile 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO04.LOG' size 50m;
    (默认)最多只可以有16组日志文件,最少需要2组。

    SQL> alter database drop logfile group 4; 一个group 可能会有多个member;
    当日志文件损坏后,可以新建一组后使用以上命令删除原来的

    给日志文件加一个镜像:
    SQL> alter database add logfile member 'E:\oracle\product\10.2.0\oradata\orcl\log\redo03.log' to group 3;
    当前联机的不能删除
    删除其中一个member:
    SQL> alter database drop logfile member 'E:\oracle\product\10.2.0\oradata\orcl\redo01.log' ;

    关于RMAN备份:
    RMAN>backup archivelog all;   备份归档日志
    检查归档日志:
    rman>crosscheck archivelog all;
    删除过期没用的归档日志:
    rman>delete expired archivelog all;

    RMAN>backup as compressed backupset full database ;
    完全备份,压缩备份集
    RMAN>restore database from TAG=TAG201099342432;
    使用指定备份集来恢复
    SQL>grant connect,resource,recovery_catalog_owner to rman;
    授予上述角色给新建用户RMAN

    RMAN>delete noprompt backup;
    删除备份,磁盘上的文件同时删除。

    关于增量备份:
    RMAN>backup as compressed backupset incremental level=0 database;
    0级备份(完全备份)
    RMAN>backup as compressed backupset incremental level=2 database;
    2级备份,差异备份
    RMAN>backup as compressed backupset incremental level=1 database;
    1级备份,再把前面的2级备份覆盖备份一次,同级别的备份不覆盖

    RMAN>list backup of database summary;
    显示详细的备份信息

    累积备份,关键字:cumulative,同一级别备份将覆盖:
    RMAN>backup as compressed backupset incremental level=1  cumulative database;

    创建脚本:
    rman>create script sc1{
    delete noprompt backup;
    backup as compressed backupset full database;
    backup archivelog all;
    }
    查看脚本,本地脚本:
    rman>list script name
    执行脚本:
    rman不支持直接执行脚本,需放在run里面:
    新建一个sql,把以下内容输入:
    run{execute script sc1};

    当出现有数据块损坏时:

    rman>backup validate database ;

    检验备份,不生成备份文件,与下述命令一样作用:
    c:\>dbv file ='e:\oracle\oradata\test.dbf'

    sql>select * from v$database_block_corruption
    检验完成后,查看有那一些坏块

    块恢复操作(只有rman才可以):
    rman>blockrecover datafile 5 block 275;
    恢复刚才查询到那一个数据文件的那一个块


    关于flashback database闪回(不完全恢复)
    1.检查是否开启flashback:
    sql>select flashback_on from v$database;
    2.如没有开启需在mount状态下执行:
    sql>alter database flashback on;

    闪回表需在mount 状态下执行:
    SQL> flashback database to timestamp to_timestamp('2012/06/18 22:04:58','yy/mm/dd hh24:mi:ss');
    闪回完成后需使用resetlog 打开数据库

    关于flashback  drop;主要针对表删除后闪回
    flashback drop 不能闪回system表空间里面的对象
    sql>flashback table t to before drop;

    sql>show parameter recyclebin ;默认上述参数开启才可以支持闪回表
    查看回收站:
    sql>select * from dba_recyclebin;

    sql>flashback table t to before drop rename to t1;
    如果遇到重名时使用rename
    sql>purge table t ; 清除回收站里的表t
    sql>purge tablespace users ;清除回收站里的user表空间
    sql>purge recyclebin;清空回收站

    闪回到某一个scn:
    sql>select * from t as of scn 84391414;
    sql>flashback table t to scn 34242342;
    注:sys用户不支持闪回。

    例外:
    新建一个数据文件:
    SQL> alter database create datafile 'C:\oracle\product\10.2.0\oradata\orcl\tbs_test.dbf';

    第八天录像1:
    http://tomszrp.itpub.net/post/11835/487501
    关于asm
    1、asmtool管理工具
    2、创建asm储存:
    C:\>asmtool -create E:\asm\disk1 1024
    增加以下服务css:
    C:\>e:

    E:\>cd E:\oracle\product\10.2.0\db_1\BIN

    E:\oracle\product\10.2.0\db_1\BIN>localconfig.bat add


    第八天录像3-5 跳过

    使用oracle 全球支持特性:

    select * from v$nls_valid_values 
    查看支持语言视图

    windows注册表里:HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_ORADB10GDB\NLS_LANG:
    语言,版块,字符集,排序
    LANGUAGE_TERRITORY_CHARACTERSET  SORT 
    alter session set nls_sort ='对应的sort值'
    alter session set nls_language='对应的language值'
    alter ssession set nls_date_format='yyyy/mm/dd hh:mi:ss';  更改日期格式
    注:上述只对当前窗口生效

    修改日期格式:
    alter system set nls_format='yyyy/mm/dd hh24:mi:ss' scope=spfile;
    优先级最低,默认以版块来作日期格式,再到上述参数,如果注册表添加以下,则以下述格式优先
    在注册表编辑
    添加以下键值:nls_date_format     yyyy-mm-dd hh24:mi:ss

    在监听里增加安装机制:
    change_password :
    启用上述密码后,oracle10g是不起作用的,默认可以通过os认证,
    要去除os认证,那么需要在listener.ora文件中添加:
    LOCAL_OS_AUTHENTICATION_[listener name] = OFF
    重启监听后生效

    配置远程监听:
    在tnsnames.ora增加以下:
    LISTENER_R =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.24)(PORT = 1521))
    再设置以下相关参数,主要使用在rac环境中的负载均衡:
    sql>show parameter remote;
    sql>alter system set remote_listener=listener_r;需指定相关参数

    停止远程数据库监听(在上述配置的数据操作):
    LSNRCTL> stop listener_r

    关于em修复:
    c:\>emctl status dbconsole
    c:\>emctl start dbconsole

    em重建:emca -config dbcontrol db -repos recreate


    第九天 录像6  :
    关于使用em建立自动作业:
    打开em---管理----数据库调度程序----作业

    通过上述创建相关作业实现自动运行;
    注意:windows里:OracleJobSchedulerORCL 服务必须启动

    第十天 录像 3
    关于exp/imp 使用:
    注:sys用户下不支持导出!!
    如以sysdba用户导出需加单引号,如:
    C:\>exp 'sys/tiger@orcl as sysdba' file =c:\temp\a.dmp log =c:\temp\a.log owner=scott

    指定scn导出
    C:\>exp 'sys/tiger@orcl as sysdba' file =c:\temp\a.dmp log =c:\temp\a.log owner=scott flashback_scn=984312984

    当遇到磁盘空间问题时挂起操作处理,不作中断处理
    RESUMABLE            遇到与空间相关的错误时挂起 (N)
    C:\>exp system/tiger@orcl  file =c:\temp\a.dmp log =c:\temp\a.log owner=scott resumable=y

    ora-04031错误,常见错误,为sga错误为主!

    例外:非归档模式下当数据文件损坏,没有作任何备份,尝试以下方式打开数据库:offline drop 表示永久删除,而归档模式下可以使用offline
    sql>alter database datafile 5 offline drop;

    传输表空间的使用:
    C:\>exp 'sys/tiger@orcl as sysdba' file =c:\temp\a.dmp log =c:\temp\a.log tablespaces=test transport_tablespace=y
    导入时反转过来 ,但需指定相关数据文件。

    http://jzhil2004.blog.163.com/blog/static/27558504201010553843243/?fromdm&fromSearch&isFromSearchEngine=yes


2012年7月  记



















本文转自pimg200551CTO博客,原文链接:http://blog.51cto.com/pimg2005/1182724 ,如需转载请自行联系原作者





相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
5月前
|
算法 Java 开发工具
合集:编程相关的网站及书籍
合集:编程相关的网站及书籍
|
5月前
|
SQL 存储 NoSQL
数据库原理速览:核心知识集萃与复习指南
数据库原理速览:核心知识集萃与复习指南
47 2
|
5月前
|
C++ 开发者
技术经验分享:dumpbin的使用方法_dumpbin的基础使用
技术经验分享:dumpbin的使用方法_dumpbin的基础使用
255 0
|
6月前
|
存储 分布式数据库 数据库
【软件设计师—基础精讲笔记3】第三章 数据库系统
【软件设计师—基础精讲笔记3】第三章 数据库系统
95 0
|
6月前
|
IDE Java 应用服务中间件
第一章:入门、安装、配置
第一章:入门、安装、配置
|
存储 安全 编译器
【C++系列(合集)】特性多又复杂?不存在!——这篇C++大全直接干碎(超级大全,精讲)(一)
【C++系列(合集)】特性多又复杂?不存在!——这篇C++大全直接干碎(超级大全,精讲)
|
安全 编译器 C++
【C++系列(合集)】特性多又复杂?不存在!——这篇C++大全直接干碎(超级大全,精讲)(二)
【C++系列(合集)】特性多又复杂?不存在!——这篇C++大全直接干碎(超级大全,精讲)
|
存储 编译器 Linux
【C++系列(合集)】特性多又复杂?不存在!——这篇C++大全直接干碎(超级大全,精讲)(三)
【C++系列(合集)】特性多又复杂?不存在!——这篇C++大全直接干碎(超级大全,精讲)
|
Java C#
【c#入门杂选】-带你熟知c#基础知识点《思维导图》
【c#入门杂选】-带你熟知c#基础知识点《思维导图》
171 0