我从 Oracle 的网页安装了 Oracle SQL Developer。它似乎在我的计算机上没有安装 Oracle 客户端的情况下工作。这怎么可能?我还安装了 Toad for Oracle,它似乎需要 Oracle 客户端。
jrara's questions
是否可以使用以前的 SQL Server 版本(例如 SQL Server 2008 R2 Natice Client)中的 SQL Server Native Client 连接 SQL Server 2012 数据库?
我是 Oracle 新手,我的目的是将所有数据和元数据从一个模式传输到 Oracle 数据库中的另一个模式。我打算使用数据泵expdp
和impdp
命令。我对此有疑问:
- 我可以在没有用户的情况下创建目标架构,还是应该先创建用户(这也创建架构)?
- 我可以使用 SYS(作为 sysdba)帐户执行
expdp
和命令吗?impdp
这是首选方法吗? 此语句是否从模式中获取所有对象(数据和元数据)并将它们移动到不同的模式中?
expdp \"/ as sysdba\" schemas=<schemaname> directory=dumpdir dumpfile=<schemaname>.dmp logfile=expdp_<schemaname>.log
impdp
那么目标模式是命令后源模式的精确副本吗?
我在我的 Windows Server 2008 R2 上安装了 Oracle 10g XE。现在我想配置 SQL Plus 以login.sql
用于登录设置。我创建了一个login.sql
文件并将其放入
C:\用户\我的名字
文件夹,但它似乎不起作用。在 Windows 环境中我应该把这个配置文件放在哪里?我的login.sql
文件如下:
SET pagesize 2000
SET LONG 10000
SET linesize 1000
COLUMN last_name format a20
COLUMN total format 999,999,999
SET feedback ON
alter session set nls_date_format = 'yyyy-mm-dd hh:mi:ssPM'
COLUMN global_name new_value gname
SET TERMOUT OFF
SELECT LOWER(USER) || '@' || global_name||CHR(10)||'SQL> ' AS global_name
FROM global_name;
SET SQLPROMPT '&gname'
SET TERMOUT ON;
我正在尝试创建一个分区表,其中分区由OrderDate
. 我正在尝试创建一个clustered index
onOrderDate
和一个nonclustered primary key
on OrderID
。但我收到一条错误消息:
消息 1908,级别 16,状态 1,第 1 行列“OrderDate”是索引“PK_OrderID”的分区列。唯一索引的分区列必须是索引键的子集。消息 1750,级别 16,状态 0,行 1 无法创建约束。请参阅以前的错误。
如何修改它以使其工作:
CREATE TABLE dbo.Orders
(
OrderID INT NOT NULL ,
Name NVARCHAR(20) NULL ,
OrderDate DATE NOT NULL ,
)
ON PartSchemeOrders(OrderDate)
CREATE CLUSTERED INDEX IX_OrderDate
on dbo.Orders (OrderDate)
on PartSchemeOrders(OrderDate)
ALTER TABLE dbo.Orders
ADD CONSTRAINT PK_OrderID PRIMARY KEY NONCLUSTERED (OrderID)
我将首先了解一个包含许多事实表的大型数据仓库。如何轻松检查这些事实表中是否使用了分区和分区函数?
出于测试目的,我在 Windows Server 2008 虚拟机上安装了 Oracle 个人版。我的目的是使用 SQL Server 测试链接服务器功能。Oracle Server 安装是否还包括客户端组件?
我是 Oracle 数据库的新手。如果我理解正确,物化视图是一个视图,其结果集保存为数据库中的物理表,并且该视图/表根据某些参数进行刷新。如果视图保存为物理表,为什么不首先将数据存储到表中呢?那么使用物化视图代替表格有什么好处呢?
我有一个这样的相关子查询(来自BOL):
SELECT DISTINCT c.LastName, c.FirstName, e.BusinessEntityID
FROM Person.Person AS c JOIN HumanResources.Employee AS e
ON e.BusinessEntityID = c.BusinessEntityID
WHERE 5000.00 IN
(SELECT Bonus
FROM Sales.SalesPerson sp
WHERE e.BusinessEntityID = sp.BusinessEntityID) ;
GO
当我使用连接重写此查询时
select c.LastName, c.FirstName, e.BusinessEntityID, d.Bonus
from Person.Person as c
inner join HumanResources.Employee as e on e.BusinessEntityID = c.BusinessEntityID
inner join Sales.SalesPerson as d on d.BusinessEntityID = c.BusinessEntityID
where Bonus = 5000.00
看看实际的执行计划,它在两个查询中看起来完全一样。为什么?我在想,由于嵌套循环和执行计划看起来不同,相关子查询要慢得多?是因为这些表的数据不多吗?
我试图使用数据库图表是 SQL Server 并得到以下错误:
Database diagram support objects cannot be installed because this database does not have a valid owner. To continue, first use the Files page of the Database Properties dialog box or the ALTER AUTHORIZATION statement to set the database owner to a valid login, then add the database diagram support objects.
我试图用这个命令来解决我的问题
ALTER AUTHORIZATION ON DATABASE::mydb TO "domain\username"
GO
但它没有帮助。当我将域帐户更改为sa
并运行时
ALTER AUTHORIZATION ON DATABASE::mydb TO sa
GO
我摆脱了这个错误。问题是,为什么数据库所有者不接受域帐户(似乎只有sa
andNT AUTHORITY\SYSTEM
是可以接受的)?
我使用 ALTER INDEX REBUILD 来删除索引碎片。在某些情况下,REBUILD 似乎并没有消除这种碎片。REBUILD 不去除碎片的原因是什么?似乎这种情况尤其发生在小索引上。
有没有办法拒绝用户或角色对特定表的删除权限?
我有一个很大的表,可能有 5000 万行,我不得不截断它。通常 truncate 非常快,但在这种情况下需要数小时才能完成。有哪些因素可以阻止truncate
命令正常运行?
使用 sp_send_dbmail 配置数据库邮件和发送电子邮件是否被视为安全威胁?
连接和会话之间有什么区别以及它们之间的关系?
我们有一个 ETL 过程,它将大量数据插入到表中。该数据库设置为简单恢复模式,并且事务日志增长了很多。我在想,将这个数据库设置为 Bulk-Logged Recovery Model 会有所帮助吗?我们每天都进行完整备份。那么与简单恢复模型相比,是否有一些操作没有在批量日志恢复模型中记录?