データベース管理者

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


7
Oracle 11gで表領域を作成するにはどうすればよいですか?
私はOracleにあまり精通していません。無効なファイル名のエラーメッセージが表示され続けるTABLESPACEを作成しようとしています。以下は私が使用した構文です。 SQL> create Tablespace HRMT 2 datafile 3 size 4 ; size * ERROR at line 3: ORA-02236: invalid file name 私の本とすべてのWebサイトで、DATAFILEのファイルパスを指定することを提案しました。パスを指定すると、別のエラーメッセージが表示されます。 SQL> create tablespace vania 2 datafile 'home/oracle/hait/' 3 size 10M 4 ; create tablespace vania * ERROR at line 1: ORA-01119: error in creating database file 'home/oracle/hait/' ORA-27040: …
29 oracle 

5
SQL Serverの古いバージョンへのバックアップの復元
バックアップをSQL Server Express 2008データベースに復元しようとすると、次のエラーが発生しました。 Restore failed for Server '...\SQLEXPRESS'. (Microsoft.SqlServer.SmoExtended) System.Data.SqlClient.SqlError: The database was backed up on a server running version 10.50.1600. That version is incompatible with this server, which is running version 10.00.2531. Either restore the database on a server that supports the backup, or use a backup that …


3
SQL Serverと通信するには、どのPowerShellテクニックを使用する必要がありますか?
最終的には、PowerShellを使用して、SQLインスタンスモニターに使用する古いKornShellスクリプトを置き換えたいと思います。ただし、PowerShellが実際にSQLサーバーと通信できるさまざまな方法を頭に入れて苦労しています。これがすべてかどうかはわかりませんが、SQLサーバーのバージョンを照会できる5つのまったく異なる方法を次に示します。 1. SQLConnection .NETクラス $SqlConnection = New-Object System.Data.SqlClient.SqlConnection $SqlConnection.ConnectionString = "Server=MyServer;Database=Master;Integrated Security=True" $SqlCmd = New-Object System.Data.SqlClient.SqlCommand $SqlCmd.CommandText = "Select @@version as SQLServerVersion" $SqlCmd.Connection = $SqlConnection $SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter $SqlAdapter.SelectCommand = $SqlCmd $DataSet = New-Object System.Data.DataSet $SqlAdapter.Fill($DataSet) $SqlConnection.Close() $DataSet.Tables[0] 2. WMIプロバイダー $sqlProperties = Get-WmiObject -computerName "MyServer" -namespace root\Microsoft\SqlServer\ComputerManagement10 -class SqlServiceAdvancedProperty …

4
特定のテーブルへの挿入が遅い理由を知るにはどうすればよいですか?
SQLテーブルでのINSERTには、さまざまな理由で時間がかかることがあります。 テーブル上のINSERT TRIGGERの存在 チェックする必要のある強制された制約の多く(通常は外部キー) テーブルの中央に行が挿入されると、クラスター化インデックスでページが分割される 関連するすべての非クラスター化インデックスを更新する テーブル上の他のアクティビティからのブロック 不十分なIO書き込み応答時間 ...私が見逃したものは何ですか? 特定のケースでどちらが責任があるのか​​をどのように確認できますか?ページ分割と非クラスター化インデックスの更新と他のすべての影響を測定するにはどうすればよいですか? (一時テーブルから)一度に約10,000行を挿入するストアドプロシージャがあり、1万行につき約90秒かかります。他のspidがタイムアウトするので、これは受け入れられないほど遅いです。 実行計画を確認しました。INSERTCLUSTERED INDEXタスクとFKルックアップからのすべてのINDEX SEEKSを確認しましたが、なぜ時間がかかるのか確かではありません。トリガーはありませんが、テーブルには少数のFKey(適切にインデックス付けされているように見える)があります。 これはSQL 2000データベースです。

4
SQL Serverのデータを削除したユーザーを見つける方法
私の上司は昨日、SQL Serverデータベースのデータを削除した人を見つける方法を尋ねる顧客からの問い合わせがありました(それが重要な場合はエクスプレス版です)。 これはトランザクションログから見つけることができると思いました(切り捨てられていなかった場合)-これは正しいですか?もしそうなら、この情報を実際にどのように見つけ出しますか?

10
UTCと現地時間の間にDSTの前または後の日付の正しいオフセットを取得するにはどうすればよいですか?
現在、UTC日時からローカル日時を取得するために次を使用しています。 SET @offset = DateDiff(minute, GetUTCDate(), GetDate()) SET @localDateTime = DateAdd(minute, @offset, @utcDateTime) 私の問題は、夏時間の間発生した場合GetUTCDate()や@utcDateTime、@localDateTime時間のオフされてしまいます。 現在の日付ではない日付のUTCから現地時間に変換する簡単な方法はありますか? SQL Server 2005を使用しています

