我在服务器主机上装了ORACLE,现在已经创建了一个数据库叫做DBONE,里面当然就有了相应的表空间了,
现在我想再创建一个数据库叫DBTWO,请问可以吗?
如果可以的话,那么我每次启动数据库时候,用STARTUP OPEN 是把哪个数据库启动呢?
我就是总也理不明白这个。希望能有人给解释下啊。
我是个刚接触ORACLE的新手。
现在我想再创建一个数据库叫DBTWO,请问可以吗?
如果可以的话,那么我每次启动数据库时候,用STARTUP OPEN 是把哪个数据库启动呢?
我就是总也理不明白这个。希望能有人给解释下啊。
我是个刚接触ORACLE的新手。
用sqlplus / as sysdba进入sqlplus
然后启动startup,这样会启动环境变量中SID指定的实例。
例如SID=DTONE,那么就会启动DBONE。如果你创建的连接DBTWO的tns服务名为DBTWO
那么用sqlplus sys@DBTWO as sysdba进入sqlplus
然后启动startup,就会启动DBTWO。
$export ORACLE_SID=dbone
然后打开或关闭数据库都可以。在windows下,则用
CMD:\>SET ORACLE_SID=DBONE
你安装数据库是应该知道ORACLE_BASE,ORACLE_HOME,ORACLE_SID,PATH这些环境变量吧
ORACLE_SID是我安装的时候创建的数据库的SID,那么我每次启动STARTUP OPEN都是默认把这个打开了,
如果我想在连接的时候就打开其他的数据库,怎么办?
我在SQLPLUS里面CONN SYS/PSWD AS SYSDBA,这个命令是连接到一个空闲例程,它还没有去跟哪个数据库实例发生联系吧?
然后,当我STARTUP OPEN的时候,系统就默认为我打开了DBONE数据库,因为我现在就只有这一个数据库实例,假如我在此之前已经创建好了DBTWO数据库,那么当我用STARTUP OPEN 这个命令的时候,它会默认打开DBONE,但如果我把$export ORACLE_SID=DBTWO 这个命令执行生效,那么我在执行STARTUP OPEN就会是打开DBTWO数据库了,是吗?
如果你想打开数据库A
配置一个连接到A的tns服务名AS
sqlplus sys@AS as sysdba
Enter password: ******
SQL> startup用sqlplus / as sysdba登录,对新手有一定的迷惑性
但是ORACLE服务器端呢?我启动一个监听程序是不是就是可以监听向DBONE和DBTWO发出的连接请求了呢?
谢谢啦!!
一个DBMS可以创建多个ORACLE数据库实例,这里我创建的是DBONE和DBTWO两个,而我同样在LISTNER.ORA中配置了这两个实例的列表,
然后,进入LSNRCTL,启动监听器,接着,我将LINUX系统的ORACLE_SID环境变量设置为DBONE,并在SQLPLUS中以CONN SYS/PSWD AS SYSDBA连接到空闲例程,启动数据库DBONE实例,就是用STARTUP OPEN就可以了。对吧!!如果客户端要连接就用客户单的TNSNAME.ORA中的DBONE的连接符来连接上这个服务器的DBONE实例。
假如我希望在服务器上启动DBTWO数据库实例,就要将LINUX系统的ORACLE_SID环境变量设置为DBTWO,并在SQLPLUS中以CONN SYS/PSWD AS SYSDBA连接到空闲例程,启动数据库DBTWO实例,就是用STARTUP OPEN就可以了。是上面和个逻辑吗??
Yes, you are right!
sqlplus 连接时有本地连接和@SID两种方式,不过是本地连接的话,如果是多实例的话,需要指定ORACLE_SID就可以,如果是@SID这样的形式的话,就是通过tnsname里的servicename来区分了,
==================================================
有啊,别忘了,先有 unix,后有的 dos、windows,环境变量这个概念没准是 windows 从 unix 偷来的。呵呵。
多个SCHEMA之间的对象交叉在同一个数据文件中,这对安全性和独立性都是影响。
多个大项目如果共用一个数据库,而仅仅通过SHCEMA来区别的话,你想想会是一个什么局面?
我某个项目毙掉了,要删除其相关数据文件和表空间,那么不就把其他项目的数据也删掉了吗?
谢谢,我是两种连接方式都有的。ORACLE_SID还是每次启动的时候都指定的好,我喜欢条理清楚的逻辑。
默认的值和启动动作只会让我反感。
尽管现在只有一个数据库实例,但每次启动的时候我还是会先指定ORACLE_SID这个变量,然后再启动。
傻吧?!
没办法,强迫症!