数据库管理员

希望提高数据库技能并向社区中的其他人学习的数据库专业人员的问答

5
Oracle启动错误(无法打开参数文件)
我在Ubuntu 12.10上安装了Oracle 11g服务器。但是我无法启动服务器。当我启动服务器时,发生以下错误: SQL> startup ORA-01078: failure in processing system parameters LRM-00109: could not open parameter file '/u01/app/oracle/product/11.2.0/xe/dbs/initXE.ora' 我该如何解决这个问题?我认为连接失败,因为目标主机或对象不存在。如何指定目标主机? 运行: $ ls -latr /u01/app/oracle/product/11.2.0/xe/dbs/initXE.ora 返回: -rw-r--r-- 1 oracle dba 2637 Mar 13 17:07 /u01/app/oracle/product/11.2.0/xe/dbs/initxe.ora 运行不echo $ORACLE_SID显示任何内容-空行。


2
日志传送-使用STANDBY进行还原-在SQL Server 2012上不断崩溃
我们RESTORE WITH STANDBY在SQL Server 2012上使用日志传送,以便以只读模式还原数据库以进行报告。但是,完成一个或两个日志备份的还原后,日志传送设置不断中断。日志传送仅在以方式运行时才会中断RESTORE WITH STANDBY;RESTORE WITH NORECOVERY不会造成任何问题。 我唯一的直觉是主数据库不是那么动态。因此,当没有事务时,这可能导致RESTORE流程出现问题? 有什么想法,已知的解决方法吗? 我通过运行一个常规工作对几天进行了几天工作,该工作在两个表上进行了大量更新。当作业停止运行时,日志传送设置迅速失败,无法处理.trn文件。我重置了日志传送,并尝试通过进行一次小的更新来查看它是否能够继续运行,无论它仍然失败了,更改表中一条记录的一列的值。 感谢您的所有回复。 PS:摘录自我们的日志 2013年2月25日13:00:00,LSRestore_DBDB01-A_BulldogDB,进行中,1,DBREPORTS,LSRestore_DBDB01-A_BulldogDB,日志传送还原日志作业步骤。,2013-02-25 13:00:12.31 ***错误:无法将日志备份文件'\\ dbsan01 \ DBBackups \ LSBackup_BulldogDB \ BulldogDB_20130225180000.trn'应用于辅助数据库'BulldogDB'。(Microsoft.SqlServer.Management.LogShipping)*** 2013-02-25 13:00:12.31 ***错误:处理数据库'BulldogDB'的日志时发生错误。如果可能,请从备份还原。如果没有备份,则可能需要重建日志。 恢复期间发生错误,阻止数据库'BulldogDB'(8:0)重新启动。诊断恢复错误并进行修复,或从已知的良好备份中恢复。如果错误没有得到纠正或无法预期,请联系技术支持。 RESTORE LOG异常终止。 已处理文件1上数据库'BulldogDB'文件'BulldogDB'的0页。 为文件1(.Net SqlClient数据提供程序)上的数据库'BulldogDB'文件'BulldogDB_log'处理了1页 2013-02-25 13:00:12.32 ***错误:无法记录历史记录/错误消息。(Microsoft.SqlServer.Management.LogShipping)*** 2013-02-25 13:00:12.32 ***错误:ExecuteNonQuery需要打开且可用的连接。连接的当前状态为关闭。(System.Data)*** 2013-02-25 13:00:12.32跳过辅助数据库'BulldogDB'的日志备份文件'\\ dbsan01 \ DBBackups \ LSBackup_BulldogDB \ BulldogDB_20130225180000.trn',因为无法验证该文件。 2013-02-25 13:00:12.32 …

5
更改密码后PostgreSQL用户无法连接到服务器
我用创建的4个角色满足了这一要求: 使用GUI(1)在pgAdmin III中更改了用户的密码后,该用户无法再登录。 pgAdmin III显示错误消息: An error has occurred: Error connecting to the server: FATAL: password authentication failed for user "sam" FATAL: password authentication failed for user "sam" 我的系统:Ubuntu 12.04上的Postgresql 9.2 有没有什么办法解决这一问题? (1):使用帐户postgres登录,右键单击“登录角色”中的用户,转到“定义”选项卡,然后输入密码