4
OS認証がOracleデータベースのセキュリティ低下と見なされるのはなぜですか?
Oracleは、OSに応じて認証を廃止されたOracle Databaseセキュリティ・ガイド言いれ、 REMOTE_OS_AUTHENTパラメータはOracle Database 11gリリース1(11.1)で非推奨となり、下位互換性のためにのみ保持されていることに注意してください。 さらに、ほとんどのセキュリティ情報とツールは、OS(外部)認証をセキュリティの問題と見なし ています。なぜそうなのかを理解しようとしています。OS認証のいくつかの利点を次に示します。 OS認証がなければ、アプリケーションは、それぞれ独自のセキュリティモデルと脆弱性を持つさまざまなアプリケーションにパスワードを保存する必要があります。 ドメイン認証はすでに安全でなければなりません。そうでない場合、データベースセキュリティはデータベースへのアクセスを遅くするだけで、それを防ぐことはできません。 1つのドメインパスワードのみを覚える必要があるユーザーは、接続する必要があるさまざまなデータベースの数が増えるにつれて、安全性の低いデータベースパスワードを作成するよりも簡単に、より安全なドメインパスワードを作成できます。

7
Oracleの新規インストールにOracle DMPファイルをインポートします
クライアントから、テストする必要があるOracleデータベースが送信されました。オラクルは使用せず、社内にオラクルの専門知識もありません。 データベースに接続して問題をデバッグできるように、データベースをセットアップする必要があります。 Oracle 9(クライアントが実行しているバージョン)と管理ツールを新規インストールしました。 私の人生では、データをインポートすることはできません。これは複雑ではありません。私は何か間違っているはずです。 私はもう試した: imp 'sys/password AS SYSDBA' file=c:\database.dmp full=yes log=implog.txt そして得た: Connected to: Personal Oracle9i Release 9.2.0.1.0 - Production With the Partitioning, OLAP and Oracle Data Mining options JServer Release 9.2.0.1.0 - Production Export file created by EXPORT:V09.02.00 via conventional path Warning: the objects were exported by …
29 oracle  import 

4
SQL CLRスカラー関数を使用してHASHBYTESをシミュレートするスケーラブルな方法は何ですか?
ETLプロセスの一環として、ステージングからの行をレポートデータベースと比較して、データが最後に読み込まれてから実際に変更された列があるかどうかを確認します。 この比較は、テーブルの一意のキーと、他のすべての列のある種のハッシュに基づいています。現在HASHBYTES、このSHA2_256アルゴリズムで使用しており、多数の並行ワーカースレッドがすべて呼び出している場合、大規模サーバーではスケーリングしないことがわかりましたHASHBYTES。 96コアサーバーでテストする場合、1秒あたりのハッシュで測定されるスループットは、16を超える同時スレッドを増加させません。同時MAXDOP 8クエリの数を1〜12に変更してテストします。テストでMAXDOP 1は、同じスケーラビリティのボトルネックが示されました。 回避策として、SQL CLRソリューションを試したいと思います。要件を述べるための私の試みは次のとおりです。 関数は並列クエリに参加できる必要があります 関数は決定的でなければなりません この関数は、NVARCHARまたはVARBINARY文字列の入力を受け取る必要があります(関連するすべての列は連結されます) 文字列の一般的な入力サイズは、長さが100〜20000文字です。20000は最大値ではありません ハッシュ衝突の可能性は、MD5アルゴリズムとほぼ同等かそれ以上でなければなりません。CHECKSUM衝突が多すぎるため、機能しません。 この機能は、大規模なサーバーで適切にスケーリングする必要があります(スレッド数が増加しても、スレッドあたりのスループットが大幅に低下することはありません) Application Reasons™の場合、レポートテーブルのハッシュの値を保存できないと仮定します。これは、トリガーまたは計算列をサポートしないCCIです(他の問題もありますが、これには入りたくありません)。 HASHBYTESSQL CLR関数を使用してシミュレートするスケーラブルな方法は何ですか?私の目標は、大規模なサーバーでできる限り多くのハッシュを毎秒取得することであると表現できるため、パフォーマンスも重要です。私はCLRがひどいので、これを達成する方法がわかりません。誰かに答える動機があれば、できるだけ早くこの質問に報奨金を追加する予定です。以下は、ユースケースを非常に大まかに示すクエリの例です。 DROP TABLE IF EXISTS #CHANGED_IDS; SELECT stg.ID INTO #CHANGED_IDS FROM ( SELECT ID, CAST( HASHBYTES ('SHA2_256', CAST(FK1 AS NVARCHAR(19)) + CAST(FK2 AS NVARCHAR(19)) + CAST(FK3 AS NVARCHAR(19)) + CAST(FK4 AS NVARCHAR(19)) + CAST(FK5 …

