Chinaunix首页 | 论坛 | 博客
  • 博客访问: 215739
  • 博文数量: 40
  • 博客积分: 316
  • 博客等级: 二等列兵
  • 技术积分: 840
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-13 12:39
文章分类

全部博文(40)

文章存档

2014年(2)

2013年(28)

2012年(10)

分类: Oracle

2013-03-07 23:20:31

oracle server=oracle instance + oracle database
oracle 实例:  is a mean to access database, 一个实例只能连 一个数据库, (一个数据库可以有多个实例)
instance= memory+ background process。
process : user 进程 ,  server进程(处理连接), background进程(处理数据库)
database: 数据文件, 控制文件, redo log 文件,  参数文件,归档日志,密码文件。
oracle3大部件:server,instance, database。
------------------------------------------------------------------------
oracle 内存结构
     oracle 内存: sga(每个instance一个,类unix是用共享内存的方式来实现的), pga(每个server process 一个)
     #ipcs
     sql>show sga;

     sga:共享池,database buffer,redolog buffer, large pool, java pool
     注: oracle 9 之后,sga 可以动态改变。
     sql>select component, granule_size from v$sga_dynamic_components;     查看sga分配是的最小值granule是多少,当sga128M,granule=16M.
----------------------
     共享池:存储解析后的sql语句,存储最近的数据。   //作用
     共享池:library cache, data dictionary cache //共享池的大小,由SHARED_POOL_SIZE控制。
----------------------
     data buffer:大小由DB_CACHE_SIZE的值决定。
----------------------
     redolog buffer:大小由LOG_BUFFER的值决定。
---------------------------------------------------------------------------
oracle 进程结构

DBWn:将database buffer 中的东西 写到 database file中。
LGWR:将redolog buffer 中的东西 写到 redolog file中。
SMON:监控垃圾的。
PMON:  监控进程。
CKPT:之前由LGWR来代替其工作。
ARCn:将redolog 写到归档中。(可选进程,但实际中都得选。)
----------------------------------------------------------------------------------------------------------------------------------
oracle 使用:9i之前 sys,默认密码change_on_instal, system默认密码manager
启动oralce:
            #sqlplus /nolog
            sql>conn / as sysdba
            sql>startup
从其他终端连接oracle:        
              sqlplus  system@pass@ip    //需要服务端开启 lsnrctl start 开启
-----------------------------------------------------------------------------------------------------------------------------------
manager oracle instance
查看参数文件:  select name,value from v$parameter;    或者 show parameter  参数名;
可以有多个参数文件,一共有2类的参数文件:PFILE,SPFILE。
PFILE缺省目录:$ORACLE_HOME/dbs.      PFILE命名规范:init+sid.ora
SPFILE:   sql>create spfile from pfile    //从PFILE产生SPFILE
linux下sid与oracle_home变量hash的出一个  unique key  来让系统分配内存sga。
windwos 下sid 是区分数据库的标识。
四个变量:ORACLE_BASE, ORACLE_SID, ORACLE_HOME, PATH
------------------------------------------
修改pfile中的值:   sql>alter system set 参数=值;          //(缺省是scope=both)
                                   sql>alter system set 参数=值 scope=memory| both| spfile  comment='注释' sid=‘具体的sid’;             
                                                                                  //启动的是pfile ,scope只有memory;spfile,scope才有3项。
spfile  可以被rman备份,pfile不能被rman备份。
pfile是从客户端读,spfile是从server端读。
sql>create pfile from spfile         //从spfile创建pfile。
-----------------------------------------
oracle的启动与关闭
sql>startup                       //先找spfilesid.ora->spfile.ora->initsid.ora,如果都找不到则要手动指定:  startup pfile=“pfile文件”
要用别的spfile启动oracle如下:
        在pfile文件中加入spfile=‘spfile文件’;
        startup pfile=“pfile文件”;
oracle启动的4种状态: shutdown,   nomount, mount, open.
sql>conn / as sysdba;
sql>startup nomount;   //此时instance起来了,但是数据库还没有起来。
sql>alter database mount;   //根据spfile中的controlfile,来将instance与database建立联系,此时,database只有管理员可以用。依然是关闭的。
sql>alter database open;   //打开那些数据文件,redo文件等。 如果没有那些文件会报错,需先恢复。
------------------------------------------
sql>alter database 数据库名 mount;
sql>alter database 数据库名 open read only;
--------------------------------------------
进入restrict模式进行维护数据库。
sql>start restrict;     //从启动进入restrict
sql>alter system enable restricted sesson;    //启动后进入restrict
所有的session都在v$session中
sql>desc v$session
踢掉连上来的用户:
sql>select sid, serial#, username from v$session;
sql>alter system kill session 'sid, serical#';
----------------------------------------------------------------
关闭数据库:    close database, umount database,shutdown instance,
shutdown abort|immediate|transactional| nomal.
sql>select addr ,status from v$transaction;               //此试图中有为被commit的东西。
-------------------------------------------------------
日志文件:  alert文件+trac文件(background trace+ user trace)
sql>show parameter dump;    //background_dump_dest 的值来确定alert文件的位置。和backtround trace文件的位置。
sql>show parameter dump;    //user trace的文件位置。  (默认user出错才写到该文件)
        sql>alter session set sql_trace=true;    //使用户的所有动作都写到user trace 文件中。   (已启动的做法。推荐)
        将 SQL_TRACE=TRUE写到pfile/spfile文件中启动。
----------------------------------------------------------
sql>desc dba_users;
sql>select  username, account_status from dba_users;
sql>alter user 用户名 account  unlock;  //解锁用户。
sql>alter user 用户名 identified by 密码;
阅读(1851) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~