全,
在MS SQL server和Sybase中,用户可以使用use <db_name>选择服务器上的当前数据库。
据我所知,Oracle11只能有1个DB。
但是如果我有最新的Oracle -有没有办法选择当前的数据库?
蒂娅!!
我目前使用的是带有ODBC的11g。完成此测试后,我将把Oracle更新到最新版本。
发布于 2021-01-24 06:27:35
在SQL Server中,“数据库”与“模式”同义:表、视图等对象的集合。在Oracle中,“数据库”与“服务器”或“实例”同义--一组正在运行的进程及其支持的数据文件(独立、CDB或PDB)。在Oracle中,拥有对象(表等)的“用户”。与"schema“同义,因此Oracle”用户“在概念上与SQL Server”数据库“相同。无论是使用OCI、ODBC还是JDBC客户机连接到Oracle时,都必须始终选择一个实例(使用SID或服务名)和一个用户/方案。
回答您关于确定Oracle中的当前模式的问题:当连接到oracle数据库实例时,current_schema会话参数确定当您没有完全限定对象名时,默认情况下oracle将把您的查询定向到哪个模式。可以使用以下命令进行设置:
alter session set current_schema=[username];现有的会话参数值可以通过查询sys_context函数找到:
select sys_context( 'userenv', 'current_schema' ) from dual;
select sys_context( 'userenv', 'session_user' ) from dual;有关sys_context的更多信息,请查看此处:https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/SYS_CONTEXT.html#GUID-B9934A5D-D97B-4E51-B01B-80C76A5BD086
有关Oracle schema和SQL Server数据库如何比较的更多信息,请参阅dba.stackexchange.com和stackoverflow.com之前关于该主题的帖子:
发布于 2021-01-24 06:50:50
甲骨文有另一套术语。现在我说的是11g。DBMS是数据库+实例。实例是一组进程和内存结构,它是你正在运行的程序。当您启动Oracle DBMS时,您将启动实例、实例挂载数据库并打开数据库。如果您有RAC,则一个数据库可以有多个实例。这意味着,您有一个服务器与数据库,两个或更多的服务器与实例和RAC将同步您的内存结构,事务等实例之间。因此,在Oracle11g中,服务器上没有“当前数据库”。在不同的服务器上有一个数据库和一个或多个实例(如果您有RAC)。当您连接到Oracle时,即连接到一个实例。
在Oracle11中,MS SQL Server中的“数据库”的分离是由“模式”完成的。模式通常是用户,而数据库对象-表等属于模式==用户。当您连接到Oracle时,您提供了一个用户名-它将是您的默认模式,您将在其中保存您的数据库对象。可以使用"alter session“更改您工作的模式。
从Oracle12开始就有了“可插拔的数据库”--PDB。这意味着您有一个CDB容器数据库作为根,您可以将多个PDB插入到一个CDB。这或多或少相当于MS SQL Server的“数据库”。
https://stackoverflow.com/questions/65863196
复制相似问题