1
フルテキストインデックスメンテナンスのガイドライン
フルテキストインデックスを維持するには、どのガイドラインを考慮する必要がありますか? フルテキストカタログを再構築または再編成する必要があります(BOLを参照)。合理的なメンテナンスケイデンスとは何ですか?どのようなヒューリスティック(10%および30%の断片化しきい値に類似)を使用して、メンテナンスが必要かを判断できますか? (以下はすべて、質問について詳しく説明し、これまでに考えたことを示す追加情報です。) 追加情報:最初の調査 Bツリーインデックスのメンテナンスに関するリソースは多数あります(たとえば、この質問、Ola Hallengrenのスクリプト、および他のサイトの主題に関する多数のブログ投稿)。ただし、これらのリソースのいずれも、フルテキストインデックスを維持するための推奨事項またはスクリプトを提供していないことがわかりました。 ベーステーブルのBツリーインデックスを最適化し、フルテキストカタログでREORGANIZEを実行するとパフォーマンスが向上する可能性があることを記載したMicrosoftのドキュメントがありますが、それ以上の具体的な推奨事項については触れていません。 私もこの質問を見つけましたが、それは主に変更追跡(基になるテーブルへのデータ更新がフルテキストインデックスに伝播される方法)に焦点を当てており、インデックスの効率を最大化できるタイプの定期的なメンテナンスではありません。 追加情報:基本的なパフォーマンステスト このSQL Fiddleには、AUTO変更追跡を伴うフルテキストインデックスを作成し、テーブル内のデータが変更されたときのインデックスのサイズとクエリパフォーマンスの両方を調べるために使用できるコードが含まれています。(フィドルの人工的に製造されたデータとは対照的に)生産データのコピーでスクリプトのロジックを実行すると、各データ変更ステップの後に表示される結果の概要は次のとおりです。 このスクリプトの更新ステートメントはかなり不自然でしたが、このデータは定期的なメンテナンスによって多くのことが得られることを示しているようです。 追加情報:最初のアイデア 毎晩または毎週のタスクを作成することを考えています。このタスクは、REBUILDまたはREORGANIZEを実行できるようです。 フルテキストインデックスは非常に大きい(数千または数億行)可能性があるため、カタログ内のインデックスがREBUILD / REORGANIZEが保証されるほど十分に断片化されていることを検出できるようにしたいと思います。ヒューリスティックがそのために何を意味するのか、私には少しわかりません。


5
Mongoをスーパーユーザーとして入力したり、ユーザーをリセットしたりするにはどうすればよいですか?
私は許可をいじっていたので、Mongoデータベースから締め出されました。データベースへのアクセスを明示的に追加することでこれを行ったと確信していますが、代わりにデータベースへのアクセス許可のみを上書きしました。したがって、私はMongoデータベースから事実上ロックアウトされており、私が読んだすべてが、ユーザー追加権限を持っている場合にスーパーユーザーを作成する方法を教えてくれます。現時点では、その特権を持つユーザーはいないと思います。すべてのアクセスとしてデータベースを入力する方法はありますか?私はサーバーを所有しており、rootアクセスを持っています。
29 mongodb 

4
EF Code Firstは、すべての文字列にnvarchar(max)を使用します。これによりクエリのパフォーマンスが低下しますか?
Entity Framework Code Firstを使用していくつかのデータベースを作成しています。アプリは正常に動作しており、一般的にCode Firstでできることにはかなり満足しています。私は必然的にプログラマーであり、DBAは2番目です。私はデータベースで何をしたいのかをC#でさらに説明するためにDataAttributesについて読んでいます。私の質問は、これらのnvarchar(max)文字列をテーブルに入れることでどのようなペナルティを食べるのかということです(下の例を参照)。 この特定のテーブルにはいくつかの列があります。C#では、次のように定義されています。 [Key] [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] public int ID { get; set; } public string Name { get; set; } public string Message { get; set; } public string Source { get; set; } public DateTime Generated { get; set; } public DateTime Written { get; set; } …

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