データベース管理者

データベースのスキルを向上させ、コミュニティの他の人から学びたいデータベースの専門家向けのQ&A

7
MySQLの起動時に「mysql / plugin.frmファイルが見つかりません」
MySQLサーバーを起動すると、次のエラーが表示されます。 /usr/libexec/mysqld: Can't find file: './mysql/plugin.frm' (errno: 13) [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it. InnoDB: The error means mysqld does not have the access rights to InnoDB: the directory. InnoDB: File name ./ibdata1 InnoDB: File operation call: 'create'. InnoDB: Cannot continue operation. 私はmysql_upgradeそれを再構築するために走りました、そして、それは再構築するために働きます。その前に、MySQLを削除してインストールしました。ただし、再起動しようとすると、同じエラーが発生します。すべてのファイルとディレクトリはmysqlユーザーによって作成されるため、許可の問題ではないと確信しています。 このエラーを修正する方法を教えてください。
17 mysql 

3
mysqlマスタースレーブでマスターを決定する方法
MySQLマスタースレーブレプリケーションを設定し、スレーブをマスターに昇格させるフェールオーバー状況を処理する方法を見つけようとしています(マスターがダウンした場合)。 アプリケーションサーバーはすべての書き込みを現在のマスターに転送する必要がありますが、2つのdbサーバーは物理的に異なる場所にある完全に異なるサブネット上にあるため、マスターとスレーブの間でサーバーレベルのHA(ハートビート、キープアライブ)を使用できません。 これは、アプリケーションレベルで処理する必要があるものだと思います。2つのサーバーにクエリを実行し、どちらがマスターかを尋ねてから、そのサーバーに対するすべてのクエリを実行できます。 現在のサーバーがマスター/スレーブレプリカのマスターであるかどうかを確認するクエリがMySQLにありますか?

5
行間で90日が経過したギャップを再帰的に見つける方法
これは私のC#ホームワールドでは一種の些細な作業ですが、SQLでまだ作成しておらず、セットベース(カーソルなし)で解決することを好みます。結果セットは、このようなクエリから取得する必要があります。 SELECT SomeId, MyDate, dbo.udfLastHitRecursive(param1, param2, MyDate) as 'Qualifying' FROM T どのように機能するか これら3つのパラメーターをUDFに送信します。 UDFは内部的にparamsを使用して、ビューから関連する90日未満の古い行をフェッチします。 UDFは 'MyDate'をトラバースし、合計計算に含める必要がある場合は1を返します。 そうでない場合は、0を返します。ここでは「修飾」と名付けられています。 UDFが行うこと 行を日付順にリストします。行間の日数を計算します。結果セットの最初の行はデフォルトでHit = 1になります。差が最大90の場合、-ギャップの合計が90日になるまで次の行に渡します(90日目が経過する必要があります)。代わりに、結果から行を省略することもできます。 |(column by udf, which not work yet) Date Calc_date MaxDiff | Qualifying 2014-01-01 11:00 2014-01-01 0 | 1 2014-01-03 10:00 2014-01-01 2 | 0 2014-01-04 09:30 2014-01-03 1 | …

5
完全バックアップとコピーのみの完全バックアップの違い
SQL Server Centralスレッドで見た完全バックアップはログを切り捨てますか?その完全バックアップはログを切り捨てません: いいえ。完全バックアップでも差分バックアップでも、トランザクションログは切り捨てられません。- リン・ペティス はありません-フルバックアップは、ログを切り捨てません。- チャド・クロフォード それでは、完全バックアップとコピーのみの完全バックアップの違いは何ですか? ログバックアップには、ログを切り捨てずにログチェーンが壊れないようにするコピーのみのバックアップがあります。では、コピーのみの完全バックアップとは何ですか?

2
SQL Serverの接続権限を制限する
「名誉システム」セキュリティを使用する運用環境に展開するアプリがあります。つまり、すべてのユーザーがSQLユーザー/パスワード資格情報を使用してDBに接続し、アプリ自体が権限を管理します。後者の部分は、接続オブジェクトに埋め込まれた資格情報が含まれており、自由にコピーできるという事実ほど気にしません。接続をより限定的なクライアントのセットに制限する方法を見つけようとしています。もちろん、IPで制限するファイアウォールルールを作成できます。マシンアカウントまたはドメインメンバシップのいずれかでSQLログインを「事前認証」する方法はありますか?

