テーブルスペース管理
デフォルトでDamengデータベースの表スペースと役割は何ですか?
V $テーブルスペースdba_tablespaces; v $ huge_tablespace dba_data_files;
SQL> select tablespace_name,status from dba_tablespaces;
- システム:データディクショナリとグローバルシステムデータ
- ロール:データベース操作中に生成されたロールバックレコードを格納します。
- TEMP:一時表スペース
- メイン:データベースのデフォルトのテーブルスペース。データ・オブジェクトを作成するときに、保管場所を指定しない場合、デフォルトのストレージは表スペースにあります。
- HMAIN:巨大なテーブルスペース
関連パラメータ:
Undo_retention:単位秒
# 查询所有表空间
SQL> select name from v\$tablespace union select name from v\$huge_tablespace;
計画表スペース
# 案例1:
SQL> create tablespace tbs1 datafile '/dm7/data/DAMENG/tbs1_01.dbf' size 31;
# 报错 大小无效
SQL> create tablespace tbs1 datafile '/dm7/data/DAMENG/tbs1_01.dbf' size 32;
初期ファイルサイズは、ページの4096倍です。4096 * 8K = 32M
# 案例2:创建一个表空间,初始大小50M,最大100M
SQL> create tablespace tbs2 datafile '/dm7/data/DAMENG/tbs2_01.dbf' size 50 autoextend on maxsize 100;
SQL> select tablespace_name,status from dba_tablespaces;
# 案例3:创建一个表空间,初始大小50M,
# 表空间由2个数据文件组成,分别存储在不同磁盘上,每次扩展1m,每个数据文件最大100M.
SQL> create tablespace tb3 datafile '/dm7/data/DAMENG/tbs3_01.dbf' size 50 auto
extend on next 1 maxsize 100,'/dm7/data/DAMENG/tbs3_02.dbf' size 50 autoextend on next 1 maxsize 100;
テーブルスペースを維持する
表スペースが不足しています。表スペースを維持する方法:
- 大きなテーブルスペース、データのエクスポート、インポートを作成します。
- データファイルのサイズを変更します。
- データファイルを追加します。
SQL> alter tablespace tbs1 add datafile '/dm7/data/DAMENG/tbs1_02.dbf' size 32;
保管場所を変更する
Damengテーブルスペースの状態:
- 0:---オンライン
- 1:---オフライン
注:システム、ロール。Tempをオフラインにすることはできません。
# 1、表空间offine
SQL> alter tablespace tb3 offline;
# 2、修改存储位置
SQL> alter tablespace tb3 rename datafile '/dm7/data/DAMENG/tbs3_02.dbf' to '/dm7/data/tbs3_02.dbf';
# 3、表空间online;
SQL> alter tablespace tb3 online;
# 删除表空间
SQL> drop tablespace tbs2;
ユーザー管理
コンセプト
DMデータベースでは、ユーザー管理は主にユーザー、権限、役割の3つの部分で構成されます。
- 権限:特定のタイプのSQLを実行する権利、または他のモードオブジェクトへのアクセス権。
- システム権限:データベースオブジェクトの作成、削除、変更など。
- オブジェクト権限:データベースオブジェクトのデータを操作する権限。
- 役割:同じ権限を持つユーザーをまとめるこの同じ権限を持つユーザーのグループをロールと呼びます。ロールは権限のコレクションです。権限はさまざまな役割に与えることができます。
データベースの3つの事前定義されたロール:DBA、PUBLIC、RESOUCE
3つの勢力の分離と4つの勢力の分離。
-
権限の分離:データベース管理者、データセキュリティ担当者、データベース監査人。
-
4つの権限の分離:データベース管理者、データベースオブジェクトオペレーター、データベースセキュリティ担当者、データベース監査人。
-
デフォルトのアカウント:
- データベース管理者:sysdba
- データベースオブジェクトオペレーター:sysdbo:セキュリティバージョンでのみ使用可能
-
データベースセキュリティ担当者:syssso
- データベース監査人:sysauditor
すべてのアカウントのデフォルトのパスワードは、大文字のユーザー名と一致しています。
SQL> select username from dba_users;
ユーザーの計画
- 名前:文字の先頭、az、0-9、$#_
- 場所:対応する表スペース
- パスワード:パスワードポリシー
- 0:戦略なし
- 1:ユーザー名と同じを禁止する
- 2:パスワードの長さが9以上である
- 4:少なくとも1つの大文字を含む
- 8:少なくとも1つの数値を含む
- 16:少なくとも1つの句読点(スペースと ""を除き、英語で入力)
パスワードは単独または組み合わせて使用できます。たとえば、ポリシー1と2が必要な場合は、パスワードポリシーを3に設定します。
ユーザーステートメントのパスワードポリシー句を作成して、パスワードポリシーを指定します。ユーザーパスワードの長さは最大48バイトです。
- Faild_login_attemps:パスワードのログイン試行回数
- Password_lock_time:パスワード失敗後のロック時間
- Password_life_time:パスワードの有効期限。
ユーザービュー:sysuser、all_user、dba_user
ケース1:ユーザーテストを作成します。ユーザーは独自のテーブルを作成し、独自の独立したテーブルスペースを作成できます。ユーザーパスワードの要件は60日ごとに変更されます。
SQL> create tablespace test datafile '/dm7/data/DAMENG/test01.dbf' size 32;
SQL> create user test identified by dameng123 limit password_life_time 60 default tablespace test;
SQL> select * from all_users;
SQL> select user;
SQL> grant create table to test;
ユーザー権限を確認する方法
SQL> select grantee,granted_role from dba_role_privs where grantee='TEST';
SQL> select grantee,privliege from dba_sys_privs where grantee='PUBLIC';
ケース2:ユーザーを計画している場合、ユーザーは60日ごとにパスワードを変更し、パスワードの2回の接続試行は失敗し、アカウントは5分間ロックされ、ユーザーはdmhr.employeeテーブルをクエリできます。
SQL> create user test1 identified by dameng123 limit password_life_time 60,failed_login_attemps 2,password_lock_time 5;
SQL> select username,account_status,lock_date from dba_users;
SQL> alter user test account unlock;
SQL> grant select on dmhr.employee to test1;
SQL> revoke select on dmhr.employee from test1;
SQL> grant select(employee_name,hire_date) on dmhr.employee to test1;
SQL> select employee_name,hire_date from dmhr.employee;
ケース3:企業は、一定の権限を持つ入力担当者のバッチを募集し、市のフォームにのみ入ることができます。
SQL> create user test2 identified by dameng123;
SQL> create role r1;
SQL> grant insert on dmhr.city to r1;
SQL> grant r1 to test2;
# try
SQL> conn test2/dameng123
SQL> insert into dmhr.city values('aa','bbbb',7);
# 没有引用 [REGION] 权限
SQL> grant references any table to test2;
# try
SQL> conn test2/dameng123
SQL> insert into dmhr.city values('aa','bbbb',7);
# succeed
SQL> commit;
ユーザーメンテナンス
# 收回权限:revoke
SQL> revoke r1 from test2;
# 修改用户密码:
SQL> alter user test2 identified by 123456789;
# 锁定用户:
SQL> alter user test2 account lock;
# 解锁用户:
SQL> alter user test2 account unlock;
# 删除用户:
SQL> drop user test2;
SQL> drop user r1;
SQL> drop user test1 cascade;---慎重,最好备份