oracle9i 更改字符集步骤方法
oracle9204更改字符集步骤方法(WE8ISO8859P1->ZHS16GBK):由于我们经常做不同数据库的导出导入时遇到的服务器的字符集不同,导致我们原有的无法正常导入工作,这时需要我们做数据库字符集的更改工作,字符集是在安装数据库时选定的,一旦数据库创建之后,数据库的字符集是不能改变的,如果要改变数据库的字符集, 只有重新创建数据库。但通常也可以在特定的条件下通过一些其他途径来完成字符集的转换(这里强烈建议创建数据库时就要考虑好字符集)[@more@]单字节=>单字节多字节=>多字节且是子集到超集时,可以用al
Oracle9i Flashback Query 闪回查询总结 --- (通过SCN恢复)
SQL> connect testuser/testuser已连接。SQL> select * from testtable2; DEPTNO DNAME LOC---------- ---------------------------- -------------------------- 11 abc 123 45 sales chicago 46 research dallas 47 bbb 777 1 research dallas[@more@]SQL> select dbms_flashback.get_system_change_number fscn from dual; FSCN-
Oracle9i Flashback Query 闪回查询总结 --- (通过时间点恢复)
Oracle9i 中新增的闪回查询(Flashback Query)功能对于误删除或者误更新并且已经commit 了的情况,提供了简便快捷的恢复方法,而在Oracle 提供闪回查询之前,碰到这种情况只 能通过备份来进行基于时间点的恢复,无疑这比闪回查询要麻烦而且费时。 [@more@] 什么是Flashback Query 利用Oracle 多版本读一致的特性,在需要的时候通过undo 来提供所需的前镜像中的数据。 利用这个功能,可以看到历史数据(呵呵,就像时光倒流。月光宝盒?),甚至用历史数据 来修复误操作引起的错误。可以通过指定时
utlrp.sql和catpatch.sql两个脚本的作用
--编译无效对象脚本utlrp.sql$ sqlplus '/as sysdba' @?/rdbms/admin/utlrp.sqlutlrp.sql脚本可以在数据库运行的状态下执行以编译、数据库中的invalid对象. oracle建议在对数据库进行迁移、升级、降级后都运行一遍utlrp.sql以编译无效对象。[@more@]--打完patch后重建数据字典视图脚本catpatch.sql为了保证系统的的数据词典的完整性和有效性,最好的打patch后在migrate状态下运行catpatch.sqlsql> shutdown immediatesql> startup migratesql> @?/rdbms/admin/catpatch.sqlsql> shutdown immediatesql> startup为加快速度,
RMAN参考使用手册(zt)
概述RMAN的概念与体系结构Oracle 9i RMAN的配置运用RMAN进行备份运用RMAN进行还原与恢复RMAN的日常管理RMAN的恢复目录[@more@]一、RMAN的概念与体系结构Recovery Manager(RMAN)是一种用于备份(backup)、还原(restore)和恢复(recover)数据库的 Oracle 工具。RMAN只能用于ORACLE8或更高的版本中。它能够备份整个数据库或数据库部件,如表空间、数据文件、控制文件、归档文件以及Spfile参数文件。RMAN也允许您进行增量数据块级别的备份,增量RMAN备份是时间和空间有效的,因为他们只备份自上次备份以来有变化的那些数据块。而且,通过RMAN提
Oracle9i LGWR 触发条件
.[@more@]1. When a transaction commits2. When the redo log buffer becomes one-third full3. When there is more than a megabyte of changed records in the redo log buffer.4. When timeout occurs(every 3 seconds)5. check point 6. Before the DBWn writes modified blocks in the database buffer cache to the data files.1) 事务提交(commit) 2) redo log buffer 用了三分之一时候3) redo log buffer 中有 1m 的改变记录的时候 4) 3秒 timeout 达到时 (每3秒)5) 检查点6) DBWn写的时候
Oracle9i CKPT 触发条件
(除了正常关db或手动checkpoint 是完全检查点之外,其他都是部分检查点) 1.发生日志组切换的时候2.符合LOG_CHECKPOINT_TIMEOUT,LOG_CHECKPOINT_INTERVAL,fast_start_io_target,fast_start_mttr_target参数设置的时候[@more@]3.运行ALTER SYSTEM SWITCH LOGFILE的时候4.运行ALTER SYSTEM CHECKPOINT的时候 (完全检查点)5.运行alter tablespace XXX begin backup,end backup的时候6.运行alter tablespace ,datafile offline的时候;7.shutdown immediate (完全检查点)
Oracle 控制文件内容
Oracle 9201的控制文件内容列表:控制文件头.. 数据库项.. 检查点进度记录(该项从Oracle8开始引入).. 扩展的数据库项(该项从Oracle9i开始引入).. [@more@] 重做线程项.. 日志文件项.. 数据文件项.. 临时文件记录项(该项从Oracle9i开始引入).. 表空间记录项(该项从Oracle8开始引入).. Rman配置记录项(该项从Oracle9i开始引入).. 日志文件历史记录项.. 脱机范围记录项(该项从Oracle8开始引入).. 归档日志记录项(该项从Oracle8开始引入).. 使用Rman备份数据库的备份集记录项(该项从Oracle8开始引入).. 使用Rman备份数据库的备
全局检查点和增量检查点(zt)
由于Oracle中LGWR和DBWR工作的不一致,Oracle引入了检查点的概念,用于同步数据库,保证数据库的一致性。在Oracle里面,检查点分为两种:完全检查点和增量检查点。下面我们分别介绍这两种检查点的作用: [@more@]1、 完全检查点 在Oracle8i之前,数据库的发生的检查点都是完全检查点,完全检查点会将数据缓冲区里面所有的脏数据块写入相应的数据文件中,并且同步数据文件头和控制文件,保证数据库的一致。完全检查点在8i之后只有在下列两种情况下才会发生: (1、)DBA手工执行alter system checkpoint的命令; (2、)数据
ORA-00106 错误
SQL> shutdown immediateORA-00106: 无法在连接到调度程序时启动/关闭数据库看看官方的解释:ORA-00106 cannot startup/shutdown database when connected to a dispatcher [@more@]Cause(原因): An attempt was made to start or shut down an instance while connected to a shared server via a dispatcher. Action(处理): Reconnect as user INTERNAL without going through the dispatcher. For most cases, this can be done by connect to INTERNAL without specifying a network connect string. 大概意思是重新使用内部用
oracle os认证和口令文件认证的简要解析
oracle登入口令认证方式根据设置的不同而不一样。 [@more@]sqlnet.ora 文件中的内容: # SQLNET.ORA Network Configuration File: D:oracleora92networkadminsqlnet.ora# Generated by Oracle configuration tools.SQLNET.AUTHENTICATION_SERVICES= (NTS)NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME) 。 ------------------------------------------------------------------------------------------------ 环境 windows2000+sp4,oracle9.201 oracle软件以oracle帐户安装 一、sysdba的权限 sysdba(sysoper和nor
如何查看系统是 dedicate 或 MTS 模式
.[@more@]1. alert文件找S000,D000信息,有这样的信息mts 2. lsnrctl services.... 3. select server from v$session='SHARED'存在记录说明是mts的4. select count(*) from v$shared_server 和select count(*) from v$dispatcher如果是mts的话
Like 的优化 (zt)
简单说两句,具体看例子1。尽量不要使用 like '%..%' 2。对于 like '..%..' (不以 % 开头),Oracle可以应用 colunm上的index3。对于 like '%...' 的 (不以 % 结尾),可以利用reverse + function index 的形式,变化成 like '..%'[@more@]代码: -- '建测试表和Index,注意,重点在于带reverse的function index。同时,一定要使用CBO才行……sys@mescp> select reverse('123') from dual;REVERSE('123')--------------------------------3211 row selected.sys@mescp> create table test_like as select object_id,object_name from d
如何捕获问题SQL解决过度CPU消耗问题 (zt)
问题描述:开发人员报告系统运行缓慢,影响用户访问.1.登陆数据库主机使用vmstat检查,发现CPU资源已经耗尽,大量任务位于运行队列: [@more@] bash-2.03$ vmstat 3 procs memory page disk faults cpu r b w swap free re mf pi po fr de sr s6 s9 s1 sd in sy cs us sy id 0 0 0 5504232 1464112 0 0 0 0 0 0 0 0 1 1 0 4294967196 0 0 -84 -5 -145 131 0 0 5368072 1518360 56 691 0 2 2 0 0 0 1 0 0 3011 7918 2795 97 3 0 131 0 0 5377328 152
dbms_stat与analyze的区别
【IT168知识库】 自从Oracle8.1.5引入dbms_stats包,Experts们便推荐使用dbms_stats取代analyze。 理由如下dbms_stats可以并行分析 dbms_stats有自动分析的功能(alter table monitor ) analyze 分析统计信息的不准确some times [@more@]1,2好理解,且第2点实际上在VLDB中是最吸引人的;3以前比较模糊,看了metalink236935.1 解释,analyze在分析Partition表的时候,有时候会计算出不准确的Global statistics .原因是,dbms_stats会实在的去分析表全局统计信息(当指定参数);而analyze是将表分区(局部)的statistics 汇总计算成表全局s
oracle中同一事务内的一致性读
http://download.oracle.com/docs/cd/B19306_01/server.102/b14220/consist.htm#i17881[@more@]oracle的一致性读 一个transaction (事务) A 中的几个SQL , 前面的SQL更新的数据,虽然没有提交,同一个事务中的后面的语句(假设是select)同样可以看到更新后的数据 。 但是不同事务B 中的用户访问 A 事务更新的表看不到更新的数据(因为A transaction没有提交) 。
TX锁(Transaction Lock)分析 (zt)
前两天看到现场alert日志中有一些00060(Deadlock)的告警。查了一下日志文件,发现一些奇怪的现象,比如有些锁在Insert时产生的,有些死锁是对同一个对象产生的。于是在解决这些问题的同时,仔细研究了一下TX锁,总结了产生TX锁的各种情况。[@more@]数据记录被锁 我们知道,Oracle中事务产生的索都是行级锁。也就说,事务在对表做更新操作(Update、Delete)时,只在针对数据块中需要更新的数据记录加锁。这种类型的锁就是我们最常见的锁。看下面的例子:SQL> create table t_lock(a number, b varchar2(20), c char(10)) initr
对Foreign Key的进一步认识 (zt)
读<expert one on one oracle>的时候,看到书上的例子了。这里写一下关于FK跟一点LOCK的东西 . 先建表create table p ( x int primary key );create table c ( y references p );[@more@]往父表里插入两个数据:into p values ( 1 );insert into p values ( 2 );commit;这个时候,限制就看出来了:好,往FK的子表里插入数据。SQL> insert into C values (1);insert into C values (1)*ERROR 位于第 1 行:ORA-02291: integrity constraint (SCOTT.SYS_C001486) violated - parent key notfound看到了吗?子表里不让你往里插入
FIRST_ROWS_n (zt)
在Oracle9i之前,仅有的两个CBO模式是ALL_ROWS以及FIRST_ROWS。传统的FIRST_ROWS SQL最优化的缺点之一是,它的运算法则并没有特别指定行检索的范围。 但是,在Oracle9i中包含了几个新的最优化指令: FIRST_ROWS_1 FIRST_ROWS_10 FIRST_ROWS_100 FIRST_ROWS_1000 FIRST_ROWS_n最优化会指示选择一个查询执行计划,这个计划会缩短生成最初n行查询结果的时间。 [@more@] 你可以把这个新的CBO模式设置到数据库中的几个层次上:systemwide,在会话层或者在查询层次上。 alter system set optimizer_mode=first_rows_100; alter session set opti
FIRST_ROWS和FIRST_ROWS(N)的区别 (zt)
http://yangtingkun.itpub.net/post/468/228323 早就听说FIRST_ROWS和FIRST_ROWS(N)有区别,一直也没有测试出来到底差异在哪里,没想到测试全文索引的时候,发现了二者的差异。按照Oracle文档的说法,FIRST_ROWS并不完全是CBO模式,还包含了大量的基于规则的优化方式。而9i新增的FIRST_ROWS(N)则完全基于代价的方式。[@more@]SQL> CREATE TABLE T (ID NUMBER PRIMARY KEY, NAME VARCHAR2(30), DOCS VARCHAR2(4000));表已创建。SQL> INSERT INTO T 2 SELECT ROWNUM, OBJECT_NAME, 3 OWNER || ' ' || OBJECT_TYPE || ' ' || OBJECT_