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 密码;
阅读(1862) | 评论(0) | 转发(0) |