大部分客户有自己的数据库服务器,来管理自己的一些关键数据。那如果我们的项目中需要用到这些数据,而客户又不允许把这些数据插入到我们的项目数据库服务器时怎么办?其中的一个解决办法就是在项目数据库服务器上创建基于客户关键数据服务器的某些表或是视图的同义词。这里我来介绍一下我在项目中做的基于远程服务器视图如何创建同义词的过程。
一、创建database link。两台不同的数据库服务器,从项目数据库服务器的一个用户读取客户关键数据的数据库服务器下的某个用户的数据,这个时候可以使用dblink。假设客户提供的数据库服务器信息如下:
而创建database link的语法为:
这时,先要配置本地服务。打开TNSNAMES.ORA Network Configuration File: D:\ORA\NETWORK\ADMIN\tnsnames.ora文件(根据自己的机器的情况而定),将
LIMSTQ =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.107.6.15)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = VGSM)
&n ......
记得以前在论坛里看到wildwave在回一个朋友的贴时候使用了start with,connect by。当时我一头雾水,从来没见过这两个关键字,网上搜了搜,讲的也不太详细,呵呵。今天看书的时候在目录中看到了,直接跳过前面内容翻到这个地方一睹为快。下面我就边做实验,边说说自己的学习成果吧。
实验中使用的表more_employees中的内容如下
SQL> set pagesize 10000
SQL> select * from more_employees;
EMPLOYEE_ID MANAGER_ID FIRST_NAME LAST_NAME TITLE SALARY
----------- ---------- ---------- ---------- -------------------- ----------
1 James Smith CEO 800000
2 1 Ron Johnson Sales Manager 600000
3 2 Fred Hobbs Sales Person 200000
4 1 Susan Jones Support Manager 500000
5 2 Rob Green Sales Person 40000
6 4 Jane Brown Support Person 45000
......
Oracle 10g引入dbms_scheduler来替代先前的dbms_job,在功能方面,它比dbms_job提供了更强大的功能和更灵活的机制/管理。
整理scheduler这一部分,源于最近发现系统上自动采集统计信息的执行时间有些异常,执行时间被定义到了上午(这并不是一个很合理可靠的时间).在重新修改配置的同时,也顺便整理了这一块内容.
首先简单讲一下oracle 10g scheduler,10g引入dbms_scheduler来替代先前的dbms_job,在功能方面,它比dbms_job提供了更强大的功能和更灵活的机制/管理.它主要由以下几大块构成:
1.作业(job):
一个调度程序作业的实体.可以由dbms_scheduler.create_job创建生成.它可以自行指定作业属性,也可以调用我们预先创建的一系列scheduler/ program/ chain/ job_class/ window/ window_group来匹配其作业属性.
2.调度(scheduler):
一个任务计划执行的时间策略.比如我们想要创建一个晚上3点执行的任务计划,就可以创建一个调度,凡是符合这个调度要求的,都可以调用这个我们预先创建好的调度.可以用dbms_scheduler.create_schedule来创建一个调度.
比如我创建一个名字叫MYTEST_SCHEDULE的调度,每天4:00执行.
Begin
dbms_scheduler.crea ......
第一章:日志管理
1.forcing log switches
sql>; alter system switch logfile;
2.forcing checkpoints
sql>; alter system checkpoint;
3.adding online redo log groups
sql>; alter database add logfile [group 4]
sql>; ('/disk3/log4a.rdo','/disk4/log4b.rdo') size 1m;
4.adding online redo log members
sql>; alter database add logfile member
sql>; '/disk3/log1b.rdo' to group 1,
sql>; '/disk4/log2b.rdo' to group 2;
5.changes the name of the online redo logfile
sql>; alter database rename file 'c:/oracle/oradata/oradb/redo01.log'
sql>; to 'c:/oracle/oradata/redo01.log';
6.drop online redo log groups
sql>; alter database drop logfile group 3;
7.drop online redo log members
sql>; alter database drop logfile member 'c:/oracle/oradata/redo01.log';
8.clearing online redo log files
sql> ......
Oracle数据库提供了几种不同的数据库启动和关闭方式,本文将详细介绍这些启动和关闭方式之间的区别以及它们各自不同的功能。
一、启动和关闭Oracle数据库 对于大多数Oracle DBA来说,启动和关闭Oracle数据库最常用的方式就是在命令行方式下的Server Manager。从Oracle 8i以后,系统将Server Manager的所有功能都集中到了SQL*Plus中,也就是说从8i以后对于数据库的启动和关闭可以直接通过SQL*Plus来完成,而不再另外需要 Server Manager,但系统为了保持向下兼容,依旧保留了Server Manager工具。另外也可通过图形用户工具(GUI)的Oracle Enterprise Manager来完成系统的启动和关闭,图形用户界面Instance Manager非常简单,这里不再详述。
要启动和关闭数据库,必须要以具有Oracle 管理员权限的用户登陆,通常也就是以具有SYSDBA权限的用户登陆。一般我们常用INTERNAL用户来启动和关闭数据库(INTERNAL用户实际上是SYS用户以SYSDBA连接的同义词)。Oracle数据库的新版本将逐步淘汰INTERNAL这个内部用户,所以我们最好还是设置DBA用户具有 SYSDBA权限。
二、数据库的启动(STARTUP)
启动一个数据库需要三个步骤:
1、 创建一个Oracle实例(非安装阶段) ......
在ORACLE里如果遇到特别大的表,可以使用分区的表来改变其应用程序的性能。
同事的分区表总结,转载一下。
1.1 分区表PARTITION table
在ORACLE里如果遇到特别大的表,可以使用分区的表来改变其应用程序的性能。
1.1.1 分区表的建立:
某公司的每年产生巨大的销售记录,DBA向公司建议每季度的数据放在一个分区内,以下示范的是该公司1999年的数据(假设每月产生30M的数据),操作如下:
范围分区表:
CREATE TABLE sales
(invoice_no NUMBER,
...
sale_date DATE NOT NULL )
PARTITION BY RANGE (sale_date)
(PARTITION sales1999_q1
VALUES LESS THAN (TO_DATE(‘1999-04-01’,’YYYY-MM-DD’)
TABLESPACE ts_sale1999q1,
PARTITION sales1999_q2
VALUES LESS THAN (TO_DATE(‘1999-07-01’,’YYYY-MM-DD’)
TABLESPACE ts_sale1999q2,
PARTITION sales1999_q3
VALUES LESS THAN (TO_DATE(‘1999-10-01’,’YYYY-MM-DD’)
TABLESPACE ts_sale1999q3,
PARTITION sales1999_q4
VALUES LESS THAN (TO_DATE(‘2000-01-01’,’YYYY-MM-DD’)
TABLESPA ......