有时候为了测试方便,需要建立一个和源库一样的数据库来操作,这时候一个简单的做法是直接克隆,通过配置参数文件和直接复制数据文件来快速建立一个新的库,本文演示了基于10g版本ASM存储下的一个操作过程。
源库SID:erptest 目标库SID:erpoptm
第一步,首先获取源库的参数文件
SQL> CREATE PFILE='/tmp/init_temp.ora' from spfile;
File created.
参照以上文件建立一个目标库的参数文件initerpoptm.ora如下:
erptest.__db_cache_size=1828716544
erptest.__java_pool_size=16777216
erptest.__large_pool_size=16777216
erptest.__shared_pool_size=268435456
erptest.__streams_pool_size=0
*.audit_file_dest='/u01/app/oracle/admin/erpoptm/adump'
*.background_dump_dest='/u01/app/oracle/admin/erpoptm/bdump'
*.compatible='10.2.0.1.0'
*.control_files='+DGOPTM/erpoptm/control01.ctl','+DGOPTM/erpoptm/control02.ctl','+DGOPTM/erpoptm/control03.ctl'
*.core_dump_dest='/u01/app/oracle/admin/erpoptm/cdump'
*.db_block_size=8192
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='erptest'
*.db_recovery_file_dest='+DGOPTM'
*.db_recovery_file_dest_size=2147483648
*.dispatchers='(PROTOCOL=TCP) (SERVICE=erpoptmXDB)'
*.job_queue_processes=10
*.open_cursors=300
*.pga_aggregate_target=1073741824
*.processes=150
[...]
Oracle 中建立触发器的语法如下,图片引自Oracle网站:
其中DML Event Clause为:
其中referencing_clause为:
一般来说建立after的触发器效率比较高,为了提高效率,我们应该细化限制触发的条件,比如指定字段和值的范围才触发:
CREATE TRIGGER hr.salary_check
BEFORE INSERT OR UPDATE OF salary, job_id ON hr.employees
FOR EACH ROW
WHEN (new.job_id <> 'AD_VP')
pl/sql_block ......
触发器和引起触发的SQL是同一个事务,除非用PRAGMA AUTONOMOUS_TRANSACTION参数指定自治事务,但可能会出现数据结果不一致的问题。
为了保证RAC环境下如果一个节点出问题,客户端能漂移到其他节点,Oracle引入了VIP的配置。但在个别版本中,实例对VIP的依赖却可能因为VIP出现问题导致实例崩溃。从10203开始可以手动取消实例对VIP的依赖,而10204已经取消了这个依赖关系。
以下信息是数据库实例crash的记录:
Sun Feb 14 20:07:18 2010
Shutting down instance (abort)
License high water mark = 381
Instance terminated by USER, pid = 619164
取消实例依赖VIP的方法是导出实例部分的资源配置,修改后再注册回去。步骤如下:
DB1@/home/oracle>crs_stat -p ora.racdb.rac1.inst >> /tmp/ora.racdb.rac1.inst.cap
然后编辑这个文件,去掉对vip的依赖:
DB1@/home/oracle>vi /tmp/ora.racdb.rac1.inst.cap
REQUIRED_RESOURCES= 这里设为空
然后再注册回去:
DB1@/home/oracle>crs_register -u ora.racdb.rac1.inst -dir /tmp
所有的节点都需要修改,再用crs_stat -p命令查看已经生效了。如果RAC环境中断网引起的实例崩溃,很可能就是这个问题。
本文描述了在Linux 服务器上创建分区、建立oracle ASM存储和创建数据库实例的过程。
查看当前分区:
[root@erpdevdb ~]# fdisk -l
Disk /dev/sda: 1048.5 GB, 1048576000000 bytes
255 heads, 63 sectors/track, 127482 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 65 522081 83 Linux
/dev/sda2 66 2676 20972857+ 8e Linux [...]
最近给小型机加了内存,调整了SGA参数,以应付明年到来的重压,昨天在alert日志发现了600错误:
Mon Feb 8 10:00:54 2010
Errors in file /u01/admin/erpdb/bdump/erpdb2_m001_598774.trc:
ORA-00600: internal error code, arguments: [kcbz_check_objd_typ_3], [0], [0], [1], [], [], [], []
Mon Feb 8 10:00:58 2010
Trace dumping is performing id=[cdmp_20100208100058]
检查trace文件,发现了执行的SQL语句如下:
*** 2010-02-08 10:00:54.825
ksedmp: internal or fatal error
ORA-00600: internal error code, arguments: [kcbz_check_objd_typ_3], [0], [...]
技术组织
最近评论
- passenger 发表在《一个完整的Oracle建表的例子》
- tudou 发表在《Oracle增大redo log file的方法》
- Yousri 发表在《如何在mac下长期使用SecureCRT》
- Amazon SES筆記 « What's Going On 发表在《如何使用Amazon的邮件服务SES》
- 如何使用Amazon的邮件服务SES | 半瓶 发表在《为Postfix增加DKIM功能》
- pary 发表在《为Postfix增加DKIM功能》
历史归档
广告位