5
複数のデータベースをC:からD:に一度に移動します
C:ドライブ、高速SSDで約14 GBを消費する323データベースを備えたSQL Server 2008 R2があります。 C:ドライブの一部の領域を再利用するため、それらをD:ドライブに移動します。 このMSDNの記事を見つけましたが、それは1つのデータベースのみを移動する手順のようです。 すべてのデータベースを一度に自動で移動する方法またはスクリプトはありますか?


1
クエリプラン「Cardinality Estimate」の警告
create table T(ID int identity primary key) insert into T default values insert into T default values go select cast(ID as varchar(10)) as ID from T where ID = 1 上記のクエリのクエリプランには警告があります。 <Warnings> <PlanAffectingConvert ConvertIssue="Cardinality Estimate" Expression="CONVERT(varchar(10),[xx].[dbo].[T].[ID],0)" /> </Warnings> なぜ警告があるのですか? フィールドリストのキャストは、カーディナリティの見積もりにどのように影響しますか?

2
3500万行以上のテーブルに対応する効果的なmysqlテーブル/インデックスデザイン、200以上の対応する列(ダブル)、任意の組み合わせをクエリ可能
次の状況でのテーブル/インデックスの設計に関するアドバイスを探しています。 複合主キー(assetid(int)、date(date))を含む大きなテーブル(株価履歴データ、InnoDB、3500万行および成長)があります。価格情報に加えて、各レコードに対応する必要がある200のdouble値があります。 CREATE TABLE `mytable` ( `assetid` int(11) NOT NULL, `date` date NOT NULL, `close` double NOT NULL, `f1` double DEFAULT NULL, `f2` double DEFAULT NULL, `f3` double DEFAULT NULL, `f4` double DEFAULT NULL, ... skip a few … `f200` double DEFAULT NULL, PRIMARY KEY (`assetid`, `date`)) ENGINE=`InnoDB` DEFAULT CHARACTER …

1
Oracleデータベースユーザーを複製する
Oracleデータベースのレビューを行うために、外部の監査人が来ます。レビューを実行するためのツールを実行するため、データベースに接続してそこから情報を取得できるユーザーIDが必要です。 このためにデータベースに既存のユーザーがいます。ただし、これは実稼働IDであり、ロックアウトすることはできません。ロールと権限を含むこのIDを複製/複製したいと思います。 Oracleでこれを行う方法はありますか?
17 oracle 


3
POINT(X、Y)とGeomFromText(“ POINT(XY)”)の違いは何ですか?
MySQLデータベースにいくつかの幾何学的位置を保存したいと思います。このために、POINTデータ型を使用します。ほぼすべての場所GeomFromTextで、テーブルにデータを挿入するために関数を使用する必要があることを読みました。 しかし、私POINT(X,Y)もそれが機能することがわかりました。のGeomFromText代わりにを使用する理由についての説明が見つかりませんでしたPOINT。 たとえば、次の単純な関係があります。 CREATE TABLE Site ( SiteID BIGINT UNSIGNED, Position POINT ); そして、次の2つのバリアントを使用して値を挿入できます。 INSERT INTO Site ( 1, GeomFromText( 'POINT(48.19976 16.45572)' ) ); INSERT INTO Site ( 2, POINT(48.19976, 16.45572) ); テーブル(SELECT * FROM Site)を表示すると、場所に同じバイナリBLOBが表示され、座標(SELECT *, AsText(Position) FROM Site)を表示すると、同じ値が表示されます。 では、なぜGeomFromTextを使用する必要があるのでしょうか?これら2つのバリアントの間に(既知の)パフォーマンスの違いはありますか?これはMySQL以外のデータベースシステムでどのように解決されますか?

