华为云用户手册

  • 原型 1234567 SQLRETURN SQLColAttibute(SQLHSTMT StatementHandle, SQLUSMALLINT ColumnNumber, SQLUSMALLINT FieldIdentifier, SQLPOINTER CharacterAtrriburePtr, SQLSMALLINT BufferLength, SQLSMALLINT *StringLengthPtr, SQLLEN *NumericAttributePtr);
  • 常用方法 表1 PGReplicationConnection常用方法 返回值 方法 描述 throws void close() 结束逻辑复制,并释放资源。 SQLException void forceUpdateStatus() 强制将上次接收、刷新和应用的 LSN 状态发送到后端。 SQLException LogSequenceNumber getLastAppliedLSN() 获取上次主机日志回放的LSN。 - LogSequenceNumber getLastFlushedLSN() 获取上次主机刷新的LSN,即当前逻辑解码推进的LSN。 - LogSequenceNumber getLastReceiveLSN() 获取上次接收的LSN。 - boolean isClosed() 复制流是否关闭。 - ByteBuffer read() 从后端读取下一条WAL记录。如果读取不到,该方法阻塞I/O读。 SQLException ByteBuffer readPending() 从后端读取下一条WAL记录。如果读取不到,该方法不阻塞I/O读。 SQLException void setAppliedLSN(LogSequenceNumber applied) 设置应用的LSN。 - void setFlushedLSN(LogSequenceNumber flushed) 设置刷新的LSN,在下次更新时发送至后端,用于推进服务端LSN。 -
  • 注意事项 当分配的句柄并非环境句柄时,如果SQLAllocHandle返回的值为SQL_ERROR,则它会将OutputHandlePtr的值设置为SQL_NULL_HDBC、SQL_NULL_HSTMT或SQL_NULL_HDESC。之后,通过调用带有适当参数的SQLGetDiagRec,其中HandleType和Handle被设置为IntputHandle的值,可得到相关的SQLSTATE值,通过SQLSTATE值可以查出调用此函数的具体信息。
  • 参数 表1 SQLAllocHandle参数 关键字 参数说明 HandleType 由SQLAllocHandle分配的句柄类型。必须为下列值之一: SQL_HANDLE_ENV(环境句柄) SQL_HANDLE_DBC(连接句柄) SQL_HANDLE_STMT(语句句柄) SQL_HANDLE_DESC(描述句柄) 申请句柄顺序为,先申请环境句柄,再申请连接句柄,最后申请语句句柄,后申请的句柄都要依赖它前面申请的句柄。 InputHandle 将要分配的新句柄的类型。 如果HandleType为SQL_HANDLE_ENV,则这个值为SQL_NULL_HANDLE。 如果HandleType为SQL_HANDLE_DBC,则这一定是一个环境句柄。 如果HandleType为SQL_HANDLE_STMT或SQL_HANDLE_DESC,则它一定是一个连接句柄。 OutputHandlePtr 输出参数:一个缓冲区的指针,此缓冲区以新分配的数据结构存放返回的句柄。
  • PGReplicationStream的继承关系 PGReplicationStream是逻辑复制的接口,实现类是V3PGReplicationStream,该类位于org.postgresql.core.v3.replication Package中,该类的声明如下: public class V3PGReplicationStream implements PGReplicationStream
  • ODBC ODBC接口是一套提供给用户的API函数,本节将对部分常用接口做具体描述,若涉及其他接口可参考msdn(网址:https://msdn.microsoft.com/en-us/library/windows/desktop/ms714177(v=vs.85).aspx)中ODBC Programmer's Reference项的相关内容。 SQLAllocEnv SQLAllocConnect SQLAllocHandle SQLAllocStmt SQLBindCol SQLBindParameter SQLColAttribute SQLConnect SQLDisconnect SQLExecDirect SQLExecute SQLFetch SQLFreeStmt SQLFreeConnect SQLFreeHandle SQLFreeEnv SQLPrepare SQLGetData SQLGetDiagRec SQLSetConnectAttr SQLSetEnvAttr SQLSetStmtAttr 示例 父主题: 接口参考
  • 常用方法 表1 LogicalCreateSlotBuilder常用方法 返回值 方法 描述 throws T withSlotName(String slotName) 指定复制槽名。 - ChainedLogicalCreateSlotBuilder withOutputPlugin(String outputPlugin) 插件名称,当前支持mppdb_decoding。 - void make() 在数据库中创建具有指定参数的插槽。 SQLException ChainedLogicalCreateSlotBuilder self() - -
  • PGReplicationConnection的继承关系 PGReplicationConnection是逻辑复制的接口,实现类是PGReplicationConnectionImpl,该类位于org.postgresql.replication Package中,该类的声明如下: public class PGReplicationConnection implements PGReplicationConnection
  • ChainedStreamBuilder的继承关系 ChainedStreamBuilder是逻辑复制的接口,实现类是ReplicationStreamBuilder,该类位于org.postgresql.replication.fluent Package中,该类的声明如下: public class ReplicationStreamBuilder implements ChainedStreamBuilder
  • 常用方法 表1 PGReplicationConnection常用方法 返回值 方法 描述 throws ChainedCreateReplicationSlotBuilder createReplicationSlot() 用于创建逻辑复制槽 - void dropReplicationSlot(String slotName) 用于删除逻辑复制槽 SQLException,IOException ChainedStreamBuilder replicationStream() 用户开启逻辑复制 -
  • java.sql.DatabaseMetaData java.sql.DatabaseMetaData是数据库对象定义接口。 表1 对java.sql.DatabaseMetaData的支持情况 方法名 返回值类型 支持JDBC 4 allProceduresAreCallable() boolean Yes allTablesAreSelectable() boolean Yes autoCommitFailureClosesAllResultSets() boolean Yes dataDefinitionCausesTransactionCommit() boolean Yes dataDefinitionIgnoredInTransactions() boolean Yes deletesAreDetected(int type) boolean Yes doesMaxRowSizeIncludeBlobs() boolean Yes generatedKeyAlwaysReturned() boolean Yes getBestRowIdentifier(String catalog, String schema, String table, int scope, boolean nullable) ResultSet Yes getCatalogs() ResultSet Yes getCatalogSeparator() String Yes getCatalogTerm() String Yes getClientInfoProperties() ResultSet Yes getColumnPrivileges(String catalog, String schema, String table, String columnNamePattern) ResultSet Yes getConnection() Connection Yes getCrossReference(String parentCatalog, String parentSchema, String parentTable, String foreignCatalog, String foreignSchema, String foreignTable) ResultSet Yes getDefaultTransactionIsolation() int Yes getExportedKeys(String catalog, String schema, String table) ResultSet Yes getExtraNameCharacters() String Yes getFunctionColumns(String catalog, String schemaPattern, String functionNamePattern, String columnNamePattern) ResultSet Yes getFunctions(String catalog, String schemaPattern, String functionNamePattern) ResultSet Yes getIdentifierQuoteString() String Yes getImportedKeys(String catalog, String schema, String table) ResultSet Yes getIndexInfo(String catalog, String schema, String table, boolean unique, boolean approximate) ResultSet Yes getMaxBinaryLiteralLength() int Yes getMaxCatalogNameLength() int Yes getMaxCharLiteralLength() int Yes getMaxColumnNameLength() int Yes getMaxColumnsInGroupBy() int Yes getMaxColumnsInIndex() int Yes getMaxColumnsInOrderBy() int Yes getMaxColumnsInSelect() int Yes getMaxColumnsInTable() int Yes getMaxConnections() int Yes getMaxCursorNameLength() int Yes getMaxIndexLength() int Yes getMaxLogicalLobSize() default long Yes getMaxProcedureNameLength() int Yes getMaxRowSize() int Yes getMaxSchemaNameLength() int Yes getMaxStatementLength() int Yes getMaxStatements() int Yes getMaxTableNameLength() int Yes getMaxTablesInSelect() int Yes getMaxUserNameLength() int Yes getNumericFunctions() String Yes getPrimaryKeys(String catalog, String schema, String table) ResultSet Yes getPartitionTablePrimaryKeys(String catalog, String schema, String table) ResultSet Yes getProcedureColumns(String catalog, String schemaPattern, String procedureNamePattern, String columnNamePattern) ResultSet Yes getProcedures(String catalog, String schemaPattern, String procedureNamePattern) ResultSet Yes getProcedureTerm() String Yes getSchemas() ResultSet Yes getSchemas(String catalog, String schemaPattern) ResultSet Yes getSchemaTerm() String Yes getSearchStringEscape() String Yes getSQLKeywords() String Yes getSQLStateType() int Yes getStringFunctions() String Yes getSystemFunctions() String Yes getTablePrivileges(String catalog, String schemaPattern, String tableNamePattern) ResultSet Yes getTimeDateFunctions() String Yes getTypeInfo() ResultSet Yes getUDTs(String catalog, String schemaPattern, String typeNamePattern, int[] types) ResultSet Yes getURL() String Yes getVersionColumns(String catalog, String schema, String table) ResultSet Yes insertsAreDetected(int type) boolean Yes locatorsUpdateCopy() boolean Yes othersDeletesAreVisible(int type) boolean Yes othersInsertsAreVisible(int type) boolean Yes othersUpdatesAreVisible(int type) boolean Yes ownDeletesAreVisible(int type) boolean Yes ownInsertsAreVisible(int type) boolean Yes ownUpdatesAreVisible(int type) boolean Yes storesLowerCaseIdentifiers() boolean Yes storesMixedCaseIdentifiers() boolean Yes storesUpperCaseIdentifiers() boolean Yes supportsBatchUpdates() boolean Yes supportsCatalogsInDataManipulation() boolean Yes supportsCatalogsInIndexDefinitions() boolean Yes supportsCatalogsInPrivilegeDefinitions() boolean Yes supportsCatalogsInProcedureCalls() boolean Yes supportsCatalogsInTableDefinitions() boolean Yes supportsCorrelatedSubqueries() boolean Yes supportsDataDefinitionAndDataManipulationTransactions() boolean Yes supportsDataManipulationTransactionsOnly() boolean Yes supportsGetGeneratedKeys() boolean Yes supportsMixedCaseIdentifiers() boolean Yes supportsMultipleOpenResults() boolean Yes supportsNamedParameters() boolean Yes supportsOpenCursorsAcrossCommit() boolean Yes supportsOpenCursorsAcrossRollback() boolean Yes supportsOpenStatementsAcrossCommit() boolean Yes supportsOpenStatementsAcrossRollback() boolean Yes supportsPositionedDelete() boolean Yes supportsPositionedUpdate() boolean Yes supportsRefCursors() boolean Yes supportsResultSetConcurrency(int type, int concurrency) boolean Yes supportsResultSetType(int type) boolean Yes supportsSchemasInIndexDefinitions() boolean Yes supportsSchemasInPrivilegeDefinitions() boolean Yes supportsSchemasInProcedureCalls() boolean Yes supportsSchemasInTableDefinitions() boolean Yes supportsSelectForUpdate() boolean Yes supportsStatementPooling() boolean Yes supportsStoredFunctionsUsingCallSyntax() boolean Yes supportsStoredProcedures() boolean Yes supportsSubqueriesInComparisons() boolean Yes supportsSubqueriesInExists() boolean Yes supportsSubqueriesInIns() boolean Yes supportsSubqueriesInQuantifieds() boolean Yes supportsTransactionIsolationLevel(int level) boolean Yes supportsTransactions() boolean Yes supportsUnion() boolean Yes supportsUnionAll() boolean Yes updatesAreDetected(int type) boolean Yes getTables(String catalog, String schemaPattern, String tableNamePattern, String[] types) ResultSet Yes getColumns(String catalog, String schemaPattern, String tableNamePattern, String columnNamePattern) ResultSet Yes getTableTypes() ResultSet Yes getUserName() String Yes isReadOnly() boolean Yes nullsAreSortedHigh() boolean Yes nullsAreSortedLow() boolean Yes nullsAreSortedAtStart() boolean Yes nullsAreSortedAtEnd() boolean Yes getDatabaseProductName() String Yes getDatabaseProductVersion() String Yes getDriverName() String Yes getDriverVersion() String Yes getDriverMajorVersion() int Yes getDriverMinorVersion() int Yes usesLocalFiles() boolean Yes usesLocalFilePerTable() boolean Yes supportsMixedCaseIdentifiers() boolean Yes storesUpperCaseIdentifiers() boolean Yes storesLowerCaseIdentifiers() boolean Yes supportsMixedCaseQuotedIdentifiers() boolean Yes storesUpperCaseQuotedIdentifiers() boolean Yes storesLowerCaseQuotedIdentifiers() boolean Yes storesMixedCaseQuotedIdentifiers() boolean Yes supportsAlterTableWithAddColumn() boolean Yes supportsAlterTableWithDropColumn() boolean Yes supportsColumnAliasing() boolean Yes nullPlusNonNullIsNull() boolean Yes supportsConvert() boolean Yes supportsConvert(int fromType, int toType) boolean Yes supportsTableCorrelationNames() boolean Yes supportsDifferentTableCorrelationNames() boolean Yes supportsExpressionsInOrderBy() boolean Yes supportsOrderByUnrelated() boolean Yes supportsGroupBy() boolean Yes supportsGroupByUnrelated() boolean Yes supportsGroupByBeyondSelect() boolean Yes supportsLikeEscapeClause() boolean Yes supportsMultipleResultSets() boolean Yes supportsMultipleTransactions() boolean Yes supportsNonNullableColumns() boolean Yes supportsMinimumSQLGrammar() boolean Yes supportsCoreSQLGrammar() boolean Yes supportsExtendedSQLGrammar() boolean Yes supportsANSI92EntryLevelSQL() boolean Yes supportsANSI92IntermediateSQL() boolean Yes supportsANSI92FullSQL() boolean Yes supportsIntegrityEnhancementFacility() boolean Yes supportsOuterJoins() boolean Yes supportsFullOuterJoins() boolean Yes supportsLimitedOuterJoins() boolean Yes isCatalogAtStart() boolean Yes supportsSchemasInDataManipulation() boolean Yes supportsSavepoints() boolean Yes supportsResultSetHoldability(int holdability) boolean Yes getResultSetHoldability() int Yes getDatabaseMajorVersion() int Yes getDatabaseMinorVersion() int Yes getJDBCMajorVersion() int Yes getJDBCMinorVersion() int Yes uppercaseAttributeName为true时,以下接口会将查询结果转为大写,可转换范围与java中的toUpperCase方法一致。 public ResultSet getProcedures(String catalog, String schemaPattern, String procedureNamePattern) public ResultSet getProcedureColumns(String catalog, String schemaPattern, String procedureNamePattern, String columnNamePattern) public ResultSet getTables(String catalog, String schemaPattern, String tableNamePattern, String[] types) public ResultSet getSchemas(String catalog, String schemaPattern) public ResultSet getColumns(String catalog, String schemaPattern, String tableNamePattern, String columnNamePattern) public ResultSet getColumnPrivileges(String catalog, String schema, String table, String columnNamePattern) public ResultSet getTablePrivileges(String catalog, String schemaPattern, String tableNamePattern) public ResultSet getBestRowIdentifier(String catalog, String schema, String table, int scope, boolean nullable) public ResultSet getPrimaryKeys(String catalog, String schema, String table) protected ResultSet getImportedExportedKeys(String primaryCatalog, String primarySchema, String primaryTable, String foreignCatalog, String foreignSchema, String foreignTable) public ResultSet getIndexInfo(String catalog, String schema, String tableName, boolean unique, boolean approximate) public ResultSet getUDTs(String catalog, String schemaPattern, String typeNamePattern, int[] types) public ResultSet getFunctions(String catalog, String schemaPattern, String functionNamePattern) getPartitionTablePrimaryKeys(String catalog, String schema, String table)接口用于获取分区表含全局索引的主键列,使用示例如下: PgDatabaseMetaData dbmd = (PgDatabaseMetaData)conn.getMetaData();dbmd.getPartitionTablePrimaryKeys("catalogName", "schemaName", "tableName"); 父主题: JDBC
  • javax.naming.Context javax.naming.Context是连接配置的上下文接口。 表1 对javax.naming.Context的支持情况 方法名 返回值类型 支持JDBC 4 bind(Name name, Object obj) void Yes bind(String name, Object obj) void Yes lookup(Name name) Object Yes lookup(String name) Object Yes rebind(Name name, Object obj) void Yes rebind(String name, Object obj) void Yes rename(Name oldName, Name newName) void Yes rename(String oldName, String newName) void Yes unbind(Name name) void Yes unbind(String name) void Yes 父主题: JDBC
  • 常用方法 表1 CopyManager常用方法 返回值 方法 描述 throws CopyIn copyIn(String sql) - SQLException long copyIn(String sql, InputStream from) 使用COPY FROM STDIN从InputStream中快速向数据库中的表加载数据。 SQLException,IOException long copyIn(String sql, InputStream from, int bufferSize) 使用COPY FROM STDIN从InputStream中快速向数据库中的表加载数据。 SQLException,IOException long copyIn(String sql, Reader from) 使用COPY FROM STDIN从Reader中快速向数据库中的表加载数据。 SQLException,IOException long copyIn(String sql, Reader from, int bufferSize) 使用COPY FROM STDIN从Reader中快速向数据库中的表加载数据。 SQLException,IOException CopyOut copyOut(String sql) - SQLException long copyOut(String sql, OutputStream to) 将一个COPY TO STDOUT的结果集从数据库发送到OutputStream类中。 SQLException,IOException long copyOut(String sql, Writer to) 将一个COPY TO STDOUT的结果集从数据库发送到Writer类中。 SQLException,IOException
  • java.sql.Statement java.sql.Statement是SQL语句接口。 表1 对java.sql.Statement的支持情况 方法名 返回值类型 支持JDBC 4 addBatch(String sql) void Yes clearBatch() void Yes clearWarnings() void Yes close() void Yes closeOnCompletion() void Yes execute(String sql) Boolean Yes execute(String sql, int autoGeneratedKeys) Boolean Yes execute(String sql, int[] columnIndexes) Boolean Yes execute(String sql, String[] columnNames) Boolean Yes executeBatch() Boolean Yes executeQuery(String sql) ResultSet Yes executeUpdate(String sql) int Yes executeUpdate(String sql, int autoGeneratedKeys) int Yes executeUpdate(String sql, int[] columnIndexes) int Yes executeUpdate(String sql, String[] columnNames) int Yes getConnection() Connection Yes getFetchDirection() int Yes getFetchSize() int Yes getGeneratedKeys() ResultSet Yes getMaxFieldSize() int Yes getMaxRows() int Yes getMoreResults() boolean Yes getMoreResults(int current) boolean Yes getResultSet() ResultSet Yes getResultSetConcurrency() int Yes getResultSetHoldability() int Yes getResultSetType() int Yes getQueryTimeout() int Yes getUpdateCount() int Yes getWarnings() SQLWarning Yes isClosed() Boolean Yes isCloseOnCompletion() Boolean Yes isPoolable() Boolean Yes setCursorName(String name) void Yes setEscapeProcessing(boolean enable) void Yes setFetchDirection(int direction) void Yes setMaxFieldSize(int max) void Yes setMaxRows(int max) void Yes setPoolable(boolean poolable) void Yes setQueryTimeout(int seconds) void Yes setFetchSize(int rows) void Yes cancel() void Yes executeLargeUpdate(String sql) long No getLargeUpdateCount() long No executeLargeBatch() long No executeLargeUpdate(String sql, int autoGeneratedKeys) long No executeLargeUpdate(String sql, int[] columnIndexes) long No executeLargeUpdate(String sql, String[] columnNames) long No 通过setFetchSize可以减少结果集在客户端的内存占用情况。它的原理是通过将结果集打包成游标,然后分段处理,所以会加大数据库与客户端的通信量,会有性能损耗。 由于数据库游标是事务内有效,所以,在设置setFetchSize的同时,需要将连接设置为非自动提交模式,setAutoCommit(false)。同时在业务数据需要持久化到数据库中时,在连接上执行提交操作。 LargeUpdate相关方法必须在JDBC4.2及以上使用。 父主题: JDBC
  • javax.sql.PooledConnection javax.sql.PooledConnection是由连接池创建的连接接口。 表1 对javax.sql.PooledConnection的支持情况 方法名 返回值类型 支持JDBC 4 addConnectionEventListener (ConnectionEventListener listener) void Yes close() void Yes getConnection() Connection Yes removeConnectionEventListener (ConnectionEventListener listener) void Yes 父主题: JDBC
  • javax.sql.DataSource javax.sql.DataSource是数据源接口。 表1 对javax.sql.DataSource接口的支持情况 方法名 返回值类型 支持JDBC 4 getConneciton() Connection Yes getConnection(String username,String password) Connection Yes getLoginTimeout() int Yes getLogWriter() PrintWriter Yes setLoginTimeout(int seconds) void Yes setLogWriter(PrintWriter out) void Yes 父主题: JDBC
  • javax.sql.ConnectionPoolDataSource javax.sql.ConnectionPoolDataSource是数据源连接池接口。 表1 对javax.sql.ConnectionPoolDataSource的支持情况 方法名 返回值类型 支持JDBC 4 getPooledConnection() PooledConnection Yes getPooledConnection(String user,String password) PooledConnection Yes 父主题: JDBC
  • java.sql.PreparedStatement java.sql.PreparedStatement是预处理语句接口。 表1 对java.sql.PreparedStatement的支持情况 方法名 返回值类型 支持JDBC 4 clearParameters() void Yes execute() Boolean Yes executeQuery() ResultSet Yes excuteUpdate() int Yes executeLargeUpdate() long No getMetaData() ResultSetMetaData Yes getParameterMetaData() ParameterMetaData Yes setArray(int parameterIndex, Array x) void Yes setAsciiStream(int parameterIndex, InputStream x, int length) void Yes setBinaryStream(int parameterIndex, InputStream x) void Yes setBinaryStream(int parameterIndex, InputStream x, int length) void Yes setBinaryStream(int parameterIndex, InputStream x, long length) void Yes setBlob(int parameterIndex, InputStream inputStream) void Yes setBlob(int parameterIndex, InputStream inputStream, long length) void Yes setBlob(int parameterIndex, Blob x) void Yes setCharacterStream(int parameterIndex, Reader reader) void Yes setCharacterStream(int parameterIndex, Reader reader, int length) void Yes setClob(int parameterIndex, Reader reader) void Yes setClob(int parameterIndex, Reader reader, long length) void Yes setClob(int parameterIndex, Clob x) void Yes setDate(int parameterIndex, Date x, Calendar cal) void Yes setNull(int parameterIndex, int sqlType) void Yes setNull(int parameterIndex, int sqlType, String typeName) void Yes setObject(int parameterIndex, Object x) void Yes setObject(int parameterIndex, Object x, int targetSqlType) void Yes setObject(int parameterIndex, Object x, int targetSqlType, int scaleOrLength) void Yes setSQLXML(int parameterIndex, SQLXML xmlObject) void Yes setTime(int parameterIndex, Time x) void Yes setTime(int parameterIndex, Time x, Calendar cal) void Yes setTimestamp(int parameterIndex, Timestamp x) void Yes setTimestamp(int parameterIndex, Timestamp x, Calendar cal) void Yes setUnicodeStream(int parameterIndex, InputStream x, int length) void Yes setURL(int parameterIndex, URL x) void Yes setBoolean(int parameterIndex, boolean x) void Yes setBigDecimal(int parameterIndex, BigDecimal x) void Yes setByte(int parameterIndex, byte x) void Yes setBytes(int parameterIndex, byte[] x) void Yes setDate(int parameterIndex, Date x) void Yes setDouble(int parameterIndex, double x) void Yes setFloat(int parameterIndex, float x) void Yes setInt(int parameterIndex, int x) void Yes setLong(int parameterIndex, long x) void Yes setShort(int parameterIndex, short x) void Yes setString(int parameterIndex, String x) void Yes setNString(int parameterIndex, String x) void Yes addBatch() void Yes executeBatch() int[] Yes addBatch()、execute()必须在clearBatch()之后才能执行。 调用executeBatch()方法并不会清除batch。用户必须显式使用clearBatch()清除 。 在添加了一个batch的绑定变量后,用户若想重用这些值(再次添加一个batch),无需再次使用set*()方法 。 以下方法是从java.sql.Statement继承而来:close,execute,executeQuery,executeUpdate,getConnection,getResultSet,getUpdateCount,isClosed,setMaxRows, setFetchSize。 executeLargeUpdate()方法必须在JDBC4.2及以上使用。 父主题: JDBC
  • java.sql.ResultSetMetaData java.sql.ResultSetMetaData是对ResultSet对象相关信息的具体描述。 表1 对java.sql.ResultSetMetaData的支持情况 方法名 返回值类型 支持JDBC 4 getCatalogName(int column) String Yes getColumnClassName(int column) String Yes getColumnCount() int Yes getColumnDisplaySize(int column) int Yes getColumnLabel(int column) String Yes getColumnName(int column) String Yes getColumnType(int column) int Yes getColumnTypeName(int column) String Yes getPrecision(int column) int Yes getScale(int column) int Yes getSchemaName(int column) String Yes getTableName(int column) String Yes isAutoIncrement(int column) boolean Yes isCaseSensitive(int column) boolean Yes isCurrency(int column) boolean Yes isDefinitelyWritable(int column) boolean Yes isNullable(int column) int Yes isReadOnly(int column) boolean Yes isSearchable(int column) boolean Yes isSigned(int column) boolean Yes isWritable(int column) boolean Yes uppercaseAttributeName为true时,下面接口会将查询结果转为大写,可转换范围为26个英文字母。 public String getColumnName(int column) public String getColumnLabel(int column) 父主题: JDBC
  • 操作步骤 参考连接数据库,连接数据库。 选择日志维护方式进行维护。 设置自动删除审计日志 审计文件占用的磁盘空间或者审计文件的个数超过指定的最大值时,系统将删除最早的审计文件,并记录审计文件删除信息到审计日志中。 审计文件占用的磁盘空间大小默认值为1024MB,用户可以根据磁盘空间大小重新设置参数。 配置审计 文件占用磁盘空间的大小(audit_space_limit)。 配置审计文件个数的最大值(audit_file_remain_threshold)。 手动备份审计文件 当审计文件占用的磁盘空间或者审计文件的个数超过配置文件指定的值时,系统将会自动删除较早的审计文件,因此建议用户周期性地对比较重要的审计日志进行保存。 使用show命令获得审计文件所在目录(audit_directory)。 1 openGauss=# SHOW audit_directory; 将审计目录整个拷贝出来进行保存。 手动删除审计日志 当不再需要某时段的审计记录时,可以使用审计接口命令pg_delete_audit进行手动删除。 以删除2012/9/20到2012/9/21之间的审计记录为例: 1 openGauss=# SELECT pg_delete_audit('2012-09-20 00:00:00','2012-09-21 23:59:59');
  • 背景信息 与审计日志相关的配置参数及其含义请参见表1。 表1 审计日志相关配置参数 配置项 含义 默认值 audit_directory 审计文件的存储目录。 $GAUSS LOG /pg_audit audit_resource_policy 审计日志的保存策略。 on(表示使用空间配置策略) audit_space_limit 审计文件占用的磁盘空间总量。 1GB audit_file_remain_time 审计日志文件的最小保存时间。 90 audit_file_remain_threshold 审计目录下审计文件的最大数量。 1048576 审计日志删除命令为数据库提供的sql函数pg_delete_audit,其原型为: pg_delete_audit(timestamp startime,timestamp endtime) 其中参数startime和endtime分别表示审计记录的开始时间和结束时间。 目前常用的记录审计内容的方式有两种:记录到数据库的表中、记录到OS文件中。这两种方式的优缺点比较如表2所示。 表2 审计日志保存方式比较 方式 优点 缺点 记录到表中 不需要用户维护审计日志。 由于表是数据库的对象,如果一个数据库用户具有一定的权限,就能够访问到审计表。如果该用户非法操作审计表,审计记录的准确性难以得到保证。 记录到OS文件中 比较安全,即使一个帐户可以访问数据库,但不一定有访问OS这个文件的权限。 需要用户维护审计日志。 从数据库安全角度出发, GaussDB 采用记录到OS文件的方式来保存审计结果,保证了审计结果的可靠性。
  • java.sql.Driver java.sql.Driver是数据库驱动接口。 表1 对java.sql.Driver的支持情况 方法名 返回值类型 支持JDBC 4 acceptsURL(String url) Boolean Yes connect(String url, Properties info) Connection Yes jdbcCompliant() Boolean Yes getMajorVersion() int Yes getMinorVersion() int Yes getParentLogger() Logger Yes getPropertyInfo(String url, Properties info) DriverPropertyInfo[] Yes 父主题: JDBC
  • JDBC JDBC接口是一套提供给用户的API方法,本节将对部分常用接口做具体描述,若涉及其他接口可参考JDK1.8(软件包)/JDBC4.0中相关内容。 java.sql.Connection java.sql.CallableStatement java.sql.DatabaseMetaData java.sql.Driver java.sql.PreparedStatement java.sql.ResultSet java.sql.ResultSetMetaData java.sql.Statement javax.sql.ConnectionPoolDataSource javax.sql.DataSource javax.sql.PooledConnection javax.naming.Context javax.naming.spi.InitialContextFactory CopyManager PGReplicationConnection PGReplicationStream ChainedStreamBuilder ChainedCommonStreamBuilder 父主题: 接口参考
  • 操作步骤 参考连接数据库,连接数据库。 检查审计总开关状态。 用show命令显示审计总开关audit_enabled的值。 1 openGauss=# SHOW audit_enabled; 如果显示为off,执行“\q”命令退出数据库。 设置“audit_enabled=on”开启审计功能,参数设置立即生效。 根据表1,配置具体的审计项。 只有开启审计功能,用户的操作才会被记录到审计文件中。 各审计项的默认参数都符合安全标准,用户可以根据需要开启其他审计功能,但会对性能有一定影响。
  • 背景信息 数据库安全对数据库系统来说至关重要。GaussDB将用户对数据库的所有操作写入审计日志。数据库安全管理员可以利用这些日志信息,重现导致数据库现状的一系列事件,找出非法操作的用户、时间和内容等。 关于审计功能,用户需要了解以下几点内容: 审计总开关audit_enabled支持动态加载。在数据库运行期间修改该配置项的值会立即生效,无需重启数据库。默认值为on,表示开启审计功能。 除了审计总开关,各个审计项也有对应的开关。只有开关开启,对应的审计功能才能生效。 各审计项的开关支持动态加载。在数据库运行期间修改审计开关的值,不需要重启数据库便可生效。 目前,GaussDB支持以下审计项如表1所示。 表1 配置审计项 配置项 描述 用户登录、注销审计 参数:audit_login_logout 默认值为7,表示开启用户登录、退出的审计功能。设置为0表示关闭用户登录、退出的审计功能。不推荐设置除0和7之外的值。 数据库启动、停止、恢复和切换审计 参数:audit_database_process 默认值为1,表示开启数据库启动、停止、恢复和切换的审计功能。 用户锁定和解锁审计 参数:audit_user_locked 默认值为1,表示开启审计用户锁定和解锁功能。 用户访问越权审计 参数:audit_user_violation 默认值为0,表示关闭用户越权操作审计功能。 授权和回收权限审计 参数:audit_grant_revoke 默认值为1,表示开启审计用户权限授予和回收功能。 数据库对象的CREATE,ALTER,DROP操作审计 参数:audit_system_object 默认值为67121159,表示只对DATABASE、SCHEMA、USER、DATA SOURCE,SQL Patch这五类数据库对象的CREATE、ALTER、DROP操作进行审计。 具体表的INSERT、UPDATE和DELETE操作审计 参数:audit_dml_state 默认值为0,表示关闭具体表的DML操作(SELECT除外)审计功能。 SELECT操作审计 参数:audit_dml_state_select 默认值为0,表示关闭SELECT操作审计功能。 COPY审计 参数:audit_copy_exec 默认值为1,表示开启copy操作审计功能。 存储过程和自定义函数的执行审计 参数:audit_function_exec 默认值为0,表示不记录存储过程和自定义函数的执行审计日志。 SET审计 参数:audit_set_parameter 默认值为0,表示不记录set操作审计日志 事务ID记录 参数:audit_xid_info 默认值为0,表示关闭审计日志记录事务ID功能。 安全相关参数及说明请参见表2。 表2 安全相关参数及说明 参数名 说明 ssl 指定是否启用SSL连接。 require_ssl 指定服务器端是否强制要求SSL连接。 ssl_ciphers 指定SSL支持的加密算法列表。 ssl_cert_file 指定包含SSL服务器证书的文件的名称。 ssl_key_file 指定包含SSL私钥的文件名称。 ssl_ca_file 指定包含CA信息的文件的名称。 ssl_crl_file 指定包含CRL信息的文件的名称。 password_policy 指定是否进行密码复杂度检查。 password_reuse_time 指定是否对新密码进行可重用天数检查。 password_reuse_max 指定是否对新密码进行可重用次数检查。 password_lock_time 指定帐户被锁定后自动解锁的时间。 failed_login_attempts 如果输入密码错误的次数达到此参数值时,当前帐户被锁定。 password_encryption_type 指定采用何种加密方式对用户密码进行加密存储。 password_min_uppercase 密码中至少需要包含大写字母的个数。 password_min_lowercase 密码中至少需要包含小写字母的个数。 password_min_digital 密码中至少需要包含数字的个数。 password_min_special 密码中至少需要包含特殊字符的个数。 password_min_length 密码的最小长度。 说明: 在设置此参数时,请将其设置成不大于password_max_length,否则进行涉及密码的操作会一直出现密码长度错误的提示 password_max_length 密码的最大长度。 说明: 在设置此参数时,请将其设置成不小于password_min_length,否则进行涉及密码的操作会一直出现密码长度错误的提示。 password_effect_time 密码的有效期限。 password_notify_time 密码到期提醒的天数。 audit_enabled 控制审计进程的开启和关闭。 audit_directory 审计文件的存储目录。 audit_data_format 审计日志文件的格式,当前仅支持二进制格式(binary)。 audit_rotation_interval 指定创建一个新审计日志文件的时间间隔。当现在的时间减去上次创建一个审计日志的时间超过了此参数值时,服务器将生成一个新的审计日志文件。 audit_rotation_size 指定审计日志文件的最大容量。当审计日志消息的总量超过此参数值时,服务器将生成一个新的审计日志文件。 audit_resource_policy 控制审计日志的保存策略,以空间还是时间限制为优先策略,on表示以空间为优先策略。 audit_file_remain_time 表示需记录审计日志的最短时间要求,该参数在audit_resource_policy为off时生效。 audit_space_limit 审计文件占用磁盘空间的最大值。 audit_file_remain_threshold 审计目录下审计文件的最大数量。 audit_login_logout 指定是否审计数据库用户的登录(包括登录成功和登录失败)、注销。 audit_database_process 指定是否审计数据库启动、停止、切换和恢复的操作。 audit_user_locked 指定是否审计数据库用户的锁定和解锁。 audit_user_violation 指定是否审计数据库用户的越权访问操作。 audit_grant_revoke 指定是否审计数据库用户权限授予和回收的操作。 audit_system_object 指定是否审计数据库对象的CREATE、DROP、ALTER操作。 audit_dml_state 指定是否审计具体表的INSERT、UPDATE、DELETE操作。 audit_dml_state_select 指定是否审计SELECT操作。 audit_copy_exec 指定是否审计COPY操作。 audit_function_exec 指定在执行存储过程、匿名块或自定义函数(不包括系统自带函数)时是否记录审计信息。 audit_set_parameter 指定是否审计SET操作。 enableSeparationOfDuty 指定是否开启三权分立。 session_timeout 建立连接会话后,如果超过此参数的设置时间,则会自动断开连接。 auth_iteration_count 认证加密信息生成过程中使用的迭代次数。
  • 背景信息 只有拥有AUDITADMIN属性的用户才可以查看审计记录。有关数据库用户及创建用户的办法请参见用户。 审计查询命令是数据库提供的sql函数pg_query_audit,其原型为: pg_query_audit(timestamptz startime,timestamptz endtime,audit_log) 参数startime和endtime分别表示审计记录的开始时间和结束时间,audit_log表示所查看的审计日志信息所在的物理文件路径,当不指定audit_log时,默认查看连接当前实例的审计日志信息。 startime和endtime的差值代表要查询的时间段,其有效值为从startime日期中的00:00:00开始到endtime日期中的23:59:59之间的任何值。请正确指定这两个参数,否则将查不到需要的审计信息。
  • 操作步骤 参考连接数据库,连接数据库。 查询审计记录。 1 openGauss=# select * from pg_query_audit('2021-03-04 08:00:00','2021-03-04 17:00:00'); 查询结果如下: time | type | result | userid | username | database | client_conninfo | object_name |detail_info| node_name | thread_id | local_port | remote_port------------------------+----------------+--------+--------+-----------+-----------+-------------------------+-------------------+--------------+-------------------+---------------------------------+------------+-------------2021-03-04 08:00:08+08 | login_success | ok | 10 | omm | postgres | gsql@::1 | postgres | login db(postgres) success, SSL=off | dn_6001_6002_6003 | 140477687527168@668131208211425 |17778 | 46946 该条记录表明,用户omm在time字段标识的时间点登录数据库postgres。其中client_conninfo字段在log_hostname启动且IP连接时,字符@后显示反向DNS查找得到的主机名。 对于登录操作的记录,审计日志detail_info结尾会记录SSL信息,SSL=on表示客户端通过SSL连接,SSL=off表示客户端没有通过SSL连接。
  • 手动锁定和解锁帐户 若管理员发现某帐户被盗、非法访问等异常情况,可手动锁定该帐户。当管理员认为帐户恢复正常后,可手动解锁该帐户。 以手动锁定和解锁用户joe为例,用户的创建请参见用户,命令格式如下: 手动锁定 12 openGauss=# ALTER USER joe ACCOUNT LOCK;ALTER ROLE 手动解锁 12 openGauss=# ALTER USER joe ACCOUNT UNLOCK;ALTER ROLE
  • 自动锁定和解锁帐户 为了保证帐户安全,如果用户输入密码次数超过一定次数(failed_login_attempts),系统将自动锁定该帐户,默认值为10。次数设置越小越安全,但是在使用过程中会带来不便。 当帐户被锁定时间超过设定值(password_lock_time),则当前帐户自动解锁,默认值为1天。时间设置越长越安全,但是在使用过程中会带来不便。 参数password_lock_time的整数部分表示天数,小数部分可以换算成时、分、秒,如:password_lock_time=1.5,表示1天零12小时。 当failed_login_attempts设置为0时,表示不限制密码错误次数。当password_lock_time设置为0时,表示即使超过密码错误次数限制导致帐户锁定,也会在短时间内自动解锁。因此,只有两个配置参数都为正数时,才可以进行常规的密码失败检查、帐户锁定和解锁操作。 这两个参数的默认值都符合安全标准,用户可以根据需要重新设置参数,提高安全等级。建议用户使用默认值。
  • 搜索路径 搜索路径定义在search_path参数中,参数取值形式为采用逗号分隔的Schema名称列表。如果创建对象时未指定目标Schema,则将该对象会被添加到搜索路径中列出的第一个Schema中。当不同Schema中存在同名的对象时,查询对象未指定Schema的情况下,将从搜索路径中包含该对象的第一个Schema中返回对象。 要查看当前搜索路径,请使用SHOW。 12345 openGauss=# SHOW SEARCH_PATH; search_path---------------- "$user",public(1 row) search_path参数的默认值为:"$user",public。$user表示与当前会话用户名同名的Schema名,如果这样的模式不存在,$user将被忽略。所以默认情况下,用户连接数据库后,如果数据库下存在同名Schema,则对象会添加到同名Schema下,否则对象被添加到Public Schema下。 要更改当前会话的默认Schema,请使用SET命令。 执行如下命令将搜索路径设置为myschema、public,首先搜索myschema。 12 openGauss=# SET SEARCH_PATH TO myschema, public;SET
共100000条