4
差距和孤岛:客户端解决方案与T-SQL查询
用于间隙和孤岛的T-SQL解决方案能否比在客户端上运行的C#解决方案运行得更快? 具体来说,让我们提供一些测试数据: CREATE TABLE dbo.Numbers ( n INT NOT NULL PRIMARY KEY ) ; GO INSERT INTO dbo.Numbers ( n ) VALUES ( 1 ) ; GO DECLARE @i INT ; SET @i = 0 ; WHILE @i < 21 BEGIN INSERT INTO dbo.Numbers ( n ) SELECT n + …

1
表达式中的类型转换可能会影响查询计划选择中的“ CardinalityEstimate”吗?
我维护一个存档数据库,该数据库将历史数据存储在分区视图中。分区列是日期时间。该视图下的每个表都存储一个月的数据。 我们使用datetime列上的检查约束来约束每个表上的事件。这使优化器可以限制在搜索表中查找在事件datetime列上进行过滤的查询。 检查约束的名称由SQL Server生成,因此很难通过查看其名称来知道它们的作用。 我希望约束名称的格式为“ CK_TableName_Partition”。 我可以使用此查询并从sql_text列复制数据来生成重命名脚本。WHERE子句匹配检查约束,其名称看起来像是由SQL Server生成的: SELECT checks.name AS check_name, tabs.name AS table_name, skemas.name AS schema_name, cols.name AS column_name, N' EXECUTE sys.sp_rename @objname = N''' + skemas.name + N'.' + checks.name + N''', @newname = N''CK_' + tabs.name + N'_Partition'', @objtype = ''OBJECT'';' AS sql_text FROM sys.check_constraints AS …

1
SSIS 2008程序包配置被忽略
与2008年相比,与2005年(当我在命令行上指定/ ConfigFile something.dtsConfig)相比,程序包配置发生了变化,程序包中定义的变量将保留其设计时值,而不是使用config文件中的设置。 我不太确定我是否了解如何获取要使用的外部配置文件。我读过的文章说只有设置的设计时配置会覆盖外部文件的负载。这是否意味着我可以将变量更改为空白字符串,然后将其覆盖?我无法完全删除变量!整数呢? 我看过一些文章提到使用软件包中的软件包配置关闭。 我可以使用SSIS包编辑器或XML编辑器来更改包中的配置文件路径,然后它将使用该文件的设置“ last”(无论使用外部/ ConfigFile选项如何),但是我不想成为更换包装。我想要一个带有Test.dtsConfig和Production.dtsConfig的程序包,并且能够在不更改程序包的情况下来回交换。 现在推荐的方法是什么?

1
对于同一行中的多个选择,是否有比“联合全部”更好的选项?
示例架构: CREATE TABLE [dbo].[Base]( [ID] [int] IDENTITY(1,1) NOT NULL, [Option1ID] [int] NULL, [Option2ID] [int] NULL, [Option3ID] [int] NULL, [Option1Name] [varchar] NULL, [Option2Name] [varchar] NULL, [Option3Name] [varchar] NULL, [Option1LName] [varchar] NULL, [Option2LName] [varchar] NULL, [Option3LName] [varchar] NULL,) 有没有办法获得显示如下的结果: ID | OptionID | OptionName | OptionLName 我试图使用UNION ALL来实现这一点,但是这意味着在我的示例中要在同一行上执行3次,但在我真正的问题中,我必须执行10次。由于遗留代码,我无法规范化表。有没有办法只遍历基本行一次?

2
当记录在Oracle中被锁定时,我们可以知道哪个记录被锁定了吗?
当记录被锁定时,我们可以知道哪个被锁定了吗? 如何获取记录的rowid或其他信息? 我可以通过此sql获取一些信息 SELECT c.ROW_WAIT_OBJ#,c.ROW_WAIT_FILE#,c.ROW_WAIT_BLOCK#,c.ROW_WAIT_ROW# FROM v$locked_object a, dba_objects b, v$session c WHERE a.object_id = b.object_id AND a.SESSION_ID = c.sid(+) 我在网上找到了一种通过使用函数来获取rowid的方法 DBMS_ROWID.ROWID_CREATE() 但这似乎不起作用。
10 oracle  locking 

2
在单个文件组上分区
我的数据库中有一些非常大的表,但是这些数据的很大一部分是“旧的”。 由于无法控制的情况,我不允许删除此“旧”数据。另一个限制是我无法修改数据库,这意味着要向其中添加文件组。按照目前的状态,所有内容都驻留在PRIMARY文件组中。 我正在考虑将这些表划分为几个分区,例如“新”,“旧”,“已归档”等。为此,我确实有一个“状态”列。 考虑到上述情况和限制,我想知道分区在这里是否有意义。换句话说,如果以这种方式对我的表进行分区,但是所有分区都位于同一文件组上,SQL Server将足够聪明地在我的“新”数据所驻留的基础文件中找到该特殊区域,并且不会碰到具有“旧”数据的区域? 换句话说,如果我的数据中有80%是“旧的”。SQL Server是否具有避免访问100%的基础文件并仅访问20%的包含“新”数据的机制(假设,当然,我WHERE在查询的子句中指定了分区列)。 我想回答这个问题,就需要了解如何在内部实现分区。我感谢任何指示。

2
镜像数据库上的事务日志维护
SQL Server版本:2008 R2 Enterprise SP2 我试图解决我们的SQL Server维护问题,遇到了一些我认为不正确的问题。我们有一个生产实例,其中有3个数据库都异地镜像到DR实例。 在查看DR实例时,我注意到LDF文件非常庞大,对于频繁使用的数据库,该文件超过35GB。 我知道这可能是由于镜像数据库处于完全恢复模式,并且从未备份过日志,它们只会继续增长直到驱动器空间用尽。 我们正在主体数据库上进行日志备份,而我的问题是在镜像上进行日志备份的陷阱是什么? 在进行日志备份之前,至少必须完成一次从镜像的完整数据库备份,在这种情况下,由于镜像是镜像,是否需要使用特殊选项? 同样,这是MIRROR数据库上的事务日志维护建议。 感谢您的输入

4
缩小SQL Server 2008 R2后手动设置日志文件大小
目前正在成为某种非自愿的DBA,确实需要一些帮助。 我们在完全恢复模式下拥有40GB的数据库,未配置日志备份,并且拥有84GB的巨大日志文件。到目前为止,我要挽救这种情况的计划是在数据库上运行完整的日志备份,缩小日志文件,并发起维护计划,以每晚在数据库备份的情况下运行日志备份,以帮助使其处于受控状态。 我的问题是我不希望日志文件缩小到什么都不会花在星期一的第一个早晨不断增长。我对文件应该是什么(大约是数据库的20%)进行了粗略估计,并希望从一开始就进行设置,以确保尽可能多的连续空间。这仅仅是在数据库属性->文件下更改“初始大小”的一种情况吗?我猜想数据库是否需要脱机才能发生这种情况? 提前致谢

1
更新统计信息时抽样工作如何?
我有几个大桌子。我想通过每周维护计划来确保其统计信息是最新的。 但是,这样做会花费太多时间。 如果我指定 WITH SAMPLE 50 PERCENT 然后SQL Server进行采样: 页面的前50% 每隔一页 或其他策略? BOL对此尚不清楚。

3
变更数据捕获-如何知道谁进行了变更?
跟踪谁进行了CDC识别的更改。 按照我的datetime hack,我尝试了相同的方法,将suser_sname添加为cdc更改跟踪表上具有默认值的新字段。但是,这似乎返回了cdc进程的所有者,而不是在基表上发起更改的用户。我也尝试了original_login,但是返回了SQL服务帐户登录名。同样,可能与cdc进程相关,而不与发起更改的用户相关。 我在堆栈溢出中发现了一个类似的问题,但是除了从前端或通过触发器跟踪更改之外,没有其他答案,这似乎无法实现使用cdc的目的。我不会重新发布,但是由于原始版本存在stackoverflow上,所以我想在这里尝试一下,特别是如果R2或2012已引入一种更好的方法。 简而言之:我怎么知道谁在变更数据捕获中进行了更改?

3
是否可以通过还原MASTER数据库来恢复TDE证书?
(幸运的是,我们目前还没有处于这种情况下,只是提前计划,看看如果发生的话我们的选择将会是什么。) 对于使用透明日期加密(TDE)加密的数据库,除非您拥有用于对其进行加密的证书的备份,否则无法恢复该数据库备份的副本。 如果您没有那个怎么办?还有其他选择吗? 如果服务器整体出现故障,在新硬件上还原MASTER数据库的备份是否还会还原证书?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.