快速修改Oracle用户名
oracle中没有提供直接修改用户名的方法,即使在11gR2中也没有提供具体的手段。由于没有直接修改用户名的方法,因此在Oracle中若要修改用户名,通常是比较周折的。通常修改用户名的一种方法是:重新创建一个新用户,把原用户中的数据使用EXP/IMP方法迁移到新用户中,最后删除原用户。如果用户所包含的数据量非常的巨大,这个过程将相当的耗时,对系统的冲击也比较大。有没有更好的方法来完成这个修改用户名的方法呢?这里给出一个通过修改Oracle数据库基表USER$达到修改Oracle用户名的目的。[@more@] Connected to:Oracle Database 10g
long类型转换成varchar2
long类型有很多限制,多得不得多,几乎没法用。公司有一个表之前定义成long了,现在要改过来。在网上找到了一个方法:[@more@]1、LONG 数据类型中存储的是可变长字符串,最大长度限制是2GB。 2、对于超出一定长度的文本,基本只能用LONG类型来存储,数据字典中很多对象的定义就是用LONG来存储的。 3、LONG类型主要用于不需要作字符串搜索的长串数据,如果要进行字符搜索就要用varchar2类型。 4、很多工具,包括SQL*Plus,处理LONG 数据类型都是很困难的。 5、LONG 数据类型的使用中,要受限于磁盘的大小。 能够操作 LONG 的 SQL
恢复被rm意外删除数据文件
http://www.xifenfei.com/2289.html[@more@]一.模拟数据文件删除 [oracle@node1 ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.3.0 Production on Sat Dec 31 22:00:52 2011 Copyright (c) 1982, 2011, Oracle. All rights reserved. --数据库版本Connected to:Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit ProductionWith the Partitioning, Oracle Label Security, OLAP, Data Mining,Oracle Database Vault and Real Application Testing options --所有数据文件SQL> select name from v$datafile; N
Using dbms_monitor
Oracle 10g中提供了一个新的包进行SQL Trace: DBMS_MONITOR。它提供了多种级别的trace[@more@]SQL> select sid,serial# ,username from v$session; SID SERIAL# USERNAME---------- ---------- ------------------------------ 140 57 145 1 147 1 150 1 153 34 SYS 155 1 156 1 159 5 TEST 160 1 161 1 162 1 SID SERIAL# USERNAME---------- ---------- ------------
数据库异常崩溃的元凶--OOM killer
数据库版本是10.2.0.4 ,操作系统是linux as 4u4最近一个星期出现两次了,一台数据库异常中断,错误如下:Fri Mar 19 12:15:09 2010Errors in file /u01/app/oracle/admin/orcl/bdump/orcl_pmon_13421.trc:ORA-00470: LGWR process terminated with errorFri Mar 19 12:15:09 2010PMON: terminating instance due to error 470[@more@]trc文件如下:/u01/app/oracle/admin/orcl/bdump/orcl_pmon_13421.trcOracle Database 10g Enterprise Edition Release 10.2.0.4.0 - ProductionWith the Partitioning, OLAP, Data Mining and Real Appli
bad block表上坏块的处理
今天一台数据库出现块块,日志文件如下:04:38:44 2009Corrupt Block Found TSN = 8, TSNAME = DEALSPACE RFN = 4, BLK = 39387, RDBA = 16816603 OBJN = 82751, OBJD = 82751, OBJECT = P_100_111049_PDETAIL, SUBOBJECT = SEGMENT OWNER = RAD_MBK, SEGMENT TYPE = Table Segment由于没有备份通过eygle的方法恢复了大部分的数据,记录一下eygle的方法http://www.itpub.net/viewthread.php?tid=201766&extra=&page=1大概的步骤如下:ALTER SYSTEM SET EVENTS='10231 trace name context forever
用dbms_streams_tablespace_adm表空间的迁移(4)
上一篇文章中已经介绍了通过CLONE_TABLESPACES过程表空间,这一篇继续描述如何通过ATTACH_TABLESPACES过程,将表空间加载到目标数据库中。[@more@]首先需要将源库的datafile和元文件通过scp都copy过来。[oracle@rhel131 transfer]$ pwd/u01/transfer[oracle@rhel131 transfer]$ lsNADSPACE001.dbf NADSPACE003.dbf NADSPACE_091027.dpNADSPACE002.dbf NADSPACE004.dbf NADSPACE_091027.log建立这个目录的directorySQL> create directory D_TRANS_3 as '/u01/transfer';Directory created.SQL> grant read,write on directory D_
用dbms_streams_tablespace_adm表空间的迁移(3)
这次迁移的表空间由于保存在异地,因此无法通过PULL过程来实现,比如分成CLONE和ATTACH两个阶段。且由于当前的表空间包含多个数据文件,因此不能使用SIMPLE方法,只能通过CLONE_TABLESPACES或DETACH_TABLESPACES过程来实现。又因为源数据库表空间不打算删除,因此使用CLONE_TABLESPACES过程来实现迁移。[@more@]数据库版本、数据块大小、以及字符集和自包含的检查都跳过源数据库:需先建立存放dump file的目录SQL> CREATE OR REPLACE DIRECTORY D_TRANS AS '/u01/trans';Directory created.SQL> grant read,write on directory D_TR
用dbms_streams_tablespace_adm来表空间的迁移(2)
由于PULL_SIMPLE_TABLESPACE只能迁移一个数据文件的表空间,多于一个数据文件的表空间需要用PULL_TABLESPACES来完成。 其中PULL过程实际上包含了CLONE以及ATTACH两个过程,其中还包括了DBMS_FILE_TRANSFER包的调用,使得在目标数据库执行一个命令就完成表空间迁移的所有的操作。[@more@] PULL_TABLESPACES过程完成以下动作 1. Makes any read/write tablespace in the specified tablespace set at the remote database read-only 2. Uses Data Pump to export the metadata for the tablespaces in the tablespace set 3. Uses a
用dbms_streams_tablespace_adm来表空间的迁移(1)
http://yangtingkun.itpub.net/post/468/484859在9i的时候,表空间的迁移使用EXP/IMP来实现。在10g中,除了使用EXP/IMP之外,还可以使用数据泵EXPDP/IMPDP,以及RMAN的命令TRANSPORT TABLESPACE命令,除此之外,还可以通过PL/SQL包DBMS_STREAMS_TABLESPACE_ADM来实现。这一篇介绍PULL_SIMPLE_TABLESPACE过程。Oracle的DBMS_STREAMS_TABLESPACE_ADM包提供了8个过程:ATTACH_TABLESPACES、ATTACH_SIMPLE_TABLESPACE、CLONE_TABLESPACES、CLONE_SIMPLE_TABLESPACE、DETACH_TABLESPACES、DETACH_SIMPLE_TABLESPACE、PULL_TABLESPACES、PULL_SI
buffer cache size的学习笔记
读深入解析ORACLE的buffer cache原理一篇的学习笔记[@more@]SQL> show parameter db_cache_sizeNAME TYPE VALUE------------------------------------ ----------- ------------------------------db_cache_size big integer 16MSQL> @gethidparEnter value for par: lru_latchesold 4: AND x.ksppinm LIKE '%&par%'new 4: AND x.ksppinm LIKE '%lru_latches%'NAME VALUE DESCRIB------------------------------
10g中同时设置了SGA_TARGET和SHARED_POOL_SIZE的问题
我一直认为同时调置了SGA_TARGET和SHARED_POOL_SIZE两个参数时,SHARED_POOL_SIZE的值会忽略,其实是不对的。来纠正一下:同时设置了SGA_TARGET和SHARED_POOL_SIZE或其它参数(如Database buffer cache,Streams pool,Java pool,Large pool),这些参数的设置并不会忽略掉,而是指定其相应pool的最小值。[@more@] 一道OCP的题说明:You are working in Automatic Shared Memory Management mode, and some of the parameters are set as shown below: SGA_MAX_SIZE = 12GSGA_TARGET = 10gDB_RECYCLE_CACHE_SIZE = 1GSHARED_POOL =
安装9204 for rhel4出现的问题总结
最近由于需要测试的原因,安装了9204 for rhel4 u4,太长时间没有装这个版本的了,搞了两天时间,哎。 期间出现很多问题,把出现的问题列一下: [@more@]1:一开始就不顺利,执行 runInstaller时出错:Error occurred during initialization of VMUnable to load native library: /tmp/OraInstall2003-10-25_03-14-57PM/jre/lib/i386/libjava.so: symbol __libc_wait, version GLIBC_2.0 not defined in file libc.so.6 with link time reference解决方法:需要安装 patch p3006854_9204_LINUX.zip也同时安装了p3119415_9204_LINUX.zip
inux下静默安装,升级和删除Oracle客户端
有的时候不方便登陆Linux的图形界面安装oracle客户端,我们完全可以采用静默模式安装,升级和删除oracle客户端(代替OUI)。 平台:RHEL4.5,oracle10.2.0.1[@more@] 一、静默方式安装oracle客户端 1、上传oracle软件,假如放在/orahome/soft/目录下 a # mkdir -p /orahome/soft/ # cd /orahome/soft/ # rz (SecureCRT里通过rz命令上传oracle10g安装文件10201_client_linux32.zip) 2、设置安装oracle软件必须的操作系统信息,如组、用户、目录、用户初始化参数等 --增加组和用户 # groupadd oinstall # useradd -g o
原来10g可以这样和远程相连
在tnsname.ora中删除了orcl140的配置 SQL> conn myuesr/myuser@orcl140 ERROR: ORA-12154: TNS:could not resolve the connect identifier specified SQL> conn myuser/myuser@172.17.61.140:1521/orcl Connected. [@more@]
oracle 10g gird control的安装
几乎花了两个星期才装成功的,主要是由于/etc/hosts文件配的不对,装好之后觉的还蛮简单的,自己真笨,有几次差点就想放弃了。 [@more@]在新的机器上安装时不需要安装oracle的任何软件,在安装gird control时会自动安装oracle软件和数据库的。装成功的配置如下:#add parameters to /etc/sysctl.confkernel.shmall = 2097152kernel.shmmax = 536870912kernel.shmmni = 4096kernel.sem = 250 32000 100 128fs.file-max = 65536net.ipv4.ip_local_port_range = 1024 65000net.core.rmem_default = 262144net.core.rmem_max = 262144n
cursor_sharing为force时带来的一个执行计划的假象
有时候可能存在评估的执行计划和真实的执行计划不一样,查看执行计划的方法如下: a.explain plan ,可通过dbms_xplan.display来查看执行计划 b.set autot c.v$sql_plan d.dbms_xplan.display_cursor a,b的执行计划都是根据explain plan得到的,因此都不是真实的(基表是sql_plan),而3,4的执行计划都是真实的(基表是 V$SQL_PLAN),cursor_sharing为force+直方图的时候可能存在一个假象,就是set autot trace给你显示的执行计划很完美,而真实的执行计划是当作绑定变量处理的,第一次查询的时候可能存在bind peeking的影响,而之后的
object_id 与data_object_id 的区别
对于dba_objects,有几个值得注意的地方 1, object_id与data_object_id是有区别的,前者指dictionary object number;后者指dictionary object number of the segment2, 对普通表及索引来说,object_id与data_object_id是一致的.当object不占用存储空间时, data_object_id为null,如分区表(不是指分区),view,sequence,synonym等等3, 分区表中的分区有不同的object_id和data_object_id; 分区表无data_object_id 注意dba_objects.object_id与dba_objects.data_object_id的区别OBJECT_ID :Dictionary object number of the objectDATA_
10g release 2的新特性--记录DML错误日志
当一个DML运行的时候,如果遇到了错误,不管在这之前成功了多少条记录,这条语句会整个回滚。以前解决这个问题的办法只有单独的执行每条语句,或者用FORALL的SAVE EXCEPTIONS子句。不过在10g release2中可以用LOG ERRORS子句来记录INSERT,UPDATE,MERGE,DELETE语句的错误记录。[@more@]1.语法:LOG ERRORS [INTO [schema.]table] [('simple_expression')] [REJECT LIMIT integer|UNLIMITED]INTO子句是要指定一个记录error log的表,如不指定则会以ERR$开头加表名的前25位字符。simple_expression是用来方便标识错误的记录的字符串REJECT L
10g修改归档日志路径的问题
总结了一下10g修改归档路径的方法,跟自己想像中的还是有点差别的,凡事都要测试一遍才能保证是正确的。[@more@]修改归档日志的路径有两种方法:1.用LOG_ARCHIVE_DEST 和LOG_ARCHIVE_DUPLEX_DEST参数。2.用LOG_ARCHIVE_DEST_n 参数在10g中,LOG_ARCHIVE_FORMAT比以前多个了%r参数,记录resetlogs的ID,以便可以容易的恢复过去的incarnation.如不指定此参数,默认为%t_%s_%r.dbf。下面试试这两种方法的异同1.先看看b_recovery_file_dest和log_archive_dest并存会有什么问题。log_archive_dest='/u01/app/oracle/admin/orcl/archive'*.db_re