Friday, September 2, 2011

Oracle常用命令



一.基础SQL语句

  • 查:select * from employees;

  • 增:insert into employees (Name , Birthday , Location , Salary) values ('hyddd','1984-10-1','guangzhou',999999);

  • 改:update employees set Salary=999999999 where Name='hyddd';

  • 删:delete from employees where name='zhangsan';


更多技巧请参考:SQL基本语句

 

二.PFile,SPFile管理

  • SPFile->PFile:





    • ##用生成对应SID的spfile生成pfile,生成的pfile位置:$ORACLE_HOME/dbs/init$ORACLE_SID.ora
      SQL
      > create pfile from spfile;
      --------
      ##自己指定生成文件的位置
      SQL
      > create pfile='/home/oracle/initorcl.ora' from spfile;



  • PFile->SPFile





    • SQL> create spfile from pfile;




 

三.启动,关闭数据库

  • 启动




    • SQL>startup




  • 关闭





    • SQL>shutdown normal
      SQL
      >shutdown transactional
      SQL
      >shutdown immediate
      SQL
      >shutdown abort




四.修改SGA参数


  • 修改SGA的原则

    1. sga_target <= sga_max_size

    2. SGA加上PGA等其他进程占用的内存必须少于机器物理内存。



  • 命令




    • SQL>alter system set sga_max_size=2048m scope=spfile;
      SQL
      >alter system set sga_target=2048m scope=spfile;
      ##修改SGA的相关参数,只能spfile,然后重启数据库。不能直接scope
      =both!





五.查询Oracle配置参数


  • 命令




    • SQL>show parameter;




  • 具体查询某个Oracle参数,只需输入部分关键字即可,比如:查询sga_target的值。




    • SQL> show parameter sga;

      NAME                                 TYPE        VALUE
      ------------------------------------ ----------- ------------------------------
      lock_sga                             boolean     FALSE
      pre_page_sga                         boolean     FALSE
      sga_max_size                         big 
      integer 2G
      sga_target                           big 
      integer 2G
      SQL
      >







六.生成AWR报告

具体请参考《AWR报告生成》。

 

七.管理Oracle Enterprise Manager

  • 查询OEM状态




    • emctl status dbconsole




  • 启动OEM




    • emctl start dbconsole




  • 关闭OEM




    • emctl stop dbconsole





 

八.redo logfile管理

  • 日志切换时间间隔查询





    • SELECT to_char(b.first_time, 'YYYY-MM-DD HH24:MI:SS'as swtich_time, (b.first_time - a.first_time) * 24 as "switch_interval(hr)" FROM v$log_history a, v$log_history b WHERE a.SEQUENCE# + 1 = b.SEQUENCE# ORDER BY SWTICH_TIME;
      --------
      ##前一百条记录(反序)
      SELECT to_char(b.first_time, 'YYYY-MM-DD HH24:MI:SS'as swtich_time, (b.first_time - a.first_time) * 24 as "switch_interval(hr)" FROM v$log_history a, v$log_history b WHERE a.SEQUENCE# + 1 = b.SEQUENCE# AND ROWNUM <= 100 ORDER BY SWTICH_TIME desc;





  •  查询当前的日志设置情况





    • SQL> col MEMBER for a40
      SQL
      > select * From v$logfile;

      GROUP# STATUS  TYPE                 MEMBER                                   IS_
      ---------- ------- -------------------- ---------------------------------------- ---
               1         ONLINE               /u01/app/oracle/oradata/ORA10G/redo01.log  NO
      2         ONLINE               /u01/app/oracle/oradata/ORA10G/redo02.log  NO
      3         ONLINE               /u01/app/oracle/oradata/ORA10G/redo03.log  NO
      SQL
      >select * from v$log;

      GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM
      ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------
               1          1      13690   52428800          1 NO  CURRENT              192645086 10-FEB-09
      2          1      13689   52428800          1 YES INACTIVE             192633926 10-FEB-09
      3          1      13688   52428800          1 YES INACTIVE             192614912 10-FEB-09





  • 添加两个临时日志组





    • SQL> alter database add logfile group 4 ('/u01/app/oracle/oradata/ORA10G/redo04.log') size 200M;
      SQL
      > alter database add logfile group 5 ('/u01/app/oracle/oradata/ORA10G/redo05.log') size 200M;



  • 将当前的Online Redo Log切换到新增的Redo log group上





    • SQL> alter system switch logfile;
      SQL
      > alter system switch logfile;

      //检查是否已经切换到新增的Online Redo log group上:
      SQL
      > select * from v$log;

      GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM
      ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------
               1          1      13695   52428800          1 YES INACTIVE             192653667 10-FEB-09
      2          1      13694   52428800          1 YES INACTIVE             192653616 10-FEB-09
      3          1      13693   52428800          1 YES INACTIVE             192653593 10-FEB-09
      4          1      13696  209715200          1 NO  CURRENT              192653673 10-FEB-09
      5          1      13692  209715200          1 YES INACTIVE             192653549 10-FEB-09



  • 删除原来的Online Redo Logs





    • SQL>  alter database drop logfile group 1;
      SQL
      >  alter database drop logfile group 2;
      SQL
      >  alter database drop logfile group 3;

      //然后需要手动在对应目录下,手动删除redo logfile文件。
      SQL
      > !
      [oracle@orcal-50 ~]$ cd /u01/app/oracle/oradata/ORA10G/
      [oracle@orcal-50 ORA10G]$rm -rf redo01.log
      [oracle@orcal-50 ORA10G]$rm -rf redo02.log
      [oracle@orcal-50 ORA10G]$rm -rf redo03.log




 

九.归档(Archive)控制

  • 查询归档状态





    • SQL> archive log list
      Database log mode              No Archive Mode
      Automatic archival             Disabled
      Archive destination            USE_DB_RECOVERY_FILE_DEST
      Oldest online 
      log sequence     940
      Current log sequence           942



  • 开启归档





    • SQL> shutdown immediate
      SQL
      > startup mount
      SQL
      > alter database archivelog
      SQL
      > alter database open



  • 关闭归档





    • SQL> shutdown immediate
      SQL
      > startup mount
      SQL
      > alter database noarchivelog
      SQL
      > alter database open





 

十.查询Oracle数据库管理员




  • select username from dba_users;



No comments:

Post a Comment