• ORACLE DBA 雜談


    db oracle dba

    已有 1731 次阅读 2009-3-3 22:32 |系统分类:数据库

    ORACLE中客户端连接服务器端常见问题与解决
    http://www.javaeye.com/topic/67440
    要排除客户端与服务器端的连接问题,首先检查客户端配置是否正确(客户端配置必须与数据库服务器端监听配置一致),再根据错误提示解决。下面列出几种常见的连接问题:
    1、 ORA-12541: TNS: 没有监听器
    显而易见,服务器端的监听器没有启动,另外检查客户端IP地址或端口填写是否正确。启动监听器:
    $ lsnrctl start

    C:\\lsnrctl start
    2、 ORA-12500: TNS: 监听程序无法启动专用服务器进程
    对于Windows而言,没有启动Oracle实例服务。启动实例服务:
    C:\\oradim –startup -sid myoracle
    3、 ORA-12535: TNS: 操作超时
    出现这个问题的原因很多,但主要跟网络有关。解决这个问题,首先检查客户端与服务端的网络是否畅通,如果网络连通,则检查两端的防火墙是否阻挡了连接。
    4、 ORA-12154: TNS: 无法处理服务名
    检查输入的服务名与配置的服务名是否一致。另外注意生成的本地服务名文件(Windows下如D:\\oracle\\ora92\\network\\admin \\tnsnames.ora,Linux/Unix下$ORACLE_HOME/network/admin/tnsnames.ora)里每项服务的首行服务名称前不能有空格。
    5、 ORA-12514: TNS: 监听进程不能解析在连接描述符中给出的 SERVICE_NAME
    打开Net Manager,选中服务名称,检查服务标识栏里的服务名输入是否正确。该服务名必须与服务器端监听器配置的全局数据库名一致。
    6、 Windows 下启动监听服务提示找不到路径
    用命令或在服务窗口中启动监听提示找不到路径,或监听服务启动异常。打开注册表,进入HKEY_LOCAL_MACHINE/SYSTEM/Current ControlSet/Services/OracleOraHome92TNSListener项,查看ImagePath字符串项是否存在,如果没有,设定值为D:\\oracle\\ora92\\BIN\\TNSLSNR,不同的安装路径设定值做相应的更改。这种方法同样适用于Oracle实例服务,同上,找到如同HKEY_LOCAL_MACHINE/SYSTEM/Current ControlSet/Services/Oracle ServiceMYORACLE项,查看ImagePath字符串项是否存在,如果没有,则新建,设定值为d:\\oracle\\ora92 \\binORACLE.EXE MYORACLE。
    以上是Oracle客户端连接服务器端常见的一些问题,当然不能囊括所有的连接异常。解决问题的关键在于方法与思路,而不是每种问题都有固定的答案。
    --Oracle 数据字典
    --Oracle 数据字典很多,通常我记不住所有的名字,我们可以用以下SQL去查数据字典的名字
    如:select distinct object_name from dba_objects where object_name like 'user_%';
    --本用户字典
    select distinct object_name from dba_objects where object_name like 'USER_%';
    --系统用户字典
    select distinct object_name from dba_objects where object_name like 'DBA_%';
    --动态字典
    select distinct object_name from dba_objects where object_name like 'V$_%';
    --表
    select * from cat;
    select * from tabs;
    select * from user_tables;
    --视图
    select * from user_views;
    select   text   from   user_views   where   view_name=upper('&view_name');
    --索引
    select * from user_indexes;
    select index_name,table_owner,table_name,tablespace_name,status from user_indexes order by   table_name;
    --快照 select * from user_snapshots;
    select owner,name,master,table_name,last_refresh,next from user_snapshots order by owner,next;
    --触发器
    select * from user_triggers;
    select trigger_name,trigger_type,table_owner,table_name,status from user_triggers;
    --同义词
    select * from syn;
    --序列
    select * from seq;
    select * from user_sequences;
    --数据库链路
    select * from user_db_links;
    --约束限制
    select * from user_constraints;
    select TABLE_NAME,CONSTRAINT_NAME,SEARCH_CONDITION,STATUS from user_constraints;
    --本用户读取其它用户对象的权限
    select   *   from   user_tab_privs;
    --本用户所拥有的系统权限
    select   *   from   user_sys_privs;
    --Oracle系统中的所有用户
    select * from all_users;
    select username from all_users;
    select * from all_users order by user_id;
    --表空间剩余自由空间情况?
    select tablespace_name,sum(bytes),max(bytes),count(*) from dba_free_space group by tablespace_name;
    --数据字典
    select table_name from dict order by table_name;
    --锁及资源信息
    select * from v$lock;
    --不包括DDL锁数据库字符集?
    select   name,value$   from props$ where name='NLS_CHARACTERSET';
    --inin.ora参数
    select name,value from v$parameter order by name;
    --SQL共享池
    select * from v$sqlarea;
    select sql_text from v$sqlarea;
    --数据库

    select * from v$database
    --控制文件
    select * from V$controlfile;
    --重做日志文件信息
    select * from V$logfile;
    --来自控制文件中的日志文件信息
    select * from V$log;
    --来自控制文件中的数据文件信息
    select * from V$datafile;
    --NLS参数当前值
    select * from V$nls_parameters;
    --ORACLE版本信息
    select * from v$version;
    --描述oracle后台进程
    select * from v$bgprocess;
    --查看oracle版本信息
    select * from v$instance;
    select * from product_component_version;


    Oracle DBA 学习与 成长
    http://tylgl.javaeye.com/blog/239857
      一、定位
      oracle分两大块,一块是开发,一块是管理。开发主要是写写存储过程、触发器什么的,还有就是用Oracle的Develop工具做 form。有点类似于程序员,需要有较强的逻辑思维和创造能力,个人觉得会比较辛苦,是青春饭J;管理则需要对oracle数据库的原理有深刻的认识,有全局操纵的能力和紧密的思维,责任较大,因为一个小的失误就会down掉整个数据库,相对前者来说,后者更看重经验。因为数据库管理的责任重大,很少公司愿意请一个刚刚接触oracle的人去管理数据库。
      二、学习方法
      看书、思考、写笔记、做实验、再思考、再写笔记看完理论的东西,自己静下心来想想,多问自己几个为什么,然后把所学和所想的知识点做个笔记;在想不通或有疑问的时候,就做做实验,想想怎么会这样,同样的,把实验的结果记下来。思考和做实验是为了深入的了解这个知识点。而做笔记的过程,也是理清自己思路的过程。学习的过程是使一个问题由模糊到清晰,再由清晰到模糊的过程。而每次的改变都代表着你又学到了一个新的知识点。
      在提问的时候,是不是可以问别人是如何分析这个问题?从哪里可以找到相关的资料?而不是这个问题的答案是什么?授人以鱼不如授人以渔。
      如果是概念上的问题,第一时间可以找tahiti.oracle.com,这里会给你最详细的解释。如果在运行的过程中出了什么错误。可以去metalink看看。如果是想知道事务的处理的经验之谈。可以去asktom。当然。这里只是相对而言。
      三、oracle的体系
      oracle的体系很庞大,要学习它,首先要了解oracle的框架。在这里,简要的讲一下oracle的架构,让初学者对oracle有一个整体的认识。
      1、物理结构(由控制文件、数据文件、重做日志文件、参数文件、归档文件、密码文件组成) 控制文件:包含维护和验证数据库完整性的必要信息、例如,控制文件用于识别数据文件和重做日志文件,一个数据库至少需要一个控制文件数据文件:存储数据的文件 重做日志文件:含对数据库所做的更改记录,这样万一出现故障可以启用数据恢复。一个数据库至少需要两个重做日志文件参数文件:定义Oracle 例程的特性,例如它包含调整SGA 中一些内存结构大小的参数归档文件:是重做日志文件的脱机副本,这些副本可能对于从介质失败中进行恢复很必要。 密码文件:认证哪些用户有权限启动和关闭Oracle例程
      2、逻辑结构(表空间、段、区、块) 表空间:是数据库中的基本逻辑结构,一系列数据文件的集合。 段:是对象在数据库中占用的空间 区:是为数据一次性预留的一个较大的存储空间 块:ORACLE最基本的存储单位,在建立数据库的时候指定
      3、内存分配(SGA和PGA) SGA:是用于存储数据库信息的内存区,该信息为数据库进程所共享。它包含Oracle 服务器的数据和控制信息, 它是在Oracle 服务器所驻留的计算机的实际内存中得以分配,如果实际内存不够再往虚拟内存中写。 PGA:包含单个服务器进程或单个后台进程的数据和控制信息,与几个进程共享的SGA 正相反PGA 是只被一个进程使用的区域,PGA 在创建进程时分配在终止进程时回收
     4、后台进程(数据写进程、日志写进程、系统监控、进程监控、检查点进程、归档进程、服务进程、用户进程) 数据写进程:负责将更改的数据从数据库缓冲区高速缓存写入数据文件 日志写进程:将重做日志缓冲区中的更改写入在线重做日志文件系统监控:检查数据库的一致性如有必要还会在数据库打开时启动数据库的恢复 进程监控:负责在一个Oracle 进程失败时清理资源检查点进程:负责在每当缓冲区高速缓存中的更改永久地记录在数据库中时,更新控制文件和数据文件中的数据库状态信息。归档进程:在每次日志切换时把已满的日志组进行备份或归档 服务进程:用户进程服务。 用户进程:在客户端,负责将用户的SQL 语句传递给服务进程,并从服务器段拿回查询数据。
      5、oracle例程:Oracle 例程由SGA 内存结构和用于管理数据库的后台进程组成。例程一次只能打开和使用一个数据库。
      6、SCN(System Change Number):系统改变号,一个由系统内部维护的序列号。当系统需要更新的时候自动增加,他是系统中维持数据的一致性和顺序恢复的重要标志。
      四、深入学习
      管理:可以考OCP证书,对oracle先有一个系统的学习,然后看Oracle Concepts、oracleonlinedocument,对oracle的原理会有更深入的了解,同时可以开始进行一些专题的研究如:RMAN、 RAS、STATSPACT、DATAGUARD、TUNING、BACKUP&RECOVER等等。
      开发:对于想做Oracle开发的,在了解完Oracle基本的体系结构之后,可以重点关注PL/SQL及Oracle的开发工具这一部分。 PL/SQL主要是包括怎么写SQL语句,怎么使用Oracle本身的函数,怎么写存储过程、存储函数、触发器等。 Oracle的开发工具主要就是Oracle自己的Developer Suite(Oracle Forms Developer and Reports Developer这些),学会如何熟练使用这些工具。
      介绍几本oracle入门的好书oracle官方文档:《concept》上面讲了oracle的体系和概念,很适合初学者看。OCP的教学用书,也就是STUDYGUIDE(SG)。Oracle8i 备份恢复手册Oracle8高级管理与优化Oracle8i PLSQL程序设计Oracle8数据库管理员手册以上书本都是机械工业出版社出版。
    Oracle 11g 固定IP设置 Microsoft Loopback Adapter
    ----控制面板
    ----添加硬件
    ----是,我已连接了此硬件(Y)
    ----添加新的硬件设备
    ----安装我手动从列表选择的硬件(高级)
    ----网络适配器
    ----Microsoft
    ----Microsoft Loopback Adapter
    ----ok,ipconfig
    Oracle11g Data Guard新特點
    http://space.itpub.net/304518/viewspace-348033
    一、物理(Physical)standby新特点
    下面是11g 物理standby数据库几个比较实用的特点。
    1、Physical standby with Real Time Query
    2、加快standby数据库备份的速度
    3、Snapshot Standby

    4、提高Redo Apply的性能
    Oracle11g可以利用并行技术来进行Redo Apply ,提高恢复的速度。
    二、逻辑(Logical)standby的新特点
    1、支持的数据类型更多了。 XMLType data type (最为CLOB存储)

    2、支持下面oracle包和数据加密 支持精细的审计功能和虚拟数据库功能

    3、Fast-Start Failover 更快速执行失败切换,更精细控制触发Failover的事件,比如:可以具某ORA错误号。
    (从Oracle 10g开始需要固定ip地址,利用微软自带内环网卡作固定ip支持)
    体验在WINXP上安装ORACLE11g
    http://www.lupaworld.com/viewthread_31337.html
    http://www.lupaworld.com/bbs/attachment.php?aid=6390
    Oracle_FAQ.chm
    http://techbbs.enet.com.cn/attachment.php?aid=1172
    http://www.oracle.com/technology/documentation/database11gR1.html
    Oracle 启动和关闭
    http://kingrank.javaeye.com/blog/238385
    常用的有:
      1、startup nomount
      非安装启动,这种方式启动下可执行:重建控制文件、重建数据库
      读取init.ora文件,启动instance,即启动SGA和后台进程,这种启动只需要init.ora文件。
      2、startup mount dbname
      安装启动,这种方式启动下可执行:
      数据库日志归档、
      数据库介质恢复、
      使数据文件联机或脱机、
      重新定位数据文件、重做日志文件。
      执行“nomount”,然后打开控制文件,确认数据文件和联机日志文件的位置,
      但此时不对数据文件和日志文件进行校验检查。
      3、startup open dbname
      先执行“nomount”,然后执行“mount”,再打开包括Redo log文件在内的所有数据库文件,
      这种方式下可访问数据库中的数据。
      4、startup,等于以下三个命令
      startup nomount
      alter database mount
      alter database open
      5、startup restrict
      约束方式启动
      这种方式能够启动数据库,但只允许具有一定特权的用户访问
      非特权用户访问时,会出现以下提示:
      ERROR:
      ORA-01035: Oracle 只允许具有 RESTRICTED SESSION 权限的用户使用
      6、startup force
      强制启动方式
      当不能关闭数据库时,可以用startup force来完成数据库的关闭
      先关闭数据库,再执行正常启动数据库命令
      7、startup pfile=参数文件名
      带初始化参数文件的启动方式
      先读取参数文件,再按参数文件中的设置启动数据库
      例:startup pfile=E:\\Oracle\\admin\\oradb\\pfile\\init.ora
      8、startup EXCLUSIVE
      有三种启动方式:
      1)、shutdown normal
      正常方式关闭数据库。
      2)、shutdown immediate
      立即方式关闭数据库。
      在SVRMGRL中执行shutdown immediate,数据库并不立即关闭,
      而是在Oracle执行某些清除工作后才关闭(终止会话、释放会话资源),
      当使用shutdown不能关闭数据库时,shutdown immediate可以完成数据库关闭的操作。
      3)、shutdown abort
      直接关闭数据库,正在访问数据库的会话会被突然终止,
      如果数据库中有大量操作正在执行,这时执行shutdown abort后,重新启动数据库需要很长时间。
    Oracle安装完成后的初始口令
    默认帐号应该是sysdba
    internal/oracle sys/change_on_install system/manager scott/tiger sysman/oem_temp
    Id:sys as sysdba Pwd:sys Id:sys as sysoper Pwd:sys
    Oracle安装完成后的修改口令
    internal/oracle sys/sys system/system scott/tiger sysman/orcl dbsnmp/orcl
    自动重新安装,忘记密码解决方法:
    开始----运行----打开 sqlplusw
    用户名:sqlplus as sysdba
    输入:ALTER USER DBSNMP ACCOUNT UNLOCK;
    注:由于刚才解锁的用户名是DBSNMP,所以这里设置的用户名也是DBSNMP
    Oracle 数据库 11g 中的 ASM 新特性
    http://www.oracle.com/technology/global/cn/products/database/asm/index.html
    http://www.oracle.com/technology/products/database/asm/pdf/11gr1%20asm%20new%20features%20wp%2005-2007.pdf
    Oracle 11g 管理资料档案库已置于安全模式下, 在此模式下将对 Enterprise Manager 数据进行加密。加密密钥已放置在文件 E:\\oracle\\product\\11.1.0\\db_1\\169.254.105.73_orcl\\sysman\\config\\emkey.ora 中。请务必备份此文件, 因为如果此文件丢失, 则加密数据将不可用。
    全局数据库名:orcl 系统表示符sid:orcl 服务器参数文件名:E:\\oracle\\product\\11.1.0\\db_1\\database\\spfileorcl.ora
    查看数据库实例运行情况 : http://localhost:1158/em https://169.254.105.73:1158/em
    web方式登录iSQL*Plus name:system pwd:system name:sys pwd:sys 固定虚拟ip:192.168.116.126
    Enterprise Manager Database Control URL - (orcl) :  https://Lindows-IBM-XP2:1158/em
    http://localhost:5560/isqlplus http://localhost:5560/isqlplus/dba
    http://LindowsXP:5560/isqlplus http://LindowsXP:5560/isqlplus/dba
    Ultra Search URL: http://localhost:5620/ultrasearch
    Ultra Search 管理工具 URL: http://localhost:5620/ultrasearch/admin
    Enteprise Manager 10g Database Control URL: http://localhost:5500/em
    PL/SQL Developer V7.1.1.1339 name:system pwd:system
    http://www.duote.com/soft/3156.html http://www.allroundautomations.com/
    Oracle服务OracleDBConsoleorcl启动失败解决方案
    http://oxidy.javaeye.com/blog/237838
    OracleDBConsole服务不能启动,访问“http://机器名:1158/em”不能进入EM界面,系统事件查看器里面记录“ Agent process exited abnormally during initialization. ”
    网上解决Oracle服务不能启动最多的做法是修改host文件,即%ORACLE HOME%\\db_1\\NETWORK\\ADMIN\\listener.ora文件,修改其中的HOST=***,listener.ora文件中的HOST =***与 系统属性--》计算机名选项卡 中显示的“ 完整的计算机名称:dsideal-db ”保持一致,即将***更改为dsideal-db ,重启计算机,再尝试启动OralceDBConsole服务,发现服务能正常启动,故障排除。
    listener.ora文件内容如下:
    # listener.ora Network Configuration File: C:\\oracle\\product\\10.2.0\\db_1\\network\\admin\\listener.ora
    # Generated by Oracle configuration tools.
    SID_LIST_LISTENER =
    (SID_LIST =
      (SID_DESC =
        (SID_NAME = PLSExtProc)
        (ORACLE_HOME = C:\\oracle\\product\\10.2.0\\db_1 )
        (PROGRAM = extproc)
      )
    )
    LISTENER =
    (DESCRIPTION_LIST =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
        (ADDRESS = (PROTOCOL = TCP)(HOST = dsideal-db )(PORT = 1521 ))#完整的计算机名称;端口号
      )
    )

    解决Oracle.exe占用内存过大的问题
    开始----运行---打开cmd  
    输入 net start 察看服务运行列表
    net stop OracleServiceORCL 停止ORACLE服务
    net start OracleServiceORCL 开始ORACLE服务
    启动Oracle 10g sqlplus 图形界面: 开始---- 运行----sqlplusw
    启动Oracle 10g sqlplus dos 界面: 开始---- 运行----sqlplus
    解决ServerDB(UTF-8)与ClientDB(GBK)之间的字符集不统一的问题:
    开始----运行---打开regedit
    查找 HKEY_LOCAL_MACHINE\\SOFTWARE\\ORACLE\\KEY_OraDb10g_home1
    数值名称(N) NLS_LANG  
    数值数据(V) SIMPLIFIED CHINESE_CHINA.ZHS16GBK
    --查询nls的参数,获得数据库服务器端的字符编码
    1。select * from v$nls_parameters
    NLS_LANGUAGE
    NLS_CHARACTERSET
    2。修改本地环境变量,设置
    NLS_LANG = SIMPLIFIED CHINESE.ZHS16GBK //这个是我们的数据库字符编码
    NLS_LANG = language_territory.charset
    有三个组成部分(语言、地域和字符集),每个成分控制了NLS子集的特性。其中:language 指定服务器消息的语言。
    territory 指定服务器的日期和数字格式。
    charset 指定字符集
    范例:
    c:>   set   nls_lang=simplified   chinese_china.zhs16gbk

    oracle 10G 12154问题解决
    http://blog.csdn.net/liuya1985liuya/archive/2007/09/25/1800188.aspx
    Oracle 10 g .bat文件启动/关闭方法
    文件:net start oracle.bat
    内容:
    net start OracleOraDb10g_home1TNSListener
    net start OracleServiceMYORACLE
    net start OracleDBConsolemyoracle
    net start OracleJobSchedulerMYORACLE
    net start OracleOraDb10g_home1iSQL*Plus
    文件:net stop oracle.bat
    内容:
    net stop OracleOraDb10g_home1TNSListener
    net stop OracleServiceMYORACLE
    net stop OracleDBConsolemyoracle
    net stop OracleJobSchedulerMYORACLE
    net stop OracleOraDb10g_home1iSQL*Plus
    Exception:
    0RA-01034 :   Oracle   not   available.  
    0RA-27101 :   Shared   memory   realm   does   not   exists.
    表空间太小也可能造成数据库连不上,Oracle10g增加SGA_TARGET ,PGA_AGGREGATE_TARGET 语法对付表空间问题, 如果是Oracle8i运行sqlplus,用system登陆,然后键入:startup mount //启动数据库
    Oracle 10g system && sysaux 姊妹表空间
    system 数据库打开后,一定不能被offline,而sysaux表空间offline后则部分功能失效。
    Oracle提供了缺省数据表空间的概念,即使用户不指定,Oracle也不会将用户数据存放在SYSTEM表空间,
    Oracle还将一些无关紧要的系统数据分离到SYSAUX表空间,以使得SYSTEM表空间纯净化。。。。。。。

    Oracle双机热备
    http://windows2008.blog.51cto.com/
    Oracle 11g 冷备份
    开始----运行----sqlplus>>>>用户名:SQL>system as sysdba 密码:system
    Oracle 导入导出功能
    http://huihui2525.javaeye.com/blog/128568
    http://elstage.javaeye.com/blog/262283
    查看表空间的名称及大小
    select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_size
    from dba_tablespaces t, dba_data_files d
    where t.tablespace_name = d.tablespace_name
    group by t.tablespace_name;

    查看表空间物理文件的名称及大小
    select tablespace_name, file_id, file_name,
    round(bytes/(1024*1024),0) total_space
    from dba_data_files
    order by tablespace_name;

    数据导出:
    1 将数据库TEST完全导出,用户名system 密码manager 导出到D:daochu.dmp中
    exp system/manager@TEST file=d:daochu.dmp full=y
    2 将数据库中system用户与sys用户的表导出
    exp system/manager@TEST file=d:daochu.dmp owner=(system,sys)
    3 将数据库中的表inner_notify、notify_staff_relat导出
    exp aichannel/aichannel@TESTDB2 file= d:datanewsmgnt.dmp tables=(inner_notify,notify_staff_relat)
    4 将数据库中的表table1中的字段filed1以"00"打头的数据导出
    exp system/manager@TEST file=d:daochu.dmp tables=(table1) query=" where filed1 like '00%'"
    上面是常用的导出,对于压缩,既用winzip把dmp文件可以很好的压缩。
    也可以在上面命令后面 加上 compress=y 来实现。

    数据的导入
    1 将D:daochu.dmp 中的数据导入 TEST数据库中。
    imp system/manager@TEST   file=d:daochu.dmp
    imp aichannel/aichannel@HUST full=y file=file= d:datanewsmgnt.dmp ignore=y
    上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。
    在后面加上 ignore=y 就可以了。
    2 将d:daochu.dmp中的表table1 导入
    imp system/manager@TEST   file=d:daochu.dmp tables=(table1)


    1.导出:
    $exp usename/password@orcl
    Enter array fetch buffer size: 4096 > 回车
    Export file: expdat.dmp >d:\\ m.dmp 生成导出的文件名
    (1)E(ntire database), (2)U(sers), or (3)T(ables): (2)U > 回车
    Export table data (yes/no): yes > 回车
    Compress extents (yes/no): yes > 回车
    2.导入:
    imp scott/tiger@ccf fromuser=username touser=username file=D:\\m.dmp log=D:\\yingji.log
    导出:
    -- 使用pl/sql developer工具导出用户数据表结构
    tools->export user objects.
    -- 将会导一个只有空表的DMP
    exp user/pwd file=d:\\xx.dmp rows=no;
    -- 建表语句在a.log里面,sqlserver不支持varchar2数据类型
    exp   system/manager   file=c:\\a.dmp   owner=scott   log=c:\\a.log
    imp   system/manager   file=c:\\a.dmp   owner=scott   log=c:\\a.log
    --
    exp file=sapdb0417.dmp userid=euser/euser@sapdb full=y
    导入:
    imp file=suning2.dmp userid=suning_b2c_user/arvato@btcsu full=y
    Oracle shutdown的幾種方式
    http://blog.itpub.net/post/48/25561
    1、shutdown normal
      正常方式关闭数据库。

    2、shutdown immediate
      立即方式关闭数据库。
      在SVRMGRL中执行shutdown immediate,数据库并不立即关闭,
      而是在Oracle执行某些清除工作后才关闭(终止会话、释放会话资源),
      当使用shutdown不能关闭数据库时,shutdown immediate可以完成数据库关闭的操作。  

    3、shutdown abort
      直接关闭数据库,正在访问数据库的会话会被突然终止,
      如果数据库中有大量操作正在执行,这时执行shutdown abort后,重新启动数据库需要很长時間
    --------------------------------------------------------
    shutdown abort 的时候,跟kill 进程是一样的效果
    数据库立即关闭,这个时候文件状态可能不一致
    因为正常关闭数据库会同步校验各文件,使得重新启动的时候文件时间点一致并且不用进行崩溃恢复
    若检查点信息一致,则做崩溃恢复
    若检查点信息不一致(正好在更新文件头)则需要做介质恢复
    这些问题都好处理,最怕的问题是这个时候系统有大量IO,结果这样造成写的突然中断,碰巧造成文件块的逻辑坏块,那麻烦比较大一些,尤其是系统表空间的block损坏

    虽然shutdown abort 出错的几率很小,1000个人可能只有一个人碰到,但是我们还是要小心。
    正确的处理流程是,shutdown immediate ,若数据库迟迟不能down下来,在os上观察IO状况,几乎没有io的时候,另开一窗口shutdown abort ,几乎不会出问题了


    --------------------------------------------------------
    http://www.itpub.net/showthread.php?threadid=180315&pagenumber =
    先用IMMEDIATE来DOWN,实在不行了,看一下数据库文件上没IO了,再用ABORT
    ------------------------------------------------------------------------------
    你可以尝试先在系统级杀掉非后台Oracle进程,在连接shutdown immediate就安全多了
    在Oracle8i里,当数据库失去响应以后,你在操作系统上杀掉用户进程后,一般数据库就可以恢复正常了
    -------------------------------------------------------------------------------
    先 shutdown immediate 应该是首选
    然后不行再重新shutdown abort
    其实起不来也是因为os的缘故,在文件正在写的时候出现问题导致文件不一致或者损坏……
    --查询数据文件位置
    select name from v$datafile;
    select file_name,status from dba_data_files;
    E:\\ORACLE\\ORADATA\\ORCL\\SYSTEM01.DBF
    E:\\ORACLE\\ORADATA\\ORCL\\SYSAUX01.DBF
    E:\\ORACLE\\ORADATA\\ORCL\\UNDOTBS01.DBF
    E:\\ORACLE\\ORADATA\\ORCL\\USERS01.DBF
    E:\\ORACLE\\ORADATA\\ORCL\\EXAMPLE01.DBF
    --查询控制文件位置
    select * from v$controlfile;
    select name from v$controlfile;
    E:\\ORACLE\\ORADATA\\ORCL\\CONTROL01.CTL
    E:\\ORACLE\\ORADATA\\ORCL\\CONTROL02.CTL
    E:\\ORACLE\\ORADATA\\ORCL\\CONTROL03.CTL
    --查询重做日志文件位置
    select * from v$log;
    select * from v$logfile;
    select member from v$logfile order by group#;
    E:\\ORACLE\\ORADATA\\ORCL\\REDO01.LOG
    E:\\ORACLE\\ORADATA\\ORCL\\REDO02.LOG
    E:\\ORACLE\\ORADATA\\ORCL\\REDO03.LOG
    --关闭数据库进行物理备份
    --SQL>shutdown immediate;
    --拷贝刚查询的数据文件、控制文件、重做日志文件到其他地方以备用
    --拷贝E:\\oracle\\product\\11.1.0\\db_1\\database里所有文件到其它盘
    --拷贝完成
    --SQL>startup
    --ok
    --查询系统参数
    select * from v$parameter;
    select tablespace_name, count(*) from dba_free_space group by tablespace_name;
    SELECT tablespace_name,count(*)chunks,max(bytes/1024/1024) max_chunk
    FROM dba_free_space
    GROUP BY tablespace_name;
    --查询当前会话
    SELECT sid,serial#,username,program,machine,status FROM v$session;
    --查询表空间状态
    --http://www.51cto.com/specbook/301/47525.htm
    select * from dba_tablespaces;
    select tablespace_name,status from dba_tablespaces;
    Oracle数据库日常维护
    http://my.donews.com/oracle/2006/08/18/oracle%e6%95%b0%e6%8d%ae%e5%ba%93%e6%97%a5%e5%b8%b8%e7%bb%b4%e6%8a%a4-dba/
    在Oracle数据库运行期间,DBA应该对数据库的运行日志及表空间的使用情况进行监控,及早发现数据库中存在的问题。
    使系统暂时不产生Redo log
    方法一:
    >sqlplus /nolog
    sql>connect sys/***** as sysdba;
      (*****为sys密码,安装时若没修改默认的是change_on_install)
    sql>shutdown immediate
    sql>startup mount
    sql>alter database noarchivelog
    sql>alter database open
    Oracle 常用SQL查询列表
    http://www.weixiuwang.com/Article/server/tech/200610/22256.html
    Oracle Warehouse Builder 11g 第 1 版使用
    http://www.oracle.com/technology/global/cn/obe/11gr1_owb/owb11g_update_getting_started_intro/lesson1/less1_start.htm
    OCP DBA1学习笔记
    http://bbs.chinaunix.net/thread-852976-1-1.html
    9I 笔记 (ZT)
    http://lyt5664681.blog.163.com/blog/
    新一篇: Oracle数据库的导出和导入
    http://blog.csdn.net/gonghb/archive/2007/10/31/1859868.aspx
    oracle管理SQL查询.doc
    http://www.itpub.net/attachment.php?aid=531311
    ·Oracle财务软件(Oracle Financial)
    ·Oracle制造业软件(Oracle Manufacturing)
    ·Oracle人力资源软件(Oracle Human Resources)
    ·Oracle自动控制软件(Oracle Automotive)
    ·Oracle 商业交易系统(Oracle Exchange)

    ----------------------------------------------------------------------------------------------------------------------------------
    传智播客_ORACLE经典视频教程 学习记录
    http://hi.baidu.com/vjame/blog/item/89130eb3c30c4fa1d9335a14.html

    Oracle 创建用户
    http://gaoran2008.javaeye.com/blog/182798

    create user 你的用户名identified by 密码; grant connect,resource,dba to 连接的数据库;commit;
    sqlplus lanjh/lanjh

    disconn lanjh;
    conn lanjh;

    如何做bat一个简单的自动循环备份的功能
    http://www.itpub.net/viewthread.php?tid=1097384
    ----------------------------------------------------------------------------------------------------------------------------------
    Oracle自动启动和关闭的方法 数据库关闭 dbshut 数据库启动 dbtart
    http://hi.baidu.com/luckyang999/blog/item/832f0f238d418f42ac34deff.html

    for AIX
      方法一:使用加载inittab来启动
      1、利用oracle自己提供的dbstar和dbshut脚本来启动和关闭数据库。
      确认/etc/oratab文件中的对应的实例的最后标志为 Y 。
      例如:ora92:/opt/oracle/app/oracle/ product /9.2:Y
      dbstart将根据这个标志位来启动对应的实例。这个文件是由root.sh创建的。
      可以在/etc或者其他目录下再创建一个脚本来调用dbstart命令。

    #touch dbstart.sh
    # chmod 755 dbstart.sh
    #vi dbstart.sh
    su - oracle -c "$ORACLE_HOME/bin/dbstart"
    su - oracle -c "lsnrctl start "
  • 相关阅读:
    专访京东孙海波:大牛架构师养成记及电商供应链中区块链技术的应用(转)
    Python3 使用 matplotlib 画折线图
    JavaSE(十)之Map总结 (转)
    SciPy 安装不上?
    AI 也开源:50 大开源 AI 项目 (转)
    RabbitMQ的应用场景以及基本原理介绍 【转】
    mysql的水平拆分和垂直拆分 (转)
    MySQL在线大表DDL操作 (转)
    如何在原生工程中引入Cordova工程-for iOS 【转】
    Android 与 js 简单互调
  • 原文地址:https://www.cnblogs.com/Mayvar/p/wanghonghua_201106030137.html
Copyright © 2020-2023  润新知