2
異なるプロセスの同じ一時テーブルのロックからのデッドロック
私は不可能だと思った何かを示すように見えるデッドロックを発見しました。デッドロックには2つのプロセスが関係します。 1. process8cf948 SPID 63 一時テーブル#PB_Cost_Excp_Process_Invoices_WorkでALTER TABLEを実行します。 オブジェクトID 455743580でテーブル#PB_Cost_Excp_Process_Invoices_WorkのIXロックを所有 2. process4cb3708 SPID 72 一時テーブル#PB_Cost_Excp_Process_Invoices_WorkでUPDATEを実行します。これは、テーブルの独自のコピーであると想定されています。 同じオブジェクトID 455743580で#PB_Cost_Excp_Process_Invoices_WorkのSch-Mロックを所有しています! これは不可能だと思われます。何か不足していますか?#Temporaryテーブルは、これら2つのSPID間で本当に再利用されましたか? これは、累積的な更新1(バージョン10.50.4260)が適用されたSQL Server 2008 R2 Service Pack 2にあります。 変更されていない完全なデッドロックトレースは以下のとおりです。2つのプロセスが、同じテーブル名#PB_Cost_Excp_Process_Invoices_Work_SNIP_0000000D8519を使用して同じオブジェクトIDで動作していることに注意してください。 12/14/2012 13:46:03,spid23s,Unknown,waiter id=process8cf948 mode=X requestType=wait 12/14/2012 13:46:03,spid23s,Unknown,waiter-list 12/14/2012 13:46:03,spid23s,Unknown,owner id=process4cb3708 mode=Sch-M 12/14/2012 13:46:03,spid23s,Unknown,owner-list 12/14/2012 13:46:03,spid23s,Unknown,objectlock lockPartition=0 objid=455743580 subresource=FULL dbid=2 objectname=tempdb.dbo.#PB_Cost_Excp_Process_Invoices_Work_________________________________________________________________________________0000000D8519 id=lock371705d00 mode=Sch-M associatedObjectId=455743580 12/14/2012 13:46:03,spid23s,Unknown,waiter …

1
Oracle 11gリスナーがORA-12514およびORA-12505エラーで失敗する
開発マシンでOracle 11gのインスタンスをローカルで実行し、SqlPlusを介してローカルインスタンスに直接接続できます。 c:\>sqlplus ace SQL*Plus: Release 11.2.0.2.0 Production on Mon Mar 11 11:50:20 2013 Copyright (c) 1982, 2010, Oracle. All rights reserved. Enter password: Connected to: Oracle Database 11g Express Edition Release 11.2.0.2.0 - Beta SQL> select count(*) from my_table ; COUNT(*) ---------- 5297 しかし、リスナーを介して接続することはできません。 c:\>sqlplus -L "user/pw@(DESCRIPTION = (ADDRESS …

2
呼び出し側データベースコンテキストで実行する中央ストアドプロシージャ
sys.dm_db_index_physical_statsビューを使用して、カスタマイズされたメンテナンスソリューションに取り組んでいます。現在、ストアドプロシージャから参照されています。これで、そのストアドプロシージャがデータベースの1つで実行されると、必要な処理が実行され、データベースに関するすべてのレコードのリストがプルダウンされます。別のデータベースに配置すると、そのDBのみに関連するすべてのレコードのリストがプルダウンされます。 例(下部のコード): データベース6に対して実行されたクエリは、データベース1〜10の[要求された]情報を示します。 データベース3に対して実行されたクエリは、データベース3のみの[要求された]情報を表示します。 特にデータベース3でこの手順が必要な理由は、同じデータベース内にすべてのメンテナンスオブジェクトを保持したいからです。このジョブをメンテナンスデータベースに配置し、あたかもそのアプリケーションデータベースにあるかのように動作させたいと思います。 コード: ALTER PROCEDURE [dbo].[GetFragStats] @databaseName NVARCHAR(64) = NULL ,@tableName NVARCHAR(64) = NULL ,@indexID INT = NULL ,@partNumber INT = NULL ,@Mode NVARCHAR(64) = 'DETAILED' AS BEGIN SET NOCOUNT ON; DECLARE @databaseID INT, @tableID INT IF @databaseName IS NOT NULL AND @databaseName NOT IN ('tempdb','ReportServerTempDB') BEGIN …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.